<?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>236883</bug_id>
          
          <creation_ts>2022-02-19 08:37:59 -0800</creation_ts>
          <short_desc>[GStreamer] Add WebKitDMABufVideoSink</short_desc>
          <delta_ts>2022-03-11 00:39:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=237758</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>237649</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>clord</cc>
    
    <cc>pnormand</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zdobersek</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1843855</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-02-19 08:37:59 -0800</bug_when>
    <thetext>[GStreamer] Add WebKitDMABufVideoSink</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843856</commentid>
    <comment_count>1</comment_count>
      <attachid>452639</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-02-19 08:38:31 -0800</bug_when>
    <thetext>Created attachment 452639
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843865</commentid>
    <comment_count>2</comment_count>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2022-02-19 10:01:43 -0800</bug_when>
    <thetext>So just to say it explicitly, this approach will mean that color balance, color conversion, and perhaps others filters, will be processed outside of the gstreamer pipeline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843866</commentid>
    <comment_count>3</comment_count>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2022-02-19 10:06:13 -0800</bug_when>
    <thetext>The patch looks simple and correct. Does it work as-is? (without modifying the player side)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843877</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-02-19 11:22:04 -0800</bug_when>
    <thetext>(In reply to Víctor M. Jáquez L. from comment #2)
&gt; So just to say it explicitly, this approach will mean that color balance,
&gt; color conversion, and perhaps others filters, will be processed outside of
&gt; the gstreamer pipeline.

Yes, but in the current sinks AFAIU there&apos;s no color balance changes applied, and the color conversion is only used when necessary.

If color balance or some other filter would be required with the dmabuf-based sink, it would be done inside the pipeline.

But for any color conversion, with a dmabuf-capable decoder, we would need to cover composition of the given color format. Any other color conversion technique, if avoidable, would just add overhead.

For a raw-data decoder, if it had some unorthodox color format output, we&apos;re covered by the videoconvert element in the playbin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843878</commentid>
    <comment_count>5</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-02-19 11:24:21 -0800</bug_when>
    <thetext>(In reply to Víctor M. Jáquez L. from comment #3)
&gt; The patch looks simple and correct. Does it work as-is? (without modifying
&gt; the player side)

Well it works, but it requires separate changes in MediaPlayerPrivateGStreamer to properly handle these samples as well as actually use the sink. The patch is split from the larger body of work to keep it easy to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844072</commentid>
    <comment_count>6</comment_count>
      <attachid>452639</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-02-20 11:27:35 -0800</bug_when>
    <thetext>Comment on attachment 452639
Patch

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

Can you make the style bubble green? The new file should be listed somewhere in a style-checker allowlist for GObject modules.

&gt; Source/WebCore/platform/graphics/gstreamer/DMABufVideoSinkGStreamer.cpp:164
&gt; +void webKitDMABufVideoSinkSetMediaPlayerPrivate(WebKitDMABufVideoSink* sink, MediaPlayerPrivateGStreamer* player)

maybe factor this out to a GStreamerVideoSinkCommon or Utilities module?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844135</commentid>
    <comment_count>7</comment_count>
      <attachid>452715</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-02-21 00:18:12 -0800</bug_when>
    <thetext>Created attachment 452715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844786</commentid>
    <comment_count>8</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-02-22 10:41:48 -0800</bug_when>
    <thetext>Let&apos;s land this then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845070</commentid>
    <comment_count>9</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-02-23 03:15:25 -0800</bug_when>
    <thetext>Waiting for the branch to happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845075</commentid>
    <comment_count>10</comment_count>
      <attachid>452715</attachid>
    <who name="Zan Dobersek (Reviews)">zdobersek</who>
    <bug_when>2022-02-23 03:42:25 -0800</bug_when>
    <thetext>Comment on attachment 452715
Patch

It happened.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845085</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-23 04:28:38 -0800</bug_when>
    <thetext>Committed r290366 (247682@main): &lt;https://commits.webkit.org/247682@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452715.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845086</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-23 04:29:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/89349168&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452639</attachid>
            <date>2022-02-19 08:38:31 -0800</date>
            <delta_ts>2022-02-21 00:18:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236883-20220219173830.patch</filename>
            <type>text/plain</type>
            <size>20900</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjlhMTQ5YTYwZTlhYmI3
YTQ4Y2U1YTAwNzUwNTg5ZmMzNzM1YWZmMS4uMDk4MDU4ZjE3ZTQ4ZjE0YWFmMWMwN2FhZTVlYmM2
ZjMzNDM4MTJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIyLTAyLTE5ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBB
ZGQgV2ViS2l0RE1BQnVmVmlkZW9TaW5rCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzY4ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgY3VzdG9tIFdlYktpdERNQUJ1ZlZpZGVvU2luayBzaW5rIHRo
YXQgaXMgYWJsZSB0byBhY2NlcHQgZGVjb2RlZAorICAgICAgICBkbWFidWYgb3IgcmF3IGRhdGEg
aW4gYSByYW5nZSBvZiBSR0ItbGlrZSBvciBZVVYgZm9ybWF0cy4KKworICAgICAgICBUaGUgc2lu
ayBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBpbiBsYXJnZSBwYXJ0IG1pcnJvcmluZyB0aGUK
KyAgICAgICAgV2ViS2l0R0xWaWRlb1NpbmsgaW1wbGVtZW50YXRpb24uIFRoZSBmb3JtYXRzIHRo
YXQgKGF0IHRoZSBtb21lbnQpIHdlCisgICAgICAgIGNhbiBjb3JyZWN0bHkgaGFuZGxlIGluc2lk
ZSB0aGUgVGV4dHVyZU1hcHBlci1iYXNlZCBncmFwaGljcyBwaXBlbGluZQorICAgICAgICBhcmUg
Y29tYmluZWQgd2l0aCBib3RoIHRoZSBkbWFidWYgb3IgcmF3IG1lbW9yeSB0eXBlIGR1cmluZyB0
aGUgY2FwcworICAgICAgICBjb25zdHJ1Y3Rpb24uIExpa2UgdGhlIEdMIGNvdW50ZXJwYXJ0LCB0
aGUgcmVjZWl2ZWQgc2FtcGxlcyBhcmUgcGFzc2VkCisgICAgICAgIG9uIHRvIHRoZSBhc3NvY2lh
dGVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciBvYmplY3QuCisKKyAgICAgICAgVGhlIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIGVuaGFuY2Vk
IGxhdGVyIHRvCisgICAgICAgIHByb3Blcmx5IGhhbmRsZSBzYW1wbGVzIGNvbmZvcm1pbmcgdG8g
ZWl0aGVyIHZhcmlhbnQgb2YgdGhlc2UgY2Fwcy4gQnV0CisgICAgICAgIHRoZSBpZGVhIGlzIHRo
YXQgd2hlbiB1c2luZyB0aGlzIHNpbmssIGEgZG1hYnVmLWNvbnRhaW5pbmcgc2FtcGxlIHdpbGwK
KyAgICAgICAgcGFzcyB0aGUgZG1hYnVmIHRvIHRoZSBncmFwaGljcyBzdWJzeXN0ZW0gYW5kIGEg
cmF3LWRhdGEtY29udGFpbmluZworICAgICAgICBzYW1wbGUgd2lsbCBjb3B5IHRoZSBkYXRhIGlu
dG8gYSBkbWFidWYgb2JqZWN0IChjcmVhdGVkIG9yIHJldXNlZCkgYW5kCisgICAgICAgIHRoZW4g
cGFzcyBpdCBvbi4KKworICAgICAgICBUaGUgV0VCS0lUX0dTVF9ETUFCVUZfU0lOS19GT1JDRURf
RkFMTEJBQ0tfQ0FQU19GT1JNQVQgZW52aXJvbm1lbnQKKyAgICAgICAgdmFyaWFibGUgY2FuIGJl
IHNldCB0byBzcGVjaWZ5IHRoZSBkZXNpcmVkIGV4Y2x1c2l2ZSBmb3JtYXQgdGhhdCB0aGlzCisg
ICAgICAgIHNpbmsgc2hvdWxkIHN1cHBvcnQuIFRoaXMgaXMgZXNwZWNpYWxseSBoZWxwZnVsIHRv
IGRlYnVnIHRoZSBjb3JyZWN0CisgICAgICAgIGhhbmRsaW5nIG9mIGRpZmZlcmVudCBSR0Igb3Ig
WVVWIGZvcm1hdHMgaW5zaWRlIHRoZSBncmFwaGljcyBwaXBlbGluZS4KKyAgICAgICAgV2hlbiBz
ZXQsIG9ubHkgcmF3IGRhdGEgb2YgdGhlIHNwZWNpZmllZCBmb3JtYXQgaXMgYWNjZXB0ZWQsIG1l
YW5pbmcgdGhlCisgICAgICAgIHBpcGVsaW5lIHVwc3RyZWFtIHdpbGwgcGVyZm9ybSBhbnkgbmVj
ZXNzYXJ5IGNvbnZlcnNpb24gb2YgdGhlIGRlY29kZWQKKyAgICAgICAgZGF0YSBpbnRvIHRoZSBk
ZXNpcmVkIGZvcm1hdC4gUmF3IGRhdGEgaXMgdGhlbiBwYWNrZWQgaW50byBkbWFidWZzIGFuZAor
ICAgICAgICBzZW50IGludG8gdGhlIHBpcGVsaW5lIGZvciBkaXNwbGF5LCBlbmFibGluZyB0aGUg
ZGV2ZWxvcGVyIHRvIGV4YW1pbmUKKyAgICAgICAgd2hldGhlciB0aGUgZ2l2ZW4gZm9ybWF0IGlz
IGhhbmRsZWQgYXBwcm9wcmlhdGVseS4KKworICAgICAgICBUaGUgc2luayBlbGVtZW50IGlzIHJl
Z2lzdGVyZWQgaW4gcmVnaXN0ZXJXZWJLaXRHU3RyZWFtZXJFbGVtZW50cygpLgorICAgICAgICBU
aGlzIGZ1bmN0aW9uYWxpdHkgd2lsbCByZXF1aXJlIFRoZSBHU3RyZWFtZXIgYWxsb2NhdG9ycyBs
aWJyYXJ5LCBzbyB0aGUKKyAgICAgICAgbmVjZXNzYXJ5IGRlcGVuZGVuY3kgZ2x1ZSBpcyBhbHNv
IHByb3ZpZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9ETUFCdWZWaWRlb1NpbmtHU3RyZWFtZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKGZvcmNlZEZhbGxiYWNrQ2Fwc0Zvcm1hdCk6CisgICAgICAg
ICh3ZWJLaXRETUFCdWZWaWRlb1NpbmtDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJLaXRETUFC
dWZWaWRlb1NpbmtGaW5hbGl6ZSk6CisgICAgICAgICh3ZWJLaXRETUFCdWZWaWRlb1NpbmtHZXRQ
cm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG1hYnVmX3ZpZGVvX3NpbmtfY2xhc3NfaW5pdCk6
CisgICAgICAgICh3ZWJLaXRETUFCdWZWaWRlb1NpbmtTZXRNZWRpYVBsYXllclByaXZhdGUpOgor
ICAgICAgICAod2ViS2l0RE1BQnVmVmlkZW9TaW5rUHJvYmVQbGF0Zm9ybSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0RNQUJ1ZlZpZGVvU2lua0dTdHJlYW1lci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyV2ViS2l0R1N0cmVhbWVyRWxlbWVu
dHMpOgorCiAyMDIyLTAyLTE5ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTEZDXVtJRkNdIEludHJvZHVjZSBMaW5lQm94QnVpbGRlcjo6Y29sbGVjdEZhbGxiYWNr
Rm9udHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQppbmRleCBhYjljNzA5
MmU2NWY1MTE1MjAxM2MxMmJhNDgwMjdmZDcwYjgyNGI0Li4xMzcwYzFiYTc1YWVjYjcyZmQzYWMy
M2ZjYmI2YmE2NDc0MWRlOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9H
U3RyZWFtZXIuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNt
YWtlCkBAIC04LDYgKzgsNyBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJfQVVESU8p
CiAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgICAgIE1vZHVsZXMvd2ViYXVk
aW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRE1BQnVmVmlkZW9TaW5rR1N0cmVhbWVyLmNw
cAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR0xWaWRlb1NpbmtHU3RyZWFt
ZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVh
bWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQXVk
aW9NaXhlci5jcHAKQEAgLTkyLDExICs5MywxMyBAQCBpZiAoRU5BQkxFX1ZJREVPIE9SIEVOQUJM
RV9XRUJfQVVESU8pCiAgICAgICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU1lTVEVNX0lOQ0xVREVf
RElSRUNUT1JJRVMKICAgICAgICAgICAgICR7R1NUUkVBTUVSX0lOQ0xVREVfRElSU30KICAgICAg
ICAgICAgICR7R1NUUkVBTUVSX0JBU0VfSU5DTFVERV9ESVJTfQorICAgICAgICAgICAgJHtHU1RS
RUFNRVJfQUxMT0NBVE9SU19JTkNMVURFX0RJUlN9CiAgICAgICAgICAgICAke0dTVFJFQU1FUl9B
UFBfSU5DTFVERV9ESVJTfQogICAgICAgICAgICAgJHtHU1RSRUFNRVJfUEJVVElMU19JTkNMVURF
X0RJUlN9CiAgICAgICAgICkKIAogICAgICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklF
UworICAgICAgICAgICAgJHtHU1RSRUFNRVJfQUxMT0NBVE9SU19MSUJSQVJJRVN9CiAgICAgICAg
ICAgICAke0dTVFJFQU1FUl9BUFBfTElCUkFSSUVTfQogICAgICAgICAgICAgJHtHU1RSRUFNRVJf
QkFTRV9MSUJSQVJJRVN9CiAgICAgICAgICAgICAke0dTVFJFQU1FUl9MSUJSQVJJRVN9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRE1BQnVm
VmlkZW9TaW5rR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9ETUFCdWZWaWRlb1NpbmtHU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiZDI5
MDE1MDc3MTZmNmJlZjAwMmZhMmNhY2Y4MmVjY2ZlZThiNWIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRE1BQnVmVmlkZW9TaW5r
R1N0cmVhbWVyLmNwcApAQCAtMCwwICsxLDIyMyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIw
MjIgSWdhbGlhLCBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJETUFCdWZWaWRlb1NpbmtHU3RyZWFtZXIuaCIKKworI2lm
IEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5oIgorI2luY2x1ZGUg
Ik1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIgorI2luY2x1ZGUgPGdzdC9hbGxvY2F0b3Jz
L2dzdGRtYWJ1Zi5oPgorI2luY2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc2luay5oPgorI2luY2x1ZGUg
PG11dGV4PgorI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCitlbnVtIHsKKyAgICBQUk9QXzAsCisgICAgUFJPUF9TVEFUUywKKyAgICBQ
Uk9QX0xBU1QKK307CisKK3N0cnVjdCBfV2ViS2l0RE1BQnVmVmlkZW9TaW5rUHJpdmF0ZSB7Cisg
ICAgR1JlZlB0cjxHc3RFbGVtZW50PiBhcHBTaW5rOworICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lciogbWVkaWFQbGF5ZXJQcml2YXRlOworfTsKKworR1NUX0RFQlVHX0NBVEVHT1JZX1NU
QVRJQyh3ZWJraXRfZG1hYnVmX3ZpZGVvX3NpbmtfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RF
RkFVTFQgd2Via2l0X2RtYWJ1Zl92aWRlb19zaW5rX2RlYnVnCisKKyNkZWZpbmUgR1NUX1dFQktJ
VF9ETUFCVUZfU0lOS19DQVBTX0ZPUk1BVF9MSVNUICJ7IFJHQkEsIFJHQngsIEJHUkEsIEJHUngs
IEk0MjAsIFlWMTIsIEE0MjAsIE5WMTIsIE5WMTIsIFk0NDQsIFk0MkIsIFZVWUEgfSIKK3N0YXRp
YyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzaW5rVGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1Q
TEFURSgic2luayIsIEdTVF9QQURfU0lOSywgR1NUX1BBRF9BTFdBWVMsIEdTVF9TVEFUSUNfQ0FQ
U19BTlkpOworCisvLyBUT0RPOiB0aGlzIGlzIGEgbGlzdCBvZiByZW1haW5pbmcgWVVWIGZvcm1h
dHMgd2Ugd2FudCB0byBzdXBwb3J0LCBidXQgZG9uJ3QgY3VycmVudGx5IHdvcmsgKGR1ZSB0byBp
bXByb3BlciBoYW5kbGluZyBpbiBUZXh0dXJlTWFwcGVyKToKKy8vICAgICBZVVkyLCBZVllVLCBV
WVZZLCBWWVVZLCBBWVVWLCBZNDFCCisKKyNkZWZpbmUgd2Via2l0X2RtYWJ1Zl92aWRlb19zaW5r
X3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKK1dFQktJVF9ERUZJTkVfVFlQRV9XSVRIX0NPREUo
V2ViS2l0RE1BQnVmVmlkZW9TaW5rLCB3ZWJraXRfZG1hYnVmX3ZpZGVvX3NpbmssIEdTVF9UWVBF
X0JJTiwKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJraXRfZG1hYnVmX3ZpZGVvX3Np
bmtfZGVidWcsICJ3ZWJraXRkbWFidWZ2aWRlb3NpbmsiLCAwLCAiRE1BQnVmIHZpZGVvIHNpbmsg
ZWxlbWVudCIpKQorCisvLyBXRUJLSVRfR1NUX0RNQUJVRl9TSU5LX0ZPUkNFRF9GQUxMQkFDS19D
QVBTX0ZPUk1BVCBlbnYgY2FuIGJlIHVzZWQgdG8gZm9yY2UgYSBzcGVjaWZpYyBmb3JtYXQgdG8g
YmUgdXNlZCBhcyB0aGUgb25seSBzdXBwb3J0ZWQgZm9ybWF0CisvLyBieSB0aGlzIHNpbmsuIFRo
aXMgaXMgbW9zdCB1c2VmdWwgZm9yIHRlc3RpbmcgYW5kIGRlYnVnZ2luZyB0aGUgcmVuZGVyaW5n
IHBpcGVsaW5lIGJlaGF2aW9yIGZvciBhIGdpdmVuIGZvcm1hdC4KK3N0YXRpYyBjb25zdCBjaGFy
KiBmb3JjZWRGYWxsYmFja0NhcHNGb3JtYXQoKQoreworICAgIHN0YXRpYyBjaGFyIHNfZm9ybWF0
WzY0XSB7IH07CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHNfZmxhZzsKKyAgICBzdGQ6OmNh
bGxfb25jZShzX2ZsYWcsCisgICAgICAgIFsmXSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBm
b3JtYXQgPSBnX2dldGVudigiV0VCS0lUX0dTVF9ETUFCVUZfU0lOS19GT1JDRURfRkFMTEJBQ0tf
Q0FQU19GT1JNQVQiKTsKKyAgICAgICAgICAgIGlmIChmb3JtYXQpCisgICAgICAgICAgICAgICAg
Z19zdHJsY3B5KGNvbnN0X2Nhc3Q8Y2hhcio+KHNfZm9ybWF0KSwgZm9ybWF0LCA2NCk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc19mb3JtYXRbMF0gPSAwOworICAgICAgICB9
KTsKKworICAgIGlmICghc19mb3JtYXRbMF0pCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBzX2Zvcm1hdDsKK30KKworc3RhdGljIHZvaWQgd2ViS2l0RE1BQnVmVmlkZW9TaW5r
Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQoreworICAgIEdTVF9DQUxMX1BBUkVOVChHX09C
SkVDVF9DTEFTUywgY29uc3RydWN0ZWQsIChvYmplY3QpKTsKKworICAgIFdlYktpdERNQUJ1ZlZp
ZGVvU2luayogc2luayA9IFdFQktJVF9ETUFCVUZfVklERU9fU0lOSyhvYmplY3QpOworCisgICAg
c2luay0+cHJpdi0+YXBwU2luayA9IG1ha2VHU3RyZWFtZXJFbGVtZW50KCJhcHBzaW5rIiwgIndl
YmtpdC1kbWFidWYtdmlkZW8tYXBwc2luayIpOworICAgIEFTU0VSVChzaW5rLT5wcml2LT5hcHBT
aW5rKTsKKyAgICBnX29iamVjdF9zZXQoc2luay0+cHJpdi0+YXBwU2luay5nZXQoKSwgImVuYWJs
ZS1sYXN0LXNhbXBsZSIsIEZBTFNFLCAiZW1pdC1zaWduYWxzIiwgVFJVRSwgIm1heC1idWZmZXJz
IiwgMSwgbnVsbHB0cik7CisKKyAgICBnc3RfYmluX2FkZChHU1RfQklOX0NBU1Qoc2luayksIHNp
bmstPnByaXYtPmFwcFNpbmsuZ2V0KCkpOworCisgICAgLy8gVGhpcyBzaW5rIGhhbmRsZXMgZG1h
YnVmIGRhdGEgb3IgcmF3IGRhdGEgb2YgYW55IGZvcm1hdCBpbiB0aGUgc3VwcG9ydGVkIGZvcm1h
dCBsaXN0LgorICAgIC8vIFRoZSBkbWFidWYgYW5kIHJhdyBkYXRhIHR5cGVzIGFyZSB0aGUgdHdv
IHR5cGVzIG9mIGRhdGEgd2UgY2FuIGhhbmRsZSB2aWEgdGhpcyBzaW5rIChpbiBjb21iaW5hdGlv
biB3aXRoIGZ1bmN0aW9uYWxpdHkgaW4KKyAgICAvLyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIpLiBUaGUgZm9ybWF0IGxpc3QgY29ycmVzcG9uZHMgdG8gdGhlIGZvcm1hdHMgd2UgYXJlIGFi
bGUgdG8gdGhlbiBoYW5kbGUgaW4gdGhlIGdyYXBoaWNzIHBpcGVsaW5lLgorICAgIC8vIEluIGNh
c2Ugb2YgZG1hYnVmIGRhdGEsIHRoYXQgZG1hYnVmIGlzIGhhbmRsZWQgbW9zdCBvcHRpbWFsbHkg
YW5kIGp1c3QgcmVsYXllZCB0byB0aGUgZ3JhcGhpY3MgcGlwZWxpbmUuCisgICAgLy8gSW4gY2Fz
ZSBvZiByYXcgZGF0YSwgZG1hYnVmIG9iamVjdHMgYXJlIHByb2R1Y2VkIG9uIHRoZSBzcG90IGFu
ZCBmaWxsZWQgd2l0aCB0aGF0IGRhdGEsIGFuZCB0aGVuIHB1c2hlZCB0byB0aGUgZ3JhcGhpY3Mg
cGlwZWxpbmUuCisgICAgc3RhdGljIEdzdFN0YXRpY0NhcHMgc19kbWFidWZDYXBzID0gR1NUX1NU
QVRJQ19DQVBTKAorICAgICAgICBHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMoR1NU
X0NBUFNfRkVBVFVSRV9NRU1PUllfRE1BQlVGLCBHU1RfV0VCS0lUX0RNQUJVRl9TSU5LX0NBUFNf
Rk9STUFUX0xJU1QpKTsKKyAgICBzdGF0aWMgR3N0U3RhdGljQ2FwcyBzX2ZhbGxiYWNrQ2FwcyA9
IEdTVF9TVEFUSUNfQ0FQUyhHU1RfVklERU9fQ0FQU19NQUtFKEdTVF9XRUJLSVRfRE1BQlVGX1NJ
TktfQ0FQU19GT1JNQVRfTElTVCkpOworCisgICAgR1JlZlB0cjxHc3RDYXBzPiBjYXBzID0gYWRv
cHRHUmVmKGdzdF9jYXBzX25ld19lbXB0eSgpKTsKKyAgICB7CisgICAgICAgIGlmIChmb3JjZWRG
YWxsYmFja0NhcHNGb3JtYXQoKSkgeworICAgICAgICAgICAgY2FwcyA9IGdzdF9jYXBzX25ld19z
aW1wbGUoInZpZGVvL3gtcmF3IiwKKyAgICAgICAgICAgICAgICAiZm9ybWF0IiwgR19UWVBFX1NU
UklORywgZm9yY2VkRmFsbGJhY2tDYXBzRm9ybWF0KCksIG51bGxwdHIpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgZ3N0X2NhcHNfYXBwZW5kKGNhcHMuZ2V0KCksIGdzdF9zdGF0aWNf
Y2Fwc19nZXQoJnNfZG1hYnVmQ2FwcykpOworICAgICAgICAgICAgZ3N0X2NhcHNfYXBwZW5kKGNh
cHMuZ2V0KCksIGdzdF9zdGF0aWNfY2Fwc19nZXQoJnNfZmFsbGJhY2tDYXBzKSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgZ19vYmplY3Rfc2V0KHNpbmstPnByaXYtPmFwcFNpbmsuZ2V0KCksICJj
YXBzIiwgY2Fwcy5nZXQoKSwgbnVsbHB0cik7CisKKyAgICBHUmVmUHRyPEdzdFBhZD4gcGFkID0g
YWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKHNpbmstPnByaXYtPmFwcFNpbmsu
Z2V0KCksICJzaW5rIikpOworICAgIGdzdF9lbGVtZW50X2FkZF9wYWQoR1NUX0VMRU1FTlRfQ0FT
VChzaW5rKSwgZ3N0X2dob3N0X3BhZF9uZXcoInNpbmsiLCBwYWQuZ2V0KCkpKTsKK30KKwordm9p
ZCB3ZWJLaXRETUFCdWZWaWRlb1NpbmtGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIFdlYktpdERNQUJ1ZlZpZGVvU2luayogc2lu
ayA9IFdFQktJVF9ETUFCVUZfVklERU9fU0lOSyhvYmplY3QpOworICAgIFdlYktpdERNQUJ1ZlZp
ZGVvU2lua1ByaXZhdGUqIHByaXYgPSBzaW5rLT5wcml2OworCisgICAgaWYgKHByaXYtPm1lZGlh
UGxheWVyUHJpdmF0ZSkKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9k
YXRhKHByaXYtPmFwcFNpbmsuZ2V0KCksIHByaXYtPm1lZGlhUGxheWVyUHJpdmF0ZSk7CisKKyAg
ICBHU1RfREVCVUdfT0JKRUNUKG9iamVjdCwgIldlYktpdERNQUJ1ZlZpZGVvU2luayBmaW5hbGl6
ZWQuIik7CisKKyAgICBHU1RfQ0FMTF9QQVJFTlQoR19PQkpFQ1RfQ0xBU1MsIGZpbmFsaXplLCAo
b2JqZWN0KSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYktpdERNQUJ1ZlZpZGVvU2lua0dldFByb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1Bh
cmFtU3BlYyogcGFyYW1TcGVjKQoreworICAgIFdlYktpdERNQUJ1ZlZpZGVvU2luayogc2luayA9
IFdFQktJVF9ETUFCVUZfVklERU9fU0lOSyhvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9wZXJ0
eUlkKSB7CisgICAgY2FzZSBQUk9QX1NUQVRTOgorICAgICAgICBpZiAod2Via2l0R3N0Q2hlY2tW
ZXJzaW9uKDEsIDE4LCAwKSkgeworICAgICAgICAgICAgR1VuaXF1ZU91dFB0cjxHc3RTdHJ1Y3R1
cmU+IHN0YXRzOworICAgICAgICAgICAgZ19vYmplY3RfZ2V0KHNpbmstPnByaXYtPmFwcFNpbmsu
Z2V0KCksICJzdGF0cyIsICZzdGF0cy5vdXRQdHIoKSwgbnVsbHB0cik7CisgICAgICAgICAgICBn
c3RfdmFsdWVfc2V0X3N0cnVjdHVyZSh2YWx1ZSwgc3RhdHMuZ2V0KCkpOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJ
RF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBhcmFtU3BlYyk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwor
c3RhdGljIHZvaWQgd2Via2l0X2RtYWJ1Zl92aWRlb19zaW5rX2NsYXNzX2luaXQoV2ViS2l0RE1B
QnVmVmlkZW9TaW5rQ2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xh
c3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgR3N0RWxlbWVudENsYXNzKiBlbGVtZW50
Q2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyhrbGFzcyk7CisKKyAgICBvYmplY3RDbGFzcy0+Y29u
c3RydWN0ZWQgPSB3ZWJLaXRETUFCdWZWaWRlb1NpbmtDb25zdHJ1Y3RlZDsKKyAgICBvYmplY3RD
bGFzcy0+ZmluYWxpemUgPSB3ZWJLaXRETUFCdWZWaWRlb1NpbmtGaW5hbGl6ZTsKKyAgICBvYmpl
Y3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2ViS2l0RE1BQnVmVmlkZW9TaW5rR2V0UHJvcGVydHk7
CisKKyAgICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlKGVsZW1lbnRDbGFzcywg
Z3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0KCZzaW5rVGVtcGxhdGUpKTsKKyAgICBnc3RfZWxl
bWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhKGVsZW1lbnRDbGFzcywgIldlYktpdCBETUFC
dWYgdmlkZW8gc2luayIsICJTaW5rL1ZpZGVvIiwgIlJlbmRlcnMgdmlkZW8iLCAiWmFuIERvYmVy
c2VrIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4iKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1BfU1RBVFMsIGdfcGFyYW1fc3BlY19ib3hlZCgi
c3RhdHMiLCAiU3RhdGlzdGljcyIsCisgICAgICAgICJTaW5rIFN0YXRpc3RpY3MiLCBHU1RfVFlQ
RV9TVFJVQ1RVUkUsIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihHX1BBUkFNX1JFQURBQkxFIHwg
R19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKK30KKwordm9pZCB3ZWJLaXRETUFCdWZWaWRlb1Np
bmtTZXRNZWRpYVBsYXllclByaXZhdGUoV2ViS2l0RE1BQnVmVmlkZW9TaW5rKiBzaW5rLCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikKK3sKKyAgICBXZWJLaXRETUFCdWZWaWRl
b1NpbmtQcml2YXRlKiBwcml2ID0gc2luay0+cHJpdjsKKworICAgIHByaXYtPm1lZGlhUGxheWVy
UHJpdmF0ZSA9IHBsYXllcjsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHByaXYtPmFwcFNpbmsuZ2V0
KCksICJuZXctc2FtcGxlIiwgR19DQUxMQkFDSygrW10oR3N0RWxlbWVudCogc2luaywgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpIC0+IEdzdEZsb3dSZXR1cm4geworICAgICAg
ICBHUmVmUHRyPEdzdFNhbXBsZT4gc2FtcGxlID0gYWRvcHRHUmVmKGdzdF9hcHBfc2lua19wdWxs
X3NhbXBsZShHU1RfQVBQX1NJTksoc2luaykpKTsKKyAgICAgICAgR3N0QnVmZmVyKiBidWZmZXIg
PSBnc3Rfc2FtcGxlX2dldF9idWZmZXIoc2FtcGxlLmdldCgpKTsKKyAgICAgICAgR1NUX1RSQUNF
X09CSkVDVChzaW5rLCAibmV3LXNhbXBsZSB3aXRoIFBUUz0lIiBHU1RfVElNRV9GT1JNQVQsIEdT
VF9USU1FX0FSR1MoR1NUX0JVRkZFUl9QVFMoYnVmZmVyKSkpOworICAgICAgICBwbGF5ZXItPnRy
aWdnZXJSZXBhaW50KHNhbXBsZS5nZXQoKSk7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19PSzsK
KyAgICB9KSwgcGxheWVyKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHByaXYtPmFwcFNpbmsuZ2V0
KCksICJuZXctcHJlcm9sbCIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1lbnQqIHNpbmssIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKSAtPiBHc3RGbG93UmV0dXJuIHsKKyAgICAg
ICAgR1JlZlB0cjxHc3RTYW1wbGU+IHNhbXBsZSA9IGFkb3B0R1JlZihnc3RfYXBwX3NpbmtfcHVs
bF9wcmVyb2xsKEdTVF9BUFBfU0lOSyhzaW5rKSkpOworICAgICAgICBHc3RCdWZmZXIqIGJ1ZmZl
ciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihzYW1wbGUuZ2V0KCkpOworICAgICAgICBHU1RfREVC
VUdfT0JKRUNUKHNpbmssICJuZXctcHJlcm9sbCB3aXRoIFBUUz0lIiBHU1RfVElNRV9GT1JNQVQs
IEdTVF9USU1FX0FSR1MoR1NUX0JVRkZFUl9QVFMoYnVmZmVyKSkpOworICAgICAgICBwbGF5ZXIt
PnRyaWdnZXJSZXBhaW50KHNhbXBsZS5nZXQoKSk7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19P
SzsKKyAgICB9KSwgcGxheWVyKTsKKworICAgIEdSZWZQdHI8R3N0UGFkPiBwYWQgPSBhZG9wdEdS
ZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocHJpdi0+YXBwU2luay5nZXQoKSwgInNpbmsi
KSk7CisgICAgZ3N0X3BhZF9hZGRfcHJvYmUocGFkLmdldCgpLCBzdGF0aWNfY2FzdDxHc3RQYWRQ
cm9iZVR5cGU+KEdTVF9QQURfUFJPQkVfVFlQRV9QVVNIIHwgR1NUX1BBRF9QUk9CRV9UWVBFX1FV
RVJZX0RPV05TVFJFQU0gfCBHU1RfUEFEX1BST0JFX1RZUEVfRVZFTlRfRkxVU0ggfCBHU1RfUEFE
X1BST0JFX1RZUEVfRVZFTlRfRE9XTlNUUkVBTSksIFtdKEdzdFBhZCosIEdzdFBhZFByb2JlSW5m
byogaW5mbywgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IEdzdFBhZFByb2JlUmV0dXJuIHsKKyAgICAg
ICAgYXV0byogcGxheWVyID0gc3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Kj4odXNlckRhdGEpOworCisgICAgICAgIGlmIChpbmZvLT50eXBlICYgR1NUX1BBRF9QUk9CRV9U
WVBFX0VWRU5UX0RPV05TVFJFQU0pIHsKKyAgICAgICAgICAgIGlmIChHU1RfRVZFTlRfVFlQRShH
U1RfUEFEX1BST0JFX0lORk9fRVZFTlQoaW5mbykpICE9IEdTVF9FVkVOVF9UQUcpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CisgICAgICAgICAgICBHc3RUYWdMaXN0
KiB0YWdMaXN0OworICAgICAgICAgICAgZ3N0X2V2ZW50X3BhcnNlX3RhZyhHU1RfUEFEX1BST0JF
X0lORk9fRVZFTlQoaW5mbyksICZ0YWdMaXN0KTsKKyAgICAgICAgICAgIHBsYXllci0+dXBkYXRl
VmlkZW9PcmllbnRhdGlvbih0YWdMaXN0KTsKKyAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BS
T0JFX09LOworICAgICAgICB9CisKKyAgICAgICAgLy8gSW4gc29tZSBwbGF0Zm9ybXMgKGUuZy4g
T3Blbk1BWCBvbiB0aGUgUmFzcGJlcnJ5IFBpKSB3aGVuIGEgcmVzb2x1dGlvbiBjaGFuZ2Ugb2Nj
dXJzIHRoZQorICAgICAgICAvLyBwaXBlbGluZSBoYXMgdG8gYmUgZHJhaW5lZCBiZWZvcmUgYSBm
cmFtZSB3aXRoIHRoZSBuZXcgcmVzb2x1dGlvbiBjYW4gYmUgZGVjb2RlZC4KKyAgICAgICAgLy8g
SW4gdGhpcyBjb250ZXh0LCBpdCdzIGltcG9ydGFudCB0aGF0IHdlIGRvbid0IGhvbGQgcmVmZXJl
bmNlcyB0byBhbnkgcHJldmlvdXMgZnJhbWUKKyAgICAgICAgLy8gKGUuZy4gbV9zYW1wbGUpIHNv
IHRoYXQgZGVjb2RpbmcgY2FuIGNvbnRpbnVlLgorICAgICAgICAvLyBXZSBhcmUgYWxzbyBub3Qg
c3VwcG9zZWQgdG8ga2VlcCB0aGUgb3JpZ2luYWwgZnJhbWUgYWZ0ZXIgYSBmbHVzaC4KKyAgICAg
ICAgaWYgKGluZm8tPnR5cGUgJiBHU1RfUEFEX1BST0JFX1RZUEVfUVVFUllfRE9XTlNUUkVBTSkg
eworICAgICAgICAgICAgaWYgKEdTVF9RVUVSWV9UWVBFKEdTVF9QQURfUFJPQkVfSU5GT19RVUVS
WShpbmZvKSkgIT0gR1NUX1FVRVJZX0RSQUlOKQorICAgICAgICAgICAgICAgIHJldHVybiBHU1Rf
UEFEX1BST0JFX09LOworICAgICAgICAgICAgR1NUX0RFQlVHKCJBY3RpbmcgdXBvbiBEUkFJTiBx
dWVyeSIpOworICAgICAgICB9CisgICAgICAgIGlmIChpbmZvLT50eXBlICYgR1NUX1BBRF9QUk9C
RV9UWVBFX0VWRU5UX0ZMVVNIKSB7CisgICAgICAgICAgICBpZiAoR1NUX0VWRU5UX1RZUEUoR1NU
X1BBRF9QUk9CRV9JTkZPX0VWRU5UKGluZm8pKSAhPSBHU1RfRVZFTlRfRkxVU0hfU1RBUlQpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CisgICAgICAgICAgICBHU1Rf
REVCVUcoIkFjdGluZyB1cG9uIGZsdXNoLXN0YXJ0IGV2ZW50Iik7CisgICAgICAgIH0KKworICAg
ICAgICBwbGF5ZXItPmZsdXNoQ3VycmVudEJ1ZmZlcigpOworICAgICAgICByZXR1cm4gR1NUX1BB
RF9QUk9CRV9PSzsKKyAgICB9LCBwbGF5ZXIsIG51bGxwdHIpOworfQorCitib29sIHdlYktpdERN
QUJ1ZlZpZGVvU2lua1Byb2JlUGxhdGZvcm0oKQoreworICAgIHJldHVybiBpc0dTdHJlYW1lclBs
dWdpbkF2YWlsYWJsZSgiYXBwIik7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0RNQUJ1ZlZpZGVvU2lua0dTdHJlYW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0RNQUJ1ZlZp
ZGVvU2lua0dTdHJlYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmMjRhNmYwZmEzN2QyMzc1NTFlNjgxNjlh
Y2FhNzlkN2M5OTBmZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvRE1BQnVmVmlkZW9TaW5rR1N0cmVhbWVyLmgKQEAgLTAsMCAr
MSw1OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMjIgSWdhbGlhLCBTLkwKKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg
IDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFZJREVP
KQorCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI7Cit9CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmlu
ZSBXRUJLSVRfVFlQRV9ETUFCVUZfVklERU9fU0lOSyAgICAgICAgICAgICh3ZWJraXRfZG1hYnVm
X3ZpZGVvX3NpbmtfZ2V0X3R5cGUgKCkpCisjZGVmaW5lIFdFQktJVF9ETUFCVUZfVklERU9fU0lO
SyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgV0VC
S0lUX1RZUEVfRE1BQlVGX1ZJREVPX1NJTkssIFdlYktpdERNQUJ1ZlZpZGVvU2luaykpCisjZGVm
aW5lIFdFQktJVF9ETUFCVUZfVklERU9fU0lOS19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVD
S19DTEFTU19DQVNUICgoa2xhc3MpLCBXRUJLSVRfVFlQRV9ETUFCVUZfVklERU9fU0lOSywgV2Vi
S2l0RE1BQnVmVmlkZW9TaW5rQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfRE1BQlVGX1ZJREVP
X1NJTksob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIFdF
QktJVF9UWVBFX0RNQUJVRl9WSURFT19TSU5LKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0RNQUJVRl9W
SURFT19TSU5LX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyks
IFdFQktJVF9UWVBFX0RNQUJVRl9WSURFT19TSU5LKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dERNQUJ1ZlZpZGVvU2luayAgICAgICAgV2ViS2l0RE1BQnVmVmlkZW9TaW5rOwordHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdERNQUJ1ZlZpZGVvU2lua0NsYXNzICAgV2ViS2l0RE1BQnVmVmlkZW9TaW5r
Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE1BQnVmVmlkZW9TaW5rUHJpdmF0ZSBXZWJL
aXRETUFCdWZWaWRlb1NpbmtQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdERNQUJ1ZlZpZGVvU2lu
ayB7CisgICAgR3N0QmluIHBhcmVudDsKKworICAgIFdlYktpdERNQUJ1ZlZpZGVvU2lua1ByaXZh
dGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdERNQUJ1ZlZpZGVvU2lua0NsYXNzIHsKKyAg
ICBHc3RCaW5DbGFzcyBwYXJlbnRDbGFzczsKK307CisKK0dUeXBlIHdlYmtpdF9kbWFidWZfdmlk
ZW9fc2lua19nZXRfdHlwZSh2b2lkKTsKKworYm9vbCB3ZWJLaXRETUFCdWZWaWRlb1NpbmtQcm9i
ZVBsYXRmb3JtKCk7Cit2b2lkIHdlYktpdERNQUJ1ZlZpZGVvU2lua1NldE1lZGlhUGxheWVyUHJp
dmF0ZShXZWJLaXRETUFCdWZWaWRlb1NpbmsqLCBXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIqKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggOWY0OTVkZGY5MDJkZjRmZmRmNTNhZmU4YzBm
Njc0ZjU2Y2JmNWZlMS4uNzIxMTU3YmQ4NjdkMjgzYmMxMjcxYTI2ZTU3MjIxNjMwZjliZTM0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpZiBVU0Uo
R1NUUkVBTUVSKQogCiAjaW5jbHVkZSAiQXBwbGljYXRpb25HTGliLmgiCisjaW5jbHVkZSAiRE1B
QnVmVmlkZW9TaW5rR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiR0xWaWRlb1NpbmtHU3RyZWFtZXIu
aCIKICNpbmNsdWRlICJHU3RyZWFtZXJBdWRpb01peGVyLmgiCiAjaW5jbHVkZSAiR1VuaXF1ZVB0
ckdTdHJlYW1lci5oIgpAQCAtMzI3LDYgKzMyOCw3IEBAIHZvaWQgcmVnaXN0ZXJXZWJLaXRHU3Ry
ZWFtZXJFbGVtZW50cygpCiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgICAgIGdzdF9lbGVtZW50
X3JlZ2lzdGVyKDAsICJ3ZWJraXR3ZWJzcmMiLCBHU1RfUkFOS19QUklNQVJZICsgMTAwLCBXRUJL
SVRfVFlQRV9XRUJfU1JDKTsKKyAgICAgICAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIoMCwgIndlYmtp
dGRtYWJ1ZnZpZGVvc2luayIsIEdTVF9SQU5LX05PTkUsIFdFQktJVF9UWVBFX0RNQUJVRl9WSURF
T19TSU5LKTsKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQogICAgICAgICBnc3RfZWxlbWVudF9yZWdp
c3RlcigwLCAid2Via2l0Z2x2aWRlb3NpbmsiLCBHU1RfUkFOS19OT05FLCBXRUJLSVRfVFlQRV9H
TF9WSURFT19TSU5LKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL0ZpbmRHU3Ry
ZWFtZXIuY21ha2UgYi9Tb3VyY2UvY21ha2UvRmluZEdTdHJlYW1lci5jbWFrZQppbmRleCA5ZDk3
YTRiNTBjYjBmOTgwZjViODQwNTdjMmJhZWU4OTk3OTlkZjY2Li40ODcwMDViMmQwNzhlNmQ1ZWJm
NjgzZDlmNDI3Nzg5YzY0NzRmNzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvRmluZEdTdHJl
YW1lci5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvRmluZEdTdHJlYW1lci5jbWFrZQpAQCAtMTYs
NiArMTYsNyBAQAogIyBwbHVnaW5zIGNhbiBiZSBzZWFyY2hlZCwgYW5kIHRoZXkgZGVmaW5lIHRo
ZSBmb2xsb3dpbmcgdmFyaWFibGVzIGlmCiAjIGZvdW5kOgogIworIyAgZ3N0cmVhbWVyLWFsbG9j
YXRvcnM6IEdTVFJFQU1FUl9BTExPQ0FUT1JTX0lOQ0xVREVfRElSUyBhbmQgR1NUUkVBTUVSX0FM
TE9DQVRPUlNfTElCUkFSSUVTCiAjICBnc3RyZWFtZXItYXBwOiAgICAgICAgR1NUUkVBTUVSX0FQ
UF9JTkNMVURFX0RJUlMgYW5kIEdTVFJFQU1FUl9BUFBfTElCUkFSSUVTCiAjICBnc3RyZWFtZXIt
YXVkaW86ICAgICAgR1NUUkVBTUVSX0FVRElPX0lOQ0xVREVfRElSUyBhbmQgR1NUUkVBTUVSX0FV
RElPX0xJQlJBUklFUwogIyAgZ3N0cmVhbWVyLWZmdDogICAgICAgIEdTVFJFQU1FUl9GRlRfSU5D
TFVERV9ESVJTIGFuZCBHU1RSRUFNRVJfRkZUX0xJQlJBUklFUwpAQCAtOTcsNiArOTgsNyBAQCBG
SU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX0ZVTEwgZ3N0cmVhbWVyLWZ1bGwtMS4w
Pj0xLjE3LjAgZ3N0cmVhbWVyLWZ1bAogIyAyLiBGaW5kIEdTdHJlYW1lciBwbHVnaW5zCiAjIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorRklORF9HU1RSRUFNRVJfQ09NUE9ORU5UKEdTVFJF
QU1FUl9BTExPQ0FUT1JTIGdzdHJlYW1lci1hbGxvY2F0b3JzLTEuMCBnc3RhbGxvY2F0b3JzLTEu
MCkKIEZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfQVBQIGdzdHJlYW1lci1hcHAt
MS4wIGdzdGFwcC0xLjApCiBGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX0FVRElP
IGdzdHJlYW1lci1hdWRpby0xLjAgZ3N0YXVkaW8tMS4wKQogRklORF9HU1RSRUFNRVJfQ09NUE9O
RU5UKEdTVFJFQU1FUl9GRlQgZ3N0cmVhbWVyLWZmdC0xLjAgZ3N0ZmZ0LTEuMCkKQEAgLTEyNCw2
ICsxMjYsOCBAQCBGSU5EX1BBQ0tBR0VfSEFORExFX1NUQU5EQVJEX0FSR1MoR1N0cmVhbWVyIFJF
UVVJUkVEX1ZBUlMgX0dTVFJFQU1FUl9SRVFVSVJFRF9WQQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWRVJTSU9OX1ZBUiAgIEdTVFJFQU1FUl9WRVJTSU9OKQog
CiBtYXJrX2FzX2FkdmFuY2VkKAorICAgIEdTVFJFQU1FUl9BTExPQ0FUT1JTX0lOQ0xVREVfRElS
UworICAgIEdTVFJFQU1FUl9BTExPQ0FUT1JTX0xJQlJBUklFUwogICAgIEdTVFJFQU1FUl9BUFBf
SU5DTFVERV9ESVJTCiAgICAgR1NUUkVBTUVSX0FQUF9MSUJSQVJJRVMKICAgICBHU1RSRUFNRVJf
QVVESU9fSU5DTFVERV9ESVJTCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5k
ZXggN2I5NDNhNWE3NDM1NTQ4ZDQ1ZDdiNDlkOTAxN2ZmOGY2ODkyZTFlZS4uOGJhMGEzZDliZTYx
MGVlZGU5NzBjZjk0Zjk0ZDM4YWI3MmJmYjUyMSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBi
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAyLTE5ICBaYW4gRG9iZXJzZWsgIDx6
ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBBZGQgV2ViS2l0RE1B
QnVmVmlkZW9TaW5rCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzY4ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNvdXJjZS9jbWFrZS9GaW5kR1N0cmVhbWVyLmNtYWtlOgorICAgICAgICBBbHNvIHNl
YXJjaCBmb3IgZ3N0cmVhbWVyLWFsbG9jYXRvcnMtMS4wLCBwcm9kdWNlIHRoZSByZWxldmFudCB2
YXJpYWJsZXMKKyAgICAgICAgY29udGFpbmluZyBpbmNsdWRlIGRpcmVjdG9yaWVzIGFuZCBjZmxh
Z3MuCisKIDIwMjItMDItMTggIFJvYmVydCBKZW5uZXIgIDxKZW5uZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjkwMTQ5Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452715</attachid>
            <date>2022-02-21 00:18:12 -0800</date>
            <delta_ts>2022-02-23 04:28:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236883-20220221091810.patch</filename>
            <type>text/plain</type>
            <size>30723</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjlhMTQ5YTYwZTlhYmI3
YTQ4Y2U1YTAwNzUwNTg5ZmMzNzM1YWZmMS4uODk4OGQxODhiNjk1NTc5MDNlZDdjNTRmYTA3MTI5
ODdjNzIyZGM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIyLTAyLTIxICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBB
ZGQgV2ViS2l0RE1BQnVmVmlkZW9TaW5rCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzY4ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgY3VzdG9tIFdlYktpdERNQUJ1ZlZpZGVvU2luayBzaW5rIHRo
YXQgaXMgYWJsZSB0byBhY2NlcHQgZGVjb2RlZAorICAgICAgICBkbWFidWYgb3IgcmF3IGRhdGEg
aW4gYSByYW5nZSBvZiBSR0ItbGlrZSBvciBZVVYgZm9ybWF0cy4KKworICAgICAgICBUaGUgc2lu
ayBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBpbiBsYXJnZSBwYXJ0IG1pcnJvcmluZyB0aGUK
KyAgICAgICAgV2ViS2l0R0xWaWRlb1NpbmsgaW1wbGVtZW50YXRpb24uIFRoZSBmb3JtYXRzIHRo
YXQgKGF0IHRoZSBtb21lbnQpIHdlCisgICAgICAgIGNhbiBjb3JyZWN0bHkgaGFuZGxlIGluc2lk
ZSB0aGUgVGV4dHVyZU1hcHBlci1iYXNlZCBncmFwaGljcyBwaXBlbGluZQorICAgICAgICBhcmUg
Y29tYmluZWQgd2l0aCBib3RoIHRoZSBkbWFidWYgb3IgcmF3IG1lbW9yeSB0eXBlIGR1cmluZyB0
aGUgY2FwcworICAgICAgICBjb25zdHJ1Y3Rpb24uIExpa2UgdGhlIEdMIGNvdW50ZXJwYXJ0LCB0
aGUgcmVjZWl2ZWQgc2FtcGxlcyBhcmUgcGFzc2VkCisgICAgICAgIG9uIHRvIHRoZSBhc3NvY2lh
dGVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciBvYmplY3QuIFRoZSBjb21tb24KKyAgICAg
ICAgaW50ZWdyYXRpb24gaW50byB0aGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIGZ1bmN0
aW9uYWxpdHkgaXMKKyAgICAgICAgZW5jYXBzdWxhdGVkIGludG8gdGhlIHdlYktpdFZpZGVvU2lu
a1NldE1lZGlhUGxheWVyUHJpdmF0ZSgpIGZ1bmN0aW9uLgorCisgICAgICAgIFRoZSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIgaW1wbGVtZW50YXRpb24gd2lsbCBiZSBlbmhhbmNlZCBsYXRl
ciB0bworICAgICAgICBwcm9wZXJseSBoYW5kbGUgc2FtcGxlcyBjb25mb3JtaW5nIHRvIGVpdGhl
ciB2YXJpYW50IG9mIHRoZXNlIGNhcHMuIEJ1dAorICAgICAgICB0aGUgaWRlYSBpcyB0aGF0IHdo
ZW4gdXNpbmcgdGhpcyBzaW5rLCBhIGRtYWJ1Zi1jb250YWluaW5nIHNhbXBsZSB3aWxsCisgICAg
ICAgIHBhc3MgdGhlIGRtYWJ1ZiB0byB0aGUgZ3JhcGhpY3Mgc3Vic3lzdGVtIGFuZCBhIHJhdy1k
YXRhLWNvbnRhaW5pbmcKKyAgICAgICAgc2FtcGxlIHdpbGwgY29weSB0aGUgZGF0YSBpbnRvIGEg
ZG1hYnVmIG9iamVjdCAoY3JlYXRlZCBvciByZXVzZWQpIGFuZAorICAgICAgICB0aGVuIHBhc3Mg
aXQgb24uCisKKyAgICAgICAgVGhlIFdFQktJVF9HU1RfRE1BQlVGX1NJTktfRk9SQ0VEX0ZBTExC
QUNLX0NBUFNfRk9STUFUIGVudmlyb25tZW50CisgICAgICAgIHZhcmlhYmxlIGNhbiBiZSBzZXQg
dG8gc3BlY2lmeSB0aGUgZGVzaXJlZCBleGNsdXNpdmUgZm9ybWF0IHRoYXQgdGhpcworICAgICAg
ICBzaW5rIHNob3VsZCBzdXBwb3J0LiBUaGlzIGlzIGVzcGVjaWFsbHkgaGVscGZ1bCB0byBkZWJ1
ZyB0aGUgY29ycmVjdAorICAgICAgICBoYW5kbGluZyBvZiBkaWZmZXJlbnQgUkdCIG9yIFlVViBm
b3JtYXRzIGluc2lkZSB0aGUgZ3JhcGhpY3MgcGlwZWxpbmUuCisgICAgICAgIFdoZW4gc2V0LCBv
bmx5IHJhdyBkYXRhIG9mIHRoZSBzcGVjaWZpZWQgZm9ybWF0IGlzIGFjY2VwdGVkLCBtZWFuaW5n
IHRoZQorICAgICAgICBwaXBlbGluZSB1cHN0cmVhbSB3aWxsIHBlcmZvcm0gYW55IG5lY2Vzc2Fy
eSBjb252ZXJzaW9uIG9mIHRoZSBkZWNvZGVkCisgICAgICAgIGRhdGEgaW50byB0aGUgZGVzaXJl
ZCBmb3JtYXQuIFJhdyBkYXRhIGlzIHRoZW4gcGFja2VkIGludG8gZG1hYnVmcyBhbmQKKyAgICAg
ICAgc2VudCBpbnRvIHRoZSBwaXBlbGluZSBmb3IgZGlzcGxheSwgZW5hYmxpbmcgdGhlIGRldmVs
b3BlciB0byBleGFtaW5lCisgICAgICAgIHdoZXRoZXIgdGhlIGdpdmVuIGZvcm1hdCBpcyBoYW5k
bGVkIGFwcHJvcHJpYXRlbHkuCisKKyAgICAgICAgVGhlIHNpbmsgZWxlbWVudCBpcyByZWdpc3Rl
cmVkIGluIHJlZ2lzdGVyV2ViS2l0R1N0cmVhbWVyRWxlbWVudHMoKS4KKyAgICAgICAgVGhpcyBm
dW5jdGlvbmFsaXR5IHdpbGwgcmVxdWlyZSBUaGUgR1N0cmVhbWVyIGFsbG9jYXRvcnMgbGlicmFy
eSwgc28gdGhlCisgICAgICAgIG5lY2Vzc2FyeSBkZXBlbmRlbmN5IGdsdWUgaXMgYWxzbyBwcm92
aWRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL0dTdHJlYW1lci5jbWFrZToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRE1BQnVmVmlkZW9TaW5rR1N0cmVhbWVyLmNwcDog
QWRkZWQuCisgICAgICAgIChmb3JjZWRGYWxsYmFja0NhcHNGb3JtYXQpOgorICAgICAgICAod2Vi
S2l0RE1BQnVmVmlkZW9TaW5rQ29uc3RydWN0ZWQpOgorICAgICAgICAod2ViS2l0RE1BQnVmVmlk
ZW9TaW5rRmluYWxpemUpOgorICAgICAgICAod2ViS2l0RE1BQnVmVmlkZW9TaW5rR2V0UHJvcGVy
dHkpOgorICAgICAgICAod2Via2l0X2RtYWJ1Zl92aWRlb19zaW5rX2NsYXNzX2luaXQpOgorICAg
ICAgICAod2ViS2l0RE1BQnVmVmlkZW9TaW5rU2V0TWVkaWFQbGF5ZXJQcml2YXRlKToKKyAgICAg
ICAgKHdlYktpdERNQUJ1ZlZpZGVvU2lua1Byb2JlUGxhdGZvcm0pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9ETUFCdWZWaWRlb1NpbmtHU3RyZWFtZXIuaDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dMVmlkZW9TaW5rR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKHdlYktpdEdMVmlkZW9TaW5rU2V0TWVkaWFQbGF5ZXJQcml2YXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyV2ViS2l0R1N0cmVhbWVyRWxlbWVudHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb1Np
bmtDb21tb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKHdlYktpdFZpZGVvU2lua1NldE1lZGlhUGxh
eWVyUHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclZpZGVvU2lua0NvbW1vbi5oOiBBZGRlZC4KKwogMjAyMi0wMi0xOSAgQWxhbiBCdWp0YXMg
IDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBJbnRyb2R1Y2UgTGluZUJv
eEJ1aWxkZXI6OmNvbGxlY3RGYWxsYmFja0ZvbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3Ry
ZWFtZXIuY21ha2UKaW5kZXggYWI5YzcwOTJlNjVmNTExNTIwMTNjMTJiYTQ4MDI3ZmQ3MGI4MjRi
NC4uNjdmNDJjODRjMzhmOTY1ZDEwZGUwMmYwNjJlMWE1YWM3MzdkZDU5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQpAQCAtOCw2ICs4LDcgQEAgaWYgKEVOQUJMRV9W
SURFTyBPUiBFTkFCTEVfV0VCX0FVRElPKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UwogICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VHU3RyZWFt
ZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lci5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0RN
QUJ1ZlZpZGVvU2lua0dTdHJlYW1lci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dMVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvTWl4ZXIuY3BwCkBAIC0xNSw2ICsxNiw3IEBAIGlm
IChFTkFCTEVfVklERU8gT1IgRU5BQkxFX1dFQl9BVURJTykKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dzdEFsbG9jYXRvckZhc3RNYWxsb2MuY3BwCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0ZyYW1lSG9sZGVy
LmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9T
aW5rQ29tbW9uLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlHU3RyZWFtZXIu
Y3BwCkBAIC05MiwxMSArOTQsMTMgQEAgaWYgKEVOQUJMRV9WSURFTyBPUiBFTkFCTEVfV0VCX0FV
RElPKQogICAgICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9S
SUVTCiAgICAgICAgICAgICAke0dTVFJFQU1FUl9JTkNMVURFX0RJUlN9CiAgICAgICAgICAgICAk
e0dTVFJFQU1FUl9CQVNFX0lOQ0xVREVfRElSU30KKyAgICAgICAgICAgICR7R1NUUkVBTUVSX0FM
TE9DQVRPUlNfSU5DTFVERV9ESVJTfQogICAgICAgICAgICAgJHtHU1RSRUFNRVJfQVBQX0lOQ0xV
REVfRElSU30KICAgICAgICAgICAgICR7R1NUUkVBTUVSX1BCVVRJTFNfSU5DTFVERV9ESVJTfQog
ICAgICAgICApCiAKICAgICAgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMKKyAgICAg
ICAgICAgICR7R1NUUkVBTUVSX0FMTE9DQVRPUlNfTElCUkFSSUVTfQogICAgICAgICAgICAgJHtH
U1RSRUFNRVJfQVBQX0xJQlJBUklFU30KICAgICAgICAgICAgICR7R1NUUkVBTUVSX0JBU0VfTElC
UkFSSUVTfQogICAgICAgICAgICAgJHtHU1RSRUFNRVJfTElCUkFSSUVTfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0RNQUJ1ZlZpZGVvU2lu
a0dTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvRE1BQnVmVmlkZW9TaW5rR1N0cmVhbWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGYyMDQ3NDMxNTk4
YTBjYjM4ZTRjNmQzNWM4OGE0MTU1NTliZTRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0RNQUJ1ZlZpZGVvU2lua0dTdHJlYW1l
ci5jcHAKQEAgLTAsMCArMSwxNzYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDIyIElnYWxp
YSwgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRE1BQnVmVmlkZW9TaW5rR1N0cmVhbWVyLmgiCisKKyNpZiBFTkFCTEUo
VklERU8pCisKKyNpbmNsdWRlICJHU3RyZWFtZXJDb21tb24uaCIKKyNpbmNsdWRlICJHU3RyZWFt
ZXJWaWRlb1NpbmtDb21tb24uaCIKKyNpbmNsdWRlIDxnc3QvYWxsb2NhdG9ycy9nc3RkbWFidWYu
aD4KKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworZW51bSB7CisgICAgUFJPUF8wLAorICAgIFBST1Bf
U1RBVFMsCisgICAgUFJPUF9MQVNUCit9OworCitzdHJ1Y3QgX1dlYktpdERNQUJ1ZlZpZGVvU2lu
a1ByaXZhdGUgeworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXBwU2luazsKKyAgICBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIqIG1lZGlhUGxheWVyUHJpdmF0ZTsKK307CisKK0dTVF9ERUJV
R19DQVRFR09SWV9TVEFUSUMod2Via2l0X2RtYWJ1Zl92aWRlb19zaW5rX2RlYnVnKTsKKyNkZWZp
bmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF9kbWFidWZfdmlkZW9fc2lua19kZWJ1ZworCisjZGVm
aW5lIEdTVF9XRUJLSVRfRE1BQlVGX1NJTktfQ0FQU19GT1JNQVRfTElTVCAieyBSR0JBLCBSR0J4
LCBCR1JBLCBCR1J4LCBJNDIwLCBZVjEyLCBBNDIwLCBOVjEyLCBOVjEyLCBZNDQ0LCBZNDJCLCBW
VVlBIH0iCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc2lua1RlbXBsYXRlID0gR1NUX1NU
QVRJQ19QQURfVEVNUExBVEUoInNpbmsiLCBHU1RfUEFEX1NJTkssIEdTVF9QQURfQUxXQVlTLCBH
U1RfU1RBVElDX0NBUFNfQU5ZKTsKKworLy8gVE9ETzogdGhpcyBpcyBhIGxpc3Qgb2YgcmVtYWlu
aW5nIFlVViBmb3JtYXRzIHdlIHdhbnQgdG8gc3VwcG9ydCwgYnV0IGRvbid0IGN1cnJlbnRseSB3
b3JrIChkdWUgdG8gaW1wcm9wZXIgaGFuZGxpbmcgaW4gVGV4dHVyZU1hcHBlcik6CisvLyAgICAg
WVVZMiwgWVZZVSwgVVlWWSwgVllVWSwgQVlVViwgWTQxQgorCisjZGVmaW5lIHdlYmtpdF9kbWFi
dWZfdmlkZW9fc2lua19wYXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCitXRUJLSVRfREVGSU5FX1RZ
UEVfV0lUSF9DT0RFKFdlYktpdERNQUJ1ZlZpZGVvU2luaywgd2Via2l0X2RtYWJ1Zl92aWRlb19z
aW5rLCBHU1RfVFlQRV9CSU4sCisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X2Rt
YWJ1Zl92aWRlb19zaW5rX2RlYnVnLCAid2Via2l0ZG1hYnVmdmlkZW9zaW5rIiwgMCwgIkRNQUJ1
ZiB2aWRlbyBzaW5rIGVsZW1lbnQiKSkKKworLy8gV0VCS0lUX0dTVF9ETUFCVUZfU0lOS19GT1JD
RURfRkFMTEJBQ0tfQ0FQU19GT1JNQVQgZW52IGNhbiBiZSB1c2VkIHRvIGZvcmNlIGEgc3BlY2lm
aWMgZm9ybWF0IHRvIGJlIHVzZWQgYXMgdGhlIG9ubHkgc3VwcG9ydGVkIGZvcm1hdAorLy8gYnkg
dGhpcyBzaW5rLiBUaGlzIGlzIG1vc3QgdXNlZnVsIGZvciB0ZXN0aW5nIGFuZCBkZWJ1Z2dpbmcg
dGhlIHJlbmRlcmluZyBwaXBlbGluZSBiZWhhdmlvciBmb3IgYSBnaXZlbiBmb3JtYXQuCitzdGF0
aWMgY29uc3QgY2hhciogZm9yY2VkRmFsbGJhY2tDYXBzRm9ybWF0KCkKK3sKKyAgICBzdGF0aWMg
Y2hhciBzX2Zvcm1hdFs2NF0geyB9OworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBzX2ZsYWc7
CisgICAgc3RkOjpjYWxsX29uY2Uoc19mbGFnLAorICAgICAgICBbJl0geworICAgICAgICAgICAg
Y29uc3QgY2hhciogZm9ybWF0ID0gZ19nZXRlbnYoIldFQktJVF9HU1RfRE1BQlVGX1NJTktfRk9S
Q0VEX0ZBTExCQUNLX0NBUFNfRk9STUFUIik7CisgICAgICAgICAgICBpZiAoZm9ybWF0KQorICAg
ICAgICAgICAgICAgIGdfc3RybGNweShjb25zdF9jYXN0PGNoYXIqPihzX2Zvcm1hdCksIGZvcm1h
dCwgNjQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNfZm9ybWF0WzBdID0g
MDsKKyAgICAgICAgfSk7CisKKyAgICBpZiAoIXNfZm9ybWF0WzBdKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gc19mb3JtYXQ7Cit9CisKK3N0YXRpYyB2b2lkIHdlYktpdERN
QUJ1ZlZpZGVvU2lua0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBHU1RfQ0FM
TF9QQVJFTlQoR19PQkpFQ1RfQ0xBU1MsIGNvbnN0cnVjdGVkLCAob2JqZWN0KSk7CisKKyAgICBX
ZWJLaXRETUFCdWZWaWRlb1NpbmsqIHNpbmsgPSBXRUJLSVRfRE1BQlVGX1ZJREVPX1NJTksob2Jq
ZWN0KTsKKworICAgIHNpbmstPnByaXYtPmFwcFNpbmsgPSBtYWtlR1N0cmVhbWVyRWxlbWVudCgi
YXBwc2luayIsICJ3ZWJraXQtZG1hYnVmLXZpZGVvLWFwcHNpbmsiKTsKKyAgICBBU1NFUlQoc2lu
ay0+cHJpdi0+YXBwU2luayk7CisgICAgZ19vYmplY3Rfc2V0KHNpbmstPnByaXYtPmFwcFNpbmsu
Z2V0KCksICJlbmFibGUtbGFzdC1zYW1wbGUiLCBGQUxTRSwgImVtaXQtc2lnbmFscyIsIFRSVUUs
ICJtYXgtYnVmZmVycyIsIDEsIG51bGxwdHIpOworCisgICAgZ3N0X2Jpbl9hZGQoR1NUX0JJTl9D
QVNUKHNpbmspLCBzaW5rLT5wcml2LT5hcHBTaW5rLmdldCgpKTsKKworICAgIC8vIFRoaXMgc2lu
ayBoYW5kbGVzIGRtYWJ1ZiBkYXRhIG9yIHJhdyBkYXRhIG9mIGFueSBmb3JtYXQgaW4gdGhlIHN1
cHBvcnRlZCBmb3JtYXQgbGlzdC4KKyAgICAvLyBUaGUgZG1hYnVmIGFuZCByYXcgZGF0YSB0eXBl
cyBhcmUgdGhlIHR3byB0eXBlcyBvZiBkYXRhIHdlIGNhbiBoYW5kbGUgdmlhIHRoaXMgc2luayAo
aW4gY29tYmluYXRpb24gd2l0aCBmdW5jdGlvbmFsaXR5IGluCisgICAgLy8gTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyKS4gVGhlIGZvcm1hdCBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSBmb3Jt
YXRzIHdlIGFyZSBhYmxlIHRvIHRoZW4gaGFuZGxlIGluIHRoZSBncmFwaGljcyBwaXBlbGluZS4K
KyAgICAvLyBJbiBjYXNlIG9mIGRtYWJ1ZiBkYXRhLCB0aGF0IGRtYWJ1ZiBpcyBoYW5kbGVkIG1v
c3Qgb3B0aW1hbGx5IGFuZCBqdXN0IHJlbGF5ZWQgdG8gdGhlIGdyYXBoaWNzIHBpcGVsaW5lLgor
ICAgIC8vIEluIGNhc2Ugb2YgcmF3IGRhdGEsIGRtYWJ1ZiBvYmplY3RzIGFyZSBwcm9kdWNlZCBv
biB0aGUgc3BvdCBhbmQgZmlsbGVkIHdpdGggdGhhdCBkYXRhLCBhbmQgdGhlbiBwdXNoZWQgdG8g
dGhlIGdyYXBoaWNzIHBpcGVsaW5lLgorICAgIHN0YXRpYyBHc3RTdGF0aWNDYXBzIHNfZG1hYnVm
Q2FwcyA9IEdTVF9TVEFUSUNfQ0FQUygKKyAgICAgICAgR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRI
X0ZFQVRVUkVTKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0RNQUJVRiwgR1NUX1dFQktJVF9ETUFC
VUZfU0lOS19DQVBTX0ZPUk1BVF9MSVNUKSk7CisgICAgc3RhdGljIEdzdFN0YXRpY0NhcHMgc19m
YWxsYmFja0NhcHMgPSBHU1RfU1RBVElDX0NBUFMoR1NUX1ZJREVPX0NBUFNfTUFLRShHU1RfV0VC
S0lUX0RNQUJVRl9TSU5LX0NBUFNfRk9STUFUX0xJU1QpKTsKKworICAgIEdSZWZQdHI8R3N0Q2Fw
cz4gY2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19uZXdfZW1wdHkoKSk7CisgICAgeworICAgICAg
ICBpZiAoZm9yY2VkRmFsbGJhY2tDYXBzRm9ybWF0KCkpIHsKKyAgICAgICAgICAgIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJ2aWRlby94LXJhdyIsCisgICAgICAgICAgICAgICAgImZvcm1h
dCIsIEdfVFlQRV9TVFJJTkcsIGZvcmNlZEZhbGxiYWNrQ2Fwc0Zvcm1hdCgpLCBudWxscHRyKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGdzdF9jYXBzX2FwcGVuZChjYXBzLmdldCgp
LCBnc3Rfc3RhdGljX2NhcHNfZ2V0KCZzX2RtYWJ1ZkNhcHMpKTsKKyAgICAgICAgICAgIGdzdF9j
YXBzX2FwcGVuZChjYXBzLmdldCgpLCBnc3Rfc3RhdGljX2NhcHNfZ2V0KCZzX2ZhbGxiYWNrQ2Fw
cykpOworICAgICAgICB9CisgICAgfQorICAgIGdfb2JqZWN0X3NldChzaW5rLT5wcml2LT5hcHBT
aW5rLmdldCgpLCAiY2FwcyIsIGNhcHMuZ2V0KCksIG51bGxwdHIpOworCisgICAgR1JlZlB0cjxH
c3RQYWQ+IHBhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChzaW5rLT5w
cml2LT5hcHBTaW5rLmdldCgpLCAic2luayIpKTsKKyAgICBnc3RfZWxlbWVudF9hZGRfcGFkKEdT
VF9FTEVNRU5UX0NBU1Qoc2luayksIGdzdF9naG9zdF9wYWRfbmV3KCJzaW5rIiwgcGFkLmdldCgp
KSk7Cit9CisKK3ZvaWQgd2ViS2l0RE1BQnVmVmlkZW9TaW5rRmluYWxpemUoR09iamVjdCogb2Jq
ZWN0KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBXZWJLaXRETUFCdWZW
aWRlb1NpbmsqIHNpbmsgPSBXRUJLSVRfRE1BQlVGX1ZJREVPX1NJTksob2JqZWN0KTsKKyAgICBX
ZWJLaXRETUFCdWZWaWRlb1NpbmtQcml2YXRlKiBwcml2ID0gc2luay0+cHJpdjsKKworICAgIGlm
IChwcml2LT5tZWRpYVBsYXllclByaXZhdGUpCisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rp
c2Nvbm5lY3RfYnlfZGF0YShwcml2LT5hcHBTaW5rLmdldCgpLCBwcml2LT5tZWRpYVBsYXllclBy
aXZhdGUpOworCisgICAgR1NUX0RFQlVHX09CSkVDVChvYmplY3QsICJXZWJLaXRETUFCdWZWaWRl
b1NpbmsgZmluYWxpemVkLiIpOworCisgICAgR1NUX0NBTExfUEFSRU5UKEdfT0JKRUNUX0NMQVNT
LCBmaW5hbGl6ZSwgKG9iamVjdCkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJLaXRETUFCdWZWaWRl
b1NpbmtHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1
ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKK3sKKyAgICBXZWJLaXRETUFCdWZWaWRl
b1NpbmsqIHNpbmsgPSBXRUJLSVRfRE1BQlVGX1ZJREVPX1NJTksob2JqZWN0KTsKKworICAgIHN3
aXRjaCAocHJvcGVydHlJZCkgeworICAgIGNhc2UgUFJPUF9TVEFUUzoKKyAgICAgICAgaWYgKHdl
YmtpdEdzdENoZWNrVmVyc2lvbigxLCAxOCwgMCkpIHsKKyAgICAgICAgICAgIEdVbmlxdWVPdXRQ
dHI8R3N0U3RydWN0dXJlPiBzdGF0czsKKyAgICAgICAgICAgIGdfb2JqZWN0X2dldChzaW5rLT5w
cml2LT5hcHBTaW5rLmdldCgpLCAic3RhdHMiLCAmc3RhdHMub3V0UHRyKCksIG51bGxwdHIpOwor
ICAgICAgICAgICAgZ3N0X3ZhbHVlX3NldF9zdHJ1Y3R1cmUodmFsdWUsIHN0YXRzLmdldCgpKTsK
KyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVD
VF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwYXJhbVNwZWMp
OworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsK
KyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kbWFidWZfdmlkZW9fc2lua19jbGFzc19p
bml0KFdlYktpdERNQUJ1ZlZpZGVvU2lua0NsYXNzKiBrbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xh
c3MqIG9iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIEdzdEVsZW1lbnRD
bGFzcyogZWxlbWVudENsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1Moa2xhc3MpOworCisgICAgb2Jq
ZWN0Q2xhc3MtPmNvbnN0cnVjdGVkID0gd2ViS2l0RE1BQnVmVmlkZW9TaW5rQ29uc3RydWN0ZWQ7
CisgICAgb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2ViS2l0RE1BQnVmVmlkZW9TaW5rRmluYWxp
emU7CisgICAgb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYktpdERNQUJ1ZlZpZGVvU2lu
a0dldFByb3BlcnR5OworCisgICAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZShl
bGVtZW50Q2xhc3MsIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCgmc2lua1RlbXBsYXRlKSk7
CisgICAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X3N0YXRpY19tZXRhZGF0YShlbGVtZW50Q2xhc3Ms
ICJXZWJLaXQgRE1BQnVmIHZpZGVvIHNpbmsiLCAiU2luay9WaWRlbyIsICJSZW5kZXJzIHZpZGVv
IiwgIlphbiBEb2JlcnNlayA8emRvYmVyc2VrQGlnYWxpYS5jb20+Iik7CisKKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLCBQUk9QX1NUQVRTLCBnX3BhcmFt
X3NwZWNfYm94ZWQoInN0YXRzIiwgIlN0YXRpc3RpY3MiLAorICAgICAgICAiU2luayBTdGF0aXN0
aWNzIiwgR1NUX1RZUEVfU1RSVUNUVVJFLCBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oR19QQVJB
TV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7Cit9CisKK3ZvaWQgd2ViS2l0
RE1BQnVmVmlkZW9TaW5rU2V0TWVkaWFQbGF5ZXJQcml2YXRlKFdlYktpdERNQUJ1ZlZpZGVvU2lu
ayogc2luaywgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCit7CisgICAgV2Vi
S2l0RE1BQnVmVmlkZW9TaW5rUHJpdmF0ZSogcHJpdiA9IHNpbmstPnByaXY7CisKKyAgICBwcml2
LT5tZWRpYVBsYXllclByaXZhdGUgPSBwbGF5ZXI7CisgICAgd2ViS2l0VmlkZW9TaW5rU2V0TWVk
aWFQbGF5ZXJQcml2YXRlKHByaXYtPmFwcFNpbmsuZ2V0KCksIHByaXYtPm1lZGlhUGxheWVyUHJp
dmF0ZSk7Cit9CisKK2Jvb2wgd2ViS2l0RE1BQnVmVmlkZW9TaW5rUHJvYmVQbGF0Zm9ybSgpCit7
CisgICAgcmV0dXJuIGlzR1N0cmVhbWVyUGx1Z2luQXZhaWxhYmxlKCJhcHAiKTsKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9ETUFCdWZWaWRlb1NpbmtHU3RyZWFtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9ETUFCdWZWaWRlb1NpbmtHU3RyZWFt
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kZjI0YTZmMGZhMzdkMjM3NTUxZTY4MTY5YWNhYTc5ZDdjOTkwZmYy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0RNQUJ1ZlZpZGVvU2lua0dTdHJlYW1lci5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisg
KiAgQ29weXJpZ2h0IChDKSAyMDIyIElnYWxpYSwgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBV
U0EKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUg
PGdzdC9nc3QuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOworfQorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVf
RE1BQlVGX1ZJREVPX1NJTksgICAgICAgICAgICAod2Via2l0X2RtYWJ1Zl92aWRlb19zaW5rX2dl
dF90eXBlICgpKQorI2RlZmluZSBXRUJLSVRfRE1BQlVGX1ZJREVPX1NJTksob2JqKSAgICAgICAg
ICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIFdFQktJVF9UWVBFX0RNQUJV
Rl9WSURFT19TSU5LLCBXZWJLaXRETUFCdWZWaWRlb1NpbmspKQorI2RlZmluZSBXRUJLSVRfRE1B
QlVGX1ZJREVPX1NJTktfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAo
KGtsYXNzKSwgV0VCS0lUX1RZUEVfRE1BQlVGX1ZJREVPX1NJTkssIFdlYktpdERNQUJ1ZlZpZGVv
U2lua0NsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0RNQUJVRl9WSURFT19TSU5LKG9iaikgICAg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBXRUJLSVRfVFlQRV9ETUFC
VUZfVklERU9fU0lOSykpCisjZGVmaW5lIFdFQktJVF9JU19ETUFCVUZfVklERU9fU0lOS19DTEFT
UyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBXRUJLSVRfVFlQRV9E
TUFCVUZfVklERU9fU0lOSykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRETUFCdWZWaWRlb1Np
bmsgICAgICAgIFdlYktpdERNQUJ1ZlZpZGVvU2luazsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRE
TUFCdWZWaWRlb1NpbmtDbGFzcyAgIFdlYktpdERNQUJ1ZlZpZGVvU2lua0NsYXNzOwordHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdERNQUJ1ZlZpZGVvU2lua1ByaXZhdGUgV2ViS2l0RE1BQnVmVmlkZW9T
aW5rUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRETUFCdWZWaWRlb1NpbmsgeworICAgIEdzdEJp
biBwYXJlbnQ7CisKKyAgICBXZWJLaXRETUFCdWZWaWRlb1NpbmtQcml2YXRlICpwcml2OworfTsK
Kworc3RydWN0IF9XZWJLaXRETUFCdWZWaWRlb1NpbmtDbGFzcyB7CisgICAgR3N0QmluQ2xhc3Mg
cGFyZW50Q2xhc3M7Cit9OworCitHVHlwZSB3ZWJraXRfZG1hYnVmX3ZpZGVvX3NpbmtfZ2V0X3R5
cGUodm9pZCk7CisKK2Jvb2wgd2ViS2l0RE1BQnVmVmlkZW9TaW5rUHJvYmVQbGF0Zm9ybSgpOwor
dm9pZCB3ZWJLaXRETUFCdWZWaWRlb1NpbmtTZXRNZWRpYVBsYXllclByaXZhdGUoV2ViS2l0RE1B
QnVmVmlkZW9TaW5rKiwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKik7CisK
K0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR0xWaWRlb1NpbmtHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dMVmlk
ZW9TaW5rR1N0cmVhbWVyLmNwcAppbmRleCA0OGRiYjkzYTIwZmNlMmE3MGQyNjUwOTQ4MGJmMDNk
Y2M0MWJhYjE3Li5jOGE2N2E3NmI4ZTgzODhjMTM3ZTgwZjc0Nzk5YzY4NTNkMTc0MTE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR0xWaWRl
b1NpbmtHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HTFZpZGVvU2lua0dTdHJlYW1lci5jcHAKQEAgLTIzLDEwICsyMyw5IEBACiAj
aWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSX0dMKQogCiAjaW5jbHVkZSAiR1N0cmVh
bWVyQ29tbW9uLmgiCi0jaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgiCisj
aW5jbHVkZSAiR1N0cmVhbWVyVmlkZW9TaW5rQ29tbW9uLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1E
aXNwbGF5LmgiCi0KLSNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNpbmsuaD4KKyNpbmNsdWRlIDxn
c3QvZ2wvZ2wuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgogCiAvLyBnc3RnbGFw
aS5oIG1heSBpbmNsdWRlIGVnbHBsYXRmb3JtLmggYW5kIGl0IGluY2x1ZGVzIFguaCwgd2hpY2gK
QEAgLTI0Miw1MyArMjQxLDcgQEAgdm9pZCB3ZWJLaXRHTFZpZGVvU2lua1NldE1lZGlhUGxheWVy
UHJpdmF0ZShXZWJLaXRHTFZpZGVvU2luayogc2luaywgTWVkaWFQbGF5ZXIKICAgICBXZWJLaXRH
TFZpZGVvU2lua1ByaXZhdGUqIHByaXYgPSBzaW5rLT5wcml2OwogCiAgICAgcHJpdi0+bWVkaWFQ
bGF5ZXJQcml2YXRlID0gcGxheWVyOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QocHJpdi0+YXBwU2lu
ay5nZXQoKSwgIm5ldy1zYW1wbGUiLCBHX0NBTExCQUNLKCtbXShHc3RFbGVtZW50KiBzaW5rLCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqIHBsYXllcikgLT4gR3N0Rmxvd1JldHVybiB7Ci0g
ICAgICAgIEdSZWZQdHI8R3N0U2FtcGxlPiBzYW1wbGUgPSBhZG9wdEdSZWYoZ3N0X2FwcF9zaW5r
X3B1bGxfc2FtcGxlKEdTVF9BUFBfU0lOSyhzaW5rKSkpOwotICAgICAgICBHc3RCdWZmZXIqIGJ1
ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihzYW1wbGUuZ2V0KCkpOwotICAgICAgICBHU1Rf
VFJBQ0VfT0JKRUNUKHNpbmssICJuZXctc2FtcGxlIHdpdGggUFRTPSUiIEdTVF9USU1FX0ZPUk1B
VCwgR1NUX1RJTUVfQVJHUyhHU1RfQlVGRkVSX1BUUyhidWZmZXIpKSk7Ci0gICAgICAgIHBsYXll
ci0+dHJpZ2dlclJlcGFpbnQoc2FtcGxlLmdldCgpKTsKLSAgICAgICAgcmV0dXJuIEdTVF9GTE9X
X09LOwotICAgIH0pLCBwbGF5ZXIpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QocHJpdi0+YXBwU2lu
ay5nZXQoKSwgIm5ldy1wcmVyb2xsIiwgR19DQUxMQkFDSygrW10oR3N0RWxlbWVudCogc2luaywg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpIC0+IEdzdEZsb3dSZXR1cm4gewot
ICAgICAgICBHUmVmUHRyPEdzdFNhbXBsZT4gc2FtcGxlID0gYWRvcHRHUmVmKGdzdF9hcHBfc2lu
a19wdWxsX3ByZXJvbGwoR1NUX0FQUF9TSU5LKHNpbmspKSk7Ci0gICAgICAgIEdzdEJ1ZmZlciog
YnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKHNhbXBsZS5nZXQoKSk7Ci0gICAgICAgIEdT
VF9ERUJVR19PQkpFQ1Qoc2luaywgIm5ldy1wcmVyb2xsIHdpdGggUFRTPSUiIEdTVF9USU1FX0ZP
Uk1BVCwgR1NUX1RJTUVfQVJHUyhHU1RfQlVGRkVSX1BUUyhidWZmZXIpKSk7Ci0gICAgICAgIHBs
YXllci0+dHJpZ2dlclJlcGFpbnQoc2FtcGxlLmdldCgpKTsKLSAgICAgICAgcmV0dXJuIEdTVF9G
TE9XX09LOwotICAgIH0pLCBwbGF5ZXIpOwotCi0gICAgR1JlZlB0cjxHc3RQYWQ+IHBhZCA9IGFk
b3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChwcml2LT5hcHBTaW5rLmdldCgpLCAi
c2luayIpKTsKLSAgICBnc3RfcGFkX2FkZF9wcm9iZShwYWQuZ2V0KCksIHN0YXRpY19jYXN0PEdz
dFBhZFByb2JlVHlwZT4oR1NUX1BBRF9QUk9CRV9UWVBFX1BVU0ggfCBHU1RfUEFEX1BST0JFX1RZ
UEVfUVVFUllfRE9XTlNUUkVBTSB8IEdTVF9QQURfUFJPQkVfVFlQRV9FVkVOVF9GTFVTSCB8IEdT
VF9QQURfUFJPQkVfVFlQRV9FVkVOVF9ET1dOU1RSRUFNKSwgW10oR3N0UGFkKiwgR3N0UGFkUHJv
YmVJbmZvKiBpbmZvLCBncG9pbnRlciB1c2VyRGF0YSkgLT4gR3N0UGFkUHJvYmVSZXR1cm4gewot
ICAgICAgICBhdXRvKiBwbGF5ZXIgPSBzdGF0aWNfY2FzdDxNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIqPih1c2VyRGF0YSk7Ci0KLSAgICAgICAgaWYgKGluZm8tPnR5cGUgJiBHU1RfUEFEX1BS
T0JFX1RZUEVfRVZFTlRfRE9XTlNUUkVBTSkgewotICAgICAgICAgICAgaWYgKEdTVF9FVkVOVF9U
WVBFKEdTVF9QQURfUFJPQkVfSU5GT19FVkVOVChpbmZvKSkgIT0gR1NUX0VWRU5UX1RBRykKLSAg
ICAgICAgICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKLSAgICAgICAgICAgIEdzdFRh
Z0xpc3QqIHRhZ0xpc3Q7Ci0gICAgICAgICAgICBnc3RfZXZlbnRfcGFyc2VfdGFnKEdTVF9QQURf
UFJPQkVfSU5GT19FVkVOVChpbmZvKSwgJnRhZ0xpc3QpOwotICAgICAgICAgICAgcGxheWVyLT51
cGRhdGVWaWRlb09yaWVudGF0aW9uKHRhZ0xpc3QpOwotICAgICAgICAgICAgcmV0dXJuIEdTVF9Q
QURfUFJPQkVfT0s7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJbiBzb21lIHBsYXRmb3JtcyAo
ZS5nLiBPcGVuTUFYIG9uIHRoZSBSYXNwYmVycnkgUGkpIHdoZW4gYSByZXNvbHV0aW9uIGNoYW5n
ZSBvY2N1cnMgdGhlCi0gICAgICAgIC8vIHBpcGVsaW5lIGhhcyB0byBiZSBkcmFpbmVkIGJlZm9y
ZSBhIGZyYW1lIHdpdGggdGhlIG5ldyByZXNvbHV0aW9uIGNhbiBiZSBkZWNvZGVkLgotICAgICAg
ICAvLyBJbiB0aGlzIGNvbnRleHQsIGl0J3MgaW1wb3J0YW50IHRoYXQgd2UgZG9uJ3QgaG9sZCBy
ZWZlcmVuY2VzIHRvIGFueSBwcmV2aW91cyBmcmFtZQotICAgICAgICAvLyAoZS5nLiBtX3NhbXBs
ZSkgc28gdGhhdCBkZWNvZGluZyBjYW4gY29udGludWUuCi0gICAgICAgIC8vIFdlIGFyZSBhbHNv
IG5vdCBzdXBwb3NlZCB0byBrZWVwIHRoZSBvcmlnaW5hbCBmcmFtZSBhZnRlciBhIGZsdXNoLgot
ICAgICAgICBpZiAoaW5mby0+dHlwZSAmIEdTVF9QQURfUFJPQkVfVFlQRV9RVUVSWV9ET1dOU1RS
RUFNKSB7Ci0gICAgICAgICAgICBpZiAoR1NUX1FVRVJZX1RZUEUoR1NUX1BBRF9QUk9CRV9JTkZP
X1FVRVJZKGluZm8pKSAhPSBHU1RfUVVFUllfRFJBSU4pCi0gICAgICAgICAgICAgICAgcmV0dXJu
IEdTVF9QQURfUFJPQkVfT0s7Ci0gICAgICAgICAgICBHU1RfREVCVUcoIkFjdGluZyB1cG9uIERS
QUlOIHF1ZXJ5Iik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGluZm8tPnR5cGUgJiBHU1RfUEFE
X1BST0JFX1RZUEVfRVZFTlRfRkxVU0gpIHsKLSAgICAgICAgICAgIGlmIChHU1RfRVZFTlRfVFlQ
RShHU1RfUEFEX1BST0JFX0lORk9fRVZFTlQoaW5mbykpICE9IEdTVF9FVkVOVF9GTFVTSF9TVEFS
VCkKLSAgICAgICAgICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKLSAgICAgICAgICAg
IEdTVF9ERUJVRygiQWN0aW5nIHVwb24gZmx1c2gtc3RhcnQgZXZlbnQiKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHBsYXllci0+Zmx1c2hDdXJyZW50QnVmZmVyKCk7Ci0gICAgICAgIHJldHVybiBH
U1RfUEFEX1BST0JFX09LOwotICAgIH0sIHBsYXllciwgbnVsbHB0cik7CisgICAgd2ViS2l0Vmlk
ZW9TaW5rU2V0TWVkaWFQbGF5ZXJQcml2YXRlKHByaXYtPmFwcFNpbmsuZ2V0KCksIHByaXYtPm1l
ZGlhUGxheWVyUHJpdmF0ZSk7CiB9CiAKIGJvb2wgd2ViS2l0R0xWaWRlb1NpbmtQcm9iZVBsYXRm
b3JtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggOWY0OTVkZGY5MDJkZjRmZmRm
NTNhZmU4YzBmNjc0ZjU2Y2JmNWZlMS4uNzIxMTU3YmQ4NjdkMjgzYmMxMjcxYTI2ZTU3MjIxNjMw
ZjliZTM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTI0LDYgKzI0LDcgQEAK
ICNpZiBVU0UoR1NUUkVBTUVSKQogCiAjaW5jbHVkZSAiQXBwbGljYXRpb25HTGliLmgiCisjaW5j
bHVkZSAiRE1BQnVmVmlkZW9TaW5rR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiR0xWaWRlb1NpbmtH
U3RyZWFtZXIuaCIKICNpbmNsdWRlICJHU3RyZWFtZXJBdWRpb01peGVyLmgiCiAjaW5jbHVkZSAi
R1VuaXF1ZVB0ckdTdHJlYW1lci5oIgpAQCAtMzI3LDYgKzMyOCw3IEBAIHZvaWQgcmVnaXN0ZXJX
ZWJLaXRHU3RyZWFtZXJFbGVtZW50cygpCiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgICAgIGdz
dF9lbGVtZW50X3JlZ2lzdGVyKDAsICJ3ZWJraXR3ZWJzcmMiLCBHU1RfUkFOS19QUklNQVJZICsg
MTAwLCBXRUJLSVRfVFlQRV9XRUJfU1JDKTsKKyAgICAgICAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIo
MCwgIndlYmtpdGRtYWJ1ZnZpZGVvc2luayIsIEdTVF9SQU5LX05PTkUsIFdFQktJVF9UWVBFX0RN
QUJVRl9WSURFT19TSU5LKTsKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQogICAgICAgICBnc3RfZWxl
bWVudF9yZWdpc3RlcigwLCAid2Via2l0Z2x2aWRlb3NpbmsiLCBHU1RfUkFOS19OT05FLCBXRUJL
SVRfVFlQRV9HTF9WSURFT19TSU5LKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvU2lua0NvbW1vbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
VmlkZW9TaW5rQ29tbW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDhiODNhYjAwNjBiNTdlNzgwYTQyZWI3
MTNmYTIzZDU5ZDRhMTM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvU2lua0NvbW1vbi5jcHAKQEAgLTAs
MCArMSw4MCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMjIgSWdhbGlhLCBTLkwKKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg
TUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJHU3RyZWFtZXJWaWRlb1NpbmtDb21tb24uaCIKKworI2lmIEVOQUJMRShWSURFTykKKworI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIgorI2luY2x1ZGUgPGdzdC9hcHAv
Z3N0YXBwc2luay5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwordm9pZCB3ZWJLaXRW
aWRlb1NpbmtTZXRNZWRpYVBsYXllclByaXZhdGUoR3N0RWxlbWVudCogYXBwU2luaywgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCit7CisgICAgZ19zaWduYWxfY29ubmVjdChh
cHBTaW5rLCAibmV3LXNhbXBsZSIsIEdfQ0FMTEJBQ0soK1tdKEdzdEVsZW1lbnQqIHNpbmssIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKSAtPiBHc3RGbG93UmV0dXJuIHsKKyAg
ICAgICAgR1JlZlB0cjxHc3RTYW1wbGU+IHNhbXBsZSA9IGFkb3B0R1JlZihnc3RfYXBwX3Npbmtf
cHVsbF9zYW1wbGUoR1NUX0FQUF9TSU5LKHNpbmspKSk7CisgICAgICAgIEdzdEJ1ZmZlciogYnVm
ZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKHNhbXBsZS5nZXQoKSk7CisgICAgICAgIEdTVF9U
UkFDRV9PQkpFQ1Qoc2luaywgIm5ldy1zYW1wbGUgd2l0aCBQVFM9JSIgR1NUX1RJTUVfRk9STUFU
LCBHU1RfVElNRV9BUkdTKEdTVF9CVUZGRVJfUFRTKGJ1ZmZlcikpKTsKKyAgICAgICAgcGxheWVy
LT50cmlnZ2VyUmVwYWludChzYW1wbGUuZ2V0KCkpOworICAgICAgICByZXR1cm4gR1NUX0ZMT1df
T0s7CisgICAgfSksIHBsYXllcik7CisgICAgZ19zaWduYWxfY29ubmVjdChhcHBTaW5rLCAibmV3
LXByZXJvbGwiLCBHX0NBTExCQUNLKCtbXShHc3RFbGVtZW50KiBzaW5rLCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIqIHBsYXllcikgLT4gR3N0Rmxvd1JldHVybiB7CisgICAgICAgIEdSZWZQ
dHI8R3N0U2FtcGxlPiBzYW1wbGUgPSBhZG9wdEdSZWYoZ3N0X2FwcF9zaW5rX3B1bGxfcHJlcm9s
bChHU1RfQVBQX1NJTksoc2luaykpKTsKKyAgICAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3Rf
c2FtcGxlX2dldF9idWZmZXIoc2FtcGxlLmdldCgpKTsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVD
VChzaW5rLCAibmV3LXByZXJvbGwgd2l0aCBQVFM9JSIgR1NUX1RJTUVfRk9STUFULCBHU1RfVElN
RV9BUkdTKEdTVF9CVUZGRVJfUFRTKGJ1ZmZlcikpKTsKKyAgICAgICAgcGxheWVyLT50cmlnZ2Vy
UmVwYWludChzYW1wbGUuZ2V0KCkpOworICAgICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7CisgICAg
fSksIHBsYXllcik7CisKKyAgICBHUmVmUHRyPEdzdFBhZD4gcGFkID0gYWRvcHRHUmVmKGdzdF9l
bGVtZW50X2dldF9zdGF0aWNfcGFkKGFwcFNpbmssICJzaW5rIikpOworICAgIGdzdF9wYWRfYWRk
X3Byb2JlKHBhZC5nZXQoKSwgc3RhdGljX2Nhc3Q8R3N0UGFkUHJvYmVUeXBlPihHU1RfUEFEX1BS
T0JFX1RZUEVfUFVTSCB8IEdTVF9QQURfUFJPQkVfVFlQRV9RVUVSWV9ET1dOU1RSRUFNIHwgR1NU
X1BBRF9QUk9CRV9UWVBFX0VWRU5UX0ZMVVNIIHwgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0RP
V05TVFJFQU0pLCBbXShHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVz
ZXJEYXRhKSAtPiBHc3RQYWRQcm9iZVJldHVybiB7CisgICAgICAgIGF1dG8qIHBsYXllciA9IHN0
YXRpY19jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcio+KHVzZXJEYXRhKTsKKworICAg
ICAgICBpZiAoaW5mby0+dHlwZSAmIEdTVF9QQURfUFJPQkVfVFlQRV9FVkVOVF9ET1dOU1RSRUFN
KSB7CisgICAgICAgICAgICBpZiAoR1NUX0VWRU5UX1RZUEUoR1NUX1BBRF9QUk9CRV9JTkZPX0VW
RU5UKGluZm8pKSAhPSBHU1RfRVZFTlRfVEFHKQorICAgICAgICAgICAgICAgIHJldHVybiBHU1Rf
UEFEX1BST0JFX09LOworICAgICAgICAgICAgR3N0VGFnTGlzdCogdGFnTGlzdDsKKyAgICAgICAg
ICAgIGdzdF9ldmVudF9wYXJzZV90YWcoR1NUX1BBRF9QUk9CRV9JTkZPX0VWRU5UKGluZm8pLCAm
dGFnTGlzdCk7CisgICAgICAgICAgICBwbGF5ZXItPnVwZGF0ZVZpZGVvT3JpZW50YXRpb24odGFn
TGlzdCk7CisgICAgICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIEluIHNvbWUgcGxhdGZvcm1zIChlLmcuIE9wZW5NQVggb24gdGhlIFJhc3Bi
ZXJyeSBQaSkgd2hlbiBhIHJlc29sdXRpb24gY2hhbmdlIG9jY3VycyB0aGUKKyAgICAgICAgLy8g
cGlwZWxpbmUgaGFzIHRvIGJlIGRyYWluZWQgYmVmb3JlIGEgZnJhbWUgd2l0aCB0aGUgbmV3IHJl
c29sdXRpb24gY2FuIGJlIGRlY29kZWQuCisgICAgICAgIC8vIEluIHRoaXMgY29udGV4dCwgaXQn
cyBpbXBvcnRhbnQgdGhhdCB3ZSBkb24ndCBob2xkIHJlZmVyZW5jZXMgdG8gYW55IHByZXZpb3Vz
IGZyYW1lCisgICAgICAgIC8vIChlLmcuIG1fc2FtcGxlKSBzbyB0aGF0IGRlY29kaW5nIGNhbiBj
b250aW51ZS4KKyAgICAgICAgLy8gV2UgYXJlIGFsc28gbm90IHN1cHBvc2VkIHRvIGtlZXAgdGhl
IG9yaWdpbmFsIGZyYW1lIGFmdGVyIGEgZmx1c2guCisgICAgICAgIGlmIChpbmZvLT50eXBlICYg
R1NUX1BBRF9QUk9CRV9UWVBFX1FVRVJZX0RPV05TVFJFQU0pIHsKKyAgICAgICAgICAgIGlmIChH
U1RfUVVFUllfVFlQRShHU1RfUEFEX1BST0JFX0lORk9fUVVFUlkoaW5mbykpICE9IEdTVF9RVUVS
WV9EUkFJTikKKyAgICAgICAgICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKKyAgICAg
ICAgICAgIEdTVF9ERUJVRygiQWN0aW5nIHVwb24gRFJBSU4gcXVlcnkiKTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoaW5mby0+dHlwZSAmIEdTVF9QQURfUFJPQkVfVFlQRV9FVkVOVF9GTFVTSCkg
eworICAgICAgICAgICAgaWYgKEdTVF9FVkVOVF9UWVBFKEdTVF9QQURfUFJPQkVfSU5GT19FVkVO
VChpbmZvKSkgIT0gR1NUX0VWRU5UX0ZMVVNIX1NUQVJUKQorICAgICAgICAgICAgICAgIHJldHVy
biBHU1RfUEFEX1BST0JFX09LOworICAgICAgICAgICAgR1NUX0RFQlVHKCJBY3RpbmcgdXBvbiBm
bHVzaC1zdGFydCBldmVudCIpOworICAgICAgICB9CisKKyAgICAgICAgcGxheWVyLT5mbHVzaEN1
cnJlbnRCdWZmZXIoKTsKKyAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CisgICAgfSwg
cGxheWVyLCBudWxscHRyKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJW
aWRlb1NpbmtDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJWaWRlb1NpbmtDb21tb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZWY1NDA0OTczMDhh
NDU5ZGFmY2IzODE2NGMzN2YxODA4MmRlZDI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvU2lua0NvbW1v
bi5oCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDIyIElnYWxpYSwg
Uy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2Ug
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh
cmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOworfQorCit2b2lkIHdlYktp
dFZpZGVvU2lua1NldE1lZGlhUGxheWVyUHJpdmF0ZShHc3RFbGVtZW50KiwgV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKik7CisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvRmluZEdTdHJlYW1lci5jbWFrZSBiL1NvdXJjZS9jbWFr
ZS9GaW5kR1N0cmVhbWVyLmNtYWtlCmluZGV4IDlkOTdhNGI1MGNiMGY5ODBmNWI4NDA1N2MyYmFl
ZTg5OTc5OWRmNjYuLjQ4NzAwNWIyZDA3OGU2ZDVlYmY2ODNkOWY0Mjc3ODljNjQ3NGY3NzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9GaW5kR1N0cmVhbWVyLmNtYWtlCisrKyBiL1NvdXJjZS9j
bWFrZS9GaW5kR1N0cmVhbWVyLmNtYWtlCkBAIC0xNiw2ICsxNiw3IEBACiAjIHBsdWdpbnMgY2Fu
IGJlIHNlYXJjaGVkLCBhbmQgdGhleSBkZWZpbmUgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgaWYK
ICMgZm91bmQ6CiAjCisjICBnc3RyZWFtZXItYWxsb2NhdG9yczogR1NUUkVBTUVSX0FMTE9DQVRP
UlNfSU5DTFVERV9ESVJTIGFuZCBHU1RSRUFNRVJfQUxMT0NBVE9SU19MSUJSQVJJRVMKICMgIGdz
dHJlYW1lci1hcHA6ICAgICAgICBHU1RSRUFNRVJfQVBQX0lOQ0xVREVfRElSUyBhbmQgR1NUUkVB
TUVSX0FQUF9MSUJSQVJJRVMKICMgIGdzdHJlYW1lci1hdWRpbzogICAgICBHU1RSRUFNRVJfQVVE
SU9fSU5DTFVERV9ESVJTIGFuZCBHU1RSRUFNRVJfQVVESU9fTElCUkFSSUVTCiAjICBnc3RyZWFt
ZXItZmZ0OiAgICAgICAgR1NUUkVBTUVSX0ZGVF9JTkNMVURFX0RJUlMgYW5kIEdTVFJFQU1FUl9G
RlRfTElCUkFSSUVTCkBAIC05Nyw2ICs5OCw3IEBAIEZJTkRfR1NUUkVBTUVSX0NPTVBPTkVOVChH
U1RSRUFNRVJfRlVMTCBnc3RyZWFtZXItZnVsbC0xLjA+PTEuMTcuMCBnc3RyZWFtZXItZnVsCiAj
IDIuIEZpbmQgR1N0cmVhbWVyIHBsdWdpbnMKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CitGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX0FMTE9DQVRPUlMgZ3N0cmVhbWVy
LWFsbG9jYXRvcnMtMS4wIGdzdGFsbG9jYXRvcnMtMS4wKQogRklORF9HU1RSRUFNRVJfQ09NUE9O
RU5UKEdTVFJFQU1FUl9BUFAgZ3N0cmVhbWVyLWFwcC0xLjAgZ3N0YXBwLTEuMCkKIEZJTkRfR1NU
UkVBTUVSX0NPTVBPTkVOVChHU1RSRUFNRVJfQVVESU8gZ3N0cmVhbWVyLWF1ZGlvLTEuMCBnc3Rh
dWRpby0xLjApCiBGSU5EX0dTVFJFQU1FUl9DT01QT05FTlQoR1NUUkVBTUVSX0ZGVCBnc3RyZWFt
ZXItZmZ0LTEuMCBnc3RmZnQtMS4wKQpAQCAtMTI0LDYgKzEyNiw4IEBAIEZJTkRfUEFDS0FHRV9I
QU5ETEVfU1RBTkRBUkRfQVJHUyhHU3RyZWFtZXIgUkVRVUlSRURfVkFSUyBfR1NUUkVBTUVSX1JF
UVVJUkVEX1ZBCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZF
UlNJT05fVkFSICAgR1NUUkVBTUVSX1ZFUlNJT04pCiAKIG1hcmtfYXNfYWR2YW5jZWQoCisgICAg
R1NUUkVBTUVSX0FMTE9DQVRPUlNfSU5DTFVERV9ESVJTCisgICAgR1NUUkVBTUVSX0FMTE9DQVRP
UlNfTElCUkFSSUVTCiAgICAgR1NUUkVBTUVSX0FQUF9JTkNMVURFX0RJUlMKICAgICBHU1RSRUFN
RVJfQVBQX0xJQlJBUklFUwogICAgIEdTVFJFQU1FUl9BVURJT19JTkNMVURFX0RJUlMKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlMDEwY2M0NTEx
MjAyMDA2OWM2NGQ3Y2JkMGY0MjlkODdjYTM0NzM2Li5jMDBlZDU3MjVmOTA1ZDZhYTc2NTkzZDky
Y2QyOWZjMzRhZmY1YjQ1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMjEgIFphbiBEb2JlcnNlayAgPHpk
b2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIEFkZCBXZWJLaXRETUFC
dWZWaWRlb1NpbmsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNjg4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OgorICAgICAgICBBZGQgdHdv
IGFkZGl0aW9uYWwgZmlsZXMgdW5kZXIgdGhlIEdPYmplY3Qtc3R5bGUgZXhjZXB0aW9ucy4KKwog
MjAyMi0wMi0xOCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFtUb29sc10gU2FuaXRpemVyIGJ1aWxkcyBzaG91bGQgb2JleSBgc2V0LXdlYmtpdC1jb25maWd1
cmF0aW9uIC0tZm9yY2Utb3B0aW1pemF0aW9uLWxldmVsYApkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2VyLnB5CmluZGV4IGRkNTVmODM5Mjg2MGFiZmZkZjQ1OTkwNmUxMjJlZmY2NmEx
YzBjMDUuLmJkZjNiMzQ3MTA0MmExMzM1N2VkYjg2NGExNDk4ZGZmY2FhNTQwNzMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKQEAgLTIzMCw2ICsyMzAsOCBAQCBfUEFU
SF9SVUxFU19TUEVDSUZJRVIgPSBbCiAgICAgICAjIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zIGNv
bnRhaW5pbmcgdW5kZXJzY29yZXMuCiAgICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJD
b3JlJywgJ3BsYXRmb3JtJywgJ2dyYXBoaWNzJywgJ2dzdHJlYW1lcicsICdHTFZpZGVvU2lua0dT
dHJlYW1lci5jcHAnKSwKICAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAn
cGxhdGZvcm0nLCAnZ3JhcGhpY3MnLCAnZ3N0cmVhbWVyJywgJ0dMVmlkZW9TaW5rR1N0cmVhbWVy
LmgnKSwKKyAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZvcm0n
LCAnZ3JhcGhpY3MnLCAnZ3N0cmVhbWVyJywgJ0RNQUJ1ZlZpZGVvU2lua0dTdHJlYW1lci5jcHAn
KSwKKyAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dlYkNvcmUnLCAncGxhdGZvcm0nLCAn
Z3JhcGhpY3MnLCAnZ3N0cmVhbWVyJywgJ0RNQUJ1ZlZpZGVvU2lua0dTdHJlYW1lci5oJyksCiAg
ICAgICBvcy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ3BsYXRmb3JtJywgJ2dyYXBo
aWNzJywgJ2dzdHJlYW1lcicsICdUZXh0Q29tYmluZXJHU3RyZWFtZXIuY3BwJyksCiAgICAgICBv
cy5wYXRoLmpvaW4oJ1NvdXJjZScsICdXZWJDb3JlJywgJ3BsYXRmb3JtJywgJ2dyYXBoaWNzJywg
J2dzdHJlYW1lcicsICdUZXh0Q29tYmluZXJHU3RyZWFtZXIuaCcpLAogICAgICAgb3MucGF0aC5q
b2luKCdTb3VyY2UnLCAnV2ViQ29yZScsICdwbGF0Zm9ybScsICdncmFwaGljcycsICdnc3RyZWFt
ZXInLCAnVGV4dENvbWJpbmVyUGFkR1N0cmVhbWVyLmNwcCcpLApkaWZmIC0tZ2l0IGEvQ2hhbmdl
TG9nIGIvQ2hhbmdlTG9nCmluZGV4IDdiOTQzYTVhNzQzNTU0OGQ0NWQ3YjQ5ZDkwMTdmZjhmNjg5
MmUxZWUuLjA5NGI1M2ZlODM1NTVmYzcwM2FmNDEwYWVjMjA4NzY0NjdhMGUzNWYgMTAwNjQ0Ci0t
LSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMi0y
MSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJl
YW1lcl0gQWRkIFdlYktpdERNQUJ1ZlZpZGVvU2luaworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvRmluZEdTdHJlYW1lci5jbWFr
ZToKKyAgICAgICAgQWxzbyBzZWFyY2ggZm9yIGdzdHJlYW1lci1hbGxvY2F0b3JzLTEuMCwgcHJv
ZHVjZSB0aGUgcmVsZXZhbnQgdmFyaWFibGVzCisgICAgICAgIGNvbnRhaW5pbmcgaW5jbHVkZSBk
aXJlY3RvcmllcyBhbmQgY2ZsYWdzLgorCiAyMDIyLTAyLTE4ICBSb2JlcnQgSmVubmVyICA8SmVu
bmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI5MDE0OS4K
</data>

          </attachment>
      

    </bug>

</bugzilla>