<?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>232219</bug_id>
          
          <creation_ts>2021-10-24 13:16:29 -0700</creation_ts>
          <short_desc>[LFC][IFC] Check across inline box boundaries for breakable position</short_desc>
          <delta_ts>2021-10-25 07:37:21 -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>1808249</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-10-24 13:16:29 -0700</bug_when>
    <thetext>&lt;div style=&quot;word-break: break-all&quot;&gt;&lt;span&gt;foo&lt;/span&gt;&lt;span&gt;.bar&lt;/span&gt;&lt;/div&gt;
when &apos;.bar&apos; overflows, we can&apos;t just simply break at &quot;foo&quot;, we need to take adjacent content (in separate inline box) into account.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808253</commentid>
    <comment_count>1</comment_count>
      <attachid>442318</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-10-24 13:41:46 -0700</bug_when>
    <thetext>Created attachment 442318
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808254</commentid>
    <comment_count>2</comment_count>
      <attachid>442319</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-10-24 13:42:51 -0700</bug_when>
    <thetext>Created attachment 442319
Patch with dependencies</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808264</commentid>
    <comment_count>3</comment_count>
      <attachid>442324</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-10-24 14:42:44 -0700</bug_when>
    <thetext>Created attachment 442324
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808265</commentid>
    <comment_count>4</comment_count>
      <attachid>442325</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-10-24 14:43:28 -0700</bug_when>
    <thetext>Created attachment 442325
Patch with dependencies</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808390</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-25 07:36:04 -0700</bug_when>
    <thetext>Committed r284782 (243491@main): &lt;https://commits.webkit.org/243491@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 442324.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808393</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-25 07:37:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/84613183&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442318</attachid>
            <date>2021-10-24 13:41:46 -0700</date>
            <delta_ts>2021-10-24 14:42:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232219-20211024134145.patch</filename>
            <type>text/plain</type>
            <size>15914</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE2YWUzZDM0ODZhMzQz
ZjViOWQzNDU2YjdjYThkMDVjZTk4YWRhZS4uZTdmODk5YWY3Njc2ODQ4NmE0OTUxMDhmODgxOWQ0
ZWQzZjhmYjE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTEwLTI0ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIENoZWNrIGFj
cm9zcyBpbmxpbmUgYm94IGJvdW5kYXJpZXMgZm9yIGJyZWFrYWJsZSBwb3NpdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMjE5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBleHBh
bmRzIHRoZSAiY2FuIHdlIGJyZWFrIGJlZm9yZSIgY2hlY2sgYWNyb3NzIG11bHRpcGxlIHJ1bnMu
CisgICAgICAgIFRoZXJlIGFyZSBjYXNlcyB3aGVuLCB3aGlsZSB0aGUgY29udGVudCBpcyBicmVh
ay1hbGwsIHdlIG5lZWQgdG8gbG9vayBhdCBhZGphY2VudCBydW5zIHRvIGRlY2lkZWQgd2hldGhl
ciB0aGUKKyAgICAgICAgcnVuIGJvdW5kYXJ5IGlzIGEgdmFsaWQgYnJlYWtpbmcgcG9zaXRpb24u
CisgICAgICAgIGUuZworICAgICAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogMWNoOyB3b3JkLWJyZWFr
OiBicmVhay1hbGwiPjxzcGFuPlg8L3NwYW4+PHNwYW4+Ljwvc3Bhbj48L2Rpdj4KKyAgICAgICAg
ICAnYnJlYWstYWxsJyB0ZWxscyB1cyB0byBicmVhayBhZnRlciAnWF0nIGJ1dCB0aGUgcHVuY3R1
YXRpb24gY2hhcmFjdGVyIHByZXZlbnRzIHVzIHRvIGRvIHNvLgorICAgICAgICAgIFRoaXMgc2hv
dWxkIHdvcmsgZXZlbiB3aGVuIHRoZSBjb250ZW50IGlzIGluIHNlcGFyYXRlIHJ1bnMgKFtYXVsu
XSBlLmcuIGlubGluZS1ib3ggYm91bmRhcnkgb3Igc2ltcGx5CisgICAgICAgICAgdGhleSByZXBy
ZXNlbnQgaW5kaXZpZHVhbCBET00gbm9kZXMpCisKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OmNhbkJyZWFrQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
ZmluZExhc3RWYWxpZEJyZWFraW5nUG9zaXRpb24pOiBMZXQncyBmaW5kIHRoZSBsYXN0IHZhbGlk
IGJyZWFraW5nIHBvc2l0aW9uIGluIHRoaXMgcnVuIGluY2x1ZGluZyB0aGUgcnVuIGVuZCBib3Vu
ZGFyeS4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6bWlkV29yZEJyZWFrKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lQ29udGVudEJyZWFrZXI6OnRyeUJyZWFraW5nVGV4dFJ1
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OnByZXZpb3VzVGV4dFJ1bkluZGV4
KTogRGVsZXRlZC4KKwogMjAyMS0xMC0yNCAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW0xGQ11bSUZDXSBSZW5hbWUgVGV4dFV0aWw6Om1pZFdvcmRCcmVhayB0byBi
cmVha1dvcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcApp
bmRleCBhZTIxZGM1ZjM4YjY5MTY2Yzg3ZWQyNDRiOThhNzNhYTJjNDczMzBiLi45ZjRmMzYzMGM4
YzU4NWIwYWRlMGYwOTk5Njk3YzYxNDNkN2M4NDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lQ29udGVudEJyZWFrZXIuY3BwCkBAIC04NCwxNSArODQsNiBAQCBzdGF0aWMgaW5saW5l
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXh0VGV4dFJ1bkluZGV4KGNvbnN0IElubGluZUNvbnRl
bnRCcmVha2VyOgogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBpbmxpbmUgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IHByZXZpb3VzVGV4dFJ1bkluZGV4KGNvbnN0IElubGluZUNvbnRlbnRCcmVh
a2VyOjpDb250aW51b3VzQ29udGVudDo6UnVuTGlzdCYgcnVucywgc2l6ZV90IHN0YXJ0SW5kZXgp
Ci17Ci0gICAgZm9yIChhdXRvIGluZGV4ID0gc3RhcnRJbmRleDsgaW5kZXgtLTspIHsKLSAgICAg
ICAgaWYgKHJ1bnNbaW5kZXhdLmlubGluZUl0ZW0uaXNUZXh0KCkpCi0gICAgICAgICAgICByZXR1
cm4gaW5kZXg7Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc1Zpc3VhbGx5RW1wdHlXaGl0ZXNwYWNlQ29udGVudChjb25zdCBJbmxpbmVDb250ZW50QnJl
YWtlcjo6Q29udGludW91c0NvbnRlbnQmIGNvbnRpbnVvdXNDb250ZW50KQogewogICAgIC8vIFs8
c3Bhbj48L3NwYW4+IF0gWzxzcGFuPiA8L3NwYW4+XSBbIDxzcGFuIHN0eWxlPSJwYWRkaW5nOiAw
cHg7Ij48L3NwYW4+XSBhcmUgYWxsIGNvbnNpZGVyZWQgdmlzdWFsbHkgZW1wdHkgd2hpdGVzcGFj
ZSBjb250ZW50LgpAQCAtMzAyLDUzICsyOTMsODAgQEAgc3RhdGljIGJvb2wgaXNXcmFwcGFibGVS
dW4oY29uc3QgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50OjpSdW4mIHIK
ICAgICByZXR1cm4gVGV4dFV0aWw6OmlzV3JhcHBpbmdBbGxvd2VkKHJ1bi5zdHlsZSk7CiB9CiAK
LXN0YXRpYyBUZXh0VXRpbDo6V29yZEJyZWFrTGVmdCBtaWRXb3JkQnJlYWsoY29uc3QgSW5saW5l
Q29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50OjpSdW4mIHRleHRSdW4sIElubGluZUxh
eW91dFVuaXQgcnVuTG9naWNhbExlZnQsIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgp
CitzdGF0aWMgaW5saW5lIGJvb2wgY2FuQnJlYWtCZWZvcmUoVUNoYXIzMiBjaGFyYWN0ZXIsIExp
bmVCcmVhayBsaW5lQnJlYWspCit7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGluY2x1ZGUg
YWxsIHRoZSBjYXNlcyBmcm9tIGh0dHBzOi8vdW5pY29kZS5vcmcvcmVwb3J0cy90cjE0CisgICAg
Ly8gVXNlIGEgYnJlYWtpbmcgbWF0cml4IHNpbWlsYXIgdG8gbGluZUJyZWFrVGFibGUgaW4gQnJl
YWtMaW5lcy5jcHAKKyAgICAvLyBBbHNvIHNlZSBrQnJlYWtBbGxMaW5lQnJlYWtDbGFzc1RhYmxl
IGluIHRoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3RleHQvdGV4dF9icmVha19p
dGVyYXRvci5jYworICAgIGlmIChsaW5lQnJlYWsgIT0gTGluZUJyZWFrOjpMb29zZSkgeworICAg
ICAgICAvLyBUaGUgZm9sbG93aW5nIGJyZWFrcyBhcmUgYWxsb3dlZCBmb3IgbG9vc2UgbGluZSBi
cmVha2luZyBpZiB0aGUgcHJlY2VkaW5nIGNoYXJhY3RlciBiZWxvbmdzIHRvIHRoZSBVbmljb2Rl
CisgICAgICAgIC8vIGxpbmUgYnJlYWtpbmcgY2xhc3MgSUQsIGFuZCBhcmUgb3RoZXJ3aXNlIGZv
cmJpZGRlbjoKKyAgICAgICAgLy8g4oCQIFUrMjAxMCwg4oCTIFUrMjAxMworICAgICAgICAvLyBo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRleHQvI2xpbmUtYnJlYWstcHJvcGVydHkKKyAg
ICAgICAgaWYgKGNoYXJhY3RlciA9PSBoeXBoZW4gfHwgY2hhcmFjdGVyID09IGVuZGFzaCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKGNoYXJhY3RlciA9PSBub0Jy
ZWFrU3BhY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvIGlzUHVuY3R1YXRpb24g
PSBVX0dFVF9HQ19NQVNLKGNoYXJhY3RlcikgJiAoVV9HQ19QU19NQVNLIHwgVV9HQ19QRV9NQVNL
IHwgVV9HQ19QSV9NQVNLIHwgVV9HQ19QRl9NQVNLIHwgVV9HQ19QT19NQVNLKTsKKyAgICByZXR1
cm4gY2hhcmFjdGVyID09IHJldmVyc2VTb2xpZHVzIHx8ICFpc1B1bmN0dWF0aW9uOworfQorCitz
dGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsYXN0VmFsaWRCcmVha2luZ1Bvc2l0
aW9uKGNvbnN0IElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6UnVuTGlz
dCYgcnVucywgc2l6ZV90IHRleHRSdW5JbmRleCkKIHsKKyAgICBhdXRvJiB0ZXh0UnVuID0gcnVu
c1t0ZXh0UnVuSW5kZXhdOwogICAgIGF1dG8mIGlubGluZVRleHRJdGVtID0gZG93bmNhc3Q8SW5s
aW5lVGV4dEl0ZW0+KHRleHRSdW4uaW5saW5lSXRlbSk7Ci0gICAgYXV0byYgc3R5bGUgPSB0ZXh0
UnVuLnN0eWxlOwotICAgIGF1dG8gbGluZUJyZWFrID0gc3R5bGUubGluZUJyZWFrKCk7Ci0gICAg
QVNTRVJUKGxpbmVCcmVhayA9PSBMaW5lQnJlYWs6OkFueXdoZXJlIHx8IHN0eWxlLndvcmRCcmVh
aygpID09IFdvcmRCcmVhazo6QnJlYWtBbGwgfHwgc3R5bGUud29yZEJyZWFrKCkgPT0gV29yZEJy
ZWFrOjpCcmVha1dvcmQgfHwgc3R5bGUub3ZlcmZsb3dXcmFwKCkgPT0gT3ZlcmZsb3dXcmFwOjpC
cmVha1dvcmQgfHwgc3R5bGUub3ZlcmZsb3dXcmFwKCkgPT0gT3ZlcmZsb3dXcmFwOjpBbnl3aGVy
ZSk7CisgICAgQVNTRVJUKGlubGluZVRleHRJdGVtLmxlbmd0aCgpKTsKKyAgICBhdXRvIGxpbmVC
cmVhayA9IHRleHRSdW4uc3R5bGUubGluZUJyZWFrKCk7CisKKyAgICBhdXRvIGFkamFjdGVudFRl
eHRSdW5JbmRleCA9IG5leHRUZXh0UnVuSW5kZXgocnVucywgdGV4dFJ1bkluZGV4KTsKKyAgICBp
ZiAoIWFkamFjdGVudFRleHRSdW5JbmRleCkKKyAgICAgICAgcmV0dXJuIGlubGluZVRleHRJdGVt
LmVuZCgpOworICAgIAorICAgIGF1dG8mIG5leHRJbmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElu
bGluZVRleHRJdGVtPihydW5zWyphZGphY3RlbnRUZXh0UnVuSW5kZXhdLmlubGluZUl0ZW0pOwor
ICAgIGF1dG8gY2FuQnJlYWtBdFJ1bkJvdW5kYXJ5ID0gbmV4dElubGluZVRleHRJdGVtLmlzV2hp
dGVzcGFjZSgpID8gbmV4dElubGluZVRleHRJdGVtLnN0eWxlKCkud2hpdGVTcGFjZSgpICE9IFdo
aXRlU3BhY2U6OkJyZWFrU3BhY2VzIDoKKyAgICAgICAgY2FuQnJlYWtCZWZvcmUobmV4dElubGlu
ZVRleHRJdGVtLmlubGluZVRleHRCb3goKS5jb250ZW50KClbbmV4dElubGluZVRleHRJdGVtLnN0
YXJ0KCldLCBsaW5lQnJlYWspOworICAgIGlmIChjYW5CcmVha0F0UnVuQm91bmRhcnkpCisgICAg
ICAgIHJldHVybiBpbmxpbmVUZXh0SXRlbS5lbmQoKTsKIAotICAgIGF1dG8gd29yZEJyZWFrID0g
VGV4dFV0aWw6OmJyZWFrV29yZChpbmxpbmVUZXh0SXRlbSwgc3R5bGUuZm9udENhc2NhZGUoKSwg
dGV4dFJ1bi5sb2dpY2FsV2lkdGgsIGF2YWlsYWJsZVdpZHRoLCBydW5Mb2dpY2FsTGVmdCk7Ci0g
ICAgaWYgKCF3b3JkQnJlYWsubGVuZ3RoIHx8IHdvcmRCcmVhay5sZW5ndGggPT0gaW5saW5lVGV4
dEl0ZW0ubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiB3b3JkQnJlYWs7CisgICAgLy8gRmluZCBv
dXQgaWYgdGhlIGNhbmRpZGF0ZSBwb3NpdGlvbiBmb3IgYXJiaXRyYXJ5IGJyZWFraW5nIGlzIHZh
bGlkLiBXZSBjYW4ndCBhbHdheXMgYnJlYWsgYmV0d2VlbiBhbnkgY2hhcmFjdGVycy4KKyAgICBh
dXRvIHRleHQgPSBpbmxpbmVUZXh0SXRlbS5pbmxpbmVUZXh0Qm94KCkuY29udGVudCgpOworICAg
IGF1dG8gbGVmdCA9IGlubGluZVRleHRJdGVtLnN0YXJ0KCk7CisgICAgZm9yIChhdXRvIGluZGV4
ID0gaW5saW5lVGV4dEl0ZW0uZW5kKCkgLSAxOyBpbmRleCA+IGxlZnQ7IC0taW5kZXgpIHsKKyAg
ICAgICAgVTE2X1NFVF9DUF9TVEFSVCh0ZXh0LCBsZWZ0LCBpbmRleCk7CisgICAgICAgIC8vIFdl
IHNob3VsZCBuZXZlciBmaW5kIHN1cnJvZ2F0ZXMvc2VnbWVudHMgYWNyb3NzIGlubGluZSBpdGVt
cy4KKyAgICAgICAgQVNTRVJUKGluZGV4ID4gaW5saW5lVGV4dEl0ZW0uc3RhcnQoKSk7CisgICAg
ICAgIGlmIChjYW5CcmVha0JlZm9yZSh0ZXh0W2luZGV4XSwgbGluZUJyZWFrKSkKKyAgICAgICAg
ICAgIHJldHVybiBpbmRleDsKKyAgICB9CisgICAgcmV0dXJuIHsgfTsKK30KIAotICAgIGF1dG8g
Y2FuQnJlYWtCZXR3ZWVuQW55VHlwb2dyYXBoaWNDaGFyYWN0ZXJVbml0ID0gbGluZUJyZWFrID09
IExpbmVCcmVhazo6QW55d2hlcmUgfHwgc3R5bGUud29yZEJyZWFrKCkgPT0gV29yZEJyZWFrOjpC
cmVha1dvcmQgfHwgc3R5bGUub3ZlcmZsb3dXcmFwKCkgPT0gT3ZlcmZsb3dXcmFwOjpCcmVha1dv
cmQgfHwgc3R5bGUub3ZlcmZsb3dXcmFwKCkgPT0gT3ZlcmZsb3dXcmFwOjpBbnl3aGVyZTsKLSAg
ICBpZiAoY2FuQnJlYWtCZXR3ZWVuQW55VHlwb2dyYXBoaWNDaGFyYWN0ZXJVbml0KQotICAgICAg
ICByZXR1cm4gd29yZEJyZWFrOworc3RhdGljIHN0ZDo6b3B0aW9uYWw8VGV4dFV0aWw6OldvcmRC
cmVha0xlZnQ+IG1pZFdvcmRCcmVhayhjb25zdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGlu
dW91c0NvbnRlbnQ6OlJ1biYgdGV4dFJ1biwgSW5saW5lTGF5b3V0VW5pdCBydW5Mb2dpY2FsTGVm
dCwgSW5saW5lTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCkKK3sKKyAgICBBU1NFUlQodGV4dFJ1
bi5zdHlsZS53b3JkQnJlYWsoKSA9PSBXb3JkQnJlYWs6OkJyZWFrQWxsKTsKKyAgICBhdXRvJiBp
bmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPih0ZXh0UnVuLmlubGluZUl0
ZW0pOworCisgICAgYXV0byB3b3JkQnJlYWsgPSBUZXh0VXRpbDo6YnJlYWtXb3JkKGlubGluZVRl
eHRJdGVtLCB0ZXh0UnVuLnN0eWxlLmZvbnRDYXNjYWRlKCksIHRleHRSdW4ubG9naWNhbFdpZHRo
LCBhdmFpbGFibGVXaWR0aCwgcnVuTG9naWNhbExlZnQpOworICAgIGlmICghd29yZEJyZWFrLmxl
bmd0aCB8fCB3b3JkQnJlYWsubGVuZ3RoID09IGlubGluZVRleHRJdGVtLmxlbmd0aCgpKQorICAg
ICAgICByZXR1cm4geyB9OwogCiAgICAgLy8gRmluZCBvdXQgaWYgdGhlIGNhbmRpZGF0ZSBwb3Np
dGlvbiBmb3IgYXJiaXRyYXJ5IGJyZWFraW5nIGlzIHZhbGlkLiBXZSBjYW4ndCBhbHdheXMgYnJl
YWsgYmV0d2VlbiBhbnkgY2hhcmFjdGVycy4KKyAgICBhdXRvIGxpbmVCcmVhayA9IHRleHRSdW4u
c3R5bGUubGluZUJyZWFrKCk7CiAgICAgYXV0byB0ZXh0ID0gaW5saW5lVGV4dEl0ZW0uaW5saW5l
VGV4dEJveCgpLmNvbnRlbnQoKTsKKyAgICBpZiAoY2FuQnJlYWtCZWZvcmUodGV4dFtpbmxpbmVU
ZXh0SXRlbS5zdGFydCgpICsgd29yZEJyZWFrLmxlbmd0aF0sIGxpbmVCcmVhaykpCisgICAgICAg
IHJldHVybiB3b3JkQnJlYWs7CisKICAgICBjb25zdCBhdXRvIGxlZnQgPSBpbmxpbmVUZXh0SXRl
bS5zdGFydCgpOwogICAgIGF1dG8gcmlnaHQgPSBsZWZ0ICsgd29yZEJyZWFrLmxlbmd0aDsKICAg
ICBmb3IgKDsgcmlnaHQgPiBsZWZ0OyAtLXJpZ2h0KSB7Ci0gICAgICAgIGF1dG8gY2FuQnJlYWtC
ZWZvcmUgPSBbJl0oYXV0byBjaGFyYWN0ZXIpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBpbmNsdWRlIGFsbCB0aGUgY2FzZXMgZnJvbSBodHRwczovL3VuaWNvZGUub3JnL3Jl
cG9ydHMvdHIxNAotICAgICAgICAgICAgLy8gVXNlIGEgYnJlYWtpbmcgbWF0cml4IHNpbWlsYXIg
dG8gbGluZUJyZWFrVGFibGUgaW4gQnJlYWtMaW5lcy5jcHAKLSAgICAgICAgICAgIC8vIEFsc28g
c2VlIGtCcmVha0FsbExpbmVCcmVha0NsYXNzVGFibGUgaW4gdGhpcmRfcGFydHkvYmxpbmsvcmVu
ZGVyZXIvcGxhdGZvcm0vdGV4dC90ZXh0X2JyZWFrX2l0ZXJhdG9yLmNjCi0gICAgICAgICAgICBp
ZiAobGluZUJyZWFrICE9IExpbmVCcmVhazo6TG9vc2UpIHsKLSAgICAgICAgICAgICAgICAvLyBU
aGUgZm9sbG93aW5nIGJyZWFrcyBhcmUgYWxsb3dlZCBmb3IgbG9vc2UgbGluZSBicmVha2luZyBp
ZiB0aGUgcHJlY2VkaW5nIGNoYXJhY3RlciBiZWxvbmdzIHRvIHRoZSBVbmljb2RlCi0gICAgICAg
ICAgICAgICAgLy8gbGluZSBicmVha2luZyBjbGFzcyBJRCwgYW5kIGFyZSBvdGhlcndpc2UgZm9y
YmlkZGVuOgotICAgICAgICAgICAgICAgIC8vIOKAkCBVKzIwMTAsIOKAkyBVKzIwMTMKLSAgICAg
ICAgICAgICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRleHQvI2xpbmUtYnJl
YWstcHJvcGVydHkKLSAgICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyID09IGh5cGhlbiB8fCBj
aGFyYWN0ZXIgPT0gZW5kYXNoKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoY2hhcmFjdGVyID09IG5vQnJlYWtTcGFjZSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBhdXRvIGlzUHVuY3R1
YXRpb24gPSBVX0dFVF9HQ19NQVNLKGNoYXJhY3RlcikgJiAoVV9HQ19QU19NQVNLIHwgVV9HQ19Q
RV9NQVNLIHwgVV9HQ19QSV9NQVNLIHwgVV9HQ19QRl9NQVNLIHwgVV9HQ19QT19NQVNLKTsKLSAg
ICAgICAgICAgIHJldHVybiBjaGFyYWN0ZXIgPT0gcmV2ZXJzZVNvbGlkdXMgfHwgIWlzUHVuY3R1
YXRpb247Ci0gICAgICAgIH07CiAgICAgICAgIFUxNl9TRVRfQ1BfU1RBUlQodGV4dCwgbGVmdCwg
cmlnaHQpOwotICAgICAgICBpZiAoY2FuQnJlYWtCZWZvcmUodGV4dFtyaWdodF0pKQorICAgICAg
ICBpZiAoY2FuQnJlYWtCZWZvcmUodGV4dFtyaWdodF0sIGxpbmVCcmVhaykpCiAgICAgICAgICAg
ICBicmVhazsKICAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlQocmlnaHQgPj0gbGVmdCk7Ci0gICAg
aWYgKGxlZnQgKyB3b3JkQnJlYWsubGVuZ3RoID09IHJpZ2h0KQotICAgICAgICByZXR1cm4gd29y
ZEJyZWFrOwogICAgIGlmIChsZWZ0ID09IHJpZ2h0KQogICAgICAgICByZXR1cm4geyB9OwotICAg
IHJldHVybiB7IHJpZ2h0IC0gbGVmdCwgVGV4dFV0aWw6OndpZHRoKGlubGluZVRleHRJdGVtLCBz
dHlsZS5mb250Q2FzY2FkZSgpLCBsZWZ0LCByaWdodCwgcnVuTG9naWNhbExlZnQpIH07CisgICAg
cmV0dXJuIFRleHRVdGlsOjpXb3JkQnJlYWtMZWZ0IHsgcmlnaHQgLSBsZWZ0LCBUZXh0VXRpbDo6
d2lkdGgoaW5saW5lVGV4dEl0ZW0sIHRleHRSdW4uc3R5bGUuZm9udENhc2NhZGUoKSwgbGVmdCwg
cmlnaHQsIHJ1bkxvZ2ljYWxMZWZ0KSB9OwogfQogCiBzdHJ1Y3QgQ2FuZGlkYXRlVGV4dFJ1bkZv
ckJyZWFraW5nIHsKQEAgLTM4MCw0MiArMzk4LDMxIEBAIHN0ZDo6b3B0aW9uYWw8SW5saW5lQ29u
dGVudEJyZWFrZXI6OlBhcnRpYWxSdW4+IElubGluZUNvbnRlbnRCcmVha2VyOjp0cnlCcmVha2lu
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghaW5saW5lVGV4dEl0ZW0ubGVuZ3Ro
KCkpIHsKLSAgICAgICAgICAgICAgICAvLyBFbXB0eSB0ZXh0IHJ1bnMgbWF5IGJlIGJyZWFrYWJs
ZSBiYXNlZCBvbiBzdHlsZSwgYnV0IGluIHByYWN0aWNlIHdlIGNhbid0IHJlYWxseSBzcGxpdCB0
aGVtIGFueSBmdXJ0aGVyLgotICAgICAgICAgICAgICAgIHJldHVybiBQYXJ0aWFsUnVuIHsgfTsK
KyAgICAgICAgICAgICAgICAvLyBFbXB0eS9zaW5nbGUgY2hhcmFjdGVyIHRleHQgcnVucyBtYXkg
YmUgYnJlYWthYmxlIGJhc2VkIG9uIHN0eWxlLCBidXQgaW4gcHJhY3RpY2Ugd2UgY2FuJ3QgcmVh
bGx5IHNwbGl0IHRoZW0gYW55IGZ1cnRoZXIuCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCFjYW5kaWRhdGVUZXh0UnVuLmlzT3Zl
cmZsb3dpbmdSdW4pIHsKLSAgICAgICAgICAgICAgICAvLyBXaGVuIHRoZSBydW4gY2FuIGJlIHNw
bGl0IGF0IGFyYml0cmFyeSBwb3NpdGlvbiB3ZSB3b3VsZCBub3JtYWxseSBqdXN0IHJldHVybiB0
aGUgZW50aXJlIHJ1biB3aGVuIGl0IGlzIGludGVuZGVkIHRvIGZpdCBvbiB0aGUgbGluZQotICAg
ICAgICAgICAgICAgIC8vIGJ1dCBoZXJlIHdlIGhhdmUgdG8gY2hlY2sgZm9yIG1pZC13b3JkIGJy
ZWFrLgotICAgICAgICAgICAgICAgIGF1dG8gbmV4dEluZGV4ID0gbmV4dFRleHRSdW5JbmRleChy
dW5zLCBjYW5kaWRhdGVUZXh0UnVuLmluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAoIW5leHRJ
bmRleCB8fCAhZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KHJ1bnNbKm5leHRJbmRleF0uaW5saW5l
SXRlbSkuaXNXaGl0ZXNwYWNlKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBQYXJ0aWFs
UnVuIHsgaW5saW5lVGV4dEl0ZW0ubGVuZ3RoKCksIFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0
SXRlbSwgZm9udENhc2NhZGUsIGNhbmRpZGF0ZVRleHRSdW4ubG9naWNhbExlZnQpIH07Ci0gICAg
ICAgICAgICAgICAgLy8gV2UndmUgZ290IHJvb20gZm9yIHRoZSBydW4gYnV0IHdlIGhhdmUgdG8g
dHJ5IHRvIGJyZWFrIGl0IG1pZC13b3JkLgotICAgICAgICAgICAgICAgIGlmIChpbmxpbmVUZXh0
SXRlbS5sZW5ndGgoKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IG1p
ZC13b3JkIGJyZWFrIGEgc2luZ2xlIGNoYXJhY3Rlci4KLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgICAgIGlmIChjYW5kaWRhdGVUZXh0UnVuLmlzT3ZlcmZsb3dpbmdS
dW4pIHsKKyAgICAgICAgICAgICAgICBpZiAobGluZUhhc1Jvb21Gb3JDb250ZW50KSB7CisgICAg
ICAgICAgICAgICAgICAgIC8vIFRyeSB0byBicmVhayB0aGUgb3ZlcmZsb3dpbmcgcnVuIG1pZC13
b3JkLgorICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byB3b3JkQnJlYWsgPSBtaWRXb3JkQnJl
YWsoY2FuZGlkYXRlUnVuLCBjYW5kaWRhdGVUZXh0UnVuLmxvZ2ljYWxMZWZ0LCBhdmFpbGFibGVX
aWR0aCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUGFydGlhbFJ1biB7IHdvcmRC
cmVhay0+bGVuZ3RoLCB3b3JkQnJlYWstPmxvZ2ljYWxXaWR0aCB9OwogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBhdXRvIHN0YXJ0UG9zaXRpb24gPSBpbmxpbmVUZXh0SXRlbS5z
dGFydCgpOwotICAgICAgICAgICAgICAgIGF1dG8gZW5kUG9zaXRpb24gPSBpbmxpbmVUZXh0SXRl
bS5lbmQoKSAtIDE7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFBhcnRpYWxSdW4geyBpbmxpbmVU
ZXh0SXRlbS5sZW5ndGgoKSAtIDEsIFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0SXRlbSwgZm9u
dENhc2NhZGUsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCBjYW5kaWRhdGVUZXh0UnVuLmxv
Z2ljYWxMZWZ0KSB9OworICAgICAgICAgICAgICAgIGlmIChjYW5CcmVha0JlZm9yZShpbmxpbmVU
ZXh0SXRlbS5pbmxpbmVUZXh0Qm94KCkuY29udGVudCgpW2lubGluZVRleHRJdGVtLnN0YXJ0KCld
LCBzdHlsZS5saW5lQnJlYWsoKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBQYXJ0aWFs
UnVuIHsgfTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBpZiAoIWxpbmVIYXNSb29tRm9yQ29udGVudCkgewotICAgICAgICAgICAgICAg
IGF1dG8gcHJldmlvdXNJbmRleCA9IHByZXZpb3VzVGV4dFJ1bkluZGV4KHJ1bnMsIGNhbmRpZGF0
ZVRleHRSdW4uaW5kZXgpOwotICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNJbmRleCB8fCAh
ZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KHJ1bnNbKnByZXZpb3VzSW5kZXhdLmlubGluZUl0ZW0p
LmlzV2hpdGVzcGFjZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZhc3QgcGF0aCBmb3Ig
Y2FzZXMgd2hlbiB0aGVyZSdzIG5vIHJvb20gYXQgYWxsLiBXZSBjYW4gYnJlYWsgdGhpcyBjb250
ZW50IGF0IHRoZSBzdGFydC4KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnRpYWxSdW4g
eyB9OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaW5saW5lVGV4dEl0
ZW0ubGVuZ3RoKCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBtaWQt
d29yZCBicmVhayBhIHNpbmdsZSBjaGFyYWN0ZXIuCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biB7IH07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGF1dG8gc3RhcnRQb3Np
dGlvbiA9IGlubGluZVRleHRJdGVtLnN0YXJ0KCkgKyAxOwotICAgICAgICAgICAgICAgIGF1dG8g
ZW5kUG9zaXRpb24gPSBpbmxpbmVUZXh0SXRlbS5lbmQoKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gUGFydGlhbFJ1biB7IGlubGluZVRleHRJdGVtLmxlbmd0aCgpIC0gMSwgVGV4dFV0aWw6Ondp
ZHRoKGlubGluZVRleHRJdGVtLCBmb250Q2FzY2FkZSwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRp
b24sIGNhbmRpZGF0ZVRleHRSdW4ubG9naWNhbExlZnQpIH07CisgICAgICAgICAgICAvLyBUaGlz
IGlzIGEgbm9uLW92ZXJmbG93aW5nIGNvbnRlbnQuCisgICAgICAgICAgICBBU1NFUlQobGluZUhh
c1Jvb21Gb3JDb250ZW50KTsKKyAgICAgICAgICAgIGlmIChhdXRvIGJyZWFraW5nUG9zaXRpb24g
PSBsYXN0VmFsaWRCcmVha2luZ1Bvc2l0aW9uKHJ1bnMsIGNhbmRpZGF0ZVRleHRSdW4uaW5kZXgp
KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCpicmVha2luZ1Bvc2l0aW9uIDw9IGlubGluZVRl
eHRJdGVtLmVuZCgpKTsKKyAgICAgICAgICAgICAgICBhdXRvIHRyYWlsaW5nTGVuZ3RoID0gKmJy
ZWFraW5nUG9zaXRpb24gLSBpbmxpbmVUZXh0SXRlbS5zdGFydCgpOworICAgICAgICAgICAgICAg
IGF1dG8gc3RhcnRQb3NpdGlvbiA9IGlubGluZVRleHRJdGVtLnN0YXJ0KCk7CisgICAgICAgICAg
ICAgICAgYXV0byBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24gKyB0cmFpbGluZ0xlbmd0aDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gUGFydGlhbFJ1biB7IHRyYWlsaW5nTGVuZ3RoLCBUZXh0
VXRpbDo6d2lkdGgoaW5saW5lVGV4dEl0ZW0sIGZvbnRDYXNjYWRlLCBzdGFydFBvc2l0aW9uLCBl
bmRQb3NpdGlvbiwgY2FuZGlkYXRlVGV4dFJ1bi5sb2dpY2FsTGVmdCkgfTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGF1dG8gbWlkV29yZEJyZWFrID0gV2ViQ29yZTo6TGF5b3V0OjptaWRX
b3JkQnJlYWsoY2FuZGlkYXRlUnVuLCBjYW5kaWRhdGVUZXh0UnVuLmxvZ2ljYWxMZWZ0LCBhdmFp
bGFibGVXaWR0aCk7Ci0gICAgICAgICAgICByZXR1cm4gUGFydGlhbFJ1biB7IG1pZFdvcmRCcmVh
ay5sZW5ndGgsIG1pZFdvcmRCcmVhay5sb2dpY2FsV2lkdGggfTsKKyAgICAgICAgICAgIHJldHVy
biB7IH07CiAgICAgICAgIH07CiAgICAgICAgIHJldHVybiB0cnlCcmVha2luZ0F0QXJiaXRyYXJ5
UG9zaXRpb25XaXRoaW5Xb3JkcygpOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyOGVlZWY5YTYzYjBhM2EyNmU1
OTRkYWIxNGRkMjIxNDYwZjg1Mzg5Li42MjUyN2U3MTU1YjU5ODI1NGQ0YmY4NTQ5Mzc2OWFjNWU3
YjRiYzE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTAtMjQgIEFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW0lGQ10gQ2hlY2sgYWNyb3NzIGlubGlu
ZSBib3ggYm91bmRhcmllcyBmb3IgYnJlYWthYmxlIHBvc2l0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIyMTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisKIDIw
MjEtMTAtMjIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICB2
aWRlbyBhcHBlYXJzIGJsYW5rIHdpdGggb25seSBhdWRpbyBwbGF5aW5nIGlmIHZpZGVvIGVsZW1l
bnQgaXNuJ3QgYXBwZW5kZWQgdG8gdGhlIGRvbSB0cmVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3
MjBhMjVjMDAzOTU5Mjk2NTcxNjI2ZTY3YWI1NjUwMzExOWRiMzNmLi5lNGQ5OGM5ZGZkODA2MDJh
NmU3M2RiZmJmZTI1MmEzMjY0ZGM1ZWE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI3NDcsMTIg
KzI3NDcsMTAgQEAgd2Via2l0Lm9yZy9iLzE4MzI1OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtdGV4dC93b3JkLWJyZWFrL3dvcmQKIHdlYmtpdC5vcmcvYi8xOTUyNzUg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvd29yZC1icmVhay93
b3JkLWJyZWFrLWJyZWFrLWFsbC0wMjAuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzE5NzQzMCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4
dC93b3JkLWJyZWFrL3dvcmQtYnJlYWstYnJlYWstYWxsLTAyMy5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvMTk3NDMwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10ZXh0L3dvcmQtYnJlYWsvd29yZC1icmVhay1icmVhay1hbGwtMDI0Lmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMTQyOTAgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvd29yZC1icmVhay93b3JkLWJyZWFrLWJyZWFr
LWFsbC1pbmxpbmUtMDA4Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8x
ODMyNTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvd29yZC1i
cmVhay93b3JkLWJyZWFrLWtlZXAtYWxsLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMTk1Mjc1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy10ZXh0L3dvcmQtYnJlYWsvd29yZC1icmVhay1rZWVwLWFsbC0wMDYuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE4MzI1OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtdGV4dC93b3JkLWJyZWFrL3dvcmQtYnJlYWstbm9ybWFsLW15LTAwMC5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTgzMjU4IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0L3dvcmQtYnJlYWsvd29yZC1icmVhay1u
b3JtYWwtdGRkLTAwMC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjE0
MjkwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0L3dvcmQtYnJl
YWsvd29yZC1icmVhay1taW4tY29udGVudC0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQog
d2Via2l0Lm9yZy9iLzIxNDI5MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdGV4dC93b3JkLWJyZWFrL3dvcmQtYnJlYWstbWluLWNvbnRlbnQtMDA2Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xOTUyNzUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvd3JpdGluZy1zeXN0ZW0vd3JpdGluZy1zeXN0ZW0tc2Vn
bWVudC1icmVhay0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE5
NTI3NSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4dC93cml0aW5n
LXN5c3RlbS93cml0aW5nLXN5c3RlbS10ZXh0LXRyYW5zZm9ybS0wMDEuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442319</attachid>
            <date>2021-10-24 13:42:51 -0700</date>
            <delta_ts>2021-10-24 14:42:42 -0700</delta_ts>
            <desc>Patch with dependencies</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>21018</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyOGVlZWY5YTYzYjAuLjYyNTI3ZTcxNTViNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDIxLTEwLTI0ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBb
TEZDXVtJRkNdIENoZWNrIGFjcm9zcyBpbmxpbmUgYm94IGJvdW5kYXJpZXMgZm9yIGJyZWFrYWJs
ZSBwb3NpdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMyMjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTEwLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgdmlkZW8gYXBwZWFycyBibGFuayB3aXRoIG9ubHkg
YXVkaW8gcGxheWluZyBpZiB2aWRlbyBlbGVtZW50IGlzbid0IGFwcGVuZGVkIHRvIHRoZSBkb20g
dHJlZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNzIwYTI1YzAwMzk1Li5lNGQ5OGM5ZGZkODAgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMjc0NywxMiArMjc0NywxMCBAQCB3ZWJraXQub3JnL2IvMTgz
MjU4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0L3dvcmQtYnJl
YWsvd29yZAogd2Via2l0Lm9yZy9iLzE5NTI3NSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdGV4dC93b3JkLWJyZWFrL3dvcmQtYnJlYWstYnJlYWstYWxsLTAyMC5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTk3NDMwIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0L3dvcmQtYnJlYWsvd29yZC1icmVhay1icmVh
ay1hbGwtMDIzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xOTc0MzAg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvd29yZC1icmVhay93
b3JkLWJyZWFrLWJyZWFrLWFsbC0wMjQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0
Lm9yZy9iLzIxNDI5MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4
dC93b3JkLWJyZWFrL3dvcmQtYnJlYWstYnJlYWstYWxsLWlubGluZS0wMDguaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE4MzI1OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdGV4dC93b3JkLWJyZWFrL3dvcmQtYnJlYWsta2VlcC1hbGwtMDAz
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xOTUyNzUgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvd29yZC1icmVhay93b3JkLWJyZWFr
LWtlZXAtYWxsLTAwNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTgz
MjU4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0L3dvcmQtYnJl
YWsvd29yZC1icmVhay1ub3JtYWwtbXktMDAwLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdl
YmtpdC5vcmcvYi8xODMyNTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRleHQvd29yZC1icmVhay93b3JkLWJyZWFrLW5vcm1hbC10ZGQtMDAwLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMTQyOTAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRleHQvd29yZC1icmVhay93b3JkLWJyZWFrLW1pbi1jb250ZW50LTAw
My5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjE0MjkwIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0L3dvcmQtYnJlYWsvd29yZC1icmVh
ay1taW4tY29udGVudC0wMDYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9i
LzE5NTI3NSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4dC93cml0
aW5nLXN5c3RlbS93cml0aW5nLXN5c3RlbS1zZWdtZW50LWJyZWFrLTAwMS5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTk1Mjc1IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10ZXh0L3dyaXRpbmctc3lzdGVtL3dyaXRpbmctc3lzdGVtLXRleHQt
dHJhbnNmb3JtLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI3
MTkwYmVlNGU2Li5lN2Y4OTlhZjc2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAy
MS0xMC0yNCAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11b
SUZDXSBDaGVjayBhY3Jvc3MgaW5saW5lIGJveCBib3VuZGFyaWVzIGZvciBicmVha2FibGUgcG9z
aXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MjIxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggZXhwYW5kcyB0aGUgImNhbiB3ZSBicmVhayBiZWZvcmUiIGNoZWNrIGFjcm9zcyBt
dWx0aXBsZSBydW5zLgorICAgICAgICBUaGVyZSBhcmUgY2FzZXMgd2hlbiwgd2hpbGUgdGhlIGNv
bnRlbnQgaXMgYnJlYWstYWxsLCB3ZSBuZWVkIHRvIGxvb2sgYXQgYWRqYWNlbnQgcnVucyB0byBk
ZWNpZGVkIHdoZXRoZXIgdGhlCisgICAgICAgIHJ1biBib3VuZGFyeSBpcyBhIHZhbGlkIGJyZWFr
aW5nIHBvc2l0aW9uLgorICAgICAgICBlLmcKKyAgICAgICAgPGRpdiBzdHlsZT0id2lkdGg6IDFj
aDsgd29yZC1icmVhazogYnJlYWstYWxsIj48c3Bhbj5YPC9zcGFuPjxzcGFuPi48L3NwYW4+PC9k
aXY+CisgICAgICAgICAgJ2JyZWFrLWFsbCcgdGVsbHMgdXMgdG8gYnJlYWsgYWZ0ZXIgJ1hdJyBi
dXQgdGhlIHB1bmN0dWF0aW9uIGNoYXJhY3RlciBwcmV2ZW50cyB1cyB0byBkbyBzby4KKyAgICAg
ICAgICBUaGlzIHNob3VsZCB3b3JrIGV2ZW4gd2hlbiB0aGUgY29udGVudCBpcyBpbiBzZXBhcmF0
ZSBydW5zIChbWF1bLl0gZS5nLiBpbmxpbmUtYm94IGJvdW5kYXJ5IG9yIHNpbXBseQorICAgICAg
ICAgIHRoZXkgcmVwcmVzZW50IGluZGl2aWR1YWwgRE9NIG5vZGVzKQorCisgICAgICAgICogbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpjYW5CcmVha0JlZm9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OmZpbmRMYXN0VmFsaWRCcmVha2luZ1Bvc2l0aW9uKTogTGV0J3MgZmluZCB0
aGUgbGFzdCB2YWxpZCBicmVha2luZyBwb3NpdGlvbiBpbiB0aGlzIHJ1biBpbmNsdWRpbmcgdGhl
IHJ1biBlbmQgYm91bmRhcnkuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om1pZFdvcmRCcmVh
ayk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCcmVha2VyOjp0cnlC
cmVha2luZ1RleHRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpwcmV2aW91
c1RleHRSdW5JbmRleCk6IERlbGV0ZWQuCisKKzIwMjEtMTAtMjQgIEFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW0lGQ10gUmVuYW1lIFRleHRVdGlsOjptaWRX
b3JkQnJlYWsgdG8gYnJlYWtXb3JkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzIyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIGZ1bmN0aW9uIG1heSAiYnJlYWsiIHRoZSBjb250ZW50IGF0IHRo
ZSBsZWZ0L3JpZ2h0IGJvdW5kYXJ5LiBUaGlzIGlzIGFsc28gaW4gcHJlcGFyYXRpb24gZm9yCisg
ICAgICAgIHVzaW5nIG1pZFdvcmRCcmVhayB0ZXJtIHRvIGluZGljYXRlIGEgcG9zaXRpb24gc29t
ZXdoZXJlIHdpdGhpbiB0aGUgd29yZCBib3VuZGFyeS4KKworICAgICAgICAqIGxheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6bWlkV29yZEJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lQ29udGVudEJyZWFrZXI6OnRyeUJyZWFraW5nVGV4dFJ1biBjb25zdCk6CisgICAg
ICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRpbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRleHRVdGlsOjpicmVha1dvcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpUZXh0VXRpbDo6bWlkV29yZEJyZWFrKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0L1RleHRVdGlsLmg6
CisKIDIwMjEtMTAtMjMgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtMRkNdW0lGQ10gQnJlYWtpbmcgYmVmb3JlIGh5cGhlbiBpcyBvbmx5IGFsbG93ZWQgd2hlbiBs
aW5lLWJyZWFrIGlzIGxvb3NlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJl
YWtlci5jcHAKaW5kZXggYmI5NzE2YTNjYjZhLi45ZjRmMzYzMGM4YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRl
bnRCcmVha2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHAKQEAgLTg0LDE1ICs4NCw2IEBAIHN0
YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5leHRUZXh0UnVuSW5kZXgoY29uc3Qg
SW5saW5lQ29udGVudEJyZWFrZXI6CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGljIGlubGlu
ZSBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcHJldmlvdXNUZXh0UnVuSW5kZXgoY29uc3QgSW5saW5l
Q29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50OjpSdW5MaXN0JiBydW5zLCBzaXplX3Qg
c3RhcnRJbmRleCkKLXsKLSAgICBmb3IgKGF1dG8gaW5kZXggPSBzdGFydEluZGV4OyBpbmRleC0t
OykgewotICAgICAgICBpZiAocnVuc1tpbmRleF0uaW5saW5lSXRlbS5pc1RleHQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBpbmRleDsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQogc3RhdGlj
IGlubGluZSBib29sIGlzVmlzdWFsbHlFbXB0eVdoaXRlc3BhY2VDb250ZW50KGNvbnN0IElubGlu
ZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudCYgY29udGludW91c0NvbnRlbnQpCiB7
CiAgICAgLy8gWzxzcGFuPjwvc3Bhbj4gXSBbPHNwYW4+IDwvc3Bhbj5dIFsgPHNwYW4gc3R5bGU9
InBhZGRpbmc6IDBweDsiPjwvc3Bhbj5dIGFyZSBhbGwgY29uc2lkZXJlZCB2aXN1YWxseSBlbXB0
eSB3aGl0ZXNwYWNlIGNvbnRlbnQuCkBAIC0zMDIsNTMgKzI5Myw4MCBAQCBzdGF0aWMgYm9vbCBp
c1dyYXBwYWJsZVJ1bihjb25zdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRl
bnQ6OlJ1biYgcgogICAgIHJldHVybiBUZXh0VXRpbDo6aXNXcmFwcGluZ0FsbG93ZWQocnVuLnN0
eWxlKTsKIH0KIAotc3RhdGljIFRleHRVdGlsOjpNaWRXb3JkQnJlYWsgbWlkV29yZEJyZWFrKGNv
bnN0IElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6UnVuJiB0ZXh0UnVu
LCBJbmxpbmVMYXlvdXRVbml0IHJ1bkxvZ2ljYWxMZWZ0LCBJbmxpbmVMYXlvdXRVbml0IGF2YWls
YWJsZVdpZHRoKQorc3RhdGljIGlubGluZSBib29sIGNhbkJyZWFrQmVmb3JlKFVDaGFyMzIgY2hh
cmFjdGVyLCBMaW5lQnJlYWsgbGluZUJyZWFrKQoreworICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBpbmNsdWRlIGFsbCB0aGUgY2FzZXMgZnJvbSBodHRwczovL3VuaWNvZGUub3JnL3JlcG9ydHMv
dHIxNAorICAgIC8vIFVzZSBhIGJyZWFraW5nIG1hdHJpeCBzaW1pbGFyIHRvIGxpbmVCcmVha1Rh
YmxlIGluIEJyZWFrTGluZXMuY3BwCisgICAgLy8gQWxzbyBzZWUga0JyZWFrQWxsTGluZUJyZWFr
Q2xhc3NUYWJsZSBpbiB0aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS90ZXh0L3Rl
eHRfYnJlYWtfaXRlcmF0b3IuY2MKKyAgICBpZiAobGluZUJyZWFrICE9IExpbmVCcmVhazo6TG9v
c2UpIHsKKyAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBicmVha3MgYXJlIGFsbG93ZWQgZm9yIGxv
b3NlIGxpbmUgYnJlYWtpbmcgaWYgdGhlIHByZWNlZGluZyBjaGFyYWN0ZXIgYmVsb25ncyB0byB0
aGUgVW5pY29kZQorICAgICAgICAvLyBsaW5lIGJyZWFraW5nIGNsYXNzIElELCBhbmQgYXJlIG90
aGVyd2lzZSBmb3JiaWRkZW46CisgICAgICAgIC8vIOKAkCBVKzIwMTAsIOKAkyBVKzIwMTMKKyAg
ICAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10ZXh0LyNsaW5lLWJyZWFrLXBy
b3BlcnR5CisgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gaHlwaGVuIHx8IGNoYXJhY3RlciA9PSBl
bmRhc2gpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChjaGFyYWN0
ZXIgPT0gbm9CcmVha1NwYWNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBpc1B1
bmN0dWF0aW9uID0gVV9HRVRfR0NfTUFTSyhjaGFyYWN0ZXIpICYgKFVfR0NfUFNfTUFTSyB8IFVf
R0NfUEVfTUFTSyB8IFVfR0NfUElfTUFTSyB8IFVfR0NfUEZfTUFTSyB8IFVfR0NfUE9fTUFTSyk7
CisgICAgcmV0dXJuIGNoYXJhY3RlciA9PSByZXZlcnNlU29saWR1cyB8fCAhaXNQdW5jdHVhdGlv
bjsKK30KKworc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbGFzdFZhbGlkQnJl
YWtpbmdQb3NpdGlvbihjb25zdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRl
bnQ6OlJ1bkxpc3QmIHJ1bnMsIHNpemVfdCB0ZXh0UnVuSW5kZXgpCiB7CisgICAgYXV0byYgdGV4
dFJ1biA9IHJ1bnNbdGV4dFJ1bkluZGV4XTsKICAgICBhdXRvJiBpbmxpbmVUZXh0SXRlbSA9IGRv
d25jYXN0PElubGluZVRleHRJdGVtPih0ZXh0UnVuLmlubGluZUl0ZW0pOwotICAgIGF1dG8mIHN0
eWxlID0gdGV4dFJ1bi5zdHlsZTsKLSAgICBhdXRvIGxpbmVCcmVhayA9IHN0eWxlLmxpbmVCcmVh
aygpOwotICAgIEFTU0VSVChsaW5lQnJlYWsgPT0gTGluZUJyZWFrOjpBbnl3aGVyZSB8fCBzdHls
ZS53b3JkQnJlYWsoKSA9PSBXb3JkQnJlYWs6OkJyZWFrQWxsIHx8IHN0eWxlLndvcmRCcmVhaygp
ID09IFdvcmRCcmVhazo6QnJlYWtXb3JkIHx8IHN0eWxlLm92ZXJmbG93V3JhcCgpID09IE92ZXJm
bG93V3JhcDo6QnJlYWtXb3JkIHx8IHN0eWxlLm92ZXJmbG93V3JhcCgpID09IE92ZXJmbG93V3Jh
cDo6QW55d2hlcmUpOworICAgIEFTU0VSVChpbmxpbmVUZXh0SXRlbS5sZW5ndGgoKSk7CisgICAg
YXV0byBsaW5lQnJlYWsgPSB0ZXh0UnVuLnN0eWxlLmxpbmVCcmVhaygpOworCisgICAgYXV0byBh
ZGphY3RlbnRUZXh0UnVuSW5kZXggPSBuZXh0VGV4dFJ1bkluZGV4KHJ1bnMsIHRleHRSdW5JbmRl
eCk7CisgICAgaWYgKCFhZGphY3RlbnRUZXh0UnVuSW5kZXgpCisgICAgICAgIHJldHVybiBpbmxp
bmVUZXh0SXRlbS5lbmQoKTsKKyAgICAKKyAgICBhdXRvJiBuZXh0SW5saW5lVGV4dEl0ZW0gPSBk
b3duY2FzdDxJbmxpbmVUZXh0SXRlbT4ocnVuc1sqYWRqYWN0ZW50VGV4dFJ1bkluZGV4XS5pbmxp
bmVJdGVtKTsKKyAgICBhdXRvIGNhbkJyZWFrQXRSdW5Cb3VuZGFyeSA9IG5leHRJbmxpbmVUZXh0
SXRlbS5pc1doaXRlc3BhY2UoKSA/IG5leHRJbmxpbmVUZXh0SXRlbS5zdHlsZSgpLndoaXRlU3Bh
Y2UoKSAhPSBXaGl0ZVNwYWNlOjpCcmVha1NwYWNlcyA6CisgICAgICAgIGNhbkJyZWFrQmVmb3Jl
KG5leHRJbmxpbmVUZXh0SXRlbS5pbmxpbmVUZXh0Qm94KCkuY29udGVudCgpW25leHRJbmxpbmVU
ZXh0SXRlbS5zdGFydCgpXSwgbGluZUJyZWFrKTsKKyAgICBpZiAoY2FuQnJlYWtBdFJ1bkJvdW5k
YXJ5KQorICAgICAgICByZXR1cm4gaW5saW5lVGV4dEl0ZW0uZW5kKCk7CiAKLSAgICBhdXRvIG1p
ZFdvcmRCcmVhayA9IFRleHRVdGlsOjptaWRXb3JkQnJlYWsoaW5saW5lVGV4dEl0ZW0sIHN0eWxl
LmZvbnRDYXNjYWRlKCksIHRleHRSdW4ubG9naWNhbFdpZHRoLCBhdmFpbGFibGVXaWR0aCwgcnVu
TG9naWNhbExlZnQpOwotICAgIGlmICghbWlkV29yZEJyZWFrLmxlbmd0aCB8fCBtaWRXb3JkQnJl
YWsubGVuZ3RoID09IGlubGluZVRleHRJdGVtLmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gbWlk
V29yZEJyZWFrOworICAgIC8vIEZpbmQgb3V0IGlmIHRoZSBjYW5kaWRhdGUgcG9zaXRpb24gZm9y
IGFyYml0cmFyeSBicmVha2luZyBpcyB2YWxpZC4gV2UgY2FuJ3QgYWx3YXlzIGJyZWFrIGJldHdl
ZW4gYW55IGNoYXJhY3RlcnMuCisgICAgYXV0byB0ZXh0ID0gaW5saW5lVGV4dEl0ZW0uaW5saW5l
VGV4dEJveCgpLmNvbnRlbnQoKTsKKyAgICBhdXRvIGxlZnQgPSBpbmxpbmVUZXh0SXRlbS5zdGFy
dCgpOworICAgIGZvciAoYXV0byBpbmRleCA9IGlubGluZVRleHRJdGVtLmVuZCgpIC0gMTsgaW5k
ZXggPiBsZWZ0OyAtLWluZGV4KSB7CisgICAgICAgIFUxNl9TRVRfQ1BfU1RBUlQodGV4dCwgbGVm
dCwgaW5kZXgpOworICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgZmluZCBzdXJyb2dhdGVzL3Nl
Z21lbnRzIGFjcm9zcyBpbmxpbmUgaXRlbXMuCisgICAgICAgIEFTU0VSVChpbmRleCA+IGlubGlu
ZVRleHRJdGVtLnN0YXJ0KCkpOworICAgICAgICBpZiAoY2FuQnJlYWtCZWZvcmUodGV4dFtpbmRl
eF0sIGxpbmVCcmVhaykpCisgICAgICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgfQorICAgIHJl
dHVybiB7IH07Cit9CiAKLSAgICBhdXRvIGNhbkJyZWFrQmV0d2VlbkFueVR5cG9ncmFwaGljQ2hh
cmFjdGVyVW5pdCA9IGxpbmVCcmVhayA9PSBMaW5lQnJlYWs6OkFueXdoZXJlIHx8IHN0eWxlLndv
cmRCcmVhaygpID09IFdvcmRCcmVhazo6QnJlYWtXb3JkIHx8IHN0eWxlLm92ZXJmbG93V3JhcCgp
ID09IE92ZXJmbG93V3JhcDo6QnJlYWtXb3JkIHx8IHN0eWxlLm92ZXJmbG93V3JhcCgpID09IE92
ZXJmbG93V3JhcDo6QW55d2hlcmU7Ci0gICAgaWYgKGNhbkJyZWFrQmV0d2VlbkFueVR5cG9ncmFw
aGljQ2hhcmFjdGVyVW5pdCkKLSAgICAgICAgcmV0dXJuIG1pZFdvcmRCcmVhazsKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPFRleHRVdGlsOjpXb3JkQnJlYWtMZWZ0PiBtaWRXb3JkQnJlYWsoY29uc3Qg
SW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50OjpSdW4mIHRleHRSdW4sIElu
bGluZUxheW91dFVuaXQgcnVuTG9naWNhbExlZnQsIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxl
V2lkdGgpCit7CisgICAgQVNTRVJUKHRleHRSdW4uc3R5bGUud29yZEJyZWFrKCkgPT0gV29yZEJy
ZWFrOjpCcmVha0FsbCk7CisgICAgYXV0byYgaW5saW5lVGV4dEl0ZW0gPSBkb3duY2FzdDxJbmxp
bmVUZXh0SXRlbT4odGV4dFJ1bi5pbmxpbmVJdGVtKTsKKworICAgIGF1dG8gd29yZEJyZWFrID0g
VGV4dFV0aWw6OmJyZWFrV29yZChpbmxpbmVUZXh0SXRlbSwgdGV4dFJ1bi5zdHlsZS5mb250Q2Fz
Y2FkZSgpLCB0ZXh0UnVuLmxvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlV2lkdGgsIHJ1bkxvZ2ljYWxM
ZWZ0KTsKKyAgICBpZiAoIXdvcmRCcmVhay5sZW5ndGggfHwgd29yZEJyZWFrLmxlbmd0aCA9PSBp
bmxpbmVUZXh0SXRlbS5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIC8vIEZp
bmQgb3V0IGlmIHRoZSBjYW5kaWRhdGUgcG9zaXRpb24gZm9yIGFyYml0cmFyeSBicmVha2luZyBp
cyB2YWxpZC4gV2UgY2FuJ3QgYWx3YXlzIGJyZWFrIGJldHdlZW4gYW55IGNoYXJhY3RlcnMuCisg
ICAgYXV0byBsaW5lQnJlYWsgPSB0ZXh0UnVuLnN0eWxlLmxpbmVCcmVhaygpOwogICAgIGF1dG8g
dGV4dCA9IGlubGluZVRleHRJdGVtLmlubGluZVRleHRCb3goKS5jb250ZW50KCk7Ci0gICAgY29u
c3QgYXV0byBsZWZ0ID0gbWlkV29yZEJyZWFrLnN0YXJ0OwotICAgIGF1dG8gcmlnaHQgPSBsZWZ0
ICsgbWlkV29yZEJyZWFrLmxlbmd0aDsKKyAgICBpZiAoY2FuQnJlYWtCZWZvcmUodGV4dFtpbmxp
bmVUZXh0SXRlbS5zdGFydCgpICsgd29yZEJyZWFrLmxlbmd0aF0sIGxpbmVCcmVhaykpCisgICAg
ICAgIHJldHVybiB3b3JkQnJlYWs7CisKKyAgICBjb25zdCBhdXRvIGxlZnQgPSBpbmxpbmVUZXh0
SXRlbS5zdGFydCgpOworICAgIGF1dG8gcmlnaHQgPSBsZWZ0ICsgd29yZEJyZWFrLmxlbmd0aDsK
ICAgICBmb3IgKDsgcmlnaHQgPiBsZWZ0OyAtLXJpZ2h0KSB7Ci0gICAgICAgIGF1dG8gY2FuQnJl
YWtCZWZvcmUgPSBbJl0oYXV0byBjaGFyYWN0ZXIpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBpbmNsdWRlIGFsbCB0aGUgY2FzZXMgZnJvbSBodHRwczovL3VuaWNvZGUub3Jn
L3JlcG9ydHMvdHIxNAotICAgICAgICAgICAgLy8gVXNlIGEgYnJlYWtpbmcgbWF0cml4IHNpbWls
YXIgdG8gbGluZUJyZWFrVGFibGUgaW4gQnJlYWtMaW5lcy5jcHAKLSAgICAgICAgICAgIC8vIEFs
c28gc2VlIGtCcmVha0FsbExpbmVCcmVha0NsYXNzVGFibGUgaW4gdGhpcmRfcGFydHkvYmxpbmsv
cmVuZGVyZXIvcGxhdGZvcm0vdGV4dC90ZXh0X2JyZWFrX2l0ZXJhdG9yLmNjCi0gICAgICAgICAg
ICBpZiAobGluZUJyZWFrICE9IExpbmVCcmVhazo6TG9vc2UpIHsKLSAgICAgICAgICAgICAgICAv
LyBUaGUgZm9sbG93aW5nIGJyZWFrcyBhcmUgYWxsb3dlZCBmb3IgbG9vc2UgbGluZSBicmVha2lu
ZyBpZiB0aGUgcHJlY2VkaW5nIGNoYXJhY3RlciBiZWxvbmdzIHRvIHRoZSBVbmljb2RlCi0gICAg
ICAgICAgICAgICAgLy8gbGluZSBicmVha2luZyBjbGFzcyBJRCwgYW5kIGFyZSBvdGhlcndpc2Ug
Zm9yYmlkZGVuOgotICAgICAgICAgICAgICAgIC8vIOKAkCBVKzIwMTAsIOKAkyBVKzIwMTMKLSAg
ICAgICAgICAgICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRleHQvI2xpbmUt
YnJlYWstcHJvcGVydHkKLSAgICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyID09IGh5cGhlbiB8
fCBjaGFyYWN0ZXIgPT0gZW5kYXNoKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoY2hhcmFjdGVyID09IG5vQnJlYWtTcGFj
ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBhdXRvIGlzUHVu
Y3R1YXRpb24gPSBVX0dFVF9HQ19NQVNLKGNoYXJhY3RlcikgJiAoVV9HQ19QU19NQVNLIHwgVV9H
Q19QRV9NQVNLIHwgVV9HQ19QSV9NQVNLIHwgVV9HQ19QRl9NQVNLIHwgVV9HQ19QT19NQVNLKTsK
LSAgICAgICAgICAgIHJldHVybiBjaGFyYWN0ZXIgPT0gcmV2ZXJzZVNvbGlkdXMgfHwgIWlzUHVu
Y3R1YXRpb247Ci0gICAgICAgIH07CiAgICAgICAgIFUxNl9TRVRfQ1BfU1RBUlQodGV4dCwgbGVm
dCwgcmlnaHQpOwotICAgICAgICBpZiAoY2FuQnJlYWtCZWZvcmUodGV4dFtyaWdodF0pKQorICAg
ICAgICBpZiAoY2FuQnJlYWtCZWZvcmUodGV4dFtyaWdodF0sIGxpbmVCcmVhaykpCiAgICAgICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlQocmlnaHQgPj0gbGVmdCk7Ci0g
ICAgaWYgKGxlZnQgKyBtaWRXb3JkQnJlYWsubGVuZ3RoID09IHJpZ2h0KQotICAgICAgICByZXR1
cm4gbWlkV29yZEJyZWFrOwogICAgIGlmIChsZWZ0ID09IHJpZ2h0KQotICAgICAgICByZXR1cm4g
eyBsZWZ0LCB7IH0sIHsgfSB9OwotICAgIHJldHVybiB7IGxlZnQsIHJpZ2h0IC0gbGVmdCwgVGV4
dFV0aWw6OndpZHRoKGlubGluZVRleHRJdGVtLCBzdHlsZS5mb250Q2FzY2FkZSgpLCBsZWZ0LCBy
aWdodCwgcnVuTG9naWNhbExlZnQpIH07CisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJu
IFRleHRVdGlsOjpXb3JkQnJlYWtMZWZ0IHsgcmlnaHQgLSBsZWZ0LCBUZXh0VXRpbDo6d2lkdGgo
aW5saW5lVGV4dEl0ZW0sIHRleHRSdW4uc3R5bGUuZm9udENhc2NhZGUoKSwgbGVmdCwgcmlnaHQs
IHJ1bkxvZ2ljYWxMZWZ0KSB9OwogfQogCiBzdHJ1Y3QgQ2FuZGlkYXRlVGV4dFJ1bkZvckJyZWFr
aW5nIHsKQEAgLTM4MCw0MiArMzk4LDMxIEBAIHN0ZDo6b3B0aW9uYWw8SW5saW5lQ29udGVudEJy
ZWFrZXI6OlBhcnRpYWxSdW4+IElubGluZUNvbnRlbnRCcmVha2VyOjp0cnlCcmVha2luCiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghaW5saW5lVGV4dEl0ZW0ubGVuZ3RoKCkpIHsK
LSAgICAgICAgICAgICAgICAvLyBFbXB0eSB0ZXh0IHJ1bnMgbWF5IGJlIGJyZWFrYWJsZSBiYXNl
ZCBvbiBzdHlsZSwgYnV0IGluIHByYWN0aWNlIHdlIGNhbid0IHJlYWxseSBzcGxpdCB0aGVtIGFu
eSBmdXJ0aGVyLgotICAgICAgICAgICAgICAgIHJldHVybiBQYXJ0aWFsUnVuIHsgfTsKKyAgICAg
ICAgICAgICAgICAvLyBFbXB0eS9zaW5nbGUgY2hhcmFjdGVyIHRleHQgcnVucyBtYXkgYmUgYnJl
YWthYmxlIGJhc2VkIG9uIHN0eWxlLCBidXQgaW4gcHJhY3RpY2Ugd2UgY2FuJ3QgcmVhbGx5IHNw
bGl0IHRoZW0gYW55IGZ1cnRoZXIuCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCFjYW5kaWRhdGVUZXh0UnVuLmlzT3ZlcmZsb3dp
bmdSdW4pIHsKLSAgICAgICAgICAgICAgICAvLyBXaGVuIHRoZSBydW4gY2FuIGJlIHNwbGl0IGF0
IGFyYml0cmFyeSBwb3NpdGlvbiB3ZSB3b3VsZCBub3JtYWxseSBqdXN0IHJldHVybiB0aGUgZW50
aXJlIHJ1biB3aGVuIGl0IGlzIGludGVuZGVkIHRvIGZpdCBvbiB0aGUgbGluZQotICAgICAgICAg
ICAgICAgIC8vIGJ1dCBoZXJlIHdlIGhhdmUgdG8gY2hlY2sgZm9yIG1pZC13b3JkIGJyZWFrLgot
ICAgICAgICAgICAgICAgIGF1dG8gbmV4dEluZGV4ID0gbmV4dFRleHRSdW5JbmRleChydW5zLCBj
YW5kaWRhdGVUZXh0UnVuLmluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAoIW5leHRJbmRleCB8
fCAhZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KHJ1bnNbKm5leHRJbmRleF0uaW5saW5lSXRlbSku
aXNXaGl0ZXNwYWNlKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBQYXJ0aWFsUnVuIHsg
aW5saW5lVGV4dEl0ZW0ubGVuZ3RoKCksIFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0SXRlbSwg
Zm9udENhc2NhZGUsIGNhbmRpZGF0ZVRleHRSdW4ubG9naWNhbExlZnQpIH07Ci0gICAgICAgICAg
ICAgICAgLy8gV2UndmUgZ290IHJvb20gZm9yIHRoZSBydW4gYnV0IHdlIGhhdmUgdG8gdHJ5IHRv
IGJyZWFrIGl0IG1pZC13b3JkLgotICAgICAgICAgICAgICAgIGlmIChpbmxpbmVUZXh0SXRlbS5s
ZW5ndGgoKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IG1pZC13b3Jk
IGJyZWFrIGEgc2luZ2xlIGNoYXJhY3Rlci4KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICAgICAgICAgIGlmIChjYW5kaWRhdGVUZXh0UnVuLmlzT3ZlcmZsb3dpbmdSdW4pIHsK
KyAgICAgICAgICAgICAgICBpZiAobGluZUhhc1Jvb21Gb3JDb250ZW50KSB7CisgICAgICAgICAg
ICAgICAgICAgIC8vIFRyeSB0byBicmVhayB0aGUgb3ZlcmZsb3dpbmcgcnVuIG1pZC13b3JkLgor
ICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byB3b3JkQnJlYWsgPSBtaWRXb3JkQnJlYWsoY2Fu
ZGlkYXRlUnVuLCBjYW5kaWRhdGVUZXh0UnVuLmxvZ2ljYWxMZWZ0LCBhdmFpbGFibGVXaWR0aCkp
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUGFydGlhbFJ1biB7IHdvcmRCcmVhay0+
bGVuZ3RoLCB3b3JkQnJlYWstPmxvZ2ljYWxXaWR0aCB9OwogICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBhdXRvIHN0YXJ0UG9zaXRpb24gPSBpbmxpbmVUZXh0SXRlbS5zdGFydCgp
OwotICAgICAgICAgICAgICAgIGF1dG8gZW5kUG9zaXRpb24gPSBpbmxpbmVUZXh0SXRlbS5lbmQo
KSAtIDE7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFBhcnRpYWxSdW4geyBpbmxpbmVUZXh0SXRl
bS5sZW5ndGgoKSAtIDEsIFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0SXRlbSwgZm9udENhc2Nh
ZGUsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCBjYW5kaWRhdGVUZXh0UnVuLmxvZ2ljYWxM
ZWZ0KSB9OworICAgICAgICAgICAgICAgIGlmIChjYW5CcmVha0JlZm9yZShpbmxpbmVUZXh0SXRl
bS5pbmxpbmVUZXh0Qm94KCkuY29udGVudCgpW2lubGluZVRleHRJdGVtLnN0YXJ0KCldLCBzdHls
ZS5saW5lQnJlYWsoKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBQYXJ0aWFsUnVuIHsg
fTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBpZiAoIWxpbmVIYXNSb29tRm9yQ29udGVudCkgewotICAgICAgICAgICAgICAgIGF1dG8g
cHJldmlvdXNJbmRleCA9IHByZXZpb3VzVGV4dFJ1bkluZGV4KHJ1bnMsIGNhbmRpZGF0ZVRleHRS
dW4uaW5kZXgpOwotICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNJbmRleCB8fCAhZG93bmNh
c3Q8SW5saW5lVGV4dEl0ZW0+KHJ1bnNbKnByZXZpb3VzSW5kZXhdLmlubGluZUl0ZW0pLmlzV2hp
dGVzcGFjZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZhc3QgcGF0aCBmb3IgY2FzZXMg
d2hlbiB0aGVyZSdzIG5vIHJvb20gYXQgYWxsLiBXZSBjYW4gYnJlYWsgdGhpcyBjb250ZW50IGF0
IHRoZSBzdGFydC4KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnRpYWxSdW4geyB9Owot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaW5saW5lVGV4dEl0ZW0ubGVu
Z3RoKCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBtaWQtd29yZCBi
cmVhayBhIHNpbmdsZSBjaGFyYWN0ZXIuCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGF1dG8gc3RhcnRQb3NpdGlvbiA9
IGlubGluZVRleHRJdGVtLnN0YXJ0KCkgKyAxOwotICAgICAgICAgICAgICAgIGF1dG8gZW5kUG9z
aXRpb24gPSBpbmxpbmVUZXh0SXRlbS5lbmQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gUGFy
dGlhbFJ1biB7IGlubGluZVRleHRJdGVtLmxlbmd0aCgpIC0gMSwgVGV4dFV0aWw6OndpZHRoKGlu
bGluZVRleHRJdGVtLCBmb250Q2FzY2FkZSwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIGNh
bmRpZGF0ZVRleHRSdW4ubG9naWNhbExlZnQpIH07CisgICAgICAgICAgICAvLyBUaGlzIGlzIGEg
bm9uLW92ZXJmbG93aW5nIGNvbnRlbnQuCisgICAgICAgICAgICBBU1NFUlQobGluZUhhc1Jvb21G
b3JDb250ZW50KTsKKyAgICAgICAgICAgIGlmIChhdXRvIGJyZWFraW5nUG9zaXRpb24gPSBsYXN0
VmFsaWRCcmVha2luZ1Bvc2l0aW9uKHJ1bnMsIGNhbmRpZGF0ZVRleHRSdW4uaW5kZXgpKSB7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKCpicmVha2luZ1Bvc2l0aW9uIDw9IGlubGluZVRleHRJdGVt
LmVuZCgpKTsKKyAgICAgICAgICAgICAgICBhdXRvIHRyYWlsaW5nTGVuZ3RoID0gKmJyZWFraW5n
UG9zaXRpb24gLSBpbmxpbmVUZXh0SXRlbS5zdGFydCgpOworICAgICAgICAgICAgICAgIGF1dG8g
c3RhcnRQb3NpdGlvbiA9IGlubGluZVRleHRJdGVtLnN0YXJ0KCk7CisgICAgICAgICAgICAgICAg
YXV0byBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24gKyB0cmFpbGluZ0xlbmd0aDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gUGFydGlhbFJ1biB7IHRyYWlsaW5nTGVuZ3RoLCBUZXh0VXRpbDo6
d2lkdGgoaW5saW5lVGV4dEl0ZW0sIGZvbnRDYXNjYWRlLCBzdGFydFBvc2l0aW9uLCBlbmRQb3Np
dGlvbiwgY2FuZGlkYXRlVGV4dFJ1bi5sb2dpY2FsTGVmdCkgfTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGF1dG8gbWlkV29yZEJyZWFrID0gV2ViQ29yZTo6TGF5b3V0OjptaWRXb3JkQnJl
YWsoY2FuZGlkYXRlUnVuLCBjYW5kaWRhdGVUZXh0UnVuLmxvZ2ljYWxMZWZ0LCBhdmFpbGFibGVX
aWR0aCk7Ci0gICAgICAgICAgICByZXR1cm4gUGFydGlhbFJ1biB7IG1pZFdvcmRCcmVhay5sZW5n
dGgsIG1pZFdvcmRCcmVhay5sb2dpY2FsV2lkdGggfTsKKyAgICAgICAgICAgIHJldHVybiB7IH07
CiAgICAgICAgIH07CiAgICAgICAgIHJldHVybiB0cnlCcmVha2luZ0F0QXJiaXRyYXJ5UG9zaXRp
b25XaXRoaW5Xb3JkcygpOwogICAgIH0KQEAgLTQ0Miw3ICs0NDksNyBAQCBzdGQ6Om9wdGlvbmFs
PElubGluZUNvbnRlbnRCcmVha2VyOjpQYXJ0aWFsUnVuPiBJbmxpbmVDb250ZW50QnJlYWtlcjo6
dHJ5QnJlYWtpbgogICAgICAgICAgICAgICAgIGF1dG8gYXZhaWxhYmxlV2lkdGhFeGNsdWRpbmdI
eXBoZW4gPSBhdmFpbGFibGVXaWR0aCAtIGh5cGhlbldpZHRoOwogICAgICAgICAgICAgICAgIGlm
IChhdmFpbGFibGVXaWR0aEV4Y2x1ZGluZ0h5cGhlbiA8PSAwIHx8ICFlbm91Z2hXaWR0aEZvckh5
cGhlbmF0aW9uKGF2YWlsYWJsZVdpZHRoRXhjbHVkaW5nSHlwaGVuLCBmb250Q2FzY2FkZS5waXhl
bFNpemUoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgICAgICAg
ICAgbGVmdFNpZGVMZW5ndGggPSBUZXh0VXRpbDo6bWlkV29yZEJyZWFrKGlubGluZVRleHRJdGVt
LCBmb250Q2FzY2FkZSwgY2FuZGlkYXRlUnVuLmxvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlV2lkdGhF
eGNsdWRpbmdIeXBoZW4sIGNhbmRpZGF0ZVRleHRSdW4ubG9naWNhbExlZnQpLmxlbmd0aDsKKyAg
ICAgICAgICAgICAgICBsZWZ0U2lkZUxlbmd0aCA9IFRleHRVdGlsOjpicmVha1dvcmQoaW5saW5l
VGV4dEl0ZW0sIGZvbnRDYXNjYWRlLCBjYW5kaWRhdGVSdW4ubG9naWNhbFdpZHRoLCBhdmFpbGFi
bGVXaWR0aEV4Y2x1ZGluZ0h5cGhlbiwgY2FuZGlkYXRlVGV4dFJ1bi5sb2dpY2FsTGVmdCkubGVu
Z3RoOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGxlZnRTaWRlTGVuZ3RoIDwgbGlt
aXRCZWZvcmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTQ4NCw4ICs0OTEsOCBA
QCBzdGQ6Om9wdGlvbmFsPElubGluZUNvbnRlbnRCcmVha2VyOjpQYXJ0aWFsUnVuPiBJbmxpbmVD
b250ZW50QnJlYWtlcjo6dHJ5QnJlYWtpbgogICAgICAgICAgICAgICAgIC8vIEZhc3QgcGF0aCBm
b3IgY2FzZXMgd2hlbiB0aGVyZSdzIG5vIHJvb20gYXQgYWxsLiBUaGUgY29udGVudCBpcyBicmVh
a2FibGUgYnV0IHdlIGRvbid0IGhhdmUgc3BhY2UgZm9yIGl0LgogICAgICAgICAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBhdXRvIG1pZFdvcmRCcmVhayA9
IFRleHRVdGlsOjptaWRXb3JkQnJlYWsoaW5saW5lVGV4dEl0ZW0sIGZvbnRDYXNjYWRlLCBjYW5k
aWRhdGVSdW4ubG9naWNhbFdpZHRoLCBhdmFpbGFibGVXaWR0aCwgY2FuZGlkYXRlVGV4dFJ1bi5s
b2dpY2FsTGVmdCk7Ci0gICAgICAgICAgICByZXR1cm4geyBtaWRXb3JkQnJlYWsubGVuZ3RoLCBt
aWRXb3JkQnJlYWsubG9naWNhbFdpZHRoIH07CisgICAgICAgICAgICBhdXRvIHdvcmRCcmVhayA9
IFRleHRVdGlsOjpicmVha1dvcmQoaW5saW5lVGV4dEl0ZW0sIGZvbnRDYXNjYWRlLCBjYW5kaWRh
dGVSdW4ubG9naWNhbFdpZHRoLCBhdmFpbGFibGVXaWR0aCwgY2FuZGlkYXRlVGV4dFJ1bi5sb2dp
Y2FsTGVmdCk7CisgICAgICAgICAgICByZXR1cm4geyB3b3JkQnJlYWsubGVuZ3RoLCB3b3JkQnJl
YWsubG9naWNhbFdpZHRoIH07CiAgICAgICAgIH07CiAgICAgICAgIC8vIFdpdGggYXJiaXRyYXJ5
IGJyZWFraW5nIHRoZXJlJ3MgYWx3YXlzIGEgdmFsaWQgYnJlYWtpbmcgcG9zaXRpb24gKGV2ZW4g
aWYgaXQgaXMgYmVmb3JlIHRoZSBmaXJzdCBwb3NpdGlvbikuCiAgICAgICAgIHJldHVybiB0cnlC
cmVha2luZ0F0QXJiaXRyYXJ5UG9zaXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRp
bC5jcHAKaW5kZXggYWFmMGYwOGJlMGRkLi41NTEzZjI3YTE0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L3RleHQvVGV4dFV0aWwuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgVGV4dFV0aWw6OkZhbGxiYWNr
Rm9udExpc3QgVGV4dFV0aWw6OmZhbGxiYWNrRm9udHNGb3JSdW4oY29uc3QgTGluZTo6UnVuJiBy
dW4sIGMKICAgICByZXR1cm4gZmFsbGJhY2tGb250czsKIH0KIAotVGV4dFV0aWw6Ok1pZFdvcmRC
cmVhayBUZXh0VXRpbDo6bWlkV29yZEJyZWFrKGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVU
ZXh0SXRlbSwgY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBJbmxpbmVMYXlvdXRVbml0
IHRleHRXaWR0aCwgSW5saW5lTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCwgSW5saW5lTGF5b3V0
VW5pdCBjb250ZW50TG9naWNhbExlZnQpCitUZXh0VXRpbDo6V29yZEJyZWFrTGVmdCBUZXh0VXRp
bDo6YnJlYWtXb3JkKGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVUZXh0SXRlbSwgY29uc3Qg
Rm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBJbmxpbmVMYXlvdXRVbml0IHRleHRXaWR0aCwgSW5s
aW5lTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9n
aWNhbExlZnQpCiB7CiAgICAgQVNTRVJUKGF2YWlsYWJsZVdpZHRoID49IDApOwogICAgIGF1dG8g
c3RhcnRQb3NpdGlvbiA9IGlubGluZVRleHRJdGVtLnN0YXJ0KCk7CkBAIC0xNzgsNyArMTc4LDgg
QEAgVGV4dFV0aWw6Ok1pZFdvcmRCcmVhayBUZXh0VXRpbDo6bWlkV29yZEJyZWFrKGNvbnN0IElu
bGluZVRleHRJdGVtJiBpbmxpbmVUZXh0SXQKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgfQotICAgIHJldHVybiB7IHN0YXJ0UG9zaXRpb24sIHJpZ2h0IC0gc3RhcnRQb3NpdGlv
biwgbGVmdFNpZGVXaWR0aCB9OworICAgIFJFTEVBU0VfQVNTRVJUKHJpZ2h0ID49IHN0YXJ0UG9z
aXRpb24pOworICAgIHJldHVybiB7IHJpZ2h0IC0gc3RhcnRQb3NpdGlvbiwgbGVmdFNpZGVXaWR0
aCB9OwogfQogCiB1bnNpZ25lZCBUZXh0VXRpbDo6ZmluZE5leHRCcmVha2FibGVQb3NpdGlvbihM
YXp5TGluZUJyZWFrSXRlcmF0b3ImIGxpbmVCcmVha0l0ZXJhdG9yLCB1bnNpZ25lZCBzdGFydFBv
c2l0aW9uLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0L1RleHRVdGlsLmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0L1RleHRV
dGlsLmgKaW5kZXggN2Y5ZDkxZTE4MDJjLi4yNjllNGMwMDE4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90
ZXh0L1RleHRVdGlsLmgKQEAgLTUxLDEyICs1MSwxMSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRmFs
bGJhY2tGb250TGlzdCA9IEhhc2hTZXQ8Y29uc3QgRm9udCo+OwogICAgIHN0YXRpYyBGYWxsYmFj
a0ZvbnRMaXN0IGZhbGxiYWNrRm9udHNGb3JSdW4oY29uc3QgTGluZTo6UnVuJiwgY29uc3QgUmVu
ZGVyU3R5bGUmKTsKIAotICAgIHN0cnVjdCBNaWRXb3JkQnJlYWsgewotICAgICAgICBzaXplX3Qg
c3RhcnQgeyAwIH07CisgICAgc3RydWN0IFdvcmRCcmVha0xlZnQgewogICAgICAgICBzaXplX3Qg
bGVuZ3RoIHsgMCB9OwogICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCB7IDAg
fTsKICAgICB9OwotICAgIHN0YXRpYyBNaWRXb3JkQnJlYWsgbWlkV29yZEJyZWFrKGNvbnN0IElu
bGluZVRleHRJdGVtJiwgY29uc3QgRm9udENhc2NhZGUmLCBJbmxpbmVMYXlvdXRVbml0IHRleHRX
aWR0aCwgSW5saW5lTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCwgSW5saW5lTGF5b3V0VW5pdCBj
b250ZW50TG9naWNhbExlZnQpOworICAgIHN0YXRpYyBXb3JkQnJlYWtMZWZ0IGJyZWFrV29yZChj
b25zdCBJbmxpbmVUZXh0SXRlbSYsIGNvbnN0IEZvbnRDYXNjYWRlJiwgSW5saW5lTGF5b3V0VW5p
dCB0ZXh0V2lkdGgsIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgsIElubGluZUxheW91
dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0KTsKIAogICAgIHN0YXRpYyB1bnNpZ25lZCBmaW5kTmV4
dEJyZWFrYWJsZVBvc2l0aW9uKExhenlMaW5lQnJlYWtJdGVyYXRvciYsIHVuc2lnbmVkIHN0YXJ0
UG9zaXRpb24sIGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAgc3RhdGljIExpbmVCcmVha0l0ZXJh
dG9yTW9kZSBsaW5lQnJlYWtJdGVyYXRvck1vZGUoTGluZUJyZWFrKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442324</attachid>
            <date>2021-10-24 14:42:44 -0700</date>
            <delta_ts>2021-10-25 07:36:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232219-20211024144244.patch</filename>
            <type>text/plain</type>
            <size>15905</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDM2NDllMzAzZjM3ZDFm
MTM0MmQxZWU2MDVlZGU2MzQ0ODMzYjdiMC4uNGFmZDI0NGExYjUyYmY3MmYwMDg4NjAwOTMyMDBh
NjRiM2RiNWQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTEwLTI0ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIENoZWNrIGFj
cm9zcyBpbmxpbmUgYm94IGJvdW5kYXJpZXMgZm9yIGJyZWFrYWJsZSBwb3NpdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMjE5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBleHBh
bmRzIHRoZSAiY2FuIHdlIGJyZWFrIGJlZm9yZSIgY2hlY2sgYWNyb3NzIG11bHRpcGxlIHJ1bnMu
CisgICAgICAgIFRoZXJlIGFyZSBjYXNlcyB3aGVuLCB3aGlsZSB0aGUgY29udGVudCBpcyBicmVh
ay1hbGwsIHdlIG5lZWQgdG8gbG9vayBhdCBhZGphY2VudCBydW5zIHRvIGRlY2lkZWQgd2hldGhl
ciB0aGUKKyAgICAgICAgcnVuIGJvdW5kYXJ5IGlzIGEgdmFsaWQgYnJlYWtpbmcgcG9zaXRpb24u
CisgICAgICAgIGUuZworICAgICAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogMWNoOyB3b3JkLWJyZWFr
OiBicmVhay1hbGwiPjxzcGFuPlg8L3NwYW4+PHNwYW4+Ljwvc3Bhbj48L2Rpdj4KKyAgICAgICAg
ICAnYnJlYWstYWxsJyB0ZWxscyB1cyB0byBicmVhayBhZnRlciAnWF0nIGJ1dCB0aGUgcHVuY3R1
YXRpb24gY2hhcmFjdGVyIHByZXZlbnRzIHVzIHRvIGRvIHNvLgorICAgICAgICAgIFRoaXMgc2hv
dWxkIHdvcmsgZXZlbiB3aGVuIHRoZSBjb250ZW50IGlzIGluIHNlcGFyYXRlIHJ1bnMgKFtYXVsu
XSBlLmcuIGlubGluZS1ib3ggYm91bmRhcnkgb3Igc2ltcGx5CisgICAgICAgICAgdGhleSByZXBy
ZXNlbnQgaW5kaXZpZHVhbCBET00gbm9kZXMpCisKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OmNhbkJyZWFrQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
ZmluZExhc3RWYWxpZEJyZWFraW5nUG9zaXRpb24pOiBMZXQncyBmaW5kIHRoZSBsYXN0IHZhbGlk
IGJyZWFraW5nIHBvc2l0aW9uIGluIHRoaXMgcnVuIGluY2x1ZGluZyB0aGUgcnVuIGVuZCBib3Vu
ZGFyeS4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6bWlkV29yZEJyZWFrKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lQ29udGVudEJyZWFrZXI6OnRyeUJyZWFraW5nVGV4dFJ1
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OnByZXZpb3VzVGV4dFJ1bkluZGV4
KTogRGVsZXRlZC4KKwogMjAyMS0xMC0yNCAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW0xGQ11bSUZDXSBSZW5hbWUgVGV4dFV0aWw6Om1pZFdvcmRCcmVhayB0byBi
cmVha1dvcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcApp
bmRleCBhMGRhYTQ1M2U3NWRlNmU0YjFkNjRlMTQ4MGI1ODNjYThhNWMwZjhlLi4wNmM3OTk3Nzdk
NTQ4YzJlNzNiMzgwMzBmNmM2N2E2MjYwN2FlNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lQ29udGVudEJyZWFrZXIuY3BwCkBAIC04NCwxNSArODQsNiBAQCBzdGF0aWMgaW5saW5l
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXh0VGV4dFJ1bkluZGV4KGNvbnN0IElubGluZUNvbnRl
bnRCcmVha2VyOgogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBpbmxpbmUgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IHByZXZpb3VzVGV4dFJ1bkluZGV4KGNvbnN0IElubGluZUNvbnRlbnRCcmVh
a2VyOjpDb250aW51b3VzQ29udGVudDo6UnVuTGlzdCYgcnVucywgc2l6ZV90IHN0YXJ0SW5kZXgp
Ci17Ci0gICAgZm9yIChhdXRvIGluZGV4ID0gc3RhcnRJbmRleDsgaW5kZXgtLTspIHsKLSAgICAg
ICAgaWYgKHJ1bnNbaW5kZXhdLmlubGluZUl0ZW0uaXNUZXh0KCkpCi0gICAgICAgICAgICByZXR1
cm4gaW5kZXg7Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc1Zpc3VhbGx5RW1wdHlXaGl0ZXNwYWNlQ29udGVudChjb25zdCBJbmxpbmVDb250ZW50QnJl
YWtlcjo6Q29udGludW91c0NvbnRlbnQmIGNvbnRpbnVvdXNDb250ZW50KQogewogICAgIC8vIFs8
c3Bhbj48L3NwYW4+IF0gWzxzcGFuPiA8L3NwYW4+XSBbIDxzcGFuIHN0eWxlPSJwYWRkaW5nOiAw
cHg7Ij48L3NwYW4+XSBhcmUgYWxsIGNvbnNpZGVyZWQgdmlzdWFsbHkgZW1wdHkgd2hpdGVzcGFj
ZSBjb250ZW50LgpAQCAtMjk1LDUzICsyODYsODAgQEAgc3RhdGljIGJvb2wgaXNXcmFwcGFibGVS
dW4oY29uc3QgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50OjpSdW4mIHIK
ICAgICByZXR1cm4gVGV4dFV0aWw6OmlzV3JhcHBpbmdBbGxvd2VkKHJ1bi5zdHlsZSk7CiB9CiAK
LXN0YXRpYyBUZXh0VXRpbDo6V29yZEJyZWFrTGVmdCBtaWRXb3JkQnJlYWsoY29uc3QgSW5saW5l
Q29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50OjpSdW4mIHRleHRSdW4sIElubGluZUxh
eW91dFVuaXQgcnVuTG9naWNhbExlZnQsIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgp
CitzdGF0aWMgaW5saW5lIGJvb2wgY2FuQnJlYWtCZWZvcmUoVUNoYXIzMiBjaGFyYWN0ZXIsIExp
bmVCcmVhayBsaW5lQnJlYWspCit7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGluY2x1ZGUg
YWxsIHRoZSBjYXNlcyBmcm9tIGh0dHBzOi8vdW5pY29kZS5vcmcvcmVwb3J0cy90cjE0CisgICAg
Ly8gVXNlIGEgYnJlYWtpbmcgbWF0cml4IHNpbWlsYXIgdG8gbGluZUJyZWFrVGFibGUgaW4gQnJl
YWtMaW5lcy5jcHAKKyAgICAvLyBBbHNvIHNlZSBrQnJlYWtBbGxMaW5lQnJlYWtDbGFzc1RhYmxl
IGluIHRoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3RleHQvdGV4dF9icmVha19p
dGVyYXRvci5jYworICAgIGlmIChsaW5lQnJlYWsgIT0gTGluZUJyZWFrOjpMb29zZSkgeworICAg
ICAgICAvLyBUaGUgZm9sbG93aW5nIGJyZWFrcyBhcmUgYWxsb3dlZCBmb3IgbG9vc2UgbGluZSBi
cmVha2luZyBpZiB0aGUgcHJlY2VkaW5nIGNoYXJhY3RlciBiZWxvbmdzIHRvIHRoZSBVbmljb2Rl
CisgICAgICAgIC8vIGxpbmUgYnJlYWtpbmcgY2xhc3MgSUQsIGFuZCBhcmUgb3RoZXJ3aXNlIGZv
cmJpZGRlbjoKKyAgICAgICAgLy8g4oCQIFUrMjAxMCwg4oCTIFUrMjAxMworICAgICAgICAvLyBo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRleHQvI2xpbmUtYnJlYWstcHJvcGVydHkKKyAg
ICAgICAgaWYgKGNoYXJhY3RlciA9PSBoeXBoZW4gfHwgY2hhcmFjdGVyID09IGVuRGFzaCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKGNoYXJhY3RlciA9PSBub0Jy
ZWFrU3BhY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvIGlzUHVuY3R1YXRpb24g
PSBVX0dFVF9HQ19NQVNLKGNoYXJhY3RlcikgJiAoVV9HQ19QU19NQVNLIHwgVV9HQ19QRV9NQVNL
IHwgVV9HQ19QSV9NQVNLIHwgVV9HQ19QRl9NQVNLIHwgVV9HQ19QT19NQVNLKTsKKyAgICByZXR1
cm4gY2hhcmFjdGVyID09IHJldmVyc2VTb2xpZHVzIHx8ICFpc1B1bmN0dWF0aW9uOworfQorCitz
dGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsYXN0VmFsaWRCcmVha2luZ1Bvc2l0
aW9uKGNvbnN0IElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6UnVuTGlz
dCYgcnVucywgc2l6ZV90IHRleHRSdW5JbmRleCkKIHsKKyAgICBhdXRvJiB0ZXh0UnVuID0gcnVu
c1t0ZXh0UnVuSW5kZXhdOwogICAgIGF1dG8mIGlubGluZVRleHRJdGVtID0gZG93bmNhc3Q8SW5s
aW5lVGV4dEl0ZW0+KHRleHRSdW4uaW5saW5lSXRlbSk7Ci0gICAgYXV0byYgc3R5bGUgPSB0ZXh0
UnVuLnN0eWxlOwotICAgIGF1dG8gbGluZUJyZWFrID0gc3R5bGUubGluZUJyZWFrKCk7Ci0gICAg
QVNTRVJUKGxpbmVCcmVhayA9PSBMaW5lQnJlYWs6OkFueXdoZXJlIHx8IHN0eWxlLndvcmRCcmVh
aygpID09IFdvcmRCcmVhazo6QnJlYWtBbGwgfHwgc3R5bGUud29yZEJyZWFrKCkgPT0gV29yZEJy
ZWFrOjpCcmVha1dvcmQgfHwgc3R5bGUub3ZlcmZsb3dXcmFwKCkgPT0gT3ZlcmZsb3dXcmFwOjpC
cmVha1dvcmQgfHwgc3R5bGUub3ZlcmZsb3dXcmFwKCkgPT0gT3ZlcmZsb3dXcmFwOjpBbnl3aGVy
ZSk7CisgICAgQVNTRVJUKGlubGluZVRleHRJdGVtLmxlbmd0aCgpKTsKKyAgICBhdXRvIGxpbmVC
cmVhayA9IHRleHRSdW4uc3R5bGUubGluZUJyZWFrKCk7CiAKLSAgICBhdXRvIHdvcmRCcmVhayA9
IFRleHRVdGlsOjpicmVha1dvcmQoaW5saW5lVGV4dEl0ZW0sIHN0eWxlLmZvbnRDYXNjYWRlKCks
IHRleHRSdW4ubG9naWNhbFdpZHRoLCBhdmFpbGFibGVXaWR0aCwgcnVuTG9naWNhbExlZnQpOwot
ICAgIGlmICghd29yZEJyZWFrLmxlbmd0aCB8fCB3b3JkQnJlYWsubGVuZ3RoID09IGlubGluZVRl
eHRJdGVtLmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gd29yZEJyZWFrOworICAgIGF1dG8gYWRq
YWN0ZW50VGV4dFJ1bkluZGV4ID0gbmV4dFRleHRSdW5JbmRleChydW5zLCB0ZXh0UnVuSW5kZXgp
OworICAgIGlmICghYWRqYWN0ZW50VGV4dFJ1bkluZGV4KQorICAgICAgICByZXR1cm4gaW5saW5l
VGV4dEl0ZW0uZW5kKCk7CiAKLSAgICBhdXRvIGNhbkJyZWFrQmV0d2VlbkFueVR5cG9ncmFwaGlj
Q2hhcmFjdGVyVW5pdCA9IGxpbmVCcmVhayA9PSBMaW5lQnJlYWs6OkFueXdoZXJlIHx8IHN0eWxl
LndvcmRCcmVhaygpID09IFdvcmRCcmVhazo6QnJlYWtXb3JkIHx8IHN0eWxlLm92ZXJmbG93V3Jh
cCgpID09IE92ZXJmbG93V3JhcDo6QnJlYWtXb3JkIHx8IHN0eWxlLm92ZXJmbG93V3JhcCgpID09
IE92ZXJmbG93V3JhcDo6QW55d2hlcmU7Ci0gICAgaWYgKGNhbkJyZWFrQmV0d2VlbkFueVR5cG9n
cmFwaGljQ2hhcmFjdGVyVW5pdCkKLSAgICAgICAgcmV0dXJuIHdvcmRCcmVhazsKKyAgICBhdXRv
JiBuZXh0SW5saW5lVGV4dEl0ZW0gPSBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4ocnVuc1sqYWRq
YWN0ZW50VGV4dFJ1bkluZGV4XS5pbmxpbmVJdGVtKTsKKyAgICBhdXRvIGNhbkJyZWFrQXRSdW5C
b3VuZGFyeSA9IG5leHRJbmxpbmVUZXh0SXRlbS5pc1doaXRlc3BhY2UoKSA/IG5leHRJbmxpbmVU
ZXh0SXRlbS5zdHlsZSgpLndoaXRlU3BhY2UoKSAhPSBXaGl0ZVNwYWNlOjpCcmVha1NwYWNlcyA6
CisgICAgICAgIGNhbkJyZWFrQmVmb3JlKG5leHRJbmxpbmVUZXh0SXRlbS5pbmxpbmVUZXh0Qm94
KCkuY29udGVudCgpW25leHRJbmxpbmVUZXh0SXRlbS5zdGFydCgpXSwgbGluZUJyZWFrKTsKKyAg
ICBpZiAoY2FuQnJlYWtBdFJ1bkJvdW5kYXJ5KQorICAgICAgICByZXR1cm4gaW5saW5lVGV4dEl0
ZW0uZW5kKCk7CisKKyAgICAvLyBGaW5kIG91dCBpZiB0aGUgY2FuZGlkYXRlIHBvc2l0aW9uIGZv
ciBhcmJpdHJhcnkgYnJlYWtpbmcgaXMgdmFsaWQuIFdlIGNhbid0IGFsd2F5cyBicmVhayBiZXR3
ZWVuIGFueSBjaGFyYWN0ZXJzLgorICAgIGF1dG8gdGV4dCA9IGlubGluZVRleHRJdGVtLmlubGlu
ZVRleHRCb3goKS5jb250ZW50KCk7CisgICAgYXV0byBsZWZ0ID0gaW5saW5lVGV4dEl0ZW0uc3Rh
cnQoKTsKKyAgICBmb3IgKGF1dG8gaW5kZXggPSBpbmxpbmVUZXh0SXRlbS5lbmQoKSAtIDE7IGlu
ZGV4ID4gbGVmdDsgLS1pbmRleCkgeworICAgICAgICBVMTZfU0VUX0NQX1NUQVJUKHRleHQsIGxl
ZnQsIGluZGV4KTsKKyAgICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGZpbmQgc3Vycm9nYXRlcy9z
ZWdtZW50cyBhY3Jvc3MgaW5saW5lIGl0ZW1zLgorICAgICAgICBBU1NFUlQoaW5kZXggPiBpbmxp
bmVUZXh0SXRlbS5zdGFydCgpKTsKKyAgICAgICAgaWYgKGNhbkJyZWFrQmVmb3JlKHRleHRbaW5k
ZXhdLCBsaW5lQnJlYWspKQorICAgICAgICAgICAgcmV0dXJuIGluZGV4OworICAgIH0KKyAgICBy
ZXR1cm4geyB9OworfQorCitzdGF0aWMgc3RkOjpvcHRpb25hbDxUZXh0VXRpbDo6V29yZEJyZWFr
TGVmdD4gbWlkV29yZEJyZWFrKGNvbnN0IElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3Vz
Q29udGVudDo6UnVuJiB0ZXh0UnVuLCBJbmxpbmVMYXlvdXRVbml0IHJ1bkxvZ2ljYWxMZWZ0LCBJ
bmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKQoreworICAgIEFTU0VSVCh0ZXh0UnVuLnN0
eWxlLndvcmRCcmVhaygpID09IFdvcmRCcmVhazo6QnJlYWtBbGwpOworICAgIGF1dG8mIGlubGlu
ZVRleHRJdGVtID0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KHRleHRSdW4uaW5saW5lSXRlbSk7
CisKKyAgICBhdXRvIHdvcmRCcmVhayA9IFRleHRVdGlsOjpicmVha1dvcmQoaW5saW5lVGV4dEl0
ZW0sIHRleHRSdW4uc3R5bGUuZm9udENhc2NhZGUoKSwgdGV4dFJ1bi5sb2dpY2FsV2lkdGgsIGF2
YWlsYWJsZVdpZHRoLCBydW5Mb2dpY2FsTGVmdCk7CisgICAgaWYgKCF3b3JkQnJlYWsubGVuZ3Ro
IHx8IHdvcmRCcmVhay5sZW5ndGggPT0gaW5saW5lVGV4dEl0ZW0ubGVuZ3RoKCkpCisgICAgICAg
IHJldHVybiB7IH07CiAKICAgICAvLyBGaW5kIG91dCBpZiB0aGUgY2FuZGlkYXRlIHBvc2l0aW9u
IGZvciBhcmJpdHJhcnkgYnJlYWtpbmcgaXMgdmFsaWQuIFdlIGNhbid0IGFsd2F5cyBicmVhayBi
ZXR3ZWVuIGFueSBjaGFyYWN0ZXJzLgorICAgIGF1dG8gbGluZUJyZWFrID0gdGV4dFJ1bi5zdHls
ZS5saW5lQnJlYWsoKTsKICAgICBhdXRvIHRleHQgPSBpbmxpbmVUZXh0SXRlbS5pbmxpbmVUZXh0
Qm94KCkuY29udGVudCgpOworICAgIGlmIChjYW5CcmVha0JlZm9yZSh0ZXh0W2lubGluZVRleHRJ
dGVtLnN0YXJ0KCkgKyB3b3JkQnJlYWsubGVuZ3RoXSwgbGluZUJyZWFrKSkKKyAgICAgICAgcmV0
dXJuIHdvcmRCcmVhazsKKwogICAgIGNvbnN0IGF1dG8gbGVmdCA9IGlubGluZVRleHRJdGVtLnN0
YXJ0KCk7CiAgICAgYXV0byByaWdodCA9IGxlZnQgKyB3b3JkQnJlYWsubGVuZ3RoOwogICAgIGZv
ciAoOyByaWdodCA+IGxlZnQ7IC0tcmlnaHQpIHsKLSAgICAgICAgYXV0byBjYW5CcmVha0JlZm9y
ZSA9IFsmXShhdXRvIGNoYXJhY3RlcikgewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGluY2x1ZGUgYWxsIHRoZSBjYXNlcyBmcm9tIGh0dHBzOi8vdW5pY29kZS5vcmcvcmVwb3J0
cy90cjE0Ci0gICAgICAgICAgICAvLyBVc2UgYSBicmVha2luZyBtYXRyaXggc2ltaWxhciB0byBs
aW5lQnJlYWtUYWJsZSBpbiBCcmVha0xpbmVzLmNwcAotICAgICAgICAgICAgLy8gQWxzbyBzZWUg
a0JyZWFrQWxsTGluZUJyZWFrQ2xhc3NUYWJsZSBpbiB0aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJl
ci9wbGF0Zm9ybS90ZXh0L3RleHRfYnJlYWtfaXRlcmF0b3IuY2MKLSAgICAgICAgICAgIGlmIChs
aW5lQnJlYWsgIT0gTGluZUJyZWFrOjpMb29zZSkgewotICAgICAgICAgICAgICAgIC8vIFRoZSBm
b2xsb3dpbmcgYnJlYWtzIGFyZSBhbGxvd2VkIGZvciBsb29zZSBsaW5lIGJyZWFraW5nIGlmIHRo
ZSBwcmVjZWRpbmcgY2hhcmFjdGVyIGJlbG9uZ3MgdG8gdGhlIFVuaWNvZGUKLSAgICAgICAgICAg
ICAgICAvLyBsaW5lIGJyZWFraW5nIGNsYXNzIElELCBhbmQgYXJlIG90aGVyd2lzZSBmb3JiaWRk
ZW46Ci0gICAgICAgICAgICAgICAgLy8g4oCQIFUrMjAxMCwg4oCTIFUrMjAxMwotICAgICAgICAg
ICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdGV4dC8jbGluZS1icmVhay1w
cm9wZXJ0eQotICAgICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gaHlwaGVuIHx8IGNoYXJh
Y3RlciA9PSBlbkRhc2gpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gbm9CcmVha1NwYWNlKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGF1dG8gaXNQdW5jdHVhdGlv
biA9IFVfR0VUX0dDX01BU0soY2hhcmFjdGVyKSAmIChVX0dDX1BTX01BU0sgfCBVX0dDX1BFX01B
U0sgfCBVX0dDX1BJX01BU0sgfCBVX0dDX1BGX01BU0sgfCBVX0dDX1BPX01BU0spOwotICAgICAg
ICAgICAgcmV0dXJuIGNoYXJhY3RlciA9PSByZXZlcnNlU29saWR1cyB8fCAhaXNQdW5jdHVhdGlv
bjsKLSAgICAgICAgfTsKICAgICAgICAgVTE2X1NFVF9DUF9TVEFSVCh0ZXh0LCBsZWZ0LCByaWdo
dCk7Ci0gICAgICAgIGlmIChjYW5CcmVha0JlZm9yZSh0ZXh0W3JpZ2h0XSkpCisgICAgICAgIGlm
IChjYW5CcmVha0JlZm9yZSh0ZXh0W3JpZ2h0XSwgbGluZUJyZWFrKSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVChyaWdodCA+PSBsZWZ0KTsKLSAgICBpZiAo
bGVmdCArIHdvcmRCcmVhay5sZW5ndGggPT0gcmlnaHQpCi0gICAgICAgIHJldHVybiB3b3JkQnJl
YWs7CiAgICAgaWYgKGxlZnQgPT0gcmlnaHQpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgcmV0
dXJuIHsgcmlnaHQgLSBsZWZ0LCBUZXh0VXRpbDo6d2lkdGgoaW5saW5lVGV4dEl0ZW0sIHN0eWxl
LmZvbnRDYXNjYWRlKCksIGxlZnQsIHJpZ2h0LCBydW5Mb2dpY2FsTGVmdCkgfTsKKyAgICByZXR1
cm4gVGV4dFV0aWw6OldvcmRCcmVha0xlZnQgeyByaWdodCAtIGxlZnQsIFRleHRVdGlsOjp3aWR0
aChpbmxpbmVUZXh0SXRlbSwgdGV4dFJ1bi5zdHlsZS5mb250Q2FzY2FkZSgpLCBsZWZ0LCByaWdo
dCwgcnVuTG9naWNhbExlZnQpIH07CiB9CiAKIHN0cnVjdCBDYW5kaWRhdGVUZXh0UnVuRm9yQnJl
YWtpbmcgewpAQCAtMzczLDQyICszOTEsMzEgQEAgc3RkOjpvcHRpb25hbDxJbmxpbmVDb250ZW50
QnJlYWtlcjo6UGFydGlhbFJ1bj4gSW5saW5lQ29udGVudEJyZWFrZXI6OnRyeUJyZWFraW4KICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFpbmxpbmVUZXh0SXRlbS5sZW5ndGgoKSkg
ewotICAgICAgICAgICAgICAgIC8vIEVtcHR5IHRleHQgcnVucyBtYXkgYmUgYnJlYWthYmxlIGJh
c2VkIG9uIHN0eWxlLCBidXQgaW4gcHJhY3RpY2Ugd2UgY2FuJ3QgcmVhbGx5IHNwbGl0IHRoZW0g
YW55IGZ1cnRoZXIuCi0gICAgICAgICAgICAgICAgcmV0dXJuIFBhcnRpYWxSdW4geyB9OworICAg
ICAgICAgICAgICAgIC8vIEVtcHR5L3NpbmdsZSBjaGFyYWN0ZXIgdGV4dCBydW5zIG1heSBiZSBi
cmVha2FibGUgYmFzZWQgb24gc3R5bGUsIGJ1dCBpbiBwcmFjdGljZSB3ZSBjYW4ndCByZWFsbHkg
c3BsaXQgdGhlbSBhbnkgZnVydGhlci4KKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoIWNhbmRpZGF0ZVRleHRSdW4uaXNPdmVyZmxv
d2luZ1J1bikgewotICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIHJ1biBjYW4gYmUgc3BsaXQg
YXQgYXJiaXRyYXJ5IHBvc2l0aW9uIHdlIHdvdWxkIG5vcm1hbGx5IGp1c3QgcmV0dXJuIHRoZSBl
bnRpcmUgcnVuIHdoZW4gaXQgaXMgaW50ZW5kZWQgdG8gZml0IG9uIHRoZSBsaW5lCi0gICAgICAg
ICAgICAgICAgLy8gYnV0IGhlcmUgd2UgaGF2ZSB0byBjaGVjayBmb3IgbWlkLXdvcmQgYnJlYWsu
Ci0gICAgICAgICAgICAgICAgYXV0byBuZXh0SW5kZXggPSBuZXh0VGV4dFJ1bkluZGV4KHJ1bnMs
IGNhbmRpZGF0ZVRleHRSdW4uaW5kZXgpOwotICAgICAgICAgICAgICAgIGlmICghbmV4dEluZGV4
IHx8ICFkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4ocnVuc1sqbmV4dEluZGV4XS5pbmxpbmVJdGVt
KS5pc1doaXRlc3BhY2UoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnRpYWxSdW4g
eyBpbmxpbmVUZXh0SXRlbS5sZW5ndGgoKSwgVGV4dFV0aWw6OndpZHRoKGlubGluZVRleHRJdGVt
LCBmb250Q2FzY2FkZSwgY2FuZGlkYXRlVGV4dFJ1bi5sb2dpY2FsTGVmdCkgfTsKLSAgICAgICAg
ICAgICAgICAvLyBXZSd2ZSBnb3Qgcm9vbSBmb3IgdGhlIHJ1biBidXQgd2UgaGF2ZSB0byB0cnkg
dG8gYnJlYWsgaXQgbWlkLXdvcmQuCi0gICAgICAgICAgICAgICAgaWYgKGlubGluZVRleHRJdGVt
Lmxlbmd0aCgpID09IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgbWlkLXdv
cmQgYnJlYWsgYSBzaW5nbGUgY2hhcmFjdGVyLgotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
eyB9OworICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZVRleHRSdW4uaXNPdmVyZmxvd2luZ1J1bikg
eworICAgICAgICAgICAgICAgIGlmIChsaW5lSGFzUm9vbUZvckNvbnRlbnQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gVHJ5IHRvIGJyZWFrIHRoZSBvdmVyZmxvd2luZyBydW4gbWlkLXdvcmQu
CisgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIHdvcmRCcmVhayA9IG1pZFdvcmRCcmVhayhj
YW5kaWRhdGVSdW4sIGNhbmRpZGF0ZVRleHRSdW4ubG9naWNhbExlZnQsIGF2YWlsYWJsZVdpZHRo
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQYXJ0aWFsUnVuIHsgd29yZEJyZWFr
LT5sZW5ndGgsIHdvcmRCcmVhay0+bG9naWNhbFdpZHRoIH07CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGF1dG8gc3RhcnRQb3NpdGlvbiA9IGlubGluZVRleHRJdGVtLnN0YXJ0
KCk7Ci0gICAgICAgICAgICAgICAgYXV0byBlbmRQb3NpdGlvbiA9IGlubGluZVRleHRJdGVtLmVu
ZCgpIC0gMTsKLSAgICAgICAgICAgICAgICByZXR1cm4gUGFydGlhbFJ1biB7IGlubGluZVRleHRJ
dGVtLmxlbmd0aCgpIC0gMSwgVGV4dFV0aWw6OndpZHRoKGlubGluZVRleHRJdGVtLCBmb250Q2Fz
Y2FkZSwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIGNhbmRpZGF0ZVRleHRSdW4ubG9naWNh
bExlZnQpIH07CisgICAgICAgICAgICAgICAgaWYgKGNhbkJyZWFrQmVmb3JlKGlubGluZVRleHRJ
dGVtLmlubGluZVRleHRCb3goKS5jb250ZW50KClbaW5saW5lVGV4dEl0ZW0uc3RhcnQoKV0sIHN0
eWxlLmxpbmVCcmVhaygpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnRpYWxSdW4g
eyB9OworICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIGlmICghbGluZUhhc1Jvb21Gb3JDb250ZW50KSB7Ci0gICAgICAgICAgICAgICAgYXV0
byBwcmV2aW91c0luZGV4ID0gcHJldmlvdXNUZXh0UnVuSW5kZXgocnVucywgY2FuZGlkYXRlVGV4
dFJ1bi5pbmRleCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c0luZGV4IHx8ICFkb3du
Y2FzdDxJbmxpbmVUZXh0SXRlbT4ocnVuc1sqcHJldmlvdXNJbmRleF0uaW5saW5lSXRlbSkuaXNX
aGl0ZXNwYWNlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gRmFzdCBwYXRoIGZvciBjYXNl
cyB3aGVuIHRoZXJlJ3Mgbm8gcm9vbSBhdCBhbGwuIFdlIGNhbiBicmVhayB0aGlzIGNvbnRlbnQg
YXQgdGhlIHN0YXJ0LgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gUGFydGlhbFJ1biB7IH07
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpbmxpbmVUZXh0SXRlbS5s
ZW5ndGgoKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IG1pZC13b3Jk
IGJyZWFrIGEgc2luZ2xlIGNoYXJhY3Rlci4KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYXV0byBzdGFydFBvc2l0aW9u
ID0gaW5saW5lVGV4dEl0ZW0uc3RhcnQoKSArIDE7Ci0gICAgICAgICAgICAgICAgYXV0byBlbmRQ
b3NpdGlvbiA9IGlubGluZVRleHRJdGVtLmVuZCgpOwotICAgICAgICAgICAgICAgIHJldHVybiBQ
YXJ0aWFsUnVuIHsgaW5saW5lVGV4dEl0ZW0ubGVuZ3RoKCkgLSAxLCBUZXh0VXRpbDo6d2lkdGgo
aW5saW5lVGV4dEl0ZW0sIGZvbnRDYXNjYWRlLCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwg
Y2FuZGlkYXRlVGV4dFJ1bi5sb2dpY2FsTGVmdCkgfTsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMg
YSBub24tb3ZlcmZsb3dpbmcgY29udGVudC4KKyAgICAgICAgICAgIEFTU0VSVChsaW5lSGFzUm9v
bUZvckNvbnRlbnQpOworICAgICAgICAgICAgaWYgKGF1dG8gYnJlYWtpbmdQb3NpdGlvbiA9IGxh
c3RWYWxpZEJyZWFraW5nUG9zaXRpb24ocnVucywgY2FuZGlkYXRlVGV4dFJ1bi5pbmRleCkpIHsK
KyAgICAgICAgICAgICAgICBBU1NFUlQoKmJyZWFraW5nUG9zaXRpb24gPD0gaW5saW5lVGV4dEl0
ZW0uZW5kKCkpOworICAgICAgICAgICAgICAgIGF1dG8gdHJhaWxpbmdMZW5ndGggPSAqYnJlYWtp
bmdQb3NpdGlvbiAtIGlubGluZVRleHRJdGVtLnN0YXJ0KCk7CisgICAgICAgICAgICAgICAgYXV0
byBzdGFydFBvc2l0aW9uID0gaW5saW5lVGV4dEl0ZW0uc3RhcnQoKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIGVuZFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbiArIHRyYWlsaW5nTGVuZ3RoOworICAg
ICAgICAgICAgICAgIHJldHVybiBQYXJ0aWFsUnVuIHsgdHJhaWxpbmdMZW5ndGgsIFRleHRVdGls
Ojp3aWR0aChpbmxpbmVUZXh0SXRlbSwgZm9udENhc2NhZGUsIHN0YXJ0UG9zaXRpb24sIGVuZFBv
c2l0aW9uLCBjYW5kaWRhdGVUZXh0UnVuLmxvZ2ljYWxMZWZ0KSB9OwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYXV0byBtaWRXb3JkQnJlYWsgPSBXZWJDb3JlOjpMYXlvdXQ6Om1pZFdvcmRC
cmVhayhjYW5kaWRhdGVSdW4sIGNhbmRpZGF0ZVRleHRSdW4ubG9naWNhbExlZnQsIGF2YWlsYWJs
ZVdpZHRoKTsKLSAgICAgICAgICAgIHJldHVybiBQYXJ0aWFsUnVuIHsgbWlkV29yZEJyZWFrLmxl
bmd0aCwgbWlkV29yZEJyZWFrLmxvZ2ljYWxXaWR0aCB9OworICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAgICAgfTsKICAgICAgICAgcmV0dXJuIHRyeUJyZWFraW5nQXRBcmJpdHJhcnlQb3Np
dGlvbldpdGhpbldvcmRzKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGEyNjU1MDg3NGQ2NTA2MzZiYjY1YjI1
YWU0MmViZGE4NGZiM2FkY2MuLmEwMDJhZDA0YTgxYmQzMTVlYjZkYjUyNjVjYmQ4NjE3NzYwMjI0
YWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0xMC0yNCAgQWxhbiBCdWp0YXMgIDx6YWxh
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBDaGVjayBhY3Jvc3MgaW5saW5lIGJv
eCBib3VuZGFyaWVzIGZvciBicmVha2FibGUgcG9zaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjIxOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0x
MC0yNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OIChpT1MgMTUpOiBTYWZhcmkgc2hvd3Mgem9vbSBjYWxsb3V0IGV2ZW4gaWYgLXdl
YmtpdC11c2VyLXNlbGVjdCBpcyBub25lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzMmVhYWRjY2Vk
ZDk5ZTFhMGQ1YWRmZTFkZGFhMmVlOWZhMjA2ZmIxLi4yNDRhMDNjMDczYzRmNDY5ODY2NjJmZjNh
NmEwNDFhZDU5MzJjMGNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI3NDUsMTIgKzI3NDUsMTAg
QEAgd2Via2l0Lm9yZy9iLzE4MzI1OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdGV4dC93b3JkLWJyZWFrL3dvcmQKIHdlYmtpdC5vcmcvYi8xOTUyNzUgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvd29yZC1icmVhay93b3JkLWJyZWFr
LWJyZWFrLWFsbC0wMjAuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE5
NzQzMCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4dC93b3JkLWJy
ZWFrL3dvcmQtYnJlYWstYnJlYWstYWxsLTAyMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMTk3NDMwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy10ZXh0L3dvcmQtYnJlYWsvd29yZC1icmVhay1icmVhay1hbGwtMDI0Lmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMTQyOTAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRleHQvd29yZC1icmVhay93b3JkLWJyZWFrLWJyZWFrLWFsbC1pbmxp
bmUtMDA4Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xODMyNTggaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvd29yZC1icmVhay93b3Jk
LWJyZWFrLWtlZXAtYWxsLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3Jn
L2IvMTk1Mjc1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0L3dv
cmQtYnJlYWsvd29yZC1icmVhay1rZWVwLWFsbC0wMDYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQogd2Via2l0Lm9yZy9iLzE4MzI1OCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdGV4dC93b3JkLWJyZWFrL3dvcmQtYnJlYWstbm9ybWFsLW15LTAwMC5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTgzMjU4IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0L3dvcmQtYnJlYWsvd29yZC1icmVhay1ub3JtYWwtdGRk
LTAwMC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjE0MjkwIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0L3dvcmQtYnJlYWsvd29yZC1i
cmVhay1taW4tY29udGVudC0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9y
Zy9iLzIxNDI5MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4dC93
b3JkLWJyZWFrL3dvcmQtYnJlYWstbWluLWNvbnRlbnQtMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi8xOTUyNzUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXRleHQvd3JpdGluZy1zeXN0ZW0vd3JpdGluZy1zeXN0ZW0tc2VnbWVudC1icmVh
ay0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE5NTI3NSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4dC93cml0aW5nLXN5c3RlbS93
cml0aW5nLXN5c3RlbS10ZXh0LXRyYW5zZm9ybS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442325</attachid>
            <date>2021-10-24 14:43:28 -0700</date>
            <delta_ts>2021-10-24 14:43:28 -0700</delta_ts>
            <desc>Patch with dependencies</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>21085</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMjY1NTA4NzRkNjUuLmEwMDJhZDA0YTgxYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDIxLTEwLTI0ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBb
TEZDXVtJRkNdIENoZWNrIGFjcm9zcyBpbmxpbmUgYm94IGJvdW5kYXJpZXMgZm9yIGJyZWFrYWJs
ZSBwb3NpdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMyMjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTEwLTI0ICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKGlPUyAxNSk6IFNhZmFy
aSBzaG93cyB6b29tIGNhbGxvdXQgZXZlbiBpZiAtd2Via2l0LXVzZXItc2VsZWN0IGlzIG5vbmUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDMyZWFhZGNjZWRkOS4uMjQ0YTAzYzA3M2M0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTI3NDUsMTIgKzI3NDUsMTAgQEAgd2Via2l0Lm9yZy9iLzE4MzI1OCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4dC93b3JkLWJyZWFrL3dv
cmQKIHdlYmtpdC5vcmcvYi8xOTUyNzUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXRleHQvd29yZC1icmVhay93b3JkLWJyZWFrLWJyZWFrLWFsbC0wMjAuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE5NzQzMCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4dC93b3JkLWJyZWFrL3dvcmQtYnJlYWstYnJlYWstYWxs
LTAyMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTk3NDMwIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0L3dvcmQtYnJlYWsvd29yZC1i
cmVhay1icmVhay1hbGwtMDI0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi8yMTQyOTAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvd29y
ZC1icmVhay93b3JkLWJyZWFrLWJyZWFrLWFsbC1pbmxpbmUtMDA4Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xODMyNTggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXRleHQvd29yZC1icmVhay93b3JkLWJyZWFrLWtlZXAtYWxsLTAwMy5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTk1Mjc1IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0L3dvcmQtYnJlYWsvd29yZC1icmVhay1rZWVw
LWFsbC0wMDYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE4MzI1OCBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4dC93b3JkLWJyZWFrL3dv
cmQtYnJlYWstbm9ybWFsLW15LTAwMC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQu
b3JnL2IvMTgzMjU4IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10ZXh0
L3dvcmQtYnJlYWsvd29yZC1icmVhay1ub3JtYWwtdGRkLTAwMC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCi13ZWJraXQub3JnL2IvMjE0MjkwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10ZXh0L3dvcmQtYnJlYWsvd29yZC1icmVhay1taW4tY29udGVudC0wMDMuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIxNDI5MCBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4dC93b3JkLWJyZWFrL3dvcmQtYnJlYWstbWlu
LWNvbnRlbnQtMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xOTUy
NzUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQvd3JpdGluZy1z
eXN0ZW0vd3JpdGluZy1zeXN0ZW0tc2VnbWVudC1icmVhay0wMDEuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzE5NTI3NSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdGV4dC93cml0aW5nLXN5c3RlbS93cml0aW5nLXN5c3RlbS10ZXh0LXRyYW5z
Zm9ybS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZiNTg2Njk3
ZmY3ZS4uNGFmZDI0NGExYjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMjEtMTAt
MjQgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW0lGQ10g
Q2hlY2sgYWNyb3NzIGlubGluZSBib3ggYm91bmRhcmllcyBmb3IgYnJlYWthYmxlIHBvc2l0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIyMTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGV4cGFuZHMgdGhlICJjYW4gd2UgYnJlYWsgYmVmb3JlIiBjaGVjayBhY3Jvc3MgbXVsdGlw
bGUgcnVucy4KKyAgICAgICAgVGhlcmUgYXJlIGNhc2VzIHdoZW4sIHdoaWxlIHRoZSBjb250ZW50
IGlzIGJyZWFrLWFsbCwgd2UgbmVlZCB0byBsb29rIGF0IGFkamFjZW50IHJ1bnMgdG8gZGVjaWRl
ZCB3aGV0aGVyIHRoZQorICAgICAgICBydW4gYm91bmRhcnkgaXMgYSB2YWxpZCBicmVha2luZyBw
b3NpdGlvbi4KKyAgICAgICAgZS5nCisgICAgICAgIDxkaXYgc3R5bGU9IndpZHRoOiAxY2g7IHdv
cmQtYnJlYWs6IGJyZWFrLWFsbCI+PHNwYW4+WDwvc3Bhbj48c3Bhbj4uPC9zcGFuPjwvZGl2Pgor
ICAgICAgICAgICdicmVhay1hbGwnIHRlbGxzIHVzIHRvIGJyZWFrIGFmdGVyICdYXScgYnV0IHRo
ZSBwdW5jdHVhdGlvbiBjaGFyYWN0ZXIgcHJldmVudHMgdXMgdG8gZG8gc28uCisgICAgICAgICAg
VGhpcyBzaG91bGQgd29yayBldmVuIHdoZW4gdGhlIGNvbnRlbnQgaXMgaW4gc2VwYXJhdGUgcnVu
cyAoW1hdWy5dIGUuZy4gaW5saW5lLWJveCBib3VuZGFyeSBvciBzaW1wbHkKKyAgICAgICAgICB0
aGV5IHJlcHJlc2VudCBpbmRpdmlkdWFsIERPTSBub2RlcykKKworICAgICAgICAqIGxheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Y2FuQnJlYWtCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpmaW5kTGFzdFZhbGlkQnJlYWtpbmdQb3NpdGlvbik6IExldCdzIGZpbmQgdGhlIGxh
c3QgdmFsaWQgYnJlYWtpbmcgcG9zaXRpb24gaW4gdGhpcyBydW4gaW5jbHVkaW5nIHRoZSBydW4g
ZW5kIGJvdW5kYXJ5LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjptaWRXb3JkQnJlYWspOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVDb250ZW50QnJlYWtlcjo6dHJ5QnJlYWtp
bmdUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6cHJldmlvdXNUZXh0
UnVuSW5kZXgpOiBEZWxldGVkLgorCisyMDIxLTEwLTI0ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIFJlbmFtZSBUZXh0VXRpbDo6bWlkV29yZEJy
ZWFrIHRvIGJyZWFrV29yZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMyMjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBmdW5jdGlvbiBtYXkgImJyZWFrIiB0aGUgY29udGVudCBhdCB0aGUgbGVm
dC9yaWdodCBib3VuZGFyeS4gVGhpcyBpcyBhbHNvIGluIHByZXBhcmF0aW9uIGZvcgorICAgICAg
ICB1c2luZyBtaWRXb3JkQnJlYWsgdGVybSB0byBpbmRpY2F0ZSBhIHBvc2l0aW9uIHNvbWV3aGVy
ZSB3aXRoaW4gdGhlIHdvcmQgYm91bmRhcnkuCisKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6Om1pZFdvcmRCcmVhayk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZUNvbnRlbnRCcmVha2VyOjp0cnlCcmVha2luZ1RleHRSdW4gY29uc3QpOgorICAgICAgICAq
IGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUZXh0VXRpbDo6YnJlYWtXb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6VGV4dFV0aWw6Om1pZFdvcmRCcmVhayk6IERlbGV0ZWQuCisgICAgICAg
ICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRpbC5oOgorCiAy
MDIxLTEwLTI0ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAg
ICAgICAgIFRoZSBjb2RlIGRlY29kaW5nIHN0ZDo6b3B0aW9uYWw8SW1hZ2VQYWludGluZ09wdGlv
bnM+IGNhbid0IGJlIGNvbXBpbGVkIGJ5IFBsYXlTdGF0aW9uIGR1ZSB0byB0aGUgSW1hZ2VQYWlu
dGluZ09wdGlvbnMgdGVtcGxhdGUgY29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUNvbnRlbnRCcmVha2VyLmNwcAppbmRleCAxZGJiMzAzZjFlZDkuLjA2Yzc5OTc3N2Q1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcApAQCAtODQs
MTUgKzg0LDYgQEAgc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV4dFRleHRS
dW5JbmRleChjb25zdCBJbmxpbmVDb250ZW50QnJlYWtlcjoKICAgICByZXR1cm4geyB9OwogfQog
Ci1zdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwcmV2aW91c1RleHRSdW5JbmRl
eChjb25zdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OlJ1bkxpc3Qm
IHJ1bnMsIHNpemVfdCBzdGFydEluZGV4KQotewotICAgIGZvciAoYXV0byBpbmRleCA9IHN0YXJ0
SW5kZXg7IGluZGV4LS07KSB7Ci0gICAgICAgIGlmIChydW5zW2luZGV4XS5pbmxpbmVJdGVtLmlz
VGV4dCgpKQotICAgICAgICAgICAgcmV0dXJuIGluZGV4OwotICAgIH0KLSAgICByZXR1cm4geyB9
OwotfQotCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNWaXN1YWxseUVtcHR5V2hpdGVzcGFjZUNvbnRl
bnQoY29uc3QgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50JiBjb250aW51
b3VzQ29udGVudCkKIHsKICAgICAvLyBbPHNwYW4+PC9zcGFuPiBdIFs8c3Bhbj4gPC9zcGFuPl0g
WyA8c3BhbiBzdHlsZT0icGFkZGluZzogMHB4OyI+PC9zcGFuPl0gYXJlIGFsbCBjb25zaWRlcmVk
IHZpc3VhbGx5IGVtcHR5IHdoaXRlc3BhY2UgY29udGVudC4KQEAgLTI5NSw1MyArMjg2LDgwIEBA
IHN0YXRpYyBib29sIGlzV3JhcHBhYmxlUnVuKGNvbnN0IElubGluZUNvbnRlbnRCcmVha2VyOjpD
b250aW51b3VzQ29udGVudDo6UnVuJiByCiAgICAgcmV0dXJuIFRleHRVdGlsOjppc1dyYXBwaW5n
QWxsb3dlZChydW4uc3R5bGUpOwogfQogCi1zdGF0aWMgVGV4dFV0aWw6Ok1pZFdvcmRCcmVhayBt
aWRXb3JkQnJlYWsoY29uc3QgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50
OjpSdW4mIHRleHRSdW4sIElubGluZUxheW91dFVuaXQgcnVuTG9naWNhbExlZnQsIElubGluZUxh
eW91dFVuaXQgYXZhaWxhYmxlV2lkdGgpCitzdGF0aWMgaW5saW5lIGJvb2wgY2FuQnJlYWtCZWZv
cmUoVUNoYXIzMiBjaGFyYWN0ZXIsIExpbmVCcmVhayBsaW5lQnJlYWspCiB7CisgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGluY2x1ZGUgYWxsIHRoZSBjYXNlcyBmcm9tIGh0dHBzOi8vdW5pY29k
ZS5vcmcvcmVwb3J0cy90cjE0CisgICAgLy8gVXNlIGEgYnJlYWtpbmcgbWF0cml4IHNpbWlsYXIg
dG8gbGluZUJyZWFrVGFibGUgaW4gQnJlYWtMaW5lcy5jcHAKKyAgICAvLyBBbHNvIHNlZSBrQnJl
YWtBbGxMaW5lQnJlYWtDbGFzc1RhYmxlIGluIHRoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3Bs
YXRmb3JtL3RleHQvdGV4dF9icmVha19pdGVyYXRvci5jYworICAgIGlmIChsaW5lQnJlYWsgIT0g
TGluZUJyZWFrOjpMb29zZSkgeworICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGJyZWFrcyBhcmUg
YWxsb3dlZCBmb3IgbG9vc2UgbGluZSBicmVha2luZyBpZiB0aGUgcHJlY2VkaW5nIGNoYXJhY3Rl
ciBiZWxvbmdzIHRvIHRoZSBVbmljb2RlCisgICAgICAgIC8vIGxpbmUgYnJlYWtpbmcgY2xhc3Mg
SUQsIGFuZCBhcmUgb3RoZXJ3aXNlIGZvcmJpZGRlbjoKKyAgICAgICAgLy8g4oCQIFUrMjAxMCwg
4oCTIFUrMjAxMworICAgICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRleHQv
I2xpbmUtYnJlYWstcHJvcGVydHkKKyAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBoeXBoZW4gfHwg
Y2hhcmFjdGVyID09IGVuRGFzaCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgaWYgKGNoYXJhY3RlciA9PSBub0JyZWFrU3BhY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBhdXRvIGlzUHVuY3R1YXRpb24gPSBVX0dFVF9HQ19NQVNLKGNoYXJhY3RlcikgJiAoVV9H
Q19QU19NQVNLIHwgVV9HQ19QRV9NQVNLIHwgVV9HQ19QSV9NQVNLIHwgVV9HQ19QRl9NQVNLIHwg
VV9HQ19QT19NQVNLKTsKKyAgICByZXR1cm4gY2hhcmFjdGVyID09IHJldmVyc2VTb2xpZHVzIHx8
ICFpc1B1bmN0dWF0aW9uOworfQorCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBsYXN0VmFsaWRCcmVha2luZ1Bvc2l0aW9uKGNvbnN0IElubGluZUNvbnRlbnRCcmVha2VyOjpD
b250aW51b3VzQ29udGVudDo6UnVuTGlzdCYgcnVucywgc2l6ZV90IHRleHRSdW5JbmRleCkKK3sK
KyAgICBhdXRvJiB0ZXh0UnVuID0gcnVuc1t0ZXh0UnVuSW5kZXhdOwogICAgIGF1dG8mIGlubGlu
ZVRleHRJdGVtID0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KHRleHRSdW4uaW5saW5lSXRlbSk7
Ci0gICAgYXV0byYgc3R5bGUgPSB0ZXh0UnVuLnN0eWxlOwotICAgIGF1dG8gbGluZUJyZWFrID0g
c3R5bGUubGluZUJyZWFrKCk7Ci0gICAgQVNTRVJUKGxpbmVCcmVhayA9PSBMaW5lQnJlYWs6OkFu
eXdoZXJlIHx8IHN0eWxlLndvcmRCcmVhaygpID09IFdvcmRCcmVhazo6QnJlYWtBbGwgfHwgc3R5
bGUud29yZEJyZWFrKCkgPT0gV29yZEJyZWFrOjpCcmVha1dvcmQgfHwgc3R5bGUub3ZlcmZsb3dX
cmFwKCkgPT0gT3ZlcmZsb3dXcmFwOjpCcmVha1dvcmQgfHwgc3R5bGUub3ZlcmZsb3dXcmFwKCkg
PT0gT3ZlcmZsb3dXcmFwOjpBbnl3aGVyZSk7CisgICAgQVNTRVJUKGlubGluZVRleHRJdGVtLmxl
bmd0aCgpKTsKKyAgICBhdXRvIGxpbmVCcmVhayA9IHRleHRSdW4uc3R5bGUubGluZUJyZWFrKCk7
CiAKLSAgICBhdXRvIG1pZFdvcmRCcmVhayA9IFRleHRVdGlsOjptaWRXb3JkQnJlYWsoaW5saW5l
VGV4dEl0ZW0sIHN0eWxlLmZvbnRDYXNjYWRlKCksIHRleHRSdW4ubG9naWNhbFdpZHRoLCBhdmFp
bGFibGVXaWR0aCwgcnVuTG9naWNhbExlZnQpOwotICAgIGlmICghbWlkV29yZEJyZWFrLmxlbmd0
aCB8fCBtaWRXb3JkQnJlYWsubGVuZ3RoID09IGlubGluZVRleHRJdGVtLmxlbmd0aCgpKQotICAg
ICAgICByZXR1cm4gbWlkV29yZEJyZWFrOworICAgIGF1dG8gYWRqYWN0ZW50VGV4dFJ1bkluZGV4
ID0gbmV4dFRleHRSdW5JbmRleChydW5zLCB0ZXh0UnVuSW5kZXgpOworICAgIGlmICghYWRqYWN0
ZW50VGV4dFJ1bkluZGV4KQorICAgICAgICByZXR1cm4gaW5saW5lVGV4dEl0ZW0uZW5kKCk7CiAK
LSAgICBhdXRvIGNhbkJyZWFrQmV0d2VlbkFueVR5cG9ncmFwaGljQ2hhcmFjdGVyVW5pdCA9IGxp
bmVCcmVhayA9PSBMaW5lQnJlYWs6OkFueXdoZXJlIHx8IHN0eWxlLndvcmRCcmVhaygpID09IFdv
cmRCcmVhazo6QnJlYWtXb3JkIHx8IHN0eWxlLm92ZXJmbG93V3JhcCgpID09IE92ZXJmbG93V3Jh
cDo6QnJlYWtXb3JkIHx8IHN0eWxlLm92ZXJmbG93V3JhcCgpID09IE92ZXJmbG93V3JhcDo6QW55
d2hlcmU7Ci0gICAgaWYgKGNhbkJyZWFrQmV0d2VlbkFueVR5cG9ncmFwaGljQ2hhcmFjdGVyVW5p
dCkKLSAgICAgICAgcmV0dXJuIG1pZFdvcmRCcmVhazsKKyAgICBhdXRvJiBuZXh0SW5saW5lVGV4
dEl0ZW0gPSBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4ocnVuc1sqYWRqYWN0ZW50VGV4dFJ1bklu
ZGV4XS5pbmxpbmVJdGVtKTsKKyAgICBhdXRvIGNhbkJyZWFrQXRSdW5Cb3VuZGFyeSA9IG5leHRJ
bmxpbmVUZXh0SXRlbS5pc1doaXRlc3BhY2UoKSA/IG5leHRJbmxpbmVUZXh0SXRlbS5zdHlsZSgp
LndoaXRlU3BhY2UoKSAhPSBXaGl0ZVNwYWNlOjpCcmVha1NwYWNlcyA6CisgICAgICAgIGNhbkJy
ZWFrQmVmb3JlKG5leHRJbmxpbmVUZXh0SXRlbS5pbmxpbmVUZXh0Qm94KCkuY29udGVudCgpW25l
eHRJbmxpbmVUZXh0SXRlbS5zdGFydCgpXSwgbGluZUJyZWFrKTsKKyAgICBpZiAoY2FuQnJlYWtB
dFJ1bkJvdW5kYXJ5KQorICAgICAgICByZXR1cm4gaW5saW5lVGV4dEl0ZW0uZW5kKCk7CiAKICAg
ICAvLyBGaW5kIG91dCBpZiB0aGUgY2FuZGlkYXRlIHBvc2l0aW9uIGZvciBhcmJpdHJhcnkgYnJl
YWtpbmcgaXMgdmFsaWQuIFdlIGNhbid0IGFsd2F5cyBicmVhayBiZXR3ZWVuIGFueSBjaGFyYWN0
ZXJzLgogICAgIGF1dG8gdGV4dCA9IGlubGluZVRleHRJdGVtLmlubGluZVRleHRCb3goKS5jb250
ZW50KCk7Ci0gICAgY29uc3QgYXV0byBsZWZ0ID0gbWlkV29yZEJyZWFrLnN0YXJ0OwotICAgIGF1
dG8gcmlnaHQgPSBsZWZ0ICsgbWlkV29yZEJyZWFrLmxlbmd0aDsKKyAgICBhdXRvIGxlZnQgPSBp
bmxpbmVUZXh0SXRlbS5zdGFydCgpOworICAgIGZvciAoYXV0byBpbmRleCA9IGlubGluZVRleHRJ
dGVtLmVuZCgpIC0gMTsgaW5kZXggPiBsZWZ0OyAtLWluZGV4KSB7CisgICAgICAgIFUxNl9TRVRf
Q1BfU1RBUlQodGV4dCwgbGVmdCwgaW5kZXgpOworICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIg
ZmluZCBzdXJyb2dhdGVzL3NlZ21lbnRzIGFjcm9zcyBpbmxpbmUgaXRlbXMuCisgICAgICAgIEFT
U0VSVChpbmRleCA+IGlubGluZVRleHRJdGVtLnN0YXJ0KCkpOworICAgICAgICBpZiAoY2FuQnJl
YWtCZWZvcmUodGV4dFtpbmRleF0sIGxpbmVCcmVhaykpCisgICAgICAgICAgICByZXR1cm4gaW5k
ZXg7CisgICAgfQorICAgIHJldHVybiB7IH07Cit9CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFRl
eHRVdGlsOjpXb3JkQnJlYWtMZWZ0PiBtaWRXb3JkQnJlYWsoY29uc3QgSW5saW5lQ29udGVudEJy
ZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50OjpSdW4mIHRleHRSdW4sIElubGluZUxheW91dFVuaXQg
cnVuTG9naWNhbExlZnQsIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgpCit7CisgICAg
QVNTRVJUKHRleHRSdW4uc3R5bGUud29yZEJyZWFrKCkgPT0gV29yZEJyZWFrOjpCcmVha0FsbCk7
CisgICAgYXV0byYgaW5saW5lVGV4dEl0ZW0gPSBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4odGV4
dFJ1bi5pbmxpbmVJdGVtKTsKKworICAgIGF1dG8gd29yZEJyZWFrID0gVGV4dFV0aWw6OmJyZWFr
V29yZChpbmxpbmVUZXh0SXRlbSwgdGV4dFJ1bi5zdHlsZS5mb250Q2FzY2FkZSgpLCB0ZXh0UnVu
LmxvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlV2lkdGgsIHJ1bkxvZ2ljYWxMZWZ0KTsKKyAgICBpZiAo
IXdvcmRCcmVhay5sZW5ndGggfHwgd29yZEJyZWFrLmxlbmd0aCA9PSBpbmxpbmVUZXh0SXRlbS5s
ZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIC8vIEZpbmQgb3V0IGlmIHRoZSBj
YW5kaWRhdGUgcG9zaXRpb24gZm9yIGFyYml0cmFyeSBicmVha2luZyBpcyB2YWxpZC4gV2UgY2Fu
J3QgYWx3YXlzIGJyZWFrIGJldHdlZW4gYW55IGNoYXJhY3RlcnMuCisgICAgYXV0byBsaW5lQnJl
YWsgPSB0ZXh0UnVuLnN0eWxlLmxpbmVCcmVhaygpOworICAgIGF1dG8gdGV4dCA9IGlubGluZVRl
eHRJdGVtLmlubGluZVRleHRCb3goKS5jb250ZW50KCk7CisgICAgaWYgKGNhbkJyZWFrQmVmb3Jl
KHRleHRbaW5saW5lVGV4dEl0ZW0uc3RhcnQoKSArIHdvcmRCcmVhay5sZW5ndGhdLCBsaW5lQnJl
YWspKQorICAgICAgICByZXR1cm4gd29yZEJyZWFrOworCisgICAgY29uc3QgYXV0byBsZWZ0ID0g
aW5saW5lVGV4dEl0ZW0uc3RhcnQoKTsKKyAgICBhdXRvIHJpZ2h0ID0gbGVmdCArIHdvcmRCcmVh
ay5sZW5ndGg7CiAgICAgZm9yICg7IHJpZ2h0ID4gbGVmdDsgLS1yaWdodCkgewotICAgICAgICBh
dXRvIGNhbkJyZWFrQmVmb3JlID0gWyZdKGF1dG8gY2hhcmFjdGVyKSB7Ci0gICAgICAgICAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQgaW5jbHVkZSBhbGwgdGhlIGNhc2VzIGZyb20gaHR0cHM6Ly91
bmljb2RlLm9yZy9yZXBvcnRzL3RyMTQKLSAgICAgICAgICAgIC8vIFVzZSBhIGJyZWFraW5nIG1h
dHJpeCBzaW1pbGFyIHRvIGxpbmVCcmVha1RhYmxlIGluIEJyZWFrTGluZXMuY3BwCi0gICAgICAg
ICAgICAvLyBBbHNvIHNlZSBrQnJlYWtBbGxMaW5lQnJlYWtDbGFzc1RhYmxlIGluIHRoaXJkX3Bh
cnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3RleHQvdGV4dF9icmVha19pdGVyYXRvci5jYwot
ICAgICAgICAgICAgaWYgKGxpbmVCcmVhayAhPSBMaW5lQnJlYWs6Okxvb3NlKSB7Ci0gICAgICAg
ICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBicmVha3MgYXJlIGFsbG93ZWQgZm9yIGxvb3NlIGxp
bmUgYnJlYWtpbmcgaWYgdGhlIHByZWNlZGluZyBjaGFyYWN0ZXIgYmVsb25ncyB0byB0aGUgVW5p
Y29kZQotICAgICAgICAgICAgICAgIC8vIGxpbmUgYnJlYWtpbmcgY2xhc3MgSUQsIGFuZCBhcmUg
b3RoZXJ3aXNlIGZvcmJpZGRlbjoKLSAgICAgICAgICAgICAgICAvLyDigJAgVSsyMDEwLCDigJMg
VSsyMDEzCi0gICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10
ZXh0LyNsaW5lLWJyZWFrLXByb3BlcnR5Ci0gICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9
PSBoeXBoZW4gfHwgY2hhcmFjdGVyID09IGVuRGFzaCkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBu
b0JyZWFrU3BhY2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
YXV0byBpc1B1bmN0dWF0aW9uID0gVV9HRVRfR0NfTUFTSyhjaGFyYWN0ZXIpICYgKFVfR0NfUFNf
TUFTSyB8IFVfR0NfUEVfTUFTSyB8IFVfR0NfUElfTUFTSyB8IFVfR0NfUEZfTUFTSyB8IFVfR0Nf
UE9fTUFTSyk7Ci0gICAgICAgICAgICByZXR1cm4gY2hhcmFjdGVyID09IHJldmVyc2VTb2xpZHVz
IHx8ICFpc1B1bmN0dWF0aW9uOwotICAgICAgICB9OwogICAgICAgICBVMTZfU0VUX0NQX1NUQVJU
KHRleHQsIGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgaWYgKGNhbkJyZWFrQmVmb3JlKHRleHRbcmln
aHRdKSkKKyAgICAgICAgaWYgKGNhbkJyZWFrQmVmb3JlKHRleHRbcmlnaHRdLCBsaW5lQnJlYWsp
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIFJFTEVBU0VfQVNTRVJUKHJpZ2h0ID49
IGxlZnQpOwotICAgIGlmIChsZWZ0ICsgbWlkV29yZEJyZWFrLmxlbmd0aCA9PSByaWdodCkKLSAg
ICAgICAgcmV0dXJuIG1pZFdvcmRCcmVhazsKICAgICBpZiAobGVmdCA9PSByaWdodCkKLSAgICAg
ICAgcmV0dXJuIHsgbGVmdCwgeyB9LCB7IH0gfTsKLSAgICByZXR1cm4geyBsZWZ0LCByaWdodCAt
IGxlZnQsIFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0SXRlbSwgc3R5bGUuZm9udENhc2NhZGUo
KSwgbGVmdCwgcmlnaHQsIHJ1bkxvZ2ljYWxMZWZ0KSB9OworICAgICAgICByZXR1cm4geyB9Owor
ICAgIHJldHVybiBUZXh0VXRpbDo6V29yZEJyZWFrTGVmdCB7IHJpZ2h0IC0gbGVmdCwgVGV4dFV0
aWw6OndpZHRoKGlubGluZVRleHRJdGVtLCB0ZXh0UnVuLnN0eWxlLmZvbnRDYXNjYWRlKCksIGxl
ZnQsIHJpZ2h0LCBydW5Mb2dpY2FsTGVmdCkgfTsKIH0KIAogc3RydWN0IENhbmRpZGF0ZVRleHRS
dW5Gb3JCcmVha2luZyB7CkBAIC0zNzMsNDIgKzM5MSwzMSBAQCBzdGQ6Om9wdGlvbmFsPElubGlu
ZUNvbnRlbnRCcmVha2VyOjpQYXJ0aWFsUnVuPiBJbmxpbmVDb250ZW50QnJlYWtlcjo6dHJ5QnJl
YWtpbgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIWlubGluZVRleHRJdGVtLmxl
bmd0aCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gRW1wdHkgdGV4dCBydW5zIG1heSBiZSBicmVh
a2FibGUgYmFzZWQgb24gc3R5bGUsIGJ1dCBpbiBwcmFjdGljZSB3ZSBjYW4ndCByZWFsbHkgc3Bs
aXQgdGhlbSBhbnkgZnVydGhlci4KLSAgICAgICAgICAgICAgICByZXR1cm4gUGFydGlhbFJ1biB7
IH07CisgICAgICAgICAgICAgICAgLy8gRW1wdHkvc2luZ2xlIGNoYXJhY3RlciB0ZXh0IHJ1bnMg
bWF5IGJlIGJyZWFrYWJsZSBiYXNlZCBvbiBzdHlsZSwgYnV0IGluIHByYWN0aWNlIHdlIGNhbid0
IHJlYWxseSBzcGxpdCB0aGVtIGFueSBmdXJ0aGVyLgorICAgICAgICAgICAgICAgIHJldHVybiB7
IH07CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICghY2FuZGlkYXRlVGV4dFJ1bi5p
c092ZXJmbG93aW5nUnVuKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2hlbiB0aGUgcnVuIGNhbiBi
ZSBzcGxpdCBhdCBhcmJpdHJhcnkgcG9zaXRpb24gd2Ugd291bGQgbm9ybWFsbHkganVzdCByZXR1
cm4gdGhlIGVudGlyZSBydW4gd2hlbiBpdCBpcyBpbnRlbmRlZCB0byBmaXQgb24gdGhlIGxpbmUK
LSAgICAgICAgICAgICAgICAvLyBidXQgaGVyZSB3ZSBoYXZlIHRvIGNoZWNrIGZvciBtaWQtd29y
ZCBicmVhay4KLSAgICAgICAgICAgICAgICBhdXRvIG5leHRJbmRleCA9IG5leHRUZXh0UnVuSW5k
ZXgocnVucywgY2FuZGlkYXRlVGV4dFJ1bi5pbmRleCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFu
ZXh0SW5kZXggfHwgIWRvd25jYXN0PElubGluZVRleHRJdGVtPihydW5zWypuZXh0SW5kZXhdLmlu
bGluZUl0ZW0pLmlzV2hpdGVzcGFjZSgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gUGFy
dGlhbFJ1biB7IGlubGluZVRleHRJdGVtLmxlbmd0aCgpLCBUZXh0VXRpbDo6d2lkdGgoaW5saW5l
VGV4dEl0ZW0sIGZvbnRDYXNjYWRlLCBjYW5kaWRhdGVUZXh0UnVuLmxvZ2ljYWxMZWZ0KSB9Owot
ICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGdvdCByb29tIGZvciB0aGUgcnVuIGJ1dCB3ZSBoYXZl
IHRvIHRyeSB0byBicmVhayBpdCBtaWQtd29yZC4KLSAgICAgICAgICAgICAgICBpZiAoaW5saW5l
VGV4dEl0ZW0ubGVuZ3RoKCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4n
dCBtaWQtd29yZCBicmVhayBhIHNpbmdsZSBjaGFyYWN0ZXIuCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiB7IH07CisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlVGV4dFJ1bi5pc092ZXJmbG93
aW5nUnVuKSB7CisgICAgICAgICAgICAgICAgaWYgKGxpbmVIYXNSb29tRm9yQ29udGVudCkgewor
ICAgICAgICAgICAgICAgICAgICAvLyBUcnkgdG8gYnJlYWsgdGhlIG92ZXJmbG93aW5nIHJ1biBt
aWQtd29yZC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gd29yZEJyZWFrID0gbWlkV29y
ZEJyZWFrKGNhbmRpZGF0ZVJ1biwgY2FuZGlkYXRlVGV4dFJ1bi5sb2dpY2FsTGVmdCwgYXZhaWxh
YmxlV2lkdGgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnRpYWxSdW4geyB3
b3JkQnJlYWstPmxlbmd0aCwgd29yZEJyZWFrLT5sb2dpY2FsV2lkdGggfTsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgYXV0byBzdGFydFBvc2l0aW9uID0gaW5saW5lVGV4dEl0
ZW0uc3RhcnQoKTsKLSAgICAgICAgICAgICAgICBhdXRvIGVuZFBvc2l0aW9uID0gaW5saW5lVGV4
dEl0ZW0uZW5kKCkgLSAxOwotICAgICAgICAgICAgICAgIHJldHVybiBQYXJ0aWFsUnVuIHsgaW5s
aW5lVGV4dEl0ZW0ubGVuZ3RoKCkgLSAxLCBUZXh0VXRpbDo6d2lkdGgoaW5saW5lVGV4dEl0ZW0s
IGZvbnRDYXNjYWRlLCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwgY2FuZGlkYXRlVGV4dFJ1
bi5sb2dpY2FsTGVmdCkgfTsKKyAgICAgICAgICAgICAgICBpZiAoY2FuQnJlYWtCZWZvcmUoaW5s
aW5lVGV4dEl0ZW0uaW5saW5lVGV4dEJveCgpLmNvbnRlbnQoKVtpbmxpbmVUZXh0SXRlbS5zdGFy
dCgpXSwgc3R5bGUubGluZUJyZWFrKCkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUGFy
dGlhbFJ1biB7IH07CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgaWYgKCFsaW5lSGFzUm9vbUZvckNvbnRlbnQpIHsKLSAgICAgICAgICAg
ICAgICBhdXRvIHByZXZpb3VzSW5kZXggPSBwcmV2aW91c1RleHRSdW5JbmRleChydW5zLCBjYW5k
aWRhdGVUZXh0UnVuLmluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzSW5kZXgg
fHwgIWRvd25jYXN0PElubGluZVRleHRJdGVtPihydW5zWypwcmV2aW91c0luZGV4XS5pbmxpbmVJ
dGVtKS5pc1doaXRlc3BhY2UoKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBGYXN0IHBhdGgg
Zm9yIGNhc2VzIHdoZW4gdGhlcmUncyBubyByb29tIGF0IGFsbC4gV2UgY2FuIGJyZWFrIHRoaXMg
Y29udGVudCBhdCB0aGUgc3RhcnQuCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBQYXJ0aWFs
UnVuIHsgfTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGlubGluZVRl
eHRJdGVtLmxlbmd0aCgpID09IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3Qg
bWlkLXdvcmQgYnJlYWsgYSBzaW5nbGUgY2hhcmFjdGVyLgotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4geyB9OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhdXRvIHN0YXJ0
UG9zaXRpb24gPSBpbmxpbmVUZXh0SXRlbS5zdGFydCgpICsgMTsKLSAgICAgICAgICAgICAgICBh
dXRvIGVuZFBvc2l0aW9uID0gaW5saW5lVGV4dEl0ZW0uZW5kKCk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIFBhcnRpYWxSdW4geyBpbmxpbmVUZXh0SXRlbS5sZW5ndGgoKSAtIDEsIFRleHRVdGls
Ojp3aWR0aChpbmxpbmVUZXh0SXRlbSwgZm9udENhc2NhZGUsIHN0YXJ0UG9zaXRpb24sIGVuZFBv
c2l0aW9uLCBjYW5kaWRhdGVUZXh0UnVuLmxvZ2ljYWxMZWZ0KSB9OworICAgICAgICAgICAgLy8g
VGhpcyBpcyBhIG5vbi1vdmVyZmxvd2luZyBjb250ZW50LgorICAgICAgICAgICAgQVNTRVJUKGxp
bmVIYXNSb29tRm9yQ29udGVudCk7CisgICAgICAgICAgICBpZiAoYXV0byBicmVha2luZ1Bvc2l0
aW9uID0gbGFzdFZhbGlkQnJlYWtpbmdQb3NpdGlvbihydW5zLCBjYW5kaWRhdGVUZXh0UnVuLmlu
ZGV4KSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCgqYnJlYWtpbmdQb3NpdGlvbiA8PSBpbmxp
bmVUZXh0SXRlbS5lbmQoKSk7CisgICAgICAgICAgICAgICAgYXV0byB0cmFpbGluZ0xlbmd0aCA9
ICpicmVha2luZ1Bvc2l0aW9uIC0gaW5saW5lVGV4dEl0ZW0uc3RhcnQoKTsKKyAgICAgICAgICAg
ICAgICBhdXRvIHN0YXJ0UG9zaXRpb24gPSBpbmxpbmVUZXh0SXRlbS5zdGFydCgpOworICAgICAg
ICAgICAgICAgIGF1dG8gZW5kUG9zaXRpb24gPSBzdGFydFBvc2l0aW9uICsgdHJhaWxpbmdMZW5n
dGg7CisgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnRpYWxSdW4geyB0cmFpbGluZ0xlbmd0aCwg
VGV4dFV0aWw6OndpZHRoKGlubGluZVRleHRJdGVtLCBmb250Q2FzY2FkZSwgc3RhcnRQb3NpdGlv
biwgZW5kUG9zaXRpb24sIGNhbmRpZGF0ZVRleHRSdW4ubG9naWNhbExlZnQpIH07CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBhdXRvIG1pZFdvcmRCcmVhayA9IFdlYkNvcmU6OkxheW91dDo6
bWlkV29yZEJyZWFrKGNhbmRpZGF0ZVJ1biwgY2FuZGlkYXRlVGV4dFJ1bi5sb2dpY2FsTGVmdCwg
YXZhaWxhYmxlV2lkdGgpOwotICAgICAgICAgICAgcmV0dXJuIFBhcnRpYWxSdW4geyBtaWRXb3Jk
QnJlYWsubGVuZ3RoLCBtaWRXb3JkQnJlYWsubG9naWNhbFdpZHRoIH07CisgICAgICAgICAgICBy
ZXR1cm4geyB9OwogICAgICAgICB9OwogICAgICAgICByZXR1cm4gdHJ5QnJlYWtpbmdBdEFyYml0
cmFyeVBvc2l0aW9uV2l0aGluV29yZHMoKTsKICAgICB9CkBAIC00MzUsNyArNDQyLDcgQEAgc3Rk
OjpvcHRpb25hbDxJbmxpbmVDb250ZW50QnJlYWtlcjo6UGFydGlhbFJ1bj4gSW5saW5lQ29udGVu
dEJyZWFrZXI6OnRyeUJyZWFraW4KICAgICAgICAgICAgICAgICBhdXRvIGF2YWlsYWJsZVdpZHRo
RXhjbHVkaW5nSHlwaGVuID0gYXZhaWxhYmxlV2lkdGggLSBoeXBoZW5XaWR0aDsKICAgICAgICAg
ICAgICAgICBpZiAoYXZhaWxhYmxlV2lkdGhFeGNsdWRpbmdIeXBoZW4gPD0gMCB8fCAhZW5vdWdo
V2lkdGhGb3JIeXBoZW5hdGlvbihhdmFpbGFibGVXaWR0aEV4Y2x1ZGluZ0h5cGhlbiwgZm9udENh
c2NhZGUucGl4ZWxTaXplKCkpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAg
ICAgICAgICAgICAgIGxlZnRTaWRlTGVuZ3RoID0gVGV4dFV0aWw6Om1pZFdvcmRCcmVhayhpbmxp
bmVUZXh0SXRlbSwgZm9udENhc2NhZGUsIGNhbmRpZGF0ZVJ1bi5sb2dpY2FsV2lkdGgsIGF2YWls
YWJsZVdpZHRoRXhjbHVkaW5nSHlwaGVuLCBjYW5kaWRhdGVUZXh0UnVuLmxvZ2ljYWxMZWZ0KS5s
ZW5ndGg7CisgICAgICAgICAgICAgICAgbGVmdFNpZGVMZW5ndGggPSBUZXh0VXRpbDo6YnJlYWtX
b3JkKGlubGluZVRleHRJdGVtLCBmb250Q2FzY2FkZSwgY2FuZGlkYXRlUnVuLmxvZ2ljYWxXaWR0
aCwgYXZhaWxhYmxlV2lkdGhFeGNsdWRpbmdIeXBoZW4sIGNhbmRpZGF0ZVRleHRSdW4ubG9naWNh
bExlZnQpLmxlbmd0aDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChsZWZ0U2lkZUxl
bmd0aCA8IGxpbWl0QmVmb3JlKQogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC00Nzcs
OCArNDg0LDggQEAgc3RkOjpvcHRpb25hbDxJbmxpbmVDb250ZW50QnJlYWtlcjo6UGFydGlhbFJ1
bj4gSW5saW5lQ29udGVudEJyZWFrZXI6OnRyeUJyZWFraW4KICAgICAgICAgICAgICAgICAvLyBG
YXN0IHBhdGggZm9yIGNhc2VzIHdoZW4gdGhlcmUncyBubyByb29tIGF0IGFsbC4gVGhlIGNvbnRl
bnQgaXMgYnJlYWthYmxlIGJ1dCB3ZSBkb24ndCBoYXZlIHNwYWNlIGZvciBpdC4KICAgICAgICAg
ICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYXV0byBtaWRX
b3JkQnJlYWsgPSBUZXh0VXRpbDo6bWlkV29yZEJyZWFrKGlubGluZVRleHRJdGVtLCBmb250Q2Fz
Y2FkZSwgY2FuZGlkYXRlUnVuLmxvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlV2lkdGgsIGNhbmRpZGF0
ZVRleHRSdW4ubG9naWNhbExlZnQpOwotICAgICAgICAgICAgcmV0dXJuIHsgbWlkV29yZEJyZWFr
Lmxlbmd0aCwgbWlkV29yZEJyZWFrLmxvZ2ljYWxXaWR0aCB9OworICAgICAgICAgICAgYXV0byB3
b3JkQnJlYWsgPSBUZXh0VXRpbDo6YnJlYWtXb3JkKGlubGluZVRleHRJdGVtLCBmb250Q2FzY2Fk
ZSwgY2FuZGlkYXRlUnVuLmxvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlV2lkdGgsIGNhbmRpZGF0ZVRl
eHRSdW4ubG9naWNhbExlZnQpOworICAgICAgICAgICAgcmV0dXJuIHsgd29yZEJyZWFrLmxlbmd0
aCwgd29yZEJyZWFrLmxvZ2ljYWxXaWR0aCB9OwogICAgICAgICB9OwogICAgICAgICAvLyBXaXRo
IGFyYml0cmFyeSBicmVha2luZyB0aGVyZSdzIGFsd2F5cyBhIHZhbGlkIGJyZWFraW5nIHBvc2l0
aW9uIChldmVuIGlmIGl0IGlzIGJlZm9yZSB0aGUgZmlyc3QgcG9zaXRpb24pLgogICAgICAgICBy
ZXR1cm4gdHJ5QnJlYWtpbmdBdEFyYml0cmFyeVBvc2l0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0L1RleHRVdGls
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3Rl
eHQvVGV4dFV0aWwuY3BwCmluZGV4IGFhZjBmMDhiZTBkZC4uNTUxM2YyN2ExNGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0
L1RleHRVdGlsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS90ZXh0L1RleHRVdGlsLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIFRleHRVdGls
OjpGYWxsYmFja0ZvbnRMaXN0IFRleHRVdGlsOjpmYWxsYmFja0ZvbnRzRm9yUnVuKGNvbnN0IExp
bmU6OlJ1biYgcnVuLCBjCiAgICAgcmV0dXJuIGZhbGxiYWNrRm9udHM7CiB9CiAKLVRleHRVdGls
OjpNaWRXb3JkQnJlYWsgVGV4dFV0aWw6Om1pZFdvcmRCcmVhayhjb25zdCBJbmxpbmVUZXh0SXRl
bSYgaW5saW5lVGV4dEl0ZW0sIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250Q2FzY2FkZSwgSW5saW5l
TGF5b3V0VW5pdCB0ZXh0V2lkdGgsIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgsIElu
bGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0KQorVGV4dFV0aWw6OldvcmRCcmVha0xl
ZnQgVGV4dFV0aWw6OmJyZWFrV29yZChjb25zdCBJbmxpbmVUZXh0SXRlbSYgaW5saW5lVGV4dEl0
ZW0sIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250Q2FzY2FkZSwgSW5saW5lTGF5b3V0VW5pdCB0ZXh0
V2lkdGgsIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgsIElubGluZUxheW91dFVuaXQg
Y29udGVudExvZ2ljYWxMZWZ0KQogewogICAgIEFTU0VSVChhdmFpbGFibGVXaWR0aCA+PSAwKTsK
ICAgICBhdXRvIHN0YXJ0UG9zaXRpb24gPSBpbmxpbmVUZXh0SXRlbS5zdGFydCgpOwpAQCAtMTc4
LDcgKzE3OCw4IEBAIFRleHRVdGlsOjpNaWRXb3JkQnJlYWsgVGV4dFV0aWw6Om1pZFdvcmRCcmVh
ayhjb25zdCBJbmxpbmVUZXh0SXRlbSYgaW5saW5lVGV4dEl0CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4geyBzdGFydFBvc2l0aW9uLCByaWdodCAtIHN0
YXJ0UG9zaXRpb24sIGxlZnRTaWRlV2lkdGggfTsKKyAgICBSRUxFQVNFX0FTU0VSVChyaWdodCA+
PSBzdGFydFBvc2l0aW9uKTsKKyAgICByZXR1cm4geyByaWdodCAtIHN0YXJ0UG9zaXRpb24sIGxl
ZnRTaWRlV2lkdGggfTsKIH0KIAogdW5zaWduZWQgVGV4dFV0aWw6OmZpbmROZXh0QnJlYWthYmxl
UG9zaXRpb24oTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsaW5lQnJlYWtJdGVyYXRvciwgdW5zaWdu
ZWQgc3RhcnRQb3NpdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9UZXh0
VXRpbC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
dGV4dC9UZXh0VXRpbC5oCmluZGV4IDdmOWQ5MWUxODAyYy4uMjY5ZTRjMDAxOGQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0
L1RleHRVdGlsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvdGV4dC9UZXh0VXRpbC5oCkBAIC01MSwxMiArNTEsMTEgQEAgcHVibGljOgogICAg
IHVzaW5nIEZhbGxiYWNrRm9udExpc3QgPSBIYXNoU2V0PGNvbnN0IEZvbnQqPjsKICAgICBzdGF0
aWMgRmFsbGJhY2tGb250TGlzdCBmYWxsYmFja0ZvbnRzRm9yUnVuKGNvbnN0IExpbmU6OlJ1biYs
IGNvbnN0IFJlbmRlclN0eWxlJik7CiAKLSAgICBzdHJ1Y3QgTWlkV29yZEJyZWFrIHsKLSAgICAg
ICAgc2l6ZV90IHN0YXJ0IHsgMCB9OworICAgIHN0cnVjdCBXb3JkQnJlYWtMZWZ0IHsKICAgICAg
ICAgc2l6ZV90IGxlbmd0aCB7IDAgfTsKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2Fs
V2lkdGggeyAwIH07CiAgICAgfTsKLSAgICBzdGF0aWMgTWlkV29yZEJyZWFrIG1pZFdvcmRCcmVh
ayhjb25zdCBJbmxpbmVUZXh0SXRlbSYsIGNvbnN0IEZvbnRDYXNjYWRlJiwgSW5saW5lTGF5b3V0
VW5pdCB0ZXh0V2lkdGgsIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgsIElubGluZUxh
eW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0KTsKKyAgICBzdGF0aWMgV29yZEJyZWFrTGVmdCBi
cmVha1dvcmQoY29uc3QgSW5saW5lVGV4dEl0ZW0mLCBjb25zdCBGb250Q2FzY2FkZSYsIElubGlu
ZUxheW91dFVuaXQgdGV4dFdpZHRoLCBJbmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoLCBJ
bmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsTGVmdCk7CiAKICAgICBzdGF0aWMgdW5zaWdu
ZWQgZmluZE5leHRCcmVha2FibGVQb3NpdGlvbihMYXp5TGluZUJyZWFrSXRlcmF0b3ImLCB1bnNp
Z25lZCBzdGFydFBvc2l0aW9uLCBjb25zdCBSZW5kZXJTdHlsZSYpOwogICAgIHN0YXRpYyBMaW5l
QnJlYWtJdGVyYXRvck1vZGUgbGluZUJyZWFrSXRlcmF0b3JNb2RlKExpbmVCcmVhayk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>