<?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>224023</bug_id>
          
          <creation_ts>2021-03-31 15:25:08 -0700</creation_ts>
          <short_desc>Feed preferred frames per second back to the UI process for each DisplayRefreshMonitor</short_desc>
          <delta_ts>2021-04-01 08:16:30 -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>WebCore Misc.</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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>graouts</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1745812</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-03-31 15:25:08 -0700</bug_when>
    <thetext>Feed preferred frames per second back to the UI process for each DisplayRefreshMonitor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745821</commentid>
    <comment_count>1</comment_count>
      <attachid>424830</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-03-31 15:31:18 -0700</bug_when>
    <thetext>Created attachment 424830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745826</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-31 15:33:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/76074444&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745838</commentid>
    <comment_count>3</comment_count>
      <attachid>424830</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-03-31 15:48:23 -0700</bug_when>
    <thetext>Comment on attachment 424830
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        so move from a model where has DisplayRefreshMonitor setPreferredFramesPerSecond()

This sentence doesn&apos;t quite parse.

&gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:94
&gt; +    auto addResult = m_clients.add(&amp;client);
&gt; +    if (addResult.isNewEntry) {

In what cases is addClient() called multiple times with the same client?

&gt; Source/WebKit/UIProcess/WebProcessProxy.h:81
&gt;  using PlatformDisplayID = uint32_t;
&gt; +using FramesPerSecond = unsigned;

Sort please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745844</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-03-31 16:04:35 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #3)

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/DisplayRefreshMonitor.cpp:94
&gt; &gt; +    auto addResult = m_clients.add(&amp;client);
&gt; &gt; +    if (addResult.isNewEntry) {
&gt; 
&gt; In what cases is addClient() called multiple times with the same client?

Don&apos;t know but it seems fine to only do the work when new clients are added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746033</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-04-01 08:16:12 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/275345/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424830</attachid>
            <date>2021-03-31 15:31:18 -0700</date>
            <delta_ts>2021-04-01 08:16:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224023-20210331153117.patch</filename>
            <type>text/plain</type>
            <size>32086</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI1NGE2ZDBhODc1ZmM2
MTRiOTI4YmM3YjlhMGY4NmNhOTAwZjMwZi4uNzhiNjA2YmVmMTk0ZjRiYjJhNTM2ZDViYjJjMGFh
ZTQ2ZmVhYWNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTAzLTMxICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEZlZWQgcHJlZmVy
cmVkIGZyYW1lcyBwZXIgc2Vjb25kIGJhY2sgdG8gdGhlIFVJIHByb2Nlc3MgZm9yIGVhY2ggRGlz
cGxheVJlZnJlc2hNb25pdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjQwMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBEaXNwbGF5UmVmcmVzaE1vbml0b3JzIHNob3VsZCBiZSByZXNwb25zaXZlIHRv
IHRoZSBmcmFtZSByYXRlIGRlbWFuZHMgb2YgdGhlaXIgY2xpZW50cywKKyAgICAgICAgc28gbW92
ZSBmcm9tIGEgbW9kZWwgd2hlcmUgaGFzIERpc3BsYXlSZWZyZXNoTW9uaXRvciBzZXRQcmVmZXJy
ZWRGcmFtZXNQZXJTZWNvbmQoKQorICAgICAgICB0byBvbmUgd2hlcmUgaXQgY29tcHV0ZXMgbWF4
Q2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCkuCisKKyAgICAgICAgRGlzcGxheVJlZnJl
c2hNb25pdG9yIG5lZWRzIHRvIHJlY29tcHV0ZSBtYXhDbGllbnRQcmVmZXJyZWRGcmFtZXNQZXJT
ZWNvbmQgd2hlbiBjbGllbnRzCisgICAgICAgIGFyZSBhZGRlZCwgcmVtb3ZlZCwgb3Igd2hlbiB0
aGUgcHJlZmVycmVkIGZyYW1lIHJhdGUgb2YgYSBjbGllbnQgY2hhbmdlcy4KKworICAgICAgICBG
b3Igbm93LCBqdXN0IG9uZSBvZiB0aGUgRGlzcGxheVJlZnJlc2hNb25pdG9yIGltcGxlbWVudGF0
aW9ucyByZXNwb25kcyB0byBhZGp1c3RQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQ6CisgICAgICAg
IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYyBzZW5kcyBJUEMgdG8gdGhlIFVJIHByb2Nlc3MsIHdo
aWNoIERpc3BsYXlMaW5rIGNhbiB1c2Ugb24gYSBwZXItY29ubmVjdGlvbgorICAgICAgICBiYXNp
cyB0byB0aHJvdHRsZSB0aGUgZnJlcXVlbmN5IG9mIGRpc3BsYXkgdXBkYXRlcyBzZW50IHRvIHRo
YXQgcHJvY2VzcyAod2hpY2ggaXMgaW1wb3J0YW50CisgICAgICAgIGZvciBwb3dlcikuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjphZGRDbGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZW1vdmVDbGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjptYXhpbXVtQ2xpZW50UHJlZmVycmVk
RnJhbWVzUGVyU2Vjb25kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNo
TW9uaXRvcjo6Y29tcHV0ZU1heFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNsaWVudFByZWZlcnJlZEZyYW1lc1BlclNl
Y29uZENoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNo
TW9uaXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjptYXhD
bGllbnRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheVJlZnJlc2hNb25pdG9yOjphZGp1c3RQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpzZXRQcmVmZXJyZWRGcmFt
ZXNQZXJTZWNvbmQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVm
cmVzaE1vbml0b3JDbGllbnQ6OnNldFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpjbGllbnRQcmVm
ZXJyZWRGcmFtZXNQZXJTZWNvbmRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNldFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFu
YWdlci5oOgorCiAyMDIxLTAzLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFzc2VydGlvbnMgaW4gRGlzcGxheVVwZGF0ZSB3aGVuIGRyYWdnaW5n
IFdlYlZpZXcgd2luZG93cyBiZXR3ZWVuIHNjcmVlbnMgd2l0aCBkaWZmZXJlbnQgcmVmcmVzaCBy
YXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCAyNjIxOWIyYzhhYTg1YzM2OWM5ZjBkYjc4NTQ4Zjc5MDFkOGRmN2Rl
Li5mZDUxNzhlNjdmNTY3NWQzNmYyYTViNmJiMGNkNGY1OGEyNTI4ZmUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM5IEBACisyMDIxLTAzLTMxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgorCisgICAgICAgIEZlZWQgcHJlZmVycmVkIGZyYW1lcyBwZXIgc2Vjb25kIGJhY2sg
dG8gdGhlIFVJIHByb2Nlc3MgZm9yIGVhY2ggRGlzcGxheVJlZnJlc2hNb25pdG9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQwMjMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEaXNwbGF5TGluayBuZWVk
cyB0byB0cmFjayB0aGUgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kIG9mIGVhY2ggb2YgaXRzIGNs
aWVudAorICAgICAgICBvYnNlcnZlcnMuIG5vdGlmeU9ic2VydmVyc0Rpc3BsYXlXYXNSZWZyZXNo
ZWQoKSBjYW4gdGhlbiBhdm9pZCBzZW5kaW5nIElQQyB0bworICAgICAgICBhIHByb2Nlc3MgYSBm
cmVxdWVuY3kgd2hpY2ggaXMgaGlnaGVyIHRoYW4gdGhhdCBwcm9jZXNzIG5lZWRzLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGFydERpc3BsYXlMaW5rKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OnNldERpc3BsYXlMaW5rUHJlZmVycmVkRnJhbWVzUGVyU2Vjb25k
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpbms6OmFkZE9ic2VydmVyKToKKyAgICAgICAg
KFdlYktpdDo6RGlzcGxheUxpbms6OnJlbW92ZU9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6
RGlzcGxheUxpbms6OnJlbW92ZU9ic2VydmVycyk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlM
aW5rOjpzZXRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQpOgorICAgICAgICAoV2ViS2l0OjpEaXNw
bGF5TGluazo6bm90aWZ5T2JzZXJ2ZXJzRGlzcGxheVdhc1JlZnJlc2hlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
UHJvY2Vzc1Byb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnN0
YXJ0RGlzcGxheUxpbmspOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNldERp
c3BsYXlMaW5rUHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9u
aXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmFkanVzdFByZWZlcnJlZEZyYW1l
c1BlclNlY29uZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZy
ZXNoTW9uaXRvcjo6c2V0UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6c3RhcnROb3RpZmlj
YXRpb25NZWNoYW5pc20pOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JN
YWM6OmFkanVzdFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaDoKKwogMjAyMS0wMy0zMCAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBc3NlcnRp
b25zIGluIERpc3BsYXlVcGRhdGUgd2hlbiBkcmFnZ2luZyBXZWJWaWV3IHdpbmRvd3MgYmV0d2Vl
biBzY3JlZW5zIHdpdGggZGlmZmVyZW50IHJlZnJlc2ggcmF0ZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3Bw
CmluZGV4IDBjOGFkMzdhNTM4MGNjM2UxZTZhNWZkMjI1ODQwODY3OGYwYTdiYjMuLjY4NjdkOWMy
YzIxOGE3YmUxNzRmYjMxY2Y5YzJjMDFhYmIyNDJhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcApA
QCAtOTAsNyArOTAsMTEgQEAgdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnN0b3AoKQogCiB2
b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6YWRkQ2xpZW50KERpc3BsYXlSZWZyZXNoTW9uaXRv
ckNsaWVudCYgY2xpZW50KQogewotICAgIG1fY2xpZW50cy5hZGQoJmNsaWVudCk7CisgICAgYXV0
byBhZGRSZXN1bHQgPSBtX2NsaWVudHMuYWRkKCZjbGllbnQpOworICAgIGlmIChhZGRSZXN1bHQu
aXNOZXdFbnRyeSkgeworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVh
bSA8PCAiW1dlYl0gRGlzcGxheVJlZnJlc2hNb25pdG9yICIgPDwgdGhpcyA8PCAiIGFkZGVkQ2xp
ZW50IC0gZGlzcGxheUlEICIgPDwgbV9kaXNwbGF5SUQgPDwgIiBjbGllbnQgIiA8PCAmY2xpZW50
IDw8ICIgY2xpZW50IHByZWZlcnJlZCBmcHMgIiA8PCBjbGllbnQucHJlZmVycmVkRnJhbWVzUGVy
U2Vjb25kKCkpOworICAgICAgICBjb21wdXRlTWF4UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCk7
CisgICAgfQogfQogCiBib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVtb3ZlQ2xpZW50KERp
c3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCYgY2xpZW50KQpAQCAtOTgsNyArMTAyLDM4IEBAIGJv
b2wgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZW1vdmVDbGllbnQoRGlzcGxheVJlZnJlc2hNb25p
dG9yQ2xpZW50JiBjbGllbnQpCiAgICAgaWYgKG1fY2xpZW50c1RvQmVOb3RpZmllZCkKICAgICAg
ICAgbV9jbGllbnRzVG9CZU5vdGlmaWVkLT5yZW1vdmUoJmNsaWVudCk7CiAKLSAgICByZXR1cm4g
bV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsKKyAgICBib29sIHJlbW92ZWQgPSBtX2NsaWVudHMu
cmVtb3ZlKCZjbGllbnQpOworICAgIGlmIChyZW1vdmVkKSB7CisgICAgICAgIExPR19XSVRIX1NU
UkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJbV2ViXSBEaXNwbGF5UmVmcmVzaE1vbml0b3Ig
IiA8PCB0aGlzIDw8ICIgcmVtb3ZlZENsaWVudCAiIDw8ICZjbGllbnQpOworICAgICAgICBjb21w
dXRlTWF4UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCk7CisgICAgfQorCisgICAgcmV0dXJuIHJl
bW92ZWQ7Cit9CisKK09wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gRGlzcGxheVJlZnJlc2hNb25p
dG9yOjptYXhpbXVtQ2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCkgY29uc3QKK3sKKyAg
ICBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG1heEZyYW1lc1BlclNlY29uZDsKKyAgICBmb3Ig
KGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgbWF4RnJhbWVzUGVyU2Vjb25kID0g
c3RkOjptYXg8RnJhbWVzUGVyU2Vjb25kPihtYXhGcmFtZXNQZXJTZWNvbmQudmFsdWVPcigwKSwg
Y2xpZW50LT5wcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoKSk7CisKKyAgICByZXR1cm4gbWF4RnJh
bWVzUGVyU2Vjb25kOworfQorCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y29tcHV0ZU1h
eFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCgpCit7CisgICAgYXV0byBtYXhGcmFtZXNQZXJTZWNv
bmQgPSBtYXhpbXVtQ2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCk7CisgICAgTE9HX1dJ
VEhfU1RSRUFNKERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIltXZWJdIERpc3BsYXlSZWZyZXNoTW9u
aXRvciAiIDw8IHRoaXMgPDwgIiBjb21wdXRlTWF4UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kIC0g
ZGlzcGxheUlEICIgPDwgbV9kaXNwbGF5SUQgPDwgIiBhZGp1c3RpbmcgbWF4IGZwcyB0byAiIDw8
IG1heEZyYW1lc1BlclNlY29uZCk7CisgICAgaWYgKG1heEZyYW1lc1BlclNlY29uZCAhPSBtX21h
eENsaWVudFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCkgeworICAgICAgICBtX21heENsaWVudFBy
ZWZlcnJlZEZyYW1lc1BlclNlY29uZCA9IG1heEZyYW1lc1BlclNlY29uZDsKKyAgICAgICAgaWYg
KG1fbWF4Q2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKQorICAgICAgICAgICAgYWRqdXN0
UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCptX21heENsaWVudFByZWZlcnJlZEZyYW1lc1BlclNl
Y29uZCk7CisgICAgfQorfQorCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y2xpZW50UHJl
ZmVycmVkRnJhbWVzUGVyU2Vjb25kQ2hhbmdlZChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQm
KQoreworICAgIGNvbXB1dGVNYXhQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoKTsKIH0KIAogYm9v
bCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3IuaAppbmRleCBmNmUyY2IwOTQ2Mjg3YTU1YjQ5ZjNmZDZhOTgxOGY0OTkwM2FhYTJmLi5k
MWEwOTgyMjlkMjFiYTE0Yjg4Y2M2YjliYzQ3MTRmYzExMGJhYWNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3Iu
aApAQCAtNDcsOCArNDcsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIHN0b3AoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVmZXJyZWRGcmFtZXNQ
ZXJTZWNvbmQoRnJhbWVzUGVyU2Vjb25kKSB7IH0KLQogICAgIC8vIFJldHVybiB0cnVlIGlmIGNh
bGxiYWNrIHJlcXVlc3Qgd2FzIHNjaGVkdWxlZCwgZmFsc2UgaWYgaXQgY291bGRuJ3QgYmUKICAg
ICAvLyAoZS5nLiwgaGFyZHdhcmUgcmVmcmVzaCBpcyBub3QgYXZhaWxhYmxlKQogICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgYm9vbCByZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCk7CkBAIC01OSw2
ICs1Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZENsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0
b3JDbGllbnQmKTsKICAgICBib29sIHJlbW92ZUNsaWVudChEaXNwbGF5UmVmcmVzaE1vbml0b3JD
bGllbnQmKTsKIAorICAgIHZvaWQgY2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kQ2hhbmdl
ZChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQmKTsKKyAgICBPcHRpb25hbDxGcmFtZXNQZXJT
ZWNvbmQ+IG1heENsaWVudFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWF4Q2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kOyB9CisKICAgICB2aXJ0dWFsIE9w
dGlvbmFsPEZyYW1lc1BlclNlY29uZD4gZGlzcGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQoKSB7
IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KIAogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUlEOyB9CkBAIC04OSw5ICs5MCwxNiBAQCBwcm90
ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGJvb2wgZmlyZWRBbmRSZWFjaGVkTWF4VW5zY2hlZHVsZWRG
aXJlQ291bnQoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RQcmVmZXJyZWRGcmFtZXNQZXJT
ZWNvbmQoRnJhbWVzUGVyU2Vjb25kKSB7IH0KKworICAgIE9wdGlvbmFsPEZyYW1lc1BlclNlY29u
ZD4gbWF4aW11bUNsaWVudFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCgpIGNvbnN0OworICAgIHZv
aWQgY29tcHV0ZU1heFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCgpOworCiAgICAgSGFzaFNldDxE
aXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgSGFzaFNldDxEaXNw
bGF5UmVmcmVzaE1vbml0b3JDbGllbnQqPiogbV9jbGllbnRzVG9CZU5vdGlmaWVkIHsgbnVsbHB0
ciB9OworCiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9kaXNwbGF5SUQgeyAwIH07CisgICAgT3B0
aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBtX21heENsaWVudFByZWZlcnJlZEZyYW1lc1BlclNlY29u
ZDsKIAogICAgIExvY2sgbV9sb2NrOwogICAgIGJvb2wgbV9zY2hlZHVsZWQgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJl
c2hNb25pdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAKaW5kZXggNWQ0NmY0MDljOWE3ODgxMTg5ZDBj
YTYzOWUxMzYxNTFiNzQxODY1ZS4uY2UyNTg3MjhlY2E3ZjExZDM4YWNmZjlhMmFkMjQ0NGE2YjU4
NzQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3BwCkBAIC00MCw3ICs0MCwxMSBA
QCBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQ6On5EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGll
bnQoKQogCiB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudDo6c2V0UHJlZmVycmVkRnJh
bWVzUGVyU2Vjb25kKEZyYW1lc1BlclNlY29uZCBwcmVmZXJyZWRGcmFtZVJhdGUpCiB7CisgICAg
aWYgKHByZWZlcnJlZEZyYW1lUmF0ZSA9PSBtX3ByZWZlcnJlZEZyYW1lc1BlclNlY29uZCkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgbV9wcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQgPSBwcmVmZXJy
ZWRGcmFtZVJhdGU7CisgICAgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpLmNsaWVudFByZWZlcnJlZEZyYW1lc1BlclNlY29uZENoYW5nZWQoKnRoaXMpOwogfQog
CiB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudDo6ZmlyZURpc3BsYXlSZWZyZXNoSWZO
ZWVkZWQoY29uc3QgRGlzcGxheVVwZGF0ZSYgZGlzcGxheVVwZGF0ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yTWFuYWdlci5jcHAKaW5kZXggN2FmOTVjODdiMTFmODdlYTFmNTg5YzU4ZTkwNzI3ODY0
NmU5YWM5ZC4uODU3M2JkYjIyMjk3NzAwNTViOWQwNjBlZjM4MmM2NGVlOTA4NDkzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKQEAgLTcwLDEwICs3MCwxMCBAQCB2b2lkIERp
c3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnVucmVnaXN0ZXJDbGllbnQoRGlzcGxheVJlZnJl
c2hNb25pdG9yQ2xpZW50JgogICAgIG1vbml0b3ItPnJlbW92ZUNsaWVudChjbGllbnQpOwogfQog
Ci12b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNldFByZWZlcnJlZEZyYW1lc1Bl
clNlY29uZChEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQmIGNsaWVudCwgRnJhbWVzUGVyU2Vj
b25kIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCkKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFuYWdlcjo6Y2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kQ2hhbmdlZChEaXNwbGF5UmVm
cmVzaE1vbml0b3JDbGllbnQmIGNsaWVudCkKIHsKICAgICBpZiAoYXV0byogbW9uaXRvciA9IG1v
bml0b3JGb3JDbGllbnQoY2xpZW50KSkKLSAgICAgICAgbW9uaXRvci0+c2V0UHJlZmVycmVkRnJh
bWVzUGVyU2Vjb25kKHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCk7CisgICAgICAgIG1vbml0b3It
PmNsaWVudFByZWZlcnJlZEZyYW1lc1BlclNlY29uZENoYW5nZWQoY2xpZW50KTsKIH0KIAogYm9v
bCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpzY2hlZHVsZUFuaW1hdGlvbihEaXNwbGF5
UmVmcmVzaE1vbml0b3JDbGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIu
aAppbmRleCBlZmZlN2E4NTYxMGY0NDBmYjU3Zjg3ZDczNmRkZTRmNjA5MTg2NWFkLi5jZmFlZmEy
ZWU2OWI2MzQzOTY2ZmY0N2I2ZTllYWJjYzE1NGIwMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFuYWdlci5oCkBAIC00NCwxMiArNDQsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCB1bnJlZ2lz
dGVyQ2xpZW50KERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCYpOwogCi0gICAgdm9pZCBzZXRQ
cmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50JiwgRnJh
bWVzUGVyU2Vjb25kKTsKICAgICBib29sIHNjaGVkdWxlQW5pbWF0aW9uKERpc3BsYXlSZWZyZXNo
TW9uaXRvckNsaWVudCYpOwogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3Jt
RGlzcGxheUlELCBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQmKTsKICAgICAKICAgICBPcHRp
b25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmRGb3JEaXNwbGF5KFBs
YXRmb3JtRGlzcGxheUlELCBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5Kik7CiAKKyAgICB2
b2lkIGNsaWVudFByZWZlcnJlZEZyYW1lc1BlclNlY29uZENoYW5nZWQoRGlzcGxheVJlZnJlc2hN
b25pdG9yQ2xpZW50Jik7CisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc3BsYXlXYXNVcGRh
dGVkKFBsYXRmb3JtRGlzcGxheUlELCBjb25zdCBEaXNwbGF5VXBkYXRlJik7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbQppbmRleCA3NjI2Y2I4YjJkN2RiOTU5MDdkNDllMjMxNWI5ZGQ1MDQ5MWQyZGY5Li5k
NGI4ZWZjOGQwYjQwYTVmMGZiY2JkM2M3MDc2NTkzZjA3NjE5NjUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTcy
LDYgKzcyLDcgQEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3ND
b2NvYS5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogI2ltcG9ydCA8
d3RmL3NwaS9kYXJ3aW4vZHlsZFNQSS5oPgorI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5o
PgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9SZW1vdGVJbnNwZWN0b3IuaD4KQEAgLTc3OSwxNiArNzgwLDE2IEBAIE9wdGlvbmFsPHVuc2ln
bmVkPiBXZWJQcm9jZXNzUG9vbDo6bm9taW5hbEZyYW1lc1BlclNlY29uZEZvckRpc3BsYXkoV2Vi
Q29yZTo6UGxhCiAgICAgcmV0dXJuIGZyYW1lUmF0ZTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c3RhcnREaXNwbGF5TGluayhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERpc3BsYXlM
aW5rT2JzZXJ2ZXJJRCBvYnNlcnZlcklELCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCit2
b2lkIFdlYlByb2Nlc3NQb29sOjpzdGFydERpc3BsYXlMaW5rKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgRGlzcGxheUxpbmtPYnNlcnZlcklEIG9ic2VydmVySUQsIFBsYXRmb3JtRGlzcGxh
eUlEIGRpc3BsYXlJRCwgV2ViQ29yZTo6RnJhbWVzUGVyU2Vjb25kIHByZWZlcnJlZEZyYW1lc1Bl
clNlY29uZCkKIHsKICAgICBmb3IgKGF1dG8mIGRpc3BsYXlMaW5rIDogbV9kaXNwbGF5TGlua3Mp
IHsKICAgICAgICAgaWYgKGRpc3BsYXlMaW5rLT5kaXNwbGF5SUQoKSA9PSBkaXNwbGF5SUQpIHsK
LSAgICAgICAgICAgIGRpc3BsYXlMaW5rLT5hZGRPYnNlcnZlcihjb25uZWN0aW9uLCBvYnNlcnZl
cklEKTsKKyAgICAgICAgICAgIGRpc3BsYXlMaW5rLT5hZGRPYnNlcnZlcihjb25uZWN0aW9uLCBv
YnNlcnZlcklELCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQogICAgIGF1dG8gZGlzcGxheUxpbmsgPSBtYWtlVW5pcXVlPERp
c3BsYXlMaW5rPihkaXNwbGF5SUQpOwotICAgIGRpc3BsYXlMaW5rLT5hZGRPYnNlcnZlcihjb25u
ZWN0aW9uLCBvYnNlcnZlcklEKTsKKyAgICBkaXNwbGF5TGluay0+YWRkT2JzZXJ2ZXIoY29ubmVj
dGlvbiwgb2JzZXJ2ZXJJRCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKTsKICAgICBtX2Rpc3Bs
YXlMaW5rcy5hcHBlbmQoV1RGTW92ZShkaXNwbGF5TGluaykpOwogfQogCkBAIC04MDcsNiArODA4
LDE4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnN0b3BEaXNwbGF5TGlua3MoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uKQogICAgIGZvciAoYXV0byYgZGlzcGxheUxpbmsgOiBtX2Rpc3BsYXlM
aW5rcykKICAgICAgICAgZGlzcGxheUxpbmstPnJlbW92ZU9ic2VydmVycyhjb25uZWN0aW9uKTsK
IH0KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RGlzcGxheUxpbmtQcmVmZXJyZWRGcmFtZXNQ
ZXJTZWNvbmQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEaXNwbGF5TGlua09ic2VydmVy
SUQgb2JzZXJ2ZXJJRCwgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBXZWJDb3JlOjpGcmFt
ZXNQZXJTZWNvbmQgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKQoreworICAgIExPR19XSVRIX1NU
UkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJbVUkgXSBXZWJQcm9jZXNzUG9vbDo6c2V0RGlz
cGxheUxpbmtQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQgLSBkaXNwbGF5ICIgPDwgZGlzcGxheUlE
IDw8ICIgb2JzZXJ2ZXIgIiA8PCBvYnNlcnZlcklEIDw8ICIgZnBzICIgPDwgcHJlZmVycmVkRnJh
bWVzUGVyU2Vjb25kKTsKKworICAgIGZvciAoYXV0byYgZGlzcGxheUxpbmsgOiBtX2Rpc3BsYXlM
aW5rcykgeworICAgICAgICBpZiAoZGlzcGxheUxpbmstPmRpc3BsYXlJRCgpID09IGRpc3BsYXlJ
RCkgeworICAgICAgICAgICAgZGlzcGxheUxpbmstPnNldFByZWZlcnJlZEZyYW1lc1BlclNlY29u
ZChjb25uZWN0aW9uLCBvYnNlcnZlcklELCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQogI2VuZGlmIC8vIEhBVkUoQ1ZE
SVNQTEFZTElOSykKIAogLy8gRklYTUU6IERlcHJlY2F0ZWQuIExlZnQgaGVyZSB1bnRpbCBhIGZp
bmFsIGRlY2lzaW9uIGlzIG1hZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAppbmRleCBhYWIwOGE4YzBiYWQwNGQxYzljODVkYzA0YzNmYWE1YWI5MGM5ZTNjLi4zMTMw
MzAyMjVlOTVjMWYwNzU1NmVhYThiYjZmOGI5M2FmODAzNTU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTIzOCw5ICsyMzgsMTAgQEAgcHVibGljOgogI2Vu
ZGlmCiAKICNpZiBIQVZFKENWRElTUExBWUxJTkspCi0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IG5v
bWluYWxGcmFtZXNQZXJTZWNvbmRGb3JEaXNwbGF5KFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlE
KTsKLSAgICB2b2lkIHN0YXJ0RGlzcGxheUxpbmsoSVBDOjpDb25uZWN0aW9uJiwgRGlzcGxheUxp
bmtPYnNlcnZlcklELCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCk7CisgICAgT3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kRm9yRGlzcGxh
eShXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCk7CisgICAgdm9pZCBzdGFydERpc3BsYXlMaW5r
KElQQzo6Q29ubmVjdGlvbiYsIERpc3BsYXlMaW5rT2JzZXJ2ZXJJRCwgV2ViQ29yZTo6UGxhdGZv
cm1EaXNwbGF5SUQsIFdlYkNvcmU6OkZyYW1lc1BlclNlY29uZCk7CiAgICAgdm9pZCBzdG9wRGlz
cGxheUxpbmsoSVBDOjpDb25uZWN0aW9uJiwgRGlzcGxheUxpbmtPYnNlcnZlcklELCBXZWJDb3Jl
OjpQbGF0Zm9ybURpc3BsYXlJRCk7CisgICAgdm9pZCBzZXREaXNwbGF5TGlua1ByZWZlcnJlZEZy
YW1lc1BlclNlY29uZChJUEM6OkNvbm5lY3Rpb24mLCBEaXNwbGF5TGlua09ic2VydmVySUQsIFdl
YkNvcmU6OlBsYXRmb3JtRGlzcGxheUlELCBXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQpOwogICAg
IHZvaWQgc3RvcERpc3BsYXlMaW5rcyhJUEM6OkNvbm5lY3Rpb24mKTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDY4ZDY2YzYxNWViYTZl
OTdiMGEzYzgwZDQzNGIxYjExNDhiMmQwN2MuLjk2YThmMGI1N2QwMjFiYzAxMWNkZDRhMmNhYmU2
NzNmZmY3ZjdmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CkBAIC03OCw2ICs3OCw3IEBAIHN0cnVjdCBQcmV3YXJtSW5mb3JtYXRpb247CiBzdHJ1Y3QgU2Vj
dXJpdHlPcmlnaW5EYXRhOwogZW51bSBjbGFzcyBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
IDogdWludDhfdDsKIHVzaW5nIFBsYXRmb3JtRGlzcGxheUlEID0gdWludDMyX3Q7Cit1c2luZyBG
cmFtZXNQZXJTZWNvbmQgPSB1bnNpZ25lZDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0y
OTgsOCArMjk5LDkgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBIQVZFKENWRElTUExBWUxJTksp
Ci0gICAgdm9pZCBzdGFydERpc3BsYXlMaW5rKERpc3BsYXlMaW5rT2JzZXJ2ZXJJRCwgV2ViQ29y
ZTo6UGxhdGZvcm1EaXNwbGF5SUQpOworICAgIHZvaWQgc3RhcnREaXNwbGF5TGluayhEaXNwbGF5
TGlua09ic2VydmVySUQsIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlELCBXZWJDb3JlOjpGcmFt
ZXNQZXJTZWNvbmQpOwogICAgIHZvaWQgc3RvcERpc3BsYXlMaW5rKERpc3BsYXlMaW5rT2JzZXJ2
ZXJJRCwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpOworICAgIHZvaWQgc2V0RGlzcGxheUxp
bmtQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoRGlzcGxheUxpbmtPYnNlcnZlcklELCBXZWJDb3Jl
OjpQbGF0Zm9ybURpc3BsYXlJRCwgV2ViQ29yZTo6RnJhbWVzUGVyU2Vjb25kKTsKICNlbmRpZgog
CiAgICAgLy8gQ2FsbGVkIHdoZW4gdGhlIHdlYiBwcm9jZXNzIGhhcyBjcmFzaGVkIG9yIHdlIGtu
b3cgdGhhdCBpdCB3aWxsIHRlcm1pbmF0ZSBzb29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGVhOWNkYTUwMWYwODkw
YmQzZGEzMGYwMmZlMTRjM2IxY2JiMmM3M2QuLmRhNjQyM2NhYjU5YmUwMDNjMjZkODhhOWZiODU4
NGQ1N2Y0YWM1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTcyLDggKzcyLDkgQEAgbWVzc2FnZXMgLT4gV2ViUHJv
Y2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAjaWYgSEFWRShDVkRJU1BMQVlM
SU5LKQotICAgIFN0YXJ0RGlzcGxheUxpbmsoV2ViS2l0OjpEaXNwbGF5TGlua09ic2VydmVySUQg
b2JzZXJ2ZXJJRCwgdWludDMyX3QgZGlzcGxheUlEKQorICAgIFN0YXJ0RGlzcGxheUxpbmsoV2Vi
S2l0OjpEaXNwbGF5TGlua09ic2VydmVySUQgb2JzZXJ2ZXJJRCwgdWludDMyX3QgZGlzcGxheUlE
LCB1bnNpZ25lZCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQpCiAgICAgU3RvcERpc3BsYXlMaW5r
KFdlYktpdDo6RGlzcGxheUxpbmtPYnNlcnZlcklEIG9ic2VydmVySUQsIHVpbnQzMl90IGRpc3Bs
YXlJRCkKKyAgICBTZXREaXNwbGF5TGlua1ByZWZlcnJlZEZyYW1lc1BlclNlY29uZChXZWJLaXQ6
OkRpc3BsYXlMaW5rT2JzZXJ2ZXJJRCBvYnNlcnZlcklELCB1aW50MzJfdCBkaXNwbGF5SUQsIHVu
c2lnbmVkIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oV1BFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL0Rpc3BsYXlMaW5rLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNw
bGF5TGluay5jcHAKaW5kZXggNWJiNTU2MzE3ZjBkM2JlMDg3OGY4ZmViZWM5ZDQ4ODA4ODFiMTIy
MC4uOGI4YzljNjlmM2NmODVlZjUxN2UwMTg4ZWY1MTBiMzRiNzU3YjFiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxpbmsuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Bbmlt
YXRpb25GcmFtZVJhdGUuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIApAQCAtODEsMTUgKzgyLDE1IEBAIFdlYkNv
cmU6OkZyYW1lc1BlclNlY29uZCBEaXNwbGF5TGluazo6bm9taW5hbEZyYW1lc1BlclNlY29uZEZy
b21EaXNwbGF5TGluayhDVkRpCiAgICAgcmV0dXJuIHJvdW5kKChkb3VibGUpcmVmcmVzaFBlcmlv
ZC50aW1lU2NhbGUgLyAoZG91YmxlKXJlZnJlc2hQZXJpb2QudGltZVZhbHVlKTsKIH0KIAotdm9p
ZCBEaXNwbGF5TGluazo6YWRkT2JzZXJ2ZXIoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBE
aXNwbGF5TGlua09ic2VydmVySUQgb2JzZXJ2ZXJJRCkKK3ZvaWQgRGlzcGxheUxpbms6OmFkZE9i
c2VydmVyKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGlzcGxheUxpbmtPYnNlcnZlcklE
IG9ic2VydmVySUQsIFdlYkNvcmU6OkZyYW1lc1BlclNlY29uZCBwcmVmZXJyZWRGcmFtZXNQZXJT
ZWNvbmQpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIHsKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9vYnNlcnZlcnNMb2NrKTsKKyAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX29ic2VydmVyc0xvY2spOwogICAgICAgICBtX29ic2VydmVycy5lbnN1
cmUoJmNvbm5lY3Rpb24sIFtdIHsKLSAgICAgICAgICAgIHJldHVybiBWZWN0b3I8RGlzcGxheUxp
bmtPYnNlcnZlcklEPiB7IH07Ci0gICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQob2Jz
ZXJ2ZXJJRCk7CisgICAgICAgICAgICByZXR1cm4gVmVjdG9yPE9ic2VydmVySW5mbz4geyB9Owor
ICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKHsgb2JzZXJ2ZXJJRCwgcHJlZmVycmVk
RnJhbWVzUGVyU2Vjb25kIH0pOwogICAgIH0KIAogICAgIGlmICghQ1ZEaXNwbGF5TGlua0lzUnVu
bmluZyhtX2Rpc3BsYXlMaW5rKSkgewpAQCAtMTA2LDEyICsxMDcsMTQgQEAgdm9pZCBEaXNwbGF5
TGluazo6cmVtb3ZlT2JzZXJ2ZXIoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEaXNwbGF5
TGlua09ic2VydmUKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV9vYnNlcnZlcnNMb2NrKTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fb2JzZXJ2ZXJzTG9jayk7CiAKICAgICBhdXRvIGl0ID0gbV9vYnNlcnZlcnMuZmluZCgm
Y29ubmVjdGlvbik7CiAgICAgaWYgKGl0ID09IG1fb2JzZXJ2ZXJzLmVuZCgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgYm9vbCByZW1vdmVkID0gaXQtPnZhbHVlLnJlbW92ZUZpcnN0KG9ic2VydmVy
SUQpOworICAgIGJvb2wgcmVtb3ZlZCA9IGl0LT52YWx1ZS5yZW1vdmVGaXJzdE1hdGNoaW5nKFtv
YnNlcnZlcklEXShjb25zdCBhdXRvJiB2YWx1ZSkgeworICAgICAgICByZXR1cm4gdmFsdWUub2Jz
ZXJ2ZXJJRCA9PSBvYnNlcnZlcklEOworICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQocmVtb3Zl
ZCwgcmVtb3ZlZCk7CiAgICAgaWYgKGl0LT52YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgIG1fb2Jz
ZXJ2ZXJzLnJlbW92ZShpdCk7CkBAIC0xMjUsNyArMTI4LDcgQEAgdm9pZCBEaXNwbGF5TGluazo6
cmVtb3ZlT2JzZXJ2ZXJzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9vYnNlcnZl
cnNMb2NrKTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb2JzZXJ2ZXJzTG9jayk7CiAg
ICAgbV9vYnNlcnZlcnMucmVtb3ZlKCZjb25uZWN0aW9uKTsKIAogICAgIC8vIFdlIGRvIG5vdCBz
dG9wIHRoZSBkaXNwbGF5IGxpbmsgcmlnaHQgYXdheSB3aGVuIHxtX29ic2VydmVyc3wgYmVjb21l
cyBlbXB0eS4gSW5zdGVhZCwgd2UKQEAgLTEzMyw2ICsxMzYsMjQgQEAgdm9pZCBEaXNwbGF5TGlu
azo6cmVtb3ZlT2JzZXJ2ZXJzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICAgICAvLyBr
aWxsaW5nICYgcmVzdGFydGluZyB0b28gbWFueSB0aHJlYWRzIHdoZW4gb2JzZXJ2ZXJzIGdldHMg
cmVtb3ZlZCAmIGFkZGVkIGluIHF1aWNrIHN1Y2Nlc3Npb24uCiB9CiAKK3ZvaWQgRGlzcGxheUxp
bms6OnNldFByZWZlcnJlZEZyYW1lc1BlclNlY29uZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIERpc3BsYXlMaW5rT2JzZXJ2ZXJJRCBvYnNlcnZlcklELCBXZWJDb3JlOjpGcmFtZXNQZXJT
ZWNvbmQgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKQoreworICAgIExPR19XSVRIX1NUUkVBTShE
aXNwbGF5TGluaywgc3RyZWFtIDw8ICJbVUkgXSBEaXNwbGF5TGluazo6c2V0UHJlZmVycmVkRnJh
bWVzUGVyU2Vjb25kIC0gZGlzcGxheSAiIDw8IG1fZGlzcGxheUlEIDw8ICIgb2JzZXJ2ZXIgIiA8
PCBvYnNlcnZlcklEIDw8ICIgZnBzICIgPDwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKTsKKwor
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9vYnNlcnZlcnNMb2NrKTsKKworICAgIGF1dG8g
aXQgPSBtX29ic2VydmVycy5maW5kKCZjb25uZWN0aW9uKTsKKyAgICBpZiAoaXQgPT0gbV9vYnNl
cnZlcnMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaW5kZXggPSBpdC0+dmFs
dWUuZmluZE1hdGNoaW5nKFtvYnNlcnZlcklEXShjb25zdCBhdXRvJiBvYnNlcnZlcikgeworICAg
ICAgICByZXR1cm4gb2JzZXJ2ZXIub2JzZXJ2ZXJJRCA9PSBvYnNlcnZlcklEOworICAgIH0pOwor
CisgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKQorICAgICAgICBpdC0+dmFsdWVbaW5kZXhdLnBy
ZWZlcnJlZEZyYW1lc1BlclNlY29uZCA9IHByZWZlcnJlZEZyYW1lc1BlclNlY29uZDsKK30KKwog
Q1ZSZXR1cm4gRGlzcGxheUxpbms6OmRpc3BsYXlMaW5rQ2FsbGJhY2soQ1ZEaXNwbGF5TGlua1Jl
ZiBkaXNwbGF5TGlua1JlZiwgY29uc3QgQ1ZUaW1lU3RhbXAqLCBjb25zdCBDVlRpbWVTdGFtcCos
IENWT3B0aW9uRmxhZ3MsIENWT3B0aW9uRmxhZ3MqLCB2b2lkKiBkYXRhKQogewogICAgIHN0YXRp
Y19jYXN0PERpc3BsYXlMaW5rKj4oZGF0YSktPm5vdGlmeU9ic2VydmVyc0Rpc3BsYXlXYXNSZWZy
ZXNoZWQoKTsKQEAgLTE0Myw3ICsxNjQsNyBAQCB2b2lkIERpc3BsYXlMaW5rOjpub3RpZnlPYnNl
cnZlcnNEaXNwbGF5V2FzUmVmcmVzaGVkKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fb2JzZXJ2ZXJzTG9jayk7CisgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX29ic2VydmVyc0xvY2spOwogICAgIGlmIChtX29ic2VydmVy
cy5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKCsrbV9maXJlQ291bnRXaXRob3V0T2JzZXJ2ZXJz
ID49IG1heEZpcmVDb3VudFdpdGhvdXRPYnNlcnZlcnMpIHsKICAgICAgICAgICAgIExPR19XSVRI
X1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJbVUkgXSBEaXNwbGF5TGluayBmb3IgZGlz
cGxheSAiIDw8IG1fZGlzcGxheUlEIDw8ICIgZmlyZWQgIiA8PCBtX2ZpcmVDb3VudFdpdGhvdXRP
YnNlcnZlcnMgPDwgIiB0aW1lcyB3aXRoIG5vIG9ic2VydmVyczsgc3RvcHBpbmcgQ1ZEaXNwbGF5
TGluayIpOwpAQCAtMTUzLDggKzE3NCwyMiBAQCB2b2lkIERpc3BsYXlMaW5rOjpub3RpZnlPYnNl
cnZlcnNEaXNwbGF5V2FzUmVmcmVzaGVkKCkKICAgICB9CiAgICAgbV9maXJlQ291bnRXaXRob3V0
T2JzZXJ2ZXJzID0gMDsKIAotICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fb2JzZXJ2ZXJz
LmtleXMoKSkgewotICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8
PCAiW1VJIF0gRGlzcGxheUxpbmsgZm9yIGRpc3BsYXkgIiA8PCBtX2Rpc3BsYXlJRCA8PCAiIChk
aXNwbGF5IGZwcyAiIDw8IG1fZGlzcGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQgPDwgIikgdXBk
YXRlICIgPDwgbV9jdXJyZW50VXBkYXRlIDw8ICIgY29ubmVjdGlvbiAiIDw8IGNvbm5lY3Rpb24t
PnVuaXF1ZUlEKCkgPDwgIiBvbiBiYWNrZ3JvdW5kIHF1ZXVlICIgPDwgc2hvdWxkU2VuZElQQ09u
QmFja2dyb3VuZFF1ZXVlKTsKKyAgICBhdXRvIG1heEZyYW1lc1BlclNlY29uZCA9IFtdKGNvbnN0
IFZlY3RvcjxPYnNlcnZlckluZm8+JiBvYnNlcnZlcnMpIHsKKyAgICAgICAgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVzUGVyU2Vjb25kPiBvYnNlcnZlcnNNYXhGcmFtZXNQZXJTZWNvbmQ7CisgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgb2JzZXJ2ZXIgOiBvYnNlcnZlcnMpCisgICAgICAgICAgICBv
YnNlcnZlcnNNYXhGcmFtZXNQZXJTZWNvbmQgPSBzdGQ6Om1heChvYnNlcnZlcnNNYXhGcmFtZXNQ
ZXJTZWNvbmQudmFsdWVPcigwKSwgb2JzZXJ2ZXIucHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKTsK
KyAgICAgICAgcmV0dXJuIG9ic2VydmVyc01heEZyYW1lc1BlclNlY29uZDsKKyAgICB9OworCisg
ICAgZm9yIChhdXRvJiBbY29ubmVjdGlvbiwgb2JzZXJ2ZXJzXSA6IG1fb2JzZXJ2ZXJzKSB7Cisg
ICAgICAgIGF1dG8gb2JzZXJ2ZXJzTWF4RnJhbWVzUGVyU2Vjb25kID0gbWF4RnJhbWVzUGVyU2Vj
b25kKG9ic2VydmVycyk7CisgICAgICAgIGF1dG8gdXBkYXRlSXNSZWxldmFudCA9IG1fY3VycmVu
dFVwZGF0ZS5yZWxldmFudEZvclVwZGF0ZUZyZXF1ZW5jeShvYnNlcnZlcnNNYXhGcmFtZXNQZXJT
ZWNvbmQudmFsdWVPcihXZWJDb3JlOjpGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQpKTsKKworICAg
ICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiW1VJIF0gRGlzcGxh
eUxpbmsgZm9yIGRpc3BsYXkgIiA8PCBtX2Rpc3BsYXlJRCA8PCAiIChkaXNwbGF5IGZwcyAiIDw8
IG1fZGlzcGxheU5vbWluYWxGcmFtZXNQZXJTZWNvbmQgPDwgIikgdXBkYXRlICIgPDwgbV9jdXJy
ZW50VXBkYXRlIDw8ICIgIiA8PCBvYnNlcnZlcnMuc2l6ZSgpCisgICAgICAgICAgICA8PCAiIG9i
c2VydmVycywgb24gYmFja2dyb3VuZCBxdWV1ZSAiIDw8IHNob3VsZFNlbmRJUENPbkJhY2tncm91
bmRRdWV1ZSA8PCAiIG1heEZyYW1lc1BlclNlY29uZCAiIDw8IG9ic2VydmVyc01heEZyYW1lc1Bl
clNlY29uZCA8PCAiIHJlbGV2YW50ICIgPDwgdXBkYXRlSXNSZWxldmFudCk7CisKKyAgICAgICAg
aWYgKCF1cGRhdGVJc1JlbGV2YW50KQorICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
aWYgKHNob3VsZFNlbmRJUENPbkJhY2tncm91bmRRdWV1ZSkKICAgICAgICAgICAgIGNvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OkV2ZW50RGlzcGF0Y2hlcjo6RGlzcGxheVdhc1JlZnJlc2hlZCht
X2Rpc3BsYXlJRCwgbV9jdXJyZW50VXBkYXRlKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxpbmsuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9EaXNwbGF5TGluay5oCmluZGV4IDUyYzMxOTllZjhjZDYwZjQwMjhjZWQ1MDhlOGM3NDFj
Mzk4MTgzZGYuLjZiNjY4ZmRjYjBlMzU5OGI5NjE1NzljMWM3M2I1ZTI4NmQ4N2M0ZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5oCkBAIC00NywxMCArNDcsMTIg
QEAgcHVibGljOgogICAgIGV4cGxpY2l0IERpc3BsYXlMaW5rKFdlYkNvcmU6OlBsYXRmb3JtRGlz
cGxheUlEKTsKICAgICB+RGlzcGxheUxpbmsoKTsKICAgICAKLSAgICB2b2lkIGFkZE9ic2VydmVy
KElQQzo6Q29ubmVjdGlvbiYsIERpc3BsYXlMaW5rT2JzZXJ2ZXJJRCk7CisgICAgdm9pZCBhZGRP
YnNlcnZlcihJUEM6OkNvbm5lY3Rpb24mLCBEaXNwbGF5TGlua09ic2VydmVySUQsIFdlYkNvcmU6
OkZyYW1lc1BlclNlY29uZCk7CiAgICAgdm9pZCByZW1vdmVPYnNlcnZlcihJUEM6OkNvbm5lY3Rp
b24mLCBEaXNwbGF5TGlua09ic2VydmVySUQpOwogICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXJzKElQ
Qzo6Q29ubmVjdGlvbiYpOwogCisgICAgdm9pZCBzZXRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQo
SVBDOjpDb25uZWN0aW9uJiwgRGlzcGxheUxpbmtPYnNlcnZlcklELCBXZWJDb3JlOjpGcmFtZXNQ
ZXJTZWNvbmQpOworCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkg
Y29uc3QgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KICAgICAKICAgICBXZWJDb3JlOjpGcmFtZXNQ
ZXJTZWNvbmQgbm9taW5hbEZyYW1lc1BlclNlY29uZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxh
eU5vbWluYWxGcmFtZXNQZXJTZWNvbmQ7IH0KQEAgLTY1LDkgKzY3LDE0IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgc3RhdGljIFdlYkNvcmU6OkZyYW1lc1BlclNlY29uZCBub21pbmFsRnJhbWVzUGVy
U2Vjb25kRnJvbURpc3BsYXlMaW5rKENWRGlzcGxheUxpbmtSZWYpOwogCisgICAgc3RydWN0IE9i
c2VydmVySW5mbyB7CisgICAgICAgIERpc3BsYXlMaW5rT2JzZXJ2ZXJJRCBvYnNlcnZlcklEOwor
ICAgICAgICBXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25k
OworICAgIH07CisKICAgICBDVkRpc3BsYXlMaW5rUmVmIG1fZGlzcGxheUxpbmsgeyBudWxscHRy
IH07CiAgICAgTG9jayBtX29ic2VydmVyc0xvY2s7Ci0gICAgSGFzaE1hcDxSZWZQdHI8SVBDOjpD
b25uZWN0aW9uPiwgVmVjdG9yPERpc3BsYXlMaW5rT2JzZXJ2ZXJJRD4+IG1fb2JzZXJ2ZXJzOwor
ICAgIEhhc2hNYXA8UmVmUHRyPElQQzo6Q29ubmVjdGlvbj4sIFZlY3RvcjxPYnNlcnZlckluZm8+
PiBtX29ic2VydmVyczsKICAgICBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBtX2Rpc3BsYXlJ
RDsKICAgICBXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQgbV9kaXNwbGF5Tm9taW5hbEZyYW1lc1Bl
clNlY29uZCB7IDAgfTsKICAgICBXZWJDb3JlOjpEaXNwbGF5VXBkYXRlIG1fY3VycmVudFVwZGF0
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJv
eHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFj
Lm1tCmluZGV4IDQ3MTk1NTJmYjBlNWQyYTZkNzZhNjhiN2JiOWIyYTYzOGVkMTA0NjcuLjkzZGUy
MjZlNDBiMTE3OGZhNzE0YTdjYjg5OTcxMDUyZDNlNDJhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlByb2Nlc3NQcm94eU1hYy5tbQpAQCAtNTksMTEgKzU5LDEx
IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpzaG91bGRBbGxvd05vblZhbGlkSW5qZWN0ZWRDb2Rl
KCkgY29uc3QKICAgICByZXR1cm4gIXBhdGguaXNFbXB0eSgpICYmICFwYXRoLnN0YXJ0c1dpdGgo
Ii9TeXN0ZW0vIik7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzdGFydERpc3BsYXlMaW5r
KERpc3BsYXlMaW5rT2JzZXJ2ZXJJRCBvYnNlcnZlcklELCBXZWJDb3JlOjpQbGF0Zm9ybURpc3Bs
YXlJRCBkaXNwbGF5SUQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3RhcnREaXNwbGF5TGluayhE
aXNwbGF5TGlua09ic2VydmVySUQgb2JzZXJ2ZXJJRCwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlELCBXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQgcHJlZmVycmVkRnJhbWVzUGVy
U2Vjb25kKQogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxl
Z2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOwogICAgIEFTU0VSVChjb25uZWN0
aW9uKCkpOwotICAgIHByb2Nlc3NQb29sKCkuc3RhcnREaXNwbGF5TGluaygqY29ubmVjdGlvbigp
LCBvYnNlcnZlcklELCBkaXNwbGF5SUQpOworICAgIHByb2Nlc3NQb29sKCkuc3RhcnREaXNwbGF5
TGluaygqY29ubmVjdGlvbigpLCBvYnNlcnZlcklELCBkaXNwbGF5SUQsIHByZWZlcnJlZEZyYW1l
c1BlclNlY29uZCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzdG9wRGlzcGxheUxpbmso
RGlzcGxheUxpbmtPYnNlcnZlcklEIG9ic2VydmVySUQsIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxh
eUlEIGRpc3BsYXlJRCkKQEAgLTcyLDYgKzcyLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpz
dG9wRGlzcGxheUxpbmsoRGlzcGxheUxpbmtPYnNlcnZlcklEIG9ic2VydmVySUQsIFdlYkNvcmU6
CiAgICAgcHJvY2Vzc1Bvb2woKS5zdG9wRGlzcGxheUxpbmsoKmNvbm5lY3Rpb24oKSwgb2JzZXJ2
ZXJJRCwgZGlzcGxheUlEKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldERpc3BsYXlM
aW5rUHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKERpc3BsYXlMaW5rT2JzZXJ2ZXJJRCBvYnNlcnZl
cklELCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIFdlYkNvcmU6OkZyYW1l
c1BlclNlY29uZCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQpCit7CisgICAgQVNTRVJUKGNvbm5l
Y3Rpb24oKSk7CisgICAgcHJvY2Vzc1Bvb2woKS5zZXREaXNwbGF5TGlua1ByZWZlcnJlZEZyYW1l
c1BlclNlY29uZCgqY29ubmVjdGlvbigpLCBvYnNlcnZlcklELCBkaXNwbGF5SUQsIHByZWZlcnJl
ZEZyYW1lc1BlclNlY29uZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRv
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5oCmluZGV4IDk5MzQ3M2QwY2U4MmM2
MGIwYjczODdlMWFhYjYxZjg5MGUxMzJhZDkuLjAxMDE4MTM1ODhmODUwMGVmZjZmNDc2ODFmNzYx
YjMzYzE3MmRiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKQEAgLTQwLDcgKzQwLDYgQEAgcHVi
bGljOgogICAgIAogICAgIHZpcnR1YWwgflJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9u
aXRvcigpOwogCi0gICAgdm9pZCBzZXRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoV2ViQ29yZTo6
RnJhbWVzUGVyU2Vjb25kKSBvdmVycmlkZTsKICAgICBib29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJh
Y2soKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkVXBkYXRlTGF5ZXJzKCk7CkBAIC01Myw2ICs1Miw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkgZmluYWwg
eyB9CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVzUGVyU2Vjb25kPiBkaXNwbGF5Tm9taW5h
bEZyYW1lc1BlclNlY29uZCgpIGZpbmFsOwogCisgICAgdm9pZCBhZGp1c3RQcmVmZXJyZWRGcmFt
ZXNQZXJTZWNvbmQoV2ViQ29yZTo6RnJhbWVzUGVyU2Vjb25kKSBmaW5hbDsKKwogICAgIFdlYWtQ
dHI8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE+IG1fZHJhd2luZ0FyZWE7CiAKICAgICBXZWJD
b3JlOjpGcmFtZXNQZXJTZWNvbmQgbV9wcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZy
ZXNoTW9uaXRvci5tbQppbmRleCBlNzAzZDRkZjE4ZTVjZDg1N2Q5Njc1ZjBiMGIwYTVkNDJlN2U5
MzUxLi45MmI5YTQzNmRlOGIyMTMzYTUyODcxZTg5YTgwNDliYjcyNjNiMTg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVm
cmVzaE1vbml0b3IubW0KQEAgLTQ4LDExICs0OCwxMyBAQCBSZW1vdGVMYXllclRyZWVEaXNwbGF5
UmVmcmVzaE1vbml0b3I6On5SZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IoKQog
ICAgICAgICBtX2RyYXdpbmdBcmVhLT53aWxsRGVzdHJveURpc3BsYXlSZWZyZXNoTW9uaXRvcih0
aGlzKTsKIH0KIAotdm9pZCBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnNl
dFByZWZlcnJlZEZyYW1lc1BlclNlY29uZChGcmFtZXNQZXJTZWNvbmQgcHJlZmVycmVkRnJhbWVz
UGVyU2Vjb25kKQordm9pZCBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmFk
anVzdFByZWZlcnJlZEZyYW1lc1BlclNlY29uZChGcmFtZXNQZXJTZWNvbmQgcHJlZmVycmVkRnJh
bWVzUGVyU2Vjb25kKQogewogICAgIGlmIChwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQgPT0gbV9w
cmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQpCiAgICAgICAgIHJldHVybjsKIAorICAgIExPR19XSVRI
X1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVm
cmVzaE1vbml0b3I6OmFkanVzdE1heFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCB0byAiIDw8IHBy
ZWZlcnJlZEZyYW1lc1BlclNlY29uZCk7CisKICAgICBtX3ByZWZlcnJlZEZyYW1lc1BlclNlY29u
ZCA9IHByZWZlcnJlZEZyYW1lc1BlclNlY29uZDsKICAgICBtX2N1cnJlbnRVcGRhdGUgPSB7IDAs
IG1fcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYy5jcHAKaW5kZXggMGIxYTNiNzkzYWMxZWE5YjNiM2YzMThjOTk1MjkxZmQ2MTljOTZlMS4u
NDVmMDM3NDUwMDhlZTcwNjgyMDU1ZjJhNGM2NjBjOTg4NDk0YmMzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1h
Yy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hYy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FuaW1hdGlvbkZyYW1lUmF0ZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheVJlZnJlc2hNb25pdG9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SdW5Mb29wT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFt
Lmg+CkBAIC03MSw3ICs3Miw3IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdGFy
dE5vdGlmaWNhdGlvbk1lY2hhbmlzbSgpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgTE9H
X1dJVEhfU1RSRUFNKERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIkRpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjayAtIHN0YXJ0aW5nIik7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViUHJvY2Vzc1Byb3h5OjpTdGFydERpc3BsYXlMaW5rKG1fb2JzZXJ2ZXJJRCwgZGlzcGxheUlE
KCkpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlN0YXJ0RGlzcGxheUxpbmso
bV9vYnNlcnZlcklELCBkaXNwbGF5SUQoKSwgbWF4Q2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vj
b25kKCkudmFsdWVPcihGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQpKSwgMCk7CiAgICAgaWYgKCFt
X3J1bkxvb3BPYnNlcnZlcikgewogICAgICAgICAvLyBUaGUgUnVuTG9vcE9ic2VydmVyIHJlcGVh
dHMuCiAgICAgICAgIG1fcnVuTG9vcE9ic2VydmVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2
ZXI+KGtDRlJ1bkxvb3BFbnRyeSwgW3RoaXNdKCkgewpAQCAtOTcsNiArOTgsMTMgQEAgdm9pZCBE
aXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKQogICAg
IG1fZGlzcGxheUxpbmtJc0FjdGl2ZSA9IGZhbHNlOwogfQogCit2b2lkIERpc3BsYXlSZWZyZXNo
TW9uaXRvck1hYzo6YWRqdXN0UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKEZyYW1lc1BlclNlY29u
ZCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQpCit7CisgICAgTE9HX1dJVEhfU1RSRUFNKERpc3Bs
YXlMaW5rLCBzdHJlYW0gPDwgIkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6YWRqdXN0UHJlZmVy
cmVkRnJhbWVzUGVyU2Vjb25kIGZvciBkaXNwbGF5IGxpbmsgb24gZGlzcGxheSAiIDw8IGRpc3Bs
YXlJRCgpIDw8ICIgdG8gIiA8PCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQpOworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6U2V0RGlzcGxheUxpbmtQcmVmZXJyZWRGcmFtZXNQZXJTZWNv
bmQobV9vYnNlcnZlcklELCBkaXNwbGF5SUQoKSwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKSwg
MCk7CisKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFjLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmgKaW5kZXggOTYwNGI4OTAzMDNiMGFhY2Vk
ZTVhMDZmZWM0MjdhOWMyMWZjMDc2NC4uYmJmOGQxYmI4Y2U2YzMwMWRjM2VmMjAxOTUzZDgyZmVj
MDVlZGQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaApAQCAtNTAsNiArNTAsOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgc3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20oKSBmaW5hbDsK
ICAgICB2b2lkIHN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKSBmaW5hbDsKIAorICAgIHZvaWQg
YWRqdXN0UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKEZyYW1lc1BlclNlY29uZCkgZmluYWw7CisK
ICAgICBEaXNwbGF5TGlua09ic2VydmVySUQgbV9vYnNlcnZlcklEOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+IG1fcnVuTG9vcE9ic2VydmVyOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>