<?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>229654</bug_id>
          
          <creation_ts>2021-08-28 20:27:32 -0700</creation_ts>
          <short_desc>[LFC][IFC] Move &quot;line needs integral snapping&quot; computing to IFC from the integration layer</short_desc>
          <delta_ts>2021-08-29 19:20:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1788358</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-08-28 20:27:32 -0700</bug_when>
    <thetext>This is in preparation for merging integration runs with IFC display runs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788359</commentid>
    <comment_count>1</comment_count>
      <attachid>436729</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-08-28 20:30:55 -0700</bug_when>
    <thetext>Created attachment 436729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788400</commentid>
    <comment_count>2</comment_count>
      <attachid>436744</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-08-29 11:59:47 -0700</bug_when>
    <thetext>Created attachment 436744
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788403</commentid>
    <comment_count>3</comment_count>
      <attachid>436746</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-08-29 12:53:36 -0700</bug_when>
    <thetext>Created attachment 436746
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788424</commentid>
    <comment_count>4</comment_count>
      <attachid>436752</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-08-29 17:22:04 -0700</bug_when>
    <thetext>Created attachment 436752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788430</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-29 19:19:36 -0700</bug_when>
    <thetext>Committed r281750 (241092@main): &lt;https://commits.webkit.org/241092@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 436752.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788431</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-29 19:20:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/82507154&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436729</attachid>
            <date>2021-08-28 20:30:55 -0700</date>
            <delta_ts>2021-08-29 11:59:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229654-20210828203055.patch</filename>
            <type>text/plain</type>
            <size>19143</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzM3NmI0NjBjMjEzOWNl
NmNmNjc4MDA1NDk2YjY2OWFhZDdjZmQwYS4uZDExZGM1YWU2N2VhOGMzZDdkNDM3MmI5NTFhMjkx
NDUzMDdlYzlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTA4LTI4ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIE1vdmUgImxp
bmUgbmVlZHMgaW50ZWdyYWwgc25hcHBpbmciIGNvbXB1dGluZyB0byBJRkMgZnJvbSB0aGUgaW50
ZWdyYXRpb24gbGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyOTY1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIG1lcmdpbmcgdGhlIGludGVncmF0aW9u
IGxheWVyIHJ1bnMgd2l0aCBJRkMncyBkaXNwbGF5IHJ1bnMuCisgICAgICAgIFRoaXMgYWxzbyBz
YXZlIGEgbG9vcCBvdmVyIHRoZSBydW5zIHRvIGNvbXB1dGUgdGhlICJsaW5lIG5lZWRzIGludGVn
cmF0aW9uIHBvc2l0aW9uIiBiaXQuCisKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1bnNBbmRV
cGRhdGVHZW9tZXRyeUZvckxpbmVDb250ZW50KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lR2VvbWV0cnkuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGluZUdlb21ldHJ5OjpuZWVkc0ludGVncmFsUG9zaXRpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lR2VvbWV0cnk6OnNldE5lZWRzSW50ZWdyYWxQb3Np
dGlvbik6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5s
aW5lQ29udGVudEJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OklubGluZUNvbnRlbnRCdWlsZGVyOjpidWlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlM
aW5lUnVucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5s
aW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudEJ1aWxkZXI6OmNvbXB1dGVM
aW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWls
ZGVyLmg6CisKIDIwMjEtMDgtMjggIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtMRkNdW0lGQ10gQWRkIGluayBvdmVyZmxvdyB0byB0aGUgbGluZSBydW5zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcApp
bmRleCA0NjQ4YjgwZTc3NDAyYjNiOGQyNzdhZTk0NTY5MTZkYzM5NzQyN2I5Li5mZDNhYWNkNTQx
MzViNmFjZTU2MGM5YzRiNmNiY2E2NjBkODI2YjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKQEAgLTU5LDYgKzU5LDEwIEBA
IHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpidWlsZChjb25zdCBMaW5lQnVpbGRl
cjo6TGluZUNvbnRlbnQmIGxpbmVDb250CiB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRl
cjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29uc3QgTGluZUJ1
aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgTGluZUJveCYgbGluZUJveCwg
Y29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwgY29uc3Qgc2l6
ZV90IGxpbmVJbmRleCkKIHsKICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3Jt
YXR0aW5nU3RhdGUoKTsKKyAgICAvLyBMZWdhY3kgaW5saW5lIHRyZWUgaW50ZWdyYWwgcm91bmRz
IHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiBmb3IgY2VydGFpbiBjb250ZW50IChzZWUgTGVnYWN5SW5s
aW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24gYW5kIDo6YWRkVG9MaW5lKS4K
KyAgICAvLyBTZWUgc2hvdWxkQ2xlYXJEZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJh
c2VsaW5lIGluIExlZ2FjeUlubGluZUZsb3dCb3g6OmFkZFRvTGluZS4KKyAgICBhdXRvIGxpbmVO
ZWVkSW50ZWdyYWxQb3NpdGlvbiA9IHRydWU7CisgICAgYXV0byYgcm9vdFN0eWxlID0gcm9vdCgp
LnN0eWxlKCk7CiAgICAgLy8gQ3JlYXRlIHRoZSBpbmxpbmUgcnVucyBvbiB0aGUgY3VycmVudCBs
aW5lLiBUaGlzIGlzIG1vc3RseSB0ZXh0IGFuZCBhdG9taWMgaW5saW5lIHJ1bnMuCiAgICAgZm9y
IChhdXRvJiBsaW5lUnVuIDogbGluZUNvbnRlbnQucnVucykgewogICAgICAgICBhdXRvJiBsYXlv
dXRCb3ggPSBsaW5lUnVuLmxheW91dEJveCgpOwpAQCAtOTgsNiArMTAyLDggQEAgdm9pZCBJbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxp
bmVDb250ZW50KGNvbnMKICAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGlu
Z1N0YXRlLmJveEdlb21ldHJ5KGxheW91dEJveCk7CiAgICAgICAgICAgICBib3hHZW9tZXRyeS5z
ZXRMb2dpY2FsVG9wTGVmdCh0b0xheW91dFBvaW50KGxpbmVCcmVha0JveFJlY3QudG9wTGVmdCgp
KSk7CiAgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRDb250ZW50Qm94SGVpZ2h0KHRvTGF5b3V0
VW5pdChsaW5lQnJlYWtCb3hSZWN0LmhlaWdodCgpKSk7CisgICAgICAgICAgICBpZiAoIWZvcm1h
dHRpbmdTdGF0ZS5sYXlvdXRTdGF0ZSgpLmluU3RhbmRhcmRzTW9kZSgpKQorICAgICAgICAgICAg
ICAgIGxpbmVOZWVkSW50ZWdyYWxQb3NpdGlvbiA9IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBJbmxpbmVJdGVtOjpUeXBlOjpCb3g6IHsKQEAgLTEx
MSw2ICsxMTcsNyBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlUnVu
c0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29ucwogICAgICAgICAgICAgLy8gTm90
ZSB0aGF0IGlubGluZSBib3hlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGxpbmUgYW5kIHRoZWlyIHRv
cCBwb3NpdGlvbiBjYW4gYmUgbmVnYXRpdmUuCiAgICAgICAgICAgICAvLyBBdG9taWMgaW5saW5l
IGJveGVzIGFyZSBhbGwgc2V0LiBUaGVpciBtYXJnaW4vYm9yZGVyL2NvbnRlbnQgYm94IGdlb21l
dHJpZXMgYXJlIGFscmVhZHkgY29tcHV0ZWQuIFdlIGp1c3QgaGF2ZSB0byBwb3NpdGlvbiB0aGVt
IGhlcmUuCiAgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh0b0xheW91
dFBvaW50KGJvcmRlckJveExvZ2ljYWxUb3BMZWZ0KSk7CisgICAgICAgICAgICBsaW5lTmVlZElu
dGVncmFsUG9zaXRpb24gPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6SW5saW5lQm94U3RhcnQ6IHsKQEAgLTEzMCw2
ICsxMzcsMTQgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1bnNB
bmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnMKICAgICAgICAgICAgIGJveEdlb21l
dHJ5LnNldENvbnRlbnRCb3hIZWlnaHQoY29udGVudEJveEhlaWdodCk7CiAgICAgICAgICAgICBh
dXRvIGNvbnRlbnRCb3hXaWR0aCA9IGxvZ2ljYWxSZWN0LndpZHRoKCkgLSAoYm94R2VvbWV0cnku
aG9yaXpvbnRhbEJvcmRlcigpICsgYm94R2VvbWV0cnkuaG9yaXpvbnRhbFBhZGRpbmcoKS52YWx1
ZV9vcigwX2x1KSk7CiAgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRDb250ZW50Qm94V2lkdGgo
Y29udGVudEJveFdpZHRoKTsKKworICAgICAgICAgICAgaWYgKGxpbmVOZWVkSW50ZWdyYWxQb3Np
dGlvbikgeworICAgICAgICAgICAgICAgIGF1dG8mIGlubGluZUJveFN0eWxlID0gbGF5b3V0Qm94
LnN0eWxlKCk7CisgICAgICAgICAgICAgICAgYXV0byBzdHlsZVByZXZlbnRzSW50ZWdyYWxTbmFw
cGluZyA9IHJvb3RTdHlsZS5saW5lSGVpZ2h0KCkgIT0gaW5saW5lQm94U3R5bGUubGluZUhlaWdo
dCgpIHx8IGlubGluZUJveFN0eWxlLnZlcnRpY2FsQWxpZ24oKSAhPSBWZXJ0aWNhbEFsaWduOjpC
YXNlbGluZTsKKyAgICAgICAgICAgICAgICBhdXRvIGZvbnRQcmV2ZW50c0ludGVncmFsU25hcHBp
bmcgPSByb290U3R5bGUuZm9udENhc2NhZGUoKS5mb250TWV0cmljcygpLmhhc0lkZW50aWNhbEFz
Y2VudERlc2NlbnRBbmRMaW5lR2FwKGlubGluZUJveFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1l
dHJpY3MoKSk7CisgICAgICAgICAgICAgICAgaWYgKHN0eWxlUHJldmVudHNJbnRlZ3JhbFNuYXBw
aW5nIHx8IGZvbnRQcmV2ZW50c0ludGVncmFsU25hcHBpbmcpCisgICAgICAgICAgICAgICAgICAg
IGxpbmVOZWVkSW50ZWdyYWxQb3NpdGlvbiA9IGZhbHNlOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTEzNyw2ICsxNTIs
OCBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVwZGF0
ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29ucwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9CisgICAgLy8gRklYTUU6IFRoaXMgaXMgdGVtcG9yYXJ5LiBSZW1vdmUgd2hlbiBs
ZWdhY3kgbGluZSBsYXlvdXQncyBpbnRlZ3JhbCBzbmFwcGluZyBpcyByZW1vdmVkLgorICAgIGZv
cm1hdHRpbmdTdGF0ZS5saW5lcygpLmxhc3QoKS5zZXROZWVkc0ludGVncmFsUG9zaXRpb24obGlu
ZU5lZWRJbnRlZ3JhbFBvc2l0aW9uKTsKIH0KIAogdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXI6OmNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVTcGFubmluZ0lubGluZUJv
eGVzKGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IElubGluZUxheW91dFBvaW50JiBsaW5l
Qm94TG9naWNhbFRvcExlZnQsIGNvbnN0IHNpemVfdCBsaW5lSW5kZXgsIHNpemVfdCBsaW5lU3Bh
bm5pbmdJbmxpbmVCb3hJbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVHZW9tZXRyeS5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUdlb21ldHJ5
LmgKaW5kZXggZTYyMzc0ZDIxMWFhNmY1ZWJlZTY2MGQ4NTU0ZTI2ZTNjM2Q2ZTlkMy4uMzU1ODVi
Y2Q0MWYwYzM0NGUyYjk4ZGZjZjY5NDVkNTI3NDM2N2IzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUdlb21ldHJ5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUdlb21ldHJ5LmgKQEAgLTUxLDcgKzUxLDEwIEBAIHB1YmxpYzoKICAgICBJbmxp
bmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVu
dExvZ2ljYWxMZWZ0OyB9CiAgICAgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbFdpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50TG9naWNhbFdpZHRoOyB9CiAKKyAgICBib29sIG5l
ZWRzSW50ZWdyYWxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNJbnRlZ3JhbFBvc2l0
aW9uOyB9CisKICAgICB2b2lkIG1vdmVWZXJ0aWNhbGx5KElubGluZUxheW91dFVuaXQgb2Zmc2V0
KSB7IG1fbGluZUJveExvZ2ljYWxSZWN0Lm1vdmVWZXJ0aWNhbGx5KG9mZnNldCk7IH0KKyAgICB2
b2lkIHNldE5lZWRzSW50ZWdyYWxQb3NpdGlvbihib29sIG5lZWRzSW50ZWdyYWxQb3NpdGlvbikg
eyBtX25lZWRzSW50ZWdyYWxQb3NpdGlvbiA9IG5lZWRzSW50ZWdyYWxQb3NpdGlvbjsgfQogCiBw
cml2YXRlOgogICAgIC8vIFRoaXMgaXMgbGluZSBib3ggZ2VvbWV0cnkgKHNlZSBodHRwczovL3d3
dy53My5vcmcvVFIvY3NzLWlubGluZS0zLyNsaW5lLWJveCkuCkBAIC02Myw2ICs2Niw5IEBAIHBy
aXZhdGU6CiAgICAgSW5saW5lTGF5b3V0VW5pdCBtX2FsaWdtZW50QmFzZWxpbmUgeyAwIH07CiAg
ICAgSW5saW5lTGF5b3V0VW5pdCBtX2NvbnRlbnRMb2dpY2FsTGVmdCB7IDAgfTsKICAgICBJbmxp
bmVMYXlvdXRVbml0IG1fY29udGVudExvZ2ljYWxXaWR0aCB7IDAgfTsKKyAgICAvLyBGSVhNRTog
VGhpcyBpcyBqdXN0IG1hdGNoaW5nIGxlZ2FjeSBsaW5lIGxheW91dCBpbnRlZ3JhbCBzbmFwcGlu
Zy4KKyAgICAvLyBTZWUgc2hvdWxkQ2xlYXJEZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFu
ZEJhc2VsaW5lIGluIExlZ2FjeUlubGluZUZsb3dCb3g6OmFkZFRvTGluZS4KKyAgICBib29sIG1f
bmVlZHNJbnRlZ3JhbFBvc2l0aW9uIHsgdHJ1ZSB9OwogfTsKIAogaW5saW5lIExpbmVHZW9tZXRy
eTo6TGluZUdlb21ldHJ5KGNvbnN0IElubGluZVJlY3QmIGxpbmVCb3hMb2dpY2FsUmVjdCwgRW5j
bG9zaW5nVG9wQW5kQm90dG9tIGVuY2xvc2luZ1RvcEFuZEJvdHRvbSwgSW5saW5lTGF5b3V0VW5p
dCBhbGlnbWVudEJhc2VsaW5lLCBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsTGVmdCwg
SW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbFdpZHRoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVu
dEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3BwCmluZGV4IDkwYWRiNmFmNTU0YTIyYWMw
Y2JhNWU3ZGM2OGVlMTEzNGMxODIzOGUuLjY3MTMxMjE1ZTE2NTI0Y2IyNzk3YTIwMDViNjZiNGI2
MzkzMmY5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVp
bGRlci5jcHAKQEAgLTQ0LDEyICs0NCw2IEBAIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7
CiAKICNkZWZpbmUgUFJPQ0VTU19CSURJX0NPTlRFTlQgMAogCi1zdHJ1Y3QgTGluZUxldmVsVmlz
dWFsQWRqdXN0bWVudHNGb3JSdW5zIHsKLSAgICBib29sIG5lZWRzSW50ZWdyYWxQb3NpdGlvbiB7
IGZhbHNlIH07Ci0gICAgLy8gSXQncyBvbmx5ICd0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcycgZm9y
IG5vdy4KLSAgICBib29sIG5lZWRzVHJhaWxpbmdDb250ZW50UmVwbGFjZW1lbnQgeyBmYWxzZSB9
OwotfTsKLQogaW5saW5lIExheW91dDo6TGluZUdlb21ldHJ5OjpFbmNsb3NpbmdUb3BBbmRCb3R0
b20gb3BlcmF0b3IrKGNvbnN0IExheW91dDo6TGluZUdlb21ldHJ5OjpFbmNsb3NpbmdUb3BBbmRC
b3R0b20gZW5jbG9zaW5nVG9wQW5kQm90dG9tLCBmbG9hdCBvZmZzZXQpCiB7CiAgICAgcmV0dXJu
IHsgZW5jbG9zaW5nVG9wQW5kQm90dG9tLnRvcCArIG9mZnNldCwgZW5jbG9zaW5nVG9wQW5kQm90
dG9tLmJvdHRvbSArIG9mZnNldCB9OwpAQCAtMTY0LDc1ICsxNTgsMTEgQEAgSW5saW5lQ29udGVu
dEJ1aWxkZXI6OklubGluZUNvbnRlbnRCdWlsZGVyKGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUm
IGxheW91dFN0YXQKIAogdm9pZCBJbmxpbmVDb250ZW50QnVpbGRlcjo6YnVpbGQoY29uc3QgTGF5
b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIGlubGluZUZvcm1hdHRpbmdTdGF0ZSwgSW5saW5l
Q29udGVudCYgaW5saW5lQ29udGVudCkgY29uc3QKIHsKLSAgICBhdXRvIGxpbmVMZXZlbFZpc3Vh
bEFkanVzdG1lbnRzRm9yUnVucyA9IGNvbXB1dGVMaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0Zv
clJ1bnMoaW5saW5lRm9ybWF0dGluZ1N0YXRlLmxpbmVzKCksIGlubGluZUZvcm1hdHRpbmdTdGF0
ZS5saW5lUnVucygpKTsKLSAgICBjcmVhdGVEaXNwbGF5TGluZVJ1bnMoaW5saW5lRm9ybWF0dGlu
Z1N0YXRlLmxpbmVzKCksIGlubGluZUZvcm1hdHRpbmdTdGF0ZS5saW5lUnVucygpLCBpbmxpbmVD
b250ZW50LCBsaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnMpOwotICAgIGNyZWF0ZURp
c3BsYXlMaW5lcyhpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGluZXMoKSwgaW5saW5lQ29udGVudCwg
bGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zKTsKKyAgICBjcmVhdGVEaXNwbGF5TGlu
ZVJ1bnMoaW5saW5lRm9ybWF0dGluZ1N0YXRlLmxpbmVzKCksIGlubGluZUZvcm1hdHRpbmdTdGF0
ZS5saW5lUnVucygpLCBpbmxpbmVDb250ZW50KTsKKyAgICBjcmVhdGVEaXNwbGF5TGluZXMoaW5s
aW5lRm9ybWF0dGluZ1N0YXRlLmxpbmVzKCksIGlubGluZUNvbnRlbnQpOwogfQogCi1JbmxpbmVD
b250ZW50QnVpbGRlcjo6TGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zTGlzdCBJbmxp
bmVDb250ZW50QnVpbGRlcjo6Y29tcHV0ZUxpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVu
cyhjb25zdCBMYXlvdXQ6OklubGluZUxpbmVzJiBsaW5lcywgY29uc3QgTGF5b3V0OjpJbmxpbmVM
aW5lUnVucyYgbGluZVJ1bnMpIGNvbnN0Ci17Ci0gICAgYXV0byBsaW5lTGV2ZWxWaXN1YWxBZGp1
c3RtZW50c0ZvclJ1bnMgPSBMaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnNMaXN0IHsg
bGluZXMuc2l6ZSgpIH07Ci0gICAgYXV0byYgcm9vdFN0eWxlID0gbV9sYXlvdXRTdGF0ZS5yb290
KCkuc3R5bGUoKTsKLQotICAgIGF1dG8gaW5saW5lTGV2ZWxCb3hQcmV2ZW50c0ludGVncmFsUG9z
aXRpb24gPSBzdGQ6Om9wdGlvbmFsPGJvb2w+IHsgfTsKLSAgICBzaXplX3QgbGluZUluZGV4VG9D
aGVjayA9IDA7Ci0gICAgZm9yIChhdXRvJiBsaW5lUnVuIDogbGluZVJ1bnMpIHsKLSAgICAgICAg
YXV0byBsaW5lSW5kZXggPSBsaW5lUnVuLmxpbmVJbmRleCgpOwotICAgICAgICBhdXRvJiBsYXlv
dXRCb3ggPSBsaW5lUnVuLmxheW91dEJveCgpOwotCi0gICAgICAgIGlmIChsaW5lSW5kZXhUb0No
ZWNrICE9IGxpbmVJbmRleCkgewotICAgICAgICAgICAgYXV0byBsaW5lTmVlZHNJbnRlZ3JhbFBv
c2l0aW9uaW5nID0gWyZdIHsKLSAgICAgICAgICAgICAgICBpZiAoIWlubGluZUxldmVsQm94UHJl
dmVudHNJbnRlZ3JhbFBvc2l0aW9uLmhhc192YWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IC8vIFRoaXMgbGluZSBkb2VzIG5vdCBoYXZlIGFueSBub24tcm9vdCBpbmxpbmUgYm94ZXMuCi0g
ICAgICAgICAgICAgICAgICAgIC8vIExpbmVzIGxpa2UgdGhpcyB3aXRoIHJvb3QgaW5saW5lIGJv
eCBvbmx5IGZvcmNlIGludGVncmFsIHBvc2l0aW9uaW5nLgotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEq
aW5saW5lTGV2ZWxCb3hQcmV2ZW50c0ludGVncmFsUG9zaXRpb247Ci0gICAgICAgICAgICB9Owot
ICAgICAgICAgICAgbGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zW2xpbmVJbmRleFRv
Q2hlY2tdLm5lZWRzSW50ZWdyYWxQb3NpdGlvbiA9IGxpbmVOZWVkc0ludGVncmFsUG9zaXRpb25p
bmcoKTsKLSAgICAgICAgICAgIGxpbmVJbmRleFRvQ2hlY2sgPSBsaW5lSW5kZXg7Ci0gICAgICAg
ICAgICBpbmxpbmVMZXZlbEJveFByZXZlbnRzSW50ZWdyYWxQb3NpdGlvbiA9IHsgfTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmICghbGluZVJ1bi5pc05vblJvb3RJbmxpbmVMZXZlbEJveCgpIHx8
IChpbmxpbmVMZXZlbEJveFByZXZlbnRzSW50ZWdyYWxQb3NpdGlvbi5oYXNfdmFsdWUoKSAmJiAq
aW5saW5lTGV2ZWxCb3hQcmV2ZW50c0ludGVncmFsUG9zaXRpb24pKQotICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgYXV0byBpbmxpbmVMZXZlbEJveFByZXZlbnRzTGVnYWN5SW50ZWdy
YWxWZXJ0aWNhbFBvc2l0aW9uID0gWyZdIHsKLSAgICAgICAgICAgIEFTU0VSVChsaW5lUnVuLmlz
Tm9uUm9vdElubGluZUxldmVsQm94KCkpOwotICAgICAgICAgICAgLy8gTGVnYWN5IGlubGluZSB0
cmVlIGludGVncmFsIHJvdW5kcyB0aGUgdmVydGljYWwgcG9zaXRpb24gZm9yIGNlcnRhaW4gY29u
dGVudCAoc2VlIExlZ2FjeUlubGluZUZsb3dCb3g6OnBsYWNlQm94ZXNJbkJsb2NrRGlyZWN0aW9u
IGFuZCA6OmFkZFRvTGluZSkuCi0gICAgICAgICAgICAvLyBTZWUgc2hvdWxkQ2xlYXJEZXNjZW5k
YW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJhc2VsaW5lIGluIExlZ2FjeUlubGluZUZsb3dCb3g6
OmFkZFRvTGluZS4KLSAgICAgICAgICAgIGF1dG8gY29udGVudFByZXZlbnRzSW50ZWdyYWxTbmFw
cGluZyA9IGxpbmVSdW4uaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpIHx8IChsaW5lUnVuLmlzTGlu
ZUJyZWFrQm94KCkgJiYgIW1fbGF5b3V0U3RhdGUuaW5TdGFuZGFyZHNNb2RlKCkpOwotICAgICAg
ICAgICAgaWYgKGNvbnRlbnRQcmV2ZW50c0ludGVncmFsU25hcHBpbmcpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICAgIGF1dG8mIGlubGluZUxldmVsQm94U3R5bGUg
PSBsYXlvdXRCb3guc3R5bGUoKTsKLSAgICAgICAgICAgIGF1dG8gc3R5bGVQcmV2ZW50c0ludGVn
cmFsU25hcHBpbmcgPSByb290U3R5bGUubGluZUhlaWdodCgpICE9IGlubGluZUxldmVsQm94U3R5
bGUubGluZUhlaWdodCgpIHx8IGlubGluZUxldmVsQm94U3R5bGUudmVydGljYWxBbGlnbigpICE9
IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOwotICAgICAgICAgICAgaWYgKHN0eWxlUHJldmVudHNJ
bnRlZ3JhbFNuYXBwaW5nKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAg
ICAgICBhdXRvJiByb290Rm9udE1ldHJpY3MgPSByb290U3R5bGUuZm9udENhc2NhZGUoKS5mb250
TWV0cmljcygpOwotICAgICAgICAgICAgYXV0byYgaW5saW5lTGV2ZWxCb3hGb250TWV0cmljcyA9
IGlubGluZUxldmVsQm94U3R5bGUuZm9udENhc2NhZGUoKS5mb250TWV0cmljcygpOwotICAgICAg
ICAgICAgYXV0byBmb250UHJldmVudHNJbnRlZ3JhbFNuYXBwaW5nID0gIXJvb3RGb250TWV0cmlj
cy5oYXNJZGVudGljYWxBc2NlbnREZXNjZW50QW5kTGluZUdhcChpbmxpbmVMZXZlbEJveEZvbnRN
ZXRyaWNzKTsKLSAgICAgICAgICAgIHJldHVybiBmb250UHJldmVudHNJbnRlZ3JhbFNuYXBwaW5n
OwotICAgICAgICB9OwotICAgICAgICBpbmxpbmVMZXZlbEJveFByZXZlbnRzSW50ZWdyYWxQb3Np
dGlvbiA9IGlubGluZUxldmVsQm94UHJldmVudHNMZWdhY3lJbnRlZ3JhbFZlcnRpY2FsUG9zaXRp
b24oKTsKLSAgICB9Ci0gICAgbGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zW2xpbmVJ
bmRleFRvQ2hlY2tdLm5lZWRzSW50ZWdyYWxQb3NpdGlvbiA9ICFpbmxpbmVMZXZlbEJveFByZXZl
bnRzSW50ZWdyYWxQb3NpdGlvbi5oYXNfdmFsdWUoKSB8fCAhKmlubGluZUxldmVsQm94UHJldmVu
dHNJbnRlZ3JhbFBvc2l0aW9uOwotCi0gICAgYXV0byBzaG91bGRDaGVja0hvcml6b250YWxPdmVy
Zmxvd0ZvckNvbnRlbnRSZXBsYWNlbWVudCA9IHJvb3RTdHlsZS5vdmVyZmxvd1goKSA9PSBPdmVy
Zmxvdzo6SGlkZGVuICYmIHJvb3RTdHlsZS50ZXh0T3ZlcmZsb3coKSAhPSBUZXh0T3ZlcmZsb3c6
OkNsaXA7Ci0gICAgaWYgKCFzaG91bGRDaGVja0hvcml6b250YWxPdmVyZmxvd0ZvckNvbnRlbnRS
ZXBsYWNlbWVudCkKLSAgICAgICAgcmV0dXJuIGxpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9y
UnVuczsKLQotICAgIGZvciAoc2l6ZV90IGxpbmVJbmRleCA9IDA7IGxpbmVJbmRleCA8IGxpbmVz
LnNpemUoKTsgKytsaW5lSW5kZXgpIHsKLSAgICAgICAgYXV0byYgbGluZSA9IGxpbmVzW2xpbmVJ
bmRleF07Ci0gICAgICAgIGF1dG8gbGluZUJveExvZ2ljYWxXaWR0aCA9IGxpbmUubGluZUJveExv
Z2ljYWxSZWN0KCkud2lkdGgoKTsKLSAgICAgICAgYXV0byBvdmVyZmxvd1dpZHRoID0gbGluZU92
ZXJmbG93V2lkdGgobV9ibG9ja0Zsb3csIGxpbmVCb3hMb2dpY2FsV2lkdGgsIGxpbmUuY29udGVu
dExvZ2ljYWxXaWR0aCgpKTsKLSAgICAgICAgbGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNGb3JS
dW5zW2xpbmVJbmRleF0ubmVlZHNUcmFpbGluZ0NvbnRlbnRSZXBsYWNlbWVudCA9IG92ZXJmbG93
V2lkdGggPiBsaW5lQm94TG9naWNhbFdpZHRoOwotICAgIH0KLSAgICByZXR1cm4gbGluZUxldmVs
VmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zOwotfQotCi12b2lkIElubGluZUNvbnRlbnRCdWlsZGVy
OjpjcmVhdGVEaXNwbGF5TGluZVJ1bnMoY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lcyYgbGluZXMs
IGNvbnN0IExheW91dDo6SW5saW5lTGluZVJ1bnMmIGxpbmVSdW5zLCBJbmxpbmVDb250ZW50JiBp
bmxpbmVDb250ZW50LCBjb25zdCBMaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnNMaXN0
JiBsaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnMpIGNvbnN0Cit2b2lkIElubGluZUNv
bnRlbnRCdWlsZGVyOjpjcmVhdGVEaXNwbGF5TGluZVJ1bnMoY29uc3QgTGF5b3V0OjpJbmxpbmVM
aW5lcyYgbGluZXMsIGNvbnN0IExheW91dDo6SW5saW5lTGluZVJ1bnMmIGxpbmVSdW5zLCBJbmxp
bmVDb250ZW50JiBpbmxpbmVDb250ZW50KSBjb25zdAogewogICAgIGlmIChsaW5lUnVucy5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI2MSw3ICsxOTEsNyBAQCB2b2lkIElubGluZUNv
bnRlbnRCdWlsZGVyOjpjcmVhdGVEaXNwbGF5TGluZVJ1bnMoY29uc3QgTGF5b3V0OjpJbmxpbmVM
aW5lcyYgbGluZQogICAgICAgICBhdXRvIGlua092ZXJmbG93ID0gRmxvYXRSZWN0IHsgbGluZVJ1
bi5pbmtPdmVyZmxvdygpIH07CiAgICAgICAgIGF1dG8mIGdlb21ldHJ5ID0gbV9sYXlvdXRTdGF0
ZS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwogICAgICAgICBydW5SZWN0LnNldFNpemUoeyBn
ZW9tZXRyeS5ib3JkZXJCb3hXaWR0aCgpLCBnZW9tZXRyeS5ib3JkZXJCb3hIZWlnaHQoKSB9KTsK
LSAgICAgICAgaWYgKGxpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVuc1tsaW5lSW5kZXhd
Lm5lZWRzSW50ZWdyYWxQb3NpdGlvbikgeworICAgICAgICBpZiAobGluZXNbbGluZUluZGV4XS5u
ZWVkc0ludGVncmFsUG9zaXRpb24oKSkgewogICAgICAgICAgICAgcnVuUmVjdC5zZXRZKHJvdW5k
VG9JbnQocnVuUmVjdC55KCkpKTsKICAgICAgICAgICAgIGlua092ZXJmbG93LnNldFkocm91bmRU
b0ludChpbmtPdmVyZmxvdy55KCkpKTsKICAgICAgICAgfQpAQCAtMjg2LDEwICsyMTYsOSBAQCB2
b2lkIElubGluZUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVEaXNwbGF5TGluZVJ1bnMoY29uc3QgTGF5
b3V0OjpJbmxpbmVMaW5lcyYgbGluZQogICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGFydE9mZnNl
dCA8IGVuZE9mZnNldCk7CiAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGxpbmVSdW4ubGF5b3V0
Qm94KCk7CiAgICAgICAgIGF1dG8gbGluZUluZGV4ID0gbGluZVJ1bi5saW5lSW5kZXgoKTsKLSAg
ICAgICAgYXV0byYgbGluZUJveExvZ2ljYWxSZWN0ID0gbGluZXNbbGluZUluZGV4XS5saW5lQm94
TG9naWNhbFJlY3QoKTsKICAgICAgICAgYXV0byBydW5SZWN0ID0gRmxvYXRSZWN0IHsgbGluZVJ1
bi5sb2dpY2FsUmVjdCgpIH07CiAgICAgICAgIGF1dG8gaW5rT3ZlcmZsb3cgPSBGbG9hdFJlY3Qg
eyBsaW5lUnVuLmlua092ZXJmbG93KCkgfTsKLSAgICAgICAgaWYgKGxpbmVMZXZlbFZpc3VhbEFk
anVzdG1lbnRzRm9yUnVuc1tsaW5lSW5kZXhdLm5lZWRzSW50ZWdyYWxQb3NpdGlvbikgeworICAg
ICAgICBpZiAobGluZXNbbGluZUluZGV4XS5uZWVkc0ludGVncmFsUG9zaXRpb24oKSkgewogICAg
ICAgICAgICAgcnVuUmVjdC5zZXRZKHJvdW5kVG9JbnQocnVuUmVjdC55KCkpKTsKICAgICAgICAg
ICAgIGlua092ZXJmbG93LnNldFkocm91bmRUb0ludChpbmtPdmVyZmxvdy55KCkpKTsKICAgICAg
ICAgfQpAQCAtMzAwLDIzICsyMjksNiBAQCB2b2lkIElubGluZUNvbnRlbnRCdWlsZGVyOjpjcmVh
dGVEaXNwbGF5TGluZVJ1bnMoY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lcyYgbGluZQogICAgICAg
ICAgICAgYXV0byBvcmlnaW5hbENvbnRlbnQgPSB0ZXh0LT5jb250ZW50KCkuc3Vic3RyaW5nKHRl
eHQtPnN0YXJ0KCksIHRleHQtPmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmICh0ZXh0LT5uZWVk
c0h5cGhlbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKG9yaWdpbmFsQ29u
dGVudCwgc3R5bGUuaHlwaGVuU3RyaW5nKCkpOwotICAgICAgICAgICAgaWYgKGxpbmVMZXZlbFZp
c3VhbEFkanVzdG1lbnRzRm9yUnVuc1tsaW5lSW5kZXhdLm5lZWRzVHJhaWxpbmdDb250ZW50UmVw
bGFjZW1lbnQpIHsKLSAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHkgaXQncyBlbGxpcHNpcyBy
ZXBsYWNlbWVudCBvbmx5LCBidXQgYWRkaW5nIHN1cHBvcnQgZm9yICJ0ZXh0LW92ZXJmbG93OiBz
dHJpbmciIHNob3VsZCBiZSByZWxhdGl2ZWx5IHNpbXBsZS4KLSAgICAgICAgICAgICAgICBpZiAo
aGFzQWRqdXN0ZWRUcmFpbGluZ0xpbmVMaXN0W2xpbmVJbmRleF0pIHsKLSAgICAgICAgICAgICAg
ICAgICAgLy8gVGhpcyBsaW5lIGFscmVhZHkgaGFzIGFkanVzdGVkIHRyYWlsaW5nLiBBbnkgcnVu
cyBhZnRlciB0aGUgZWxsaXBzaXMgc2hvdWxkIHJlbmRlciBibGFuay4KLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGF1dG8gcnVuTG9naWNhbFJlY3QgPSBsaW5lUnVuLmxvZ2ljYWxSZWN0KCk7Ci0gICAg
ICAgICAgICAgICAgYXV0byBlbGxpcHNpc1dpZHRoID0gc3R5bGUuZm9udENhc2NhZGUoKS53aWR0
aChXZWJDb3JlOjpUZXh0UnVuIHsgJmhvcml6b250YWxFbGxpcHNpcyB9KTsKLSAgICAgICAgICAg
ICAgICBpZiAocnVuTG9naWNhbFJlY3QucmlnaHQoKSArIGVsbGlwc2lzV2lkdGggPiBsaW5lQm94
TG9naWNhbFJlY3QucmlnaHQoKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGUgbmV4dCBy
dW4gd2l0aCBlbGxpcHNpcyB3b3VsZCBzdXJlbHkgb3ZlcmZsb3cuIFNvIGxldCdzIGp1c3QgYWRk
IGl0IHRvIHRoaXMgcnVuIGV2ZW4gaWYKLSAgICAgICAgICAgICAgICAgICAgLy8gaXQgbWFrZXMg
dGhlIHJ1biB3aWRlciB0aGFuIGl0IG9yaWdpbmFsbHkgd2FzLgotICAgICAgICAgICAgICAgICAg
ICBoYXNBZGp1c3RlZFRyYWlsaW5nTGluZUxpc3RbbGluZUluZGV4XSA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgIGZsb2F0IHJlc3VsdFdpZHRoID0gMDsKLSAgICAgICAgICAgICAgICAgICAg
YXV0byBtYXhXaWR0aCA9IGxpbmVCb3hMb2dpY2FsUmVjdC53aWR0aCgpIC0gcnVuTG9naWNhbFJl
Y3QubGVmdCgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nVHJ1bmNhdG9yOjpy
aWdodFRydW5jYXRlKG9yaWdpbmFsQ29udGVudCwgbWF4V2lkdGgsIHN0eWxlLmZvbnRDYXNjYWRl
KCksIHJlc3VsdFdpZHRoLCB0cnVlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIH07CiAKQEAgLTMzNiw3ICsy
NDgsNyBAQCB2b2lkIElubGluZUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVEaXNwbGF5TGluZVJ1bnMo
Y29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lcyYgbGluZQogICAgIH0KIH0KIAotdm9pZCBJbmxpbmVD
b250ZW50QnVpbGRlcjo6Y3JlYXRlRGlzcGxheUxpbmVzKGNvbnN0IExheW91dDo6SW5saW5lTGlu
ZXMmIGxpbmVzLCBJbmxpbmVDb250ZW50JiBpbmxpbmVDb250ZW50LCBjb25zdCBMaW5lTGV2ZWxW
aXN1YWxBZGp1c3RtZW50c0ZvclJ1bnNMaXN0JiBsaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0Zv
clJ1bnMpIGNvbnN0Cit2b2lkIElubGluZUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVEaXNwbGF5TGlu
ZXMoY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lcyYgbGluZXMsIElubGluZUNvbnRlbnQmIGlubGlu
ZUNvbnRlbnQpIGNvbnN0CiB7CiAgICAgYXV0byYgcnVucyA9IGlubGluZUNvbnRlbnQucnVuczsK
ICAgICBhdXRvJiBub25Sb290SW5saW5lQm94ZXMgPSBpbmxpbmVDb250ZW50Lm5vblJvb3RJbmxp
bmVCb3hlczsKQEAgLTM4MSw3ICsyOTMsNyBAQCB2b2lkIElubGluZUNvbnRlbnRCdWlsZGVyOjpj
cmVhdGVEaXNwbGF5TGluZXMoY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lcyYgbGluZXMsCiAgICAg
ICAgIGF1dG8gYWRqdXN0ZWRMaW5lQm94UmVjdCA9IEZsb2F0UmVjdCB7IGxpbmVCb3hMb2dpY2Fs
UmVjdCB9OwogICAgICAgICAvLyBGaW5hbCBlbmNsb3NpbmcgdG9wIGFuZCBib3R0b20gdmFsdWVz
IGFyZSBpbiB0aGUgc2FtZSBjb29yZGluYXRlIHNwYWNlIGFzIHRoZSBsaW5lIGl0c2VsZi4KICAg
ICAgICAgYXV0byBlbmNsb3NpbmdUb3BBbmRCb3R0b20gPSBsaW5lLmVuY2xvc2luZ1RvcEFuZEJv
dHRvbSgpICsgbGluZUJveExvZ2ljYWxSZWN0LnRvcCgpOwotICAgICAgICBpZiAobGluZUxldmVs
VmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zW2xpbmVJbmRleF0ubmVlZHNJbnRlZ3JhbFBvc2l0aW9u
KSB7CisgICAgICAgIGlmIChsaW5lLm5lZWRzSW50ZWdyYWxQb3NpdGlvbigpKSB7CiAgICAgICAg
ICAgICBhZGp1c3RlZExpbmVCb3hSZWN0LnNldFkocm91bmRUb0ludChhZGp1c3RlZExpbmVCb3hS
ZWN0LnkoKSkpOwogICAgICAgICAgICAgZW5jbG9zaW5nVG9wQW5kQm90dG9tLnRvcCA9IHJvdW5k
VG9JbnQoZW5jbG9zaW5nVG9wQW5kQm90dG9tLnRvcCk7CiAgICAgICAgICAgICBlbmNsb3NpbmdU
b3BBbmRCb3R0b20uYm90dG9tID0gcm91bmRUb0ludChlbmNsb3NpbmdUb3BBbmRCb3R0b20uYm90
dG9tKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5oCmlu
ZGV4IGZhOTA4MDA2YTk0MjlhMjZjYTdmZjJhZTE4YzBhYzdhYzNjZmNmOTIuLjYyOWFmYTA1Mjgx
ZTVmNWFlYzBjZmZmYWMyMzljNjI3YWFjNTA5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuaApAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3BhY2UgTGF5
b3V0SW50ZWdyYXRpb24gewogCiBjbGFzcyBCb3hUcmVlOwogc3RydWN0IElubGluZUNvbnRlbnQ7
Ci1zdHJ1Y3QgTGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zOwogCiBjbGFzcyBJbmxp
bmVDb250ZW50QnVpbGRlciB7CiBwdWJsaWM6CkBAIC00NywxMSArNDYsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBidWlsZChjb25zdCBMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZSYsIElubGlu
ZUNvbnRlbnQmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB1c2luZyBMaW5lTGV2ZWxWaXN1YWxB
ZGp1c3RtZW50c0ZvclJ1bnNMaXN0ID0gVmVjdG9yPExpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRz
Rm9yUnVucz47Ci0KLSAgICBMaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnNMaXN0IGNv
bXB1dGVMaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnMoY29uc3QgTGF5b3V0OjpJbmxp
bmVMaW5lcyYsIGNvbnN0IExheW91dDo6SW5saW5lTGluZVJ1bnMmKSBjb25zdDsKLSAgICB2b2lk
IGNyZWF0ZURpc3BsYXlMaW5lUnVucyhjb25zdCBMYXlvdXQ6OklubGluZUxpbmVzJiwgY29uc3Qg
TGF5b3V0OjpJbmxpbmVMaW5lUnVucyYsIElubGluZUNvbnRlbnQmLCBjb25zdCBMaW5lTGV2ZWxW
aXN1YWxBZGp1c3RtZW50c0ZvclJ1bnNMaXN0JikgY29uc3Q7Ci0gICAgdm9pZCBjcmVhdGVEaXNw
bGF5TGluZXMoY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lcyYsIElubGluZUNvbnRlbnQmLCBjb25z
dCBMaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnNMaXN0JikgY29uc3Q7CisgICAgdm9p
ZCBjcmVhdGVEaXNwbGF5TGluZVJ1bnMoY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lcyYsIGNvbnN0
IExheW91dDo6SW5saW5lTGluZVJ1bnMmLCBJbmxpbmVDb250ZW50JikgY29uc3Q7CisgICAgdm9p
ZCBjcmVhdGVEaXNwbGF5TGluZXMoY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lcyYsIElubGluZUNv
bnRlbnQmKSBjb25zdDsKIAogICAgIGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmIG1fbGF5b3V0
U3RhdGU7CiAgICAgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBtX2Jsb2NrRmxvdzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436744</attachid>
            <date>2021-08-29 11:59:47 -0700</date>
            <delta_ts>2021-08-29 12:47:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229654-20210829115947.patch</filename>
            <type>text/plain</type>
            <size>19144</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI2NzQ2MWQ5OGY3MmQ3
ZDEwZjJlYTBhYWZhZmVjODk2ZDYyYjdhOS4uMjM5MDU1ZGE1ZjU1YzhhY2M0MTVkMDVkNzdmNjE5
Y2E1MWNkNTJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTA4LTI5ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIE1vdmUgImxp
bmUgbmVlZHMgaW50ZWdyYWwgc25hcHBpbmciIGNvbXB1dGluZyB0byBJRkMgZnJvbSB0aGUgaW50
ZWdyYXRpb24gbGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyOTY1NAorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisg
ICAgICAgIFRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIG1lcmdpbmcgdGhlIGludGVncmF0aW9u
IGxheWVyIHJ1bnMgd2l0aCBJRkMncyBkaXNwbGF5IHJ1bnMuCisgICAgICAgIFRoaXMgYWxzbyBz
YXZlIGEgbG9vcCBvdmVyIHRoZSBydW5zIHRvIGNvbXB1dGUgdGhlICJsaW5lIG5lZWRzIGludGVn
cmF0aW9uIHBvc2l0aW9uIiBiaXQuCisKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1bnNBbmRV
cGRhdGVHZW9tZXRyeUZvckxpbmVDb250ZW50KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lR2VvbWV0cnkuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGluZUdlb21ldHJ5OjpuZWVkc0ludGVncmFsUG9zaXRpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lR2VvbWV0cnk6OnNldE5lZWRzSW50ZWdyYWxQb3Np
dGlvbik6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5s
aW5lQ29udGVudEJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OklubGluZUNvbnRlbnRCdWlsZGVyOjpidWlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlM
aW5lUnVucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5s
aW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudEJ1aWxkZXI6OmNvbXB1dGVM
aW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWls
ZGVyLmg6CisKIDIwMjEtMDgtMjkgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtMRkNdW0lGQ10gQWRkIGluayBvdmVyZmxvdyB0byB0aGUgbGluZSBydW5zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcApp
bmRleCA4MTY0YzJmZWFmNjlhY2U3YzhhYzQ1NWQ3MjA1YTUwZmM3YjVjMDA5Li5hZjJlMGI5NDBm
YjIyMmVjYThiYzFiYTQxODQyNjkyNWY4MWRjNGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKQEAgLTYxLDYgKzYxLDEwIEBA
IHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpidWlsZChjb25zdCBMaW5lQnVpbGRl
cjo6TGluZUNvbnRlbnQmIGxpbmVDb250CiB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRl
cjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29uc3QgTGluZUJ1
aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgTGluZUJveCYgbGluZUJveCwg
Y29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwgY29uc3Qgc2l6
ZV90IGxpbmVJbmRleCkKIHsKICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3Jt
YXR0aW5nU3RhdGUoKTsKKyAgICAvLyBMZWdhY3kgaW5saW5lIHRyZWUgaW50ZWdyYWwgcm91bmRz
IHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiBmb3IgY2VydGFpbiBjb250ZW50IChzZWUgTGVnYWN5SW5s
aW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24gYW5kIDo6YWRkVG9MaW5lKS4K
KyAgICAvLyBTZWUgc2hvdWxkQ2xlYXJEZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJh
c2VsaW5lIGluIExlZ2FjeUlubGluZUZsb3dCb3g6OmFkZFRvTGluZS4KKyAgICBhdXRvIGxpbmVO
ZWVkSW50ZWdyYWxQb3NpdGlvbiA9IHRydWU7CisgICAgYXV0byYgcm9vdFN0eWxlID0gcm9vdCgp
LnN0eWxlKCk7CiAgICAgLy8gQ3JlYXRlIHRoZSBpbmxpbmUgcnVucyBvbiB0aGUgY3VycmVudCBs
aW5lLiBUaGlzIGlzIG1vc3RseSB0ZXh0IGFuZCBhdG9taWMgaW5saW5lIHJ1bnMuCiAgICAgZm9y
IChhdXRvJiBsaW5lUnVuIDogbGluZUNvbnRlbnQucnVucykgewogICAgICAgICBhdXRvJiBsYXlv
dXRCb3ggPSBsaW5lUnVuLmxheW91dEJveCgpOwpAQCAtMTAyLDYgKzEwNiw4IEBAIHZvaWQgSW5s
aW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JM
aW5lQ29udGVudChjb25zCiAgICAgICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRp
bmdTdGF0ZS5ib3hHZW9tZXRyeShsYXlvdXRCb3gpOwogICAgICAgICAgICAgYm94R2VvbWV0cnku
c2V0TG9naWNhbFRvcExlZnQodG9MYXlvdXRQb2ludChsaW5lQnJlYWtCb3hSZWN0LnRvcExlZnQo
KSkpOwogICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveEhlaWdodCh0b0xheW91
dFVuaXQobGluZUJyZWFrQm94UmVjdC5oZWlnaHQoKSkpOworICAgICAgICAgICAgaWYgKCFmb3Jt
YXR0aW5nU3RhdGUubGF5b3V0U3RhdGUoKS5pblN0YW5kYXJkc01vZGUoKSkKKyAgICAgICAgICAg
ICAgICBsaW5lTmVlZEludGVncmFsUG9zaXRpb24gPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6Qm94OiB7CkBAIC0x
MTUsNiArMTIxLDcgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1
bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnMKICAgICAgICAgICAgIC8vIE5v
dGUgdGhhdCBpbmxpbmUgYm94ZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBsaW5lIGFuZCB0aGVpciB0
b3AgcG9zaXRpb24gY2FuIGJlIG5lZ2F0aXZlLgogICAgICAgICAgICAgLy8gQXRvbWljIGlubGlu
ZSBib3hlcyBhcmUgYWxsIHNldC4gVGhlaXIgbWFyZ2luL2JvcmRlci9jb250ZW50IGJveCBnZW9t
ZXRyaWVzIGFyZSBhbHJlYWR5IGNvbXB1dGVkLiBXZSBqdXN0IGhhdmUgdG8gcG9zaXRpb24gdGhl
bSBoZXJlLgogICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQodG9MYXlv
dXRQb2ludChib3JkZXJCb3hMb2dpY2FsVG9wTGVmdCkpOworICAgICAgICAgICAgbGluZU5lZWRJ
bnRlZ3JhbFBvc2l0aW9uID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIElubGluZUl0ZW06OlR5cGU6OklubGluZUJveFN0YXJ0OiB7CkBAIC0xMzQs
NiArMTQxLDE0IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5z
QW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChjb25zCiAgICAgICAgICAgICBib3hHZW9t
ZXRyeS5zZXRDb250ZW50Qm94SGVpZ2h0KGNvbnRlbnRCb3hIZWlnaHQpOwogICAgICAgICAgICAg
YXV0byBjb250ZW50Qm94V2lkdGggPSBsb2dpY2FsUmVjdC53aWR0aCgpIC0gKGJveEdlb21ldHJ5
Lmhvcml6b250YWxCb3JkZXIoKSArIGJveEdlb21ldHJ5Lmhvcml6b250YWxQYWRkaW5nKCkudmFs
dWVfb3IoMF9sdSkpOwogICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveFdpZHRo
KGNvbnRlbnRCb3hXaWR0aCk7CisKKyAgICAgICAgICAgIGlmIChsaW5lTmVlZEludGVncmFsUG9z
aXRpb24pIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBpbmxpbmVCb3hTdHlsZSA9IGxheW91dEJv
eC5zdHlsZSgpOworICAgICAgICAgICAgICAgIGF1dG8gc3R5bGVQcmV2ZW50c0ludGVncmFsU25h
cHBpbmcgPSByb290U3R5bGUubGluZUhlaWdodCgpICE9IGlubGluZUJveFN0eWxlLmxpbmVIZWln
aHQoKSB8fCBpbmxpbmVCb3hTdHlsZS52ZXJ0aWNhbEFsaWduKCkgIT0gVmVydGljYWxBbGlnbjo6
QmFzZWxpbmU7CisgICAgICAgICAgICAgICAgYXV0byBmb250UHJldmVudHNJbnRlZ3JhbFNuYXBw
aW5nID0gcm9vdFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5oYXNJZGVudGljYWxB
c2NlbnREZXNjZW50QW5kTGluZUdhcChpbmxpbmVCb3hTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRN
ZXRyaWNzKCkpOworICAgICAgICAgICAgICAgIGlmIChzdHlsZVByZXZlbnRzSW50ZWdyYWxTbmFw
cGluZyB8fCBmb250UHJldmVudHNJbnRlZ3JhbFNuYXBwaW5nKQorICAgICAgICAgICAgICAgICAg
ICBsaW5lTmVlZEludGVncmFsUG9zaXRpb24gPSBmYWxzZTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0xNDEsNiArMTU2
LDggQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1bnNBbmRVcGRh
dGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnMKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgfQorICAgIC8vIEZJWE1FOiBUaGlzIGlzIHRlbXBvcmFyeS4gUmVtb3ZlIHdoZW4g
bGVnYWN5IGxpbmUgbGF5b3V0J3MgaW50ZWdyYWwgc25hcHBpbmcgaXMgcmVtb3ZlZC4KKyAgICBm
b3JtYXR0aW5nU3RhdGUubGluZXMoKS5sYXN0KCkuc2V0TmVlZHNJbnRlZ3JhbFBvc2l0aW9uKGxp
bmVOZWVkSW50ZWdyYWxQb3NpdGlvbik7CiB9CiAKIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lU3Bhbm5pbmdJbmxpbmVC
b3hlcyhjb25zdCBMaW5lQm94JiBsaW5lQm94LCBjb25zdCBJbmxpbmVMYXlvdXRQb2ludCYgbGlu
ZUJveExvZ2ljYWxUb3BMZWZ0LCBjb25zdCBzaXplX3QgbGluZUluZGV4LCBzaXplX3QgbGluZVNw
YW5uaW5nSW5saW5lQm94SW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lR2VvbWV0cnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVHZW9tZXRy
eS5oCmluZGV4IGU2MjM3NGQyMTFhYTZmNWViZWU2NjBkODU1NGUyNmUzYzNkNmU5ZDMuLjM1NTg1
YmNkNDFmMGMzNDRlMmI5OGRmY2Y2OTQ1ZDUyNzQzNjdiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVHZW9tZXRy
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVHZW9tZXRyeS5oCkBAIC01MSw3ICs1MSwxMCBAQCBwdWJsaWM6CiAgICAgSW5s
aW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
bnRMb2dpY2FsTGVmdDsgfQogICAgIElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxXaWR0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudExvZ2ljYWxXaWR0aDsgfQogCisgICAgYm9vbCBu
ZWVkc0ludGVncmFsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX25lZWRzSW50ZWdyYWxQb3Np
dGlvbjsgfQorCiAgICAgdm9pZCBtb3ZlVmVydGljYWxseShJbmxpbmVMYXlvdXRVbml0IG9mZnNl
dCkgeyBtX2xpbmVCb3hMb2dpY2FsUmVjdC5tb3ZlVmVydGljYWxseShvZmZzZXQpOyB9CisgICAg
dm9pZCBzZXROZWVkc0ludGVncmFsUG9zaXRpb24oYm9vbCBuZWVkc0ludGVncmFsUG9zaXRpb24p
IHsgbV9uZWVkc0ludGVncmFsUG9zaXRpb24gPSBuZWVkc0ludGVncmFsUG9zaXRpb247IH0KIAog
cHJpdmF0ZToKICAgICAvLyBUaGlzIGlzIGxpbmUgYm94IGdlb21ldHJ5IChzZWUgaHR0cHM6Ly93
d3cudzMub3JnL1RSL2Nzcy1pbmxpbmUtMy8jbGluZS1ib3gpLgpAQCAtNjMsNiArNjYsOSBAQCBw
cml2YXRlOgogICAgIElubGluZUxheW91dFVuaXQgbV9hbGlnbWVudEJhc2VsaW5lIHsgMCB9Owog
ICAgIElubGluZUxheW91dFVuaXQgbV9jb250ZW50TG9naWNhbExlZnQgeyAwIH07CiAgICAgSW5s
aW5lTGF5b3V0VW5pdCBtX2NvbnRlbnRMb2dpY2FsV2lkdGggeyAwIH07CisgICAgLy8gRklYTUU6
IFRoaXMgaXMganVzdCBtYXRjaGluZyBsZWdhY3kgbGluZSBsYXlvdXQgaW50ZWdyYWwgc25hcHBp
bmcuCisgICAgLy8gU2VlIHNob3VsZENsZWFyRGVzY2VuZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRB
bmRCYXNlbGluZSBpbiBMZWdhY3lJbmxpbmVGbG93Qm94OjphZGRUb0xpbmUuCisgICAgYm9vbCBt
X25lZWRzSW50ZWdyYWxQb3NpdGlvbiB7IHRydWUgfTsKIH07CiAKIGlubGluZSBMaW5lR2VvbWV0
cnk6OkxpbmVHZW9tZXRyeShjb25zdCBJbmxpbmVSZWN0JiBsaW5lQm94TG9naWNhbFJlY3QsIEVu
Y2xvc2luZ1RvcEFuZEJvdHRvbSBlbmNsb3NpbmdUb3BBbmRCb3R0b20sIElubGluZUxheW91dFVu
aXQgYWxpZ21lbnRCYXNlbGluZSwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQs
IElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxXaWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRl
bnRCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmNwcAppbmRleCA5MGFkYjZhZjU1NGEyMmFj
MGNiYTVlN2RjNjhlZTExMzRjMTgyMzhlLi42NzEzMTIxNWUxNjUyNGNiMjc5N2EyMDA1YjY2YjRi
NjM5MzJmOWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1
aWxkZXIuY3BwCkBAIC00NCwxMiArNDQsNiBAQCBuYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24g
ewogCiAjZGVmaW5lIFBST0NFU1NfQklESV9DT05URU5UIDAKIAotc3RydWN0IExpbmVMZXZlbFZp
c3VhbEFkanVzdG1lbnRzRm9yUnVucyB7Ci0gICAgYm9vbCBuZWVkc0ludGVncmFsUG9zaXRpb24g
eyBmYWxzZSB9OwotICAgIC8vIEl0J3Mgb25seSAndGV4dC1vdmVyZmxvdzogZWxsaXBzaXMnIGZv
ciBub3cuCi0gICAgYm9vbCBuZWVkc1RyYWlsaW5nQ29udGVudFJlcGxhY2VtZW50IHsgZmFsc2Ug
fTsKLX07Ci0KIGlubGluZSBMYXlvdXQ6OkxpbmVHZW9tZXRyeTo6RW5jbG9zaW5nVG9wQW5kQm90
dG9tIG9wZXJhdG9yKyhjb25zdCBMYXlvdXQ6OkxpbmVHZW9tZXRyeTo6RW5jbG9zaW5nVG9wQW5k
Qm90dG9tIGVuY2xvc2luZ1RvcEFuZEJvdHRvbSwgZmxvYXQgb2Zmc2V0KQogewogICAgIHJldHVy
biB7IGVuY2xvc2luZ1RvcEFuZEJvdHRvbS50b3AgKyBvZmZzZXQsIGVuY2xvc2luZ1RvcEFuZEJv
dHRvbS5ib3R0b20gKyBvZmZzZXQgfTsKQEAgLTE2NCw3NSArMTU4LDExIEBAIElubGluZUNvbnRl
bnRCdWlsZGVyOjpJbmxpbmVDb250ZW50QnVpbGRlcihjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRl
JiBsYXlvdXRTdGF0CiAKIHZvaWQgSW5saW5lQ29udGVudEJ1aWxkZXI6OmJ1aWxkKGNvbnN0IExh
eW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUsIElubGlu
ZUNvbnRlbnQmIGlubGluZUNvbnRlbnQpIGNvbnN0CiB7Ci0gICAgYXV0byBsaW5lTGV2ZWxWaXN1
YWxBZGp1c3RtZW50c0ZvclJ1bnMgPSBjb21wdXRlTGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNG
b3JSdW5zKGlubGluZUZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLCBpbmxpbmVGb3JtYXR0aW5nU3Rh
dGUubGluZVJ1bnMoKSk7Ci0gICAgY3JlYXRlRGlzcGxheUxpbmVSdW5zKGlubGluZUZvcm1hdHRp
bmdTdGF0ZS5saW5lcygpLCBpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGluZVJ1bnMoKSwgaW5saW5l
Q29udGVudCwgbGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zKTsKLSAgICBjcmVhdGVE
aXNwbGF5TGluZXMoaW5saW5lRm9ybWF0dGluZ1N0YXRlLmxpbmVzKCksIGlubGluZUNvbnRlbnQs
IGxpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVucyk7CisgICAgY3JlYXRlRGlzcGxheUxp
bmVSdW5zKGlubGluZUZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLCBpbmxpbmVGb3JtYXR0aW5nU3Rh
dGUubGluZVJ1bnMoKSwgaW5saW5lQ29udGVudCk7CisgICAgY3JlYXRlRGlzcGxheUxpbmVzKGlu
bGluZUZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLCBpbmxpbmVDb250ZW50KTsKIH0KIAotSW5saW5l
Q29udGVudEJ1aWxkZXI6OkxpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVuc0xpc3QgSW5s
aW5lQ29udGVudEJ1aWxkZXI6OmNvbXB1dGVMaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1
bnMoY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lcyYgbGluZXMsIGNvbnN0IExheW91dDo6SW5saW5l
TGluZVJ1bnMmIGxpbmVSdW5zKSBjb25zdAotewotICAgIGF1dG8gbGluZUxldmVsVmlzdWFsQWRq
dXN0bWVudHNGb3JSdW5zID0gTGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zTGlzdCB7
IGxpbmVzLnNpemUoKSB9OwotICAgIGF1dG8mIHJvb3RTdHlsZSA9IG1fbGF5b3V0U3RhdGUucm9v
dCgpLnN0eWxlKCk7Ci0KLSAgICBhdXRvIGlubGluZUxldmVsQm94UHJldmVudHNJbnRlZ3JhbFBv
c2l0aW9uID0gc3RkOjpvcHRpb25hbDxib29sPiB7IH07Ci0gICAgc2l6ZV90IGxpbmVJbmRleFRv
Q2hlY2sgPSAwOwotICAgIGZvciAoYXV0byYgbGluZVJ1biA6IGxpbmVSdW5zKSB7Ci0gICAgICAg
IGF1dG8gbGluZUluZGV4ID0gbGluZVJ1bi5saW5lSW5kZXgoKTsKLSAgICAgICAgYXV0byYgbGF5
b3V0Qm94ID0gbGluZVJ1bi5sYXlvdXRCb3goKTsKLQotICAgICAgICBpZiAobGluZUluZGV4VG9D
aGVjayAhPSBsaW5lSW5kZXgpIHsKLSAgICAgICAgICAgIGF1dG8gbGluZU5lZWRzSW50ZWdyYWxQ
b3NpdGlvbmluZyA9IFsmXSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFpbmxpbmVMZXZlbEJveFBy
ZXZlbnRzSW50ZWdyYWxQb3NpdGlvbi5oYXNfdmFsdWUoKSkgewotICAgICAgICAgICAgICAgICAg
ICAvLyBUaGlzIGxpbmUgZG9lcyBub3QgaGF2ZSBhbnkgbm9uLXJvb3QgaW5saW5lIGJveGVzLgot
ICAgICAgICAgICAgICAgICAgICAvLyBMaW5lcyBsaWtlIHRoaXMgd2l0aCByb290IGlubGluZSBi
b3ggb25seSBmb3JjZSBpbnRlZ3JhbCBwb3NpdGlvbmluZy4KLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiAh
KmlubGluZUxldmVsQm94UHJldmVudHNJbnRlZ3JhbFBvc2l0aW9uOwotICAgICAgICAgICAgfTsK
LSAgICAgICAgICAgIGxpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVuc1tsaW5lSW5kZXhU
b0NoZWNrXS5uZWVkc0ludGVncmFsUG9zaXRpb24gPSBsaW5lTmVlZHNJbnRlZ3JhbFBvc2l0aW9u
aW5nKCk7Ci0gICAgICAgICAgICBsaW5lSW5kZXhUb0NoZWNrID0gbGluZUluZGV4OwotICAgICAg
ICAgICAgaW5saW5lTGV2ZWxCb3hQcmV2ZW50c0ludGVncmFsUG9zaXRpb24gPSB7IH07Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoIWxpbmVSdW4uaXNOb25Sb290SW5saW5lTGV2ZWxCb3goKSB8
fCAoaW5saW5lTGV2ZWxCb3hQcmV2ZW50c0ludGVncmFsUG9zaXRpb24uaGFzX3ZhbHVlKCkgJiYg
KmlubGluZUxldmVsQm94UHJldmVudHNJbnRlZ3JhbFBvc2l0aW9uKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIGF1dG8gaW5saW5lTGV2ZWxCb3hQcmV2ZW50c0xlZ2FjeUludGVn
cmFsVmVydGljYWxQb3NpdGlvbiA9IFsmXSB7Ci0gICAgICAgICAgICBBU1NFUlQobGluZVJ1bi5p
c05vblJvb3RJbmxpbmVMZXZlbEJveCgpKTsKLSAgICAgICAgICAgIC8vIExlZ2FjeSBpbmxpbmUg
dHJlZSBpbnRlZ3JhbCByb3VuZHMgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGZvciBjZXJ0YWluIGNv
bnRlbnQgKHNlZSBMZWdhY3lJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSW5CbG9ja0RpcmVjdGlv
biBhbmQgOjphZGRUb0xpbmUpLgotICAgICAgICAgICAgLy8gU2VlIHNob3VsZENsZWFyRGVzY2Vu
ZGFudHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSBpbiBMZWdhY3lJbmxpbmVGbG93Qm94
OjphZGRUb0xpbmUuCi0gICAgICAgICAgICBhdXRvIGNvbnRlbnRQcmV2ZW50c0ludGVncmFsU25h
cHBpbmcgPSBsaW5lUnVuLmlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSB8fCAobGluZVJ1bi5pc0xp
bmVCcmVha0JveCgpICYmICFtX2xheW91dFN0YXRlLmluU3RhbmRhcmRzTW9kZSgpKTsKLSAgICAg
ICAgICAgIGlmIChjb250ZW50UHJldmVudHNJbnRlZ3JhbFNuYXBwaW5nKQotICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgICBhdXRvJiBpbmxpbmVMZXZlbEJveFN0eWxl
ID0gbGF5b3V0Qm94LnN0eWxlKCk7Ci0gICAgICAgICAgICBhdXRvIHN0eWxlUHJldmVudHNJbnRl
Z3JhbFNuYXBwaW5nID0gcm9vdFN0eWxlLmxpbmVIZWlnaHQoKSAhPSBpbmxpbmVMZXZlbEJveFN0
eWxlLmxpbmVIZWlnaHQoKSB8fCBpbmxpbmVMZXZlbEJveFN0eWxlLnZlcnRpY2FsQWxpZ24oKSAh
PSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZTsKLSAgICAgICAgICAgIGlmIChzdHlsZVByZXZlbnRz
SW50ZWdyYWxTbmFwcGluZykKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAg
ICAgICAgYXV0byYgcm9vdEZvbnRNZXRyaWNzID0gcm9vdFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9u
dE1ldHJpY3MoKTsKLSAgICAgICAgICAgIGF1dG8mIGlubGluZUxldmVsQm94Rm9udE1ldHJpY3Mg
PSBpbmxpbmVMZXZlbEJveFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKTsKLSAgICAg
ICAgICAgIGF1dG8gZm9udFByZXZlbnRzSW50ZWdyYWxTbmFwcGluZyA9ICFyb290Rm9udE1ldHJp
Y3MuaGFzSWRlbnRpY2FsQXNjZW50RGVzY2VudEFuZExpbmVHYXAoaW5saW5lTGV2ZWxCb3hGb250
TWV0cmljcyk7Ci0gICAgICAgICAgICByZXR1cm4gZm9udFByZXZlbnRzSW50ZWdyYWxTbmFwcGlu
ZzsKLSAgICAgICAgfTsKLSAgICAgICAgaW5saW5lTGV2ZWxCb3hQcmV2ZW50c0ludGVncmFsUG9z
aXRpb24gPSBpbmxpbmVMZXZlbEJveFByZXZlbnRzTGVnYWN5SW50ZWdyYWxWZXJ0aWNhbFBvc2l0
aW9uKCk7Ci0gICAgfQotICAgIGxpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVuc1tsaW5l
SW5kZXhUb0NoZWNrXS5uZWVkc0ludGVncmFsUG9zaXRpb24gPSAhaW5saW5lTGV2ZWxCb3hQcmV2
ZW50c0ludGVncmFsUG9zaXRpb24uaGFzX3ZhbHVlKCkgfHwgISppbmxpbmVMZXZlbEJveFByZXZl
bnRzSW50ZWdyYWxQb3NpdGlvbjsKLQotICAgIGF1dG8gc2hvdWxkQ2hlY2tIb3Jpem9udGFsT3Zl
cmZsb3dGb3JDb250ZW50UmVwbGFjZW1lbnQgPSByb290U3R5bGUub3ZlcmZsb3dYKCkgPT0gT3Zl
cmZsb3c6OkhpZGRlbiAmJiByb290U3R5bGUudGV4dE92ZXJmbG93KCkgIT0gVGV4dE92ZXJmbG93
OjpDbGlwOwotICAgIGlmICghc2hvdWxkQ2hlY2tIb3Jpem9udGFsT3ZlcmZsb3dGb3JDb250ZW50
UmVwbGFjZW1lbnQpCi0gICAgICAgIHJldHVybiBsaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0Zv
clJ1bnM7Ci0KLSAgICBmb3IgKHNpemVfdCBsaW5lSW5kZXggPSAwOyBsaW5lSW5kZXggPCBsaW5l
cy5zaXplKCk7ICsrbGluZUluZGV4KSB7Ci0gICAgICAgIGF1dG8mIGxpbmUgPSBsaW5lc1tsaW5l
SW5kZXhdOwotICAgICAgICBhdXRvIGxpbmVCb3hMb2dpY2FsV2lkdGggPSBsaW5lLmxpbmVCb3hM
b2dpY2FsUmVjdCgpLndpZHRoKCk7Ci0gICAgICAgIGF1dG8gb3ZlcmZsb3dXaWR0aCA9IGxpbmVP
dmVyZmxvd1dpZHRoKG1fYmxvY2tGbG93LCBsaW5lQm94TG9naWNhbFdpZHRoLCBsaW5lLmNvbnRl
bnRMb2dpY2FsV2lkdGgoKSk7Ci0gICAgICAgIGxpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9y
UnVuc1tsaW5lSW5kZXhdLm5lZWRzVHJhaWxpbmdDb250ZW50UmVwbGFjZW1lbnQgPSBvdmVyZmxv
d1dpZHRoID4gbGluZUJveExvZ2ljYWxXaWR0aDsKLSAgICB9Ci0gICAgcmV0dXJuIGxpbmVMZXZl
bFZpc3VhbEFkanVzdG1lbnRzRm9yUnVuczsKLX0KLQotdm9pZCBJbmxpbmVDb250ZW50QnVpbGRl
cjo6Y3JlYXRlRGlzcGxheUxpbmVSdW5zKGNvbnN0IExheW91dDo6SW5saW5lTGluZXMmIGxpbmVz
LCBjb25zdCBMYXlvdXQ6OklubGluZUxpbmVSdW5zJiBsaW5lUnVucywgSW5saW5lQ29udGVudCYg
aW5saW5lQ29udGVudCwgY29uc3QgTGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zTGlz
dCYgbGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zKSBjb25zdAordm9pZCBJbmxpbmVD
b250ZW50QnVpbGRlcjo6Y3JlYXRlRGlzcGxheUxpbmVSdW5zKGNvbnN0IExheW91dDo6SW5saW5l
TGluZXMmIGxpbmVzLCBjb25zdCBMYXlvdXQ6OklubGluZUxpbmVSdW5zJiBsaW5lUnVucywgSW5s
aW5lQ29udGVudCYgaW5saW5lQ29udGVudCkgY29uc3QKIHsKICAgICBpZiAobGluZVJ1bnMuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0yNjEsNyArMTkxLDcgQEAgdm9pZCBJbmxpbmVD
b250ZW50QnVpbGRlcjo6Y3JlYXRlRGlzcGxheUxpbmVSdW5zKGNvbnN0IExheW91dDo6SW5saW5l
TGluZXMmIGxpbmUKICAgICAgICAgYXV0byBpbmtPdmVyZmxvdyA9IEZsb2F0UmVjdCB7IGxpbmVS
dW4uaW5rT3ZlcmZsb3coKSB9OwogICAgICAgICBhdXRvJiBnZW9tZXRyeSA9IG1fbGF5b3V0U3Rh
dGUuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKICAgICAgICAgcnVuUmVjdC5zZXRTaXplKHsg
Z2VvbWV0cnkuYm9yZGVyQm94V2lkdGgoKSwgZ2VvbWV0cnkuYm9yZGVyQm94SGVpZ2h0KCkgfSk7
Ci0gICAgICAgIGlmIChsaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnNbbGluZUluZGV4
XS5uZWVkc0ludGVncmFsUG9zaXRpb24pIHsKKyAgICAgICAgaWYgKGxpbmVzW2xpbmVJbmRleF0u
bmVlZHNJbnRlZ3JhbFBvc2l0aW9uKCkpIHsKICAgICAgICAgICAgIHJ1blJlY3Quc2V0WShyb3Vu
ZFRvSW50KHJ1blJlY3QueSgpKSk7CiAgICAgICAgICAgICBpbmtPdmVyZmxvdy5zZXRZKHJvdW5k
VG9JbnQoaW5rT3ZlcmZsb3cueSgpKSk7CiAgICAgICAgIH0KQEAgLTI4NiwxMCArMjE2LDkgQEAg
dm9pZCBJbmxpbmVDb250ZW50QnVpbGRlcjo6Y3JlYXRlRGlzcGxheUxpbmVSdW5zKGNvbnN0IExh
eW91dDo6SW5saW5lTGluZXMmIGxpbmUKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhcnRPZmZz
ZXQgPCBlbmRPZmZzZXQpOwogICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBsaW5lUnVuLmxheW91
dEJveCgpOwogICAgICAgICBhdXRvIGxpbmVJbmRleCA9IGxpbmVSdW4ubGluZUluZGV4KCk7Ci0g
ICAgICAgIGF1dG8mIGxpbmVCb3hMb2dpY2FsUmVjdCA9IGxpbmVzW2xpbmVJbmRleF0ubGluZUJv
eExvZ2ljYWxSZWN0KCk7CiAgICAgICAgIGF1dG8gcnVuUmVjdCA9IEZsb2F0UmVjdCB7IGxpbmVS
dW4ubG9naWNhbFJlY3QoKSB9OwogICAgICAgICBhdXRvIGlua092ZXJmbG93ID0gRmxvYXRSZWN0
IHsgbGluZVJ1bi5pbmtPdmVyZmxvdygpIH07Ci0gICAgICAgIGlmIChsaW5lTGV2ZWxWaXN1YWxB
ZGp1c3RtZW50c0ZvclJ1bnNbbGluZUluZGV4XS5uZWVkc0ludGVncmFsUG9zaXRpb24pIHsKKyAg
ICAgICAgaWYgKGxpbmVzW2xpbmVJbmRleF0ubmVlZHNJbnRlZ3JhbFBvc2l0aW9uKCkpIHsKICAg
ICAgICAgICAgIHJ1blJlY3Quc2V0WShyb3VuZFRvSW50KHJ1blJlY3QueSgpKSk7CiAgICAgICAg
ICAgICBpbmtPdmVyZmxvdy5zZXRZKHJvdW5kVG9JbnQoaW5rT3ZlcmZsb3cueSgpKSk7CiAgICAg
ICAgIH0KQEAgLTMwMCwyMyArMjI5LDYgQEAgdm9pZCBJbmxpbmVDb250ZW50QnVpbGRlcjo6Y3Jl
YXRlRGlzcGxheUxpbmVSdW5zKGNvbnN0IExheW91dDo6SW5saW5lTGluZXMmIGxpbmUKICAgICAg
ICAgICAgIGF1dG8gb3JpZ2luYWxDb250ZW50ID0gdGV4dC0+Y29udGVudCgpLnN1YnN0cmluZyh0
ZXh0LT5zdGFydCgpLCB0ZXh0LT5sZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAodGV4dC0+bmVl
ZHNIeXBoZW4oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhvcmlnaW5hbENv
bnRlbnQsIHN0eWxlLmh5cGhlblN0cmluZygpKTsKLSAgICAgICAgICAgIGlmIChsaW5lTGV2ZWxW
aXN1YWxBZGp1c3RtZW50c0ZvclJ1bnNbbGluZUluZGV4XS5uZWVkc1RyYWlsaW5nQ29udGVudFJl
cGxhY2VtZW50KSB7Ci0gICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IGl0J3MgZWxsaXBzaXMg
cmVwbGFjZW1lbnQgb25seSwgYnV0IGFkZGluZyBzdXBwb3J0IGZvciAidGV4dC1vdmVyZmxvdzog
c3RyaW5nIiBzaG91bGQgYmUgcmVsYXRpdmVseSBzaW1wbGUuCi0gICAgICAgICAgICAgICAgaWYg
KGhhc0FkanVzdGVkVHJhaWxpbmdMaW5lTGlzdFtsaW5lSW5kZXhdKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIC8vIFRoaXMgbGluZSBhbHJlYWR5IGhhcyBhZGp1c3RlZCB0cmFpbGluZy4gQW55IHJ1
bnMgYWZ0ZXIgdGhlIGVsbGlwc2lzIHNob3VsZCByZW5kZXIgYmxhbmsuCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBhdXRvIHJ1bkxvZ2ljYWxSZWN0ID0gbGluZVJ1bi5sb2dpY2FsUmVjdCgpOwotICAg
ICAgICAgICAgICAgIGF1dG8gZWxsaXBzaXNXaWR0aCA9IHN0eWxlLmZvbnRDYXNjYWRlKCkud2lk
dGgoV2ViQ29yZTo6VGV4dFJ1biB7ICZob3Jpem9udGFsRWxsaXBzaXMgfSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHJ1bkxvZ2ljYWxSZWN0LnJpZ2h0KCkgKyBlbGxpcHNpc1dpZHRoID4gbGluZUJv
eExvZ2ljYWxSZWN0LnJpZ2h0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gVGhlIG5leHQg
cnVuIHdpdGggZWxsaXBzaXMgd291bGQgc3VyZWx5IG92ZXJmbG93LiBTbyBsZXQncyBqdXN0IGFk
ZCBpdCB0byB0aGlzIHJ1biBldmVuIGlmCi0gICAgICAgICAgICAgICAgICAgIC8vIGl0IG1ha2Vz
IHRoZSBydW4gd2lkZXIgdGhhbiBpdCBvcmlnaW5hbGx5IHdhcy4KLSAgICAgICAgICAgICAgICAg
ICAgaGFzQWRqdXN0ZWRUcmFpbGluZ0xpbmVMaXN0W2xpbmVJbmRleF0gPSB0cnVlOwotICAgICAg
ICAgICAgICAgICAgICBmbG9hdCByZXN1bHRXaWR0aCA9IDA7Ci0gICAgICAgICAgICAgICAgICAg
IGF1dG8gbWF4V2lkdGggPSBsaW5lQm94TG9naWNhbFJlY3Qud2lkdGgoKSAtIHJ1bkxvZ2ljYWxS
ZWN0LmxlZnQoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZ1RydW5jYXRvcjo6
cmlnaHRUcnVuY2F0ZShvcmlnaW5hbENvbnRlbnQsIG1heFdpZHRoLCBzdHlsZS5mb250Q2FzY2Fk
ZSgpLCByZXN1bHRXaWR0aCwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICB9OwogCkBAIC0zMzYsNyAr
MjQ4LDcgQEAgdm9pZCBJbmxpbmVDb250ZW50QnVpbGRlcjo6Y3JlYXRlRGlzcGxheUxpbmVSdW5z
KGNvbnN0IExheW91dDo6SW5saW5lTGluZXMmIGxpbmUKICAgICB9CiB9CiAKLXZvaWQgSW5saW5l
Q29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lcyhjb25zdCBMYXlvdXQ6OklubGluZUxp
bmVzJiBsaW5lcywgSW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudCwgY29uc3QgTGluZUxldmVs
VmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zTGlzdCYgbGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNG
b3JSdW5zKSBjb25zdAordm9pZCBJbmxpbmVDb250ZW50QnVpbGRlcjo6Y3JlYXRlRGlzcGxheUxp
bmVzKGNvbnN0IExheW91dDo6SW5saW5lTGluZXMmIGxpbmVzLCBJbmxpbmVDb250ZW50JiBpbmxp
bmVDb250ZW50KSBjb25zdAogewogICAgIGF1dG8mIHJ1bnMgPSBpbmxpbmVDb250ZW50LnJ1bnM7
CiAgICAgYXV0byYgbm9uUm9vdElubGluZUJveGVzID0gaW5saW5lQ29udGVudC5ub25Sb290SW5s
aW5lQm94ZXM7CkBAIC0zODEsNyArMjkzLDcgQEAgdm9pZCBJbmxpbmVDb250ZW50QnVpbGRlcjo6
Y3JlYXRlRGlzcGxheUxpbmVzKGNvbnN0IExheW91dDo6SW5saW5lTGluZXMmIGxpbmVzLAogICAg
ICAgICBhdXRvIGFkanVzdGVkTGluZUJveFJlY3QgPSBGbG9hdFJlY3QgeyBsaW5lQm94TG9naWNh
bFJlY3QgfTsKICAgICAgICAgLy8gRmluYWwgZW5jbG9zaW5nIHRvcCBhbmQgYm90dG9tIHZhbHVl
cyBhcmUgaW4gdGhlIHNhbWUgY29vcmRpbmF0ZSBzcGFjZSBhcyB0aGUgbGluZSBpdHNlbGYuCiAg
ICAgICAgIGF1dG8gZW5jbG9zaW5nVG9wQW5kQm90dG9tID0gbGluZS5lbmNsb3NpbmdUb3BBbmRC
b3R0b20oKSArIGxpbmVCb3hMb2dpY2FsUmVjdC50b3AoKTsKLSAgICAgICAgaWYgKGxpbmVMZXZl
bFZpc3VhbEFkanVzdG1lbnRzRm9yUnVuc1tsaW5lSW5kZXhdLm5lZWRzSW50ZWdyYWxQb3NpdGlv
bikgeworICAgICAgICBpZiAobGluZS5uZWVkc0ludGVncmFsUG9zaXRpb24oKSkgewogICAgICAg
ICAgICAgYWRqdXN0ZWRMaW5lQm94UmVjdC5zZXRZKHJvdW5kVG9JbnQoYWRqdXN0ZWRMaW5lQm94
UmVjdC55KCkpKTsKICAgICAgICAgICAgIGVuY2xvc2luZ1RvcEFuZEJvdHRvbS50b3AgPSByb3Vu
ZFRvSW50KGVuY2xvc2luZ1RvcEFuZEJvdHRvbS50b3ApOwogICAgICAgICAgICAgZW5jbG9zaW5n
VG9wQW5kQm90dG9tLmJvdHRvbSA9IHJvdW5kVG9JbnQoZW5jbG9zaW5nVG9wQW5kQm90dG9tLmJv
dHRvbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuaApp
bmRleCBmYTkwODAwNmE5NDI5YTI2Y2E3ZmYyYWUxOGMwYWM3YWMzY2ZjZjkyLi42MjlhZmEwNTI4
MWU1ZjVhZWMwY2ZmZmFjMjM5YzYyN2FhYzUwOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmgKQEAgLTM4LDcgKzM4LDYgQEAgbmFtZXNwYWNlIExh
eW91dEludGVncmF0aW9uIHsKIAogY2xhc3MgQm94VHJlZTsKIHN0cnVjdCBJbmxpbmVDb250ZW50
Owotc3RydWN0IExpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVuczsKIAogY2xhc3MgSW5s
aW5lQ29udGVudEJ1aWxkZXIgewogcHVibGljOgpAQCAtNDcsMTEgKzQ2LDggQEAgcHVibGljOgog
ICAgIHZvaWQgYnVpbGQoY29uc3QgTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGUmLCBJbmxp
bmVDb250ZW50JikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgTGluZUxldmVsVmlzdWFs
QWRqdXN0bWVudHNGb3JSdW5zTGlzdCA9IFZlY3RvcjxMaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50
c0ZvclJ1bnM+OwotCi0gICAgTGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zTGlzdCBj
b21wdXRlTGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zKGNvbnN0IExheW91dDo6SW5s
aW5lTGluZXMmLCBjb25zdCBMYXlvdXQ6OklubGluZUxpbmVSdW5zJikgY29uc3Q7Ci0gICAgdm9p
ZCBjcmVhdGVEaXNwbGF5TGluZVJ1bnMoY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lcyYsIGNvbnN0
IExheW91dDo6SW5saW5lTGluZVJ1bnMmLCBJbmxpbmVDb250ZW50JiwgY29uc3QgTGluZUxldmVs
VmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zTGlzdCYpIGNvbnN0OwotICAgIHZvaWQgY3JlYXRlRGlz
cGxheUxpbmVzKGNvbnN0IExheW91dDo6SW5saW5lTGluZXMmLCBJbmxpbmVDb250ZW50JiwgY29u
c3QgTGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zTGlzdCYpIGNvbnN0OworICAgIHZv
aWQgY3JlYXRlRGlzcGxheUxpbmVSdW5zKGNvbnN0IExheW91dDo6SW5saW5lTGluZXMmLCBjb25z
dCBMYXlvdXQ6OklubGluZUxpbmVSdW5zJiwgSW5saW5lQ29udGVudCYpIGNvbnN0OworICAgIHZv
aWQgY3JlYXRlRGlzcGxheUxpbmVzKGNvbnN0IExheW91dDo6SW5saW5lTGluZXMmLCBJbmxpbmVD
b250ZW50JikgY29uc3Q7CiAKICAgICBjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBtX2xheW91
dFN0YXRlOwogICAgIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgbV9ibG9ja0Zsb3c7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436746</attachid>
            <date>2021-08-29 12:53:36 -0700</date>
            <delta_ts>2021-08-29 17:22:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229654-20210829125335.patch</filename>
            <type>text/plain</type>
            <size>19145</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI2NzQ2MWQ5OGY3MmQ3
ZDEwZjJlYTBhYWZhZmVjODk2ZDYyYjdhOS4uMjM5MDU1ZGE1ZjU1YzhhY2M0MTVkMDVkNzdmNjE5
Y2E1MWNkNTJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTA4LTI5ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIE1vdmUgImxp
bmUgbmVlZHMgaW50ZWdyYWwgc25hcHBpbmciIGNvbXB1dGluZyB0byBJRkMgZnJvbSB0aGUgaW50
ZWdyYXRpb24gbGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyOTY1NAorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisg
ICAgICAgIFRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIG1lcmdpbmcgdGhlIGludGVncmF0aW9u
IGxheWVyIHJ1bnMgd2l0aCBJRkMncyBkaXNwbGF5IHJ1bnMuCisgICAgICAgIFRoaXMgYWxzbyBz
YXZlIGEgbG9vcCBvdmVyIHRoZSBydW5zIHRvIGNvbXB1dGUgdGhlICJsaW5lIG5lZWRzIGludGVn
cmF0aW9uIHBvc2l0aW9uIiBiaXQuCisKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1bnNBbmRV
cGRhdGVHZW9tZXRyeUZvckxpbmVDb250ZW50KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lR2VvbWV0cnkuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGluZUdlb21ldHJ5OjpuZWVkc0ludGVncmFsUG9zaXRpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lR2VvbWV0cnk6OnNldE5lZWRzSW50ZWdyYWxQb3Np
dGlvbik6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5s
aW5lQ29udGVudEJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OklubGluZUNvbnRlbnRCdWlsZGVyOjpidWlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlM
aW5lUnVucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5s
aW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudEJ1aWxkZXI6OmNvbXB1dGVM
aW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWls
ZGVyLmg6CisKIDIwMjEtMDgtMjkgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtMRkNdW0lGQ10gQWRkIGluayBvdmVyZmxvdyB0byB0aGUgbGluZSBydW5zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcApp
bmRleCA4MTY0YzJmZWFmNjlhY2U3YzhhYzQ1NWQ3MjA1YTUwZmM3YjVjMDA5Li43NmQzZmZkNDU2
YjY5ODM2ODZiMjVhMzgxMzVmNDdmYTA2NDY1NTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKQEAgLTYxLDYgKzYxLDEwIEBA
IHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpidWlsZChjb25zdCBMaW5lQnVpbGRl
cjo6TGluZUNvbnRlbnQmIGxpbmVDb250CiB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRl
cjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29uc3QgTGluZUJ1
aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgTGluZUJveCYgbGluZUJveCwg
Y29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwgY29uc3Qgc2l6
ZV90IGxpbmVJbmRleCkKIHsKICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3Jt
YXR0aW5nU3RhdGUoKTsKKyAgICAvLyBMZWdhY3kgaW5saW5lIHRyZWUgaW50ZWdyYWwgcm91bmRz
IHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiBmb3IgY2VydGFpbiBjb250ZW50IChzZWUgTGVnYWN5SW5s
aW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24gYW5kIDo6YWRkVG9MaW5lKS4K
KyAgICAvLyBTZWUgc2hvdWxkQ2xlYXJEZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJh
c2VsaW5lIGluIExlZ2FjeUlubGluZUZsb3dCb3g6OmFkZFRvTGluZS4KKyAgICBhdXRvIGxpbmVO
ZWVkSW50ZWdyYWxQb3NpdGlvbiA9IHRydWU7CisgICAgYXV0byYgcm9vdFN0eWxlID0gcm9vdCgp
LnN0eWxlKCk7CiAgICAgLy8gQ3JlYXRlIHRoZSBpbmxpbmUgcnVucyBvbiB0aGUgY3VycmVudCBs
aW5lLiBUaGlzIGlzIG1vc3RseSB0ZXh0IGFuZCBhdG9taWMgaW5saW5lIHJ1bnMuCiAgICAgZm9y
IChhdXRvJiBsaW5lUnVuIDogbGluZUNvbnRlbnQucnVucykgewogICAgICAgICBhdXRvJiBsYXlv
dXRCb3ggPSBsaW5lUnVuLmxheW91dEJveCgpOwpAQCAtMTAyLDYgKzEwNiw4IEBAIHZvaWQgSW5s
aW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JM
aW5lQ29udGVudChjb25zCiAgICAgICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRp
bmdTdGF0ZS5ib3hHZW9tZXRyeShsYXlvdXRCb3gpOwogICAgICAgICAgICAgYm94R2VvbWV0cnku
c2V0TG9naWNhbFRvcExlZnQodG9MYXlvdXRQb2ludChsaW5lQnJlYWtCb3hSZWN0LnRvcExlZnQo
KSkpOwogICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveEhlaWdodCh0b0xheW91
dFVuaXQobGluZUJyZWFrQm94UmVjdC5oZWlnaHQoKSkpOworICAgICAgICAgICAgaWYgKCFmb3Jt
YXR0aW5nU3RhdGUubGF5b3V0U3RhdGUoKS5pblN0YW5kYXJkc01vZGUoKSkKKyAgICAgICAgICAg
ICAgICBsaW5lTmVlZEludGVncmFsUG9zaXRpb24gPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6Qm94OiB7CkBAIC0x
MTUsNiArMTIxLDcgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1
bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnMKICAgICAgICAgICAgIC8vIE5v
dGUgdGhhdCBpbmxpbmUgYm94ZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBsaW5lIGFuZCB0aGVpciB0
b3AgcG9zaXRpb24gY2FuIGJlIG5lZ2F0aXZlLgogICAgICAgICAgICAgLy8gQXRvbWljIGlubGlu
ZSBib3hlcyBhcmUgYWxsIHNldC4gVGhlaXIgbWFyZ2luL2JvcmRlci9jb250ZW50IGJveCBnZW9t
ZXRyaWVzIGFyZSBhbHJlYWR5IGNvbXB1dGVkLiBXZSBqdXN0IGhhdmUgdG8gcG9zaXRpb24gdGhl
bSBoZXJlLgogICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQodG9MYXlv
dXRQb2ludChib3JkZXJCb3hMb2dpY2FsVG9wTGVmdCkpOworICAgICAgICAgICAgbGluZU5lZWRJ
bnRlZ3JhbFBvc2l0aW9uID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIElubGluZUl0ZW06OlR5cGU6OklubGluZUJveFN0YXJ0OiB7CkBAIC0xMzQs
NiArMTQxLDE0IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5z
QW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChjb25zCiAgICAgICAgICAgICBib3hHZW9t
ZXRyeS5zZXRDb250ZW50Qm94SGVpZ2h0KGNvbnRlbnRCb3hIZWlnaHQpOwogICAgICAgICAgICAg
YXV0byBjb250ZW50Qm94V2lkdGggPSBsb2dpY2FsUmVjdC53aWR0aCgpIC0gKGJveEdlb21ldHJ5
Lmhvcml6b250YWxCb3JkZXIoKSArIGJveEdlb21ldHJ5Lmhvcml6b250YWxQYWRkaW5nKCkudmFs
dWVfb3IoMF9sdSkpOwogICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveFdpZHRo
KGNvbnRlbnRCb3hXaWR0aCk7CisKKyAgICAgICAgICAgIGlmIChsaW5lTmVlZEludGVncmFsUG9z
aXRpb24pIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBpbmxpbmVCb3hTdHlsZSA9IGxheW91dEJv
eC5zdHlsZSgpOworICAgICAgICAgICAgICAgIGF1dG8gc3R5bGVQcmV2ZW50c0ludGVncmFsU25h
cHBpbmcgPSByb290U3R5bGUubGluZUhlaWdodCgpICE9IGlubGluZUJveFN0eWxlLmxpbmVIZWln
aHQoKSB8fCBpbmxpbmVCb3hTdHlsZS52ZXJ0aWNhbEFsaWduKCkgIT0gVmVydGljYWxBbGlnbjo6
QmFzZWxpbmU7CisgICAgICAgICAgICAgICAgYXV0byBmb250UHJldmVudHNJbnRlZ3JhbFNuYXBw
aW5nID0gIXJvb3RTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCkuaGFzSWRlbnRpY2Fs
QXNjZW50RGVzY2VudEFuZExpbmVHYXAoaW5saW5lQm94U3R5bGUuZm9udENhc2NhZGUoKS5mb250
TWV0cmljcygpKTsKKyAgICAgICAgICAgICAgICBpZiAoc3R5bGVQcmV2ZW50c0ludGVncmFsU25h
cHBpbmcgfHwgZm9udFByZXZlbnRzSW50ZWdyYWxTbmFwcGluZykKKyAgICAgICAgICAgICAgICAg
ICAgbGluZU5lZWRJbnRlZ3JhbFBvc2l0aW9uID0gZmFsc2U7CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMTQxLDYgKzE1
Niw4IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBk
YXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChjb25zCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgIH0KKyAgICAvLyBGSVhNRTogVGhpcyBpcyB0ZW1wb3JhcnkuIFJlbW92ZSB3aGVu
IGxlZ2FjeSBsaW5lIGxheW91dCdzIGludGVncmFsIHNuYXBwaW5nIGlzIHJlbW92ZWQuCisgICAg
Zm9ybWF0dGluZ1N0YXRlLmxpbmVzKCkubGFzdCgpLnNldE5lZWRzSW50ZWdyYWxQb3NpdGlvbihs
aW5lTmVlZEludGVncmFsUG9zaXRpb24pOwogfQogCiB2b2lkIElubGluZURpc3BsYXlDb250ZW50
QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZVNwYW5uaW5nSW5saW5l
Qm94ZXMoY29uc3QgTGluZUJveCYgbGluZUJveCwgY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxp
bmVCb3hMb2dpY2FsVG9wTGVmdCwgY29uc3Qgc2l6ZV90IGxpbmVJbmRleCwgc2l6ZV90IGxpbmVT
cGFubmluZ0lubGluZUJveEluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUdlb21ldHJ5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lR2VvbWV0
cnkuaAppbmRleCBlNjIzNzRkMjExYWE2ZjVlYmVlNjYwZDg1NTRlMjZlM2MzZDZlOWQzLi4zNTU4
NWJjZDQxZjBjMzQ0ZTJiOThkZmNmNjk0NWQ1Mjc0MzY3YjMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lR2VvbWV0
cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMaW5lR2VvbWV0cnkuaApAQCAtNTEsNyArNTEsMTAgQEAgcHVibGljOgogICAgIElu
bGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZW50TG9naWNhbExlZnQ7IH0KICAgICBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsV2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRMb2dpY2FsV2lkdGg7IH0KIAorICAgIGJvb2wg
bmVlZHNJbnRlZ3JhbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0ludGVncmFsUG9z
aXRpb247IH0KKwogICAgIHZvaWQgbW92ZVZlcnRpY2FsbHkoSW5saW5lTGF5b3V0VW5pdCBvZmZz
ZXQpIHsgbV9saW5lQm94TG9naWNhbFJlY3QubW92ZVZlcnRpY2FsbHkob2Zmc2V0KTsgfQorICAg
IHZvaWQgc2V0TmVlZHNJbnRlZ3JhbFBvc2l0aW9uKGJvb2wgbmVlZHNJbnRlZ3JhbFBvc2l0aW9u
KSB7IG1fbmVlZHNJbnRlZ3JhbFBvc2l0aW9uID0gbmVlZHNJbnRlZ3JhbFBvc2l0aW9uOyB9CiAK
IHByaXZhdGU6CiAgICAgLy8gVGhpcyBpcyBsaW5lIGJveCBnZW9tZXRyeSAoc2VlIGh0dHBzOi8v
d3d3LnczLm9yZy9UUi9jc3MtaW5saW5lLTMvI2xpbmUtYm94KS4KQEAgLTYzLDYgKzY2LDkgQEAg
cHJpdmF0ZToKICAgICBJbmxpbmVMYXlvdXRVbml0IG1fYWxpZ21lbnRCYXNlbGluZSB7IDAgfTsK
ICAgICBJbmxpbmVMYXlvdXRVbml0IG1fY29udGVudExvZ2ljYWxMZWZ0IHsgMCB9OwogICAgIElu
bGluZUxheW91dFVuaXQgbV9jb250ZW50TG9naWNhbFdpZHRoIHsgMCB9OworICAgIC8vIEZJWE1F
OiBUaGlzIGlzIGp1c3QgbWF0Y2hpbmcgbGVnYWN5IGxpbmUgbGF5b3V0IGludGVncmFsIHNuYXBw
aW5nLgorICAgIC8vIFNlZSBzaG91bGRDbGVhckRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0
QW5kQmFzZWxpbmUgaW4gTGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lLgorICAgIGJvb2wg
bV9uZWVkc0ludGVncmFsUG9zaXRpb24geyB0cnVlIH07CiB9OwogCiBpbmxpbmUgTGluZUdlb21l
dHJ5OjpMaW5lR2VvbWV0cnkoY29uc3QgSW5saW5lUmVjdCYgbGluZUJveExvZ2ljYWxSZWN0LCBF
bmNsb3NpbmdUb3BBbmRCb3R0b20gZW5jbG9zaW5nVG9wQW5kQm90dG9tLCBJbmxpbmVMYXlvdXRV
bml0IGFsaWdtZW50QmFzZWxpbmUsIElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0
LCBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsV2lkdGgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250
ZW50QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5jcHAKaW5kZXggOTBhZGI2YWY1NTRhMjJh
YzBjYmE1ZTdkYzY4ZWUxMTM0YzE4MjM4ZS4uNjcxMzEyMTVlMTY1MjRjYjI3OTdhMjAwNWI2NmI0
YjYzOTMyZjliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRC
dWlsZGVyLmNwcApAQCAtNDQsMTIgKzQ0LDYgQEAgbmFtZXNwYWNlIExheW91dEludGVncmF0aW9u
IHsKIAogI2RlZmluZSBQUk9DRVNTX0JJRElfQ09OVEVOVCAwCiAKLXN0cnVjdCBMaW5lTGV2ZWxW
aXN1YWxBZGp1c3RtZW50c0ZvclJ1bnMgewotICAgIGJvb2wgbmVlZHNJbnRlZ3JhbFBvc2l0aW9u
IHsgZmFsc2UgfTsKLSAgICAvLyBJdCdzIG9ubHkgJ3RleHQtb3ZlcmZsb3c6IGVsbGlwc2lzJyBm
b3Igbm93LgotICAgIGJvb2wgbmVlZHNUcmFpbGluZ0NvbnRlbnRSZXBsYWNlbWVudCB7IGZhbHNl
IH07Ci19OwotCiBpbmxpbmUgTGF5b3V0OjpMaW5lR2VvbWV0cnk6OkVuY2xvc2luZ1RvcEFuZEJv
dHRvbSBvcGVyYXRvcisoY29uc3QgTGF5b3V0OjpMaW5lR2VvbWV0cnk6OkVuY2xvc2luZ1RvcEFu
ZEJvdHRvbSBlbmNsb3NpbmdUb3BBbmRCb3R0b20sIGZsb2F0IG9mZnNldCkKIHsKICAgICByZXR1
cm4geyBlbmNsb3NpbmdUb3BBbmRCb3R0b20udG9wICsgb2Zmc2V0LCBlbmNsb3NpbmdUb3BBbmRC
b3R0b20uYm90dG9tICsgb2Zmc2V0IH07CkBAIC0xNjQsNzUgKzE1OCwxMSBAQCBJbmxpbmVDb250
ZW50QnVpbGRlcjo6SW5saW5lQ29udGVudEJ1aWxkZXIoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0
ZSYgbGF5b3V0U3RhdAogCiB2b2lkIElubGluZUNvbnRlbnRCdWlsZGVyOjpidWlsZChjb25zdCBM
YXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZSYgaW5saW5lRm9ybWF0dGluZ1N0YXRlLCBJbmxp
bmVDb250ZW50JiBpbmxpbmVDb250ZW50KSBjb25zdAogewotICAgIGF1dG8gbGluZUxldmVsVmlz
dWFsQWRqdXN0bWVudHNGb3JSdW5zID0gY29tcHV0ZUxpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRz
Rm9yUnVucyhpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGluZXMoKSwgaW5saW5lRm9ybWF0dGluZ1N0
YXRlLmxpbmVSdW5zKCkpOwotICAgIGNyZWF0ZURpc3BsYXlMaW5lUnVucyhpbmxpbmVGb3JtYXR0
aW5nU3RhdGUubGluZXMoKSwgaW5saW5lRm9ybWF0dGluZ1N0YXRlLmxpbmVSdW5zKCksIGlubGlu
ZUNvbnRlbnQsIGxpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVucyk7Ci0gICAgY3JlYXRl
RGlzcGxheUxpbmVzKGlubGluZUZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLCBpbmxpbmVDb250ZW50
LCBsaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnMpOworICAgIGNyZWF0ZURpc3BsYXlM
aW5lUnVucyhpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGluZXMoKSwgaW5saW5lRm9ybWF0dGluZ1N0
YXRlLmxpbmVSdW5zKCksIGlubGluZUNvbnRlbnQpOworICAgIGNyZWF0ZURpc3BsYXlMaW5lcyhp
bmxpbmVGb3JtYXR0aW5nU3RhdGUubGluZXMoKSwgaW5saW5lQ29udGVudCk7CiB9CiAKLUlubGlu
ZUNvbnRlbnRCdWlsZGVyOjpMaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnNMaXN0IElu
bGluZUNvbnRlbnRCdWlsZGVyOjpjb21wdXRlTGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNGb3JS
dW5zKGNvbnN0IExheW91dDo6SW5saW5lTGluZXMmIGxpbmVzLCBjb25zdCBMYXlvdXQ6OklubGlu
ZUxpbmVSdW5zJiBsaW5lUnVucykgY29uc3QKLXsKLSAgICBhdXRvIGxpbmVMZXZlbFZpc3VhbEFk
anVzdG1lbnRzRm9yUnVucyA9IExpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVuc0xpc3Qg
eyBsaW5lcy5zaXplKCkgfTsKLSAgICBhdXRvJiByb290U3R5bGUgPSBtX2xheW91dFN0YXRlLnJv
b3QoKS5zdHlsZSgpOwotCi0gICAgYXV0byBpbmxpbmVMZXZlbEJveFByZXZlbnRzSW50ZWdyYWxQ
b3NpdGlvbiA9IHN0ZDo6b3B0aW9uYWw8Ym9vbD4geyB9OwotICAgIHNpemVfdCBsaW5lSW5kZXhU
b0NoZWNrID0gMDsKLSAgICBmb3IgKGF1dG8mIGxpbmVSdW4gOiBsaW5lUnVucykgewotICAgICAg
ICBhdXRvIGxpbmVJbmRleCA9IGxpbmVSdW4ubGluZUluZGV4KCk7Ci0gICAgICAgIGF1dG8mIGxh
eW91dEJveCA9IGxpbmVSdW4ubGF5b3V0Qm94KCk7Ci0KLSAgICAgICAgaWYgKGxpbmVJbmRleFRv
Q2hlY2sgIT0gbGluZUluZGV4KSB7Ci0gICAgICAgICAgICBhdXRvIGxpbmVOZWVkc0ludGVncmFs
UG9zaXRpb25pbmcgPSBbJl0gewotICAgICAgICAgICAgICAgIGlmICghaW5saW5lTGV2ZWxCb3hQ
cmV2ZW50c0ludGVncmFsUG9zaXRpb24uaGFzX3ZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gVGhpcyBsaW5lIGRvZXMgbm90IGhhdmUgYW55IG5vbi1yb290IGlubGluZSBib3hlcy4K
LSAgICAgICAgICAgICAgICAgICAgLy8gTGluZXMgbGlrZSB0aGlzIHdpdGggcm9vdCBpbmxpbmUg
Ym94IG9ubHkgZm9yY2UgaW50ZWdyYWwgcG9zaXRpb25pbmcuCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4g
ISppbmxpbmVMZXZlbEJveFByZXZlbnRzSW50ZWdyYWxQb3NpdGlvbjsKLSAgICAgICAgICAgIH07
Ci0gICAgICAgICAgICBsaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnNbbGluZUluZGV4
VG9DaGVja10ubmVlZHNJbnRlZ3JhbFBvc2l0aW9uID0gbGluZU5lZWRzSW50ZWdyYWxQb3NpdGlv
bmluZygpOwotICAgICAgICAgICAgbGluZUluZGV4VG9DaGVjayA9IGxpbmVJbmRleDsKLSAgICAg
ICAgICAgIGlubGluZUxldmVsQm94UHJldmVudHNJbnRlZ3JhbFBvc2l0aW9uID0geyB9OwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKCFsaW5lUnVuLmlzTm9uUm9vdElubGluZUxldmVsQm94KCkg
fHwgKGlubGluZUxldmVsQm94UHJldmVudHNJbnRlZ3JhbFBvc2l0aW9uLmhhc192YWx1ZSgpICYm
ICppbmxpbmVMZXZlbEJveFByZXZlbnRzSW50ZWdyYWxQb3NpdGlvbikpCi0gICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICBhdXRvIGlubGluZUxldmVsQm94UHJldmVudHNMZWdhY3lJbnRl
Z3JhbFZlcnRpY2FsUG9zaXRpb24gPSBbJl0gewotICAgICAgICAgICAgQVNTRVJUKGxpbmVSdW4u
aXNOb25Sb290SW5saW5lTGV2ZWxCb3goKSk7Ci0gICAgICAgICAgICAvLyBMZWdhY3kgaW5saW5l
IHRyZWUgaW50ZWdyYWwgcm91bmRzIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiBmb3IgY2VydGFpbiBj
b250ZW50IChzZWUgTGVnYWN5SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rp
b24gYW5kIDo6YWRkVG9MaW5lKS4KLSAgICAgICAgICAgIC8vIFNlZSBzaG91bGRDbGVhckRlc2Nl
bmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUgaW4gTGVnYWN5SW5saW5lRmxvd0Jv
eDo6YWRkVG9MaW5lLgotICAgICAgICAgICAgYXV0byBjb250ZW50UHJldmVudHNJbnRlZ3JhbFNu
YXBwaW5nID0gbGluZVJ1bi5pc0F0b21pY0lubGluZUxldmVsQm94KCkgfHwgKGxpbmVSdW4uaXNM
aW5lQnJlYWtCb3goKSAmJiAhbV9sYXlvdXRTdGF0ZS5pblN0YW5kYXJkc01vZGUoKSk7Ci0gICAg
ICAgICAgICBpZiAoY29udGVudFByZXZlbnRzSW50ZWdyYWxTbmFwcGluZykKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgICAgYXV0byYgaW5saW5lTGV2ZWxCb3hTdHls
ZSA9IGxheW91dEJveC5zdHlsZSgpOwotICAgICAgICAgICAgYXV0byBzdHlsZVByZXZlbnRzSW50
ZWdyYWxTbmFwcGluZyA9IHJvb3RTdHlsZS5saW5lSGVpZ2h0KCkgIT0gaW5saW5lTGV2ZWxCb3hT
dHlsZS5saW5lSGVpZ2h0KCkgfHwgaW5saW5lTGV2ZWxCb3hTdHlsZS52ZXJ0aWNhbEFsaWduKCkg
IT0gVmVydGljYWxBbGlnbjo6QmFzZWxpbmU7Ci0gICAgICAgICAgICBpZiAoc3R5bGVQcmV2ZW50
c0ludGVncmFsU25hcHBpbmcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAg
ICAgICAgIGF1dG8mIHJvb3RGb250TWV0cmljcyA9IHJvb3RTdHlsZS5mb250Q2FzY2FkZSgpLmZv
bnRNZXRyaWNzKCk7Ci0gICAgICAgICAgICBhdXRvJiBpbmxpbmVMZXZlbEJveEZvbnRNZXRyaWNz
ID0gaW5saW5lTGV2ZWxCb3hTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCk7Ci0gICAg
ICAgICAgICBhdXRvIGZvbnRQcmV2ZW50c0ludGVncmFsU25hcHBpbmcgPSAhcm9vdEZvbnRNZXRy
aWNzLmhhc0lkZW50aWNhbEFzY2VudERlc2NlbnRBbmRMaW5lR2FwKGlubGluZUxldmVsQm94Rm9u
dE1ldHJpY3MpOwotICAgICAgICAgICAgcmV0dXJuIGZvbnRQcmV2ZW50c0ludGVncmFsU25hcHBp
bmc7Ci0gICAgICAgIH07Ci0gICAgICAgIGlubGluZUxldmVsQm94UHJldmVudHNJbnRlZ3JhbFBv
c2l0aW9uID0gaW5saW5lTGV2ZWxCb3hQcmV2ZW50c0xlZ2FjeUludGVncmFsVmVydGljYWxQb3Np
dGlvbigpOwotICAgIH0KLSAgICBsaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnNbbGlu
ZUluZGV4VG9DaGVja10ubmVlZHNJbnRlZ3JhbFBvc2l0aW9uID0gIWlubGluZUxldmVsQm94UHJl
dmVudHNJbnRlZ3JhbFBvc2l0aW9uLmhhc192YWx1ZSgpIHx8ICEqaW5saW5lTGV2ZWxCb3hQcmV2
ZW50c0ludGVncmFsUG9zaXRpb247Ci0KLSAgICBhdXRvIHNob3VsZENoZWNrSG9yaXpvbnRhbE92
ZXJmbG93Rm9yQ29udGVudFJlcGxhY2VtZW50ID0gcm9vdFN0eWxlLm92ZXJmbG93WCgpID09IE92
ZXJmbG93OjpIaWRkZW4gJiYgcm9vdFN0eWxlLnRleHRPdmVyZmxvdygpICE9IFRleHRPdmVyZmxv
dzo6Q2xpcDsKLSAgICBpZiAoIXNob3VsZENoZWNrSG9yaXpvbnRhbE92ZXJmbG93Rm9yQ29udGVu
dFJlcGxhY2VtZW50KQotICAgICAgICByZXR1cm4gbGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNG
b3JSdW5zOwotCi0gICAgZm9yIChzaXplX3QgbGluZUluZGV4ID0gMDsgbGluZUluZGV4IDwgbGlu
ZXMuc2l6ZSgpOyArK2xpbmVJbmRleCkgewotICAgICAgICBhdXRvJiBsaW5lID0gbGluZXNbbGlu
ZUluZGV4XTsKLSAgICAgICAgYXV0byBsaW5lQm94TG9naWNhbFdpZHRoID0gbGluZS5saW5lQm94
TG9naWNhbFJlY3QoKS53aWR0aCgpOwotICAgICAgICBhdXRvIG92ZXJmbG93V2lkdGggPSBsaW5l
T3ZlcmZsb3dXaWR0aChtX2Jsb2NrRmxvdywgbGluZUJveExvZ2ljYWxXaWR0aCwgbGluZS5jb250
ZW50TG9naWNhbFdpZHRoKCkpOwotICAgICAgICBsaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0Zv
clJ1bnNbbGluZUluZGV4XS5uZWVkc1RyYWlsaW5nQ29udGVudFJlcGxhY2VtZW50ID0gb3ZlcmZs
b3dXaWR0aCA+IGxpbmVCb3hMb2dpY2FsV2lkdGg7Ci0gICAgfQotICAgIHJldHVybiBsaW5lTGV2
ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnM7Ci19Ci0KLXZvaWQgSW5saW5lQ29udGVudEJ1aWxk
ZXI6OmNyZWF0ZURpc3BsYXlMaW5lUnVucyhjb25zdCBMYXlvdXQ6OklubGluZUxpbmVzJiBsaW5l
cywgY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lUnVucyYgbGluZVJ1bnMsIElubGluZUNvbnRlbnQm
IGlubGluZUNvbnRlbnQsIGNvbnN0IExpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVuc0xp
c3QmIGxpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVucykgY29uc3QKK3ZvaWQgSW5saW5l
Q29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lUnVucyhjb25zdCBMYXlvdXQ6OklubGlu
ZUxpbmVzJiBsaW5lcywgY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lUnVucyYgbGluZVJ1bnMsIElu
bGluZUNvbnRlbnQmIGlubGluZUNvbnRlbnQpIGNvbnN0CiB7CiAgICAgaWYgKGxpbmVSdW5zLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjYxLDcgKzE5MSw3IEBAIHZvaWQgSW5saW5l
Q29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lUnVucyhjb25zdCBMYXlvdXQ6OklubGlu
ZUxpbmVzJiBsaW5lCiAgICAgICAgIGF1dG8gaW5rT3ZlcmZsb3cgPSBGbG9hdFJlY3QgeyBsaW5l
UnVuLmlua092ZXJmbG93KCkgfTsKICAgICAgICAgYXV0byYgZ2VvbWV0cnkgPSBtX2xheW91dFN0
YXRlLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7CiAgICAgICAgIHJ1blJlY3Quc2V0U2l6ZSh7
IGdlb21ldHJ5LmJvcmRlckJveFdpZHRoKCksIGdlb21ldHJ5LmJvcmRlckJveEhlaWdodCgpIH0p
OwotICAgICAgICBpZiAobGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zW2xpbmVJbmRl
eF0ubmVlZHNJbnRlZ3JhbFBvc2l0aW9uKSB7CisgICAgICAgIGlmIChsaW5lc1tsaW5lSW5kZXhd
Lm5lZWRzSW50ZWdyYWxQb3NpdGlvbigpKSB7CiAgICAgICAgICAgICBydW5SZWN0LnNldFkocm91
bmRUb0ludChydW5SZWN0LnkoKSkpOwogICAgICAgICAgICAgaW5rT3ZlcmZsb3cuc2V0WShyb3Vu
ZFRvSW50KGlua092ZXJmbG93LnkoKSkpOwogICAgICAgICB9CkBAIC0yODYsMTAgKzIxNiw5IEBA
IHZvaWQgSW5saW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lUnVucyhjb25zdCBM
YXlvdXQ6OklubGluZUxpbmVzJiBsaW5lCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXJ0T2Zm
c2V0IDwgZW5kT2Zmc2V0KTsKICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gbGluZVJ1bi5sYXlv
dXRCb3goKTsKICAgICAgICAgYXV0byBsaW5lSW5kZXggPSBsaW5lUnVuLmxpbmVJbmRleCgpOwot
ICAgICAgICBhdXRvJiBsaW5lQm94TG9naWNhbFJlY3QgPSBsaW5lc1tsaW5lSW5kZXhdLmxpbmVC
b3hMb2dpY2FsUmVjdCgpOwogICAgICAgICBhdXRvIHJ1blJlY3QgPSBGbG9hdFJlY3QgeyBsaW5l
UnVuLmxvZ2ljYWxSZWN0KCkgfTsKICAgICAgICAgYXV0byBpbmtPdmVyZmxvdyA9IEZsb2F0UmVj
dCB7IGxpbmVSdW4uaW5rT3ZlcmZsb3coKSB9OwotICAgICAgICBpZiAobGluZUxldmVsVmlzdWFs
QWRqdXN0bWVudHNGb3JSdW5zW2xpbmVJbmRleF0ubmVlZHNJbnRlZ3JhbFBvc2l0aW9uKSB7Cisg
ICAgICAgIGlmIChsaW5lc1tsaW5lSW5kZXhdLm5lZWRzSW50ZWdyYWxQb3NpdGlvbigpKSB7CiAg
ICAgICAgICAgICBydW5SZWN0LnNldFkocm91bmRUb0ludChydW5SZWN0LnkoKSkpOwogICAgICAg
ICAgICAgaW5rT3ZlcmZsb3cuc2V0WShyb3VuZFRvSW50KGlua092ZXJmbG93LnkoKSkpOwogICAg
ICAgICB9CkBAIC0zMDAsMjMgKzIyOSw2IEBAIHZvaWQgSW5saW5lQ29udGVudEJ1aWxkZXI6OmNy
ZWF0ZURpc3BsYXlMaW5lUnVucyhjb25zdCBMYXlvdXQ6OklubGluZUxpbmVzJiBsaW5lCiAgICAg
ICAgICAgICBhdXRvIG9yaWdpbmFsQ29udGVudCA9IHRleHQtPmNvbnRlbnQoKS5zdWJzdHJpbmco
dGV4dC0+c3RhcnQoKSwgdGV4dC0+bGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKHRleHQtPm5l
ZWRzSHlwaGVuKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcob3JpZ2luYWxD
b250ZW50LCBzdHlsZS5oeXBoZW5TdHJpbmcoKSk7Ci0gICAgICAgICAgICBpZiAobGluZUxldmVs
VmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zW2xpbmVJbmRleF0ubmVlZHNUcmFpbGluZ0NvbnRlbnRS
ZXBsYWNlbWVudCkgewotICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSBpdCdzIGVsbGlwc2lz
IHJlcGxhY2VtZW50IG9ubHksIGJ1dCBhZGRpbmcgc3VwcG9ydCBmb3IgInRleHQtb3ZlcmZsb3c6
IHN0cmluZyIgc2hvdWxkIGJlIHJlbGF0aXZlbHkgc2ltcGxlLgotICAgICAgICAgICAgICAgIGlm
IChoYXNBZGp1c3RlZFRyYWlsaW5nTGluZUxpc3RbbGluZUluZGV4XSkgewotICAgICAgICAgICAg
ICAgICAgICAvLyBUaGlzIGxpbmUgYWxyZWFkeSBoYXMgYWRqdXN0ZWQgdHJhaWxpbmcuIEFueSBy
dW5zIGFmdGVyIHRoZSBlbGxpcHNpcyBzaG91bGQgcmVuZGVyIGJsYW5rLgotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgYXV0byBydW5Mb2dpY2FsUmVjdCA9IGxpbmVSdW4ubG9naWNhbFJlY3QoKTsKLSAg
ICAgICAgICAgICAgICBhdXRvIGVsbGlwc2lzV2lkdGggPSBzdHlsZS5mb250Q2FzY2FkZSgpLndp
ZHRoKFdlYkNvcmU6OlRleHRSdW4geyAmaG9yaXpvbnRhbEVsbGlwc2lzIH0pOwotICAgICAgICAg
ICAgICAgIGlmIChydW5Mb2dpY2FsUmVjdC5yaWdodCgpICsgZWxsaXBzaXNXaWR0aCA+IGxpbmVC
b3hMb2dpY2FsUmVjdC5yaWdodCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBuZXh0
IHJ1biB3aXRoIGVsbGlwc2lzIHdvdWxkIHN1cmVseSBvdmVyZmxvdy4gU28gbGV0J3MganVzdCBh
ZGQgaXQgdG8gdGhpcyBydW4gZXZlbiBpZgotICAgICAgICAgICAgICAgICAgICAvLyBpdCBtYWtl
cyB0aGUgcnVuIHdpZGVyIHRoYW4gaXQgb3JpZ2luYWxseSB3YXMuCi0gICAgICAgICAgICAgICAg
ICAgIGhhc0FkanVzdGVkVHJhaWxpbmdMaW5lTGlzdFtsaW5lSW5kZXhdID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICAgICAgZmxvYXQgcmVzdWx0V2lkdGggPSAwOwotICAgICAgICAgICAgICAgICAg
ICBhdXRvIG1heFdpZHRoID0gbGluZUJveExvZ2ljYWxSZWN0LndpZHRoKCkgLSBydW5Mb2dpY2Fs
UmVjdC5sZWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmdUcnVuY2F0b3I6
OnJpZ2h0VHJ1bmNhdGUob3JpZ2luYWxDb250ZW50LCBtYXhXaWR0aCwgc3R5bGUuZm9udENhc2Nh
ZGUoKSwgcmVzdWx0V2lkdGgsIHRydWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgfTsKIApAQCAtMzM2LDcg
KzI0OCw3IEBAIHZvaWQgSW5saW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lUnVu
cyhjb25zdCBMYXlvdXQ6OklubGluZUxpbmVzJiBsaW5lCiAgICAgfQogfQogCi12b2lkIElubGlu
ZUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVEaXNwbGF5TGluZXMoY29uc3QgTGF5b3V0OjpJbmxpbmVM
aW5lcyYgbGluZXMsIElubGluZUNvbnRlbnQmIGlubGluZUNvbnRlbnQsIGNvbnN0IExpbmVMZXZl
bFZpc3VhbEFkanVzdG1lbnRzRm9yUnVuc0xpc3QmIGxpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRz
Rm9yUnVucykgY29uc3QKK3ZvaWQgSW5saW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlM
aW5lcyhjb25zdCBMYXlvdXQ6OklubGluZUxpbmVzJiBsaW5lcywgSW5saW5lQ29udGVudCYgaW5s
aW5lQ29udGVudCkgY29uc3QKIHsKICAgICBhdXRvJiBydW5zID0gaW5saW5lQ29udGVudC5ydW5z
OwogICAgIGF1dG8mIG5vblJvb3RJbmxpbmVCb3hlcyA9IGlubGluZUNvbnRlbnQubm9uUm9vdElu
bGluZUJveGVzOwpAQCAtMzgxLDcgKzI5Myw3IEBAIHZvaWQgSW5saW5lQ29udGVudEJ1aWxkZXI6
OmNyZWF0ZURpc3BsYXlMaW5lcyhjb25zdCBMYXlvdXQ6OklubGluZUxpbmVzJiBsaW5lcywKICAg
ICAgICAgYXV0byBhZGp1c3RlZExpbmVCb3hSZWN0ID0gRmxvYXRSZWN0IHsgbGluZUJveExvZ2lj
YWxSZWN0IH07CiAgICAgICAgIC8vIEZpbmFsIGVuY2xvc2luZyB0b3AgYW5kIGJvdHRvbSB2YWx1
ZXMgYXJlIGluIHRoZSBzYW1lIGNvb3JkaW5hdGUgc3BhY2UgYXMgdGhlIGxpbmUgaXRzZWxmLgog
ICAgICAgICBhdXRvIGVuY2xvc2luZ1RvcEFuZEJvdHRvbSA9IGxpbmUuZW5jbG9zaW5nVG9wQW5k
Qm90dG9tKCkgKyBsaW5lQm94TG9naWNhbFJlY3QudG9wKCk7Ci0gICAgICAgIGlmIChsaW5lTGV2
ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnNbbGluZUluZGV4XS5uZWVkc0ludGVncmFsUG9zaXRp
b24pIHsKKyAgICAgICAgaWYgKGxpbmUubmVlZHNJbnRlZ3JhbFBvc2l0aW9uKCkpIHsKICAgICAg
ICAgICAgIGFkanVzdGVkTGluZUJveFJlY3Quc2V0WShyb3VuZFRvSW50KGFkanVzdGVkTGluZUJv
eFJlY3QueSgpKSk7CiAgICAgICAgICAgICBlbmNsb3NpbmdUb3BBbmRCb3R0b20udG9wID0gcm91
bmRUb0ludChlbmNsb3NpbmdUb3BBbmRCb3R0b20udG9wKTsKICAgICAgICAgICAgIGVuY2xvc2lu
Z1RvcEFuZEJvdHRvbS5ib3R0b20gPSByb3VuZFRvSW50KGVuY2xvc2luZ1RvcEFuZEJvdHRvbS5i
b3R0b20pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmgK
aW5kZXggZmE5MDgwMDZhOTQyOWEyNmNhN2ZmMmFlMThjMGFjN2FjM2NmY2Y5Mi4uNjI5YWZhMDUy
ODFlNWY1YWVjMGNmZmZhYzIzOWM2MjdhYWM1MDkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5oCkBAIC0zOCw3ICszOCw2IEBAIG5hbWVzcGFjZSBM
YXlvdXRJbnRlZ3JhdGlvbiB7CiAKIGNsYXNzIEJveFRyZWU7CiBzdHJ1Y3QgSW5saW5lQ29udGVu
dDsKLXN0cnVjdCBMaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnM7CiAKIGNsYXNzIElu
bGluZUNvbnRlbnRCdWlsZGVyIHsKIHB1YmxpYzoKQEAgLTQ3LDExICs0Niw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGJ1aWxkKGNvbnN0IExheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlJiwgSW5s
aW5lQ29udGVudCYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHVzaW5nIExpbmVMZXZlbFZpc3Vh
bEFkanVzdG1lbnRzRm9yUnVuc0xpc3QgPSBWZWN0b3I8TGluZUxldmVsVmlzdWFsQWRqdXN0bWVu
dHNGb3JSdW5zPjsKLQotICAgIExpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVuc0xpc3Qg
Y29tcHV0ZUxpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVucyhjb25zdCBMYXlvdXQ6Oklu
bGluZUxpbmVzJiwgY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lUnVucyYpIGNvbnN0OwotICAgIHZv
aWQgY3JlYXRlRGlzcGxheUxpbmVSdW5zKGNvbnN0IExheW91dDo6SW5saW5lTGluZXMmLCBjb25z
dCBMYXlvdXQ6OklubGluZUxpbmVSdW5zJiwgSW5saW5lQ29udGVudCYsIGNvbnN0IExpbmVMZXZl
bFZpc3VhbEFkanVzdG1lbnRzRm9yUnVuc0xpc3QmKSBjb25zdDsKLSAgICB2b2lkIGNyZWF0ZURp
c3BsYXlMaW5lcyhjb25zdCBMYXlvdXQ6OklubGluZUxpbmVzJiwgSW5saW5lQ29udGVudCYsIGNv
bnN0IExpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVuc0xpc3QmKSBjb25zdDsKKyAgICB2
b2lkIGNyZWF0ZURpc3BsYXlMaW5lUnVucyhjb25zdCBMYXlvdXQ6OklubGluZUxpbmVzJiwgY29u
c3QgTGF5b3V0OjpJbmxpbmVMaW5lUnVucyYsIElubGluZUNvbnRlbnQmKSBjb25zdDsKKyAgICB2
b2lkIGNyZWF0ZURpc3BsYXlMaW5lcyhjb25zdCBMYXlvdXQ6OklubGluZUxpbmVzJiwgSW5saW5l
Q29udGVudCYpIGNvbnN0OwogCiAgICAgY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbV9sYXlv
dXRTdGF0ZTsKICAgICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIG1fYmxvY2tGbG93Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436752</attachid>
            <date>2021-08-29 17:22:04 -0700</date>
            <delta_ts>2021-08-29 19:19:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229654-20210829172203.patch</filename>
            <type>text/plain</type>
            <size>20798</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI2NzQ2MWQ5OGY3MmQ3
ZDEwZjJlYTBhYWZhZmVjODk2ZDYyYjdhOS4uMjM5MDU1ZGE1ZjU1YzhhY2M0MTVkMDVkNzdmNjE5
Y2E1MWNkNTJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTA4LTI5ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIE1vdmUgImxp
bmUgbmVlZHMgaW50ZWdyYWwgc25hcHBpbmciIGNvbXB1dGluZyB0byBJRkMgZnJvbSB0aGUgaW50
ZWdyYXRpb24gbGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyOTY1NAorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisg
ICAgICAgIFRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIG1lcmdpbmcgdGhlIGludGVncmF0aW9u
IGxheWVyIHJ1bnMgd2l0aCBJRkMncyBkaXNwbGF5IHJ1bnMuCisgICAgICAgIFRoaXMgYWxzbyBz
YXZlIGEgbG9vcCBvdmVyIHRoZSBydW5zIHRvIGNvbXB1dGUgdGhlICJsaW5lIG5lZWRzIGludGVn
cmF0aW9uIHBvc2l0aW9uIiBiaXQuCisKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1bnNBbmRV
cGRhdGVHZW9tZXRyeUZvckxpbmVDb250ZW50KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lR2VvbWV0cnkuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGluZUdlb21ldHJ5OjpuZWVkc0ludGVncmFsUG9zaXRpb24gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lR2VvbWV0cnk6OnNldE5lZWRzSW50ZWdyYWxQb3Np
dGlvbik6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5s
aW5lQ29udGVudEJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OklubGluZUNvbnRlbnRCdWlsZGVyOjpidWlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlM
aW5lUnVucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5s
aW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudEJ1aWxkZXI6OmNvbXB1dGVM
aW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWls
ZGVyLmg6CisKIDIwMjEtMDgtMjkgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtMRkNdW0lGQ10gQWRkIGluayBvdmVyZmxvdyB0byB0aGUgbGluZSBydW5zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcApp
bmRleCA4MTY0YzJmZWFmNjlhY2U3YzhhYzQ1NWQ3MjA1YTUwZmM3YjVjMDA5Li40ZjA4ODcyZmNk
NGU2NmIzNmI2ZjEzMDRkYjVkOTY1OTZlZmMxMGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKQEAgLTYxLDYgKzYxLDEwIEBA
IHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpidWlsZChjb25zdCBMaW5lQnVpbGRl
cjo6TGluZUNvbnRlbnQmIGxpbmVDb250CiB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRl
cjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29uc3QgTGluZUJ1
aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgTGluZUJveCYgbGluZUJveCwg
Y29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwgY29uc3Qgc2l6
ZV90IGxpbmVJbmRleCkKIHsKICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3Jt
YXR0aW5nU3RhdGUoKTsKKyAgICAvLyBMZWdhY3kgaW5saW5lIHRyZWUgaW50ZWdyYWwgcm91bmRz
IHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiBmb3IgY2VydGFpbiBjb250ZW50IChzZWUgTGVnYWN5SW5s
aW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24gYW5kIDo6YWRkVG9MaW5lKS4K
KyAgICAvLyBTZWUgc2hvdWxkQ2xlYXJEZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJh
c2VsaW5lIGluIExlZ2FjeUlubGluZUZsb3dCb3g6OmFkZFRvTGluZS4KKyAgICBhdXRvIGxpbmVO
ZWVkSW50ZWdyYWxQb3NpdGlvbiA9IHRydWU7CisgICAgYXV0byYgcm9vdFN0eWxlID0gcm9vdCgp
LnN0eWxlKCk7CiAgICAgLy8gQ3JlYXRlIHRoZSBpbmxpbmUgcnVucyBvbiB0aGUgY3VycmVudCBs
aW5lLiBUaGlzIGlzIG1vc3RseSB0ZXh0IGFuZCBhdG9taWMgaW5saW5lIHJ1bnMuCiAgICAgZm9y
IChhdXRvJiBsaW5lUnVuIDogbGluZUNvbnRlbnQucnVucykgewogICAgICAgICBhdXRvJiBsYXlv
dXRCb3ggPSBsaW5lUnVuLmxheW91dEJveCgpOwpAQCAtMTAyLDYgKzEwNiw4IEBAIHZvaWQgSW5s
aW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JM
aW5lQ29udGVudChjb25zCiAgICAgICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRp
bmdTdGF0ZS5ib3hHZW9tZXRyeShsYXlvdXRCb3gpOwogICAgICAgICAgICAgYm94R2VvbWV0cnku
c2V0TG9naWNhbFRvcExlZnQodG9MYXlvdXRQb2ludChsaW5lQnJlYWtCb3hSZWN0LnRvcExlZnQo
KSkpOwogICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveEhlaWdodCh0b0xheW91
dFVuaXQobGluZUJyZWFrQm94UmVjdC5oZWlnaHQoKSkpOworICAgICAgICAgICAgaWYgKCFmb3Jt
YXR0aW5nU3RhdGUubGF5b3V0U3RhdGUoKS5pblN0YW5kYXJkc01vZGUoKSkKKyAgICAgICAgICAg
ICAgICBsaW5lTmVlZEludGVncmFsUG9zaXRpb24gPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6Qm94OiB7CkBAIC0x
MTUsNiArMTIxLDcgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1
bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnMKICAgICAgICAgICAgIC8vIE5v
dGUgdGhhdCBpbmxpbmUgYm94ZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBsaW5lIGFuZCB0aGVpciB0
b3AgcG9zaXRpb24gY2FuIGJlIG5lZ2F0aXZlLgogICAgICAgICAgICAgLy8gQXRvbWljIGlubGlu
ZSBib3hlcyBhcmUgYWxsIHNldC4gVGhlaXIgbWFyZ2luL2JvcmRlci9jb250ZW50IGJveCBnZW9t
ZXRyaWVzIGFyZSBhbHJlYWR5IGNvbXB1dGVkLiBXZSBqdXN0IGhhdmUgdG8gcG9zaXRpb24gdGhl
bSBoZXJlLgogICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQodG9MYXlv
dXRQb2ludChib3JkZXJCb3hMb2dpY2FsVG9wTGVmdCkpOworICAgICAgICAgICAgbGluZU5lZWRJ
bnRlZ3JhbFBvc2l0aW9uID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIElubGluZUl0ZW06OlR5cGU6OklubGluZUJveFN0YXJ0OiB7CkBAIC0xMzQs
NiArMTQxLDE0IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5z
QW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChjb25zCiAgICAgICAgICAgICBib3hHZW9t
ZXRyeS5zZXRDb250ZW50Qm94SGVpZ2h0KGNvbnRlbnRCb3hIZWlnaHQpOwogICAgICAgICAgICAg
YXV0byBjb250ZW50Qm94V2lkdGggPSBsb2dpY2FsUmVjdC53aWR0aCgpIC0gKGJveEdlb21ldHJ5
Lmhvcml6b250YWxCb3JkZXIoKSArIGJveEdlb21ldHJ5Lmhvcml6b250YWxQYWRkaW5nKCkudmFs
dWVfb3IoMF9sdSkpOwogICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveFdpZHRo
KGNvbnRlbnRCb3hXaWR0aCk7CisKKyAgICAgICAgICAgIGlmIChsaW5lTmVlZEludGVncmFsUG9z
aXRpb24pIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBpbmxpbmVCb3hTdHlsZSA9IGxheW91dEJv
eC5zdHlsZSgpOworICAgICAgICAgICAgICAgIGF1dG8gc3R5bGVQcmV2ZW50c0ludGVncmFsU25h
cHBpbmcgPSByb290U3R5bGUubGluZUhlaWdodCgpICE9IGlubGluZUJveFN0eWxlLmxpbmVIZWln
aHQoKSB8fCBpbmxpbmVCb3hTdHlsZS52ZXJ0aWNhbEFsaWduKCkgIT0gVmVydGljYWxBbGlnbjo6
QmFzZWxpbmU7CisgICAgICAgICAgICAgICAgYXV0byBmb250UHJldmVudHNJbnRlZ3JhbFNuYXBw
aW5nID0gIXJvb3RTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCkuaGFzSWRlbnRpY2Fs
QXNjZW50RGVzY2VudEFuZExpbmVHYXAoaW5saW5lQm94U3R5bGUuZm9udENhc2NhZGUoKS5mb250
TWV0cmljcygpKTsKKyAgICAgICAgICAgICAgICBpZiAoc3R5bGVQcmV2ZW50c0ludGVncmFsU25h
cHBpbmcgfHwgZm9udFByZXZlbnRzSW50ZWdyYWxTbmFwcGluZykKKyAgICAgICAgICAgICAgICAg
ICAgbGluZU5lZWRJbnRlZ3JhbFBvc2l0aW9uID0gZmFsc2U7CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMTQxLDYgKzE1
Niw4IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBk
YXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChjb25zCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgIH0KKyAgICAvLyBGSVhNRTogVGhpcyBpcyB0ZW1wb3JhcnkuIFJlbW92ZSB3aGVu
IGxlZ2FjeSBsaW5lIGxheW91dCdzIGludGVncmFsIHNuYXBwaW5nIGlzIHJlbW92ZWQuCisgICAg
Zm9ybWF0dGluZ1N0YXRlLmxpbmVzKCkubGFzdCgpLnNldE5lZWRzSW50ZWdyYWxQb3NpdGlvbihs
aW5lTmVlZEludGVncmFsUG9zaXRpb24pOwogfQogCiB2b2lkIElubGluZURpc3BsYXlDb250ZW50
QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZVNwYW5uaW5nSW5saW5l
Qm94ZXMoY29uc3QgTGluZUJveCYgbGluZUJveCwgY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxp
bmVCb3hMb2dpY2FsVG9wTGVmdCwgY29uc3Qgc2l6ZV90IGxpbmVJbmRleCwgc2l6ZV90IGxpbmVT
cGFubmluZ0lubGluZUJveEluZGV4KQpAQCAtMTUyLDcgKzE2OSw5IEBAIHZvaWQgSW5saW5lRGlz
cGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lU3Bh
bm5pbmdJbmxpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBhdXRvJiByb290U3R5bGUg
PSByb290KCkuc3R5bGUoKTsKICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3Jt
YXR0aW5nU3RhdGUoKTsKKyAgICBhdXRvIGxpbmVOZWVkSW50ZWdyYWxQb3NpdGlvbiA9IGZvcm1h
dHRpbmdTdGF0ZS5saW5lcygpLmxhc3QoKS5uZWVkc0ludGVncmFsUG9zaXRpb24oKTsKICAgICBm
b3IgKGF1dG8mIGlubGluZUxldmVsQm94IDogbGluZUJveC5ub25Sb290SW5saW5lTGV2ZWxCb3hl
cygpKSB7CiAgICAgICAgIGlmICghaW5saW5lTGV2ZWxCb3guaXNMaW5lU3Bhbm5pbmdJbmxpbmVC
b3goKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTczLDcgKzE5MiwxNyBAQCB2b2lkIElu
bGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9y
TGluZVNwYW5uaW5nSW5saQogCiAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hIZWln
aHQoZW5jbG9zaW5nQm9yZGVyQm94UmVjdC5oZWlnaHQoKSAtIChib3hHZW9tZXRyeS52ZXJ0aWNh
bEJvcmRlcigpICsgYm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVfb3IoMF9sdSkp
KTsKICAgICAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveFdpZHRoKGVuY2xvc2luZ0JvcmRl
ckJveFJlY3Qud2lkdGgoKSAtIChib3hHZW9tZXRyeS5ob3Jpem9udGFsQm9yZGVyKCkgKyBib3hH
ZW9tZXRyeS5ob3Jpem9udGFsUGFkZGluZygpLnZhbHVlX29yKDBfbHUpKSk7CisKKyAgICAgICAg
aWYgKGxpbmVOZWVkSW50ZWdyYWxQb3NpdGlvbikgeworICAgICAgICAgICAgYXV0byYgaW5saW5l
Qm94U3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKKyAgICAgICAgICAgIGF1dG8gc3R5bGVQcmV2
ZW50c0ludGVncmFsU25hcHBpbmcgPSByb290U3R5bGUubGluZUhlaWdodCgpICE9IGlubGluZUJv
eFN0eWxlLmxpbmVIZWlnaHQoKSB8fCBpbmxpbmVCb3hTdHlsZS52ZXJ0aWNhbEFsaWduKCkgIT0g
VmVydGljYWxBbGlnbjo6QmFzZWxpbmU7CisgICAgICAgICAgICBhdXRvIGZvbnRQcmV2ZW50c0lu
dGVncmFsU25hcHBpbmcgPSAhcm9vdFN0eWxlLmZvbnRDYXNjYWRlKCkuZm9udE1ldHJpY3MoKS5o
YXNJZGVudGljYWxBc2NlbnREZXNjZW50QW5kTGluZUdhcChpbmxpbmVCb3hTdHlsZS5mb250Q2Fz
Y2FkZSgpLmZvbnRNZXRyaWNzKCkpOworICAgICAgICAgICAgaWYgKHN0eWxlUHJldmVudHNJbnRl
Z3JhbFNuYXBwaW5nIHx8IGZvbnRQcmV2ZW50c0ludGVncmFsU25hcHBpbmcpCisgICAgICAgICAg
ICAgICAgbGluZU5lZWRJbnRlZ3JhbFBvc2l0aW9uID0gZmFsc2U7CisgICAgICAgIH0KICAgICB9
CisgICAgLy8gRklYTUU6IFRoaXMgaXMgdGVtcG9yYXJ5LiBSZW1vdmUgd2hlbiBsZWdhY3kgbGlu
ZSBsYXlvdXQncyBpbnRlZ3JhbCBzbmFwcGluZyBpcyByZW1vdmVkLgorICAgIGZvcm1hdHRpbmdT
dGF0ZS5saW5lcygpLmxhc3QoKS5zZXROZWVkc0ludGVncmFsUG9zaXRpb24obGluZU5lZWRJbnRl
Z3JhbFBvc2l0aW9uKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUdlb21ldHJ5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lR2VvbWV0
cnkuaAppbmRleCBlNjIzNzRkMjExYWE2ZjVlYmVlNjYwZDg1NTRlMjZlM2MzZDZlOWQzLi4zNTU4
NWJjZDQxZjBjMzQ0ZTJiOThkZmNmNjk0NWQ1Mjc0MzY3YjMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lR2VvbWV0
cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMaW5lR2VvbWV0cnkuaApAQCAtNTEsNyArNTEsMTAgQEAgcHVibGljOgogICAgIElu
bGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZW50TG9naWNhbExlZnQ7IH0KICAgICBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsV2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRMb2dpY2FsV2lkdGg7IH0KIAorICAgIGJvb2wg
bmVlZHNJbnRlZ3JhbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0ludGVncmFsUG9z
aXRpb247IH0KKwogICAgIHZvaWQgbW92ZVZlcnRpY2FsbHkoSW5saW5lTGF5b3V0VW5pdCBvZmZz
ZXQpIHsgbV9saW5lQm94TG9naWNhbFJlY3QubW92ZVZlcnRpY2FsbHkob2Zmc2V0KTsgfQorICAg
IHZvaWQgc2V0TmVlZHNJbnRlZ3JhbFBvc2l0aW9uKGJvb2wgbmVlZHNJbnRlZ3JhbFBvc2l0aW9u
KSB7IG1fbmVlZHNJbnRlZ3JhbFBvc2l0aW9uID0gbmVlZHNJbnRlZ3JhbFBvc2l0aW9uOyB9CiAK
IHByaXZhdGU6CiAgICAgLy8gVGhpcyBpcyBsaW5lIGJveCBnZW9tZXRyeSAoc2VlIGh0dHBzOi8v
d3d3LnczLm9yZy9UUi9jc3MtaW5saW5lLTMvI2xpbmUtYm94KS4KQEAgLTYzLDYgKzY2LDkgQEAg
cHJpdmF0ZToKICAgICBJbmxpbmVMYXlvdXRVbml0IG1fYWxpZ21lbnRCYXNlbGluZSB7IDAgfTsK
ICAgICBJbmxpbmVMYXlvdXRVbml0IG1fY29udGVudExvZ2ljYWxMZWZ0IHsgMCB9OwogICAgIElu
bGluZUxheW91dFVuaXQgbV9jb250ZW50TG9naWNhbFdpZHRoIHsgMCB9OworICAgIC8vIEZJWE1F
OiBUaGlzIGlzIGp1c3QgbWF0Y2hpbmcgbGVnYWN5IGxpbmUgbGF5b3V0IGludGVncmFsIHNuYXBw
aW5nLgorICAgIC8vIFNlZSBzaG91bGRDbGVhckRlc2NlbmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0
QW5kQmFzZWxpbmUgaW4gTGVnYWN5SW5saW5lRmxvd0JveDo6YWRkVG9MaW5lLgorICAgIGJvb2wg
bV9uZWVkc0ludGVncmFsUG9zaXRpb24geyB0cnVlIH07CiB9OwogCiBpbmxpbmUgTGluZUdlb21l
dHJ5OjpMaW5lR2VvbWV0cnkoY29uc3QgSW5saW5lUmVjdCYgbGluZUJveExvZ2ljYWxSZWN0LCBF
bmNsb3NpbmdUb3BBbmRCb3R0b20gZW5jbG9zaW5nVG9wQW5kQm90dG9tLCBJbmxpbmVMYXlvdXRV
bml0IGFsaWdtZW50QmFzZWxpbmUsIElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0
LCBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsV2lkdGgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250
ZW50QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5jcHAKaW5kZXggOTBhZGI2YWY1NTRhMjJh
YzBjYmE1ZTdkYzY4ZWUxMTM0YzE4MjM4ZS4uNjcxMzEyMTVlMTY1MjRjYjI3OTdhMjAwNWI2NmI0
YjYzOTMyZjliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRC
dWlsZGVyLmNwcApAQCAtNDQsMTIgKzQ0LDYgQEAgbmFtZXNwYWNlIExheW91dEludGVncmF0aW9u
IHsKIAogI2RlZmluZSBQUk9DRVNTX0JJRElfQ09OVEVOVCAwCiAKLXN0cnVjdCBMaW5lTGV2ZWxW
aXN1YWxBZGp1c3RtZW50c0ZvclJ1bnMgewotICAgIGJvb2wgbmVlZHNJbnRlZ3JhbFBvc2l0aW9u
IHsgZmFsc2UgfTsKLSAgICAvLyBJdCdzIG9ubHkgJ3RleHQtb3ZlcmZsb3c6IGVsbGlwc2lzJyBm
b3Igbm93LgotICAgIGJvb2wgbmVlZHNUcmFpbGluZ0NvbnRlbnRSZXBsYWNlbWVudCB7IGZhbHNl
IH07Ci19OwotCiBpbmxpbmUgTGF5b3V0OjpMaW5lR2VvbWV0cnk6OkVuY2xvc2luZ1RvcEFuZEJv
dHRvbSBvcGVyYXRvcisoY29uc3QgTGF5b3V0OjpMaW5lR2VvbWV0cnk6OkVuY2xvc2luZ1RvcEFu
ZEJvdHRvbSBlbmNsb3NpbmdUb3BBbmRCb3R0b20sIGZsb2F0IG9mZnNldCkKIHsKICAgICByZXR1
cm4geyBlbmNsb3NpbmdUb3BBbmRCb3R0b20udG9wICsgb2Zmc2V0LCBlbmNsb3NpbmdUb3BBbmRC
b3R0b20uYm90dG9tICsgb2Zmc2V0IH07CkBAIC0xNjQsNzUgKzE1OCwxMSBAQCBJbmxpbmVDb250
ZW50QnVpbGRlcjo6SW5saW5lQ29udGVudEJ1aWxkZXIoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0
ZSYgbGF5b3V0U3RhdAogCiB2b2lkIElubGluZUNvbnRlbnRCdWlsZGVyOjpidWlsZChjb25zdCBM
YXlvdXQ6OklubGluZUZvcm1hdHRpbmdTdGF0ZSYgaW5saW5lRm9ybWF0dGluZ1N0YXRlLCBJbmxp
bmVDb250ZW50JiBpbmxpbmVDb250ZW50KSBjb25zdAogewotICAgIGF1dG8gbGluZUxldmVsVmlz
dWFsQWRqdXN0bWVudHNGb3JSdW5zID0gY29tcHV0ZUxpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRz
Rm9yUnVucyhpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGluZXMoKSwgaW5saW5lRm9ybWF0dGluZ1N0
YXRlLmxpbmVSdW5zKCkpOwotICAgIGNyZWF0ZURpc3BsYXlMaW5lUnVucyhpbmxpbmVGb3JtYXR0
aW5nU3RhdGUubGluZXMoKSwgaW5saW5lRm9ybWF0dGluZ1N0YXRlLmxpbmVSdW5zKCksIGlubGlu
ZUNvbnRlbnQsIGxpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVucyk7Ci0gICAgY3JlYXRl
RGlzcGxheUxpbmVzKGlubGluZUZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLCBpbmxpbmVDb250ZW50
LCBsaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnMpOworICAgIGNyZWF0ZURpc3BsYXlM
aW5lUnVucyhpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGluZXMoKSwgaW5saW5lRm9ybWF0dGluZ1N0
YXRlLmxpbmVSdW5zKCksIGlubGluZUNvbnRlbnQpOworICAgIGNyZWF0ZURpc3BsYXlMaW5lcyhp
bmxpbmVGb3JtYXR0aW5nU3RhdGUubGluZXMoKSwgaW5saW5lQ29udGVudCk7CiB9CiAKLUlubGlu
ZUNvbnRlbnRCdWlsZGVyOjpMaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnNMaXN0IElu
bGluZUNvbnRlbnRCdWlsZGVyOjpjb21wdXRlTGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNGb3JS
dW5zKGNvbnN0IExheW91dDo6SW5saW5lTGluZXMmIGxpbmVzLCBjb25zdCBMYXlvdXQ6OklubGlu
ZUxpbmVSdW5zJiBsaW5lUnVucykgY29uc3QKLXsKLSAgICBhdXRvIGxpbmVMZXZlbFZpc3VhbEFk
anVzdG1lbnRzRm9yUnVucyA9IExpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVuc0xpc3Qg
eyBsaW5lcy5zaXplKCkgfTsKLSAgICBhdXRvJiByb290U3R5bGUgPSBtX2xheW91dFN0YXRlLnJv
b3QoKS5zdHlsZSgpOwotCi0gICAgYXV0byBpbmxpbmVMZXZlbEJveFByZXZlbnRzSW50ZWdyYWxQ
b3NpdGlvbiA9IHN0ZDo6b3B0aW9uYWw8Ym9vbD4geyB9OwotICAgIHNpemVfdCBsaW5lSW5kZXhU
b0NoZWNrID0gMDsKLSAgICBmb3IgKGF1dG8mIGxpbmVSdW4gOiBsaW5lUnVucykgewotICAgICAg
ICBhdXRvIGxpbmVJbmRleCA9IGxpbmVSdW4ubGluZUluZGV4KCk7Ci0gICAgICAgIGF1dG8mIGxh
eW91dEJveCA9IGxpbmVSdW4ubGF5b3V0Qm94KCk7Ci0KLSAgICAgICAgaWYgKGxpbmVJbmRleFRv
Q2hlY2sgIT0gbGluZUluZGV4KSB7Ci0gICAgICAgICAgICBhdXRvIGxpbmVOZWVkc0ludGVncmFs
UG9zaXRpb25pbmcgPSBbJl0gewotICAgICAgICAgICAgICAgIGlmICghaW5saW5lTGV2ZWxCb3hQ
cmV2ZW50c0ludGVncmFsUG9zaXRpb24uaGFzX3ZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gVGhpcyBsaW5lIGRvZXMgbm90IGhhdmUgYW55IG5vbi1yb290IGlubGluZSBib3hlcy4K
LSAgICAgICAgICAgICAgICAgICAgLy8gTGluZXMgbGlrZSB0aGlzIHdpdGggcm9vdCBpbmxpbmUg
Ym94IG9ubHkgZm9yY2UgaW50ZWdyYWwgcG9zaXRpb25pbmcuCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4g
ISppbmxpbmVMZXZlbEJveFByZXZlbnRzSW50ZWdyYWxQb3NpdGlvbjsKLSAgICAgICAgICAgIH07
Ci0gICAgICAgICAgICBsaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnNbbGluZUluZGV4
VG9DaGVja10ubmVlZHNJbnRlZ3JhbFBvc2l0aW9uID0gbGluZU5lZWRzSW50ZWdyYWxQb3NpdGlv
bmluZygpOwotICAgICAgICAgICAgbGluZUluZGV4VG9DaGVjayA9IGxpbmVJbmRleDsKLSAgICAg
ICAgICAgIGlubGluZUxldmVsQm94UHJldmVudHNJbnRlZ3JhbFBvc2l0aW9uID0geyB9OwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKCFsaW5lUnVuLmlzTm9uUm9vdElubGluZUxldmVsQm94KCkg
fHwgKGlubGluZUxldmVsQm94UHJldmVudHNJbnRlZ3JhbFBvc2l0aW9uLmhhc192YWx1ZSgpICYm
ICppbmxpbmVMZXZlbEJveFByZXZlbnRzSW50ZWdyYWxQb3NpdGlvbikpCi0gICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICBhdXRvIGlubGluZUxldmVsQm94UHJldmVudHNMZWdhY3lJbnRl
Z3JhbFZlcnRpY2FsUG9zaXRpb24gPSBbJl0gewotICAgICAgICAgICAgQVNTRVJUKGxpbmVSdW4u
aXNOb25Sb290SW5saW5lTGV2ZWxCb3goKSk7Ci0gICAgICAgICAgICAvLyBMZWdhY3kgaW5saW5l
IHRyZWUgaW50ZWdyYWwgcm91bmRzIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiBmb3IgY2VydGFpbiBj
b250ZW50IChzZWUgTGVnYWN5SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rp
b24gYW5kIDo6YWRkVG9MaW5lKS4KLSAgICAgICAgICAgIC8vIFNlZSBzaG91bGRDbGVhckRlc2Nl
bmRhbnRzSGF2ZVNhbWVMaW5lSGVpZ2h0QW5kQmFzZWxpbmUgaW4gTGVnYWN5SW5saW5lRmxvd0Jv
eDo6YWRkVG9MaW5lLgotICAgICAgICAgICAgYXV0byBjb250ZW50UHJldmVudHNJbnRlZ3JhbFNu
YXBwaW5nID0gbGluZVJ1bi5pc0F0b21pY0lubGluZUxldmVsQm94KCkgfHwgKGxpbmVSdW4uaXNM
aW5lQnJlYWtCb3goKSAmJiAhbV9sYXlvdXRTdGF0ZS5pblN0YW5kYXJkc01vZGUoKSk7Ci0gICAg
ICAgICAgICBpZiAoY29udGVudFByZXZlbnRzSW50ZWdyYWxTbmFwcGluZykKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgICAgYXV0byYgaW5saW5lTGV2ZWxCb3hTdHls
ZSA9IGxheW91dEJveC5zdHlsZSgpOwotICAgICAgICAgICAgYXV0byBzdHlsZVByZXZlbnRzSW50
ZWdyYWxTbmFwcGluZyA9IHJvb3RTdHlsZS5saW5lSGVpZ2h0KCkgIT0gaW5saW5lTGV2ZWxCb3hT
dHlsZS5saW5lSGVpZ2h0KCkgfHwgaW5saW5lTGV2ZWxCb3hTdHlsZS52ZXJ0aWNhbEFsaWduKCkg
IT0gVmVydGljYWxBbGlnbjo6QmFzZWxpbmU7Ci0gICAgICAgICAgICBpZiAoc3R5bGVQcmV2ZW50
c0ludGVncmFsU25hcHBpbmcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAg
ICAgICAgIGF1dG8mIHJvb3RGb250TWV0cmljcyA9IHJvb3RTdHlsZS5mb250Q2FzY2FkZSgpLmZv
bnRNZXRyaWNzKCk7Ci0gICAgICAgICAgICBhdXRvJiBpbmxpbmVMZXZlbEJveEZvbnRNZXRyaWNz
ID0gaW5saW5lTGV2ZWxCb3hTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCk7Ci0gICAg
ICAgICAgICBhdXRvIGZvbnRQcmV2ZW50c0ludGVncmFsU25hcHBpbmcgPSAhcm9vdEZvbnRNZXRy
aWNzLmhhc0lkZW50aWNhbEFzY2VudERlc2NlbnRBbmRMaW5lR2FwKGlubGluZUxldmVsQm94Rm9u
dE1ldHJpY3MpOwotICAgICAgICAgICAgcmV0dXJuIGZvbnRQcmV2ZW50c0ludGVncmFsU25hcHBp
bmc7Ci0gICAgICAgIH07Ci0gICAgICAgIGlubGluZUxldmVsQm94UHJldmVudHNJbnRlZ3JhbFBv
c2l0aW9uID0gaW5saW5lTGV2ZWxCb3hQcmV2ZW50c0xlZ2FjeUludGVncmFsVmVydGljYWxQb3Np
dGlvbigpOwotICAgIH0KLSAgICBsaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnNbbGlu
ZUluZGV4VG9DaGVja10ubmVlZHNJbnRlZ3JhbFBvc2l0aW9uID0gIWlubGluZUxldmVsQm94UHJl
dmVudHNJbnRlZ3JhbFBvc2l0aW9uLmhhc192YWx1ZSgpIHx8ICEqaW5saW5lTGV2ZWxCb3hQcmV2
ZW50c0ludGVncmFsUG9zaXRpb247Ci0KLSAgICBhdXRvIHNob3VsZENoZWNrSG9yaXpvbnRhbE92
ZXJmbG93Rm9yQ29udGVudFJlcGxhY2VtZW50ID0gcm9vdFN0eWxlLm92ZXJmbG93WCgpID09IE92
ZXJmbG93OjpIaWRkZW4gJiYgcm9vdFN0eWxlLnRleHRPdmVyZmxvdygpICE9IFRleHRPdmVyZmxv
dzo6Q2xpcDsKLSAgICBpZiAoIXNob3VsZENoZWNrSG9yaXpvbnRhbE92ZXJmbG93Rm9yQ29udGVu
dFJlcGxhY2VtZW50KQotICAgICAgICByZXR1cm4gbGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNG
b3JSdW5zOwotCi0gICAgZm9yIChzaXplX3QgbGluZUluZGV4ID0gMDsgbGluZUluZGV4IDwgbGlu
ZXMuc2l6ZSgpOyArK2xpbmVJbmRleCkgewotICAgICAgICBhdXRvJiBsaW5lID0gbGluZXNbbGlu
ZUluZGV4XTsKLSAgICAgICAgYXV0byBsaW5lQm94TG9naWNhbFdpZHRoID0gbGluZS5saW5lQm94
TG9naWNhbFJlY3QoKS53aWR0aCgpOwotICAgICAgICBhdXRvIG92ZXJmbG93V2lkdGggPSBsaW5l
T3ZlcmZsb3dXaWR0aChtX2Jsb2NrRmxvdywgbGluZUJveExvZ2ljYWxXaWR0aCwgbGluZS5jb250
ZW50TG9naWNhbFdpZHRoKCkpOwotICAgICAgICBsaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0Zv
clJ1bnNbbGluZUluZGV4XS5uZWVkc1RyYWlsaW5nQ29udGVudFJlcGxhY2VtZW50ID0gb3ZlcmZs
b3dXaWR0aCA+IGxpbmVCb3hMb2dpY2FsV2lkdGg7Ci0gICAgfQotICAgIHJldHVybiBsaW5lTGV2
ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnM7Ci19Ci0KLXZvaWQgSW5saW5lQ29udGVudEJ1aWxk
ZXI6OmNyZWF0ZURpc3BsYXlMaW5lUnVucyhjb25zdCBMYXlvdXQ6OklubGluZUxpbmVzJiBsaW5l
cywgY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lUnVucyYgbGluZVJ1bnMsIElubGluZUNvbnRlbnQm
IGlubGluZUNvbnRlbnQsIGNvbnN0IExpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVuc0xp
c3QmIGxpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVucykgY29uc3QKK3ZvaWQgSW5saW5l
Q29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lUnVucyhjb25zdCBMYXlvdXQ6OklubGlu
ZUxpbmVzJiBsaW5lcywgY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lUnVucyYgbGluZVJ1bnMsIElu
bGluZUNvbnRlbnQmIGlubGluZUNvbnRlbnQpIGNvbnN0CiB7CiAgICAgaWYgKGxpbmVSdW5zLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjYxLDcgKzE5MSw3IEBAIHZvaWQgSW5saW5l
Q29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lUnVucyhjb25zdCBMYXlvdXQ6OklubGlu
ZUxpbmVzJiBsaW5lCiAgICAgICAgIGF1dG8gaW5rT3ZlcmZsb3cgPSBGbG9hdFJlY3QgeyBsaW5l
UnVuLmlua092ZXJmbG93KCkgfTsKICAgICAgICAgYXV0byYgZ2VvbWV0cnkgPSBtX2xheW91dFN0
YXRlLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7CiAgICAgICAgIHJ1blJlY3Quc2V0U2l6ZSh7
IGdlb21ldHJ5LmJvcmRlckJveFdpZHRoKCksIGdlb21ldHJ5LmJvcmRlckJveEhlaWdodCgpIH0p
OwotICAgICAgICBpZiAobGluZUxldmVsVmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zW2xpbmVJbmRl
eF0ubmVlZHNJbnRlZ3JhbFBvc2l0aW9uKSB7CisgICAgICAgIGlmIChsaW5lc1tsaW5lSW5kZXhd
Lm5lZWRzSW50ZWdyYWxQb3NpdGlvbigpKSB7CiAgICAgICAgICAgICBydW5SZWN0LnNldFkocm91
bmRUb0ludChydW5SZWN0LnkoKSkpOwogICAgICAgICAgICAgaW5rT3ZlcmZsb3cuc2V0WShyb3Vu
ZFRvSW50KGlua092ZXJmbG93LnkoKSkpOwogICAgICAgICB9CkBAIC0yODYsMTAgKzIxNiw5IEBA
IHZvaWQgSW5saW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lUnVucyhjb25zdCBM
YXlvdXQ6OklubGluZUxpbmVzJiBsaW5lCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXJ0T2Zm
c2V0IDwgZW5kT2Zmc2V0KTsKICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gbGluZVJ1bi5sYXlv
dXRCb3goKTsKICAgICAgICAgYXV0byBsaW5lSW5kZXggPSBsaW5lUnVuLmxpbmVJbmRleCgpOwot
ICAgICAgICBhdXRvJiBsaW5lQm94TG9naWNhbFJlY3QgPSBsaW5lc1tsaW5lSW5kZXhdLmxpbmVC
b3hMb2dpY2FsUmVjdCgpOwogICAgICAgICBhdXRvIHJ1blJlY3QgPSBGbG9hdFJlY3QgeyBsaW5l
UnVuLmxvZ2ljYWxSZWN0KCkgfTsKICAgICAgICAgYXV0byBpbmtPdmVyZmxvdyA9IEZsb2F0UmVj
dCB7IGxpbmVSdW4uaW5rT3ZlcmZsb3coKSB9OwotICAgICAgICBpZiAobGluZUxldmVsVmlzdWFs
QWRqdXN0bWVudHNGb3JSdW5zW2xpbmVJbmRleF0ubmVlZHNJbnRlZ3JhbFBvc2l0aW9uKSB7Cisg
ICAgICAgIGlmIChsaW5lc1tsaW5lSW5kZXhdLm5lZWRzSW50ZWdyYWxQb3NpdGlvbigpKSB7CiAg
ICAgICAgICAgICBydW5SZWN0LnNldFkocm91bmRUb0ludChydW5SZWN0LnkoKSkpOwogICAgICAg
ICAgICAgaW5rT3ZlcmZsb3cuc2V0WShyb3VuZFRvSW50KGlua092ZXJmbG93LnkoKSkpOwogICAg
ICAgICB9CkBAIC0zMDAsMjMgKzIyOSw2IEBAIHZvaWQgSW5saW5lQ29udGVudEJ1aWxkZXI6OmNy
ZWF0ZURpc3BsYXlMaW5lUnVucyhjb25zdCBMYXlvdXQ6OklubGluZUxpbmVzJiBsaW5lCiAgICAg
ICAgICAgICBhdXRvIG9yaWdpbmFsQ29udGVudCA9IHRleHQtPmNvbnRlbnQoKS5zdWJzdHJpbmco
dGV4dC0+c3RhcnQoKSwgdGV4dC0+bGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKHRleHQtPm5l
ZWRzSHlwaGVuKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcob3JpZ2luYWxD
b250ZW50LCBzdHlsZS5oeXBoZW5TdHJpbmcoKSk7Ci0gICAgICAgICAgICBpZiAobGluZUxldmVs
VmlzdWFsQWRqdXN0bWVudHNGb3JSdW5zW2xpbmVJbmRleF0ubmVlZHNUcmFpbGluZ0NvbnRlbnRS
ZXBsYWNlbWVudCkgewotICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSBpdCdzIGVsbGlwc2lz
IHJlcGxhY2VtZW50IG9ubHksIGJ1dCBhZGRpbmcgc3VwcG9ydCBmb3IgInRleHQtb3ZlcmZsb3c6
IHN0cmluZyIgc2hvdWxkIGJlIHJlbGF0aXZlbHkgc2ltcGxlLgotICAgICAgICAgICAgICAgIGlm
IChoYXNBZGp1c3RlZFRyYWlsaW5nTGluZUxpc3RbbGluZUluZGV4XSkgewotICAgICAgICAgICAg
ICAgICAgICAvLyBUaGlzIGxpbmUgYWxyZWFkeSBoYXMgYWRqdXN0ZWQgdHJhaWxpbmcuIEFueSBy
dW5zIGFmdGVyIHRoZSBlbGxpcHNpcyBzaG91bGQgcmVuZGVyIGJsYW5rLgotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgYXV0byBydW5Mb2dpY2FsUmVjdCA9IGxpbmVSdW4ubG9naWNhbFJlY3QoKTsKLSAg
ICAgICAgICAgICAgICBhdXRvIGVsbGlwc2lzV2lkdGggPSBzdHlsZS5mb250Q2FzY2FkZSgpLndp
ZHRoKFdlYkNvcmU6OlRleHRSdW4geyAmaG9yaXpvbnRhbEVsbGlwc2lzIH0pOwotICAgICAgICAg
ICAgICAgIGlmIChydW5Mb2dpY2FsUmVjdC5yaWdodCgpICsgZWxsaXBzaXNXaWR0aCA+IGxpbmVC
b3hMb2dpY2FsUmVjdC5yaWdodCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBuZXh0
IHJ1biB3aXRoIGVsbGlwc2lzIHdvdWxkIHN1cmVseSBvdmVyZmxvdy4gU28gbGV0J3MganVzdCBh
ZGQgaXQgdG8gdGhpcyBydW4gZXZlbiBpZgotICAgICAgICAgICAgICAgICAgICAvLyBpdCBtYWtl
cyB0aGUgcnVuIHdpZGVyIHRoYW4gaXQgb3JpZ2luYWxseSB3YXMuCi0gICAgICAgICAgICAgICAg
ICAgIGhhc0FkanVzdGVkVHJhaWxpbmdMaW5lTGlzdFtsaW5lSW5kZXhdID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICAgICAgZmxvYXQgcmVzdWx0V2lkdGggPSAwOwotICAgICAgICAgICAgICAgICAg
ICBhdXRvIG1heFdpZHRoID0gbGluZUJveExvZ2ljYWxSZWN0LndpZHRoKCkgLSBydW5Mb2dpY2Fs
UmVjdC5sZWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmdUcnVuY2F0b3I6
OnJpZ2h0VHJ1bmNhdGUob3JpZ2luYWxDb250ZW50LCBtYXhXaWR0aCwgc3R5bGUuZm9udENhc2Nh
ZGUoKSwgcmVzdWx0V2lkdGgsIHRydWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgfTsKIApAQCAtMzM2LDcg
KzI0OCw3IEBAIHZvaWQgSW5saW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lUnVu
cyhjb25zdCBMYXlvdXQ6OklubGluZUxpbmVzJiBsaW5lCiAgICAgfQogfQogCi12b2lkIElubGlu
ZUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVEaXNwbGF5TGluZXMoY29uc3QgTGF5b3V0OjpJbmxpbmVM
aW5lcyYgbGluZXMsIElubGluZUNvbnRlbnQmIGlubGluZUNvbnRlbnQsIGNvbnN0IExpbmVMZXZl
bFZpc3VhbEFkanVzdG1lbnRzRm9yUnVuc0xpc3QmIGxpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRz
Rm9yUnVucykgY29uc3QKK3ZvaWQgSW5saW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlM
aW5lcyhjb25zdCBMYXlvdXQ6OklubGluZUxpbmVzJiBsaW5lcywgSW5saW5lQ29udGVudCYgaW5s
aW5lQ29udGVudCkgY29uc3QKIHsKICAgICBhdXRvJiBydW5zID0gaW5saW5lQ29udGVudC5ydW5z
OwogICAgIGF1dG8mIG5vblJvb3RJbmxpbmVCb3hlcyA9IGlubGluZUNvbnRlbnQubm9uUm9vdElu
bGluZUJveGVzOwpAQCAtMzgxLDcgKzI5Myw3IEBAIHZvaWQgSW5saW5lQ29udGVudEJ1aWxkZXI6
OmNyZWF0ZURpc3BsYXlMaW5lcyhjb25zdCBMYXlvdXQ6OklubGluZUxpbmVzJiBsaW5lcywKICAg
ICAgICAgYXV0byBhZGp1c3RlZExpbmVCb3hSZWN0ID0gRmxvYXRSZWN0IHsgbGluZUJveExvZ2lj
YWxSZWN0IH07CiAgICAgICAgIC8vIEZpbmFsIGVuY2xvc2luZyB0b3AgYW5kIGJvdHRvbSB2YWx1
ZXMgYXJlIGluIHRoZSBzYW1lIGNvb3JkaW5hdGUgc3BhY2UgYXMgdGhlIGxpbmUgaXRzZWxmLgog
ICAgICAgICBhdXRvIGVuY2xvc2luZ1RvcEFuZEJvdHRvbSA9IGxpbmUuZW5jbG9zaW5nVG9wQW5k
Qm90dG9tKCkgKyBsaW5lQm94TG9naWNhbFJlY3QudG9wKCk7Ci0gICAgICAgIGlmIChsaW5lTGV2
ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnNbbGluZUluZGV4XS5uZWVkc0ludGVncmFsUG9zaXRp
b24pIHsKKyAgICAgICAgaWYgKGxpbmUubmVlZHNJbnRlZ3JhbFBvc2l0aW9uKCkpIHsKICAgICAg
ICAgICAgIGFkanVzdGVkTGluZUJveFJlY3Quc2V0WShyb3VuZFRvSW50KGFkanVzdGVkTGluZUJv
eFJlY3QueSgpKSk7CiAgICAgICAgICAgICBlbmNsb3NpbmdUb3BBbmRCb3R0b20udG9wID0gcm91
bmRUb0ludChlbmNsb3NpbmdUb3BBbmRCb3R0b20udG9wKTsKICAgICAgICAgICAgIGVuY2xvc2lu
Z1RvcEFuZEJvdHRvbS5ib3R0b20gPSByb3VuZFRvSW50KGVuY2xvc2luZ1RvcEFuZEJvdHRvbS5i
b3R0b20pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmgK
aW5kZXggZmE5MDgwMDZhOTQyOWEyNmNhN2ZmMmFlMThjMGFjN2FjM2NmY2Y5Mi4uNjI5YWZhMDUy
ODFlNWY1YWVjMGNmZmZhYzIzOWM2MjdhYWM1MDkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5oCkBAIC0zOCw3ICszOCw2IEBAIG5hbWVzcGFjZSBM
YXlvdXRJbnRlZ3JhdGlvbiB7CiAKIGNsYXNzIEJveFRyZWU7CiBzdHJ1Y3QgSW5saW5lQ29udGVu
dDsKLXN0cnVjdCBMaW5lTGV2ZWxWaXN1YWxBZGp1c3RtZW50c0ZvclJ1bnM7CiAKIGNsYXNzIElu
bGluZUNvbnRlbnRCdWlsZGVyIHsKIHB1YmxpYzoKQEAgLTQ3LDExICs0Niw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGJ1aWxkKGNvbnN0IExheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlJiwgSW5s
aW5lQ29udGVudCYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHVzaW5nIExpbmVMZXZlbFZpc3Vh
bEFkanVzdG1lbnRzRm9yUnVuc0xpc3QgPSBWZWN0b3I8TGluZUxldmVsVmlzdWFsQWRqdXN0bWVu
dHNGb3JSdW5zPjsKLQotICAgIExpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVuc0xpc3Qg
Y29tcHV0ZUxpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVucyhjb25zdCBMYXlvdXQ6Oklu
bGluZUxpbmVzJiwgY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lUnVucyYpIGNvbnN0OwotICAgIHZv
aWQgY3JlYXRlRGlzcGxheUxpbmVSdW5zKGNvbnN0IExheW91dDo6SW5saW5lTGluZXMmLCBjb25z
dCBMYXlvdXQ6OklubGluZUxpbmVSdW5zJiwgSW5saW5lQ29udGVudCYsIGNvbnN0IExpbmVMZXZl
bFZpc3VhbEFkanVzdG1lbnRzRm9yUnVuc0xpc3QmKSBjb25zdDsKLSAgICB2b2lkIGNyZWF0ZURp
c3BsYXlMaW5lcyhjb25zdCBMYXlvdXQ6OklubGluZUxpbmVzJiwgSW5saW5lQ29udGVudCYsIGNv
bnN0IExpbmVMZXZlbFZpc3VhbEFkanVzdG1lbnRzRm9yUnVuc0xpc3QmKSBjb25zdDsKKyAgICB2
b2lkIGNyZWF0ZURpc3BsYXlMaW5lUnVucyhjb25zdCBMYXlvdXQ6OklubGluZUxpbmVzJiwgY29u
c3QgTGF5b3V0OjpJbmxpbmVMaW5lUnVucyYsIElubGluZUNvbnRlbnQmKSBjb25zdDsKKyAgICB2
b2lkIGNyZWF0ZURpc3BsYXlMaW5lcyhjb25zdCBMYXlvdXQ6OklubGluZUxpbmVzJiwgSW5saW5l
Q29udGVudCYpIGNvbnN0OwogCiAgICAgY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbV9sYXlv
dXRTdGF0ZTsKICAgICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIG1fYmxvY2tGbG93Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>