<?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>215748</bug_id>
          
          <creation_ts>2020-08-21 20:14:35 -0700</creation_ts>
          <short_desc>[LFC][IFC] Add support for nested inline box sizing and positioning</short_desc>
          <delta_ts>2020-09-03 04:22:24 -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>
          
          <blocked>215752</blocked>
          <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>1682097</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-08-21 20:14:35 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682098</commentid>
    <comment_count>1</comment_count>
      <attachid>407040</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-08-21 20:28:47 -0700</bug_when>
    <thetext>Created attachment 407040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682127</commentid>
    <comment_count>2</comment_count>
      <attachid>407053</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-08-22 09:09:06 -0700</bug_when>
    <thetext>Created attachment 407053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683857</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-28 20:15:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/67976836&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684712</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-09-01 20:22:41 -0700</bug_when>
    <thetext>*** Bug 215532 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684715</commentid>
    <comment_count>5</comment_count>
      <attachid>407737</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-09-01 20:43:18 -0700</bug_when>
    <thetext>Created attachment 407737
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684822</commentid>
    <comment_count>6</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-09-02 08:40:52 -0700</bug_when>
    <thetext>*** Bug 214728 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684824</commentid>
    <comment_count>7</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-09-02 08:42:35 -0700</bug_when>
    <thetext>*** Bug 214520 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685116</commentid>
    <comment_count>8</comment_count>
      <attachid>407852</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-09-02 19:44:22 -0700</bug_when>
    <thetext>Created attachment 407852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685222</commentid>
    <comment_count>9</comment_count>
      <attachid>407874</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-09-03 02:55:46 -0700</bug_when>
    <thetext>Created attachment 407874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685227</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-03 04:22:23 -0700</bug_when>
    <thetext>Committed r266510: &lt;https://trac.webkit.org/changeset/266510&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407874.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407040</attachid>
            <date>2020-08-21 20:28:47 -0700</date>
            <delta_ts>2020-08-22 09:09:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215748-20200821202846.patch</filename>
            <type>text/plain</type>
            <size>30909</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2ZlMWIyYWNiZjE5ZDVh
M2MzMDY0NWVjODBjNjBmMjkyN2M5NzQ3OS4uNmViOTcwNWI1NDliZjIzNzM4NzFhOTg5YTc5Y2Jm
NTA5ZTBiNmFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTA4LTIxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBGaXggbmVz
dGVkIGlubGluZSBib3ggc2l6aW5nIGFuZCBwb3NpdGlvbmluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NzQ4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBzcGxpdHMgdGhlIGxpbmUg
Ym94IGNvbnN0cnVjdGlvbiBwcm9jZXNzIGludG8gYSBmZXcgZGlzdGluY3Qgc3RlcHMuCisgICAg
ICAgIDEuIENvbnN0cnVjdCB0aGUgaW5saW5lIGJveGVzIGFzIG5lZWRlZC4gVGhlcmUncyBhbHdh
eXMgYSByb290IGlubGluZSBib3guCisgICAgICAgIDIuIFNpemUgdGhlbSBieSB0YWtpbmcgdGhl
IHZlcnRpY2FsIGFsaWdubWVudCBpbnRvIGFjY291bnQKKyAgICAgICAgICAgLSBjaGlsZCBpbmxp
bmUgYm94ZXMgc3RyZXRjaCB0aGVpciBwYXJlbnQgaW5saW5lIGJveGVzIGluIG1vc3QgY2FzZXMg
KGRlcGVuZGluZyBvbiB0aGUgdmVydGljYWwtYWxpZ24gcHJvcGVydHkgdmFsdWUpLgorICAgICAg
ICAzLiBQb3NpdGlvbiB0aGUgaW5saW5lIGJveGVzIHJlbGF0aXZlIHRvIHRoZSBsaW5lIGJveCAK
KworICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjptX2lubGluZUZvcm1hdHRpbmdDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6aW5saW5lUmVjdEZvclRleHRSdW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpjb25zdHJ1Y3RJbmxpbmVC
b3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmNvbXB1dGVJbmxpbmVC
b3hlc0xvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojph
bGlnbklubGluZUJveGVzVmVydGljYWxseUFuZENvbXB1dGVMaW5lSGVpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6aW5saW5lQm94Rm9yTGF5b3V0Qm94IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6YWxpZ25WZXJ0aWNh
bGx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVM
aW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUJveDo6
c2V0TG9naWNhbFRvcCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGlu
ZUJveDo6c2V0TG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJv
eDo6SW5saW5lQm94OjpzZXRMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZUJveDo6SW5saW5lQm94OjpzZXRCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVCb3g6OmlubGluZUJveEZvckxheW91dEJveCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmlubGluZUJveEZvckxheW91dEJveCk6CisKIDIwMjAt
MDgtMTUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJ
RkNdIEFkZCBzdXBwb3J0IGZvciB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3AKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5j
cHAKaW5kZXggMTFiZDFhNjIxMDdkNTNjNmMzZmM4MDZkYjA0NGM5NzBhMGMxNjQ0Mi4uNDU1ZmQz
NWY3NWU1ZWE4NDM2MDBiZTRjYjYxMWFmMzg0YTE0MjYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAKQEAg
LTE2NSw3ICsxNjUsOCBAQCBMaW5lQm94OjpMaW5lQm94KGNvbnN0IElubGluZUZvcm1hdHRpbmdD
b250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgY29uc3QgSQogICAgICwgbV9pbmxpbmVG
b3JtYXR0aW5nQ29udGV4dChpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKIHsKICAgICBjb25zdHJ1
Y3RJbmxpbmVCb3hlcyhydW5zLCBpc0xpbmVWaXN1YWxseUVtcHR5KTsKLSAgICBhbGlnblZlcnRp
Y2FsbHkoKTsKKyAgICBjb21wdXRlSW5saW5lQm94ZXNMb2dpY2FsSGVpZ2h0KCk7CisgICAgYWxp
Z25JbmxpbmVCb3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUhlaWdodCgpOwogICAgIG1fc2Ny
b2xsYWJsZU92ZXJmbG93ID0gbV9yZWN0OwogICAgIG1fc2Nyb2xsYWJsZU92ZXJmbG93LmV4cGFu
ZFRvQ29udGFpbihtX3Jvb3RJbmxpbmVCb3gubG9naWNhbFJlY3QoKSk7CiAgICAgZm9yIChhdXRv
JiBpbmxpbmVCb3hFbnRyeSA6IG1faW5saW5lQm94UmVjdE1hcCkKQEAgLTE3MywzNyArMTc0LDM1
IEBAIExpbmVCb3g6OkxpbmVCb3goY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGlubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LCBjb25zdCBJCiAgICAgbV9saW5lQWxpZ25tZW50T2Zmc2V0ID0g
aG9yaXpvbnRhbEFsaWdubWVudE9mZnNldChydW5zLCBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5y
b290KCkuc3R5bGUoKS50ZXh0QWxpZ24oKSwgbG9naWNhbFdpZHRoLCBpc0xhc3RMaW5lV2l0aElu
bGluZUNvbnRlbnQpOwogfQogCi1jb25zdCBMaW5lQm94OjpJbmxpbmVCb3gmIExpbmVCb3g6Omlu
bGluZUJveEZvckxheW91dEJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKLXsKLSAgICBB
U1NFUlQoJmxheW91dEJveCAhPSAmZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCkpOwotICAgIHJl
dHVybiAqbV9pbmxpbmVCb3hSZWN0TWFwLmdldCgmbGF5b3V0Qm94KTsKLX0KLQogRGlzcGxheTo6
SW5saW5lUmVjdCBMaW5lQm94OjppbmxpbmVSZWN0Rm9yVGV4dFJ1bihjb25zdCBMaW5lQnVpbGRl
cjo6UnVuJiBydW4pIGNvbnN0CiB7CiAgICAgQVNTRVJUKHJ1bi5pc1RleHQoKSB8fCBydW4uaXNM
aW5lQnJlYWsoKSk7CiAgICAgYXV0byBob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0ID0gbV9saW5l
QWxpZ25tZW50T2Zmc2V0LnZhbHVlT3IoSW5saW5lTGF5b3V0VW5pdCB7IH0pOwotICAgIGF1dG8g
aW5saW5lQm94UmVjdCA9IG1fcm9vdElubGluZUJveC5sb2dpY2FsUmVjdCgpOwotICAgIGlmICgm
cnVuLmxheW91dEJveCgpLnBhcmVudCgpICE9ICZmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKSkK
LSAgICAgICAgaW5saW5lQm94UmVjdCA9IG1faW5saW5lQm94UmVjdE1hcC5nZXQoJnJ1bi5sYXlv
dXRCb3goKS5wYXJlbnQoKSktPmxvZ2ljYWxSZWN0KCk7Ci0gICAgcmV0dXJuIHsgaW5saW5lQm94
UmVjdC50b3AoKSwgaG9yaXpvbnRhbEFsaWdubWVudE9mZnNldCArIHJ1bi5sb2dpY2FsTGVmdCgp
LCBydW4ubG9naWNhbFdpZHRoKCksIGlubGluZUJveFJlY3QuaGVpZ2h0KCkgfTsKKyAgICBhdXRv
JiBsYXlvdXRCb3ggPSBydW4ubGF5b3V0Qm94KCk7CisgICAgYXV0byYgcGFyZW50SW5saW5lQm94
ID0gaW5saW5lQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5wYXJlbnQoKSk7CisgICAgYXV0byBp
bmxpbmVCb3hSZWN0ID0gcGFyZW50SW5saW5lQm94LmxvZ2ljYWxSZWN0KCk7CisgICAgcmV0dXJu
IHsgaW5saW5lQm94UmVjdC50b3AoKSArIHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gbGF5
b3V0Qm94LnN0eWxlKCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSwgaG9yaXpvbnRhbEFsaWdubWVu
dE9mZnNldCArIHJ1bi5sb2dpY2FsTGVmdCgpLCBydW4ubG9naWNhbFdpZHRoKCksIGlubGluZUJv
eFJlY3QuaGVpZ2h0KCkgfTsKIH0KIAogdm9pZCBMaW5lQm94Ojpjb25zdHJ1Y3RJbmxpbmVCb3hl
cyhjb25zdCBMaW5lQnVpbGRlcjo6UnVuTGlzdCYgcnVucywgSXNMaW5lVmlzdWFsbHlFbXB0eSBp
c0xpbmVWaXN1YWxseUVtcHR5KQogewotICAgIGF1dG8gaW5saW5lQm94SGFzSW1hZ2luYXJ5U3Ry
dXQgPSAhbGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKTsKLSAgICBhdXRvIGlubGluZUJveElz
VmlzdWFsbHlFbXB0eSA9ICFpbmxpbmVCb3hIYXNJbWFnaW5hcnlTdHJ1dCB8fCBpc0xpbmVWaXN1
YWxseUVtcHR5ID09IElzTGluZVZpc3VhbGx5RW1wdHk6OlllcyA/IElubGluZUJveDo6SXNWaXN1
YWxseUVtcHR5OjpZZXMgOiBJbmxpbmVCb3g6OklzVmlzdWFsbHlFbXB0eTo6Tm87Ci0gICAgLy8g
RklYTUU6IENhbid0IHVzZSBmbG9hdCBmb250IG1ldHJpYyB2YWx1ZXMgYmVjYXVzZSBvZiAtPiBm
bG9hdCBsaW5lU3BhY2luZyA9IGxyb3VuZGYoYXNjZW50KSArIGxyb3VuZGYoZGVzY2VudCkgKyBs
cm91bmRmKGxpbmVHYXApIGluIEZvbnRDb2NvYS5tbQotICAgIGF1dG8mIGZvbnRNZXRyaWNzID0g
Zm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCkuc3R5bGUoKS5mb250TWV0cmljcygpOwotICAgIGF1
dG8gcm9vdElubGluZVJlY3QgPSBEaXNwbGF5OjpJbmxpbmVSZWN0IHsgeyB9LCB7IH0sIGxvZ2lj
YWxXaWR0aCgpLCBmb250TWV0cmljcy5mbG9hdExpbmVTcGFjaW5nKCkgfTsKLSAgICBhdXRvIHJv
b3RJbmxpbmVCYXNlbGluZSA9IHJvdW5kZihmb250TWV0cmljcy5mbG9hdEFzY2VudCgpKTsKLSAg
ICBhdXRvIHJvb3RJbmxpbmVEZXNjZW50ID0gcm91bmRmKGZvbnRNZXRyaWNzLmZsb2F0RGVzY2Vu
dCgpKTsKLSAgICBtX3Jvb3RJbmxpbmVCb3ggPSBJbmxpbmVCb3ggeyBmb3JtYXR0aW5nQ29udGV4
dCgpLnJvb3QoKSwgcm9vdElubGluZVJlY3QsIHJvb3RJbmxpbmVCYXNlbGluZSwgcm9vdElubGlu
ZURlc2NlbnQsIGlubGluZUJveElzVmlzdWFsbHlFbXB0eSB9OworICAgIGF1dG8gY29uc3RydWN0
Um9vdElubGluZUJveCA9IFsmXSB7CisgICAgICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gZm9ybWF0
dGluZ0NvbnRleHQoKS5yb290KCkuc3R5bGUoKS5mb250TWV0cmljcygpOworICAgICAgICBhdXRv
IHJvb3RMaW5lQm94TG9naWNhbEhlaWdodCA9IGZvbnRNZXRyaWNzLmZsb2F0TGluZVNwYWNpbmco
KTsKKyAgICAgICAgYXV0byByb290SW5saW5lUmVjdCA9IERpc3BsYXk6OklubGluZVJlY3QgeyB7
IH0sIHsgfSwgbG9naWNhbFdpZHRoKCksIHJvb3RMaW5lQm94TG9naWNhbEhlaWdodCB9OworICAg
ICAgICAvLyBGSVhNRTogQ2FuJ3QgdXNlIGZsb2F0IGZvbnQgbWV0cmljIHZhbHVlcyBiZWNhdXNl
IG9mIC0+IGZsb2F0IGxpbmVTcGFjaW5nID0gbHJvdW5kZihhc2NlbnQpICsgbHJvdW5kZihkZXNj
ZW50KSArIGxyb3VuZGYobGluZUdhcCkgaW4gRm9udENvY29hLm1tCisgICAgICAgIGF1dG8gcm9v
dElubGluZUJhc2VsaW5lID0gcm91bmRmKGZvbnRNZXRyaWNzLmZsb2F0QXNjZW50KCkpOworICAg
ICAgICBhdXRvIHJvb3RJbmxpbmVEZXNjZW50ID0gcm91bmRmKGZvbnRNZXRyaWNzLmZsb2F0RGVz
Y2VudCgpKTsKKyAgICAgICAgYXV0byBpbmxpbmVCb3hIYXNJbWFnaW5hcnlTdHJ1dCA9ICFsYXlv
dXRTdGF0ZSgpLmluUXVpcmtzTW9kZSgpOworICAgICAgICBhdXRvIHJvb3RJbmxpbmVCb3hJc0lu
aXRpYWxseVZpc3VhbGx5RW1wdHkgPSAhaW5saW5lQm94SGFzSW1hZ2luYXJ5U3RydXQgfHwgaXNM
aW5lVmlzdWFsbHlFbXB0eSA9PSBJc0xpbmVWaXN1YWxseUVtcHR5OjpZZXMgPyBJbmxpbmVCb3g6
OklzVmlzdWFsbHlFbXB0eTo6WWVzIDogSW5saW5lQm94OjpJc1Zpc3VhbGx5RW1wdHk6Ok5vOwor
CisgICAgICAgIG1fcm9vdElubGluZUJveCA9IElubGluZUJveCB7IGZvcm1hdHRpbmdDb250ZXh0
KCkucm9vdCgpLCByb290SW5saW5lUmVjdCwgcm9vdElubGluZUJhc2VsaW5lLCByb290SW5saW5l
RGVzY2VudCwgcm9vdElubGluZUJveElzSW5pdGlhbGx5VmlzdWFsbHlFbXB0eSB9OworICAgICAg
ICBtX2lubGluZUJveFJlY3RNYXAuc2V0KCZmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKSwgJm1f
cm9vdElubGluZUJveCk7CisgICAgfTsKKyAgICBjb25zdHJ1Y3RSb290SW5saW5lQm94KCk7CiAK
LSAgICBhdXRvIGhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQgPSBtX2xpbmVBbGlnbm1lbnRPZmZz
ZXQudmFsdWVPcihJbmxpbmVMYXlvdXRVbml0IHsgfSk7CiAgICAgZm9yIChhdXRvJiBydW4gOiBy
dW5zKSB7CiAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IHJ1bi5sYXlvdXRCb3goKTsKLSAgICAg
ICAgYXV0byBydW5Mb2dpY2FsTGVmdCA9IGhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQgKyBydW4u
bG9naWNhbExlZnQoKTsKICAgICAgICAgaWYgKHJ1bi5pc0JveCgpKSB7CiAgICAgICAgICAgICBh
dXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5
b3V0Qm94KTsKICAgICAgICAgICAgIGlmIChsYXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgpICYm
IGxheW91dEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKQEAgLTIy
NCwyOCArMjIzLDI4IEBAIHZvaWQgTGluZUJveDo6Y29uc3RydWN0SW5saW5lQm94ZXMoY29uc3Qg
TGluZUJ1aWxkZXI6OlJ1bkxpc3QmIHJ1bnMsIElzTGluZVZpc3VhCiAgICAgICAgICAgICAgICAg
Ly8gICAgIC0tLS0tfC18LXwtLS0tLS0tLS0tIDwtIGJhc2VsaW5lCiAgICAgICAgICAgICAgICAg
Ly8KICAgICAgICAgICAgICAgICBhdXRvIGFkanVzdGVkQmFzZWxpbmUgPSBib3hHZW9tZXRyeS5t
YXJnaW5CZWZvcmUoKSArIGJveEdlb21ldHJ5LmJvcmRlclRvcCgpICsgYm94R2VvbWV0cnkucGFk
ZGluZ1RvcCgpLnZhbHVlT3IoMCkgKyBpbmxpbmVCbG9ja0Jhc2VsaW5lOwotICAgICAgICAgICAg
ICAgIGF1dG8gaW5saW5lQm94UmVjdCA9IERpc3BsYXk6OklubGluZVJlY3QgeyB7IH0sIHJ1bkxv
Z2ljYWxMZWZ0LCBydW4ubG9naWNhbFdpZHRoKCksIGJveEdlb21ldHJ5Lm1hcmdpbkJveEhlaWdo
dCgpIH07CisgICAgICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hSZWN0ID0gRGlzcGxheTo6SW5s
aW5lUmVjdCB7IHsgfSwgcnVuLmxvZ2ljYWxMZWZ0KCksIHJ1bi5sb2dpY2FsV2lkdGgoKSwgYm94
R2VvbWV0cnkubWFyZ2luQm94SGVpZ2h0KCkgfTsKICAgICAgICAgICAgICAgICBhdXRvIGlubGlu
ZUJveCA9IG1ha2VVbmlxdWU8SW5saW5lQm94PihsYXlvdXRCb3gsIGlubGluZUJveFJlY3QsIGFk
anVzdGVkQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgIG1faW5saW5lQm94TGlzdC5hcHBlbmQo
aW5saW5lQm94LmdldCgpKTsKLSAgICAgICAgICAgICAgICBtX2lubGluZUJveFJlY3RNYXAuc2V0
KCZsYXlvdXRCb3gsIFdURk1vdmUoaW5saW5lQm94KSk7CisgICAgICAgICAgICAgICAgbV9pbmxp
bmVCb3hSZWN0TWFwLnNldCgmbGF5b3V0Qm94LCBpbmxpbmVCb3guZ2V0KCkpOworICAgICAgICAg
ICAgICAgIG1faW5saW5lQm94TGlzdC5hcHBlbmQoV1RGTW92ZShpbmxpbmVCb3gpKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgYXV0byBydW5IZWlnaHQgPSBib3hHZW9t
ZXRyeS5tYXJnaW5Cb3hIZWlnaHQoKTsKLSAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJveFJl
Y3QgPSBEaXNwbGF5OjpJbmxpbmVSZWN0IHsgeyB9LCBydW5Mb2dpY2FsTGVmdCwgcnVuLmxvZ2lj
YWxXaWR0aCgpLCBydW5IZWlnaHQgfTsKKyAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJveFJl
Y3QgPSBEaXNwbGF5OjpJbmxpbmVSZWN0IHsgeyB9LCBydW4ubG9naWNhbExlZnQoKSwgcnVuLmxv
Z2ljYWxXaWR0aCgpLCBydW5IZWlnaHQgfTsKICAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJv
eCA9IG1ha2VVbmlxdWU8SW5saW5lQm94PihsYXlvdXRCb3gsIGlubGluZUJveFJlY3QsIHJ1bkhl
aWdodCk7Ci0gICAgICAgICAgICAgICAgbV9pbmxpbmVCb3hMaXN0LmFwcGVuZChpbmxpbmVCb3gu
Z2V0KCkpOwotICAgICAgICAgICAgICAgIG1faW5saW5lQm94UmVjdE1hcC5zZXQoJmxheW91dEJv
eCwgV1RGTW92ZShpbmxpbmVCb3gpKTsKKyAgICAgICAgICAgICAgICBtX2lubGluZUJveFJlY3RN
YXAuc2V0KCZsYXlvdXRCb3gsIGlubGluZUJveC5nZXQoKSk7CisgICAgICAgICAgICAgICAgbV9p
bmxpbmVCb3hMaXN0LmFwcGVuZChXVEZNb3ZlKGlubGluZUJveCkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKHJ1bi5pc0NvbnRhaW5lclN0YXJ0KCkpIHsKLSAgICAgICAgICAg
IGF1dG8gaW5pdGlhbFdpZHRoID0gbG9naWNhbFdpZHRoKCkgLSBydW5Mb2dpY2FsTGVmdDsKKyAg
ICAgICAgICAgIGF1dG8gaW5pdGlhbFdpZHRoID0gbG9naWNhbFdpZHRoKCkgLSBydW4ubG9naWNh
bExlZnQoKTsKICAgICAgICAgICAgIEFTU0VSVChpbml0aWFsV2lkdGggPj0gMCk7CiAgICAgICAg
ICAgICBhdXRvJiBmb250TWV0cmljcyA9IGxheW91dEJveC5zdHlsZSgpLmZvbnRNZXRyaWNzKCk7
CiAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxIZWlnaHQgPSBmb250TWV0cmljcy5mbG9hdExpbmVT
cGFjaW5nKCk7CiAgICAgICAgICAgICBhdXRvIGJhc2VsaW5lID0gcm91bmRmKGhhbGZMZWFkaW5n
TWV0cmljcyhmb250TWV0cmljcywgbG9naWNhbEhlaWdodCkuYXNjZW50KTsKICAgICAgICAgICAg
IGF1dG8gZGVzY2VudCA9IHJvdW5kZihmb250TWV0cmljcy5mbG9hdERlc2NlbnQoKSk7Ci0gICAg
ICAgICAgICBhdXRvIGlubGluZUJveFJlY3QgPSBEaXNwbGF5OjpJbmxpbmVSZWN0IHsgeyB9LCBy
dW5Mb2dpY2FsTGVmdCwgaW5pdGlhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0IH07Ci0gICAgICAgICAg
ICBhdXRvIGlubGluZUJveCA9IG1ha2VVbmlxdWU8SW5saW5lQm94PihsYXlvdXRCb3gsIGlubGlu
ZUJveFJlY3QsIGJhc2VsaW5lLCBkZXNjZW50LCBpbmxpbmVCb3hJc1Zpc3VhbGx5RW1wdHkpOwot
ICAgICAgICAgICAgbV9pbmxpbmVCb3hMaXN0LmFwcGVuZChpbmxpbmVCb3guZ2V0KCkpOwotICAg
ICAgICAgICAgbV9pbmxpbmVCb3hSZWN0TWFwLnNldCgmbGF5b3V0Qm94LCBXVEZNb3ZlKGlubGlu
ZUJveCkpOworICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hSZWN0ID0gRGlzcGxheTo6SW5saW5l
UmVjdCB7IHsgfSwgcnVuLmxvZ2ljYWxMZWZ0KCksIGluaXRpYWxXaWR0aCwgbG9naWNhbEhlaWdo
dCB9OworICAgICAgICAgICAgYXV0byBpbmxpbmVCb3ggPSBtYWtlVW5pcXVlPElubGluZUJveD4o
bGF5b3V0Qm94LCBpbmxpbmVCb3hSZWN0LCBiYXNlbGluZSwgZGVzY2VudCwgSW5saW5lQm94OjpJ
c1Zpc3VhbGx5RW1wdHk6Olllcyk7CisgICAgICAgICAgICBtX2lubGluZUJveFJlY3RNYXAuc2V0
KCZsYXlvdXRCb3gsIGlubGluZUJveC5nZXQoKSk7CisgICAgICAgICAgICBtX2lubGluZUJveExp
c3QuYXBwZW5kKFdURk1vdmUoaW5saW5lQm94KSk7CiAgICAgICAgIH0gZWxzZSBpZiAocnVuLmlz
Q29udGFpbmVyRW5kKCkpIHsKICAgICAgICAgICAgIC8vIEFkanVzdCB0aGUgbG9naWNhbCB3aWR0
aCB3aGVuIHRoZSBpbmxpbmUgbGV2ZWwgY29udGFpbmVyIGNsb3NlcyBvbiB0aGlzIGxpbmUuCiAg
ICAgICAgICAgICBhdXRvJiBpbmxpbmVCb3ggPSAqbV9pbmxpbmVCb3hSZWN0TWFwLmdldCgmbGF5
b3V0Qm94KTsKQEAgLTI1NywxMzggKzI1NiwxNjQgQEAgdm9pZCBMaW5lQm94Ojpjb25zdHJ1Y3RJ
bmxpbmVCb3hlcyhjb25zdCBMaW5lQnVpbGRlcjo6UnVuTGlzdCYgcnVucywgSXNMaW5lVmlzdWEK
ICAgICB9CiB9CiAKLXZvaWQgTGluZUJveDo6YWxpZ25WZXJ0aWNhbGx5KCkKK3ZvaWQgTGluZUJv
eDo6Y29tcHV0ZUlubGluZUJveGVzTG9naWNhbEhlaWdodCgpCiB7Ci0gICAgLy8gMS4gQ29tcHV0
ZSBsaW5lIGJveCBoZWlnaHQvYWxpZ25tZW50IGJhc2VsaW5lIGJ5IHBsYWNpbmcgdGhlIGlubGlu
ZSBib3hlcyB2ZXJ0aWNhbGx5LgotICAgIC8vIDIuIEFkanVzdCB0aGUgaW5saW5lIGJveCB2ZXJ0
aWNhbCBwb3NpdGlvbi4KLSAgICBhdXRvJiByb290U3R5bGUgPSBmb3JtYXR0aW5nQ29udGV4dCgp
LnJvb3QoKS5zdHlsZSgpOwotICAgIGF1dG8gcmVjb21tZW5kZWRMaW5lQm94SGVpZ2h0ID0gV1RG
OjpPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7IH07Ci0gICAgaWYgKCFyb290U3R5bGUubGlu
ZUhlaWdodCgpLmlzTmVnYXRpdmUoKSkKLSAgICAgICAgcmVjb21tZW5kZWRMaW5lQm94SGVpZ2h0
ID0gcm9vdFN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpOwotCi0gICAgYXV0byBjb250ZW50TG9n
aWNhbEhlaWdodCA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgIGF1dG8gYWxpZ25tZW50QmFz
ZWxpbmUgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKKyAgICAvLyBCeSB0cmF2ZXJzaW5nIHRoZSBp
bmxpbmUgYm94IGxpc3QgYmFja3dhcmRzLCBpdCdzIGd1YXJhbnRlZWQgdGhhdCBkZXNjZW5kYW50
IGlubGluZSBib3hlcyBhcmUgc2l6ZWQgZmlyc3QuCisgICAgZm9yIChhdXRvJiBpbmxpbmVCb3gg
OiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKG1faW5saW5lQm94TGlzdCkpIHsKKyAgICAgICAgaWYg
KGlubGluZUJveC0+aXNWaXN1YWxseUVtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgIHN0cnVjdCBMb2dpY2FsVG9wQW5kVmVydGljYWxPdmVyZmxvdyB7Ci0gICAgICAgIElubGlu
ZUxheW91dFVuaXQgbG9naWNhbFRvcCB7IH07Ci0gICAgICAgIElubGluZUxheW91dFVuaXQgdmVy
dGljYWxPdmVyZmxvdyB7IH07Ci0gICAgfTsKLSAgICBhdXRvIGNvbXB1dGVkTG9naWNhbFRvcEFu
ZFZlcnRpY2FsT3ZlcmZsb3cgPSBbJl0oY29uc3QgYXV0byYgaW5saW5lQm94LCBPcHRpb25hbDxW
ZXJ0aWNhbEFsaWduPiBvdmVycmlkZVZlcnRpY2FsQWxpZ25Nb2RlID0gV1RGOjpudWxsb3B0KSAt
PiBMb2dpY2FsVG9wQW5kVmVydGljYWxPdmVyZmxvdyB7Ci0gICAgICAgIGF1dG8mIGxheW91dEJv
eCA9IGlubGluZUJveC5sYXlvdXRCb3goKTsKLSAgICAgICAgYXV0byB2ZXJ0aWNhbEFsaWduTW9k
ZSA9IG92ZXJyaWRlVmVydGljYWxBbGlnbk1vZGUudmFsdWVPcihsYXlvdXRCb3guc3R5bGUoKS52
ZXJ0aWNhbEFsaWduKCkpOwotICAgICAgICBzd2l0Y2ggKHZlcnRpY2FsQWxpZ25Nb2RlKSB7Ci0g
ICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmU6IHsKLSAgICAgICAgICAgIGF1dG8g
aW5saW5lQm94TG9naWNhbFRvcCA9IGFsaWdubWVudEJhc2VsaW5lIC0gaW5saW5lQm94LmJhc2Vs
aW5lKCk7Ci0gICAgICAgICAgICByZXR1cm4geyBpbmxpbmVCb3hMb2dpY2FsVG9wLCBzdGQ6Om1h
eCgwLjBmLCAtaW5saW5lQm94TG9naWNhbFRvcCkgfTsKLSAgICAgICAgfQorICAgICAgICBhdXRv
JiBsYXlvdXRCb3ggPSBpbmxpbmVCb3gtPmxheW91dEJveCgpOworICAgICAgICBzd2l0Y2ggKGxh
eW91dEJveC5zdHlsZSgpLnZlcnRpY2FsQWxpZ24oKSkgewogICAgICAgICBjYXNlIFZlcnRpY2Fs
QWxpZ246OlRvcDoKLSAgICAgICAgICAgIHJldHVybiB7IHsgfSwgc3RkOjptYXgoMC4wZiwgaW5s
aW5lQm94LmxvZ2ljYWxIZWlnaHQoKSAtIGNvbnRlbnRMb2dpY2FsSGVpZ2h0KSB9OwotICAgICAg
ICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRvbTogewotICAgICAgICAgICAgYXV0byBpbmxpbmVC
b3hMb2dpY2FsVG9wID0gY29udGVudExvZ2ljYWxIZWlnaHQgLSBpbmxpbmVCb3gubG9naWNhbEhl
aWdodCgpOwotICAgICAgICAgICAgcmV0dXJuIHsgaW5saW5lQm94TG9naWNhbFRvcCwgc3RkOjpt
YXgoMC4wZiwgLWlubGluZUJveExvZ2ljYWxUb3ApIH07CisgICAgICAgIGNhc2UgVmVydGljYWxB
bGlnbjo6Qm90dG9tOgorICAgICAgICAgICAgLy8gdG9wIGFuZCBib3R0b20gYWxpZ25tZW50cyBv
bmx5IHN0cmV0Y2ggdGhlIGxpbmUgYm94LiBUaGV5IGRvbid0IHN0cmV0Y2ggYW55IG9mIHRoZSBp
bmxpbmUgYm94ZXMsIG5vdCBldmVuIHRoZSByb290IGlubGluZSBib3guCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0VG9wOiB7CisgICAgICAgICAg
ICBhdXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBpbmxpbmVCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94
LnBhcmVudCgpKTsKKyAgICAgICAgICAgIGF1dG8gcGFyZW50VGV4dExvZ2ljYWxUb3AgPSBwYXJl
bnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIHBhcmVudElubGluZUJveC5sYXlvdXRCb3goKS5zdHls
ZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCk7CisgICAgICAgICAgICBwYXJlbnRJbmxpbmVCb3gu
c2V0TG9naWNhbEhlaWdodChzdGQ6Om1heChwYXJlbnRJbmxpbmVCb3gubG9naWNhbEhlaWdodCgp
LCBwYXJlbnRUZXh0TG9naWNhbFRvcCArIGlubGluZUJveC0+bG9naWNhbEhlaWdodCgpKSk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246
Ok1pZGRsZTogewotICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hMb2dpY2FsVG9wID0gSW5saW5l
TGF5b3V0VW5pdCB7IH07Ci0gICAgICAgICAgICBpZiAoJmxheW91dEJveC5wYXJlbnQoKSA9PSAm
Zm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCkpCi0gICAgICAgICAgICAgICAgaW5saW5lQm94TG9n
aWNhbFRvcCA9IGFsaWdubWVudEJhc2VsaW5lIC0gKGlubGluZUJveC5sb2dpY2FsSGVpZ2h0KCkg
LyAyICsgZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCkuc3R5bGUoKS5mb250TWV0cmljcygpLnhI
ZWlnaHQoKSAvIDIpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXV0byYg
cGFyZW50SW5saW5lQm94ID0gaW5saW5lQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5wYXJlbnQo
KSk7Ci0gICAgICAgICAgICAgICAgaW5saW5lQm94TG9naWNhbFRvcCA9IHN0ZDo6bWF4KDAuMGYs
IHBhcmVudElubGluZUJveC5sb2dpY2FsVG9wKCkpICsgKHBhcmVudElubGluZUJveC5iYXNlbGlu
ZSgpIC0gKGlubGluZUJveC5sb2dpY2FsSGVpZ2h0KCkgLyAyICsgbGF5b3V0Qm94LnBhcmVudCgp
LnN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyKSk7CisgICAgICAgIGNhc2UgVmVy
dGljYWxBbGlnbjo6VGV4dEJvdHRvbTogeworICAgICAgICAgICAgYXV0byYgcGFyZW50SW5saW5l
Qm94ID0gaW5saW5lQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5wYXJlbnQoKSk7CisgICAgICAg
ICAgICBhdXRvIHBhcmVudFRleHRMb2dpY2FsQm90dG9tID0gcGFyZW50SW5saW5lQm94LmJhc2Vs
aW5lKCkgKyBwYXJlbnRJbmxpbmVCb3guZGVzY2VudCgpLnZhbHVlT3IoSW5saW5lTGF5b3V0VW5p
dCB7IH0pOworICAgICAgICAgICAgYXV0byBvdmVyZmxvdyA9IHN0ZDo6bWF4KDAuMGYsIGlubGlu
ZUJveC0+bG9naWNhbEhlaWdodCgpIC0gcGFyZW50VGV4dExvZ2ljYWxCb3R0b20pOworICAgICAg
ICAgICAgaWYgKG92ZXJmbG93KSB7CisgICAgICAgICAgICAgICAgLy8gVGV4dEJvdHRvbSBwdXNo
ZXMgdGhlIGJhc2VsaW5lIGRvd253YXJkIHRoZSBzYW1lIHdheSAnYm90dG9tJyBkb2VzLgorICAg
ICAgICAgICAgICAgIHBhcmVudElubGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KHBhcmVudElubGlu
ZUJveC5sb2dpY2FsSGVpZ2h0KCkgKyBvdmVyZmxvdyk7CisgICAgICAgICAgICAgICAgcGFyZW50
SW5saW5lQm94LnNldEJhc2VsaW5lKHBhcmVudElubGluZUJveC5iYXNlbGluZSgpICsgb3ZlcmZs
b3cpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHsgaW5saW5lQm94TG9naWNh
bFRvcCwgc3RkOjptYXgoMC4wZiwgLWlubGluZUJveExvZ2ljYWxUb3ApIH07CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRUb3A6
IHsKLSAgICAgICAgICAgIGF1dG8mIHBhcmVudExheW91dEJveCA9IGxheW91dEJveC5wYXJlbnQo
KTsKLSAgICAgICAgICAgIGF1dG8gaW5saW5lQm94TG9naWNhbFRvcCA9ICZwYXJlbnRMYXlvdXRC
b3ggPT0gJmZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpID8gbV9yb290SW5saW5lQm94LmxvZ2lj
YWxUb3AoKSA6IGlubGluZUJveEZvckxheW91dEJveChsYXlvdXRCb3gucGFyZW50KCkpLmxvZ2lj
YWxUb3AoKTsKLSAgICAgICAgICAgIGF1dG8gb3ZlcmZsb3cgPSBzdGQ6Om1heCgwLjBmLCAtaW5s
aW5lQm94TG9naWNhbFRvcCkgKyBpbmxpbmVCb3gubG9naWNhbEhlaWdodCgpICAtIGNvbnRlbnRM
b2dpY2FsSGVpZ2h0OwotICAgICAgICAgICAgcmV0dXJuIHsgaW5saW5lQm94TG9naWNhbFRvcCwg
c3RkOjptYXgoMC4wZiwgb3ZlcmZsb3cpIH07CisgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6
QmFzZWxpbmU6IHsKKyAgICAgICAgICAgIGF1dG8mIHBhcmVudElubGluZUJveCA9IGlubGluZUJv
eEZvckxheW91dEJveChsYXlvdXRCb3gucGFyZW50KCkpOworICAgICAgICAgICAgYXV0byBiYXNl
bGluZU92ZXJmbG93ID0gc3RkOjptYXgoMC4wZiwgaW5saW5lQm94LT5iYXNlbGluZSgpIC0gcGFy
ZW50SW5saW5lQm94LmJhc2VsaW5lKCkpOworICAgICAgICAgICAgaWYgKGJhc2VsaW5lT3ZlcmZs
b3cpIHsKKyAgICAgICAgICAgICAgICBwYXJlbnRJbmxpbmVCb3guc2V0QmFzZWxpbmUocGFyZW50
SW5saW5lQm94LmJhc2VsaW5lKCkgKyBiYXNlbGluZU92ZXJmbG93KTsKKyAgICAgICAgICAgICAg
ICBwYXJlbnRJbmxpbmVCb3guc2V0TG9naWNhbEhlaWdodChwYXJlbnRJbmxpbmVCb3gubG9naWNh
bEhlaWdodCgpICsgYmFzZWxpbmVPdmVyZmxvdyk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBhdXRvIHBhcmVudExpbmVCb3hCZWxvd0Jhc2VsaW5lID0gcGFyZW50SW5saW5lQm94LmxvZ2lj
YWxIZWlnaHQoKSAtIHBhcmVudElubGluZUJveC5iYXNlbGluZSgpOworICAgICAgICAgICAgYXV0
byBpbmxpbmVCb3hCZWxvd0Jhc2VsaW5lID0gaW5saW5lQm94LT5sb2dpY2FsSGVpZ2h0KCkgLSBp
bmxpbmVCb3gtPmJhc2VsaW5lKCk7CisgICAgICAgICAgICBhdXRvIGJlbG93QmFzZWxpbmVPdmVy
ZmxvdyA9IHN0ZDo6bWF4KDAuMGYsIGlubGluZUJveEJlbG93QmFzZWxpbmUgLSBwYXJlbnRMaW5l
Qm94QmVsb3dCYXNlbGluZSk7CisgICAgICAgICAgICBpZiAoYmVsb3dCYXNlbGluZU92ZXJmbG93
KQorICAgICAgICAgICAgICAgIHBhcmVudElubGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KHBhcmVu
dElubGluZUJveC5sb2dpY2FsSGVpZ2h0KCkgKyBiZWxvd0Jhc2VsaW5lT3ZlcmZsb3cpOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpU
ZXh0Qm90dG9tOiB7CisgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TWlkZGxlOiB7CiAgICAg
ICAgICAgICBhdXRvJiBwYXJlbnRMYXlvdXRCb3ggPSBsYXlvdXRCb3gucGFyZW50KCk7Ci0gICAg
ICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExvZ2ljYWxCb3R0b20gPSAmcGFyZW50TGF5b3V0
Qm94ID09ICZmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKSA/IG1fcm9vdElubGluZUJveC5sb2dp
Y2FsQm90dG9tKCkgOiBpbmxpbmVCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94LnBhcmVudCgpKS5s
b2dpY2FsQm90dG9tKCk7Ci0gICAgICAgICAgICBhdXRvIGlubGluZUJveExvZ2ljYWxUb3AgPSBw
YXJlbnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tIC0gaW5saW5lQm94LmxvZ2ljYWxIZWlnaHQoKTsK
LSAgICAgICAgICAgIGF1dG8gb3ZlcmZsb3cgPSBzdGQ6Om1heCgwLjBmLCAtaW5saW5lQm94TG9n
aWNhbFRvcCkgKyBpbmxpbmVCb3gubG9naWNhbEhlaWdodCgpICAtIGNvbnRlbnRMb2dpY2FsSGVp
Z2h0OwotICAgICAgICAgICAgcmV0dXJuIHsgaW5saW5lQm94TG9naWNhbFRvcCwgc3RkOjptYXgo
MC4wZiwgb3ZlcmZsb3cpIH07CisgICAgICAgICAgICBhdXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBp
bmxpbmVCb3hGb3JMYXlvdXRCb3gocGFyZW50TGF5b3V0Qm94KTsKKyAgICAgICAgICAgIGF1dG8g
bG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gKGlubGluZUJveC0+bG9n
aWNhbEhlaWdodCgpIC8gMiArIHBhcmVudExheW91dEJveC5zdHlsZSgpLmZvbnRNZXRyaWNzKCku
eEhlaWdodCgpIC8gMik7CisgICAgICAgICAgICBpZiAobG9naWNhbFRvcCA8IDApIHsKKyAgICAg
ICAgICAgICAgICBhdXRvIG92ZXJmbG93ID0gLWxvZ2ljYWxUb3A7CisgICAgICAgICAgICAgICAg
Ly8gQ2hpbGQgaW5saW5lIGJveCB3aXRoIG1pZGRsZSBhbGlnbm1lbnQgcHVzaGVzIHRoZSBiYXNl
bGluZSBkb3duIHdoZW4gb3ZlcmZsb3dzLiAKKyAgICAgICAgICAgICAgICBwYXJlbnRJbmxpbmVC
b3guc2V0QmFzZWxpbmUocGFyZW50SW5saW5lQm94LmJhc2VsaW5lKCkgKyBvdmVyZmxvdyk7Cisg
ICAgICAgICAgICAgICAgcGFyZW50SW5saW5lQm94LnNldExvZ2ljYWxIZWlnaHQocGFyZW50SW5s
aW5lQm94LmxvZ2ljYWxIZWlnaHQoKSArIG92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICBsb2dp
Y2FsVG9wID0geyB9OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXV0byBsb2dpY2FsQm90
dG9tID0gbG9naWNhbFRvcCArIGlubGluZUJveC0+bG9naWNhbEhlaWdodCgpOworICAgICAgICAg
ICAgcGFyZW50SW5saW5lQm94LnNldExvZ2ljYWxIZWlnaHQoc3RkOjptYXgocGFyZW50SW5saW5l
Qm94LmxvZ2ljYWxIZWlnaHQoKSwgbG9naWNhbEJvdHRvbSkpOworICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1Q
TEVNRU5URURfWUVUKCk7Ci0gICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTGluZUJveDo6YWxpZ25JbmxpbmVCb3hl
c1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUhlaWdodCgpCit7CisgICAgLy8gSW5saW5lIGJveGVz
IGFyZSBpbiB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gb2YgdGhlIGxpbmUgYm94IChhbmQgbm90IGlu
IHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGVpciBwYXJlbnRzKS4KKyAgICAvLyBTdGFydGlu
ZyB3aXRoIHRoZSByb290IGlubGluZSBib3gsIHBvc2l0aW9uIHRoZSBhbmNlc3RvcnMgZmlyc3Qg
c28gdGhhdCB0aGUgZGVzY2VuZGFudCBsaW5lIGJveGVzIHNlZSBhYnNvbHV0ZSB2ZXJ0aWNhbCBw
b3NpdGlvbnMuCisgICAgYXV0byBjb250ZW50TG9naWNhbEJvdHRvbSA9IElubGluZUxheW91dFVu
aXQgeyB9OworICAgIGF1dG8gYWxpZ25Sb290SW5saW5lQm94ID0gWyZdIHsKKyAgICAgICAgY29u
dGVudExvZ2ljYWxCb3R0b20gPSBtX3Jvb3RJbmxpbmVCb3gubG9naWNhbEhlaWdodCgpOworICAg
ICAgICBmb3IgKGF1dG8mIGlubGluZUJveCA6IG1faW5saW5lQm94TGlzdCkgeworICAgICAgICAg
ICAgYXV0byB2ZXJ0aWNhbEFsaWduID0gaW5saW5lQm94LT5sYXlvdXRCb3goKS5zdHlsZSgpLnZl
cnRpY2FsQWxpZ24oKTsKKyAgICAgICAgICAgIGlmICh2ZXJ0aWNhbEFsaWduID09IFZlcnRpY2Fs
QWxpZ246OkJvdHRvbSkgeworICAgICAgICAgICAgICAgIC8vIGJvdHRvbSBhbGlnbiBhbHdheXMg
cHVzaGVzIHRoZSByb290IGlubGluZSBib3ggZG93bndhcmRzLgorICAgICAgICAgICAgICAgIGF1
dG8gb3ZlcmZsb3cgPSBzdGQ6Om1heCgwLjBmLCBpbmxpbmVCb3gtPmxvZ2ljYWxCb3R0b20oKSAt
IG1fcm9vdElubGluZUJveC5sb2dpY2FsQm90dG9tKCkpOworICAgICAgICAgICAgICAgIG1fcm9v
dElubGluZUJveC5zZXRMb2dpY2FsVG9wKG1fcm9vdElubGluZUJveC5sb2dpY2FsVG9wKCkgKyBv
dmVyZmxvdyk7CisgICAgICAgICAgICAgICAgY29udGVudExvZ2ljYWxCb3R0b20gKz0gb3ZlcmZs
b3c7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHZlcnRpY2FsQWxpZ24gPT0gVmVydGljYWxBbGln
bjo6VG9wKQorICAgICAgICAgICAgICAgIGNvbnRlbnRMb2dpY2FsQm90dG9tID0gc3RkOjptYXgo
Y29udGVudExvZ2ljYWxCb3R0b20sIGlubGluZUJveC0+bG9naWNhbEhlaWdodCgpKTsKICAgICAg
ICAgfQogICAgIH07CisgICAgYWxpZ25Sb290SW5saW5lQm94KCk7CiAKLSAgICBhdXRvIGNvbXB1
dGVMaW5lQm94SGVpZ2h0ID0gWyZdKGF1dG8mIGlubGluZUJveCwgT3B0aW9uYWw8VmVydGljYWxB
bGlnbj4gb3ZlcnJpZGVWZXJ0aWNhbEFsaWduTW9kZSA9IFdURjo6bnVsbG9wdCkgewotICAgICAg
ICBhdXRvJiBsYXlvdXRCb3ggPSBpbmxpbmVCb3gubGF5b3V0Qm94KCk7Ci0gICAgICAgIGF1dG8g
dmVydGljYWxBbGlnbk1vZGUgPSBvdmVycmlkZVZlcnRpY2FsQWxpZ25Nb2RlLnZhbHVlT3IobGF5
b3V0Qm94LnN0eWxlKCkudmVydGljYWxBbGlnbigpKTsKLSAgICAgICAgYXV0byBsb2dpY2FsVG9w
QW5kVmVydGljYWxPdmVyZmxvdyA9IGNvbXB1dGVkTG9naWNhbFRvcEFuZFZlcnRpY2FsT3ZlcmZs
b3coaW5saW5lQm94LCB2ZXJ0aWNhbEFsaWduTW9kZSk7Ci0gICAgICAgIHN3aXRjaCAodmVydGlj
YWxBbGlnbk1vZGUpIHsKKyAgICBmb3IgKGF1dG8mIGlubGluZUJveCA6IG1faW5saW5lQm94TGlz
dCkgeworICAgICAgICBhdXRvIGlubGluZUJveExvZ2ljYWxUb3AgPSBJbmxpbmVMYXlvdXRVbml0
IHsgfTsKKyAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lQm94LT5sYXlvdXRCb3goKTsK
KyAgICAgICAgc3dpdGNoIChsYXlvdXRCb3guc3R5bGUoKS52ZXJ0aWNhbEFsaWduKCkpIHsKICAg
ICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZTogewotICAgICAgICAgICAgaWYgKGxv
Z2ljYWxUb3BBbmRWZXJ0aWNhbE92ZXJmbG93LnZlcnRpY2FsT3ZlcmZsb3cpIHsKLSAgICAgICAg
ICAgICAgICBjb250ZW50TG9naWNhbEhlaWdodCArPSBsb2dpY2FsVG9wQW5kVmVydGljYWxPdmVy
Zmxvdy52ZXJ0aWNhbE92ZXJmbG93OwotICAgICAgICAgICAgICAgIGFsaWdubWVudEJhc2VsaW5l
ICs9IGxvZ2ljYWxUb3BBbmRWZXJ0aWNhbE92ZXJmbG93LnZlcnRpY2FsT3ZlcmZsb3c7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBhdXRvIGlubGluZUJveExvZ2ljYWxCb3R0b20gPSBzdGQ6
Om1heCgwLjBmLCBsb2dpY2FsVG9wQW5kVmVydGljYWxPdmVyZmxvdy5sb2dpY2FsVG9wKSArIGlu
bGluZUJveC5sb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgICAgICBhdXRvIG92ZXJmbG93ID0gaW5s
aW5lQm94TG9naWNhbEJvdHRvbSAtIGNvbnRlbnRMb2dpY2FsSGVpZ2h0OwotICAgICAgICAgICAg
aWYgKG92ZXJmbG93ID4gMCkKLSAgICAgICAgICAgICAgICBjb250ZW50TG9naWNhbEhlaWdodCAr
PSBvdmVyZmxvdzsKKyAgICAgICAgICAgIGF1dG8mIHBhcmVudElubGluZUJveCA9IGlubGluZUJv
eEZvckxheW91dEJveChsYXlvdXRCb3gucGFyZW50KCkpOworICAgICAgICAgICAgaW5saW5lQm94
TG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5sb2dpY2FsVG9wKCkgKyBwYXJlbnRJbmxpbmVC
b3guYmFzZWxpbmUoKSAtIGlubGluZUJveC0+YmFzZWxpbmUoKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VG9wOiB7Ci0gICAgICAg
ICAgICAvLyB2ZXJ0aWNhbC1hbGlnbjogdG9wIHN0cmV0Y2hlcyB0aGUgbGluZSBidXQgbmV2ZXIg
cHVzaGVzIHRoZSBiYXNlbGluZSBkb3duLgotICAgICAgICAgICAgaWYgKGxvZ2ljYWxUb3BBbmRW
ZXJ0aWNhbE92ZXJmbG93LnZlcnRpY2FsT3ZlcmZsb3cpCi0gICAgICAgICAgICAgICAgY29udGVu
dExvZ2ljYWxIZWlnaHQgKz0gbG9naWNhbFRvcEFuZFZlcnRpY2FsT3ZlcmZsb3cudmVydGljYWxP
dmVyZmxvdzsKKyAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUb3A6CisgICAgICAgICAgICBp
bmxpbmVCb3hMb2dpY2FsVG9wID0gbG9naWNhbFRvcCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCb3R0b206IHsKLSAgICAgICAg
ICAgIC8vIHZlcnRpY2FsLWFsaWduOiBib3R0b20gc3RyZXRjaGVzIHRoZSBsaW5lIGFuZCBwdXNo
ZXMgdGhlIGJhc2VsaW5lIGRvd24gYXMgd2VsbC4KLSAgICAgICAgICAgIGlmIChsb2dpY2FsVG9w
QW5kVmVydGljYWxPdmVyZmxvdy52ZXJ0aWNhbE92ZXJmbG93KSB7Ci0gICAgICAgICAgICAgICAg
Y29udGVudExvZ2ljYWxIZWlnaHQgKz0gbG9naWNhbFRvcEFuZFZlcnRpY2FsT3ZlcmZsb3cudmVy
dGljYWxPdmVyZmxvdzsKLSAgICAgICAgICAgICAgICBhbGlnbm1lbnRCYXNlbGluZSArPSBsb2dp
Y2FsVG9wQW5kVmVydGljYWxPdmVyZmxvdy52ZXJ0aWNhbE92ZXJmbG93OwotICAgICAgICAgICAg
fQorICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRvbToKKyAgICAgICAgICAgIGlubGlu
ZUJveExvZ2ljYWxUb3AgPSBsb2dpY2FsQm90dG9tKCkgLSBpbmxpbmVCb3gtPmxvZ2ljYWxIZWln
aHQoKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAgICAgIGNhc2UgVmVydGlj
YWxBbGlnbjo6TWlkZGxlOiB7Ci0gICAgICAgICAgICBpZiAobG9naWNhbFRvcEFuZFZlcnRpY2Fs
T3ZlcmZsb3cudmVydGljYWxPdmVyZmxvdykgewotICAgICAgICAgICAgICAgIGNvbnRlbnRMb2dp
Y2FsSGVpZ2h0ICs9IGxvZ2ljYWxUb3BBbmRWZXJ0aWNhbE92ZXJmbG93LnZlcnRpY2FsT3ZlcmZs
b3c7Ci0gICAgICAgICAgICAgICAgYWxpZ25tZW50QmFzZWxpbmUgKz0gbG9naWNhbFRvcEFuZFZl
cnRpY2FsT3ZlcmZsb3cudmVydGljYWxPdmVyZmxvdzsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGF1dG8gaW5saW5lQm94TG9naWNhbEJvdHRvbSA9IHN0ZDo6bWF4KDAuMGYsIGxvZ2ljYWxU
b3BBbmRWZXJ0aWNhbE92ZXJmbG93LmxvZ2ljYWxUb3ApICsgaW5saW5lQm94LmxvZ2ljYWxIZWln
aHQoKTsKLSAgICAgICAgICAgIGF1dG8gb3ZlcmZsb3cgPSBpbmxpbmVCb3hMb2dpY2FsQm90dG9t
IC0gY29udGVudExvZ2ljYWxIZWlnaHQ7Ci0gICAgICAgICAgICBpZiAob3ZlcmZsb3cgPiAwKQot
ICAgICAgICAgICAgICAgIGNvbnRlbnRMb2dpY2FsSGVpZ2h0ICs9IG92ZXJmbG93OworICAgICAg
ICAgICAgYXV0byYgcGFyZW50TGF5b3V0Qm94ID0gbGF5b3V0Qm94LnBhcmVudCgpOworICAgICAg
ICAgICAgYXV0byYgcGFyZW50SW5saW5lQm94ID0gaW5saW5lQm94Rm9yTGF5b3V0Qm94KHBhcmVu
dExheW91dEJveCk7CisgICAgICAgICAgICBpbmxpbmVCb3hMb2dpY2FsVG9wID0gcGFyZW50SW5s
aW5lQm94LmxvZ2ljYWxUb3AoKSArIHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gKGlubGlu
ZUJveC0+bG9naWNhbEhlaWdodCgpIC8gMiArIHBhcmVudExheW91dEJveC5zdHlsZSgpLmZvbnRN
ZXRyaWNzKCkueEhlaWdodCgpIC8gMik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQot
ICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRUb3A6Ci0gICAgICAgICAgICBpZiAobG9n
aWNhbFRvcEFuZFZlcnRpY2FsT3ZlcmZsb3cudmVydGljYWxPdmVyZmxvdykKLSAgICAgICAgICAg
ICAgICBjb250ZW50TG9naWNhbEhlaWdodCArPSBsb2dpY2FsVG9wQW5kVmVydGljYWxPdmVyZmxv
dy52ZXJ0aWNhbE92ZXJmbG93OworICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRUb3A6
IHsKKyAgICAgICAgICAgIGF1dG8mIHBhcmVudExheW91dEJveCA9IGxheW91dEJveC5wYXJlbnQo
KTsKKyAgICAgICAgICAgIGF1dG8mIHBhcmVudElubGluZUJveCA9IGlubGluZUJveEZvckxheW91
dEJveChwYXJlbnRMYXlvdXRCb3gpOworICAgICAgICAgICAgaW5saW5lQm94TG9naWNhbFRvcCA9
IHBhcmVudElubGluZUJveC5sb2dpY2FsVG9wKCkgKyBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUo
KSAtIHBhcmVudExheW91dEJveC5zdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCk7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9tOgot
ICAgICAgICAgICAgaWYgKGxvZ2ljYWxUb3BBbmRWZXJ0aWNhbE92ZXJmbG93LnZlcnRpY2FsT3Zl
cmZsb3cpCi0gICAgICAgICAgICAgICAgY29udGVudExvZ2ljYWxIZWlnaHQgKz0gbG9naWNhbFRv
cEFuZFZlcnRpY2FsT3ZlcmZsb3cudmVydGljYWxPdmVyZmxvdzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRCb3R0b206IHsKKyAgICAgICAgICAgIGF1dG8mIHBh
cmVudExheW91dEJveCA9IGxheW91dEJveC5wYXJlbnQoKTsKKyAgICAgICAgICAgIGF1dG8mIHBh
cmVudElubGluZUJveCA9IGlubGluZUJveEZvckxheW91dEJveChwYXJlbnRMYXlvdXRCb3gpOwor
ICAgICAgICAgICAgYXV0byBwYXJlbnRUZXh0TG9naWNhbEJvdHRvbSA9IHBhcmVudElubGluZUJv
eC5sb2dpY2FsVG9wKCkgKyBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSArIHBhcmVudExheW91
dEJveC5zdHlsZSgpLmZvbnRNZXRyaWNzKCkuZGVzY2VudCgpOworICAgICAgICAgICAgaW5saW5l
Qm94TG9naWNhbFRvcCA9IHBhcmVudFRleHRMb2dpY2FsQm90dG9tIC0gaW5saW5lQm94LT5sb2dp
Y2FsSGVpZ2h0KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlubGluZUJveC5zZXRMb2dpY2FsVG9wKGxv
Z2ljYWxUb3BBbmRWZXJ0aWNhbE92ZXJmbG93LmxvZ2ljYWxUb3ApOwotICAgIH07Ci0KLSAgICBh
dXRvIHNob3VsZFJvb3RJbmxpbmVCb3hTdHJldGNoTGluZUJveCA9ICFyZWNvbW1lbmRlZExpbmVC
b3hIZWlnaHQgJiYgIW1fcm9vdElubGluZUJveC5pc1Zpc3VhbGx5RW1wdHkoKTsKLSAgICBpZiAo
c2hvdWxkUm9vdElubGluZUJveFN0cmV0Y2hMaW5lQm94KQotICAgICAgICBjb21wdXRlTGluZUJv
eEhlaWdodChtX3Jvb3RJbmxpbmVCb3gsIG1ha2VPcHRpb25hbChWZXJ0aWNhbEFsaWduOjpCYXNl
bGluZSkpOwotICAgIGZvciAoYXV0byogaW5saW5lQm94IDogbV9pbmxpbmVCb3hMaXN0KSB7Ci0g
ICAgICAgIGF1dG8gc2hvdWxkSW5saW5lQm94U3RyZXRjaExpbmVCb3ggPSAhaW5saW5lQm94LT5p
c1Zpc3VhbGx5RW1wdHkoKSAmJiAoIXJlY29tbWVuZGVkTGluZUJveEhlaWdodCB8fCBpbmxpbmVC
b3gtPmlzQXRvbWljKCkpOwotICAgICAgICBpZiAoc2hvdWxkSW5saW5lQm94U3RyZXRjaExpbmVC
b3gpCi0gICAgICAgICAgICBjb21wdXRlTGluZUJveEhlaWdodCgqaW5saW5lQm94KTsKKyAgICAg
ICAgaW5saW5lQm94LT5zZXRMb2dpY2FsVG9wKGlubGluZUJveExvZ2ljYWxUb3ApOwogICAgIH0K
IAotICAgIGF1dG8gbGluZUJveExvZ2ljYWxIZWlnaHQgPSBzdGQ6Om1heChyZWNvbW1lbmRlZExp
bmVCb3hIZWlnaHQudmFsdWVPcihJbmxpbmVMYXlvdXRVbml0IHsgfSksIGNvbnRlbnRMb2dpY2Fs
SGVpZ2h0KTsKLSAgICBtX3JlY3Quc2V0SGVpZ2h0KGxpbmVCb3hMb2dpY2FsSGVpZ2h0KTsKLQot
ICAgIG1fcm9vdElubGluZUJveC5zZXRMb2dpY2FsVG9wKGNvbXB1dGVkTG9naWNhbFRvcEFuZFZl
cnRpY2FsT3ZlcmZsb3cobV9yb290SW5saW5lQm94LCBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZSku
bG9naWNhbFRvcCk7Ci0gICAgZm9yIChhdXRvKiBpbmxpbmVCb3ggOiBtX2lubGluZUJveExpc3Qp
IHsKLSAgICAgICAgLy8gRklYTUU6IEluY29ycmVjdCB2ZXJ0aWNhbCBwb3NpdGlvbiB3aGVuIHRo
ZSBjaGlsZCBpbmxpbmUgYm94IHN0cmV0Y2hlcyB0aGUgcGFyZW50LgotICAgICAgICBpbmxpbmVC
b3gtPnNldExvZ2ljYWxUb3AoY29tcHV0ZWRMb2dpY2FsVG9wQW5kVmVydGljYWxPdmVyZmxvdygq
aW5saW5lQm94KS5sb2dpY2FsVG9wKTsKLSAgICB9CisgICAgYXV0byBjb2xsYXBzZUxpbmVCb3hD
b250ZW50SWZOZWVkZWQgPSBbJl0geworICAgICAgICBpZiAoIW1fcm9vdElubGluZUJveC5pc1Zp
c3VhbGx5RW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYXV0byBjb2xsYXBz
ZWRDb250ZW50TG9naWNhbFRvcCA9IGNvbnRlbnRMb2dpY2FsQm90dG9tOworICAgICAgICBhdXRv
IGNvbGxhcHNlZENvbnRlbnRMb2dpY2FsQm90dG9tID0gSW5saW5lTGF5b3V0VW5pdCB7IH07Cisg
ICAgICAgIGZvciAoYXV0byYgaW5saW5lQm94IDogbV9pbmxpbmVCb3hMaXN0KSB7CisgICAgICAg
ICAgICBpZiAoJmlubGluZUJveC0+bGF5b3V0Qm94KCkucGFyZW50KCkgIT0gJm1fcm9vdElubGlu
ZUJveC5sYXlvdXRCb3goKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IGlmIChpbmxpbmVCb3gtPmlzVmlzdWFsbHlFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgY29sbGFwc2VkQ29udGVudExvZ2ljYWxUb3AgPSBzdGQ6Om1pbihj
b2xsYXBzZWRDb250ZW50TG9naWNhbFRvcCwgaW5saW5lQm94LT5sb2dpY2FsVG9wKCkpOworICAg
ICAgICAgICAgY29sbGFwc2VkQ29udGVudExvZ2ljYWxCb3R0b20gPSBzdGQ6Om1heChjb2xsYXBz
ZWRDb250ZW50TG9naWNhbEJvdHRvbSwgaW5saW5lQm94LT5sb2dpY2FsQm90dG9tKCkpOworICAg
ICAgICB9CisgICAgICAgIGlmIChjb2xsYXBzZWRDb250ZW50TG9naWNhbFRvcCA8PSAwKSB7Cisg
ICAgICAgICAgICBjb250ZW50TG9naWNhbEJvdHRvbSA9IGNvbGxhcHNlZENvbnRlbnRMb2dpY2Fs
Qm90dG9tOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnRlbnRM
b2dpY2FsQm90dG9tID0gSW5saW5lTGF5b3V0VW5pdCB7IH07CisgICAgICAgIGZvciAoYXV0byYg
aW5saW5lQm94IDogbV9pbmxpbmVCb3hMaXN0KSB7CisgICAgICAgICAgICBpbmxpbmVCb3gtPnNl
dExvZ2ljYWxUb3AoaW5saW5lQm94LT5sb2dpY2FsVG9wKCkgLSBjb2xsYXBzZWRDb250ZW50TG9n
aWNhbFRvcCk7CisgICAgICAgICAgICBjb250ZW50TG9naWNhbEJvdHRvbSA9IHN0ZDo6bWF4KGNv
bnRlbnRMb2dpY2FsQm90dG9tLCBpbmxpbmVCb3gtPmxvZ2ljYWxCb3R0b20oKSk7CisgICAgICAg
IH0KKyAgICB9OworICAgIGNvbGxhcHNlTGluZUJveENvbnRlbnRJZk5lZWRlZCgpOworICAgIC8v
IENvbXB1dGUgdGhlIGxpbmUgYm94IGhlaWdodC4gSXQncyBlaXRoZXIgdGhlIGxpbmUtaGVpZ2h0
IHZhbHVlIChuZWdhdGl2ZSB2YWx1ZSBtZWFucyBsaW5lIGhlaWdodCBpdCBub3Qgc2V0KSBvcgor
ICAgIC8vIG1heGltdW0gb2YgdGhlIHJvb3QgaW5saW5lIGJveCdzIGJvdHRvbSBhbmQgdGhlIHRv
cCBhbGlnbmVkIGNvbnRlbnQgaGVpZ2h0LgorICAgIGF1dG8mIHJvb3RTdHlsZSA9IGZvcm1hdHRp
bmdDb250ZXh0KCkucm9vdCgpLnN0eWxlKCk7CisgICAgYXV0byByZWNvbW1lbmRlZExpbmVCb3hI
ZWlnaHQgPSBXVEY6Ok9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHsgfTsKKyAgICBpZiAoIXJv
b3RTdHlsZS5saW5lSGVpZ2h0KCkuaXNOZWdhdGl2ZSgpKQorICAgICAgICByZWNvbW1lbmRlZExp
bmVCb3hIZWlnaHQgPSByb290U3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCk7CisgICAgbV9yZWN0
LnNldEhlaWdodChyZWNvbW1lbmRlZExpbmVCb3hIZWlnaHQudmFsdWVPcihjb250ZW50TG9naWNh
bEJvdHRvbSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmgKaW5kZXggOTBiMzhlMDA0OGU0ZTcyMWNkM2Zm
M2NhYzVhZTlhYmZjOWQxOTgyOC4uMjQzNTRjODIyMGJjMTYzMWY1MmViYTFkMmU0OWRkMjQ3N2Fj
ODE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUxpbmVCb3guaApAQCAtNTksOSArNTksNiBAQCBwdWJsaWM6CiAgICAgICAgIElu
bGluZUxheW91dFVuaXQgYmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VsaW5lOyB9CiAg
ICAgICAgIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IGRlc2NlbnQoKSBjb25zdCB7IHJldHVy
biBtX2Rlc2NlbnQ7IH0KIAotICAgICAgICB2b2lkIHNldExvZ2ljYWxUb3AoSW5saW5lTGF5b3V0
VW5pdCBsb2dpY2FsVG9wKSB7IG1fbG9naWNhbFJlY3Quc2V0VG9wKGxvZ2ljYWxUb3ApOyB9Ci0g
ICAgICAgIHZvaWQgc2V0TG9naWNhbFdpZHRoKElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRo
KSB7IG1fbG9naWNhbFJlY3Quc2V0V2lkdGgobG9naWNhbFdpZHRoKTsgfQotCiAgICAgICAgIGJv
b2wgaXNWaXN1YWxseUVtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9pc1Zpc3VhbGx5RW1wdHk7IH0K
ICAgICAgICAgdm9pZCBzZXRJc1Zpc3VhbGx5Tm9uRW1wdHkoKSB7IG1faXNWaXN1YWxseUVtcHR5
ID0gZmFsc2U7IH0KICAgICAgICAgYm9vbCBpc0F0b21pYygpIGNvbnN0IHsgcmV0dXJuIG1faXNB
dG9taWM7IH0KQEAgLTY5LDYgKzY2LDEzIEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgQm94JiBs
YXlvdXRCb3goKSBjb25zdCB7IHJldHVybiAqbV9sYXlvdXRCb3g7IH0KIAogICAgIHByaXZhdGU6
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMaW5lQm94OworCisgICAgICAgIHZvaWQgc2V0TG9naWNh
bFRvcChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxUb3ApIHsgbV9sb2dpY2FsUmVjdC5zZXRUb3Ao
bG9naWNhbFRvcCk7IH0KKyAgICAgICAgdm9pZCBzZXRMb2dpY2FsV2lkdGgoSW5saW5lTGF5b3V0
VW5pdCBsb2dpY2FsV2lkdGgpIHsgbV9sb2dpY2FsUmVjdC5zZXRXaWR0aChsb2dpY2FsV2lkdGgp
OyB9CisgICAgICAgIHZvaWQgc2V0TG9naWNhbEhlaWdodChJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxIZWlnaHQpIHsgbV9sb2dpY2FsUmVjdC5zZXRIZWlnaHQobG9naWNhbEhlaWdodCk7IH0KKyAg
ICAgICAgdm9pZCBzZXRCYXNlbGluZShJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lKSB7IG1fYmFz
ZWxpbmUgPSBiYXNlbGluZTsgfQorCiAgICAgICAgIFdlYWtQdHI8Y29uc3QgQm94PiBtX2xheW91
dEJveDsKICAgICAgICAgRGlzcGxheTo6SW5saW5lUmVjdCBtX2xvZ2ljYWxSZWN0OwogICAgICAg
ICBJbmxpbmVMYXlvdXRVbml0IG1fYmFzZWxpbmU7CkBAIC05MSw3ICs5NSw3IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiBsb2dpY2FsUmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVjdDsgfQogICAgIGNvbnN0IERpc3BsYXk6OklubGluZVJlY3QmIHNjcm9sbGFibGVP
dmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZU92ZXJmbG93OyB9CiAKLSAgICBj
b25zdCBJbmxpbmVCb3gmIGlubGluZUJveEZvckxheW91dEJveChjb25zdCBCb3gmKSBjb25zdDsK
KyAgICBjb25zdCBJbmxpbmVCb3gmIGlubGluZUJveEZvckxheW91dEJveChjb25zdCBCb3gmIGxh
eW91dEJveCkgY29uc3QgeyByZXR1cm4gKm1faW5saW5lQm94UmVjdE1hcC5nZXQoJmxheW91dEJv
eCk7IH0KICAgICBEaXNwbGF5OjpJbmxpbmVSZWN0IGlubGluZVJlY3RGb3JUZXh0UnVuKGNvbnN0
IExpbmVCdWlsZGVyOjpSdW4mKSBjb25zdDsKIAogICAgIC8vIF9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fIGxpbmUgYm94IGxvZ2ljYWwgdG9wCkBA
IC0xMTMsOCArMTE3LDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGNvbnN0cnVj
dElubGluZUJveGVzKGNvbnN0IExpbmVCdWlsZGVyOjpSdW5MaXN0JiwgSXNMaW5lVmlzdWFsbHlF
bXB0eSk7Ci0gICAgdm9pZCBhbGlnblZlcnRpY2FsbHkoKTsKKyAgICB2b2lkIGNvbXB1dGVJbmxp
bmVCb3hlc0xvZ2ljYWxIZWlnaHQoKTsKKyAgICB2b2lkIGFsaWduSW5saW5lQm94ZXNWZXJ0aWNh
bGx5QW5kQ29tcHV0ZUxpbmVIZWlnaHQoKTsKIAorICAgIElubGluZUJveCYgaW5saW5lQm94Rm9y
TGF5b3V0Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSB7IHJldHVybiAqbV9pbmxpbmVCb3hSZWN0
TWFwLmdldCgmbGF5b3V0Qm94KTsgfQogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0
JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ7IH0KICAgICBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUoKSBjb25zdCB7IHJldHVybiBm
b3JtYXR0aW5nQ29udGV4dCgpLmxheW91dFN0YXRlKCk7IH0KIApAQCAtMTI1LDggKzEzMSw4IEBA
IHByaXZhdGU6CiAgICAgSW5saW5lQm94IG1fcm9vdElubGluZUJveDsKIAogICAgIE9wdGlvbmFs
PElubGluZUxheW91dFVuaXQ+IG1fbGluZUFsaWdubWVudE9mZnNldDsKLSAgICBIYXNoTWFwPGNv
bnN0IEJveCosIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVCb3g+PiBtX2lubGluZUJveFJlY3RNYXA7
Ci0gICAgVmVjdG9yPElubGluZUJveCo+IG1faW5saW5lQm94TGlzdDsKKyAgICBIYXNoTWFwPGNv
bnN0IEJveCosIElubGluZUJveCo+IG1faW5saW5lQm94UmVjdE1hcDsKKyAgICBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPElubGluZUJveD4+IG1faW5saW5lQm94TGlzdDsKICAgICBjb25zdCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCYgbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsKIH07CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBiYzZjMTIyZTYyOTQ5NjI4M2U4NWYyNTY5NjlkYjQyN2JhZjJhZDIwLi4zZWY3ZDAzZDkz
YzZkZWJlNDY4NzkxMzFjZGViMDJkYjAzNTRlNTY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MjAtMDgtMjEgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZD
XVtJRkNdIEZpeCBuZXN0ZWQgaW5saW5lIGJveCBzaXppbmcgYW5kIHBvc2l0aW9uaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU3NDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvbGF5b3V0
Zm9ybWF0dGluZ2NvbnRleHQvdmVydGljYWwtYWxpZ24tbWlkZGxlLW5lc3RlZC1leHBlY3RlZC5o
dG1sOgorICAgICAgICAqIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvdmVydGljYWwtYWxp
Z24tbWlkZGxlLW5lc3RlZC5odG1sOiB0cnVuay9yZW5kZXJpbmcgcHJvZHVjZXMgaW5jb3JyZWN0
IGxheW91dC4KKwogMjAyMC0wOC0xNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtMRkNdW0lGQ10gQWRkIHN1cHBvcnQgZm9yIHZlcnRpY2FsLWFsaWduOiB0ZXh0
LXRvcApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4
dC92ZXJ0aWNhbC1hbGlnbi1taWRkbGUtbmVzdGVkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3ZlcnRpY2FsLWFsaWduLW1pZGRsZS1uZXN0
ZWQtZXhwZWN0ZWQuaHRtbAppbmRleCBlNjY3MTExYzg1NjdlNGYxZWNlOTFlM2YzYzJhODBhODhk
ZDg0OTM3Li45MWE2OTcwMGJiODMxZDJkNjMwNzY5M2FlZjU4MzgxYTc0ZDhmNjg4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3ZlcnRpY2FsLWFs
aWduLW1pZGRsZS1uZXN0ZWQtZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xh
eW91dGZvcm1hdHRpbmdjb250ZXh0L3ZlcnRpY2FsLWFsaWduLW1pZGRsZS1uZXN0ZWQtZXhwZWN0
ZWQuaHRtbApAQCAtNCw0ICs0LDQgQEAgZGl2IHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVl
bjsKIH0KIDwvc3R5bGU+Ci08ZGl2IHN0eWxlPSJoZWlnaHQ6IDUycHg7Ij48L2Rpdj4KKzxkaXYg
c3R5bGU9ImhlaWdodDogNDRweDsiPjwvZGl2PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC92ZXJ0aWNhbC1hbGlnbi1taWRkbGUtbmVzdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3ZlcnRpY2FsLWFs
aWduLW1pZGRsZS1uZXN0ZWQuaHRtbAppbmRleCAwYjhhYjM2YzkwNDdhMDJjNDg4MTdmZWI3MWYz
ZGZlY2M3NmY2N2NjLi5kYzEzZWI0YWYyZTFkNTZlMzgwOGM4N2VhMjJmMGE0ODgyOTA2YzkzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3ZlcnRp
Y2FsLWFsaWduLW1pZGRsZS1uZXN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xheW91
dGZvcm1hdHRpbmdjb250ZXh0L3ZlcnRpY2FsLWFsaWduLW1pZGRsZS1uZXN0ZWQuaHRtbApAQCAt
MTIsMTIgKzEyLDkgQEAgc3BhbiB7CiB9CiA8L3N0eWxlPgogCi08ZGl2IGNsYXNzPWNvbnRhaW5l
cj5YWAorPGRpdiBjbGFzcz1jb250YWluZXI+CisgIFhYCiAgIDxzcGFuPgogICAgIFhYCi0gICAg
PHNwYW4+Ci0gICAgICBYWAotICAgICAgPHNwYW4+WFg8L3NwYW4+Ci0gICAgPC9zcGFuPgogICA8
L3NwYW4+CiA8L2Rpdj4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407053</attachid>
            <date>2020-08-22 09:09:06 -0700</date>
            <delta_ts>2020-09-01 20:43:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215748-20200822090905.patch</filename>
            <type>text/plain</type>
            <size>32153</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2ZlMWIyYWNiZjE5ZDVh
M2MzMDY0NWVjODBjNjBmMjkyN2M5NzQ3OS4uNmViOTcwNWI1NDliZjIzNzM4NzFhOTg5YTc5Y2Jm
NTA5ZTBiNmFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTA4LTIxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBGaXggbmVz
dGVkIGlubGluZSBib3ggc2l6aW5nIGFuZCBwb3NpdGlvbmluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NzQ4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBzcGxpdHMgdGhlIGxpbmUg
Ym94IGNvbnN0cnVjdGlvbiBwcm9jZXNzIGludG8gYSBmZXcgZGlzdGluY3Qgc3RlcHMuCisgICAg
ICAgIDEuIENvbnN0cnVjdCB0aGUgaW5saW5lIGJveGVzIGFzIG5lZWRlZC4gVGhlcmUncyBhbHdh
eXMgYSByb290IGlubGluZSBib3guCisgICAgICAgIDIuIFNpemUgdGhlbSBieSB0YWtpbmcgdGhl
IHZlcnRpY2FsIGFsaWdubWVudCBpbnRvIGFjY291bnQKKyAgICAgICAgICAgLSBjaGlsZCBpbmxp
bmUgYm94ZXMgc3RyZXRjaCB0aGVpciBwYXJlbnQgaW5saW5lIGJveGVzIGluIG1vc3QgY2FzZXMg
KGRlcGVuZGluZyBvbiB0aGUgdmVydGljYWwtYWxpZ24gcHJvcGVydHkgdmFsdWUpLgorICAgICAg
ICAzLiBQb3NpdGlvbiB0aGUgaW5saW5lIGJveGVzIHJlbGF0aXZlIHRvIHRoZSBsaW5lIGJveCAK
KworICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjptX2lubGluZUZvcm1hdHRpbmdDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6aW5saW5lUmVjdEZvclRleHRSdW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpjb25zdHJ1Y3RJbmxpbmVC
b3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmNvbXB1dGVJbmxpbmVC
b3hlc0xvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojph
bGlnbklubGluZUJveGVzVmVydGljYWxseUFuZENvbXB1dGVMaW5lSGVpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6aW5saW5lQm94Rm9yTGF5b3V0Qm94IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6YWxpZ25WZXJ0aWNh
bGx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVM
aW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUJveDo6
c2V0TG9naWNhbFRvcCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGlu
ZUJveDo6c2V0TG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJv
eDo6SW5saW5lQm94OjpzZXRMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZUJveDo6SW5saW5lQm94OjpzZXRCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVCb3g6OmlubGluZUJveEZvckxheW91dEJveCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmlubGluZUJveEZvckxheW91dEJveCk6CisKIDIwMjAt
MDgtMTUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJ
RkNdIEFkZCBzdXBwb3J0IGZvciB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3AKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5j
cHAKaW5kZXggMTFiZDFhNjIxMDdkNTNjNmMzZmM4MDZkYjA0NGM5NzBhMGMxNjQ0Mi4uOGYzZWQ4
YjEyMDI1ZTEzNzdmZDMyY2NiMTM3N2I0M2YwZDc1ZDgyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAKQEAg
LTE2NSw3ICsxNjUsOCBAQCBMaW5lQm94OjpMaW5lQm94KGNvbnN0IElubGluZUZvcm1hdHRpbmdD
b250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgY29uc3QgSQogICAgICwgbV9pbmxpbmVG
b3JtYXR0aW5nQ29udGV4dChpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKIHsKICAgICBjb25zdHJ1
Y3RJbmxpbmVCb3hlcyhydW5zLCBpc0xpbmVWaXN1YWxseUVtcHR5KTsKLSAgICBhbGlnblZlcnRp
Y2FsbHkoKTsKKyAgICBjb21wdXRlSW5saW5lQm94ZXNMb2dpY2FsSGVpZ2h0KCk7CisgICAgYWxp
Z25JbmxpbmVCb3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUhlaWdodCgpOwogICAgIG1fc2Ny
b2xsYWJsZU92ZXJmbG93ID0gbV9yZWN0OwogICAgIG1fc2Nyb2xsYWJsZU92ZXJmbG93LmV4cGFu
ZFRvQ29udGFpbihtX3Jvb3RJbmxpbmVCb3gubG9naWNhbFJlY3QoKSk7CiAgICAgZm9yIChhdXRv
JiBpbmxpbmVCb3hFbnRyeSA6IG1faW5saW5lQm94UmVjdE1hcCkKQEAgLTE3MywzNyArMTc0LDM1
IEBAIExpbmVCb3g6OkxpbmVCb3goY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGlubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LCBjb25zdCBJCiAgICAgbV9saW5lQWxpZ25tZW50T2Zmc2V0ID0g
aG9yaXpvbnRhbEFsaWdubWVudE9mZnNldChydW5zLCBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5y
b290KCkuc3R5bGUoKS50ZXh0QWxpZ24oKSwgbG9naWNhbFdpZHRoLCBpc0xhc3RMaW5lV2l0aElu
bGluZUNvbnRlbnQpOwogfQogCi1jb25zdCBMaW5lQm94OjpJbmxpbmVCb3gmIExpbmVCb3g6Omlu
bGluZUJveEZvckxheW91dEJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKLXsKLSAgICBB
U1NFUlQoJmxheW91dEJveCAhPSAmZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCkpOwotICAgIHJl
dHVybiAqbV9pbmxpbmVCb3hSZWN0TWFwLmdldCgmbGF5b3V0Qm94KTsKLX0KLQogRGlzcGxheTo6
SW5saW5lUmVjdCBMaW5lQm94OjppbmxpbmVSZWN0Rm9yVGV4dFJ1bihjb25zdCBMaW5lQnVpbGRl
cjo6UnVuJiBydW4pIGNvbnN0CiB7CiAgICAgQVNTRVJUKHJ1bi5pc1RleHQoKSB8fCBydW4uaXNM
aW5lQnJlYWsoKSk7CiAgICAgYXV0byBob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0ID0gbV9saW5l
QWxpZ25tZW50T2Zmc2V0LnZhbHVlT3IoSW5saW5lTGF5b3V0VW5pdCB7IH0pOwotICAgIGF1dG8g
aW5saW5lQm94UmVjdCA9IG1fcm9vdElubGluZUJveC5sb2dpY2FsUmVjdCgpOwotICAgIGlmICgm
cnVuLmxheW91dEJveCgpLnBhcmVudCgpICE9ICZmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKSkK
LSAgICAgICAgaW5saW5lQm94UmVjdCA9IG1faW5saW5lQm94UmVjdE1hcC5nZXQoJnJ1bi5sYXlv
dXRCb3goKS5wYXJlbnQoKSktPmxvZ2ljYWxSZWN0KCk7Ci0gICAgcmV0dXJuIHsgaW5saW5lQm94
UmVjdC50b3AoKSwgaG9yaXpvbnRhbEFsaWdubWVudE9mZnNldCArIHJ1bi5sb2dpY2FsTGVmdCgp
LCBydW4ubG9naWNhbFdpZHRoKCksIGlubGluZUJveFJlY3QuaGVpZ2h0KCkgfTsKKyAgICBhdXRv
JiBsYXlvdXRCb3ggPSBydW4ubGF5b3V0Qm94KCk7CisgICAgYXV0byYgcGFyZW50SW5saW5lQm94
ID0gaW5saW5lQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5wYXJlbnQoKSk7CisgICAgYXV0byBp
bmxpbmVCb3hSZWN0ID0gcGFyZW50SW5saW5lQm94LmxvZ2ljYWxSZWN0KCk7CisgICAgcmV0dXJu
IHsgaW5saW5lQm94UmVjdC50b3AoKSArIHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gbGF5
b3V0Qm94LnN0eWxlKCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSwgaG9yaXpvbnRhbEFsaWdubWVu
dE9mZnNldCArIHJ1bi5sb2dpY2FsTGVmdCgpLCBydW4ubG9naWNhbFdpZHRoKCksIGlubGluZUJv
eFJlY3QuaGVpZ2h0KCkgfTsKIH0KIAogdm9pZCBMaW5lQm94Ojpjb25zdHJ1Y3RJbmxpbmVCb3hl
cyhjb25zdCBMaW5lQnVpbGRlcjo6UnVuTGlzdCYgcnVucywgSXNMaW5lVmlzdWFsbHlFbXB0eSBp
c0xpbmVWaXN1YWxseUVtcHR5KQogewotICAgIGF1dG8gaW5saW5lQm94SGFzSW1hZ2luYXJ5U3Ry
dXQgPSAhbGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKTsKLSAgICBhdXRvIGlubGluZUJveElz
VmlzdWFsbHlFbXB0eSA9ICFpbmxpbmVCb3hIYXNJbWFnaW5hcnlTdHJ1dCB8fCBpc0xpbmVWaXN1
YWxseUVtcHR5ID09IElzTGluZVZpc3VhbGx5RW1wdHk6OlllcyA/IElubGluZUJveDo6SXNWaXN1
YWxseUVtcHR5OjpZZXMgOiBJbmxpbmVCb3g6OklzVmlzdWFsbHlFbXB0eTo6Tm87Ci0gICAgLy8g
RklYTUU6IENhbid0IHVzZSBmbG9hdCBmb250IG1ldHJpYyB2YWx1ZXMgYmVjYXVzZSBvZiAtPiBm
bG9hdCBsaW5lU3BhY2luZyA9IGxyb3VuZGYoYXNjZW50KSArIGxyb3VuZGYoZGVzY2VudCkgKyBs
cm91bmRmKGxpbmVHYXApIGluIEZvbnRDb2NvYS5tbQotICAgIGF1dG8mIGZvbnRNZXRyaWNzID0g
Zm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCkuc3R5bGUoKS5mb250TWV0cmljcygpOwotICAgIGF1
dG8gcm9vdElubGluZVJlY3QgPSBEaXNwbGF5OjpJbmxpbmVSZWN0IHsgeyB9LCB7IH0sIGxvZ2lj
YWxXaWR0aCgpLCBmb250TWV0cmljcy5mbG9hdExpbmVTcGFjaW5nKCkgfTsKLSAgICBhdXRvIHJv
b3RJbmxpbmVCYXNlbGluZSA9IHJvdW5kZihmb250TWV0cmljcy5mbG9hdEFzY2VudCgpKTsKLSAg
ICBhdXRvIHJvb3RJbmxpbmVEZXNjZW50ID0gcm91bmRmKGZvbnRNZXRyaWNzLmZsb2F0RGVzY2Vu
dCgpKTsKLSAgICBtX3Jvb3RJbmxpbmVCb3ggPSBJbmxpbmVCb3ggeyBmb3JtYXR0aW5nQ29udGV4
dCgpLnJvb3QoKSwgcm9vdElubGluZVJlY3QsIHJvb3RJbmxpbmVCYXNlbGluZSwgcm9vdElubGlu
ZURlc2NlbnQsIGlubGluZUJveElzVmlzdWFsbHlFbXB0eSB9OworICAgIGF1dG8gY29uc3RydWN0
Um9vdElubGluZUJveCA9IFsmXSB7CisgICAgICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gZm9ybWF0
dGluZ0NvbnRleHQoKS5yb290KCkuc3R5bGUoKS5mb250TWV0cmljcygpOworICAgICAgICBhdXRv
IHJvb3RMaW5lQm94TG9naWNhbEhlaWdodCA9IGZvbnRNZXRyaWNzLmZsb2F0TGluZVNwYWNpbmco
KTsKKyAgICAgICAgYXV0byByb290SW5saW5lUmVjdCA9IERpc3BsYXk6OklubGluZVJlY3QgeyB7
IH0sIHsgfSwgbG9naWNhbFdpZHRoKCksIHJvb3RMaW5lQm94TG9naWNhbEhlaWdodCB9OworICAg
ICAgICAvLyBGSVhNRTogQ2FuJ3QgdXNlIGZsb2F0IGZvbnQgbWV0cmljIHZhbHVlcyBiZWNhdXNl
IG9mIC0+IGZsb2F0IGxpbmVTcGFjaW5nID0gbHJvdW5kZihhc2NlbnQpICsgbHJvdW5kZihkZXNj
ZW50KSArIGxyb3VuZGYobGluZUdhcCkgaW4gRm9udENvY29hLm1tCisgICAgICAgIGF1dG8gcm9v
dElubGluZUJhc2VsaW5lID0gcm91bmRmKGZvbnRNZXRyaWNzLmZsb2F0QXNjZW50KCkpOworICAg
ICAgICBhdXRvIHJvb3RJbmxpbmVEZXNjZW50ID0gcm91bmRmKGZvbnRNZXRyaWNzLmZsb2F0RGVz
Y2VudCgpKTsKKyAgICAgICAgYXV0byBpbmxpbmVCb3hIYXNJbWFnaW5hcnlTdHJ1dCA9ICFsYXlv
dXRTdGF0ZSgpLmluUXVpcmtzTW9kZSgpOworICAgICAgICBhdXRvIHJvb3RJbmxpbmVCb3hJc0lu
aXRpYWxseVZpc3VhbGx5RW1wdHkgPSAhaW5saW5lQm94SGFzSW1hZ2luYXJ5U3RydXQgfHwgaXNM
aW5lVmlzdWFsbHlFbXB0eSA9PSBJc0xpbmVWaXN1YWxseUVtcHR5OjpZZXMgPyBJbmxpbmVCb3g6
OklzVmlzdWFsbHlFbXB0eTo6WWVzIDogSW5saW5lQm94OjpJc1Zpc3VhbGx5RW1wdHk6Ok5vOwor
CisgICAgICAgIG1fcm9vdElubGluZUJveCA9IElubGluZUJveCB7IGZvcm1hdHRpbmdDb250ZXh0
KCkucm9vdCgpLCByb290SW5saW5lUmVjdCwgcm9vdElubGluZUJhc2VsaW5lLCByb290SW5saW5l
RGVzY2VudCwgcm9vdElubGluZUJveElzSW5pdGlhbGx5VmlzdWFsbHlFbXB0eSB9OworICAgICAg
ICBtX2lubGluZUJveFJlY3RNYXAuc2V0KCZmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKSwgJm1f
cm9vdElubGluZUJveCk7CisgICAgfTsKKyAgICBjb25zdHJ1Y3RSb290SW5saW5lQm94KCk7CiAK
LSAgICBhdXRvIGhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQgPSBtX2xpbmVBbGlnbm1lbnRPZmZz
ZXQudmFsdWVPcihJbmxpbmVMYXlvdXRVbml0IHsgfSk7CiAgICAgZm9yIChhdXRvJiBydW4gOiBy
dW5zKSB7CiAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IHJ1bi5sYXlvdXRCb3goKTsKLSAgICAg
ICAgYXV0byBydW5Mb2dpY2FsTGVmdCA9IGhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQgKyBydW4u
bG9naWNhbExlZnQoKTsKICAgICAgICAgaWYgKHJ1bi5pc0JveCgpKSB7CiAgICAgICAgICAgICBh
dXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5
b3V0Qm94KTsKICAgICAgICAgICAgIGlmIChsYXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgpICYm
IGxheW91dEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKQEAgLTIy
NCwyOCArMjIzLDI4IEBAIHZvaWQgTGluZUJveDo6Y29uc3RydWN0SW5saW5lQm94ZXMoY29uc3Qg
TGluZUJ1aWxkZXI6OlJ1bkxpc3QmIHJ1bnMsIElzTGluZVZpc3VhCiAgICAgICAgICAgICAgICAg
Ly8gICAgIC0tLS0tfC18LXwtLS0tLS0tLS0tIDwtIGJhc2VsaW5lCiAgICAgICAgICAgICAgICAg
Ly8KICAgICAgICAgICAgICAgICBhdXRvIGFkanVzdGVkQmFzZWxpbmUgPSBib3hHZW9tZXRyeS5t
YXJnaW5CZWZvcmUoKSArIGJveEdlb21ldHJ5LmJvcmRlclRvcCgpICsgYm94R2VvbWV0cnkucGFk
ZGluZ1RvcCgpLnZhbHVlT3IoMCkgKyBpbmxpbmVCbG9ja0Jhc2VsaW5lOwotICAgICAgICAgICAg
ICAgIGF1dG8gaW5saW5lQm94UmVjdCA9IERpc3BsYXk6OklubGluZVJlY3QgeyB7IH0sIHJ1bkxv
Z2ljYWxMZWZ0LCBydW4ubG9naWNhbFdpZHRoKCksIGJveEdlb21ldHJ5Lm1hcmdpbkJveEhlaWdo
dCgpIH07CisgICAgICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hSZWN0ID0gRGlzcGxheTo6SW5s
aW5lUmVjdCB7IHsgfSwgcnVuLmxvZ2ljYWxMZWZ0KCksIHJ1bi5sb2dpY2FsV2lkdGgoKSwgYm94
R2VvbWV0cnkubWFyZ2luQm94SGVpZ2h0KCkgfTsKICAgICAgICAgICAgICAgICBhdXRvIGlubGlu
ZUJveCA9IG1ha2VVbmlxdWU8SW5saW5lQm94PihsYXlvdXRCb3gsIGlubGluZUJveFJlY3QsIGFk
anVzdGVkQmFzZWxpbmUpOwotICAgICAgICAgICAgICAgIG1faW5saW5lQm94TGlzdC5hcHBlbmQo
aW5saW5lQm94LmdldCgpKTsKLSAgICAgICAgICAgICAgICBtX2lubGluZUJveFJlY3RNYXAuc2V0
KCZsYXlvdXRCb3gsIFdURk1vdmUoaW5saW5lQm94KSk7CisgICAgICAgICAgICAgICAgbV9pbmxp
bmVCb3hSZWN0TWFwLnNldCgmbGF5b3V0Qm94LCBpbmxpbmVCb3guZ2V0KCkpOworICAgICAgICAg
ICAgICAgIG1faW5saW5lQm94TGlzdC5hcHBlbmQoV1RGTW92ZShpbmxpbmVCb3gpKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgYXV0byBydW5IZWlnaHQgPSBib3hHZW9t
ZXRyeS5tYXJnaW5Cb3hIZWlnaHQoKTsKLSAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJveFJl
Y3QgPSBEaXNwbGF5OjpJbmxpbmVSZWN0IHsgeyB9LCBydW5Mb2dpY2FsTGVmdCwgcnVuLmxvZ2lj
YWxXaWR0aCgpLCBydW5IZWlnaHQgfTsKKyAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJveFJl
Y3QgPSBEaXNwbGF5OjpJbmxpbmVSZWN0IHsgeyB9LCBydW4ubG9naWNhbExlZnQoKSwgcnVuLmxv
Z2ljYWxXaWR0aCgpLCBydW5IZWlnaHQgfTsKICAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJv
eCA9IG1ha2VVbmlxdWU8SW5saW5lQm94PihsYXlvdXRCb3gsIGlubGluZUJveFJlY3QsIHJ1bkhl
aWdodCk7Ci0gICAgICAgICAgICAgICAgbV9pbmxpbmVCb3hMaXN0LmFwcGVuZChpbmxpbmVCb3gu
Z2V0KCkpOwotICAgICAgICAgICAgICAgIG1faW5saW5lQm94UmVjdE1hcC5zZXQoJmxheW91dEJv
eCwgV1RGTW92ZShpbmxpbmVCb3gpKTsKKyAgICAgICAgICAgICAgICBtX2lubGluZUJveFJlY3RN
YXAuc2V0KCZsYXlvdXRCb3gsIGlubGluZUJveC5nZXQoKSk7CisgICAgICAgICAgICAgICAgbV9p
bmxpbmVCb3hMaXN0LmFwcGVuZChXVEZNb3ZlKGlubGluZUJveCkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKHJ1bi5pc0NvbnRhaW5lclN0YXJ0KCkpIHsKLSAgICAgICAgICAg
IGF1dG8gaW5pdGlhbFdpZHRoID0gbG9naWNhbFdpZHRoKCkgLSBydW5Mb2dpY2FsTGVmdDsKKyAg
ICAgICAgICAgIGF1dG8gaW5pdGlhbFdpZHRoID0gbG9naWNhbFdpZHRoKCkgLSBydW4ubG9naWNh
bExlZnQoKTsKICAgICAgICAgICAgIEFTU0VSVChpbml0aWFsV2lkdGggPj0gMCk7CiAgICAgICAg
ICAgICBhdXRvJiBmb250TWV0cmljcyA9IGxheW91dEJveC5zdHlsZSgpLmZvbnRNZXRyaWNzKCk7
CiAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxIZWlnaHQgPSBmb250TWV0cmljcy5mbG9hdExpbmVT
cGFjaW5nKCk7CiAgICAgICAgICAgICBhdXRvIGJhc2VsaW5lID0gcm91bmRmKGhhbGZMZWFkaW5n
TWV0cmljcyhmb250TWV0cmljcywgbG9naWNhbEhlaWdodCkuYXNjZW50KTsKICAgICAgICAgICAg
IGF1dG8gZGVzY2VudCA9IHJvdW5kZihmb250TWV0cmljcy5mbG9hdERlc2NlbnQoKSk7Ci0gICAg
ICAgICAgICBhdXRvIGlubGluZUJveFJlY3QgPSBEaXNwbGF5OjpJbmxpbmVSZWN0IHsgeyB9LCBy
dW5Mb2dpY2FsTGVmdCwgaW5pdGlhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0IH07Ci0gICAgICAgICAg
ICBhdXRvIGlubGluZUJveCA9IG1ha2VVbmlxdWU8SW5saW5lQm94PihsYXlvdXRCb3gsIGlubGlu
ZUJveFJlY3QsIGJhc2VsaW5lLCBkZXNjZW50LCBpbmxpbmVCb3hJc1Zpc3VhbGx5RW1wdHkpOwot
ICAgICAgICAgICAgbV9pbmxpbmVCb3hMaXN0LmFwcGVuZChpbmxpbmVCb3guZ2V0KCkpOwotICAg
ICAgICAgICAgbV9pbmxpbmVCb3hSZWN0TWFwLnNldCgmbGF5b3V0Qm94LCBXVEZNb3ZlKGlubGlu
ZUJveCkpOworICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hSZWN0ID0gRGlzcGxheTo6SW5saW5l
UmVjdCB7IHsgfSwgcnVuLmxvZ2ljYWxMZWZ0KCksIGluaXRpYWxXaWR0aCwgbG9naWNhbEhlaWdo
dCB9OworICAgICAgICAgICAgYXV0byBpbmxpbmVCb3ggPSBtYWtlVW5pcXVlPElubGluZUJveD4o
bGF5b3V0Qm94LCBpbmxpbmVCb3hSZWN0LCBiYXNlbGluZSwgZGVzY2VudCwgSW5saW5lQm94OjpJ
c1Zpc3VhbGx5RW1wdHk6Olllcyk7CisgICAgICAgICAgICBtX2lubGluZUJveFJlY3RNYXAuc2V0
KCZsYXlvdXRCb3gsIGlubGluZUJveC5nZXQoKSk7CisgICAgICAgICAgICBtX2lubGluZUJveExp
c3QuYXBwZW5kKFdURk1vdmUoaW5saW5lQm94KSk7CiAgICAgICAgIH0gZWxzZSBpZiAocnVuLmlz
Q29udGFpbmVyRW5kKCkpIHsKICAgICAgICAgICAgIC8vIEFkanVzdCB0aGUgbG9naWNhbCB3aWR0
aCB3aGVuIHRoZSBpbmxpbmUgbGV2ZWwgY29udGFpbmVyIGNsb3NlcyBvbiB0aGlzIGxpbmUuCiAg
ICAgICAgICAgICBhdXRvJiBpbmxpbmVCb3ggPSAqbV9pbmxpbmVCb3hSZWN0TWFwLmdldCgmbGF5
b3V0Qm94KTsKQEAgLTI1NywxMzggKzI1NiwxNjYgQEAgdm9pZCBMaW5lQm94Ojpjb25zdHJ1Y3RJ
bmxpbmVCb3hlcyhjb25zdCBMaW5lQnVpbGRlcjo6UnVuTGlzdCYgcnVucywgSXNMaW5lVmlzdWEK
ICAgICB9CiB9CiAKLXZvaWQgTGluZUJveDo6YWxpZ25WZXJ0aWNhbGx5KCkKK3ZvaWQgTGluZUJv
eDo6Y29tcHV0ZUlubGluZUJveGVzTG9naWNhbEhlaWdodCgpCiB7Ci0gICAgLy8gMS4gQ29tcHV0
ZSBsaW5lIGJveCBoZWlnaHQvYWxpZ25tZW50IGJhc2VsaW5lIGJ5IHBsYWNpbmcgdGhlIGlubGlu
ZSBib3hlcyB2ZXJ0aWNhbGx5LgotICAgIC8vIDIuIEFkanVzdCB0aGUgaW5saW5lIGJveCB2ZXJ0
aWNhbCBwb3NpdGlvbi4KLSAgICBhdXRvJiByb290U3R5bGUgPSBmb3JtYXR0aW5nQ29udGV4dCgp
LnJvb3QoKS5zdHlsZSgpOwotICAgIGF1dG8gcmVjb21tZW5kZWRMaW5lQm94SGVpZ2h0ID0gV1RG
OjpPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7IH07Ci0gICAgaWYgKCFyb290U3R5bGUubGlu
ZUhlaWdodCgpLmlzTmVnYXRpdmUoKSkKLSAgICAgICAgcmVjb21tZW5kZWRMaW5lQm94SGVpZ2h0
ID0gcm9vdFN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpOwotCi0gICAgYXV0byBjb250ZW50TG9n
aWNhbEhlaWdodCA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgIGF1dG8gYWxpZ25tZW50QmFz
ZWxpbmUgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKKyAgICAvLyBCeSB0cmF2ZXJzaW5nIHRoZSBp
bmxpbmUgYm94IGxpc3QgYmFja3dhcmRzLCBpdCdzIGd1YXJhbnRlZWQgdGhhdCBkZXNjZW5kYW50
IGlubGluZSBib3hlcyBhcmUgc2l6ZWQgZmlyc3QuCisgICAgZm9yIChhdXRvJiBpbmxpbmVCb3gg
OiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKG1faW5saW5lQm94TGlzdCkpIHsKKyAgICAgICAgaWYg
KGlubGluZUJveC0+aXNWaXN1YWxseUVtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgIHN0cnVjdCBMb2dpY2FsVG9wQW5kVmVydGljYWxPdmVyZmxvdyB7Ci0gICAgICAgIElubGlu
ZUxheW91dFVuaXQgbG9naWNhbFRvcCB7IH07Ci0gICAgICAgIElubGluZUxheW91dFVuaXQgdmVy
dGljYWxPdmVyZmxvdyB7IH07Ci0gICAgfTsKLSAgICBhdXRvIGNvbXB1dGVkTG9naWNhbFRvcEFu
ZFZlcnRpY2FsT3ZlcmZsb3cgPSBbJl0oY29uc3QgYXV0byYgaW5saW5lQm94LCBPcHRpb25hbDxW
ZXJ0aWNhbEFsaWduPiBvdmVycmlkZVZlcnRpY2FsQWxpZ25Nb2RlID0gV1RGOjpudWxsb3B0KSAt
PiBMb2dpY2FsVG9wQW5kVmVydGljYWxPdmVyZmxvdyB7Ci0gICAgICAgIGF1dG8mIGxheW91dEJv
eCA9IGlubGluZUJveC5sYXlvdXRCb3goKTsKLSAgICAgICAgYXV0byB2ZXJ0aWNhbEFsaWduTW9k
ZSA9IG92ZXJyaWRlVmVydGljYWxBbGlnbk1vZGUudmFsdWVPcihsYXlvdXRCb3guc3R5bGUoKS52
ZXJ0aWNhbEFsaWduKCkpOwotICAgICAgICBzd2l0Y2ggKHZlcnRpY2FsQWxpZ25Nb2RlKSB7Ci0g
ICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmU6IHsKLSAgICAgICAgICAgIGF1dG8g
aW5saW5lQm94TG9naWNhbFRvcCA9IGFsaWdubWVudEJhc2VsaW5lIC0gaW5saW5lQm94LmJhc2Vs
aW5lKCk7Ci0gICAgICAgICAgICByZXR1cm4geyBpbmxpbmVCb3hMb2dpY2FsVG9wLCBzdGQ6Om1h
eCgwLjBmLCAtaW5saW5lQm94TG9naWNhbFRvcCkgfTsKLSAgICAgICAgfQorICAgICAgICBhdXRv
JiBsYXlvdXRCb3ggPSBpbmxpbmVCb3gtPmxheW91dEJveCgpOworICAgICAgICBzd2l0Y2ggKGxh
eW91dEJveC5zdHlsZSgpLnZlcnRpY2FsQWxpZ24oKSkgewogICAgICAgICBjYXNlIFZlcnRpY2Fs
QWxpZ246OlRvcDoKLSAgICAgICAgICAgIHJldHVybiB7IHsgfSwgc3RkOjptYXgoMC4wZiwgaW5s
aW5lQm94LmxvZ2ljYWxIZWlnaHQoKSAtIGNvbnRlbnRMb2dpY2FsSGVpZ2h0KSB9OwotICAgICAg
ICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRvbTogewotICAgICAgICAgICAgYXV0byBpbmxpbmVC
b3hMb2dpY2FsVG9wID0gY29udGVudExvZ2ljYWxIZWlnaHQgLSBpbmxpbmVCb3gubG9naWNhbEhl
aWdodCgpOwotICAgICAgICAgICAgcmV0dXJuIHsgaW5saW5lQm94TG9naWNhbFRvcCwgc3RkOjpt
YXgoMC4wZiwgLWlubGluZUJveExvZ2ljYWxUb3ApIH07CisgICAgICAgIGNhc2UgVmVydGljYWxB
bGlnbjo6Qm90dG9tOgorICAgICAgICAgICAgLy8gdG9wIGFuZCBib3R0b20gYWxpZ25tZW50cyBv
bmx5IHN0cmV0Y2ggdGhlIGxpbmUgYm94LiBUaGV5IGRvbid0IHN0cmV0Y2ggYW55IG9mIHRoZSBp
bmxpbmUgYm94ZXMsIG5vdCBldmVuIHRoZSByb290IGlubGluZSBib3guCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0VG9wOiB7CisgICAgICAgICAg
ICBhdXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBpbmxpbmVCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94
LnBhcmVudCgpKTsKKyAgICAgICAgICAgIGF1dG8gcGFyZW50VGV4dExvZ2ljYWxUb3AgPSBwYXJl
bnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIHBhcmVudElubGluZUJveC5sYXlvdXRCb3goKS5zdHls
ZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KCk7CisgICAgICAgICAgICBwYXJlbnRJbmxpbmVCb3gu
c2V0TG9naWNhbEhlaWdodChzdGQ6Om1heChwYXJlbnRJbmxpbmVCb3gubG9naWNhbEhlaWdodCgp
LCBwYXJlbnRUZXh0TG9naWNhbFRvcCArIGlubGluZUJveC0+bG9naWNhbEhlaWdodCgpKSk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246
Ok1pZGRsZTogewotICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hMb2dpY2FsVG9wID0gSW5saW5l
TGF5b3V0VW5pdCB7IH07Ci0gICAgICAgICAgICBpZiAoJmxheW91dEJveC5wYXJlbnQoKSA9PSAm
Zm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCkpCi0gICAgICAgICAgICAgICAgaW5saW5lQm94TG9n
aWNhbFRvcCA9IGFsaWdubWVudEJhc2VsaW5lIC0gKGlubGluZUJveC5sb2dpY2FsSGVpZ2h0KCkg
LyAyICsgZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCkuc3R5bGUoKS5mb250TWV0cmljcygpLnhI
ZWlnaHQoKSAvIDIpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXV0byYg
cGFyZW50SW5saW5lQm94ID0gaW5saW5lQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5wYXJlbnQo
KSk7Ci0gICAgICAgICAgICAgICAgaW5saW5lQm94TG9naWNhbFRvcCA9IHN0ZDo6bWF4KDAuMGYs
IHBhcmVudElubGluZUJveC5sb2dpY2FsVG9wKCkpICsgKHBhcmVudElubGluZUJveC5iYXNlbGlu
ZSgpIC0gKGlubGluZUJveC5sb2dpY2FsSGVpZ2h0KCkgLyAyICsgbGF5b3V0Qm94LnBhcmVudCgp
LnN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyKSk7CisgICAgICAgIGNhc2UgVmVy
dGljYWxBbGlnbjo6VGV4dEJvdHRvbTogeworICAgICAgICAgICAgYXV0byYgcGFyZW50SW5saW5l
Qm94ID0gaW5saW5lQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5wYXJlbnQoKSk7CisgICAgICAg
ICAgICBhdXRvIHBhcmVudFRleHRMb2dpY2FsQm90dG9tID0gcGFyZW50SW5saW5lQm94LmJhc2Vs
aW5lKCkgKyBwYXJlbnRJbmxpbmVCb3guZGVzY2VudCgpLnZhbHVlT3IoSW5saW5lTGF5b3V0VW5p
dCB7IH0pOworICAgICAgICAgICAgYXV0byBvdmVyZmxvdyA9IHN0ZDo6bWF4KDAuMGYsIGlubGlu
ZUJveC0+bG9naWNhbEhlaWdodCgpIC0gcGFyZW50VGV4dExvZ2ljYWxCb3R0b20pOworICAgICAg
ICAgICAgaWYgKG92ZXJmbG93KSB7CisgICAgICAgICAgICAgICAgLy8gVGV4dEJvdHRvbSBwdXNo
ZXMgdGhlIGJhc2VsaW5lIGRvd253YXJkIHRoZSBzYW1lIHdheSAnYm90dG9tJyBkb2VzLgorICAg
ICAgICAgICAgICAgIHBhcmVudElubGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KHBhcmVudElubGlu
ZUJveC5sb2dpY2FsSGVpZ2h0KCkgKyBvdmVyZmxvdyk7CisgICAgICAgICAgICAgICAgcGFyZW50
SW5saW5lQm94LnNldEJhc2VsaW5lKHBhcmVudElubGluZUJveC5iYXNlbGluZSgpICsgb3ZlcmZs
b3cpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHsgaW5saW5lQm94TG9naWNh
bFRvcCwgc3RkOjptYXgoMC4wZiwgLWlubGluZUJveExvZ2ljYWxUb3ApIH07CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRUb3A6
IHsKLSAgICAgICAgICAgIGF1dG8mIHBhcmVudExheW91dEJveCA9IGxheW91dEJveC5wYXJlbnQo
KTsKLSAgICAgICAgICAgIGF1dG8gaW5saW5lQm94TG9naWNhbFRvcCA9ICZwYXJlbnRMYXlvdXRC
b3ggPT0gJmZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpID8gbV9yb290SW5saW5lQm94LmxvZ2lj
YWxUb3AoKSA6IGlubGluZUJveEZvckxheW91dEJveChsYXlvdXRCb3gucGFyZW50KCkpLmxvZ2lj
YWxUb3AoKTsKLSAgICAgICAgICAgIGF1dG8gb3ZlcmZsb3cgPSBzdGQ6Om1heCgwLjBmLCAtaW5s
aW5lQm94TG9naWNhbFRvcCkgKyBpbmxpbmVCb3gubG9naWNhbEhlaWdodCgpICAtIGNvbnRlbnRM
b2dpY2FsSGVpZ2h0OwotICAgICAgICAgICAgcmV0dXJuIHsgaW5saW5lQm94TG9naWNhbFRvcCwg
c3RkOjptYXgoMC4wZiwgb3ZlcmZsb3cpIH07CisgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6
QmFzZWxpbmU6IHsKKyAgICAgICAgICAgIGF1dG8mIHBhcmVudElubGluZUJveCA9IGlubGluZUJv
eEZvckxheW91dEJveChsYXlvdXRCb3gucGFyZW50KCkpOworICAgICAgICAgICAgYXV0byBiYXNl
bGluZU92ZXJmbG93ID0gc3RkOjptYXgoMC4wZiwgaW5saW5lQm94LT5iYXNlbGluZSgpIC0gcGFy
ZW50SW5saW5lQm94LmJhc2VsaW5lKCkpOworICAgICAgICAgICAgaWYgKGJhc2VsaW5lT3ZlcmZs
b3cpIHsKKyAgICAgICAgICAgICAgICBwYXJlbnRJbmxpbmVCb3guc2V0QmFzZWxpbmUocGFyZW50
SW5saW5lQm94LmJhc2VsaW5lKCkgKyBiYXNlbGluZU92ZXJmbG93KTsKKyAgICAgICAgICAgICAg
ICBwYXJlbnRJbmxpbmVCb3guc2V0TG9naWNhbEhlaWdodChwYXJlbnRJbmxpbmVCb3gubG9naWNh
bEhlaWdodCgpICsgYmFzZWxpbmVPdmVyZmxvdyk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBhdXRvIHBhcmVudExpbmVCb3hCZWxvd0Jhc2VsaW5lID0gcGFyZW50SW5saW5lQm94LmxvZ2lj
YWxIZWlnaHQoKSAtIHBhcmVudElubGluZUJveC5iYXNlbGluZSgpOworICAgICAgICAgICAgYXV0
byBpbmxpbmVCb3hCZWxvd0Jhc2VsaW5lID0gaW5saW5lQm94LT5sb2dpY2FsSGVpZ2h0KCkgLSBp
bmxpbmVCb3gtPmJhc2VsaW5lKCk7CisgICAgICAgICAgICBhdXRvIGJlbG93QmFzZWxpbmVPdmVy
ZmxvdyA9IHN0ZDo6bWF4KDAuMGYsIGlubGluZUJveEJlbG93QmFzZWxpbmUgLSBwYXJlbnRMaW5l
Qm94QmVsb3dCYXNlbGluZSk7CisgICAgICAgICAgICBpZiAoYmVsb3dCYXNlbGluZU92ZXJmbG93
KQorICAgICAgICAgICAgICAgIHBhcmVudElubGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KHBhcmVu
dElubGluZUJveC5sb2dpY2FsSGVpZ2h0KCkgKyBiZWxvd0Jhc2VsaW5lT3ZlcmZsb3cpOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpU
ZXh0Qm90dG9tOiB7CisgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TWlkZGxlOiB7CiAgICAg
ICAgICAgICBhdXRvJiBwYXJlbnRMYXlvdXRCb3ggPSBsYXlvdXRCb3gucGFyZW50KCk7Ci0gICAg
ICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExvZ2ljYWxCb3R0b20gPSAmcGFyZW50TGF5b3V0
Qm94ID09ICZmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKSA/IG1fcm9vdElubGluZUJveC5sb2dp
Y2FsQm90dG9tKCkgOiBpbmxpbmVCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94LnBhcmVudCgpKS5s
b2dpY2FsQm90dG9tKCk7Ci0gICAgICAgICAgICBhdXRvIGlubGluZUJveExvZ2ljYWxUb3AgPSBw
YXJlbnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tIC0gaW5saW5lQm94LmxvZ2ljYWxIZWlnaHQoKTsK
LSAgICAgICAgICAgIGF1dG8gb3ZlcmZsb3cgPSBzdGQ6Om1heCgwLjBmLCAtaW5saW5lQm94TG9n
aWNhbFRvcCkgKyBpbmxpbmVCb3gubG9naWNhbEhlaWdodCgpICAtIGNvbnRlbnRMb2dpY2FsSGVp
Z2h0OwotICAgICAgICAgICAgcmV0dXJuIHsgaW5saW5lQm94TG9naWNhbFRvcCwgc3RkOjptYXgo
MC4wZiwgb3ZlcmZsb3cpIH07CisgICAgICAgICAgICBhdXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBp
bmxpbmVCb3hGb3JMYXlvdXRCb3gocGFyZW50TGF5b3V0Qm94KTsKKyAgICAgICAgICAgIGF1dG8g
bG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gKGlubGluZUJveC0+bG9n
aWNhbEhlaWdodCgpIC8gMiArIHBhcmVudExheW91dEJveC5zdHlsZSgpLmZvbnRNZXRyaWNzKCku
eEhlaWdodCgpIC8gMik7CisgICAgICAgICAgICBpZiAobG9naWNhbFRvcCA8IDApIHsKKyAgICAg
ICAgICAgICAgICBhdXRvIG92ZXJmbG93ID0gLWxvZ2ljYWxUb3A7CisgICAgICAgICAgICAgICAg
Ly8gQ2hpbGQgaW5saW5lIGJveCB3aXRoIG1pZGRsZSBhbGlnbm1lbnQgcHVzaGVzIHRoZSBiYXNl
bGluZSBkb3duIHdoZW4gb3ZlcmZsb3dzLiAKKyAgICAgICAgICAgICAgICBwYXJlbnRJbmxpbmVC
b3guc2V0QmFzZWxpbmUocGFyZW50SW5saW5lQm94LmJhc2VsaW5lKCkgKyBvdmVyZmxvdyk7Cisg
ICAgICAgICAgICAgICAgcGFyZW50SW5saW5lQm94LnNldExvZ2ljYWxIZWlnaHQocGFyZW50SW5s
aW5lQm94LmxvZ2ljYWxIZWlnaHQoKSArIG92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICBsb2dp
Y2FsVG9wID0geyB9OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXV0byBsb2dpY2FsQm90
dG9tID0gbG9naWNhbFRvcCArIGlubGluZUJveC0+bG9naWNhbEhlaWdodCgpOworICAgICAgICAg
ICAgcGFyZW50SW5saW5lQm94LnNldExvZ2ljYWxIZWlnaHQoc3RkOjptYXgocGFyZW50SW5saW5l
Qm94LmxvZ2ljYWxIZWlnaHQoKSwgbG9naWNhbEJvdHRvbSkpOworICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1Q
TEVNRU5URURfWUVUKCk7Ci0gICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTGluZUJveDo6YWxpZ25JbmxpbmVCb3hl
c1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUhlaWdodCgpCit7CisgICAgLy8gSW5saW5lIGJveGVz
IGFyZSBpbiB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gb2YgdGhlIGxpbmUgYm94IChhbmQgbm90IGlu
IHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGVpciBwYXJlbnRzKS4KKyAgICAvLyBTdGFydGlu
ZyB3aXRoIHRoZSByb290IGlubGluZSBib3gsIHBvc2l0aW9uIHRoZSBhbmNlc3RvcnMgZmlyc3Qg
c28gdGhhdCB0aGUgZGVzY2VuZGFudCBsaW5lIGJveGVzIHNlZSBhYnNvbHV0ZSB2ZXJ0aWNhbCBw
b3NpdGlvbnMuCisgICAgYXV0byBjb250ZW50TG9naWNhbEJvdHRvbSA9IElubGluZUxheW91dFVu
aXQgeyB9OworICAgIGF1dG8gYWxpZ25Sb290SW5saW5lQm94ID0gWyZdIHsKKyAgICAgICAgY29u
dGVudExvZ2ljYWxCb3R0b20gPSBtX3Jvb3RJbmxpbmVCb3gubG9naWNhbEhlaWdodCgpOworICAg
ICAgICBmb3IgKGF1dG8mIGlubGluZUJveCA6IG1faW5saW5lQm94TGlzdCkgeworICAgICAgICAg
ICAgYXV0byB2ZXJ0aWNhbEFsaWduID0gaW5saW5lQm94LT5sYXlvdXRCb3goKS5zdHlsZSgpLnZl
cnRpY2FsQWxpZ24oKTsKKyAgICAgICAgICAgIGlmICh2ZXJ0aWNhbEFsaWduID09IFZlcnRpY2Fs
QWxpZ246OkJvdHRvbSkgeworICAgICAgICAgICAgICAgIC8vIGJvdHRvbSBhbGlnbiBhbHdheXMg
cHVzaGVzIHRoZSByb290IGlubGluZSBib3ggZG93bndhcmRzLgorICAgICAgICAgICAgICAgIGF1
dG8gb3ZlcmZsb3cgPSBzdGQ6Om1heCgwLjBmLCBpbmxpbmVCb3gtPmxvZ2ljYWxCb3R0b20oKSAt
IG1fcm9vdElubGluZUJveC5sb2dpY2FsQm90dG9tKCkpOworICAgICAgICAgICAgICAgIG1fcm9v
dElubGluZUJveC5zZXRMb2dpY2FsVG9wKG1fcm9vdElubGluZUJveC5sb2dpY2FsVG9wKCkgKyBv
dmVyZmxvdyk7CisgICAgICAgICAgICAgICAgY29udGVudExvZ2ljYWxCb3R0b20gKz0gb3ZlcmZs
b3c7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHZlcnRpY2FsQWxpZ24gPT0gVmVydGljYWxBbGln
bjo6VG9wKQorICAgICAgICAgICAgICAgIGNvbnRlbnRMb2dpY2FsQm90dG9tID0gc3RkOjptYXgo
Y29udGVudExvZ2ljYWxCb3R0b20sIGlubGluZUJveC0+bG9naWNhbEhlaWdodCgpKTsKICAgICAg
ICAgfQogICAgIH07CisgICAgYWxpZ25Sb290SW5saW5lQm94KCk7CiAKLSAgICBhdXRvIGNvbXB1
dGVMaW5lQm94SGVpZ2h0ID0gWyZdKGF1dG8mIGlubGluZUJveCwgT3B0aW9uYWw8VmVydGljYWxB
bGlnbj4gb3ZlcnJpZGVWZXJ0aWNhbEFsaWduTW9kZSA9IFdURjo6bnVsbG9wdCkgewotICAgICAg
ICBhdXRvJiBsYXlvdXRCb3ggPSBpbmxpbmVCb3gubGF5b3V0Qm94KCk7Ci0gICAgICAgIGF1dG8g
dmVydGljYWxBbGlnbk1vZGUgPSBvdmVycmlkZVZlcnRpY2FsQWxpZ25Nb2RlLnZhbHVlT3IobGF5
b3V0Qm94LnN0eWxlKCkudmVydGljYWxBbGlnbigpKTsKLSAgICAgICAgYXV0byBsb2dpY2FsVG9w
QW5kVmVydGljYWxPdmVyZmxvdyA9IGNvbXB1dGVkTG9naWNhbFRvcEFuZFZlcnRpY2FsT3ZlcmZs
b3coaW5saW5lQm94LCB2ZXJ0aWNhbEFsaWduTW9kZSk7Ci0gICAgICAgIHN3aXRjaCAodmVydGlj
YWxBbGlnbk1vZGUpIHsKKyAgICBmb3IgKGF1dG8mIGlubGluZUJveCA6IG1faW5saW5lQm94TGlz
dCkgeworICAgICAgICBhdXRvIGlubGluZUJveExvZ2ljYWxUb3AgPSBJbmxpbmVMYXlvdXRVbml0
IHsgfTsKKyAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lQm94LT5sYXlvdXRCb3goKTsK
KyAgICAgICAgc3dpdGNoIChsYXlvdXRCb3guc3R5bGUoKS52ZXJ0aWNhbEFsaWduKCkpIHsKICAg
ICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZTogewotICAgICAgICAgICAgaWYgKGxv
Z2ljYWxUb3BBbmRWZXJ0aWNhbE92ZXJmbG93LnZlcnRpY2FsT3ZlcmZsb3cpIHsKLSAgICAgICAg
ICAgICAgICBjb250ZW50TG9naWNhbEhlaWdodCArPSBsb2dpY2FsVG9wQW5kVmVydGljYWxPdmVy
Zmxvdy52ZXJ0aWNhbE92ZXJmbG93OwotICAgICAgICAgICAgICAgIGFsaWdubWVudEJhc2VsaW5l
ICs9IGxvZ2ljYWxUb3BBbmRWZXJ0aWNhbE92ZXJmbG93LnZlcnRpY2FsT3ZlcmZsb3c7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBhdXRvIGlubGluZUJveExvZ2ljYWxCb3R0b20gPSBzdGQ6
Om1heCgwLjBmLCBsb2dpY2FsVG9wQW5kVmVydGljYWxPdmVyZmxvdy5sb2dpY2FsVG9wKSArIGlu
bGluZUJveC5sb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgICAgICBhdXRvIG92ZXJmbG93ID0gaW5s
aW5lQm94TG9naWNhbEJvdHRvbSAtIGNvbnRlbnRMb2dpY2FsSGVpZ2h0OwotICAgICAgICAgICAg
aWYgKG92ZXJmbG93ID4gMCkKLSAgICAgICAgICAgICAgICBjb250ZW50TG9naWNhbEhlaWdodCAr
PSBvdmVyZmxvdzsKKyAgICAgICAgICAgIGF1dG8mIHBhcmVudElubGluZUJveCA9IGlubGluZUJv
eEZvckxheW91dEJveChsYXlvdXRCb3gucGFyZW50KCkpOworICAgICAgICAgICAgaW5saW5lQm94
TG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5sb2dpY2FsVG9wKCkgKyBwYXJlbnRJbmxpbmVC
b3guYmFzZWxpbmUoKSAtIGlubGluZUJveC0+YmFzZWxpbmUoKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VG9wOiB7Ci0gICAgICAg
ICAgICAvLyB2ZXJ0aWNhbC1hbGlnbjogdG9wIHN0cmV0Y2hlcyB0aGUgbGluZSBidXQgbmV2ZXIg
cHVzaGVzIHRoZSBiYXNlbGluZSBkb3duLgotICAgICAgICAgICAgaWYgKGxvZ2ljYWxUb3BBbmRW
ZXJ0aWNhbE92ZXJmbG93LnZlcnRpY2FsT3ZlcmZsb3cpCi0gICAgICAgICAgICAgICAgY29udGVu
dExvZ2ljYWxIZWlnaHQgKz0gbG9naWNhbFRvcEFuZFZlcnRpY2FsT3ZlcmZsb3cudmVydGljYWxP
dmVyZmxvdzsKKyAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUb3A6CisgICAgICAgICAgICBp
bmxpbmVCb3hMb2dpY2FsVG9wID0gSW5saW5lTGF5b3V0VW5pdCB7IH07CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRvbTogewot
ICAgICAgICAgICAgLy8gdmVydGljYWwtYWxpZ246IGJvdHRvbSBzdHJldGNoZXMgdGhlIGxpbmUg
YW5kIHB1c2hlcyB0aGUgYmFzZWxpbmUgZG93biBhcyB3ZWxsLgotICAgICAgICAgICAgaWYgKGxv
Z2ljYWxUb3BBbmRWZXJ0aWNhbE92ZXJmbG93LnZlcnRpY2FsT3ZlcmZsb3cpIHsKLSAgICAgICAg
ICAgICAgICBjb250ZW50TG9naWNhbEhlaWdodCArPSBsb2dpY2FsVG9wQW5kVmVydGljYWxPdmVy
Zmxvdy52ZXJ0aWNhbE92ZXJmbG93OwotICAgICAgICAgICAgICAgIGFsaWdubWVudEJhc2VsaW5l
ICs9IGxvZ2ljYWxUb3BBbmRWZXJ0aWNhbE92ZXJmbG93LnZlcnRpY2FsT3ZlcmZsb3c7Ci0gICAg
ICAgICAgICB9CisgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6Qm90dG9tOgorICAgICAgICAg
ICAgaW5saW5lQm94TG9naWNhbFRvcCA9IGNvbnRlbnRMb2dpY2FsQm90dG9tIC0gaW5saW5lQm94
LT5sb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgICAg
ICBjYXNlIFZlcnRpY2FsQWxpZ246Ok1pZGRsZTogewotICAgICAgICAgICAgaWYgKGxvZ2ljYWxU
b3BBbmRWZXJ0aWNhbE92ZXJmbG93LnZlcnRpY2FsT3ZlcmZsb3cpIHsKLSAgICAgICAgICAgICAg
ICBjb250ZW50TG9naWNhbEhlaWdodCArPSBsb2dpY2FsVG9wQW5kVmVydGljYWxPdmVyZmxvdy52
ZXJ0aWNhbE92ZXJmbG93OwotICAgICAgICAgICAgICAgIGFsaWdubWVudEJhc2VsaW5lICs9IGxv
Z2ljYWxUb3BBbmRWZXJ0aWNhbE92ZXJmbG93LnZlcnRpY2FsT3ZlcmZsb3c7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBhdXRvIGlubGluZUJveExvZ2ljYWxCb3R0b20gPSBzdGQ6Om1heCgw
LjBmLCBsb2dpY2FsVG9wQW5kVmVydGljYWxPdmVyZmxvdy5sb2dpY2FsVG9wKSArIGlubGluZUJv
eC5sb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgICAgICBhdXRvIG92ZXJmbG93ID0gaW5saW5lQm94
TG9naWNhbEJvdHRvbSAtIGNvbnRlbnRMb2dpY2FsSGVpZ2h0OwotICAgICAgICAgICAgaWYgKG92
ZXJmbG93ID4gMCkKLSAgICAgICAgICAgICAgICBjb250ZW50TG9naWNhbEhlaWdodCArPSBvdmVy
ZmxvdzsKKyAgICAgICAgICAgIGF1dG8mIHBhcmVudExheW91dEJveCA9IGxheW91dEJveC5wYXJl
bnQoKTsKKyAgICAgICAgICAgIGF1dG8mIHBhcmVudElubGluZUJveCA9IGlubGluZUJveEZvckxh
eW91dEJveChwYXJlbnRMYXlvdXRCb3gpOworICAgICAgICAgICAgaW5saW5lQm94TG9naWNhbFRv
cCA9IHBhcmVudElubGluZUJveC5sb2dpY2FsVG9wKCkgKyBwYXJlbnRJbmxpbmVCb3guYmFzZWxp
bmUoKSAtIChpbmxpbmVCb3gtPmxvZ2ljYWxIZWlnaHQoKSAvIDIgKyBwYXJlbnRMYXlvdXRCb3gu
c3R5bGUoKS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAvIDIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0VG9wOgotICAgICAg
ICAgICAgaWYgKGxvZ2ljYWxUb3BBbmRWZXJ0aWNhbE92ZXJmbG93LnZlcnRpY2FsT3ZlcmZsb3cp
Ci0gICAgICAgICAgICAgICAgY29udGVudExvZ2ljYWxIZWlnaHQgKz0gbG9naWNhbFRvcEFuZFZl
cnRpY2FsT3ZlcmZsb3cudmVydGljYWxPdmVyZmxvdzsKKyAgICAgICAgY2FzZSBWZXJ0aWNhbEFs
aWduOjpUZXh0VG9wOiB7CisgICAgICAgICAgICBhdXRvJiBwYXJlbnRMYXlvdXRCb3ggPSBsYXlv
dXRCb3gucGFyZW50KCk7CisgICAgICAgICAgICBhdXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBpbmxp
bmVCb3hGb3JMYXlvdXRCb3gocGFyZW50TGF5b3V0Qm94KTsKKyAgICAgICAgICAgIGlubGluZUJv
eExvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gubG9naWNhbFRvcCgpICsgcGFyZW50SW5saW5l
Qm94LmJhc2VsaW5lKCkgLSBwYXJlbnRMYXlvdXRCb3guc3R5bGUoKS5mb250TWV0cmljcygpLmFz
Y2VudCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6
VGV4dEJvdHRvbToKLSAgICAgICAgICAgIGlmIChsb2dpY2FsVG9wQW5kVmVydGljYWxPdmVyZmxv
dy52ZXJ0aWNhbE92ZXJmbG93KQotICAgICAgICAgICAgICAgIGNvbnRlbnRMb2dpY2FsSGVpZ2h0
ICs9IGxvZ2ljYWxUb3BBbmRWZXJ0aWNhbE92ZXJmbG93LnZlcnRpY2FsT3ZlcmZsb3c7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9tOiB7CisgICAgICAg
ICAgICBhdXRvJiBwYXJlbnRMYXlvdXRCb3ggPSBsYXlvdXRCb3gucGFyZW50KCk7CisgICAgICAg
ICAgICBhdXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBpbmxpbmVCb3hGb3JMYXlvdXRCb3gocGFyZW50
TGF5b3V0Qm94KTsKKyAgICAgICAgICAgIGF1dG8gcGFyZW50VGV4dExvZ2ljYWxCb3R0b20gPSBw
YXJlbnRJbmxpbmVCb3gubG9naWNhbFRvcCgpICsgcGFyZW50SW5saW5lQm94LmJhc2VsaW5lKCkg
KyBwYXJlbnRMYXlvdXRCb3guc3R5bGUoKS5mb250TWV0cmljcygpLmRlc2NlbnQoKTsKKyAgICAg
ICAgICAgIGlubGluZUJveExvZ2ljYWxUb3AgPSBwYXJlbnRUZXh0TG9naWNhbEJvdHRvbSAtIGlu
bGluZUJveC0+bG9naWNhbEhlaWdodCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVU
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpbmxpbmVCb3guc2V0
TG9naWNhbFRvcChsb2dpY2FsVG9wQW5kVmVydGljYWxPdmVyZmxvdy5sb2dpY2FsVG9wKTsKLSAg
ICB9OwotCi0gICAgYXV0byBzaG91bGRSb290SW5saW5lQm94U3RyZXRjaExpbmVCb3ggPSAhcmVj
b21tZW5kZWRMaW5lQm94SGVpZ2h0ICYmICFtX3Jvb3RJbmxpbmVCb3guaXNWaXN1YWxseUVtcHR5
KCk7Ci0gICAgaWYgKHNob3VsZFJvb3RJbmxpbmVCb3hTdHJldGNoTGluZUJveCkKLSAgICAgICAg
Y29tcHV0ZUxpbmVCb3hIZWlnaHQobV9yb290SW5saW5lQm94LCBtYWtlT3B0aW9uYWwoVmVydGlj
YWxBbGlnbjo6QmFzZWxpbmUpKTsKLSAgICBmb3IgKGF1dG8qIGlubGluZUJveCA6IG1faW5saW5l
Qm94TGlzdCkgewotICAgICAgICBhdXRvIHNob3VsZElubGluZUJveFN0cmV0Y2hMaW5lQm94ID0g
IWlubGluZUJveC0+aXNWaXN1YWxseUVtcHR5KCkgJiYgKCFyZWNvbW1lbmRlZExpbmVCb3hIZWln
aHQgfHwgaW5saW5lQm94LT5pc0F0b21pYygpKTsKLSAgICAgICAgaWYgKHNob3VsZElubGluZUJv
eFN0cmV0Y2hMaW5lQm94KQotICAgICAgICAgICAgY29tcHV0ZUxpbmVCb3hIZWlnaHQoKmlubGlu
ZUJveCk7CisgICAgICAgIGlubGluZUJveC0+c2V0TG9naWNhbFRvcChpbmxpbmVCb3hMb2dpY2Fs
VG9wKTsKICAgICB9CiAKLSAgICBhdXRvIGxpbmVCb3hMb2dpY2FsSGVpZ2h0ID0gc3RkOjptYXgo
cmVjb21tZW5kZWRMaW5lQm94SGVpZ2h0LnZhbHVlT3IoSW5saW5lTGF5b3V0VW5pdCB7IH0pLCBj
b250ZW50TG9naWNhbEhlaWdodCk7Ci0gICAgbV9yZWN0LnNldEhlaWdodChsaW5lQm94TG9naWNh
bEhlaWdodCk7Ci0KLSAgICBtX3Jvb3RJbmxpbmVCb3guc2V0TG9naWNhbFRvcChjb21wdXRlZExv
Z2ljYWxUb3BBbmRWZXJ0aWNhbE92ZXJmbG93KG1fcm9vdElubGluZUJveCwgVmVydGljYWxBbGln
bjo6QmFzZWxpbmUpLmxvZ2ljYWxUb3ApOwotICAgIGZvciAoYXV0byogaW5saW5lQm94IDogbV9p
bmxpbmVCb3hMaXN0KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbmNvcnJlY3QgdmVydGljYWwgcG9z
aXRpb24gd2hlbiB0aGUgY2hpbGQgaW5saW5lIGJveCBzdHJldGNoZXMgdGhlIHBhcmVudC4KLSAg
ICAgICAgaW5saW5lQm94LT5zZXRMb2dpY2FsVG9wKGNvbXB1dGVkTG9naWNhbFRvcEFuZFZlcnRp
Y2FsT3ZlcmZsb3coKmlubGluZUJveCkubG9naWNhbFRvcCk7Ci0gICAgfQorICAgIGF1dG8gY29s
bGFwc2VMaW5lQm94Q29udGVudElmTmVlZGVkID0gWyZdIHsKKyAgICAgICAgaWYgKCFtX3Jvb3RJ
bmxpbmVCb3guaXNWaXN1YWxseUVtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGF1dG8gY29sbGFwc2VkQ29udGVudExvZ2ljYWxUb3AgPSBjb250ZW50TG9naWNhbEJvdHRvbTsK
KyAgICAgICAgYXV0byBjb2xsYXBzZWRDb250ZW50TG9naWNhbEJvdHRvbSA9IElubGluZUxheW91
dFVuaXQgeyB9OworICAgICAgICBmb3IgKGF1dG8mIGlubGluZUJveCA6IG1faW5saW5lQm94TGlz
dCkgeworICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbEFsaWduID0gaW5saW5lQm94LT5sYXlvdXRC
b3goKS5zdHlsZSgpLnZlcnRpY2FsQWxpZ24oKTsKKyAgICAgICAgICAgIGF1dG8gc3RyZXRjaGVz
TGluZUJveCA9IHZlcnRpY2FsQWxpZ24gPT0gVmVydGljYWxBbGlnbjo6Qm90dG9tIHx8IHZlcnRp
Y2FsQWxpZ24gPT0gVmVydGljYWxBbGlnbjo6VG9wIHx8ICZpbmxpbmVCb3gtPmxheW91dEJveCgp
LnBhcmVudCgpID09ICZtX3Jvb3RJbmxpbmVCb3gubGF5b3V0Qm94KCk7CisgICAgICAgICAgICBp
ZiAoIXN0cmV0Y2hlc0xpbmVCb3gpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICBpZiAoaW5saW5lQm94LT5pc1Zpc3VhbGx5RW1wdHkoKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIGNvbGxhcHNlZENvbnRlbnRMb2dpY2FsVG9wID0gc3RkOjpt
aW4oY29sbGFwc2VkQ29udGVudExvZ2ljYWxUb3AsIGlubGluZUJveC0+bG9naWNhbFRvcCgpKTsK
KyAgICAgICAgICAgIGNvbGxhcHNlZENvbnRlbnRMb2dpY2FsQm90dG9tID0gc3RkOjptYXgoY29s
bGFwc2VkQ29udGVudExvZ2ljYWxCb3R0b20sIGlubGluZUJveC0+bG9naWNhbEJvdHRvbSgpKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoY29sbGFwc2VkQ29udGVudExvZ2ljYWxUb3AgPD0gMCkg
eworICAgICAgICAgICAgY29udGVudExvZ2ljYWxCb3R0b20gPSBjb2xsYXBzZWRDb250ZW50TG9n
aWNhbEJvdHRvbTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb250
ZW50TG9naWNhbEJvdHRvbSA9IElubGluZUxheW91dFVuaXQgeyB9OworICAgICAgICBmb3IgKGF1
dG8mIGlubGluZUJveCA6IG1faW5saW5lQm94TGlzdCkgeworICAgICAgICAgICAgaW5saW5lQm94
LT5zZXRMb2dpY2FsVG9wKGlubGluZUJveC0+bG9naWNhbFRvcCgpIC0gY29sbGFwc2VkQ29udGVu
dExvZ2ljYWxUb3ApOworICAgICAgICAgICAgY29udGVudExvZ2ljYWxCb3R0b20gPSBzdGQ6Om1h
eChjb250ZW50TG9naWNhbEJvdHRvbSwgaW5saW5lQm94LT5sb2dpY2FsQm90dG9tKCkpOworICAg
ICAgICB9CisgICAgfTsKKyAgICBjb2xsYXBzZUxpbmVCb3hDb250ZW50SWZOZWVkZWQoKTsKKyAg
ICAvLyBDb21wdXRlIHRoZSBsaW5lIGJveCBoZWlnaHQuIEl0J3MgZWl0aGVyIHRoZSBsaW5lLWhl
aWdodCB2YWx1ZSAobmVnYXRpdmUgdmFsdWUgbWVhbnMgbGluZSBoZWlnaHQgaXQgbm90IHNldCkg
b3IKKyAgICAvLyBtYXhpbXVtIG9mIHRoZSByb290IGlubGluZSBib3gncyBib3R0b20gYW5kIHRo
ZSB0b3AgYWxpZ25lZCBjb250ZW50IGhlaWdodC4KKyAgICBhdXRvJiByb290U3R5bGUgPSBmb3Jt
YXR0aW5nQ29udGV4dCgpLnJvb3QoKS5zdHlsZSgpOworICAgIGF1dG8gcmVjb21tZW5kZWRMaW5l
Qm94SGVpZ2h0ID0gV1RGOjpPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7IH07CisgICAgaWYg
KCFyb290U3R5bGUubGluZUhlaWdodCgpLmlzTmVnYXRpdmUoKSkKKyAgICAgICAgcmVjb21tZW5k
ZWRMaW5lQm94SGVpZ2h0ID0gcm9vdFN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpOworICAgIG1f
cmVjdC5zZXRIZWlnaHQocmVjb21tZW5kZWRMaW5lQm94SGVpZ2h0LnZhbHVlT3IoY29udGVudExv
Z2ljYWxCb3R0b20pKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oCmluZGV4IDkwYjM4ZTAwNDhlNGU3MjFj
ZDNmZjNjYWM1YWU5YWJmYzlkMTk4MjguLjI0MzU0YzgyMjBiYzE2MzFmNTJlYmExZDJlNDlkZDI0
NzdhYzgxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQm94LmgKQEAgLTU5LDkgKzU5LDYgQEAgcHVibGljOgogICAgICAg
ICBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlbGluZTsg
fQogICAgICAgICBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBkZXNjZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXNjZW50OyB9CiAKLSAgICAgICAgdm9pZCBzZXRMb2dpY2FsVG9wKElubGluZUxh
eW91dFVuaXQgbG9naWNhbFRvcCkgeyBtX2xvZ2ljYWxSZWN0LnNldFRvcChsb2dpY2FsVG9wKTsg
fQotICAgICAgICB2b2lkIHNldExvZ2ljYWxXaWR0aChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxX
aWR0aCkgeyBtX2xvZ2ljYWxSZWN0LnNldFdpZHRoKGxvZ2ljYWxXaWR0aCk7IH0KLQogICAgICAg
ICBib29sIGlzVmlzdWFsbHlFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNWaXN1YWxseUVtcHR5
OyB9CiAgICAgICAgIHZvaWQgc2V0SXNWaXN1YWxseU5vbkVtcHR5KCkgeyBtX2lzVmlzdWFsbHlF
bXB0eSA9IGZhbHNlOyB9CiAgICAgICAgIGJvb2wgaXNBdG9taWMoKSBjb25zdCB7IHJldHVybiBt
X2lzQXRvbWljOyB9CkBAIC02OSw2ICs2NiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IEJv
eCYgbGF5b3V0Qm94KCkgY29uc3QgeyByZXR1cm4gKm1fbGF5b3V0Qm94OyB9CiAKICAgICBwcml2
YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTGluZUJveDsKKworICAgICAgICB2b2lkIHNldExv
Z2ljYWxUb3AoSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSB7IG1fbG9naWNhbFJlY3Quc2V0
VG9wKGxvZ2ljYWxUb3ApOyB9CisgICAgICAgIHZvaWQgc2V0TG9naWNhbFdpZHRoKElubGluZUxh
eW91dFVuaXQgbG9naWNhbFdpZHRoKSB7IG1fbG9naWNhbFJlY3Quc2V0V2lkdGgobG9naWNhbFdp
ZHRoKTsgfQorICAgICAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoSW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsSGVpZ2h0KSB7IG1fbG9naWNhbFJlY3Quc2V0SGVpZ2h0KGxvZ2ljYWxIZWlnaHQpOyB9
CisgICAgICAgIHZvaWQgc2V0QmFzZWxpbmUoSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZSkgeyBt
X2Jhc2VsaW5lID0gYmFzZWxpbmU7IH0KKwogICAgICAgICBXZWFrUHRyPGNvbnN0IEJveD4gbV9s
YXlvdXRCb3g7CiAgICAgICAgIERpc3BsYXk6OklubGluZVJlY3QgbV9sb2dpY2FsUmVjdDsKICAg
ICAgICAgSW5saW5lTGF5b3V0VW5pdCBtX2Jhc2VsaW5lOwpAQCAtOTEsNyArOTUsNyBAQCBwdWJs
aWM6CiAgICAgY29uc3QgRGlzcGxheTo6SW5saW5lUmVjdCYgbG9naWNhbFJlY3QoKSBjb25zdCB7
IHJldHVybiBtX3JlY3Q7IH0KICAgICBjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiBzY3JvbGxh
YmxlT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVPdmVyZmxvdzsgfQogCi0g
ICAgY29uc3QgSW5saW5lQm94JiBpbmxpbmVCb3hGb3JMYXlvdXRCb3goY29uc3QgQm94JikgY29u
c3Q7CisgICAgY29uc3QgSW5saW5lQm94JiBpbmxpbmVCb3hGb3JMYXlvdXRCb3goY29uc3QgQm94
JiBsYXlvdXRCb3gpIGNvbnN0IHsgcmV0dXJuICptX2lubGluZUJveFJlY3RNYXAuZ2V0KCZsYXlv
dXRCb3gpOyB9CiAgICAgRGlzcGxheTo6SW5saW5lUmVjdCBpbmxpbmVSZWN0Rm9yVGV4dFJ1bihj
b25zdCBMaW5lQnVpbGRlcjo6UnVuJikgY29uc3Q7CiAKICAgICAvLyBfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyBsaW5lIGJveCBsb2dpY2FsIHRv
cApAQCAtMTEzLDggKzExNywxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjb25z
dHJ1Y3RJbmxpbmVCb3hlcyhjb25zdCBMaW5lQnVpbGRlcjo6UnVuTGlzdCYsIElzTGluZVZpc3Vh
bGx5RW1wdHkpOwotICAgIHZvaWQgYWxpZ25WZXJ0aWNhbGx5KCk7CisgICAgdm9pZCBjb21wdXRl
SW5saW5lQm94ZXNMb2dpY2FsSGVpZ2h0KCk7CisgICAgdm9pZCBhbGlnbklubGluZUJveGVzVmVy
dGljYWxseUFuZENvbXB1dGVMaW5lSGVpZ2h0KCk7CiAKKyAgICBJbmxpbmVCb3gmIGlubGluZUJv
eEZvckxheW91dEJveChjb25zdCBCb3gmIGxheW91dEJveCkgeyByZXR1cm4gKm1faW5saW5lQm94
UmVjdE1hcC5nZXQoJmxheW91dEJveCk7IH0KICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dCYgZm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUZvcm1hdHRp
bmdDb250ZXh0OyB9CiAgICAgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKCkgY29uc3QgeyByZXR1
cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5sYXlvdXRTdGF0ZSgpOyB9CiAKQEAgLTEyNSw4ICsxMzEs
OCBAQCBwcml2YXRlOgogICAgIElubGluZUJveCBtX3Jvb3RJbmxpbmVCb3g7CiAKICAgICBPcHRp
b25hbDxJbmxpbmVMYXlvdXRVbml0PiBtX2xpbmVBbGlnbm1lbnRPZmZzZXQ7Ci0gICAgSGFzaE1h
cDxjb25zdCBCb3gqLCBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lQm94Pj4gbV9pbmxpbmVCb3hSZWN0
TWFwOwotICAgIFZlY3RvcjxJbmxpbmVCb3gqPiBtX2lubGluZUJveExpc3Q7CisgICAgSGFzaE1h
cDxjb25zdCBCb3gqLCBJbmxpbmVCb3gqPiBtX2lubGluZUJveFJlY3RNYXA7CisgICAgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVCb3g+PiBtX2lubGluZUJveExpc3Q7CiAgICAgY29uc3Qg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDk4
NDczODgwNDNjOTAwODEwZWQxZjc0NTQzZTI4YmRhZGVjOTg2NDUuLjQ1ZDlhYjA2N2NkOWI5ZTAy
N2ZmNmY4ZWYxZWI2MWVhNmJlZjgwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC0xODcsMTAgKzE4NywxMCBAQCBwdWJsaWM6CiAKICNpZiBF
TkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKICAgICB2b2lkIHNldExheW91dEZvcm1h
dHRpbmdDb250ZXh0RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2xheW91dEZvcm1hdHRpbmdD
b250ZXh0RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIGJvb2wgbGF5b3V0Rm9ybWF0dGluZ0Nv
bnRleHRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRGb3JtYXR0aW5nQ29udGV4dEVu
YWJsZWQ7IH0KKyAgICBib29sIGxheW91dEZvcm1hdHRpbmdDb250ZXh0RW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgc2V0TGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJ
bnRlZ3JhdGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9sYXlvdXRGb3JtYXR0aW5nQ29u
dGV4dEludGVncmF0aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIGJvb2wgbGF5b3V0Rm9y
bWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2xheW91
dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkOyB9CisgICAgYm9vbCBsYXlvdXRG
b3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJjNmMx
MjJlNjI5NDk2MjgzZTg1ZjI1Njk2OWRiNDI3YmFmMmFkMjAuLjNlZjdkMDNkOTNjNmRlYmU0Njg3
OTEzMWNkZWIwMmRiMDM1NGU1NjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wOC0yMSAg
WmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW0lGQ10gRml4
IG5lc3RlZCBpbmxpbmUgYm94IHNpemluZyBhbmQgcG9zaXRpb25pbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTc0OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9sYXlvdXRmb3JtYXR0aW5n
Y29udGV4dC92ZXJ0aWNhbC1hbGlnbi1taWRkbGUtbmVzdGVkLWV4cGVjdGVkLmh0bWw6CisgICAg
ICAgICogZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC92ZXJ0aWNhbC1hbGlnbi1taWRkbGUt
bmVzdGVkLmh0bWw6IHRydW5rL3JlbmRlcmluZyBwcm9kdWNlcyBpbmNvcnJlY3QgbGF5b3V0Lgor
CiAyMDIwLTA4LTE1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W0xGQ11bSUZDXSBBZGQgc3VwcG9ydCBmb3IgdmVydGljYWwtYWxpZ246IHRleHQtdG9wCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3ZlcnRpY2Fs
LWFsaWduLW1pZGRsZS1uZXN0ZWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbGF5
b3V0Zm9ybWF0dGluZ2NvbnRleHQvdmVydGljYWwtYWxpZ24tbWlkZGxlLW5lc3RlZC1leHBlY3Rl
ZC5odG1sCmluZGV4IGU2NjcxMTFjODU2N2U0ZjFlY2U5MWUzZjNjMmE4MGE4OGRkODQ5MzcuLjkx
YTY5NzAwYmI4MzFkMmQ2MzA3NjkzYWVmNTgzODFhNzRkOGY2ODggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvdmVydGljYWwtYWxpZ24tbWlkZGxl
LW5lc3RlZC1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbGF5b3V0Zm9ybWF0
dGluZ2NvbnRleHQvdmVydGljYWwtYWxpZ24tbWlkZGxlLW5lc3RlZC1leHBlY3RlZC5odG1sCkBA
IC00LDQgKzQsNCBAQCBkaXYgewogICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOwogfQogPC9z
dHlsZT4KLTxkaXYgc3R5bGU9ImhlaWdodDogNTJweDsiPjwvZGl2PgorPGRpdiBzdHlsZT0iaGVp
Z2h0OiA0NHB4OyI+PC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xheW91dGZv
cm1hdHRpbmdjb250ZXh0L3ZlcnRpY2FsLWFsaWduLW1pZGRsZS1uZXN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvdmVydGljYWwtYWxpZ24tbWlkZGxl
LW5lc3RlZC5odG1sCmluZGV4IDBiOGFiMzZjOTA0N2EwMmM0ODgxN2ZlYjcxZjNkZmVjYzc2ZjY3
Y2MuLmRjMTNlYjRhZjJlMWQ1NmUzODA4Yzg3ZWEyMmYwYTQ4ODI5MDZjOTMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvdmVydGljYWwtYWxpZ24t
bWlkZGxlLW5lc3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbGF5b3V0Zm9ybWF0dGlu
Z2NvbnRleHQvdmVydGljYWwtYWxpZ24tbWlkZGxlLW5lc3RlZC5odG1sCkBAIC0xMiwxMiArMTIs
OSBAQCBzcGFuIHsKIH0KIDwvc3R5bGU+CiAKLTxkaXYgY2xhc3M9Y29udGFpbmVyPlhYCis8ZGl2
IGNsYXNzPWNvbnRhaW5lcj4KKyAgWFgKICAgPHNwYW4+CiAgICAgWFgKLSAgICA8c3Bhbj4KLSAg
ICAgIFhYCi0gICAgICA8c3Bhbj5YWDwvc3Bhbj4KLSAgICA8L3NwYW4+CiAgIDwvc3Bhbj4KIDwv
ZGl2Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407737</attachid>
            <date>2020-09-01 20:43:18 -0700</date>
            <delta_ts>2020-09-02 19:44:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215748-20200901204318.patch</filename>
            <type>text/plain</type>
            <size>28680</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhlNGM4NWVkZTc3MDY5
Zjk1YjkxNzBmMWY5NDI0NGI4YWI1OGEzMy4uY2IzNTExNWU4MjJlNWVlMTNkODNlNTk2NTEzZmIy
M2U4MjJkZjVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTA4LTMxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBBZGQgc3Vw
cG9ydCBuZXN0ZWQgaW5saW5lIGJveCBzaXppbmcgYW5kIHBvc2l0aW9uaW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU3NDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHNwbGl0cyB0
aGUgbGluZSBib3ggY29uc3RydWN0aW9uIHByb2Nlc3MgaW50byBhIGZldyBkaXN0aW5jdCBzdGVw
cy4KKyAgICAgICAgMS4gQ29uc3RydWN0IHRoZSBpbmxpbmUgYm94ZXMgYXMgbmVlZGVkLiBUaGVy
ZSdzIGFsd2F5cyBhIHJvb3QgaW5saW5lIGJveC4KKyAgICAgICAgMi4gU2l6ZSB0aGVtIGJ5IHRh
a2luZyB0aGUgdmVydGljYWwgYWxpZ25tZW50IGludG8gYWNjb3VudAorICAgICAgICAgICAtIGNo
aWxkIGlubGluZSBib3hlcyBzdHJldGNoIHRoZWlyIHBhcmVudCBpbmxpbmUgYm94ZXMgaW4gbW9z
dCBjYXNlcyAoZGVwZW5kaW5nIG9uIHRoZSB2ZXJ0aWNhbC1hbGlnbiBwcm9wZXJ0eSB2YWx1ZSku
CisgICAgICAgIDMuIFBvc2l0aW9uIHRoZSBpbmxpbmUgYm94ZXMgcmVsYXRpdmUgdG8gdGhlIGxp
bmUgYm94LgorCisgICAgICAgIFRlc3Q6IGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvdmVy
dGljYWwtYWxpZ24tbWlkZGxlLW5lc3RlZC5odG1sCisKKyAgICAgICAgKiBsYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
bV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okxp
bmVCb3g6OmlubGluZVJlY3RGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGluZUJveDo6Y29uc3RydWN0SW5saW5lQm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpMaW5lQm94Ojpjb21wdXRlSW5saW5lQm94ZXNMb2dpY2FsSGVpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6YWxpZ25JbmxpbmVCb3hlc1ZlcnRpY2FsbHlB
bmRDb21wdXRlTGluZUhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6
OmlubGluZUJveEZvckxheW91dEJveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVCb3g6OmFsaWduVmVydGljYWxseSk6IERlbGV0ZWQuCisgICAgICAgICog
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQm94OjpJbmxpbmVCb3g6OnNldExvZ2ljYWxUb3ApOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpJbmxpbmVCb3g6OnNldExvZ2ljYWxXaWR0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUJveDo6c2V0TG9naWNhbEhl
aWdodCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUJveDo6c2V0
QmFzZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjppbmxpbmVCb3hG
b3JMYXlvdXRCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpp
bmxpbmVCb3hGb3JMYXlvdXRCb3gpOgorCiAyMDIwLTA4LTMxICBaYWxhbiBCdWp0YXMgIDx6YWxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBBZGQgaW5pdGlhbCB2ZXJ0aWNhbC1h
bGlnbjogbWlkZGxlIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAKaW5kZXggOGVlZTUzOGQ2YjVjZTE0
ZDlhMGJjNTk4MDk4ZjY5NjZlMmJkYjhiYS4uNWQyMWZmMjNhM2NjNjVmOWViNjhkMjNlM2RlNGM5
M2ZjOGM3YTRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAKQEAgLTEzNCwxNiArMTM0LDkgQEAgaW5saW5l
IHN0YXRpYyBBc2NlbnRBbmREZXNjZW50IGhhbGZMZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0
cmljcyYgZm9udE1ldHJpY3MKICAgICByZXR1cm4geyBmbG9vcmYoYXNjZW50ICsgaGFsZkxlYWRp
bmcpLCBjZWlsZihkZXNjZW50ICsgaGFsZkxlYWRpbmcpIH07CiB9CiAKLUxpbmVCb3g6OklubGlu
ZUJveDo6SW5saW5lQm94KGNvbnN0IERpc3BsYXk6OklubGluZVJlY3QmIHJlY3QsIElubGluZUxh
eW91dFVuaXQgc3ludGhldGljQmFzZWxpbmUpCi0gICAgOiBtX2xvZ2ljYWxSZWN0KHJlY3QpCi0g
ICAgLCBtX2Jhc2VsaW5lKHN5bnRoZXRpY0Jhc2VsaW5lKQotICAgICwgbV9pc0VtcHR5KGZhbHNl
KQotICAgICwgbV9pc0F0b21pYyh0cnVlKQotewotfQotCi1MaW5lQm94OjpJbmxpbmVCb3g6Oklu
bGluZUJveChjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiByZWN0LCBJbmxpbmVMYXlvdXRVbml0
IGJhc2VsaW5lLCBJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQsIElzQ29uc2lkZXJlZEVtcHR5IGlz
Q29uc2lkZXJlZEVtcHR5KQotICAgIDogbV9sb2dpY2FsUmVjdChyZWN0KQorTGluZUJveDo6SW5s
aW5lQm94OjpJbmxpbmVCb3goY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IERpc3BsYXk6Oklu
bGluZVJlY3QmIHJlY3QsIElubGluZUxheW91dFVuaXQgYmFzZWxpbmUsIElubGluZUxheW91dFVu
aXQgZGVzY2VudCwgSXNDb25zaWRlcmVkRW1wdHkgaXNDb25zaWRlcmVkRW1wdHkpCisgICAgOiBt
X2xheW91dEJveChtYWtlV2Vha1B0cihsYXlvdXRCb3gpKQorICAgICwgbV9sb2dpY2FsUmVjdChy
ZWN0KQogICAgICwgbV9iYXNlbGluZShiYXNlbGluZSkKICAgICAsIG1fZGVzY2VudChkZXNjZW50
KQogICAgICwgbV9pc0VtcHR5KGlzQ29uc2lkZXJlZEVtcHR5ID09IElzQ29uc2lkZXJlZEVtcHR5
OjpZZXMpCkBAIC0xNjIsNyArMTU1LDggQEAgTGluZUJveDo6TGluZUJveChjb25zdCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQsIGNvbnN0IEkKICAgICAg
ICAgbV9yZWN0Lm1vdmVIb3Jpem9udGFsbHkoKm1fbGluZUFsaWdubWVudE9mZnNldCk7CiAgICAg
fQogICAgIGNvbnN0cnVjdElubGluZUJveGVzKHJ1bnMsIGlzTGluZVZpc3VhbGx5RW1wdHkpOwot
ICAgIGFsaWduVmVydGljYWxseShpc0xpbmVWaXN1YWxseUVtcHR5KTsKKyAgICBjb21wdXRlSW5s
aW5lQm94ZXNMb2dpY2FsSGVpZ2h0KCk7CisgICAgYWxpZ25JbmxpbmVCb3hlc1ZlcnRpY2FsbHlB
bmRDb21wdXRlTGluZUJveEhlaWdodChpc0xpbmVWaXN1YWxseUVtcHR5KTsKICAgICAvLyBDb21w
dXRlIHNjcm9sbGFibGUgb3ZlcmZsb3cuCiAgICAgbV9zY3JvbGxhYmxlT3ZlcmZsb3cuc2V0V2lk
dGgoc3RkOjptYXgobV9zY3JvbGxhYmxlT3ZlcmZsb3cud2lkdGgoKSwgbV9yb290SW5saW5lQm94
LmxvZ2ljYWxXaWR0aCgpKSk7CiAgICAgbV9zY3JvbGxhYmxlT3ZlcmZsb3cuZXhwYW5kVmVydGlj
YWxseVRvQ29udGFpbihtX3Jvb3RJbmxpbmVCb3gubG9naWNhbFJlY3QoKSk7CkBAIC0xNzAsMzEg
KzE2NCwyOSBAQCBMaW5lQm94OjpMaW5lQm94KGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0
JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgY29uc3QgSQogICAgICAgICBtX3Njcm9sbGFibGVP
dmVyZmxvdy5leHBhbmRWZXJ0aWNhbGx5VG9Db250YWluKGlubGluZUJveEVudHJ5LnZhbHVlLT5s
b2dpY2FsUmVjdCgpKTsKIH0KIAotY29uc3QgTGluZUJveDo6SW5saW5lQm94JiBMaW5lQm94Ojpp
bmxpbmVCb3hGb3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKCZsYXlvdXRCb3ggIT0gJnJvb3QoKSk7Ci0gICAgcmV0dXJuICptX2lubGluZUJveFJl
Y3RNYXAuZ2V0KCZsYXlvdXRCb3gpOwotfQotCiBEaXNwbGF5OjpJbmxpbmVSZWN0IExpbmVCb3g6
OmlubGluZVJlY3RGb3JUZXh0UnVuKGNvbnN0IExpbmVCdWlsZGVyOjpSdW4mIHJ1bikgY29uc3QK
IHsKICAgICBBU1NFUlQocnVuLmlzVGV4dCgpIHx8IHJ1bi5pc0xpbmVCcmVhaygpKTsKLSAgICBh
dXRvIGlubGluZUJveFJlY3QgPSBtX3Jvb3RJbmxpbmVCb3gubG9naWNhbFJlY3QoKTsKLSAgICBp
ZiAoJnJ1bi5sYXlvdXRCb3goKS5wYXJlbnQoKSAhPSAmcm9vdCgpKQotICAgICAgICBpbmxpbmVC
b3hSZWN0ID0gbV9pbmxpbmVCb3hSZWN0TWFwLmdldCgmcnVuLmxheW91dEJveCgpLnBhcmVudCgp
KS0+bG9naWNhbFJlY3QoKTsKKyAgICBhdXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBpbmxpbmVCb3hG
b3JMYXlvdXRCb3gocnVuLmxheW91dEJveCgpLnBhcmVudCgpKTsKKyAgICBhdXRvIGlubGluZUJv
eFJlY3QgPSBwYXJlbnRJbmxpbmVCb3gubG9naWNhbFJlY3QoKTsKICAgICByZXR1cm4geyBpbmxp
bmVCb3hSZWN0LnRvcCgpLCBydW4ubG9naWNhbExlZnQoKSwgcnVuLmxvZ2ljYWxXaWR0aCgpLCBp
bmxpbmVCb3hSZWN0LmhlaWdodCgpIH07CiB9CiAKIHZvaWQgTGluZUJveDo6Y29uc3RydWN0SW5s
aW5lQm94ZXMoY29uc3QgTGluZUJ1aWxkZXI6OlJ1bkxpc3QmIHJ1bnMsIElzTGluZVZpc3VhbGx5
RW1wdHkgaXNMaW5lVmlzdWFsbHlFbXB0eSkKIHsKLSAgICBhdXRvIGxpbmVIYXNJbWFnaW5hcnlT
dHJ1dCA9ICFsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9kZSgpOwotICAgIGF1dG8gbGluZUlzQ29u
c2lkZXJlZEVtcHR5ID0gIWxpbmVIYXNJbWFnaW5hcnlTdHJ1dCB8fCBpc0xpbmVWaXN1YWxseUVt
cHR5ID09IElzTGluZVZpc3VhbGx5RW1wdHk6OlllcyA/IElubGluZUJveDo6SXNDb25zaWRlcmVk
RW1wdHk6OlllcyA6IElubGluZUJveDo6SXNDb25zaWRlcmVkRW1wdHk6Ok5vOwotICAgIGF1dG8m
IGZvbnRNZXRyaWNzID0gcm9vdCgpLnN0eWxlKCkuZm9udE1ldHJpY3MoKTsKLSAgICBJbmxpbmVM
YXlvdXRVbml0IHJvb3RJbmxpbmVCb3hIZWlnaHQgPSBmb250TWV0cmljcy5oZWlnaHQoKTsKLSAg
ICBhdXRvIHJvb3RJbmxpbmVSZWN0ID0gRGlzcGxheTo6SW5saW5lUmVjdCB7IHsgfSwgeyB9LCBj
b250ZW50TG9naWNhbFdpZHRoKCksIHJvb3RJbmxpbmVCb3hIZWlnaHQgfTsKLSAgICBJbmxpbmVM
YXlvdXRVbml0IHJvb3RJbmxpbmVCYXNlbGluZSA9IGZvbnRNZXRyaWNzLmFzY2VudCgpOwotICAg
IGF1dG8gcm9vdElubGluZURlc2NlbnQgPSByb290SW5saW5lQm94SGVpZ2h0IC0gcm9vdElubGlu
ZUJhc2VsaW5lOwotICAgIG1fcm9vdElubGluZUJveCA9IElubGluZUJveCB7IHJvb3RJbmxpbmVS
ZWN0LCByb290SW5saW5lQmFzZWxpbmUsIHJvb3RJbmxpbmVEZXNjZW50LCBsaW5lSXNDb25zaWRl
cmVkRW1wdHkgfTsKKyAgICBhdXRvIGNvbnN0cnVjdFJvb3RJbmxpbmVCb3ggPSBbJl0geworICAg
ICAgICBhdXRvJiBmb250TWV0cmljcyA9IHJvb3QoKS5zdHlsZSgpLmZvbnRNZXRyaWNzKCk7Cisg
ICAgICAgIElubGluZUxheW91dFVuaXQgcm9vdElubGluZUJveEhlaWdodCA9IGZvbnRNZXRyaWNz
LmhlaWdodCgpOworICAgICAgICBhdXRvIHJvb3RJbmxpbmVCb3hSZWN0ID0gRGlzcGxheTo6SW5s
aW5lUmVjdCB7IHsgfSwgeyB9LCBjb250ZW50TG9naWNhbFdpZHRoKCksIHJvb3RJbmxpbmVCb3hI
ZWlnaHQgfTsKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCByb290SW5saW5lQm94QmFzZWxpbmUg
PSBmb250TWV0cmljcy5hc2NlbnQoKTsKKyAgICAgICAgYXV0byByb290SW5saW5lQm94RGVzY2Vu
dCA9IHJvb3RJbmxpbmVCb3hIZWlnaHQgLSByb290SW5saW5lQm94QmFzZWxpbmU7CisgICAgICAg
IGF1dG8gbGluZUhhc0ltYWdpbmFyeVN0cnV0ID0gIWxheW91dFN0YXRlKCkuaW5RdWlya3NNb2Rl
KCk7CisgICAgICAgIGF1dG8gcm9vdElubGluZUJveElzQ29uc2lkZXJlZEVtcHR5ID0gaXNMaW5l
VmlzdWFsbHlFbXB0eSA9PSBJc0xpbmVWaXN1YWxseUVtcHR5OjpObyAmJiBsaW5lSGFzSW1hZ2lu
YXJ5U3RydXQgPyBJbmxpbmVCb3g6OklzQ29uc2lkZXJlZEVtcHR5OjpObyA6IElubGluZUJveDo6
SXNDb25zaWRlcmVkRW1wdHk6OlllczsKKworICAgICAgICBtX3Jvb3RJbmxpbmVCb3ggPSBJbmxp
bmVCb3ggeyByb290KCksIHJvb3RJbmxpbmVCb3hSZWN0LCByb290SW5saW5lQm94QmFzZWxpbmUs
IHJvb3RJbmxpbmVCb3hEZXNjZW50LCByb290SW5saW5lQm94SXNDb25zaWRlcmVkRW1wdHkgfTsK
KyAgICAgICAgbV9pbmxpbmVCb3hSZWN0TWFwLnNldCgmcm9vdCgpLCAmbV9yb290SW5saW5lQm94
KTsKKyAgICB9OworICAgIGNvbnN0cnVjdFJvb3RJbmxpbmVCb3goKTsKIAogICAgIGZvciAoYXV0
byYgcnVuIDogcnVucykgewogICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBydW4ubGF5b3V0Qm94
KCk7CkBAIC0yMTksMTEgKzIxMSwxNSBAQCB2b2lkIExpbmVCb3g6OmNvbnN0cnVjdElubGluZUJv
eGVzKGNvbnN0IExpbmVCdWlsZGVyOjpSdW5MaXN0JiBydW5zLCBJc0xpbmVWaXN1YQogICAgICAg
ICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgYXV0byBhZGp1c3RlZEJhc2VsaW5lID0gYm94
R2VvbWV0cnkubWFyZ2luQmVmb3JlKCkgKyBib3hHZW9tZXRyeS5ib3JkZXJUb3AoKSArIGJveEdl
b21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDApICsgaW5saW5lQmxvY2tCYXNlbGluZTsKICAg
ICAgICAgICAgICAgICBhdXRvIGlubGluZUJveFJlY3QgPSBEaXNwbGF5OjpJbmxpbmVSZWN0IHsg
eyB9LCBydW4ubG9naWNhbExlZnQoKSwgcnVuLmxvZ2ljYWxXaWR0aCgpLCBib3hHZW9tZXRyeS5t
YXJnaW5Cb3hIZWlnaHQoKSB9OwotICAgICAgICAgICAgICAgIG1faW5saW5lQm94UmVjdE1hcC5z
ZXQoJmxheW91dEJveCwgbWFrZVVuaXF1ZTxJbmxpbmVCb3g+KGlubGluZUJveFJlY3QsIGFkanVz
dGVkQmFzZWxpbmUpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJveCA9IG1ha2VVbmlx
dWU8SW5saW5lQm94PihsYXlvdXRCb3gsIGlubGluZUJveFJlY3QsIGFkanVzdGVkQmFzZWxpbmUs
IElubGluZUxheW91dFVuaXQgeyB9LCBJbmxpbmVCb3g6OklzQ29uc2lkZXJlZEVtcHR5OjpObyk7
CisgICAgICAgICAgICAgICAgbV9pbmxpbmVCb3hSZWN0TWFwLnNldCgmbGF5b3V0Qm94LCBpbmxp
bmVCb3guZ2V0KCkpOworICAgICAgICAgICAgICAgIG1faW5saW5lQm94TGlzdC5hcHBlbmQoV1RG
TW92ZShpbmxpbmVCb3gpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
YXV0byBydW5IZWlnaHQgPSBib3hHZW9tZXRyeS5tYXJnaW5Cb3hIZWlnaHQoKTsKICAgICAgICAg
ICAgICAgICBhdXRvIGlubGluZUJveFJlY3QgPSBEaXNwbGF5OjpJbmxpbmVSZWN0IHsgeyB9LCBy
dW4ubG9naWNhbExlZnQoKSwgcnVuLmxvZ2ljYWxXaWR0aCgpLCBydW5IZWlnaHQgfTsKLSAgICAg
ICAgICAgICAgICBtX2lubGluZUJveFJlY3RNYXAuc2V0KCZsYXlvdXRCb3gsIG1ha2VVbmlxdWU8
SW5saW5lQm94PihpbmxpbmVCb3hSZWN0LCBydW5IZWlnaHQpKTsKKyAgICAgICAgICAgICAgICBh
dXRvIGlubGluZUJveCA9IG1ha2VVbmlxdWU8SW5saW5lQm94PihsYXlvdXRCb3gsIGlubGluZUJv
eFJlY3QsIHJ1bkhlaWdodCwgSW5saW5lTGF5b3V0VW5pdCB7IH0sIElubGluZUJveDo6SXNDb25z
aWRlcmVkRW1wdHk6Ok5vKTsKKyAgICAgICAgICAgICAgICBtX2lubGluZUJveFJlY3RNYXAuc2V0
KCZsYXlvdXRCb3gsIGlubGluZUJveC5nZXQoKSk7CisgICAgICAgICAgICAgICAgbV9pbmxpbmVC
b3hMaXN0LmFwcGVuZChXVEZNb3ZlKGlubGluZUJveCkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9IGVsc2UgaWYgKHJ1bi5pc0NvbnRhaW5lclN0YXJ0KCkpIHsKICAgICAgICAgICAgIGF1dG8g
aW5pdGlhbFdpZHRoID0gY29udGVudExvZ2ljYWxXaWR0aCgpIC0gcnVuLmxvZ2ljYWxMZWZ0KCk7
CkBAIC0yMzIsNyArMjI4LDkgQEAgdm9pZCBMaW5lQm94Ojpjb25zdHJ1Y3RJbmxpbmVCb3hlcyhj
b25zdCBMaW5lQnVpbGRlcjo6UnVuTGlzdCYgcnVucywgSXNMaW5lVmlzdWEKICAgICAgICAgICAg
IElubGluZUxheW91dFVuaXQgbG9naWNhbEhlaWdodCA9IGZvbnRNZXRyaWNzLmhlaWdodCgpOwog
ICAgICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZSA9IGZvbnRNZXRyaWNzLmFzY2Vu
dCgpOwogICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hSZWN0ID0gRGlzcGxheTo6SW5saW5lUmVj
dCB7IHsgfSwgcnVuLmxvZ2ljYWxMZWZ0KCksIGluaXRpYWxXaWR0aCwgbG9naWNhbEhlaWdodCB9
OwotICAgICAgICAgICAgbV9pbmxpbmVCb3hSZWN0TWFwLnNldCgmbGF5b3V0Qm94LCBtYWtlVW5p
cXVlPElubGluZUJveD4oaW5saW5lQm94UmVjdCwgYmFzZWxpbmUsIGxvZ2ljYWxIZWlnaHQgLSBi
YXNlbGluZSwgSW5saW5lQm94OjpJc0NvbnNpZGVyZWRFbXB0eTo6WWVzKSk7CisgICAgICAgICAg
ICBhdXRvIGlubGluZUJveCA9IG1ha2VVbmlxdWU8SW5saW5lQm94PihsYXlvdXRCb3gsIGlubGlu
ZUJveFJlY3QsIGJhc2VsaW5lLCBsb2dpY2FsSGVpZ2h0IC0gYmFzZWxpbmUsIElubGluZUJveDo6
SXNDb25zaWRlcmVkRW1wdHk6Olllcyk7CisgICAgICAgICAgICBtX2lubGluZUJveFJlY3RNYXAu
c2V0KCZsYXlvdXRCb3gsIGlubGluZUJveC5nZXQoKSk7CisgICAgICAgICAgICBtX2lubGluZUJv
eExpc3QuYXBwZW5kKFdURk1vdmUoaW5saW5lQm94KSk7CiAgICAgICAgIH0gZWxzZSBpZiAocnVu
LmlzQ29udGFpbmVyRW5kKCkpIHsKICAgICAgICAgICAgIC8vIEFkanVzdCB0aGUgbG9naWNhbCB3
aWR0aCB3aGVuIHRoZSBpbmxpbmUgbGV2ZWwgY29udGFpbmVyIGNsb3NlcyBvbiB0aGlzIGxpbmUu
CiAgICAgICAgICAgICBhdXRvJiBpbmxpbmVCb3ggPSAqbV9pbmxpbmVCb3hSZWN0TWFwLmdldCgm
bGF5b3V0Qm94KTsKQEAgLTI0NCwxMjIgKzI0MiwxNDMgQEAgdm9pZCBMaW5lQm94Ojpjb25zdHJ1
Y3RJbmxpbmVCb3hlcyhjb25zdCBMaW5lQnVpbGRlcjo6UnVuTGlzdCYgcnVucywgSXNMaW5lVmlz
dWEKICAgICB9CiB9CiAKLXZvaWQgTGluZUJveDo6YWxpZ25WZXJ0aWNhbGx5KElzTGluZVZpc3Vh
bGx5RW1wdHkgaXNMaW5lVmlzdWFsbHlFbXB0eSkKK3ZvaWQgTGluZUJveDo6Y29tcHV0ZUlubGlu
ZUJveGVzTG9naWNhbEhlaWdodCgpCiB7Ci0gICAgaWYgKGlzTGluZVZpc3VhbGx5RW1wdHkgPT0g
SXNMaW5lVmlzdWFsbHlFbXB0eTo6WWVzKQotICAgICAgICByZXR1cm47Ci0gICAgLy8gMS4gQ29t
cHV0ZSBsaW5lIGJveCBoZWlnaHQvYWxpZ25tZW50IGJhc2VsaW5lIGJ5IHBsYWNpbmcgdGhlIGlu
bGluZSBib3hlcyB2ZXJ0aWNhbGx5LgotICAgIC8vIDIuIEFkanVzdCB0aGUgaW5saW5lIGJveCB2
ZXJ0aWNhbCBwb3NpdGlvbi4KLSAgICBhdXRvJiByb290U3R5bGUgPSByb290KCkuc3R5bGUoKTsK
LSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGxldCBsaW5lIGJveCBmdWxseSBjb250YWluIHRoZSBp
bmxpbmUgYm94ZXMgYW5kIG1vdmUgbGluZSBzcGFjaW5nL292ZXJmbG93IG91dCB0byBEaXNwbGF5
OjpMaW5lQm94LgotICAgIC8vIHNlZSB3ZWJraXQub3JnL2IvMjE1MDg3I2M5Ci0gICAgSW5saW5l
TGF5b3V0VW5pdCByZWNvbW1lbmRlZExpbmVCb3hIZWlnaHQgPSByb290U3R5bGUubGluZUhlaWdo
dCgpLmlzTmVnYXRpdmUoKSA/IHJvb3RTdHlsZS5mb250TWV0cmljcygpLmxpbmVTcGFjaW5nKCkg
OiByb290U3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCk7Ci0KLSAgICBhdXRvIGNvbnRlbnRMb2dp
Y2FsSGVpZ2h0ID0gSW5saW5lTGF5b3V0VW5pdCB7IH07Ci0gICAgYXV0byBhbGlnbm1lbnRCYXNl
bGluZSA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgIGF1dG8gY29tcHV0ZUxpbmVCb3hIZWln
aHQgPSBbJl0oY29uc3QgYXV0byYgaW5saW5lQm94LCBjb25zdCBhdXRvJiBsYXlvdXRCb3gsIGF1
dG8gdGV4dEFsaWduTW9kZSkgewotICAgICAgICBzd2l0Y2ggKHRleHRBbGlnbk1vZGUpIHsKLSAg
ICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZTogewotICAgICAgICAgICAgYXV0byBp
bmxpbmVCb3hMb2dpY2FsVG9wID0gYWxpZ25tZW50QmFzZWxpbmUgLSBpbmxpbmVCb3guYmFzZWxp
bmUoKTsKLSAgICAgICAgICAgIGF1dG8gb3ZlcmZsb3dBYm92ZUJhc2VsaW5lID0gLWlubGluZUJv
eExvZ2ljYWxUb3A7Ci0gICAgICAgICAgICBpZiAob3ZlcmZsb3dBYm92ZUJhc2VsaW5lID4gMCkg
ewotICAgICAgICAgICAgICAgIGNvbnRlbnRMb2dpY2FsSGVpZ2h0ICs9IG92ZXJmbG93QWJvdmVC
YXNlbGluZTsKLSAgICAgICAgICAgICAgICBhbGlnbm1lbnRCYXNlbGluZSArPSBvdmVyZmxvd0Fi
b3ZlQmFzZWxpbmU7Ci0gICAgICAgICAgICB9CisgICAgLy8gQnkgdHJhdmVyc2luZyB0aGUgaW5s
aW5lIGJveCBsaXN0IGJhY2t3YXJkcywgaXQncyBndWFyYW50ZWVkIHRoYXQgZGVzY2VuZGFudCBp
bmxpbmUgYm94ZXMgYXJlIHNpemVkIGZpcnN0LgorICAgIGZvciAoYXV0byYgaW5saW5lQm94IDog
V1RGOjptYWtlUmV2ZXJzZWRSYW5nZShtX2lubGluZUJveExpc3QpKSB7CisgICAgICAgIGlmIChp
bmxpbmVCb3gtPmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAg
ICBhdXRvIGlubGluZUJveExvZ2ljYWxCb3R0b20gPSBzdGQ6Om1heCgwLjBmLCBpbmxpbmVCb3hM
b2dpY2FsVG9wKSArIGlubGluZUJveC5sb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgICAgICBhdXRv
IGNvbnRlbnRWZXJ0aWNhbE92ZXJmbG93ID0gaW5saW5lQm94TG9naWNhbEJvdHRvbSAtIGNvbnRl
bnRMb2dpY2FsSGVpZ2h0OwotICAgICAgICAgICAgaWYgKGNvbnRlbnRWZXJ0aWNhbE92ZXJmbG93
ID4gMCkKLSAgICAgICAgICAgICAgICBjb250ZW50TG9naWNhbEhlaWdodCArPSBjb250ZW50VmVy
dGljYWxPdmVyZmxvdzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgVmVydGljYWxBbGlnbjo6VG9wOiB7Ci0gICAgICAgICAgICBhdXRvIGlubGluZUJveExvZ2lj
YWxUb3AgPSBjb250ZW50TG9naWNhbEhlaWdodCAtIGlubGluZUJveC5sb2dpY2FsSGVpZ2h0KCk7
Ci0gICAgICAgICAgICBhdXRvIGNvbnRlbnRWZXJ0aWNhbE92ZXJmbG93ID0gLWlubGluZUJveExv
Z2ljYWxUb3A7Ci0gICAgICAgICAgICBpZiAoY29udGVudFZlcnRpY2FsT3ZlcmZsb3cgPiAwKSB7
Ci0gICAgICAgICAgICAgICAgLy8gdmVydGljYWwtYWxpZ246IHRvcCBzdHJldGNoZXMgdGhlIGxp
bmUgYnV0IG5ldmVyIHB1c2hlcyB0aGUgYmFzZWxpbmUgZG93bi4KLSAgICAgICAgICAgICAgICBj
b250ZW50TG9naWNhbEhlaWdodCArPSBjb250ZW50VmVydGljYWxPdmVyZmxvdzsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lQm94LT5sYXlvdXRCb3goKTsK
KyAgICAgICAgc3dpdGNoIChsYXlvdXRCb3guc3R5bGUoKS52ZXJ0aWNhbEFsaWduKCkpIHsKKyAg
ICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUb3A6CisgICAgICAgIGNhc2UgVmVydGljYWxBbGln
bjo6Qm90dG9tOgorICAgICAgICAgICAgLy8gdG9wIGFuZCBib3R0b20gYWxpZ25tZW50cyBvbmx5
IHN0cmV0Y2ggdGhlIGxpbmUgYm94LiBUaGV5IGRvbid0IHN0cmV0Y2ggYW55IG9mIHRoZSBpbmxp
bmUgYm94ZXMsIG5vdCBldmVuIHRoZSByb290IGlubGluZSBib3guCiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRvbTogewotICAg
ICAgICAgICAgYXV0byBpbmxpbmVCb3hMb2dpY2FsVG9wID0gY29udGVudExvZ2ljYWxIZWlnaHQg
LSBpbmxpbmVCb3gubG9naWNhbEhlaWdodCgpOyAKLSAgICAgICAgICAgIGF1dG8gY29udGVudFZl
cnRpY2FsT3ZlcmZsb3cgPSAtaW5saW5lQm94TG9naWNhbFRvcDsKLSAgICAgICAgICAgIGlmIChj
b250ZW50VmVydGljYWxPdmVyZmxvdyA+IDApIHsKLSAgICAgICAgICAgICAgICAvLyB2ZXJ0aWNh
bC1hbGlnbjogYm90dG9tIHN0cmV0Y2hlcyB0aGUgbGluZSBhbmQgcHVzaGVzIHRoZSBiYXNlbGlu
ZSBkb3duIGFzIHdlbGwuCi0gICAgICAgICAgICAgICAgY29udGVudExvZ2ljYWxIZWlnaHQgKz0g
Y29udGVudFZlcnRpY2FsT3ZlcmZsb3c7Ci0gICAgICAgICAgICAgICAgYWxpZ25tZW50QmFzZWxp
bmUgKz0gY29udGVudFZlcnRpY2FsT3ZlcmZsb3c7CisgICAgICAgIGNhc2UgVmVydGljYWxBbGln
bjo6QmFzZWxpbmU6IHsKKyAgICAgICAgICAgIGF1dG8mIHBhcmVudElubGluZUJveCA9IGlubGlu
ZUJveEZvckxheW91dEJveChsYXlvdXRCb3gucGFyZW50KCkpOworICAgICAgICAgICAgYXV0byBi
YXNlbGluZU92ZXJmbG93ID0gc3RkOjptYXgoMC4wZiwgaW5saW5lQm94LT5iYXNlbGluZSgpIC0g
cGFyZW50SW5saW5lQm94LmJhc2VsaW5lKCkpOworICAgICAgICAgICAgaWYgKGJhc2VsaW5lT3Zl
cmZsb3cpIHsKKyAgICAgICAgICAgICAgICBwYXJlbnRJbmxpbmVCb3guc2V0QmFzZWxpbmUocGFy
ZW50SW5saW5lQm94LmJhc2VsaW5lKCkgKyBiYXNlbGluZU92ZXJmbG93KTsKKyAgICAgICAgICAg
ICAgICBwYXJlbnRJbmxpbmVCb3guc2V0TG9naWNhbEhlaWdodChwYXJlbnRJbmxpbmVCb3gubG9n
aWNhbEhlaWdodCgpICsgYmFzZWxpbmVPdmVyZmxvdyk7CiAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBhdXRvIHBhcmVudExpbmVCb3hCZWxvd0Jhc2VsaW5lID0gcGFyZW50SW5saW5lQm94Lmxv
Z2ljYWxIZWlnaHQoKSAtIHBhcmVudElubGluZUJveC5iYXNlbGluZSgpOworICAgICAgICAgICAg
YXV0byBpbmxpbmVCb3hCZWxvd0Jhc2VsaW5lID0gaW5saW5lQm94LT5sb2dpY2FsSGVpZ2h0KCkg
LSBpbmxpbmVCb3gtPmJhc2VsaW5lKCk7CisgICAgICAgICAgICBhdXRvIGJlbG93QmFzZWxpbmVP
dmVyZmxvdyA9IHN0ZDo6bWF4KDAuMGYsIGlubGluZUJveEJlbG93QmFzZWxpbmUgLSBwYXJlbnRM
aW5lQm94QmVsb3dCYXNlbGluZSk7CisgICAgICAgICAgICBpZiAoYmVsb3dCYXNlbGluZU92ZXJm
bG93KQorICAgICAgICAgICAgICAgIHBhcmVudElubGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KHBh
cmVudElubGluZUJveC5sb2dpY2FsSGVpZ2h0KCkgKyBiZWxvd0Jhc2VsaW5lT3ZlcmZsb3cpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWdu
OjpNaWRkbGU6IHsKLSAgICAgICAgICAgIEFTU0VSVCgmbGF5b3V0Qm94ICE9ICZmb3JtYXR0aW5n
Q29udGV4dCgpLnJvb3QoKSk7Ci0gICAgICAgICAgICBhdXRvIGlubGluZUJveExvZ2ljYWxUb3Ag
PSBhbGlnbm1lbnRCYXNlbGluZSAtIChpbmxpbmVCb3gubG9naWNhbEhlaWdodCgpIC8gMiArIGxh
eW91dEJveC5wYXJlbnQoKS5zdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gMik7Ci0g
ICAgICAgICAgICBhdXRvIG92ZXJmbG93QWJvdmVCYXNlbGluZSA9IC1pbmxpbmVCb3hMb2dpY2Fs
VG9wOwotICAgICAgICAgICAgaWYgKG92ZXJmbG93QWJvdmVCYXNlbGluZSA+IDApIHsKLSAgICAg
ICAgICAgICAgICBjb250ZW50TG9naWNhbEhlaWdodCArPSBvdmVyZmxvd0Fib3ZlQmFzZWxpbmU7
Ci0gICAgICAgICAgICAgICAgYWxpZ25tZW50QmFzZWxpbmUgKz0gb3ZlcmZsb3dBYm92ZUJhc2Vs
aW5lOworICAgICAgICAgICAgYXV0byYgcGFyZW50TGF5b3V0Qm94ID0gbGF5b3V0Qm94LnBhcmVu
dCgpOworICAgICAgICAgICAgYXV0byYgcGFyZW50SW5saW5lQm94ID0gaW5saW5lQm94Rm9yTGF5
b3V0Qm94KHBhcmVudExheW91dEJveCk7CisgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3AgPSBw
YXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIChpbmxpbmVCb3gtPmxvZ2ljYWxIZWlnaHQoKSAv
IDIgKyBwYXJlbnRMYXlvdXRCb3guc3R5bGUoKS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAvIDIp
OworICAgICAgICAgICAgaWYgKGxvZ2ljYWxUb3AgPCAwKSB7CisgICAgICAgICAgICAgICAgYXV0
byBvdmVyZmxvdyA9IC1sb2dpY2FsVG9wOworICAgICAgICAgICAgICAgIC8vIENoaWxkIGlubGlu
ZSBib3ggd2l0aCBtaWRkbGUgYWxpZ25tZW50IHB1c2hlcyB0aGUgYmFzZWxpbmUgZG93biB3aGVu
IG92ZXJmbG93cy4gCisgICAgICAgICAgICAgICAgcGFyZW50SW5saW5lQm94LnNldEJhc2VsaW5l
KHBhcmVudElubGluZUJveC5iYXNlbGluZSgpICsgb3ZlcmZsb3cpOworICAgICAgICAgICAgICAg
IHBhcmVudElubGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KHBhcmVudElubGluZUJveC5sb2dpY2Fs
SGVpZ2h0KCkgKyBvdmVyZmxvdyk7CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHsgfTsK
ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hMb2dpY2FsQm90dG9t
ID0gc3RkOjptYXgoMC4wZiwgaW5saW5lQm94TG9naWNhbFRvcCkgKyBpbmxpbmVCb3gubG9naWNh
bEhlaWdodCgpOwotICAgICAgICAgICAgYXV0byBjb250ZW50VmVydGljYWxPdmVyZmxvdyA9IGlu
bGluZUJveExvZ2ljYWxCb3R0b20gLSBjb250ZW50TG9naWNhbEhlaWdodDsKLSAgICAgICAgICAg
IGlmIChjb250ZW50VmVydGljYWxPdmVyZmxvdyA+IDApCi0gICAgICAgICAgICAgICAgY29udGVu
dExvZ2ljYWxIZWlnaHQgKz0gY29udGVudFZlcnRpY2FsT3ZlcmZsb3c7CisgICAgICAgICAgICBh
dXRvIGxvZ2ljYWxCb3R0b20gPSBsb2dpY2FsVG9wICsgaW5saW5lQm94LT5sb2dpY2FsSGVpZ2h0
KCk7CisgICAgICAgICAgICBwYXJlbnRJbmxpbmVCb3guc2V0TG9naWNhbEhlaWdodChzdGQ6Om1h
eChwYXJlbnRJbmxpbmVCb3gubG9naWNhbEhlaWdodCgpLCBsb2dpY2FsQm90dG9tKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
QVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9Ci0gICAgfTsKLQotICAgIGF1dG8gc2hvdWxkUm9vdElubGluZUJveFN0cmV0Y2hMaW5lQm94
ID0gIW1fcm9vdElubGluZUJveC5pc0VtcHR5KCk7Ci0gICAgaWYgKHNob3VsZFJvb3RJbmxpbmVC
b3hTdHJldGNoTGluZUJveCkKLSAgICAgICAgY29tcHV0ZUxpbmVCb3hIZWlnaHQobV9yb290SW5s
aW5lQm94LCByb290KCksIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lKTsKLSAgICBmb3IgKGF1dG8m
IGlubGluZUJveEVudHJ5IDogbV9pbmxpbmVCb3hSZWN0TWFwKSB7Ci0gICAgICAgIGF1dG8mIGlu
bGluZUJveCA9ICppbmxpbmVCb3hFbnRyeS52YWx1ZTsKLSAgICAgICAgYXV0byBzaG91bGRJbmxp
bmVCb3hTdHJldGNoTGluZUJveCA9ICFpbmxpbmVCb3guaXNFbXB0eSgpOwotICAgICAgICBpZiAo
c2hvdWxkSW5saW5lQm94U3RyZXRjaExpbmVCb3gpIHsKLSAgICAgICAgICAgIGF1dG8mIGxheW91
dEJveCA9ICppbmxpbmVCb3hFbnRyeS5rZXk7Ci0gICAgICAgICAgICBjb21wdXRlTGluZUJveEhl
aWdodChpbmxpbmVCb3gsIGxheW91dEJveCwgbGF5b3V0Qm94LnN0eWxlKCkudmVydGljYWxBbGln
bigpKTsKLSAgICAgICAgfQogICAgIH0KK30KIAotICAgIGF1dG8gbGluZUJveExvZ2ljYWxIZWln
aHQgPSByb290U3R5bGUubGluZUhlaWdodCgpLmlzTmVnYXRpdmUoKSA/IHN0ZDo6bWF4KHJlY29t
bWVuZGVkTGluZUJveEhlaWdodCwgY29udGVudExvZ2ljYWxIZWlnaHQpIDogcmVjb21tZW5kZWRM
aW5lQm94SGVpZ2h0OwotICAgIG1fcmVjdC5zZXRIZWlnaHQobGluZUJveExvZ2ljYWxIZWlnaHQp
Owordm9pZCBMaW5lQm94OjphbGlnbklubGluZUJveGVzVmVydGljYWxseUFuZENvbXB1dGVMaW5l
Qm94SGVpZ2h0KElzTGluZVZpc3VhbGx5RW1wdHkgaXNMaW5lVmlzdWFsbHlFbXB0eSkKK3sKKyAg
ICAvLyBJbmxpbmUgYm94ZXMgYXJlIGluIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUgbGlu
ZSBib3ggKGFuZCBub3QgaW4gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIG9mIHRoZWlyIHBhcmVudHMp
LgorICAgIC8vIFN0YXJ0aW5nIHdpdGggdGhlIHJvb3QgaW5saW5lIGJveCwgcG9zaXRpb24gdGhl
IGFuY2VzdG9ycyBmaXJzdCBzbyB0aGF0IHRoZSBkZXNjZW5kYW50IGxpbmUgYm94ZXMgc2VlIGFi
c29sdXRlIHZlcnRpY2FsIHBvc2l0aW9ucy4KKyAgICBhdXRvJiByb290U3R5bGUgPSByb290KCku
c3R5bGUoKTsKKyAgICBhdXRvIGNvbnRlbnRMb2dpY2FsQm90dG9tID0gSW5saW5lTGF5b3V0VW5p
dCB7IH07CisgICAgYXV0byBhbGlnblJvb3RJbmxpbmVCb3ggPSBbJl0geworICAgICAgICAvLyBT
b21ldGhpbmcgc29tZXRoaW5nLgorICAgICAgICBhdXRvIHVzZWRMaW5lSGVpZ2h0ID0gSW5saW5l
TGF5b3V0VW5pdCB7IH07CisgICAgICAgIGlmIChpc0xpbmVWaXN1YWxseUVtcHR5ID09IElzTGlu
ZVZpc3VhbGx5RW1wdHk6Ok5vKQorICAgICAgICAgICAgdXNlZExpbmVIZWlnaHQgPSByb290U3R5
bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCk7CisgICAgICAgIGF1dG8gYWxpZ25tZW50QmFzZWxpbmUg
PSBoYWxmTGVhZGluZ01ldHJpY3Mocm9vdFN0eWxlLmZvbnRNZXRyaWNzKCksIHVzZWRMaW5lSGVp
Z2h0KS5hc2NlbnQ7CisgICAgICAgIGF1dG8gcm9vdElubGluZUJveFRvcFBvc2l0aW9uID0gYWxp
Z25tZW50QmFzZWxpbmUgLSBtX3Jvb3RJbmxpbmVCb3guYmFzZWxpbmUoKTsKKyAgICAgICAgbV9y
b290SW5saW5lQm94LnNldExvZ2ljYWxUb3Aocm9vdElubGluZUJveFRvcFBvc2l0aW9uKTsKKyAg
ICAgICAgY29udGVudExvZ2ljYWxCb3R0b20gPSBtX3Jvb3RJbmxpbmVCb3gubG9naWNhbEhlaWdo
dCgpOworICAgICAgICBmb3IgKGF1dG8mIGlubGluZUJveCA6IG1faW5saW5lQm94TGlzdCkgewor
ICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbEFsaWduID0gaW5saW5lQm94LT5sYXlvdXRCb3goKS5z
dHlsZSgpLnZlcnRpY2FsQWxpZ24oKTsKKyAgICAgICAgICAgIGlmICh2ZXJ0aWNhbEFsaWduID09
IFZlcnRpY2FsQWxpZ246OkJvdHRvbSkgeworICAgICAgICAgICAgICAgIC8vIGJvdHRvbSBhbGln
biBhbHdheXMgcHVzaGVzIHRoZSByb290IGlubGluZSBib3ggZG93bndhcmRzLgorICAgICAgICAg
ICAgICAgIGF1dG8gb3ZlcmZsb3cgPSBzdGQ6Om1heCgwLjBmLCBpbmxpbmVCb3gtPmxvZ2ljYWxC
b3R0b20oKSAtIG1fcm9vdElubGluZUJveC5sb2dpY2FsQm90dG9tKCkpOworICAgICAgICAgICAg
ICAgIG1fcm9vdElubGluZUJveC5zZXRMb2dpY2FsVG9wKG1fcm9vdElubGluZUJveC5sb2dpY2Fs
VG9wKCkgKyBvdmVyZmxvdyk7CisgICAgICAgICAgICAgICAgY29udGVudExvZ2ljYWxCb3R0b20g
Kz0gb3ZlcmZsb3c7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHZlcnRpY2FsQWxpZ24gPT0gVmVy
dGljYWxBbGlnbjo6VG9wKQorICAgICAgICAgICAgICAgIGNvbnRlbnRMb2dpY2FsQm90dG9tID0g
c3RkOjptYXgoY29udGVudExvZ2ljYWxCb3R0b20sIGlubGluZUJveC0+bG9naWNhbEhlaWdodCgp
KTsKKyAgICAgICAgfQorICAgIH07CisgICAgYWxpZ25Sb290SW5saW5lQm94KCk7CiAKLSAgICBh
dXRvIGFkanVzdElubGluZUJveFRvcCA9IFsmXShhdXRvJiBpbmxpbmVCb3gsIGNvbnN0IGF1dG8m
IGxheW91dEJveCwgYXV0byB0ZXh0QWxpZ25Nb2RlKSB7CisgICAgZm9yIChhdXRvJiBpbmxpbmVC
b3ggOiBtX2lubGluZUJveExpc3QpIHsKICAgICAgICAgYXV0byBpbmxpbmVCb3hMb2dpY2FsVG9w
ID0gSW5saW5lTGF5b3V0VW5pdCB7IH07Ci0gICAgICAgIHN3aXRjaCAodGV4dEFsaWduTW9kZSkg
ewotICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOgotICAgICAgICAgICAgaW5s
aW5lQm94TG9naWNhbFRvcCA9IGFsaWdubWVudEJhc2VsaW5lIC0gaW5saW5lQm94LmJhc2VsaW5l
KCk7CisgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGlubGluZUJveC0+bGF5b3V0Qm94KCk7Cisg
ICAgICAgIHN3aXRjaCAobGF5b3V0Qm94LnN0eWxlKCkudmVydGljYWxBbGlnbigpKSB7CisgICAg
ICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmU6IHsKKyAgICAgICAgICAgIGF1dG8mIHBh
cmVudElubGluZUJveCA9IGlubGluZUJveEZvckxheW91dEJveChsYXlvdXRCb3gucGFyZW50KCkp
OworICAgICAgICAgICAgaW5saW5lQm94TG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5sb2dp
Y2FsVG9wKCkgKyBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGlubGluZUJveC0+YmFzZWxp
bmUoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2UgVmVydGlj
YWxBbGlnbjo6VG9wOgotICAgICAgICAgICAgaW5saW5lQm94TG9naWNhbFRvcCA9IHsgfTsKKyAg
ICAgICAgICAgIGlubGluZUJveExvZ2ljYWxUb3AgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRvbToKLSAg
ICAgICAgICAgIGlubGluZUJveExvZ2ljYWxUb3AgPSBsb2dpY2FsQm90dG9tKCkgLSBpbmxpbmVC
b3gubG9naWNhbEhlaWdodCgpOworICAgICAgICAgICAgaW5saW5lQm94TG9naWNhbFRvcCA9IGNv
bnRlbnRMb2dpY2FsQm90dG9tIC0gaW5saW5lQm94LT5sb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6IHsKLSAgICAg
ICAgICAgIEFTU0VSVCgmbGF5b3V0Qm94ICE9ICZmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKSk7
Ci0gICAgICAgICAgICBhdXRvJiBwYXJlbnRTdHlsZSA9IGxheW91dEJveC5wYXJlbnQoKS5zdHls
ZSgpOwotICAgICAgICAgICAgYXV0byB4SGVpZ2h0ID0gcGFyZW50U3R5bGUuZm9udE1ldHJpY3Mo
KS54SGVpZ2h0KCk7Ci0gICAgICAgICAgICBpbmxpbmVCb3hMb2dpY2FsVG9wID0gYWxpZ25tZW50
QmFzZWxpbmUgLSAoaW5saW5lQm94LmxvZ2ljYWxIZWlnaHQoKSAvIDIgKyB4SGVpZ2h0IC8gMik7
CisgICAgICAgICAgICBhdXRvJiBwYXJlbnRMYXlvdXRCb3ggPSBsYXlvdXRCb3gucGFyZW50KCk7
CisgICAgICAgICAgICBhdXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBpbmxpbmVCb3hGb3JMYXlvdXRC
b3gocGFyZW50TGF5b3V0Qm94KTsKKyAgICAgICAgICAgIGlubGluZUJveExvZ2ljYWxUb3AgPSBw
YXJlbnRJbmxpbmVCb3gubG9naWNhbFRvcCgpICsgcGFyZW50SW5saW5lQm94LmJhc2VsaW5lKCkg
LSAoaW5saW5lQm94LT5sb2dpY2FsSGVpZ2h0KCkgLyAyICsgcGFyZW50TGF5b3V0Qm94LnN0eWxl
KCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX0lNUExFTUVO
VEVEX1lFVCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaW5saW5l
Qm94LnNldExvZ2ljYWxUb3AoaW5saW5lQm94TG9naWNhbFRvcCk7Ci0gICAgfTsKKyAgICAgICAg
aW5saW5lQm94LT5zZXRMb2dpY2FsVG9wKGlubGluZUJveExvZ2ljYWxUb3ApOworICAgIH0KIAot
ICAgIGFsaWdubWVudEJhc2VsaW5lID0gaGFsZkxlYWRpbmdNZXRyaWNzKHJvb3RTdHlsZS5mb250
TWV0cmljcygpLCBsaW5lQm94TG9naWNhbEhlaWdodCkuYXNjZW50OwotICAgIGFkanVzdElubGlu
ZUJveFRvcChtX3Jvb3RJbmxpbmVCb3gsIHJvb3QoKSwgVmVydGljYWxBbGlnbjo6QmFzZWxpbmUp
OwotICAgIGZvciAoYXV0byYgaW5saW5lQm94RW50cnkgOiBtX2lubGluZUJveFJlY3RNYXApIHsK
LSAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gKmlubGluZUJveEVudHJ5LmtleTsKLSAgICAgICAg
YXV0byYgaW5saW5lQm94ID0gKmlubGluZUJveEVudHJ5LnZhbHVlOwotICAgICAgICBhZGp1c3RJ
bmxpbmVCb3hUb3AoaW5saW5lQm94LCBsYXlvdXRCb3gsIGxheW91dEJveC5zdHlsZSgpLnZlcnRp
Y2FsQWxpZ24oKSk7CisgICAgYXV0byBhZGp1c3RDb250ZW50Qm90dG9tSWZOZWVkZWQgPSBbJl0g
eworICAgICAgICBpZiAoIW1fcm9vdElubGluZUJveC5pc0VtcHR5KCkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGF1dG8gY29sbGFwc2VkQ29udGVudExvZ2ljYWxUb3AgPSBjb250ZW50
TG9naWNhbEJvdHRvbTsKKyAgICAgICAgYXV0byBjb2xsYXBzZWRDb250ZW50TG9naWNhbEJvdHRv
bSA9IElubGluZUxheW91dFVuaXQgeyB9OworICAgICAgICBmb3IgKGF1dG8mIGlubGluZUJveCA6
IG1faW5saW5lQm94TGlzdCkgeworICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbEFsaWduID0gaW5s
aW5lQm94LT5sYXlvdXRCb3goKS5zdHlsZSgpLnZlcnRpY2FsQWxpZ24oKTsKKyAgICAgICAgICAg
IGF1dG8gc3RyZXRjaGVzTGluZUJveCA9IHZlcnRpY2FsQWxpZ24gPT0gVmVydGljYWxBbGlnbjo6
Qm90dG9tIHx8IHZlcnRpY2FsQWxpZ24gPT0gVmVydGljYWxBbGlnbjo6VG9wIHx8ICZpbmxpbmVC
b3gtPmxheW91dEJveCgpLnBhcmVudCgpID09ICZtX3Jvb3RJbmxpbmVCb3gubGF5b3V0Qm94KCk7
CisgICAgICAgICAgICBpZiAoIXN0cmV0Y2hlc0xpbmVCb3gpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBpZiAoaW5saW5lQm94LT5pc0VtcHR5KCkpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICBjb2xsYXBzZWRDb250ZW50TG9naWNhbFRvcCA9
IHN0ZDo6bWluKGNvbGxhcHNlZENvbnRlbnRMb2dpY2FsVG9wLCBpbmxpbmVCb3gtPmxvZ2ljYWxU
b3AoKSk7CisgICAgICAgICAgICBjb2xsYXBzZWRDb250ZW50TG9naWNhbEJvdHRvbSA9IHN0ZDo6
bWF4KGNvbGxhcHNlZENvbnRlbnRMb2dpY2FsQm90dG9tLCBpbmxpbmVCb3gtPmxvZ2ljYWxCb3R0
b20oKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbGxhcHNlZENvbnRlbnRMb2dpY2FsVG9w
IDw9IDApIHsKKyAgICAgICAgICAgIGNvbnRlbnRMb2dpY2FsQm90dG9tID0gY29sbGFwc2VkQ29u
dGVudExvZ2ljYWxCb3R0b207CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgY29udGVudExvZ2ljYWxCb3R0b20gPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKKyAgICAgICAg
Zm9yIChhdXRvJiBpbmxpbmVCb3ggOiBtX2lubGluZUJveExpc3QpIHsKKyAgICAgICAgICAgIGlu
bGluZUJveC0+c2V0TG9naWNhbFRvcChpbmxpbmVCb3gtPmxvZ2ljYWxUb3AoKSAtIGNvbGxhcHNl
ZENvbnRlbnRMb2dpY2FsVG9wKTsKKyAgICAgICAgICAgIGNvbnRlbnRMb2dpY2FsQm90dG9tID0g
c3RkOjptYXgoY29udGVudExvZ2ljYWxCb3R0b20sIGlubGluZUJveC0+bG9naWNhbEJvdHRvbSgp
KTsKKyAgICAgICAgfQorICAgIH07CisgICAgYWRqdXN0Q29udGVudEJvdHRvbUlmTmVlZGVkKCk7
CisgICAgLy8gQ29tcHV0ZSB0aGUgbGluZSBib3ggaGVpZ2h0LiBJdCdzIGVpdGhlciB0aGUgbGlu
ZS1oZWlnaHQgdmFsdWUgKG5lZ2F0aXZlIHZhbHVlIG1lYW5zIGxpbmUgaGVpZ2h0IGl0IG5vdCBz
ZXQpIG9yCisgICAgLy8gbWF4aW11bSBvZiB0aGUgcm9vdCBpbmxpbmUgYm94J3MgYm90dG9tIGFu
ZCB0aGUgdG9wIGFsaWduZWQgY29udGVudCBoZWlnaHQuCisgICAgaWYgKGlzTGluZVZpc3VhbGx5
RW1wdHkgPT0gSXNMaW5lVmlzdWFsbHlFbXB0eTo6Tm8pIHsKKyAgICAgICAgSW5saW5lTGF5b3V0
VW5pdCBsaW5lU3BhY2luZyA9IHJvb3RTdHlsZS5mb250TWV0cmljcygpLmxpbmVTcGFjaW5nKCk7
CisgICAgICAgIGF1dG8gbGluZUJveExvZ2ljYWxIZWlnaHQgPSAhcm9vdFN0eWxlLmxpbmVIZWln
aHQoKS5pc05lZ2F0aXZlKCkgPyByb290U3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCkgOiBzdGQ6
Om1heChsaW5lU3BhY2luZywgY29udGVudExvZ2ljYWxCb3R0b20pOworICAgICAgICBtX3JlY3Qu
c2V0SGVpZ2h0KGxpbmVCb3hMb2dpY2FsSGVpZ2h0KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaApp
bmRleCBjMmQyNmU5YWVlMDcxNGQwOGRmZWRkMTYxNGUzZmVmNWE3ZGQwOGU4Li5hNWJkMzUwNDMw
ZDBlNjJmOGQ3N2E4MWM2ZjBiNjBiMTI3ZTU4MDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiRGlzcGxheUlubGluZVJlY3QuaCIKICNpbmNsdWRlICJJbmxpbmVM
aW5lQnVpbGRlci5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91
dCB7CkBAIC00NCwxMiArNDUsMTIgQEAgcHVibGljOgogICAgICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lOTElORShJbmxpbmVCb3gpOwogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBjbGFz
cyBJc0NvbnNpZGVyZWRFbXB0eSB7IFllcywgTm8gfTsKLSAgICAgICAgSW5saW5lQm94KGNvbnN0
IERpc3BsYXk6OklubGluZVJlY3QmLCBJbmxpbmVMYXlvdXRVbml0IHN5bnRoZXRpY0Jhc2VsaW5l
KTsKLSAgICAgICAgSW5saW5lQm94KGNvbnN0IERpc3BsYXk6OklubGluZVJlY3QmLCBJbmxpbmVM
YXlvdXRVbml0IGJhc2VsaW5lLCBJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQsIElzQ29uc2lkZXJl
ZEVtcHR5KTsKKyAgICAgICAgSW5saW5lQm94KGNvbnN0IEJveCYsIGNvbnN0IERpc3BsYXk6Oklu
bGluZVJlY3QmLCBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lLCBJbmxpbmVMYXlvdXRVbml0IGRl
c2NlbnQsIElzQ29uc2lkZXJlZEVtcHR5KTsKICAgICAgICAgSW5saW5lQm94KCkgPSBkZWZhdWx0
OwogCiAgICAgICAgIGNvbnN0IERpc3BsYXk6OklubGluZVJlY3QmIGxvZ2ljYWxSZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9sb2dpY2FsUmVjdDsgfQogICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGxv
Z2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBtX2xvZ2ljYWxSZWN0LnRvcCgpOyB9CisgICAgICAg
IElubGluZUxheW91dFVuaXQgbG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNh
bFJlY3QuYm90dG9tKCk7IH0KICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbFJlY3QubGVmdCgpOyB9CiAgICAgICAgIElubGluZUxh
eW91dFVuaXQgbG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsUmVjdC53aWR0
aCgpOyB9CiAgICAgICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbEhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1fbG9naWNhbFJlY3QuaGVpZ2h0KCk7IH0KQEAgLTU3LDE5ICs1OCwyNCBAQCBwdWJs
aWM6CiAgICAgICAgIElubGluZUxheW91dFVuaXQgYmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiBt
X2Jhc2VsaW5lOyB9CiAgICAgICAgIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IGRlc2NlbnQo
KSBjb25zdCB7IHJldHVybiBtX2Rlc2NlbnQ7IH0KIAotICAgICAgICB2b2lkIHNldExvZ2ljYWxU
b3AoSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSB7IG1fbG9naWNhbFJlY3Quc2V0VG9wKGxv
Z2ljYWxUb3ApOyB9Ci0gICAgICAgIHZvaWQgc2V0TG9naWNhbFdpZHRoKElubGluZUxheW91dFVu
aXQgbG9naWNhbFdpZHRoKSB7IG1fbG9naWNhbFJlY3Quc2V0V2lkdGgobG9naWNhbFdpZHRoKTsg
fQotCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbXB0eTsgfQog
ICAgICAgICB2b2lkIHNldElzTm9uRW1wdHkoKSB7IG1faXNFbXB0eSA9IGZhbHNlOyB9Ci0gICAg
ICAgIGJvb2wgaXNBdG9taWMoKSBjb25zdCB7IHJldHVybiBtX2lzQXRvbWljOyB9CisKKyAgICAg
ICAgY29uc3QgQm94JiBsYXlvdXRCb3goKSBjb25zdCB7IHJldHVybiAqbV9sYXlvdXRCb3g7IH0K
IAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMaW5lQm94OworCisgICAgICAg
IHZvaWQgc2V0TG9naWNhbFRvcChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxUb3ApIHsgbV9sb2dp
Y2FsUmVjdC5zZXRUb3AobG9naWNhbFRvcCk7IH0KKyAgICAgICAgdm9pZCBzZXRMb2dpY2FsV2lk
dGgoSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpIHsgbV9sb2dpY2FsUmVjdC5zZXRXaWR0
aChsb2dpY2FsV2lkdGgpOyB9CisgICAgICAgIHZvaWQgc2V0TG9naWNhbEhlaWdodChJbmxpbmVM
YXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpIHsgbV9sb2dpY2FsUmVjdC5zZXRIZWlnaHQobG9naWNh
bEhlaWdodCk7IH0KKyAgICAgICAgdm9pZCBzZXRCYXNlbGluZShJbmxpbmVMYXlvdXRVbml0IGJh
c2VsaW5lKSB7IG1fYmFzZWxpbmUgPSBiYXNlbGluZTsgfQorCisgICAgICAgIFdlYWtQdHI8Y29u
c3QgQm94PiBtX2xheW91dEJveDsKICAgICAgICAgRGlzcGxheTo6SW5saW5lUmVjdCBtX2xvZ2lj
YWxSZWN0OwogICAgICAgICBJbmxpbmVMYXlvdXRVbml0IG1fYmFzZWxpbmU7CiAgICAgICAgIE9w
dGlvbmFsPElubGluZUxheW91dFVuaXQ+IG1fZGVzY2VudDsKICAgICAgICAgYm9vbCBtX2lzRW1w
dHkgeyB0cnVlIH07Ci0gICAgICAgIGJvb2wgbV9pc0F0b21pYyB7IGZhbHNlIH07CiAgICAgfTsK
IAogICAgIGVudW0gY2xhc3MgSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50IHsgTm8sIFllcyB9
OwpAQCAtODYsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgRGlzcGxheTo6SW5saW5lUmVj
dCYgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KICAgICBjb25zdCBEaXNw
bGF5OjpJbmxpbmVSZWN0JiBzY3JvbGxhYmxlT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX3Nj
cm9sbGFibGVPdmVyZmxvdzsgfQogCi0gICAgY29uc3QgSW5saW5lQm94JiBpbmxpbmVCb3hGb3JM
YXlvdXRCb3goY29uc3QgQm94JikgY29uc3Q7CisgICAgY29uc3QgSW5saW5lQm94JiBpbmxpbmVC
b3hGb3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0IHsgcmV0dXJuICptX2lu
bGluZUJveFJlY3RNYXAuZ2V0KCZsYXlvdXRCb3gpOyB9CiAgICAgRGlzcGxheTo6SW5saW5lUmVj
dCBpbmxpbmVSZWN0Rm9yVGV4dFJ1bihjb25zdCBMaW5lQnVpbGRlcjo6UnVuJikgY29uc3Q7CiAK
ICAgICAvLyBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXyBsaW5lIGJveCBsb2dpY2FsIHRvcApAQCAtMTA4LDcgKzExNCwxMCBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBjb25zdHJ1Y3RJbmxpbmVCb3hlcyhjb25zdCBMaW5lQnVpbGRl
cjo6UnVuTGlzdCYsIElzTGluZVZpc3VhbGx5RW1wdHkpOwotICAgIHZvaWQgYWxpZ25WZXJ0aWNh
bGx5KElzTGluZVZpc3VhbGx5RW1wdHkpOworICAgIHZvaWQgY29tcHV0ZUlubGluZUJveGVzTG9n
aWNhbEhlaWdodCgpOworICAgIHZvaWQgYWxpZ25JbmxpbmVCb3hlc1ZlcnRpY2FsbHlBbmRDb21w
dXRlTGluZUJveEhlaWdodChJc0xpbmVWaXN1YWxseUVtcHR5KTsKKworICAgIElubGluZUJveCYg
aW5saW5lQm94Rm9yTGF5b3V0Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSB7IHJldHVybiAqbV9p
bmxpbmVCb3hSZWN0TWFwLmdldCgmbGF5b3V0Qm94KTsgfQogCiAgICAgSW5saW5lTGF5b3V0VW5p
dCBjb250ZW50TG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50TG9naWNhbFdp
ZHRoOyB9CiAKQEAgLTEyNCw3ICsxMzMsOCBAQCBwcml2YXRlOgogICAgIElubGluZUJveCBtX3Jv
b3RJbmxpbmVCb3g7CiAKICAgICBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBtX2xpbmVBbGln
bm1lbnRPZmZzZXQ7Ci0gICAgSGFzaE1hcDxjb25zdCBCb3gqLCBzdGQ6OnVuaXF1ZV9wdHI8SW5s
aW5lQm94Pj4gbV9pbmxpbmVCb3hSZWN0TWFwOworICAgIEhhc2hNYXA8Y29uc3QgQm94KiwgSW5s
aW5lQm94Kj4gbV9pbmxpbmVCb3hSZWN0TWFwOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
SW5saW5lQm94Pj4gbV9pbmxpbmVCb3hMaXN0OwogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdD
b250ZXh0JiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0OwogfTsKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIwYTdiZjAy
NWUwODM4MDk4NGU2MzZkYTFmOWUzNjQxMjU1M2NlYTguLjdhOTUzMjQ4ZWQ3YTgyZWU1YjcwNWYy
MjI3YzE1MmJiMzJjNTZjNGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wOC0zMSAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdW0lGQ10gRml4IG5l
c3RlZCBpbmxpbmUgYm94IHNpemluZyBhbmQgcG9zaXRpb25pbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTc0OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29u
dGV4dC92ZXJ0aWNhbC1hbGlnbi1taWRkbGUtbmVzdGVkLWV4cGVjdGVkLmh0bWw6CisgICAgICAg
ICogZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC92ZXJ0aWNhbC1hbGlnbi1taWRkbGUtbmVz
dGVkLmh0bWw6CisKIDIwMjAtMDgtMzEgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBbTEZDXVtJRkNdIEFkZCBpbml0aWFsIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUg
c3VwcG9ydApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29u
dGV4dC92ZXJ0aWNhbC1hbGlnbi1taWRkbGUtbmVzdGVkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3ZlcnRpY2FsLWFsaWduLW1pZGRsZS1u
ZXN0ZWQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MWE2OTcwMGJiODMxZDJkNjMwNzY5M2Fl
ZjU4MzgxYTc0ZDhmNjg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sYXlv
dXRmb3JtYXR0aW5nY29udGV4dC92ZXJ0aWNhbC1hbGlnbi1taWRkbGUtbmVzdGVkLWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSw3IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1
bm5lciBbIGludGVybmFsOkxheW91dEZvcm1hdHRpbmdDb250ZXh0RW5hYmxlZD10cnVlIGludGVy
bmFsOkxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkPWZhbHNlIF0gLS0+
Cis8c3R5bGU+CitkaXYgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworfQorPC9zdHls
ZT4KKzxkaXYgc3R5bGU9ImhlaWdodDogNDRweDsiPjwvZGl2PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC92ZXJ0aWNhbC1hbGlnbi1taWRkbGUt
bmVzdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3Zl
cnRpY2FsLWFsaWduLW1pZGRsZS1uZXN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzEzZWI0YWYyZTFk
NTZlMzgwOGM4N2VhMjJmMGE0ODgyOTA2YzkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC92ZXJ0aWNhbC1hbGlnbi1taWRkbGUtbmVz
dGVkLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRl
c3QtcnVubmVyIFsgaW50ZXJuYWw6TGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRFbmFibGVkPXRydWUg
aW50ZXJuYWw6TGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQ9ZmFsc2Ug
XSAtLT4KKzxzdHlsZT4KKy5jb250YWluZXIgeworICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsK
KyAgY29sb3I6IGdyZWVuOworICBmb250LXNpemU6IDQwcHg7CisgIGZvbnQtZmFtaWx5OiBBaGVt
OworfQorCitzcGFuIHsKKyAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKK30KKzwvc3R5bGU+CisK
KzxkaXYgY2xhc3M9Y29udGFpbmVyPgorICBYWAorICA8c3Bhbj4KKyAgICBYWAorICA8L3NwYW4+
Cis8L2Rpdj4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407852</attachid>
            <date>2020-09-02 19:44:22 -0700</date>
            <delta_ts>2020-09-03 02:55:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215748-20200902194421.patch</filename>
            <type>text/plain</type>
            <size>29544</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY5MmU1MDYzYzkzMjA4
ZDBjYjAwNTExZWQ3MmZhZWViMTNiZDU3My4uY2ZmYTczN2JlNWQ1YWViMDUzM2RkMGRhMzQ3YjJi
NDE2YmMwZGFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTA4LTMxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBBZGQgc3Vw
cG9ydCBuZXN0ZWQgaW5saW5lIGJveCBzaXppbmcgYW5kIHBvc2l0aW9uaW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU3NDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBUaGlzIHBhdGNoIHNwbGl0cyB0
aGUgbGluZSBib3ggY29uc3RydWN0aW9uIHByb2Nlc3MgaW50byBhIGZldyBkaXN0aW5jdCBzdGVw
cy4KKyAgICAgICAgMS4gQ29uc3RydWN0IHRoZSBpbmxpbmUgYm94ZXMgYXMgbmVlZGVkLiBUaGVy
ZSdzIGFsd2F5cyBhIHJvb3QgaW5saW5lIGJveC4KKyAgICAgICAgMi4gU2l6ZSB0aGVtIGJ5IHRh
a2luZyB0aGUgdmVydGljYWwgYWxpZ25tZW50IGludG8gYWNjb3VudAorICAgICAgICAgICAtIGNo
aWxkIGlubGluZSBib3hlcyBzdHJldGNoIHRoZWlyIHBhcmVudCBpbmxpbmUgYm94ZXMgaW4gbW9z
dCBjYXNlcyAoZGVwZW5kaW5nIG9uIHRoZSB2ZXJ0aWNhbC1hbGlnbiBwcm9wZXJ0eSB2YWx1ZSku
CisgICAgICAgIDMuIFBvc2l0aW9uIHRoZSBpbmxpbmUgYm94ZXMgcmVsYXRpdmUgdG8gdGhlIGxp
bmUgYm94LgorCisgICAgICAgIFRlc3Q6IGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvdmVy
dGljYWwtYWxpZ24tbWlkZGxlLW5lc3RlZC5odG1sCisKKyAgICAgICAgKiBsYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
bV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okxp
bmVCb3g6OmlubGluZVJlY3RGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGluZUJveDo6Y29uc3RydWN0SW5saW5lQm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpMaW5lQm94Ojpjb21wdXRlSW5saW5lQm94ZXNMb2dpY2FsSGVpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6YWxpZ25JbmxpbmVCb3hlc1ZlcnRpY2FsbHlB
bmRDb21wdXRlTGluZUhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6
OmlubGluZUJveEZvckxheW91dEJveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVCb3g6OmFsaWduVmVydGljYWxseSk6IERlbGV0ZWQuCisgICAgICAgICog
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQm94OjpJbmxpbmVCb3g6OnNldExvZ2ljYWxUb3ApOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpJbmxpbmVCb3g6OnNldExvZ2ljYWxXaWR0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUJveDo6c2V0TG9naWNhbEhl
aWdodCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUJveDo6c2V0
QmFzZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjppbmxpbmVCb3hG
b3JMYXlvdXRCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpp
bmxpbmVCb3hGb3JMYXlvdXRCb3gpOgorCiAyMDIwLTA4LTI4ICBaYWxhbiBCdWp0YXMgIDx6YWxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBGaW5hbGl6ZSBJbmxpbmVCb3ggYWxp
Z25tZW50IGluIExpbmVCb3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNw
bGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxh
eXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwCmluZGV4IDQyN2Q2OGQ5YWMyOTk0MzczOTAwMTg2OWM5
NTA4Y2Q4Mzc0YmU0NjQuLjIwODM1MGIwODUxNzQzM2M0NGY2ZWJiOTljYzczNzBhZGFiMWMyOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFp
bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQ
YWludGVyLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyB2b2lkIHBhaW50SW5saW5lQ29u
dGVudChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIExheW91dFBvaW50IGFic29sdXRlT2ZmCiAg
ICAgICAgICAgICBhdXRvIGFic29sdXRlTGVmdCA9IGFic29sdXRlT2Zmc2V0LngoKSArIHJ1bi5s
ZWZ0KCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIG5vbi1iYXNlbGluZSBhbGlnbiBwYWlu
dGluZwogICAgICAgICAgICAgYXV0byYgbGluZUJveCA9IGRpc3BsYXlJbmxpbmVDb250ZW50LT5s
aW5lQm94Rm9yUnVuKHJ1bik7Ci0gICAgICAgICAgICBhdXRvIGJhc2VsaW5lID0gYWJzb2x1dGVP
ZmZzZXQueSgpICsgbGluZUJveC50b3AoKSArIGxpbmVCb3guYmFzZWxpbmUoKTsKKyAgICAgICAg
ICAgIGF1dG8gYmFzZWxpbmUgPSBhYnNvbHV0ZU9mZnNldC55KCkgKyBydW4udG9wKCkgKyBzdHls
ZS5mb250TWV0cmljcygpLmFzY2VudCgpOwogICAgICAgICAgICAgYXV0byBleHBhbnNpb24gPSBy
dW4uZXhwYW5zaW9uKCk7CiAgICAgICAgICAgICBhdXRvIHRleHRSdW4gPSBUZXh0UnVuIHsgdGV4
dENvbnRlbnQtPmNvbnRlbnQoKSwgcnVuLmxlZnQoKSAtIGxpbmVCb3gubGVmdCgpLCBleHBhbnNp
b24uaG9yaXpvbnRhbEV4cGFuc2lvbiwgZXhwYW5zaW9uLmJlaGF2aW9yIH07CiAgICAgICAgICAg
ICB0ZXh0UnVuLnNldFRhYlNpemUoIXN0eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpLCBzdHlsZS50
YWJTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcAppbmRleCBjZWIxNDIzNjU4Mjg5ZGY1YTFmOTk0NmUz
NTdmMWViMGYzYTk3NjBmLi5lMDViNmIwYmE3ZTEyMjgyMjdjMDAwZmI2MTdmOGM0MDkwZmVjNzg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVMaW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lQm94LmNwcApAQCAtMTM0LDE2ICsxMzQsOSBAQCBpbmxpbmUgc3RhdGljIEFz
Y2VudEFuZERlc2NlbnQgaGFsZkxlYWRpbmdNZXRyaWNzKGNvbnN0IEZvbnRNZXRyaWNzJiBmb250
TWV0cmljcwogICAgIHJldHVybiB7IGZsb29yZihhc2NlbnQgKyBoYWxmTGVhZGluZyksIGNlaWxm
KGRlc2NlbnQgKyBoYWxmTGVhZGluZykgfTsKIH0KIAotTGluZUJveDo6SW5saW5lQm94OjpJbmxp
bmVCb3goY29uc3QgRGlzcGxheTo6SW5saW5lUmVjdCYgcmVjdCwgSW5saW5lTGF5b3V0VW5pdCBz
eW50aGV0aWNCYXNlbGluZSkKLSAgICA6IG1fbG9naWNhbFJlY3QocmVjdCkKLSAgICAsIG1fYmFz
ZWxpbmUoc3ludGhldGljQmFzZWxpbmUpCi0gICAgLCBtX2lzRW1wdHkoZmFsc2UpCi0gICAgLCBt
X2lzQXRvbWljKHRydWUpCi17Ci19Ci0KLUxpbmVCb3g6OklubGluZUJveDo6SW5saW5lQm94KGNv
bnN0IERpc3BsYXk6OklubGluZVJlY3QmIHJlY3QsIElubGluZUxheW91dFVuaXQgYmFzZWxpbmUs
IElubGluZUxheW91dFVuaXQgZGVzY2VudCwgSXNDb25zaWRlcmVkRW1wdHkgaXNDb25zaWRlcmVk
RW1wdHkpCi0gICAgOiBtX2xvZ2ljYWxSZWN0KHJlY3QpCitMaW5lQm94OjpJbmxpbmVCb3g6Oklu
bGluZUJveChjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgRGlzcGxheTo6SW5saW5lUmVjdCYg
cmVjdCwgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZSwgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50
LCBJc0NvbnNpZGVyZWRFbXB0eSBpc0NvbnNpZGVyZWRFbXB0eSkKKyAgICA6IG1fbGF5b3V0Qm94
KG1ha2VXZWFrUHRyKGxheW91dEJveCkpCisgICAgLCBtX2xvZ2ljYWxSZWN0KHJlY3QpCiAgICAg
LCBtX2Jhc2VsaW5lKGJhc2VsaW5lKQogICAgICwgbV9kZXNjZW50KGRlc2NlbnQpCiAgICAgLCBt
X2lzRW1wdHkoaXNDb25zaWRlcmVkRW1wdHkgPT0gSXNDb25zaWRlcmVkRW1wdHk6OlllcykKQEAg
LTE2MSw0MSArMTU0LDM5IEBAIExpbmVCb3g6OkxpbmVCb3goY29uc3QgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQmIGlubGluZUZvcm1hdHRpbmdDb250ZXh0LCBjb25zdCBJCiAgICAgICAgIG1fcmVj
dC5tb3ZlSG9yaXpvbnRhbGx5KCptX2xpbmVBbGlnbm1lbnRPZmZzZXQpOwogICAgIH0KICAgICBj
b25zdHJ1Y3RJbmxpbmVCb3hlcyhydW5zLCBpc0xpbmVWaXN1YWxseUVtcHR5KTsKLSAgICBhbGln
blZlcnRpY2FsbHkoaXNMaW5lVmlzdWFsbHlFbXB0eSk7CisgICAgY29tcHV0ZUlubGluZUJveGVz
TG9naWNhbEhlaWdodCgpOworICAgIGFsaWduSW5saW5lQm94ZXNWZXJ0aWNhbGx5QW5kQ29tcHV0
ZUxpbmVCb3hIZWlnaHQoaXNMaW5lVmlzdWFsbHlFbXB0eSk7CiAgICAgLy8gQ29tcHV0ZSBzY3Jv
bGxhYmxlIG92ZXJmbG93LgogICAgIG1fc2Nyb2xsYWJsZU92ZXJmbG93ID0gRGlzcGxheTo6SW5s
aW5lUmVjdCB7IHRvcExlZnQsIHN0ZDo6bWF4KGxvZ2ljYWxXaWR0aCwgbV9yb290SW5saW5lQm94
LmxvZ2ljYWxXaWR0aCgpKSwgeyB9IH07Ci0gICAgYXV0byBsb2dpY2FsQm90dG9tID0gbV9yb290
SW5saW5lQm94LmxvZ2ljYWxCb3R0b20oKTsKKyAgICBhdXRvIGxvZ2ljYWxCb3R0b20gPSBJbmxp
bmVMYXlvdXRVbml0IHsgfTsgCiAgICAgZm9yIChhdXRvJiBpbmxpbmVCb3hFbnRyeSA6IG1faW5s
aW5lQm94UmVjdE1hcCkKLSAgICAgICAgbG9naWNhbEJvdHRvbSA9IHN0ZDo6bWF4KGxvZ2ljYWxC
b3R0b20sIGlubGluZUJveEVudHJ5LnZhbHVlLT5sb2dpY2FsQm90dG9tKCkpOworICAgICAgICBs
b2dpY2FsQm90dG9tID0gc3RkOjptYXgobG9naWNhbEJvdHRvbSwgaW5saW5lQm94RW50cnkudmFs
dWUtPmxvZ2ljYWxSZWN0KCkuYm90dG9tKCkpOwogICAgIG1fc2Nyb2xsYWJsZU92ZXJmbG93LmV4
cGFuZFZlcnRpY2FsbHkobG9naWNhbEJvdHRvbSk7Ci0KLX0KLQotY29uc3QgTGluZUJveDo6SW5s
aW5lQm94JiBMaW5lQm94OjppbmxpbmVCb3hGb3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRC
b3gpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCZsYXlvdXRCb3ggIT0gJnJvb3QoKSk7Ci0gICAgcmV0
dXJuICptX2lubGluZUJveFJlY3RNYXAuZ2V0KCZsYXlvdXRCb3gpOwogfQogCiBEaXNwbGF5OjpJ
bmxpbmVSZWN0IExpbmVCb3g6OmlubGluZVJlY3RGb3JUZXh0UnVuKGNvbnN0IExpbmVCdWlsZGVy
OjpSdW4mIHJ1bikgY29uc3QKIHsKICAgICBBU1NFUlQocnVuLmlzVGV4dCgpIHx8IHJ1bi5pc0xp
bmVCcmVhaygpKTsKLSAgICBhdXRvIGlubGluZUJveFJlY3QgPSBtX3Jvb3RJbmxpbmVCb3gubG9n
aWNhbFJlY3QoKTsKLSAgICBpZiAoJnJ1bi5sYXlvdXRCb3goKS5wYXJlbnQoKSAhPSAmcm9vdCgp
KQotICAgICAgICBpbmxpbmVCb3hSZWN0ID0gbV9pbmxpbmVCb3hSZWN0TWFwLmdldCgmcnVuLmxh
eW91dEJveCgpLnBhcmVudCgpKS0+bG9naWNhbFJlY3QoKTsKKyAgICBhdXRvJiBwYXJlbnRJbmxp
bmVCb3ggPSBpbmxpbmVCb3hGb3JMYXlvdXRCb3gocnVuLmxheW91dEJveCgpLnBhcmVudCgpKTsK
KyAgICBhdXRvIGlubGluZUJveFJlY3QgPSBwYXJlbnRJbmxpbmVCb3gubG9naWNhbFJlY3QoKTsK
ICAgICByZXR1cm4geyBpbmxpbmVCb3hSZWN0LnRvcCgpLCBydW4ubG9naWNhbExlZnQoKSwgcnVu
LmxvZ2ljYWxXaWR0aCgpLCBpbmxpbmVCb3hSZWN0LmhlaWdodCgpIH07CiB9CiAKIHZvaWQgTGlu
ZUJveDo6Y29uc3RydWN0SW5saW5lQm94ZXMoY29uc3QgTGluZUJ1aWxkZXI6OlJ1bkxpc3QmIHJ1
bnMsIElzTGluZVZpc3VhbGx5RW1wdHkgaXNMaW5lVmlzdWFsbHlFbXB0eSkKIHsKLSAgICBhdXRv
IGxpbmVIYXNJbWFnaW5hcnlTdHJ1dCA9ICFsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9kZSgpOwot
ICAgIGF1dG8gbGluZUlzQ29uc2lkZXJlZEVtcHR5ID0gIWxpbmVIYXNJbWFnaW5hcnlTdHJ1dCB8
fCBpc0xpbmVWaXN1YWxseUVtcHR5ID09IElzTGluZVZpc3VhbGx5RW1wdHk6OlllcyA/IElubGlu
ZUJveDo6SXNDb25zaWRlcmVkRW1wdHk6OlllcyA6IElubGluZUJveDo6SXNDb25zaWRlcmVkRW1w
dHk6Ok5vOwotICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gcm9vdCgpLnN0eWxlKCkuZm9udE1ldHJp
Y3MoKTsKLSAgICBJbmxpbmVMYXlvdXRVbml0IHJvb3RJbmxpbmVCb3hIZWlnaHQgPSBmb250TWV0
cmljcy5oZWlnaHQoKTsKLSAgICBhdXRvIHJvb3RJbmxpbmVSZWN0ID0gRGlzcGxheTo6SW5saW5l
UmVjdCB7IHsgfSwgeyB9LCBjb250ZW50TG9naWNhbFdpZHRoKCksIHJvb3RJbmxpbmVCb3hIZWln
aHQgfTsKLSAgICBJbmxpbmVMYXlvdXRVbml0IHJvb3RJbmxpbmVCYXNlbGluZSA9IGZvbnRNZXRy
aWNzLmFzY2VudCgpOwotICAgIGF1dG8gcm9vdElubGluZURlc2NlbnQgPSByb290SW5saW5lQm94
SGVpZ2h0IC0gcm9vdElubGluZUJhc2VsaW5lOwotICAgIG1fcm9vdElubGluZUJveCA9IElubGlu
ZUJveCB7IHJvb3RJbmxpbmVSZWN0LCByb290SW5saW5lQmFzZWxpbmUsIHJvb3RJbmxpbmVEZXNj
ZW50LCBsaW5lSXNDb25zaWRlcmVkRW1wdHkgfTsKKyAgICBhdXRvIGNvbnN0cnVjdFJvb3RJbmxp
bmVCb3ggPSBbJl0geworICAgICAgICBhdXRvJiBmb250TWV0cmljcyA9IHJvb3QoKS5zdHlsZSgp
LmZvbnRNZXRyaWNzKCk7CisgICAgICAgIElubGluZUxheW91dFVuaXQgcm9vdElubGluZUJveEhl
aWdodCA9IGZvbnRNZXRyaWNzLmhlaWdodCgpOworICAgICAgICBhdXRvIHJvb3RJbmxpbmVCb3hS
ZWN0ID0gRGlzcGxheTo6SW5saW5lUmVjdCB7IHsgfSwgeyB9LCBjb250ZW50TG9naWNhbFdpZHRo
KCksIHJvb3RJbmxpbmVCb3hIZWlnaHQgfTsKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCByb290
SW5saW5lQm94QmFzZWxpbmUgPSBmb250TWV0cmljcy5hc2NlbnQoKTsKKyAgICAgICAgYXV0byBy
b290SW5saW5lQm94RGVzY2VudCA9IHJvb3RJbmxpbmVCb3hIZWlnaHQgLSByb290SW5saW5lQm94
QmFzZWxpbmU7CisgICAgICAgIGF1dG8gbGluZUhhc0ltYWdpbmFyeVN0cnV0ID0gIWxheW91dFN0
YXRlKCkuaW5RdWlya3NNb2RlKCk7CisgICAgICAgIGF1dG8gcm9vdElubGluZUJveElzQ29uc2lk
ZXJlZEVtcHR5ID0gaXNMaW5lVmlzdWFsbHlFbXB0eSA9PSBJc0xpbmVWaXN1YWxseUVtcHR5OjpO
byAmJiBsaW5lSGFzSW1hZ2luYXJ5U3RydXQgPyBJbmxpbmVCb3g6OklzQ29uc2lkZXJlZEVtcHR5
OjpObyA6IElubGluZUJveDo6SXNDb25zaWRlcmVkRW1wdHk6OlllczsKKworICAgICAgICBtX3Jv
b3RJbmxpbmVCb3ggPSBJbmxpbmVCb3ggeyByb290KCksIHJvb3RJbmxpbmVCb3hSZWN0LCByb290
SW5saW5lQm94QmFzZWxpbmUsIHJvb3RJbmxpbmVCb3hEZXNjZW50LCByb290SW5saW5lQm94SXND
b25zaWRlcmVkRW1wdHkgfTsKKyAgICAgICAgbV9pbmxpbmVCb3hSZWN0TWFwLnNldCgmcm9vdCgp
LCAmbV9yb290SW5saW5lQm94KTsKKyAgICB9OworICAgIGNvbnN0cnVjdFJvb3RJbmxpbmVCb3go
KTsKIAogICAgIGZvciAoYXV0byYgcnVuIDogcnVucykgewogICAgICAgICBhdXRvJiBsYXlvdXRC
b3ggPSBydW4ubGF5b3V0Qm94KCk7CkBAIC0yMjAsMTEgKzIxMSwxNSBAQCB2b2lkIExpbmVCb3g6
OmNvbnN0cnVjdElubGluZUJveGVzKGNvbnN0IExpbmVCdWlsZGVyOjpSdW5MaXN0JiBydW5zLCBJ
c0xpbmVWaXN1YQogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgYXV0byBhZGp1
c3RlZEJhc2VsaW5lID0gYm94R2VvbWV0cnkubWFyZ2luQmVmb3JlKCkgKyBib3hHZW9tZXRyeS5i
b3JkZXJUb3AoKSArIGJveEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDApICsgaW5saW5l
QmxvY2tCYXNlbGluZTsKICAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJveFJlY3QgPSBEaXNw
bGF5OjpJbmxpbmVSZWN0IHsgeyB9LCBydW4ubG9naWNhbExlZnQoKSwgcnVuLmxvZ2ljYWxXaWR0
aCgpLCBib3hHZW9tZXRyeS5tYXJnaW5Cb3hIZWlnaHQoKSB9OwotICAgICAgICAgICAgICAgIG1f
aW5saW5lQm94UmVjdE1hcC5zZXQoJmxheW91dEJveCwgbWFrZVVuaXF1ZTxJbmxpbmVCb3g+KGlu
bGluZUJveFJlY3QsIGFkanVzdGVkQmFzZWxpbmUpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGlu
bGluZUJveCA9IG1ha2VVbmlxdWU8SW5saW5lQm94PihsYXlvdXRCb3gsIGlubGluZUJveFJlY3Qs
IGFkanVzdGVkQmFzZWxpbmUsIElubGluZUxheW91dFVuaXQgeyB9LCBJbmxpbmVCb3g6OklzQ29u
c2lkZXJlZEVtcHR5OjpObyk7CisgICAgICAgICAgICAgICAgbV9pbmxpbmVCb3hSZWN0TWFwLnNl
dCgmbGF5b3V0Qm94LCBpbmxpbmVCb3guZ2V0KCkpOworICAgICAgICAgICAgICAgIG1faW5saW5l
Qm94TGlzdC5hcHBlbmQoV1RGTW92ZShpbmxpbmVCb3gpKTsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgYXV0byBydW5IZWlnaHQgPSBib3hHZW9tZXRyeS5tYXJnaW5Cb3hI
ZWlnaHQoKTsKICAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJveFJlY3QgPSBEaXNwbGF5OjpJ
bmxpbmVSZWN0IHsgeyB9LCBydW4ubG9naWNhbExlZnQoKSwgcnVuLmxvZ2ljYWxXaWR0aCgpLCBy
dW5IZWlnaHQgfTsKLSAgICAgICAgICAgICAgICBtX2lubGluZUJveFJlY3RNYXAuc2V0KCZsYXlv
dXRCb3gsIG1ha2VVbmlxdWU8SW5saW5lQm94PihpbmxpbmVCb3hSZWN0LCBydW5IZWlnaHQpKTsK
KyAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJveCA9IG1ha2VVbmlxdWU8SW5saW5lQm94Pihs
YXlvdXRCb3gsIGlubGluZUJveFJlY3QsIHJ1bkhlaWdodCwgSW5saW5lTGF5b3V0VW5pdCB7IH0s
IElubGluZUJveDo6SXNDb25zaWRlcmVkRW1wdHk6Ok5vKTsKKyAgICAgICAgICAgICAgICBtX2lu
bGluZUJveFJlY3RNYXAuc2V0KCZsYXlvdXRCb3gsIGlubGluZUJveC5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgbV9pbmxpbmVCb3hMaXN0LmFwcGVuZChXVEZNb3ZlKGlubGluZUJveCkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHJ1bi5pc0NvbnRhaW5lclN0YXJ0KCkpIHsK
ICAgICAgICAgICAgIGF1dG8gaW5pdGlhbFdpZHRoID0gY29udGVudExvZ2ljYWxXaWR0aCgpIC0g
cnVuLmxvZ2ljYWxMZWZ0KCk7CkBAIC0yMzMsNyArMjI4LDkgQEAgdm9pZCBMaW5lQm94Ojpjb25z
dHJ1Y3RJbmxpbmVCb3hlcyhjb25zdCBMaW5lQnVpbGRlcjo6UnVuTGlzdCYgcnVucywgSXNMaW5l
VmlzdWEKICAgICAgICAgICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbEhlaWdodCA9IGZvbnRN
ZXRyaWNzLmhlaWdodCgpOwogICAgICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZSA9
IGZvbnRNZXRyaWNzLmFzY2VudCgpOwogICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hSZWN0ID0g
RGlzcGxheTo6SW5saW5lUmVjdCB7IHsgfSwgcnVuLmxvZ2ljYWxMZWZ0KCksIGluaXRpYWxXaWR0
aCwgbG9naWNhbEhlaWdodCB9OwotICAgICAgICAgICAgbV9pbmxpbmVCb3hSZWN0TWFwLnNldCgm
bGF5b3V0Qm94LCBtYWtlVW5pcXVlPElubGluZUJveD4oaW5saW5lQm94UmVjdCwgYmFzZWxpbmUs
IGxvZ2ljYWxIZWlnaHQgLSBiYXNlbGluZSwgSW5saW5lQm94OjpJc0NvbnNpZGVyZWRFbXB0eTo6
WWVzKSk7CisgICAgICAgICAgICBhdXRvIGlubGluZUJveCA9IG1ha2VVbmlxdWU8SW5saW5lQm94
PihsYXlvdXRCb3gsIGlubGluZUJveFJlY3QsIGJhc2VsaW5lLCBsb2dpY2FsSGVpZ2h0IC0gYmFz
ZWxpbmUsIElubGluZUJveDo6SXNDb25zaWRlcmVkRW1wdHk6Olllcyk7CisgICAgICAgICAgICBt
X2lubGluZUJveFJlY3RNYXAuc2V0KCZsYXlvdXRCb3gsIGlubGluZUJveC5nZXQoKSk7CisgICAg
ICAgICAgICBtX2lubGluZUJveExpc3QuYXBwZW5kKFdURk1vdmUoaW5saW5lQm94KSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAocnVuLmlzQ29udGFpbmVyRW5kKCkpIHsKICAgICAgICAgICAgIC8vIEFk
anVzdCB0aGUgbG9naWNhbCB3aWR0aCB3aGVuIHRoZSBpbmxpbmUgbGV2ZWwgY29udGFpbmVyIGNs
b3NlcyBvbiB0aGlzIGxpbmUuCiAgICAgICAgICAgICBhdXRvJiBpbmxpbmVCb3ggPSAqbV9pbmxp
bmVCb3hSZWN0TWFwLmdldCgmbGF5b3V0Qm94KTsKQEAgLTI0NSw5MiArMjQyLDE0MyBAQCB2b2lk
IExpbmVCb3g6OmNvbnN0cnVjdElubGluZUJveGVzKGNvbnN0IExpbmVCdWlsZGVyOjpSdW5MaXN0
JiBydW5zLCBJc0xpbmVWaXN1YQogICAgIH0KIH0KIAotdm9pZCBMaW5lQm94OjphbGlnblZlcnRp
Y2FsbHkoSXNMaW5lVmlzdWFsbHlFbXB0eSBpc0xpbmVWaXN1YWxseUVtcHR5KQordm9pZCBMaW5l
Qm94Ojpjb21wdXRlSW5saW5lQm94ZXNMb2dpY2FsSGVpZ2h0KCkKIHsKLSAgICBpZiAoaXNMaW5l
VmlzdWFsbHlFbXB0eSA9PSBJc0xpbmVWaXN1YWxseUVtcHR5OjpZZXMpCi0gICAgICAgIHJldHVy
bjsKLSAgICAvLyAxLiBDb21wdXRlIGxpbmUgYm94IGhlaWdodC9hbGlnbm1lbnQgYmFzZWxpbmUg
YnkgcGxhY2luZyB0aGUgaW5saW5lIGJveGVzIHZlcnRpY2FsbHkuCi0gICAgLy8gMi4gQWRqdXN0
IHRoZSBpbmxpbmUgYm94IHZlcnRpY2FsIHBvc2l0aW9uLgotICAgIGF1dG8mIHJvb3RTdHlsZSA9
IHJvb3QoKS5zdHlsZSgpOwotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbGV0IGxpbmUgYm94IGZ1
bGx5IGNvbnRhaW4gdGhlIGlubGluZSBib3hlcyBhbmQgbW92ZSBsaW5lIHNwYWNpbmcvb3ZlcmZs
b3cgb3V0IHRvIERpc3BsYXk6OkxpbmVCb3guCi0gICAgLy8gc2VlIHdlYmtpdC5vcmcvYi8yMTUw
ODcjYzkKLSAgICBJbmxpbmVMYXlvdXRVbml0IHJlY29tbWVuZGVkTGluZUJveEhlaWdodCA9IHJv
b3RTdHlsZS5saW5lSGVpZ2h0KCkuaXNOZWdhdGl2ZSgpID8gcm9vdFN0eWxlLmZvbnRNZXRyaWNz
KCkubGluZVNwYWNpbmcoKSA6IHJvb3RTdHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKTsKKyAgICAv
LyBCeSB0cmF2ZXJzaW5nIHRoZSBpbmxpbmUgYm94IGxpc3QgYmFja3dhcmRzLCBpdCdzIGd1YXJh
bnRlZWQgdGhhdCBkZXNjZW5kYW50IGlubGluZSBib3hlcyBhcmUgc2l6ZWQgZmlyc3QuCisgICAg
Zm9yIChhdXRvJiBpbmxpbmVCb3ggOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKG1faW5saW5lQm94
TGlzdCkpIHsKKyAgICAgICAgaWYgKGlubGluZUJveC0+aXNFbXB0eSgpKQorICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICBhdXRvIGNvbnRlbnRMb2dpY2FsSGVpZ2h0ID0gSW5saW5lTGF5b3V0
VW5pdCB7IH07Ci0gICAgYXV0byBhbGlnbm1lbnRCYXNlbGluZSA9IElubGluZUxheW91dFVuaXQg
eyB9OwotICAgIGF1dG8gY29tcHV0ZUxpbmVCb3hIZWlnaHQgPSBbJl0oYXV0byYgaW5saW5lQm94
LCBhdXRvIHRleHRBbGlnbk1vZGUpIHsKLSAgICAgICAgc3dpdGNoICh0ZXh0QWxpZ25Nb2RlKSB7
CisgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGlubGluZUJveC0+bGF5b3V0Qm94KCk7CisgICAg
ICAgIHN3aXRjaCAobGF5b3V0Qm94LnN0eWxlKCkudmVydGljYWxBbGlnbigpKSB7CisgICAgICAg
IGNhc2UgVmVydGljYWxBbGlnbjo6VG9wOgorICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJv
dHRvbToKKyAgICAgICAgICAgIC8vIHRvcCBhbmQgYm90dG9tIGFsaWdubWVudHMgb25seSBzdHJl
dGNoIHRoZSBsaW5lIGJveC4gVGhleSBkb24ndCBzdHJldGNoIGFueSBvZiB0aGUgaW5saW5lIGJv
eGVzLCBub3QgZXZlbiB0aGUgcm9vdCBpbmxpbmUgYm94LgorICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmU6IHsKLSAgICAgICAgICAgIGF1dG8g
YmFzZWxpbmVPdmVyZmxvdyA9IGlubGluZUJveC5iYXNlbGluZSgpIC0gYWxpZ25tZW50QmFzZWxp
bmU7Ci0gICAgICAgICAgICBpZiAoYmFzZWxpbmVPdmVyZmxvdyA+IDApIHsKLSAgICAgICAgICAg
ICAgICBjb250ZW50TG9naWNhbEhlaWdodCArPSBiYXNlbGluZU92ZXJmbG93OwotICAgICAgICAg
ICAgICAgIGFsaWdubWVudEJhc2VsaW5lICs9IGJhc2VsaW5lT3ZlcmZsb3c7CisgICAgICAgICAg
ICBhdXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBpbmxpbmVCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94
LnBhcmVudCgpKTsKKyAgICAgICAgICAgIGF1dG8gYmFzZWxpbmVPdmVyZmxvdyA9IHN0ZDo6bWF4
KDAuMGYsIGlubGluZUJveC0+YmFzZWxpbmUoKSAtIHBhcmVudElubGluZUJveC5iYXNlbGluZSgp
KTsKKyAgICAgICAgICAgIGlmIChiYXNlbGluZU92ZXJmbG93KSB7CisgICAgICAgICAgICAgICAg
cGFyZW50SW5saW5lQm94LnNldEJhc2VsaW5lKHBhcmVudElubGluZUJveC5iYXNlbGluZSgpICsg
YmFzZWxpbmVPdmVyZmxvdyk7CisgICAgICAgICAgICAgICAgcGFyZW50SW5saW5lQm94LnNldExv
Z2ljYWxIZWlnaHQocGFyZW50SW5saW5lQm94LmxvZ2ljYWxIZWlnaHQoKSArIGJhc2VsaW5lT3Zl
cmZsb3cpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gVGFibGUgY2VsbHMsIGlubGlu
ZS1ibG9jayBib3hlcyBtYXkgc3RyZXRjaCB0aGUgbGluZSBiZXlvbmQgdGhlaXIgYmFzZWxpbmUu
Ci0gICAgICAgICAgICBhdXRvIGJlbG93QmFzZWxpbmUgPSBpbmxpbmVCb3guZGVzY2VudCgpLnZh
bHVlT3IoaW5saW5lQm94LmxvZ2ljYWxIZWlnaHQoKSAtIGlubGluZUJveC5iYXNlbGluZSgpKTsK
LSAgICAgICAgICAgIGF1dG8gYmVsb3dCYXNlbGluZU92ZXJmbG93ID0gYmVsb3dCYXNlbGluZSAt
IChjb250ZW50TG9naWNhbEhlaWdodCAtIGFsaWdubWVudEJhc2VsaW5lKTsKLSAgICAgICAgICAg
IGlmIChiZWxvd0Jhc2VsaW5lT3ZlcmZsb3cgPiAwKQotICAgICAgICAgICAgICAgIGNvbnRlbnRM
b2dpY2FsSGVpZ2h0ICs9IGJlbG93QmFzZWxpbmVPdmVyZmxvdzsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VG9wOiB7Ci0gICAgICAg
ICAgICBhdXRvIG92ZXJmbG93ID0gaW5saW5lQm94LmxvZ2ljYWxIZWlnaHQoKSAtIGNvbnRlbnRM
b2dpY2FsSGVpZ2h0OwotICAgICAgICAgICAgaWYgKG92ZXJmbG93ID4gMCkKLSAgICAgICAgICAg
ICAgICBjb250ZW50TG9naWNhbEhlaWdodCArPSBvdmVyZmxvdzsKKyAgICAgICAgICAgIGF1dG8g
cGFyZW50TGluZUJveEJlbG93QmFzZWxpbmUgPSBwYXJlbnRJbmxpbmVCb3gubG9naWNhbEhlaWdo
dCgpIC0gcGFyZW50SW5saW5lQm94LmJhc2VsaW5lKCk7CisgICAgICAgICAgICBhdXRvIGlubGlu
ZUJveEJlbG93QmFzZWxpbmUgPSBpbmxpbmVCb3gtPmxvZ2ljYWxIZWlnaHQoKSAtIGlubGluZUJv
eC0+YmFzZWxpbmUoKTsKKyAgICAgICAgICAgIGF1dG8gYmVsb3dCYXNlbGluZU92ZXJmbG93ID0g
c3RkOjptYXgoMC4wZiwgaW5saW5lQm94QmVsb3dCYXNlbGluZSAtIHBhcmVudExpbmVCb3hCZWxv
d0Jhc2VsaW5lKTsKKyAgICAgICAgICAgIGlmIChiZWxvd0Jhc2VsaW5lT3ZlcmZsb3cpCisgICAg
ICAgICAgICAgICAgcGFyZW50SW5saW5lQm94LnNldExvZ2ljYWxIZWlnaHQocGFyZW50SW5saW5l
Qm94LmxvZ2ljYWxIZWlnaHQoKSArIGJlbG93QmFzZWxpbmVPdmVyZmxvdyk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRvbTog
ewotICAgICAgICAgICAgYXV0byBvdmVyZmxvdyA9IGlubGluZUJveC5sb2dpY2FsSGVpZ2h0KCkg
LSBjb250ZW50TG9naWNhbEhlaWdodDsKLSAgICAgICAgICAgIGlmIChvdmVyZmxvdyA+IDApIHsK
LSAgICAgICAgICAgICAgICBjb250ZW50TG9naWNhbEhlaWdodCArPSBvdmVyZmxvdzsKLSAgICAg
ICAgICAgICAgICBhbGlnbm1lbnRCYXNlbGluZSArPSBvdmVyZmxvdzsKKyAgICAgICAgY2FzZSBW
ZXJ0aWNhbEFsaWduOjpNaWRkbGU6IHsKKyAgICAgICAgICAgIGF1dG8mIHBhcmVudExheW91dEJv
eCA9IGxheW91dEJveC5wYXJlbnQoKTsKKyAgICAgICAgICAgIGF1dG8mIHBhcmVudElubGluZUJv
eCA9IGlubGluZUJveEZvckxheW91dEJveChwYXJlbnRMYXlvdXRCb3gpOworICAgICAgICAgICAg
YXV0byBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmJhc2VsaW5lKCkgLSAoaW5saW5lQm94
LT5sb2dpY2FsSGVpZ2h0KCkgLyAyICsgcGFyZW50TGF5b3V0Qm94LnN0eWxlKCkuZm9udE1ldHJp
Y3MoKS54SGVpZ2h0KCkgLyAyKTsKKyAgICAgICAgICAgIGlmIChsb2dpY2FsVG9wIDwgMCkgewor
ICAgICAgICAgICAgICAgIGF1dG8gb3ZlcmZsb3cgPSAtbG9naWNhbFRvcDsKKyAgICAgICAgICAg
ICAgICAvLyBDaGlsZCBpbmxpbmUgYm94IHdpdGggbWlkZGxlIGFsaWdubWVudCBwdXNoZXMgdGhl
IGJhc2VsaW5lIGRvd24gd2hlbiBvdmVyZmxvd3MuIAorICAgICAgICAgICAgICAgIHBhcmVudElu
bGluZUJveC5zZXRCYXNlbGluZShwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSArIG92ZXJmbG93
KTsKKyAgICAgICAgICAgICAgICBwYXJlbnRJbmxpbmVCb3guc2V0TG9naWNhbEhlaWdodChwYXJl
bnRJbmxpbmVCb3gubG9naWNhbEhlaWdodCgpICsgb3ZlcmZsb3cpOworICAgICAgICAgICAgICAg
IGxvZ2ljYWxUb3AgPSB7IH07CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBhdXRvIGxvZ2lj
YWxCb3R0b20gPSBsb2dpY2FsVG9wICsgaW5saW5lQm94LT5sb2dpY2FsSGVpZ2h0KCk7CisgICAg
ICAgICAgICBwYXJlbnRJbmxpbmVCb3guc2V0TG9naWNhbEhlaWdodChzdGQ6Om1heChwYXJlbnRJ
bmxpbmVCb3gubG9naWNhbEhlaWdodCgpLCBsb2dpY2FsQm90dG9tKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05P
VF9JTVBMRU1FTlRFRF9ZRVQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
fTsKLQotICAgIGF1dG8gc2hvdWxkUm9vdElubGluZUJveFN0cmV0Y2hMaW5lQm94ID0gIW1fcm9v
dElubGluZUJveC5pc0VtcHR5KCk7Ci0gICAgaWYgKHNob3VsZFJvb3RJbmxpbmVCb3hTdHJldGNo
TGluZUJveCkKLSAgICAgICAgY29tcHV0ZUxpbmVCb3hIZWlnaHQobV9yb290SW5saW5lQm94LCBW
ZXJ0aWNhbEFsaWduOjpCYXNlbGluZSk7Ci0gICAgZm9yIChhdXRvJiBpbmxpbmVCb3hFbnRyeSA6
IG1faW5saW5lQm94UmVjdE1hcCkgewotICAgICAgICBhdXRvJiBpbmxpbmVCb3ggPSAqaW5saW5l
Qm94RW50cnkudmFsdWU7Ci0gICAgICAgIGF1dG8gc2hvdWxkSW5saW5lQm94U3RyZXRjaExpbmVC
b3ggPSAhaW5saW5lQm94LmlzRW1wdHkoKTsKLSAgICAgICAgaWYgKHNob3VsZElubGluZUJveFN0
cmV0Y2hMaW5lQm94KQotICAgICAgICAgICAgY29tcHV0ZUxpbmVCb3hIZWlnaHQoaW5saW5lQm94
LCBpbmxpbmVCb3hFbnRyeS5rZXktPnN0eWxlKCkudmVydGljYWxBbGlnbigpKTsKICAgICB9Cit9
CiAKLSAgICBhdXRvIGxpbmVCb3hMb2dpY2FsSGVpZ2h0ID0gcm9vdFN0eWxlLmxpbmVIZWlnaHQo
KS5pc05lZ2F0aXZlKCkgPyBzdGQ6Om1heChyZWNvbW1lbmRlZExpbmVCb3hIZWlnaHQsIGNvbnRl
bnRMb2dpY2FsSGVpZ2h0KSA6IHJlY29tbWVuZGVkTGluZUJveEhlaWdodDsKLSAgICBtX3JlY3Qu
c2V0SGVpZ2h0KGxpbmVCb3hMb2dpY2FsSGVpZ2h0KTsKK3ZvaWQgTGluZUJveDo6YWxpZ25Jbmxp
bmVCb3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUJveEhlaWdodChJc0xpbmVWaXN1YWxseUVt
cHR5IGlzTGluZVZpc3VhbGx5RW1wdHkpCit7CisgICAgLy8gSW5saW5lIGJveGVzIGFyZSBpbiB0
aGUgY29vcmRpbmF0ZSBzeXN0ZW0gb2YgdGhlIGxpbmUgYm94IChhbmQgbm90IGluIHRoZSBjb29y
ZGluYXRlIHN5c3RlbSBvZiB0aGVpciBwYXJlbnRzKS4KKyAgICAvLyBTdGFydGluZyB3aXRoIHRo
ZSByb290IGlubGluZSBib3gsIHBvc2l0aW9uIHRoZSBhbmNlc3RvcnMgZmlyc3Qgc28gdGhhdCB0
aGUgZGVzY2VuZGFudCBsaW5lIGJveGVzIHNlZSBhYnNvbHV0ZSB2ZXJ0aWNhbCBwb3NpdGlvbnMu
CisgICAgYXV0byYgcm9vdFN0eWxlID0gcm9vdCgpLnN0eWxlKCk7CisgICAgYXV0byBjb250ZW50
TG9naWNhbEJvdHRvbSA9IElubGluZUxheW91dFVuaXQgeyB9OworICAgIGF1dG8gYWxpZ25Sb290
SW5saW5lQm94ID0gWyZdIHsKKyAgICAgICAgLy8gU29tZXRoaW5nIHNvbWV0aGluZy4KKyAgICAg
ICAgYXV0byB1c2VkTGluZUhlaWdodCA9IElubGluZUxheW91dFVuaXQgeyB9OworICAgICAgICBp
ZiAoaXNMaW5lVmlzdWFsbHlFbXB0eSA9PSBJc0xpbmVWaXN1YWxseUVtcHR5OjpObykKKyAgICAg
ICAgICAgIHVzZWRMaW5lSGVpZ2h0ID0gcm9vdFN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpOwor
ICAgICAgICBhdXRvIGFsaWdubWVudEJhc2VsaW5lID0gaGFsZkxlYWRpbmdNZXRyaWNzKHJvb3RT
dHlsZS5mb250TWV0cmljcygpLCB1c2VkTGluZUhlaWdodCkuYXNjZW50OworICAgICAgICBhdXRv
IHJvb3RJbmxpbmVCb3hUb3BQb3NpdGlvbiA9IGFsaWdubWVudEJhc2VsaW5lIC0gbV9yb290SW5s
aW5lQm94LmJhc2VsaW5lKCk7CisgICAgICAgIG1fcm9vdElubGluZUJveC5zZXRMb2dpY2FsVG9w
KHJvb3RJbmxpbmVCb3hUb3BQb3NpdGlvbik7CisgICAgICAgIGNvbnRlbnRMb2dpY2FsQm90dG9t
ID0gbV9yb290SW5saW5lQm94LmxvZ2ljYWxIZWlnaHQoKTsKKyAgICAgICAgZm9yIChhdXRvJiBp
bmxpbmVCb3ggOiBtX2lubGluZUJveExpc3QpIHsKKyAgICAgICAgICAgIGF1dG8gdmVydGljYWxB
bGlnbiA9IGlubGluZUJveC0+bGF5b3V0Qm94KCkuc3R5bGUoKS52ZXJ0aWNhbEFsaWduKCk7Cisg
ICAgICAgICAgICBpZiAodmVydGljYWxBbGlnbiA9PSBWZXJ0aWNhbEFsaWduOjpCb3R0b20pIHsK
KyAgICAgICAgICAgICAgICAvLyBib3R0b20gYWxpZ24gYWx3YXlzIHB1c2hlcyB0aGUgcm9vdCBp
bmxpbmUgYm94IGRvd253YXJkcy4KKyAgICAgICAgICAgICAgICBhdXRvIG92ZXJmbG93ID0gc3Rk
OjptYXgoMC4wZiwgaW5saW5lQm94LT5sb2dpY2FsQm90dG9tKCkgLSBtX3Jvb3RJbmxpbmVCb3gu
bG9naWNhbEJvdHRvbSgpKTsKKyAgICAgICAgICAgICAgICBtX3Jvb3RJbmxpbmVCb3guc2V0TG9n
aWNhbFRvcChtX3Jvb3RJbmxpbmVCb3gubG9naWNhbFRvcCgpICsgb3ZlcmZsb3cpOworICAgICAg
ICAgICAgICAgIGNvbnRlbnRMb2dpY2FsQm90dG9tICs9IG92ZXJmbG93OworICAgICAgICAgICAg
fSBlbHNlIGlmICh2ZXJ0aWNhbEFsaWduID09IFZlcnRpY2FsQWxpZ246OlRvcCkKKyAgICAgICAg
ICAgICAgICBjb250ZW50TG9naWNhbEJvdHRvbSA9IHN0ZDo6bWF4KGNvbnRlbnRMb2dpY2FsQm90
dG9tLCBpbmxpbmVCb3gtPmxvZ2ljYWxIZWlnaHQoKSk7CisgICAgICAgIH0KKyAgICB9OworICAg
IGFsaWduUm9vdElubGluZUJveCgpOwogCi0gICAgYXV0byBhZGp1c3RJbmxpbmVCb3hUb3AgPSBb
Jl0oYXV0byYgaW5saW5lQm94LCBhdXRvIHRleHRBbGlnbk1vZGUpIHsKKyAgICBmb3IgKGF1dG8m
IGlubGluZUJveCA6IG1faW5saW5lQm94TGlzdCkgewogICAgICAgICBhdXRvIGlubGluZUJveExv
Z2ljYWxUb3AgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKLSAgICAgICAgc3dpdGNoICh0ZXh0QWxp
Z25Nb2RlKSB7Ci0gICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmU6Ci0gICAgICAg
ICAgICBpbmxpbmVCb3hMb2dpY2FsVG9wID0gYWxpZ25tZW50QmFzZWxpbmUgLSBpbmxpbmVCb3gu
YmFzZWxpbmUoKTsKKyAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lQm94LT5sYXlvdXRC
b3goKTsKKyAgICAgICAgc3dpdGNoIChsYXlvdXRCb3guc3R5bGUoKS52ZXJ0aWNhbEFsaWduKCkp
IHsKKyAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZTogeworICAgICAgICAgICAg
YXV0byYgcGFyZW50SW5saW5lQm94ID0gaW5saW5lQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5w
YXJlbnQoKSk7CisgICAgICAgICAgICBpbmxpbmVCb3hMb2dpY2FsVG9wID0gcGFyZW50SW5saW5l
Qm94LmxvZ2ljYWxUb3AoKSArIHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gaW5saW5lQm94
LT5iYXNlbGluZSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBWZXJ0aWNhbEFsaWduOjpUb3A6Ci0gICAgICAgICAgICBpbmxpbmVCb3hMb2dpY2FsVG9wID0g
eyB9OworICAgICAgICAgICAgaW5saW5lQm94TG9naWNhbFRvcCA9IElubGluZUxheW91dFVuaXQg
eyB9OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6Qm90
dG9tOgotICAgICAgICAgICAgaW5saW5lQm94TG9naWNhbFRvcCA9IGxvZ2ljYWxCb3R0b20oKSAt
IGlubGluZUJveC5sb2dpY2FsSGVpZ2h0KCk7CisgICAgICAgICAgICBpbmxpbmVCb3hMb2dpY2Fs
VG9wID0gY29udGVudExvZ2ljYWxCb3R0b20gLSBpbmxpbmVCb3gtPmxvZ2ljYWxIZWlnaHQoKTsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246Ok1pZGRsZTog
eworICAgICAgICAgICAgYXV0byYgcGFyZW50TGF5b3V0Qm94ID0gbGF5b3V0Qm94LnBhcmVudCgp
OworICAgICAgICAgICAgYXV0byYgcGFyZW50SW5saW5lQm94ID0gaW5saW5lQm94Rm9yTGF5b3V0
Qm94KHBhcmVudExheW91dEJveCk7CisgICAgICAgICAgICBpbmxpbmVCb3hMb2dpY2FsVG9wID0g
cGFyZW50SW5saW5lQm94LmxvZ2ljYWxUb3AoKSArIHBhcmVudElubGluZUJveC5iYXNlbGluZSgp
IC0gKGlubGluZUJveC0+bG9naWNhbEhlaWdodCgpIC8gMiArIHBhcmVudExheW91dEJveC5zdHls
ZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gMik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1F
TlRFRF9ZRVQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlubGlu
ZUJveC5zZXRMb2dpY2FsVG9wKGlubGluZUJveExvZ2ljYWxUb3ApOwotICAgIH07CisgICAgICAg
IGlubGluZUJveC0+c2V0TG9naWNhbFRvcChpbmxpbmVCb3hMb2dpY2FsVG9wKTsKKyAgICB9CiAK
LSAgICBhbGlnbm1lbnRCYXNlbGluZSA9IGhhbGZMZWFkaW5nTWV0cmljcyhyb290U3R5bGUuZm9u
dE1ldHJpY3MoKSwgbGluZUJveExvZ2ljYWxIZWlnaHQpLmFzY2VudDsKLSAgICBhZGp1c3RJbmxp
bmVCb3hUb3AobV9yb290SW5saW5lQm94LCBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZSk7Ci0gICAg
Zm9yIChhdXRvJiBpbmxpbmVCb3hFbnRyeSA6IG1faW5saW5lQm94UmVjdE1hcCkgewotICAgICAg
ICBhdXRvJiBsYXlvdXRCb3ggPSAqaW5saW5lQm94RW50cnkua2V5OwotICAgICAgICBhdXRvJiBp
bmxpbmVCb3ggPSAqaW5saW5lQm94RW50cnkudmFsdWU7Ci0gICAgICAgIGFkanVzdElubGluZUJv
eFRvcChpbmxpbmVCb3gsIGxheW91dEJveC5zdHlsZSgpLnZlcnRpY2FsQWxpZ24oKSk7CisgICAg
YXV0byBhZGp1c3RDb250ZW50Qm90dG9tSWZOZWVkZWQgPSBbJl0geworICAgICAgICBpZiAoIW1f
cm9vdElubGluZUJveC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1
dG8gY29sbGFwc2VkQ29udGVudExvZ2ljYWxUb3AgPSBjb250ZW50TG9naWNhbEJvdHRvbTsKKyAg
ICAgICAgYXV0byBjb2xsYXBzZWRDb250ZW50TG9naWNhbEJvdHRvbSA9IElubGluZUxheW91dFVu
aXQgeyB9OworICAgICAgICBmb3IgKGF1dG8mIGlubGluZUJveCA6IG1faW5saW5lQm94TGlzdCkg
eworICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbEFsaWduID0gaW5saW5lQm94LT5sYXlvdXRCb3go
KS5zdHlsZSgpLnZlcnRpY2FsQWxpZ24oKTsKKyAgICAgICAgICAgIGF1dG8gc3RyZXRjaGVzTGlu
ZUJveCA9IHZlcnRpY2FsQWxpZ24gPT0gVmVydGljYWxBbGlnbjo6Qm90dG9tIHx8IHZlcnRpY2Fs
QWxpZ24gPT0gVmVydGljYWxBbGlnbjo6VG9wIHx8ICZpbmxpbmVCb3gtPmxheW91dEJveCgpLnBh
cmVudCgpID09ICZtX3Jvb3RJbmxpbmVCb3gubGF5b3V0Qm94KCk7CisgICAgICAgICAgICBpZiAo
IXN0cmV0Y2hlc0xpbmVCb3gpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBpZiAoaW5saW5lQm94LT5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICBjb2xsYXBzZWRDb250ZW50TG9naWNhbFRvcCA9IHN0ZDo6bWluKGNvbGxhcHNl
ZENvbnRlbnRMb2dpY2FsVG9wLCBpbmxpbmVCb3gtPmxvZ2ljYWxUb3AoKSk7CisgICAgICAgICAg
ICBjb2xsYXBzZWRDb250ZW50TG9naWNhbEJvdHRvbSA9IHN0ZDo6bWF4KGNvbGxhcHNlZENvbnRl
bnRMb2dpY2FsQm90dG9tLCBpbmxpbmVCb3gtPmxvZ2ljYWxCb3R0b20oKSk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGNvbGxhcHNlZENvbnRlbnRMb2dpY2FsVG9wIDw9IDApIHsKKyAgICAgICAg
ICAgIGNvbnRlbnRMb2dpY2FsQm90dG9tID0gY29sbGFwc2VkQ29udGVudExvZ2ljYWxCb3R0b207
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY29udGVudExvZ2ljYWxC
b3R0b20gPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKKyAgICAgICAgZm9yIChhdXRvJiBpbmxpbmVC
b3ggOiBtX2lubGluZUJveExpc3QpIHsKKyAgICAgICAgICAgIGlubGluZUJveC0+c2V0TG9naWNh
bFRvcChpbmxpbmVCb3gtPmxvZ2ljYWxUb3AoKSAtIGNvbGxhcHNlZENvbnRlbnRMb2dpY2FsVG9w
KTsKKyAgICAgICAgICAgIGNvbnRlbnRMb2dpY2FsQm90dG9tID0gc3RkOjptYXgoY29udGVudExv
Z2ljYWxCb3R0b20sIGlubGluZUJveC0+bG9naWNhbEJvdHRvbSgpKTsKKyAgICAgICAgfQorICAg
IH07CisgICAgYWRqdXN0Q29udGVudEJvdHRvbUlmTmVlZGVkKCk7CisgICAgLy8gQ29tcHV0ZSB0
aGUgbGluZSBib3ggaGVpZ2h0LiBJdCdzIGVpdGhlciB0aGUgbGluZS1oZWlnaHQgdmFsdWUgKG5l
Z2F0aXZlIHZhbHVlIG1lYW5zIGxpbmUgaGVpZ2h0IGl0IG5vdCBzZXQpIG9yCisgICAgLy8gbWF4
aW11bSBvZiB0aGUgcm9vdCBpbmxpbmUgYm94J3MgYm90dG9tIGFuZCB0aGUgdG9wIGFsaWduZWQg
Y29udGVudCBoZWlnaHQuCisgICAgaWYgKGlzTGluZVZpc3VhbGx5RW1wdHkgPT0gSXNMaW5lVmlz
dWFsbHlFbXB0eTo6Tm8pIHsKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBsaW5lU3BhY2luZyA9
IHJvb3RTdHlsZS5mb250TWV0cmljcygpLmxpbmVTcGFjaW5nKCk7CisgICAgICAgIGF1dG8gbGlu
ZUJveExvZ2ljYWxIZWlnaHQgPSAhcm9vdFN0eWxlLmxpbmVIZWlnaHQoKS5pc05lZ2F0aXZlKCkg
PyByb290U3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCkgOiBzdGQ6Om1heChsaW5lU3BhY2luZywg
Y29udGVudExvZ2ljYWxCb3R0b20pOworICAgICAgICBtX3JlY3Quc2V0SGVpZ2h0KGxpbmVCb3hM
b2dpY2FsSGVpZ2h0KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaAppbmRleCA2MDk5MGE3MDc3MzY5
OTJjMzU5YjA3MTRjMjlhM2M4NTkwNWE2MTU5Li5hNWJkMzUwNDMwZDBlNjJmOGQ3N2E4MWM2ZjBi
NjBiMTI3ZTU4MDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
RGlzcGxheUlubGluZVJlY3QuaCIKICNpbmNsdWRlICJJbmxpbmVMaW5lQnVpbGRlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CkBAIC00NCw4ICs0NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTkxJTkUoSW5saW5l
Qm94KTsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gY2xhc3MgSXNDb25zaWRlcmVkRW1wdHkg
eyBZZXMsIE5vIH07Ci0gICAgICAgIElubGluZUJveChjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0
JiwgSW5saW5lTGF5b3V0VW5pdCBzeW50aGV0aWNCYXNlbGluZSk7Ci0gICAgICAgIElubGluZUJv
eChjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiwgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZSwg
SW5saW5lTGF5b3V0VW5pdCBkZXNjZW50LCBJc0NvbnNpZGVyZWRFbXB0eSk7CisgICAgICAgIElu
bGluZUJveChjb25zdCBCb3gmLCBjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiwgSW5saW5lTGF5
b3V0VW5pdCBiYXNlbGluZSwgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50LCBJc0NvbnNpZGVyZWRF
bXB0eSk7CiAgICAgICAgIElubGluZUJveCgpID0gZGVmYXVsdDsKIAogICAgICAgICBjb25zdCBE
aXNwbGF5OjpJbmxpbmVSZWN0JiBsb2dpY2FsUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNh
bFJlY3Q7IH0KQEAgLTU4LDE5ICs1OCwyNCBAQCBwdWJsaWM6CiAgICAgICAgIElubGluZUxheW91
dFVuaXQgYmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VsaW5lOyB9CiAgICAgICAgIE9w
dGlvbmFsPElubGluZUxheW91dFVuaXQ+IGRlc2NlbnQoKSBjb25zdCB7IHJldHVybiBtX2Rlc2Nl
bnQ7IH0KIAotICAgICAgICB2b2lkIHNldExvZ2ljYWxUb3AoSW5saW5lTGF5b3V0VW5pdCBsb2dp
Y2FsVG9wKSB7IG1fbG9naWNhbFJlY3Quc2V0VG9wKGxvZ2ljYWxUb3ApOyB9Ci0gICAgICAgIHZv
aWQgc2V0TG9naWNhbFdpZHRoKElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKSB7IG1fbG9n
aWNhbFJlY3Quc2V0V2lkdGgobG9naWNhbFdpZHRoKTsgfQotCiAgICAgICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbXB0eTsgfQogICAgICAgICB2b2lkIHNldElzTm9uRW1w
dHkoKSB7IG1faXNFbXB0eSA9IGZhbHNlOyB9Ci0gICAgICAgIGJvb2wgaXNBdG9taWMoKSBjb25z
dCB7IHJldHVybiBtX2lzQXRvbWljOyB9CisKKyAgICAgICAgY29uc3QgQm94JiBsYXlvdXRCb3go
KSBjb25zdCB7IHJldHVybiAqbV9sYXlvdXRCb3g7IH0KIAogICAgIHByaXZhdGU6CisgICAgICAg
IGZyaWVuZCBjbGFzcyBMaW5lQm94OworCisgICAgICAgIHZvaWQgc2V0TG9naWNhbFRvcChJbmxp
bmVMYXlvdXRVbml0IGxvZ2ljYWxUb3ApIHsgbV9sb2dpY2FsUmVjdC5zZXRUb3AobG9naWNhbFRv
cCk7IH0KKyAgICAgICAgdm9pZCBzZXRMb2dpY2FsV2lkdGgoSW5saW5lTGF5b3V0VW5pdCBsb2dp
Y2FsV2lkdGgpIHsgbV9sb2dpY2FsUmVjdC5zZXRXaWR0aChsb2dpY2FsV2lkdGgpOyB9CisgICAg
ICAgIHZvaWQgc2V0TG9naWNhbEhlaWdodChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQp
IHsgbV9sb2dpY2FsUmVjdC5zZXRIZWlnaHQobG9naWNhbEhlaWdodCk7IH0KKyAgICAgICAgdm9p
ZCBzZXRCYXNlbGluZShJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lKSB7IG1fYmFzZWxpbmUgPSBi
YXNlbGluZTsgfQorCisgICAgICAgIFdlYWtQdHI8Y29uc3QgQm94PiBtX2xheW91dEJveDsKICAg
ICAgICAgRGlzcGxheTo6SW5saW5lUmVjdCBtX2xvZ2ljYWxSZWN0OwogICAgICAgICBJbmxpbmVM
YXlvdXRVbml0IG1fYmFzZWxpbmU7CiAgICAgICAgIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+
IG1fZGVzY2VudDsKICAgICAgICAgYm9vbCBtX2lzRW1wdHkgeyB0cnVlIH07Ci0gICAgICAgIGJv
b2wgbV9pc0F0b21pYyB7IGZhbHNlIH07CiAgICAgfTsKIAogICAgIGVudW0gY2xhc3MgSXNMYXN0
TGluZVdpdGhJbmxpbmVDb250ZW50IHsgTm8sIFllcyB9OwpAQCAtODcsNyArOTIsNyBAQCBwdWJs
aWM6CiAgICAgY29uc3QgRGlzcGxheTo6SW5saW5lUmVjdCYgbG9naWNhbFJlY3QoKSBjb25zdCB7
IHJldHVybiBtX3JlY3Q7IH0KICAgICBjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiBzY3JvbGxh
YmxlT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVPdmVyZmxvdzsgfQogCi0g
ICAgY29uc3QgSW5saW5lQm94JiBpbmxpbmVCb3hGb3JMYXlvdXRCb3goY29uc3QgQm94JikgY29u
c3Q7CisgICAgY29uc3QgSW5saW5lQm94JiBpbmxpbmVCb3hGb3JMYXlvdXRCb3goY29uc3QgQm94
JiBsYXlvdXRCb3gpIGNvbnN0IHsgcmV0dXJuICptX2lubGluZUJveFJlY3RNYXAuZ2V0KCZsYXlv
dXRCb3gpOyB9CiAgICAgRGlzcGxheTo6SW5saW5lUmVjdCBpbmxpbmVSZWN0Rm9yVGV4dFJ1bihj
b25zdCBMaW5lQnVpbGRlcjo6UnVuJikgY29uc3Q7CiAKICAgICAvLyBfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyBsaW5lIGJveCBsb2dpY2FsIHRv
cApAQCAtMTA5LDcgKzExNCwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjb25z
dHJ1Y3RJbmxpbmVCb3hlcyhjb25zdCBMaW5lQnVpbGRlcjo6UnVuTGlzdCYsIElzTGluZVZpc3Vh
bGx5RW1wdHkpOwotICAgIHZvaWQgYWxpZ25WZXJ0aWNhbGx5KElzTGluZVZpc3VhbGx5RW1wdHkp
OworICAgIHZvaWQgY29tcHV0ZUlubGluZUJveGVzTG9naWNhbEhlaWdodCgpOworICAgIHZvaWQg
YWxpZ25JbmxpbmVCb3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUJveEhlaWdodChJc0xpbmVW
aXN1YWxseUVtcHR5KTsKKworICAgIElubGluZUJveCYgaW5saW5lQm94Rm9yTGF5b3V0Qm94KGNv
bnN0IEJveCYgbGF5b3V0Qm94KSB7IHJldHVybiAqbV9pbmxpbmVCb3hSZWN0TWFwLmdldCgmbGF5
b3V0Qm94KTsgfQogCiAgICAgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbFdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZW50TG9naWNhbFdpZHRoOyB9CiAKQEAgLTEyNSw3ICsxMzMs
OCBAQCBwcml2YXRlOgogICAgIElubGluZUJveCBtX3Jvb3RJbmxpbmVCb3g7CiAKICAgICBPcHRp
b25hbDxJbmxpbmVMYXlvdXRVbml0PiBtX2xpbmVBbGlnbm1lbnRPZmZzZXQ7Ci0gICAgSGFzaE1h
cDxjb25zdCBCb3gqLCBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lQm94Pj4gbV9pbmxpbmVCb3hSZWN0
TWFwOworICAgIEhhc2hNYXA8Y29uc3QgQm94KiwgSW5saW5lQm94Kj4gbV9pbmxpbmVCb3hSZWN0
TWFwOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lQm94Pj4gbV9pbmxpbmVCb3hM
aXN0OwogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBtX2lubGluZUZvcm1hdHRp
bmdDb250ZXh0OwogfTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFkYWViZTE0ZjU2NTAwYWIwOTY2YzI2MjcwYzZkYzZj
ZWNmNDA2MjYuLjBhNzhhMzQyMDNiMjljZTgxMTVlN2E0OGZmNmY3NjgwYzZkNDY4OTcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAyMC0wOC0zMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFtMRkNdW0lGQ10gRml4IG5lc3RlZCBpbmxpbmUgYm94IHNpemluZyBh
bmQgcG9zaXRpb25pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNTc0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC92ZXJ0aWNhbC1hbGlnbi1taWRk
bGUtbmVzdGVkLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9sYXlvdXRmb3JtYXR0aW5n
Y29udGV4dC92ZXJ0aWNhbC1hbGlnbi1taWRkbGUtbmVzdGVkLmh0bWw6CisKIDIwMjAtMDgtMzAg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBUZXh0RW5jb2RlclN0cmVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sYXlv
dXRmb3JtYXR0aW5nY29udGV4dC92ZXJ0aWNhbC1hbGlnbi1taWRkbGUtbmVzdGVkLWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3ZlcnRpY2Fs
LWFsaWduLW1pZGRsZS1uZXN0ZWQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MWE2OTcwMGJi
ODMxZDJkNjMwNzY5M2FlZjU4MzgxYTc0ZDhmNjg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC92ZXJ0aWNhbC1hbGlnbi1taWRkbGUt
bmVzdGVkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw3IEBACis8IURPQ1RZUEUgaHRtbD48IS0t
IHdlYmtpdC10ZXN0LXJ1bm5lciBbIGludGVybmFsOkxheW91dEZvcm1hdHRpbmdDb250ZXh0RW5h
YmxlZD10cnVlIGludGVybmFsOkxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFi
bGVkPWZhbHNlIF0gLS0+Cis8c3R5bGU+CitkaXYgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOworfQorPC9zdHlsZT4KKzxkaXYgc3R5bGU9ImhlaWdodDogNDRweDsiPjwvZGl2PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC92ZXJ0aWNh
bC1hbGlnbi1taWRkbGUtbmVzdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xheW91dGZvcm1h
dHRpbmdjb250ZXh0L3ZlcnRpY2FsLWFsaWduLW1pZGRsZS1uZXN0ZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kYzEzZWI0YWYyZTFkNTZlMzgwOGM4N2VhMjJmMGE0ODgyOTA2YzkzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC92ZXJ0aWNhbC1h
bGlnbi1taWRkbGUtbmVzdGVkLmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+
IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgaW50ZXJuYWw6TGF5b3V0Rm9ybWF0dGluZ0NvbnRl
eHRFbmFibGVkPXRydWUgaW50ZXJuYWw6TGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlv
bkVuYWJsZWQ9ZmFsc2UgXSAtLT4KKzxzdHlsZT4KKy5jb250YWluZXIgeworICBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsKKyAgY29sb3I6IGdyZWVuOworICBmb250LXNpemU6IDQwcHg7CisgIGZv
bnQtZmFtaWx5OiBBaGVtOworfQorCitzcGFuIHsKKyAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsK
K30KKzwvc3R5bGU+CisKKzxkaXYgY2xhc3M9Y29udGFpbmVyPgorICBYWAorICA8c3Bhbj4KKyAg
ICBYWAorICA8L3NwYW4+Cis8L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbGF5
b3V0Zm9ybWF0dGluZ2NvbnRleHQvdmVydGljYWwtYWxpZ24tbWlkZGxlLXNpbXBsZS1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC92ZXJ0aWNh
bC1hbGlnbi1taWRkbGUtc2ltcGxlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzE1N2Q1Mjdm
MjkwMWFhZDc5MjlmZDk0OTYwYzk2NTNjYTljYmIzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvdmVydGljYWwtYWxpZ24tbWlkZGxl
LXNpbXBsZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+PCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBpbnRlcm5hbDpMYXlvdXRGb3JtYXR0aW5nQ29udGV4dEVu
YWJsZWQ9dHJ1ZSBpbnRlcm5hbDpMYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5h
YmxlZD1mYWxzZSBdIC0tPgorPHN0eWxlPgorZGl2IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBn
cmVlbjsKK30KKzwvc3R5bGU+Cis8ZGl2IHN0eWxlPSJ3aWR0aDogODBweDsgaGVpZ2h0OiAyMnB4
OyI+PC9kaXY+Cis8ZGl2IHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiAyMHB4OyI+PC9kaXY+
Cis8ZGl2IHN0eWxlPSJ3aWR0aDogMTQwcHg7IGhlaWdodDogNTBweDsiPjwvZGl2PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC92ZXJ0aWNhbC1h
bGlnbi1taWRkbGUtc2ltcGxlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xheW91dGZvcm1hdHRp
bmdjb250ZXh0L3ZlcnRpY2FsLWFsaWduLW1pZGRsZS1zaW1wbGUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
NzQyMWM5NmI5ZTkxNDZlZGU3NGFiYzgxOTRkOTZhY2U4ZTJiYzVjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC92ZXJ0aWNhbC1hbGln
bi1taWRkbGUtc2ltcGxlLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPCFET0NUWVBFIGh0bWw+IDwh
LS0gd2Via2l0LXRlc3QtcnVubmVyIFsgaW50ZXJuYWw6TGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRF
bmFibGVkPXRydWUgaW50ZXJuYWw6TGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVu
YWJsZWQ9ZmFsc2UgXSAtLT4KKzxzdHlsZT4KKy5jb250YWluZXIgeworICBmbG9hdDogbGVmdDsK
KyAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgIGNvbG9yOiBncmVlbjsKKyAgZm9udC1zaXpl
OiAyMHB4OworICBmb250LWZhbWlseTogQWhlbTsKK30KKworLmRpdmlkZXIgeworICBjbGVhcjog
bGVmdDsKK30KKworc3BhbiB7CisgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cit9Cis8L3N0eWxl
PgorCis8ZGl2IGNsYXNzPWNvbnRhaW5lcj5YWDxzcGFuPlhYPC9zcGFuPjwvZGl2PgorPGRpdiBj
bGFzcz1kaXZpZGVyPjwvZGl2PgorPGRpdiBjbGFzcz1jb250YWluZXI+WFg8c3BhbiBzdHlsZT0i
Zm9udC1zaXplOiAxMHB4OyI+WFg8L3NwYW4+PC9kaXY+Cis8ZGl2IGNsYXNzPWRpdmlkZXI+PC9k
aXY+Cis8ZGl2IGNsYXNzPWNvbnRhaW5lcj5YWDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDUwcHg7
Ij5YWDwvc3Bhbj48L2Rpdj4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407874</attachid>
            <date>2020-09-03 02:55:46 -0700</date>
            <delta_ts>2020-09-03 04:22:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215748-20200903025545.patch</filename>
            <type>text/plain</type>
            <size>29771</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTYwMDVlZjhkYTg0ZDM0
MmMyMDU1NGI1M2VlMTM5ZDhiNTg1MWYzNy4uNDZiZjRjMWVlYjdkOWY1ZTIwMTUwMDQ2ZGJiZGI1
ZmQ1YWEwZTgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIwLTA5LTAzICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBBZGQgc3Vw
cG9ydCBuZXN0ZWQgaW5saW5lIGJveCBzaXppbmcgYW5kIHBvc2l0aW9uaW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU3NDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBUaGlzIHBhdGNoIHNwbGl0cyB0
aGUgbGluZSBib3ggY29uc3RydWN0aW9uIHByb2Nlc3MgaW50byBhIGZldyBkaXN0aW5jdCBzdGVw
cy4KKyAgICAgICAgMS4gQ29uc3RydWN0IHRoZSBpbmxpbmUgYm94ZXMgYXMgbmVlZGVkLiBUaGVy
ZSdzIGFsd2F5cyBhIHJvb3QgaW5saW5lIGJveC4KKyAgICAgICAgMi4gU2l6ZSB0aGVtIGJ5IHRh
a2luZyB0aGUgdmVydGljYWwgYWxpZ25tZW50IGludG8gYWNjb3VudAorICAgICAgICAgICAtIGNo
aWxkIGlubGluZSBib3hlcyBzdHJldGNoIHRoZWlyIHBhcmVudCBpbmxpbmUgYm94ZXMgaW4gbW9z
dCBjYXNlcyAoZGVwZW5kaW5nIG9uIHRoZSB2ZXJ0aWNhbC1hbGlnbiBwcm9wZXJ0eSB2YWx1ZSku
CisgICAgICAgIDMuIFBvc2l0aW9uIHRoZSBpbmxpbmUgYm94ZXMgcmVsYXRpdmUgdG8gdGhlIGxp
bmUgYm94LgorCisgICAgICAgIFRlc3Q6IGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvdmVy
dGljYWwtYWxpZ24tbWlkZGxlLW5lc3RlZC5odG1sCisgICAgICAgICAgICAgIGZhc3QvbGF5b3V0
Zm9ybWF0dGluZ2NvbnRleHQvdmVydGljYWwtYWxpZ24tbWlkZGxlLXNpbXBsZS5odG1sCisKKyAg
ICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6bV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmlubGluZVJlY3RGb3JUZXh0UnVuIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6Y29uc3RydWN0SW5saW5lQm94ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojpjb21wdXRlSW5saW5lQm94ZXNM
b2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6YWxpZ25J
bmxpbmVCb3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUhlaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmlubGluZUJveEZvckxheW91dEJveCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmFsaWduVmVydGljYWxseSk6
IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJv
eC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpJbmxpbmVCb3g6OnNldExv
Z2ljYWxUb3ApOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpJbmxpbmVCb3g6
OnNldExvZ2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6Oklu
bGluZUJveDo6c2V0TG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okxp
bmVCb3g6OklubGluZUJveDo6c2V0QmFzZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMaW5lQm94OjppbmxpbmVCb3hGb3JMYXlvdXRCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQm94OjppbmxpbmVCb3hGb3JMYXlvdXRCb3gpOgorCiAyMDIwLTA5LTAz
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBG
aW5hbGl6ZSBJbmxpbmVCb3ggYWxpZ25tZW50IGluIExpbmVCb3gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwCmluZGV4IDQyN2Q2
OGQ5YWMyOTk0MzczOTAwMTg2OWM5NTA4Y2Q4Mzc0YmU0NjQuLjIwODM1MGIwODUxNzQzM2M0NGY2
ZWJiOTljYzczNzBhZGFiMWMyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRp
YyB2b2lkIHBhaW50SW5saW5lQ29udGVudChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIExheW91
dFBvaW50IGFic29sdXRlT2ZmCiAgICAgICAgICAgICBhdXRvIGFic29sdXRlTGVmdCA9IGFic29s
dXRlT2Zmc2V0LngoKSArIHJ1bi5sZWZ0KCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIG5v
bi1iYXNlbGluZSBhbGlnbiBwYWludGluZwogICAgICAgICAgICAgYXV0byYgbGluZUJveCA9IGRp
c3BsYXlJbmxpbmVDb250ZW50LT5saW5lQm94Rm9yUnVuKHJ1bik7Ci0gICAgICAgICAgICBhdXRv
IGJhc2VsaW5lID0gYWJzb2x1dGVPZmZzZXQueSgpICsgbGluZUJveC50b3AoKSArIGxpbmVCb3gu
YmFzZWxpbmUoKTsKKyAgICAgICAgICAgIGF1dG8gYmFzZWxpbmUgPSBhYnNvbHV0ZU9mZnNldC55
KCkgKyBydW4udG9wKCkgKyBzdHlsZS5mb250TWV0cmljcygpLmFzY2VudCgpOwogICAgICAgICAg
ICAgYXV0byBleHBhbnNpb24gPSBydW4uZXhwYW5zaW9uKCk7CiAgICAgICAgICAgICBhdXRvIHRl
eHRSdW4gPSBUZXh0UnVuIHsgdGV4dENvbnRlbnQtPmNvbnRlbnQoKSwgcnVuLmxlZnQoKSAtIGxp
bmVCb3gubGVmdCgpLCBleHBhbnNpb24uaG9yaXpvbnRhbEV4cGFuc2lvbiwgZXhwYW5zaW9uLmJl
aGF2aW9yIH07CiAgICAgICAgICAgICB0ZXh0UnVuLnNldFRhYlNpemUoIXN0eWxlLmNvbGxhcHNl
V2hpdGVTcGFjZSgpLCBzdHlsZS50YWJTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcAppbmRleCBjZWIx
NDIzNjU4Mjg5ZGY1YTFmOTk0NmUzNTdmMWViMGYzYTk3NjBmLi4yOGJmMmE3NjU3MTVkZDU0NWU0
NjQ2MWRkOTk1ZGQ5ZTllMmFkYWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcApAQCAtMTM0LDE2ICsxMzQs
OSBAQCBpbmxpbmUgc3RhdGljIEFzY2VudEFuZERlc2NlbnQgaGFsZkxlYWRpbmdNZXRyaWNzKGNv
bnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcwogICAgIHJldHVybiB7IGZsb29yZihhc2NlbnQg
KyBoYWxmTGVhZGluZyksIGNlaWxmKGRlc2NlbnQgKyBoYWxmTGVhZGluZykgfTsKIH0KIAotTGlu
ZUJveDo6SW5saW5lQm94OjpJbmxpbmVCb3goY29uc3QgRGlzcGxheTo6SW5saW5lUmVjdCYgcmVj
dCwgSW5saW5lTGF5b3V0VW5pdCBzeW50aGV0aWNCYXNlbGluZSkKLSAgICA6IG1fbG9naWNhbFJl
Y3QocmVjdCkKLSAgICAsIG1fYmFzZWxpbmUoc3ludGhldGljQmFzZWxpbmUpCi0gICAgLCBtX2lz
RW1wdHkoZmFsc2UpCi0gICAgLCBtX2lzQXRvbWljKHRydWUpCi17Ci19Ci0KLUxpbmVCb3g6Oklu
bGluZUJveDo6SW5saW5lQm94KGNvbnN0IERpc3BsYXk6OklubGluZVJlY3QmIHJlY3QsIElubGlu
ZUxheW91dFVuaXQgYmFzZWxpbmUsIElubGluZUxheW91dFVuaXQgZGVzY2VudCwgSXNDb25zaWRl
cmVkRW1wdHkgaXNDb25zaWRlcmVkRW1wdHkpCi0gICAgOiBtX2xvZ2ljYWxSZWN0KHJlY3QpCitM
aW5lQm94OjpJbmxpbmVCb3g6OklubGluZUJveChjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3Qg
RGlzcGxheTo6SW5saW5lUmVjdCYgcmVjdCwgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZSwgSW5s
aW5lTGF5b3V0VW5pdCBkZXNjZW50LCBJc0NvbnNpZGVyZWRFbXB0eSBpc0NvbnNpZGVyZWRFbXB0
eSkKKyAgICA6IG1fbGF5b3V0Qm94KG1ha2VXZWFrUHRyKGxheW91dEJveCkpCisgICAgLCBtX2xv
Z2ljYWxSZWN0KHJlY3QpCiAgICAgLCBtX2Jhc2VsaW5lKGJhc2VsaW5lKQogICAgICwgbV9kZXNj
ZW50KGRlc2NlbnQpCiAgICAgLCBtX2lzRW1wdHkoaXNDb25zaWRlcmVkRW1wdHkgPT0gSXNDb25z
aWRlcmVkRW1wdHk6OlllcykKQEAgLTE2MSw0MSArMTU0LDM5IEBAIExpbmVCb3g6OkxpbmVCb3go
Y29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGlubGluZUZvcm1hdHRpbmdDb250ZXh0LCBj
b25zdCBJCiAgICAgICAgIG1fcmVjdC5tb3ZlSG9yaXpvbnRhbGx5KCptX2xpbmVBbGlnbm1lbnRP
ZmZzZXQpOwogICAgIH0KICAgICBjb25zdHJ1Y3RJbmxpbmVCb3hlcyhydW5zLCBpc0xpbmVWaXN1
YWxseUVtcHR5KTsKLSAgICBhbGlnblZlcnRpY2FsbHkoaXNMaW5lVmlzdWFsbHlFbXB0eSk7Cisg
ICAgY29tcHV0ZUlubGluZUJveGVzTG9naWNhbEhlaWdodCgpOworICAgIGFsaWduSW5saW5lQm94
ZXNWZXJ0aWNhbGx5QW5kQ29tcHV0ZUxpbmVCb3hIZWlnaHQoaXNMaW5lVmlzdWFsbHlFbXB0eSk7
CiAgICAgLy8gQ29tcHV0ZSBzY3JvbGxhYmxlIG92ZXJmbG93LgogICAgIG1fc2Nyb2xsYWJsZU92
ZXJmbG93ID0gRGlzcGxheTo6SW5saW5lUmVjdCB7IHRvcExlZnQsIHN0ZDo6bWF4KGxvZ2ljYWxX
aWR0aCwgbV9yb290SW5saW5lQm94LmxvZ2ljYWxXaWR0aCgpKSwgeyB9IH07Ci0gICAgYXV0byBs
b2dpY2FsQm90dG9tID0gbV9yb290SW5saW5lQm94LmxvZ2ljYWxCb3R0b20oKTsKKyAgICBhdXRv
IGxvZ2ljYWxCb3R0b20gPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsgCiAgICAgZm9yIChhdXRvJiBp
bmxpbmVCb3hFbnRyeSA6IG1faW5saW5lQm94UmVjdE1hcCkKLSAgICAgICAgbG9naWNhbEJvdHRv
bSA9IHN0ZDo6bWF4KGxvZ2ljYWxCb3R0b20sIGlubGluZUJveEVudHJ5LnZhbHVlLT5sb2dpY2Fs
Qm90dG9tKCkpOworICAgICAgICBsb2dpY2FsQm90dG9tID0gc3RkOjptYXgobG9naWNhbEJvdHRv
bSwgaW5saW5lQm94RW50cnkudmFsdWUtPmxvZ2ljYWxSZWN0KCkuYm90dG9tKCkpOwogICAgIG1f
c2Nyb2xsYWJsZU92ZXJmbG93LmV4cGFuZFZlcnRpY2FsbHkobG9naWNhbEJvdHRvbSk7Ci0KLX0K
LQotY29uc3QgTGluZUJveDo6SW5saW5lQm94JiBMaW5lQm94OjppbmxpbmVCb3hGb3JMYXlvdXRC
b3goY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCZsYXlvdXRCb3gg
IT0gJnJvb3QoKSk7Ci0gICAgcmV0dXJuICptX2lubGluZUJveFJlY3RNYXAuZ2V0KCZsYXlvdXRC
b3gpOwogfQogCiBEaXNwbGF5OjpJbmxpbmVSZWN0IExpbmVCb3g6OmlubGluZVJlY3RGb3JUZXh0
UnVuKGNvbnN0IExpbmVCdWlsZGVyOjpSdW4mIHJ1bikgY29uc3QKIHsKICAgICBBU1NFUlQocnVu
LmlzVGV4dCgpIHx8IHJ1bi5pc0xpbmVCcmVhaygpKTsKLSAgICBhdXRvIGlubGluZUJveFJlY3Qg
PSBtX3Jvb3RJbmxpbmVCb3gubG9naWNhbFJlY3QoKTsKLSAgICBpZiAoJnJ1bi5sYXlvdXRCb3go
KS5wYXJlbnQoKSAhPSAmcm9vdCgpKQotICAgICAgICBpbmxpbmVCb3hSZWN0ID0gbV9pbmxpbmVC
b3hSZWN0TWFwLmdldCgmcnVuLmxheW91dEJveCgpLnBhcmVudCgpKS0+bG9naWNhbFJlY3QoKTsK
KyAgICBhdXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBpbmxpbmVCb3hGb3JMYXlvdXRCb3gocnVuLmxh
eW91dEJveCgpLnBhcmVudCgpKTsKKyAgICBhdXRvIGlubGluZUJveFJlY3QgPSBwYXJlbnRJbmxp
bmVCb3gubG9naWNhbFJlY3QoKTsKICAgICByZXR1cm4geyBpbmxpbmVCb3hSZWN0LnRvcCgpLCBy
dW4ubG9naWNhbExlZnQoKSwgcnVuLmxvZ2ljYWxXaWR0aCgpLCBpbmxpbmVCb3hSZWN0LmhlaWdo
dCgpIH07CiB9CiAKIHZvaWQgTGluZUJveDo6Y29uc3RydWN0SW5saW5lQm94ZXMoY29uc3QgTGlu
ZUJ1aWxkZXI6OlJ1bkxpc3QmIHJ1bnMsIElzTGluZVZpc3VhbGx5RW1wdHkgaXNMaW5lVmlzdWFs
bHlFbXB0eSkKIHsKLSAgICBhdXRvIGxpbmVIYXNJbWFnaW5hcnlTdHJ1dCA9ICFsYXlvdXRTdGF0
ZSgpLmluUXVpcmtzTW9kZSgpOwotICAgIGF1dG8gbGluZUlzQ29uc2lkZXJlZEVtcHR5ID0gIWxp
bmVIYXNJbWFnaW5hcnlTdHJ1dCB8fCBpc0xpbmVWaXN1YWxseUVtcHR5ID09IElzTGluZVZpc3Vh
bGx5RW1wdHk6OlllcyA/IElubGluZUJveDo6SXNDb25zaWRlcmVkRW1wdHk6OlllcyA6IElubGlu
ZUJveDo6SXNDb25zaWRlcmVkRW1wdHk6Ok5vOwotICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gcm9v
dCgpLnN0eWxlKCkuZm9udE1ldHJpY3MoKTsKLSAgICBJbmxpbmVMYXlvdXRVbml0IHJvb3RJbmxp
bmVCb3hIZWlnaHQgPSBmb250TWV0cmljcy5oZWlnaHQoKTsKLSAgICBhdXRvIHJvb3RJbmxpbmVS
ZWN0ID0gRGlzcGxheTo6SW5saW5lUmVjdCB7IHsgfSwgeyB9LCBjb250ZW50TG9naWNhbFdpZHRo
KCksIHJvb3RJbmxpbmVCb3hIZWlnaHQgfTsKLSAgICBJbmxpbmVMYXlvdXRVbml0IHJvb3RJbmxp
bmVCYXNlbGluZSA9IGZvbnRNZXRyaWNzLmFzY2VudCgpOwotICAgIGF1dG8gcm9vdElubGluZURl
c2NlbnQgPSByb290SW5saW5lQm94SGVpZ2h0IC0gcm9vdElubGluZUJhc2VsaW5lOwotICAgIG1f
cm9vdElubGluZUJveCA9IElubGluZUJveCB7IHJvb3RJbmxpbmVSZWN0LCByb290SW5saW5lQmFz
ZWxpbmUsIHJvb3RJbmxpbmVEZXNjZW50LCBsaW5lSXNDb25zaWRlcmVkRW1wdHkgfTsKKyAgICBh
dXRvIGNvbnN0cnVjdFJvb3RJbmxpbmVCb3ggPSBbJl0geworICAgICAgICBhdXRvJiBmb250TWV0
cmljcyA9IHJvb3QoKS5zdHlsZSgpLmZvbnRNZXRyaWNzKCk7CisgICAgICAgIElubGluZUxheW91
dFVuaXQgcm9vdElubGluZUJveEhlaWdodCA9IGZvbnRNZXRyaWNzLmhlaWdodCgpOworICAgICAg
ICBhdXRvIHJvb3RJbmxpbmVCb3hSZWN0ID0gRGlzcGxheTo6SW5saW5lUmVjdCB7IHsgfSwgeyB9
LCBjb250ZW50TG9naWNhbFdpZHRoKCksIHJvb3RJbmxpbmVCb3hIZWlnaHQgfTsKKyAgICAgICAg
SW5saW5lTGF5b3V0VW5pdCByb290SW5saW5lQm94QmFzZWxpbmUgPSBmb250TWV0cmljcy5hc2Nl
bnQoKTsKKyAgICAgICAgYXV0byByb290SW5saW5lQm94RGVzY2VudCA9IHJvb3RJbmxpbmVCb3hI
ZWlnaHQgLSByb290SW5saW5lQm94QmFzZWxpbmU7CisgICAgICAgIGF1dG8gbGluZUhhc0ltYWdp
bmFyeVN0cnV0ID0gIWxheW91dFN0YXRlKCkuaW5RdWlya3NNb2RlKCk7CisgICAgICAgIGF1dG8g
cm9vdElubGluZUJveElzQ29uc2lkZXJlZEVtcHR5ID0gaXNMaW5lVmlzdWFsbHlFbXB0eSA9PSBJ
c0xpbmVWaXN1YWxseUVtcHR5OjpObyAmJiBsaW5lSGFzSW1hZ2luYXJ5U3RydXQgPyBJbmxpbmVC
b3g6OklzQ29uc2lkZXJlZEVtcHR5OjpObyA6IElubGluZUJveDo6SXNDb25zaWRlcmVkRW1wdHk6
OlllczsKKworICAgICAgICBtX3Jvb3RJbmxpbmVCb3ggPSBJbmxpbmVCb3ggeyByb290KCksIHJv
b3RJbmxpbmVCb3hSZWN0LCByb290SW5saW5lQm94QmFzZWxpbmUsIHJvb3RJbmxpbmVCb3hEZXNj
ZW50LCByb290SW5saW5lQm94SXNDb25zaWRlcmVkRW1wdHkgfTsKKyAgICAgICAgbV9pbmxpbmVC
b3hSZWN0TWFwLnNldCgmcm9vdCgpLCAmbV9yb290SW5saW5lQm94KTsKKyAgICB9OworICAgIGNv
bnN0cnVjdFJvb3RJbmxpbmVCb3goKTsKIAogICAgIGZvciAoYXV0byYgcnVuIDogcnVucykgewog
ICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBydW4ubGF5b3V0Qm94KCk7CkBAIC0yMjAsMTEgKzIx
MSwxNSBAQCB2b2lkIExpbmVCb3g6OmNvbnN0cnVjdElubGluZUJveGVzKGNvbnN0IExpbmVCdWls
ZGVyOjpSdW5MaXN0JiBydW5zLCBJc0xpbmVWaXN1YQogICAgICAgICAgICAgICAgIC8vCiAgICAg
ICAgICAgICAgICAgYXV0byBhZGp1c3RlZEJhc2VsaW5lID0gYm94R2VvbWV0cnkubWFyZ2luQmVm
b3JlKCkgKyBib3hHZW9tZXRyeS5ib3JkZXJUb3AoKSArIGJveEdlb21ldHJ5LnBhZGRpbmdUb3Ao
KS52YWx1ZU9yKDApICsgaW5saW5lQmxvY2tCYXNlbGluZTsKICAgICAgICAgICAgICAgICBhdXRv
IGlubGluZUJveFJlY3QgPSBEaXNwbGF5OjpJbmxpbmVSZWN0IHsgeyB9LCBydW4ubG9naWNhbExl
ZnQoKSwgcnVuLmxvZ2ljYWxXaWR0aCgpLCBib3hHZW9tZXRyeS5tYXJnaW5Cb3hIZWlnaHQoKSB9
OwotICAgICAgICAgICAgICAgIG1faW5saW5lQm94UmVjdE1hcC5zZXQoJmxheW91dEJveCwgbWFr
ZVVuaXF1ZTxJbmxpbmVCb3g+KGlubGluZUJveFJlY3QsIGFkanVzdGVkQmFzZWxpbmUpKTsKKyAg
ICAgICAgICAgICAgICBhdXRvIGlubGluZUJveCA9IG1ha2VVbmlxdWU8SW5saW5lQm94PihsYXlv
dXRCb3gsIGlubGluZUJveFJlY3QsIGFkanVzdGVkQmFzZWxpbmUsIElubGluZUxheW91dFVuaXQg
eyB9LCBJbmxpbmVCb3g6OklzQ29uc2lkZXJlZEVtcHR5OjpObyk7CisgICAgICAgICAgICAgICAg
bV9pbmxpbmVCb3hSZWN0TWFwLnNldCgmbGF5b3V0Qm94LCBpbmxpbmVCb3guZ2V0KCkpOworICAg
ICAgICAgICAgICAgIG1faW5saW5lQm94TGlzdC5hcHBlbmQoV1RGTW92ZShpbmxpbmVCb3gpKTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgYXV0byBydW5IZWlnaHQgPSBi
b3hHZW9tZXRyeS5tYXJnaW5Cb3hIZWlnaHQoKTsKICAgICAgICAgICAgICAgICBhdXRvIGlubGlu
ZUJveFJlY3QgPSBEaXNwbGF5OjpJbmxpbmVSZWN0IHsgeyB9LCBydW4ubG9naWNhbExlZnQoKSwg
cnVuLmxvZ2ljYWxXaWR0aCgpLCBydW5IZWlnaHQgfTsKLSAgICAgICAgICAgICAgICBtX2lubGlu
ZUJveFJlY3RNYXAuc2V0KCZsYXlvdXRCb3gsIG1ha2VVbmlxdWU8SW5saW5lQm94PihpbmxpbmVC
b3hSZWN0LCBydW5IZWlnaHQpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJveCA9IG1h
a2VVbmlxdWU8SW5saW5lQm94PihsYXlvdXRCb3gsIGlubGluZUJveFJlY3QsIHJ1bkhlaWdodCwg
SW5saW5lTGF5b3V0VW5pdCB7IH0sIElubGluZUJveDo6SXNDb25zaWRlcmVkRW1wdHk6Ok5vKTsK
KyAgICAgICAgICAgICAgICBtX2lubGluZUJveFJlY3RNYXAuc2V0KCZsYXlvdXRCb3gsIGlubGlu
ZUJveC5nZXQoKSk7CisgICAgICAgICAgICAgICAgbV9pbmxpbmVCb3hMaXN0LmFwcGVuZChXVEZN
b3ZlKGlubGluZUJveCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHJ1bi5p
c0NvbnRhaW5lclN0YXJ0KCkpIHsKICAgICAgICAgICAgIGF1dG8gaW5pdGlhbFdpZHRoID0gY29u
dGVudExvZ2ljYWxXaWR0aCgpIC0gcnVuLmxvZ2ljYWxMZWZ0KCk7CkBAIC0yMzMsNyArMjI4LDkg
QEAgdm9pZCBMaW5lQm94Ojpjb25zdHJ1Y3RJbmxpbmVCb3hlcyhjb25zdCBMaW5lQnVpbGRlcjo6
UnVuTGlzdCYgcnVucywgSXNMaW5lVmlzdWEKICAgICAgICAgICAgIElubGluZUxheW91dFVuaXQg
bG9naWNhbEhlaWdodCA9IGZvbnRNZXRyaWNzLmhlaWdodCgpOwogICAgICAgICAgICAgSW5saW5l
TGF5b3V0VW5pdCBiYXNlbGluZSA9IGZvbnRNZXRyaWNzLmFzY2VudCgpOwogICAgICAgICAgICAg
YXV0byBpbmxpbmVCb3hSZWN0ID0gRGlzcGxheTo6SW5saW5lUmVjdCB7IHsgfSwgcnVuLmxvZ2lj
YWxMZWZ0KCksIGluaXRpYWxXaWR0aCwgbG9naWNhbEhlaWdodCB9OwotICAgICAgICAgICAgbV9p
bmxpbmVCb3hSZWN0TWFwLnNldCgmbGF5b3V0Qm94LCBtYWtlVW5pcXVlPElubGluZUJveD4oaW5s
aW5lQm94UmVjdCwgYmFzZWxpbmUsIGxvZ2ljYWxIZWlnaHQgLSBiYXNlbGluZSwgSW5saW5lQm94
OjpJc0NvbnNpZGVyZWRFbXB0eTo6WWVzKSk7CisgICAgICAgICAgICBhdXRvIGlubGluZUJveCA9
IG1ha2VVbmlxdWU8SW5saW5lQm94PihsYXlvdXRCb3gsIGlubGluZUJveFJlY3QsIGJhc2VsaW5l
LCBsb2dpY2FsSGVpZ2h0IC0gYmFzZWxpbmUsIElubGluZUJveDo6SXNDb25zaWRlcmVkRW1wdHk6
Olllcyk7CisgICAgICAgICAgICBtX2lubGluZUJveFJlY3RNYXAuc2V0KCZsYXlvdXRCb3gsIGlu
bGluZUJveC5nZXQoKSk7CisgICAgICAgICAgICBtX2lubGluZUJveExpc3QuYXBwZW5kKFdURk1v
dmUoaW5saW5lQm94KSk7CiAgICAgICAgIH0gZWxzZSBpZiAocnVuLmlzQ29udGFpbmVyRW5kKCkp
IHsKICAgICAgICAgICAgIC8vIEFkanVzdCB0aGUgbG9naWNhbCB3aWR0aCB3aGVuIHRoZSBpbmxp
bmUgbGV2ZWwgY29udGFpbmVyIGNsb3NlcyBvbiB0aGlzIGxpbmUuCiAgICAgICAgICAgICBhdXRv
JiBpbmxpbmVCb3ggPSAqbV9pbmxpbmVCb3hSZWN0TWFwLmdldCgmbGF5b3V0Qm94KTsKQEAgLTI0
NSw5MiArMjQyLDE0MiBAQCB2b2lkIExpbmVCb3g6OmNvbnN0cnVjdElubGluZUJveGVzKGNvbnN0
IExpbmVCdWlsZGVyOjpSdW5MaXN0JiBydW5zLCBJc0xpbmVWaXN1YQogICAgIH0KIH0KIAotdm9p
ZCBMaW5lQm94OjphbGlnblZlcnRpY2FsbHkoSXNMaW5lVmlzdWFsbHlFbXB0eSBpc0xpbmVWaXN1
YWxseUVtcHR5KQordm9pZCBMaW5lQm94Ojpjb21wdXRlSW5saW5lQm94ZXNMb2dpY2FsSGVpZ2h0
KCkKIHsKLSAgICBpZiAoaXNMaW5lVmlzdWFsbHlFbXB0eSA9PSBJc0xpbmVWaXN1YWxseUVtcHR5
OjpZZXMpCi0gICAgICAgIHJldHVybjsKLSAgICAvLyAxLiBDb21wdXRlIGxpbmUgYm94IGhlaWdo
dC9hbGlnbm1lbnQgYmFzZWxpbmUgYnkgcGxhY2luZyB0aGUgaW5saW5lIGJveGVzIHZlcnRpY2Fs
bHkuCi0gICAgLy8gMi4gQWRqdXN0IHRoZSBpbmxpbmUgYm94IHZlcnRpY2FsIHBvc2l0aW9uLgot
ICAgIGF1dG8mIHJvb3RTdHlsZSA9IHJvb3QoKS5zdHlsZSgpOwotICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgbGV0IGxpbmUgYm94IGZ1bGx5IGNvbnRhaW4gdGhlIGlubGluZSBib3hlcyBhbmQgbW92
ZSBsaW5lIHNwYWNpbmcvb3ZlcmZsb3cgb3V0IHRvIERpc3BsYXk6OkxpbmVCb3guCi0gICAgLy8g
c2VlIHdlYmtpdC5vcmcvYi8yMTUwODcjYzkKLSAgICBJbmxpbmVMYXlvdXRVbml0IHJlY29tbWVu
ZGVkTGluZUJveEhlaWdodCA9IHJvb3RTdHlsZS5saW5lSGVpZ2h0KCkuaXNOZWdhdGl2ZSgpID8g
cm9vdFN0eWxlLmZvbnRNZXRyaWNzKCkubGluZVNwYWNpbmcoKSA6IHJvb3RTdHlsZS5jb21wdXRl
ZExpbmVIZWlnaHQoKTsKKyAgICAvLyBCeSB0cmF2ZXJzaW5nIHRoZSBpbmxpbmUgYm94IGxpc3Qg
YmFja3dhcmRzLCBpdCdzIGd1YXJhbnRlZWQgdGhhdCBkZXNjZW5kYW50IGlubGluZSBib3hlcyBh
cmUgc2l6ZWQgZmlyc3QuCisgICAgZm9yIChhdXRvJiBpbmxpbmVCb3ggOiBXVEY6Om1ha2VSZXZl
cnNlZFJhbmdlKG1faW5saW5lQm94TGlzdCkpIHsKKyAgICAgICAgaWYgKGlubGluZUJveC0+aXNF
bXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CiAKLSAgICBhdXRvIGNvbnRlbnRMb2dpY2Fs
SGVpZ2h0ID0gSW5saW5lTGF5b3V0VW5pdCB7IH07Ci0gICAgYXV0byBhbGlnbm1lbnRCYXNlbGlu
ZSA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgIGF1dG8gY29tcHV0ZUxpbmVCb3hIZWlnaHQg
PSBbJl0oYXV0byYgaW5saW5lQm94LCBhdXRvIHRleHRBbGlnbk1vZGUpIHsKLSAgICAgICAgc3dp
dGNoICh0ZXh0QWxpZ25Nb2RlKSB7CisgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGlubGluZUJv
eC0+bGF5b3V0Qm94KCk7CisgICAgICAgIHN3aXRjaCAobGF5b3V0Qm94LnN0eWxlKCkudmVydGlj
YWxBbGlnbigpKSB7CisgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VG9wOgorICAgICAgICBj
YXNlIFZlcnRpY2FsQWxpZ246OkJvdHRvbToKKyAgICAgICAgICAgIC8vIHRvcCBhbmQgYm90dG9t
IGFsaWdubWVudHMgb25seSBzdHJldGNoIHRoZSBsaW5lIGJveC4gVGhleSBkb24ndCBzdHJldGNo
IGFueSBvZiB0aGUgaW5saW5lIGJveGVzLCBub3QgZXZlbiB0aGUgcm9vdCBpbmxpbmUgYm94Lgor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmU6
IHsKLSAgICAgICAgICAgIGF1dG8gYmFzZWxpbmVPdmVyZmxvdyA9IGlubGluZUJveC5iYXNlbGlu
ZSgpIC0gYWxpZ25tZW50QmFzZWxpbmU7Ci0gICAgICAgICAgICBpZiAoYmFzZWxpbmVPdmVyZmxv
dyA+IDApIHsKLSAgICAgICAgICAgICAgICBjb250ZW50TG9naWNhbEhlaWdodCArPSBiYXNlbGlu
ZU92ZXJmbG93OwotICAgICAgICAgICAgICAgIGFsaWdubWVudEJhc2VsaW5lICs9IGJhc2VsaW5l
T3ZlcmZsb3c7CisgICAgICAgICAgICBhdXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBpbmxpbmVCb3hG
b3JMYXlvdXRCb3gobGF5b3V0Qm94LnBhcmVudCgpKTsKKyAgICAgICAgICAgIGF1dG8gYmFzZWxp
bmVPdmVyZmxvdyA9IHN0ZDo6bWF4KDAuMGYsIGlubGluZUJveC0+YmFzZWxpbmUoKSAtIHBhcmVu
dElubGluZUJveC5iYXNlbGluZSgpKTsKKyAgICAgICAgICAgIGlmIChiYXNlbGluZU92ZXJmbG93
KSB7CisgICAgICAgICAgICAgICAgcGFyZW50SW5saW5lQm94LnNldEJhc2VsaW5lKHBhcmVudElu
bGluZUJveC5iYXNlbGluZSgpICsgYmFzZWxpbmVPdmVyZmxvdyk7CisgICAgICAgICAgICAgICAg
cGFyZW50SW5saW5lQm94LnNldExvZ2ljYWxIZWlnaHQocGFyZW50SW5saW5lQm94LmxvZ2ljYWxI
ZWlnaHQoKSArIGJhc2VsaW5lT3ZlcmZsb3cpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
Ly8gVGFibGUgY2VsbHMsIGlubGluZS1ibG9jayBib3hlcyBtYXkgc3RyZXRjaCB0aGUgbGluZSBi
ZXlvbmQgdGhlaXIgYmFzZWxpbmUuCi0gICAgICAgICAgICBhdXRvIGJlbG93QmFzZWxpbmUgPSBp
bmxpbmVCb3guZGVzY2VudCgpLnZhbHVlT3IoaW5saW5lQm94LmxvZ2ljYWxIZWlnaHQoKSAtIGlu
bGluZUJveC5iYXNlbGluZSgpKTsKLSAgICAgICAgICAgIGF1dG8gYmVsb3dCYXNlbGluZU92ZXJm
bG93ID0gYmVsb3dCYXNlbGluZSAtIChjb250ZW50TG9naWNhbEhlaWdodCAtIGFsaWdubWVudEJh
c2VsaW5lKTsKLSAgICAgICAgICAgIGlmIChiZWxvd0Jhc2VsaW5lT3ZlcmZsb3cgPiAwKQotICAg
ICAgICAgICAgICAgIGNvbnRlbnRMb2dpY2FsSGVpZ2h0ICs9IGJlbG93QmFzZWxpbmVPdmVyZmxv
dzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVmVydGljYWxB
bGlnbjo6VG9wOiB7Ci0gICAgICAgICAgICBhdXRvIG92ZXJmbG93ID0gaW5saW5lQm94LmxvZ2lj
YWxIZWlnaHQoKSAtIGNvbnRlbnRMb2dpY2FsSGVpZ2h0OwotICAgICAgICAgICAgaWYgKG92ZXJm
bG93ID4gMCkKLSAgICAgICAgICAgICAgICBjb250ZW50TG9naWNhbEhlaWdodCArPSBvdmVyZmxv
dzsKKyAgICAgICAgICAgIGF1dG8gcGFyZW50TGluZUJveEJlbG93QmFzZWxpbmUgPSBwYXJlbnRJ
bmxpbmVCb3gubG9naWNhbEhlaWdodCgpIC0gcGFyZW50SW5saW5lQm94LmJhc2VsaW5lKCk7Cisg
ICAgICAgICAgICBhdXRvIGlubGluZUJveEJlbG93QmFzZWxpbmUgPSBpbmxpbmVCb3gtPmxvZ2lj
YWxIZWlnaHQoKSAtIGlubGluZUJveC0+YmFzZWxpbmUoKTsKKyAgICAgICAgICAgIGF1dG8gYmVs
b3dCYXNlbGluZU92ZXJmbG93ID0gc3RkOjptYXgoMC4wZiwgaW5saW5lQm94QmVsb3dCYXNlbGlu
ZSAtIHBhcmVudExpbmVCb3hCZWxvd0Jhc2VsaW5lKTsKKyAgICAgICAgICAgIGlmIChiZWxvd0Jh
c2VsaW5lT3ZlcmZsb3cpCisgICAgICAgICAgICAgICAgcGFyZW50SW5saW5lQm94LnNldExvZ2lj
YWxIZWlnaHQocGFyZW50SW5saW5lQm94LmxvZ2ljYWxIZWlnaHQoKSArIGJlbG93QmFzZWxpbmVP
dmVyZmxvdyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIFZl
cnRpY2FsQWxpZ246OkJvdHRvbTogewotICAgICAgICAgICAgYXV0byBvdmVyZmxvdyA9IGlubGlu
ZUJveC5sb2dpY2FsSGVpZ2h0KCkgLSBjb250ZW50TG9naWNhbEhlaWdodDsKLSAgICAgICAgICAg
IGlmIChvdmVyZmxvdyA+IDApIHsKLSAgICAgICAgICAgICAgICBjb250ZW50TG9naWNhbEhlaWdo
dCArPSBvdmVyZmxvdzsKLSAgICAgICAgICAgICAgICBhbGlnbm1lbnRCYXNlbGluZSArPSBvdmVy
ZmxvdzsKKyAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6IHsKKyAgICAgICAgICAg
IGF1dG8mIHBhcmVudExheW91dEJveCA9IGxheW91dEJveC5wYXJlbnQoKTsKKyAgICAgICAgICAg
IGF1dG8mIHBhcmVudElubGluZUJveCA9IGlubGluZUJveEZvckxheW91dEJveChwYXJlbnRMYXlv
dXRCb3gpOworICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmJh
c2VsaW5lKCkgLSAoaW5saW5lQm94LT5sb2dpY2FsSGVpZ2h0KCkgLyAyICsgcGFyZW50TGF5b3V0
Qm94LnN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyKTsKKyAgICAgICAgICAgIGlm
IChsb2dpY2FsVG9wIDwgMCkgeworICAgICAgICAgICAgICAgIGF1dG8gb3ZlcmZsb3cgPSAtbG9n
aWNhbFRvcDsKKyAgICAgICAgICAgICAgICAvLyBDaGlsZCBpbmxpbmUgYm94IHdpdGggbWlkZGxl
IGFsaWdubWVudCBwdXNoZXMgdGhlIGJhc2VsaW5lIGRvd24gd2hlbiBvdmVyZmxvd3MuIAorICAg
ICAgICAgICAgICAgIHBhcmVudElubGluZUJveC5zZXRCYXNlbGluZShwYXJlbnRJbmxpbmVCb3gu
YmFzZWxpbmUoKSArIG92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICBwYXJlbnRJbmxpbmVCb3gu
c2V0TG9naWNhbEhlaWdodChwYXJlbnRJbmxpbmVCb3gubG9naWNhbEhlaWdodCgpICsgb3ZlcmZs
b3cpOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSB7IH07CiAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBhdXRvIGxvZ2ljYWxCb3R0b20gPSBsb2dpY2FsVG9wICsgaW5saW5lQm94LT5s
b2dpY2FsSGVpZ2h0KCk7CisgICAgICAgICAgICBwYXJlbnRJbmxpbmVCb3guc2V0TG9naWNhbEhl
aWdodChzdGQ6Om1heChwYXJlbnRJbmxpbmVCb3gubG9naWNhbEhlaWdodCgpLCBsb2dpY2FsQm90
dG9tKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9Ci0gICAgfTsKLQotICAgIGF1dG8gc2hvdWxkUm9vdElubGluZUJveFN0
cmV0Y2hMaW5lQm94ID0gIW1fcm9vdElubGluZUJveC5pc0VtcHR5KCk7Ci0gICAgaWYgKHNob3Vs
ZFJvb3RJbmxpbmVCb3hTdHJldGNoTGluZUJveCkKLSAgICAgICAgY29tcHV0ZUxpbmVCb3hIZWln
aHQobV9yb290SW5saW5lQm94LCBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZSk7Ci0gICAgZm9yIChh
dXRvJiBpbmxpbmVCb3hFbnRyeSA6IG1faW5saW5lQm94UmVjdE1hcCkgewotICAgICAgICBhdXRv
JiBpbmxpbmVCb3ggPSAqaW5saW5lQm94RW50cnkudmFsdWU7Ci0gICAgICAgIGF1dG8gc2hvdWxk
SW5saW5lQm94U3RyZXRjaExpbmVCb3ggPSAhaW5saW5lQm94LmlzRW1wdHkoKTsKLSAgICAgICAg
aWYgKHNob3VsZElubGluZUJveFN0cmV0Y2hMaW5lQm94KQotICAgICAgICAgICAgY29tcHV0ZUxp
bmVCb3hIZWlnaHQoaW5saW5lQm94LCBpbmxpbmVCb3hFbnRyeS5rZXktPnN0eWxlKCkudmVydGlj
YWxBbGlnbigpKTsKICAgICB9Cit9CiAKLSAgICBhdXRvIGxpbmVCb3hMb2dpY2FsSGVpZ2h0ID0g
cm9vdFN0eWxlLmxpbmVIZWlnaHQoKS5pc05lZ2F0aXZlKCkgPyBzdGQ6Om1heChyZWNvbW1lbmRl
ZExpbmVCb3hIZWlnaHQsIGNvbnRlbnRMb2dpY2FsSGVpZ2h0KSA6IHJlY29tbWVuZGVkTGluZUJv
eEhlaWdodDsKLSAgICBtX3JlY3Quc2V0SGVpZ2h0KGxpbmVCb3hMb2dpY2FsSGVpZ2h0KTsKK3Zv
aWQgTGluZUJveDo6YWxpZ25JbmxpbmVCb3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUJveEhl
aWdodChJc0xpbmVWaXN1YWxseUVtcHR5IGlzTGluZVZpc3VhbGx5RW1wdHkpCit7CisgICAgLy8g
SW5saW5lIGJveGVzIGFyZSBpbiB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gb2YgdGhlIGxpbmUgYm94
IChhbmQgbm90IGluIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGVpciBwYXJlbnRzKS4KKyAg
ICAvLyBTdGFydGluZyB3aXRoIHRoZSByb290IGlubGluZSBib3gsIHBvc2l0aW9uIHRoZSBhbmNl
c3RvcnMgZmlyc3Qgc28gdGhhdCB0aGUgZGVzY2VuZGFudCBsaW5lIGJveGVzIHNlZSBhYnNvbHV0
ZSB2ZXJ0aWNhbCBwb3NpdGlvbnMuCisgICAgYXV0byYgcm9vdFN0eWxlID0gcm9vdCgpLnN0eWxl
KCk7CisgICAgYXV0byBjb250ZW50TG9naWNhbEJvdHRvbSA9IElubGluZUxheW91dFVuaXQgeyB9
OworICAgIGF1dG8gYWxpZ25Sb290SW5saW5lQm94ID0gWyZdIHsKKyAgICAgICAgYXV0byB1c2Vk
TGluZUhlaWdodCA9IElubGluZUxheW91dFVuaXQgeyB9OworICAgICAgICBpZiAoaXNMaW5lVmlz
dWFsbHlFbXB0eSA9PSBJc0xpbmVWaXN1YWxseUVtcHR5OjpObykKKyAgICAgICAgICAgIHVzZWRM
aW5lSGVpZ2h0ID0gcm9vdFN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpOworICAgICAgICBhdXRv
IGFsaWdubWVudEJhc2VsaW5lID0gaGFsZkxlYWRpbmdNZXRyaWNzKHJvb3RTdHlsZS5mb250TWV0
cmljcygpLCB1c2VkTGluZUhlaWdodCkuYXNjZW50OworICAgICAgICBhdXRvIHJvb3RJbmxpbmVC
b3hUb3BQb3NpdGlvbiA9IGFsaWdubWVudEJhc2VsaW5lIC0gbV9yb290SW5saW5lQm94LmJhc2Vs
aW5lKCk7CisgICAgICAgIG1fcm9vdElubGluZUJveC5zZXRMb2dpY2FsVG9wKHJvb3RJbmxpbmVC
b3hUb3BQb3NpdGlvbik7CisgICAgICAgIGNvbnRlbnRMb2dpY2FsQm90dG9tID0gbV9yb290SW5s
aW5lQm94LmxvZ2ljYWxIZWlnaHQoKTsKKyAgICAgICAgZm9yIChhdXRvJiBpbmxpbmVCb3ggOiBt
X2lubGluZUJveExpc3QpIHsKKyAgICAgICAgICAgIGF1dG8gdmVydGljYWxBbGlnbiA9IGlubGlu
ZUJveC0+bGF5b3V0Qm94KCkuc3R5bGUoKS52ZXJ0aWNhbEFsaWduKCk7CisgICAgICAgICAgICBp
ZiAodmVydGljYWxBbGlnbiA9PSBWZXJ0aWNhbEFsaWduOjpCb3R0b20pIHsKKyAgICAgICAgICAg
ICAgICAvLyBib3R0b20gYWxpZ24gYWx3YXlzIHB1c2hlcyB0aGUgcm9vdCBpbmxpbmUgYm94IGRv
d253YXJkcy4KKyAgICAgICAgICAgICAgICBhdXRvIG92ZXJmbG93ID0gc3RkOjptYXgoMC4wZiwg
aW5saW5lQm94LT5sb2dpY2FsQm90dG9tKCkgLSBtX3Jvb3RJbmxpbmVCb3gubG9naWNhbEJvdHRv
bSgpKTsKKyAgICAgICAgICAgICAgICBtX3Jvb3RJbmxpbmVCb3guc2V0TG9naWNhbFRvcChtX3Jv
b3RJbmxpbmVCb3gubG9naWNhbFRvcCgpICsgb3ZlcmZsb3cpOworICAgICAgICAgICAgICAgIGNv
bnRlbnRMb2dpY2FsQm90dG9tICs9IG92ZXJmbG93OworICAgICAgICAgICAgfSBlbHNlIGlmICh2
ZXJ0aWNhbEFsaWduID09IFZlcnRpY2FsQWxpZ246OlRvcCkKKyAgICAgICAgICAgICAgICBjb250
ZW50TG9naWNhbEJvdHRvbSA9IHN0ZDo6bWF4KGNvbnRlbnRMb2dpY2FsQm90dG9tLCBpbmxpbmVC
b3gtPmxvZ2ljYWxIZWlnaHQoKSk7CisgICAgICAgIH0KKyAgICB9OworICAgIGFsaWduUm9vdElu
bGluZUJveCgpOwogCi0gICAgYXV0byBhZGp1c3RJbmxpbmVCb3hUb3AgPSBbJl0oYXV0byYgaW5s
aW5lQm94LCBhdXRvIHRleHRBbGlnbk1vZGUpIHsKKyAgICBmb3IgKGF1dG8mIGlubGluZUJveCA6
IG1faW5saW5lQm94TGlzdCkgewogICAgICAgICBhdXRvIGlubGluZUJveExvZ2ljYWxUb3AgPSBJ
bmxpbmVMYXlvdXRVbml0IHsgfTsKLSAgICAgICAgc3dpdGNoICh0ZXh0QWxpZ25Nb2RlKSB7Ci0g
ICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmU6Ci0gICAgICAgICAgICBpbmxpbmVC
b3hMb2dpY2FsVG9wID0gYWxpZ25tZW50QmFzZWxpbmUgLSBpbmxpbmVCb3guYmFzZWxpbmUoKTsK
KyAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lQm94LT5sYXlvdXRCb3goKTsKKyAgICAg
ICAgc3dpdGNoIChsYXlvdXRCb3guc3R5bGUoKS52ZXJ0aWNhbEFsaWduKCkpIHsKKyAgICAgICAg
Y2FzZSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZTogeworICAgICAgICAgICAgYXV0byYgcGFyZW50
SW5saW5lQm94ID0gaW5saW5lQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5wYXJlbnQoKSk7Cisg
ICAgICAgICAgICBpbmxpbmVCb3hMb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxvZ2ljYWxU
b3AoKSArIHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gaW5saW5lQm94LT5iYXNlbGluZSgp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBWZXJ0aWNhbEFs
aWduOjpUb3A6Ci0gICAgICAgICAgICBpbmxpbmVCb3hMb2dpY2FsVG9wID0geyB9OworICAgICAg
ICAgICAgaW5saW5lQm94TG9naWNhbFRvcCA9IElubGluZUxheW91dFVuaXQgeyB9OwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6Qm90dG9tOgotICAgICAg
ICAgICAgaW5saW5lQm94TG9naWNhbFRvcCA9IGxvZ2ljYWxCb3R0b20oKSAtIGlubGluZUJveC5s
b2dpY2FsSGVpZ2h0KCk7CisgICAgICAgICAgICBpbmxpbmVCb3hMb2dpY2FsVG9wID0gY29udGVu
dExvZ2ljYWxCb3R0b20gLSBpbmxpbmVCb3gtPmxvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246Ok1pZGRsZTogeworICAgICAgICAg
ICAgYXV0byYgcGFyZW50TGF5b3V0Qm94ID0gbGF5b3V0Qm94LnBhcmVudCgpOworICAgICAgICAg
ICAgYXV0byYgcGFyZW50SW5saW5lQm94ID0gaW5saW5lQm94Rm9yTGF5b3V0Qm94KHBhcmVudExh
eW91dEJveCk7CisgICAgICAgICAgICBpbmxpbmVCb3hMb2dpY2FsVG9wID0gcGFyZW50SW5saW5l
Qm94LmxvZ2ljYWxUb3AoKSArIHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gKGlubGluZUJv
eC0+bG9naWNhbEhlaWdodCgpIC8gMiArIHBhcmVudExheW91dEJveC5zdHlsZSgpLmZvbnRNZXRy
aWNzKCkueEhlaWdodCgpIC8gMik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlubGluZUJveC5zZXRMb2dp
Y2FsVG9wKGlubGluZUJveExvZ2ljYWxUb3ApOwotICAgIH07CisgICAgICAgIGlubGluZUJveC0+
c2V0TG9naWNhbFRvcChpbmxpbmVCb3hMb2dpY2FsVG9wKTsKKyAgICB9CiAKLSAgICBhbGlnbm1l
bnRCYXNlbGluZSA9IGhhbGZMZWFkaW5nTWV0cmljcyhyb290U3R5bGUuZm9udE1ldHJpY3MoKSwg
bGluZUJveExvZ2ljYWxIZWlnaHQpLmFzY2VudDsKLSAgICBhZGp1c3RJbmxpbmVCb3hUb3AobV9y
b290SW5saW5lQm94LCBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZSk7Ci0gICAgZm9yIChhdXRvJiBp
bmxpbmVCb3hFbnRyeSA6IG1faW5saW5lQm94UmVjdE1hcCkgewotICAgICAgICBhdXRvJiBsYXlv
dXRCb3ggPSAqaW5saW5lQm94RW50cnkua2V5OwotICAgICAgICBhdXRvJiBpbmxpbmVCb3ggPSAq
aW5saW5lQm94RW50cnkudmFsdWU7Ci0gICAgICAgIGFkanVzdElubGluZUJveFRvcChpbmxpbmVC
b3gsIGxheW91dEJveC5zdHlsZSgpLnZlcnRpY2FsQWxpZ24oKSk7CisgICAgYXV0byBhZGp1c3RD
b250ZW50Qm90dG9tSWZOZWVkZWQgPSBbJl0geworICAgICAgICBpZiAoIW1fcm9vdElubGluZUJv
eC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8gY29sbGFwc2Vk
Q29udGVudExvZ2ljYWxUb3AgPSBjb250ZW50TG9naWNhbEJvdHRvbTsKKyAgICAgICAgYXV0byBj
b2xsYXBzZWRDb250ZW50TG9naWNhbEJvdHRvbSA9IElubGluZUxheW91dFVuaXQgeyB9OworICAg
ICAgICBmb3IgKGF1dG8mIGlubGluZUJveCA6IG1faW5saW5lQm94TGlzdCkgeworICAgICAgICAg
ICAgYXV0byB2ZXJ0aWNhbEFsaWduID0gaW5saW5lQm94LT5sYXlvdXRCb3goKS5zdHlsZSgpLnZl
cnRpY2FsQWxpZ24oKTsKKyAgICAgICAgICAgIGF1dG8gc3RyZXRjaGVzTGluZUJveCA9IHZlcnRp
Y2FsQWxpZ24gPT0gVmVydGljYWxBbGlnbjo6Qm90dG9tIHx8IHZlcnRpY2FsQWxpZ24gPT0gVmVy
dGljYWxBbGlnbjo6VG9wIHx8ICZpbmxpbmVCb3gtPmxheW91dEJveCgpLnBhcmVudCgpID09ICZt
X3Jvb3RJbmxpbmVCb3gubGF5b3V0Qm94KCk7CisgICAgICAgICAgICBpZiAoIXN0cmV0Y2hlc0xp
bmVCb3gpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoaW5saW5l
Qm94LT5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBj
b2xsYXBzZWRDb250ZW50TG9naWNhbFRvcCA9IHN0ZDo6bWluKGNvbGxhcHNlZENvbnRlbnRMb2dp
Y2FsVG9wLCBpbmxpbmVCb3gtPmxvZ2ljYWxUb3AoKSk7CisgICAgICAgICAgICBjb2xsYXBzZWRD
b250ZW50TG9naWNhbEJvdHRvbSA9IHN0ZDo6bWF4KGNvbGxhcHNlZENvbnRlbnRMb2dpY2FsQm90
dG9tLCBpbmxpbmVCb3gtPmxvZ2ljYWxCb3R0b20oKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGNvbGxhcHNlZENvbnRlbnRMb2dpY2FsVG9wIDw9IDApIHsKKyAgICAgICAgICAgIGNvbnRlbnRM
b2dpY2FsQm90dG9tID0gY29sbGFwc2VkQ29udGVudExvZ2ljYWxCb3R0b207CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY29udGVudExvZ2ljYWxCb3R0b20gPSBJbmxp
bmVMYXlvdXRVbml0IHsgfTsKKyAgICAgICAgZm9yIChhdXRvJiBpbmxpbmVCb3ggOiBtX2lubGlu
ZUJveExpc3QpIHsKKyAgICAgICAgICAgIGlubGluZUJveC0+c2V0TG9naWNhbFRvcChpbmxpbmVC
b3gtPmxvZ2ljYWxUb3AoKSAtIGNvbGxhcHNlZENvbnRlbnRMb2dpY2FsVG9wKTsKKyAgICAgICAg
ICAgIGNvbnRlbnRMb2dpY2FsQm90dG9tID0gc3RkOjptYXgoY29udGVudExvZ2ljYWxCb3R0b20s
IGlubGluZUJveC0+bG9naWNhbEJvdHRvbSgpKTsKKyAgICAgICAgfQorICAgIH07CisgICAgYWRq
dXN0Q29udGVudEJvdHRvbUlmTmVlZGVkKCk7CisgICAgLy8gQ29tcHV0ZSB0aGUgbGluZSBib3gg
aGVpZ2h0LiBJdCdzIGVpdGhlciB0aGUgbGluZS1oZWlnaHQgdmFsdWUgKG5lZ2F0aXZlIHZhbHVl
IG1lYW5zIGxpbmUgaGVpZ2h0IGl0IG5vdCBzZXQpIG9yCisgICAgLy8gbWF4aW11bSBvZiB0aGUg
cm9vdCBpbmxpbmUgYm94J3MgYm90dG9tIGFuZCB0aGUgdG9wIGFsaWduZWQgY29udGVudCBoZWln
aHQuCisgICAgaWYgKGlzTGluZVZpc3VhbGx5RW1wdHkgPT0gSXNMaW5lVmlzdWFsbHlFbXB0eTo6
Tm8pIHsKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBsaW5lU3BhY2luZyA9IHJvb3RTdHlsZS5m
b250TWV0cmljcygpLmxpbmVTcGFjaW5nKCk7CisgICAgICAgIGF1dG8gbGluZUJveExvZ2ljYWxI
ZWlnaHQgPSAhcm9vdFN0eWxlLmxpbmVIZWlnaHQoKS5pc05lZ2F0aXZlKCkgPyByb290U3R5bGUu
Y29tcHV0ZWRMaW5lSGVpZ2h0KCkgOiBzdGQ6Om1heChsaW5lU3BhY2luZywgY29udGVudExvZ2lj
YWxCb3R0b20pOworICAgICAgICBtX3JlY3Quc2V0SGVpZ2h0KGxpbmVCb3hMb2dpY2FsSGVpZ2h0
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmVCb3guaAppbmRleCA2MDk5MGE3MDc3MzY5OTJjMzU5YjA3MTRj
MjlhM2M4NTkwNWE2MTU5Li5hNWJkMzUwNDMwZDBlNjJmOGQ3N2E4MWM2ZjBiNjBiMTI3ZTU4MDFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVMaW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJveC5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRGlzcGxheUlubGlu
ZVJlY3QuaCIKICNpbmNsdWRlICJJbmxpbmVMaW5lQnVpbGRlci5oIgogI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CkBAIC00NCw4ICs0NSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTkxJTkUoSW5saW5lQm94KTsKICAgICBw
dWJsaWM6CiAgICAgICAgIGVudW0gY2xhc3MgSXNDb25zaWRlcmVkRW1wdHkgeyBZZXMsIE5vIH07
Ci0gICAgICAgIElubGluZUJveChjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiwgSW5saW5lTGF5
b3V0VW5pdCBzeW50aGV0aWNCYXNlbGluZSk7Ci0gICAgICAgIElubGluZUJveChjb25zdCBEaXNw
bGF5OjpJbmxpbmVSZWN0JiwgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZSwgSW5saW5lTGF5b3V0
VW5pdCBkZXNjZW50LCBJc0NvbnNpZGVyZWRFbXB0eSk7CisgICAgICAgIElubGluZUJveChjb25z
dCBCb3gmLCBjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiwgSW5saW5lTGF5b3V0VW5pdCBiYXNl
bGluZSwgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50LCBJc0NvbnNpZGVyZWRFbXB0eSk7CiAgICAg
ICAgIElubGluZUJveCgpID0gZGVmYXVsdDsKIAogICAgICAgICBjb25zdCBEaXNwbGF5OjpJbmxp
bmVSZWN0JiBsb2dpY2FsUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbFJlY3Q7IH0KQEAg
LTU4LDE5ICs1OCwyNCBAQCBwdWJsaWM6CiAgICAgICAgIElubGluZUxheW91dFVuaXQgYmFzZWxp
bmUoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VsaW5lOyB9CiAgICAgICAgIE9wdGlvbmFsPElubGlu
ZUxheW91dFVuaXQ+IGRlc2NlbnQoKSBjb25zdCB7IHJldHVybiBtX2Rlc2NlbnQ7IH0KIAotICAg
ICAgICB2b2lkIHNldExvZ2ljYWxUb3AoSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSB7IG1f
bG9naWNhbFJlY3Quc2V0VG9wKGxvZ2ljYWxUb3ApOyB9Ci0gICAgICAgIHZvaWQgc2V0TG9naWNh
bFdpZHRoKElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKSB7IG1fbG9naWNhbFJlY3Quc2V0
V2lkdGgobG9naWNhbFdpZHRoKTsgfQotCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNFbXB0eTsgfQogICAgICAgICB2b2lkIHNldElzTm9uRW1wdHkoKSB7IG1faXNF
bXB0eSA9IGZhbHNlOyB9Ci0gICAgICAgIGJvb2wgaXNBdG9taWMoKSBjb25zdCB7IHJldHVybiBt
X2lzQXRvbWljOyB9CisKKyAgICAgICAgY29uc3QgQm94JiBsYXlvdXRCb3goKSBjb25zdCB7IHJl
dHVybiAqbV9sYXlvdXRCb3g7IH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMaW5lQm94OworCisgICAgICAgIHZvaWQgc2V0TG9naWNhbFRvcChJbmxpbmVMYXlvdXRVbml0
IGxvZ2ljYWxUb3ApIHsgbV9sb2dpY2FsUmVjdC5zZXRUb3AobG9naWNhbFRvcCk7IH0KKyAgICAg
ICAgdm9pZCBzZXRMb2dpY2FsV2lkdGgoSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpIHsg
bV9sb2dpY2FsUmVjdC5zZXRXaWR0aChsb2dpY2FsV2lkdGgpOyB9CisgICAgICAgIHZvaWQgc2V0
TG9naWNhbEhlaWdodChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpIHsgbV9sb2dpY2Fs
UmVjdC5zZXRIZWlnaHQobG9naWNhbEhlaWdodCk7IH0KKyAgICAgICAgdm9pZCBzZXRCYXNlbGlu
ZShJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lKSB7IG1fYmFzZWxpbmUgPSBiYXNlbGluZTsgfQor
CisgICAgICAgIFdlYWtQdHI8Y29uc3QgQm94PiBtX2xheW91dEJveDsKICAgICAgICAgRGlzcGxh
eTo6SW5saW5lUmVjdCBtX2xvZ2ljYWxSZWN0OwogICAgICAgICBJbmxpbmVMYXlvdXRVbml0IG1f
YmFzZWxpbmU7CiAgICAgICAgIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IG1fZGVzY2VudDsK
ICAgICAgICAgYm9vbCBtX2lzRW1wdHkgeyB0cnVlIH07Ci0gICAgICAgIGJvb2wgbV9pc0F0b21p
YyB7IGZhbHNlIH07CiAgICAgfTsKIAogICAgIGVudW0gY2xhc3MgSXNMYXN0TGluZVdpdGhJbmxp
bmVDb250ZW50IHsgTm8sIFllcyB9OwpAQCAtODcsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgRGlzcGxheTo6SW5saW5lUmVjdCYgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3Jl
Y3Q7IH0KICAgICBjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiBzY3JvbGxhYmxlT3ZlcmZsb3co
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVPdmVyZmxvdzsgfQogCi0gICAgY29uc3QgSW5s
aW5lQm94JiBpbmxpbmVCb3hGb3JMYXlvdXRCb3goY29uc3QgQm94JikgY29uc3Q7CisgICAgY29u
c3QgSW5saW5lQm94JiBpbmxpbmVCb3hGb3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRCb3gp
IGNvbnN0IHsgcmV0dXJuICptX2lubGluZUJveFJlY3RNYXAuZ2V0KCZsYXlvdXRCb3gpOyB9CiAg
ICAgRGlzcGxheTo6SW5saW5lUmVjdCBpbmxpbmVSZWN0Rm9yVGV4dFJ1bihjb25zdCBMaW5lQnVp
bGRlcjo6UnVuJikgY29uc3Q7CiAKICAgICAvLyBfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXyBsaW5lIGJveCBsb2dpY2FsIHRvcApAQCAtMTA5LDcg
KzExNCwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjb25zdHJ1Y3RJbmxpbmVC
b3hlcyhjb25zdCBMaW5lQnVpbGRlcjo6UnVuTGlzdCYsIElzTGluZVZpc3VhbGx5RW1wdHkpOwot
ICAgIHZvaWQgYWxpZ25WZXJ0aWNhbGx5KElzTGluZVZpc3VhbGx5RW1wdHkpOworICAgIHZvaWQg
Y29tcHV0ZUlubGluZUJveGVzTG9naWNhbEhlaWdodCgpOworICAgIHZvaWQgYWxpZ25JbmxpbmVC
b3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUJveEhlaWdodChJc0xpbmVWaXN1YWxseUVtcHR5
KTsKKworICAgIElubGluZUJveCYgaW5saW5lQm94Rm9yTGF5b3V0Qm94KGNvbnN0IEJveCYgbGF5
b3V0Qm94KSB7IHJldHVybiAqbV9pbmxpbmVCb3hSZWN0TWFwLmdldCgmbGF5b3V0Qm94KTsgfQog
CiAgICAgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50TG9naWNhbFdpZHRoOyB9CiAKQEAgLTEyNSw3ICsxMzMsOCBAQCBwcml2YXRl
OgogICAgIElubGluZUJveCBtX3Jvb3RJbmxpbmVCb3g7CiAKICAgICBPcHRpb25hbDxJbmxpbmVM
YXlvdXRVbml0PiBtX2xpbmVBbGlnbm1lbnRPZmZzZXQ7Ci0gICAgSGFzaE1hcDxjb25zdCBCb3gq
LCBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lQm94Pj4gbV9pbmxpbmVCb3hSZWN0TWFwOworICAgIEhh
c2hNYXA8Y29uc3QgQm94KiwgSW5saW5lQm94Kj4gbV9pbmxpbmVCb3hSZWN0TWFwOworICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lQm94Pj4gbV9pbmxpbmVCb3hMaXN0OwogICAgIGNv
bnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0Owog
fTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGJjOWE0YmVhYWIxNDMxMzYzMDIzOTQ0MmI0YzA4YjkwNWZhNjJjMjcuLmEy
YzQyYjQ1Mjk0NDhkOTNiN2YzMzE5NmViOWJhNWI4M2ZhNmU3ZDggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAyMC0wOS0wMyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFtMRkNdW0lGQ10gRml4IG5lc3RlZCBpbmxpbmUgYm94IHNpemluZyBhbmQgcG9zaXRpb25p
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTc0
OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgICogZmFz
dC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC92ZXJ0aWNhbC1hbGlnbi1taWRkbGUtbmVzdGVkLWV4
cGVjdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC92ZXJ0
aWNhbC1hbGlnbi1taWRkbGUtbmVzdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9sYXlvdXRmb3Jt
YXR0aW5nY29udGV4dC92ZXJ0aWNhbC1hbGlnbi1taWRkbGUtc2ltcGxlLWV4cGVjdGVkLmh0bWw6
CisgICAgICAgICogZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC92ZXJ0aWNhbC1hbGlnbi1t
aWRkbGUtc2ltcGxlLmh0bWw6CisKIDIwMjAtMDktMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZWJhc2UgV2luZG93cyB0ZXN0IGV4cGVj
dGF0aW9ucyBhZnRlciByMjY2NDY2CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xheW91
dGZvcm1hdHRpbmdjb250ZXh0L3ZlcnRpY2FsLWFsaWduLW1pZGRsZS1uZXN0ZWQtZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvdmVydGljYWwt
YWxpZ24tbWlkZGxlLW5lc3RlZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxYTY5NzAwYmI4
MzFkMmQ2MzA3NjkzYWVmNTgzODFhNzRkOGY2ODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3ZlcnRpY2FsLWFsaWduLW1pZGRsZS1u
ZXN0ZWQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDcgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0g
d2Via2l0LXRlc3QtcnVubmVyIFsgaW50ZXJuYWw6TGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRFbmFi
bGVkPXRydWUgaW50ZXJuYWw6TGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJs
ZWQ9ZmFsc2UgXSAtLT4KKzxzdHlsZT4KK2RpdiB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3Jl
ZW47Cit9Cis8L3N0eWxlPgorPGRpdiBzdHlsZT0iaGVpZ2h0OiA0NHB4OyI+PC9kaXY+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3ZlcnRpY2Fs
LWFsaWduLW1pZGRsZS1uZXN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbGF5b3V0Zm9ybWF0
dGluZ2NvbnRleHQvdmVydGljYWwtYWxpZ24tbWlkZGxlLW5lc3RlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRjMTNlYjRhZjJlMWQ1NmUzODA4Yzg3ZWEyMmYwYTQ4ODI5MDZjOTMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3ZlcnRpY2FsLWFs
aWduLW1pZGRsZS1uZXN0ZWQuaHRtbApAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRtbD4g
PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBpbnRlcm5hbDpMYXlvdXRGb3JtYXR0aW5nQ29udGV4
dEVuYWJsZWQ9dHJ1ZSBpbnRlcm5hbDpMYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9u
RW5hYmxlZD1mYWxzZSBdIC0tPgorPHN0eWxlPgorLmNvbnRhaW5lciB7CisgIGJhY2tncm91bmQt
Y29sb3I6IGdyZWVuOworICBjb2xvcjogZ3JlZW47CisgIGZvbnQtc2l6ZTogNDBweDsKKyAgZm9u
dC1mYW1pbHk6IEFoZW07Cit9CisKK3NwYW4geworICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwor
fQorPC9zdHlsZT4KKworPGRpdiBjbGFzcz1jb250YWluZXI+CisgIFhYCisgIDxzcGFuPgorICAg
IFhYCisgIDwvc3Bhbj4KKzwvZGl2PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sYXlv
dXRmb3JtYXR0aW5nY29udGV4dC92ZXJ0aWNhbC1hbGlnbi1taWRkbGUtc2ltcGxlLWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3ZlcnRpY2Fs
LWFsaWduLW1pZGRsZS1zaW1wbGUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTU3ZDUyN2Yy
OTAxYWFkNzkyOWZkOTQ5NjBjOTY1M2NhOWNiYjMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC92ZXJ0aWNhbC1hbGlnbi1taWRkbGUt
c2ltcGxlLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw5IEBACis8IURPQ1RZUEUgaHRtbD48IS0t
IHdlYmtpdC10ZXN0LXJ1bm5lciBbIGludGVybmFsOkxheW91dEZvcm1hdHRpbmdDb250ZXh0RW5h
YmxlZD10cnVlIGludGVybmFsOkxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFi
bGVkPWZhbHNlIF0gLS0+Cis8c3R5bGU+CitkaXYgeworICAgIGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOworfQorPC9zdHlsZT4KKzxkaXYgc3R5bGU9IndpZHRoOiA4MHB4OyBoZWlnaHQ6IDIycHg7
Ij48L2Rpdj4KKzxkaXYgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDIwcHg7Ij48L2Rpdj4K
KzxkaXYgc3R5bGU9IndpZHRoOiAxNDBweDsgaGVpZ2h0OiA1MHB4OyI+PC9kaXY+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3ZlcnRpY2FsLWFs
aWduLW1pZGRsZS1zaW1wbGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbGF5b3V0Zm9ybWF0dGlu
Z2NvbnRleHQvdmVydGljYWwtYWxpZ24tbWlkZGxlLXNpbXBsZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3
NDIxYzk2YjllOTE0NmVkZTc0YWJjODE5NGQ5NmFjZThlMmJjNWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3ZlcnRpY2FsLWFsaWdu
LW1pZGRsZS1zaW1wbGUuaHRtbApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUgaHRtbD4gPCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBpbnRlcm5hbDpMYXlvdXRGb3JtYXR0aW5nQ29udGV4dEVu
YWJsZWQ9dHJ1ZSBpbnRlcm5hbDpMYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5h
YmxlZD1mYWxzZSBdIC0tPgorPHN0eWxlPgorLmNvbnRhaW5lciB7CisgIGZsb2F0OiBsZWZ0Owor
ICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgY29sb3I6IGdyZWVuOworICBmb250LXNpemU6
IDIwcHg7CisgIGZvbnQtZmFtaWx5OiBBaGVtOworfQorCisuZGl2aWRlciB7CisgIGNsZWFyOiBs
ZWZ0OworfQorCitzcGFuIHsKKyAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKK30KKzwvc3R5bGU+
CisKKzxkaXYgY2xhc3M9Y29udGFpbmVyPlhYPHNwYW4+WFg8L3NwYW4+PC9kaXY+Cis8ZGl2IGNs
YXNzPWRpdmlkZXI+PC9kaXY+Cis8ZGl2IGNsYXNzPWNvbnRhaW5lcj5YWDxzcGFuIHN0eWxlPSJm
b250LXNpemU6IDEwcHg7Ij5YWDwvc3Bhbj48L2Rpdj4KKzxkaXYgY2xhc3M9ZGl2aWRlcj48L2Rp
dj4KKzxkaXYgY2xhc3M9Y29udGFpbmVyPlhYPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogNTBweDsi
PlhYPC9zcGFuPjwvZGl2Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>