<?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>235295</bug_id>
          
          <creation_ts>2022-01-17 09:16:01 -0800</creation_ts>
          <short_desc>AX Isolated Tree Mode: Re-compute AXPropertyName::IsEnabled when a node experiences AXDisabledStateChanged</short_desc>
          <delta_ts>2022-01-23 15:11:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</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="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>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1831484</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-17 09:16:01 -0800</bug_when>
    <thetext>AXPropertyName::IsEnabled is dependent on an object&apos;s disabled state, so it needs to be re-computed when that changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831485</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-17 09:16:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/87683948&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831490</commentid>
    <comment_count>2</comment_count>
      <attachid>449340</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-17 09:23:52 -0800</bug_when>
    <thetext>Created attachment 449340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831544</commentid>
    <comment_count>3</comment_count>
      <attachid>449340</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-01-17 11:51:26 -0800</bug_when>
    <thetext>Comment on attachment 449340
Patch

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

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:3385
&gt; +            tree-&gt;updateNodeProperty(*notification.first, AXPropertyName::IsEnabled);

Why do we have two methods that seem to do the same work? Can we combine those?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831550</commentid>
    <comment_count>4</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-17 12:30:09 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #3)
&gt; Comment on attachment 449340 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=449340&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:3385
&gt; &gt; +            tree-&gt;updateNodeProperty(*notification.first, AXPropertyName::IsEnabled);
&gt; 
&gt; Why do we have two methods that seem to do the same work? Can we combine
&gt; those?
Agreed — I noticed this too (https://bugs.webkit.org/show_bug.cgi?id=235246#c6). Refactoring it is on my to-do list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831551</commentid>
    <comment_count>5</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-17 12:37:38 -0800</bug_when>
    <thetext>Unless you&apos;d prefer I do that with this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831743</commentid>
    <comment_count>6</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-01-18 10:57:02 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #2)
&gt; Created attachment 449340 [details]
&gt; Patch

--- a/LayoutTests/accessibility/dynamic-attribute-changes-should-update-isenabled.html
+++ a/LayoutTests/accessibility/dynamic-attribute-changes-should-update-isenabled.html

+    function logAndEval(expression) {
+        debug(expression);
+        eval(expression);
+    }

Can&apos;t we use evalAndLog instead of adding a new one?

--- a/LayoutTests/resources/accessibility-helper.js
+++ a/LayoutTests/resources/accessibility-helper.js

The additions here are clever, but I&apos;m not sure that we should do this since a real client it is not going to wait for layouts to finish. We should fix the core to prevent the scenario we are avoiding here from happening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831746</commentid>
    <comment_count>7</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-18 11:14:20 -0800</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #6)
&gt; (In reply to Tyler Wilcock from comment #2)
&gt; &gt; Created attachment 449340 [details]
&gt; &gt; Patch
&gt; 
&gt; ---
&gt; a/LayoutTests/accessibility/dynamic-attribute-changes-should-update-
&gt; isenabled.html
&gt; +++
&gt; a/LayoutTests/accessibility/dynamic-attribute-changes-should-update-
&gt; isenabled.html
&gt; 
&gt; +    function logAndEval(expression) {
&gt; +        debug(expression);
&gt; +        eval(expression);
&gt; +    }
&gt; 
&gt; Can&apos;t we use evalAndLog instead of adding a new one?
Didn&apos;t know this existed, thanks! Will update.

&gt; --- a/LayoutTests/resources/accessibility-helper.js
&gt; +++ a/LayoutTests/resources/accessibility-helper.js
&gt; 
&gt; The additions here are clever, but I&apos;m not sure that we should do this since
&gt; a real client it is not going to wait for layouts to finish. We should fix
&gt; the core to prevent the scenario we are avoiding here from happening.
It&apos;s fine that a client wouldn&apos;t wait for layouts (or anything else) -- they would get the right behavior in this test scenario regardless. The problem WaitForStableLayout solves is a testing one, in that we don&apos;t want to get the right behavior purely by timing of layouts re-computing entire objects with the correct value, we want to make sure we&apos;re issuing the correct `updateNodeProperty`. WaitForStableLayout guarantees we&apos;re testing the latter behavior. Without WaitForStableLayout (or some similar mechanism), the test added in this patch would pass with and without the patch, which isn&apos;t correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831747</commentid>
    <comment_count>8</comment_count>
      <attachid>449405</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-18 11:16:04 -0800</bug_when>
    <thetext>Created attachment 449405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831755</commentid>
    <comment_count>9</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-01-18 11:38:11 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #7)
&gt; (In reply to Andres Gonzalez from comment #6)
&gt; &gt; (In reply to Tyler Wilcock from comment #2)
&gt; &gt; &gt; Created attachment 449340 [details]
&gt; &gt; &gt; Patch
&gt; &gt; 
&gt; &gt; ---
&gt; &gt; a/LayoutTests/accessibility/dynamic-attribute-changes-should-update-
&gt; &gt; isenabled.html
&gt; &gt; +++
&gt; &gt; a/LayoutTests/accessibility/dynamic-attribute-changes-should-update-
&gt; &gt; isenabled.html
&gt; &gt; 
&gt; &gt; +    function logAndEval(expression) {
&gt; &gt; +        debug(expression);
&gt; &gt; +        eval(expression);
&gt; &gt; +    }
&gt; &gt; 
&gt; &gt; Can&apos;t we use evalAndLog instead of adding a new one?
&gt; Didn&apos;t know this existed, thanks! Will update.
&gt; 
&gt; &gt; --- a/LayoutTests/resources/accessibility-helper.js
&gt; &gt; +++ a/LayoutTests/resources/accessibility-helper.js
&gt; &gt; 
&gt; &gt; The additions here are clever, but I&apos;m not sure that we should do this since
&gt; &gt; a real client it is not going to wait for layouts to finish. We should fix
&gt; &gt; the core to prevent the scenario we are avoiding here from happening.
&gt; It&apos;s fine that a client wouldn&apos;t wait for layouts (or anything else) -- they
&gt; would get the right behavior in this test scenario regardless. The problem
&gt; WaitForStableLayout solves is a testing one, in that we don&apos;t want to get
&gt; the right behavior purely by timing of layouts re-computing entire objects
&gt; with the correct value, we want to make sure we&apos;re issuing the correct
&gt; `updateNodeProperty`. WaitForStableLayout guarantees we&apos;re testing the
&gt; latter behavior. Without WaitForStableLayout (or some similar mechanism),
&gt; the test added in this patch would pass with and without the patch, which
&gt; isn&apos;t correct.

Ok, I see your point. Still think that it would be preferable not to have to do this. If we update one node property, we should see that the isolated tree updates just that property for that node, nothing else. The fact that there are more updates happening is the actual problem. So in that sense, this is a test workaround to test a property update. But we shouldn&apos;t need to do this at all if we were updating the isolated tree properly in the first place, i.e., not doing other spurious updates when a single property of a DOM node is updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831765</commentid>
    <comment_count>10</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-18 12:30:48 -0800</bug_when>
    <thetext>&gt; Ok, I see your point. Still think that it would be preferable not to have to
&gt; do this. If we update one node property, we should see that the isolated
&gt; tree updates just that property for that node, nothing else. The fact that
&gt; there are more updates happening is the actual problem. So in that sense,
&gt; this is a test workaround to test a property update. But we shouldn&apos;t need
&gt; to do this at all if we were updating the isolated tree properly in the
&gt; first place, i.e., not doing other spurious updates when a single property
&gt; of a DOM node is updated.
I do generally agree with you, but I think the layouts causing this issue are generated via our `debug` statements, which change the DOM dynamically, rather than the property updates. Specifically, because the `debug` statements append above the test content, each one will cause the test content to shift lower, requiring layout, and causing the issue WaitForStableLayout solves. I don&apos;t think updating the tree in this type of layout is &quot;wrong&quot;, just something we need to workaround for some tests. 

I theorize that this also wouldn&apos;t be a problem if `debug` and test output methods buffered output in memory until test completion rather than printing immediately. This behavior has caused us confusion in the past, too. But that&apos;s not a completely easy problem to solve either, since only async tests have an explicit test ending point in finishJSTest(). We would also need to figure out how to dump this buffer when the test runner tells the test to die via timeout, or crash (not even sure how that would work).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831786</commentid>
    <comment_count>11</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-01-18 13:21:14 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #10)
&gt; &gt; Ok, I see your point. Still think that it would be preferable not to have to
&gt; &gt; do this. If we update one node property, we should see that the isolated
&gt; &gt; tree updates just that property for that node, nothing else. The fact that
&gt; &gt; there are more updates happening is the actual problem. So in that sense,
&gt; &gt; this is a test workaround to test a property update. But we shouldn&apos;t need
&gt; &gt; to do this at all if we were updating the isolated tree properly in the
&gt; &gt; first place, i.e., not doing other spurious updates when a single property
&gt; &gt; of a DOM node is updated.
&gt; I do generally agree with you, but I think the layouts causing this issue
&gt; are generated via our `debug` statements, which change the DOM dynamically,
&gt; rather than the property updates. Specifically, because the `debug`
&gt; statements append above the test content, each one will cause the test
&gt; content to shift lower, requiring layout, and causing the issue
&gt; WaitForStableLayout solves. I don&apos;t think updating the tree in this type of
&gt; layout is &quot;wrong&quot;, just something we need to workaround for some tests. 
&gt; 
&gt; I theorize that this also wouldn&apos;t be a problem if `debug` and test output
&gt; methods buffered output in memory until test completion rather than printing
&gt; immediately. This behavior has caused us confusion in the past, too. But
&gt; that&apos;s not a completely easy problem to solve either, since only async tests
&gt; have an explicit test ending point in finishJSTest(). We would also need to
&gt; figure out how to dump this buffer when the test runner tells the test to
&gt; die via timeout, or crash (not even sure how that would work).

We only updateIsolatedTree for certain notifications, and AXLayoutComplete is not one of them. Why are we updating the isolated tree when debug adds text to the page?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831854</commentid>
    <comment_count>12</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-18 15:27:30 -0800</bug_when>
    <thetext>&gt; We only updateIsolatedTree for certain notifications, and AXLayoutComplete
&gt; is not one of them. Why are we updating the isolated tree when debug adds
&gt; text to the page?
I debugged it and hit a breakpoint where we calculate the correct value thanks to layout caused by `debug`. Here&apos;s a stacktrace, but the TLDR is that we get an AXChildrenChanged notification. Then, in AXIsolatedTree::updateChildren, we hit the &quot;last resort&quot; case:

if (updatedChild || removals.size()) {
    // Make the children IDs of the isolated object to be the same as the AXObject&apos;s.
    Locker locker { m_changeLogLock };
    updateChildrenIDs(axAncestor-&gt;objectID(), WTFMove(axChildrenIDs));
} else {
    // Nothing was updated. As a last resort, update the subtree.
    updateSubtree(*axAncestor);
}

And axAncestor is the web area:

(objectID 19
  (identifierAttribute )
  (roleValue WebArea)
  (address 0x1030362a0)
  (wrapper 0x139684120)
  (parentObject 18)
  (remoteParentObject 0x1396b6190))

* thread #1, queue = &apos;com.apple.main-thread&apos;, stop reason = breakpoint 1.1
    frame #0: 0x0000000148a54a74 WebCore`WebCore::AXIsolatedObject::initializeAttributeData(this=0x00000001052b2e00, coreObject=0x0000000105089940, isRoot=false) at AXIsolatedObject.cpp:99:17
    frame #1: 0x0000000148a53fb4 WebCore`WebCore::AXIsolatedObject::AXIsolatedObject(this=0x00000001052b2e00, object=0x0000000105089940, tree=0x0000000105236a00, parentID=(m_identifier = 22)) at AXIsolatedObject.cpp:48:9
    frame #2: 0x0000000148a5bcb8 WebCore`WebCore::AXIsolatedObject::AXIsolatedObject(this=0x00000001052b2e00, object=0x0000000105089940, tree=0x0000000105236a00, parentID=(m_identifier = 22)) at AXIsolatedObject.cpp:45:1
    frame #3: 0x0000000148a5bd10 WebCore`WebCore::AXIsolatedObject::create(object=0x0000000105089940, tree=0x0000000105236a00, parentID=(m_identifier = 22)) at AXIsolatedObject.cpp:57:26
    frame #4: 0x0000000148a69510 WebCore`WebCore::AXIsolatedTree::createSubtree(this=0x0000000105236a00, axObject=0x0000000105089940, parentID=(m_identifier = 22), attachWrapper=false) at AXIsolatedTree.cpp:214:19
    frame #5: 0x0000000148a69758 WebCore`WebCore::AXIsolatedTree::createSubtree(this=0x0000000105236a00, axObject=0x0000000105089800, parentID=(m_identifier = 19), attachWrapper=false) at AXIsolatedTree.cpp:235:22
    frame #6: 0x0000000148a69758 WebCore`WebCore::AXIsolatedTree::createSubtree(this=0x0000000105236a00, axObject=0x0000000105088f40, parentID=(m_identifier = 18), attachWrapper=false) at AXIsolatedTree.cpp:235:22
    frame #7: 0x0000000148a68644 WebCore`WebCore::AXIsolatedTree::generateSubtree(this=0x0000000105236a00, axObject=0x0000000105088f40, axParent=0x0000000105203d80, attachWrapper=false) at AXIsolatedTree.cpp:197:19
    frame #8: 0x0000000148a6a768 WebCore`WebCore::AXIsolatedTree::updateSubtree(this=0x0000000105236a00, axObject=0x0000000105088f40) at AXIsolatedTree.cpp:304:5
    frame #9: 0x0000000148a6b0c8 WebCore`WebCore::AXIsolatedTree::updateChildren(this=0x0000000105236a00, axObject=0x00000001050896c0) at AXIsolatedTree.cpp:375:9
  * frame #10: 0x000000014897fa18 WebCore`WebCore::AXObjectCache::updateIsolatedTree(this=0x000000010512e6e0, notifications={ size = 1, capacity = 1 }) at AXObjectCache.cpp:3416:23
    frame #11: 0x0000000148977954 WebCore`WebCore::AXObjectCache::notificationPostTimerFired(this=0x000000010512e6e0) at AXObjectCache.cpp:1126:5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831919</commentid>
    <comment_count>13</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-18 18:10:17 -0800</bug_when>
    <thetext>I think to your point, AXChildrenChanged is not the same as layout, so the WaitForStableLayout abstraction in my patch is probably wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831985</commentid>
    <comment_count>14</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-01-19 04:26:42 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #12)
&gt; &gt; We only updateIsolatedTree for certain notifications, and AXLayoutComplete
&gt; &gt; is not one of them. Why are we updating the isolated tree when debug adds
&gt; &gt; text to the page?
&gt; I debugged it and hit a breakpoint where we calculate the correct value
&gt; thanks to layout caused by `debug`. Here&apos;s a stacktrace, but the TLDR is
&gt; that we get an AXChildrenChanged notification. Then, in
&gt; AXIsolatedTree::updateChildren, we hit the &quot;last resort&quot; case:
&gt; 
&gt; if (updatedChild || removals.size()) {
&gt;     // Make the children IDs of the isolated object to be the same as the
&gt; AXObject&apos;s.
&gt;     Locker locker { m_changeLogLock };
&gt;     updateChildrenIDs(axAncestor-&gt;objectID(), WTFMove(axChildrenIDs));
&gt; } else {
&gt;     // Nothing was updated. As a last resort, update the subtree.
&gt;     updateSubtree(*axAncestor);
&gt; }
&gt; 
&gt; And axAncestor is the web area:
&gt; 
&gt; (objectID 19
&gt;   (identifierAttribute )
&gt;   (roleValue WebArea)
&gt;   (address 0x1030362a0)
&gt;   (wrapper 0x139684120)
&gt;   (parentObject 18)
&gt;   (remoteParentObject 0x1396b6190))
&gt; 
&gt; * thread #1, queue = &apos;com.apple.main-thread&apos;, stop reason = breakpoint 1.1
&gt;     frame #0: 0x0000000148a54a74
&gt; WebCore`WebCore::AXIsolatedObject::
&gt; initializeAttributeData(this=0x00000001052b2e00,
&gt; coreObject=0x0000000105089940, isRoot=false) at AXIsolatedObject.cpp:99:17
&gt;     frame #1: 0x0000000148a53fb4
&gt; WebCore`WebCore::AXIsolatedObject::AXIsolatedObject(this=0x00000001052b2e00,
&gt; object=0x0000000105089940, tree=0x0000000105236a00, parentID=(m_identifier =
&gt; 22)) at AXIsolatedObject.cpp:48:9
&gt;     frame #2: 0x0000000148a5bcb8
&gt; WebCore`WebCore::AXIsolatedObject::AXIsolatedObject(this=0x00000001052b2e00,
&gt; object=0x0000000105089940, tree=0x0000000105236a00, parentID=(m_identifier =
&gt; 22)) at AXIsolatedObject.cpp:45:1
&gt;     frame #3: 0x0000000148a5bd10
&gt; WebCore`WebCore::AXIsolatedObject::create(object=0x0000000105089940,
&gt; tree=0x0000000105236a00, parentID=(m_identifier = 22)) at
&gt; AXIsolatedObject.cpp:57:26
&gt;     frame #4: 0x0000000148a69510
&gt; WebCore`WebCore::AXIsolatedTree::createSubtree(this=0x0000000105236a00,
&gt; axObject=0x0000000105089940, parentID=(m_identifier = 22),
&gt; attachWrapper=false) at AXIsolatedTree.cpp:214:19
&gt;     frame #5: 0x0000000148a69758
&gt; WebCore`WebCore::AXIsolatedTree::createSubtree(this=0x0000000105236a00,
&gt; axObject=0x0000000105089800, parentID=(m_identifier = 19),
&gt; attachWrapper=false) at AXIsolatedTree.cpp:235:22
&gt;     frame #6: 0x0000000148a69758
&gt; WebCore`WebCore::AXIsolatedTree::createSubtree(this=0x0000000105236a00,
&gt; axObject=0x0000000105088f40, parentID=(m_identifier = 18),
&gt; attachWrapper=false) at AXIsolatedTree.cpp:235:22
&gt;     frame #7: 0x0000000148a68644
&gt; WebCore`WebCore::AXIsolatedTree::generateSubtree(this=0x0000000105236a00,
&gt; axObject=0x0000000105088f40, axParent=0x0000000105203d80,
&gt; attachWrapper=false) at AXIsolatedTree.cpp:197:19
&gt;     frame #8: 0x0000000148a6a768
&gt; WebCore`WebCore::AXIsolatedTree::updateSubtree(this=0x0000000105236a00,
&gt; axObject=0x0000000105088f40) at AXIsolatedTree.cpp:304:5
&gt;     frame #9: 0x0000000148a6b0c8
&gt; WebCore`WebCore::AXIsolatedTree::updateChildren(this=0x0000000105236a00,
&gt; axObject=0x00000001050896c0) at AXIsolatedTree.cpp:375:9
&gt;   * frame #10: 0x000000014897fa18
&gt; WebCore`WebCore::AXObjectCache::updateIsolatedTree(this=0x000000010512e6e0,
&gt; notifications={ size = 1, capacity = 1 }) at AXObjectCache.cpp:3416:23
&gt;     frame #11: 0x0000000148977954
&gt; WebCore`WebCore::AXObjectCache::
&gt; notificationPostTimerFired(this=0x000000010512e6e0) at
&gt; AXObjectCache.cpp:1126:5

Yes, that&apos;s the real bug, we shouldn&apos;t be re-generating the web area subtree as a result of calling debug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833101</commentid>
    <comment_count>15</comment_count>
      <attachid>449753</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-23 09:53:54 -0800</bug_when>
    <thetext>Created attachment 449753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833147</commentid>
    <comment_count>16</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-23 15:04:55 -0800</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=235389 has fixed the root issue, so this new patch leaves just the new test and the small AXPropertyName::IsEnabled handling that has already been r+&apos;d by Chris and also looked over by Andres. Committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833149</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-23 15:11:42 -0800</bug_when>
    <thetext>Committed r288425 (246316@main): &lt;https://commits.webkit.org/246316@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 449753.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449340</attachid>
            <date>2022-01-17 09:23:52 -0800</date>
            <delta_ts>2022-01-18 11:16:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235295-20220117112352.patch</filename>
            <type>text/plain</type>
            <size>11626</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmOTQ4ZjI3NzBmMTA0
MjQ3OTAyYzdjYWE0NjAwYTczYzk5MDQ4Zi4uM2I1MmU3YTYzZmMxNTY3ZWZkNmRlODY0MWRlZDkw
NzEyMWMwZDQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAxLTE3ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVggSXNvbGF0ZWQgVHJl
ZSBNb2RlOiBSZS1jb21wdXRlIEFYUHJvcGVydHlOYW1lOjpJc0VuYWJsZWQgd2hlbiBhIG5vZGUg
ZXhwZXJpZW5jZXMgQVhEaXNhYmxlZFN0YXRlQ2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1Mjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9keW5hbWljLWF0
dHJpYnV0ZS1jaGFuZ2VzLXNob3VsZC11cGRhdGUtaXNlbmFibGVkLmh0bWwKKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjp1cGRhdGVJc29sYXRlZFRyZWUpOgorICAgICAgICBSZS1jb21wdXRlIEFYUHJv
cGVydHlOYW1lOjpJc0VuYWJsZWQgd2hlbiByZWNlaXZpbmcgYW4gQVhEaXNhYmxlZFN0YXRlQ2hh
bmdlZCBub3RpZmljYXRpb24uCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnVw
ZGF0ZU5vZGVQcm9wZXJ0eSk6CisgICAgICAgIEhhbmRsZSByZXF1ZXN0cyBmb3IgQVhQcm9wZXJ0
eU5hbWU6OklzRW5hYmxlZCB1cGRhdGVzLgorCiAyMDIyLTAxLTE3ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIFNlcnZpY2VXb3JrZXJDbGllbnQuaWQg
YSBVVUlEIGluc3RlYWQgb2YgYSBzdHJpbmcgZGVyaXZlZCBmcm9tIGEgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwCmluZGV4IGI0ZGMwYTc1MzEzZjY1YWYwYjRmYmZlN2FjNWJmZmRhN2U3NWI0
MTIuLmZhYzhmZDJiZmZiMGIzY2ZkMGE1OGZmMzVlZDY3NzRmMTcyOWIwNDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMzMwNiw2ICsz
MzA2LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVJc29sYXRlZFRyZWUoQVhDb3JlT2Jq
ZWN0JiBvYmplY3QsIEFYTm90aWZpY2F0aW9uIG5vdGkKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBBWERpc2FibGVkU3RhdGVDaGFuZ2VkOgogICAgICAgICB0cmVlLT51cGRhdGVOb2RlUHJvcGVy
dHkob2JqZWN0LCBBWFByb3BlcnR5TmFtZTo6Q2FuU2V0Rm9jdXNBdHRyaWJ1dGUpOworICAgICAg
ICB0cmVlLT51cGRhdGVOb2RlUHJvcGVydHkob2JqZWN0LCBBWFByb3BlcnR5TmFtZTo6SXNFbmFi
bGVkKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2VkOgog
ICAgICAgICB0cmVlLT51cGRhdGVOb2RlUHJvcGVydHkob2JqZWN0LCBBWFByb3BlcnR5TmFtZTo6
U29ydERpcmVjdGlvbik7CkBAIC0zMzgxLDYgKzMzODIsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6
OnVwZGF0ZUlzb2xhdGVkVHJlZShjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxBWENvcmVP
YmplYwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQVhEaXNhYmxlZFN0YXRlQ2hh
bmdlZDoKICAgICAgICAgICAgIHRyZWUtPnVwZGF0ZU5vZGVQcm9wZXJ0eSgqbm90aWZpY2F0aW9u
LmZpcnN0LCBBWFByb3BlcnR5TmFtZTo6Q2FuU2V0Rm9jdXNBdHRyaWJ1dGUpOworICAgICAgICAg
ICAgdHJlZS0+dXBkYXRlTm9kZVByb3BlcnR5KCpub3RpZmljYXRpb24uZmlyc3QsIEFYUHJvcGVy
dHlOYW1lOjpJc0VuYWJsZWQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQVhT
b3J0RGlyZWN0aW9uQ2hhbmdlZDoKICAgICAgICAgICAgIHRyZWUtPnVwZGF0ZU5vZGVQcm9wZXJ0
eSgqbm90aWZpY2F0aW9uLmZpcnN0LCBBWFByb3BlcnR5TmFtZTo6U29ydERpcmVjdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5kZXggYzY3MWY3MWVkYjdmN2I5ZDNlNTZmNjU3Mzg5NjIw
YTc3MjUxY2FmYS4uNjNhOWU1Njg0NGQ1NDJiYjU1MDcyODNiY2M2MDc4YjFiYWI1YzdjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAtMjc3LDYgKzI3Nyw5IEBAIHZvaWQgQVhJc29sYXRl
ZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0eShjb25zdCBBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBB
WFByb3BlcnR5CiAgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6SXNDaGVja2VkOgogICAgICAgICBw
cm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6OklzQ2hlY2tlZCwgYXhPYmplY3QuaXNDaGVj
a2VkKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpJc0VuYWJs
ZWQ6CisgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6SXNFbmFibGVkLCBh
eE9iamVjdC5pc0VuYWJsZWQoKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhQcm9wZXJ0
eU5hbWU6OlNvcnREaXJlY3Rpb246CiAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5
TmFtZTo6U29ydERpcmVjdGlvbiwgc3RhdGljX2Nhc3Q8aW50PihheE9iamVjdC5zb3J0RGlyZWN0
aW9uKCkpKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2MyMTkyOWVlNGRmMjE2ZWJkODcyYmE4
ZmMwNjdkOWY1NzRmMTE4YS4uNDVkNzY5NzQ5MWU1ODM2OTU5MzNiMjM5MDVjODJjODdiNDhiMDM1
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIyLTAxLTE3ICBUeWxlciBXaWxjb2NrICA8dHls
ZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVggSXNvbGF0ZWQgVHJlZSBNb2RlOiBSZS1jb21w
dXRlIEFYUHJvcGVydHlOYW1lOjpJc0VuYWJsZWQgd2hlbiBhIG5vZGUgZXhwZXJpZW5jZXMgQVhE
aXNhYmxlZFN0YXRlQ2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM1Mjk1CisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgdGVzdCB2ZXJp
ZnlpbmcgdGhhdCBpc0VuYWJsZWQgaXMgcmUtY29tcHV0ZWQgd2hlbiBhbgorICAgICAgICBvYmpl
Y3QncyBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBp
bnRyb2R1Y2VzIGEgbmV3IFdhaXRGb3JTdGFibGVMYXlvdXQgbWVjaGFuaXNtLiBUaGlzCisgICAg
ICAgIHByZXZlbnRzIHVzIGZyb20gY29tcHV0aW5nIHRoZSBjb3JyZWN0IHZhbHVlICJieSBhY2Np
ZGVudCIsIGkuZS4gbGF5b3V0CisgICAgICAgIGNvbXB1dGluZyB0aGUgY29ycmVjdCB2YWx1ZSBv
ZiBhbiBBWCBpc29sYXRlZCB0cmVlIG9iamVjdCBieSB0aHJvd2luZyB0aGUKKyAgICAgICAgd2hv
bGUgb2JqZWN0IGF3YXkgYW5kIGdldHRpbmcgdGhlIGNvcnJlY3QgdmFsdWUgcHVyZWx5IGJ5IHRp
bWluZywgcmF0aGVyCisgICAgICAgIHRoYW4gY29tcHV0aW5nIHRoZSBjb3JyZWN0IHZhbHVlIHZp
YSBgdXBkYXRlTm9kZVByb3BlcnR5YC4KKworICAgICAgICBXaXRob3V0IFdhaXRGb3JTdGFibGVM
YXlvdXQsIHRoZSBuZXcgdGVzdCB3b3VsZCBwYXNzIHdpdGggYW5kIHdpdGhvdXQKKyAgICAgICAg
dGhpcyBwYXRjaCwgd2hpY2ggaXMgd3JvbmcuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2R5bmFtaWMtYXR0cmlidXRlLWNo
YW5nZXMtc2hvdWxkLXVwZGF0ZS1pc2VuYWJsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2R5bmFtaWMtYXR0cmlidXRlLWNoYW5nZXMtc2hvdWxkLXVwZGF0
ZS1pc2VuYWJsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogcmVzb3VyY2VzL2FjY2Vzc2liaWxp
dHktaGVscGVyLmpzOgorICAgICAgICAoc2xlZXApOiBBZGRlZC4KKyAgICAgICAgKGFzeW5jIHdh
aXRGb3JTdGFibGVMYXlvdXQpOiBBZGRlZC4KKyAgICAgICAgKGFzeW5jIGV4cGVjdEFzeW5jRXhw
cmVzc2lvbik6CisgICAgICAgIEFkZCBhbiBvcHRpb25hbCBXYWl0Rm9yU3RhYmxlTGF5b3V0IGFy
Z3VtZW50LCBkZWZhdWx0aW5nIHRvIGBOT2AuCisKIDIwMjItMDEtMTcgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5p
ZCBhIFVVSUQgaW5zdGVhZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9keW5hbWljLWF0dHJpYnV0ZS1jaGFuZ2VzLXNob3VsZC11cGRhdGUtaXNlbmFibGVkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1hdHRyaWJ1dGUtY2hh
bmdlcy1zaG91bGQtdXBkYXRlLWlzZW5hYmxlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODI1
NGRjZDFkYmUzNDgxNGVjM2RlNTA2Nzc4NGQwYjgxYWNiNjc4OAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1hdHRyaWJ1dGUtY2hhbmdlcy1zaG91
bGQtdXBkYXRlLWlzZW5hYmxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOCBAQAorVGhpcyB0
ZXN0IGVuc3VyZXMgdGhhdCBkeW5hbWljYWxseSBjaGFuZ2luZyBlbGVtZW50cyBkaXNhYmxlZCBh
bmQgYXJpYS1kaXNhYmxlZCBhdHRyaWJ1dGVzIHByb3Blcmx5IHVwZGF0ZXMgdGhlaXIgaXNFbmFi
bGVkIHByb3BlcnR5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVmVyaWZ5aW5n
IGluaXRpYWwgZWxlbWVudCBlbmFibGVkIHN0YXRlLgorUEFTUyBheEJ1dHRvbi5pc0VuYWJsZWQg
aXMgdHJ1ZQorUEFTUyBheE9wdGlvbi5pc0VuYWJsZWQgaXMgdHJ1ZQorZG9tQnV0dG9uLmFyaWFE
aXNhYmxlZCA9IHRydWUKK1BBU1MgYXhCdXR0b24uaXNFbmFibGVkID09PSBmYWxzZQorZG9tQnV0
dG9uLmFyaWFEaXNhYmxlZCA9IGZhbHNlCitQQVNTIGF4QnV0dG9uLmlzRW5hYmxlZCA9PT0gdHJ1
ZQorZG9tQnV0dG9uLmRpc2FibGVkID0gdHJ1ZQorUEFTUyBheEJ1dHRvbi5pc0VuYWJsZWQgPT09
IGZhbHNlCitkb21CdXR0b24uZGlzYWJsZWQgPSBmYWxzZQorUEFTUyBheEJ1dHRvbi5pc0VuYWJs
ZWQgPT09IHRydWUKK2RvbU9wdGlvbi5hcmlhRGlzYWJsZWQgPSB0cnVlCitQQVNTIGF4T3B0aW9u
LmlzRW5hYmxlZCA9PT0gZmFsc2UKK2RvbU9wdGlvbi5hcmlhRGlzYWJsZWQgPSBmYWxzZQorUEFT
UyBheE9wdGlvbi5pc0VuYWJsZWQgPT09IHRydWUKK2RvbU9wdGlvbi5kaXNhYmxlZCA9IHRydWUK
K1BBU1MgYXhPcHRpb24uaXNFbmFibGVkID09PSBmYWxzZQorZG9tT3B0aW9uLmRpc2FibGVkID0g
ZmFsc2UKK1BBU1MgYXhPcHRpb24uaXNFbmFibGVkID09PSB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0NsaWNrIG1lCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtYXR0cmlidXRlLWNoYW5nZXMtc2hvdWxk
LXVwZGF0ZS1pc2VuYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1p
Yy1hdHRyaWJ1dGUtY2hhbmdlcy1zaG91bGQtdXBkYXRlLWlzZW5hYmxlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFjODM5MDQyY2IxNzcxODUzOTkyNzRkMmE1ZWM2OGQ5NTY3ODZhMTYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtYXR0cmlidXRlLWNoYW5n
ZXMtc2hvdWxkLXVwZGF0ZS1pc2VuYWJsZWQuaHRtbApAQCAtMCwwICsxLDY3IEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+CisKKzxidXR0b24gaWQ9ImJ1dHRvbiI+Q2xpY2sgbWU8L2J1dHRvbj4KKwor
PHNlbGVjdCBtdWx0aXBsZSBpZD0ic2VsZWN0Ij4KKyAgICA8b3B0aW9uIGlkPSJvcHRpb24xIj5P
cHRpb24gMTwvb3B0aW9uPgorICAgIDxvcHRpb24+T3B0aW9uIDI8L29wdGlvbj4KKyAgICA8b3B0
aW9uPk9wdGlvbiAzPC9vcHRpb24+Cis8L3NlbGVjdD4KKworPHNjcmlwdD4KKyAgICBkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBkeW5hbWljYWxseSBjaGFuZ2luZyBlbGVtZW50
cyBkaXNhYmxlZCBhbmQgYXJpYS1kaXNhYmxlZCBhdHRyaWJ1dGVzIHByb3Blcmx5IHVwZGF0ZXMg
dGhlaXIgaXNFbmFibGVkIHByb3BlcnR5LiIpOworCisgICAgZnVuY3Rpb24gbG9nQW5kRXZhbChl
eHByZXNzaW9uKSB7CisgICAgICAgIGRlYnVnKGV4cHJlc3Npb24pOworICAgICAgICBldmFsKGV4
cHJlc3Npb24pOworICAgIH0KKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIpIHsKKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBheE9wdGlvbiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgib3B0aW9uMSIpOworICAgICAgICB2YXIgZG9tT3B0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIm9wdGlvbjEiKTsKKyAgICAgICAgdmFyIGF4QnV0dG9uID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJidXR0b24iKTsKKyAgICAgICAgdmFyIGRv
bUJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b24iKTsKKyAgICAgICAgZGVi
dWcoIlZlcmlmeWluZyBpbml0aWFsIGVsZW1lbnQgZW5hYmxlZCBzdGF0ZS4iKTsKKyAgICAgICAg
c2hvdWxkQmUoImF4QnV0dG9uLmlzRW5hYmxlZCIsICJ0cnVlIik7CisgICAgICAgIHNob3VsZEJl
KCJheE9wdGlvbi5pc0VuYWJsZWQiLCAidHJ1ZSIpOworCisgICAgICAgIHNldFRpbWVvdXQoYXN5
bmMgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBsb2dBbmRFdmFsKCJkb21CdXR0b24uYXJpYURp
c2FibGVkID0gdHJ1ZSIpOworICAgICAgICAgICAgYXdhaXQgZXhwZWN0QXN5bmNFeHByZXNzaW9u
KCJheEJ1dHRvbi5pc0VuYWJsZWQiLCAiZmFsc2UiLCBXYWl0Rm9yU3RhYmxlTGF5b3V0LllFUyk7
CisKKyAgICAgICAgICAgIGxvZ0FuZEV2YWwoImRvbUJ1dHRvbi5hcmlhRGlzYWJsZWQgPSBmYWxz
ZSIpOworICAgICAgICAgICAgYXdhaXQgZXhwZWN0QXN5bmNFeHByZXNzaW9uKCJheEJ1dHRvbi5p
c0VuYWJsZWQiLCAidHJ1ZSIsIFdhaXRGb3JTdGFibGVMYXlvdXQuWUVTKTsKKworICAgICAgICAg
ICAgbG9nQW5kRXZhbCgiZG9tQnV0dG9uLmRpc2FibGVkID0gdHJ1ZSIpOworICAgICAgICAgICAg
YXdhaXQgZXhwZWN0QXN5bmNFeHByZXNzaW9uKCJheEJ1dHRvbi5pc0VuYWJsZWQiLCAiZmFsc2Ui
LCBXYWl0Rm9yU3RhYmxlTGF5b3V0LllFUyk7CisKKyAgICAgICAgICAgIGxvZ0FuZEV2YWwoImRv
bUJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlIik7CisgICAgICAgICAgICBhd2FpdCBleHBlY3RBc3lu
Y0V4cHJlc3Npb24oImF4QnV0dG9uLmlzRW5hYmxlZCIsICJ0cnVlIiwgV2FpdEZvclN0YWJsZUxh
eW91dC5ZRVMpOworCisgICAgICAgICAgICBsb2dBbmRFdmFsKCJkb21PcHRpb24uYXJpYURpc2Fi
bGVkID0gdHJ1ZSIpOworICAgICAgICAgICAgYXdhaXQgZXhwZWN0QXN5bmNFeHByZXNzaW9uKCJh
eE9wdGlvbi5pc0VuYWJsZWQiLCAiZmFsc2UiLCBXYWl0Rm9yU3RhYmxlTGF5b3V0LllFUyk7CisK
KyAgICAgICAgICAgIGxvZ0FuZEV2YWwoImRvbU9wdGlvbi5hcmlhRGlzYWJsZWQgPSBmYWxzZSIp
OworICAgICAgICAgICAgYXdhaXQgZXhwZWN0QXN5bmNFeHByZXNzaW9uKCJheE9wdGlvbi5pc0Vu
YWJsZWQiLCAidHJ1ZSIsIFdhaXRGb3JTdGFibGVMYXlvdXQuWUVTKTsKKworICAgICAgICAgICAg
bG9nQW5kRXZhbCgiZG9tT3B0aW9uLmRpc2FibGVkID0gdHJ1ZSIpOworICAgICAgICAgICAgYXdh
aXQgZXhwZWN0QXN5bmNFeHByZXNzaW9uKCJheE9wdGlvbi5pc0VuYWJsZWQiLCAiZmFsc2UiLCBX
YWl0Rm9yU3RhYmxlTGF5b3V0LllFUyk7CisKKyAgICAgICAgICAgIGxvZ0FuZEV2YWwoImRvbU9w
dGlvbi5kaXNhYmxlZCA9IGZhbHNlIik7CisgICAgICAgICAgICBhd2FpdCBleHBlY3RBc3luY0V4
cHJlc3Npb24oImF4T3B0aW9uLmlzRW5hYmxlZCIsICJ0cnVlIiwgV2FpdEZvclN0YWJsZUxheW91
dC5ZRVMpOworCisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSwgMCk7Cisg
ICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyBiL0xheW91dFRlc3RzL3Jlc291
cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcwppbmRleCBmYmViNWY3ZGJiNDdlNDdkYWFjNDc1
NzEzOWNjYWYzYjUxOTZiMmU3Li4zNTU3NDdjY2EzYjE4NGY5Mjg4ZjEwNTg0NmM4MWNhY2E4YjU3
N2RlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxw
ZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpz
CkBAIC0xMjcsMTQgKzEyNyw0OSBAQCBhc3luYyBmdW5jdGlvbiB3YWl0Rm9yRWxlbWVudEJ5SWQo
aWQpIHsKICAgICByZXR1cm4gZWxlbWVudDsKIH0KIAotYXN5bmMgZnVuY3Rpb24gZXhwZWN0QXN5
bmNFeHByZXNzaW9uKGV4cHJlc3Npb24sIGV4cGVjdGVkVmFsdWUpIHsKK2Z1bmN0aW9uIHNsZWVw
KG1zKSB7CisgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2
ZSwgbXMpKTsKK30KKworLy8gVGhpcyBmdW5jdGlvbiB3YWl0cyBmb3IgbGF5b3V0cyB0byBiZSBz
dGFibGUgYmVmb3JlIHJlc29sdmluZy4KKy8vIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuIGV4cGVj
dGluZyB2YWx1ZXMgKGUuZy4gaW4gZXhwZWN0QXN5bmNFeHByZXNzaW9uKSwgYXMgaXQgY2FuIHBy
ZXZlbnQgZ2V0dGluZyB0aGUKKy8vIGNvcnJlY3QgdmFsdWUgImJ5IGFjY2lkZW50IiwgaS5lLiBs
YXlvdXQgY29tcHV0aW5nIHRoZSBjb3JyZWN0IHZhbHVlIG9mIGFuIEFYIGlzb2xhdGVkIHRyZWUg
b2JqZWN0IGJ5CisvLyB0aHJvd2luZyB0aGUgd2hvbGUgb2JqZWN0IGF3YXkgYW5kIGdldHRpbmcg
dGhlIGNvcnJlY3QgdmFsdWUgcHVyZWx5IGJ5IHRpbWluZywgcmF0aGVyIHRoYW4gY29tcHV0aW5n
CisvLyB0aGUgY29ycmVjdCB2YWx1ZSB2aWEgYHVwZGF0ZU5vZGVQcm9wZXJ0eWAuCithc3luYyBm
dW5jdGlvbiB3YWl0Rm9yU3RhYmxlTGF5b3V0KCkgeworICAgIGxldCBsYXN0TGF5b3V0Q291bnQg
PSBpbnRlcm5hbHMubGF5b3V0Q291bnQ7CisgICAgbGV0IHNob3VsZFJ1blRpbWVyID0gdHJ1ZTsK
KyAgICB3aGlsZSAoc2hvdWxkUnVuVGltZXIpIHsKKyAgICAgICAgLy8gc2V0VGltZW91dCAodXNl
ZCBieSBzbGVlcCkgd2lsbCBxdWV1ZSB1cyBiZWhpbmQgYW55IHBlbmRpbmcgbGF5b3V0cy4KKyAg
ICAgICAgYXdhaXQgc2xlZXAoMSk7CisgICAgICAgIGlmIChpbnRlcm5hbHMubGF5b3V0Q291bnQg
IT09IGxhc3RMYXlvdXRDb3VudCkKKyAgICAgICAgICAgIGxhc3RMYXlvdXRDb3VudCA9IGludGVy
bmFscy5sYXlvdXRDb3VudDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2hvdWxkUnVuVGlt
ZXIgPSBmYWxzZTsKKyAgICB9Cit9CisKK2NvbnN0IFdhaXRGb3JTdGFibGVMYXlvdXQgPSBPYmpl
Y3QuZnJlZXplKHsKKyAgICBZRVM6IFN5bWJvbCgiWUVTIiksCisgICAgTk86IFN5bWJvbCgiTk8i
KSwKK30pOworCithc3luYyBmdW5jdGlvbiBleHBlY3RBc3luY0V4cHJlc3Npb24oZXhwcmVzc2lv
biwgZXhwZWN0ZWRWYWx1ZSwgc2hvdWxkV2FpdEZvclN0YWJsZUxheW91dCA9IFdhaXRGb3JTdGFi
bGVMYXlvdXQuTk8pIHsKICAgICBpZiAodHlwZW9mIGV4cHJlc3Npb24gIT09ICJzdHJpbmciKQog
ICAgICAgICBkZWJ1ZygiV0FSTjogVGhlIGV4cHJlc3Npb24gYXJnIGluIHdhaXRGb3JFeHByZXNz
aW9uKCkgc2hvdWxkIGJlIGEgc3RyaW5nLiIpOwogCisgICAgLy8gV2FpdCBvdXQgYW55IGxheW91
dHMgdGhhdCBtYXkgaGF2ZSBiZWVuIGNhdXNlZCBieSBKYXZhU2NyaXB0IHJ1bm5pbmcgYmVmb3Jl
IHRoaXMgZnVuY3Rpb24uCisgICAgaWYgKHNob3VsZFdhaXRGb3JTdGFibGVMYXlvdXQgPT09IFdh
aXRGb3JTdGFibGVMYXlvdXQuWUVTKQorICAgICAgICBhd2FpdCB3YWl0Rm9yU3RhYmxlTGF5b3V0
KCk7CisKICAgICBjb25zdCBldmFsRXhwcmVzc2lvbiA9IGAke2V4cHJlc3Npb259ID09PSAke2V4
cGVjdGVkVmFsdWV9YDsKICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+IHsKICAgICAgICAgcmV0dXJu
IGV2YWwoZXZhbEV4cHJlc3Npb24pOwogICAgIH0pOwogICAgIGRlYnVnKGBQQVNTICR7ZXZhbEV4
cHJlc3Npb259YCk7CisKKyAgICAvLyBgZGVidWdgIGNhdXNlcyBhIGxheW91dCwgc28gZW5zdXJl
IHRoZSBlZmZlY3RzIG9mIHRoYXQgbGF5b3V0IGRvbid0IGxlYWsgb3V0c2lkZSB0aGlzIGZ1bmN0
aW9uLgorICAgIGlmIChzaG91bGRXYWl0Rm9yU3RhYmxlTGF5b3V0ID09PSBXYWl0Rm9yU3RhYmxl
TGF5b3V0LllFUykKKyAgICAgICAgYXdhaXQgd2FpdEZvclN0YWJsZUxheW91dCgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449405</attachid>
            <date>2022-01-18 11:16:04 -0800</date>
            <delta_ts>2022-01-23 09:53:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235295-20220118131603.patch</filename>
            <type>text/plain</type>
            <size>11523</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmOTQ4ZjI3NzBmMTA0
MjQ3OTAyYzdjYWE0NjAwYTczYzk5MDQ4Zi4uZmM4ZjQzN2E5ZmQ3NWM2MDI0M2QyYjYxNTlkYTUy
MGYxNDE1NGZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAxLTE3ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVggSXNvbGF0ZWQgVHJl
ZSBNb2RlOiBSZS1jb21wdXRlIEFYUHJvcGVydHlOYW1lOjpJc0VuYWJsZWQgd2hlbiBhIG5vZGUg
ZXhwZXJpZW5jZXMgQVhEaXNhYmxlZFN0YXRlQ2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1Mjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Q2hyaXMgRmxlaXphY2guCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9keW5hbWljLWF0
dHJpYnV0ZS1jaGFuZ2VzLXNob3VsZC11cGRhdGUtaXNlbmFibGVkLmh0bWwKKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjp1cGRhdGVJc29sYXRlZFRyZWUpOgorICAgICAgICBSZS1jb21wdXRlIEFYUHJv
cGVydHlOYW1lOjpJc0VuYWJsZWQgd2hlbiByZWNlaXZpbmcgYW4gQVhEaXNhYmxlZFN0YXRlQ2hh
bmdlZCBub3RpZmljYXRpb24uCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnVw
ZGF0ZU5vZGVQcm9wZXJ0eSk6CisgICAgICAgIEhhbmRsZSByZXF1ZXN0cyBmb3IgQVhQcm9wZXJ0
eU5hbWU6OklzRW5hYmxlZCB1cGRhdGVzLgorCiAyMDIyLTAxLTE3ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIFNlcnZpY2VXb3JrZXJDbGllbnQuaWQg
YSBVVUlEIGluc3RlYWQgb2YgYSBzdHJpbmcgZGVyaXZlZCBmcm9tIGEgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwCmluZGV4IGI0ZGMwYTc1MzEzZjY1YWYwYjRmYmZlN2FjNWJmZmRhN2U3NWI0
MTIuLmZhYzhmZDJiZmZiMGIzY2ZkMGE1OGZmMzVlZDY3NzRmMTcyOWIwNDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMzMwNiw2ICsz
MzA2LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVJc29sYXRlZFRyZWUoQVhDb3JlT2Jq
ZWN0JiBvYmplY3QsIEFYTm90aWZpY2F0aW9uIG5vdGkKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBBWERpc2FibGVkU3RhdGVDaGFuZ2VkOgogICAgICAgICB0cmVlLT51cGRhdGVOb2RlUHJvcGVy
dHkob2JqZWN0LCBBWFByb3BlcnR5TmFtZTo6Q2FuU2V0Rm9jdXNBdHRyaWJ1dGUpOworICAgICAg
ICB0cmVlLT51cGRhdGVOb2RlUHJvcGVydHkob2JqZWN0LCBBWFByb3BlcnR5TmFtZTo6SXNFbmFi
bGVkKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2VkOgog
ICAgICAgICB0cmVlLT51cGRhdGVOb2RlUHJvcGVydHkob2JqZWN0LCBBWFByb3BlcnR5TmFtZTo6
U29ydERpcmVjdGlvbik7CkBAIC0zMzgxLDYgKzMzODIsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6
OnVwZGF0ZUlzb2xhdGVkVHJlZShjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxBWENvcmVP
YmplYwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQVhEaXNhYmxlZFN0YXRlQ2hh
bmdlZDoKICAgICAgICAgICAgIHRyZWUtPnVwZGF0ZU5vZGVQcm9wZXJ0eSgqbm90aWZpY2F0aW9u
LmZpcnN0LCBBWFByb3BlcnR5TmFtZTo6Q2FuU2V0Rm9jdXNBdHRyaWJ1dGUpOworICAgICAgICAg
ICAgdHJlZS0+dXBkYXRlTm9kZVByb3BlcnR5KCpub3RpZmljYXRpb24uZmlyc3QsIEFYUHJvcGVy
dHlOYW1lOjpJc0VuYWJsZWQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQVhT
b3J0RGlyZWN0aW9uQ2hhbmdlZDoKICAgICAgICAgICAgIHRyZWUtPnVwZGF0ZU5vZGVQcm9wZXJ0
eSgqbm90aWZpY2F0aW9uLmZpcnN0LCBBWFByb3BlcnR5TmFtZTo6U29ydERpcmVjdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5kZXggYzY3MWY3MWVkYjdmN2I5ZDNlNTZmNjU3Mzg5NjIw
YTc3MjUxY2FmYS4uNjNhOWU1Njg0NGQ1NDJiYjU1MDcyODNiY2M2MDc4YjFiYWI1YzdjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAtMjc3LDYgKzI3Nyw5IEBAIHZvaWQgQVhJc29sYXRl
ZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0eShjb25zdCBBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBB
WFByb3BlcnR5CiAgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6SXNDaGVja2VkOgogICAgICAgICBw
cm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6OklzQ2hlY2tlZCwgYXhPYmplY3QuaXNDaGVj
a2VkKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpJc0VuYWJs
ZWQ6CisgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6SXNFbmFibGVkLCBh
eE9iamVjdC5pc0VuYWJsZWQoKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhQcm9wZXJ0
eU5hbWU6OlNvcnREaXJlY3Rpb246CiAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5
TmFtZTo6U29ydERpcmVjdGlvbiwgc3RhdGljX2Nhc3Q8aW50PihheE9iamVjdC5zb3J0RGlyZWN0
aW9uKCkpKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2MyMTkyOWVlNGRmMjE2ZWJkODcyYmE4
ZmMwNjdkOWY1NzRmMTE4YS4uMTZlYTlhNWMwZmFkMjE1ZTVmYTFiYWE5OGI2ZWVkZGRlNmRjOGM1
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIyLTAxLTE3ICBUeWxlciBXaWxjb2NrICA8dHls
ZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVggSXNvbGF0ZWQgVHJlZSBNb2RlOiBSZS1jb21w
dXRlIEFYUHJvcGVydHlOYW1lOjpJc0VuYWJsZWQgd2hlbiBhIG5vZGUgZXhwZXJpZW5jZXMgQVhE
aXNhYmxlZFN0YXRlQ2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM1Mjk1CisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgdGVzdCB2ZXJp
ZnlpbmcgdGhhdCBpc0VuYWJsZWQgaXMgcmUtY29tcHV0ZWQgd2hlbiBhbgorICAgICAgICBvYmpl
Y3QncyBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBp
bnRyb2R1Y2VzIGEgbmV3IFdhaXRGb3JTdGFibGVMYXlvdXQgbWVjaGFuaXNtLiBUaGlzCisgICAg
ICAgIHByZXZlbnRzIHVzIGZyb20gY29tcHV0aW5nIHRoZSBjb3JyZWN0IHZhbHVlICJieSBhY2Np
ZGVudCIsIGkuZS4gbGF5b3V0CisgICAgICAgIGNvbXB1dGluZyB0aGUgY29ycmVjdCB2YWx1ZSBv
ZiBhbiBBWCBpc29sYXRlZCB0cmVlIG9iamVjdCBieSB0aHJvd2luZyB0aGUKKyAgICAgICAgd2hv
bGUgb2JqZWN0IGF3YXkgYW5kIGdldHRpbmcgdGhlIGNvcnJlY3QgdmFsdWUgcHVyZWx5IGJ5IHRp
bWluZywgcmF0aGVyCisgICAgICAgIHRoYW4gY29tcHV0aW5nIHRoZSBjb3JyZWN0IHZhbHVlIHZp
YSBgdXBkYXRlTm9kZVByb3BlcnR5YC4KKworICAgICAgICBXaXRob3V0IFdhaXRGb3JTdGFibGVM
YXlvdXQsIHRoZSBuZXcgdGVzdCB3b3VsZCBwYXNzIHdpdGggYW5kIHdpdGhvdXQKKyAgICAgICAg
dGhpcyBwYXRjaCwgd2hpY2ggaXMgd3JvbmcuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMg
RmxlaXphY2guCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2R5bmFtaWMtYXR0cmlidXRlLWNo
YW5nZXMtc2hvdWxkLXVwZGF0ZS1pc2VuYWJsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2R5bmFtaWMtYXR0cmlidXRlLWNoYW5nZXMtc2hvdWxkLXVwZGF0
ZS1pc2VuYWJsZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogcmVzb3VyY2VzL2FjY2Vzc2liaWxp
dHktaGVscGVyLmpzOgorICAgICAgICAoc2xlZXApOiBBZGRlZC4KKyAgICAgICAgKGFzeW5jIHdh
aXRGb3JTdGFibGVMYXlvdXQpOiBBZGRlZC4KKyAgICAgICAgKGFzeW5jIGV4cGVjdEFzeW5jRXhw
cmVzc2lvbik6CisgICAgICAgIEFkZCBhbiBvcHRpb25hbCBXYWl0Rm9yU3RhYmxlTGF5b3V0IGFy
Z3VtZW50LCBkZWZhdWx0aW5nIHRvIGBOT2AuCisKIDIwMjItMDEtMTcgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgU2VydmljZVdvcmtlckNsaWVudC5p
ZCBhIFVVSUQgaW5zdGVhZCBvZiBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSBTY3JpcHRFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9keW5hbWljLWF0dHJpYnV0ZS1jaGFuZ2VzLXNob3VsZC11cGRhdGUtaXNlbmFibGVkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1hdHRyaWJ1dGUtY2hh
bmdlcy1zaG91bGQtdXBkYXRlLWlzZW5hYmxlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODI1
NGRjZDFkYmUzNDgxNGVjM2RlNTA2Nzc4NGQwYjgxYWNiNjc4OAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1hdHRyaWJ1dGUtY2hhbmdlcy1zaG91
bGQtdXBkYXRlLWlzZW5hYmxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOCBAQAorVGhpcyB0
ZXN0IGVuc3VyZXMgdGhhdCBkeW5hbWljYWxseSBjaGFuZ2luZyBlbGVtZW50cyBkaXNhYmxlZCBh
bmQgYXJpYS1kaXNhYmxlZCBhdHRyaWJ1dGVzIHByb3Blcmx5IHVwZGF0ZXMgdGhlaXIgaXNFbmFi
bGVkIHByb3BlcnR5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVmVyaWZ5aW5n
IGluaXRpYWwgZWxlbWVudCBlbmFibGVkIHN0YXRlLgorUEFTUyBheEJ1dHRvbi5pc0VuYWJsZWQg
aXMgdHJ1ZQorUEFTUyBheE9wdGlvbi5pc0VuYWJsZWQgaXMgdHJ1ZQorZG9tQnV0dG9uLmFyaWFE
aXNhYmxlZCA9IHRydWUKK1BBU1MgYXhCdXR0b24uaXNFbmFibGVkID09PSBmYWxzZQorZG9tQnV0
dG9uLmFyaWFEaXNhYmxlZCA9IGZhbHNlCitQQVNTIGF4QnV0dG9uLmlzRW5hYmxlZCA9PT0gdHJ1
ZQorZG9tQnV0dG9uLmRpc2FibGVkID0gdHJ1ZQorUEFTUyBheEJ1dHRvbi5pc0VuYWJsZWQgPT09
IGZhbHNlCitkb21CdXR0b24uZGlzYWJsZWQgPSBmYWxzZQorUEFTUyBheEJ1dHRvbi5pc0VuYWJs
ZWQgPT09IHRydWUKK2RvbU9wdGlvbi5hcmlhRGlzYWJsZWQgPSB0cnVlCitQQVNTIGF4T3B0aW9u
LmlzRW5hYmxlZCA9PT0gZmFsc2UKK2RvbU9wdGlvbi5hcmlhRGlzYWJsZWQgPSBmYWxzZQorUEFT
UyBheE9wdGlvbi5pc0VuYWJsZWQgPT09IHRydWUKK2RvbU9wdGlvbi5kaXNhYmxlZCA9IHRydWUK
K1BBU1MgYXhPcHRpb24uaXNFbmFibGVkID09PSBmYWxzZQorZG9tT3B0aW9uLmRpc2FibGVkID0g
ZmFsc2UKK1BBU1MgYXhPcHRpb24uaXNFbmFibGVkID09PSB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0NsaWNrIG1lCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtYXR0cmlidXRlLWNoYW5nZXMtc2hvdWxk
LXVwZGF0ZS1pc2VuYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1p
Yy1hdHRyaWJ1dGUtY2hhbmdlcy1zaG91bGQtdXBkYXRlLWlzZW5hYmxlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE0NWM0ZjM5ZTY4MjBhZDU1OTkzOWY5ZjNkNjQ4Y2NkMTU3MzhjMGQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtYXR0cmlidXRlLWNoYW5n
ZXMtc2hvdWxkLXVwZGF0ZS1pc2VuYWJsZWQuaHRtbApAQCAtMCwwICsxLDYyIEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+CisKKzxidXR0b24gaWQ9ImJ1dHRvbiI+Q2xpY2sgbWU8L2J1dHRvbj4KKwor
PHNlbGVjdCBtdWx0aXBsZSBpZD0ic2VsZWN0Ij4KKyAgICA8b3B0aW9uIGlkPSJvcHRpb24xIj5P
cHRpb24gMTwvb3B0aW9uPgorICAgIDxvcHRpb24+T3B0aW9uIDI8L29wdGlvbj4KKyAgICA8b3B0
aW9uPk9wdGlvbiAzPC9vcHRpb24+Cis8L3NlbGVjdD4KKworPHNjcmlwdD4KKyAgICBkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBkeW5hbWljYWxseSBjaGFuZ2luZyBlbGVtZW50
cyBkaXNhYmxlZCBhbmQgYXJpYS1kaXNhYmxlZCBhdHRyaWJ1dGVzIHByb3Blcmx5IHVwZGF0ZXMg
dGhlaXIgaXNFbmFibGVkIHByb3BlcnR5LiIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgeworICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGF4T3B0aW9uID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJvcHRpb24xIik7CisgICAgICAgIHZhciBkb21PcHRpb24gPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgib3B0aW9uMSIpOworICAgICAgICB2YXIgYXhCdXR0b24gPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImJ1dHRvbiIpOworICAg
ICAgICB2YXIgZG9tQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbiIpOwor
ICAgICAgICBkZWJ1ZygiVmVyaWZ5aW5nIGluaXRpYWwgZWxlbWVudCBlbmFibGVkIHN0YXRlLiIp
OworICAgICAgICBzaG91bGRCZSgiYXhCdXR0b24uaXNFbmFibGVkIiwgInRydWUiKTsKKyAgICAg
ICAgc2hvdWxkQmUoImF4T3B0aW9uLmlzRW5hYmxlZCIsICJ0cnVlIik7CisKKyAgICAgICAgc2V0
VGltZW91dChhc3luYyBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImRvbUJ1
dHRvbi5hcmlhRGlzYWJsZWQgPSB0cnVlIik7CisgICAgICAgICAgICBhd2FpdCBleHBlY3RBc3lu
Y0V4cHJlc3Npb24oImF4QnV0dG9uLmlzRW5hYmxlZCIsICJmYWxzZSIsIFdhaXRGb3JTdGFibGVM
YXlvdXQuWUVTKTsKKworICAgICAgICAgICAgZXZhbEFuZExvZygiZG9tQnV0dG9uLmFyaWFEaXNh
YmxlZCA9IGZhbHNlIik7CisgICAgICAgICAgICBhd2FpdCBleHBlY3RBc3luY0V4cHJlc3Npb24o
ImF4QnV0dG9uLmlzRW5hYmxlZCIsICJ0cnVlIiwgV2FpdEZvclN0YWJsZUxheW91dC5ZRVMpOwor
CisgICAgICAgICAgICBldmFsQW5kTG9nKCJkb21CdXR0b24uZGlzYWJsZWQgPSB0cnVlIik7Cisg
ICAgICAgICAgICBhd2FpdCBleHBlY3RBc3luY0V4cHJlc3Npb24oImF4QnV0dG9uLmlzRW5hYmxl
ZCIsICJmYWxzZSIsIFdhaXRGb3JTdGFibGVMYXlvdXQuWUVTKTsKKworICAgICAgICAgICAgZXZh
bEFuZExvZygiZG9tQnV0dG9uLmRpc2FibGVkID0gZmFsc2UiKTsKKyAgICAgICAgICAgIGF3YWl0
IGV4cGVjdEFzeW5jRXhwcmVzc2lvbigiYXhCdXR0b24uaXNFbmFibGVkIiwgInRydWUiLCBXYWl0
Rm9yU3RhYmxlTGF5b3V0LllFUyk7CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImRvbU9wdGlv
bi5hcmlhRGlzYWJsZWQgPSB0cnVlIik7CisgICAgICAgICAgICBhd2FpdCBleHBlY3RBc3luY0V4
cHJlc3Npb24oImF4T3B0aW9uLmlzRW5hYmxlZCIsICJmYWxzZSIsIFdhaXRGb3JTdGFibGVMYXlv
dXQuWUVTKTsKKworICAgICAgICAgICAgZXZhbEFuZExvZygiZG9tT3B0aW9uLmFyaWFEaXNhYmxl
ZCA9IGZhbHNlIik7CisgICAgICAgICAgICBhd2FpdCBleHBlY3RBc3luY0V4cHJlc3Npb24oImF4
T3B0aW9uLmlzRW5hYmxlZCIsICJ0cnVlIiwgV2FpdEZvclN0YWJsZUxheW91dC5ZRVMpOworCisg
ICAgICAgICAgICBldmFsQW5kTG9nKCJkb21PcHRpb24uZGlzYWJsZWQgPSB0cnVlIik7CisgICAg
ICAgICAgICBhd2FpdCBleHBlY3RBc3luY0V4cHJlc3Npb24oImF4T3B0aW9uLmlzRW5hYmxlZCIs
ICJmYWxzZSIsIFdhaXRGb3JTdGFibGVMYXlvdXQuWUVTKTsKKworICAgICAgICAgICAgZXZhbEFu
ZExvZygiZG9tT3B0aW9uLmRpc2FibGVkID0gZmFsc2UiKTsKKyAgICAgICAgICAgIGF3YWl0IGV4
cGVjdEFzeW5jRXhwcmVzc2lvbigiYXhPcHRpb24uaXNFbmFibGVkIiwgInRydWUiLCBXYWl0Rm9y
U3RhYmxlTGF5b3V0LllFUyk7CisKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9LCAwKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIGIvTGF5b3V0
VGVzdHMvcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzCmluZGV4IGZiZWI1ZjdkYmI0
N2U0N2RhYWM0NzU3MTM5Y2NhZjNiNTE5NmIyZTcuLjM1NTc0N2NjYTNiMTg0ZjkyODhmMTA1ODQ2
YzgxY2FjYThiNTc3ZGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9hY2Nlc3Np
YmlsaXR5LWhlbHBlci5qcworKysgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0
eS1oZWxwZXIuanMKQEAgLTEyNywxNCArMTI3LDQ5IEBAIGFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JF
bGVtZW50QnlJZChpZCkgewogICAgIHJldHVybiBlbGVtZW50OwogfQogCi1hc3luYyBmdW5jdGlv
biBleHBlY3RBc3luY0V4cHJlc3Npb24oZXhwcmVzc2lvbiwgZXhwZWN0ZWRWYWx1ZSkgeworZnVu
Y3Rpb24gc2xlZXAobXMpIHsKKyAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGlt
ZW91dChyZXNvbHZlLCBtcykpOworfQorCisvLyBUaGlzIGZ1bmN0aW9uIHdhaXRzIGZvciBsYXlv
dXRzIHRvIGJlIHN0YWJsZSBiZWZvcmUgcmVzb2x2aW5nLgorLy8gVGhpcyBjYW4gYmUgdXNlZnVs
IHdoZW4gZXhwZWN0aW5nIHZhbHVlcyAoZS5nLiBpbiBleHBlY3RBc3luY0V4cHJlc3Npb24pLCBh
cyBpdCBjYW4gcHJldmVudCBnZXR0aW5nIHRoZQorLy8gY29ycmVjdCB2YWx1ZSAiYnkgYWNjaWRl
bnQiLCBpLmUuIGxheW91dCBjb21wdXRpbmcgdGhlIGNvcnJlY3QgdmFsdWUgb2YgYW4gQVggaXNv
bGF0ZWQgdHJlZSBvYmplY3QgYnkKKy8vIHRocm93aW5nIHRoZSB3aG9sZSBvYmplY3QgYXdheSBh
bmQgZ2V0dGluZyB0aGUgY29ycmVjdCB2YWx1ZSBwdXJlbHkgYnkgdGltaW5nLCByYXRoZXIgdGhh
biBjb21wdXRpbmcKKy8vIHRoZSBjb3JyZWN0IHZhbHVlIHZpYSBgdXBkYXRlTm9kZVByb3BlcnR5
YC4KK2FzeW5jIGZ1bmN0aW9uIHdhaXRGb3JTdGFibGVMYXlvdXQoKSB7CisgICAgbGV0IGxhc3RM
YXlvdXRDb3VudCA9IGludGVybmFscy5sYXlvdXRDb3VudDsKKyAgICBsZXQgc2hvdWxkUnVuVGlt
ZXIgPSB0cnVlOworICAgIHdoaWxlIChzaG91bGRSdW5UaW1lcikgeworICAgICAgICAvLyBzZXRU
aW1lb3V0ICh1c2VkIGJ5IHNsZWVwKSB3aWxsIHF1ZXVlIHVzIGJlaGluZCBhbnkgcGVuZGluZyBs
YXlvdXRzLgorICAgICAgICBhd2FpdCBzbGVlcCgxKTsKKyAgICAgICAgaWYgKGludGVybmFscy5s
YXlvdXRDb3VudCAhPT0gbGFzdExheW91dENvdW50KQorICAgICAgICAgICAgbGFzdExheW91dENv
dW50ID0gaW50ZXJuYWxzLmxheW91dENvdW50OworICAgICAgICBlbHNlCisgICAgICAgICAgICBz
aG91bGRSdW5UaW1lciA9IGZhbHNlOworICAgIH0KK30KKworY29uc3QgV2FpdEZvclN0YWJsZUxh
eW91dCA9IE9iamVjdC5mcmVlemUoeworICAgIFlFUzogU3ltYm9sKCJZRVMiKSwKKyAgICBOTzog
U3ltYm9sKCJOTyIpLAorfSk7CisKK2FzeW5jIGZ1bmN0aW9uIGV4cGVjdEFzeW5jRXhwcmVzc2lv
bihleHByZXNzaW9uLCBleHBlY3RlZFZhbHVlLCBzaG91bGRXYWl0Rm9yU3RhYmxlTGF5b3V0ID0g
V2FpdEZvclN0YWJsZUxheW91dC5OTykgewogICAgIGlmICh0eXBlb2YgZXhwcmVzc2lvbiAhPT0g
InN0cmluZyIpCiAgICAgICAgIGRlYnVnKCJXQVJOOiBUaGUgZXhwcmVzc2lvbiBhcmcgaW4gd2Fp
dEZvckV4cHJlc3Npb24oKSBzaG91bGQgYmUgYSBzdHJpbmcuIik7CiAKKyAgICAvLyBXYWl0IG91
dCBhbnkgbGF5b3V0cyB0aGF0IG1heSBoYXZlIGJlZW4gY2F1c2VkIGJ5IEphdmFTY3JpcHQgcnVu
bmluZyBiZWZvcmUgdGhpcyBmdW5jdGlvbi4KKyAgICBpZiAoc2hvdWxkV2FpdEZvclN0YWJsZUxh
eW91dCA9PT0gV2FpdEZvclN0YWJsZUxheW91dC5ZRVMpCisgICAgICAgIGF3YWl0IHdhaXRGb3JT
dGFibGVMYXlvdXQoKTsKKwogICAgIGNvbnN0IGV2YWxFeHByZXNzaW9uID0gYCR7ZXhwcmVzc2lv
bn0gPT09ICR7ZXhwZWN0ZWRWYWx1ZX1gOwogICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4gewogICAg
ICAgICByZXR1cm4gZXZhbChldmFsRXhwcmVzc2lvbik7CiAgICAgfSk7CiAgICAgZGVidWcoYFBB
U1MgJHtldmFsRXhwcmVzc2lvbn1gKTsKKworICAgIC8vIGBkZWJ1Z2AgY2F1c2VzIGEgbGF5b3V0
LCBzbyBlbnN1cmUgdGhlIGVmZmVjdHMgb2YgdGhhdCBsYXlvdXQgZG9uJ3QgbGVhayBvdXRzaWRl
IHRoaXMgZnVuY3Rpb24uCisgICAgaWYgKHNob3VsZFdhaXRGb3JTdGFibGVMYXlvdXQgPT09IFdh
aXRGb3JTdGFibGVMYXlvdXQuWUVTKQorICAgICAgICBhd2FpdCB3YWl0Rm9yU3RhYmxlTGF5b3V0
KCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449753</attachid>
            <date>2022-01-23 09:53:54 -0800</date>
            <delta_ts>2022-01-23 15:11:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235295-20220123115353.patch</filename>
            <type>text/plain</type>
            <size>7705</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU2OTQwOTc1M2UzYmVi
ZjJjMGYwOGE5OGMxZmU1NjM0NDAzNGMwNy4uYzk3NTkwYTAzZGRmNTNhNWNmNzFkZDcyNTMxMWQ3
YjczZmNjZjBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIyLTAxLTIzICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVggSXNvbGF0ZWQgVHJl
ZSBNb2RlOiBSZS1jb21wdXRlIEFYUHJvcGVydHlOYW1lOjpJc0VuYWJsZWQgd2hlbiBhIG5vZGUg
ZXhwZXJpZW5jZXMgQVhEaXNhYmxlZFN0YXRlQ2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1Mjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Q2hyaXMgRmxlaXphY2guCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9keW5hbWljLWF0
dHJpYnV0ZS1jaGFuZ2VzLXNob3VsZC11cGRhdGUtaXNlbmFibGVkLmh0bWwKKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjp1cGRhdGVJc29sYXRlZFRyZWUpOgorICAgICAgICBSZS1jb21wdXRlIEFYUHJv
cGVydHlOYW1lOjpJc0VuYWJsZWQgd2hlbiByZWNlaXZpbmcgYW4gQVhEaXNhYmxlZFN0YXRlQ2hh
bmdlZCBub3RpZmljYXRpb24uCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnVw
ZGF0ZU5vZGVQcm9wZXJ0eSk6CisgICAgICAgIEhhbmRsZSByZXF1ZXN0cyBmb3IgQVhQcm9wZXJ0
eU5hbWU6OklzRW5hYmxlZCB1cGRhdGVzLgorCiAyMDIyLTAxLTIzICBaaXJhbiBTdW4gIDx6c3Vu
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Zvcm1zXSBQcmV2ZW50IGNvbnRlbnRlZGl0YWJsZSBh
bmNob3JzIGZyb20gYmVpbmcgc3R1Y2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDdhNDI4YWJjYjQ4MDE5ZWY2MzBhMzJjYjcwN2I0MDAw
ZmM5YTBhNTguLjQ2Mjc4YmI1YmJiYWYyM2YwN2U0YWJlNGYzOTUwZjM2MWYyNzdiYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMzMy
Nyw2ICszMzI3LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVJc29sYXRlZFRyZWUoY29u
c3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8QVhDb3JlT2JqZWMKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIEFYRGlzYWJsZWRTdGF0ZUNoYW5nZWQ6CiAgICAgICAgICAgICB0cmVl
LT51cGRhdGVOb2RlUHJvcGVydHkoKm5vdGlmaWNhdGlvbi5maXJzdCwgQVhQcm9wZXJ0eU5hbWU6
OkNhblNldEZvY3VzQXR0cmlidXRlKTsKKyAgICAgICAgICAgIHRyZWUtPnVwZGF0ZU5vZGVQcm9w
ZXJ0eSgqbm90aWZpY2F0aW9uLmZpcnN0LCBBWFByb3BlcnR5TmFtZTo6SXNFbmFibGVkKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFYU29ydERpcmVjdGlvbkNoYW5nZWQ6CiAg
ICAgICAgICAgICB0cmVlLT51cGRhdGVOb2RlUHJvcGVydHkoKm5vdGlmaWNhdGlvbi5maXJzdCwg
QVhQcm9wZXJ0eU5hbWU6OlNvcnREaXJlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCmlu
ZGV4IDc5OWVlNmI2MjMzYjgxNTMyOTIxNTUyNGFmYWUwOGY1OGFlMjM3NDQuLjY1NDlkYmI5YmU1
ZmE4NTAxMjkyZjY1NjgyYzcwMGU3ZGE3MmEwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAK
QEAgLTI5MSw2ICsyOTEsOSBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVy
dHkoY29uc3QgQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhQcm9wZXJ0eQogICAgIGNhc2UgQVhQ
cm9wZXJ0eU5hbWU6OklzQ2hlY2tlZDoKICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVy
dHlOYW1lOjpJc0NoZWNrZWQsIGF4T2JqZWN0LmlzQ2hlY2tlZCgpKTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6SXNFbmFibGVkOgorICAgICAgICBwcm9wZXJ0eU1h
cC5zZXQoQVhQcm9wZXJ0eU5hbWU6OklzRW5hYmxlZCwgYXhPYmplY3QuaXNFbmFibGVkKCkpOwor
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpTb3J0RGlyZWN0aW9uOgog
ICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6OlNvcnREaXJlY3Rpb24sIHN0
YXRpY19jYXN0PGludD4oYXhPYmplY3Quc29ydERpcmVjdGlvbigpKSk7CiAgICAgICAgIGJyZWFr
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDY4MmZmYzhkNzlkMTdhOWU5MGRhNGVkZmFjMGU2ZWUxNTI3OWM3ZGYuLjM3Yjlj
MGZlNDIwNmJiOWRhZDJjZDdiM2Y5ZGJlMjY0ZDA0ZWY3MzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAyMi0wMS0yMyAgVHlsZXIgV2lsY29jayAgPHR5bGVyX3dAYXBwbGUuY29tPgorCisgICAg
ICAgIEFYIElzb2xhdGVkIFRyZWUgTW9kZTogUmUtY29tcHV0ZSBBWFByb3BlcnR5TmFtZTo6SXNF
bmFibGVkIHdoZW4gYSBub2RlIGV4cGVyaWVuY2VzIEFYRGlzYWJsZWRTdGF0ZUNoYW5nZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTI5NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNoLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWRkcyBhIHRlc3QgdmVyaWZ5aW5nIHRoYXQgQVhQcm9wZXJ0eU5hbWU6OklzRW5hYmxlZCBpcyBy
ZS1jb21wdXRlZCB3aGVuIGFuCisgICAgICAgIG9iamVjdCdzIGRpc2FibGVkIHN0YXRlIGNoYW5n
ZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2R5bmFtaWMtYXR0cmlidXRlLWNoYW5nZXMt
c2hvdWxkLXVwZGF0ZS1pc2VuYWJsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2R5bmFtaWMtYXR0cmlidXRlLWNoYW5nZXMtc2hvdWxkLXVwZGF0ZS1pc2Vu
YWJsZWQuaHRtbDogQWRkZWQuCisKIDIwMjItMDEtMjMgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gRW5hYmxlIHVuaWNvZGUtYmlkaTogcGxhaW50
ZXh0IGZvciBJRkMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1p
Yy1hdHRyaWJ1dGUtY2hhbmdlcy1zaG91bGQtdXBkYXRlLWlzZW5hYmxlZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtYXR0cmlidXRlLWNoYW5nZXMtc2hv
dWxkLXVwZGF0ZS1pc2VuYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyNTRkY2QxZGJl
MzQ4MTRlYzNkZTUwNjc3ODRkMGI4MWFjYjY3ODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtYXR0cmlidXRlLWNoYW5nZXMtc2hvdWxkLXVwZGF0
ZS1pc2VuYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjggQEAKK1RoaXMgdGVzdCBlbnN1
cmVzIHRoYXQgZHluYW1pY2FsbHkgY2hhbmdpbmcgZWxlbWVudHMgZGlzYWJsZWQgYW5kIGFyaWEt
ZGlzYWJsZWQgYXR0cmlidXRlcyBwcm9wZXJseSB1cGRhdGVzIHRoZWlyIGlzRW5hYmxlZCBwcm9w
ZXJ0eS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1ZlcmlmeWluZyBpbml0aWFs
IGVsZW1lbnQgZW5hYmxlZCBzdGF0ZS4KK1BBU1MgYXhCdXR0b24uaXNFbmFibGVkIGlzIHRydWUK
K1BBU1MgYXhPcHRpb24uaXNFbmFibGVkIGlzIHRydWUKK2RvbUJ1dHRvbi5hcmlhRGlzYWJsZWQg
PSB0cnVlCitQQVNTIGF4QnV0dG9uLmlzRW5hYmxlZCA9PT0gZmFsc2UKK2RvbUJ1dHRvbi5hcmlh
RGlzYWJsZWQgPSBmYWxzZQorUEFTUyBheEJ1dHRvbi5pc0VuYWJsZWQgPT09IHRydWUKK2RvbUJ1
dHRvbi5kaXNhYmxlZCA9IHRydWUKK1BBU1MgYXhCdXR0b24uaXNFbmFibGVkID09PSBmYWxzZQor
ZG9tQnV0dG9uLmRpc2FibGVkID0gZmFsc2UKK1BBU1MgYXhCdXR0b24uaXNFbmFibGVkID09PSB0
cnVlCitkb21PcHRpb24uYXJpYURpc2FibGVkID0gdHJ1ZQorUEFTUyBheE9wdGlvbi5pc0VuYWJs
ZWQgPT09IGZhbHNlCitkb21PcHRpb24uYXJpYURpc2FibGVkID0gZmFsc2UKK1BBU1MgYXhPcHRp
b24uaXNFbmFibGVkID09PSB0cnVlCitkb21PcHRpb24uZGlzYWJsZWQgPSB0cnVlCitQQVNTIGF4
T3B0aW9uLmlzRW5hYmxlZCA9PT0gZmFsc2UKK2RvbU9wdGlvbi5kaXNhYmxlZCA9IGZhbHNlCitQ
QVNTIGF4T3B0aW9uLmlzRW5hYmxlZCA9PT0gdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitDbGljayBtZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWF0dHJpYnV0ZS1jaGFuZ2VzLXNob3VsZC11cGRhdGUt
aXNlbmFibGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtYXR0cmli
dXRlLWNoYW5nZXMtc2hvdWxkLXVwZGF0ZS1pc2VuYWJsZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OThm
MjhjOWVmNTJmZGI3NDcyNzY5ZTk2NzRmYTVhYjFkNzdlODViCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWF0dHJpYnV0ZS1jaGFuZ2VzLXNob3Vs
ZC11cGRhdGUtaXNlbmFibGVkLmh0bWwKQEAgLTAsMCArMSw2MiBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorCis8YnV0dG9uIGlkPSJidXR0b24iPkNsaWNrIG1lPC9idXR0b24+CisKKzxzZWxlY3Qg
bXVsdGlwbGUgaWQ9InNlbGVjdCI+CisgICAgPG9wdGlvbiBpZD0ib3B0aW9uMSI+T3B0aW9uIDE8
L29wdGlvbj4KKyAgICA8b3B0aW9uPk9wdGlvbiAyPC9vcHRpb24+CisgICAgPG9wdGlvbj5PcHRp
b24gMzwvb3B0aW9uPgorPC9zZWxlY3Q+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCBlbnN1cmVzIHRoYXQgZHluYW1pY2FsbHkgY2hhbmdpbmcgZWxlbWVudHMgZGlzYWJs
ZWQgYW5kIGFyaWEtZGlzYWJsZWQgYXR0cmlidXRlcyBwcm9wZXJseSB1cGRhdGVzIHRoZWlyIGlz
RW5hYmxlZCBwcm9wZXJ0eS4iKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpIHsKKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBheE9wdGlvbiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgib3B0aW9uMSIpOworICAgICAgICB2YXIgZG9tT3B0aW9uID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoIm9wdGlvbjEiKTsKKyAgICAgICAgdmFyIGF4QnV0dG9uID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJidXR0b24iKTsKKyAgICAgICAgdmFy
IGRvbUJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b24iKTsKKyAgICAgICAg
ZGVidWcoIlZlcmlmeWluZyBpbml0aWFsIGVsZW1lbnQgZW5hYmxlZCBzdGF0ZS4iKTsKKyAgICAg
ICAgc2hvdWxkQmUoImF4QnV0dG9uLmlzRW5hYmxlZCIsICJ0cnVlIik7CisgICAgICAgIHNob3Vs
ZEJlKCJheE9wdGlvbi5pc0VuYWJsZWQiLCAidHJ1ZSIpOworCisgICAgICAgIHNldFRpbWVvdXQo
YXN5bmMgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJkb21CdXR0b24uYXJp
YURpc2FibGVkID0gdHJ1ZSIpOworICAgICAgICAgICAgYXdhaXQgZXhwZWN0QXN5bmNFeHByZXNz
aW9uKCJheEJ1dHRvbi5pc0VuYWJsZWQiLCAiZmFsc2UiKTsKKworICAgICAgICAgICAgZXZhbEFu
ZExvZygiZG9tQnV0dG9uLmFyaWFEaXNhYmxlZCA9IGZhbHNlIik7CisgICAgICAgICAgICBhd2Fp
dCBleHBlY3RBc3luY0V4cHJlc3Npb24oImF4QnV0dG9uLmlzRW5hYmxlZCIsICJ0cnVlIik7CisK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImRvbUJ1dHRvbi5kaXNhYmxlZCA9IHRydWUiKTsKKyAg
ICAgICAgICAgIGF3YWl0IGV4cGVjdEFzeW5jRXhwcmVzc2lvbigiYXhCdXR0b24uaXNFbmFibGVk
IiwgImZhbHNlIik7CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImRvbUJ1dHRvbi5kaXNhYmxl
ZCA9IGZhbHNlIik7CisgICAgICAgICAgICBhd2FpdCBleHBlY3RBc3luY0V4cHJlc3Npb24oImF4
QnV0dG9uLmlzRW5hYmxlZCIsICJ0cnVlIik7CisKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImRv
bU9wdGlvbi5hcmlhRGlzYWJsZWQgPSB0cnVlIik7CisgICAgICAgICAgICBhd2FpdCBleHBlY3RB
c3luY0V4cHJlc3Npb24oImF4T3B0aW9uLmlzRW5hYmxlZCIsICJmYWxzZSIpOworCisgICAgICAg
ICAgICBldmFsQW5kTG9nKCJkb21PcHRpb24uYXJpYURpc2FibGVkID0gZmFsc2UiKTsKKyAgICAg
ICAgICAgIGF3YWl0IGV4cGVjdEFzeW5jRXhwcmVzc2lvbigiYXhPcHRpb24uaXNFbmFibGVkIiwg
InRydWUiKTsKKworICAgICAgICAgICAgZXZhbEFuZExvZygiZG9tT3B0aW9uLmRpc2FibGVkID0g
dHJ1ZSIpOworICAgICAgICAgICAgYXdhaXQgZXhwZWN0QXN5bmNFeHByZXNzaW9uKCJheE9wdGlv
bi5pc0VuYWJsZWQiLCAiZmFsc2UiKTsKKworICAgICAgICAgICAgZXZhbEFuZExvZygiZG9tT3B0
aW9uLmRpc2FibGVkID0gZmFsc2UiKTsKKyAgICAgICAgICAgIGF3YWl0IGV4cGVjdEFzeW5jRXhw
cmVzc2lvbigiYXhPcHRpb24uaXNFbmFibGVkIiwgInRydWUiKTsKKworICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0sIDApOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>