<?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>257406</bug_id>
          
          <creation_ts>2023-05-26 17:28:55 -0700</creation_ts>
          <short_desc>AX: Cache AXPropertyName::RelativeFrame for AccessibilityScrollbars</short_desc>
          <delta_ts>2023-06-01 02:58:42 -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>Accessibility</component>
          <version>Other</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="Tyler Wilcock">tyler_w</reporter>
          <assigned_to name="Tyler Wilcock">tyler_w</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1958327</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-05-26 17:28:55 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1958328</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-05-26 17:29:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/109912633&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1958329</commentid>
    <comment_count>2</comment_count>
      <attachid>466509</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-05-26 17:34:40 -0700</bug_when>
    <thetext>Created attachment 466509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1958331</commentid>
    <comment_count>3</comment_count>
      <attachid>466510</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-05-26 17:38:00 -0700</bug_when>
    <thetext>Created attachment 466510
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1958904</commentid>
    <comment_count>4</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-05-30 16:43:37 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #3)
&gt; Created attachment 466510 [details]
&gt; Patch

Looks good, just a couple of minor comments.
--- a/Source/WebCore/accessibility/AXGeometryManager.cpp
+++ b/Source/WebCore/accessibility/AXGeometryManager.cpp

-std::optional&lt;IntRect&gt; AXGeometryManager::paintRectForID(AXID axID)
+std::optional&lt;IntRect&gt; AXGeometryManager::cachedRectForID(AXID axID)

Maybe just rectForID ?

-    if (!paintRectChanged)
+    if (!rectChanged)
         return;

     RefPtr tree = AXIsolatedTree::treeForPageID(*m_cache-&gt;pageID());

m_cache-&gt;pageID() can be nullopt, couldn&apos;t it?

+void AXObjectCache::onScrollbarFrameRectChange(const Scrollbar&amp; scrollbar)

I guess we haven&apos;t standardized on using &quot;Change&quot; (as a noun) or Changed (as a past tense verb) in these functions. I can go either way but would be good to be consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1958907</commentid>
    <comment_count>5</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-05-30 16:53:33 -0700</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #4)
&gt; (In reply to Tyler Wilcock from comment #3)
&gt; &gt; Created attachment 466510 [details]
&gt; &gt; Patch
&gt; 
&gt; Looks good, just a couple of minor comments.
&gt; --- a/Source/WebCore/accessibility/AXGeometryManager.cpp
&gt; +++ b/Source/WebCore/accessibility/AXGeometryManager.cpp
&gt; 
&gt; -std::optional&lt;IntRect&gt; AXGeometryManager::paintRectForID(AXID axID)
&gt; +std::optional&lt;IntRect&gt; AXGeometryManager::cachedRectForID(AXID axID)
&gt; 
&gt; Maybe just rectForID ?
I did consider rectForID, but decided against it because in my opinion that name implies that it is the way to get geometry for any object, and in reality that is not the case (only things with cacheable geometry). Plus, having &quot;cached&quot; in the name lends more credence to the fact that the function returns an optional (std::nullopt logically means that there was no &quot;cached&quot; rect).

&gt; -    if (!paintRectChanged)
&gt; +    if (!rectChanged)
&gt;          return;
&gt; 
&gt;      RefPtr tree = AXIsolatedTree::treeForPageID(*m_cache-&gt;pageID());
&gt; 
&gt; m_cache-&gt;pageID() can be nullopt, couldn&apos;t it?
This method should never be called (and is not called) on a cache with no page ID -- we null check m_pageID before calling this in all places. There is an ASSERT at the top of the method verifying / documenting this expectation.

&gt; +void AXObjectCache::onScrollbarFrameRectChange(const Scrollbar&amp; scrollbar)
&gt; 
&gt; I guess we haven&apos;t standardized on using &quot;Change&quot; (as a noun) or Changed (as
&gt; a past tense verb) in these functions. I can go either way but would be good
&gt; to be consistent.
Agreed. I prefer onFooChange vs. onFooChanged. Let&apos;s do that cleanup in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1959075</commentid>
    <comment_count>6</comment_count>
      <attachid>466550</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-05-31 10:36:09 -0700</bug_when>
    <thetext>Created attachment 466550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1959188</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-05-31 16:08:47 -0700</bug_when>
    <thetext>Committed 264762@main (1a3a54995b6f): &lt;https://commits.webkit.org/264762@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 466550.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1959316</commentid>
    <comment_count>8</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2023-06-01 02:58:42 -0700</bug_when>
    <thetext>Fixed !ENABLE(ACCESSIBILITY) build break in https://github.com/WebKit/WebKit/pull/14582.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466509</attachid>
            <date>2023-05-26 17:34:40 -0700</date>
            <delta_ts>2023-05-26 17:59:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-257406-20230526173440.patch</filename>
            <type>text/plain</type>
            <size>14569</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSA2NDUyNzUxNDA5ODdkNDllZTAwYzY2MzkzNjQ4MjUwNjYyOTRjYmZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogRnJpLCAyNiBNYXkgMjAyMyAxNzoyOTowNCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFYOiBD
YWNoZSBBWFByb3BlcnR5TmFtZTo6UmVsYXRpdmVGcmFtZSBmb3IKIEFjY2Vzc2liaWxpdHlTY3Jv
bGxiYXJzIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTc0MDYKIHJk
YXI6Ly9wcm9ibGVtLzEwOTkxMjYzMwoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpUaGlz
IHBhdGNoIGFsc28gZ2VuZXJhbGl6ZXMgYW55IHJlZmVyZW5jZSB0byAicGFpbnQiIGluIEFYR2Vv
bWV0cnlNYW5hZ2VyCnNpbmNlIHdlIGFyZW4ndCByZWx5aW5nIG9uIHBhaW50aW5nIHRvIHVwZGF0
ZSBzY3JvbGxiYXIgZ2VvbWV0cnksIGFuZAp0aGUgZmFjdCB0aGF0IHRoZSBnZW9tZXRyeSBmb3Ig
bW9zdCB0eXBlcyBvZiBvYmplY3RzIGlzIGdlbmVyYXRlZCBieQpwYWludCB0cmF2ZXJzYWwgaXMg
YW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLgoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYR2VvbWV0cnlNYW5hZ2VyLmNwcDoKKFdlYkNvcmU6OkFYR2VvbWV0cnlNYW5hZ2VyOjpjYWNo
ZWRSZWN0Rm9ySUQpOgooV2ViQ29yZTo6QVhHZW9tZXRyeU1hbmFnZXI6OmNhY2hlUmVjdCk6CihX
ZWJDb3JlOjpBWEdlb21ldHJ5TWFuYWdlcjo6cGFpbnRSZWN0Rm9ySUQpOiBEZWxldGVkLgooV2Vi
Q29yZTo6QVhHZW9tZXRyeU1hbmFnZXI6Om9uUGFpbnQpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuaDoKKFdlYkNvcmU6OkFYR2VvbWV0
cnlNYW5hZ2VyOjpyZW1vdmUpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHA6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpvblNjcm9sbGJhckZyYW1lUmVj
dENoYW5nZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpvblBhaW50IGNvbnN0KToKKiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6OnBhaW50UmVjdEZvcklEKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFY
SXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0xvY2FsRnJhbWVWaWV3LmNwcDoKKFdlYkNvcmU6OkxvY2FsRnJhbWVWaWV3OjpzY3JvbGxi
YXJGcmFtZVJlY3RDaGFuZ2VkIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJh
bWVWaWV3Lmg6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKFdl
YkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxiYXJGcmFtZVJlY3RDaGFuZ2VkIGNvbnN0KToK
KiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwOgooV2ViQ29yZTo6U2Nyb2xs
YmFyOjpTY3JvbGxiYXIpOgooV2ViQ29yZTo6U2Nyb2xsYmFyOjpzZXRGcmFtZVJlY3QpOgoqIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oOgotLS0KIC4uLi9hY2Nlc3NpYmlsaXR5
L0FYR2VvbWV0cnlNYW5hZ2VyLmNwcCAgICAgICB8IDMwICsrKysrKysrKy0tLS0tLS0tLS0KIC4u
Li9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuaCB8IDExICsrKystLS0K
IC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgICB8IDE1ICsrKysr
KysrLS0KIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oICB8ICAz
ICstCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwICAgICAgICAgfCAgNyAr
KystLQogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5jcHAgICAgICAgIHwgIDYg
KysrKwogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oICAgICAgICAgIHwgIDEg
KwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCAgICAgIHwgIDEgKwog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCAgICAgICAgIHwgIDkgKysrKyst
CiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaCAgICAgICAgICAgfCAgMyArLQog
MTAgZmlsZXMgY2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWEdlb21ldHJ5TWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYR2VvbWV0cnlNYW5hZ2VyLmNwcApp
bmRleCBmZTg5M2QzZjU4NjYuLmM1OTg0YTY2ZGJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWEdlb21ldHJ5TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWEdlb21ldHJ5TWFuYWdlci5jcHAKQEAgLTU1LDE1ICs1NSwxNSBA
QCBBWEdlb21ldHJ5TWFuYWdlcjo6fkFYR2VvbWV0cnlNYW5hZ2VyKCkKICAgICAgICAgbV91cGRh
dGVPYmplY3RSZWdpb25zVGltZXIuc3RvcCgpOwogfQogCi1zdGQ6Om9wdGlvbmFsPEludFJlY3Q+
IEFYR2VvbWV0cnlNYW5hZ2VyOjpwYWludFJlY3RGb3JJRChBWElEIGF4SUQpCitzdGQ6Om9wdGlv
bmFsPEludFJlY3Q+IEFYR2VvbWV0cnlNYW5hZ2VyOjpjYWNoZWRSZWN0Rm9ySUQoQVhJRCBheElE
KQogewotICAgIGF1dG8gcGFpbnRSZWN0SXRlcmF0b3IgPSBtX3BhaW50UmVjdHMuZmluZChheElE
KTsKLSAgICBpZiAocGFpbnRSZWN0SXRlcmF0b3IgIT0gbV9wYWludFJlY3RzLmVuZCgpKQotICAg
ICAgICByZXR1cm4gcGFpbnRSZWN0SXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8gcmVjdEl0ZXJh
dG9yID0gbV9jYWNoZWRSZWN0cy5maW5kKGF4SUQpOworICAgIGlmIChyZWN0SXRlcmF0b3IgIT0g
bV9jYWNoZWRSZWN0cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHJlY3RJdGVyYXRvci0+dmFsdWU7
CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotdm9pZCBBWEdlb21ldHJ5TWFuYWdlcjo6
b25QYWludChBWElEIGF4SUQsIEludFJlY3QmJiBwYWludFJlY3QpCit2b2lkIEFYR2VvbWV0cnlN
YW5hZ2VyOjpjYWNoZVJlY3QoQVhJRCBheElELCBJbnRSZWN0JiYgcmVjdCkKIHsKICAgICAvLyBX
ZSBzaG91bGRuJ3QgY2FsbCB0aGlzIG1ldGhvZCBvbiBhIGdlb21ldHJ5IG1hbmFnZXIgdGhhdCBo
YXMgbm8gcGFnZSBJRC4KICAgICBBU1NFUlQobV9jYWNoZS0+cGFnZUlEKCkpOwpAQCAtNzEsMjUg
KzcxLDI1IEBAIHZvaWQgQVhHZW9tZXRyeU1hbmFnZXI6Om9uUGFpbnQoQVhJRCBheElELCBJbnRS
ZWN0JiYgcGFpbnRSZWN0KQogCiAgICAgaWYgKCFheElELmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuOwotICAgIGF1dG8gcGFpbnRSZWN0SXRlcmF0b3IgPSBtX3BhaW50UmVjdHMuZmluZChheElE
KTsKKyAgICBhdXRvIHJlY3RJdGVyYXRvciA9IG1fY2FjaGVkUmVjdHMuZmluZChheElEKTsKIAot
ICAgIGJvb2wgcGFpbnRSZWN0Q2hhbmdlZCA9IGZhbHNlOwotICAgIGlmIChwYWludFJlY3RJdGVy
YXRvciAhPSBtX3BhaW50UmVjdHMuZW5kKCkpIHsKLSAgICAgICAgcGFpbnRSZWN0Q2hhbmdlZCA9
IHBhaW50UmVjdEl0ZXJhdG9yLT52YWx1ZSAhPSBwYWludFJlY3Q7Ci0gICAgICAgIGlmIChwYWlu
dFJlY3RDaGFuZ2VkKQotICAgICAgICAgICAgcGFpbnRSZWN0SXRlcmF0b3ItPnZhbHVlID0gcGFp
bnRSZWN0OworICAgIGJvb2wgcmVjdENoYW5nZWQgPSBmYWxzZTsKKyAgICBpZiAocmVjdEl0ZXJh
dG9yICE9IG1fY2FjaGVkUmVjdHMuZW5kKCkpIHsKKyAgICAgICAgcmVjdENoYW5nZWQgPSByZWN0
SXRlcmF0b3ItPnZhbHVlICE9IHJlY3Q7CisgICAgICAgIGlmIChyZWN0Q2hhbmdlZCkKKyAgICAg
ICAgICAgIHJlY3RJdGVyYXRvci0+dmFsdWUgPSByZWN0OwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IHBhaW50UmVjdENoYW5nZWQgPSB0cnVlOwotICAgICAgICBtX3BhaW50UmVjdHMuc2V0KGF4SUQs
IHBhaW50UmVjdCk7CisgICAgICAgIHJlY3RDaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgbV9jYWNo
ZWRSZWN0cy5zZXQoYXhJRCwgcmVjdCk7CiAgICAgfQogCi0gICAgaWYgKCFwYWludFJlY3RDaGFu
Z2VkKQorICAgIGlmICghcmVjdENoYW5nZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0
ciB0cmVlID0gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdlSUQoKm1fY2FjaGUtPnBhZ2VJRCgp
KTsKICAgICBpZiAoIXRyZWUpCiAgICAgICAgIHJldHVybjsKLSAgICB0cmVlLT51cGRhdGVGcmFt
ZShheElELCBXVEZNb3ZlKHBhaW50UmVjdCkpOworICAgIHRyZWUtPnVwZGF0ZUZyYW1lKGF4SUQs
IFdURk1vdmUocmVjdCkpOwogfQogCiB2b2lkIEFYR2VvbWV0cnlNYW5hZ2VyOjpzY2hlZHVsZU9i
amVjdFJlZ2lvbnNVcGRhdGUoYm9vbCBzY2hlZHVsZUltbWVkaWF0ZWx5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWEdlb21ldHJ5TWFuYWdlci5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWEdlb21ldHJ5TWFuYWdlci5oCmluZGV4IGE3N2NjYTc4
MDFmYS4uODY5ZmY3OGIyMGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYR2VvbWV0cnlNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWEdlb21ldHJ5TWFuYWdlci5oCkBAIC01MCwxMSArNTAsMTEgQEAgcHVibGljOgogICAgIHZv
aWQgd2lsbFVwZGF0ZU9iamVjdFJlZ2lvbnMoKTsKICAgICB2b2lkIHNjaGVkdWxlT2JqZWN0UmVn
aW9uc1VwZGF0ZShib29sIC8qIHNjaGVkdWxlSW1tZWRpYXRlbHkgKi8pOwogCi0gICAgdm9pZCBv
blBhaW50KEFYSUQsIEludFJlY3QmJik7Ci0gICAgLy8gc3RkOjpudWxsb3B0IGlmIHRoZXJlIGlz
IG5vIHBhaW50IHJlY3QgZm9yIHRoZSBnaXZlbiBJRCAoaS5lLiBiZWNhdXNlIGl0IGhhc24ndCB5
ZXQgYmVlbiBwYWludGVkLCBvciBjYW5ub3QgYmUgcGFpbnRlZCBhdCBhbGwpLgotICAgIHN0ZDo6
b3B0aW9uYWw8SW50UmVjdD4gcGFpbnRSZWN0Rm9ySUQoQVhJRCk7CisgICAgdm9pZCBjYWNoZVJl
Y3QoQVhJRCwgSW50UmVjdCYmKTsKKyAgICAvLyBzdGQ6Om51bGxvcHQgaWYgdGhlcmUgaXMgbm8g
Y2FjaGVkIHJlY3QgZm9yIHRoZSBnaXZlbiBJRCAoaS5lLiBiZWNhdXNlIGl0IGhhc24ndCBiZWVu
IGNhY2hlZCB5ZXQgdmlhIHBhaW50IG9yIG90aGVyd2lzZSwgb3IgY2Fubm90IGJlIHBhaW50ZWQg
LyBjYWNoZWQgYXQgYWxsKS4KKyAgICBzdGQ6Om9wdGlvbmFsPEludFJlY3Q+IGNhY2hlZFJlY3RG
b3JJRChBWElEKTsKIAotICAgIHZvaWQgcmVtb3ZlKEFYSUQgYXhJRCkgeyBtX3BhaW50UmVjdHMu
cmVtb3ZlKGF4SUQpOyB9CisgICAgdm9pZCByZW1vdmUoQVhJRCBheElEKSB7IG1fY2FjaGVkUmVj
dHMucmVtb3ZlKGF4SUQpOyB9CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBpbml0aWFs
aXplUHJpbWFyeVNjcmVlblJlY3QoKTsKQEAgLTY3LDggKzY3LDcgQEAgcHJpdmF0ZToKIAogICAg
IC8vIFRoZSBjYWNoZSB0aGF0IG93bnMgdGhpcyBpbnN0YW5jZS4KICAgICBXZWFrUHRyPEFYT2Jq
ZWN0Q2FjaGU+IG1fY2FjaGU7Ci0gICAgLy8gQm91bmRzIGNvbXB1dGVkIGJ5IFBhaW50UGhhc2U6
OkFjY2Vzc2liaWxpdHkuCi0gICAgSGFzaE1hcDxBWElELCBJbnRSZWN0PiBtX3BhaW50UmVjdHM7
CisgICAgSGFzaE1hcDxBWElELCBJbnRSZWN0PiBtX2NhY2hlZFJlY3RzOwogICAgIFRpbWVyIG1f
dXBkYXRlT2JqZWN0UmVnaW9uc1RpbWVyOwogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggNDY1YzA3YmMz
ZGUxLi44Y2FkNTgzNzc1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcApAQCAtMTUwNCw2ICsxNTA0LDE3IEBAIHN0YXRpYyBib29sIGlzQVJJ
QVRhYmxlQ2VsbChOb2RlKiBub2RlKQogICAgIHJldHVybiBub2RlICYmIChub2RlSGFzUm9sZShu
b2RlLCAiZ3JpZGNlbGwiX3MpIHx8IG5vZGVIYXNSb2xlKG5vZGUsICJjZWxsIl9zKSB8fCBub2Rl
SGFzUm9sZShub2RlLCAiY29sdW1uaGVhZGVyIl9zKSB8fCBub2RlSGFzUm9sZShub2RlLCAicm93
aGVhZGVyIl9zKSk7CiB9CiAKK3ZvaWQgQVhPYmplY3RDYWNoZTo6b25TY3JvbGxiYXJGcmFtZVJl
Y3RDaGFuZ2UoY29uc3QgU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCit7CisjaWYgRU5BQkxFKEFDQ0VT
U0lCSUxJVFlfSVNPTEFURURfVFJFRSkKKyAgICBpZiAoIW1fcGFnZUlEIHx8ICFpc0lzb2xhdGVk
VHJlZUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIGF4U2Nyb2xs
YmFyID0gZ2V0KGNvbnN0X2Nhc3Q8U2Nyb2xsYmFyKj4oJnNjcm9sbGJhcikpKQorICAgICAgICBt
X2dlb21ldHJ5TWFuYWdlci0+Y2FjaGVSZWN0KGF4U2Nyb2xsYmFyLT5vYmplY3RJRCgpLCBlbmNs
b3NpbmdJbnRSZWN0KGF4U2Nyb2xsYmFyLT5yZWxhdGl2ZUZyYW1lKCkpKTsKKyNlbmRpZgorfQor
CiB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uU2VsZWN0ZWRDaGFuZ2VkKE5vZGUqIG5vZGUpCiB7CiAg
ICAgaWYgKGlzQVJJQVRhYmxlQ2VsbChub2RlKSkKQEAgLTM4ODAsMTQgKzM4OTEsMTQgQEAgdm9p
ZCBBWE9iamVjdENhY2hlOjpvblBhaW50KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIElu
dFJlY3QmJiBwYWludFJlY3QpIGMKIHsKICAgICBpZiAoIW1fcGFnZUlEKQogICAgICAgICByZXR1
cm47Ci0gICAgbV9nZW9tZXRyeU1hbmFnZXItPm9uUGFpbnQobV9yZW5kZXJPYmplY3RNYXBwaW5n
LmdldChjb25zdF9jYXN0PFJlbmRlck9iamVjdCo+KCZyZW5kZXJlcikpLCBXVEZNb3ZlKHBhaW50
UmVjdCkpOworICAgIG1fZ2VvbWV0cnlNYW5hZ2VyLT5jYWNoZVJlY3QobV9yZW5kZXJPYmplY3RN
YXBwaW5nLmdldChjb25zdF9jYXN0PFJlbmRlck9iamVjdCo+KCZyZW5kZXJlcikpLCBXVEZNb3Zl
KHBhaW50UmVjdCkpOwogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uUGFpbnQoY29uc3QgV2lk
Z2V0JiB3aWRnZXQsIEludFJlY3QmJiBwYWludFJlY3QpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3Bh
Z2VJRCkKICAgICAgICAgcmV0dXJuOwotICAgIG1fZ2VvbWV0cnlNYW5hZ2VyLT5vblBhaW50KG1f
d2lkZ2V0T2JqZWN0TWFwcGluZy5nZXQoY29uc3RfY2FzdDxXaWRnZXQqPigmd2lkZ2V0KSksIFdU
Rk1vdmUocGFpbnRSZWN0KSk7CisgICAgbV9nZW9tZXRyeU1hbmFnZXItPmNhY2hlUmVjdChtX3dp
ZGdldE9iamVjdE1hcHBpbmcuZ2V0KGNvbnN0X2Nhc3Q8V2lkZ2V0Kj4oJndpZGdldCkpLCBXVEZN
b3ZlKHBhaW50UmVjdCkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xB
VEVEX1RSRUUpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmgKaW5kZXggNDgzMTYzZGZmMDQ1Li43OGFhYjI3MDdlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC01Niw2ICs1Niw3IEBAIGNsYXNzIFBh
Z2U7CiBjbGFzcyBSZW5kZXJCbG9jazsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRl
clRleHQ7CitjbGFzcyBTY3JvbGxiYXI7CiBjbGFzcyBTY3JvbGxWaWV3OwogY2xhc3MgVmlzaWJs
ZVBvc2l0aW9uOwogY2xhc3MgV2lkZ2V0OwpAQCAtMTgxLDYgKzE4Miw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChSZW5kZXJPYmplY3QqLCBSZW5kZXJPYmplY3QqIG5ld0No
aWxkID0gbnVsbHB0cik7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9i
amVjdCopOwogICAgIHZvaWQgb25Gb2N1c0NoYW5nZShOb2RlKiBvbGRGb2N1c2VkTm9kZSwgTm9k
ZSogbmV3Rm9jdXNlZE5vZGUpOworICAgIHZvaWQgb25TY3JvbGxiYXJGcmFtZVJlY3RDaGFuZ2Uo
Y29uc3QgU2Nyb2xsYmFyJik7CiAgICAgdm9pZCBvblNlbGVjdGVkQ2hhbmdlZChOb2RlKik7CiAg
ICAgdm9pZCBvblRleHRTZWN1cml0eUNoYW5nZWQoSFRNTElucHV0RWxlbWVudCYpOwogICAgIHZv
aWQgb25UaXRsZUNoYW5nZShEb2N1bWVudCYpOwpAQCAtMjUyLDcgKzI1NCw2IEBAIHB1YmxpYzoK
ICAgICBWZWN0b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+IG9iamVjdHNGb3JJRHMoY29uc3QgVmVj
dG9yPEFYSUQ+JikgY29uc3Q7CiAKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9U
UkVFKQotICAgIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4gcGFpbnRSZWN0Rm9ySUQoQVhJRCBheElE
KSB7IHJldHVybiBtX2dlb21ldHJ5TWFuYWdlci0+cGFpbnRSZWN0Rm9ySUQoYXhJRCk7IH0KICAg
ICB2b2lkIG9uUGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0JiwgSW50UmVjdCYmKSBjb25zdDsKICAg
ICB2b2lkIG9uUGFpbnQoY29uc3QgV2lkZ2V0JiwgSW50UmVjdCYmKSBjb25zdDsKICNlbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IDQwOTQ2Y2NlMjY3OS4uMjg4ZWU0NjU0ZTli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcApAQCAtMTY5LDExICsxNjksMTIgQEAgdm9p
ZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJvcGVydGllcyhjb25zdCBSZWY8QWNjZXNz
aWJpbGl0eU9iamVjdD4mIGF4T2IKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QnJh
aWxsZUxhYmVsLCBvYmplY3QuYnJhaWxsZUxhYmVsKCkuaXNvbGF0ZWRDb3B5KCkpOwogCiAgICAg
UmVmUHRyIGdlb21ldHJ5TWFuYWdlciA9IHRyZWUoKS0+Z2VvbWV0cnlNYW5hZ2VyKCk7Ci0gICAg
c3RkOjpvcHRpb25hbCBmcmFtZSA9IGdlb21ldHJ5TWFuYWdlciA/IGdlb21ldHJ5TWFuYWdlci0+
cGFpbnRSZWN0Rm9ySUQob2JqZWN0Lm9iamVjdElEKCkpIDogc3RkOjpudWxsb3B0OworICAgIHN0
ZDo6b3B0aW9uYWwgZnJhbWUgPSBnZW9tZXRyeU1hbmFnZXIgPyBnZW9tZXRyeU1hbmFnZXItPmNh
Y2hlZFJlY3RGb3JJRChvYmplY3Qub2JqZWN0SUQoKSkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KGZyYW1lKQogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6UmVsYXRpdmVGcmFt
ZSwgV1RGTW92ZSgqZnJhbWUpKTsKLSAgICBlbHNlIGlmIChvYmplY3QuaXNTY3JvbGxWaWV3KCkg
fHwgb2JqZWN0LmlzV2ViQXJlYSgpKSB7Ci0gICAgICAgIC8vIFRoZSBHZW9tZXRyeU1hbmFnZXIg
ZG9lcyBub3QgaGF2ZSBhIHJlbGF0aXZlIGZyYW1lIGZvciB0aGUgU2Nyb2xsVmlldyBvciB0aGUg
V2ViQXJlYSB5ZXQuIFdlIG5lZWQgdG8gZ2V0IGl0IGZyb20gdGhlIGxpdmUgb2JqZWN0IHNvIHRo
YXQgd2UgZG9uJ3QgbmVlZCB0byBoaXQgdGhlIG1haW4gdGhyZWFkIGluIHRoZSBjYXNlIGEgcmVx
dWVzdCBjb21lcyBpbiB3aGlsZSB0aGUgd2hvbGUgaXNvbGF0ZWQgdHJlZSBpcyBiZWluZyBidWls
dC4KKyAgICBlbHNlIGlmIChvYmplY3QuaXNTY3JvbGxWaWV3KCkgfHwgb2JqZWN0LmlzV2ViQXJl
YSgpIHx8IG9iamVjdC5pc1Njcm9sbGJhcigpKSB7CisgICAgICAgIC8vIFRoZSBHZW9tZXRyeU1h
bmFnZXIgZG9lcyBub3QgaGF2ZSBhIHJlbGF0aXZlIGZyYW1lIGZvciBTY3JvbGxWaWV3cywgV2Vi
QXJlYXMsIG9yIHNjcm9sbGJhcnMgeWV0LiBXZSBuZWVkIHRvIGdldCBpdCBmcm9tIHRoZQorICAg
ICAgICAvLyBsaXZlIG9iamVjdCBzbyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gaGl0IHRoZSBtYWlu
IHRocmVhZCBpbiB0aGUgY2FzZSBhIHJlcXVlc3QgY29tZXMgaW4gd2hpbGUgdGhlIHdob2xlIGlz
b2xhdGVkIHRyZWUgaXMgYmVpbmcgYnVpbHQuCiAgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpSZWxhdGl2ZUZyYW1lLCBlbmNsb3NpbmdJbnRSZWN0KG9iamVjdC5yZWxhdGl2ZUZy
YW1lKCkpKTsKICAgICB9IGVsc2UgaWYgKCFvYmplY3QucmVuZGVyZXIoKSAmJiBvYmplY3Qubm9k
ZSgpICYmIGlzPEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0PihvYmplY3QpKSB7CiAgICAgICAgIC8v
IFRoZSBmcmFtZSBvZiBub2RlLW9ubHkgQVggb2JqZWN0cyBpcyBtYWRlIHVwIG9mIHRoZWlyIGNo
aWxkcmVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcAppbmRleCAyNWZiMDFl
MzY0ZWIuLjg4ZmEzZGU2NjZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2Nh
bEZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5j
cHAKQEAgLTU4MzgsNiArNTgzOCwxMiBAQCB2b2lkIExvY2FsRnJhbWVWaWV3Ojp3aWxsUmVtb3Zl
U2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJPcmllbnRhdAogICAgIH0K
IH0KIAordm9pZCBMb2NhbEZyYW1lVmlldzo6c2Nyb2xsYmFyRnJhbWVSZWN0Q2hhbmdlZChjb25z
dCBTY3JvbGxiYXImIHNjcm9sbGJhcikgY29uc3QKK3sKKyAgICBpZiAoYXV0byogY2FjaGUgPSBh
eE9iamVjdENhY2hlKCkpCisgICAgICAgIGNhY2hlLT5vblNjcm9sbGJhckZyYW1lUmVjdENoYW5n
ZShzY3JvbGxiYXIpOworfQorCiB2b2lkIExvY2FsRnJhbWVWaWV3OjphZGRQYWludFBlbmRpbmdN
aWxlc3RvbmVzKE9wdGlvblNldDxMYXlvdXRNaWxlc3RvbmU+IG1pbGVzdG9uZXMpCiB7CiAgICAg
bV9taWxlc3RvbmVzUGVuZGluZ1BhaW50LmFkZChtaWxlc3RvbmVzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TG9jYWxGcmFtZVZpZXcuaAppbmRleCAxMmEzMzU0MmI4NDkuLjI1YjY2NjQ2NDBmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuaApAQCAtODQyLDYgKzg0Miw3IEBAIHByaXZhdGU6
CiAgICAgLy8gT3ZlcnJpZGUgc2Nyb2xsYmFyIG5vdGlmaWNhdGlvbnMgdG8gdXBkYXRlIHRoZSBB
WE9iamVjdCBjYWNoZS4KICAgICB2b2lkIGRpZEFkZFNjcm9sbGJhcihTY3JvbGxiYXIqLCBTY3Jv
bGxiYXJPcmllbnRhdGlvbikgZmluYWw7CiAgICAgdm9pZCB3aWxsUmVtb3ZlU2Nyb2xsYmFyKFNj
cm9sbGJhciosIFNjcm9sbGJhck9yaWVudGF0aW9uKSBmaW5hbDsKKyAgICB2b2lkIHNjcm9sbGJh
ckZyYW1lUmVjdENoYW5nZWQoY29uc3QgU2Nyb2xsYmFyJikgY29uc3QgZmluYWw7CiAKICAgICBJ
bnRTaXplIHNpemVGb3JSZXNpemVFdmVudCgpIGNvbnN0OwogICAgIHZvaWQgc2NoZWR1bGVSZXNp
emVFdmVudElmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
aAppbmRleCAyMDU3YmVjNDE3MDIuLmNlMjAzZjY0NTAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC0yMzMsNiArMjMzLDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBu
dWxscHRyOyB9CiAgICAgdmlydHVhbCBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJGcmFtZVJl
Y3RDaGFuZ2VkKGNvbnN0IFNjcm9sbGJhciYpIGNvbnN0IHsgfTsKIAogICAgIFNjcm9sbGJhciog
c2Nyb2xsYmFyRm9yRGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKaW5kZXggODNkMzZhMGFlNzA5
Li45ZGQxMzIxMGJlMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGJhci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkxv
Y2FsRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisjaW5jbHVk
ZSAiUmVnaW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCiAjaW5jbHVk
ZSAiU2Nyb2xsVmlldy5oIgogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCkBAIC04OCw3ICs4
OSw3IEBAIFNjcm9sbGJhcjo6U2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJl
YSwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50CiAgICAgLy8gc2Nyb2xsYmFyIHRoaWNrbmVz
cyBhbmQgdXNlIGl0IHdoZW4gc2l6aW5nIHNjcm9sbGJhcnMgKHJhdGhlciB0aGFuIGxlYXZpbmcg
b25lIGRpbWVuc2lvbiBvZiB0aGUgc2Nyb2xsYmFyCiAgICAgLy8gYWxvbmUgd2hlbiBzaXppbmcp
LgogICAgIGludCB0aGlja25lc3MgPSB0aGVtZSgpLnNjcm9sbGJhclRoaWNrbmVzcyhjb250cm9s
U2l6ZSwgbV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxiYXJXaWR0aFN0eWxlKCkpOwotICAgIFdpZGdl
dDo6c2V0RnJhbWVSZWN0KEludFJlY3QoMCwgMCwgdGhpY2tuZXNzLCB0aGlja25lc3MpKTsKKyAg
ICBzZXRGcmFtZVJlY3QoSW50UmVjdCgwLCAwLCB0aGlja25lc3MsIHRoaWNrbmVzcykpOwogCiAg
ICAgbV9jdXJyZW50UG9zID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG9mZnNldEZvck9yaWVudGF0aW9u
KG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsT2Zmc2V0KCksIG1fb3JpZW50YXRpb24pKTsKIH0KQEAg
LTE2MCw2ICsxNjEsMTIgQEAgdm9pZCBTY3JvbGxiYXI6OnVwZGF0ZVRodW1iUHJvcG9ydGlvbigp
CiAgICAgdXBkYXRlVGh1bWIoKTsKIH0KIAordm9pZCBTY3JvbGxiYXI6OnNldEZyYW1lUmVjdChj
b25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIFdpZGdldDo6c2V0RnJhbWVSZWN0KHJlY3QpOwor
ICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsYmFyRnJhbWVSZWN0Q2hhbmdlZCgqdGhpcyk7Cit9
CisKIHZvaWQgU2Nyb2xsYmFyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRhbWFnZVJlY3QsIFdpZGdldDo6U2VjdXJpdHlPcmlnaW5QYWludFBvbGljeSwg
UmVnaW9uQ29udGV4dCopCiB7CiAgICAgaWYgKGNvbnRleHQuaW52YWxpZGF0aW5nQ29udHJvbFRp
bnRzKCkgJiYgdGhlbWUoKS5zdXBwb3J0c0NvbnRyb2xUaW50cygpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGJhci5oCmluZGV4IGRiNWU5Y2FlOTlmYy4uZDRlMzJhMjA3ZmQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaApAQCAtNjgsNyArNjgsOCBAQCBwdWJsaWM6CiAgICAg
aW50IHRvdGFsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXplOyB9CiAgICAgaW50IG1h
eGltdW0oKSBjb25zdCB7IHJldHVybiBtX3RvdGFsU2l6ZSAtIG1fdmlzaWJsZVNpemU7IH0KICAg
ICBTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dHJvbFNpemU7IH0KLSAgICAKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RnJhbWVSZWN0
KGNvbnN0IEludFJlY3QmKSBmaW5hbDsKICAgICBpbnQgb2NjdXBpZWRXaWR0aCgpIGNvbnN0Owog
ICAgIGludCBvY2N1cGllZEhlaWdodCgpIGNvbnN0OwogCg==
</data>
<flag name="commit-queue"
          id="494172"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466510</attachid>
            <date>2023-05-26 17:38:00 -0700</date>
            <delta_ts>2023-05-31 10:36:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-257406-20230526173759.patch</filename>
            <type>text/plain</type>
            <size>14607</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSA0MzU4MGU5NGJiYjVjYzgxZjBiNmExNTk3NTk1YzlhMTY5Y2RlZTEwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogRnJpLCAyNiBNYXkgMjAyMyAxNzoyOTowNCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFYOiBD
YWNoZSBBWFByb3BlcnR5TmFtZTo6UmVsYXRpdmVGcmFtZSBmb3IKIEFjY2Vzc2liaWxpdHlTY3Jv
bGxiYXJzIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTc0MDYKIHJk
YXI6Ly9wcm9ibGVtLzEwOTkxMjYzMwoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpUaGlz
IHBhdGNoIGFsc28gZ2VuZXJhbGl6ZXMgYW55IHJlZmVyZW5jZSB0byAicGFpbnQiIGluIEFYR2Vv
bWV0cnlNYW5hZ2VyCnNpbmNlIHdlIGFyZW4ndCByZWx5aW5nIG9uIHBhaW50aW5nIHRvIHVwZGF0
ZSBzY3JvbGxiYXIgZ2VvbWV0cnksIGFuZAp0aGUgZmFjdCB0aGF0IHRoZSBnZW9tZXRyeSBmb3Ig
bW9zdCB0eXBlcyBvZiBvYmplY3RzIGlzIGdlbmVyYXRlZCBieQpwYWludCB0cmF2ZXJzYWwgaXMg
YW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLgoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYR2VvbWV0cnlNYW5hZ2VyLmNwcDoKKFdlYkNvcmU6OkFYR2VvbWV0cnlNYW5hZ2VyOjpjYWNo
ZWRSZWN0Rm9ySUQpOgooV2ViQ29yZTo6QVhHZW9tZXRyeU1hbmFnZXI6OmNhY2hlUmVjdCk6CihX
ZWJDb3JlOjpBWEdlb21ldHJ5TWFuYWdlcjo6cGFpbnRSZWN0Rm9ySUQpOiBEZWxldGVkLgooV2Vi
Q29yZTo6QVhHZW9tZXRyeU1hbmFnZXI6Om9uUGFpbnQpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuaDoKKFdlYkNvcmU6OkFYR2VvbWV0
cnlNYW5hZ2VyOjpyZW1vdmUpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHA6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpvblNjcm9sbGJhckZyYW1lUmVj
dENoYW5nZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpvblBhaW50IGNvbnN0KToKKiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6OnBhaW50UmVjdEZvcklEKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFY
SXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0xvY2FsRnJhbWVWaWV3LmNwcDoKKFdlYkNvcmU6OkxvY2FsRnJhbWVWaWV3OjpzY3JvbGxi
YXJGcmFtZVJlY3RDaGFuZ2VkIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJh
bWVWaWV3Lmg6CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDoKKFdl
YkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxiYXJGcmFtZVJlY3RDaGFuZ2VkIGNvbnN0KToK
KiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwOgooV2ViQ29yZTo6U2Nyb2xs
YmFyOjpTY3JvbGxiYXIpOgooV2ViQ29yZTo6U2Nyb2xsYmFyOjpzZXRGcmFtZVJlY3QpOgoqIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oOgotLS0KIC4uLi9hY2Nlc3NpYmlsaXR5
L0FYR2VvbWV0cnlNYW5hZ2VyLmNwcCAgICAgICB8IDMwICsrKysrKysrKy0tLS0tLS0tLS0KIC4u
Li9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuaCB8IDExICsrKystLS0K
IC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgICB8IDE3ICsrKysr
KysrKy0tCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCAgfCAg
MyArLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCAgICAgICAgIHwgIDcg
KysrLS0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuY3BwICAgICAgICB8ICA2
ICsrKysKIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuaCAgICAgICAgICB8ICAx
ICsKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggICAgICB8ICAxICsK
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAgICAgICAgICB8ICA5ICsrKysr
LQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmggICAgICAgICAgIHwgIDMgKy0K
IDEwIGZpbGVzIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWEdlb21ldHJ5TWFuYWdlci5jcHAK
aW5kZXggZmU4OTNkM2Y1ODY2Li5jNTk4NGE2NmRiZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuY3BwCkBAIC01NSwxNSArNTUsMTUg
QEAgQVhHZW9tZXRyeU1hbmFnZXI6On5BWEdlb21ldHJ5TWFuYWdlcigpCiAgICAgICAgIG1fdXBk
YXRlT2JqZWN0UmVnaW9uc1RpbWVyLnN0b3AoKTsKIH0KIAotc3RkOjpvcHRpb25hbDxJbnRSZWN0
PiBBWEdlb21ldHJ5TWFuYWdlcjo6cGFpbnRSZWN0Rm9ySUQoQVhJRCBheElEKQorc3RkOjpvcHRp
b25hbDxJbnRSZWN0PiBBWEdlb21ldHJ5TWFuYWdlcjo6Y2FjaGVkUmVjdEZvcklEKEFYSUQgYXhJ
RCkKIHsKLSAgICBhdXRvIHBhaW50UmVjdEl0ZXJhdG9yID0gbV9wYWludFJlY3RzLmZpbmQoYXhJ
RCk7Ci0gICAgaWYgKHBhaW50UmVjdEl0ZXJhdG9yICE9IG1fcGFpbnRSZWN0cy5lbmQoKSkKLSAg
ICAgICAgcmV0dXJuIHBhaW50UmVjdEl0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRvIHJlY3RJdGVy
YXRvciA9IG1fY2FjaGVkUmVjdHMuZmluZChheElEKTsKKyAgICBpZiAocmVjdEl0ZXJhdG9yICE9
IG1fY2FjaGVkUmVjdHMuZW5kKCkpCisgICAgICAgIHJldHVybiByZWN0SXRlcmF0b3ItPnZhbHVl
OwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLXZvaWQgQVhHZW9tZXRyeU1hbmFnZXI6
Om9uUGFpbnQoQVhJRCBheElELCBJbnRSZWN0JiYgcGFpbnRSZWN0KQordm9pZCBBWEdlb21ldHJ5
TWFuYWdlcjo6Y2FjaGVSZWN0KEFYSUQgYXhJRCwgSW50UmVjdCYmIHJlY3QpCiB7CiAgICAgLy8g
V2Ugc2hvdWxkbid0IGNhbGwgdGhpcyBtZXRob2Qgb24gYSBnZW9tZXRyeSBtYW5hZ2VyIHRoYXQg
aGFzIG5vIHBhZ2UgSUQuCiAgICAgQVNTRVJUKG1fY2FjaGUtPnBhZ2VJRCgpKTsKQEAgLTcxLDI1
ICs3MSwyNSBAQCB2b2lkIEFYR2VvbWV0cnlNYW5hZ2VyOjpvblBhaW50KEFYSUQgYXhJRCwgSW50
UmVjdCYmIHBhaW50UmVjdCkKIAogICAgIGlmICghYXhJRC5pc1ZhbGlkKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBhdXRvIHBhaW50UmVjdEl0ZXJhdG9yID0gbV9wYWludFJlY3RzLmZpbmQoYXhJ
RCk7CisgICAgYXV0byByZWN0SXRlcmF0b3IgPSBtX2NhY2hlZFJlY3RzLmZpbmQoYXhJRCk7CiAK
LSAgICBib29sIHBhaW50UmVjdENoYW5nZWQgPSBmYWxzZTsKLSAgICBpZiAocGFpbnRSZWN0SXRl
cmF0b3IgIT0gbV9wYWludFJlY3RzLmVuZCgpKSB7Ci0gICAgICAgIHBhaW50UmVjdENoYW5nZWQg
PSBwYWludFJlY3RJdGVyYXRvci0+dmFsdWUgIT0gcGFpbnRSZWN0OwotICAgICAgICBpZiAocGFp
bnRSZWN0Q2hhbmdlZCkKLSAgICAgICAgICAgIHBhaW50UmVjdEl0ZXJhdG9yLT52YWx1ZSA9IHBh
aW50UmVjdDsKKyAgICBib29sIHJlY3RDaGFuZ2VkID0gZmFsc2U7CisgICAgaWYgKHJlY3RJdGVy
YXRvciAhPSBtX2NhY2hlZFJlY3RzLmVuZCgpKSB7CisgICAgICAgIHJlY3RDaGFuZ2VkID0gcmVj
dEl0ZXJhdG9yLT52YWx1ZSAhPSByZWN0OworICAgICAgICBpZiAocmVjdENoYW5nZWQpCisgICAg
ICAgICAgICByZWN0SXRlcmF0b3ItPnZhbHVlID0gcmVjdDsKICAgICB9IGVsc2UgewotICAgICAg
ICBwYWludFJlY3RDaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgbV9wYWludFJlY3RzLnNldChheElE
LCBwYWludFJlY3QpOworICAgICAgICByZWN0Q2hhbmdlZCA9IHRydWU7CisgICAgICAgIG1fY2Fj
aGVkUmVjdHMuc2V0KGF4SUQsIHJlY3QpOwogICAgIH0KIAotICAgIGlmICghcGFpbnRSZWN0Q2hh
bmdlZCkKKyAgICBpZiAoIXJlY3RDaGFuZ2VkKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQ
dHIgdHJlZSA9IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKCptX2NhY2hlLT5wYWdlSUQo
KSk7CiAgICAgaWYgKCF0cmVlKQogICAgICAgICByZXR1cm47Ci0gICAgdHJlZS0+dXBkYXRlRnJh
bWUoYXhJRCwgV1RGTW92ZShwYWludFJlY3QpKTsKKyAgICB0cmVlLT51cGRhdGVGcmFtZShheElE
LCBXVEZNb3ZlKHJlY3QpKTsKIH0KIAogdm9pZCBBWEdlb21ldHJ5TWFuYWdlcjo6c2NoZWR1bGVP
YmplY3RSZWdpb25zVXBkYXRlKGJvb2wgc2NoZWR1bGVJbW1lZGlhdGVseSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuaAppbmRleCBhNzdjY2E3
ODAxZmEuLjg2OWZmNzhiMjBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWEdlb21ldHJ5TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhHZW9tZXRyeU1hbmFnZXIuaApAQCAtNTAsMTEgKzUwLDExIEBAIHB1YmxpYzoKICAgICB2
b2lkIHdpbGxVcGRhdGVPYmplY3RSZWdpb25zKCk7CiAgICAgdm9pZCBzY2hlZHVsZU9iamVjdFJl
Z2lvbnNVcGRhdGUoYm9vbCAvKiBzY2hlZHVsZUltbWVkaWF0ZWx5ICovKTsKIAotICAgIHZvaWQg
b25QYWludChBWElELCBJbnRSZWN0JiYpOwotICAgIC8vIHN0ZDo6bnVsbG9wdCBpZiB0aGVyZSBp
cyBubyBwYWludCByZWN0IGZvciB0aGUgZ2l2ZW4gSUQgKGkuZS4gYmVjYXVzZSBpdCBoYXNuJ3Qg
eWV0IGJlZW4gcGFpbnRlZCwgb3IgY2Fubm90IGJlIHBhaW50ZWQgYXQgYWxsKS4KLSAgICBzdGQ6
Om9wdGlvbmFsPEludFJlY3Q+IHBhaW50UmVjdEZvcklEKEFYSUQpOworICAgIHZvaWQgY2FjaGVS
ZWN0KEFYSUQsIEludFJlY3QmJik7CisgICAgLy8gc3RkOjpudWxsb3B0IGlmIHRoZXJlIGlzIG5v
IGNhY2hlZCByZWN0IGZvciB0aGUgZ2l2ZW4gSUQgKGkuZS4gYmVjYXVzZSBpdCBoYXNuJ3QgYmVl
biBjYWNoZWQgeWV0IHZpYSBwYWludCBvciBvdGhlcndpc2UsIG9yIGNhbm5vdCBiZSBwYWludGVk
IC8gY2FjaGVkIGF0IGFsbCkuCisgICAgc3RkOjpvcHRpb25hbDxJbnRSZWN0PiBjYWNoZWRSZWN0
Rm9ySUQoQVhJRCk7CiAKLSAgICB2b2lkIHJlbW92ZShBWElEIGF4SUQpIHsgbV9wYWludFJlY3Rz
LnJlbW92ZShheElEKTsgfQorICAgIHZvaWQgcmVtb3ZlKEFYSUQgYXhJRCkgeyBtX2NhY2hlZFJl
Y3RzLnJlbW92ZShheElEKTsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgaW5pdGlh
bGl6ZVByaW1hcnlTY3JlZW5SZWN0KCk7CkBAIC02Nyw4ICs2Nyw3IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBUaGUgY2FjaGUgdGhhdCBvd25zIHRoaXMgaW5zdGFuY2UuCiAgICAgV2Vha1B0cjxBWE9i
amVjdENhY2hlPiBtX2NhY2hlOwotICAgIC8vIEJvdW5kcyBjb21wdXRlZCBieSBQYWludFBoYXNl
OjpBY2Nlc3NpYmlsaXR5LgotICAgIEhhc2hNYXA8QVhJRCwgSW50UmVjdD4gbV9wYWludFJlY3Rz
OworICAgIEhhc2hNYXA8QVhJRCwgSW50UmVjdD4gbV9jYWNoZWRSZWN0czsKICAgICBUaW1lciBt
X3VwZGF0ZU9iamVjdFJlZ2lvbnNUaW1lcjsKIAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDQ2NWMwN2Jj
M2RlMS4uZmI3MDVkYWE1ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAKQEAgLTE1MDQsNiArMTUwNCwxOSBAQCBzdGF0aWMgYm9vbCBpc0FS
SUFUYWJsZUNlbGwoTm9kZSogbm9kZSkKICAgICByZXR1cm4gbm9kZSAmJiAobm9kZUhhc1JvbGUo
bm9kZSwgImdyaWRjZWxsIl9zKSB8fCBub2RlSGFzUm9sZShub2RlLCAiY2VsbCJfcykgfHwgbm9k
ZUhhc1JvbGUobm9kZSwgImNvbHVtbmhlYWRlciJfcykgfHwgbm9kZUhhc1JvbGUobm9kZSwgInJv
d2hlYWRlciJfcykpOwogfQogCit2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uU2Nyb2xsYmFyRnJhbWVS
ZWN0Q2hhbmdlKGNvbnN0IFNjcm9sbGJhciYgc2Nyb2xsYmFyKQoreworI2lmIEVOQUJMRShBQ0NF
U1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCisgICAgaWYgKCFtX3BhZ2VJRCB8fCAhaXNJc29sYXRl
ZFRyZWVFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBheFNjcm9s
bGJhciA9IGdldChjb25zdF9jYXN0PFNjcm9sbGJhcio+KCZzY3JvbGxiYXIpKSkKKyAgICAgICAg
bV9nZW9tZXRyeU1hbmFnZXItPmNhY2hlUmVjdChheFNjcm9sbGJhci0+b2JqZWN0SUQoKSwgZW5j
bG9zaW5nSW50UmVjdChheFNjcm9sbGJhci0+cmVsYXRpdmVGcmFtZSgpKSk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShzY3JvbGxiYXIpOworI2VuZGlmCit9CisKIHZvaWQgQVhPYmplY3RDYWNo
ZTo6b25TZWxlY3RlZENoYW5nZWQoTm9kZSogbm9kZSkKIHsKICAgICBpZiAoaXNBUklBVGFibGVD
ZWxsKG5vZGUpKQpAQCAtMzg4MCwxNCArMzg5MywxNCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9u
UGFpbnQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgSW50UmVjdCYmIHBhaW50UmVjdCkg
YwogewogICAgIGlmICghbV9wYWdlSUQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2dlb21ldHJ5
TWFuYWdlci0+b25QYWludChtX3JlbmRlck9iamVjdE1hcHBpbmcuZ2V0KGNvbnN0X2Nhc3Q8UmVu
ZGVyT2JqZWN0Kj4oJnJlbmRlcmVyKSksIFdURk1vdmUocGFpbnRSZWN0KSk7CisgICAgbV9nZW9t
ZXRyeU1hbmFnZXItPmNhY2hlUmVjdChtX3JlbmRlck9iamVjdE1hcHBpbmcuZ2V0KGNvbnN0X2Nh
c3Q8UmVuZGVyT2JqZWN0Kj4oJnJlbmRlcmVyKSksIFdURk1vdmUocGFpbnRSZWN0KSk7CiB9CiAK
IHZvaWQgQVhPYmplY3RDYWNoZTo6b25QYWludChjb25zdCBXaWRnZXQmIHdpZGdldCwgSW50UmVj
dCYmIHBhaW50UmVjdCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZUlEKQogICAgICAgICByZXR1
cm47Ci0gICAgbV9nZW9tZXRyeU1hbmFnZXItPm9uUGFpbnQobV93aWRnZXRPYmplY3RNYXBwaW5n
LmdldChjb25zdF9jYXN0PFdpZGdldCo+KCZ3aWRnZXQpKSwgV1RGTW92ZShwYWludFJlY3QpKTsK
KyAgICBtX2dlb21ldHJ5TWFuYWdlci0+Y2FjaGVSZWN0KG1fd2lkZ2V0T2JqZWN0TWFwcGluZy5n
ZXQoY29uc3RfY2FzdDxXaWRnZXQqPigmd2lkZ2V0KSksIFdURk1vdmUocGFpbnRSZWN0KSk7CiB9
CiAjZW5kaWYgLy8gRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA0ODMxNjNkZmYw
NDUuLjc4YWFiMjcwN2UwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmgKQEAgLTU2LDYgKzU2LDcgQEAgY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlckJs
b2NrOwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyVGV4dDsKK2NsYXNzIFNjcm9s
bGJhcjsKIGNsYXNzIFNjcm9sbFZpZXc7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247CiBjbGFzcyBX
aWRnZXQ7CkBAIC0xODEsNiArMTgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2hpbGRyZW5DaGFu
Z2VkKFJlbmRlck9iamVjdCosIFJlbmRlck9iamVjdCogbmV3Q2hpbGQgPSBudWxscHRyKTsKICAg
ICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAgICAgdm9pZCBv
bkZvY3VzQ2hhbmdlKE5vZGUqIG9sZEZvY3VzZWROb2RlLCBOb2RlKiBuZXdGb2N1c2VkTm9kZSk7
CisgICAgdm9pZCBvblNjcm9sbGJhckZyYW1lUmVjdENoYW5nZShjb25zdCBTY3JvbGxiYXImKTsK
ICAgICB2b2lkIG9uU2VsZWN0ZWRDaGFuZ2VkKE5vZGUqKTsKICAgICB2b2lkIG9uVGV4dFNlY3Vy
aXR5Q2hhbmdlZChIVE1MSW5wdXRFbGVtZW50Jik7CiAgICAgdm9pZCBvblRpdGxlQ2hhbmdlKERv
Y3VtZW50Jik7CkBAIC0yNTIsNyArMjU0LDYgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8
QVhDb3JlT2JqZWN0Pj4gb2JqZWN0c0ZvcklEcyhjb25zdCBWZWN0b3I8QVhJRD4mKSBjb25zdDsK
IAogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi0gICAgc3RkOjpvcHRp
b25hbDxJbnRSZWN0PiBwYWludFJlY3RGb3JJRChBWElEIGF4SUQpIHsgcmV0dXJuIG1fZ2VvbWV0
cnlNYW5hZ2VyLT5wYWludFJlY3RGb3JJRChheElEKTsgfQogICAgIHZvaWQgb25QYWludChjb25z
dCBSZW5kZXJPYmplY3QmLCBJbnRSZWN0JiYpIGNvbnN0OwogICAgIHZvaWQgb25QYWludChjb25z
dCBXaWRnZXQmLCBJbnRSZWN0JiYpIGNvbnN0OwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5jcHAKaW5kZXggNDA5NDZjY2UyNjc5Li4yODhlZTQ2NTRlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuY3BwCkBAIC0xNjksMTEgKzE2OSwxMiBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKGNvbnN0IFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYgYXhP
YgogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpCcmFpbGxlTGFiZWwsIG9iamVjdC5i
cmFpbGxlTGFiZWwoKS5pc29sYXRlZENvcHkoKSk7CiAKICAgICBSZWZQdHIgZ2VvbWV0cnlNYW5h
Z2VyID0gdHJlZSgpLT5nZW9tZXRyeU1hbmFnZXIoKTsKLSAgICBzdGQ6Om9wdGlvbmFsIGZyYW1l
ID0gZ2VvbWV0cnlNYW5hZ2VyID8gZ2VvbWV0cnlNYW5hZ2VyLT5wYWludFJlY3RGb3JJRChvYmpl
Y3Qub2JqZWN0SUQoKSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbCBmcmFtZSA9
IGdlb21ldHJ5TWFuYWdlciA/IGdlb21ldHJ5TWFuYWdlci0+Y2FjaGVkUmVjdEZvcklEKG9iamVj
dC5vYmplY3RJRCgpKSA6IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoZnJhbWUpCiAgICAgICAgIHNl
dFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSZWxhdGl2ZUZyYW1lLCBXVEZNb3ZlKCpmcmFtZSkp
OwotICAgIGVsc2UgaWYgKG9iamVjdC5pc1Njcm9sbFZpZXcoKSB8fCBvYmplY3QuaXNXZWJBcmVh
KCkpIHsKLSAgICAgICAgLy8gVGhlIEdlb21ldHJ5TWFuYWdlciBkb2VzIG5vdCBoYXZlIGEgcmVs
YXRpdmUgZnJhbWUgZm9yIHRoZSBTY3JvbGxWaWV3IG9yIHRoZSBXZWJBcmVhIHlldC4gV2UgbmVl
ZCB0byBnZXQgaXQgZnJvbSB0aGUgbGl2ZSBvYmplY3Qgc28gdGhhdCB3ZSBkb24ndCBuZWVkIHRv
IGhpdCB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIGNhc2UgYSByZXF1ZXN0IGNvbWVzIGluIHdoaWxl
IHRoZSB3aG9sZSBpc29sYXRlZCB0cmVlIGlzIGJlaW5nIGJ1aWx0LgorICAgIGVsc2UgaWYgKG9i
amVjdC5pc1Njcm9sbFZpZXcoKSB8fCBvYmplY3QuaXNXZWJBcmVhKCkgfHwgb2JqZWN0LmlzU2Ny
b2xsYmFyKCkpIHsKKyAgICAgICAgLy8gVGhlIEdlb21ldHJ5TWFuYWdlciBkb2VzIG5vdCBoYXZl
IGEgcmVsYXRpdmUgZnJhbWUgZm9yIFNjcm9sbFZpZXdzLCBXZWJBcmVhcywgb3Igc2Nyb2xsYmFy
cyB5ZXQuIFdlIG5lZWQgdG8gZ2V0IGl0IGZyb20gdGhlCisgICAgICAgIC8vIGxpdmUgb2JqZWN0
IHNvIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBoaXQgdGhlIG1haW4gdGhyZWFkIGluIHRoZSBjYXNl
IGEgcmVxdWVzdCBjb21lcyBpbiB3aGlsZSB0aGUgd2hvbGUgaXNvbGF0ZWQgdHJlZSBpcyBiZWlu
ZyBidWlsdC4KICAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJlbGF0aXZlRnJh
bWUsIGVuY2xvc2luZ0ludFJlY3Qob2JqZWN0LnJlbGF0aXZlRnJhbWUoKSkpOwogICAgIH0gZWxz
ZSBpZiAoIW9iamVjdC5yZW5kZXJlcigpICYmIG9iamVjdC5ub2RlKCkgJiYgaXM8QWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q+KG9iamVjdCkpIHsKICAgICAgICAgLy8gVGhlIGZyYW1lIG9mIG5vZGUt
b25seSBBWCBvYmplY3RzIGlzIG1hZGUgdXAgb2YgdGhlaXIgY2hpbGRyZW4uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTG9jYWxGcmFtZVZpZXcuY3BwCmluZGV4IDI1ZmIwMWUzNjRlYi4uODhmYTNkZTY2NmU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcApAQCAtNTgzOCw2ICs1ODM4
LDEyIEBAIHZvaWQgTG9jYWxGcmFtZVZpZXc6OndpbGxSZW1vdmVTY3JvbGxiYXIoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIFNjcm9sbGJhck9yaWVudGF0CiAgICAgfQogfQogCit2b2lkIExvY2FsRnJh
bWVWaWV3OjpzY3JvbGxiYXJGcmFtZVJlY3RDaGFuZ2VkKGNvbnN0IFNjcm9sbGJhciYgc2Nyb2xs
YmFyKSBjb25zdAoreworICAgIGlmIChhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKSkKKyAg
ICAgICAgY2FjaGUtPm9uU2Nyb2xsYmFyRnJhbWVSZWN0Q2hhbmdlKHNjcm9sbGJhcik7Cit9CisK
IHZvaWQgTG9jYWxGcmFtZVZpZXc6OmFkZFBhaW50UGVuZGluZ01pbGVzdG9uZXMoT3B0aW9uU2V0
PExheW91dE1pbGVzdG9uZT4gbWlsZXN0b25lcykKIHsKICAgICBtX21pbGVzdG9uZXNQZW5kaW5n
UGFpbnQuYWRkKG1pbGVzdG9uZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9M
b2NhbEZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oCmlu
ZGV4IDEyYTMzNTQyYjg0OS4uMjViNjY2NDY0MGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZy
YW1lVmlldy5oCkBAIC04NDIsNiArODQyLDcgQEAgcHJpdmF0ZToKICAgICAvLyBPdmVycmlkZSBz
Y3JvbGxiYXIgbm90aWZpY2F0aW9ucyB0byB1cGRhdGUgdGhlIEFYT2JqZWN0IGNhY2hlLgogICAg
IHZvaWQgZGlkQWRkU2Nyb2xsYmFyKFNjcm9sbGJhciosIFNjcm9sbGJhck9yaWVudGF0aW9uKSBm
aW5hbDsKICAgICB2b2lkIHdpbGxSZW1vdmVTY3JvbGxiYXIoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFy
T3JpZW50YXRpb24pIGZpbmFsOworICAgIHZvaWQgc2Nyb2xsYmFyRnJhbWVSZWN0Q2hhbmdlZChj
b25zdCBTY3JvbGxiYXImKSBjb25zdCBmaW5hbDsKIAogICAgIEludFNpemUgc2l6ZUZvclJlc2l6
ZUV2ZW50KCkgY29uc3Q7CiAgICAgdm9pZCBzY2hlZHVsZVJlc2l6ZUV2ZW50SWZOZWVkZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDIwNTdiZWM0MTcw
Mi4uY2UyMDNmNjQ1MDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmgKQEAgLTIzMyw2ICsyMzMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFNjcm9sbGJhciog
aG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0
dWFsIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBudWxscHRy
OyB9CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhckZyYW1lUmVjdENoYW5nZWQoY29uc3QgU2Ny
b2xsYmFyJikgY29uc3QgeyB9OwogCiAgICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXJGb3JEaXJlY3Rp
b24oU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmNwcAppbmRleCA4M2QzNmEwYWU3MDkuLjlkZDEzMjEwYmUwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiTG9jYWxGcmFtZVZpZXcuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJSZWdpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCiAj
aW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKQEAgLTg4LDcgKzg5LDcgQEAgU2Nyb2xsYmFyOjpT
Y3JvbGxiYXIoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBTY3JvbGxiYXJPcmllbnRh
dGlvbiBvcmllbnQKICAgICAvLyBzY3JvbGxiYXIgdGhpY2tuZXNzIGFuZCB1c2UgaXQgd2hlbiBz
aXppbmcgc2Nyb2xsYmFycyAocmF0aGVyIHRoYW4gbGVhdmluZyBvbmUgZGltZW5zaW9uIG9mIHRo
ZSBzY3JvbGxiYXIKICAgICAvLyBhbG9uZSB3aGVuIHNpemluZykuCiAgICAgaW50IHRoaWNrbmVz
cyA9IHRoZW1lKCkuc2Nyb2xsYmFyVGhpY2tuZXNzKGNvbnRyb2xTaXplLCBtX3Njcm9sbGFibGVB
cmVhLnNjcm9sbGJhcldpZHRoU3R5bGUoKSk7Ci0gICAgV2lkZ2V0OjpzZXRGcmFtZVJlY3QoSW50
UmVjdCgwLCAwLCB0aGlja25lc3MsIHRoaWNrbmVzcykpOworICAgIHNldEZyYW1lUmVjdChJbnRS
ZWN0KDAsIDAsIHRoaWNrbmVzcywgdGhpY2tuZXNzKSk7CiAKICAgICBtX2N1cnJlbnRQb3MgPSBz
dGF0aWNfY2FzdDxmbG9hdD4ob2Zmc2V0Rm9yT3JpZW50YXRpb24obV9zY3JvbGxhYmxlQXJlYS5z
Y3JvbGxPZmZzZXQoKSwgbV9vcmllbnRhdGlvbikpOwogfQpAQCAtMTYwLDYgKzE2MSwxMiBAQCB2
b2lkIFNjcm9sbGJhcjo6dXBkYXRlVGh1bWJQcm9wb3J0aW9uKCkKICAgICB1cGRhdGVUaHVtYigp
OwogfQogCit2b2lkIFNjcm9sbGJhcjo6c2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3Qp
Cit7CisgICAgV2lkZ2V0OjpzZXRGcmFtZVJlY3QocmVjdCk7CisgICAgbV9zY3JvbGxhYmxlQXJl
YS5zY3JvbGxiYXJGcmFtZVJlY3RDaGFuZ2VkKCp0aGlzKTsKK30KKwogdm9pZCBTY3JvbGxiYXI6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVj
dCwgV2lkZ2V0OjpTZWN1cml0eU9yaWdpblBhaW50UG9saWN5LCBSZWdpb25Db250ZXh0KikKIHsK
ICAgICBpZiAoY29udGV4dC5pbnZhbGlkYXRpbmdDb250cm9sVGludHMoKSAmJiB0aGVtZSgpLnN1
cHBvcnRzQ29udHJvbFRpbnRzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKaW5k
ZXggZGI1ZTljYWU5OWZjLi5kNGUzMmEyMDdmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGJhci5oCkBAIC02OCw3ICs2OCw4IEBAIHB1YmxpYzoKICAgICBpbnQgdG90YWxTaXplKCkgY29u
c3QgeyByZXR1cm4gbV90b3RhbFNpemU7IH0KICAgICBpbnQgbWF4aW11bSgpIGNvbnN0IHsgcmV0
dXJuIG1fdG90YWxTaXplIC0gbV92aXNpYmxlU2l6ZTsgfQogICAgIFNjcm9sbGJhckNvbnRyb2xT
aXplIGNvbnRyb2xTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb250cm9sU2l6ZTsgfQotICAgIAor
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYpIGZp
bmFsOwogICAgIGludCBvY2N1cGllZFdpZHRoKCkgY29uc3Q7CiAgICAgaW50IG9jY3VwaWVkSGVp
Z2h0KCkgY29uc3Q7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466550</attachid>
            <date>2023-05-31 10:36:09 -0700</date>
            <delta_ts>2023-05-31 16:08:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-257406-20230531103609.patch</filename>
            <type>text/plain</type>
            <size>14614</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSBmNTJmMDhmMTY4NTZhMjc3MzgzN2YxNDYxYWYwZmU4NjU1NjlmNzJhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogRnJpLCAyNiBNYXkgMjAyMyAxNzoyOTowNCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFYOiBD
YWNoZSBBWFByb3BlcnR5TmFtZTo6UmVsYXRpdmVGcmFtZSBmb3IKIEFjY2Vzc2liaWxpdHlTY3Jv
bGxiYXJzIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTc0MDYKIHJk
YXI6Ly9wcm9ibGVtLzEwOTkxMjYzMwoKUmV2aWV3ZWQgYnkgQW5kcmVzIEdvbnphbGV6LgoKVGhp
cyBwYXRjaCBhbHNvIGdlbmVyYWxpemVzIGFueSByZWZlcmVuY2UgdG8gInBhaW50IiBpbiBBWEdl
b21ldHJ5TWFuYWdlcgpzaW5jZSB3ZSBhcmVuJ3QgcmVseWluZyBvbiBwYWludGluZyB0byB1cGRh
dGUgc2Nyb2xsYmFyIGdlb21ldHJ5LCBhbmQKdGhlIGZhY3QgdGhhdCB0aGUgZ2VvbWV0cnkgZm9y
IG1vc3QgdHlwZXMgb2Ygb2JqZWN0cyBpcyBnZW5lcmF0ZWQgYnkKcGFpbnQgdHJhdmVyc2FsIGlz
IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4KCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWEdlb21ldHJ5TWFuYWdlci5jcHA6CihXZWJDb3JlOjpBWEdlb21ldHJ5TWFuYWdlcjo6Y2Fj
aGVkUmVjdEZvcklEKToKKFdlYkNvcmU6OkFYR2VvbWV0cnlNYW5hZ2VyOjpjYWNoZVJlY3QpOgoo
V2ViQ29yZTo6QVhHZW9tZXRyeU1hbmFnZXI6OnBhaW50UmVjdEZvcklEKTogRGVsZXRlZC4KKFdl
YkNvcmU6OkFYR2VvbWV0cnlNYW5hZ2VyOjpvblBhaW50KTogRGVsZXRlZC4KKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYR2VvbWV0cnlNYW5hZ2VyLmg6CihXZWJDb3JlOjpBWEdlb21l
dHJ5TWFuYWdlcjo6cmVtb3ZlKToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6b25TY3JvbGxiYXJGcmFtZVJl
Y3RDaGFuZ2UpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6b25QYWludCBjb25zdCk6CiogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6CihXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjpwYWludFJlY3RGb3JJRCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHA6CihXZWJDb3JlOjpB
WElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJvcGVydGllcyk6CiogU291cmNlL1dlYkNvcmUv
cGFnZS9Mb2NhbEZyYW1lVmlldy5jcHA6CihXZWJDb3JlOjpMb2NhbEZyYW1lVmlldzo6c2Nyb2xs
YmFyRnJhbWVSZWN0Q2hhbmdlZCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZy
YW1lVmlldy5oOgoqIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CihX
ZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsYmFyRnJhbWVSZWN0Q2hhbmdlZCBjb25zdCk6
CiogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcDoKKFdlYkNvcmU6OlNjcm9s
bGJhcjo6U2Nyb2xsYmFyKToKKFdlYkNvcmU6OlNjcm9sbGJhcjo6c2V0RnJhbWVSZWN0KToKKiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaDoKLS0tCiAuLi4vYWNjZXNzaWJpbGl0
eS9BWEdlb21ldHJ5TWFuYWdlci5jcHAgICAgICAgfCAzMCArKysrKysrKystLS0tLS0tLS0tCiAu
Li4vV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYR2VvbWV0cnlNYW5hZ2VyLmggfCAxMSArKysrLS0t
CiAuLi4vV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwICAgfCAxNyArKysr
KysrKystLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggIHwg
IDMgKy0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgICAgICAgICB8ICA3
ICsrKy0tCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcCAgICAgICAgfCAg
NiArKysrCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmggICAgICAgICAgfCAg
MSArCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oICAgICAgfCAgMSAr
CiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwICAgICAgICAgfCAgOSArKysr
Ky0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oICAgICAgICAgICB8ICAyICsr
CiAxMCBmaWxlcyBjaGFuZ2VkLCA1OSBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYR2VvbWV0cnlNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuY3Bw
CmluZGV4IGZlODkzZDNmNTg2Ni4uYzU5ODRhNjZkYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYR2VvbWV0cnlNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYR2VvbWV0cnlNYW5hZ2VyLmNwcApAQCAtNTUsMTUgKzU1LDE1
IEBAIEFYR2VvbWV0cnlNYW5hZ2VyOjp+QVhHZW9tZXRyeU1hbmFnZXIoKQogICAgICAgICBtX3Vw
ZGF0ZU9iamVjdFJlZ2lvbnNUaW1lci5zdG9wKCk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8SW50UmVj
dD4gQVhHZW9tZXRyeU1hbmFnZXI6OnBhaW50UmVjdEZvcklEKEFYSUQgYXhJRCkKK3N0ZDo6b3B0
aW9uYWw8SW50UmVjdD4gQVhHZW9tZXRyeU1hbmFnZXI6OmNhY2hlZFJlY3RGb3JJRChBWElEIGF4
SUQpCiB7Ci0gICAgYXV0byBwYWludFJlY3RJdGVyYXRvciA9IG1fcGFpbnRSZWN0cy5maW5kKGF4
SUQpOwotICAgIGlmIChwYWludFJlY3RJdGVyYXRvciAhPSBtX3BhaW50UmVjdHMuZW5kKCkpCi0g
ICAgICAgIHJldHVybiBwYWludFJlY3RJdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byByZWN0SXRl
cmF0b3IgPSBtX2NhY2hlZFJlY3RzLmZpbmQoYXhJRCk7CisgICAgaWYgKHJlY3RJdGVyYXRvciAh
PSBtX2NhY2hlZFJlY3RzLmVuZCgpKQorICAgICAgICByZXR1cm4gcmVjdEl0ZXJhdG9yLT52YWx1
ZTsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi12b2lkIEFYR2VvbWV0cnlNYW5hZ2Vy
OjpvblBhaW50KEFYSUQgYXhJRCwgSW50UmVjdCYmIHBhaW50UmVjdCkKK3ZvaWQgQVhHZW9tZXRy
eU1hbmFnZXI6OmNhY2hlUmVjdChBWElEIGF4SUQsIEludFJlY3QmJiByZWN0KQogewogICAgIC8v
IFdlIHNob3VsZG4ndCBjYWxsIHRoaXMgbWV0aG9kIG9uIGEgZ2VvbWV0cnkgbWFuYWdlciB0aGF0
IGhhcyBubyBwYWdlIElELgogICAgIEFTU0VSVChtX2NhY2hlLT5wYWdlSUQoKSk7CkBAIC03MSwy
NSArNzEsMjUgQEAgdm9pZCBBWEdlb21ldHJ5TWFuYWdlcjo6b25QYWludChBWElEIGF4SUQsIElu
dFJlY3QmJiBwYWludFJlY3QpCiAKICAgICBpZiAoIWF4SUQuaXNWYWxpZCgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgYXV0byBwYWludFJlY3RJdGVyYXRvciA9IG1fcGFpbnRSZWN0cy5maW5kKGF4
SUQpOworICAgIGF1dG8gcmVjdEl0ZXJhdG9yID0gbV9jYWNoZWRSZWN0cy5maW5kKGF4SUQpOwog
Ci0gICAgYm9vbCBwYWludFJlY3RDaGFuZ2VkID0gZmFsc2U7Ci0gICAgaWYgKHBhaW50UmVjdEl0
ZXJhdG9yICE9IG1fcGFpbnRSZWN0cy5lbmQoKSkgewotICAgICAgICBwYWludFJlY3RDaGFuZ2Vk
ID0gcGFpbnRSZWN0SXRlcmF0b3ItPnZhbHVlICE9IHBhaW50UmVjdDsKLSAgICAgICAgaWYgKHBh
aW50UmVjdENoYW5nZWQpCi0gICAgICAgICAgICBwYWludFJlY3RJdGVyYXRvci0+dmFsdWUgPSBw
YWludFJlY3Q7CisgICAgYm9vbCByZWN0Q2hhbmdlZCA9IGZhbHNlOworICAgIGlmIChyZWN0SXRl
cmF0b3IgIT0gbV9jYWNoZWRSZWN0cy5lbmQoKSkgeworICAgICAgICByZWN0Q2hhbmdlZCA9IHJl
Y3RJdGVyYXRvci0+dmFsdWUgIT0gcmVjdDsKKyAgICAgICAgaWYgKHJlY3RDaGFuZ2VkKQorICAg
ICAgICAgICAgcmVjdEl0ZXJhdG9yLT52YWx1ZSA9IHJlY3Q7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgcGFpbnRSZWN0Q2hhbmdlZCA9IHRydWU7Ci0gICAgICAgIG1fcGFpbnRSZWN0cy5zZXQoYXhJ
RCwgcGFpbnRSZWN0KTsKKyAgICAgICAgcmVjdENoYW5nZWQgPSB0cnVlOworICAgICAgICBtX2Nh
Y2hlZFJlY3RzLnNldChheElELCByZWN0KTsKICAgICB9CiAKLSAgICBpZiAoIXBhaW50UmVjdENo
YW5nZWQpCisgICAgaWYgKCFyZWN0Q2hhbmdlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVm
UHRyIHRyZWUgPSBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCgqbV9jYWNoZS0+cGFnZUlE
KCkpOwogICAgIGlmICghdHJlZSkKICAgICAgICAgcmV0dXJuOwotICAgIHRyZWUtPnVwZGF0ZUZy
YW1lKGF4SUQsIFdURk1vdmUocGFpbnRSZWN0KSk7CisgICAgdHJlZS0+dXBkYXRlRnJhbWUoYXhJ
RCwgV1RGTW92ZShyZWN0KSk7CiB9CiAKIHZvaWQgQVhHZW9tZXRyeU1hbmFnZXI6OnNjaGVkdWxl
T2JqZWN0UmVnaW9uc1VwZGF0ZShib29sIHNjaGVkdWxlSW1tZWRpYXRlbHkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYR2VvbWV0cnlNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYR2VvbWV0cnlNYW5hZ2VyLmgKaW5kZXggYTc3Y2Nh
NzgwMWZhLi44NjlmZjc4YjIwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYR2VvbWV0cnlNYW5hZ2VyLmgKQEAgLTUwLDExICs1MCwxMSBAQCBwdWJsaWM6CiAgICAg
dm9pZCB3aWxsVXBkYXRlT2JqZWN0UmVnaW9ucygpOwogICAgIHZvaWQgc2NoZWR1bGVPYmplY3RS
ZWdpb25zVXBkYXRlKGJvb2wgLyogc2NoZWR1bGVJbW1lZGlhdGVseSAqLyk7CiAKLSAgICB2b2lk
IG9uUGFpbnQoQVhJRCwgSW50UmVjdCYmKTsKLSAgICAvLyBzdGQ6Om51bGxvcHQgaWYgdGhlcmUg
aXMgbm8gcGFpbnQgcmVjdCBmb3IgdGhlIGdpdmVuIElEIChpLmUuIGJlY2F1c2UgaXQgaGFzbid0
IHlldCBiZWVuIHBhaW50ZWQsIG9yIGNhbm5vdCBiZSBwYWludGVkIGF0IGFsbCkuCi0gICAgc3Rk
OjpvcHRpb25hbDxJbnRSZWN0PiBwYWludFJlY3RGb3JJRChBWElEKTsKKyAgICB2b2lkIGNhY2hl
UmVjdChBWElELCBJbnRSZWN0JiYpOworICAgIC8vIHN0ZDo6bnVsbG9wdCBpZiB0aGVyZSBpcyBu
byBjYWNoZWQgcmVjdCBmb3IgdGhlIGdpdmVuIElEIChpLmUuIGJlY2F1c2UgaXQgaGFzbid0IGJl
ZW4gY2FjaGVkIHlldCB2aWEgcGFpbnQgb3Igb3RoZXJ3aXNlLCBvciBjYW5ub3QgYmUgcGFpbnRl
ZCAvIGNhY2hlZCBhdCBhbGwpLgorICAgIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4gY2FjaGVkUmVj
dEZvcklEKEFYSUQpOwogCi0gICAgdm9pZCByZW1vdmUoQVhJRCBheElEKSB7IG1fcGFpbnRSZWN0
cy5yZW1vdmUoYXhJRCk7IH0KKyAgICB2b2lkIHJlbW92ZShBWElEIGF4SUQpIHsgbV9jYWNoZWRS
ZWN0cy5yZW1vdmUoYXhJRCk7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGluaXRp
YWxpemVQcmltYXJ5U2NyZWVuUmVjdCgpOwpAQCAtNjcsOCArNjcsNyBAQCBwcml2YXRlOgogCiAg
ICAgLy8gVGhlIGNhY2hlIHRoYXQgb3ducyB0aGlzIGluc3RhbmNlLgogICAgIFdlYWtQdHI8QVhP
YmplY3RDYWNoZT4gbV9jYWNoZTsKLSAgICAvLyBCb3VuZHMgY29tcHV0ZWQgYnkgUGFpbnRQaGFz
ZTo6QWNjZXNzaWJpbGl0eS4KLSAgICBIYXNoTWFwPEFYSUQsIEludFJlY3Q+IG1fcGFpbnRSZWN0
czsKKyAgICBIYXNoTWFwPEFYSUQsIEludFJlY3Q+IG1fY2FjaGVkUmVjdHM7CiAgICAgVGltZXIg
bV91cGRhdGVPYmplY3RSZWdpb25zVGltZXI7CiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCA1OGY1NTYz
MWU5MDYuLmEzODAyOWZlNmQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xNTExLDYgKzE1MTEsMTkgQEAgc3RhdGljIGJvb2wgaXNB
UklBVGFibGVDZWxsKE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGUgJiYgKG5vZGVIYXNSb2xl
KG5vZGUsICJncmlkY2VsbCJfcykgfHwgbm9kZUhhc1JvbGUobm9kZSwgImNlbGwiX3MpIHx8IG5v
ZGVIYXNSb2xlKG5vZGUsICJjb2x1bW5oZWFkZXIiX3MpIHx8IG5vZGVIYXNSb2xlKG5vZGUsICJy
b3doZWFkZXIiX3MpKTsKIH0KIAordm9pZCBBWE9iamVjdENhY2hlOjpvblNjcm9sbGJhckZyYW1l
UmVjdENoYW5nZShjb25zdCBTY3JvbGxiYXImIHNjcm9sbGJhcikKK3sKKyNpZiBFTkFCTEUoQUND
RVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQorICAgIGlmICghbV9wYWdlSUQgfHwgIWlzSXNvbGF0
ZWRUcmVlRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byogYXhTY3Jv
bGxiYXIgPSBnZXQoY29uc3RfY2FzdDxTY3JvbGxiYXIqPigmc2Nyb2xsYmFyKSkpCisgICAgICAg
IG1fZ2VvbWV0cnlNYW5hZ2VyLT5jYWNoZVJlY3QoYXhTY3JvbGxiYXItPm9iamVjdElEKCksIGVu
Y2xvc2luZ0ludFJlY3QoYXhTY3JvbGxiYXItPnJlbGF0aXZlRnJhbWUoKSkpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0oc2Nyb2xsYmFyKTsKKyNlbmRpZgorfQorCiB2b2lkIEFYT2JqZWN0Q2Fj
aGU6Om9uU2VsZWN0ZWRDaGFuZ2VkKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKGlzQVJJQVRhYmxl
Q2VsbChub2RlKSkKQEAgLTM4ODcsMTQgKzM5MDAsMTQgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpv
blBhaW50KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIEludFJlY3QmJiBwYWludFJlY3Qp
IGMKIHsKICAgICBpZiAoIW1fcGFnZUlEKQogICAgICAgICByZXR1cm47Ci0gICAgbV9nZW9tZXRy
eU1hbmFnZXItPm9uUGFpbnQobV9yZW5kZXJPYmplY3RNYXBwaW5nLmdldChjb25zdF9jYXN0PFJl
bmRlck9iamVjdCo+KCZyZW5kZXJlcikpLCBXVEZNb3ZlKHBhaW50UmVjdCkpOworICAgIG1fZ2Vv
bWV0cnlNYW5hZ2VyLT5jYWNoZVJlY3QobV9yZW5kZXJPYmplY3RNYXBwaW5nLmdldChjb25zdF9j
YXN0PFJlbmRlck9iamVjdCo+KCZyZW5kZXJlcikpLCBXVEZNb3ZlKHBhaW50UmVjdCkpOwogfQog
CiB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uUGFpbnQoY29uc3QgV2lkZ2V0JiB3aWRnZXQsIEludFJl
Y3QmJiBwYWludFJlY3QpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BhZ2VJRCkKICAgICAgICAgcmV0
dXJuOwotICAgIG1fZ2VvbWV0cnlNYW5hZ2VyLT5vblBhaW50KG1fd2lkZ2V0T2JqZWN0TWFwcGlu
Zy5nZXQoY29uc3RfY2FzdDxXaWRnZXQqPigmd2lkZ2V0KSksIFdURk1vdmUocGFpbnRSZWN0KSk7
CisgICAgbV9nZW9tZXRyeU1hbmFnZXItPmNhY2hlUmVjdChtX3dpZGdldE9iamVjdE1hcHBpbmcu
Z2V0KGNvbnN0X2Nhc3Q8V2lkZ2V0Kj4oJndpZGdldCkpLCBXVEZNb3ZlKHBhaW50UmVjdCkpOwog
fQogI2VuZGlmIC8vIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggNDgzMTYzZGZm
MDQ1Li43OGFhYjI3MDdlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5oCkBAIC01Niw2ICs1Niw3IEBAIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJC
bG9jazsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRlclRleHQ7CitjbGFzcyBTY3Jv
bGxiYXI7CiBjbGFzcyBTY3JvbGxWaWV3OwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogY2xhc3Mg
V2lkZ2V0OwpAQCAtMTgxLDYgKzE4Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChSZW5kZXJPYmplY3QqLCBSZW5kZXJPYmplY3QqIG5ld0NoaWxkID0gbnVsbHB0cik7CiAg
ICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCopOwogICAgIHZvaWQg
b25Gb2N1c0NoYW5nZShOb2RlKiBvbGRGb2N1c2VkTm9kZSwgTm9kZSogbmV3Rm9jdXNlZE5vZGUp
OworICAgIHZvaWQgb25TY3JvbGxiYXJGcmFtZVJlY3RDaGFuZ2UoY29uc3QgU2Nyb2xsYmFyJik7
CiAgICAgdm9pZCBvblNlbGVjdGVkQ2hhbmdlZChOb2RlKik7CiAgICAgdm9pZCBvblRleHRTZWN1
cml0eUNoYW5nZWQoSFRNTElucHV0RWxlbWVudCYpOwogICAgIHZvaWQgb25UaXRsZUNoYW5nZShE
b2N1bWVudCYpOwpAQCAtMjUyLDcgKzI1NCw2IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UmVmUHRy
PEFYQ29yZU9iamVjdD4+IG9iamVjdHNGb3JJRHMoY29uc3QgVmVjdG9yPEFYSUQ+JikgY29uc3Q7
CiAKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotICAgIHN0ZDo6b3B0
aW9uYWw8SW50UmVjdD4gcGFpbnRSZWN0Rm9ySUQoQVhJRCBheElEKSB7IHJldHVybiBtX2dlb21l
dHJ5TWFuYWdlci0+cGFpbnRSZWN0Rm9ySUQoYXhJRCk7IH0KICAgICB2b2lkIG9uUGFpbnQoY29u
c3QgUmVuZGVyT2JqZWN0JiwgSW50UmVjdCYmKSBjb25zdDsKICAgICB2b2lkIG9uUGFpbnQoY29u
c3QgV2lkZ2V0JiwgSW50UmVjdCYmKSBjb25zdDsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuY3BwCmluZGV4IGNmODk2OGZlNDBiMC4uNjA2YjdhZjMwZWUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmNwcApAQCAtMTY5LDExICsxNjksMTIgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0
Ojppbml0aWFsaXplUHJvcGVydGllcyhjb25zdCBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4mIGF4
T2IKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QnJhaWxsZUxhYmVsLCBvYmplY3Qu
YnJhaWxsZUxhYmVsKCkuaXNvbGF0ZWRDb3B5KCkpOwogCiAgICAgUmVmUHRyIGdlb21ldHJ5TWFu
YWdlciA9IHRyZWUoKS0+Z2VvbWV0cnlNYW5hZ2VyKCk7Ci0gICAgc3RkOjpvcHRpb25hbCBmcmFt
ZSA9IGdlb21ldHJ5TWFuYWdlciA/IGdlb21ldHJ5TWFuYWdlci0+cGFpbnRSZWN0Rm9ySUQob2Jq
ZWN0Lm9iamVjdElEKCkpIDogc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWwgZnJhbWUg
PSBnZW9tZXRyeU1hbmFnZXIgPyBnZW9tZXRyeU1hbmFnZXItPmNhY2hlZFJlY3RGb3JJRChvYmpl
Y3Qub2JqZWN0SUQoKSkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGZyYW1lKQogICAgICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6UmVsYXRpdmVGcmFtZSwgV1RGTW92ZSgqZnJhbWUp
KTsKLSAgICBlbHNlIGlmIChvYmplY3QuaXNTY3JvbGxWaWV3KCkgfHwgb2JqZWN0LmlzV2ViQXJl
YSgpKSB7Ci0gICAgICAgIC8vIFRoZSBHZW9tZXRyeU1hbmFnZXIgZG9lcyBub3QgaGF2ZSBhIHJl
bGF0aXZlIGZyYW1lIGZvciB0aGUgU2Nyb2xsVmlldyBvciB0aGUgV2ViQXJlYSB5ZXQuIFdlIG5l
ZWQgdG8gZ2V0IGl0IGZyb20gdGhlIGxpdmUgb2JqZWN0IHNvIHRoYXQgd2UgZG9uJ3QgbmVlZCB0
byBoaXQgdGhlIG1haW4gdGhyZWFkIGluIHRoZSBjYXNlIGEgcmVxdWVzdCBjb21lcyBpbiB3aGls
ZSB0aGUgd2hvbGUgaXNvbGF0ZWQgdHJlZSBpcyBiZWluZyBidWlsdC4KKyAgICBlbHNlIGlmIChv
YmplY3QuaXNTY3JvbGxWaWV3KCkgfHwgb2JqZWN0LmlzV2ViQXJlYSgpIHx8IG9iamVjdC5pc1Nj
cm9sbGJhcigpKSB7CisgICAgICAgIC8vIFRoZSBHZW9tZXRyeU1hbmFnZXIgZG9lcyBub3QgaGF2
ZSBhIHJlbGF0aXZlIGZyYW1lIGZvciBTY3JvbGxWaWV3cywgV2ViQXJlYXMsIG9yIHNjcm9sbGJh
cnMgeWV0LiBXZSBuZWVkIHRvIGdldCBpdCBmcm9tIHRoZQorICAgICAgICAvLyBsaXZlIG9iamVj
dCBzbyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gaGl0IHRoZSBtYWluIHRocmVhZCBpbiB0aGUgY2Fz
ZSBhIHJlcXVlc3QgY29tZXMgaW4gd2hpbGUgdGhlIHdob2xlIGlzb2xhdGVkIHRyZWUgaXMgYmVp
bmcgYnVpbHQuCiAgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSZWxhdGl2ZUZy
YW1lLCBlbmNsb3NpbmdJbnRSZWN0KG9iamVjdC5yZWxhdGl2ZUZyYW1lKCkpKTsKICAgICB9IGVs
c2UgaWYgKCFvYmplY3QucmVuZGVyZXIoKSAmJiBvYmplY3Qubm9kZSgpICYmIGlzPEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0PihvYmplY3QpKSB7CiAgICAgICAgIC8vIFRoZSBmcmFtZSBvZiBub2Rl
LW9ubHkgQVggb2JqZWN0cyBpcyBtYWRlIHVwIG9mIHRoZWlyIGNoaWxkcmVuLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcAppbmRleCAyMGYwYTQzZTZhZDAuLjNkOTZlN2M3YWQ5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5jcHAKQEAgLTU4NDMsNiArNTg0
MywxMiBAQCB2b2lkIExvY2FsRnJhbWVWaWV3Ojp3aWxsUmVtb3ZlU2Nyb2xsYmFyKFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJPcmllbnRhdAogICAgIH0KIH0KIAordm9pZCBMb2NhbEZy
YW1lVmlldzo6c2Nyb2xsYmFyRnJhbWVSZWN0Q2hhbmdlZChjb25zdCBTY3JvbGxiYXImIHNjcm9s
bGJhcikgY29uc3QKK3sKKyAgICBpZiAoYXV0byogY2FjaGUgPSBheE9iamVjdENhY2hlKCkpCisg
ICAgICAgIGNhY2hlLT5vblNjcm9sbGJhckZyYW1lUmVjdENoYW5nZShzY3JvbGxiYXIpOworfQor
CiB2b2lkIExvY2FsRnJhbWVWaWV3OjphZGRQYWludFBlbmRpbmdNaWxlc3RvbmVzKE9wdGlvblNl
dDxMYXlvdXRNaWxlc3RvbmU+IG1pbGVzdG9uZXMpCiB7CiAgICAgbV9taWxlc3RvbmVzUGVuZGlu
Z1BhaW50LmFkZChtaWxlc3RvbmVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TG9jYWxGcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuaApp
bmRleCA4OGFkMjBiM2ZkM2YuLjk4NDgzNTc2ODQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxG
cmFtZVZpZXcuaApAQCAtODQzLDYgKzg0Myw3IEBAIHByaXZhdGU6CiAgICAgLy8gT3ZlcnJpZGUg
c2Nyb2xsYmFyIG5vdGlmaWNhdGlvbnMgdG8gdXBkYXRlIHRoZSBBWE9iamVjdCBjYWNoZS4KICAg
ICB2b2lkIGRpZEFkZFNjcm9sbGJhcihTY3JvbGxiYXIqLCBTY3JvbGxiYXJPcmllbnRhdGlvbikg
ZmluYWw7CiAgICAgdm9pZCB3aWxsUmVtb3ZlU2Nyb2xsYmFyKFNjcm9sbGJhciosIFNjcm9sbGJh
ck9yaWVudGF0aW9uKSBmaW5hbDsKKyAgICB2b2lkIHNjcm9sbGJhckZyYW1lUmVjdENoYW5nZWQo
Y29uc3QgU2Nyb2xsYmFyJikgY29uc3QgZmluYWw7CiAKICAgICBJbnRTaXplIHNpemVGb3JSZXNp
emVFdmVudCgpIGNvbnN0OwogICAgIHZvaWQgc2NoZWR1bGVSZXNpemVFdmVudElmTmVlZGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCBkYWI3MjViNTk5
NDAuLjliMzc0YTU1MWEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5oCkBAIC0yMzIsNiArMjMyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTY3JvbGxiYXIq
IGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmly
dHVhbCBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJGcmFtZVJlY3RDaGFuZ2VkKGNvbnN0IFNj
cm9sbGJhciYpIGNvbnN0IHsgfTsKIAogICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyRm9yRGlyZWN0
aW9uKFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhci5jcHAKaW5kZXggNWMwYjFmMmVmN2ZmLi5kN2U5ZDcwNDFlY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkxvY2FsRnJhbWVWaWV3LmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiUmVnaW9uQ29udGV4dC5o
IgogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgog
I2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCkBAIC04OCw3ICs4OSw3IEBAIFNjcm9sbGJhcjo6
U2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgU2Nyb2xsYmFyT3JpZW50
YXRpb24gb3JpZW50CiAgICAgLy8gc2Nyb2xsYmFyIHRoaWNrbmVzcyBhbmQgdXNlIGl0IHdoZW4g
c2l6aW5nIHNjcm9sbGJhcnMgKHJhdGhlciB0aGFuIGxlYXZpbmcgb25lIGRpbWVuc2lvbiBvZiB0
aGUgc2Nyb2xsYmFyCiAgICAgLy8gYWxvbmUgd2hlbiBzaXppbmcpLgogICAgIGludCB0aGlja25l
c3MgPSB0aGVtZSgpLnNjcm9sbGJhclRoaWNrbmVzcyh3aWR0aFN0eWxlKTsKLSAgICBXaWRnZXQ6
OnNldEZyYW1lUmVjdChJbnRSZWN0KDAsIDAsIHRoaWNrbmVzcywgdGhpY2tuZXNzKSk7CisgICAg
c2V0RnJhbWVSZWN0KEludFJlY3QoMCwgMCwgdGhpY2tuZXNzLCB0aGlja25lc3MpKTsKIAogICAg
IG1fY3VycmVudFBvcyA9IHN0YXRpY19jYXN0PGZsb2F0PihvZmZzZXRGb3JPcmllbnRhdGlvbiht
X3Njcm9sbGFibGVBcmVhLnNjcm9sbE9mZnNldCgpLCBtX29yaWVudGF0aW9uKSk7CiB9CkBAIC0x
NjAsNiArMTYxLDEyIEBAIHZvaWQgU2Nyb2xsYmFyOjp1cGRhdGVUaHVtYlByb3BvcnRpb24oKQog
ICAgIHVwZGF0ZVRodW1iKCk7CiB9CiAKK3ZvaWQgU2Nyb2xsYmFyOjpzZXRGcmFtZVJlY3QoY29u
c3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBXaWRnZXQ6OnNldEZyYW1lUmVjdChyZWN0KTsKKyAg
ICBtX3Njcm9sbGFibGVBcmVhLnNjcm9sbGJhckZyYW1lUmVjdENoYW5nZWQoKnRoaXMpOworfQor
CiB2b2lkIFNjcm9sbGJhcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBkYW1hZ2VSZWN0LCBXaWRnZXQ6OlNlY3VyaXR5T3JpZ2luUGFpbnRQb2xpY3ksIFJl
Z2lvbkNvbnRleHQqKQogewogICAgIGlmIChjb250ZXh0LmludmFsaWRhdGluZ0NvbnRyb2xUaW50
cygpICYmIHRoZW1lKCkuc3VwcG9ydHNDb250cm9sVGludHMoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXIuaAppbmRleCBjZTk1NjZkZDAyNWQuLjQ0NTBmYzlmZWVhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogICAgIC8v
IENhbGxlZCBieSB0aGUgU2Nyb2xsYWJsZUFyZWEgd2hlbiB0aGUgc2Nyb2xsIG9mZnNldCBjaGFu
Z2VzLgogICAgIHZvaWQgb2Zmc2V0RGlkQ2hhbmdlKCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JikgZmluYWw7CisKICAgICBzdGF0aWMgaW50
IHBpeGVsc1BlckxpbmVTdGVwKCkgeyByZXR1cm4gNDA7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgaW50IHBpeGVsc1BlckxpbmVTdGVwKGludCB2aWV3V2lkdGhPckhlaWdodCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U2hvdWxkVXNlRml4ZWRQaXhlbHNQZXJMaW5l
U3RlcEZvclRlc3RpbmcoYm9vbCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>