<?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>257680</bug_id>
          
          <creation_ts>2023-06-03 14:16:37 -0700</creation_ts>
          <short_desc>[IFC] Rename LineBuilder::LineContent to LineLayoutResult</short_desc>
          <delta_ts>2023-06-05 08:49:23 -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>1959709</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2023-06-03 14:16:37 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1959710</commentid>
    <comment_count>1</comment_count>
      <attachid>466579</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-06-03 14:22:27 -0700</bug_when>
    <thetext>Created attachment 466579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1959713</commentid>
    <comment_count>2</comment_count>
      <attachid>466580</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-06-03 15:17:49 -0700</bug_when>
    <thetext>Created attachment 466580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1959740</commentid>
    <comment_count>3</comment_count>
      <attachid>466584</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-06-03 21:28:46 -0700</bug_when>
    <thetext>Created attachment 466584
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1959831</commentid>
    <comment_count>4</comment_count>
      <attachid>466584</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2023-06-05 01:52:33 -0700</bug_when>
    <thetext>Comment on attachment 466584
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=466584&amp;action=review

&gt; Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.h:52
&gt; +    struct LineLayoutResult {

I suppose &quot;Line&quot; is slightly redundant here since this is scoped to LineBuilder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1959861</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2023-06-05 06:11:29 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #4)
&gt; Comment on attachment 466584 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=466584&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.h:52
&gt; &gt; +    struct LineLayoutResult {
&gt; 
&gt; I suppose &quot;Line&quot; is slightly redundant here since this is scoped to
&gt; LineBuilder.
Good point!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1959864</commentid>
    <comment_count>6</comment_count>
      <attachid>466592</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-06-05 06:17:12 -0700</bug_when>
    <thetext>Created attachment 466592
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1959885</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-06-05 08:48:42 -0700</bug_when>
    <thetext>Committed 264869@main (450b4ccb7fd0): &lt;https://commits.webkit.org/264869@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 466592.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1959886</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-06-05 08:49:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/110264479&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466579</attachid>
            <date>2023-06-03 14:22:27 -0700</date>
            <delta_ts>2023-06-03 14:41:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-257680-20230603142226.patch</filename>
            <type>text/plain</type>
            <size>44632</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBjYTM5YmZkOGM0NDY0YTdlOGJlY2IxZmVlNzFhNTI4ZDA3MWU3MjI4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgMyBKdW4gMjAyMyAxNDoxNjo0NiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFtJRkNdIFJl
bmFtZSBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQgdG8gTGluZUxheW91dFJlc3VsdAogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NzY4MAoKUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCgpXaGlsZSB0aGlzIHN0cnVjdHVyZSBpbmRlZWQgc3RhcnRlZCBhcyBob2xk
aW5nIGNvbnRlbnQgKHJ1bnMgbW9zdGx5KSBvbiB0aGUgY3VycmVudCBsaW5lLCBvdmVyIHRoZSB5
ZWFycyBpdCBncmV3IGFuZCBub3cgaXQgY29udGFpbnMKYWxsIGtpbmRzIG9mIGluZm9ybWF0aW9u
IGFib3V0IHRoZSByZXN1bHQgb2YgdGhlIGxpbmUgbGF5b3V0LiBMZXQncyByZW5hbWUgaXQgdG8g
TGluZUxheW91dFJlc3VsdC4KClRoaXMgaXMgYWxzbyBpbiBwcmVwYXJhdGlvbiBmb3IgdHJhbnNm
b3JtaW5nIExpbmVCdWlsZGVyOjpjb21wdXRlZEludHJpbnNpY1dpZHRoIGludG8gcmVndWxhciBs
aW5lIGxheW91dC4KCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGlu
ZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZvckxpbmUpOgoqIFNvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0Lmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ0dlb21ldHJ5Ojpsb2dpY2FsVG9wRm9yTmV4dExpbmUgY29uc3QpOgoqIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdHZW9tZXRyeS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6TGlu
ZUJveEJ1aWxkZXI6OkxpbmVCb3hCdWlsZGVyKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveEJ1
aWxkZXI6OmJ1aWxkKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveEJ1aWxkZXI6OmNvbnN0cnVj
dElubGluZUxldmVsQm94ZXMpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6YWRq
dXN0SW5saW5lQm94SGVpZ2h0c0ZvckxpbmVCb3hDb250YWluSWZBcHBsaWNhYmxlKToKKFdlYkNv
cmU6OkxheW91dDo6TGluZUJveEJ1aWxkZXI6OmNvbXB1dGVMaW5lQm94R2VvbWV0cnkgY29uc3Qp
OgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6YWRqdXN0T3V0c2lkZUxpc3RNYXJr
ZXJzUG9zaXRpb24pOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmg6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hC
dWlsZGVyOjppc0ZpcnN0TGluZSBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWls
ZGVyOjppc0xhc3RMaW5lIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveEJ1aWxkZXI6
OmxpbmVMYXlvdXRSZXN1bHQgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRl
cjo6bGluZUNvbnRlbnQgY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKFdlYkNvcmU6
OkxheW91dDo6TGluZUJ1aWxkZXI6OmxheW91dElubGluZUNvbnRlbnQpOgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmg6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxh
eS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmJ1aWxkKToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
RGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzTm9uQmlkaUNvbnRlbnQpOgooV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NCaWRpQ29udGVudCk6
CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc0Zs
b2F0Qm94ZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmg6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5
TGluZUJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxk
ZXI6OmNvbGxlY3RFbmNsb3NpbmdMaW5lR2VvbWV0cnkgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmJ1aWxkIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlM
aW5lQnVpbGRlci5oOgotLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3Bw
ICAgICAgICB8IDI4ICsrKystLS0tCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmggICAgICAgICAgfCAgMiArLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnku
Y3BwICAgICAgIHwgMTIgKystLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnku
aCAgICAgICAgIHwgIDIgKy0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwICAg
ICAgICAgICB8IDI4ICsrKystLS0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmgg
ICAgICAgICAgICAgfCAxMCArLS0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwICAg
ICAgICAgICAgICB8IDI0ICsrKy0tLS0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuaCAg
ICAgICAgICAgICAgICB8IDY2ICsrKysrKysrKysrKy0tLS0tLS0KIC4uLi9kaXNwbGF5L0lubGlu
ZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAgICB8IDMyICsrKystLS0tLQogLi4uL2Rpc3BsYXkv
SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmggICAgIHwgMTAgKy0tCiAuLi4vZGlzcGxheS9J
bmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuY3BwICAgICAgfCAxNiArKy0tLQogLi4uL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5oIHwgIDQgKy0KIDEyIGZpbGVzIGNoYW5n
ZWQsIDEyNCBpbnNlcnRpb25zKCspLCAxMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDdhMDgyZjQzNzQ0NC4u
ZTIzYWRjNDgxNTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCkBAIC0yNzcsMTYgKzI3NywxNiBAQCBJbmxpbmVMYXlvdXRSZXN1bHQgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoY29uc3QgSW5saW5lSXRlbXMmIGlubGlu
ZQogICAgIHdoaWxlICh0cnVlKSB7CiAKICAgICAgICAgYXV0byBsaW5lSW5pdGlhbFJlY3QgPSBJ
bmxpbmVSZWN0IHsgbGluZUxvZ2ljYWxUb3AsIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dp
Y2FsTGVmdCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxXaWR0aCwgZm9ybWF0dGlu
Z0dlb21ldHJ5KCkuaW5pdGlhbExpbmVIZWlnaHQoIXByZXZpb3VzTGluZS5oYXNfdmFsdWUoKSkg
fTsKLSAgICAgICAgYXV0byBsaW5lQ29udGVudCA9IGxpbmVCdWlsZGVyLmxheW91dElubGluZUNv
bnRlbnQoeyB7IGxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb24sIG5lZWRzTGF5b3V0UmFuZ2UuZW5k
IH0sIGxpbmVJbml0aWFsUmVjdCB9LCBwcmV2aW91c0xpbmUpOworICAgICAgICBhdXRvIGxpbmVM
YXlvdXRSZXN1bHQgPSBsaW5lQnVpbGRlci5sYXlvdXRJbmxpbmVDb250ZW50KHsgeyBsZWFkaW5n
SW5saW5lSXRlbVBvc2l0aW9uLCBuZWVkc0xheW91dFJhbmdlLmVuZCB9LCBsaW5lSW5pdGlhbFJl
Y3QgfSwgcHJldmlvdXNMaW5lKTsKIAogICAgICAgICBhdXRvIGxpbmVJbmRleCA9IHByZXZpb3Vz
TGluZSA/IChwcmV2aW91c0xpbmUtPmxpbmVJbmRleCArIDEpIDogMGx1OwotICAgICAgICBhdXRv
IGxpbmVMb2dpY2FsUmVjdCA9IGNyZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZShsaW5lSW5kZXgs
IGxpbmVDb250ZW50LCBjb25zdHJhaW50cywgaW5saW5lTGF5b3V0U3RhdGUsIGxheW91dFJlc3Vs
dC5kaXNwbGF5Q29udGVudCk7Ci0gICAgICAgIGlmIChsaW5lQ29udGVudC5pc0xhc3RMaW5lV2l0
aElubGluZUNvbnRlbnQpCi0gICAgICAgICAgICBpbmxpbmVMYXlvdXRTdGF0ZS5zZXRDbGVhckdh
cEFmdGVyTGFzdExpbmUoZm9ybWF0dGluZ0dlb21ldHJ5KCkubG9naWNhbFRvcEZvck5leHRMaW5l
KGxpbmVDb250ZW50LCBsaW5lTG9naWNhbFJlY3QsIGZsb2F0aW5nQ29udGV4dCkgLSBsaW5lTG9n
aWNhbFJlY3QuYm90dG9tKCkpOworICAgICAgICBhdXRvIGxpbmVMb2dpY2FsUmVjdCA9IGNyZWF0
ZURpc3BsYXlDb250ZW50Rm9yTGluZShsaW5lSW5kZXgsIGxpbmVMYXlvdXRSZXN1bHQsIGNvbnN0
cmFpbnRzLCBpbmxpbmVMYXlvdXRTdGF0ZSwgbGF5b3V0UmVzdWx0LmRpc3BsYXlDb250ZW50KTsK
KyAgICAgICAgaWYgKGxpbmVMYXlvdXRSZXN1bHQuaXNGaXJzdExhc3QuaXNMYXN0TGluZVdpdGhJ
bmxpbmVDb250ZW50KQorICAgICAgICAgICAgaW5saW5lTGF5b3V0U3RhdGUuc2V0Q2xlYXJHYXBB
ZnRlckxhc3RMaW5lKGZvcm1hdHRpbmdHZW9tZXRyeSgpLmxvZ2ljYWxUb3BGb3JOZXh0TGluZShs
aW5lTGF5b3V0UmVzdWx0LCBsaW5lTG9naWNhbFJlY3QsIGZsb2F0aW5nQ29udGV4dCkgLSBsaW5l
TG9naWNhbFJlY3QuYm90dG9tKCkpOwogCi0gICAgICAgIGF1dG8gbGluZUNvbnRlbnRFbmQgPSBs
aW5lQ29udGVudC5jb21taXR0ZWRSYW5nZS5lbmQ7CisgICAgICAgIGF1dG8gbGluZUNvbnRlbnRF
bmQgPSBsaW5lTGF5b3V0UmVzdWx0LmNvbW1pdHRlZFJhbmdlLmVuZDsKICAgICAgICAgbGVhZGlu
Z0lubGluZUl0ZW1Qb3NpdGlvbiA9IGxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb25Gb3JOZXh0TGlu
ZShsaW5lQ29udGVudEVuZCwgcHJldmlvdXNMaW5lRW5kLCBuZWVkc0xheW91dFJhbmdlLmVuZCk7
Ci0gICAgICAgIGF1dG8gaXNMYXN0TGluZSA9IGxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb24gPT0g
bmVlZHNMYXlvdXRSYW5nZS5lbmQgJiYgbGluZUNvbnRlbnQuc3VzcGVuZGVkRmxvYXRzLmlzRW1w
dHkoKTsKKyAgICAgICAgYXV0byBpc0xhc3RMaW5lID0gbGVhZGluZ0lubGluZUl0ZW1Qb3NpdGlv
biA9PSBuZWVkc0xheW91dFJhbmdlLmVuZCAmJiBsaW5lTGF5b3V0UmVzdWx0LmZsb2F0Q29udGVu
dC5zdXNwZW5kZWRGbG9hdHMuaXNFbXB0eSgpOwogICAgICAgICBpZiAoaXNMYXN0TGluZSkgewog
ICAgICAgICAgICAgbGF5b3V0UmVzdWx0LnJhbmdlID0gIWlzUGFydGlhbExheW91dCA/IElubGlu
ZUxheW91dFJlc3VsdDo6UmFuZ2U6OkZ1bGwgOiBJbmxpbmVMYXlvdXRSZXN1bHQ6OlJhbmdlOjpG
dWxsRnJvbURhbWFnZTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjk2LDggKzI5Niw4IEBAIElu
bGluZUxheW91dFJlc3VsdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChjb25z
dCBJbmxpbmVJdGVtcyYgaW5saW5lCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0g
ICAgICAgIGxpbmVMb2dpY2FsVG9wID0gZm9ybWF0dGluZ0dlb21ldHJ5KCkubG9naWNhbFRvcEZv
ck5leHRMaW5lKGxpbmVDb250ZW50LCBsaW5lTG9naWNhbFJlY3QsIGZsb2F0aW5nQ29udGV4dCk7
Ci0gICAgICAgIHByZXZpb3VzTGluZSA9IFByZXZpb3VzTGluZSB7IGxpbmVJbmRleCwgbGluZUNv
bnRlbnQudHJhaWxpbmdPdmVyZmxvd2luZ0NvbnRlbnRXaWR0aCwgIWxpbmVDb250ZW50LnJ1bnMu
aXNFbXB0eSgpICYmIGxpbmVDb250ZW50LnJ1bnMubGFzdCgpLmlzTGluZUJyZWFrKCksIGxpbmVD
b250ZW50LmlubGluZUJhc2VEaXJlY3Rpb24sIFdURk1vdmUobGluZUNvbnRlbnQuc3VzcGVuZGVk
RmxvYXRzKSB9OworICAgICAgICBsaW5lTG9naWNhbFRvcCA9IGZvcm1hdHRpbmdHZW9tZXRyeSgp
LmxvZ2ljYWxUb3BGb3JOZXh0TGluZShsaW5lTGF5b3V0UmVzdWx0LCBsaW5lTG9naWNhbFJlY3Qs
IGZsb2F0aW5nQ29udGV4dCk7CisgICAgICAgIHByZXZpb3VzTGluZSA9IFByZXZpb3VzTGluZSB7
IGxpbmVJbmRleCwgbGluZUxheW91dFJlc3VsdC5jb250ZW50R2VvbWV0cnkudHJhaWxpbmdPdmVy
Zmxvd2luZ0NvbnRlbnRXaWR0aCwgIWxpbmVMYXlvdXRSZXN1bHQucnVucy5pc0VtcHR5KCkgJiYg
bGluZUxheW91dFJlc3VsdC5ydW5zLmxhc3QoKS5pc0xpbmVCcmVhaygpLCBsaW5lTGF5b3V0UmVz
dWx0LmRpcmVjdGlvbmFsaXR5LmlubGluZUJhc2VEaXJlY3Rpb24sIFdURk1vdmUobGluZUxheW91
dFJlc3VsdC5mbG9hdENvbnRlbnQuc3VzcGVuZGVkRmxvYXRzKSB9OwogICAgICAgICBwcmV2aW91
c0xpbmVFbmQgPSBsaW5lQ29udGVudEVuZDsKICAgICB9CiAgICAgcmV0dXJuIGxheW91dFJlc3Vs
dDsKQEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgTGluZUVuZGluZ0VsbGlwc2lzUG9saWN5IGxp
bmVFbmRpbmdFbGxpcHNpc1BvbGljeShjb25zdCBSZW5kZXJTdHlsZSYgcm9vdAogICAgIHJldHVy
biBMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6Ok5vOwogfQogCi1JbmxpbmVSZWN0IElubGluZUZv
cm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZvckxpbmUoc2l6ZV90IGxpbmVJ
bmRleCwgY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3Qg
Q29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50cywgY29uc3QgSW5saW5lTGF5
b3V0U3RhdGUmIGlubGluZUxheW91dFN0YXRlLCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNw
bGF5Q29udGVudCkKK0lubGluZVJlY3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZURp
c3BsYXlDb250ZW50Rm9yTGluZShzaXplX3QgbGluZUluZGV4LCBjb25zdCBMaW5lQnVpbGRlcjo6
TGluZUxheW91dFJlc3VsdCYgbGluZUxheW91dFJlc3VsdCwgY29uc3QgQ29uc3RyYWludHNGb3JJ
bmxpbmVDb250ZW50JiBjb25zdHJhaW50cywgY29uc3QgSW5saW5lTGF5b3V0U3RhdGUmIGlubGlu
ZUxheW91dFN0YXRlLCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29udGVudCkKIHsK
ICAgICBhdXRvIG51bWJlck9mVmlzaWJsZUxpbmVzQWxsb3dlZCA9IFsmXSAoKSAtPiBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gewogICAgICAgICBpZiAoYXV0byBsaW5lQ2xhbXAgPSBpbmxpbmVMYXlv
dXRTdGF0ZS5wYXJlbnRCbG9ja0xheW91dFN0YXRlKCkubGluZUNsYW1wKCkpCkBAIC01NjEsMTYg
KzU2MSwxNiBAQCBJbmxpbmVSZWN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNw
bGF5Q29udGVudEZvckxpbmUoc2l6ZV90IGxpbmVJbmRleAogCiAgICAgYXV0byBlbGxpcHNpc1Bv
bGljeSA9IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeShyb290KCkuc3R5bGUoKSwgbGluZUluZGV4
LCBudW1iZXJPZlZpc2libGVMaW5lc0FsbG93ZWQpOwogICAgIGF1dG8gbGluZUlzRnVsbHlUcnVu
Y2F0ZWRJbkJsb2NrRGlyZWN0aW9uID0gbnVtYmVyT2ZWaXNpYmxlTGluZXNBbGxvd2VkICYmIGxp
bmVJbmRleCArIDEgPiAqbnVtYmVyT2ZWaXNpYmxlTGluZXNBbGxvd2VkOwotICAgIGF1dG8gbGlu
ZUJveCA9IExpbmVCb3hCdWlsZGVyIHsgKnRoaXMsIGlubGluZUxheW91dFN0YXRlLCBsaW5lQ29u
dGVudCB9LmJ1aWxkKGxpbmVJbmRleCk7Ci0gICAgYXV0byBkaXNwbGF5TGluZSA9IElubGluZURp
c3BsYXlMaW5lQnVpbGRlciB7ICp0aGlzIH0uYnVpbGQobGluZUNvbnRlbnQsIGxpbmVCb3gsIGNv
bnN0cmFpbnRzLCBsaW5lSXNGdWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24pOwotICAgIGF1
dG8gYm94ZXMgPSBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIgeyAqdGhpcywgZm9ybWF0dGlu
Z1N0YXRlKCksIGRpc3BsYXlMaW5lLCBsaW5lSW5kZXggfS5idWlsZChsaW5lQ29udGVudCwgbGlu
ZUJveCk7Ci0gICAgaWYgKGF1dG8gZWxsaXBzaXNSZWN0ID0gSW5saW5lRGlzcGxheUxpbmVCdWls
ZGVyOjp0cmFpbGluZ0VsbGlwc2lzVmlzdWFsUmVjdEFmdGVyVHJ1bmNhdGlvbihlbGxpcHNpc1Bv
bGljeSwgZGlzcGxheUxpbmUsIGJveGVzLCBsaW5lQ29udGVudC5pc0xhc3RMaW5lV2l0aElubGlu
ZUNvbnRlbnQpKQorICAgIGF1dG8gbGluZUJveCA9IExpbmVCb3hCdWlsZGVyIHsgKnRoaXMsIGlu
bGluZUxheW91dFN0YXRlLCBsaW5lTGF5b3V0UmVzdWx0IH0uYnVpbGQobGluZUluZGV4KTsKKyAg
ICBhdXRvIGRpc3BsYXlMaW5lID0gSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyIHsgKnRoaXMgfS5i
dWlsZChsaW5lTGF5b3V0UmVzdWx0LCBsaW5lQm94LCBjb25zdHJhaW50cywgbGluZUlzRnVsbHlU
cnVuY2F0ZWRJbkJsb2NrRGlyZWN0aW9uKTsKKyAgICBhdXRvIGJveGVzID0gSW5saW5lRGlzcGxh
eUNvbnRlbnRCdWlsZGVyIHsgKnRoaXMsIGZvcm1hdHRpbmdTdGF0ZSgpLCBkaXNwbGF5TGluZSwg
bGluZUluZGV4IH0uYnVpbGQobGluZUxheW91dFJlc3VsdCwgbGluZUJveCk7CisgICAgaWYgKGF1
dG8gZWxsaXBzaXNSZWN0ID0gSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjp0cmFpbGluZ0VsbGlw
c2lzVmlzdWFsUmVjdEFmdGVyVHJ1bmNhdGlvbihlbGxpcHNpc1BvbGljeSwgZGlzcGxheUxpbmUs
IGJveGVzLCBsaW5lTGF5b3V0UmVzdWx0LmlzRmlyc3RMYXN0LmlzTGFzdExpbmVXaXRoSW5saW5l
Q29udGVudCkpCiAgICAgICAgIGRpc3BsYXlMaW5lLnNldEVsbGlwc2lzVmlzdWFsUmVjdCgqZWxs
aXBzaXNSZWN0KTsKIAogICAgIGRpc3BsYXlDb250ZW50LmJveGVzLmFwcGVuZFZlY3RvcihXVEZN
b3ZlKGJveGVzKSk7CiAgICAgZGlzcGxheUNvbnRlbnQubGluZXMuYXBwZW5kKGRpc3BsYXlMaW5l
KTsKICAgICBhdXRvIHVwZGF0ZUJveEdlb21ldHJ5Rm9yUGxhY2VkRmxvYXRzID0gWyZdIHsKLSAg
ICAgICAgZm9yIChhdXRvJiBmbG9hdEl0ZW0gOiBsaW5lQ29udGVudC5wbGFjZWRGbG9hdHMpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBmbG9hdEl0ZW0gOiBsaW5lTGF5b3V0UmVzdWx0LmZsb2F0Q29u
dGVudC5wbGFjZWRGbG9hdHMpIHsKICAgICAgICAgICAgIGlmICghZmxvYXRJdGVtLmxheW91dEJv
eCgpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBiZSBwbGFjaW5nIGludHJ1c2l2ZSBmbG9hdHMgY29taW5n
IGZyb20gcGFyZW50IEJGQy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5oCmluZGV4IDVjYmFkYTUxYTZhNS4uM2YwOTdjYmU4MWVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTg1LDcgKzg1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25z
dCBIb3Jpem9udGFsQ29uc3RyYWludHMmKTsKIAogICAgIHZvaWQgY29sbGVjdENvbnRlbnRJZk5l
ZWRlZCgpOwotICAgIElubGluZVJlY3QgY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKHNpemVf
dCBsaW5lSW5kZXgsIGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IENvbnN0
cmFpbnRzRm9ySW5saW5lQ29udGVudCYsIGNvbnN0IElubGluZUxheW91dFN0YXRlJiwgSW5saW5l
RGlzcGxheTo6Q29udGVudCYpOworICAgIElubGluZVJlY3QgY3JlYXRlRGlzcGxheUNvbnRlbnRG
b3JMaW5lKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lTGF5b3V0UmVz
dWx0JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgY29uc3QgSW5saW5lTGF5
b3V0U3RhdGUmLCBJbmxpbmVEaXNwbGF5OjpDb250ZW50Jik7CiAgICAgdm9pZCByZXNldEdlb21l
dHJ5Rm9yQ2xhbXBlZENvbnRlbnQoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0Rpc3BsYXlD
b250ZW50UmFuZ2UsIGNvbnN0IExpbmVCdWlsZGVyOjpTdXNwZW5kZWRGbG9hdExpc3QmIHN1c3Bl
bmRlZEZsb2F0cywgTGF5b3V0UG9pbnQgdG9wbGVmdCk7CiAKICAgICBjb25zdCBJbmxpbmVEYW1h
Z2UqIG1fbGluZURhbWFnZSB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRy
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IDM2YjQwMGQ0MWNjNC4uZDJjMDFmMzQz
OWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRy
eS5jcHAKQEAgLTQ3LDE1ICs0NywxNSBAQCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OklubGlu
ZUZvcm1hdHRpbmdHZW9tZXRyeShjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dAogewogfQog
Ci1JbmxpbmVMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6bG9naWNhbFRvcEZv
ck5leHRMaW5lKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQsIGNv
bnN0IElubGluZVJlY3QmIGxpbmVMb2dpY2FsUmVjdCwgY29uc3QgRmxvYXRpbmdDb250ZXh0JiBm
bG9hdGluZ0NvbnRleHQpIGNvbnN0CitJbmxpbmVMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeTo6bG9naWNhbFRvcEZvck5leHRMaW5lKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lTGF5
b3V0UmVzdWx0JiBsaW5lTGF5b3V0UmVzdWx0LCBjb25zdCBJbmxpbmVSZWN0JiBsaW5lTG9naWNh
bFJlY3QsIGNvbnN0IEZsb2F0aW5nQ29udGV4dCYgZmxvYXRpbmdDb250ZXh0KSBjb25zdAogewot
ICAgIGF1dG8gZGlkTWFuYWdlVG9QbGFjZUlubGluZUNvbnRlbnRPckZsb2F0ID0gIWxpbmVDb250
ZW50LmNvbW1pdHRlZFJhbmdlLmlzRW1wdHkoKTsKKyAgICBhdXRvIGRpZE1hbmFnZVRvUGxhY2VJ
bmxpbmVDb250ZW50T3JGbG9hdCA9ICFsaW5lTGF5b3V0UmVzdWx0LmNvbW1pdHRlZFJhbmdlLmlz
RW1wdHkoKTsKICAgICBpZiAoZGlkTWFuYWdlVG9QbGFjZUlubGluZUNvbnRlbnRPckZsb2F0KSB7
CiAgICAgICAgIC8vIE5vcm1hbGx5IHRoZSBuZXh0IGxpbmUncyBsb2dpY2FsIHRvcCBpcyB0aGUg
cHJldmlvdXMgbGluZSdzIGxvZ2ljYWwgYm90dG9tLCBidXQgd2hlbiB0aGUgbGluZSBlbmRzCiAg
ICAgICAgIC8vIHdpdGggdGhlIGNsZWFyIHByb3BlcnR5IHNldCwgdGhlIG5leHQgbGluZSBuZWVk
cyB0byBjbGVhciB0aGUgZXhpc3RpbmcgZmxvYXRzLgotICAgICAgICBpZiAobGluZUNvbnRlbnQu
cnVucy5pc0VtcHR5KCkpCisgICAgICAgIGlmIChsaW5lTGF5b3V0UmVzdWx0LnJ1bnMuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuIGxpbmVMb2dpY2FsUmVjdC5ib3R0b20oKTsKLSAgICAg
ICAgYXV0byYgbGFzdFJ1bkxheW91dEJveCA9IGxpbmVDb250ZW50LnJ1bnMubGFzdCgpLmxheW91
dEJveCgpOworICAgICAgICBhdXRvJiBsYXN0UnVuTGF5b3V0Qm94ID0gbGluZUxheW91dFJlc3Vs
dC5ydW5zLmxhc3QoKS5sYXlvdXRCb3goKTsKICAgICAgICAgaWYgKCFsYXN0UnVuTGF5b3V0Qm94
Lmhhc0Zsb2F0Q2xlYXIoKSkKICAgICAgICAgICAgIHJldHVybiBsaW5lTG9naWNhbFJlY3QuYm90
dG9tKCk7CiAgICAgICAgIGF1dG8gcG9zaXRpb25XaXRoQ2xlYXJhbmNlID0gZmxvYXRpbmdDb250
ZXh0LnZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlKGxhc3RSdW5MYXlvdXRCb3gsIGZvcm1h
dHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGFzdFJ1bkxheW91dEJveCkpOwpAQCAtNjcs
OCArNjcsOCBAQCBJbmxpbmVMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6bG9n
aWNhbFRvcEZvck5leHRMaW5lKGNvbnN0IExpbmVCdWlsZAogICAgIGF1dG8gaW50cnVzaXZlRmxv
YXRCb3R0b20gPSBbJl0oKSAtPiBJbmxpbmVMYXlvdXRVbml0IHsKICAgICAgICAgLy8gRmxvYXRz
IG11c3QgaGF2ZSBwcmV2ZW50ZWQgdXMgcGxhY2luZyBhbnkgY29udGVudCBvbiB0aGUgbGluZS4K
ICAgICAgICAgLy8gTW92ZSB0aGUgbmV4dCBsaW5lIGJlbG93IHRoZSBpbnRydXNpdmUgZmxvYXQo
cykuCi0gICAgICAgIEFTU0VSVChsaW5lQ29udGVudC5ydW5zLmlzRW1wdHkoKSB8fCBsaW5lQ29u
dGVudC5ydW5zWzBdLmlzTGluZVNwYW5uaW5nSW5saW5lQm94U3RhcnQoKSk7Ci0gICAgICAgIEFT
U0VSVChsaW5lQ29udGVudC5oYXNJbnRydXNpdmVGbG9hdCk7CisgICAgICAgIEFTU0VSVChsaW5l
TGF5b3V0UmVzdWx0LnJ1bnMuaXNFbXB0eSgpIHx8IGxpbmVMYXlvdXRSZXN1bHQucnVuc1swXS5p
c0xpbmVTcGFubmluZ0lubGluZUJveFN0YXJ0KCkpOworICAgICAgICBBU1NFUlQobGluZUxheW91
dFJlc3VsdC5mbG9hdENvbnRlbnQuaGFzSW50cnVzaXZlRmxvYXQpOwogICAgICAgICAvLyBGSVhN
RTogTW92aW5nIHRoZSBib3R0b20gcG9zaXRpb24gYnkgdGhlIGluaXRpYWwgbGluZSBoZWlnaHQg
bWF5IGJlIHRvbyBtdWNoIG1lYW5pbmcgdGhhdCB3ZSBtaXNzIHZlcnRpY2FsIHBvc2l0aW9ucyB3
aGVyZSBhdG9taWMgaW5saW5lIGNvbnRlbnQgY291bGQgdmVyeSB3ZWxsIGZpdC4KICAgICAgICAg
Ly8gVGhlIHNwZWMgaXMgdW5jbGVhciBvZiBob3cgbXVjaCB3ZSBzaG91bGQgbW92ZSBkb3duIGF0
IHRoaXMgcG9pbnQgYW5kIHdoaWxlIDFweCBzaG91bGQgYmUgdGhlIG1vc3QgcHJlY2lzZSBpdCdz
IGFsc28gcmF0aGVyIGV4cGVuc2l2ZS4KICAgICAgICAgYXV0byBpbmZsYXRlZExpbmVSZWN0Qm90
dG9tID0gbGluZUxvZ2ljYWxSZWN0LnRvcCgpICsgZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCku
c3R5bGUoKS5jb21wdXRlZExpbmVIZWlnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRy
eS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ0dlb21ldHJ5LmgKaW5kZXggY2E0YzY5NzJlOWI1Li5jYjQ5OGI2YjllYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oCkBA
IC00MCw3ICs0MCw3IEBAIGNsYXNzIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeSA6IHB1YmxpYyBG
b3JtYXR0aW5nR2VvbWV0cnkgewogcHVibGljOgogICAgIElubGluZUZvcm1hdHRpbmdHZW9tZXRy
eShjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYpOwogCi0gICAgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsVG9wRm9yTmV4dExpbmUoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50Jiwg
Y29uc3QgSW5saW5lUmVjdCYgbGluZUxvZ2ljYWxSZWN0LCBjb25zdCBGbG9hdGluZ0NvbnRleHQm
KSBjb25zdDsKKyAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxUb3BGb3JOZXh0TGluZShjb25z
dCBMaW5lQnVpbGRlcjo6TGluZUxheW91dFJlc3VsdCYsIGNvbnN0IElubGluZVJlY3QmIGxpbmVM
b2dpY2FsUmVjdCwgY29uc3QgRmxvYXRpbmdDb250ZXh0JikgY29uc3Q7CiAKICAgICBDb250ZW50
SGVpZ2h0QW5kTWFyZ2luIGlubGluZUJsb2NrQ29udGVudEhlaWdodEFuZE1hcmdpbihjb25zdCBC
b3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBPdmVycmlkZGVuVmVydGlj
YWxWYWx1ZXMmKSBjb25zdDsKICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gaW5saW5lQmxvY2tD
b250ZW50V2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFp
bnRzJiwgY29uc3QgT3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMmKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxpbmVCb3hCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcAppbmRleCBiM2U5ODBjNmY5M2Iu
LmYzNWY1NmQzODM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWls
ZGVyLmNwcApAQCAtMzYsMjAgKzM2LDIwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3Bh
Y2UgTGF5b3V0IHsKIAotTGluZUJveEJ1aWxkZXI6OkxpbmVCb3hCdWlsZGVyKGNvbnN0IElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgY29uc3QgSW5saW5l
TGF5b3V0U3RhdGUmIGlubGluZUxheW91dFN0YXRlLCBjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNv
bnRlbnQmIGxpbmVDb250ZW50KQorTGluZUJveEJ1aWxkZXI6OkxpbmVCb3hCdWlsZGVyKGNvbnN0
IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgY29uc3Qg
SW5saW5lTGF5b3V0U3RhdGUmIGlubGluZUxheW91dFN0YXRlLCBjb25zdCBMaW5lQnVpbGRlcjo6
TGluZUxheW91dFJlc3VsdCYgbGluZUxheW91dFJlc3VsdCkKICAgICA6IG1faW5saW5lRm9ybWF0
dGluZ0NvbnRleHQoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCiAgICAgLCBtX2lubGluZUxheW91
dFN0YXRlKGlubGluZUxheW91dFN0YXRlKQotICAgICwgbV9saW5lQ29udGVudChsaW5lQ29udGVu
dCkKKyAgICAsIG1fbGluZUxheW91dFJlc3VsdChsaW5lTGF5b3V0UmVzdWx0KQogewogfQogCiBM
aW5lQm94IExpbmVCb3hCdWlsZGVyOjpidWlsZChzaXplX3QgbGluZUluZGV4KQogewotICAgIGF1
dG8mIGxpbmVDb250ZW50ID0gdGhpcy0+bGluZUNvbnRlbnQoKTsKKyAgICBhdXRvJiBsaW5lTGF5
b3V0UmVzdWx0ID0gdGhpcy0+bGluZUxheW91dFJlc3VsdCgpOwogICAgIC8vIEZJWE1FOiBUaGUg
b3ZlcmZsb3dpbmcgaGFuZ2luZyBjb250ZW50IHNob3VsZCBiZSBwYXJ0IG9mIHRoZSBpbmsgb3Zl
cmZsb3cuCiAgICAgYXV0byBjb250ZW50TG9naWNhbFdpZHRoID0gWyZdIHsKLSAgICAgICAgaWYg
KGxpbmVDb250ZW50LmlubGluZUJhc2VEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSKQot
ICAgICAgICAgICAgcmV0dXJuIGxpbmVDb250ZW50LmNvbnRlbnRMb2dpY2FsV2lkdGggLSBsaW5l
Q29udGVudC5oYW5naW5nQ29udGVudC53aWR0aDsKKyAgICAgICAgaWYgKGxpbmVMYXlvdXRSZXN1
bHQuZGlyZWN0aW9uYWxpdHkuaW5saW5lQmFzZURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpM
VFIpCisgICAgICAgICAgICByZXR1cm4gbGluZUxheW91dFJlc3VsdC5jb250ZW50R2VvbWV0cnku
bG9naWNhbFdpZHRoIC0gbGluZUxheW91dFJlc3VsdC5oYW5naW5nQ29udGVudC5sb2dpY2FsV2lk
dGg7CiAgICAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgY2xpZW50cyBvZiB0aGUgaW5saW5lIGl0
ZXJhdG9yIGludGVyZmFjZSAoZWRpdGluZywgc2VsZWN0aW9uLCBET00gZXRjKSBjYW4ndCBkZWFs
IHdpdGgKICAgICAgICAgLy8gaGFuZ2luZyBjb250ZW50IG9mZnNldHMgd2hlbiB0aGV5IGFmZmVj
dCB0aGUgcmVzdCBvZiB0aGUgY29udGVudC4KICAgICAgICAgLy8gSW4gbGVmdC10by1yaWdodCBp
bmxpbmUgZGlyZWN0aW9uLCBoYW5naW5nIGNvbnRlbnQgaXMgYWx3YXlzIHRyYWlsaW5nIGhlbmNl
IHRoZSB3aWR0aCBkb2VzIG5vdCBpbXBvc2Ugb2Zmc2V0IG9uIHRoZSByZXN0IG9mIHRoZSBjb250
ZW50CkBAIC01Nyw5ICs1Nyw5IEBAIExpbmVCb3ggTGluZUJveEJ1aWxkZXI6OmJ1aWxkKHNpemVf
dCBsaW5lSW5kZXgpCiAgICAgICAgIC8vIFdoYXQncyBtaXNzaW5nIGlzIGEgd2F5IHRvIHRlbGwg
dGhhdCB3aGlsZSB0aGUgY29udGVudCBzdGFydHMgYXQgdGhlIGxlZnQgc2lkZSBvZiB0aGUgKHZp
c3VhbGx5IGxlYWRpbmcpIGhhbmdpbmcgY29udGVudAogICAgICAgICAvLyB0aGUgcm9vdCBpbmxp
bmUgYm94IGhhcyBhbiBvZmZzZXQsIHRoZSB3aWR0aCBvZiB0aGUgaGFuZ2luZyBjb250ZW50IChl
c3NlbnRpYWxseSBkZWNvdXBsaW5nIHRoZSBjb250ZW50IGFuZCB0aGUgcm9vdCBpbmxpbmUgYm94
IHZpc3VhbCBsZWZ0KS4KICAgICAgICAgLy8gRm9yIG5vdyBqdXN0IGluY2x1ZGUgdGhlIGhhbmdp
bmcgY29udGVudCBpbiB0aGUgcm9vdCBpbmxpbmUgYm94IGFzIGlmIGl0IHdhcyBub3QgaGFuZ2lu
ZyAodGhpcyBpcyBob3cgbGVnYWN5IGxpbmUgbGF5b3V0IHdvcmtzKS4KLSAgICAgICAgcmV0dXJu
IGxpbmVDb250ZW50LmNvbnRlbnRMb2dpY2FsV2lkdGg7CisgICAgICAgIHJldHVybiBsaW5lTGF5
b3V0UmVzdWx0LmNvbnRlbnRHZW9tZXRyeS5sb2dpY2FsV2lkdGg7CiAgICAgfTsKLSAgICBhdXRv
IGxpbmVCb3ggPSBMaW5lQm94IHsgcm9vdEJveCgpLCBsaW5lQ29udGVudC5jb250ZW50TG9naWNh
bExlZnQsIGNvbnRlbnRMb2dpY2FsV2lkdGgoKSwgbGluZUluZGV4LCBsaW5lQ29udGVudC5ub25T
cGFubmluZ0lubGluZUxldmVsQm94Q291bnQgfTsKKyAgICBhdXRvIGxpbmVCb3ggPSBMaW5lQm94
IHsgcm9vdEJveCgpLCBsaW5lTGF5b3V0UmVzdWx0LmNvbnRlbnRHZW9tZXRyeS5sb2dpY2FsTGVm
dCwgY29udGVudExvZ2ljYWxXaWR0aCgpLCBsaW5lSW5kZXgsIGxpbmVMYXlvdXRSZXN1bHQubm9u
U3Bhbm5pbmdJbmxpbmVMZXZlbEJveENvdW50IH07CiAgICAgY29uc3RydWN0SW5saW5lTGV2ZWxC
b3hlcyhsaW5lQm94KTsKICAgICBhZGp1c3RJZGVvZ3JhcGhpY0Jhc2VsaW5lSWZBcHBsaWNhYmxl
KGxpbmVCb3gpOwogICAgIGFkanVzdElubGluZUJveEhlaWdodHNGb3JMaW5lQm94Q29udGFpbklm
QXBwbGljYWJsZShsaW5lQm94KTsKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIExpbmVCb3hCdWls
ZGVyOjpjb25zdHJ1Y3RJbmxpbmVMZXZlbEJveGVzKExpbmVCb3gmIGxpbmVCb3gpCiAgICAgfTsK
IAogICAgIGF1dG8gbGluZUhhc0NvbnRlbnQgPSBmYWxzZTsKLSAgICBhdXRvJiBydW5zID0gbGlu
ZUNvbnRlbnQoKS5ydW5zOworICAgIGF1dG8mIHJ1bnMgPSBsaW5lTGF5b3V0UmVzdWx0KCkucnVu
czsKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgcnVucy5zaXplKCk7ICsraW5k
ZXgpIHsKICAgICAgICAgYXV0byYgcnVuID0gcnVuc1tpbmRleF07CiAgICAgICAgIGF1dG8mIGxh
eW91dEJveCA9IHJ1bi5sYXlvdXRCb3goKTsKQEAgLTM4Niw3ICszODYsNyBAQCB2b2lkIExpbmVC
b3hCdWlsZGVyOjpjb25zdHJ1Y3RJbmxpbmVMZXZlbEJveGVzKExpbmVCb3gmIGxpbmVCb3gpCiAg
ICAgICAgICAgICBhdXRvIG1hcmdpblN0YXJ0ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRy
eUZvckJveChsYXlvdXRCb3gpLm1hcmdpblN0YXJ0KCk7CiAgICAgICAgICAgICBsb2dpY2FsTGVm
dCArPSBzdGQ6Om1heCgwX2x1LCBtYXJnaW5TdGFydCk7CiAgICAgICAgICAgICBhdXRvIGluaXRp
YWxMb2dpY2FsV2lkdGggPSByb290SW5saW5lQm94LmxvZ2ljYWxSaWdodCgpIC0gbG9naWNhbExl
ZnQ7Ci0gICAgICAgICAgICBBU1NFUlQoaW5pdGlhbExvZ2ljYWxXaWR0aCA+PSAwIHx8IGxpbmVD
b250ZW50KCkuaGFuZ2luZ0NvbnRlbnQud2lkdGggfHwgc3RkOjppc25hbihpbml0aWFsTG9naWNh
bFdpZHRoKSk7CisgICAgICAgICAgICBBU1NFUlQoaW5pdGlhbExvZ2ljYWxXaWR0aCA+PSAwIHx8
IGxpbmVMYXlvdXRSZXN1bHQoKS5oYW5naW5nQ29udGVudC5sb2dpY2FsV2lkdGggfHwgc3RkOjpp
c25hbihpbml0aWFsTG9naWNhbFdpZHRoKSk7CiAgICAgICAgICAgICBpbml0aWFsTG9naWNhbFdp
ZHRoID0gc3RkOjptYXgoaW5pdGlhbExvZ2ljYWxXaWR0aCwgMC5mKTsKICAgICAgICAgICAgIGF1
dG8gaW5saW5lQm94ID0gSW5saW5lTGV2ZWxCb3g6OmNyZWF0ZUlubGluZUJveChsYXlvdXRCb3gs
IHN0eWxlLCBsb2dpY2FsTGVmdCwgaW5pdGlhbExvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICBp
bmxpbmVCb3guc2V0SXNGaXJzdEJveCgpOwpAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgTGluZUJv
eEJ1aWxkZXI6OmFkanVzdElubGluZUJveEhlaWdodHNGb3JMaW5lQm94Q29udGFpbklmQXBwbGlj
YWJsZShMaW5lQm94CiAKICAgICBpZiAobGluZUJveENvbnRhaW4uY29udGFpbnMoTGluZUJveENv
bnRhaW46OkdseXBocykpIHsKICAgICAgICAgLy8gQ29tcHV0ZSB0ZXh0IGNvbnRlbnQgKGdseXBo
cykgaHVnZ2luZyBpbmxpbmUgYm94IGxheW91dCBib3VuZHMuCi0gICAgICAgIGZvciAoYXV0byBy
dW4gOiBsaW5lQ29udGVudCgpLnJ1bnMpIHsKKyAgICAgICAgZm9yIChhdXRvIHJ1biA6IGxpbmVM
YXlvdXRSZXN1bHQoKS5ydW5zKSB7CiAgICAgICAgICAgICBpZiAoIXJ1bi5pc1RleHQoKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtNTMxLDcgKzUzMSw3IEBAIHZvaWQgTGluZUJv
eEJ1aWxkZXI6OmFkanVzdElubGluZUJveEhlaWdodHNGb3JMaW5lQm94Q29udGFpbklmQXBwbGlj
YWJsZShMaW5lQm94CiAgICAgICAgIElubGluZUxheW91dFVuaXQgaW5pdGlhbExldHRlckFzY2Vu
dCA9IGZvbnRNZXRyaWNzLmNhcEhlaWdodCgpOwogICAgICAgICBhdXRvIGluaXRpYWxMZXR0ZXJE
ZXNjZW50ID0gSW5saW5lTGF5b3V0VW5pdCB7IH07CiAKLSAgICAgICAgZm9yIChhdXRvIHJ1biA6
IGxpbmVDb250ZW50KCkucnVucykgeworICAgICAgICBmb3IgKGF1dG8gcnVuIDogbGluZUxheW91
dFJlc3VsdCgpLnJ1bnMpIHsKICAgICAgICAgICAgIC8vIFdlIHJlYWxseSBzaG91bGQgb25seSBo
YXZlIG9uZSB0ZXh0IHJ1biBmb3IgaW5pdGlhbCBsZXR0ZXIuCiAgICAgICAgICAgICBpZiAoIXJ1
bi5pc1RleHQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTY5MSw3ICs2OTEsNyBA
QCB2b2lkIExpbmVCb3hCdWlsZGVyOjpjb21wdXRlTGluZUJveEdlb21ldHJ5KExpbmVCb3gmIGxp
bmVCb3gpIGNvbnN0CiAgICAgICAgIGZvciAoYXV0byYgbm9uUm9vdElubGluZUxldmVsQm94IDog
bGluZUJveC5ub25Sb290SW5saW5lTGV2ZWxCb3hlcygpKQogICAgICAgICAgICAgbm9uUm9vdElu
bGluZUxldmVsQm94LnNldExvZ2ljYWxUb3Aobm9uUm9vdElubGluZUxldmVsQm94LmxvZ2ljYWxU
b3AoKSAtIHRleHRCb3hFZGdlT3ZlckhlaWdodCk7CiAgICAgfQotICAgIGxpbmVCb3guc2V0TG9n
aWNhbFJlY3QoeyBsaW5lQ29udGVudCgpLmxpbmVMb2dpY2FsVG9wTGVmdCwgbGluZUNvbnRlbnQo
KS5saW5lTG9naWNhbFdpZHRoLCBsaW5lQm94TG9naWNhbEhlaWdodCB9KTsKKyAgICBsaW5lQm94
LnNldExvZ2ljYWxSZWN0KHsgbGluZUxheW91dFJlc3VsdCgpLmxpbmVHZW9tZXRyeS5sb2dpY2Fs
VG9wTGVmdCwgbGluZUxheW91dFJlc3VsdCgpLmxpbmVHZW9tZXRyeS5sb2dpY2FsV2lkdGgsIGxp
bmVCb3hMb2dpY2FsSGVpZ2h0IH0pOwogfQogCiB2b2lkIExpbmVCb3hCdWlsZGVyOjphZGp1c3RP
dXRzaWRlTGlzdE1hcmtlcnNQb3NpdGlvbihMaW5lQm94JiBsaW5lQm94KQpAQCAtNzAxLDExICs3
MDEsMTEgQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6YWRqdXN0T3V0c2lkZUxpc3RNYXJrZXJzUG9z
aXRpb24oTGluZUJveCYgbGluZUJveCkKICAgICBhdXRvIGxpbmVCb3hSZWN0ID0gbGluZUJveC5s
b2dpY2FsUmVjdCgpOwogICAgIGF1dG8gZmxvYXRDb25zdHJhaW50cyA9IGZsb2F0aW5nQ29udGV4
dC5jb25zdHJhaW50cyhMYXlvdXRVbml0IHsgbGluZUJveFJlY3QudG9wKCkgfSwgTGF5b3V0VW5p
dCB7IGxpbmVCb3hSZWN0LmJvdHRvbSgpIH0sIEZsb2F0aW5nQ29udGV4dDo6TWF5QmVBYm92ZUxh
c3RGbG9hdDo6Tm8pOwogCi0gICAgYXV0byBsaW5lQm94T2Zmc2V0ID0gbGluZUJveFJlY3QubGVm
dCgpIC0gbGluZUNvbnRlbnQoKS5saW5lSW5pdGlhbExvZ2ljYWxMZWZ0SW5jbHVkaW5nSW50cnVz
aXZlRmxvYXRzOworICAgIGF1dG8gbGluZUJveE9mZnNldCA9IGxpbmVCb3hSZWN0LmxlZnQoKSAt
IGxpbmVMYXlvdXRSZXN1bHQoKS5saW5lR2VvbWV0cnkuaW5pdGlhbExvZ2ljYWxMZWZ0SW5jbHVk
aW5nSW50cnVzaXZlRmxvYXRzOwogICAgIGF1dG8gcm9vdElubGluZUJveExvZ2ljYWxMZWZ0ID0g
bGluZUJveC5sb2dpY2FsUmVjdEZvclJvb3RJbmxpbmVCb3goKS5sZWZ0KCk7CiAgICAgYXV0byBy
b290SW5saW5lQm94T2Zmc2V0RnJvbUNvbnRlbnRCb3hPckludHJ1c2l2ZUZsb2F0ID0gbGluZUJv
eE9mZnNldCArIHJvb3RJbmxpbmVCb3hMb2dpY2FsTGVmdDsKICAgICBmb3IgKGF1dG8gbGlzdE1h
cmtlckJveEluZGV4IDogbV9vdXRzaWRlTGlzdE1hcmtlcnMpIHsKLSAgICAgICAgYXV0byYgbGlz
dE1hcmtlclJ1biA9IGxpbmVDb250ZW50KCkucnVuc1tsaXN0TWFya2VyQm94SW5kZXhdOworICAg
ICAgICBhdXRvJiBsaXN0TWFya2VyUnVuID0gbGluZUxheW91dFJlc3VsdCgpLnJ1bnNbbGlzdE1h
cmtlckJveEluZGV4XTsKICAgICAgICAgQVNTRVJUKGxpc3RNYXJrZXJSdW4uaXNMaXN0TWFya2Vy
T3V0c2lkZSgpKTsKICAgICAgICAgYXV0byYgbGlzdE1hcmtlckJveCA9IGRvd25jYXN0PEVsZW1l
bnRCb3g+KGxpc3RNYXJrZXJSdW4ubGF5b3V0Qm94KCkpOwogICAgICAgICBhdXRvJiBsaXN0TWFy
a2VySW5saW5lTGV2ZWxCb3ggPSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yKGxpc3RNYXJrZXJS
dW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmgKaW5kZXggN2M0
ZWNjOTA2NGZkLi5lMGFiOWY3NGQ1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZUJveEJ1aWxkZXIuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBMYXlvdXRTdGF0ZTsKIAogY2xh
c3MgTGluZUJveEJ1aWxkZXIgewogcHVibGljOgotICAgIExpbmVCb3hCdWlsZGVyKGNvbnN0IElu
bGluZUZvcm1hdHRpbmdDb250ZXh0JiwgY29uc3QgSW5saW5lTGF5b3V0U3RhdGUmLCBjb25zdCBM
aW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmKTsKKyAgICBMaW5lQm94QnVpbGRlcihjb25zdCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCYsIGNvbnN0IElubGluZUxheW91dFN0YXRlJiwgY29uc3QgTGlu
ZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmKTsKIAogICAgIExpbmVCb3ggYnVpbGQoc2l6ZV90
IGxpbmVJbmRleCk7CiAKQEAgLTU1LDEwICs1NSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRq
dXN0SWRlb2dyYXBoaWNCYXNlbGluZUlmQXBwbGljYWJsZShMaW5lQm94Jik7CiAgICAgdm9pZCBh
ZGp1c3RPdXRzaWRlTGlzdE1hcmtlcnNQb3NpdGlvbihMaW5lQm94Jik7CiAKLSAgICBib29sIGlz
Rmlyc3RMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9saW5lQ29udGVudC5pc0ZpcnN0Rm9ybWF0dGVk
TGluZSAhPSBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQ6OkZpcnN0Rm9ybWF0dGVkTGluZTo6Tm87
IH0KLSAgICBib29sIGlzTGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xpbmVDb250ZW50Lmlz
TGFzdExpbmVXaXRoSW5saW5lQ29udGVudDsgfQorICAgIGJvb2wgaXNGaXJzdExpbmUoKSBjb25z
dCB7IHJldHVybiBsaW5lTGF5b3V0UmVzdWx0KCkuaXNGaXJzdExhc3QuaXNGaXJzdEZvcm1hdHRl
ZExpbmUgIT0gTGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQ6OklzRmlyc3RMYXN0OjpGaXJz
dEZvcm1hdHRlZExpbmU6Ok5vOyB9CisgICAgYm9vbCBpc0xhc3RMaW5lKCkgY29uc3QgeyByZXR1
cm4gbGluZUxheW91dFJlc3VsdCgpLmlzRmlyc3RMYXN0LmlzTGFzdExpbmVXaXRoSW5saW5lQ29u
dGVudDsgfQogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7IH0KLSAgICBj
b25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50KCkgY29uc3QgeyByZXR1
cm4gbV9saW5lQ29udGVudDsgfQorICAgIGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lTGF5b3V0UmVz
dWx0JiBsaW5lTGF5b3V0UmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9saW5lTGF5b3V0UmVzdWx0
OyB9CiAgICAgY29uc3QgQm94JiByb290Qm94KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0Nv
bnRleHQoKS5yb290KCk7IH0KICAgICBjb25zdCBSZW5kZXJTdHlsZSYgcm9vdFN0eWxlKCkgY29u
c3QgeyByZXR1cm4gaXNGaXJzdExpbmUoKSA/IHJvb3RCb3goKS5maXJzdExpbmVTdHlsZSgpIDog
cm9vdEJveCgpLnN0eWxlKCk7IH0KIApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogcHJpdmF0
ZToKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgbV9pbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDsKICAgICBjb25zdCBJbmxpbmVMYXlvdXRTdGF0ZSYgbV9pbmxpbmVMYXlvdXRTdGF0
ZTsKLSAgICBjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIG1fbGluZUNvbnRlbnQ7Cisg
ICAgY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmIG1fbGluZUxheW91dFJlc3Vs
dDsKICAgICBib29sIG1fZmFsbGJhY2tGb250UmVxdWlyZXNJZGVvZ3JhcGhpY0Jhc2VsaW5lIHsg
ZmFsc2UgfTsKICAgICBIYXNoTWFwPGNvbnN0IElubGluZUxldmVsQm94KiwgVGV4dFV0aWw6OkZh
bGxiYWNrRm9udExpc3Q+IG1fZmFsbGJhY2tGb250c0ZvcklubGluZUJveGVzOwogICAgIFZlY3Rv
cjxzaXplX3Q+IG1fb3V0c2lkZUxpc3RNYXJrZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZUJ1aWxkZXIuY3BwCmluZGV4IDRiZDY5YmM4NDZkNy4uM2EzYjE5ZmZkMzYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCkBAIC0zNDYsNyArMzQ2LDcgQEAg
TGluZUJ1aWxkZXI6OkxpbmVCdWlsZGVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBp
bmxpbmVGb3JtYXR0aW5nQ29udGV4dCwKIHsKIH0KIAotTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50
IExpbmVCdWlsZGVyOjpsYXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IExpbmVJbnB1dCYgbGluZUlu
cHV0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFByZXZpb3VzTGluZT4mIHByZXZpb3VzTGluZSkKK0xp
bmVCdWlsZGVyOjpMaW5lTGF5b3V0UmVzdWx0IExpbmVCdWlsZGVyOjpsYXlvdXRJbmxpbmVDb250
ZW50KGNvbnN0IExpbmVJbnB1dCYgbGluZUlucHV0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFByZXZp
b3VzTGluZT4mIHByZXZpb3VzTGluZSkKIHsKICAgICBhdXRvIHByZXZpb3VzTGluZUVuZHNXaXRo
TGluZUJyZWFrID0gIXByZXZpb3VzTGluZSA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6bWFrZV9vcHRp
b25hbChwcmV2aW91c0xpbmUtPmVuZHNXaXRoTGluZUJyZWFrKTsKICAgICBpbml0aWFsaXplKGxp
bmVJbnB1dC5pbml0aWFsTG9naWNhbFJlY3QsIGluaXRpYWxDb25zdHJhaW50c0ZvckxpbmUobGlu
ZUlucHV0LmluaXRpYWxMb2dpY2FsUmVjdCwgcHJldmlvdXNMaW5lRW5kc1dpdGhMaW5lQnJlYWsp
LCBsaW5lSW5wdXQubmVlZHNMYXlvdXRSYW5nZSwgcHJldmlvdXNMaW5lKTsKQEAgLTM1OSwyMyAr
MzU5LDE1IEBAIExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCBMaW5lQnVpbGRlcjo6bGF5b3V0SW5s
aW5lQ29udGVudChjb25zdCBMaW5lSW5wdXQmIGxpbmVJCiAgICAgYXV0byBjb250ZW50TG9naWNh
bExlZnQgPSBob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KGlzTGFzdExpbmUpOwogCiAgICAgcmV0
dXJuIHsgY29tbWl0dGVkUmFuZ2UKLSAgICAgICAgLCBjb21taXR0ZWRDb250ZW50Lm92ZXJmbG93
TG9naWNhbFdpZHRoCi0gICAgICAgICwgV1RGTW92ZShtX3BsYWNlZEZsb2F0cykKLSAgICAgICAg
LCBXVEZNb3ZlKG1fc3VzcGVuZGVkRmxvYXRzKQotICAgICAgICAsIG1fbGluZUlzQ29uc3RyYWlu
ZWRCeUZsb2F0Ci0gICAgICAgICwgbV9saW5lSW5pdGlhbExvZ2ljYWxSZWN0LmxlZnQoKSArIG1f
aW5pdGlhbEludHJ1c2l2ZUZsb2F0c1dpZHRoCi0gICAgICAgICwgbV9saW5lTG9naWNhbFJlY3Qu
dG9wTGVmdCgpCi0gICAgICAgICwgbV9saW5lTG9naWNhbFJlY3Qud2lkdGgoKQotICAgICAgICAs
IGNvbnRlbnRMb2dpY2FsTGVmdAotICAgICAgICAsIG1fbGluZS5jb250ZW50TG9naWNhbFdpZHRo
KCkKLSAgICAgICAgLCBjb250ZW50TG9naWNhbExlZnQgKyBtX2xpbmUuY29udGVudExvZ2ljYWxS
aWdodCgpCisgICAgICAgICwgbV9saW5lLnJ1bnMoKQorICAgICAgICAsIHsgY29udGVudExvZ2lj
YWxMZWZ0LCBtX2xpbmUuY29udGVudExvZ2ljYWxXaWR0aCgpLCBjb250ZW50TG9naWNhbExlZnQg
KyBtX2xpbmUuY29udGVudExvZ2ljYWxSaWdodCgpLCBjb21taXR0ZWRDb250ZW50Lm92ZXJmbG93
TG9naWNhbFdpZHRoIH0KKyAgICAgICAgLCB7IG1fbGluZUxvZ2ljYWxSZWN0LnRvcExlZnQoKSwg
bV9saW5lSW5pdGlhbExvZ2ljYWxSZWN0LmxlZnQoKSArIG1faW5pdGlhbEludHJ1c2l2ZUZsb2F0
c1dpZHRoLCBtX2xpbmVMb2dpY2FsUmVjdC53aWR0aCgpIH0KICAgICAgICAgLCB7ICFtX2xpbmUu
aXNIYW5naW5nVHJhaWxpbmdDb250ZW50V2hpdGVzcGFjZSgpLCBtX2xpbmUuaGFuZ2luZ1RyYWls
aW5nQ29udGVudFdpZHRoKCkgfQotICAgICAgICAsIGlzRmlyc3RGb3JtYXR0ZWRMaW5lKCkgPyBM
aW5lQ29udGVudDo6Rmlyc3RGb3JtYXR0ZWRMaW5lOjpXaXRoaW5JRkMgOiBMaW5lQ29udGVudDo6
Rmlyc3RGb3JtYXR0ZWRMaW5lOjpObwotICAgICAgICAsIGlzTGFzdExpbmUKKyAgICAgICAgLCB7
IGNvbXB1dGVkVmlzdWFsT3JkZXIobV9saW5lKSwgaW5saW5lQmFzZURpcmVjdGlvbiB9CisgICAg
ICAgICwgeyBXVEZNb3ZlKG1fcGxhY2VkRmxvYXRzKSwgV1RGTW92ZShtX3N1c3BlbmRlZEZsb2F0
cyksIG1fbGluZUlzQ29uc3RyYWluZWRCeUZsb2F0IH0KKyAgICAgICAgLCB7IGlzRmlyc3RGb3Jt
YXR0ZWRMaW5lKCkgPyBMaW5lTGF5b3V0UmVzdWx0OjpJc0ZpcnN0TGFzdDo6Rmlyc3RGb3JtYXR0
ZWRMaW5lOjpXaXRoaW5JRkMgOiBMaW5lTGF5b3V0UmVzdWx0OjpJc0ZpcnN0TGFzdDo6Rmlyc3RG
b3JtYXR0ZWRMaW5lOjpObywgaXNMYXN0TGluZSB9CiAgICAgICAgICwgbV9saW5lLm5vblNwYW5u
aW5nSW5saW5lTGV2ZWxCb3hDb3VudCgpCi0gICAgICAgICwgY29tcHV0ZWRWaXN1YWxPcmRlciht
X2xpbmUpCi0gICAgICAgICwgaW5saW5lQmFzZURpcmVjdGlvbgotICAgICAgICAsIG1fbGluZS5y
dW5zKCkgfTsKKyAgICB9OwogfQogCiBMaW5lQnVpbGRlcjo6SW50cmluc2ljQ29udGVudCBMaW5l
QnVpbGRlcjo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aChjb25zdCBMaW5lSW5wdXQmIGxpbmVJbnB1
dCwgY29uc3Qgc3RkOjpvcHRpb25hbDxQcmV2aW91c0xpbmU+JiBwcmV2aW91c0xpbmUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuaAppbmRleCBhNWNiNTQyMjM0ZmQuLjMzODdi
ZDk3NjFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5oCkBAIC00OSwz
NiArNDksNTggQEAgcHVibGljOgogICAgIH07CiAgICAgdXNpbmcgUGxhY2VkRmxvYXRMaXN0ID0g
RmxvYXRpbmdTdGF0ZTo6RmxvYXRMaXN0OwogICAgIHVzaW5nIFN1c3BlbmRlZEZsb2F0TGlzdCA9
IFZlY3Rvcjxjb25zdCBCb3gqPjsKLSAgICBzdHJ1Y3QgTGluZUNvbnRlbnQgeworICAgIHN0cnVj
dCBMaW5lTGF5b3V0UmVzdWx0IHsKICAgICAgICAgSW5saW5lSXRlbVJhbmdlIGNvbW1pdHRlZFJh
bmdlOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHRyYWlsaW5nT3Zl
cmZsb3dpbmdDb250ZW50V2lkdGggeyB9OwotICAgICAgICBQbGFjZWRGbG9hdExpc3QgcGxhY2Vk
RmxvYXRzOwotICAgICAgICBTdXNwZW5kZWRGbG9hdExpc3Qgc3VzcGVuZGVkRmxvYXRzOwotICAg
ICAgICBib29sIGhhc0ludHJ1c2l2ZUZsb2F0IHsgZmFsc2UgfTsKLSAgICAgICAgSW5saW5lTGF5
b3V0VW5pdCBsaW5lSW5pdGlhbExvZ2ljYWxMZWZ0SW5jbHVkaW5nSW50cnVzaXZlRmxvYXRzIHsg
MC5mIH07Ci0gICAgICAgIElubGluZUxheW91dFBvaW50IGxpbmVMb2dpY2FsVG9wTGVmdDsKLSAg
ICAgICAgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbFdpZHRoIHsgMC5mIH07Ci0gICAgICAg
IElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0IHsgMC5mIH07Ci0gICAgICAgIElu
bGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxXaWR0aCB7IDAuZiB9OwotICAgICAgICBJbmxp
bmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsUmlnaHRJbmNsdWRpbmdOZWdhdGl2ZU1hcmdpbiB7
IDAuZiB9OyAvLyBOb3RlIHRoYXQgd2l0aCBuZWdhdGl2ZSBob3Jpem9udGFsIG1hcmdpbiB2YWx1
ZSwgY29udGVudExvZ2ljYWxMZWZ0ICsgY29udGVudExvZ2ljYWxXaWR0aCBpcyBub3QgbmVjZXNz
YXJpbHkgY29udGVudExvZ2ljYWxSaWdodC4KKyAgICAgICAgY29uc3QgTGluZTo6UnVuTGlzdCYg
cnVuczsKKworICAgICAgICBzdHJ1Y3QgQ29udGVudEdlb21ldHJ5IHsKKyAgICAgICAgICAgIElu
bGluZUxheW91dFVuaXQgbG9naWNhbExlZnQgeyAwLmYgfTsKKyAgICAgICAgICAgIElubGluZUxh
eW91dFVuaXQgbG9naWNhbFdpZHRoIHsgMC5mIH07CisgICAgICAgICAgICBJbmxpbmVMYXlvdXRV
bml0IGxvZ2ljYWxSaWdodEluY2x1ZGluZ05lZ2F0aXZlTWFyZ2luIHsgMC5mIH07IC8vIE5vdGUg
dGhhdCB3aXRoIG5lZ2F0aXZlIGhvcml6b250YWwgbWFyZ2luIHZhbHVlLCBjb250ZW50TG9naWNh
bExlZnQgKyBjb250ZW50TG9naWNhbFdpZHRoIGlzIG5vdCBuZWNlc3NhcmlseSBjb250ZW50TG9n
aWNhbFJpZ2h0LgorICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB0
cmFpbGluZ092ZXJmbG93aW5nQ29udGVudFdpZHRoIHsgfTsKKyAgICAgICAgfTsKKyAgICAgICAg
Q29udGVudEdlb21ldHJ5IGNvbnRlbnRHZW9tZXRyeTsKKworICAgICAgICBzdHJ1Y3QgTGluZUdl
b21ldHJ5IHsKKyAgICAgICAgICAgIElubGluZUxheW91dFBvaW50IGxvZ2ljYWxUb3BMZWZ0Owor
ICAgICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGggeyAwLmYgfTsKKyAgICAg
ICAgICAgIElubGluZUxheW91dFVuaXQgaW5pdGlhbExvZ2ljYWxMZWZ0SW5jbHVkaW5nSW50cnVz
aXZlRmxvYXRzIHsgMC5mIH07CisgICAgICAgIH07CisgICAgICAgIExpbmVHZW9tZXRyeSBsaW5l
R2VvbWV0cnk7CisKICAgICAgICAgc3RydWN0IEhhbmdpbmdDb250ZW50IHsKICAgICAgICAgICAg
IGJvb2wgc2hvdWxkQ29udHJpYnV0ZVRvU2Nyb2xsYWJsZU92ZXJmbG93IHsgZmFsc2UgfTsKLSAg
ICAgICAgICAgIElubGluZUxheW91dFVuaXQgd2lkdGggeyAwLmYgfTsKKyAgICAgICAgICAgIElu
bGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoIHsgMC5mIH07CiAgICAgICAgIH07CiAgICAgICAg
IEhhbmdpbmdDb250ZW50IGhhbmdpbmdDb250ZW50OwotICAgICAgICBlbnVtIGNsYXNzIEZpcnN0
Rm9ybWF0dGVkTGluZSA6IHVpbnQ4X3QgewotICAgICAgICAgICAgTm8sCi0gICAgICAgICAgICBX
aXRoaW5JRkMsCi0gICAgICAgICAgICBXaXRoaW5CRkMKKworICAgICAgICBzdHJ1Y3QgRGlyZWN0
aW9uYWxpdHkgeworICAgICAgICAgICAgVmVjdG9yPGludDMyX3Q+IHZpc3VhbE9yZGVyTGlzdDsK
KyAgICAgICAgICAgIFRleHREaXJlY3Rpb24gaW5saW5lQmFzZURpcmVjdGlvbiB7IFRleHREaXJl
Y3Rpb246OkxUUiB9OwogICAgICAgICB9OwotICAgICAgICBGaXJzdEZvcm1hdHRlZExpbmUgaXNG
aXJzdEZvcm1hdHRlZExpbmUgeyBGaXJzdEZvcm1hdHRlZExpbmU6OldpdGhpbklGQyB9OwotICAg
ICAgICBib29sIGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCB7IHRydWUgfTsKKyAgICAgICAg
RGlyZWN0aW9uYWxpdHkgZGlyZWN0aW9uYWxpdHk7CisKKyAgICAgICAgc3RydWN0IEZsb2F0Q29u
dGVudCB7CisgICAgICAgICAgICBQbGFjZWRGbG9hdExpc3QgcGxhY2VkRmxvYXRzOworICAgICAg
ICAgICAgU3VzcGVuZGVkRmxvYXRMaXN0IHN1c3BlbmRlZEZsb2F0czsKKyAgICAgICAgICAgIGJv
b2wgaGFzSW50cnVzaXZlRmxvYXQgeyBmYWxzZSB9OworICAgICAgICB9OworICAgICAgICBGbG9h
dENvbnRlbnQgZmxvYXRDb250ZW50OworCisgICAgICAgIHN0cnVjdCBJc0ZpcnN0TGFzdCB7Cisg
ICAgICAgICAgICBlbnVtIGNsYXNzIEZpcnN0Rm9ybWF0dGVkTGluZSA6IHVpbnQ4X3QgeworICAg
ICAgICAgICAgICAgIE5vLAorICAgICAgICAgICAgICAgIFdpdGhpbklGQywKKyAgICAgICAgICAg
ICAgICBXaXRoaW5CRkMKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBGaXJzdEZvcm1hdHRl
ZExpbmUgaXNGaXJzdEZvcm1hdHRlZExpbmUgeyBGaXJzdEZvcm1hdHRlZExpbmU6OldpdGhpbklG
QyB9OworICAgICAgICAgICAgYm9vbCBpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQgeyB0cnVl
IH07CisgICAgICAgIH07CisgICAgICAgIElzRmlyc3RMYXN0IGlzRmlyc3RMYXN0OworICAgICAg
ICAvLyBNaXNjCiAgICAgICAgIHNpemVfdCBub25TcGFubmluZ0lubGluZUxldmVsQm94Q291bnQg
eyAwIH07Ci0gICAgICAgIFZlY3RvcjxpbnQzMl90PiB2aXN1YWxPcmRlckxpc3Q7Ci0gICAgICAg
IFRleHREaXJlY3Rpb24gaW5saW5lQmFzZURpcmVjdGlvbiB7IFRleHREaXJlY3Rpb246OkxUUiB9
OwotICAgICAgICBjb25zdCBMaW5lOjpSdW5MaXN0JiBydW5zOwogICAgIH07Ci0gICAgTGluZUNv
bnRlbnQgbGF5b3V0SW5saW5lQ29udGVudChjb25zdCBMaW5lSW5wdXQmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFByZXZpb3VzTGluZT4mKTsKKyAgICBMaW5lTGF5b3V0UmVzdWx0IGxheW91dElubGlu
ZUNvbnRlbnQoY29uc3QgTGluZUlucHV0JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxQcmV2aW91c0xp
bmU+Jik7CiAKICAgICBzdHJ1Y3QgSW50cmluc2ljQ29udGVudCB7CiAgICAgICAgIElubGluZUl0
ZW1SYW5nZSBjb21taXR0ZWRSYW5nZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcAppbmRleCBkOWIwYWQ4
NzdmMWIuLmFlMzZmNjZlNjEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcApAQCAtODksMTcgKzg5
LDE3IEBAIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6SW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdDCiB7CiB9CiAKLUlubGluZURpc3BsYXk6OkJv
eGVzIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YnVpbGQoY29uc3QgTGluZUJ1aWxkZXI6
OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgTGluZUJveCYgbGluZUJveCkKK0lubGlu
ZURpc3BsYXk6OkJveGVzIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YnVpbGQoY29uc3Qg
TGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmIGxpbmVMYXlvdXRSZXN1bHQsIGNvbnN0IExp
bmVCb3gmIGxpbmVCb3gpCiB7CiAgICAgYXV0byBib3hlcyA9IElubGluZURpc3BsYXk6OkJveGVz
IHsgfTsKLSAgICBib3hlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpbmVDb250ZW50LnJ1bnMu
c2l6ZSgpICsgbGluZUJveC5ub25Sb290SW5saW5lTGV2ZWxCb3hlcygpLnNpemUoKSArIDEpOwor
ICAgIGJveGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGluZUxheW91dFJlc3VsdC5ydW5zLnNp
emUoKSArIGxpbmVCb3gubm9uUm9vdElubGluZUxldmVsQm94ZXMoKS5zaXplKCkgKyAxKTsKIAot
ICAgIGF1dG8gY29udGVudE5lZWRzQmlkaVJlb3JkZXJpbmcgPSAhbGluZUNvbnRlbnQudmlzdWFs
T3JkZXJMaXN0LmlzRW1wdHkoKTsKKyAgICBhdXRvIGNvbnRlbnROZWVkc0JpZGlSZW9yZGVyaW5n
ID0gIWxpbmVMYXlvdXRSZXN1bHQuZGlyZWN0aW9uYWxpdHkudmlzdWFsT3JkZXJMaXN0LmlzRW1w
dHkoKTsKICAgICBpZiAoY29udGVudE5lZWRzQmlkaVJlb3JkZXJpbmcpCi0gICAgICAgIHByb2Nl
c3NCaWRpQ29udGVudChsaW5lQ29udGVudCwgbGluZUJveCwgYm94ZXMpOworICAgICAgICBwcm9j
ZXNzQmlkaUNvbnRlbnQobGluZUxheW91dFJlc3VsdCwgbGluZUJveCwgYm94ZXMpOwogICAgIGVs
c2UKLSAgICAgICAgcHJvY2Vzc05vbkJpZGlDb250ZW50KGxpbmVDb250ZW50LCBsaW5lQm94LCBi
b3hlcyk7Ci0gICAgcHJvY2Vzc0Zsb2F0Qm94ZXMobGluZUNvbnRlbnQpOworICAgICAgICBwcm9j
ZXNzTm9uQmlkaUNvbnRlbnQobGluZUxheW91dFJlc3VsdCwgbGluZUJveCwgYm94ZXMpOworICAg
IHByb2Nlc3NGbG9hdEJveGVzKGxpbmVMYXlvdXRSZXN1bHQpOwogCiAgICAgY29sbGVjdElua092
ZXJmbG93Rm9yVGV4dERlY29yYXRpb25zKGJveGVzKTsKICAgICBjb2xsZWN0SW5rT3ZlcmZsb3dG
b3JJbmxpbmVCb3hlcyhib3hlcyk7CkBAIC00MzUsMjAgKzQzNSwyMCBAQCB2b2lkIElubGluZURp
c3BsYXlDb250ZW50QnVpbGRlcjo6YXBwZW5kSW5saW5lRGlzcGxheUJveEF0QmlkaUJvdW5kYXJ5
KGNvbnN0IEJveAogICAgIH0pOwogfQogCi12b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRl
cjo6cHJvY2Vzc05vbkJpZGlDb250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYg
bGluZUNvbnRlbnQsIGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsIElubGluZURpc3BsYXk6OkJveGVz
JiBib3hlcykKK3ZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzTm9uQmlk
aUNvbnRlbnQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmIGxpbmVMYXlvdXRS
ZXN1bHQsIGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsIElubGluZURpc3BsYXk6OkJveGVzJiBib3hl
cykKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgYXV0byBoYXNDb250ZW50ID0gZmFsc2U7Ci0gICAg
Zm9yIChhdXRvJiBsaW5lUnVuIDogbGluZUNvbnRlbnQucnVucykKKyAgICBmb3IgKGF1dG8mIGxp
bmVSdW4gOiBsaW5lTGF5b3V0UmVzdWx0LnJ1bnMpCiAgICAgICAgIGhhc0NvbnRlbnQgPSBoYXND
b250ZW50IHx8IGxpbmVSdW4uaXNDb250ZW50ZnVsKCk7Ci0gICAgQVNTRVJUKGxpbmVDb250ZW50
LmlubGluZUJhc2VEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSIHx8ICFoYXNDb250ZW50
KTsKKyAgICBBU1NFUlQobGluZUxheW91dFJlc3VsdC5kaXJlY3Rpb25hbGl0eS5pbmxpbmVCYXNl
RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiB8fCAhaGFzQ29udGVudCk7CiAjZW5kaWYK
ICAgICBhdXRvIHdyaXRpbmdNb2RlID0gcm9vdCgpLnN0eWxlKCkud3JpdGluZ01vZGUoKTsKICAg
ICBhdXRvIGNvbnRlbnRTdGFydEluVmlzdWFsT3JkZXIgPSBtX2Rpc3BsYXlMaW5lLnRvcExlZnQo
KTsKIAogICAgIGFwcGVuZFJvb3RJbmxpbmVCb3hEaXNwbGF5Qm94KGZsaXBSb290SW5saW5lQm94
UmVjdFRvVmlzdWFsRm9yV3JpdGluZ01vZGUobGluZUJveC5sb2dpY2FsUmVjdEZvclJvb3RJbmxp
bmVCb3goKSwgd3JpdGluZ01vZGUpLCBsaW5lQm94LnJvb3RJbmxpbmVCb3goKS5oYXNDb250ZW50
KCksIGJveGVzKTsKIAotICAgIGZvciAoYXV0byYgbGluZVJ1biA6IGxpbmVDb250ZW50LnJ1bnMp
IHsKKyAgICBmb3IgKGF1dG8mIGxpbmVSdW4gOiBsaW5lTGF5b3V0UmVzdWx0LnJ1bnMpIHsKICAg
ICAgICAgYXV0byYgbGF5b3V0Qm94ID0gbGluZVJ1bi5sYXlvdXRCb3goKTsKIAogICAgICAgICBh
dXRvIHZpc3VhbFJlY3RSZWxhdGl2ZVRvUm9vdCA9IFsmXShhdXRvIGxvZ2ljYWxSZWN0KSB7CkBA
IC02NTUsOSArNjU1LDkgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmFkanVz
dFZpc3VhbEdlb21ldHJ5Rm9yRGlzcGxheUJveChzaXplX3QgZGlzcGwKICAgICAgICAgZGlzcGxh
eUJveC5zZXRIYXNDb250ZW50KCk7CiB9CiAKLXZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyOjpwcm9jZXNzQmlkaUNvbnRlbnQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBs
aW5lQ29udGVudCwgY29uc3QgTGluZUJveCYgbGluZUJveCwgSW5saW5lRGlzcGxheTo6Qm94ZXMm
IGJveGVzKQordm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NCaWRpQ29u
dGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUxheW91dFJlc3VsdCYgbGluZUxheW91dFJlc3Vs
dCwgY29uc3QgTGluZUJveCYgbGluZUJveCwgSW5saW5lRGlzcGxheTo6Qm94ZXMmIGJveGVzKQog
ewotICAgIEFTU0VSVChsaW5lQ29udGVudC52aXN1YWxPcmRlckxpc3Quc2l6ZSgpIDw9IGxpbmVD
b250ZW50LnJ1bnMuc2l6ZSgpKTsKKyAgICBBU1NFUlQobGluZUxheW91dFJlc3VsdC5kaXJlY3Rp
b25hbGl0eS52aXN1YWxPcmRlckxpc3Quc2l6ZSgpIDw9IGxpbmVMYXlvdXRSZXN1bHQucnVucy5z
aXplKCkpOwogCiAgICAgQW5jZXN0b3JTdGFjayBhbmNlc3RvclN0YWNrOwogICAgIGF1dG8gZGlz
cGxheUJveFRyZWUgPSBEaXNwbGF5Qm94VHJlZSB7IH07CkBAIC02NzcsOCArNjc3LDggQEAgdm9p
ZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NCaWRpQ29udGVudChjb25zdCBM
aW5lQnVpbGRlcjo6TGluZUNvbnQKICAgICAgICAgYXBwZW5kUm9vdElubGluZUJveERpc3BsYXlC
b3goZmxpcFJvb3RJbmxpbmVCb3hSZWN0VG9WaXN1YWxGb3JXcml0aW5nTW9kZShyb290SW5saW5l
Qm94Vmlkc3VhbFJlY3RJbklubGluZURpcmVjdGlvbiwgcm9vdCgpLnN0eWxlKCkud3JpdGluZ01v
ZGUoKSksIGxpbmVCb3gucm9vdElubGluZUJveCgpLmhhc0NvbnRlbnQoKSwgYm94ZXMpOwogCiAg
ICAgICAgIGF1dG8gY29udGVudFJpZ2h0SW5JbmxpbmVEaXJlY3Rpb25WaXN1YWxPcmRlciA9IGNv
bnRlbnRTdGFydEluSW5saW5lRGlyZWN0aW9uVmlzdWFsT3JkZXI7Ci0gICAgICAgIGF1dG8mIHJ1
bnMgPSBsaW5lQ29udGVudC5ydW5zOwotICAgICAgICBmb3IgKGF1dG8gdmlzdWFsT3JkZXIgOiBs
aW5lQ29udGVudC52aXN1YWxPcmRlckxpc3QpIHsKKyAgICAgICAgYXV0byYgcnVucyA9IGxpbmVM
YXlvdXRSZXN1bHQucnVuczsKKyAgICAgICAgZm9yIChhdXRvIHZpc3VhbE9yZGVyIDogbGluZUxh
eW91dFJlc3VsdC5kaXJlY3Rpb25hbGl0eS52aXN1YWxPcmRlckxpc3QpIHsKICAgICAgICAgICAg
IEFTU0VSVChydW5zW3Zpc3VhbE9yZGVyXS5iaWRpTGV2ZWwoKSAhPSBJbmxpbmVJdGVtOjpvcGFx
dWVCaWRpTGV2ZWwpOwogCiAgICAgICAgICAgICBhdXRvJiBsaW5lUnVuID0gcnVuc1t2aXN1YWxP
cmRlcl07CkBAIC04MDIsNyArODAyLDcgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXI6OnByb2Nlc3NCaWRpQ29udGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnQKICAgICBo
YW5kbGVJbmxpbmVCb3hlcygpOwogCiAgICAgYXV0byBoYW5kbGVUcmFpbGluZ09wZW5JbmxpbmVC
b3hlcyA9IFsmXSB7Ci0gICAgICAgIGZvciAoYXV0byYgbGluZVJ1biA6IG1ha2VSZXZlcnNlZFJh
bmdlKGxpbmVDb250ZW50LnJ1bnMpKSB7CisgICAgICAgIGZvciAoYXV0byYgbGluZVJ1biA6IG1h
a2VSZXZlcnNlZFJhbmdlKGxpbmVMYXlvdXRSZXN1bHQucnVucykpIHsKICAgICAgICAgICAgIGlm
ICghbGluZVJ1bi5pc0lubGluZUJveFN0YXJ0KCkgfHwgbGluZVJ1bi5iaWRpTGV2ZWwoKSAhPSBJ
bmxpbmVJdGVtOjpvcGFxdWVCaWRpTGV2ZWwpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAvLyBUaGVzZSBhcmUgdHJhaWxpbmcgaW5saW5lIGJveCBzdGFydCBydW5zICh3aXRo
b3V0IHRoZSBjbG9zaW5nIGlubGluZSBib3ggZW5kIDxzcGFuPiA8LWxpbmUgYnJlYWtzIGhlcmU8
L3NwYW4+KS4KQEAgLTgyMCw3ICs4MjAsNyBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVp
bGRlcjo6cHJvY2Vzc0JpZGlDb250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udAogICAg
IGhhbmRsZVRyYWlsaW5nT3BlbklubGluZUJveGVzKCk7CiB9CiAKLXZvaWQgSW5saW5lRGlzcGxh
eUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzRmxvYXRCb3hlcyhjb25zdCBMaW5lQnVpbGRlcjo6TGlu
ZUNvbnRlbnQmKQordm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NGbG9h
dEJveGVzKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lTGF5b3V0UmVzdWx0JikKIHsKICAgICAvLyBG
bG9hdCBib3hlcyBhcmUgbm90IHBhcnQgb2YgdGhlIGlubGluZSBjb250ZW50IHNvIHdlIGRvbid0
IGNvbnN0cnVjdCBpbmxpbmUgZGlzcGxheSBib3hlcyBmb3IgdGhlbS4KICAgICAvLyBIb3dldmVy
IGJveCBnZW9tZXRyeSBzdGlsbCBuZWVkcyBmbGlwcGluZyBmcm9tIGxvZ2ljYWwgdG8gdmlzdWFs
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxh
eUNvbnRlbnRCdWlsZGVyLmgKaW5kZXggZGM4ZDcyMTcwZTUyLi4zZjY5NjA4ZDY0N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rp
c3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29u
dGVudEJ1aWxkZXIuaApAQCAtNDQsMTUgKzQ0LDE1IEBAIGNsYXNzIElubGluZURpc3BsYXlDb250
ZW50QnVpbGRlciB7CiBwdWJsaWM6CiAgICAgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyKGNv
bnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiwgSW5saW5lRm9ybWF0dGluZ1N0YXRlJiwgY29u
c3QgSW5saW5lRGlzcGxheTo6TGluZSYsIHNpemVfdCBsaW5lSW5kZXgpOwogCi0gICAgSW5saW5l
RGlzcGxheTo6Qm94ZXMgYnVpbGQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiwgY29u
c3QgTGluZUJveCYpOworICAgIElubGluZURpc3BsYXk6OkJveGVzIGJ1aWxkKGNvbnN0IExpbmVC
dWlsZGVyOjpMaW5lTGF5b3V0UmVzdWx0JiwgY29uc3QgTGluZUJveCYpOwogCiBwcml2YXRlOgot
ICAgIHZvaWQgcHJvY2Vzc05vbkJpZGlDb250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29u
dGVudCYsIGNvbnN0IExpbmVCb3gmLCBJbmxpbmVEaXNwbGF5OjpCb3hlcyYpOwotICAgIHZvaWQg
cHJvY2Vzc0JpZGlDb250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0
IExpbmVCb3gmLCBJbmxpbmVEaXNwbGF5OjpCb3hlcyYpOwotICAgIHZvaWQgcHJvY2Vzc0Zsb2F0
Qm94ZXMoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50Jik7CisgICAgdm9pZCBwcm9jZXNz
Tm9uQmlkaUNvbnRlbnQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmLCBjb25z
dCBMaW5lQm94JiwgSW5saW5lRGlzcGxheTo6Qm94ZXMmKTsKKyAgICB2b2lkIHByb2Nlc3NCaWRp
Q29udGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUxheW91dFJlc3VsdCYsIGNvbnN0IExpbmVC
b3gmLCBJbmxpbmVEaXNwbGF5OjpCb3hlcyYpOworICAgIHZvaWQgcHJvY2Vzc0Zsb2F0Qm94ZXMo
Y29uc3QgTGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmKTsKICAgICB2b2lkIGNvbGxlY3RJ
bmtPdmVyZmxvd0ZvcklubGluZUJveGVzKElubGluZURpc3BsYXk6OkJveGVzJik7CiAgICAgdm9p
ZCBjb2xsZWN0SW5rT3ZlcmZsb3dGb3JUZXh0RGVjb3JhdGlvbnMoSW5saW5lRGlzcGxheTo6Qm94
ZXMmKTsKLSAgICB2b2lkIHRydW5jYXRlRm9yRWxsaXBzaXNQb2xpY3koTGluZUVuZGluZ0VsbGlw
c2lzUG9saWN5LCBjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmLCBJbmxpbmVEaXNwbGF5
OjpCb3hlcyYpOworICAgIHZvaWQgdHJ1bmNhdGVGb3JFbGxpcHNpc1BvbGljeShMaW5lRW5kaW5n
RWxsaXBzaXNQb2xpY3ksIGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lTGF5b3V0UmVzdWx0JiwgSW5s
aW5lRGlzcGxheTo6Qm94ZXMmKTsKIAogICAgIHZvaWQgYXBwZW5kVGV4dERpc3BsYXlCb3goY29u
c3QgTGluZTo6UnVuJiwgY29uc3QgSW5saW5lUmVjdCYsIElubGluZURpc3BsYXk6OkJveGVzJik7
CiAgICAgdm9pZCBhcHBlbmRTb2Z0TGluZUJyZWFrRGlzcGxheUJveChjb25zdCBMaW5lOjpSdW4m
LCBjb25zdCBJbmxpbmVSZWN0JiwgSW5saW5lRGlzcGxheTo6Qm94ZXMmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkv
SW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNw
cAppbmRleCAwNDYzMzAyM2JkMzcuLmNiNmZhM2E5ZjY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNw
bGF5TGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcApAQCAt
NTUsNyArNTUsNyBAQCBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OklubGluZURpc3BsYXlMaW5l
QnVpbGRlcihjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dAogewogfQogCi1JbmxpbmVEaXNw
bGF5TGluZUJ1aWxkZXI6OkVuY2xvc2luZ0xpbmVHZW9tZXRyeSBJbmxpbmVEaXNwbGF5TGluZUJ1
aWxkZXI6OmNvbGxlY3RFbmNsb3NpbmdMaW5lR2VvbWV0cnkoY29uc3QgTGluZUJ1aWxkZXI6Okxp
bmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgTGluZUJveCYgbGluZUJveCwgY29uc3QgSW5s
aW5lUmVjdCYgbGluZUJveFJlY3QpIGNvbnN0CitJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OkVu
Y2xvc2luZ0xpbmVHZW9tZXRyeSBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmNvbGxlY3RFbmNs
b3NpbmdMaW5lR2VvbWV0cnkoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmIGxp
bmVMYXlvdXRSZXN1bHQsIGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IElubGluZVJlY3Qm
IGxpbmVCb3hSZWN0KSBjb25zdAogewogICAgIGF1dG8mIHJvb3RJbmxpbmVCb3ggPSBsaW5lQm94
LnJvb3RJbmxpbmVCb3goKTsKICAgICBhdXRvIGluaXRpYWxFbmNsb3NpbmdUb3BBbmRCb3R0b20g
PSBbJl0oKSAtPiBzdGQ6OnR1cGxlPHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4sIHN0
ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4+ICB7CkBAIC03MSwxMSArNzEsMTEgQEAgSW5s
aW5lRGlzcGxheUxpbmVCdWlsZGVyOjpFbmNsb3NpbmdMaW5lR2VvbWV0cnkgSW5saW5lRGlzcGxh
eUxpbmVCdWlsZGVyOjpjb2xsZWMKICAgICAgICAgYXV0byByZWN0ID0gbGluZUJveFJlY3Q7CiAg
ICAgICAgIGF1dG8gcm9vdElubGluZUJveFdpZHRoID0gbGluZUJveC5sb2dpY2FsUmVjdEZvclJv
b3RJbmxpbmVCb3goKS53aWR0aCgpOwogICAgICAgICBhdXRvIGlzTGVmdFRvUmlnaHREaXJlY3Rp
b24gPSByb290KCkuc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7Ci0gICAgICAgIGlm
IChsaW5lQ29udGVudC5oYW5naW5nQ29udGVudC5zaG91bGRDb250cmlidXRlVG9TY3JvbGxhYmxl
T3ZlcmZsb3cpCi0gICAgICAgICAgICByZWN0LmV4cGFuZEhvcml6b250YWxseShsaW5lQ29udGVu
dC5oYW5naW5nQ29udGVudC53aWR0aCk7CisgICAgICAgIGlmIChsaW5lTGF5b3V0UmVzdWx0Lmhh
bmdpbmdDb250ZW50LnNob3VsZENvbnRyaWJ1dGVUb1Njcm9sbGFibGVPdmVyZmxvdykKKyAgICAg
ICAgICAgIHJlY3QuZXhwYW5kSG9yaXpvbnRhbGx5KGxpbmVMYXlvdXRSZXN1bHQuaGFuZ2luZ0Nv
bnRlbnQubG9naWNhbFdpZHRoKTsKICAgICAgICAgZWxzZSBpZiAoIWlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24pIHsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdG8gYmFsYW5jZSBoYW5naW5nIFJUTCB0
cmFpbGluZyBjb250ZW50LiBTZWUgTGluZUJveEJ1aWxkZXI6OmJ1aWxkLgotICAgICAgICAgICAg
cm9vdElubGluZUJveFdpZHRoIC09IGxpbmVDb250ZW50LmhhbmdpbmdDb250ZW50LndpZHRoOwor
ICAgICAgICAgICAgcm9vdElubGluZUJveFdpZHRoIC09IGxpbmVMYXlvdXRSZXN1bHQuaGFuZ2lu
Z0NvbnRlbnQubG9naWNhbFdpZHRoOwogICAgICAgICB9CiAgICAgICAgIGF1dG8gcm9vdElubGlu
ZUJveEhvcml6b250YWxPdmVyZmxvdyA9IHJvb3RJbmxpbmVCb3hXaWR0aCAtIHJlY3Qud2lkdGgo
KTsKICAgICAgICAgaWYgKHJvb3RJbmxpbmVCb3hIb3Jpem9udGFsT3ZlcmZsb3cgPiAwKQpAQCAt
MTIxLDEwICsxMjEsMTAgQEAgSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpFbmNsb3NpbmdMaW5l
R2VvbWV0cnkgSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpjb2xsZWMKICAgICByZXR1cm4geyB7
IGVuY2xvc2luZ1RvcC52YWx1ZV9vcihsaW5lQm94UmVjdC50b3AoKSksIGVuY2xvc2luZ0JvdHRv
bS52YWx1ZV9vcihsaW5lQm94UmVjdC50b3AoKSkgfSwgY29udGVudE92ZXJmbG93UmVjdCB9Owog
fQogCi1JbmxpbmVEaXNwbGF5OjpMaW5lIElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6YnVpbGQo
Y29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgTGluZUJv
eCYgbGluZUJveCwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50
cywgYm9vbCBsaW5lSXNGdWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24pIGNvbnN0CitJbmxp
bmVEaXNwbGF5OjpMaW5lIElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6YnVpbGQoY29uc3QgTGlu
ZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmIGxpbmVMYXlvdXRSZXN1bHQsIGNvbnN0IExpbmVC
b3gmIGxpbmVCb3gsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYgY29uc3RyYWlu
dHMsIGJvb2wgbGluZUlzRnVsbHlUcnVuY2F0ZWRJbkJsb2NrRGlyZWN0aW9uKSBjb25zdAogewog
ICAgIGF1dG8mIHJvb3RJbmxpbmVCb3ggPSBsaW5lQm94LnJvb3RJbmxpbmVCb3goKTsKLSAgICBh
dXRvIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24gPSBsaW5lQ29udGVudC5pbmxpbmVCYXNlRGlyZWN0
aW9uID09IFRleHREaXJlY3Rpb246OkxUUjsKKyAgICBhdXRvIGlzTGVmdFRvUmlnaHREaXJlY3Rp
b24gPSBsaW5lTGF5b3V0UmVzdWx0LmRpcmVjdGlvbmFsaXR5LmlubGluZUJhc2VEaXJlY3Rpb24g
PT0gVGV4dERpcmVjdGlvbjo6TFRSOwogICAgIGF1dG8gbGluZUJveExvZ2ljYWxSZWN0ID0gbGlu
ZUJveC5sb2dpY2FsUmVjdCgpOwogICAgIGF1dG8gbGluZUJveFZpc3VhbExlZnQgPSBpc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uCiAgICAgICAgID8gbGluZUJveExvZ2ljYWxSZWN0LmxlZnQoKQpAQCAt
MTMzLDEwICsxMzMsMTAgQEAgSW5saW5lRGlzcGxheTo6TGluZSBJbmxpbmVEaXNwbGF5TGluZUJ1
aWxkZXI6OmJ1aWxkKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGUKICAgICBhdXRvIHJvb3RJ
bmxpbmVCb3hSZWN0ID0gbGluZUJveC5sb2dpY2FsUmVjdEZvclJvb3RJbmxpbmVCb3goKTsKICAg
ICBhdXRvIGNvbnRlbnRWaXN1YWxPZmZzZXRJbklubGluZURpcmVjdGlvbiA9IGlzTGVmdFRvUmln
aHREaXJlY3Rpb24KICAgICAgICAgPyByb290SW5saW5lQm94UmVjdC5sZWZ0KCkKLSAgICAgICAg
OiBsaW5lQm94TG9naWNhbFJlY3Qud2lkdGgoKSAtIGxpbmVDb250ZW50LmNvbnRlbnRMb2dpY2Fs
UmlnaHRJbmNsdWRpbmdOZWdhdGl2ZU1hcmdpbjsgLy8gTm90ZSB0aGF0IHdpdGggaGFuZ2luZyBj
b250ZW50IGxpbmVDb250ZW50LmNvbnRlbnRMb2dpY2FsUmlnaHQgaXMgbm90IHRoZSBzYW1lIGFz
IHJvb3RMaW5lQm94UmVjdC5yaWdodCgpLgorICAgICAgICA6IGxpbmVCb3hMb2dpY2FsUmVjdC53
aWR0aCgpIC0gbGluZUxheW91dFJlc3VsdC5jb250ZW50R2VvbWV0cnkubG9naWNhbFJpZ2h0SW5j
bHVkaW5nTmVnYXRpdmVNYXJnaW47IC8vIE5vdGUgdGhhdCB3aXRoIGhhbmdpbmcgY29udGVudCBs
aW5lTGF5b3V0UmVzdWx0LmNvbnRlbnRHZW9tZXRyeS5sb2dpY2FsUmlnaHQgaXMgbm90IHRoZSBz
YW1lIGFzIHJvb3RMaW5lQm94UmVjdC5yaWdodCgpLgogCiAgICAgYXV0byBsaW5lQm94VmlzdWFs
UmVjdEluSW5saW5lRGlyZWN0aW9uID0gSW5saW5lUmVjdCB7IGxpbmVCb3hMb2dpY2FsUmVjdC50
b3AoKSwgbGluZUJveFZpc3VhbExlZnQsIGxpbmVCb3hMb2dpY2FsUmVjdC53aWR0aCgpLCBsaW5l
Qm94TG9naWNhbFJlY3QuaGVpZ2h0KCkgfTsKLSAgICBhdXRvIGVuY2xvc2luZ0xpbmVHZW9tZXRy
eSA9IGNvbGxlY3RFbmNsb3NpbmdMaW5lR2VvbWV0cnkobGluZUNvbnRlbnQsIGxpbmVCb3gsIGxp
bmVCb3hWaXN1YWxSZWN0SW5JbmxpbmVEaXJlY3Rpb24pOworICAgIGF1dG8gZW5jbG9zaW5nTGlu
ZUdlb21ldHJ5ID0gY29sbGVjdEVuY2xvc2luZ0xpbmVHZW9tZXRyeShsaW5lTGF5b3V0UmVzdWx0
LCBsaW5lQm94LCBsaW5lQm94VmlzdWFsUmVjdEluSW5saW5lRGlyZWN0aW9uKTsKIAogICAgIGF1
dG8gd3JpdGluZ01vZGUgPSByb290KCkuc3R5bGUoKS53cml0aW5nTW9kZSgpOwogICAgIHJldHVy
biBJbmxpbmVEaXNwbGF5OjpMaW5lIHsgbGluZUJveExvZ2ljYWxSZWN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lu
bGluZURpc3BsYXlMaW5lQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuaAppbmRl
eCBlZGE2OThiYmEyNGYuLjRjNTZjNzEzM2MyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGlu
ZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5oCkBAIC0zOCw3ICszOCw3
IEBAIGNsYXNzIElubGluZURpc3BsYXlMaW5lQnVpbGRlciB7CiBwdWJsaWM6CiAgICAgSW5saW5l
RGlzcGxheUxpbmVCdWlsZGVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7CiAKLSAg
ICBJbmxpbmVEaXNwbGF5OjpMaW5lIGJ1aWxkKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVu
dCYsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmLCBi
b29sIGxpbmVJc0Z1bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbikgY29uc3Q7CisgICAgSW5s
aW5lRGlzcGxheTo6TGluZSBidWlsZChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUxheW91dFJlc3Vs
dCYsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmLCBi
b29sIGxpbmVJc0Z1bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbikgY29uc3Q7CiAKICAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHRyYWlsaW5nRWxsaXBzaXNWaXN1YWxSZWN0
QWZ0ZXJUcnVuY2F0aW9uKExpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSwgY29uc3QgSW5saW5lRGlz
cGxheTo6TGluZSYsIElubGluZURpc3BsYXk6OkJveGVzJiwgYm9vbCBpc0xhc3RMaW5lV2l0aElu
bGluZUNvbnRlbnQpOwogCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIElubGlu
ZURpc3BsYXk6OkxpbmU6OkVuY2xvc2luZ1RvcEFuZEJvdHRvbSBlbmNsb3NpbmdUb3BBbmRCb3R0
b207CiAgICAgICAgIElubGluZVJlY3QgY29udGVudE92ZXJmbG93UmVjdDsKICAgICB9OwotICAg
IEVuY2xvc2luZ0xpbmVHZW9tZXRyeSBjb2xsZWN0RW5jbG9zaW5nTGluZUdlb21ldHJ5KGNvbnN0
IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBJbmxpbmVS
ZWN0JiBsaW5lQm94UmVjdCkgY29uc3Q7CisgICAgRW5jbG9zaW5nTGluZUdlb21ldHJ5IGNvbGxl
Y3RFbmNsb3NpbmdMaW5lR2VvbWV0cnkoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1
bHQmLCBjb25zdCBMaW5lQm94JiwgY29uc3QgSW5saW5lUmVjdCYgbGluZUJveFJlY3QpIGNvbnN0
OwogCiAgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsgfQogICAgIGNvbnN0
IEJveCYgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpOyB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466580</attachid>
            <date>2023-06-03 15:17:49 -0700</date>
            <delta_ts>2023-06-03 21:28:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-257680-20230603151748.patch</filename>
            <type>text/plain</type>
            <size>44632</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAzMmEyNjdmY2Q5MTRmNGVhZjM3MThlYmE0NGZjODliNWM5ZTMxODJkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgMyBKdW4gMjAyMyAxNDoxNjo0NiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFtJRkNdIFJl
bmFtZSBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQgdG8gTGluZUxheW91dFJlc3VsdAogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NzY4MAoKUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCgpXaGlsZSB0aGlzIHN0cnVjdHVyZSBpbmRlZWQgc3RhcnRlZCBhcyBob2xk
aW5nIGNvbnRlbnQgKHJ1bnMgbW9zdGx5KSBvbiB0aGUgY3VycmVudCBsaW5lLCBvdmVyIHRoZSB5
ZWFycyBpdCBncmV3IGFuZCBub3cgaXQgY29udGFpbnMKYWxsIGtpbmRzIG9mIGluZm9ybWF0aW9u
IGFib3V0IHRoZSByZXN1bHQgb2YgdGhlIGxpbmUgbGF5b3V0LiBMZXQncyByZW5hbWUgaXQgdG8g
TGluZUxheW91dFJlc3VsdC4KClRoaXMgaXMgYWxzbyBpbiBwcmVwYXJhdGlvbiBmb3IgdHJhbnNm
b3JtaW5nIExpbmVCdWlsZGVyOjpjb21wdXRlZEludHJpbnNpY1dpZHRoIGludG8gcmVndWxhciBs
aW5lIGxheW91dC4KCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGlu
ZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZvckxpbmUpOgoqIFNvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0Lmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ0dlb21ldHJ5Ojpsb2dpY2FsVG9wRm9yTmV4dExpbmUgY29uc3QpOgoqIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdHZW9tZXRyeS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6TGlu
ZUJveEJ1aWxkZXI6OkxpbmVCb3hCdWlsZGVyKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveEJ1
aWxkZXI6OmJ1aWxkKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveEJ1aWxkZXI6OmNvbnN0cnVj
dElubGluZUxldmVsQm94ZXMpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6YWRq
dXN0SW5saW5lQm94SGVpZ2h0c0ZvckxpbmVCb3hDb250YWluSWZBcHBsaWNhYmxlKToKKFdlYkNv
cmU6OkxheW91dDo6TGluZUJveEJ1aWxkZXI6OmNvbXB1dGVMaW5lQm94R2VvbWV0cnkgY29uc3Qp
OgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6YWRqdXN0T3V0c2lkZUxpc3RNYXJr
ZXJzUG9zaXRpb24pOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmg6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hC
dWlsZGVyOjppc0ZpcnN0TGluZSBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWls
ZGVyOjppc0xhc3RMaW5lIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveEJ1aWxkZXI6
OmxpbmVMYXlvdXRSZXN1bHQgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRl
cjo6bGluZUNvbnRlbnQgY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKFdlYkNvcmU6
OkxheW91dDo6TGluZUJ1aWxkZXI6OmxheW91dElubGluZUNvbnRlbnQpOgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmg6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxh
eS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmJ1aWxkKToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
RGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzTm9uQmlkaUNvbnRlbnQpOgooV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NCaWRpQ29udGVudCk6
CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc0Zs
b2F0Qm94ZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmg6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5
TGluZUJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxk
ZXI6OmNvbGxlY3RFbmNsb3NpbmdMaW5lR2VvbWV0cnkgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmJ1aWxkIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlM
aW5lQnVpbGRlci5oOgotLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3Bw
ICAgICAgICB8IDI4ICsrKystLS0tCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmggICAgICAgICAgfCAgMiArLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnku
Y3BwICAgICAgIHwgMTIgKystLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnku
aCAgICAgICAgIHwgIDIgKy0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwICAg
ICAgICAgICB8IDI4ICsrKystLS0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmgg
ICAgICAgICAgICAgfCAxMCArLS0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwICAg
ICAgICAgICAgICB8IDI0ICsrKy0tLS0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuaCAg
ICAgICAgICAgICAgICB8IDY2ICsrKysrKysrKysrKy0tLS0tLS0KIC4uLi9kaXNwbGF5L0lubGlu
ZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAgICB8IDMyICsrKystLS0tLQogLi4uL2Rpc3BsYXkv
SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmggICAgIHwgMTAgKy0tCiAuLi4vZGlzcGxheS9J
bmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuY3BwICAgICAgfCAxNiArKy0tLQogLi4uL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5oIHwgIDQgKy0KIDEyIGZpbGVzIGNoYW5n
ZWQsIDEyNCBpbnNlcnRpb25zKCspLCAxMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDdhMDgyZjQzNzQ0NC4u
ZTIzYWRjNDgxNTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCkBAIC0yNzcsMTYgKzI3NywxNiBAQCBJbmxpbmVMYXlvdXRSZXN1bHQgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoY29uc3QgSW5saW5lSXRlbXMmIGlubGlu
ZQogICAgIHdoaWxlICh0cnVlKSB7CiAKICAgICAgICAgYXV0byBsaW5lSW5pdGlhbFJlY3QgPSBJ
bmxpbmVSZWN0IHsgbGluZUxvZ2ljYWxUb3AsIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dp
Y2FsTGVmdCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxXaWR0aCwgZm9ybWF0dGlu
Z0dlb21ldHJ5KCkuaW5pdGlhbExpbmVIZWlnaHQoIXByZXZpb3VzTGluZS5oYXNfdmFsdWUoKSkg
fTsKLSAgICAgICAgYXV0byBsaW5lQ29udGVudCA9IGxpbmVCdWlsZGVyLmxheW91dElubGluZUNv
bnRlbnQoeyB7IGxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb24sIG5lZWRzTGF5b3V0UmFuZ2UuZW5k
IH0sIGxpbmVJbml0aWFsUmVjdCB9LCBwcmV2aW91c0xpbmUpOworICAgICAgICBhdXRvIGxpbmVM
YXlvdXRSZXN1bHQgPSBsaW5lQnVpbGRlci5sYXlvdXRJbmxpbmVDb250ZW50KHsgeyBsZWFkaW5n
SW5saW5lSXRlbVBvc2l0aW9uLCBuZWVkc0xheW91dFJhbmdlLmVuZCB9LCBsaW5lSW5pdGlhbFJl
Y3QgfSwgcHJldmlvdXNMaW5lKTsKIAogICAgICAgICBhdXRvIGxpbmVJbmRleCA9IHByZXZpb3Vz
TGluZSA/IChwcmV2aW91c0xpbmUtPmxpbmVJbmRleCArIDEpIDogMGx1OwotICAgICAgICBhdXRv
IGxpbmVMb2dpY2FsUmVjdCA9IGNyZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZShsaW5lSW5kZXgs
IGxpbmVDb250ZW50LCBjb25zdHJhaW50cywgaW5saW5lTGF5b3V0U3RhdGUsIGxheW91dFJlc3Vs
dC5kaXNwbGF5Q29udGVudCk7Ci0gICAgICAgIGlmIChsaW5lQ29udGVudC5pc0xhc3RMaW5lV2l0
aElubGluZUNvbnRlbnQpCi0gICAgICAgICAgICBpbmxpbmVMYXlvdXRTdGF0ZS5zZXRDbGVhckdh
cEFmdGVyTGFzdExpbmUoZm9ybWF0dGluZ0dlb21ldHJ5KCkubG9naWNhbFRvcEZvck5leHRMaW5l
KGxpbmVDb250ZW50LCBsaW5lTG9naWNhbFJlY3QsIGZsb2F0aW5nQ29udGV4dCkgLSBsaW5lTG9n
aWNhbFJlY3QuYm90dG9tKCkpOworICAgICAgICBhdXRvIGxpbmVMb2dpY2FsUmVjdCA9IGNyZWF0
ZURpc3BsYXlDb250ZW50Rm9yTGluZShsaW5lSW5kZXgsIGxpbmVMYXlvdXRSZXN1bHQsIGNvbnN0
cmFpbnRzLCBpbmxpbmVMYXlvdXRTdGF0ZSwgbGF5b3V0UmVzdWx0LmRpc3BsYXlDb250ZW50KTsK
KyAgICAgICAgaWYgKGxpbmVMYXlvdXRSZXN1bHQuaXNGaXJzdExhc3QuaXNMYXN0TGluZVdpdGhJ
bmxpbmVDb250ZW50KQorICAgICAgICAgICAgaW5saW5lTGF5b3V0U3RhdGUuc2V0Q2xlYXJHYXBB
ZnRlckxhc3RMaW5lKGZvcm1hdHRpbmdHZW9tZXRyeSgpLmxvZ2ljYWxUb3BGb3JOZXh0TGluZShs
aW5lTGF5b3V0UmVzdWx0LCBsaW5lTG9naWNhbFJlY3QsIGZsb2F0aW5nQ29udGV4dCkgLSBsaW5l
TG9naWNhbFJlY3QuYm90dG9tKCkpOwogCi0gICAgICAgIGF1dG8gbGluZUNvbnRlbnRFbmQgPSBs
aW5lQ29udGVudC5jb21taXR0ZWRSYW5nZS5lbmQ7CisgICAgICAgIGF1dG8gbGluZUNvbnRlbnRF
bmQgPSBsaW5lTGF5b3V0UmVzdWx0LmNvbW1pdHRlZFJhbmdlLmVuZDsKICAgICAgICAgbGVhZGlu
Z0lubGluZUl0ZW1Qb3NpdGlvbiA9IGxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb25Gb3JOZXh0TGlu
ZShsaW5lQ29udGVudEVuZCwgcHJldmlvdXNMaW5lRW5kLCBuZWVkc0xheW91dFJhbmdlLmVuZCk7
Ci0gICAgICAgIGF1dG8gaXNMYXN0TGluZSA9IGxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb24gPT0g
bmVlZHNMYXlvdXRSYW5nZS5lbmQgJiYgbGluZUNvbnRlbnQuc3VzcGVuZGVkRmxvYXRzLmlzRW1w
dHkoKTsKKyAgICAgICAgYXV0byBpc0xhc3RMaW5lID0gbGVhZGluZ0lubGluZUl0ZW1Qb3NpdGlv
biA9PSBuZWVkc0xheW91dFJhbmdlLmVuZCAmJiBsaW5lTGF5b3V0UmVzdWx0LmZsb2F0Q29udGVu
dC5zdXNwZW5kZWRGbG9hdHMuaXNFbXB0eSgpOwogICAgICAgICBpZiAoaXNMYXN0TGluZSkgewog
ICAgICAgICAgICAgbGF5b3V0UmVzdWx0LnJhbmdlID0gIWlzUGFydGlhbExheW91dCA/IElubGlu
ZUxheW91dFJlc3VsdDo6UmFuZ2U6OkZ1bGwgOiBJbmxpbmVMYXlvdXRSZXN1bHQ6OlJhbmdlOjpG
dWxsRnJvbURhbWFnZTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjk2LDggKzI5Niw4IEBAIElu
bGluZUxheW91dFJlc3VsdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChjb25z
dCBJbmxpbmVJdGVtcyYgaW5saW5lCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0g
ICAgICAgIGxpbmVMb2dpY2FsVG9wID0gZm9ybWF0dGluZ0dlb21ldHJ5KCkubG9naWNhbFRvcEZv
ck5leHRMaW5lKGxpbmVDb250ZW50LCBsaW5lTG9naWNhbFJlY3QsIGZsb2F0aW5nQ29udGV4dCk7
Ci0gICAgICAgIHByZXZpb3VzTGluZSA9IFByZXZpb3VzTGluZSB7IGxpbmVJbmRleCwgbGluZUNv
bnRlbnQudHJhaWxpbmdPdmVyZmxvd2luZ0NvbnRlbnRXaWR0aCwgIWxpbmVDb250ZW50LnJ1bnMu
aXNFbXB0eSgpICYmIGxpbmVDb250ZW50LnJ1bnMubGFzdCgpLmlzTGluZUJyZWFrKCksIGxpbmVD
b250ZW50LmlubGluZUJhc2VEaXJlY3Rpb24sIFdURk1vdmUobGluZUNvbnRlbnQuc3VzcGVuZGVk
RmxvYXRzKSB9OworICAgICAgICBsaW5lTG9naWNhbFRvcCA9IGZvcm1hdHRpbmdHZW9tZXRyeSgp
LmxvZ2ljYWxUb3BGb3JOZXh0TGluZShsaW5lTGF5b3V0UmVzdWx0LCBsaW5lTG9naWNhbFJlY3Qs
IGZsb2F0aW5nQ29udGV4dCk7CisgICAgICAgIHByZXZpb3VzTGluZSA9IFByZXZpb3VzTGluZSB7
IGxpbmVJbmRleCwgbGluZUxheW91dFJlc3VsdC5jb250ZW50R2VvbWV0cnkudHJhaWxpbmdPdmVy
Zmxvd2luZ0NvbnRlbnRXaWR0aCwgIWxpbmVMYXlvdXRSZXN1bHQucnVucy5pc0VtcHR5KCkgJiYg
bGluZUxheW91dFJlc3VsdC5ydW5zLmxhc3QoKS5pc0xpbmVCcmVhaygpLCBsaW5lTGF5b3V0UmVz
dWx0LmRpcmVjdGlvbmFsaXR5LmlubGluZUJhc2VEaXJlY3Rpb24sIFdURk1vdmUobGluZUxheW91
dFJlc3VsdC5mbG9hdENvbnRlbnQuc3VzcGVuZGVkRmxvYXRzKSB9OwogICAgICAgICBwcmV2aW91
c0xpbmVFbmQgPSBsaW5lQ29udGVudEVuZDsKICAgICB9CiAgICAgcmV0dXJuIGxheW91dFJlc3Vs
dDsKQEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgTGluZUVuZGluZ0VsbGlwc2lzUG9saWN5IGxp
bmVFbmRpbmdFbGxpcHNpc1BvbGljeShjb25zdCBSZW5kZXJTdHlsZSYgcm9vdAogICAgIHJldHVy
biBMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6Ok5vOwogfQogCi1JbmxpbmVSZWN0IElubGluZUZv
cm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZvckxpbmUoc2l6ZV90IGxpbmVJ
bmRleCwgY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3Qg
Q29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50cywgY29uc3QgSW5saW5lTGF5
b3V0U3RhdGUmIGlubGluZUxheW91dFN0YXRlLCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNw
bGF5Q29udGVudCkKK0lubGluZVJlY3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZURp
c3BsYXlDb250ZW50Rm9yTGluZShzaXplX3QgbGluZUluZGV4LCBjb25zdCBMaW5lQnVpbGRlcjo6
TGluZUxheW91dFJlc3VsdCYgbGluZUxheW91dFJlc3VsdCwgY29uc3QgQ29uc3RyYWludHNGb3JJ
bmxpbmVDb250ZW50JiBjb25zdHJhaW50cywgY29uc3QgSW5saW5lTGF5b3V0U3RhdGUmIGlubGlu
ZUxheW91dFN0YXRlLCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29udGVudCkKIHsK
ICAgICBhdXRvIG51bWJlck9mVmlzaWJsZUxpbmVzQWxsb3dlZCA9IFsmXSAoKSAtPiBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gewogICAgICAgICBpZiAoYXV0byBsaW5lQ2xhbXAgPSBpbmxpbmVMYXlv
dXRTdGF0ZS5wYXJlbnRCbG9ja0xheW91dFN0YXRlKCkubGluZUNsYW1wKCkpCkBAIC01NjEsMTYg
KzU2MSwxNiBAQCBJbmxpbmVSZWN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNw
bGF5Q29udGVudEZvckxpbmUoc2l6ZV90IGxpbmVJbmRleAogCiAgICAgYXV0byBlbGxpcHNpc1Bv
bGljeSA9IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeShyb290KCkuc3R5bGUoKSwgbGluZUluZGV4
LCBudW1iZXJPZlZpc2libGVMaW5lc0FsbG93ZWQpOwogICAgIGF1dG8gbGluZUlzRnVsbHlUcnVu
Y2F0ZWRJbkJsb2NrRGlyZWN0aW9uID0gbnVtYmVyT2ZWaXNpYmxlTGluZXNBbGxvd2VkICYmIGxp
bmVJbmRleCArIDEgPiAqbnVtYmVyT2ZWaXNpYmxlTGluZXNBbGxvd2VkOwotICAgIGF1dG8gbGlu
ZUJveCA9IExpbmVCb3hCdWlsZGVyIHsgKnRoaXMsIGlubGluZUxheW91dFN0YXRlLCBsaW5lQ29u
dGVudCB9LmJ1aWxkKGxpbmVJbmRleCk7Ci0gICAgYXV0byBkaXNwbGF5TGluZSA9IElubGluZURp
c3BsYXlMaW5lQnVpbGRlciB7ICp0aGlzIH0uYnVpbGQobGluZUNvbnRlbnQsIGxpbmVCb3gsIGNv
bnN0cmFpbnRzLCBsaW5lSXNGdWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24pOwotICAgIGF1
dG8gYm94ZXMgPSBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIgeyAqdGhpcywgZm9ybWF0dGlu
Z1N0YXRlKCksIGRpc3BsYXlMaW5lLCBsaW5lSW5kZXggfS5idWlsZChsaW5lQ29udGVudCwgbGlu
ZUJveCk7Ci0gICAgaWYgKGF1dG8gZWxsaXBzaXNSZWN0ID0gSW5saW5lRGlzcGxheUxpbmVCdWls
ZGVyOjp0cmFpbGluZ0VsbGlwc2lzVmlzdWFsUmVjdEFmdGVyVHJ1bmNhdGlvbihlbGxpcHNpc1Bv
bGljeSwgZGlzcGxheUxpbmUsIGJveGVzLCBsaW5lQ29udGVudC5pc0xhc3RMaW5lV2l0aElubGlu
ZUNvbnRlbnQpKQorICAgIGF1dG8gbGluZUJveCA9IExpbmVCb3hCdWlsZGVyIHsgKnRoaXMsIGlu
bGluZUxheW91dFN0YXRlLCBsaW5lTGF5b3V0UmVzdWx0IH0uYnVpbGQobGluZUluZGV4KTsKKyAg
ICBhdXRvIGRpc3BsYXlMaW5lID0gSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyIHsgKnRoaXMgfS5i
dWlsZChsaW5lTGF5b3V0UmVzdWx0LCBsaW5lQm94LCBjb25zdHJhaW50cywgbGluZUlzRnVsbHlU
cnVuY2F0ZWRJbkJsb2NrRGlyZWN0aW9uKTsKKyAgICBhdXRvIGJveGVzID0gSW5saW5lRGlzcGxh
eUNvbnRlbnRCdWlsZGVyIHsgKnRoaXMsIGZvcm1hdHRpbmdTdGF0ZSgpLCBkaXNwbGF5TGluZSwg
bGluZUluZGV4IH0uYnVpbGQobGluZUxheW91dFJlc3VsdCwgbGluZUJveCk7CisgICAgaWYgKGF1
dG8gZWxsaXBzaXNSZWN0ID0gSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjp0cmFpbGluZ0VsbGlw
c2lzVmlzdWFsUmVjdEFmdGVyVHJ1bmNhdGlvbihlbGxpcHNpc1BvbGljeSwgZGlzcGxheUxpbmUs
IGJveGVzLCBsaW5lTGF5b3V0UmVzdWx0LmlzRmlyc3RMYXN0LmlzTGFzdExpbmVXaXRoSW5saW5l
Q29udGVudCkpCiAgICAgICAgIGRpc3BsYXlMaW5lLnNldEVsbGlwc2lzVmlzdWFsUmVjdCgqZWxs
aXBzaXNSZWN0KTsKIAogICAgIGRpc3BsYXlDb250ZW50LmJveGVzLmFwcGVuZFZlY3RvcihXVEZN
b3ZlKGJveGVzKSk7CiAgICAgZGlzcGxheUNvbnRlbnQubGluZXMuYXBwZW5kKGRpc3BsYXlMaW5l
KTsKICAgICBhdXRvIHVwZGF0ZUJveEdlb21ldHJ5Rm9yUGxhY2VkRmxvYXRzID0gWyZdIHsKLSAg
ICAgICAgZm9yIChhdXRvJiBmbG9hdEl0ZW0gOiBsaW5lQ29udGVudC5wbGFjZWRGbG9hdHMpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBmbG9hdEl0ZW0gOiBsaW5lTGF5b3V0UmVzdWx0LmZsb2F0Q29u
dGVudC5wbGFjZWRGbG9hdHMpIHsKICAgICAgICAgICAgIGlmICghZmxvYXRJdGVtLmxheW91dEJv
eCgpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBiZSBwbGFjaW5nIGludHJ1c2l2ZSBmbG9hdHMgY29taW5n
IGZyb20gcGFyZW50IEJGQy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5oCmluZGV4IDVjYmFkYTUxYTZhNS4uM2YwOTdjYmU4MWVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTg1LDcgKzg1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25z
dCBIb3Jpem9udGFsQ29uc3RyYWludHMmKTsKIAogICAgIHZvaWQgY29sbGVjdENvbnRlbnRJZk5l
ZWRlZCgpOwotICAgIElubGluZVJlY3QgY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKHNpemVf
dCBsaW5lSW5kZXgsIGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IENvbnN0
cmFpbnRzRm9ySW5saW5lQ29udGVudCYsIGNvbnN0IElubGluZUxheW91dFN0YXRlJiwgSW5saW5l
RGlzcGxheTo6Q29udGVudCYpOworICAgIElubGluZVJlY3QgY3JlYXRlRGlzcGxheUNvbnRlbnRG
b3JMaW5lKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lTGF5b3V0UmVz
dWx0JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgY29uc3QgSW5saW5lTGF5
b3V0U3RhdGUmLCBJbmxpbmVEaXNwbGF5OjpDb250ZW50Jik7CiAgICAgdm9pZCByZXNldEdlb21l
dHJ5Rm9yQ2xhbXBlZENvbnRlbnQoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0Rpc3BsYXlD
b250ZW50UmFuZ2UsIGNvbnN0IExpbmVCdWlsZGVyOjpTdXNwZW5kZWRGbG9hdExpc3QmIHN1c3Bl
bmRlZEZsb2F0cywgTGF5b3V0UG9pbnQgdG9wbGVmdCk7CiAKICAgICBjb25zdCBJbmxpbmVEYW1h
Z2UqIG1fbGluZURhbWFnZSB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRy
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IDM2YjQwMGQ0MWNjNC4uZDJjMDFmMzQz
OWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRy
eS5jcHAKQEAgLTQ3LDE1ICs0NywxNSBAQCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OklubGlu
ZUZvcm1hdHRpbmdHZW9tZXRyeShjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dAogewogfQog
Ci1JbmxpbmVMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6bG9naWNhbFRvcEZv
ck5leHRMaW5lKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQsIGNv
bnN0IElubGluZVJlY3QmIGxpbmVMb2dpY2FsUmVjdCwgY29uc3QgRmxvYXRpbmdDb250ZXh0JiBm
bG9hdGluZ0NvbnRleHQpIGNvbnN0CitJbmxpbmVMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeTo6bG9naWNhbFRvcEZvck5leHRMaW5lKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lTGF5
b3V0UmVzdWx0JiBsaW5lTGF5b3V0UmVzdWx0LCBjb25zdCBJbmxpbmVSZWN0JiBsaW5lTG9naWNh
bFJlY3QsIGNvbnN0IEZsb2F0aW5nQ29udGV4dCYgZmxvYXRpbmdDb250ZXh0KSBjb25zdAogewot
ICAgIGF1dG8gZGlkTWFuYWdlVG9QbGFjZUlubGluZUNvbnRlbnRPckZsb2F0ID0gIWxpbmVDb250
ZW50LmNvbW1pdHRlZFJhbmdlLmlzRW1wdHkoKTsKKyAgICBhdXRvIGRpZE1hbmFnZVRvUGxhY2VJ
bmxpbmVDb250ZW50T3JGbG9hdCA9ICFsaW5lTGF5b3V0UmVzdWx0LmNvbW1pdHRlZFJhbmdlLmlz
RW1wdHkoKTsKICAgICBpZiAoZGlkTWFuYWdlVG9QbGFjZUlubGluZUNvbnRlbnRPckZsb2F0KSB7
CiAgICAgICAgIC8vIE5vcm1hbGx5IHRoZSBuZXh0IGxpbmUncyBsb2dpY2FsIHRvcCBpcyB0aGUg
cHJldmlvdXMgbGluZSdzIGxvZ2ljYWwgYm90dG9tLCBidXQgd2hlbiB0aGUgbGluZSBlbmRzCiAg
ICAgICAgIC8vIHdpdGggdGhlIGNsZWFyIHByb3BlcnR5IHNldCwgdGhlIG5leHQgbGluZSBuZWVk
cyB0byBjbGVhciB0aGUgZXhpc3RpbmcgZmxvYXRzLgotICAgICAgICBpZiAobGluZUNvbnRlbnQu
cnVucy5pc0VtcHR5KCkpCisgICAgICAgIGlmIChsaW5lTGF5b3V0UmVzdWx0LnJ1bnMuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuIGxpbmVMb2dpY2FsUmVjdC5ib3R0b20oKTsKLSAgICAg
ICAgYXV0byYgbGFzdFJ1bkxheW91dEJveCA9IGxpbmVDb250ZW50LnJ1bnMubGFzdCgpLmxheW91
dEJveCgpOworICAgICAgICBhdXRvJiBsYXN0UnVuTGF5b3V0Qm94ID0gbGluZUxheW91dFJlc3Vs
dC5ydW5zLmxhc3QoKS5sYXlvdXRCb3goKTsKICAgICAgICAgaWYgKCFsYXN0UnVuTGF5b3V0Qm94
Lmhhc0Zsb2F0Q2xlYXIoKSkKICAgICAgICAgICAgIHJldHVybiBsaW5lTG9naWNhbFJlY3QuYm90
dG9tKCk7CiAgICAgICAgIGF1dG8gcG9zaXRpb25XaXRoQ2xlYXJhbmNlID0gZmxvYXRpbmdDb250
ZXh0LnZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJhbmNlKGxhc3RSdW5MYXlvdXRCb3gsIGZvcm1h
dHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGFzdFJ1bkxheW91dEJveCkpOwpAQCAtNjcs
OCArNjcsOCBAQCBJbmxpbmVMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6bG9n
aWNhbFRvcEZvck5leHRMaW5lKGNvbnN0IExpbmVCdWlsZAogICAgIGF1dG8gaW50cnVzaXZlRmxv
YXRCb3R0b20gPSBbJl0oKSAtPiBJbmxpbmVMYXlvdXRVbml0IHsKICAgICAgICAgLy8gRmxvYXRz
IG11c3QgaGF2ZSBwcmV2ZW50ZWQgdXMgcGxhY2luZyBhbnkgY29udGVudCBvbiB0aGUgbGluZS4K
ICAgICAgICAgLy8gTW92ZSB0aGUgbmV4dCBsaW5lIGJlbG93IHRoZSBpbnRydXNpdmUgZmxvYXQo
cykuCi0gICAgICAgIEFTU0VSVChsaW5lQ29udGVudC5ydW5zLmlzRW1wdHkoKSB8fCBsaW5lQ29u
dGVudC5ydW5zWzBdLmlzTGluZVNwYW5uaW5nSW5saW5lQm94U3RhcnQoKSk7Ci0gICAgICAgIEFT
U0VSVChsaW5lQ29udGVudC5oYXNJbnRydXNpdmVGbG9hdCk7CisgICAgICAgIEFTU0VSVChsaW5l
TGF5b3V0UmVzdWx0LnJ1bnMuaXNFbXB0eSgpIHx8IGxpbmVMYXlvdXRSZXN1bHQucnVuc1swXS5p
c0xpbmVTcGFubmluZ0lubGluZUJveFN0YXJ0KCkpOworICAgICAgICBBU1NFUlQobGluZUxheW91
dFJlc3VsdC5mbG9hdENvbnRlbnQuaGFzSW50cnVzaXZlRmxvYXQpOwogICAgICAgICAvLyBGSVhN
RTogTW92aW5nIHRoZSBib3R0b20gcG9zaXRpb24gYnkgdGhlIGluaXRpYWwgbGluZSBoZWlnaHQg
bWF5IGJlIHRvbyBtdWNoIG1lYW5pbmcgdGhhdCB3ZSBtaXNzIHZlcnRpY2FsIHBvc2l0aW9ucyB3
aGVyZSBhdG9taWMgaW5saW5lIGNvbnRlbnQgY291bGQgdmVyeSB3ZWxsIGZpdC4KICAgICAgICAg
Ly8gVGhlIHNwZWMgaXMgdW5jbGVhciBvZiBob3cgbXVjaCB3ZSBzaG91bGQgbW92ZSBkb3duIGF0
IHRoaXMgcG9pbnQgYW5kIHdoaWxlIDFweCBzaG91bGQgYmUgdGhlIG1vc3QgcHJlY2lzZSBpdCdz
IGFsc28gcmF0aGVyIGV4cGVuc2l2ZS4KICAgICAgICAgYXV0byBpbmZsYXRlZExpbmVSZWN0Qm90
dG9tID0gbGluZUxvZ2ljYWxSZWN0LnRvcCgpICsgZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCku
c3R5bGUoKS5jb21wdXRlZExpbmVIZWlnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRy
eS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ0dlb21ldHJ5LmgKaW5kZXggY2E0YzY5NzJlOWI1Li5jYjQ5OGI2YjllYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oCkBA
IC00MCw3ICs0MCw3IEBAIGNsYXNzIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeSA6IHB1YmxpYyBG
b3JtYXR0aW5nR2VvbWV0cnkgewogcHVibGljOgogICAgIElubGluZUZvcm1hdHRpbmdHZW9tZXRy
eShjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYpOwogCi0gICAgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsVG9wRm9yTmV4dExpbmUoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50Jiwg
Y29uc3QgSW5saW5lUmVjdCYgbGluZUxvZ2ljYWxSZWN0LCBjb25zdCBGbG9hdGluZ0NvbnRleHQm
KSBjb25zdDsKKyAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxUb3BGb3JOZXh0TGluZShjb25z
dCBMaW5lQnVpbGRlcjo6TGluZUxheW91dFJlc3VsdCYsIGNvbnN0IElubGluZVJlY3QmIGxpbmVM
b2dpY2FsUmVjdCwgY29uc3QgRmxvYXRpbmdDb250ZXh0JikgY29uc3Q7CiAKICAgICBDb250ZW50
SGVpZ2h0QW5kTWFyZ2luIGlubGluZUJsb2NrQ29udGVudEhlaWdodEFuZE1hcmdpbihjb25zdCBC
b3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBPdmVycmlkZGVuVmVydGlj
YWxWYWx1ZXMmKSBjb25zdDsKICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gaW5saW5lQmxvY2tD
b250ZW50V2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFp
bnRzJiwgY29uc3QgT3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMmKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxpbmVCb3hCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcAppbmRleCBiM2U5ODBjNmY5M2Iu
LmYzNWY1NmQzODM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWls
ZGVyLmNwcApAQCAtMzYsMjAgKzM2LDIwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3Bh
Y2UgTGF5b3V0IHsKIAotTGluZUJveEJ1aWxkZXI6OkxpbmVCb3hCdWlsZGVyKGNvbnN0IElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgY29uc3QgSW5saW5l
TGF5b3V0U3RhdGUmIGlubGluZUxheW91dFN0YXRlLCBjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNv
bnRlbnQmIGxpbmVDb250ZW50KQorTGluZUJveEJ1aWxkZXI6OkxpbmVCb3hCdWlsZGVyKGNvbnN0
IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgY29uc3Qg
SW5saW5lTGF5b3V0U3RhdGUmIGlubGluZUxheW91dFN0YXRlLCBjb25zdCBMaW5lQnVpbGRlcjo6
TGluZUxheW91dFJlc3VsdCYgbGluZUxheW91dFJlc3VsdCkKICAgICA6IG1faW5saW5lRm9ybWF0
dGluZ0NvbnRleHQoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCiAgICAgLCBtX2lubGluZUxheW91
dFN0YXRlKGlubGluZUxheW91dFN0YXRlKQotICAgICwgbV9saW5lQ29udGVudChsaW5lQ29udGVu
dCkKKyAgICAsIG1fbGluZUxheW91dFJlc3VsdChsaW5lTGF5b3V0UmVzdWx0KQogewogfQogCiBM
aW5lQm94IExpbmVCb3hCdWlsZGVyOjpidWlsZChzaXplX3QgbGluZUluZGV4KQogewotICAgIGF1
dG8mIGxpbmVDb250ZW50ID0gdGhpcy0+bGluZUNvbnRlbnQoKTsKKyAgICBhdXRvJiBsaW5lTGF5
b3V0UmVzdWx0ID0gdGhpcy0+bGluZUxheW91dFJlc3VsdCgpOwogICAgIC8vIEZJWE1FOiBUaGUg
b3ZlcmZsb3dpbmcgaGFuZ2luZyBjb250ZW50IHNob3VsZCBiZSBwYXJ0IG9mIHRoZSBpbmsgb3Zl
cmZsb3cuCiAgICAgYXV0byBjb250ZW50TG9naWNhbFdpZHRoID0gWyZdIHsKLSAgICAgICAgaWYg
KGxpbmVDb250ZW50LmlubGluZUJhc2VEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSKQot
ICAgICAgICAgICAgcmV0dXJuIGxpbmVDb250ZW50LmNvbnRlbnRMb2dpY2FsV2lkdGggLSBsaW5l
Q29udGVudC5oYW5naW5nQ29udGVudC53aWR0aDsKKyAgICAgICAgaWYgKGxpbmVMYXlvdXRSZXN1
bHQuZGlyZWN0aW9uYWxpdHkuaW5saW5lQmFzZURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpM
VFIpCisgICAgICAgICAgICByZXR1cm4gbGluZUxheW91dFJlc3VsdC5jb250ZW50R2VvbWV0cnku
bG9naWNhbFdpZHRoIC0gbGluZUxheW91dFJlc3VsdC5oYW5naW5nQ29udGVudC5sb2dpY2FsV2lk
dGg7CiAgICAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgY2xpZW50cyBvZiB0aGUgaW5saW5lIGl0
ZXJhdG9yIGludGVyZmFjZSAoZWRpdGluZywgc2VsZWN0aW9uLCBET00gZXRjKSBjYW4ndCBkZWFs
IHdpdGgKICAgICAgICAgLy8gaGFuZ2luZyBjb250ZW50IG9mZnNldHMgd2hlbiB0aGV5IGFmZmVj
dCB0aGUgcmVzdCBvZiB0aGUgY29udGVudC4KICAgICAgICAgLy8gSW4gbGVmdC10by1yaWdodCBp
bmxpbmUgZGlyZWN0aW9uLCBoYW5naW5nIGNvbnRlbnQgaXMgYWx3YXlzIHRyYWlsaW5nIGhlbmNl
IHRoZSB3aWR0aCBkb2VzIG5vdCBpbXBvc2Ugb2Zmc2V0IG9uIHRoZSByZXN0IG9mIHRoZSBjb250
ZW50CkBAIC01Nyw5ICs1Nyw5IEBAIExpbmVCb3ggTGluZUJveEJ1aWxkZXI6OmJ1aWxkKHNpemVf
dCBsaW5lSW5kZXgpCiAgICAgICAgIC8vIFdoYXQncyBtaXNzaW5nIGlzIGEgd2F5IHRvIHRlbGwg
dGhhdCB3aGlsZSB0aGUgY29udGVudCBzdGFydHMgYXQgdGhlIGxlZnQgc2lkZSBvZiB0aGUgKHZp
c3VhbGx5IGxlYWRpbmcpIGhhbmdpbmcgY29udGVudAogICAgICAgICAvLyB0aGUgcm9vdCBpbmxp
bmUgYm94IGhhcyBhbiBvZmZzZXQsIHRoZSB3aWR0aCBvZiB0aGUgaGFuZ2luZyBjb250ZW50IChl
c3NlbnRpYWxseSBkZWNvdXBsaW5nIHRoZSBjb250ZW50IGFuZCB0aGUgcm9vdCBpbmxpbmUgYm94
IHZpc3VhbCBsZWZ0KS4KICAgICAgICAgLy8gRm9yIG5vdyBqdXN0IGluY2x1ZGUgdGhlIGhhbmdp
bmcgY29udGVudCBpbiB0aGUgcm9vdCBpbmxpbmUgYm94IGFzIGlmIGl0IHdhcyBub3QgaGFuZ2lu
ZyAodGhpcyBpcyBob3cgbGVnYWN5IGxpbmUgbGF5b3V0IHdvcmtzKS4KLSAgICAgICAgcmV0dXJu
IGxpbmVDb250ZW50LmNvbnRlbnRMb2dpY2FsV2lkdGg7CisgICAgICAgIHJldHVybiBsaW5lTGF5
b3V0UmVzdWx0LmNvbnRlbnRHZW9tZXRyeS5sb2dpY2FsV2lkdGg7CiAgICAgfTsKLSAgICBhdXRv
IGxpbmVCb3ggPSBMaW5lQm94IHsgcm9vdEJveCgpLCBsaW5lQ29udGVudC5jb250ZW50TG9naWNh
bExlZnQsIGNvbnRlbnRMb2dpY2FsV2lkdGgoKSwgbGluZUluZGV4LCBsaW5lQ29udGVudC5ub25T
cGFubmluZ0lubGluZUxldmVsQm94Q291bnQgfTsKKyAgICBhdXRvIGxpbmVCb3ggPSBMaW5lQm94
IHsgcm9vdEJveCgpLCBsaW5lTGF5b3V0UmVzdWx0LmNvbnRlbnRHZW9tZXRyeS5sb2dpY2FsTGVm
dCwgY29udGVudExvZ2ljYWxXaWR0aCgpLCBsaW5lSW5kZXgsIGxpbmVMYXlvdXRSZXN1bHQubm9u
U3Bhbm5pbmdJbmxpbmVMZXZlbEJveENvdW50IH07CiAgICAgY29uc3RydWN0SW5saW5lTGV2ZWxC
b3hlcyhsaW5lQm94KTsKICAgICBhZGp1c3RJZGVvZ3JhcGhpY0Jhc2VsaW5lSWZBcHBsaWNhYmxl
KGxpbmVCb3gpOwogICAgIGFkanVzdElubGluZUJveEhlaWdodHNGb3JMaW5lQm94Q29udGFpbklm
QXBwbGljYWJsZShsaW5lQm94KTsKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIExpbmVCb3hCdWls
ZGVyOjpjb25zdHJ1Y3RJbmxpbmVMZXZlbEJveGVzKExpbmVCb3gmIGxpbmVCb3gpCiAgICAgfTsK
IAogICAgIGF1dG8gbGluZUhhc0NvbnRlbnQgPSBmYWxzZTsKLSAgICBhdXRvJiBydW5zID0gbGlu
ZUNvbnRlbnQoKS5ydW5zOworICAgIGF1dG8mIHJ1bnMgPSBsaW5lTGF5b3V0UmVzdWx0KCkucnVu
czsKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgcnVucy5zaXplKCk7ICsraW5k
ZXgpIHsKICAgICAgICAgYXV0byYgcnVuID0gcnVuc1tpbmRleF07CiAgICAgICAgIGF1dG8mIGxh
eW91dEJveCA9IHJ1bi5sYXlvdXRCb3goKTsKQEAgLTM4Niw3ICszODYsNyBAQCB2b2lkIExpbmVC
b3hCdWlsZGVyOjpjb25zdHJ1Y3RJbmxpbmVMZXZlbEJveGVzKExpbmVCb3gmIGxpbmVCb3gpCiAg
ICAgICAgICAgICBhdXRvIG1hcmdpblN0YXJ0ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRy
eUZvckJveChsYXlvdXRCb3gpLm1hcmdpblN0YXJ0KCk7CiAgICAgICAgICAgICBsb2dpY2FsTGVm
dCArPSBzdGQ6Om1heCgwX2x1LCBtYXJnaW5TdGFydCk7CiAgICAgICAgICAgICBhdXRvIGluaXRp
YWxMb2dpY2FsV2lkdGggPSByb290SW5saW5lQm94LmxvZ2ljYWxSaWdodCgpIC0gbG9naWNhbExl
ZnQ7Ci0gICAgICAgICAgICBBU1NFUlQoaW5pdGlhbExvZ2ljYWxXaWR0aCA+PSAwIHx8IGxpbmVD
b250ZW50KCkuaGFuZ2luZ0NvbnRlbnQud2lkdGggfHwgc3RkOjppc25hbihpbml0aWFsTG9naWNh
bFdpZHRoKSk7CisgICAgICAgICAgICBBU1NFUlQoaW5pdGlhbExvZ2ljYWxXaWR0aCA+PSAwIHx8
IGxpbmVMYXlvdXRSZXN1bHQoKS5oYW5naW5nQ29udGVudC5sb2dpY2FsV2lkdGggfHwgc3RkOjpp
c25hbihpbml0aWFsTG9naWNhbFdpZHRoKSk7CiAgICAgICAgICAgICBpbml0aWFsTG9naWNhbFdp
ZHRoID0gc3RkOjptYXgoaW5pdGlhbExvZ2ljYWxXaWR0aCwgMC5mKTsKICAgICAgICAgICAgIGF1
dG8gaW5saW5lQm94ID0gSW5saW5lTGV2ZWxCb3g6OmNyZWF0ZUlubGluZUJveChsYXlvdXRCb3gs
IHN0eWxlLCBsb2dpY2FsTGVmdCwgaW5pdGlhbExvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICBp
bmxpbmVCb3guc2V0SXNGaXJzdEJveCgpOwpAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgTGluZUJv
eEJ1aWxkZXI6OmFkanVzdElubGluZUJveEhlaWdodHNGb3JMaW5lQm94Q29udGFpbklmQXBwbGlj
YWJsZShMaW5lQm94CiAKICAgICBpZiAobGluZUJveENvbnRhaW4uY29udGFpbnMoTGluZUJveENv
bnRhaW46OkdseXBocykpIHsKICAgICAgICAgLy8gQ29tcHV0ZSB0ZXh0IGNvbnRlbnQgKGdseXBo
cykgaHVnZ2luZyBpbmxpbmUgYm94IGxheW91dCBib3VuZHMuCi0gICAgICAgIGZvciAoYXV0byBy
dW4gOiBsaW5lQ29udGVudCgpLnJ1bnMpIHsKKyAgICAgICAgZm9yIChhdXRvIHJ1biA6IGxpbmVM
YXlvdXRSZXN1bHQoKS5ydW5zKSB7CiAgICAgICAgICAgICBpZiAoIXJ1bi5pc1RleHQoKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtNTMxLDcgKzUzMSw3IEBAIHZvaWQgTGluZUJv
eEJ1aWxkZXI6OmFkanVzdElubGluZUJveEhlaWdodHNGb3JMaW5lQm94Q29udGFpbklmQXBwbGlj
YWJsZShMaW5lQm94CiAgICAgICAgIElubGluZUxheW91dFVuaXQgaW5pdGlhbExldHRlckFzY2Vu
dCA9IGZvbnRNZXRyaWNzLmNhcEhlaWdodCgpOwogICAgICAgICBhdXRvIGluaXRpYWxMZXR0ZXJE
ZXNjZW50ID0gSW5saW5lTGF5b3V0VW5pdCB7IH07CiAKLSAgICAgICAgZm9yIChhdXRvIHJ1biA6
IGxpbmVDb250ZW50KCkucnVucykgeworICAgICAgICBmb3IgKGF1dG8gcnVuIDogbGluZUxheW91
dFJlc3VsdCgpLnJ1bnMpIHsKICAgICAgICAgICAgIC8vIFdlIHJlYWxseSBzaG91bGQgb25seSBo
YXZlIG9uZSB0ZXh0IHJ1biBmb3IgaW5pdGlhbCBsZXR0ZXIuCiAgICAgICAgICAgICBpZiAoIXJ1
bi5pc1RleHQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTY5MSw3ICs2OTEsNyBA
QCB2b2lkIExpbmVCb3hCdWlsZGVyOjpjb21wdXRlTGluZUJveEdlb21ldHJ5KExpbmVCb3gmIGxp
bmVCb3gpIGNvbnN0CiAgICAgICAgIGZvciAoYXV0byYgbm9uUm9vdElubGluZUxldmVsQm94IDog
bGluZUJveC5ub25Sb290SW5saW5lTGV2ZWxCb3hlcygpKQogICAgICAgICAgICAgbm9uUm9vdElu
bGluZUxldmVsQm94LnNldExvZ2ljYWxUb3Aobm9uUm9vdElubGluZUxldmVsQm94LmxvZ2ljYWxU
b3AoKSAtIHRleHRCb3hFZGdlT3ZlckhlaWdodCk7CiAgICAgfQotICAgIGxpbmVCb3guc2V0TG9n
aWNhbFJlY3QoeyBsaW5lQ29udGVudCgpLmxpbmVMb2dpY2FsVG9wTGVmdCwgbGluZUNvbnRlbnQo
KS5saW5lTG9naWNhbFdpZHRoLCBsaW5lQm94TG9naWNhbEhlaWdodCB9KTsKKyAgICBsaW5lQm94
LnNldExvZ2ljYWxSZWN0KHsgbGluZUxheW91dFJlc3VsdCgpLmxpbmVHZW9tZXRyeS5sb2dpY2Fs
VG9wTGVmdCwgbGluZUxheW91dFJlc3VsdCgpLmxpbmVHZW9tZXRyeS5sb2dpY2FsV2lkdGgsIGxp
bmVCb3hMb2dpY2FsSGVpZ2h0IH0pOwogfQogCiB2b2lkIExpbmVCb3hCdWlsZGVyOjphZGp1c3RP
dXRzaWRlTGlzdE1hcmtlcnNQb3NpdGlvbihMaW5lQm94JiBsaW5lQm94KQpAQCAtNzAxLDExICs3
MDEsMTEgQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6YWRqdXN0T3V0c2lkZUxpc3RNYXJrZXJzUG9z
aXRpb24oTGluZUJveCYgbGluZUJveCkKICAgICBhdXRvIGxpbmVCb3hSZWN0ID0gbGluZUJveC5s
b2dpY2FsUmVjdCgpOwogICAgIGF1dG8gZmxvYXRDb25zdHJhaW50cyA9IGZsb2F0aW5nQ29udGV4
dC5jb25zdHJhaW50cyhMYXlvdXRVbml0IHsgbGluZUJveFJlY3QudG9wKCkgfSwgTGF5b3V0VW5p
dCB7IGxpbmVCb3hSZWN0LmJvdHRvbSgpIH0sIEZsb2F0aW5nQ29udGV4dDo6TWF5QmVBYm92ZUxh
c3RGbG9hdDo6Tm8pOwogCi0gICAgYXV0byBsaW5lQm94T2Zmc2V0ID0gbGluZUJveFJlY3QubGVm
dCgpIC0gbGluZUNvbnRlbnQoKS5saW5lSW5pdGlhbExvZ2ljYWxMZWZ0SW5jbHVkaW5nSW50cnVz
aXZlRmxvYXRzOworICAgIGF1dG8gbGluZUJveE9mZnNldCA9IGxpbmVCb3hSZWN0LmxlZnQoKSAt
IGxpbmVMYXlvdXRSZXN1bHQoKS5saW5lR2VvbWV0cnkuaW5pdGlhbExvZ2ljYWxMZWZ0SW5jbHVk
aW5nSW50cnVzaXZlRmxvYXRzOwogICAgIGF1dG8gcm9vdElubGluZUJveExvZ2ljYWxMZWZ0ID0g
bGluZUJveC5sb2dpY2FsUmVjdEZvclJvb3RJbmxpbmVCb3goKS5sZWZ0KCk7CiAgICAgYXV0byBy
b290SW5saW5lQm94T2Zmc2V0RnJvbUNvbnRlbnRCb3hPckludHJ1c2l2ZUZsb2F0ID0gbGluZUJv
eE9mZnNldCArIHJvb3RJbmxpbmVCb3hMb2dpY2FsTGVmdDsKICAgICBmb3IgKGF1dG8gbGlzdE1h
cmtlckJveEluZGV4IDogbV9vdXRzaWRlTGlzdE1hcmtlcnMpIHsKLSAgICAgICAgYXV0byYgbGlz
dE1hcmtlclJ1biA9IGxpbmVDb250ZW50KCkucnVuc1tsaXN0TWFya2VyQm94SW5kZXhdOworICAg
ICAgICBhdXRvJiBsaXN0TWFya2VyUnVuID0gbGluZUxheW91dFJlc3VsdCgpLnJ1bnNbbGlzdE1h
cmtlckJveEluZGV4XTsKICAgICAgICAgQVNTRVJUKGxpc3RNYXJrZXJSdW4uaXNMaXN0TWFya2Vy
T3V0c2lkZSgpKTsKICAgICAgICAgYXV0byYgbGlzdE1hcmtlckJveCA9IGRvd25jYXN0PEVsZW1l
bnRCb3g+KGxpc3RNYXJrZXJSdW4ubGF5b3V0Qm94KCkpOwogICAgICAgICBhdXRvJiBsaXN0TWFy
a2VySW5saW5lTGV2ZWxCb3ggPSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yKGxpc3RNYXJrZXJS
dW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmgKaW5kZXggN2M0
ZWNjOTA2NGZkLi5lMGFiOWY3NGQ1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZUJveEJ1aWxkZXIuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBMYXlvdXRTdGF0ZTsKIAogY2xh
c3MgTGluZUJveEJ1aWxkZXIgewogcHVibGljOgotICAgIExpbmVCb3hCdWlsZGVyKGNvbnN0IElu
bGluZUZvcm1hdHRpbmdDb250ZXh0JiwgY29uc3QgSW5saW5lTGF5b3V0U3RhdGUmLCBjb25zdCBM
aW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmKTsKKyAgICBMaW5lQm94QnVpbGRlcihjb25zdCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCYsIGNvbnN0IElubGluZUxheW91dFN0YXRlJiwgY29uc3QgTGlu
ZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmKTsKIAogICAgIExpbmVCb3ggYnVpbGQoc2l6ZV90
IGxpbmVJbmRleCk7CiAKQEAgLTU1LDEwICs1NSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRq
dXN0SWRlb2dyYXBoaWNCYXNlbGluZUlmQXBwbGljYWJsZShMaW5lQm94Jik7CiAgICAgdm9pZCBh
ZGp1c3RPdXRzaWRlTGlzdE1hcmtlcnNQb3NpdGlvbihMaW5lQm94Jik7CiAKLSAgICBib29sIGlz
Rmlyc3RMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9saW5lQ29udGVudC5pc0ZpcnN0Rm9ybWF0dGVk
TGluZSAhPSBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQ6OkZpcnN0Rm9ybWF0dGVkTGluZTo6Tm87
IH0KLSAgICBib29sIGlzTGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xpbmVDb250ZW50Lmlz
TGFzdExpbmVXaXRoSW5saW5lQ29udGVudDsgfQorICAgIGJvb2wgaXNGaXJzdExpbmUoKSBjb25z
dCB7IHJldHVybiBsaW5lTGF5b3V0UmVzdWx0KCkuaXNGaXJzdExhc3QuaXNGaXJzdEZvcm1hdHRl
ZExpbmUgIT0gTGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQ6OklzRmlyc3RMYXN0OjpGaXJz
dEZvcm1hdHRlZExpbmU6Ok5vOyB9CisgICAgYm9vbCBpc0xhc3RMaW5lKCkgY29uc3QgeyByZXR1
cm4gbGluZUxheW91dFJlc3VsdCgpLmlzRmlyc3RMYXN0LmlzTGFzdExpbmVXaXRoSW5saW5lQ29u
dGVudDsgfQogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7IH0KLSAgICBj
b25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50KCkgY29uc3QgeyByZXR1
cm4gbV9saW5lQ29udGVudDsgfQorICAgIGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lTGF5b3V0UmVz
dWx0JiBsaW5lTGF5b3V0UmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9saW5lTGF5b3V0UmVzdWx0
OyB9CiAgICAgY29uc3QgQm94JiByb290Qm94KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0Nv
bnRleHQoKS5yb290KCk7IH0KICAgICBjb25zdCBSZW5kZXJTdHlsZSYgcm9vdFN0eWxlKCkgY29u
c3QgeyByZXR1cm4gaXNGaXJzdExpbmUoKSA/IHJvb3RCb3goKS5maXJzdExpbmVTdHlsZSgpIDog
cm9vdEJveCgpLnN0eWxlKCk7IH0KIApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogcHJpdmF0
ZToKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgbV9pbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDsKICAgICBjb25zdCBJbmxpbmVMYXlvdXRTdGF0ZSYgbV9pbmxpbmVMYXlvdXRTdGF0
ZTsKLSAgICBjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIG1fbGluZUNvbnRlbnQ7Cisg
ICAgY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmIG1fbGluZUxheW91dFJlc3Vs
dDsKICAgICBib29sIG1fZmFsbGJhY2tGb250UmVxdWlyZXNJZGVvZ3JhcGhpY0Jhc2VsaW5lIHsg
ZmFsc2UgfTsKICAgICBIYXNoTWFwPGNvbnN0IElubGluZUxldmVsQm94KiwgVGV4dFV0aWw6OkZh
bGxiYWNrRm9udExpc3Q+IG1fZmFsbGJhY2tGb250c0ZvcklubGluZUJveGVzOwogICAgIFZlY3Rv
cjxzaXplX3Q+IG1fb3V0c2lkZUxpc3RNYXJrZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZUJ1aWxkZXIuY3BwCmluZGV4IDRiZDY5YmM4NDZkNy4uZTNkZDZjYTIxZDNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCkBAIC0zNDYsNyArMzQ2LDcgQEAg
TGluZUJ1aWxkZXI6OkxpbmVCdWlsZGVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBp
bmxpbmVGb3JtYXR0aW5nQ29udGV4dCwKIHsKIH0KIAotTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50
IExpbmVCdWlsZGVyOjpsYXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IExpbmVJbnB1dCYgbGluZUlu
cHV0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFByZXZpb3VzTGluZT4mIHByZXZpb3VzTGluZSkKK0xp
bmVCdWlsZGVyOjpMaW5lTGF5b3V0UmVzdWx0IExpbmVCdWlsZGVyOjpsYXlvdXRJbmxpbmVDb250
ZW50KGNvbnN0IExpbmVJbnB1dCYgbGluZUlucHV0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFByZXZp
b3VzTGluZT4mIHByZXZpb3VzTGluZSkKIHsKICAgICBhdXRvIHByZXZpb3VzTGluZUVuZHNXaXRo
TGluZUJyZWFrID0gIXByZXZpb3VzTGluZSA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6bWFrZV9vcHRp
b25hbChwcmV2aW91c0xpbmUtPmVuZHNXaXRoTGluZUJyZWFrKTsKICAgICBpbml0aWFsaXplKGxp
bmVJbnB1dC5pbml0aWFsTG9naWNhbFJlY3QsIGluaXRpYWxDb25zdHJhaW50c0ZvckxpbmUobGlu
ZUlucHV0LmluaXRpYWxMb2dpY2FsUmVjdCwgcHJldmlvdXNMaW5lRW5kc1dpdGhMaW5lQnJlYWsp
LCBsaW5lSW5wdXQubmVlZHNMYXlvdXRSYW5nZSwgcHJldmlvdXNMaW5lKTsKQEAgLTM1OSwyMyAr
MzU5LDE1IEBAIExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCBMaW5lQnVpbGRlcjo6bGF5b3V0SW5s
aW5lQ29udGVudChjb25zdCBMaW5lSW5wdXQmIGxpbmVJCiAgICAgYXV0byBjb250ZW50TG9naWNh
bExlZnQgPSBob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KGlzTGFzdExpbmUpOwogCiAgICAgcmV0
dXJuIHsgY29tbWl0dGVkUmFuZ2UKLSAgICAgICAgLCBjb21taXR0ZWRDb250ZW50Lm92ZXJmbG93
TG9naWNhbFdpZHRoCi0gICAgICAgICwgV1RGTW92ZShtX3BsYWNlZEZsb2F0cykKLSAgICAgICAg
LCBXVEZNb3ZlKG1fc3VzcGVuZGVkRmxvYXRzKQotICAgICAgICAsIG1fbGluZUlzQ29uc3RyYWlu
ZWRCeUZsb2F0Ci0gICAgICAgICwgbV9saW5lSW5pdGlhbExvZ2ljYWxSZWN0LmxlZnQoKSArIG1f
aW5pdGlhbEludHJ1c2l2ZUZsb2F0c1dpZHRoCi0gICAgICAgICwgbV9saW5lTG9naWNhbFJlY3Qu
dG9wTGVmdCgpCi0gICAgICAgICwgbV9saW5lTG9naWNhbFJlY3Qud2lkdGgoKQotICAgICAgICAs
IGNvbnRlbnRMb2dpY2FsTGVmdAotICAgICAgICAsIG1fbGluZS5jb250ZW50TG9naWNhbFdpZHRo
KCkKLSAgICAgICAgLCBjb250ZW50TG9naWNhbExlZnQgKyBtX2xpbmUuY29udGVudExvZ2ljYWxS
aWdodCgpCisgICAgICAgICwgbV9saW5lLnJ1bnMoKQorICAgICAgICAsIHsgY29udGVudExvZ2lj
YWxMZWZ0LCBtX2xpbmUuY29udGVudExvZ2ljYWxXaWR0aCgpLCBjb250ZW50TG9naWNhbExlZnQg
KyBtX2xpbmUuY29udGVudExvZ2ljYWxSaWdodCgpLCBjb21taXR0ZWRDb250ZW50Lm92ZXJmbG93
TG9naWNhbFdpZHRoIH0KKyAgICAgICAgLCB7IG1fbGluZUxvZ2ljYWxSZWN0LnRvcExlZnQoKSwg
bV9saW5lTG9naWNhbFJlY3Qud2lkdGgoKSwgbV9saW5lSW5pdGlhbExvZ2ljYWxSZWN0LmxlZnQo
KSArIG1faW5pdGlhbEludHJ1c2l2ZUZsb2F0c1dpZHRoIH0KICAgICAgICAgLCB7ICFtX2xpbmUu
aXNIYW5naW5nVHJhaWxpbmdDb250ZW50V2hpdGVzcGFjZSgpLCBtX2xpbmUuaGFuZ2luZ1RyYWls
aW5nQ29udGVudFdpZHRoKCkgfQotICAgICAgICAsIGlzRmlyc3RGb3JtYXR0ZWRMaW5lKCkgPyBM
aW5lQ29udGVudDo6Rmlyc3RGb3JtYXR0ZWRMaW5lOjpXaXRoaW5JRkMgOiBMaW5lQ29udGVudDo6
Rmlyc3RGb3JtYXR0ZWRMaW5lOjpObwotICAgICAgICAsIGlzTGFzdExpbmUKKyAgICAgICAgLCB7
IGNvbXB1dGVkVmlzdWFsT3JkZXIobV9saW5lKSwgaW5saW5lQmFzZURpcmVjdGlvbiB9CisgICAg
ICAgICwgeyBXVEZNb3ZlKG1fcGxhY2VkRmxvYXRzKSwgV1RGTW92ZShtX3N1c3BlbmRlZEZsb2F0
cyksIG1fbGluZUlzQ29uc3RyYWluZWRCeUZsb2F0IH0KKyAgICAgICAgLCB7IGlzRmlyc3RGb3Jt
YXR0ZWRMaW5lKCkgPyBMaW5lTGF5b3V0UmVzdWx0OjpJc0ZpcnN0TGFzdDo6Rmlyc3RGb3JtYXR0
ZWRMaW5lOjpXaXRoaW5JRkMgOiBMaW5lTGF5b3V0UmVzdWx0OjpJc0ZpcnN0TGFzdDo6Rmlyc3RG
b3JtYXR0ZWRMaW5lOjpObywgaXNMYXN0TGluZSB9CiAgICAgICAgICwgbV9saW5lLm5vblNwYW5u
aW5nSW5saW5lTGV2ZWxCb3hDb3VudCgpCi0gICAgICAgICwgY29tcHV0ZWRWaXN1YWxPcmRlciht
X2xpbmUpCi0gICAgICAgICwgaW5saW5lQmFzZURpcmVjdGlvbgotICAgICAgICAsIG1fbGluZS5y
dW5zKCkgfTsKKyAgICB9OwogfQogCiBMaW5lQnVpbGRlcjo6SW50cmluc2ljQ29udGVudCBMaW5l
QnVpbGRlcjo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aChjb25zdCBMaW5lSW5wdXQmIGxpbmVJbnB1
dCwgY29uc3Qgc3RkOjpvcHRpb25hbDxQcmV2aW91c0xpbmU+JiBwcmV2aW91c0xpbmUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuaAppbmRleCBhNWNiNTQyMjM0ZmQuLjMzODdi
ZDk3NjFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5oCkBAIC00OSwz
NiArNDksNTggQEAgcHVibGljOgogICAgIH07CiAgICAgdXNpbmcgUGxhY2VkRmxvYXRMaXN0ID0g
RmxvYXRpbmdTdGF0ZTo6RmxvYXRMaXN0OwogICAgIHVzaW5nIFN1c3BlbmRlZEZsb2F0TGlzdCA9
IFZlY3Rvcjxjb25zdCBCb3gqPjsKLSAgICBzdHJ1Y3QgTGluZUNvbnRlbnQgeworICAgIHN0cnVj
dCBMaW5lTGF5b3V0UmVzdWx0IHsKICAgICAgICAgSW5saW5lSXRlbVJhbmdlIGNvbW1pdHRlZFJh
bmdlOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHRyYWlsaW5nT3Zl
cmZsb3dpbmdDb250ZW50V2lkdGggeyB9OwotICAgICAgICBQbGFjZWRGbG9hdExpc3QgcGxhY2Vk
RmxvYXRzOwotICAgICAgICBTdXNwZW5kZWRGbG9hdExpc3Qgc3VzcGVuZGVkRmxvYXRzOwotICAg
ICAgICBib29sIGhhc0ludHJ1c2l2ZUZsb2F0IHsgZmFsc2UgfTsKLSAgICAgICAgSW5saW5lTGF5
b3V0VW5pdCBsaW5lSW5pdGlhbExvZ2ljYWxMZWZ0SW5jbHVkaW5nSW50cnVzaXZlRmxvYXRzIHsg
MC5mIH07Ci0gICAgICAgIElubGluZUxheW91dFBvaW50IGxpbmVMb2dpY2FsVG9wTGVmdDsKLSAg
ICAgICAgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbFdpZHRoIHsgMC5mIH07Ci0gICAgICAg
IElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0IHsgMC5mIH07Ci0gICAgICAgIElu
bGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxXaWR0aCB7IDAuZiB9OwotICAgICAgICBJbmxp
bmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsUmlnaHRJbmNsdWRpbmdOZWdhdGl2ZU1hcmdpbiB7
IDAuZiB9OyAvLyBOb3RlIHRoYXQgd2l0aCBuZWdhdGl2ZSBob3Jpem9udGFsIG1hcmdpbiB2YWx1
ZSwgY29udGVudExvZ2ljYWxMZWZ0ICsgY29udGVudExvZ2ljYWxXaWR0aCBpcyBub3QgbmVjZXNz
YXJpbHkgY29udGVudExvZ2ljYWxSaWdodC4KKyAgICAgICAgY29uc3QgTGluZTo6UnVuTGlzdCYg
cnVuczsKKworICAgICAgICBzdHJ1Y3QgQ29udGVudEdlb21ldHJ5IHsKKyAgICAgICAgICAgIElu
bGluZUxheW91dFVuaXQgbG9naWNhbExlZnQgeyAwLmYgfTsKKyAgICAgICAgICAgIElubGluZUxh
eW91dFVuaXQgbG9naWNhbFdpZHRoIHsgMC5mIH07CisgICAgICAgICAgICBJbmxpbmVMYXlvdXRV
bml0IGxvZ2ljYWxSaWdodEluY2x1ZGluZ05lZ2F0aXZlTWFyZ2luIHsgMC5mIH07IC8vIE5vdGUg
dGhhdCB3aXRoIG5lZ2F0aXZlIGhvcml6b250YWwgbWFyZ2luIHZhbHVlLCBjb250ZW50TG9naWNh
bExlZnQgKyBjb250ZW50TG9naWNhbFdpZHRoIGlzIG5vdCBuZWNlc3NhcmlseSBjb250ZW50TG9n
aWNhbFJpZ2h0LgorICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB0
cmFpbGluZ092ZXJmbG93aW5nQ29udGVudFdpZHRoIHsgfTsKKyAgICAgICAgfTsKKyAgICAgICAg
Q29udGVudEdlb21ldHJ5IGNvbnRlbnRHZW9tZXRyeTsKKworICAgICAgICBzdHJ1Y3QgTGluZUdl
b21ldHJ5IHsKKyAgICAgICAgICAgIElubGluZUxheW91dFBvaW50IGxvZ2ljYWxUb3BMZWZ0Owor
ICAgICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGggeyAwLmYgfTsKKyAgICAg
ICAgICAgIElubGluZUxheW91dFVuaXQgaW5pdGlhbExvZ2ljYWxMZWZ0SW5jbHVkaW5nSW50cnVz
aXZlRmxvYXRzIHsgMC5mIH07CisgICAgICAgIH07CisgICAgICAgIExpbmVHZW9tZXRyeSBsaW5l
R2VvbWV0cnk7CisKICAgICAgICAgc3RydWN0IEhhbmdpbmdDb250ZW50IHsKICAgICAgICAgICAg
IGJvb2wgc2hvdWxkQ29udHJpYnV0ZVRvU2Nyb2xsYWJsZU92ZXJmbG93IHsgZmFsc2UgfTsKLSAg
ICAgICAgICAgIElubGluZUxheW91dFVuaXQgd2lkdGggeyAwLmYgfTsKKyAgICAgICAgICAgIElu
bGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoIHsgMC5mIH07CiAgICAgICAgIH07CiAgICAgICAg
IEhhbmdpbmdDb250ZW50IGhhbmdpbmdDb250ZW50OwotICAgICAgICBlbnVtIGNsYXNzIEZpcnN0
Rm9ybWF0dGVkTGluZSA6IHVpbnQ4X3QgewotICAgICAgICAgICAgTm8sCi0gICAgICAgICAgICBX
aXRoaW5JRkMsCi0gICAgICAgICAgICBXaXRoaW5CRkMKKworICAgICAgICBzdHJ1Y3QgRGlyZWN0
aW9uYWxpdHkgeworICAgICAgICAgICAgVmVjdG9yPGludDMyX3Q+IHZpc3VhbE9yZGVyTGlzdDsK
KyAgICAgICAgICAgIFRleHREaXJlY3Rpb24gaW5saW5lQmFzZURpcmVjdGlvbiB7IFRleHREaXJl
Y3Rpb246OkxUUiB9OwogICAgICAgICB9OwotICAgICAgICBGaXJzdEZvcm1hdHRlZExpbmUgaXNG
aXJzdEZvcm1hdHRlZExpbmUgeyBGaXJzdEZvcm1hdHRlZExpbmU6OldpdGhpbklGQyB9OwotICAg
ICAgICBib29sIGlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCB7IHRydWUgfTsKKyAgICAgICAg
RGlyZWN0aW9uYWxpdHkgZGlyZWN0aW9uYWxpdHk7CisKKyAgICAgICAgc3RydWN0IEZsb2F0Q29u
dGVudCB7CisgICAgICAgICAgICBQbGFjZWRGbG9hdExpc3QgcGxhY2VkRmxvYXRzOworICAgICAg
ICAgICAgU3VzcGVuZGVkRmxvYXRMaXN0IHN1c3BlbmRlZEZsb2F0czsKKyAgICAgICAgICAgIGJv
b2wgaGFzSW50cnVzaXZlRmxvYXQgeyBmYWxzZSB9OworICAgICAgICB9OworICAgICAgICBGbG9h
dENvbnRlbnQgZmxvYXRDb250ZW50OworCisgICAgICAgIHN0cnVjdCBJc0ZpcnN0TGFzdCB7Cisg
ICAgICAgICAgICBlbnVtIGNsYXNzIEZpcnN0Rm9ybWF0dGVkTGluZSA6IHVpbnQ4X3QgeworICAg
ICAgICAgICAgICAgIE5vLAorICAgICAgICAgICAgICAgIFdpdGhpbklGQywKKyAgICAgICAgICAg
ICAgICBXaXRoaW5CRkMKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBGaXJzdEZvcm1hdHRl
ZExpbmUgaXNGaXJzdEZvcm1hdHRlZExpbmUgeyBGaXJzdEZvcm1hdHRlZExpbmU6OldpdGhpbklG
QyB9OworICAgICAgICAgICAgYm9vbCBpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQgeyB0cnVl
IH07CisgICAgICAgIH07CisgICAgICAgIElzRmlyc3RMYXN0IGlzRmlyc3RMYXN0OworICAgICAg
ICAvLyBNaXNjCiAgICAgICAgIHNpemVfdCBub25TcGFubmluZ0lubGluZUxldmVsQm94Q291bnQg
eyAwIH07Ci0gICAgICAgIFZlY3RvcjxpbnQzMl90PiB2aXN1YWxPcmRlckxpc3Q7Ci0gICAgICAg
IFRleHREaXJlY3Rpb24gaW5saW5lQmFzZURpcmVjdGlvbiB7IFRleHREaXJlY3Rpb246OkxUUiB9
OwotICAgICAgICBjb25zdCBMaW5lOjpSdW5MaXN0JiBydW5zOwogICAgIH07Ci0gICAgTGluZUNv
bnRlbnQgbGF5b3V0SW5saW5lQ29udGVudChjb25zdCBMaW5lSW5wdXQmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFByZXZpb3VzTGluZT4mKTsKKyAgICBMaW5lTGF5b3V0UmVzdWx0IGxheW91dElubGlu
ZUNvbnRlbnQoY29uc3QgTGluZUlucHV0JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxQcmV2aW91c0xp
bmU+Jik7CiAKICAgICBzdHJ1Y3QgSW50cmluc2ljQ29udGVudCB7CiAgICAgICAgIElubGluZUl0
ZW1SYW5nZSBjb21taXR0ZWRSYW5nZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcAppbmRleCBkOWIwYWQ4
NzdmMWIuLmFlMzZmNjZlNjEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcApAQCAtODksMTcgKzg5
LDE3IEBAIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6SW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdDCiB7CiB9CiAKLUlubGluZURpc3BsYXk6OkJv
eGVzIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YnVpbGQoY29uc3QgTGluZUJ1aWxkZXI6
OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgTGluZUJveCYgbGluZUJveCkKK0lubGlu
ZURpc3BsYXk6OkJveGVzIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YnVpbGQoY29uc3Qg
TGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmIGxpbmVMYXlvdXRSZXN1bHQsIGNvbnN0IExp
bmVCb3gmIGxpbmVCb3gpCiB7CiAgICAgYXV0byBib3hlcyA9IElubGluZURpc3BsYXk6OkJveGVz
IHsgfTsKLSAgICBib3hlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpbmVDb250ZW50LnJ1bnMu
c2l6ZSgpICsgbGluZUJveC5ub25Sb290SW5saW5lTGV2ZWxCb3hlcygpLnNpemUoKSArIDEpOwor
ICAgIGJveGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGluZUxheW91dFJlc3VsdC5ydW5zLnNp
emUoKSArIGxpbmVCb3gubm9uUm9vdElubGluZUxldmVsQm94ZXMoKS5zaXplKCkgKyAxKTsKIAot
ICAgIGF1dG8gY29udGVudE5lZWRzQmlkaVJlb3JkZXJpbmcgPSAhbGluZUNvbnRlbnQudmlzdWFs
T3JkZXJMaXN0LmlzRW1wdHkoKTsKKyAgICBhdXRvIGNvbnRlbnROZWVkc0JpZGlSZW9yZGVyaW5n
ID0gIWxpbmVMYXlvdXRSZXN1bHQuZGlyZWN0aW9uYWxpdHkudmlzdWFsT3JkZXJMaXN0LmlzRW1w
dHkoKTsKICAgICBpZiAoY29udGVudE5lZWRzQmlkaVJlb3JkZXJpbmcpCi0gICAgICAgIHByb2Nl
c3NCaWRpQ29udGVudChsaW5lQ29udGVudCwgbGluZUJveCwgYm94ZXMpOworICAgICAgICBwcm9j
ZXNzQmlkaUNvbnRlbnQobGluZUxheW91dFJlc3VsdCwgbGluZUJveCwgYm94ZXMpOwogICAgIGVs
c2UKLSAgICAgICAgcHJvY2Vzc05vbkJpZGlDb250ZW50KGxpbmVDb250ZW50LCBsaW5lQm94LCBi
b3hlcyk7Ci0gICAgcHJvY2Vzc0Zsb2F0Qm94ZXMobGluZUNvbnRlbnQpOworICAgICAgICBwcm9j
ZXNzTm9uQmlkaUNvbnRlbnQobGluZUxheW91dFJlc3VsdCwgbGluZUJveCwgYm94ZXMpOworICAg
IHByb2Nlc3NGbG9hdEJveGVzKGxpbmVMYXlvdXRSZXN1bHQpOwogCiAgICAgY29sbGVjdElua092
ZXJmbG93Rm9yVGV4dERlY29yYXRpb25zKGJveGVzKTsKICAgICBjb2xsZWN0SW5rT3ZlcmZsb3dG
b3JJbmxpbmVCb3hlcyhib3hlcyk7CkBAIC00MzUsMjAgKzQzNSwyMCBAQCB2b2lkIElubGluZURp
c3BsYXlDb250ZW50QnVpbGRlcjo6YXBwZW5kSW5saW5lRGlzcGxheUJveEF0QmlkaUJvdW5kYXJ5
KGNvbnN0IEJveAogICAgIH0pOwogfQogCi12b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRl
cjo6cHJvY2Vzc05vbkJpZGlDb250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYg
bGluZUNvbnRlbnQsIGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsIElubGluZURpc3BsYXk6OkJveGVz
JiBib3hlcykKK3ZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzTm9uQmlk
aUNvbnRlbnQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmIGxpbmVMYXlvdXRS
ZXN1bHQsIGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsIElubGluZURpc3BsYXk6OkJveGVzJiBib3hl
cykKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgYXV0byBoYXNDb250ZW50ID0gZmFsc2U7Ci0gICAg
Zm9yIChhdXRvJiBsaW5lUnVuIDogbGluZUNvbnRlbnQucnVucykKKyAgICBmb3IgKGF1dG8mIGxp
bmVSdW4gOiBsaW5lTGF5b3V0UmVzdWx0LnJ1bnMpCiAgICAgICAgIGhhc0NvbnRlbnQgPSBoYXND
b250ZW50IHx8IGxpbmVSdW4uaXNDb250ZW50ZnVsKCk7Ci0gICAgQVNTRVJUKGxpbmVDb250ZW50
LmlubGluZUJhc2VEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSIHx8ICFoYXNDb250ZW50
KTsKKyAgICBBU1NFUlQobGluZUxheW91dFJlc3VsdC5kaXJlY3Rpb25hbGl0eS5pbmxpbmVCYXNl
RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiB8fCAhaGFzQ29udGVudCk7CiAjZW5kaWYK
ICAgICBhdXRvIHdyaXRpbmdNb2RlID0gcm9vdCgpLnN0eWxlKCkud3JpdGluZ01vZGUoKTsKICAg
ICBhdXRvIGNvbnRlbnRTdGFydEluVmlzdWFsT3JkZXIgPSBtX2Rpc3BsYXlMaW5lLnRvcExlZnQo
KTsKIAogICAgIGFwcGVuZFJvb3RJbmxpbmVCb3hEaXNwbGF5Qm94KGZsaXBSb290SW5saW5lQm94
UmVjdFRvVmlzdWFsRm9yV3JpdGluZ01vZGUobGluZUJveC5sb2dpY2FsUmVjdEZvclJvb3RJbmxp
bmVCb3goKSwgd3JpdGluZ01vZGUpLCBsaW5lQm94LnJvb3RJbmxpbmVCb3goKS5oYXNDb250ZW50
KCksIGJveGVzKTsKIAotICAgIGZvciAoYXV0byYgbGluZVJ1biA6IGxpbmVDb250ZW50LnJ1bnMp
IHsKKyAgICBmb3IgKGF1dG8mIGxpbmVSdW4gOiBsaW5lTGF5b3V0UmVzdWx0LnJ1bnMpIHsKICAg
ICAgICAgYXV0byYgbGF5b3V0Qm94ID0gbGluZVJ1bi5sYXlvdXRCb3goKTsKIAogICAgICAgICBh
dXRvIHZpc3VhbFJlY3RSZWxhdGl2ZVRvUm9vdCA9IFsmXShhdXRvIGxvZ2ljYWxSZWN0KSB7CkBA
IC02NTUsOSArNjU1LDkgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmFkanVz
dFZpc3VhbEdlb21ldHJ5Rm9yRGlzcGxheUJveChzaXplX3QgZGlzcGwKICAgICAgICAgZGlzcGxh
eUJveC5zZXRIYXNDb250ZW50KCk7CiB9CiAKLXZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyOjpwcm9jZXNzQmlkaUNvbnRlbnQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBs
aW5lQ29udGVudCwgY29uc3QgTGluZUJveCYgbGluZUJveCwgSW5saW5lRGlzcGxheTo6Qm94ZXMm
IGJveGVzKQordm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NCaWRpQ29u
dGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUxheW91dFJlc3VsdCYgbGluZUxheW91dFJlc3Vs
dCwgY29uc3QgTGluZUJveCYgbGluZUJveCwgSW5saW5lRGlzcGxheTo6Qm94ZXMmIGJveGVzKQog
ewotICAgIEFTU0VSVChsaW5lQ29udGVudC52aXN1YWxPcmRlckxpc3Quc2l6ZSgpIDw9IGxpbmVD
b250ZW50LnJ1bnMuc2l6ZSgpKTsKKyAgICBBU1NFUlQobGluZUxheW91dFJlc3VsdC5kaXJlY3Rp
b25hbGl0eS52aXN1YWxPcmRlckxpc3Quc2l6ZSgpIDw9IGxpbmVMYXlvdXRSZXN1bHQucnVucy5z
aXplKCkpOwogCiAgICAgQW5jZXN0b3JTdGFjayBhbmNlc3RvclN0YWNrOwogICAgIGF1dG8gZGlz
cGxheUJveFRyZWUgPSBEaXNwbGF5Qm94VHJlZSB7IH07CkBAIC02NzcsOCArNjc3LDggQEAgdm9p
ZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NCaWRpQ29udGVudChjb25zdCBM
aW5lQnVpbGRlcjo6TGluZUNvbnQKICAgICAgICAgYXBwZW5kUm9vdElubGluZUJveERpc3BsYXlC
b3goZmxpcFJvb3RJbmxpbmVCb3hSZWN0VG9WaXN1YWxGb3JXcml0aW5nTW9kZShyb290SW5saW5l
Qm94Vmlkc3VhbFJlY3RJbklubGluZURpcmVjdGlvbiwgcm9vdCgpLnN0eWxlKCkud3JpdGluZ01v
ZGUoKSksIGxpbmVCb3gucm9vdElubGluZUJveCgpLmhhc0NvbnRlbnQoKSwgYm94ZXMpOwogCiAg
ICAgICAgIGF1dG8gY29udGVudFJpZ2h0SW5JbmxpbmVEaXJlY3Rpb25WaXN1YWxPcmRlciA9IGNv
bnRlbnRTdGFydEluSW5saW5lRGlyZWN0aW9uVmlzdWFsT3JkZXI7Ci0gICAgICAgIGF1dG8mIHJ1
bnMgPSBsaW5lQ29udGVudC5ydW5zOwotICAgICAgICBmb3IgKGF1dG8gdmlzdWFsT3JkZXIgOiBs
aW5lQ29udGVudC52aXN1YWxPcmRlckxpc3QpIHsKKyAgICAgICAgYXV0byYgcnVucyA9IGxpbmVM
YXlvdXRSZXN1bHQucnVuczsKKyAgICAgICAgZm9yIChhdXRvIHZpc3VhbE9yZGVyIDogbGluZUxh
eW91dFJlc3VsdC5kaXJlY3Rpb25hbGl0eS52aXN1YWxPcmRlckxpc3QpIHsKICAgICAgICAgICAg
IEFTU0VSVChydW5zW3Zpc3VhbE9yZGVyXS5iaWRpTGV2ZWwoKSAhPSBJbmxpbmVJdGVtOjpvcGFx
dWVCaWRpTGV2ZWwpOwogCiAgICAgICAgICAgICBhdXRvJiBsaW5lUnVuID0gcnVuc1t2aXN1YWxP
cmRlcl07CkBAIC04MDIsNyArODAyLDcgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXI6OnByb2Nlc3NCaWRpQ29udGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnQKICAgICBo
YW5kbGVJbmxpbmVCb3hlcygpOwogCiAgICAgYXV0byBoYW5kbGVUcmFpbGluZ09wZW5JbmxpbmVC
b3hlcyA9IFsmXSB7Ci0gICAgICAgIGZvciAoYXV0byYgbGluZVJ1biA6IG1ha2VSZXZlcnNlZFJh
bmdlKGxpbmVDb250ZW50LnJ1bnMpKSB7CisgICAgICAgIGZvciAoYXV0byYgbGluZVJ1biA6IG1h
a2VSZXZlcnNlZFJhbmdlKGxpbmVMYXlvdXRSZXN1bHQucnVucykpIHsKICAgICAgICAgICAgIGlm
ICghbGluZVJ1bi5pc0lubGluZUJveFN0YXJ0KCkgfHwgbGluZVJ1bi5iaWRpTGV2ZWwoKSAhPSBJ
bmxpbmVJdGVtOjpvcGFxdWVCaWRpTGV2ZWwpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAvLyBUaGVzZSBhcmUgdHJhaWxpbmcgaW5saW5lIGJveCBzdGFydCBydW5zICh3aXRo
b3V0IHRoZSBjbG9zaW5nIGlubGluZSBib3ggZW5kIDxzcGFuPiA8LWxpbmUgYnJlYWtzIGhlcmU8
L3NwYW4+KS4KQEAgLTgyMCw3ICs4MjAsNyBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVp
bGRlcjo6cHJvY2Vzc0JpZGlDb250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udAogICAg
IGhhbmRsZVRyYWlsaW5nT3BlbklubGluZUJveGVzKCk7CiB9CiAKLXZvaWQgSW5saW5lRGlzcGxh
eUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzRmxvYXRCb3hlcyhjb25zdCBMaW5lQnVpbGRlcjo6TGlu
ZUNvbnRlbnQmKQordm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NGbG9h
dEJveGVzKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lTGF5b3V0UmVzdWx0JikKIHsKICAgICAvLyBG
bG9hdCBib3hlcyBhcmUgbm90IHBhcnQgb2YgdGhlIGlubGluZSBjb250ZW50IHNvIHdlIGRvbid0
IGNvbnN0cnVjdCBpbmxpbmUgZGlzcGxheSBib3hlcyBmb3IgdGhlbS4KICAgICAvLyBIb3dldmVy
IGJveCBnZW9tZXRyeSBzdGlsbCBuZWVkcyBmbGlwcGluZyBmcm9tIGxvZ2ljYWwgdG8gdmlzdWFs
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxh
eUNvbnRlbnRCdWlsZGVyLmgKaW5kZXggZGM4ZDcyMTcwZTUyLi4zZjY5NjA4ZDY0N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rp
c3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29u
dGVudEJ1aWxkZXIuaApAQCAtNDQsMTUgKzQ0LDE1IEBAIGNsYXNzIElubGluZURpc3BsYXlDb250
ZW50QnVpbGRlciB7CiBwdWJsaWM6CiAgICAgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyKGNv
bnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiwgSW5saW5lRm9ybWF0dGluZ1N0YXRlJiwgY29u
c3QgSW5saW5lRGlzcGxheTo6TGluZSYsIHNpemVfdCBsaW5lSW5kZXgpOwogCi0gICAgSW5saW5l
RGlzcGxheTo6Qm94ZXMgYnVpbGQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiwgY29u
c3QgTGluZUJveCYpOworICAgIElubGluZURpc3BsYXk6OkJveGVzIGJ1aWxkKGNvbnN0IExpbmVC
dWlsZGVyOjpMaW5lTGF5b3V0UmVzdWx0JiwgY29uc3QgTGluZUJveCYpOwogCiBwcml2YXRlOgot
ICAgIHZvaWQgcHJvY2Vzc05vbkJpZGlDb250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29u
dGVudCYsIGNvbnN0IExpbmVCb3gmLCBJbmxpbmVEaXNwbGF5OjpCb3hlcyYpOwotICAgIHZvaWQg
cHJvY2Vzc0JpZGlDb250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0
IExpbmVCb3gmLCBJbmxpbmVEaXNwbGF5OjpCb3hlcyYpOwotICAgIHZvaWQgcHJvY2Vzc0Zsb2F0
Qm94ZXMoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50Jik7CisgICAgdm9pZCBwcm9jZXNz
Tm9uQmlkaUNvbnRlbnQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmLCBjb25z
dCBMaW5lQm94JiwgSW5saW5lRGlzcGxheTo6Qm94ZXMmKTsKKyAgICB2b2lkIHByb2Nlc3NCaWRp
Q29udGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUxheW91dFJlc3VsdCYsIGNvbnN0IExpbmVC
b3gmLCBJbmxpbmVEaXNwbGF5OjpCb3hlcyYpOworICAgIHZvaWQgcHJvY2Vzc0Zsb2F0Qm94ZXMo
Y29uc3QgTGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmKTsKICAgICB2b2lkIGNvbGxlY3RJ
bmtPdmVyZmxvd0ZvcklubGluZUJveGVzKElubGluZURpc3BsYXk6OkJveGVzJik7CiAgICAgdm9p
ZCBjb2xsZWN0SW5rT3ZlcmZsb3dGb3JUZXh0RGVjb3JhdGlvbnMoSW5saW5lRGlzcGxheTo6Qm94
ZXMmKTsKLSAgICB2b2lkIHRydW5jYXRlRm9yRWxsaXBzaXNQb2xpY3koTGluZUVuZGluZ0VsbGlw
c2lzUG9saWN5LCBjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmLCBJbmxpbmVEaXNwbGF5
OjpCb3hlcyYpOworICAgIHZvaWQgdHJ1bmNhdGVGb3JFbGxpcHNpc1BvbGljeShMaW5lRW5kaW5n
RWxsaXBzaXNQb2xpY3ksIGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lTGF5b3V0UmVzdWx0JiwgSW5s
aW5lRGlzcGxheTo6Qm94ZXMmKTsKIAogICAgIHZvaWQgYXBwZW5kVGV4dERpc3BsYXlCb3goY29u
c3QgTGluZTo6UnVuJiwgY29uc3QgSW5saW5lUmVjdCYsIElubGluZURpc3BsYXk6OkJveGVzJik7
CiAgICAgdm9pZCBhcHBlbmRTb2Z0TGluZUJyZWFrRGlzcGxheUJveChjb25zdCBMaW5lOjpSdW4m
LCBjb25zdCBJbmxpbmVSZWN0JiwgSW5saW5lRGlzcGxheTo6Qm94ZXMmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkv
SW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNw
cAppbmRleCAwNDYzMzAyM2JkMzcuLmNiNmZhM2E5ZjY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNw
bGF5TGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcApAQCAt
NTUsNyArNTUsNyBAQCBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OklubGluZURpc3BsYXlMaW5l
QnVpbGRlcihjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dAogewogfQogCi1JbmxpbmVEaXNw
bGF5TGluZUJ1aWxkZXI6OkVuY2xvc2luZ0xpbmVHZW9tZXRyeSBJbmxpbmVEaXNwbGF5TGluZUJ1
aWxkZXI6OmNvbGxlY3RFbmNsb3NpbmdMaW5lR2VvbWV0cnkoY29uc3QgTGluZUJ1aWxkZXI6Okxp
bmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgTGluZUJveCYgbGluZUJveCwgY29uc3QgSW5s
aW5lUmVjdCYgbGluZUJveFJlY3QpIGNvbnN0CitJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OkVu
Y2xvc2luZ0xpbmVHZW9tZXRyeSBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmNvbGxlY3RFbmNs
b3NpbmdMaW5lR2VvbWV0cnkoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmIGxp
bmVMYXlvdXRSZXN1bHQsIGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IElubGluZVJlY3Qm
IGxpbmVCb3hSZWN0KSBjb25zdAogewogICAgIGF1dG8mIHJvb3RJbmxpbmVCb3ggPSBsaW5lQm94
LnJvb3RJbmxpbmVCb3goKTsKICAgICBhdXRvIGluaXRpYWxFbmNsb3NpbmdUb3BBbmRCb3R0b20g
PSBbJl0oKSAtPiBzdGQ6OnR1cGxlPHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4sIHN0
ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4+ICB7CkBAIC03MSwxMSArNzEsMTEgQEAgSW5s
aW5lRGlzcGxheUxpbmVCdWlsZGVyOjpFbmNsb3NpbmdMaW5lR2VvbWV0cnkgSW5saW5lRGlzcGxh
eUxpbmVCdWlsZGVyOjpjb2xsZWMKICAgICAgICAgYXV0byByZWN0ID0gbGluZUJveFJlY3Q7CiAg
ICAgICAgIGF1dG8gcm9vdElubGluZUJveFdpZHRoID0gbGluZUJveC5sb2dpY2FsUmVjdEZvclJv
b3RJbmxpbmVCb3goKS53aWR0aCgpOwogICAgICAgICBhdXRvIGlzTGVmdFRvUmlnaHREaXJlY3Rp
b24gPSByb290KCkuc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7Ci0gICAgICAgIGlm
IChsaW5lQ29udGVudC5oYW5naW5nQ29udGVudC5zaG91bGRDb250cmlidXRlVG9TY3JvbGxhYmxl
T3ZlcmZsb3cpCi0gICAgICAgICAgICByZWN0LmV4cGFuZEhvcml6b250YWxseShsaW5lQ29udGVu
dC5oYW5naW5nQ29udGVudC53aWR0aCk7CisgICAgICAgIGlmIChsaW5lTGF5b3V0UmVzdWx0Lmhh
bmdpbmdDb250ZW50LnNob3VsZENvbnRyaWJ1dGVUb1Njcm9sbGFibGVPdmVyZmxvdykKKyAgICAg
ICAgICAgIHJlY3QuZXhwYW5kSG9yaXpvbnRhbGx5KGxpbmVMYXlvdXRSZXN1bHQuaGFuZ2luZ0Nv
bnRlbnQubG9naWNhbFdpZHRoKTsKICAgICAgICAgZWxzZSBpZiAoIWlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24pIHsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdG8gYmFsYW5jZSBoYW5naW5nIFJUTCB0
cmFpbGluZyBjb250ZW50LiBTZWUgTGluZUJveEJ1aWxkZXI6OmJ1aWxkLgotICAgICAgICAgICAg
cm9vdElubGluZUJveFdpZHRoIC09IGxpbmVDb250ZW50LmhhbmdpbmdDb250ZW50LndpZHRoOwor
ICAgICAgICAgICAgcm9vdElubGluZUJveFdpZHRoIC09IGxpbmVMYXlvdXRSZXN1bHQuaGFuZ2lu
Z0NvbnRlbnQubG9naWNhbFdpZHRoOwogICAgICAgICB9CiAgICAgICAgIGF1dG8gcm9vdElubGlu
ZUJveEhvcml6b250YWxPdmVyZmxvdyA9IHJvb3RJbmxpbmVCb3hXaWR0aCAtIHJlY3Qud2lkdGgo
KTsKICAgICAgICAgaWYgKHJvb3RJbmxpbmVCb3hIb3Jpem9udGFsT3ZlcmZsb3cgPiAwKQpAQCAt
MTIxLDEwICsxMjEsMTAgQEAgSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpFbmNsb3NpbmdMaW5l
R2VvbWV0cnkgSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpjb2xsZWMKICAgICByZXR1cm4geyB7
IGVuY2xvc2luZ1RvcC52YWx1ZV9vcihsaW5lQm94UmVjdC50b3AoKSksIGVuY2xvc2luZ0JvdHRv
bS52YWx1ZV9vcihsaW5lQm94UmVjdC50b3AoKSkgfSwgY29udGVudE92ZXJmbG93UmVjdCB9Owog
fQogCi1JbmxpbmVEaXNwbGF5OjpMaW5lIElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6YnVpbGQo
Y29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgTGluZUJv
eCYgbGluZUJveCwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50
cywgYm9vbCBsaW5lSXNGdWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24pIGNvbnN0CitJbmxp
bmVEaXNwbGF5OjpMaW5lIElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6YnVpbGQoY29uc3QgTGlu
ZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmIGxpbmVMYXlvdXRSZXN1bHQsIGNvbnN0IExpbmVC
b3gmIGxpbmVCb3gsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYgY29uc3RyYWlu
dHMsIGJvb2wgbGluZUlzRnVsbHlUcnVuY2F0ZWRJbkJsb2NrRGlyZWN0aW9uKSBjb25zdAogewog
ICAgIGF1dG8mIHJvb3RJbmxpbmVCb3ggPSBsaW5lQm94LnJvb3RJbmxpbmVCb3goKTsKLSAgICBh
dXRvIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24gPSBsaW5lQ29udGVudC5pbmxpbmVCYXNlRGlyZWN0
aW9uID09IFRleHREaXJlY3Rpb246OkxUUjsKKyAgICBhdXRvIGlzTGVmdFRvUmlnaHREaXJlY3Rp
b24gPSBsaW5lTGF5b3V0UmVzdWx0LmRpcmVjdGlvbmFsaXR5LmlubGluZUJhc2VEaXJlY3Rpb24g
PT0gVGV4dERpcmVjdGlvbjo6TFRSOwogICAgIGF1dG8gbGluZUJveExvZ2ljYWxSZWN0ID0gbGlu
ZUJveC5sb2dpY2FsUmVjdCgpOwogICAgIGF1dG8gbGluZUJveFZpc3VhbExlZnQgPSBpc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uCiAgICAgICAgID8gbGluZUJveExvZ2ljYWxSZWN0LmxlZnQoKQpAQCAt
MTMzLDEwICsxMzMsMTAgQEAgSW5saW5lRGlzcGxheTo6TGluZSBJbmxpbmVEaXNwbGF5TGluZUJ1
aWxkZXI6OmJ1aWxkKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGUKICAgICBhdXRvIHJvb3RJ
bmxpbmVCb3hSZWN0ID0gbGluZUJveC5sb2dpY2FsUmVjdEZvclJvb3RJbmxpbmVCb3goKTsKICAg
ICBhdXRvIGNvbnRlbnRWaXN1YWxPZmZzZXRJbklubGluZURpcmVjdGlvbiA9IGlzTGVmdFRvUmln
aHREaXJlY3Rpb24KICAgICAgICAgPyByb290SW5saW5lQm94UmVjdC5sZWZ0KCkKLSAgICAgICAg
OiBsaW5lQm94TG9naWNhbFJlY3Qud2lkdGgoKSAtIGxpbmVDb250ZW50LmNvbnRlbnRMb2dpY2Fs
UmlnaHRJbmNsdWRpbmdOZWdhdGl2ZU1hcmdpbjsgLy8gTm90ZSB0aGF0IHdpdGggaGFuZ2luZyBj
b250ZW50IGxpbmVDb250ZW50LmNvbnRlbnRMb2dpY2FsUmlnaHQgaXMgbm90IHRoZSBzYW1lIGFz
IHJvb3RMaW5lQm94UmVjdC5yaWdodCgpLgorICAgICAgICA6IGxpbmVCb3hMb2dpY2FsUmVjdC53
aWR0aCgpIC0gbGluZUxheW91dFJlc3VsdC5jb250ZW50R2VvbWV0cnkubG9naWNhbFJpZ2h0SW5j
bHVkaW5nTmVnYXRpdmVNYXJnaW47IC8vIE5vdGUgdGhhdCB3aXRoIGhhbmdpbmcgY29udGVudCBs
aW5lTGF5b3V0UmVzdWx0LmNvbnRlbnRHZW9tZXRyeS5sb2dpY2FsUmlnaHQgaXMgbm90IHRoZSBz
YW1lIGFzIHJvb3RMaW5lQm94UmVjdC5yaWdodCgpLgogCiAgICAgYXV0byBsaW5lQm94VmlzdWFs
UmVjdEluSW5saW5lRGlyZWN0aW9uID0gSW5saW5lUmVjdCB7IGxpbmVCb3hMb2dpY2FsUmVjdC50
b3AoKSwgbGluZUJveFZpc3VhbExlZnQsIGxpbmVCb3hMb2dpY2FsUmVjdC53aWR0aCgpLCBsaW5l
Qm94TG9naWNhbFJlY3QuaGVpZ2h0KCkgfTsKLSAgICBhdXRvIGVuY2xvc2luZ0xpbmVHZW9tZXRy
eSA9IGNvbGxlY3RFbmNsb3NpbmdMaW5lR2VvbWV0cnkobGluZUNvbnRlbnQsIGxpbmVCb3gsIGxp
bmVCb3hWaXN1YWxSZWN0SW5JbmxpbmVEaXJlY3Rpb24pOworICAgIGF1dG8gZW5jbG9zaW5nTGlu
ZUdlb21ldHJ5ID0gY29sbGVjdEVuY2xvc2luZ0xpbmVHZW9tZXRyeShsaW5lTGF5b3V0UmVzdWx0
LCBsaW5lQm94LCBsaW5lQm94VmlzdWFsUmVjdEluSW5saW5lRGlyZWN0aW9uKTsKIAogICAgIGF1
dG8gd3JpdGluZ01vZGUgPSByb290KCkuc3R5bGUoKS53cml0aW5nTW9kZSgpOwogICAgIHJldHVy
biBJbmxpbmVEaXNwbGF5OjpMaW5lIHsgbGluZUJveExvZ2ljYWxSZWN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lu
bGluZURpc3BsYXlMaW5lQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuaAppbmRl
eCBlZGE2OThiYmEyNGYuLjRjNTZjNzEzM2MyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGlu
ZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5oCkBAIC0zOCw3ICszOCw3
IEBAIGNsYXNzIElubGluZURpc3BsYXlMaW5lQnVpbGRlciB7CiBwdWJsaWM6CiAgICAgSW5saW5l
RGlzcGxheUxpbmVCdWlsZGVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7CiAKLSAg
ICBJbmxpbmVEaXNwbGF5OjpMaW5lIGJ1aWxkKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVu
dCYsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmLCBi
b29sIGxpbmVJc0Z1bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbikgY29uc3Q7CisgICAgSW5s
aW5lRGlzcGxheTo6TGluZSBidWlsZChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUxheW91dFJlc3Vs
dCYsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmLCBi
b29sIGxpbmVJc0Z1bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbikgY29uc3Q7CiAKICAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHRyYWlsaW5nRWxsaXBzaXNWaXN1YWxSZWN0
QWZ0ZXJUcnVuY2F0aW9uKExpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSwgY29uc3QgSW5saW5lRGlz
cGxheTo6TGluZSYsIElubGluZURpc3BsYXk6OkJveGVzJiwgYm9vbCBpc0xhc3RMaW5lV2l0aElu
bGluZUNvbnRlbnQpOwogCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIElubGlu
ZURpc3BsYXk6OkxpbmU6OkVuY2xvc2luZ1RvcEFuZEJvdHRvbSBlbmNsb3NpbmdUb3BBbmRCb3R0
b207CiAgICAgICAgIElubGluZVJlY3QgY29udGVudE92ZXJmbG93UmVjdDsKICAgICB9OwotICAg
IEVuY2xvc2luZ0xpbmVHZW9tZXRyeSBjb2xsZWN0RW5jbG9zaW5nTGluZUdlb21ldHJ5KGNvbnN0
IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBJbmxpbmVS
ZWN0JiBsaW5lQm94UmVjdCkgY29uc3Q7CisgICAgRW5jbG9zaW5nTGluZUdlb21ldHJ5IGNvbGxl
Y3RFbmNsb3NpbmdMaW5lR2VvbWV0cnkoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1
bHQmLCBjb25zdCBMaW5lQm94JiwgY29uc3QgSW5saW5lUmVjdCYgbGluZUJveFJlY3QpIGNvbnN0
OwogCiAgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsgfQogICAgIGNvbnN0
IEJveCYgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpOyB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466584</attachid>
            <date>2023-06-03 21:28:46 -0700</date>
            <delta_ts>2023-06-05 06:17:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-257680-20230603212845.patch</filename>
            <type>text/plain</type>
            <size>45423</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA0YjMxYWFlNDBhMWQ0YmQwNTQ2MzQ1NTE4YTZjMDZlODg0OGYxOGQ0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgMyBKdW4gMjAyMyAxNDoxNjo0NiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFtJRkNdIFJl
bmFtZSBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQgdG8gTGluZUxheW91dFJlc3VsdAogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NzY4MAoKUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCgpXaGlsZSB0aGlzIHN0cnVjdHVyZSBpbmRlZWQgc3RhcnRlZCBhcyBob2xk
aW5nIGNvbnRlbnQgKHJ1bnMgbW9zdGx5KSBvbiB0aGUgY3VycmVudCBsaW5lLCBvdmVyIHRoZSB5
ZWFycyBpdCBncmV3IGFuZCBub3cgaXQgY29udGFpbnMKYWxsIGtpbmRzIG9mIGluZm9ybWF0aW9u
IGFib3V0IHRoZSByZXN1bHQgb2YgdGhlIGxpbmUgbGF5b3V0LiBMZXQncyByZW5hbWUgaXQgdG8g
TGluZUxheW91dFJlc3VsdC4KClRoaXMgaXMgYWxzbyBpbiBwcmVwYXJhdGlvbiBmb3IgdHJhbnNm
b3JtaW5nIExpbmVCdWlsZGVyOjpjb21wdXRlZEludHJpbnNpY1dpZHRoIGludG8gcmVndWxhciBs
aW5lIGxheW91dC4KCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGlu
ZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZvckxpbmUpOgoqIFNvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0Lmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ0dlb21ldHJ5Ojpsb2dpY2FsVG9wRm9yTmV4dExpbmUgY29uc3QpOgoqIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdHZW9tZXRyeS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6TGlu
ZUJveEJ1aWxkZXI6OkxpbmVCb3hCdWlsZGVyKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveEJ1
aWxkZXI6OmJ1aWxkKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveEJ1aWxkZXI6OmNvbnN0cnVj
dElubGluZUxldmVsQm94ZXMpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6YWRq
dXN0SW5saW5lQm94SGVpZ2h0c0ZvckxpbmVCb3hDb250YWluSWZBcHBsaWNhYmxlKToKKFdlYkNv
cmU6OkxheW91dDo6TGluZUJveEJ1aWxkZXI6OmNvbXB1dGVMaW5lQm94R2VvbWV0cnkgY29uc3Qp
OgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6YWRqdXN0T3V0c2lkZUxpc3RNYXJr
ZXJzUG9zaXRpb24pOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmg6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hC
dWlsZGVyOjppc0ZpcnN0TGluZSBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWls
ZGVyOjppc0xhc3RMaW5lIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveEJ1aWxkZXI6
OmxpbmVMYXlvdXRSZXN1bHQgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRl
cjo6bGluZUNvbnRlbnQgY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKFdlYkNvcmU6
OkxheW91dDo6TGluZUJ1aWxkZXI6OmxheW91dElubGluZUNvbnRlbnQpOgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmg6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxh
eS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmJ1aWxkKToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
RGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzTm9uQmlkaUNvbnRlbnQpOgooV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NCaWRpQ29udGVudCk6
CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc0Zs
b2F0Qm94ZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmg6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5
TGluZUJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxk
ZXI6OmNvbGxlY3RFbmNsb3NpbmdMaW5lR2VvbWV0cnkgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmJ1aWxkIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlM
aW5lQnVpbGRlci5oOgotLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3Bw
ICAgICAgICB8IDI4ICsrKystLS0tCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmggICAgICAgICAgfCAgMiArLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnku
Y3BwICAgICAgIHwgMTIgKystLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnku
aCAgICAgICAgIHwgIDIgKy0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwICAg
ICAgICAgICB8IDMyICsrKystLS0tLQogLi4uL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5o
ICAgICAgICAgICAgIHwgMTAgKy0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcCAg
ICAgICAgICAgICAgfCAyNCArKystLS0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmgg
ICAgICAgICAgICAgICAgfCA3MCArKysrKysrKysrKystLS0tLS0tCiAuLi4vZGlzcGxheS9Jbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwICAgfCAzNiArKysrKy0tLS0tCiAuLi4vZGlzcGxh
eS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaCAgICAgfCAxMCArLS0KIC4uLi9kaXNwbGF5
L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAgICAgICB8IDE2ICsrLS0tCiAuLi4vaW5saW5l
L2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmggfCAgNCArLQogMTIgZmlsZXMgY2hh
bmdlZCwgMTMwIGluc2VydGlvbnMoKyksIDExNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggN2EwODJmNDM3NDQ0
Li45NDdjZGVmNzQxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5jcHAKQEAgLTI3NywxNiArMjc3LDE2IEBAIElubGluZUxheW91dFJlc3VsdCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChjb25zdCBJbmxpbmVJdGVtcyYgaW5s
aW5lCiAgICAgd2hpbGUgKHRydWUpIHsKIAogICAgICAgICBhdXRvIGxpbmVJbml0aWFsUmVjdCA9
IElubGluZVJlY3QgeyBsaW5lTG9naWNhbFRvcCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxv
Z2ljYWxMZWZ0LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbFdpZHRoLCBmb3JtYXR0
aW5nR2VvbWV0cnkoKS5pbml0aWFsTGluZUhlaWdodCghcHJldmlvdXNMaW5lLmhhc192YWx1ZSgp
KSB9OwotICAgICAgICBhdXRvIGxpbmVDb250ZW50ID0gbGluZUJ1aWxkZXIubGF5b3V0SW5saW5l
Q29udGVudCh7IHsgbGVhZGluZ0lubGluZUl0ZW1Qb3NpdGlvbiwgbmVlZHNMYXlvdXRSYW5nZS5l
bmQgfSwgbGluZUluaXRpYWxSZWN0IH0sIHByZXZpb3VzTGluZSk7CisgICAgICAgIGF1dG8gbGlu
ZUxheW91dFJlc3VsdCA9IGxpbmVCdWlsZGVyLmxheW91dElubGluZUNvbnRlbnQoeyB7IGxlYWRp
bmdJbmxpbmVJdGVtUG9zaXRpb24sIG5lZWRzTGF5b3V0UmFuZ2UuZW5kIH0sIGxpbmVJbml0aWFs
UmVjdCB9LCBwcmV2aW91c0xpbmUpOwogCiAgICAgICAgIGF1dG8gbGluZUluZGV4ID0gcHJldmlv
dXNMaW5lID8gKHByZXZpb3VzTGluZS0+bGluZUluZGV4ICsgMSkgOiAwbHU7Ci0gICAgICAgIGF1
dG8gbGluZUxvZ2ljYWxSZWN0ID0gY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKGxpbmVJbmRl
eCwgbGluZUNvbnRlbnQsIGNvbnN0cmFpbnRzLCBpbmxpbmVMYXlvdXRTdGF0ZSwgbGF5b3V0UmVz
dWx0LmRpc3BsYXlDb250ZW50KTsKLSAgICAgICAgaWYgKGxpbmVDb250ZW50LmlzTGFzdExpbmVX
aXRoSW5saW5lQ29udGVudCkKLSAgICAgICAgICAgIGlubGluZUxheW91dFN0YXRlLnNldENsZWFy
R2FwQWZ0ZXJMYXN0TGluZShmb3JtYXR0aW5nR2VvbWV0cnkoKS5sb2dpY2FsVG9wRm9yTmV4dExp
bmUobGluZUNvbnRlbnQsIGxpbmVMb2dpY2FsUmVjdCwgZmxvYXRpbmdDb250ZXh0KSAtIGxpbmVM
b2dpY2FsUmVjdC5ib3R0b20oKSk7CisgICAgICAgIGF1dG8gbGluZUxvZ2ljYWxSZWN0ID0gY3Jl
YXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKGxpbmVJbmRleCwgbGluZUxheW91dFJlc3VsdCwgY29u
c3RyYWludHMsIGlubGluZUxheW91dFN0YXRlLCBsYXlvdXRSZXN1bHQuZGlzcGxheUNvbnRlbnQp
OworICAgICAgICBpZiAobGluZUxheW91dFJlc3VsdC5pc0ZpcnN0TGFzdC5pc0xhc3RMaW5lV2l0
aElubGluZUNvbnRlbnQpCisgICAgICAgICAgICBpbmxpbmVMYXlvdXRTdGF0ZS5zZXRDbGVhckdh
cEFmdGVyTGFzdExpbmUoZm9ybWF0dGluZ0dlb21ldHJ5KCkubG9naWNhbFRvcEZvck5leHRMaW5l
KGxpbmVMYXlvdXRSZXN1bHQsIGxpbmVMb2dpY2FsUmVjdCwgZmxvYXRpbmdDb250ZXh0KSAtIGxp
bmVMb2dpY2FsUmVjdC5ib3R0b20oKSk7CiAKLSAgICAgICAgYXV0byBsaW5lQ29udGVudEVuZCA9
IGxpbmVDb250ZW50LmNvbW1pdHRlZFJhbmdlLmVuZDsKKyAgICAgICAgYXV0byBsaW5lQ29udGVu
dEVuZCA9IGxpbmVMYXlvdXRSZXN1bHQuaW5saW5lSXRlbVJhbmdlLmVuZDsKICAgICAgICAgbGVh
ZGluZ0lubGluZUl0ZW1Qb3NpdGlvbiA9IGxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb25Gb3JOZXh0
TGluZShsaW5lQ29udGVudEVuZCwgcHJldmlvdXNMaW5lRW5kLCBuZWVkc0xheW91dFJhbmdlLmVu
ZCk7Ci0gICAgICAgIGF1dG8gaXNMYXN0TGluZSA9IGxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb24g
PT0gbmVlZHNMYXlvdXRSYW5nZS5lbmQgJiYgbGluZUNvbnRlbnQuc3VzcGVuZGVkRmxvYXRzLmlz
RW1wdHkoKTsKKyAgICAgICAgYXV0byBpc0xhc3RMaW5lID0gbGVhZGluZ0lubGluZUl0ZW1Qb3Np
dGlvbiA9PSBuZWVkc0xheW91dFJhbmdlLmVuZCAmJiBsaW5lTGF5b3V0UmVzdWx0LmZsb2F0Q29u
dGVudC5zdXNwZW5kZWRGbG9hdHMuaXNFbXB0eSgpOwogICAgICAgICBpZiAoaXNMYXN0TGluZSkg
ewogICAgICAgICAgICAgbGF5b3V0UmVzdWx0LnJhbmdlID0gIWlzUGFydGlhbExheW91dCA/IElu
bGluZUxheW91dFJlc3VsdDo6UmFuZ2U6OkZ1bGwgOiBJbmxpbmVMYXlvdXRSZXN1bHQ6OlJhbmdl
OjpGdWxsRnJvbURhbWFnZTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjk2LDggKzI5Niw4IEBA
IElubGluZUxheW91dFJlc3VsdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChj
b25zdCBJbmxpbmVJdGVtcyYgaW5saW5lCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
Ci0gICAgICAgIGxpbmVMb2dpY2FsVG9wID0gZm9ybWF0dGluZ0dlb21ldHJ5KCkubG9naWNhbFRv
cEZvck5leHRMaW5lKGxpbmVDb250ZW50LCBsaW5lTG9naWNhbFJlY3QsIGZsb2F0aW5nQ29udGV4
dCk7Ci0gICAgICAgIHByZXZpb3VzTGluZSA9IFByZXZpb3VzTGluZSB7IGxpbmVJbmRleCwgbGlu
ZUNvbnRlbnQudHJhaWxpbmdPdmVyZmxvd2luZ0NvbnRlbnRXaWR0aCwgIWxpbmVDb250ZW50LnJ1
bnMuaXNFbXB0eSgpICYmIGxpbmVDb250ZW50LnJ1bnMubGFzdCgpLmlzTGluZUJyZWFrKCksIGxp
bmVDb250ZW50LmlubGluZUJhc2VEaXJlY3Rpb24sIFdURk1vdmUobGluZUNvbnRlbnQuc3VzcGVu
ZGVkRmxvYXRzKSB9OworICAgICAgICBsaW5lTG9naWNhbFRvcCA9IGZvcm1hdHRpbmdHZW9tZXRy
eSgpLmxvZ2ljYWxUb3BGb3JOZXh0TGluZShsaW5lTGF5b3V0UmVzdWx0LCBsaW5lTG9naWNhbFJl
Y3QsIGZsb2F0aW5nQ29udGV4dCk7CisgICAgICAgIHByZXZpb3VzTGluZSA9IFByZXZpb3VzTGlu
ZSB7IGxpbmVJbmRleCwgbGluZUxheW91dFJlc3VsdC5jb250ZW50R2VvbWV0cnkudHJhaWxpbmdP
dmVyZmxvd2luZ0NvbnRlbnRXaWR0aCwgIWxpbmVMYXlvdXRSZXN1bHQuaW5saW5lQ29udGVudC5p
c0VtcHR5KCkgJiYgbGluZUxheW91dFJlc3VsdC5pbmxpbmVDb250ZW50Lmxhc3QoKS5pc0xpbmVC
cmVhaygpLCBsaW5lTGF5b3V0UmVzdWx0LmRpcmVjdGlvbmFsaXR5LmlubGluZUJhc2VEaXJlY3Rp
b24sIFdURk1vdmUobGluZUxheW91dFJlc3VsdC5mbG9hdENvbnRlbnQuc3VzcGVuZGVkRmxvYXRz
KSB9OwogICAgICAgICBwcmV2aW91c0xpbmVFbmQgPSBsaW5lQ29udGVudEVuZDsKICAgICB9CiAg
ICAgcmV0dXJuIGxheW91dFJlc3VsdDsKQEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgTGluZUVu
ZGluZ0VsbGlwc2lzUG9saWN5IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeShjb25zdCBSZW5kZXJT
dHlsZSYgcm9vdAogICAgIHJldHVybiBMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6Ok5vOwogfQog
Ci1JbmxpbmVSZWN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVu
dEZvckxpbmUoc2l6ZV90IGxpbmVJbmRleCwgY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50
JiBsaW5lQ29udGVudCwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiBjb25zdHJh
aW50cywgY29uc3QgSW5saW5lTGF5b3V0U3RhdGUmIGlubGluZUxheW91dFN0YXRlLCBJbmxpbmVE
aXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29udGVudCkKK0lubGluZVJlY3QgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZShzaXplX3QgbGluZUluZGV4
LCBjb25zdCBMaW5lQnVpbGRlcjo6TGluZUxheW91dFJlc3VsdCYgbGluZUxheW91dFJlc3VsdCwg
Y29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50cywgY29uc3QgSW5s
aW5lTGF5b3V0U3RhdGUmIGlubGluZUxheW91dFN0YXRlLCBJbmxpbmVEaXNwbGF5OjpDb250ZW50
JiBkaXNwbGF5Q29udGVudCkKIHsKICAgICBhdXRvIG51bWJlck9mVmlzaWJsZUxpbmVzQWxsb3dl
ZCA9IFsmXSAoKSAtPiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gewogICAgICAgICBpZiAoYXV0byBs
aW5lQ2xhbXAgPSBpbmxpbmVMYXlvdXRTdGF0ZS5wYXJlbnRCbG9ja0xheW91dFN0YXRlKCkubGlu
ZUNsYW1wKCkpCkBAIC01NjEsMTYgKzU2MSwxNiBAQCBJbmxpbmVSZWN0IElubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZvckxpbmUoc2l6ZV90IGxpbmVJbmRleAog
CiAgICAgYXV0byBlbGxpcHNpc1BvbGljeSA9IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeShyb290
KCkuc3R5bGUoKSwgbGluZUluZGV4LCBudW1iZXJPZlZpc2libGVMaW5lc0FsbG93ZWQpOwogICAg
IGF1dG8gbGluZUlzRnVsbHlUcnVuY2F0ZWRJbkJsb2NrRGlyZWN0aW9uID0gbnVtYmVyT2ZWaXNp
YmxlTGluZXNBbGxvd2VkICYmIGxpbmVJbmRleCArIDEgPiAqbnVtYmVyT2ZWaXNpYmxlTGluZXNB
bGxvd2VkOwotICAgIGF1dG8gbGluZUJveCA9IExpbmVCb3hCdWlsZGVyIHsgKnRoaXMsIGlubGlu
ZUxheW91dFN0YXRlLCBsaW5lQ29udGVudCB9LmJ1aWxkKGxpbmVJbmRleCk7Ci0gICAgYXV0byBk
aXNwbGF5TGluZSA9IElubGluZURpc3BsYXlMaW5lQnVpbGRlciB7ICp0aGlzIH0uYnVpbGQobGlu
ZUNvbnRlbnQsIGxpbmVCb3gsIGNvbnN0cmFpbnRzLCBsaW5lSXNGdWxseVRydW5jYXRlZEluQmxv
Y2tEaXJlY3Rpb24pOwotICAgIGF1dG8gYm94ZXMgPSBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXIgeyAqdGhpcywgZm9ybWF0dGluZ1N0YXRlKCksIGRpc3BsYXlMaW5lLCBsaW5lSW5kZXggfS5i
dWlsZChsaW5lQ29udGVudCwgbGluZUJveCk7Ci0gICAgaWYgKGF1dG8gZWxsaXBzaXNSZWN0ID0g
SW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjp0cmFpbGluZ0VsbGlwc2lzVmlzdWFsUmVjdEFmdGVy
VHJ1bmNhdGlvbihlbGxpcHNpc1BvbGljeSwgZGlzcGxheUxpbmUsIGJveGVzLCBsaW5lQ29udGVu
dC5pc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpKQorICAgIGF1dG8gbGluZUJveCA9IExpbmVC
b3hCdWlsZGVyIHsgKnRoaXMsIGlubGluZUxheW91dFN0YXRlLCBsaW5lTGF5b3V0UmVzdWx0IH0u
YnVpbGQobGluZUluZGV4KTsKKyAgICBhdXRvIGRpc3BsYXlMaW5lID0gSW5saW5lRGlzcGxheUxp
bmVCdWlsZGVyIHsgKnRoaXMgfS5idWlsZChsaW5lTGF5b3V0UmVzdWx0LCBsaW5lQm94LCBjb25z
dHJhaW50cywgbGluZUlzRnVsbHlUcnVuY2F0ZWRJbkJsb2NrRGlyZWN0aW9uKTsKKyAgICBhdXRv
IGJveGVzID0gSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyIHsgKnRoaXMsIGZvcm1hdHRpbmdT
dGF0ZSgpLCBkaXNwbGF5TGluZSwgbGluZUluZGV4IH0uYnVpbGQobGluZUxheW91dFJlc3VsdCwg
bGluZUJveCk7CisgICAgaWYgKGF1dG8gZWxsaXBzaXNSZWN0ID0gSW5saW5lRGlzcGxheUxpbmVC
dWlsZGVyOjp0cmFpbGluZ0VsbGlwc2lzVmlzdWFsUmVjdEFmdGVyVHJ1bmNhdGlvbihlbGxpcHNp
c1BvbGljeSwgZGlzcGxheUxpbmUsIGJveGVzLCBsaW5lTGF5b3V0UmVzdWx0LmlzRmlyc3RMYXN0
LmlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCkpCiAgICAgICAgIGRpc3BsYXlMaW5lLnNldEVs
bGlwc2lzVmlzdWFsUmVjdCgqZWxsaXBzaXNSZWN0KTsKIAogICAgIGRpc3BsYXlDb250ZW50LmJv
eGVzLmFwcGVuZFZlY3RvcihXVEZNb3ZlKGJveGVzKSk7CiAgICAgZGlzcGxheUNvbnRlbnQubGlu
ZXMuYXBwZW5kKGRpc3BsYXlMaW5lKTsKICAgICBhdXRvIHVwZGF0ZUJveEdlb21ldHJ5Rm9yUGxh
Y2VkRmxvYXRzID0gWyZdIHsKLSAgICAgICAgZm9yIChhdXRvJiBmbG9hdEl0ZW0gOiBsaW5lQ29u
dGVudC5wbGFjZWRGbG9hdHMpIHsKKyAgICAgICAgZm9yIChhdXRvJiBmbG9hdEl0ZW0gOiBsaW5l
TGF5b3V0UmVzdWx0LmZsb2F0Q29udGVudC5wbGFjZWRGbG9hdHMpIHsKICAgICAgICAgICAgIGlm
ICghZmxvYXRJdGVtLmxheW91dEJveCgpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBiZSBwbGFjaW5nIGlu
dHJ1c2l2ZSBmbG9hdHMgY29taW5nIGZyb20gcGFyZW50IEJGQy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDVjYmFkYTUxYTZhNS4uM2YwOTdj
YmU4MWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVXaWR0aEFuZE1h
cmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmKTsKIAogICAgIHZv
aWQgY29sbGVjdENvbnRlbnRJZk5lZWRlZCgpOwotICAgIElubGluZVJlY3QgY3JlYXRlRGlzcGxh
eUNvbnRlbnRGb3JMaW5lKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IExpbmVCdWlsZGVyOjpMaW5l
Q29udGVudCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYsIGNvbnN0IElubGlu
ZUxheW91dFN0YXRlJiwgSW5saW5lRGlzcGxheTo6Q29udGVudCYpOworICAgIElubGluZVJlY3Qg
Y3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IExpbmVC
dWlsZGVyOjpMaW5lTGF5b3V0UmVzdWx0JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250
ZW50JiwgY29uc3QgSW5saW5lTGF5b3V0U3RhdGUmLCBJbmxpbmVEaXNwbGF5OjpDb250ZW50Jik7
CiAgICAgdm9pZCByZXNldEdlb21ldHJ5Rm9yQ2xhbXBlZENvbnRlbnQoY29uc3QgSW5saW5lSXRl
bVJhbmdlJiBuZWVkc0Rpc3BsYXlDb250ZW50UmFuZ2UsIGNvbnN0IExpbmVCdWlsZGVyOjpTdXNw
ZW5kZWRGbG9hdExpc3QmIHN1c3BlbmRlZEZsb2F0cywgTGF5b3V0UG9pbnQgdG9wbGVmdCk7CiAK
ICAgICBjb25zdCBJbmxpbmVEYW1hZ2UqIG1fbGluZURhbWFnZSB7IG51bGxwdHIgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IDM2
YjQwMGQ0MWNjNC4uNGQzY2RlNGZjNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAKQEAgLTQ3LDE1ICs0NywxNSBAQCBJbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnk6OklubGluZUZvcm1hdHRpbmdHZW9tZXRyeShjb25zdCBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dAogewogfQogCi1JbmxpbmVMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeTo6bG9naWNhbFRvcEZvck5leHRMaW5lKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29u
dGVudCYgbGluZUNvbnRlbnQsIGNvbnN0IElubGluZVJlY3QmIGxpbmVMb2dpY2FsUmVjdCwgY29u
c3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQpIGNvbnN0CitJbmxpbmVMYXlvdXRV
bml0IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6bG9naWNhbFRvcEZvck5leHRMaW5lKGNvbnN0
IExpbmVCdWlsZGVyOjpMaW5lTGF5b3V0UmVzdWx0JiBsaW5lTGF5b3V0UmVzdWx0LCBjb25zdCBJ
bmxpbmVSZWN0JiBsaW5lTG9naWNhbFJlY3QsIGNvbnN0IEZsb2F0aW5nQ29udGV4dCYgZmxvYXRp
bmdDb250ZXh0KSBjb25zdAogewotICAgIGF1dG8gZGlkTWFuYWdlVG9QbGFjZUlubGluZUNvbnRl
bnRPckZsb2F0ID0gIWxpbmVDb250ZW50LmNvbW1pdHRlZFJhbmdlLmlzRW1wdHkoKTsKKyAgICBh
dXRvIGRpZE1hbmFnZVRvUGxhY2VJbmxpbmVDb250ZW50T3JGbG9hdCA9ICFsaW5lTGF5b3V0UmVz
dWx0LmlubGluZUl0ZW1SYW5nZS5pc0VtcHR5KCk7CiAgICAgaWYgKGRpZE1hbmFnZVRvUGxhY2VJ
bmxpbmVDb250ZW50T3JGbG9hdCkgewogICAgICAgICAvLyBOb3JtYWxseSB0aGUgbmV4dCBsaW5l
J3MgbG9naWNhbCB0b3AgaXMgdGhlIHByZXZpb3VzIGxpbmUncyBsb2dpY2FsIGJvdHRvbSwgYnV0
IHdoZW4gdGhlIGxpbmUgZW5kcwogICAgICAgICAvLyB3aXRoIHRoZSBjbGVhciBwcm9wZXJ0eSBz
ZXQsIHRoZSBuZXh0IGxpbmUgbmVlZHMgdG8gY2xlYXIgdGhlIGV4aXN0aW5nIGZsb2F0cy4KLSAg
ICAgICAgaWYgKGxpbmVDb250ZW50LnJ1bnMuaXNFbXB0eSgpKQorICAgICAgICBpZiAobGluZUxh
eW91dFJlc3VsdC5pbmxpbmVDb250ZW50LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBs
aW5lTG9naWNhbFJlY3QuYm90dG9tKCk7Ci0gICAgICAgIGF1dG8mIGxhc3RSdW5MYXlvdXRCb3gg
PSBsaW5lQ29udGVudC5ydW5zLmxhc3QoKS5sYXlvdXRCb3goKTsKKyAgICAgICAgYXV0byYgbGFz
dFJ1bkxheW91dEJveCA9IGxpbmVMYXlvdXRSZXN1bHQuaW5saW5lQ29udGVudC5sYXN0KCkubGF5
b3V0Qm94KCk7CiAgICAgICAgIGlmICghbGFzdFJ1bkxheW91dEJveC5oYXNGbG9hdENsZWFyKCkp
CiAgICAgICAgICAgICByZXR1cm4gbGluZUxvZ2ljYWxSZWN0LmJvdHRvbSgpOwogICAgICAgICBh
dXRvIHBvc2l0aW9uV2l0aENsZWFyYW5jZSA9IGZsb2F0aW5nQ29udGV4dC52ZXJ0aWNhbFBvc2l0
aW9uV2l0aENsZWFyYW5jZShsYXN0UnVuTGF5b3V0Qm94LCBmb3JtYXR0aW5nQ29udGV4dCgpLmdl
b21ldHJ5Rm9yQm94KGxhc3RSdW5MYXlvdXRCb3gpKTsKQEAgLTY3LDggKzY3LDggQEAgSW5saW5l
TGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OmxvZ2ljYWxUb3BGb3JOZXh0TGlu
ZShjb25zdCBMaW5lQnVpbGQKICAgICBhdXRvIGludHJ1c2l2ZUZsb2F0Qm90dG9tID0gWyZdKCkg
LT4gSW5saW5lTGF5b3V0VW5pdCB7CiAgICAgICAgIC8vIEZsb2F0cyBtdXN0IGhhdmUgcHJldmVu
dGVkIHVzIHBsYWNpbmcgYW55IGNvbnRlbnQgb24gdGhlIGxpbmUuCiAgICAgICAgIC8vIE1vdmUg
dGhlIG5leHQgbGluZSBiZWxvdyB0aGUgaW50cnVzaXZlIGZsb2F0KHMpLgotICAgICAgICBBU1NF
UlQobGluZUNvbnRlbnQucnVucy5pc0VtcHR5KCkgfHwgbGluZUNvbnRlbnQucnVuc1swXS5pc0xp
bmVTcGFubmluZ0lubGluZUJveFN0YXJ0KCkpOwotICAgICAgICBBU1NFUlQobGluZUNvbnRlbnQu
aGFzSW50cnVzaXZlRmxvYXQpOworICAgICAgICBBU1NFUlQobGluZUxheW91dFJlc3VsdC5pbmxp
bmVDb250ZW50LmlzRW1wdHkoKSB8fCBsaW5lTGF5b3V0UmVzdWx0LmlubGluZUNvbnRlbnRbMF0u
aXNMaW5lU3Bhbm5pbmdJbmxpbmVCb3hTdGFydCgpKTsKKyAgICAgICAgQVNTRVJUKGxpbmVMYXlv
dXRSZXN1bHQuZmxvYXRDb250ZW50Lmhhc0ludHJ1c2l2ZUZsb2F0KTsKICAgICAgICAgLy8gRklY
TUU6IE1vdmluZyB0aGUgYm90dG9tIHBvc2l0aW9uIGJ5IHRoZSBpbml0aWFsIGxpbmUgaGVpZ2h0
IG1heSBiZSB0b28gbXVjaCBtZWFuaW5nIHRoYXQgd2UgbWlzcyB2ZXJ0aWNhbCBwb3NpdGlvbnMg
d2hlcmUgYXRvbWljIGlubGluZSBjb250ZW50IGNvdWxkIHZlcnkgd2VsbCBmaXQuCiAgICAgICAg
IC8vIFRoZSBzcGVjIGlzIHVuY2xlYXIgb2YgaG93IG11Y2ggd2Ugc2hvdWxkIG1vdmUgZG93biBh
dCB0aGlzIHBvaW50IGFuZCB3aGlsZSAxcHggc2hvdWxkIGJlIHRoZSBtb3N0IHByZWNpc2UgaXQn
cyBhbHNvIHJhdGhlciBleHBlbnNpdmUuCiAgICAgICAgIGF1dG8gaW5mbGF0ZWRMaW5lUmVjdEJv
dHRvbSA9IGxpbmVMb2dpY2FsUmVjdC50b3AoKSArIGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgp
LnN0eWxlKCkuY29tcHV0ZWRMaW5lSGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oCmluZGV4IGNhNGM2OTcyZTliNS4uY2I0OThiNmI5ZWE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaApA
QCAtNDAsNyArNDAsNyBAQCBjbGFzcyBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkgOiBwdWJsaWMg
Rm9ybWF0dGluZ0dlb21ldHJ5IHsKIHB1YmxpYzoKICAgICBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0
cnkoY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmKTsKIAotICAgIElubGluZUxheW91dFVu
aXQgbG9naWNhbFRvcEZvck5leHRMaW5lKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYs
IGNvbnN0IElubGluZVJlY3QmIGxpbmVMb2dpY2FsUmVjdCwgY29uc3QgRmxvYXRpbmdDb250ZXh0
JikgY29uc3Q7CisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yTmV4dExpbmUoY29u
c3QgTGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmLCBjb25zdCBJbmxpbmVSZWN0JiBsaW5l
TG9naWNhbFJlY3QsIGNvbnN0IEZsb2F0aW5nQ29udGV4dCYpIGNvbnN0OwogCiAgICAgQ29udGVu
dEhlaWdodEFuZE1hcmdpbiBpbmxpbmVCbG9ja0NvbnRlbnRIZWlnaHRBbmRNYXJnaW4oY29uc3Qg
Qm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGRlblZlcnRp
Y2FsVmFsdWVzJikgY29uc3Q7CiAgICAgQ29udGVudFdpZHRoQW5kTWFyZ2luIGlubGluZUJsb2Nr
Q29udGVudFdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJh
aW50cyYsIGNvbnN0IE92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzJikgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQm94QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5jcHAKaW5kZXggYjNlOTgwYzZmOTNi
Li45MWZkMDBiYzEzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVp
bGRlci5jcHAKQEAgLTM2LDIwICszNiwyMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIExheW91dCB7CiAKLUxpbmVCb3hCdWlsZGVyOjpMaW5lQm94QnVpbGRlcihjb25zdCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQsIGNvbnN0IElubGlu
ZUxheW91dFN0YXRlJiBpbmxpbmVMYXlvdXRTdGF0ZSwgY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVD
b250ZW50JiBsaW5lQ29udGVudCkKK0xpbmVCb3hCdWlsZGVyOjpMaW5lQm94QnVpbGRlcihjb25z
dCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQsIGNvbnN0
IElubGluZUxheW91dFN0YXRlJiBpbmxpbmVMYXlvdXRTdGF0ZSwgY29uc3QgTGluZUJ1aWxkZXI6
OkxpbmVMYXlvdXRSZXN1bHQmIGxpbmVMYXlvdXRSZXN1bHQpCiAgICAgOiBtX2lubGluZUZvcm1h
dHRpbmdDb250ZXh0KGlubGluZUZvcm1hdHRpbmdDb250ZXh0KQogICAgICwgbV9pbmxpbmVMYXlv
dXRTdGF0ZShpbmxpbmVMYXlvdXRTdGF0ZSkKLSAgICAsIG1fbGluZUNvbnRlbnQobGluZUNvbnRl
bnQpCisgICAgLCBtX2xpbmVMYXlvdXRSZXN1bHQobGluZUxheW91dFJlc3VsdCkKIHsKIH0KIAog
TGluZUJveCBMaW5lQm94QnVpbGRlcjo6YnVpbGQoc2l6ZV90IGxpbmVJbmRleCkKIHsKLSAgICBh
dXRvJiBsaW5lQ29udGVudCA9IHRoaXMtPmxpbmVDb250ZW50KCk7CisgICAgYXV0byYgbGluZUxh
eW91dFJlc3VsdCA9IHRoaXMtPmxpbmVMYXlvdXRSZXN1bHQoKTsKICAgICAvLyBGSVhNRTogVGhl
IG92ZXJmbG93aW5nIGhhbmdpbmcgY29udGVudCBzaG91bGQgYmUgcGFydCBvZiB0aGUgaW5rIG92
ZXJmbG93LgogICAgIGF1dG8gY29udGVudExvZ2ljYWxXaWR0aCA9IFsmXSB7Ci0gICAgICAgIGlm
IChsaW5lQ29udGVudC5pbmxpbmVCYXNlRGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikK
LSAgICAgICAgICAgIHJldHVybiBsaW5lQ29udGVudC5jb250ZW50TG9naWNhbFdpZHRoIC0gbGlu
ZUNvbnRlbnQuaGFuZ2luZ0NvbnRlbnQud2lkdGg7CisgICAgICAgIGlmIChsaW5lTGF5b3V0UmVz
dWx0LmRpcmVjdGlvbmFsaXR5LmlubGluZUJhc2VEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6
TFRSKQorICAgICAgICAgICAgcmV0dXJuIGxpbmVMYXlvdXRSZXN1bHQuY29udGVudEdlb21ldHJ5
LmxvZ2ljYWxXaWR0aCAtIGxpbmVMYXlvdXRSZXN1bHQuaGFuZ2luZ0NvbnRlbnQubG9naWNhbFdp
ZHRoOwogICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5IGNsaWVudHMgb2YgdGhlIGlubGluZSBp
dGVyYXRvciBpbnRlcmZhY2UgKGVkaXRpbmcsIHNlbGVjdGlvbiwgRE9NIGV0YykgY2FuJ3QgZGVh
bCB3aXRoCiAgICAgICAgIC8vIGhhbmdpbmcgY29udGVudCBvZmZzZXRzIHdoZW4gdGhleSBhZmZl
Y3QgdGhlIHJlc3Qgb2YgdGhlIGNvbnRlbnQuCiAgICAgICAgIC8vIEluIGxlZnQtdG8tcmlnaHQg
aW5saW5lIGRpcmVjdGlvbiwgaGFuZ2luZyBjb250ZW50IGlzIGFsd2F5cyB0cmFpbGluZyBoZW5j
ZSB0aGUgd2lkdGggZG9lcyBub3QgaW1wb3NlIG9mZnNldCBvbiB0aGUgcmVzdCBvZiB0aGUgY29u
dGVudApAQCAtNTcsOSArNTcsOSBAQCBMaW5lQm94IExpbmVCb3hCdWlsZGVyOjpidWlsZChzaXpl
X3QgbGluZUluZGV4KQogICAgICAgICAvLyBXaGF0J3MgbWlzc2luZyBpcyBhIHdheSB0byB0ZWxs
IHRoYXQgd2hpbGUgdGhlIGNvbnRlbnQgc3RhcnRzIGF0IHRoZSBsZWZ0IHNpZGUgb2YgdGhlICh2
aXN1YWxseSBsZWFkaW5nKSBoYW5naW5nIGNvbnRlbnQKICAgICAgICAgLy8gdGhlIHJvb3QgaW5s
aW5lIGJveCBoYXMgYW4gb2Zmc2V0LCB0aGUgd2lkdGggb2YgdGhlIGhhbmdpbmcgY29udGVudCAo
ZXNzZW50aWFsbHkgZGVjb3VwbGluZyB0aGUgY29udGVudCBhbmQgdGhlIHJvb3QgaW5saW5lIGJv
eCB2aXN1YWwgbGVmdCkuCiAgICAgICAgIC8vIEZvciBub3cganVzdCBpbmNsdWRlIHRoZSBoYW5n
aW5nIGNvbnRlbnQgaW4gdGhlIHJvb3QgaW5saW5lIGJveCBhcyBpZiBpdCB3YXMgbm90IGhhbmdp
bmcgKHRoaXMgaXMgaG93IGxlZ2FjeSBsaW5lIGxheW91dCB3b3JrcykuCi0gICAgICAgIHJldHVy
biBsaW5lQ29udGVudC5jb250ZW50TG9naWNhbFdpZHRoOworICAgICAgICByZXR1cm4gbGluZUxh
eW91dFJlc3VsdC5jb250ZW50R2VvbWV0cnkubG9naWNhbFdpZHRoOwogICAgIH07Ci0gICAgYXV0
byBsaW5lQm94ID0gTGluZUJveCB7IHJvb3RCb3goKSwgbGluZUNvbnRlbnQuY29udGVudExvZ2lj
YWxMZWZ0LCBjb250ZW50TG9naWNhbFdpZHRoKCksIGxpbmVJbmRleCwgbGluZUNvbnRlbnQubm9u
U3Bhbm5pbmdJbmxpbmVMZXZlbEJveENvdW50IH07CisgICAgYXV0byBsaW5lQm94ID0gTGluZUJv
eCB7IHJvb3RCb3goKSwgbGluZUxheW91dFJlc3VsdC5jb250ZW50R2VvbWV0cnkubG9naWNhbExl
ZnQsIGNvbnRlbnRMb2dpY2FsV2lkdGgoKSwgbGluZUluZGV4LCBsaW5lTGF5b3V0UmVzdWx0Lm5v
blNwYW5uaW5nSW5saW5lTGV2ZWxCb3hDb3VudCB9OwogICAgIGNvbnN0cnVjdElubGluZUxldmVs
Qm94ZXMobGluZUJveCk7CiAgICAgYWRqdXN0SWRlb2dyYXBoaWNCYXNlbGluZUlmQXBwbGljYWJs
ZShsaW5lQm94KTsKICAgICBhZGp1c3RJbmxpbmVCb3hIZWlnaHRzRm9yTGluZUJveENvbnRhaW5J
ZkFwcGxpY2FibGUobGluZUJveCk7CkBAIC0zMzAsOSArMzMwLDkgQEAgdm9pZCBMaW5lQm94QnVp
bGRlcjo6Y29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyhMaW5lQm94JiBsaW5lQm94KQogICAgIH07
CiAKICAgICBhdXRvIGxpbmVIYXNDb250ZW50ID0gZmFsc2U7Ci0gICAgYXV0byYgcnVucyA9IGxp
bmVDb250ZW50KCkucnVuczsKLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgcnVu
cy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byYgcnVuID0gcnVuc1tpbmRleF07Cisg
ICAgYXV0byYgaW5saW5lQ29udGVudCA9IGxpbmVMYXlvdXRSZXN1bHQoKS5pbmxpbmVDb250ZW50
OworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBpbmxpbmVDb250ZW50LnNpemUo
KTsgKytpbmRleCkgeworICAgICAgICBhdXRvJiBydW4gPSBpbmxpbmVDb250ZW50W2luZGV4XTsK
ICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gcnVuLmxheW91dEJveCgpOwogICAgICAgICBhdXRv
JiBzdHlsZSA9IHN0eWxlVG9Vc2UobGF5b3V0Qm94KTsKICAgICAgICAgYXV0byBydW5IYXNDb250
ZW50ID0gWyZdICgpIC0+IGJvb2wgewpAQCAtMzg2LDcgKzM4Niw3IEBAIHZvaWQgTGluZUJveEJ1
aWxkZXI6OmNvbnN0cnVjdElubGluZUxldmVsQm94ZXMoTGluZUJveCYgbGluZUJveCkKICAgICAg
ICAgICAgIGF1dG8gbWFyZ2luU3RhcnQgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9y
Qm94KGxheW91dEJveCkubWFyZ2luU3RhcnQoKTsKICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0ICs9
IHN0ZDo6bWF4KDBfbHUsIG1hcmdpblN0YXJ0KTsKICAgICAgICAgICAgIGF1dG8gaW5pdGlhbExv
Z2ljYWxXaWR0aCA9IHJvb3RJbmxpbmVCb3gubG9naWNhbFJpZ2h0KCkgLSBsb2dpY2FsTGVmdDsK
LSAgICAgICAgICAgIEFTU0VSVChpbml0aWFsTG9naWNhbFdpZHRoID49IDAgfHwgbGluZUNvbnRl
bnQoKS5oYW5naW5nQ29udGVudC53aWR0aCB8fCBzdGQ6OmlzbmFuKGluaXRpYWxMb2dpY2FsV2lk
dGgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpbml0aWFsTG9naWNhbFdpZHRoID49IDAgfHwgbGlu
ZUxheW91dFJlc3VsdCgpLmhhbmdpbmdDb250ZW50LmxvZ2ljYWxXaWR0aCB8fCBzdGQ6OmlzbmFu
KGluaXRpYWxMb2dpY2FsV2lkdGgpKTsKICAgICAgICAgICAgIGluaXRpYWxMb2dpY2FsV2lkdGgg
PSBzdGQ6Om1heChpbml0aWFsTG9naWNhbFdpZHRoLCAwLmYpOwogICAgICAgICAgICAgYXV0byBp
bmxpbmVCb3ggPSBJbmxpbmVMZXZlbEJveDo6Y3JlYXRlSW5saW5lQm94KGxheW91dEJveCwgc3R5
bGUsIGxvZ2ljYWxMZWZ0LCBpbml0aWFsTG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgIGlubGlu
ZUJveC5zZXRJc0ZpcnN0Qm94KCk7CkBAIC01MDYsNyArNTA2LDcgQEAgdm9pZCBMaW5lQm94QnVp
bGRlcjo6YWRqdXN0SW5saW5lQm94SGVpZ2h0c0ZvckxpbmVCb3hDb250YWluSWZBcHBsaWNhYmxl
KExpbmVCb3gKIAogICAgIGlmIChsaW5lQm94Q29udGFpbi5jb250YWlucyhMaW5lQm94Q29udGFp
bjo6R2x5cGhzKSkgewogICAgICAgICAvLyBDb21wdXRlIHRleHQgY29udGVudCAoZ2x5cGhzKSBo
dWdnaW5nIGlubGluZSBib3ggbGF5b3V0IGJvdW5kcy4KLSAgICAgICAgZm9yIChhdXRvIHJ1biA6
IGxpbmVDb250ZW50KCkucnVucykgeworICAgICAgICBmb3IgKGF1dG8gcnVuIDogbGluZUxheW91
dFJlc3VsdCgpLmlubGluZUNvbnRlbnQpIHsKICAgICAgICAgICAgIGlmICghcnVuLmlzVGV4dCgp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC01MzEsNyArNTMxLDcgQEAgdm9pZCBM
aW5lQm94QnVpbGRlcjo6YWRqdXN0SW5saW5lQm94SGVpZ2h0c0ZvckxpbmVCb3hDb250YWluSWZB
cHBsaWNhYmxlKExpbmVCb3gKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBpbml0aWFsTGV0dGVy
QXNjZW50ID0gZm9udE1ldHJpY3MuY2FwSGVpZ2h0KCk7CiAgICAgICAgIGF1dG8gaW5pdGlhbExl
dHRlckRlc2NlbnQgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKIAotICAgICAgICBmb3IgKGF1dG8g
cnVuIDogbGluZUNvbnRlbnQoKS5ydW5zKSB7CisgICAgICAgIGZvciAoYXV0byBydW4gOiBsaW5l
TGF5b3V0UmVzdWx0KCkuaW5saW5lQ29udGVudCkgewogICAgICAgICAgICAgLy8gV2UgcmVhbGx5
IHNob3VsZCBvbmx5IGhhdmUgb25lIHRleHQgcnVuIGZvciBpbml0aWFsIGxldHRlci4KICAgICAg
ICAgICAgIGlmICghcnVuLmlzVGV4dCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
NjkxLDcgKzY5MSw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbXB1dGVMaW5lQm94R2VvbWV0
cnkoTGluZUJveCYgbGluZUJveCkgY29uc3QKICAgICAgICAgZm9yIChhdXRvJiBub25Sb290SW5s
aW5lTGV2ZWxCb3ggOiBsaW5lQm94Lm5vblJvb3RJbmxpbmVMZXZlbEJveGVzKCkpCiAgICAgICAg
ICAgICBub25Sb290SW5saW5lTGV2ZWxCb3guc2V0TG9naWNhbFRvcChub25Sb290SW5saW5lTGV2
ZWxCb3gubG9naWNhbFRvcCgpIC0gdGV4dEJveEVkZ2VPdmVySGVpZ2h0KTsKICAgICB9Ci0gICAg
bGluZUJveC5zZXRMb2dpY2FsUmVjdCh7IGxpbmVDb250ZW50KCkubGluZUxvZ2ljYWxUb3BMZWZ0
LCBsaW5lQ29udGVudCgpLmxpbmVMb2dpY2FsV2lkdGgsIGxpbmVCb3hMb2dpY2FsSGVpZ2h0IH0p
OworICAgIGxpbmVCb3guc2V0TG9naWNhbFJlY3QoeyBsaW5lTGF5b3V0UmVzdWx0KCkubGluZUdl
b21ldHJ5LmxvZ2ljYWxUb3BMZWZ0LCBsaW5lTGF5b3V0UmVzdWx0KCkubGluZUdlb21ldHJ5Lmxv
Z2ljYWxXaWR0aCwgbGluZUJveExvZ2ljYWxIZWlnaHQgfSk7CiB9CiAKIHZvaWQgTGluZUJveEJ1
aWxkZXI6OmFkanVzdE91dHNpZGVMaXN0TWFya2Vyc1Bvc2l0aW9uKExpbmVCb3gmIGxpbmVCb3gp
CkBAIC03MDEsMTEgKzcwMSwxMSBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjphZGp1c3RPdXRzaWRl
TGlzdE1hcmtlcnNQb3NpdGlvbihMaW5lQm94JiBsaW5lQm94KQogICAgIGF1dG8gbGluZUJveFJl
Y3QgPSBsaW5lQm94LmxvZ2ljYWxSZWN0KCk7CiAgICAgYXV0byBmbG9hdENvbnN0cmFpbnRzID0g
ZmxvYXRpbmdDb250ZXh0LmNvbnN0cmFpbnRzKExheW91dFVuaXQgeyBsaW5lQm94UmVjdC50b3Ao
KSB9LCBMYXlvdXRVbml0IHsgbGluZUJveFJlY3QuYm90dG9tKCkgfSwgRmxvYXRpbmdDb250ZXh0
OjpNYXlCZUFib3ZlTGFzdEZsb2F0OjpObyk7CiAKLSAgICBhdXRvIGxpbmVCb3hPZmZzZXQgPSBs
aW5lQm94UmVjdC5sZWZ0KCkgLSBsaW5lQ29udGVudCgpLmxpbmVJbml0aWFsTG9naWNhbExlZnRJ
bmNsdWRpbmdJbnRydXNpdmVGbG9hdHM7CisgICAgYXV0byBsaW5lQm94T2Zmc2V0ID0gbGluZUJv
eFJlY3QubGVmdCgpIC0gbGluZUxheW91dFJlc3VsdCgpLmxpbmVHZW9tZXRyeS5pbml0aWFsTG9n
aWNhbExlZnRJbmNsdWRpbmdJbnRydXNpdmVGbG9hdHM7CiAgICAgYXV0byByb290SW5saW5lQm94
TG9naWNhbExlZnQgPSBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yUm9vdElubGluZUJveCgpLmxlZnQo
KTsKICAgICBhdXRvIHJvb3RJbmxpbmVCb3hPZmZzZXRGcm9tQ29udGVudEJveE9ySW50cnVzaXZl
RmxvYXQgPSBsaW5lQm94T2Zmc2V0ICsgcm9vdElubGluZUJveExvZ2ljYWxMZWZ0OwogICAgIGZv
ciAoYXV0byBsaXN0TWFya2VyQm94SW5kZXggOiBtX291dHNpZGVMaXN0TWFya2VycykgewotICAg
ICAgICBhdXRvJiBsaXN0TWFya2VyUnVuID0gbGluZUNvbnRlbnQoKS5ydW5zW2xpc3RNYXJrZXJC
b3hJbmRleF07CisgICAgICAgIGF1dG8mIGxpc3RNYXJrZXJSdW4gPSBsaW5lTGF5b3V0UmVzdWx0
KCkuaW5saW5lQ29udGVudFtsaXN0TWFya2VyQm94SW5kZXhdOwogICAgICAgICBBU1NFUlQobGlz
dE1hcmtlclJ1bi5pc0xpc3RNYXJrZXJPdXRzaWRlKCkpOwogICAgICAgICBhdXRvJiBsaXN0TWFy
a2VyQm94ID0gZG93bmNhc3Q8RWxlbWVudEJveD4obGlzdE1hcmtlclJ1bi5sYXlvdXRCb3goKSk7
CiAgICAgICAgIGF1dG8mIGxpc3RNYXJrZXJJbmxpbmVMZXZlbEJveCA9IGxpbmVCb3guaW5saW5l
TGV2ZWxCb3hGb3IobGlzdE1hcmtlclJ1bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZUJveEJ1aWxkZXIuaAppbmRleCA3YzRlY2M5MDY0ZmQuLmUwYWI5Zjc0ZDVmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZUJveEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5oCkBAIC0zOSw3ICszOSw3IEBAIGNs
YXNzIExheW91dFN0YXRlOwogCiBjbGFzcyBMaW5lQm94QnVpbGRlciB7CiBwdWJsaWM6Ci0gICAg
TGluZUJveEJ1aWxkZXIoY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmLCBjb25zdCBJbmxp
bmVMYXlvdXRTdGF0ZSYsIGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYpOworICAgIExp
bmVCb3hCdWlsZGVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiwgY29uc3QgSW5saW5l
TGF5b3V0U3RhdGUmLCBjb25zdCBMaW5lQnVpbGRlcjo6TGluZUxheW91dFJlc3VsdCYpOwogCiAg
ICAgTGluZUJveCBidWlsZChzaXplX3QgbGluZUluZGV4KTsKIApAQCAtNTUsMTAgKzU1LDEwIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBhZGp1c3RJZGVvZ3JhcGhpY0Jhc2VsaW5lSWZBcHBsaWNhYmxl
KExpbmVCb3gmKTsKICAgICB2b2lkIGFkanVzdE91dHNpZGVMaXN0TWFya2Vyc1Bvc2l0aW9uKExp
bmVCb3gmKTsKIAotICAgIGJvb2wgaXNGaXJzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xpbmVD
b250ZW50LmlzRmlyc3RGb3JtYXR0ZWRMaW5lICE9IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudDo6
Rmlyc3RGb3JtYXR0ZWRMaW5lOjpObzsgfQotICAgIGJvb2wgaXNMYXN0TGluZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbGluZUNvbnRlbnQuaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50OyB9CisgICAg
Ym9vbCBpc0ZpcnN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmVMYXlvdXRSZXN1bHQoKS5pc0Zp
cnN0TGFzdC5pc0ZpcnN0Rm9ybWF0dGVkTGluZSAhPSBMaW5lQnVpbGRlcjo6TGluZUxheW91dFJl
c3VsdDo6SXNGaXJzdExhc3Q6OkZpcnN0Rm9ybWF0dGVkTGluZTo6Tm87IH0KKyAgICBib29sIGlz
TGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBsaW5lTGF5b3V0UmVzdWx0KCkuaXNGaXJzdExhc3Qu
aXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50OyB9CiAgICAgY29uc3QgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDsgfQotICAgIGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGlu
ZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2xpbmVDb250ZW50OyB9CisgICAgY29uc3QgTGlu
ZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmIGxpbmVMYXlvdXRSZXN1bHQoKSBjb25zdCB7IHJl
dHVybiBtX2xpbmVMYXlvdXRSZXN1bHQ7IH0KICAgICBjb25zdCBCb3gmIHJvb3RCb3goKSBjb25z
dCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKTsgfQogICAgIGNvbnN0IFJlbmRl
clN0eWxlJiByb290U3R5bGUoKSBjb25zdCB7IHJldHVybiBpc0ZpcnN0TGluZSgpID8gcm9vdEJv
eCgpLmZpcnN0TGluZVN0eWxlKCkgOiByb290Qm94KCkuc3R5bGUoKTsgfQogCkBAIC02OSw3ICs2
OSw3IEBAIHByaXZhdGU6CiBwcml2YXRlOgogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250
ZXh0JiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0OwogICAgIGNvbnN0IElubGluZUxheW91dFN0
YXRlJiBtX2lubGluZUxheW91dFN0YXRlOwotICAgIGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29u
dGVudCYgbV9saW5lQ29udGVudDsKKyAgICBjb25zdCBMaW5lQnVpbGRlcjo6TGluZUxheW91dFJl
c3VsdCYgbV9saW5lTGF5b3V0UmVzdWx0OwogICAgIGJvb2wgbV9mYWxsYmFja0ZvbnRSZXF1aXJl
c0lkZW9ncmFwaGljQmFzZWxpbmUgeyBmYWxzZSB9OwogICAgIEhhc2hNYXA8Y29uc3QgSW5saW5l
TGV2ZWxCb3gqLCBUZXh0VXRpbDo6RmFsbGJhY2tGb250TGlzdD4gbV9mYWxsYmFja0ZvbnRzRm9y
SW5saW5lQm94ZXM7CiAgICAgVmVjdG9yPHNpemVfdD4gbV9vdXRzaWRlTGlzdE1hcmtlcnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKaW5kZXggNGJkNjliYzg0NmQ3
Li44ZmRkNWJkMjgwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5j
cHAKQEAgLTM0Niw3ICszNDYsNyBAQCBMaW5lQnVpbGRlcjo6TGluZUJ1aWxkZXIoY29uc3QgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQmIGlubGluZUZvcm1hdHRpbmdDb250ZXh0LAogewogfQogCi1M
aW5lQnVpbGRlcjo6TGluZUNvbnRlbnQgTGluZUJ1aWxkZXI6OmxheW91dElubGluZUNvbnRlbnQo
Y29uc3QgTGluZUlucHV0JiBsaW5lSW5wdXQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UHJldmlvdXNM
aW5lPiYgcHJldmlvdXNMaW5lKQorTGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQgTGluZUJ1
aWxkZXI6OmxheW91dElubGluZUNvbnRlbnQoY29uc3QgTGluZUlucHV0JiBsaW5lSW5wdXQsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8UHJldmlvdXNMaW5lPiYgcHJldmlvdXNMaW5lKQogewogICAgIGF1
dG8gcHJldmlvdXNMaW5lRW5kc1dpdGhMaW5lQnJlYWsgPSAhcHJldmlvdXNMaW5lID8gc3RkOjpu
dWxsb3B0IDogc3RkOjptYWtlX29wdGlvbmFsKHByZXZpb3VzTGluZS0+ZW5kc1dpdGhMaW5lQnJl
YWspOwogICAgIGluaXRpYWxpemUobGluZUlucHV0LmluaXRpYWxMb2dpY2FsUmVjdCwgaW5pdGlh
bENvbnN0cmFpbnRzRm9yTGluZShsaW5lSW5wdXQuaW5pdGlhbExvZ2ljYWxSZWN0LCBwcmV2aW91
c0xpbmVFbmRzV2l0aExpbmVCcmVhayksIGxpbmVJbnB1dC5uZWVkc0xheW91dFJhbmdlLCBwcmV2
aW91c0xpbmUpOwpAQCAtMzU5LDIzICszNTksMTUgQEAgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50
IExpbmVCdWlsZGVyOjpsYXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IExpbmVJbnB1dCYgbGluZUkK
ICAgICBhdXRvIGNvbnRlbnRMb2dpY2FsTGVmdCA9IGhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQo
aXNMYXN0TGluZSk7CiAKICAgICByZXR1cm4geyBjb21taXR0ZWRSYW5nZQotICAgICAgICAsIGNv
bW1pdHRlZENvbnRlbnQub3ZlcmZsb3dMb2dpY2FsV2lkdGgKLSAgICAgICAgLCBXVEZNb3ZlKG1f
cGxhY2VkRmxvYXRzKQotICAgICAgICAsIFdURk1vdmUobV9zdXNwZW5kZWRGbG9hdHMpCi0gICAg
ICAgICwgbV9saW5lSXNDb25zdHJhaW5lZEJ5RmxvYXQKLSAgICAgICAgLCBtX2xpbmVJbml0aWFs
TG9naWNhbFJlY3QubGVmdCgpICsgbV9pbml0aWFsSW50cnVzaXZlRmxvYXRzV2lkdGgKLSAgICAg
ICAgLCBtX2xpbmVMb2dpY2FsUmVjdC50b3BMZWZ0KCkKLSAgICAgICAgLCBtX2xpbmVMb2dpY2Fs
UmVjdC53aWR0aCgpCi0gICAgICAgICwgY29udGVudExvZ2ljYWxMZWZ0Ci0gICAgICAgICwgbV9s
aW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgoKQotICAgICAgICAsIGNvbnRlbnRMb2dpY2FsTGVmdCAr
IG1fbGluZS5jb250ZW50TG9naWNhbFJpZ2h0KCkKKyAgICAgICAgLCBtX2xpbmUucnVucygpCisg
ICAgICAgICwgeyBXVEZNb3ZlKG1fcGxhY2VkRmxvYXRzKSwgV1RGTW92ZShtX3N1c3BlbmRlZEZs
b2F0cyksIG1fbGluZUlzQ29uc3RyYWluZWRCeUZsb2F0IH0KKyAgICAgICAgLCB7IGNvbnRlbnRM
b2dpY2FsTGVmdCwgbV9saW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgoKSwgY29udGVudExvZ2ljYWxM
ZWZ0ICsgbV9saW5lLmNvbnRlbnRMb2dpY2FsUmlnaHQoKSwgY29tbWl0dGVkQ29udGVudC5vdmVy
Zmxvd0xvZ2ljYWxXaWR0aCB9CisgICAgICAgICwgeyBtX2xpbmVMb2dpY2FsUmVjdC50b3BMZWZ0
KCksIG1fbGluZUxvZ2ljYWxSZWN0LndpZHRoKCksIG1fbGluZUluaXRpYWxMb2dpY2FsUmVjdC5s
ZWZ0KCkgKyBtX2luaXRpYWxJbnRydXNpdmVGbG9hdHNXaWR0aCB9CiAgICAgICAgICwgeyAhbV9s
aW5lLmlzSGFuZ2luZ1RyYWlsaW5nQ29udGVudFdoaXRlc3BhY2UoKSwgbV9saW5lLmhhbmdpbmdU
cmFpbGluZ0NvbnRlbnRXaWR0aCgpIH0KLSAgICAgICAgLCBpc0ZpcnN0Rm9ybWF0dGVkTGluZSgp
ID8gTGluZUNvbnRlbnQ6OkZpcnN0Rm9ybWF0dGVkTGluZTo6V2l0aGluSUZDIDogTGluZUNvbnRl
bnQ6OkZpcnN0Rm9ybWF0dGVkTGluZTo6Tm8KLSAgICAgICAgLCBpc0xhc3RMaW5lCisgICAgICAg
ICwgeyBjb21wdXRlZFZpc3VhbE9yZGVyKG1fbGluZSksIGlubGluZUJhc2VEaXJlY3Rpb24gfQor
ICAgICAgICAsIHsgaXNGaXJzdEZvcm1hdHRlZExpbmUoKSA/IExpbmVMYXlvdXRSZXN1bHQ6Oklz
Rmlyc3RMYXN0OjpGaXJzdEZvcm1hdHRlZExpbmU6OldpdGhpbklGQyA6IExpbmVMYXlvdXRSZXN1
bHQ6OklzRmlyc3RMYXN0OjpGaXJzdEZvcm1hdHRlZExpbmU6Ok5vLCBpc0xhc3RMaW5lIH0KICAg
ICAgICAgLCBtX2xpbmUubm9uU3Bhbm5pbmdJbmxpbmVMZXZlbEJveENvdW50KCkKLSAgICAgICAg
LCBjb21wdXRlZFZpc3VhbE9yZGVyKG1fbGluZSkKLSAgICAgICAgLCBpbmxpbmVCYXNlRGlyZWN0
aW9uCi0gICAgICAgICwgbV9saW5lLnJ1bnMoKSB9OworICAgIH07CiB9CiAKIExpbmVCdWlsZGVy
OjpJbnRyaW5zaWNDb250ZW50IExpbmVCdWlsZGVyOjpjb21wdXRlZEludHJpbnNpY1dpZHRoKGNv
bnN0IExpbmVJbnB1dCYgbGluZUlucHV0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFByZXZpb3VzTGlu
ZT4mIHByZXZpb3VzTGluZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5oCmlu
ZGV4IGE1Y2I1NDIyMzRmZC4uODNkZWE3NDhlNGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxpbmVCdWlsZGVyLmgKQEAgLTQ5LDM2ICs0OSw1OCBAQCBwdWJsaWM6CiAgICAgfTsKICAgICB1
c2luZyBQbGFjZWRGbG9hdExpc3QgPSBGbG9hdGluZ1N0YXRlOjpGbG9hdExpc3Q7CiAgICAgdXNp
bmcgU3VzcGVuZGVkRmxvYXRMaXN0ID0gVmVjdG9yPGNvbnN0IEJveCo+OwotICAgIHN0cnVjdCBM
aW5lQ29udGVudCB7Ci0gICAgICAgIElubGluZUl0ZW1SYW5nZSBjb21taXR0ZWRSYW5nZTsKLSAg
ICAgICAgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB0cmFpbGluZ092ZXJmbG93aW5n
Q29udGVudFdpZHRoIHsgfTsKLSAgICAgICAgUGxhY2VkRmxvYXRMaXN0IHBsYWNlZEZsb2F0czsK
LSAgICAgICAgU3VzcGVuZGVkRmxvYXRMaXN0IHN1c3BlbmRlZEZsb2F0czsKLSAgICAgICAgYm9v
bCBoYXNJbnRydXNpdmVGbG9hdCB7IGZhbHNlIH07Ci0gICAgICAgIElubGluZUxheW91dFVuaXQg
bGluZUluaXRpYWxMb2dpY2FsTGVmdEluY2x1ZGluZ0ludHJ1c2l2ZUZsb2F0cyB7IDAuZiB9Owot
ICAgICAgICBJbmxpbmVMYXlvdXRQb2ludCBsaW5lTG9naWNhbFRvcExlZnQ7Ci0gICAgICAgIElu
bGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxXaWR0aCB7IDAuZiB9OwotICAgICAgICBJbmxpbmVM
YXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsTGVmdCB7IDAuZiB9OwotICAgICAgICBJbmxpbmVMYXlv
dXRVbml0IGNvbnRlbnRMb2dpY2FsV2lkdGggeyAwLmYgfTsKLSAgICAgICAgSW5saW5lTGF5b3V0
VW5pdCBjb250ZW50TG9naWNhbFJpZ2h0SW5jbHVkaW5nTmVnYXRpdmVNYXJnaW4geyAwLmYgfTsg
Ly8gTm90ZSB0aGF0IHdpdGggbmVnYXRpdmUgaG9yaXpvbnRhbCBtYXJnaW4gdmFsdWUsIGNvbnRl
bnRMb2dpY2FsTGVmdCArIGNvbnRlbnRMb2dpY2FsV2lkdGggaXMgbm90IG5lY2Vzc2FyaWx5IGNv
bnRlbnRMb2dpY2FsUmlnaHQuCisgICAgc3RydWN0IExpbmVMYXlvdXRSZXN1bHQgeworICAgICAg
ICBJbmxpbmVJdGVtUmFuZ2UgaW5saW5lSXRlbVJhbmdlOworICAgICAgICBjb25zdCBMaW5lOjpS
dW5MaXN0JiBpbmxpbmVDb250ZW50OworCisgICAgICAgIHN0cnVjdCBGbG9hdENvbnRlbnQgewor
ICAgICAgICAgICAgUGxhY2VkRmxvYXRMaXN0IHBsYWNlZEZsb2F0czsKKyAgICAgICAgICAgIFN1
c3BlbmRlZEZsb2F0TGlzdCBzdXNwZW5kZWRGbG9hdHM7CisgICAgICAgICAgICBib29sIGhhc0lu
dHJ1c2l2ZUZsb2F0IHsgZmFsc2UgfTsKKyAgICAgICAgfTsKKyAgICAgICAgRmxvYXRDb250ZW50
IGZsb2F0Q29udGVudCB7IH07CisKKyAgICAgICAgc3RydWN0IENvbnRlbnRHZW9tZXRyeSB7Cisg
ICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0IHsgMC5mIH07CisgICAgICAg
ICAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCB7IDAuZiB9OworICAgICAgICAgICAg
SW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRJbmNsdWRpbmdOZWdhdGl2ZU1hcmdpbiB7IDAu
ZiB9OyAvLyBOb3RlIHRoYXQgd2l0aCBuZWdhdGl2ZSBob3Jpem9udGFsIG1hcmdpbiB2YWx1ZSwg
Y29udGVudExvZ2ljYWxMZWZ0ICsgY29udGVudExvZ2ljYWxXaWR0aCBpcyBub3QgbmVjZXNzYXJp
bHkgY29udGVudExvZ2ljYWxSaWdodC4KKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SW5saW5l
TGF5b3V0VW5pdD4gdHJhaWxpbmdPdmVyZmxvd2luZ0NvbnRlbnRXaWR0aCB7IH07CisgICAgICAg
IH07CisgICAgICAgIENvbnRlbnRHZW9tZXRyeSBjb250ZW50R2VvbWV0cnkgeyB9OworCisgICAg
ICAgIHN0cnVjdCBMaW5lR2VvbWV0cnkgeworICAgICAgICAgICAgSW5saW5lTGF5b3V0UG9pbnQg
bG9naWNhbFRvcExlZnQ7CisgICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0
aCB7IDAuZiB9OworICAgICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBpbml0aWFsTG9naWNhbExl
ZnRJbmNsdWRpbmdJbnRydXNpdmVGbG9hdHMgeyAwLmYgfTsKKyAgICAgICAgfTsKKyAgICAgICAg
TGluZUdlb21ldHJ5IGxpbmVHZW9tZXRyeSB7IH07CisKICAgICAgICAgc3RydWN0IEhhbmdpbmdD
b250ZW50IHsKICAgICAgICAgICAgIGJvb2wgc2hvdWxkQ29udHJpYnV0ZVRvU2Nyb2xsYWJsZU92
ZXJmbG93IHsgZmFsc2UgfTsKLSAgICAgICAgICAgIElubGluZUxheW91dFVuaXQgd2lkdGggeyAw
LmYgfTsKKyAgICAgICAgICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoIHsgMC5mIH07
CisgICAgICAgIH07CisgICAgICAgIEhhbmdpbmdDb250ZW50IGhhbmdpbmdDb250ZW50IHsgfTsK
KworICAgICAgICBzdHJ1Y3QgRGlyZWN0aW9uYWxpdHkgeworICAgICAgICAgICAgVmVjdG9yPGlu
dDMyX3Q+IHZpc3VhbE9yZGVyTGlzdDsKKyAgICAgICAgICAgIFRleHREaXJlY3Rpb24gaW5saW5l
QmFzZURpcmVjdGlvbiB7IFRleHREaXJlY3Rpb246OkxUUiB9OwogICAgICAgICB9OwotICAgICAg
ICBIYW5naW5nQ29udGVudCBoYW5naW5nQ29udGVudDsKLSAgICAgICAgZW51bSBjbGFzcyBGaXJz
dEZvcm1hdHRlZExpbmUgOiB1aW50OF90IHsKLSAgICAgICAgICAgIE5vLAotICAgICAgICAgICAg
V2l0aGluSUZDLAotICAgICAgICAgICAgV2l0aGluQkZDCisgICAgICAgIERpcmVjdGlvbmFsaXR5
IGRpcmVjdGlvbmFsaXR5IHsgfTsKKworICAgICAgICBzdHJ1Y3QgSXNGaXJzdExhc3QgeworICAg
ICAgICAgICAgZW51bSBjbGFzcyBGaXJzdEZvcm1hdHRlZExpbmUgOiB1aW50OF90IHsKKyAgICAg
ICAgICAgICAgICBObywKKyAgICAgICAgICAgICAgICBXaXRoaW5JRkMsCisgICAgICAgICAgICAg
ICAgV2l0aGluQkZDCisgICAgICAgICAgICB9OworICAgICAgICAgICAgRmlyc3RGb3JtYXR0ZWRM
aW5lIGlzRmlyc3RGb3JtYXR0ZWRMaW5lIHsgRmlyc3RGb3JtYXR0ZWRMaW5lOjpXaXRoaW5JRkMg
fTsKKyAgICAgICAgICAgIGJvb2wgaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50IHsgdHJ1ZSB9
OwogICAgICAgICB9OwotICAgICAgICBGaXJzdEZvcm1hdHRlZExpbmUgaXNGaXJzdEZvcm1hdHRl
ZExpbmUgeyBGaXJzdEZvcm1hdHRlZExpbmU6OldpdGhpbklGQyB9OwotICAgICAgICBib29sIGlz
TGFzdExpbmVXaXRoSW5saW5lQ29udGVudCB7IHRydWUgfTsKKyAgICAgICAgSXNGaXJzdExhc3Qg
aXNGaXJzdExhc3QgeyB9OworICAgICAgICAvLyBNaXNjCiAgICAgICAgIHNpemVfdCBub25TcGFu
bmluZ0lubGluZUxldmVsQm94Q291bnQgeyAwIH07Ci0gICAgICAgIFZlY3RvcjxpbnQzMl90PiB2
aXN1YWxPcmRlckxpc3Q7Ci0gICAgICAgIFRleHREaXJlY3Rpb24gaW5saW5lQmFzZURpcmVjdGlv
biB7IFRleHREaXJlY3Rpb246OkxUUiB9OwotICAgICAgICBjb25zdCBMaW5lOjpSdW5MaXN0JiBy
dW5zOwogICAgIH07Ci0gICAgTGluZUNvbnRlbnQgbGF5b3V0SW5saW5lQ29udGVudChjb25zdCBM
aW5lSW5wdXQmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFByZXZpb3VzTGluZT4mKTsKKyAgICBMaW5l
TGF5b3V0UmVzdWx0IGxheW91dElubGluZUNvbnRlbnQoY29uc3QgTGluZUlucHV0JiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxQcmV2aW91c0xpbmU+Jik7CiAKICAgICBzdHJ1Y3QgSW50cmluc2ljQ29u
dGVudCB7CiAgICAgICAgIElubGluZUl0ZW1SYW5nZSBjb21taXR0ZWRSYW5nZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3Bs
YXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyLmNwcAppbmRleCBkOWIwYWQ4NzdmMWIuLmVkMTNiNTMxYzc3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9J
bmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyLmNwcApAQCAtODksMTcgKzg5LDE3IEBAIElubGluZURpc3BsYXlDb250ZW50QnVpbGRl
cjo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdDCiB7
CiB9CiAKLUlubGluZURpc3BsYXk6OkJveGVzIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6
YnVpbGQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3Qg
TGluZUJveCYgbGluZUJveCkKK0lubGluZURpc3BsYXk6OkJveGVzIElubGluZURpc3BsYXlDb250
ZW50QnVpbGRlcjo6YnVpbGQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmIGxp
bmVMYXlvdXRSZXN1bHQsIGNvbnN0IExpbmVCb3gmIGxpbmVCb3gpCiB7CiAgICAgYXV0byBib3hl
cyA9IElubGluZURpc3BsYXk6OkJveGVzIHsgfTsKLSAgICBib3hlcy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGxpbmVDb250ZW50LnJ1bnMuc2l6ZSgpICsgbGluZUJveC5ub25Sb290SW5saW5lTGV2
ZWxCb3hlcygpLnNpemUoKSArIDEpOworICAgIGJveGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bGluZUxheW91dFJlc3VsdC5pbmxpbmVDb250ZW50LnNpemUoKSArIGxpbmVCb3gubm9uUm9vdElu
bGluZUxldmVsQm94ZXMoKS5zaXplKCkgKyAxKTsKIAotICAgIGF1dG8gY29udGVudE5lZWRzQmlk
aVJlb3JkZXJpbmcgPSAhbGluZUNvbnRlbnQudmlzdWFsT3JkZXJMaXN0LmlzRW1wdHkoKTsKKyAg
ICBhdXRvIGNvbnRlbnROZWVkc0JpZGlSZW9yZGVyaW5nID0gIWxpbmVMYXlvdXRSZXN1bHQuZGly
ZWN0aW9uYWxpdHkudmlzdWFsT3JkZXJMaXN0LmlzRW1wdHkoKTsKICAgICBpZiAoY29udGVudE5l
ZWRzQmlkaVJlb3JkZXJpbmcpCi0gICAgICAgIHByb2Nlc3NCaWRpQ29udGVudChsaW5lQ29udGVu
dCwgbGluZUJveCwgYm94ZXMpOworICAgICAgICBwcm9jZXNzQmlkaUNvbnRlbnQobGluZUxheW91
dFJlc3VsdCwgbGluZUJveCwgYm94ZXMpOwogICAgIGVsc2UKLSAgICAgICAgcHJvY2Vzc05vbkJp
ZGlDb250ZW50KGxpbmVDb250ZW50LCBsaW5lQm94LCBib3hlcyk7Ci0gICAgcHJvY2Vzc0Zsb2F0
Qm94ZXMobGluZUNvbnRlbnQpOworICAgICAgICBwcm9jZXNzTm9uQmlkaUNvbnRlbnQobGluZUxh
eW91dFJlc3VsdCwgbGluZUJveCwgYm94ZXMpOworICAgIHByb2Nlc3NGbG9hdEJveGVzKGxpbmVM
YXlvdXRSZXN1bHQpOwogCiAgICAgY29sbGVjdElua092ZXJmbG93Rm9yVGV4dERlY29yYXRpb25z
KGJveGVzKTsKICAgICBjb2xsZWN0SW5rT3ZlcmZsb3dGb3JJbmxpbmVCb3hlcyhib3hlcyk7CkBA
IC00MzUsMjAgKzQzNSwyMCBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YXBw
ZW5kSW5saW5lRGlzcGxheUJveEF0QmlkaUJvdW5kYXJ5KGNvbnN0IEJveAogICAgIH0pOwogfQog
Ci12b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc05vbkJpZGlDb250ZW50
KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQsIGNvbnN0IExpbmVC
b3gmIGxpbmVCb3gsIElubGluZURpc3BsYXk6OkJveGVzJiBib3hlcykKK3ZvaWQgSW5saW5lRGlz
cGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzTm9uQmlkaUNvbnRlbnQoY29uc3QgTGluZUJ1aWxk
ZXI6OkxpbmVMYXlvdXRSZXN1bHQmIGxpbmVMYXlvdXRSZXN1bHQsIGNvbnN0IExpbmVCb3gmIGxp
bmVCb3gsIElubGluZURpc3BsYXk6OkJveGVzJiBib3hlcykKIHsKICNpZm5kZWYgTkRFQlVHCiAg
ICAgYXV0byBoYXNDb250ZW50ID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBsaW5lUnVuIDogbGlu
ZUNvbnRlbnQucnVucykKKyAgICBmb3IgKGF1dG8mIGxpbmVSdW4gOiBsaW5lTGF5b3V0UmVzdWx0
LmlubGluZUNvbnRlbnQpCiAgICAgICAgIGhhc0NvbnRlbnQgPSBoYXNDb250ZW50IHx8IGxpbmVS
dW4uaXNDb250ZW50ZnVsKCk7Ci0gICAgQVNTRVJUKGxpbmVDb250ZW50LmlubGluZUJhc2VEaXJl
Y3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSIHx8ICFoYXNDb250ZW50KTsKKyAgICBBU1NFUlQo
bGluZUxheW91dFJlc3VsdC5kaXJlY3Rpb25hbGl0eS5pbmxpbmVCYXNlRGlyZWN0aW9uID09IFRl
eHREaXJlY3Rpb246OkxUUiB8fCAhaGFzQ29udGVudCk7CiAjZW5kaWYKICAgICBhdXRvIHdyaXRp
bmdNb2RlID0gcm9vdCgpLnN0eWxlKCkud3JpdGluZ01vZGUoKTsKICAgICBhdXRvIGNvbnRlbnRT
dGFydEluVmlzdWFsT3JkZXIgPSBtX2Rpc3BsYXlMaW5lLnRvcExlZnQoKTsKIAogICAgIGFwcGVu
ZFJvb3RJbmxpbmVCb3hEaXNwbGF5Qm94KGZsaXBSb290SW5saW5lQm94UmVjdFRvVmlzdWFsRm9y
V3JpdGluZ01vZGUobGluZUJveC5sb2dpY2FsUmVjdEZvclJvb3RJbmxpbmVCb3goKSwgd3JpdGlu
Z01vZGUpLCBsaW5lQm94LnJvb3RJbmxpbmVCb3goKS5oYXNDb250ZW50KCksIGJveGVzKTsKIAot
ICAgIGZvciAoYXV0byYgbGluZVJ1biA6IGxpbmVDb250ZW50LnJ1bnMpIHsKKyAgICBmb3IgKGF1
dG8mIGxpbmVSdW4gOiBsaW5lTGF5b3V0UmVzdWx0LmlubGluZUNvbnRlbnQpIHsKICAgICAgICAg
YXV0byYgbGF5b3V0Qm94ID0gbGluZVJ1bi5sYXlvdXRCb3goKTsKIAogICAgICAgICBhdXRvIHZp
c3VhbFJlY3RSZWxhdGl2ZVRvUm9vdCA9IFsmXShhdXRvIGxvZ2ljYWxSZWN0KSB7CkBAIC02NTUs
OSArNjU1LDkgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmFkanVzdFZpc3Vh
bEdlb21ldHJ5Rm9yRGlzcGxheUJveChzaXplX3QgZGlzcGwKICAgICAgICAgZGlzcGxheUJveC5z
ZXRIYXNDb250ZW50KCk7CiB9CiAKLXZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpw
cm9jZXNzQmlkaUNvbnRlbnQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29u
dGVudCwgY29uc3QgTGluZUJveCYgbGluZUJveCwgSW5saW5lRGlzcGxheTo6Qm94ZXMmIGJveGVz
KQordm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NCaWRpQ29udGVudChj
b25zdCBMaW5lQnVpbGRlcjo6TGluZUxheW91dFJlc3VsdCYgbGluZUxheW91dFJlc3VsdCwgY29u
c3QgTGluZUJveCYgbGluZUJveCwgSW5saW5lRGlzcGxheTo6Qm94ZXMmIGJveGVzKQogewotICAg
IEFTU0VSVChsaW5lQ29udGVudC52aXN1YWxPcmRlckxpc3Quc2l6ZSgpIDw9IGxpbmVDb250ZW50
LnJ1bnMuc2l6ZSgpKTsKKyAgICBBU1NFUlQobGluZUxheW91dFJlc3VsdC5kaXJlY3Rpb25hbGl0
eS52aXN1YWxPcmRlckxpc3Quc2l6ZSgpIDw9IGxpbmVMYXlvdXRSZXN1bHQuaW5saW5lQ29udGVu
dC5zaXplKCkpOwogCiAgICAgQW5jZXN0b3JTdGFjayBhbmNlc3RvclN0YWNrOwogICAgIGF1dG8g
ZGlzcGxheUJveFRyZWUgPSBEaXNwbGF5Qm94VHJlZSB7IH07CkBAIC02NzcsMTEgKzY3NywxMSBA
QCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc0JpZGlDb250ZW50KGNv
bnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udAogICAgICAgICBhcHBlbmRSb290SW5saW5lQm94RGlz
cGxheUJveChmbGlwUm9vdElubGluZUJveFJlY3RUb1Zpc3VhbEZvcldyaXRpbmdNb2RlKHJvb3RJ
bmxpbmVCb3hWaWRzdWFsUmVjdEluSW5saW5lRGlyZWN0aW9uLCByb290KCkuc3R5bGUoKS53cml0
aW5nTW9kZSgpKSwgbGluZUJveC5yb290SW5saW5lQm94KCkuaGFzQ29udGVudCgpLCBib3hlcyk7
CiAKICAgICAgICAgYXV0byBjb250ZW50UmlnaHRJbklubGluZURpcmVjdGlvblZpc3VhbE9yZGVy
ID0gY29udGVudFN0YXJ0SW5JbmxpbmVEaXJlY3Rpb25WaXN1YWxPcmRlcjsKLSAgICAgICAgYXV0
byYgcnVucyA9IGxpbmVDb250ZW50LnJ1bnM7Ci0gICAgICAgIGZvciAoYXV0byB2aXN1YWxPcmRl
ciA6IGxpbmVDb250ZW50LnZpc3VhbE9yZGVyTGlzdCkgewotICAgICAgICAgICAgQVNTRVJUKHJ1
bnNbdmlzdWFsT3JkZXJdLmJpZGlMZXZlbCgpICE9IElubGluZUl0ZW06Om9wYXF1ZUJpZGlMZXZl
bCk7CisgICAgICAgIGF1dG8mIGlubGluZUNvbnRlbnQgPSBsaW5lTGF5b3V0UmVzdWx0LmlubGlu
ZUNvbnRlbnQ7CisgICAgICAgIGZvciAoYXV0byB2aXN1YWxPcmRlciA6IGxpbmVMYXlvdXRSZXN1
bHQuZGlyZWN0aW9uYWxpdHkudmlzdWFsT3JkZXJMaXN0KSB7CisgICAgICAgICAgICBBU1NFUlQo
aW5saW5lQ29udGVudFt2aXN1YWxPcmRlcl0uYmlkaUxldmVsKCkgIT0gSW5saW5lSXRlbTo6b3Bh
cXVlQmlkaUxldmVsKTsKIAotICAgICAgICAgICAgYXV0byYgbGluZVJ1biA9IHJ1bnNbdmlzdWFs
T3JkZXJdOworICAgICAgICAgICAgYXV0byYgbGluZVJ1biA9IGlubGluZUNvbnRlbnRbdmlzdWFs
T3JkZXJdOwogICAgICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gbGluZVJ1bi5sYXlvdXRCb3go
KTsKIAogICAgICAgICAgICAgYXV0byBuZWVkc0Rpc3BsYXlCb3ggPSAhbGluZVJ1bi5pc1dvcmRC
cmVha09wcG9ydHVuaXR5KCkgJiYgIWxpbmVSdW4uaXNJbmxpbmVCb3hFbmQoKTsKQEAgLTgwMiw3
ICs4MDIsNyBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc0JpZGlD
b250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udAogICAgIGhhbmRsZUlubGluZUJveGVz
KCk7CiAKICAgICBhdXRvIGhhbmRsZVRyYWlsaW5nT3BlbklubGluZUJveGVzID0gWyZdIHsKLSAg
ICAgICAgZm9yIChhdXRvJiBsaW5lUnVuIDogbWFrZVJldmVyc2VkUmFuZ2UobGluZUNvbnRlbnQu
cnVucykpIHsKKyAgICAgICAgZm9yIChhdXRvJiBsaW5lUnVuIDogbWFrZVJldmVyc2VkUmFuZ2Uo
bGluZUxheW91dFJlc3VsdC5pbmxpbmVDb250ZW50KSkgewogICAgICAgICAgICAgaWYgKCFsaW5l
UnVuLmlzSW5saW5lQm94U3RhcnQoKSB8fCBsaW5lUnVuLmJpZGlMZXZlbCgpICE9IElubGluZUl0
ZW06Om9wYXF1ZUJpZGlMZXZlbCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IC8vIFRoZXNlIGFyZSB0cmFpbGluZyBpbmxpbmUgYm94IHN0YXJ0IHJ1bnMgKHdpdGhvdXQgdGhl
IGNsb3NpbmcgaW5saW5lIGJveCBlbmQgPHNwYW4+IDwtbGluZSBicmVha3MgaGVyZTwvc3Bhbj4p
LgpAQCAtODIwLDcgKzgyMCw3IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpw
cm9jZXNzQmlkaUNvbnRlbnQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250CiAgICAgaGFuZGxl
VHJhaWxpbmdPcGVuSW5saW5lQm94ZXMoKTsKIH0KIAotdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVu
dEJ1aWxkZXI6OnByb2Nlc3NGbG9hdEJveGVzKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVu
dCYpCit2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc0Zsb2F0Qm94ZXMo
Y29uc3QgTGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmKQogewogICAgIC8vIEZsb2F0IGJv
eGVzIGFyZSBub3QgcGFydCBvZiB0aGUgaW5saW5lIGNvbnRlbnQgc28gd2UgZG9uJ3QgY29uc3Ry
dWN0IGlubGluZSBkaXNwbGF5IGJveGVzIGZvciB0aGVtLgogICAgIC8vIEhvd2V2ZXIgYm94IGdl
b21ldHJ5IHN0aWxsIG5lZWRzIGZsaXBwaW5nIGZyb20gbG9naWNhbCB0byB2aXN1YWwuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVu
dEJ1aWxkZXIuaAppbmRleCBkYzhkNzIxNzBlNTIuLjNmNjk2MDhkNjQ3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9J
bmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVp
bGRlci5oCkBAIC00NCwxNSArNDQsMTUgQEAgY2xhc3MgSW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyIHsKIHB1YmxpYzoKICAgICBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIoY29uc3QgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQmLCBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmLCBjb25zdCBJbmxp
bmVEaXNwbGF5OjpMaW5lJiwgc2l6ZV90IGxpbmVJbmRleCk7CiAKLSAgICBJbmxpbmVEaXNwbGF5
OjpCb3hlcyBidWlsZChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmLCBjb25zdCBMaW5l
Qm94Jik7CisgICAgSW5saW5lRGlzcGxheTo6Qm94ZXMgYnVpbGQoY29uc3QgTGluZUJ1aWxkZXI6
OkxpbmVMYXlvdXRSZXN1bHQmLCBjb25zdCBMaW5lQm94Jik7CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBwcm9jZXNzTm9uQmlkaUNvbnRlbnQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50Jiwg
Y29uc3QgTGluZUJveCYsIElubGluZURpc3BsYXk6OkJveGVzJik7Ci0gICAgdm9pZCBwcm9jZXNz
QmlkaUNvbnRlbnQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiwgY29uc3QgTGluZUJv
eCYsIElubGluZURpc3BsYXk6OkJveGVzJik7Ci0gICAgdm9pZCBwcm9jZXNzRmxvYXRCb3hlcyhj
b25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmKTsKKyAgICB2b2lkIHByb2Nlc3NOb25CaWRp
Q29udGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUxheW91dFJlc3VsdCYsIGNvbnN0IExpbmVC
b3gmLCBJbmxpbmVEaXNwbGF5OjpCb3hlcyYpOworICAgIHZvaWQgcHJvY2Vzc0JpZGlDb250ZW50
KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lTGF5b3V0UmVzdWx0JiwgY29uc3QgTGluZUJveCYsIElu
bGluZURpc3BsYXk6OkJveGVzJik7CisgICAgdm9pZCBwcm9jZXNzRmxvYXRCb3hlcyhjb25zdCBM
aW5lQnVpbGRlcjo6TGluZUxheW91dFJlc3VsdCYpOwogICAgIHZvaWQgY29sbGVjdElua092ZXJm
bG93Rm9ySW5saW5lQm94ZXMoSW5saW5lRGlzcGxheTo6Qm94ZXMmKTsKICAgICB2b2lkIGNvbGxl
Y3RJbmtPdmVyZmxvd0ZvclRleHREZWNvcmF0aW9ucyhJbmxpbmVEaXNwbGF5OjpCb3hlcyYpOwot
ICAgIHZvaWQgdHJ1bmNhdGVGb3JFbGxpcHNpc1BvbGljeShMaW5lRW5kaW5nRWxsaXBzaXNQb2xp
Y3ksIGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIElubGluZURpc3BsYXk6OkJveGVz
Jik7CisgICAgdm9pZCB0cnVuY2F0ZUZvckVsbGlwc2lzUG9saWN5KExpbmVFbmRpbmdFbGxpcHNp
c1BvbGljeSwgY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVMYXlvdXRSZXN1bHQmLCBJbmxpbmVEaXNw
bGF5OjpCb3hlcyYpOwogCiAgICAgdm9pZCBhcHBlbmRUZXh0RGlzcGxheUJveChjb25zdCBMaW5l
OjpSdW4mLCBjb25zdCBJbmxpbmVSZWN0JiwgSW5saW5lRGlzcGxheTo6Qm94ZXMmKTsKICAgICB2
b2lkIGFwcGVuZFNvZnRMaW5lQnJlYWtEaXNwbGF5Qm94KGNvbnN0IExpbmU6OlJ1biYsIGNvbnN0
IElubGluZVJlY3QmLCBJbmxpbmVEaXNwbGF5OjpCb3hlcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVE
aXNwbGF5TGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuY3BwCmluZGV4
IDA0NjMzMDIzYmQzNy4uY2I2ZmEzYTlmNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5l
QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuY3BwCkBAIC01NSw3ICs1
NSw3IEBAIElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6SW5saW5lRGlzcGxheUxpbmVCdWlsZGVy
KGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0CiB7CiB9CiAKLUlubGluZURpc3BsYXlMaW5l
QnVpbGRlcjo6RW5jbG9zaW5nTGluZUdlb21ldHJ5IElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6
Y29sbGVjdEVuY2xvc2luZ0xpbmVHZW9tZXRyeShjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRl
bnQmIGxpbmVDb250ZW50LCBjb25zdCBMaW5lQm94JiBsaW5lQm94LCBjb25zdCBJbmxpbmVSZWN0
JiBsaW5lQm94UmVjdCkgY29uc3QKK0lubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6RW5jbG9zaW5n
TGluZUdlb21ldHJ5IElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6Y29sbGVjdEVuY2xvc2luZ0xp
bmVHZW9tZXRyeShjb25zdCBMaW5lQnVpbGRlcjo6TGluZUxheW91dFJlc3VsdCYgbGluZUxheW91
dFJlc3VsdCwgY29uc3QgTGluZUJveCYgbGluZUJveCwgY29uc3QgSW5saW5lUmVjdCYgbGluZUJv
eFJlY3QpIGNvbnN0CiB7CiAgICAgYXV0byYgcm9vdElubGluZUJveCA9IGxpbmVCb3gucm9vdElu
bGluZUJveCgpOwogICAgIGF1dG8gaW5pdGlhbEVuY2xvc2luZ1RvcEFuZEJvdHRvbSA9IFsmXSgp
IC0+IHN0ZDo6dHVwbGU8c3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0Piwgc3RkOjpvcHRp
b25hbDxJbmxpbmVMYXlvdXRVbml0Pj4gIHsKQEAgLTcxLDExICs3MSwxMSBAQCBJbmxpbmVEaXNw
bGF5TGluZUJ1aWxkZXI6OkVuY2xvc2luZ0xpbmVHZW9tZXRyeSBJbmxpbmVEaXNwbGF5TGluZUJ1
aWxkZXI6OmNvbGxlYwogICAgICAgICBhdXRvIHJlY3QgPSBsaW5lQm94UmVjdDsKICAgICAgICAg
YXV0byByb290SW5saW5lQm94V2lkdGggPSBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yUm9vdElubGlu
ZUJveCgpLndpZHRoKCk7CiAgICAgICAgIGF1dG8gaXNMZWZ0VG9SaWdodERpcmVjdGlvbiA9IHJv
b3QoKS5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKLSAgICAgICAgaWYgKGxpbmVD
b250ZW50LmhhbmdpbmdDb250ZW50LnNob3VsZENvbnRyaWJ1dGVUb1Njcm9sbGFibGVPdmVyZmxv
dykKLSAgICAgICAgICAgIHJlY3QuZXhwYW5kSG9yaXpvbnRhbGx5KGxpbmVDb250ZW50Lmhhbmdp
bmdDb250ZW50LndpZHRoKTsKKyAgICAgICAgaWYgKGxpbmVMYXlvdXRSZXN1bHQuaGFuZ2luZ0Nv
bnRlbnQuc2hvdWxkQ29udHJpYnV0ZVRvU2Nyb2xsYWJsZU92ZXJmbG93KQorICAgICAgICAgICAg
cmVjdC5leHBhbmRIb3Jpem9udGFsbHkobGluZUxheW91dFJlc3VsdC5oYW5naW5nQ29udGVudC5s
b2dpY2FsV2lkdGgpOwogICAgICAgICBlbHNlIGlmICghaXNMZWZ0VG9SaWdodERpcmVjdGlvbikg
ewogICAgICAgICAgICAgLy8gVGhpcyBpcyB0byBiYWxhbmNlIGhhbmdpbmcgUlRMIHRyYWlsaW5n
IGNvbnRlbnQuIFNlZSBMaW5lQm94QnVpbGRlcjo6YnVpbGQuCi0gICAgICAgICAgICByb290SW5s
aW5lQm94V2lkdGggLT0gbGluZUNvbnRlbnQuaGFuZ2luZ0NvbnRlbnQud2lkdGg7CisgICAgICAg
ICAgICByb290SW5saW5lQm94V2lkdGggLT0gbGluZUxheW91dFJlc3VsdC5oYW5naW5nQ29udGVu
dC5sb2dpY2FsV2lkdGg7CiAgICAgICAgIH0KICAgICAgICAgYXV0byByb290SW5saW5lQm94SG9y
aXpvbnRhbE92ZXJmbG93ID0gcm9vdElubGluZUJveFdpZHRoIC0gcmVjdC53aWR0aCgpOwogICAg
ICAgICBpZiAocm9vdElubGluZUJveEhvcml6b250YWxPdmVyZmxvdyA+IDApCkBAIC0xMjEsMTAg
KzEyMSwxMCBAQCBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OkVuY2xvc2luZ0xpbmVHZW9tZXRy
eSBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmNvbGxlYwogICAgIHJldHVybiB7IHsgZW5jbG9z
aW5nVG9wLnZhbHVlX29yKGxpbmVCb3hSZWN0LnRvcCgpKSwgZW5jbG9zaW5nQm90dG9tLnZhbHVl
X29yKGxpbmVCb3hSZWN0LnRvcCgpKSB9LCBjb250ZW50T3ZlcmZsb3dSZWN0IH07CiB9CiAKLUlu
bGluZURpc3BsYXk6OkxpbmUgSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpidWlsZChjb25zdCBM
aW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50LCBjb25zdCBMaW5lQm94JiBsaW5l
Qm94LCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0cmFpbnRzLCBib29s
IGxpbmVJc0Z1bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbikgY29uc3QKK0lubGluZURpc3Bs
YXk6OkxpbmUgSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpidWlsZChjb25zdCBMaW5lQnVpbGRl
cjo6TGluZUxheW91dFJlc3VsdCYgbGluZUxheW91dFJlc3VsdCwgY29uc3QgTGluZUJveCYgbGlu
ZUJveCwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50cywgYm9v
bCBsaW5lSXNGdWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgYXV0
byYgcm9vdElubGluZUJveCA9IGxpbmVCb3gucm9vdElubGluZUJveCgpOwotICAgIGF1dG8gaXNM
ZWZ0VG9SaWdodERpcmVjdGlvbiA9IGxpbmVDb250ZW50LmlubGluZUJhc2VEaXJlY3Rpb24gPT0g
VGV4dERpcmVjdGlvbjo6TFRSOworICAgIGF1dG8gaXNMZWZ0VG9SaWdodERpcmVjdGlvbiA9IGxp
bmVMYXlvdXRSZXN1bHQuZGlyZWN0aW9uYWxpdHkuaW5saW5lQmFzZURpcmVjdGlvbiA9PSBUZXh0
RGlyZWN0aW9uOjpMVFI7CiAgICAgYXV0byBsaW5lQm94TG9naWNhbFJlY3QgPSBsaW5lQm94Lmxv
Z2ljYWxSZWN0KCk7CiAgICAgYXV0byBsaW5lQm94VmlzdWFsTGVmdCA9IGlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24KICAgICAgICAgPyBsaW5lQm94TG9naWNhbFJlY3QubGVmdCgpCkBAIC0xMzMsMTAg
KzEzMywxMCBAQCBJbmxpbmVEaXNwbGF5OjpMaW5lIElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6
YnVpbGQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZQogICAgIGF1dG8gcm9vdElubGluZUJv
eFJlY3QgPSBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yUm9vdElubGluZUJveCgpOwogICAgIGF1dG8g
Y29udGVudFZpc3VhbE9mZnNldEluSW5saW5lRGlyZWN0aW9uID0gaXNMZWZ0VG9SaWdodERpcmVj
dGlvbgogICAgICAgICA/IHJvb3RJbmxpbmVCb3hSZWN0LmxlZnQoKQotICAgICAgICA6IGxpbmVC
b3hMb2dpY2FsUmVjdC53aWR0aCgpIC0gbGluZUNvbnRlbnQuY29udGVudExvZ2ljYWxSaWdodElu
Y2x1ZGluZ05lZ2F0aXZlTWFyZ2luOyAvLyBOb3RlIHRoYXQgd2l0aCBoYW5naW5nIGNvbnRlbnQg
bGluZUNvbnRlbnQuY29udGVudExvZ2ljYWxSaWdodCBpcyBub3QgdGhlIHNhbWUgYXMgcm9vdExp
bmVCb3hSZWN0LnJpZ2h0KCkuCisgICAgICAgIDogbGluZUJveExvZ2ljYWxSZWN0LndpZHRoKCkg
LSBsaW5lTGF5b3V0UmVzdWx0LmNvbnRlbnRHZW9tZXRyeS5sb2dpY2FsUmlnaHRJbmNsdWRpbmdO
ZWdhdGl2ZU1hcmdpbjsgLy8gTm90ZSB0aGF0IHdpdGggaGFuZ2luZyBjb250ZW50IGxpbmVMYXlv
dXRSZXN1bHQuY29udGVudEdlb21ldHJ5LmxvZ2ljYWxSaWdodCBpcyBub3QgdGhlIHNhbWUgYXMg
cm9vdExpbmVCb3hSZWN0LnJpZ2h0KCkuCiAKICAgICBhdXRvIGxpbmVCb3hWaXN1YWxSZWN0SW5J
bmxpbmVEaXJlY3Rpb24gPSBJbmxpbmVSZWN0IHsgbGluZUJveExvZ2ljYWxSZWN0LnRvcCgpLCBs
aW5lQm94VmlzdWFsTGVmdCwgbGluZUJveExvZ2ljYWxSZWN0LndpZHRoKCksIGxpbmVCb3hMb2dp
Y2FsUmVjdC5oZWlnaHQoKSB9OwotICAgIGF1dG8gZW5jbG9zaW5nTGluZUdlb21ldHJ5ID0gY29s
bGVjdEVuY2xvc2luZ0xpbmVHZW9tZXRyeShsaW5lQ29udGVudCwgbGluZUJveCwgbGluZUJveFZp
c3VhbFJlY3RJbklubGluZURpcmVjdGlvbik7CisgICAgYXV0byBlbmNsb3NpbmdMaW5lR2VvbWV0
cnkgPSBjb2xsZWN0RW5jbG9zaW5nTGluZUdlb21ldHJ5KGxpbmVMYXlvdXRSZXN1bHQsIGxpbmVC
b3gsIGxpbmVCb3hWaXN1YWxSZWN0SW5JbmxpbmVEaXJlY3Rpb24pOwogCiAgICAgYXV0byB3cml0
aW5nTW9kZSA9IHJvb3QoKS5zdHlsZSgpLndyaXRpbmdNb2RlKCk7CiAgICAgcmV0dXJuIElubGlu
ZURpc3BsYXk6OkxpbmUgeyBsaW5lQm94TG9naWNhbFJlY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlz
cGxheUxpbmVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5oCmluZGV4IGVkYTY5
OGJiYTI0Zi4uNGM1NmM3MTMzYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xh
c3MgSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyIHsKIHB1YmxpYzoKICAgICBJbmxpbmVEaXNwbGF5
TGluZUJ1aWxkZXIoY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmKTsKIAotICAgIElubGlu
ZURpc3BsYXk6OkxpbmUgYnVpbGQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiwgY29u
c3QgTGluZUJveCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYsIGJvb2wgbGlu
ZUlzRnVsbHlUcnVuY2F0ZWRJbkJsb2NrRGlyZWN0aW9uKSBjb25zdDsKKyAgICBJbmxpbmVEaXNw
bGF5OjpMaW5lIGJ1aWxkKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lTGF5b3V0UmVzdWx0JiwgY29u
c3QgTGluZUJveCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYsIGJvb2wgbGlu
ZUlzRnVsbHlUcnVuY2F0ZWRJbkJsb2NrRGlyZWN0aW9uKSBjb25zdDsKIAogICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gdHJhaWxpbmdFbGxpcHNpc1Zpc3VhbFJlY3RBZnRlclRy
dW5jYXRpb24oTGluZUVuZGluZ0VsbGlwc2lzUG9saWN5LCBjb25zdCBJbmxpbmVEaXNwbGF5OjpM
aW5lJiwgSW5saW5lRGlzcGxheTo6Qm94ZXMmLCBib29sIGlzTGFzdExpbmVXaXRoSW5saW5lQ29u
dGVudCk7CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgSW5saW5lRGlzcGxh
eTo6TGluZTo6RW5jbG9zaW5nVG9wQW5kQm90dG9tIGVuY2xvc2luZ1RvcEFuZEJvdHRvbTsKICAg
ICAgICAgSW5saW5lUmVjdCBjb250ZW50T3ZlcmZsb3dSZWN0OwogICAgIH07Ci0gICAgRW5jbG9z
aW5nTGluZUdlb21ldHJ5IGNvbGxlY3RFbmNsb3NpbmdMaW5lR2VvbWV0cnkoY29uc3QgTGluZUJ1
aWxkZXI6OkxpbmVDb250ZW50JiwgY29uc3QgTGluZUJveCYsIGNvbnN0IElubGluZVJlY3QmIGxp
bmVCb3hSZWN0KSBjb25zdDsKKyAgICBFbmNsb3NpbmdMaW5lR2VvbWV0cnkgY29sbGVjdEVuY2xv
c2luZ0xpbmVHZW9tZXRyeShjb25zdCBMaW5lQnVpbGRlcjo6TGluZUxheW91dFJlc3VsdCYsIGNv
bnN0IExpbmVCb3gmLCBjb25zdCBJbmxpbmVSZWN0JiBsaW5lQm94UmVjdCkgY29uc3Q7CiAKICAg
ICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0OyB9CiAgICAgY29uc3QgQm94JiBy
b290KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466592</attachid>
            <date>2023-06-05 06:17:12 -0700</date>
            <delta_ts>2023-06-05 08:48:43 -0700</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-257680-20230605061711.patch</filename>
            <type>text/plain</type>
            <size>45315</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA3OGMyNjI4NmE0NDc0NjJhMGY3ZWRlZmFhNjI0YmJhYWUyYWU4ZWY2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgMyBKdW4gMjAyMyAxNDoxNjo0NiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFtJRkNdIFJl
bmFtZSBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQgdG8gTGluZUxheW91dFJlc3VsdAogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NzY4MAoKUmV2aWV3ZWQgYnkgQW50
dGkgS29pdmlzdG8uCgpXaGlsZSB0aGlzIHN0cnVjdHVyZSBpbmRlZWQgc3RhcnRlZCBhcyBob2xk
aW5nIGNvbnRlbnQgKHJ1bnMgbW9zdGx5KSBvbiB0aGUgY3VycmVudCBsaW5lLCBvdmVyIHRoZSB5
ZWFycyBpdCBncmV3IGFuZCBub3cgaXQgY29udGFpbnMKYWxsIGtpbmRzIG9mIGluZm9ybWF0aW9u
IGFib3V0IHRoZSByZXN1bHQgb2YgdGhlIGxpbmUgbGF5b3V0LiBMZXQncyByZW5hbWUgaXQgdG8g
TGluZUxheW91dFJlc3VsdC4KClRoaXMgaXMgYWxzbyBpbiBwcmVwYXJhdGlvbiBmb3IgdHJhbnNm
b3JtaW5nIExpbmVCdWlsZGVyOjpjb21wdXRlZEludHJpbnNpY1dpZHRoIGludG8gcmVndWxhciBs
aW5lIGxheW91dC4KCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGlu
ZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZvckxpbmUpOgoqIFNvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0Lmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ0dlb21ldHJ5Ojpsb2dpY2FsVG9wRm9yTmV4dExpbmUgY29uc3QpOgoqIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdHZW9tZXRyeS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dDo6TGlu
ZUJveEJ1aWxkZXI6OkxpbmVCb3hCdWlsZGVyKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveEJ1
aWxkZXI6OmJ1aWxkKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveEJ1aWxkZXI6OmNvbnN0cnVj
dElubGluZUxldmVsQm94ZXMpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6YWRq
dXN0SW5saW5lQm94SGVpZ2h0c0ZvckxpbmVCb3hDb250YWluSWZBcHBsaWNhYmxlKToKKFdlYkNv
cmU6OkxheW91dDo6TGluZUJveEJ1aWxkZXI6OmNvbXB1dGVMaW5lQm94R2VvbWV0cnkgY29uc3Qp
OgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6YWRqdXN0T3V0c2lkZUxpc3RNYXJr
ZXJzUG9zaXRpb24pOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmg6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hC
dWlsZGVyOjppc0ZpcnN0TGluZSBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWls
ZGVyOjppc0xhc3RMaW5lIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveEJ1aWxkZXI6
OmxpbmVMYXlvdXRSZXN1bHQgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRl
cjo6bGluZUNvbnRlbnQgY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKFdlYkNvcmU6
OkxheW91dDo6TGluZUJ1aWxkZXI6OmxheW91dElubGluZUNvbnRlbnQpOgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmg6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxh
eS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmJ1aWxkKToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
RGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzTm9uQmlkaUNvbnRlbnQpOgooV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NCaWRpQ29udGVudCk6
CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc0Zs
b2F0Qm94ZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmg6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5
TGluZUJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxk
ZXI6OmNvbGxlY3RFbmNsb3NpbmdMaW5lR2VvbWV0cnkgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmJ1aWxkIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlM
aW5lQnVpbGRlci5oOgotLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3Bw
ICAgICAgICB8IDI4ICsrKystLS0tCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmggICAgICAgICAgfCAgMiArLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnku
Y3BwICAgICAgIHwgMTIgKystLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnku
aCAgICAgICAgIHwgIDIgKy0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwICAg
ICAgICAgICB8IDMyICsrKystLS0tLQogLi4uL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5o
ICAgICAgICAgICAgIHwgMTAgKy0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcCAg
ICAgICAgICAgICAgfCAyNCArKystLS0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmgg
ICAgICAgICAgICAgICAgfCA3MCArKysrKysrKysrKystLS0tLS0tCiAuLi4vZGlzcGxheS9Jbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwICAgfCAzNiArKysrKy0tLS0tCiAuLi4vZGlzcGxh
eS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaCAgICAgfCAxMCArLS0KIC4uLi9kaXNwbGF5
L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAgICAgICB8IDE2ICsrLS0tCiAuLi4vaW5saW5l
L2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmggfCAgNCArLQogMTIgZmlsZXMgY2hh
bmdlZCwgMTMwIGluc2VydGlvbnMoKyksIDExNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggN2EwODJmNDM3NDQ0
Li5mNTllZGQxMTYwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5jcHAKQEAgLTI3NywxNiArMjc3LDE2IEBAIElubGluZUxheW91dFJlc3VsdCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChjb25zdCBJbmxpbmVJdGVtcyYgaW5s
aW5lCiAgICAgd2hpbGUgKHRydWUpIHsKIAogICAgICAgICBhdXRvIGxpbmVJbml0aWFsUmVjdCA9
IElubGluZVJlY3QgeyBsaW5lTG9naWNhbFRvcCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxv
Z2ljYWxMZWZ0LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbFdpZHRoLCBmb3JtYXR0
aW5nR2VvbWV0cnkoKS5pbml0aWFsTGluZUhlaWdodCghcHJldmlvdXNMaW5lLmhhc192YWx1ZSgp
KSB9OwotICAgICAgICBhdXRvIGxpbmVDb250ZW50ID0gbGluZUJ1aWxkZXIubGF5b3V0SW5saW5l
Q29udGVudCh7IHsgbGVhZGluZ0lubGluZUl0ZW1Qb3NpdGlvbiwgbmVlZHNMYXlvdXRSYW5nZS5l
bmQgfSwgbGluZUluaXRpYWxSZWN0IH0sIHByZXZpb3VzTGluZSk7CisgICAgICAgIGF1dG8gbGlu
ZUxheW91dFJlc3VsdCA9IGxpbmVCdWlsZGVyLmxheW91dElubGluZUNvbnRlbnQoeyB7IGxlYWRp
bmdJbmxpbmVJdGVtUG9zaXRpb24sIG5lZWRzTGF5b3V0UmFuZ2UuZW5kIH0sIGxpbmVJbml0aWFs
UmVjdCB9LCBwcmV2aW91c0xpbmUpOwogCiAgICAgICAgIGF1dG8gbGluZUluZGV4ID0gcHJldmlv
dXNMaW5lID8gKHByZXZpb3VzTGluZS0+bGluZUluZGV4ICsgMSkgOiAwbHU7Ci0gICAgICAgIGF1
dG8gbGluZUxvZ2ljYWxSZWN0ID0gY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKGxpbmVJbmRl
eCwgbGluZUNvbnRlbnQsIGNvbnN0cmFpbnRzLCBpbmxpbmVMYXlvdXRTdGF0ZSwgbGF5b3V0UmVz
dWx0LmRpc3BsYXlDb250ZW50KTsKLSAgICAgICAgaWYgKGxpbmVDb250ZW50LmlzTGFzdExpbmVX
aXRoSW5saW5lQ29udGVudCkKLSAgICAgICAgICAgIGlubGluZUxheW91dFN0YXRlLnNldENsZWFy
R2FwQWZ0ZXJMYXN0TGluZShmb3JtYXR0aW5nR2VvbWV0cnkoKS5sb2dpY2FsVG9wRm9yTmV4dExp
bmUobGluZUNvbnRlbnQsIGxpbmVMb2dpY2FsUmVjdCwgZmxvYXRpbmdDb250ZXh0KSAtIGxpbmVM
b2dpY2FsUmVjdC5ib3R0b20oKSk7CisgICAgICAgIGF1dG8gbGluZUxvZ2ljYWxSZWN0ID0gY3Jl
YXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKGxpbmVJbmRleCwgbGluZUxheW91dFJlc3VsdCwgY29u
c3RyYWludHMsIGlubGluZUxheW91dFN0YXRlLCBsYXlvdXRSZXN1bHQuZGlzcGxheUNvbnRlbnQp
OworICAgICAgICBpZiAobGluZUxheW91dFJlc3VsdC5pc0ZpcnN0TGFzdC5pc0xhc3RMaW5lV2l0
aElubGluZUNvbnRlbnQpCisgICAgICAgICAgICBpbmxpbmVMYXlvdXRTdGF0ZS5zZXRDbGVhckdh
cEFmdGVyTGFzdExpbmUoZm9ybWF0dGluZ0dlb21ldHJ5KCkubG9naWNhbFRvcEZvck5leHRMaW5l
KGxpbmVMYXlvdXRSZXN1bHQsIGxpbmVMb2dpY2FsUmVjdCwgZmxvYXRpbmdDb250ZXh0KSAtIGxp
bmVMb2dpY2FsUmVjdC5ib3R0b20oKSk7CiAKLSAgICAgICAgYXV0byBsaW5lQ29udGVudEVuZCA9
IGxpbmVDb250ZW50LmNvbW1pdHRlZFJhbmdlLmVuZDsKKyAgICAgICAgYXV0byBsaW5lQ29udGVu
dEVuZCA9IGxpbmVMYXlvdXRSZXN1bHQuaW5saW5lSXRlbVJhbmdlLmVuZDsKICAgICAgICAgbGVh
ZGluZ0lubGluZUl0ZW1Qb3NpdGlvbiA9IGxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb25Gb3JOZXh0
TGluZShsaW5lQ29udGVudEVuZCwgcHJldmlvdXNMaW5lRW5kLCBuZWVkc0xheW91dFJhbmdlLmVu
ZCk7Ci0gICAgICAgIGF1dG8gaXNMYXN0TGluZSA9IGxlYWRpbmdJbmxpbmVJdGVtUG9zaXRpb24g
PT0gbmVlZHNMYXlvdXRSYW5nZS5lbmQgJiYgbGluZUNvbnRlbnQuc3VzcGVuZGVkRmxvYXRzLmlz
RW1wdHkoKTsKKyAgICAgICAgYXV0byBpc0xhc3RMaW5lID0gbGVhZGluZ0lubGluZUl0ZW1Qb3Np
dGlvbiA9PSBuZWVkc0xheW91dFJhbmdlLmVuZCAmJiBsaW5lTGF5b3V0UmVzdWx0LmZsb2F0Q29u
dGVudC5zdXNwZW5kZWRGbG9hdHMuaXNFbXB0eSgpOwogICAgICAgICBpZiAoaXNMYXN0TGluZSkg
ewogICAgICAgICAgICAgbGF5b3V0UmVzdWx0LnJhbmdlID0gIWlzUGFydGlhbExheW91dCA/IElu
bGluZUxheW91dFJlc3VsdDo6UmFuZ2U6OkZ1bGwgOiBJbmxpbmVMYXlvdXRSZXN1bHQ6OlJhbmdl
OjpGdWxsRnJvbURhbWFnZTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjk2LDggKzI5Niw4IEBA
IElubGluZUxheW91dFJlc3VsdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChj
b25zdCBJbmxpbmVJdGVtcyYgaW5saW5lCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
Ci0gICAgICAgIGxpbmVMb2dpY2FsVG9wID0gZm9ybWF0dGluZ0dlb21ldHJ5KCkubG9naWNhbFRv
cEZvck5leHRMaW5lKGxpbmVDb250ZW50LCBsaW5lTG9naWNhbFJlY3QsIGZsb2F0aW5nQ29udGV4
dCk7Ci0gICAgICAgIHByZXZpb3VzTGluZSA9IFByZXZpb3VzTGluZSB7IGxpbmVJbmRleCwgbGlu
ZUNvbnRlbnQudHJhaWxpbmdPdmVyZmxvd2luZ0NvbnRlbnRXaWR0aCwgIWxpbmVDb250ZW50LnJ1
bnMuaXNFbXB0eSgpICYmIGxpbmVDb250ZW50LnJ1bnMubGFzdCgpLmlzTGluZUJyZWFrKCksIGxp
bmVDb250ZW50LmlubGluZUJhc2VEaXJlY3Rpb24sIFdURk1vdmUobGluZUNvbnRlbnQuc3VzcGVu
ZGVkRmxvYXRzKSB9OworICAgICAgICBsaW5lTG9naWNhbFRvcCA9IGZvcm1hdHRpbmdHZW9tZXRy
eSgpLmxvZ2ljYWxUb3BGb3JOZXh0TGluZShsaW5lTGF5b3V0UmVzdWx0LCBsaW5lTG9naWNhbFJl
Y3QsIGZsb2F0aW5nQ29udGV4dCk7CisgICAgICAgIHByZXZpb3VzTGluZSA9IFByZXZpb3VzTGlu
ZSB7IGxpbmVJbmRleCwgbGluZUxheW91dFJlc3VsdC5jb250ZW50R2VvbWV0cnkudHJhaWxpbmdP
dmVyZmxvd2luZ0NvbnRlbnRXaWR0aCwgIWxpbmVMYXlvdXRSZXN1bHQuaW5saW5lQ29udGVudC5p
c0VtcHR5KCkgJiYgbGluZUxheW91dFJlc3VsdC5pbmxpbmVDb250ZW50Lmxhc3QoKS5pc0xpbmVC
cmVhaygpLCBsaW5lTGF5b3V0UmVzdWx0LmRpcmVjdGlvbmFsaXR5LmlubGluZUJhc2VEaXJlY3Rp
b24sIFdURk1vdmUobGluZUxheW91dFJlc3VsdC5mbG9hdENvbnRlbnQuc3VzcGVuZGVkRmxvYXRz
KSB9OwogICAgICAgICBwcmV2aW91c0xpbmVFbmQgPSBsaW5lQ29udGVudEVuZDsKICAgICB9CiAg
ICAgcmV0dXJuIGxheW91dFJlc3VsdDsKQEAgLTU1MSw3ICs1NTEsNyBAQCBzdGF0aWMgTGluZUVu
ZGluZ0VsbGlwc2lzUG9saWN5IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeShjb25zdCBSZW5kZXJT
dHlsZSYgcm9vdAogICAgIHJldHVybiBMaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3k6Ok5vOwogfQog
Ci1JbmxpbmVSZWN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVu
dEZvckxpbmUoc2l6ZV90IGxpbmVJbmRleCwgY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50
JiBsaW5lQ29udGVudCwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiBjb25zdHJh
aW50cywgY29uc3QgSW5saW5lTGF5b3V0U3RhdGUmIGlubGluZUxheW91dFN0YXRlLCBJbmxpbmVE
aXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29udGVudCkKK0lubGluZVJlY3QgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZShzaXplX3QgbGluZUluZGV4
LCBjb25zdCBMaW5lQnVpbGRlcjo6TGF5b3V0UmVzdWx0JiBsaW5lTGF5b3V0UmVzdWx0LCBjb25z
dCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0cmFpbnRzLCBjb25zdCBJbmxpbmVM
YXlvdXRTdGF0ZSYgaW5saW5lTGF5b3V0U3RhdGUsIElubGluZURpc3BsYXk6OkNvbnRlbnQmIGRp
c3BsYXlDb250ZW50KQogewogICAgIGF1dG8gbnVtYmVyT2ZWaXNpYmxlTGluZXNBbGxvd2VkID0g
WyZdICgpIC0+IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB7CiAgICAgICAgIGlmIChhdXRvIGxpbmVD
bGFtcCA9IGlubGluZUxheW91dFN0YXRlLnBhcmVudEJsb2NrTGF5b3V0U3RhdGUoKS5saW5lQ2xh
bXAoKSkKQEAgLTU2MSwxNiArNTYxLDE2IEBAIElubGluZVJlY3QgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZShzaXplX3QgbGluZUluZGV4CiAKICAg
ICBhdXRvIGVsbGlwc2lzUG9saWN5ID0gbGluZUVuZGluZ0VsbGlwc2lzUG9saWN5KHJvb3QoKS5z
dHlsZSgpLCBsaW5lSW5kZXgsIG51bWJlck9mVmlzaWJsZUxpbmVzQWxsb3dlZCk7CiAgICAgYXV0
byBsaW5lSXNGdWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24gPSBudW1iZXJPZlZpc2libGVM
aW5lc0FsbG93ZWQgJiYgbGluZUluZGV4ICsgMSA+ICpudW1iZXJPZlZpc2libGVMaW5lc0FsbG93
ZWQ7Ci0gICAgYXV0byBsaW5lQm94ID0gTGluZUJveEJ1aWxkZXIgeyAqdGhpcywgaW5saW5lTGF5
b3V0U3RhdGUsIGxpbmVDb250ZW50IH0uYnVpbGQobGluZUluZGV4KTsKLSAgICBhdXRvIGRpc3Bs
YXlMaW5lID0gSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyIHsgKnRoaXMgfS5idWlsZChsaW5lQ29u
dGVudCwgbGluZUJveCwgY29uc3RyYWludHMsIGxpbmVJc0Z1bGx5VHJ1bmNhdGVkSW5CbG9ja0Rp
cmVjdGlvbik7Ci0gICAgYXV0byBib3hlcyA9IElubGluZURpc3BsYXlDb250ZW50QnVpbGRlciB7
ICp0aGlzLCBmb3JtYXR0aW5nU3RhdGUoKSwgZGlzcGxheUxpbmUsIGxpbmVJbmRleCB9LmJ1aWxk
KGxpbmVDb250ZW50LCBsaW5lQm94KTsKLSAgICBpZiAoYXV0byBlbGxpcHNpc1JlY3QgPSBJbmxp
bmVEaXNwbGF5TGluZUJ1aWxkZXI6OnRyYWlsaW5nRWxsaXBzaXNWaXN1YWxSZWN0QWZ0ZXJUcnVu
Y2F0aW9uKGVsbGlwc2lzUG9saWN5LCBkaXNwbGF5TGluZSwgYm94ZXMsIGxpbmVDb250ZW50Lmlz
TGFzdExpbmVXaXRoSW5saW5lQ29udGVudCkpCisgICAgYXV0byBsaW5lQm94ID0gTGluZUJveEJ1
aWxkZXIgeyAqdGhpcywgaW5saW5lTGF5b3V0U3RhdGUsIGxpbmVMYXlvdXRSZXN1bHQgfS5idWls
ZChsaW5lSW5kZXgpOworICAgIGF1dG8gZGlzcGxheUxpbmUgPSBJbmxpbmVEaXNwbGF5TGluZUJ1
aWxkZXIgeyAqdGhpcyB9LmJ1aWxkKGxpbmVMYXlvdXRSZXN1bHQsIGxpbmVCb3gsIGNvbnN0cmFp
bnRzLCBsaW5lSXNGdWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24pOworICAgIGF1dG8gYm94
ZXMgPSBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIgeyAqdGhpcywgZm9ybWF0dGluZ1N0YXRl
KCksIGRpc3BsYXlMaW5lLCBsaW5lSW5kZXggfS5idWlsZChsaW5lTGF5b3V0UmVzdWx0LCBsaW5l
Qm94KTsKKyAgICBpZiAoYXV0byBlbGxpcHNpc1JlY3QgPSBJbmxpbmVEaXNwbGF5TGluZUJ1aWxk
ZXI6OnRyYWlsaW5nRWxsaXBzaXNWaXN1YWxSZWN0QWZ0ZXJUcnVuY2F0aW9uKGVsbGlwc2lzUG9s
aWN5LCBkaXNwbGF5TGluZSwgYm94ZXMsIGxpbmVMYXlvdXRSZXN1bHQuaXNGaXJzdExhc3QuaXNM
YXN0TGluZVdpdGhJbmxpbmVDb250ZW50KSkKICAgICAgICAgZGlzcGxheUxpbmUuc2V0RWxsaXBz
aXNWaXN1YWxSZWN0KCplbGxpcHNpc1JlY3QpOwogCiAgICAgZGlzcGxheUNvbnRlbnQuYm94ZXMu
YXBwZW5kVmVjdG9yKFdURk1vdmUoYm94ZXMpKTsKICAgICBkaXNwbGF5Q29udGVudC5saW5lcy5h
cHBlbmQoZGlzcGxheUxpbmUpOwogICAgIGF1dG8gdXBkYXRlQm94R2VvbWV0cnlGb3JQbGFjZWRG
bG9hdHMgPSBbJl0gewotICAgICAgICBmb3IgKGF1dG8mIGZsb2F0SXRlbSA6IGxpbmVDb250ZW50
LnBsYWNlZEZsb2F0cykgeworICAgICAgICBmb3IgKGF1dG8mIGZsb2F0SXRlbSA6IGxpbmVMYXlv
dXRSZXN1bHQuZmxvYXRDb250ZW50LnBsYWNlZEZsb2F0cykgewogICAgICAgICAgICAgaWYgKCFm
bG9hdEl0ZW0ubGF5b3V0Qm94KCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgbm90IGJlIHBsYWNpbmcgaW50cnVz
aXZlIGZsb2F0cyBjb21pbmcgZnJvbSBwYXJlbnQgQkZDLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggNWNiYWRhNTFhNmE1Li45MWYwNzY0NzYz
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaApA
QCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZVdpZHRoQW5kTWFyZ2lu
KGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYpOwogCiAgICAgdm9pZCBj
b2xsZWN0Q29udGVudElmTmVlZGVkKCk7Ci0gICAgSW5saW5lUmVjdCBjcmVhdGVEaXNwbGF5Q29u
dGVudEZvckxpbmUoc2l6ZV90IGxpbmVJbmRleCwgY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250
ZW50JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgY29uc3QgSW5saW5lTGF5
b3V0U3RhdGUmLCBJbmxpbmVEaXNwbGF5OjpDb250ZW50Jik7CisgICAgSW5saW5lUmVjdCBjcmVh
dGVEaXNwbGF5Q29udGVudEZvckxpbmUoc2l6ZV90IGxpbmVJbmRleCwgY29uc3QgTGluZUJ1aWxk
ZXI6OkxheW91dFJlc3VsdCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYsIGNv
bnN0IElubGluZUxheW91dFN0YXRlJiwgSW5saW5lRGlzcGxheTo6Q29udGVudCYpOwogICAgIHZv
aWQgcmVzZXRHZW9tZXRyeUZvckNsYW1wZWRDb250ZW50KGNvbnN0IElubGluZUl0ZW1SYW5nZSYg
bmVlZHNEaXNwbGF5Q29udGVudFJhbmdlLCBjb25zdCBMaW5lQnVpbGRlcjo6U3VzcGVuZGVkRmxv
YXRMaXN0JiBzdXNwZW5kZWRGbG9hdHMsIExheW91dFBvaW50IHRvcGxlZnQpOwogCiAgICAgY29u
c3QgSW5saW5lRGFtYWdlKiBtX2xpbmVEYW1hZ2UgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCAzNmI0MDBkNDFj
YzQuLjE5MDQ3NzczNzliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwCkBAIC00NywxNSArNDcsMTUgQEAgSW5saW5lRm9ybWF0dGluZ0dl
b21ldHJ5OjpJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkoY29uc3QgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQKIHsKIH0KIAotSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6
OmxvZ2ljYWxUb3BGb3JOZXh0TGluZShjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxp
bmVDb250ZW50LCBjb25zdCBJbmxpbmVSZWN0JiBsaW5lTG9naWNhbFJlY3QsIGNvbnN0IEZsb2F0
aW5nQ29udGV4dCYgZmxvYXRpbmdDb250ZXh0KSBjb25zdAorSW5saW5lTGF5b3V0VW5pdCBJbmxp
bmVGb3JtYXR0aW5nR2VvbWV0cnk6OmxvZ2ljYWxUb3BGb3JOZXh0TGluZShjb25zdCBMaW5lQnVp
bGRlcjo6TGF5b3V0UmVzdWx0JiBsaW5lTGF5b3V0UmVzdWx0LCBjb25zdCBJbmxpbmVSZWN0JiBs
aW5lTG9naWNhbFJlY3QsIGNvbnN0IEZsb2F0aW5nQ29udGV4dCYgZmxvYXRpbmdDb250ZXh0KSBj
b25zdAogewotICAgIGF1dG8gZGlkTWFuYWdlVG9QbGFjZUlubGluZUNvbnRlbnRPckZsb2F0ID0g
IWxpbmVDb250ZW50LmNvbW1pdHRlZFJhbmdlLmlzRW1wdHkoKTsKKyAgICBhdXRvIGRpZE1hbmFn
ZVRvUGxhY2VJbmxpbmVDb250ZW50T3JGbG9hdCA9ICFsaW5lTGF5b3V0UmVzdWx0LmlubGluZUl0
ZW1SYW5nZS5pc0VtcHR5KCk7CiAgICAgaWYgKGRpZE1hbmFnZVRvUGxhY2VJbmxpbmVDb250ZW50
T3JGbG9hdCkgewogICAgICAgICAvLyBOb3JtYWxseSB0aGUgbmV4dCBsaW5lJ3MgbG9naWNhbCB0
b3AgaXMgdGhlIHByZXZpb3VzIGxpbmUncyBsb2dpY2FsIGJvdHRvbSwgYnV0IHdoZW4gdGhlIGxp
bmUgZW5kcwogICAgICAgICAvLyB3aXRoIHRoZSBjbGVhciBwcm9wZXJ0eSBzZXQsIHRoZSBuZXh0
IGxpbmUgbmVlZHMgdG8gY2xlYXIgdGhlIGV4aXN0aW5nIGZsb2F0cy4KLSAgICAgICAgaWYgKGxp
bmVDb250ZW50LnJ1bnMuaXNFbXB0eSgpKQorICAgICAgICBpZiAobGluZUxheW91dFJlc3VsdC5p
bmxpbmVDb250ZW50LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBsaW5lTG9naWNhbFJl
Y3QuYm90dG9tKCk7Ci0gICAgICAgIGF1dG8mIGxhc3RSdW5MYXlvdXRCb3ggPSBsaW5lQ29udGVu
dC5ydW5zLmxhc3QoKS5sYXlvdXRCb3goKTsKKyAgICAgICAgYXV0byYgbGFzdFJ1bkxheW91dEJv
eCA9IGxpbmVMYXlvdXRSZXN1bHQuaW5saW5lQ29udGVudC5sYXN0KCkubGF5b3V0Qm94KCk7CiAg
ICAgICAgIGlmICghbGFzdFJ1bkxheW91dEJveC5oYXNGbG9hdENsZWFyKCkpCiAgICAgICAgICAg
ICByZXR1cm4gbGluZUxvZ2ljYWxSZWN0LmJvdHRvbSgpOwogICAgICAgICBhdXRvIHBvc2l0aW9u
V2l0aENsZWFyYW5jZSA9IGZsb2F0aW5nQ29udGV4dC52ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFy
YW5jZShsYXN0UnVuTGF5b3V0Qm94LCBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94
KGxhc3RSdW5MYXlvdXRCb3gpKTsKQEAgLTY3LDggKzY3LDggQEAgSW5saW5lTGF5b3V0VW5pdCBJ
bmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OmxvZ2ljYWxUb3BGb3JOZXh0TGluZShjb25zdCBMaW5l
QnVpbGQKICAgICBhdXRvIGludHJ1c2l2ZUZsb2F0Qm90dG9tID0gWyZdKCkgLT4gSW5saW5lTGF5
b3V0VW5pdCB7CiAgICAgICAgIC8vIEZsb2F0cyBtdXN0IGhhdmUgcHJldmVudGVkIHVzIHBsYWNp
bmcgYW55IGNvbnRlbnQgb24gdGhlIGxpbmUuCiAgICAgICAgIC8vIE1vdmUgdGhlIG5leHQgbGlu
ZSBiZWxvdyB0aGUgaW50cnVzaXZlIGZsb2F0KHMpLgotICAgICAgICBBU1NFUlQobGluZUNvbnRl
bnQucnVucy5pc0VtcHR5KCkgfHwgbGluZUNvbnRlbnQucnVuc1swXS5pc0xpbmVTcGFubmluZ0lu
bGluZUJveFN0YXJ0KCkpOwotICAgICAgICBBU1NFUlQobGluZUNvbnRlbnQuaGFzSW50cnVzaXZl
RmxvYXQpOworICAgICAgICBBU1NFUlQobGluZUxheW91dFJlc3VsdC5pbmxpbmVDb250ZW50Lmlz
RW1wdHkoKSB8fCBsaW5lTGF5b3V0UmVzdWx0LmlubGluZUNvbnRlbnRbMF0uaXNMaW5lU3Bhbm5p
bmdJbmxpbmVCb3hTdGFydCgpKTsKKyAgICAgICAgQVNTRVJUKGxpbmVMYXlvdXRSZXN1bHQuZmxv
YXRDb250ZW50Lmhhc0ludHJ1c2l2ZUZsb2F0KTsKICAgICAgICAgLy8gRklYTUU6IE1vdmluZyB0
aGUgYm90dG9tIHBvc2l0aW9uIGJ5IHRoZSBpbml0aWFsIGxpbmUgaGVpZ2h0IG1heSBiZSB0b28g
bXVjaCBtZWFuaW5nIHRoYXQgd2UgbWlzcyB2ZXJ0aWNhbCBwb3NpdGlvbnMgd2hlcmUgYXRvbWlj
IGlubGluZSBjb250ZW50IGNvdWxkIHZlcnkgd2VsbCBmaXQuCiAgICAgICAgIC8vIFRoZSBzcGVj
IGlzIHVuY2xlYXIgb2YgaG93IG11Y2ggd2Ugc2hvdWxkIG1vdmUgZG93biBhdCB0aGlzIHBvaW50
IGFuZCB3aGlsZSAxcHggc2hvdWxkIGJlIHRoZSBtb3N0IHByZWNpc2UgaXQncyBhbHNvIHJhdGhl
ciBleHBlbnNpdmUuCiAgICAgICAgIGF1dG8gaW5mbGF0ZWRMaW5lUmVjdEJvdHRvbSA9IGxpbmVM
b2dpY2FsUmVjdC50b3AoKSArIGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLnN0eWxlKCkuY29t
cHV0ZWRMaW5lSGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdHZW9tZXRyeS5oCmluZGV4IGNhNGM2OTcyZTliNS4uNWQwNmY0YmE5NTRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVG
b3JtYXR0aW5nR2VvbWV0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaApAQCAtNDAsNyArNDAs
NyBAQCBjbGFzcyBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkgOiBwdWJsaWMgRm9ybWF0dGluZ0dl
b21ldHJ5IHsKIHB1YmxpYzoKICAgICBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkoY29uc3QgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQmKTsKIAotICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFRv
cEZvck5leHRMaW5lKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IElubGlu
ZVJlY3QmIGxpbmVMb2dpY2FsUmVjdCwgY29uc3QgRmxvYXRpbmdDb250ZXh0JikgY29uc3Q7Cisg
ICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yTmV4dExpbmUoY29uc3QgTGluZUJ1aWxk
ZXI6OkxheW91dFJlc3VsdCYsIGNvbnN0IElubGluZVJlY3QmIGxpbmVMb2dpY2FsUmVjdCwgY29u
c3QgRmxvYXRpbmdDb250ZXh0JikgY29uc3Q7CiAKICAgICBDb250ZW50SGVpZ2h0QW5kTWFyZ2lu
IGlubGluZUJsb2NrQ29udGVudEhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jp
em9udGFsQ29uc3RyYWludHMmLCBjb25zdCBPdmVycmlkZGVuVmVydGljYWxWYWx1ZXMmKSBjb25z
dDsKICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gaW5saW5lQmxvY2tDb250ZW50V2lkdGhBbmRN
YXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3Zl
cnJpZGRlbkhvcml6b250YWxWYWx1ZXMmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmVCb3hCdWlsZGVyLmNwcAppbmRleCBiM2U5ODBjNmY5M2IuLjBhOTFlNjRlMDJhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcApAQCAtMzYs
MjAgKzM2LDIwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAot
TGluZUJveEJ1aWxkZXI6OkxpbmVCb3hCdWlsZGVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250
ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgY29uc3QgSW5saW5lTGF5b3V0U3RhdGUmIGlu
bGluZUxheW91dFN0YXRlLCBjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250
ZW50KQorTGluZUJveEJ1aWxkZXI6OkxpbmVCb3hCdWlsZGVyKGNvbnN0IElubGluZUZvcm1hdHRp
bmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgY29uc3QgSW5saW5lTGF5b3V0U3Rh
dGUmIGlubGluZUxheW91dFN0YXRlLCBjb25zdCBMaW5lQnVpbGRlcjo6TGF5b3V0UmVzdWx0JiBs
aW5lTGF5b3V0UmVzdWx0KQogICAgIDogbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dChpbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCkKICAgICAsIG1faW5saW5lTGF5b3V0U3RhdGUoaW5saW5lTGF5b3V0
U3RhdGUpCi0gICAgLCBtX2xpbmVDb250ZW50KGxpbmVDb250ZW50KQorICAgICwgbV9saW5lTGF5
b3V0UmVzdWx0KGxpbmVMYXlvdXRSZXN1bHQpCiB7CiB9CiAKIExpbmVCb3ggTGluZUJveEJ1aWxk
ZXI6OmJ1aWxkKHNpemVfdCBsaW5lSW5kZXgpCiB7Ci0gICAgYXV0byYgbGluZUNvbnRlbnQgPSB0
aGlzLT5saW5lQ29udGVudCgpOworICAgIGF1dG8mIGxpbmVMYXlvdXRSZXN1bHQgPSB0aGlzLT5s
aW5lTGF5b3V0UmVzdWx0KCk7CiAgICAgLy8gRklYTUU6IFRoZSBvdmVyZmxvd2luZyBoYW5naW5n
IGNvbnRlbnQgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIGluayBvdmVyZmxvdy4KICAgICBhdXRvIGNv
bnRlbnRMb2dpY2FsV2lkdGggPSBbJl0gewotICAgICAgICBpZiAobGluZUNvbnRlbnQuaW5saW5l
QmFzZURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCi0gICAgICAgICAgICByZXR1cm4g
bGluZUNvbnRlbnQuY29udGVudExvZ2ljYWxXaWR0aCAtIGxpbmVDb250ZW50LmhhbmdpbmdDb250
ZW50LndpZHRoOworICAgICAgICBpZiAobGluZUxheW91dFJlc3VsdC5kaXJlY3Rpb25hbGl0eS5p
bmxpbmVCYXNlRGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKKyAgICAgICAgICAgIHJl
dHVybiBsaW5lTGF5b3V0UmVzdWx0LmNvbnRlbnRHZW9tZXRyeS5sb2dpY2FsV2lkdGggLSBsaW5l
TGF5b3V0UmVzdWx0LmhhbmdpbmdDb250ZW50LmxvZ2ljYWxXaWR0aDsKICAgICAgICAgLy8gRklY
TUU6IEN1cnJlbnRseSBjbGllbnRzIG9mIHRoZSBpbmxpbmUgaXRlcmF0b3IgaW50ZXJmYWNlIChl
ZGl0aW5nLCBzZWxlY3Rpb24sIERPTSBldGMpIGNhbid0IGRlYWwgd2l0aAogICAgICAgICAvLyBo
YW5naW5nIGNvbnRlbnQgb2Zmc2V0cyB3aGVuIHRoZXkgYWZmZWN0IHRoZSByZXN0IG9mIHRoZSBj
b250ZW50LgogICAgICAgICAvLyBJbiBsZWZ0LXRvLXJpZ2h0IGlubGluZSBkaXJlY3Rpb24sIGhh
bmdpbmcgY29udGVudCBpcyBhbHdheXMgdHJhaWxpbmcgaGVuY2UgdGhlIHdpZHRoIGRvZXMgbm90
IGltcG9zZSBvZmZzZXQgb24gdGhlIHJlc3Qgb2YgdGhlIGNvbnRlbnQKQEAgLTU3LDkgKzU3LDkg
QEAgTGluZUJveCBMaW5lQm94QnVpbGRlcjo6YnVpbGQoc2l6ZV90IGxpbmVJbmRleCkKICAgICAg
ICAgLy8gV2hhdCdzIG1pc3NpbmcgaXMgYSB3YXkgdG8gdGVsbCB0aGF0IHdoaWxlIHRoZSBjb250
ZW50IHN0YXJ0cyBhdCB0aGUgbGVmdCBzaWRlIG9mIHRoZSAodmlzdWFsbHkgbGVhZGluZykgaGFu
Z2luZyBjb250ZW50CiAgICAgICAgIC8vIHRoZSByb290IGlubGluZSBib3ggaGFzIGFuIG9mZnNl
dCwgdGhlIHdpZHRoIG9mIHRoZSBoYW5naW5nIGNvbnRlbnQgKGVzc2VudGlhbGx5IGRlY291cGxp
bmcgdGhlIGNvbnRlbnQgYW5kIHRoZSByb290IGlubGluZSBib3ggdmlzdWFsIGxlZnQpLgogICAg
ICAgICAvLyBGb3Igbm93IGp1c3QgaW5jbHVkZSB0aGUgaGFuZ2luZyBjb250ZW50IGluIHRoZSBy
b290IGlubGluZSBib3ggYXMgaWYgaXQgd2FzIG5vdCBoYW5naW5nICh0aGlzIGlzIGhvdyBsZWdh
Y3kgbGluZSBsYXlvdXQgd29ya3MpLgotICAgICAgICByZXR1cm4gbGluZUNvbnRlbnQuY29udGVu
dExvZ2ljYWxXaWR0aDsKKyAgICAgICAgcmV0dXJuIGxpbmVMYXlvdXRSZXN1bHQuY29udGVudEdl
b21ldHJ5LmxvZ2ljYWxXaWR0aDsKICAgICB9OwotICAgIGF1dG8gbGluZUJveCA9IExpbmVCb3gg
eyByb290Qm94KCksIGxpbmVDb250ZW50LmNvbnRlbnRMb2dpY2FsTGVmdCwgY29udGVudExvZ2lj
YWxXaWR0aCgpLCBsaW5lSW5kZXgsIGxpbmVDb250ZW50Lm5vblNwYW5uaW5nSW5saW5lTGV2ZWxC
b3hDb3VudCB9OworICAgIGF1dG8gbGluZUJveCA9IExpbmVCb3ggeyByb290Qm94KCksIGxpbmVM
YXlvdXRSZXN1bHQuY29udGVudEdlb21ldHJ5LmxvZ2ljYWxMZWZ0LCBjb250ZW50TG9naWNhbFdp
ZHRoKCksIGxpbmVJbmRleCwgbGluZUxheW91dFJlc3VsdC5ub25TcGFubmluZ0lubGluZUxldmVs
Qm94Q291bnQgfTsKICAgICBjb25zdHJ1Y3RJbmxpbmVMZXZlbEJveGVzKGxpbmVCb3gpOwogICAg
IGFkanVzdElkZW9ncmFwaGljQmFzZWxpbmVJZkFwcGxpY2FibGUobGluZUJveCk7CiAgICAgYWRq
dXN0SW5saW5lQm94SGVpZ2h0c0ZvckxpbmVCb3hDb250YWluSWZBcHBsaWNhYmxlKGxpbmVCb3gp
OwpAQCAtMzMwLDkgKzMzMCw5IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbnN0cnVjdElubGlu
ZUxldmVsQm94ZXMoTGluZUJveCYgbGluZUJveCkKICAgICB9OwogCiAgICAgYXV0byBsaW5lSGFz
Q29udGVudCA9IGZhbHNlOwotICAgIGF1dG8mIHJ1bnMgPSBsaW5lQ29udGVudCgpLnJ1bnM7Ci0g
ICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IHJ1bnMuc2l6ZSgpOyArK2luZGV4KSB7
Ci0gICAgICAgIGF1dG8mIHJ1biA9IHJ1bnNbaW5kZXhdOworICAgIGF1dG8mIGlubGluZUNvbnRl
bnQgPSBsaW5lTGF5b3V0UmVzdWx0KCkuaW5saW5lQ29udGVudDsKKyAgICBmb3IgKHNpemVfdCBp
bmRleCA9IDA7IGluZGV4IDwgaW5saW5lQ29udGVudC5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAg
ICAgYXV0byYgcnVuID0gaW5saW5lQ29udGVudFtpbmRleF07CiAgICAgICAgIGF1dG8mIGxheW91
dEJveCA9IHJ1bi5sYXlvdXRCb3goKTsKICAgICAgICAgYXV0byYgc3R5bGUgPSBzdHlsZVRvVXNl
KGxheW91dEJveCk7CiAgICAgICAgIGF1dG8gcnVuSGFzQ29udGVudCA9IFsmXSAoKSAtPiBib29s
IHsKQEAgLTM4Niw3ICszODYsNyBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpjb25zdHJ1Y3RJbmxp
bmVMZXZlbEJveGVzKExpbmVCb3gmIGxpbmVCb3gpCiAgICAgICAgICAgICBhdXRvIG1hcmdpblN0
YXJ0ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpLm1hcmdp
blN0YXJ0KCk7CiAgICAgICAgICAgICBsb2dpY2FsTGVmdCArPSBzdGQ6Om1heCgwX2x1LCBtYXJn
aW5TdGFydCk7CiAgICAgICAgICAgICBhdXRvIGluaXRpYWxMb2dpY2FsV2lkdGggPSByb290SW5s
aW5lQm94LmxvZ2ljYWxSaWdodCgpIC0gbG9naWNhbExlZnQ7Ci0gICAgICAgICAgICBBU1NFUlQo
aW5pdGlhbExvZ2ljYWxXaWR0aCA+PSAwIHx8IGxpbmVDb250ZW50KCkuaGFuZ2luZ0NvbnRlbnQu
d2lkdGggfHwgc3RkOjppc25hbihpbml0aWFsTG9naWNhbFdpZHRoKSk7CisgICAgICAgICAgICBB
U1NFUlQoaW5pdGlhbExvZ2ljYWxXaWR0aCA+PSAwIHx8IGxpbmVMYXlvdXRSZXN1bHQoKS5oYW5n
aW5nQ29udGVudC5sb2dpY2FsV2lkdGggfHwgc3RkOjppc25hbihpbml0aWFsTG9naWNhbFdpZHRo
KSk7CiAgICAgICAgICAgICBpbml0aWFsTG9naWNhbFdpZHRoID0gc3RkOjptYXgoaW5pdGlhbExv
Z2ljYWxXaWR0aCwgMC5mKTsKICAgICAgICAgICAgIGF1dG8gaW5saW5lQm94ID0gSW5saW5lTGV2
ZWxCb3g6OmNyZWF0ZUlubGluZUJveChsYXlvdXRCb3gsIHN0eWxlLCBsb2dpY2FsTGVmdCwgaW5p
dGlhbExvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICBpbmxpbmVCb3guc2V0SXNGaXJzdEJveCgp
OwpAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmFkanVzdElubGluZUJv
eEhlaWdodHNGb3JMaW5lQm94Q29udGFpbklmQXBwbGljYWJsZShMaW5lQm94CiAKICAgICBpZiAo
bGluZUJveENvbnRhaW4uY29udGFpbnMoTGluZUJveENvbnRhaW46OkdseXBocykpIHsKICAgICAg
ICAgLy8gQ29tcHV0ZSB0ZXh0IGNvbnRlbnQgKGdseXBocykgaHVnZ2luZyBpbmxpbmUgYm94IGxh
eW91dCBib3VuZHMuCi0gICAgICAgIGZvciAoYXV0byBydW4gOiBsaW5lQ29udGVudCgpLnJ1bnMp
IHsKKyAgICAgICAgZm9yIChhdXRvIHJ1biA6IGxpbmVMYXlvdXRSZXN1bHQoKS5pbmxpbmVDb250
ZW50KSB7CiAgICAgICAgICAgICBpZiAoIXJ1bi5pc1RleHQoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIApAQCAtNTMxLDcgKzUzMSw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmFkanVz
dElubGluZUJveEhlaWdodHNGb3JMaW5lQm94Q29udGFpbklmQXBwbGljYWJsZShMaW5lQm94CiAg
ICAgICAgIElubGluZUxheW91dFVuaXQgaW5pdGlhbExldHRlckFzY2VudCA9IGZvbnRNZXRyaWNz
LmNhcEhlaWdodCgpOwogICAgICAgICBhdXRvIGluaXRpYWxMZXR0ZXJEZXNjZW50ID0gSW5saW5l
TGF5b3V0VW5pdCB7IH07CiAKLSAgICAgICAgZm9yIChhdXRvIHJ1biA6IGxpbmVDb250ZW50KCku
cnVucykgeworICAgICAgICBmb3IgKGF1dG8gcnVuIDogbGluZUxheW91dFJlc3VsdCgpLmlubGlu
ZUNvbnRlbnQpIHsKICAgICAgICAgICAgIC8vIFdlIHJlYWxseSBzaG91bGQgb25seSBoYXZlIG9u
ZSB0ZXh0IHJ1biBmb3IgaW5pdGlhbCBsZXR0ZXIuCiAgICAgICAgICAgICBpZiAoIXJ1bi5pc1Rl
eHQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTY5MSw3ICs2OTEsNyBAQCB2b2lk
IExpbmVCb3hCdWlsZGVyOjpjb21wdXRlTGluZUJveEdlb21ldHJ5KExpbmVCb3gmIGxpbmVCb3gp
IGNvbnN0CiAgICAgICAgIGZvciAoYXV0byYgbm9uUm9vdElubGluZUxldmVsQm94IDogbGluZUJv
eC5ub25Sb290SW5saW5lTGV2ZWxCb3hlcygpKQogICAgICAgICAgICAgbm9uUm9vdElubGluZUxl
dmVsQm94LnNldExvZ2ljYWxUb3Aobm9uUm9vdElubGluZUxldmVsQm94LmxvZ2ljYWxUb3AoKSAt
IHRleHRCb3hFZGdlT3ZlckhlaWdodCk7CiAgICAgfQotICAgIGxpbmVCb3guc2V0TG9naWNhbFJl
Y3QoeyBsaW5lQ29udGVudCgpLmxpbmVMb2dpY2FsVG9wTGVmdCwgbGluZUNvbnRlbnQoKS5saW5l
TG9naWNhbFdpZHRoLCBsaW5lQm94TG9naWNhbEhlaWdodCB9KTsKKyAgICBsaW5lQm94LnNldExv
Z2ljYWxSZWN0KHsgbGluZUxheW91dFJlc3VsdCgpLmxpbmVHZW9tZXRyeS5sb2dpY2FsVG9wTGVm
dCwgbGluZUxheW91dFJlc3VsdCgpLmxpbmVHZW9tZXRyeS5sb2dpY2FsV2lkdGgsIGxpbmVCb3hM
b2dpY2FsSGVpZ2h0IH0pOwogfQogCiB2b2lkIExpbmVCb3hCdWlsZGVyOjphZGp1c3RPdXRzaWRl
TGlzdE1hcmtlcnNQb3NpdGlvbihMaW5lQm94JiBsaW5lQm94KQpAQCAtNzAxLDExICs3MDEsMTEg
QEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6YWRqdXN0T3V0c2lkZUxpc3RNYXJrZXJzUG9zaXRpb24o
TGluZUJveCYgbGluZUJveCkKICAgICBhdXRvIGxpbmVCb3hSZWN0ID0gbGluZUJveC5sb2dpY2Fs
UmVjdCgpOwogICAgIGF1dG8gZmxvYXRDb25zdHJhaW50cyA9IGZsb2F0aW5nQ29udGV4dC5jb25z
dHJhaW50cyhMYXlvdXRVbml0IHsgbGluZUJveFJlY3QudG9wKCkgfSwgTGF5b3V0VW5pdCB7IGxp
bmVCb3hSZWN0LmJvdHRvbSgpIH0sIEZsb2F0aW5nQ29udGV4dDo6TWF5QmVBYm92ZUxhc3RGbG9h
dDo6Tm8pOwogCi0gICAgYXV0byBsaW5lQm94T2Zmc2V0ID0gbGluZUJveFJlY3QubGVmdCgpIC0g
bGluZUNvbnRlbnQoKS5saW5lSW5pdGlhbExvZ2ljYWxMZWZ0SW5jbHVkaW5nSW50cnVzaXZlRmxv
YXRzOworICAgIGF1dG8gbGluZUJveE9mZnNldCA9IGxpbmVCb3hSZWN0LmxlZnQoKSAtIGxpbmVM
YXlvdXRSZXN1bHQoKS5saW5lR2VvbWV0cnkuaW5pdGlhbExvZ2ljYWxMZWZ0SW5jbHVkaW5nSW50
cnVzaXZlRmxvYXRzOwogICAgIGF1dG8gcm9vdElubGluZUJveExvZ2ljYWxMZWZ0ID0gbGluZUJv
eC5sb2dpY2FsUmVjdEZvclJvb3RJbmxpbmVCb3goKS5sZWZ0KCk7CiAgICAgYXV0byByb290SW5s
aW5lQm94T2Zmc2V0RnJvbUNvbnRlbnRCb3hPckludHJ1c2l2ZUZsb2F0ID0gbGluZUJveE9mZnNl
dCArIHJvb3RJbmxpbmVCb3hMb2dpY2FsTGVmdDsKICAgICBmb3IgKGF1dG8gbGlzdE1hcmtlckJv
eEluZGV4IDogbV9vdXRzaWRlTGlzdE1hcmtlcnMpIHsKLSAgICAgICAgYXV0byYgbGlzdE1hcmtl
clJ1biA9IGxpbmVDb250ZW50KCkucnVuc1tsaXN0TWFya2VyQm94SW5kZXhdOworICAgICAgICBh
dXRvJiBsaXN0TWFya2VyUnVuID0gbGluZUxheW91dFJlc3VsdCgpLmlubGluZUNvbnRlbnRbbGlz
dE1hcmtlckJveEluZGV4XTsKICAgICAgICAgQVNTRVJUKGxpc3RNYXJrZXJSdW4uaXNMaXN0TWFy
a2VyT3V0c2lkZSgpKTsKICAgICAgICAgYXV0byYgbGlzdE1hcmtlckJveCA9IGRvd25jYXN0PEVs
ZW1lbnRCb3g+KGxpc3RNYXJrZXJSdW4ubGF5b3V0Qm94KCkpOwogICAgICAgICBhdXRvJiBsaXN0
TWFya2VySW5saW5lTGV2ZWxCb3ggPSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yKGxpc3RNYXJr
ZXJSdW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmgKaW5kZXgg
N2M0ZWNjOTA2NGZkLi41NjZkMWQ3ODlmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZUJveEJ1aWxkZXIuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBMYXlvdXRTdGF0ZTsKIAog
Y2xhc3MgTGluZUJveEJ1aWxkZXIgewogcHVibGljOgotICAgIExpbmVCb3hCdWlsZGVyKGNvbnN0
IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiwgY29uc3QgSW5saW5lTGF5b3V0U3RhdGUmLCBjb25z
dCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmKTsKKyAgICBMaW5lQm94QnVpbGRlcihjb25zdCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dCYsIGNvbnN0IElubGluZUxheW91dFN0YXRlJiwgY29uc3Qg
TGluZUJ1aWxkZXI6OkxheW91dFJlc3VsdCYpOwogCiAgICAgTGluZUJveCBidWlsZChzaXplX3Qg
bGluZUluZGV4KTsKIApAQCAtNTUsMTAgKzU1LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGp1
c3RJZGVvZ3JhcGhpY0Jhc2VsaW5lSWZBcHBsaWNhYmxlKExpbmVCb3gmKTsKICAgICB2b2lkIGFk
anVzdE91dHNpZGVMaXN0TWFya2Vyc1Bvc2l0aW9uKExpbmVCb3gmKTsKIAotICAgIGJvb2wgaXNG
aXJzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xpbmVDb250ZW50LmlzRmlyc3RGb3JtYXR0ZWRM
aW5lICE9IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudDo6Rmlyc3RGb3JtYXR0ZWRMaW5lOjpObzsg
fQotICAgIGJvb2wgaXNMYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUNvbnRlbnQuaXNM
YXN0TGluZVdpdGhJbmxpbmVDb250ZW50OyB9CisgICAgYm9vbCBpc0ZpcnN0TGluZSgpIGNvbnN0
IHsgcmV0dXJuIGxpbmVMYXlvdXRSZXN1bHQoKS5pc0ZpcnN0TGFzdC5pc0ZpcnN0Rm9ybWF0dGVk
TGluZSAhPSBMaW5lQnVpbGRlcjo6TGF5b3V0UmVzdWx0OjpJc0ZpcnN0TGFzdDo6Rmlyc3RGb3Jt
YXR0ZWRMaW5lOjpObzsgfQorICAgIGJvb2wgaXNMYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIGxp
bmVMYXlvdXRSZXN1bHQoKS5pc0ZpcnN0TGFzdC5pc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQ7
IH0KICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0OyB9Ci0gICAgY29uc3Qg
TGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGluZUNvbnRlbnQ7IH0KKyAgICBjb25zdCBMaW5lQnVpbGRlcjo6TGF5b3V0UmVzdWx0JiBsaW5l
TGF5b3V0UmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9saW5lTGF5b3V0UmVzdWx0OyB9CiAgICAg
Y29uc3QgQm94JiByb290Qm94KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5y
b290KCk7IH0KICAgICBjb25zdCBSZW5kZXJTdHlsZSYgcm9vdFN0eWxlKCkgY29uc3QgeyByZXR1
cm4gaXNGaXJzdExpbmUoKSA/IHJvb3RCb3goKS5maXJzdExpbmVTdHlsZSgpIDogcm9vdEJveCgp
LnN0eWxlKCk7IH0KIApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogcHJpdmF0ZToKICAgICBj
b25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsK
ICAgICBjb25zdCBJbmxpbmVMYXlvdXRTdGF0ZSYgbV9pbmxpbmVMYXlvdXRTdGF0ZTsKLSAgICBj
b25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIG1fbGluZUNvbnRlbnQ7CisgICAgY29uc3Qg
TGluZUJ1aWxkZXI6OkxheW91dFJlc3VsdCYgbV9saW5lTGF5b3V0UmVzdWx0OwogICAgIGJvb2wg
bV9mYWxsYmFja0ZvbnRSZXF1aXJlc0lkZW9ncmFwaGljQmFzZWxpbmUgeyBmYWxzZSB9OwogICAg
IEhhc2hNYXA8Y29uc3QgSW5saW5lTGV2ZWxCb3gqLCBUZXh0VXRpbDo6RmFsbGJhY2tGb250TGlz
dD4gbV9mYWxsYmFja0ZvbnRzRm9ySW5saW5lQm94ZXM7CiAgICAgVmVjdG9yPHNpemVfdD4gbV9v
dXRzaWRlTGlzdE1hcmtlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5j
cHAKaW5kZXggNWZkOTRlYWVlZjFmLi5mZmYzZWJiMGE1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTM0Niw3ICszNDYsNyBAQCBMaW5lQnVpbGRlcjo6
TGluZUJ1aWxkZXIoY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGlubGluZUZvcm1hdHRp
bmdDb250ZXh0LAogewogfQogCi1MaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQgTGluZUJ1aWxkZXI6
OmxheW91dElubGluZUNvbnRlbnQoY29uc3QgTGluZUlucHV0JiBsaW5lSW5wdXQsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8UHJldmlvdXNMaW5lPiYgcHJldmlvdXNMaW5lKQorTGluZUJ1aWxkZXI6Okxh
eW91dFJlc3VsdCBMaW5lQnVpbGRlcjo6bGF5b3V0SW5saW5lQ29udGVudChjb25zdCBMaW5lSW5w
dXQmIGxpbmVJbnB1dCwgY29uc3Qgc3RkOjpvcHRpb25hbDxQcmV2aW91c0xpbmU+JiBwcmV2aW91
c0xpbmUpCiB7CiAgICAgYXV0byBwcmV2aW91c0xpbmVFbmRzV2l0aExpbmVCcmVhayA9ICFwcmV2
aW91c0xpbmUgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om1ha2Vfb3B0aW9uYWwocHJldmlvdXNMaW5l
LT5lbmRzV2l0aExpbmVCcmVhayk7CiAgICAgaW5pdGlhbGl6ZShsaW5lSW5wdXQuaW5pdGlhbExv
Z2ljYWxSZWN0LCBpbml0aWFsQ29uc3RyYWludHNGb3JMaW5lKGxpbmVJbnB1dC5pbml0aWFsTG9n
aWNhbFJlY3QsIHByZXZpb3VzTGluZUVuZHNXaXRoTGluZUJyZWFrKSwgbGluZUlucHV0Lm5lZWRz
TGF5b3V0UmFuZ2UsIHByZXZpb3VzTGluZSk7CkBAIC0zNTksMjMgKzM1OSwxNSBAQCBMaW5lQnVp
bGRlcjo6TGluZUNvbnRlbnQgTGluZUJ1aWxkZXI6OmxheW91dElubGluZUNvbnRlbnQoY29uc3Qg
TGluZUlucHV0JiBsaW5lSQogICAgIGF1dG8gY29udGVudExvZ2ljYWxMZWZ0ID0gaG9yaXpvbnRh
bEFsaWdubWVudE9mZnNldChpc0xhc3RMaW5lKTsKIAogICAgIHJldHVybiB7IGNvbW1pdHRlZFJh
bmdlCi0gICAgICAgICwgY29tbWl0dGVkQ29udGVudC5vdmVyZmxvd0xvZ2ljYWxXaWR0aAotICAg
ICAgICAsIFdURk1vdmUobV9wbGFjZWRGbG9hdHMpCi0gICAgICAgICwgV1RGTW92ZShtX3N1c3Bl
bmRlZEZsb2F0cykKLSAgICAgICAgLCBtX2xpbmVJc0NvbnN0cmFpbmVkQnlGbG9hdAotICAgICAg
ICAsIG1fbGluZUluaXRpYWxMb2dpY2FsUmVjdC5sZWZ0KCkgKyBtX2luaXRpYWxJbnRydXNpdmVG
bG9hdHNXaWR0aAotICAgICAgICAsIG1fbGluZUxvZ2ljYWxSZWN0LnRvcExlZnQoKQotICAgICAg
ICAsIG1fbGluZUxvZ2ljYWxSZWN0LndpZHRoKCkKLSAgICAgICAgLCBjb250ZW50TG9naWNhbExl
ZnQKLSAgICAgICAgLCBtX2xpbmUuY29udGVudExvZ2ljYWxXaWR0aCgpCi0gICAgICAgICwgY29u
dGVudExvZ2ljYWxMZWZ0ICsgbV9saW5lLmNvbnRlbnRMb2dpY2FsUmlnaHQoKQorICAgICAgICAs
IG1fbGluZS5ydW5zKCkKKyAgICAgICAgLCB7IFdURk1vdmUobV9wbGFjZWRGbG9hdHMpLCBXVEZN
b3ZlKG1fc3VzcGVuZGVkRmxvYXRzKSwgbV9saW5lSXNDb25zdHJhaW5lZEJ5RmxvYXQgfQorICAg
ICAgICAsIHsgY29udGVudExvZ2ljYWxMZWZ0LCBtX2xpbmUuY29udGVudExvZ2ljYWxXaWR0aCgp
LCBjb250ZW50TG9naWNhbExlZnQgKyBtX2xpbmUuY29udGVudExvZ2ljYWxSaWdodCgpLCBjb21t
aXR0ZWRDb250ZW50Lm92ZXJmbG93TG9naWNhbFdpZHRoIH0KKyAgICAgICAgLCB7IG1fbGluZUxv
Z2ljYWxSZWN0LnRvcExlZnQoKSwgbV9saW5lTG9naWNhbFJlY3Qud2lkdGgoKSwgbV9saW5lSW5p
dGlhbExvZ2ljYWxSZWN0LmxlZnQoKSArIG1faW5pdGlhbEludHJ1c2l2ZUZsb2F0c1dpZHRoIH0K
ICAgICAgICAgLCB7ICFtX2xpbmUuaXNIYW5naW5nVHJhaWxpbmdDb250ZW50V2hpdGVzcGFjZSgp
LCBtX2xpbmUuaGFuZ2luZ1RyYWlsaW5nQ29udGVudFdpZHRoKCkgfQotICAgICAgICAsIGlzRmly
c3RGb3JtYXR0ZWRMaW5lKCkgPyBMaW5lQ29udGVudDo6Rmlyc3RGb3JtYXR0ZWRMaW5lOjpXaXRo
aW5JRkMgOiBMaW5lQ29udGVudDo6Rmlyc3RGb3JtYXR0ZWRMaW5lOjpObwotICAgICAgICAsIGlz
TGFzdExpbmUKKyAgICAgICAgLCB7IGNvbXB1dGVkVmlzdWFsT3JkZXIobV9saW5lKSwgaW5saW5l
QmFzZURpcmVjdGlvbiB9CisgICAgICAgICwgeyBpc0ZpcnN0Rm9ybWF0dGVkTGluZSgpID8gTGF5
b3V0UmVzdWx0OjpJc0ZpcnN0TGFzdDo6Rmlyc3RGb3JtYXR0ZWRMaW5lOjpXaXRoaW5JRkMgOiBM
YXlvdXRSZXN1bHQ6OklzRmlyc3RMYXN0OjpGaXJzdEZvcm1hdHRlZExpbmU6Ok5vLCBpc0xhc3RM
aW5lIH0KICAgICAgICAgLCBtX2xpbmUubm9uU3Bhbm5pbmdJbmxpbmVMZXZlbEJveENvdW50KCkK
LSAgICAgICAgLCBjb21wdXRlZFZpc3VhbE9yZGVyKG1fbGluZSkKLSAgICAgICAgLCBpbmxpbmVC
YXNlRGlyZWN0aW9uCi0gICAgICAgICwgbV9saW5lLnJ1bnMoKSB9OworICAgIH07CiB9CiAKIExp
bmVCdWlsZGVyOjpJbnRyaW5zaWNDb250ZW50IExpbmVCdWlsZGVyOjpjb21wdXRlZEludHJpbnNp
Y1dpZHRoKGNvbnN0IExpbmVJbnB1dCYgbGluZUlucHV0LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFBy
ZXZpb3VzTGluZT4mIHByZXZpb3VzTGluZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVp
bGRlci5oCmluZGV4IGE1Y2I1NDIyMzRmZC4uYjFkNWZlZjk4ZDdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVp
bGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmVCdWlsZGVyLmgKQEAgLTQ5LDM2ICs0OSw1OCBAQCBwdWJsaWM6CiAgICAg
fTsKICAgICB1c2luZyBQbGFjZWRGbG9hdExpc3QgPSBGbG9hdGluZ1N0YXRlOjpGbG9hdExpc3Q7
CiAgICAgdXNpbmcgU3VzcGVuZGVkRmxvYXRMaXN0ID0gVmVjdG9yPGNvbnN0IEJveCo+OwotICAg
IHN0cnVjdCBMaW5lQ29udGVudCB7Ci0gICAgICAgIElubGluZUl0ZW1SYW5nZSBjb21taXR0ZWRS
YW5nZTsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB0cmFpbGluZ092
ZXJmbG93aW5nQ29udGVudFdpZHRoIHsgfTsKLSAgICAgICAgUGxhY2VkRmxvYXRMaXN0IHBsYWNl
ZEZsb2F0czsKLSAgICAgICAgU3VzcGVuZGVkRmxvYXRMaXN0IHN1c3BlbmRlZEZsb2F0czsKLSAg
ICAgICAgYm9vbCBoYXNJbnRydXNpdmVGbG9hdCB7IGZhbHNlIH07Ci0gICAgICAgIElubGluZUxh
eW91dFVuaXQgbGluZUluaXRpYWxMb2dpY2FsTGVmdEluY2x1ZGluZ0ludHJ1c2l2ZUZsb2F0cyB7
IDAuZiB9OwotICAgICAgICBJbmxpbmVMYXlvdXRQb2ludCBsaW5lTG9naWNhbFRvcExlZnQ7Ci0g
ICAgICAgIElubGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxXaWR0aCB7IDAuZiB9OwotICAgICAg
ICBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsTGVmdCB7IDAuZiB9OwotICAgICAgICBJ
bmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsV2lkdGggeyAwLmYgfTsKLSAgICAgICAgSW5s
aW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbFJpZ2h0SW5jbHVkaW5nTmVnYXRpdmVNYXJnaW4g
eyAwLmYgfTsgLy8gTm90ZSB0aGF0IHdpdGggbmVnYXRpdmUgaG9yaXpvbnRhbCBtYXJnaW4gdmFs
dWUsIGNvbnRlbnRMb2dpY2FsTGVmdCArIGNvbnRlbnRMb2dpY2FsV2lkdGggaXMgbm90IG5lY2Vz
c2FyaWx5IGNvbnRlbnRMb2dpY2FsUmlnaHQuCisgICAgc3RydWN0IExheW91dFJlc3VsdCB7Cisg
ICAgICAgIElubGluZUl0ZW1SYW5nZSBpbmxpbmVJdGVtUmFuZ2U7CisgICAgICAgIGNvbnN0IExp
bmU6OlJ1bkxpc3QmIGlubGluZUNvbnRlbnQ7CisKKyAgICAgICAgc3RydWN0IEZsb2F0Q29udGVu
dCB7CisgICAgICAgICAgICBQbGFjZWRGbG9hdExpc3QgcGxhY2VkRmxvYXRzOworICAgICAgICAg
ICAgU3VzcGVuZGVkRmxvYXRMaXN0IHN1c3BlbmRlZEZsb2F0czsKKyAgICAgICAgICAgIGJvb2wg
aGFzSW50cnVzaXZlRmxvYXQgeyBmYWxzZSB9OworICAgICAgICB9OworICAgICAgICBGbG9hdENv
bnRlbnQgZmxvYXRDb250ZW50IHsgfTsKKworICAgICAgICBzdHJ1Y3QgQ29udGVudEdlb21ldHJ5
IHsKKyAgICAgICAgICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQgeyAwLmYgfTsKKyAg
ICAgICAgICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoIHsgMC5mIH07CisgICAgICAg
ICAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxSaWdodEluY2x1ZGluZ05lZ2F0aXZlTWFyZ2lu
IHsgMC5mIH07IC8vIE5vdGUgdGhhdCB3aXRoIG5lZ2F0aXZlIGhvcml6b250YWwgbWFyZ2luIHZh
bHVlLCBjb250ZW50TG9naWNhbExlZnQgKyBjb250ZW50TG9naWNhbFdpZHRoIGlzIG5vdCBuZWNl
c3NhcmlseSBjb250ZW50TG9naWNhbFJpZ2h0LgorICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxJ
bmxpbmVMYXlvdXRVbml0PiB0cmFpbGluZ092ZXJmbG93aW5nQ29udGVudFdpZHRoIHsgfTsKKyAg
ICAgICAgfTsKKyAgICAgICAgQ29udGVudEdlb21ldHJ5IGNvbnRlbnRHZW9tZXRyeSB7IH07CisK
KyAgICAgICAgc3RydWN0IExpbmVHZW9tZXRyeSB7CisgICAgICAgICAgICBJbmxpbmVMYXlvdXRQ
b2ludCBsb2dpY2FsVG9wTGVmdDsKKyAgICAgICAgICAgIElubGluZUxheW91dFVuaXQgbG9naWNh
bFdpZHRoIHsgMC5mIH07CisgICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGluaXRpYWxMb2dp
Y2FsTGVmdEluY2x1ZGluZ0ludHJ1c2l2ZUZsb2F0cyB7IDAuZiB9OworICAgICAgICB9OworICAg
ICAgICBMaW5lR2VvbWV0cnkgbGluZUdlb21ldHJ5IHsgfTsKKwogICAgICAgICBzdHJ1Y3QgSGFu
Z2luZ0NvbnRlbnQgewogICAgICAgICAgICAgYm9vbCBzaG91bGRDb250cmlidXRlVG9TY3JvbGxh
YmxlT3ZlcmZsb3cgeyBmYWxzZSB9OwotICAgICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCB3aWR0
aCB7IDAuZiB9OworICAgICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGggeyAw
LmYgfTsKKyAgICAgICAgfTsKKyAgICAgICAgSGFuZ2luZ0NvbnRlbnQgaGFuZ2luZ0NvbnRlbnQg
eyB9OworCisgICAgICAgIHN0cnVjdCBEaXJlY3Rpb25hbGl0eSB7CisgICAgICAgICAgICBWZWN0
b3I8aW50MzJfdD4gdmlzdWFsT3JkZXJMaXN0OworICAgICAgICAgICAgVGV4dERpcmVjdGlvbiBp
bmxpbmVCYXNlRGlyZWN0aW9uIHsgVGV4dERpcmVjdGlvbjo6TFRSIH07CiAgICAgICAgIH07Ci0g
ICAgICAgIEhhbmdpbmdDb250ZW50IGhhbmdpbmdDb250ZW50OwotICAgICAgICBlbnVtIGNsYXNz
IEZpcnN0Rm9ybWF0dGVkTGluZSA6IHVpbnQ4X3QgewotICAgICAgICAgICAgTm8sCi0gICAgICAg
ICAgICBXaXRoaW5JRkMsCi0gICAgICAgICAgICBXaXRoaW5CRkMKKyAgICAgICAgRGlyZWN0aW9u
YWxpdHkgZGlyZWN0aW9uYWxpdHkgeyB9OworCisgICAgICAgIHN0cnVjdCBJc0ZpcnN0TGFzdCB7
CisgICAgICAgICAgICBlbnVtIGNsYXNzIEZpcnN0Rm9ybWF0dGVkTGluZSA6IHVpbnQ4X3Qgewor
ICAgICAgICAgICAgICAgIE5vLAorICAgICAgICAgICAgICAgIFdpdGhpbklGQywKKyAgICAgICAg
ICAgICAgICBXaXRoaW5CRkMKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBGaXJzdEZvcm1h
dHRlZExpbmUgaXNGaXJzdEZvcm1hdHRlZExpbmUgeyBGaXJzdEZvcm1hdHRlZExpbmU6OldpdGhp
bklGQyB9OworICAgICAgICAgICAgYm9vbCBpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQgeyB0
cnVlIH07CiAgICAgICAgIH07Ci0gICAgICAgIEZpcnN0Rm9ybWF0dGVkTGluZSBpc0ZpcnN0Rm9y
bWF0dGVkTGluZSB7IEZpcnN0Rm9ybWF0dGVkTGluZTo6V2l0aGluSUZDIH07Ci0gICAgICAgIGJv
b2wgaXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50IHsgdHJ1ZSB9OworICAgICAgICBJc0ZpcnN0
TGFzdCBpc0ZpcnN0TGFzdCB7IH07CisgICAgICAgIC8vIE1pc2MKICAgICAgICAgc2l6ZV90IG5v
blNwYW5uaW5nSW5saW5lTGV2ZWxCb3hDb3VudCB7IDAgfTsKLSAgICAgICAgVmVjdG9yPGludDMy
X3Q+IHZpc3VhbE9yZGVyTGlzdDsKLSAgICAgICAgVGV4dERpcmVjdGlvbiBpbmxpbmVCYXNlRGly
ZWN0aW9uIHsgVGV4dERpcmVjdGlvbjo6TFRSIH07Ci0gICAgICAgIGNvbnN0IExpbmU6OlJ1bkxp
c3QmIHJ1bnM7CiAgICAgfTsKLSAgICBMaW5lQ29udGVudCBsYXlvdXRJbmxpbmVDb250ZW50KGNv
bnN0IExpbmVJbnB1dCYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UHJldmlvdXNMaW5lPiYpOworICAg
IExheW91dFJlc3VsdCBsYXlvdXRJbmxpbmVDb250ZW50KGNvbnN0IExpbmVJbnB1dCYsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8UHJldmlvdXNMaW5lPiYpOwogCiAgICAgc3RydWN0IEludHJpbnNpY0Nv
bnRlbnQgewogICAgICAgICBJbmxpbmVJdGVtUmFuZ2UgY29tbWl0dGVkUmFuZ2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNw
bGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50
QnVpbGRlci5jcHAKaW5kZXggZDliMGFkODc3ZjFiLi4xNzc4ZTk2MzQ1NGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkv
SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50
QnVpbGRlci5jcHAKQEAgLTg5LDE3ICs4OSwxNyBAQCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXI6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcihjb25zdCBJbmxpbmVGb3JtYXR0aW5nQwog
ewogfQogCi1JbmxpbmVEaXNwbGF5OjpCb3hlcyBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6
OmJ1aWxkKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQsIGNvbnN0
IExpbmVCb3gmIGxpbmVCb3gpCitJbmxpbmVEaXNwbGF5OjpCb3hlcyBJbmxpbmVEaXNwbGF5Q29u
dGVudEJ1aWxkZXI6OmJ1aWxkKGNvbnN0IExpbmVCdWlsZGVyOjpMYXlvdXRSZXN1bHQmIGxpbmVM
YXlvdXRSZXN1bHQsIGNvbnN0IExpbmVCb3gmIGxpbmVCb3gpCiB7CiAgICAgYXV0byBib3hlcyA9
IElubGluZURpc3BsYXk6OkJveGVzIHsgfTsKLSAgICBib3hlcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGxpbmVDb250ZW50LnJ1bnMuc2l6ZSgpICsgbGluZUJveC5ub25Sb290SW5saW5lTGV2ZWxC
b3hlcygpLnNpemUoKSArIDEpOworICAgIGJveGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGlu
ZUxheW91dFJlc3VsdC5pbmxpbmVDb250ZW50LnNpemUoKSArIGxpbmVCb3gubm9uUm9vdElubGlu
ZUxldmVsQm94ZXMoKS5zaXplKCkgKyAxKTsKIAotICAgIGF1dG8gY29udGVudE5lZWRzQmlkaVJl
b3JkZXJpbmcgPSAhbGluZUNvbnRlbnQudmlzdWFsT3JkZXJMaXN0LmlzRW1wdHkoKTsKKyAgICBh
dXRvIGNvbnRlbnROZWVkc0JpZGlSZW9yZGVyaW5nID0gIWxpbmVMYXlvdXRSZXN1bHQuZGlyZWN0
aW9uYWxpdHkudmlzdWFsT3JkZXJMaXN0LmlzRW1wdHkoKTsKICAgICBpZiAoY29udGVudE5lZWRz
QmlkaVJlb3JkZXJpbmcpCi0gICAgICAgIHByb2Nlc3NCaWRpQ29udGVudChsaW5lQ29udGVudCwg
bGluZUJveCwgYm94ZXMpOworICAgICAgICBwcm9jZXNzQmlkaUNvbnRlbnQobGluZUxheW91dFJl
c3VsdCwgbGluZUJveCwgYm94ZXMpOwogICAgIGVsc2UKLSAgICAgICAgcHJvY2Vzc05vbkJpZGlD
b250ZW50KGxpbmVDb250ZW50LCBsaW5lQm94LCBib3hlcyk7Ci0gICAgcHJvY2Vzc0Zsb2F0Qm94
ZXMobGluZUNvbnRlbnQpOworICAgICAgICBwcm9jZXNzTm9uQmlkaUNvbnRlbnQobGluZUxheW91
dFJlc3VsdCwgbGluZUJveCwgYm94ZXMpOworICAgIHByb2Nlc3NGbG9hdEJveGVzKGxpbmVMYXlv
dXRSZXN1bHQpOwogCiAgICAgY29sbGVjdElua092ZXJmbG93Rm9yVGV4dERlY29yYXRpb25zKGJv
eGVzKTsKICAgICBjb2xsZWN0SW5rT3ZlcmZsb3dGb3JJbmxpbmVCb3hlcyhib3hlcyk7CkBAIC00
MzUsMjAgKzQzNSwyMCBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YXBwZW5k
SW5saW5lRGlzcGxheUJveEF0QmlkaUJvdW5kYXJ5KGNvbnN0IEJveAogICAgIH0pOwogfQogCi12
b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc05vbkJpZGlDb250ZW50KGNv
bnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQsIGNvbnN0IExpbmVCb3gm
IGxpbmVCb3gsIElubGluZURpc3BsYXk6OkJveGVzJiBib3hlcykKK3ZvaWQgSW5saW5lRGlzcGxh
eUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzTm9uQmlkaUNvbnRlbnQoY29uc3QgTGluZUJ1aWxkZXI6
OkxheW91dFJlc3VsdCYgbGluZUxheW91dFJlc3VsdCwgY29uc3QgTGluZUJveCYgbGluZUJveCwg
SW5saW5lRGlzcGxheTo6Qm94ZXMmIGJveGVzKQogewogI2lmbmRlZiBOREVCVUcKICAgICBhdXRv
IGhhc0NvbnRlbnQgPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8mIGxpbmVSdW4gOiBsaW5lQ29udGVu
dC5ydW5zKQorICAgIGZvciAoYXV0byYgbGluZVJ1biA6IGxpbmVMYXlvdXRSZXN1bHQuaW5saW5l
Q29udGVudCkKICAgICAgICAgaGFzQ29udGVudCA9IGhhc0NvbnRlbnQgfHwgbGluZVJ1bi5pc0Nv
bnRlbnRmdWwoKTsKLSAgICBBU1NFUlQobGluZUNvbnRlbnQuaW5saW5lQmFzZURpcmVjdGlvbiA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgfHwgIWhhc0NvbnRlbnQpOworICAgIEFTU0VSVChsaW5lTGF5
b3V0UmVzdWx0LmRpcmVjdGlvbmFsaXR5LmlubGluZUJhc2VEaXJlY3Rpb24gPT0gVGV4dERpcmVj
dGlvbjo6TFRSIHx8ICFoYXNDb250ZW50KTsKICNlbmRpZgogICAgIGF1dG8gd3JpdGluZ01vZGUg
PSByb290KCkuc3R5bGUoKS53cml0aW5nTW9kZSgpOwogICAgIGF1dG8gY29udGVudFN0YXJ0SW5W
aXN1YWxPcmRlciA9IG1fZGlzcGxheUxpbmUudG9wTGVmdCgpOwogCiAgICAgYXBwZW5kUm9vdElu
bGluZUJveERpc3BsYXlCb3goZmxpcFJvb3RJbmxpbmVCb3hSZWN0VG9WaXN1YWxGb3JXcml0aW5n
TW9kZShsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yUm9vdElubGluZUJveCgpLCB3cml0aW5nTW9kZSks
IGxpbmVCb3gucm9vdElubGluZUJveCgpLmhhc0NvbnRlbnQoKSwgYm94ZXMpOwogCi0gICAgZm9y
IChhdXRvJiBsaW5lUnVuIDogbGluZUNvbnRlbnQucnVucykgeworICAgIGZvciAoYXV0byYgbGlu
ZVJ1biA6IGxpbmVMYXlvdXRSZXN1bHQuaW5saW5lQ29udGVudCkgewogICAgICAgICBhdXRvJiBs
YXlvdXRCb3ggPSBsaW5lUnVuLmxheW91dEJveCgpOwogCiAgICAgICAgIGF1dG8gdmlzdWFsUmVj
dFJlbGF0aXZlVG9Sb290ID0gWyZdKGF1dG8gbG9naWNhbFJlY3QpIHsKQEAgLTY1NSw5ICs2NTUs
OSBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YWRqdXN0VmlzdWFsR2VvbWV0
cnlGb3JEaXNwbGF5Qm94KHNpemVfdCBkaXNwbAogICAgICAgICBkaXNwbGF5Qm94LnNldEhhc0Nv
bnRlbnQoKTsKIH0KIAotdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NC
aWRpQ29udGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50LCBj
b25zdCBMaW5lQm94JiBsaW5lQm94LCBJbmxpbmVEaXNwbGF5OjpCb3hlcyYgYm94ZXMpCit2b2lk
IElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc0JpZGlDb250ZW50KGNvbnN0IExp
bmVCdWlsZGVyOjpMYXlvdXRSZXN1bHQmIGxpbmVMYXlvdXRSZXN1bHQsIGNvbnN0IExpbmVCb3gm
IGxpbmVCb3gsIElubGluZURpc3BsYXk6OkJveGVzJiBib3hlcykKIHsKLSAgICBBU1NFUlQobGlu
ZUNvbnRlbnQudmlzdWFsT3JkZXJMaXN0LnNpemUoKSA8PSBsaW5lQ29udGVudC5ydW5zLnNpemUo
KSk7CisgICAgQVNTRVJUKGxpbmVMYXlvdXRSZXN1bHQuZGlyZWN0aW9uYWxpdHkudmlzdWFsT3Jk
ZXJMaXN0LnNpemUoKSA8PSBsaW5lTGF5b3V0UmVzdWx0LmlubGluZUNvbnRlbnQuc2l6ZSgpKTsK
IAogICAgIEFuY2VzdG9yU3RhY2sgYW5jZXN0b3JTdGFjazsKICAgICBhdXRvIGRpc3BsYXlCb3hU
cmVlID0gRGlzcGxheUJveFRyZWUgeyB9OwpAQCAtNjc3LDExICs2NzcsMTEgQEAgdm9pZCBJbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NCaWRpQ29udGVudChjb25zdCBMaW5lQnVp
bGRlcjo6TGluZUNvbnQKICAgICAgICAgYXBwZW5kUm9vdElubGluZUJveERpc3BsYXlCb3goZmxp
cFJvb3RJbmxpbmVCb3hSZWN0VG9WaXN1YWxGb3JXcml0aW5nTW9kZShyb290SW5saW5lQm94Vmlk
c3VhbFJlY3RJbklubGluZURpcmVjdGlvbiwgcm9vdCgpLnN0eWxlKCkud3JpdGluZ01vZGUoKSks
IGxpbmVCb3gucm9vdElubGluZUJveCgpLmhhc0NvbnRlbnQoKSwgYm94ZXMpOwogCiAgICAgICAg
IGF1dG8gY29udGVudFJpZ2h0SW5JbmxpbmVEaXJlY3Rpb25WaXN1YWxPcmRlciA9IGNvbnRlbnRT
dGFydEluSW5saW5lRGlyZWN0aW9uVmlzdWFsT3JkZXI7Ci0gICAgICAgIGF1dG8mIHJ1bnMgPSBs
aW5lQ29udGVudC5ydW5zOwotICAgICAgICBmb3IgKGF1dG8gdmlzdWFsT3JkZXIgOiBsaW5lQ29u
dGVudC52aXN1YWxPcmRlckxpc3QpIHsKLSAgICAgICAgICAgIEFTU0VSVChydW5zW3Zpc3VhbE9y
ZGVyXS5iaWRpTGV2ZWwoKSAhPSBJbmxpbmVJdGVtOjpvcGFxdWVCaWRpTGV2ZWwpOworICAgICAg
ICBhdXRvJiBpbmxpbmVDb250ZW50ID0gbGluZUxheW91dFJlc3VsdC5pbmxpbmVDb250ZW50Owor
ICAgICAgICBmb3IgKGF1dG8gdmlzdWFsT3JkZXIgOiBsaW5lTGF5b3V0UmVzdWx0LmRpcmVjdGlv
bmFsaXR5LnZpc3VhbE9yZGVyTGlzdCkgeworICAgICAgICAgICAgQVNTRVJUKGlubGluZUNvbnRl
bnRbdmlzdWFsT3JkZXJdLmJpZGlMZXZlbCgpICE9IElubGluZUl0ZW06Om9wYXF1ZUJpZGlMZXZl
bCk7CiAKLSAgICAgICAgICAgIGF1dG8mIGxpbmVSdW4gPSBydW5zW3Zpc3VhbE9yZGVyXTsKKyAg
ICAgICAgICAgIGF1dG8mIGxpbmVSdW4gPSBpbmxpbmVDb250ZW50W3Zpc3VhbE9yZGVyXTsKICAg
ICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGxpbmVSdW4ubGF5b3V0Qm94KCk7CiAKICAgICAg
ICAgICAgIGF1dG8gbmVlZHNEaXNwbGF5Qm94ID0gIWxpbmVSdW4uaXNXb3JkQnJlYWtPcHBvcnR1
bml0eSgpICYmICFsaW5lUnVuLmlzSW5saW5lQm94RW5kKCk7CkBAIC04MDIsNyArODAyLDcgQEAg
dm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NCaWRpQ29udGVudChjb25z
dCBMaW5lQnVpbGRlcjo6TGluZUNvbnQKICAgICBoYW5kbGVJbmxpbmVCb3hlcygpOwogCiAgICAg
YXV0byBoYW5kbGVUcmFpbGluZ09wZW5JbmxpbmVCb3hlcyA9IFsmXSB7Ci0gICAgICAgIGZvciAo
YXV0byYgbGluZVJ1biA6IG1ha2VSZXZlcnNlZFJhbmdlKGxpbmVDb250ZW50LnJ1bnMpKSB7Cisg
ICAgICAgIGZvciAoYXV0byYgbGluZVJ1biA6IG1ha2VSZXZlcnNlZFJhbmdlKGxpbmVMYXlvdXRS
ZXN1bHQuaW5saW5lQ29udGVudCkpIHsKICAgICAgICAgICAgIGlmICghbGluZVJ1bi5pc0lubGlu
ZUJveFN0YXJ0KCkgfHwgbGluZVJ1bi5iaWRpTGV2ZWwoKSAhPSBJbmxpbmVJdGVtOjpvcGFxdWVC
aWRpTGV2ZWwpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAvLyBUaGVzZSBh
cmUgdHJhaWxpbmcgaW5saW5lIGJveCBzdGFydCBydW5zICh3aXRob3V0IHRoZSBjbG9zaW5nIGlu
bGluZSBib3ggZW5kIDxzcGFuPiA8LWxpbmUgYnJlYWtzIGhlcmU8L3NwYW4+KS4KQEAgLTgyMCw3
ICs4MjAsNyBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc0JpZGlD
b250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udAogICAgIGhhbmRsZVRyYWlsaW5nT3Bl
bklubGluZUJveGVzKCk7CiB9CiAKLXZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpw
cm9jZXNzRmxvYXRCb3hlcyhjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmKQordm9pZCBJ
bmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NGbG9hdEJveGVzKGNvbnN0IExpbmVC
dWlsZGVyOjpMYXlvdXRSZXN1bHQmKQogewogICAgIC8vIEZsb2F0IGJveGVzIGFyZSBub3QgcGFy
dCBvZiB0aGUgaW5saW5lIGNvbnRlbnQgc28gd2UgZG9uJ3QgY29uc3RydWN0IGlubGluZSBkaXNw
bGF5IGJveGVzIGZvciB0aGVtLgogICAgIC8vIEhvd2V2ZXIgYm94IGdlb21ldHJ5IHN0aWxsIG5l
ZWRzIGZsaXBwaW5nIGZyb20gbG9naWNhbCB0byB2aXN1YWwuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURp
c3BsYXlDb250ZW50QnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaAppbmRl
eCBkYzhkNzIxNzBlNTIuLmNlMGIzMGRhMzE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29u
dGVudEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oCkBAIC00NCwx
NSArNDQsMTUgQEAgY2xhc3MgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyIHsKIHB1YmxpYzoK
ICAgICBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIoY29uc3QgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQmLCBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpMaW5l
Jiwgc2l6ZV90IGxpbmVJbmRleCk7CiAKLSAgICBJbmxpbmVEaXNwbGF5OjpCb3hlcyBidWlsZChj
b25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmLCBjb25zdCBMaW5lQm94Jik7CisgICAgSW5s
aW5lRGlzcGxheTo6Qm94ZXMgYnVpbGQoY29uc3QgTGluZUJ1aWxkZXI6OkxheW91dFJlc3VsdCYs
IGNvbnN0IExpbmVCb3gmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHByb2Nlc3NOb25CaWRpQ29u
dGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmLCBjb25zdCBMaW5lQm94JiwgSW5s
aW5lRGlzcGxheTo6Qm94ZXMmKTsKLSAgICB2b2lkIHByb2Nlc3NCaWRpQ29udGVudChjb25zdCBM
aW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmLCBjb25zdCBMaW5lQm94JiwgSW5saW5lRGlzcGxheTo6
Qm94ZXMmKTsKLSAgICB2b2lkIHByb2Nlc3NGbG9hdEJveGVzKGNvbnN0IExpbmVCdWlsZGVyOjpM
aW5lQ29udGVudCYpOworICAgIHZvaWQgcHJvY2Vzc05vbkJpZGlDb250ZW50KGNvbnN0IExpbmVC
dWlsZGVyOjpMYXlvdXRSZXN1bHQmLCBjb25zdCBMaW5lQm94JiwgSW5saW5lRGlzcGxheTo6Qm94
ZXMmKTsKKyAgICB2b2lkIHByb2Nlc3NCaWRpQ29udGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGF5
b3V0UmVzdWx0JiwgY29uc3QgTGluZUJveCYsIElubGluZURpc3BsYXk6OkJveGVzJik7CisgICAg
dm9pZCBwcm9jZXNzRmxvYXRCb3hlcyhjb25zdCBMaW5lQnVpbGRlcjo6TGF5b3V0UmVzdWx0Jik7
CiAgICAgdm9pZCBjb2xsZWN0SW5rT3ZlcmZsb3dGb3JJbmxpbmVCb3hlcyhJbmxpbmVEaXNwbGF5
OjpCb3hlcyYpOwogICAgIHZvaWQgY29sbGVjdElua092ZXJmbG93Rm9yVGV4dERlY29yYXRpb25z
KElubGluZURpc3BsYXk6OkJveGVzJik7Ci0gICAgdm9pZCB0cnVuY2F0ZUZvckVsbGlwc2lzUG9s
aWN5KExpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSwgY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250
ZW50JiwgSW5saW5lRGlzcGxheTo6Qm94ZXMmKTsKKyAgICB2b2lkIHRydW5jYXRlRm9yRWxsaXBz
aXNQb2xpY3koTGluZUVuZGluZ0VsbGlwc2lzUG9saWN5LCBjb25zdCBMaW5lQnVpbGRlcjo6TGF5
b3V0UmVzdWx0JiwgSW5saW5lRGlzcGxheTo6Qm94ZXMmKTsKIAogICAgIHZvaWQgYXBwZW5kVGV4
dERpc3BsYXlCb3goY29uc3QgTGluZTo6UnVuJiwgY29uc3QgSW5saW5lUmVjdCYsIElubGluZURp
c3BsYXk6OkJveGVzJik7CiAgICAgdm9pZCBhcHBlbmRTb2Z0TGluZUJyZWFrRGlzcGxheUJveChj
b25zdCBMaW5lOjpSdW4mLCBjb25zdCBJbmxpbmVSZWN0JiwgSW5saW5lRGlzcGxheTo6Qm94ZXMm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxh
eUxpbmVCdWlsZGVyLmNwcAppbmRleCAwNDYzMzAyM2JkMzcuLjkyYTNjZDQ5NjY3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlz
cGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVC
dWlsZGVyLmNwcApAQCAtNTUsNyArNTUsNyBAQCBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6Oklu
bGluZURpc3BsYXlMaW5lQnVpbGRlcihjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dAogewog
fQogCi1JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OkVuY2xvc2luZ0xpbmVHZW9tZXRyeSBJbmxp
bmVEaXNwbGF5TGluZUJ1aWxkZXI6OmNvbGxlY3RFbmNsb3NpbmdMaW5lR2VvbWV0cnkoY29uc3Qg
TGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgTGluZUJveCYgbGlu
ZUJveCwgY29uc3QgSW5saW5lUmVjdCYgbGluZUJveFJlY3QpIGNvbnN0CitJbmxpbmVEaXNwbGF5
TGluZUJ1aWxkZXI6OkVuY2xvc2luZ0xpbmVHZW9tZXRyeSBJbmxpbmVEaXNwbGF5TGluZUJ1aWxk
ZXI6OmNvbGxlY3RFbmNsb3NpbmdMaW5lR2VvbWV0cnkoY29uc3QgTGluZUJ1aWxkZXI6OkxheW91
dFJlc3VsdCYgbGluZUxheW91dFJlc3VsdCwgY29uc3QgTGluZUJveCYgbGluZUJveCwgY29uc3Qg
SW5saW5lUmVjdCYgbGluZUJveFJlY3QpIGNvbnN0CiB7CiAgICAgYXV0byYgcm9vdElubGluZUJv
eCA9IGxpbmVCb3gucm9vdElubGluZUJveCgpOwogICAgIGF1dG8gaW5pdGlhbEVuY2xvc2luZ1Rv
cEFuZEJvdHRvbSA9IFsmXSgpIC0+IHN0ZDo6dHVwbGU8c3RkOjpvcHRpb25hbDxJbmxpbmVMYXlv
dXRVbml0Piwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0Pj4gIHsKQEAgLTcxLDExICs3
MSwxMSBAQCBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OkVuY2xvc2luZ0xpbmVHZW9tZXRyeSBJ
bmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmNvbGxlYwogICAgICAgICBhdXRvIHJlY3QgPSBsaW5l
Qm94UmVjdDsKICAgICAgICAgYXV0byByb290SW5saW5lQm94V2lkdGggPSBsaW5lQm94LmxvZ2lj
YWxSZWN0Rm9yUm9vdElubGluZUJveCgpLndpZHRoKCk7CiAgICAgICAgIGF1dG8gaXNMZWZ0VG9S
aWdodERpcmVjdGlvbiA9IHJvb3QoKS5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsK
LSAgICAgICAgaWYgKGxpbmVDb250ZW50LmhhbmdpbmdDb250ZW50LnNob3VsZENvbnRyaWJ1dGVU
b1Njcm9sbGFibGVPdmVyZmxvdykKLSAgICAgICAgICAgIHJlY3QuZXhwYW5kSG9yaXpvbnRhbGx5
KGxpbmVDb250ZW50LmhhbmdpbmdDb250ZW50LndpZHRoKTsKKyAgICAgICAgaWYgKGxpbmVMYXlv
dXRSZXN1bHQuaGFuZ2luZ0NvbnRlbnQuc2hvdWxkQ29udHJpYnV0ZVRvU2Nyb2xsYWJsZU92ZXJm
bG93KQorICAgICAgICAgICAgcmVjdC5leHBhbmRIb3Jpem9udGFsbHkobGluZUxheW91dFJlc3Vs
dC5oYW5naW5nQ29udGVudC5sb2dpY2FsV2lkdGgpOwogICAgICAgICBlbHNlIGlmICghaXNMZWZ0
VG9SaWdodERpcmVjdGlvbikgewogICAgICAgICAgICAgLy8gVGhpcyBpcyB0byBiYWxhbmNlIGhh
bmdpbmcgUlRMIHRyYWlsaW5nIGNvbnRlbnQuIFNlZSBMaW5lQm94QnVpbGRlcjo6YnVpbGQuCi0g
ICAgICAgICAgICByb290SW5saW5lQm94V2lkdGggLT0gbGluZUNvbnRlbnQuaGFuZ2luZ0NvbnRl
bnQud2lkdGg7CisgICAgICAgICAgICByb290SW5saW5lQm94V2lkdGggLT0gbGluZUxheW91dFJl
c3VsdC5oYW5naW5nQ29udGVudC5sb2dpY2FsV2lkdGg7CiAgICAgICAgIH0KICAgICAgICAgYXV0
byByb290SW5saW5lQm94SG9yaXpvbnRhbE92ZXJmbG93ID0gcm9vdElubGluZUJveFdpZHRoIC0g
cmVjdC53aWR0aCgpOwogICAgICAgICBpZiAocm9vdElubGluZUJveEhvcml6b250YWxPdmVyZmxv
dyA+IDApCkBAIC0xMjEsMTAgKzEyMSwxMCBAQCBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OkVu
Y2xvc2luZ0xpbmVHZW9tZXRyeSBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmNvbGxlYwogICAg
IHJldHVybiB7IHsgZW5jbG9zaW5nVG9wLnZhbHVlX29yKGxpbmVCb3hSZWN0LnRvcCgpKSwgZW5j
bG9zaW5nQm90dG9tLnZhbHVlX29yKGxpbmVCb3hSZWN0LnRvcCgpKSB9LCBjb250ZW50T3ZlcmZs
b3dSZWN0IH07CiB9CiAKLUlubGluZURpc3BsYXk6OkxpbmUgSW5saW5lRGlzcGxheUxpbmVCdWls
ZGVyOjpidWlsZChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50LCBj
b25zdCBMaW5lQm94JiBsaW5lQm94LCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQm
IGNvbnN0cmFpbnRzLCBib29sIGxpbmVJc0Z1bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbikg
Y29uc3QKK0lubGluZURpc3BsYXk6OkxpbmUgSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpidWls
ZChjb25zdCBMaW5lQnVpbGRlcjo6TGF5b3V0UmVzdWx0JiBsaW5lTGF5b3V0UmVzdWx0LCBjb25z
dCBMaW5lQm94JiBsaW5lQm94LCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNv
bnN0cmFpbnRzLCBib29sIGxpbmVJc0Z1bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbikgY29u
c3QKIHsKICAgICBhdXRvJiByb290SW5saW5lQm94ID0gbGluZUJveC5yb290SW5saW5lQm94KCk7
Ci0gICAgYXV0byBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID0gbGluZUNvbnRlbnQuaW5saW5lQmFz
ZURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFI7CisgICAgYXV0byBpc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uID0gbGluZUxheW91dFJlc3VsdC5kaXJlY3Rpb25hbGl0eS5pbmxpbmVCYXNlRGly
ZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUjsKICAgICBhdXRvIGxpbmVCb3hMb2dpY2FsUmVj
dCA9IGxpbmVCb3gubG9naWNhbFJlY3QoKTsKICAgICBhdXRvIGxpbmVCb3hWaXN1YWxMZWZ0ID0g
aXNMZWZ0VG9SaWdodERpcmVjdGlvbgogICAgICAgICA/IGxpbmVCb3hMb2dpY2FsUmVjdC5sZWZ0
KCkKQEAgLTEzMywxMCArMTMzLDEwIEBAIElubGluZURpc3BsYXk6OkxpbmUgSW5saW5lRGlzcGxh
eUxpbmVCdWlsZGVyOjpidWlsZChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlCiAgICAgYXV0
byByb290SW5saW5lQm94UmVjdCA9IGxpbmVCb3gubG9naWNhbFJlY3RGb3JSb290SW5saW5lQm94
KCk7CiAgICAgYXV0byBjb250ZW50VmlzdWFsT2Zmc2V0SW5JbmxpbmVEaXJlY3Rpb24gPSBpc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uCiAgICAgICAgID8gcm9vdElubGluZUJveFJlY3QubGVmdCgpCi0g
ICAgICAgIDogbGluZUJveExvZ2ljYWxSZWN0LndpZHRoKCkgLSBsaW5lQ29udGVudC5jb250ZW50
TG9naWNhbFJpZ2h0SW5jbHVkaW5nTmVnYXRpdmVNYXJnaW47IC8vIE5vdGUgdGhhdCB3aXRoIGhh
bmdpbmcgY29udGVudCBsaW5lQ29udGVudC5jb250ZW50TG9naWNhbFJpZ2h0IGlzIG5vdCB0aGUg
c2FtZSBhcyByb290TGluZUJveFJlY3QucmlnaHQoKS4KKyAgICAgICAgOiBsaW5lQm94TG9naWNh
bFJlY3Qud2lkdGgoKSAtIGxpbmVMYXlvdXRSZXN1bHQuY29udGVudEdlb21ldHJ5LmxvZ2ljYWxS
aWdodEluY2x1ZGluZ05lZ2F0aXZlTWFyZ2luOyAvLyBOb3RlIHRoYXQgd2l0aCBoYW5naW5nIGNv
bnRlbnQgbGluZUxheW91dFJlc3VsdC5jb250ZW50R2VvbWV0cnkubG9naWNhbFJpZ2h0IGlzIG5v
dCB0aGUgc2FtZSBhcyByb290TGluZUJveFJlY3QucmlnaHQoKS4KIAogICAgIGF1dG8gbGluZUJv
eFZpc3VhbFJlY3RJbklubGluZURpcmVjdGlvbiA9IElubGluZVJlY3QgeyBsaW5lQm94TG9naWNh
bFJlY3QudG9wKCksIGxpbmVCb3hWaXN1YWxMZWZ0LCBsaW5lQm94TG9naWNhbFJlY3Qud2lkdGgo
KSwgbGluZUJveExvZ2ljYWxSZWN0LmhlaWdodCgpIH07Ci0gICAgYXV0byBlbmNsb3NpbmdMaW5l
R2VvbWV0cnkgPSBjb2xsZWN0RW5jbG9zaW5nTGluZUdlb21ldHJ5KGxpbmVDb250ZW50LCBsaW5l
Qm94LCBsaW5lQm94VmlzdWFsUmVjdEluSW5saW5lRGlyZWN0aW9uKTsKKyAgICBhdXRvIGVuY2xv
c2luZ0xpbmVHZW9tZXRyeSA9IGNvbGxlY3RFbmNsb3NpbmdMaW5lR2VvbWV0cnkobGluZUxheW91
dFJlc3VsdCwgbGluZUJveCwgbGluZUJveFZpc3VhbFJlY3RJbklubGluZURpcmVjdGlvbik7CiAK
ICAgICBhdXRvIHdyaXRpbmdNb2RlID0gcm9vdCgpLnN0eWxlKCkud3JpdGluZ01vZGUoKTsKICAg
ICByZXR1cm4gSW5saW5lRGlzcGxheTo6TGluZSB7IGxpbmVCb3hMb2dpY2FsUmVjdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlz
cGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVy
LmgKaW5kZXggZWRhNjk4YmJhMjRmLi40OTQzZjk5NWU5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlz
cGxheUxpbmVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuaApAQCAtMzgs
NyArMzgsNyBAQCBjbGFzcyBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIgewogcHVibGljOgogICAg
IElubGluZURpc3BsYXlMaW5lQnVpbGRlcihjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYp
OwogCi0gICAgSW5saW5lRGlzcGxheTo6TGluZSBidWlsZChjb25zdCBMaW5lQnVpbGRlcjo6TGlu
ZUNvbnRlbnQmLCBjb25zdCBMaW5lQm94JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250
ZW50JiwgYm9vbCBsaW5lSXNGdWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24pIGNvbnN0Owor
ICAgIElubGluZURpc3BsYXk6OkxpbmUgYnVpbGQoY29uc3QgTGluZUJ1aWxkZXI6OkxheW91dFJl
c3VsdCYsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQm
LCBib29sIGxpbmVJc0Z1bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbikgY29uc3Q7CiAKICAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHRyYWlsaW5nRWxsaXBzaXNWaXN1YWxS
ZWN0QWZ0ZXJUcnVuY2F0aW9uKExpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSwgY29uc3QgSW5saW5l
RGlzcGxheTo6TGluZSYsIElubGluZURpc3BsYXk6OkJveGVzJiwgYm9vbCBpc0xhc3RMaW5lV2l0
aElubGluZUNvbnRlbnQpOwogCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIElu
bGluZURpc3BsYXk6OkxpbmU6OkVuY2xvc2luZ1RvcEFuZEJvdHRvbSBlbmNsb3NpbmdUb3BBbmRC
b3R0b207CiAgICAgICAgIElubGluZVJlY3QgY29udGVudE92ZXJmbG93UmVjdDsKICAgICB9Owot
ICAgIEVuY2xvc2luZ0xpbmVHZW9tZXRyeSBjb2xsZWN0RW5jbG9zaW5nTGluZUdlb21ldHJ5KGNv
bnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBJbmxp
bmVSZWN0JiBsaW5lQm94UmVjdCkgY29uc3Q7CisgICAgRW5jbG9zaW5nTGluZUdlb21ldHJ5IGNv
bGxlY3RFbmNsb3NpbmdMaW5lR2VvbWV0cnkoY29uc3QgTGluZUJ1aWxkZXI6OkxheW91dFJlc3Vs
dCYsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBJbmxpbmVSZWN0JiBsaW5lQm94UmVjdCkgY29uc3Q7
CiAKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0OyB9CiAgICAgY29uc3Qg
Qm94JiByb290KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCk7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>