<?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>237590</bug_id>
          
          <creation_ts>2022-03-08 01:50:30 -0800</creation_ts>
          <short_desc>Extract transform-origin handling out of RenderStyle::applyTransform()</short_desc>
          <delta_ts>2022-03-16 03:20:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>90738</blocked>
    
    <blocked>237711</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>rbuis</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1849164</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-08 01:50:30 -0800</bug_when>
    <thetext>RenderStyle::applyTransform() implements the algorithm given in CSS Transforms Module Level 2 (https://www.w3.org/TR/css-transforms-2/#ctm)
that yields the &quot;current transformation matrix&quot;. It is used e.g. in RenderLayer::updateTransform() to compute the layer transformation matrix, that&apos;s used for rendering.
    
Make it possible to re-use all steps of the algorithm for SVG, by allowing to override the CSS transform by an external matrix that&apos;s used instead (SVG 2D transform).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849165</commentid>
    <comment_count>1</comment_count>
      <attachid>454086</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-08 01:53:53 -0800</bug_when>
    <thetext>Created attachment 454086
Patch, v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849255</commentid>
    <comment_count>2</comment_count>
      <attachid>454086</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-03-08 07:25:11 -0800</bug_when>
    <thetext>Comment on attachment 454086
Patch, v1

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

&gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp:1536
&gt; +TransformationMatrix&amp; TransformationMatrix::multiplyAffineTransform(const AffineTransform&amp; mat)

We probably should not abbreviate here, so either &apos;matrix&apos; or &apos;affineTransform&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849310</commentid>
    <comment_count>3</comment_count>
      <attachid>454086</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-03-08 09:26:58 -0800</bug_when>
    <thetext>Comment on attachment 454086
Patch, v1

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

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1474
&gt; +    if (transformOperations.size()) {
&gt; +        for (auto&amp; operation : transformOperations.operations())
&gt; +            operation-&gt;apply(transform, boundingBox.size());
&gt; +    } else if (externalAffineTransformationSource) {
&gt; +        // SVG may provide additional non-CSS transformation operations.
&gt; +        transform.multiplyAffineTransform(externalAffineTransformationSource());
&gt; +    }

It&apos;s weird that this is either-or. From the function signature I would expect that the result of externalAffineTransformationSource would get multiplied with the style&apos;s transforms. Especially since this function DOES use the individual transform properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849312</commentid>
    <comment_count>4</comment_count>
      <attachid>454086</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-03-08 09:33:27 -0800</bug_when>
    <thetext>Comment on attachment 454086
Patch, v1

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

&gt;&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1474
&gt;&gt; +    }
&gt; 
&gt; It&apos;s weird that this is either-or. From the function signature I would expect that the result of externalAffineTransformationSource would get multiplied with the style&apos;s transforms. Especially since this function DOES use the individual transform properties.

One option would be to add another function that knows how to apply/unapply transform origin, and call it from this function, and to add a third function for the custom SVG case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849583</commentid>
    <comment_count>5</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-09 01:46:59 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #3)
&gt; Comment on attachment 454086 [details]
&gt; Patch, v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=454086&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/style/RenderStyle.cpp:1474
&gt; &gt; +    if (transformOperations.size()) {
&gt; &gt; +        for (auto&amp; operation : transformOperations.operations())
&gt; &gt; +            operation-&gt;apply(transform, boundingBox.size());
&gt; &gt; +    } else if (externalAffineTransformationSource) {
&gt; &gt; +        // SVG may provide additional non-CSS transformation operations.
&gt; &gt; +        transform.multiplyAffineTransform(externalAffineTransformationSource());
&gt; &gt; +    }
&gt; 
&gt; It&apos;s weird that this is either-or. From the function signature I would
&gt; expect that the result of externalAffineTransformationSource would get
&gt; multiplied with the style&apos;s transforms. Especially since this function DOES
&gt; use the individual transform properties.

Good catch, the intention was to only look at &apos;externalAffineTransformSource&apos; if neither the transform property nor the individual transform properties are given, but the &quot;if (transformOperatations.size())&quot; case only catches the transform attribute, not the rest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849584</commentid>
    <comment_count>6</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-09 01:47:44 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #4)
&gt; &gt; It&apos;s weird that this is either-or. From the function signature I would expect that the result of externalAffineTransformationSource would get multiplied with the style&apos;s transforms. Especially since this function DOES use the individual transform properties.
&gt; 
&gt; One option would be to add another function that knows how to apply/unapply
&gt; transform origin, and call it from this function, and to add a third
&gt; function for the custom SVG case.

+1 that sounds much nicer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849592</commentid>
    <comment_count>7</comment_count>
      <attachid>454212</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-09 02:31:01 -0800</bug_when>
    <thetext>Created attachment 454212
Patch, v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849602</commentid>
    <comment_count>8</comment_count>
      <attachid>454217</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-09 03:08:44 -0800</bug_when>
    <thetext>Created attachment 454217
Patch, v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849993</commentid>
    <comment_count>9</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-10 01:31:33 -0800</bug_when>
    <thetext>(In reply to Rob Buis from comment #2)
&gt; Comment on attachment 454086 [details]
&gt; Patch, v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=454086&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp:1536
&gt; &gt; +TransformationMatrix&amp; TransformationMatrix::multiplyAffineTransform(const AffineTransform&amp; mat)
&gt; 
&gt; We probably should not abbreviate here, so either &apos;matrix&apos; or
&gt; &apos;affineTransform&apos;.

Missed that comment, I can apply s/mat/matrix/ before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850061</commentid>
    <comment_count>10</comment_count>
      <attachid>454348</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-10 05:52:51 -0800</bug_when>
    <thetext>Created attachment 454348
Patch, v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850062</commentid>
    <comment_count>11</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-10 05:53:08 -0800</bug_when>
    <thetext>(In reply to Nikolas Zimmermann from comment #9)
&gt; (In reply to Rob Buis from comment #2)
&gt; &gt; Comment on attachment 454086 [details]
&gt; &gt; Patch, v1
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=454086&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp:1536
&gt; &gt; &gt; +TransformationMatrix&amp; TransformationMatrix::multiplyAffineTransform(const AffineTransform&amp; mat)
&gt; &gt; 
&gt; &gt; We probably should not abbreviate here, so either &apos;matrix&apos; or
&gt; &gt; &apos;affineTransform&apos;.
&gt; 
&gt; Missed that comment, I can apply s/mat/matrix/ before landing.
Even easier, the changes are not needed here anymore, leaving this out for another LBSE patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850278</commentid>
    <comment_count>12</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-10 15:48:15 -0800</bug_when>
    <thetext>Simon, can you have another look?
This slightly deviates from your proposal -- it might be helpful to look at this patch and also at https://bugs.webkit.org/show_bug.cgi?id=237711, which is the patch that enables SVG/CSS transform support for LBSE (RenderLayerModelObject::applySVGTransform() makes use of the new methods introduced here: applyTransformOrigin/unapplyTransformOrigin/affectedByTransformOrigin/etc.)

The patch on ticket 237711 depends on all of these tickets: 237553 (done), 237554 (r?), 237590 (this one), 237701 (depends on 2357554).

Once these are in, I can proceed to the patches that enable transform-box support for composited elements -- which is trivial after the cleanups are all in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850884</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-14 08:54:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/90248514&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850952</commentid>
    <comment_count>14</comment_count>
      <attachid>454348</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-03-14 11:21:18 -0700</bug_when>
    <thetext>Comment on attachment 454348
Patch, v4

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

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:1508
&gt; +    // 8. Translate by the negated computed X, Y and Z values of transform-origin. (see unapplyTransformOrigin)

Weird to have this dangling comment here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851712</commentid>
    <comment_count>15</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-16 03:18:17 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #14)
&gt; Comment on attachment 454348 [details]
&gt; Patch, v4
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=454348&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/style/RenderStyle.cpp:1508
&gt; &gt; +    // 8. Translate by the negated computed X, Y and Z values of transform-origin. (see unapplyTransformOrigin)
&gt; 
&gt; Weird to have this dangling comment here.

I&apos;ve added (see unapplyTransformOrigin) -- modified to:
+    // 8. Translate by the negated computed X, Y and Z values of transform-origin.
+    // (implemented in unapplyTransformOrigin)

before landing. I hope that&apos;s better :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851713</commentid>
    <comment_count>16</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-16 03:20:04 -0700</bug_when>
    <thetext>Committed r291338 (248477@trunk): &lt;https://commits.webkit.org/248477@trunk&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454086</attachid>
            <date>2022-03-08 01:53:53 -0800</date>
            <delta_ts>2022-03-09 02:30:53 -0800</delta_ts>
            <desc>Patch, v1</desc>
            <filename>bug-237590-20220308015352.patch</filename>
            <type>text/plain</type>
            <size>8093</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwOTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTllZmQxMjUxOGJhYTIy
ZmJhYmQ0OWMxYWE4ZDA1YTE0M2M4YmJkNi4uMTkwMWI5MzczZTczYjA2NWJiNDI2MWI3M2Y0Mjgy
MGNmY2Y1Mjk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIyLTAzLTA4ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIEFsbG93
IHRvIG92ZXJyaWRlIENTUyB0cmFuc2Zvcm0gaW4gUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3Jt
KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzU5
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93
IHRvIG92ZXJyaWRlIENTUyB0cmFuc2Zvcm0gaW4gUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3Jt
KCkuCisKKyAgICAgICAgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKCkgaW1wbGVtZW50cyB0
aGUgYWxnb3JpdGhtIGdpdmVuIGluCisgICAgICAgIENTUyBUcmFuc2Zvcm1zIE1vZHVsZSBMZXZl
bCAyIChodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXRyYW5zZm9ybXMtMi8jY3RtKQorICAgICAg
ICB0aGF0IHlpZWxkcyB0aGUgImN1cnJlbnQgdHJhbnNmb3JtYXRpb24gbWF0cml4Ii4gSXQgaXMg
dXNlZCBlLmcuIGluCisgICAgICAgIFJlbmRlckxheWVyOjp1cGRhdGVUcmFuc2Zvcm0oKSB0byBj
b21wdXRlIHRoZSBsYXllciB0cmFuc2Zvcm1hdGlvbgorICAgICAgICBtYXRyaXgsIHRoYXQncyB1
c2VkIGZvciByZW5kZXJpbmcuCisKKyAgICAgICAgQSBzaW1wbGUgd2F5IHRvIHN1cHBvcnQgU1ZH
IHRyYW5zZm9ybWF0aW9ucyB0byByZS11c2UgdGhlIHNhbWUgYWxnb3JpdGhtCisgICAgICAgIGlz
IHRvIGFkZCBhIG5ldyBvcHRpb25hbCBwYXJhbWV0ZXIgdG8gYXBwbHlUcmFuc2Zvcm0oKToKKwor
ICAgICAgICAgICAgIldURjo6RnVuY3Rpb248QWZmaW5lVHJhbnNmb3JtKCk+JiYgZXh0ZXJuYWxB
ZmZpbmVUcmFuc2Zvcm1hdGlvblNvdXJjZSIKKworICAgICAgICBJdCBhbGxvd3MgY2FsbGVycyB0
byBzdXBwbHkgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSAoMkQpIHRyYW5zZm9ybWF0aW9uIG1h
dHJpeAorICAgICAgICB0aGF0IGlzIHVzZWQgaW5zdGVhZCBvZiB0aGUgQ1NTICd0cmFuc2Zvcm0n
IHByb3BlcnR5IGluIHN0ZXAgNykgb2YKKyAgICAgICAgdGhlIGFsZ29yaXRobSAtLSB3aGlsZSBr
ZWVwaW5nIGFsbCBvdGhlcnMgc3RlcHMgdGhlIHNhbWUuIFRoaXMgd2lsbAorICAgICAgICBiZSB1
c2VkIGJ5IExCU0UgaW4gZm9sbG93LXVwIHBhdGNoZXMsIHRvIHByb3ZpZGUgdGhlIFNWRyAyRCBD
VE0KKyAgICAgICAgYXMgaW5wdXQgdG8gdGhpcyBmdW5jdGlvbi4KKworICAgICAgICBBbiBpbXBs
ZW1lbnRhdGlvbiBvZiBSZW5kZXJTVkdTaGFwZTo6YXBwbHlUcmFuc2Zvcm0oKSB0aGF0IGVpdGhl
ciB1c2VzCisgICAgICAgIENTUyB0cmFuc2Zvcm1zIGlmIHByZXNlbnQgb3IgU1ZHIHRyYW5zZm9y
bXMgYXMgZmFsbGJhY2sgaXMgbmljZWx5IGVuY2Fwc3VsYXRlZDoKKworICAgICAgICAgICAgInN0
eWxlKCkuYXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtLCByZWZlcmVuY2VCb3gsIG9wdGlvbnMsIFsm
ZWxlbWVudCA9IGdyYXBoaWNzRWxlbWVudCgpXSB7IHJldHVybiBlbGVtZW50LmFuaW1hdGVkTG9j
YWxUcmFuc2Zvcm0oKTsgfSk7IgorCisgICAgICAgIHdoZXJlICd0cmFuc2Zvcm0nIGlzIHRoZSBy
ZXN1bHRpbmcgJ1RyYW5zZm9ybWF0aW9uTWF0cml4JywKKyAgICAgICAgJ3JlZmVyZW5jZUJveCcg
aXMgdGhlIENTUyByZWZlcmVuY2UgYm94IChpbmZsdWVuY2VkIGJ5IHRoZSBjaG9pY2Ugb2YgJ3Ry
YW5zZm9ybS1ib3gnKSwKKyAgICAgICAgJ29wdGlvbnMnIHdoZXRoZXIgdG8gaW5jbHVkZSAndHJh
bnNmb3JtLW9yaWdpbicgJiByZWxhdGVkIGluIENUTSBvciBub3QsIGZvbGxvd2VkCisgICAgICAg
IGJ5IGEgbGFtYmRhIHRoYXQgY29tcHV0ZXMgdGhlIFNWRyAyRCBDVE0sIG9uLWRlbWFuZC4gVGhl
IGZ1bmN0aW9uIGlzIG9ubHkgZXZhbHVhdGVkCisgICAgICAgIGlmIENTUyB0cmFuc2Zvcm1zIGFy
ZSBhYnNlbnQuIFRoZXJlZm9yZSB0aGlzIHBhdGNoIGRvZXNuJ3QgaW5kdWNlIGFueSBydW50aW1l
IHBlbmFsdHkKKyAgICAgICAgZm9yIG5vbi1TVkcgY29kZSBwYXRocy4KKworICAgICAgICBDb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3VyLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bXVsdGlwbHlBZmZpbmVU
cmFuc2Zvcm0pOiBBZGQgbXVsdGlwbHkoKSB2YXJpYXRpb24gdGhhdCB0YWtlcyBhbiBBZmZpbmVU
cmFuc2Zvcm0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm0gY29uc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKToKKwogMjAyMi0wMy0wNyAgTmlrb2xh
cyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbmlmeSAn
dHJhbnNmb3JtLWJveCcgcmVmZXJlbmNlIGJveCBjb21wdXRhdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1h
dHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybWF0aW9uTWF0cml4LmNwcAppbmRleCBmMjI2ZDkzMzFhNGU0MzFmODY2ZTk1N2MxNTg5
YmRlZDAzNjEzYmNhLi4yZWRlM2VlN2EyZTIwZGVjMTc4ODQ1MGY3NTgzYTIxMWVlNzQxZWUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybWF0aW9uTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtMTUzMyw2ICsxNTMz
LDE3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bXVsdGlw
bHkoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmCiAgICAgcmV0dXJuICp0aGlzOwogfQogCitU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6Om11bHRpcGx5QWZmaW5l
VHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbWF0KQoreworICAgIGlmIChtYXQuaXNJ
ZGVudGl0eSgpKQorICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAgICBpZiAobWF0LmlzSWRlbnRp
dHlPclRyYW5zbGF0aW9uKCkpCisgICAgICAgIHJldHVybiB0cmFuc2xhdGUobWF0LmUoKSwgbWF0
LmYoKSk7CisKKyAgICByZXR1cm4gbXVsdGlwbHkobWF0LnRvVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSk7Cit9CisKIHZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6Om11bHRWZWNNYXRyaXgoZG91Ymxl
IHgsIGRvdWJsZSB5LCBkb3VibGUmIHJlc3VsdFgsIGRvdWJsZSYgcmVzdWx0WSkgY29uc3QKIHsK
ICAgICByZXN1bHRYID0gbV9tYXRyaXhbM11bMF0gKyB4ICogbV9tYXRyaXhbMF1bMF0gKyB5ICog
bV9tYXRyaXhbMV1bMF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXgg
Yzk1MTE3N2EzMTBiNzYwNGMyMTU5Y2Q2ZTI0OTdmZDhmMjU3YjgzYi4uODU1ZDJlNzJhMTVhN2M4
NjM3Nzg2NTZlNGYzODZlYTlhOGMyMjYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25N
YXRyaXguaApAQCAtMjQ5LDYgKzI0OSw4IEBAIHB1YmxpYzoKIAogICAgIC8vIHRoaXMgPSBtYXQg
KiB0aGlzLgogICAgIFdFQkNPUkVfRVhQT1JUIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtdWx0aXBs
eShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworICAgIC8vIElkZW50aWNhbCB0byBtdWx0
aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpLCBidXQgc2F2aW5nIGEgQWZmaW5lVHJhbnNmb3Jt
IC0+IFRyYW5zZm9ybWF0aW9uTWF0cml4IHJvdW5kdHJpcCBmb3IgaWRlbnRpdHkgb3IgdHJhbnNs
YXRpb24gbWF0cmljZXMuCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG11bHRpcGx5QWZmaW5l
VHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHNjYWxlKGRvdWJsZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHNjYWxlTm9uVW5pZm9ybShkb3VibGUgc3gsIGRvdWJsZSBz
eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApp
bmRleCA1NDA5NTgwZTA2Mjc1YjM2MDU3M2MyYzcyNTI2NzlkMmFlMDYwOTgxLi43MDFhNjM5OGQz
OTQ2Y2NkMTZmM2U2YTZkMWM5NjVkYWFiNGRjZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTE0MjEsNyArMTQyMSw3IEBAIHZvaWQg
UmVuZGVyU3R5bGU6OnNldEhhc0F0dHJDb250ZW50KCkKICAgICBTRVRfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIGhhc0F0dHJDb250ZW50LCB0cnVlKTsKIH0KIAotdm9pZCBSZW5kZXJTdHls
ZTo6YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1P
cGVyYXRpb25PcHRpb24+IG9wdGlvbnMpIGNvbnN0Cit2b2lkIFJlbmRlclN0eWxlOjphcHBseVRy
YW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3Qm
IGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9w
dGlvbj4gb3B0aW9ucywgV1RGOjpGdW5jdGlvbjxBZmZpbmVUcmFuc2Zvcm0oKT4mJiBleHRlcm5h
bEFmZmluZVRyYW5zZm9ybWF0aW9uU291cmNlKSBjb25zdAogewogICAgIC8vIGh0dHBzOi8vd3d3
LnczLm9yZy9UUi9jc3MtdHJhbnNmb3Jtcy0yLyNjdG0KICAgICAvLyBUaGUgdHJhbnNmb3JtYXRp
b24gbWF0cml4IGlzIGNvbXB1dGVkIGZyb20gdGhlIHRyYW5zZm9ybSwgdHJhbnNmb3JtLW9yaWdp
biwgdHJhbnNsYXRlLCByb3RhdGUsIHNjYWxlLCBhbmQgb2Zmc2V0IHByb3BlcnRpZXMgYXMgZm9s
bG93czoKQEAgLTE0NjUsOCArMTQ2NSwxMyBAQCB2b2lkIFJlbmRlclN0eWxlOjphcHBseVRyYW5z
Zm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlYwogICAg
ICAgICBhcHBseU1vdGlvblBhdGhUcmFuc2Zvcm0odHJhbnNmb3JtLCBib3VuZGluZ0JveCk7CiAK
ICAgICAvLyA3LiBNdWx0aXBseSBieSBlYWNoIG9mIHRoZSB0cmFuc2Zvcm0gZnVuY3Rpb25zIGlu
IHRyYW5zZm9ybSBmcm9tIGxlZnQgdG8gcmlnaHQuCi0gICAgZm9yIChhdXRvJiBvcGVyYXRpb24g
OiB0cmFuc2Zvcm1PcGVyYXRpb25zLm9wZXJhdGlvbnMoKSkKLSAgICAgICAgb3BlcmF0aW9uLT5h
cHBseSh0cmFuc2Zvcm0sIGJvdW5kaW5nQm94LnNpemUoKSk7CisgICAgaWYgKHRyYW5zZm9ybU9w
ZXJhdGlvbnMuc2l6ZSgpKSB7CisgICAgICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogdHJhbnNm
b3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKCkpCisgICAgICAgICAgICBvcGVyYXRpb24tPmFwcGx5
KHRyYW5zZm9ybSwgYm91bmRpbmdCb3guc2l6ZSgpKTsKKyAgICB9IGVsc2UgaWYgKGV4dGVybmFs
QWZmaW5lVHJhbnNmb3JtYXRpb25Tb3VyY2UpIHsKKyAgICAgICAgLy8gU1ZHIG1heSBwcm92aWRl
IGFkZGl0aW9uYWwgbm9uLUNTUyB0cmFuc2Zvcm1hdGlvbiBvcGVyYXRpb25zLgorICAgICAgICB0
cmFuc2Zvcm0ubXVsdGlwbHlBZmZpbmVUcmFuc2Zvcm0oZXh0ZXJuYWxBZmZpbmVUcmFuc2Zvcm1h
dGlvblNvdXJjZSgpKTsKKyAgICB9CiAKICAgICAvLyA4LiBUcmFuc2xhdGUgYnkgdGhlIG5lZ2F0
ZWQgY29tcHV0ZWQgWCwgWSBhbmQgWiB2YWx1ZXMgb2YgdHJhbnNmb3JtLW9yaWdpbi4KICAgICBp
ZiAoYXBwbHlUcmFuc2Zvcm1PcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCmluZGV4IGU3NGJlZTg2NWFjODg5ODdkYjYxNzJlZWIyNGE4YTIzMTY3
ZWI2NWEuLjkyZDEwZmNhYWMxMjEyMTg0YjE3ZTA2ZjUyMzUwNWNmZDI1NmIyOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC02OTcsNyArNjk3
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25TZXQ8VHJhbnNmb3Jt
T3BlcmF0aW9uT3B0aW9uPiBhbGxUcmFuc2Zvcm1PcGVyYXRpb25zID0geyBUcmFuc2Zvcm1PcGVy
YXRpb25PcHRpb246OlRyYW5zZm9ybU9yaWdpbiwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpU
cmFuc2xhdGUsIFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6Um90YXRlLCBUcmFuc2Zvcm1PcGVy
YXRpb25PcHRpb246OlNjYWxlICwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpPZmZzZXQgfTsK
ICAgICBzdGF0aWMgY29uc3RleHByIE9wdGlvblNldDxUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+
IGluZGl2aWR1YWxUcmFuc2Zvcm1PcGVyYXRpb25zID0geyBUcmFuc2Zvcm1PcGVyYXRpb25PcHRp
b246OlRyYW5zbGF0ZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpSb3RhdGUsIFRyYW5zZm9y
bU9wZXJhdGlvbk9wdGlvbjo6U2NhbGUsIFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6T2Zmc2V0
IH07Ci0gICAgdm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0
IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxUcmFuc2Zvcm1PcGVyYXRpb25PcHRp
b24+ID0gYWxsVHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3Q7CisgICAgdm9pZCBhcHBseVRyYW5z
Zm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gs
IE9wdGlvblNldDxUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+ID0gYWxsVHJhbnNmb3JtT3BlcmF0
aW9ucywgV1RGOjpGdW5jdGlvbjxBZmZpbmVUcmFuc2Zvcm0oKT4mJiBleHRlcm5hbEFmZmluZVRy
YW5zZm9ybWF0aW9uU291cmNlID0geyB9KSBjb25zdDsKICAgICB2b2lkIGFwcGx5TW90aW9uUGF0
aFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRp
bmdCb3gpIGNvbnN0OwogICAgIHZvaWQgc2V0UGFnZVNjYWxlVHJhbnNmb3JtKGZsb2F0KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454212</attachid>
            <date>2022-03-09 02:31:01 -0800</date>
            <delta_ts>2022-03-09 03:08:39 -0800</delta_ts>
            <desc>Patch, v2</desc>
            <filename>bug-237590-20220309023055.patch</filename>
            <type>text/plain</type>
            <size>10312</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGJiYzU0NDQ4NDkxZDU5
Mjc0NDY1MDUwOTIxYTBkODhiYzI4MWMwOS4uMTU3ZDYyYTViMGM0YTlhNGQ4ODg1NTYxMTNmMDkw
YjQ4ZDRkNGZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIyLTAzLTA5ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIEV4dHJh
Y3QgdHJhbnNmb3JtLW9yaWdpbiBoYW5kbGluZyBvdXQgb2YgUmVuZGVyU3R5bGU6OmFwcGx5VHJh
bnNmb3JtKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzU5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9ybSgpIGltcGxlbWVudHMgdGhlIGFsZ29yaXRobSBn
aXZlbiBpbgorICAgICAgICBDU1MgVHJhbnNmb3JtcyBNb2R1bGUgTGV2ZWwgMiAoaHR0cHM6Ly93
d3cudzMub3JnL1RSL2Nzcy10cmFuc2Zvcm1zLTIvI2N0bSkKKyAgICAgICAgdGhhdCB5aWVsZHMg
dGhlICJjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeCIuIEl0IGlzIHVzZWQgZS5nLiBpbgor
ICAgICAgICBSZW5kZXJMYXllcjo6dXBkYXRlVHJhbnNmb3JtKCkgdG8gY29tcHV0ZSB0aGUgbGF5
ZXIgdHJhbnNmb3JtYXRpb24KKyAgICAgICAgbWF0cml4LCB0aGF0J3MgdXNlZCBmb3IgcmVuZGVy
aW5nLgorCisgICAgICAgIExCU0Ugd2FudHMgdG8gcmUtdXNlIHRoZSBzYW1lIGFsZ29yaXRobSwg
aW50ZXJjaGFuZ2luZyB0aGUgaW5kaXZpZHVhbAorICAgICAgICBDU1MgdHJhbnNmb3JtIHByb3Bl
cnRpZXMgLyB0aGUgQ1NTIHRyYW5zZm9ybSBwcm9wZXJ0eSB3aXRoIGFuIGV4dGVybmFsCisgICAg
ICAgIEFmZmluZVRyYW5zZm9ybSwgcmVwcmVzZW50aW5nIHRoZSBTVkcgMkQgdHJhbnNmb3JtLgor
CisgICAgICAgIFRoZXJlZm9yZSBTcGxpdCBSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm0oKSBp
bnRvIHRocmVlIG1ldGhvZHM6CisgICAgICAgIGFwcGx5VHJhbnNmb3JtT3JpZ2luIC8gYXBwbHlD
U1NUcmFuc2Zvcm0gLyB1bmFwcGx5VHJhbnNmb3JtT3JpZ2luLgorCisgICAgICAgIExCU0UgY2Fu
IGNhbGwgYXBwbHlUcmFuc2Zvcm1PcmlnaW4oKSwgbXVsdGlwbHkgdGhlIFRyYW5zZm9ybWF0aW9u
TWF0cml4CisgICAgICAgIHdpdGggdGhlIGdpdmVuIFNWRyAyRCBBZmZpbmVUcmFuc2Zvcm0gYW5k
IGNhbGwgdW5hcHBseVRyYW5zZm9ybU9yaWdpbigpLgorICAgICAgICBUaGUgcmVzdCBvZiB0aGUg
Y29kZWJhc2UgcmVtYWluZ3MgdW5jaGFuZ2VkLCBzaW5jZSBhcHBseVRyYW5zZm9ybSgpIGlzIGtl
cHQgYXMtaXMuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cywgbm8gY2hhbmdl
IGluIGJlaGF2aW91ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtYXRpb25NYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXg6Om11bHRpcGx5QWZmaW5lVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjphcHBseVRyYW5zZm9ybU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6dW5hcHBseVRyYW5zZm9ybU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmFwcGx5Q1NTVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaDoKKwogMjAyMi0wMy0wNyAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnpp
bW1lcm1hbm5AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbmlmeSAndHJhbnNmb3JtLWJveCcgcmVm
ZXJlbmNlIGJveCBjb21wdXRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4
LmNwcAppbmRleCBmMjI2ZDkzMzFhNGU0MzFmODY2ZTk1N2MxNTg5YmRlZDAzNjEzYmNhLi4yZWRl
M2VlN2EyZTIwZGVjMTc4ODQ1MGY3NTgzYTIxMWVlNzQxZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtMTUzMyw2ICsxNTMzLDE3IEBAIFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bXVsdGlwbHkoY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmCiAgICAgcmV0dXJuICp0aGlzOwogfQogCitUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6Om11bHRpcGx5QWZmaW5lVHJhbnNmb3JtKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgbWF0KQoreworICAgIGlmIChtYXQuaXNJZGVudGl0eSgpKQorICAgICAg
ICByZXR1cm4gKnRoaXM7CisKKyAgICBpZiAobWF0LmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uKCkp
CisgICAgICAgIHJldHVybiB0cmFuc2xhdGUobWF0LmUoKSwgbWF0LmYoKSk7CisKKyAgICByZXR1
cm4gbXVsdGlwbHkobWF0LnRvVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7Cit9CisKIHZvaWQgVHJh
bnNmb3JtYXRpb25NYXRyaXg6Om11bHRWZWNNYXRyaXgoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3Vi
bGUmIHJlc3VsdFgsIGRvdWJsZSYgcmVzdWx0WSkgY29uc3QKIHsKICAgICByZXN1bHRYID0gbV9t
YXRyaXhbM11bMF0gKyB4ICogbV9tYXRyaXhbMF1bMF0gKyB5ICogbV9tYXRyaXhbMV1bMF07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggYzk1MTE3N2EzMTBiNzYwNGMy
MTU5Y2Q2ZTI0OTdmZDhmMjU3YjgzYi4uODU1ZDJlNzJhMTVhN2M4NjM3Nzg2NTZlNGYzODZlYTlh
OGMyMjYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaApAQCAtMjQ5LDYg
KzI0OSw4IEBAIHB1YmxpYzoKIAogICAgIC8vIHRoaXMgPSBtYXQgKiB0aGlzLgogICAgIFdFQkNP
UkVfRVhQT1JUIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtdWx0aXBseShjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYpOworICAgIC8vIElkZW50aWNhbCB0byBtdWx0aXBseShUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYpLCBidXQgc2F2aW5nIGEgQWZmaW5lVHJhbnNmb3JtIC0+IFRyYW5zZm9ybWF0aW9u
TWF0cml4IHJvdW5kdHJpcCBmb3IgaWRlbnRpdHkgb3IgdHJhbnNsYXRpb24gbWF0cmljZXMuCisg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG11bHRpcGx5QWZmaW5lVHJhbnNmb3JtKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHNjYWxlKGRvdWJsZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHNjYWxlTm9uVW5pZm9ybShkb3VibGUgc3gsIGRvdWJsZSBzeSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA1NDA5NTgwZTA2Mjc1
YjM2MDU3M2MyYzcyNTI2NzlkMmFlMDYwOTgxLi4zMzIxZThkYzlmNGY0N2MzYjk4NWFmZDkzMmUz
YzQyNmI0M2Q5ZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKQEAgLTE0MjEsMjYgKzE0MjEsNDggQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0
SGFzQXR0ckNvbnRlbnQoKQogICAgIFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgaGFz
QXR0ckNvbnRlbnQsIHRydWUpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9y
bShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5k
aW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4g
b3B0aW9ucykgY29uc3QKK0Zsb2F0UG9pbnQzRCBSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm1P
cmlnaW4oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBi
b3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRp
b24+IG9wdGlvbnMpIGNvbnN0CiB7Ci0gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10
cmFuc2Zvcm1zLTIvI2N0bQotICAgIC8vIFRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggaXMgY29t
cHV0ZWQgZnJvbSB0aGUgdHJhbnNmb3JtLCB0cmFuc2Zvcm0tb3JpZ2luLCB0cmFuc2xhdGUsIHJv
dGF0ZSwgc2NhbGUsIGFuZCBvZmZzZXQgcHJvcGVydGllcyBhcyBmb2xsb3dzOgotICAgIC8vIDEu
IFN0YXJ0IHdpdGggdGhlIGlkZW50aXR5IG1hdHJpeC4KLQogICAgIGF1dG8mIHRyYW5zZm9ybU9w
ZXJhdGlvbnMgPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPm9wZXJhdGlvbnM7
CiAgICAgYm9vbCBhcHBseVRyYW5zZm9ybU9yaWdpbiA9IG9wdGlvbnMuY29udGFpbnMoUmVuZGVy
U3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNmb3JtT3JpZ2luKQogICAgICAg
ICAmJiAoKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnJvdGF0ZSAmJiAhbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+cm90YXRlLT5pc0lkZW50aXR5KCkpCiAgICAgICAgICAgICB8fCAobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+c2NhbGUgJiYgIW1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNjYWxlLT5p
c0lkZW50aXR5KCkpCiAgICAgICAgICAgICB8fCB0cmFuc2Zvcm1PcGVyYXRpb25zLmFmZmVjdGVk
QnlUcmFuc2Zvcm1PcmlnaW4oKQogICAgICAgICAgICAgfHwgb2Zmc2V0UGF0aCgpKTsKKyAgICBp
ZiAoIWFwcGx5VHJhbnNmb3JtT3JpZ2luKQorICAgICAgICByZXR1cm4geyB9OwogCisgICAgLy8g
aHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10cmFuc2Zvcm1zLTIvI2N0bQogICAgIC8vIDIuIFRy
YW5zbGF0ZSBieSB0aGUgY29tcHV0ZWQgWCwgWSwgYW5kIFogdmFsdWVzIG9mIHRyYW5zZm9ybS1v
cmlnaW4uCiAgICAgRmxvYXRQb2ludDNEIG9yaWdpblRyYW5zbGF0ZTsKLSAgICBpZiAoYXBwbHlU
cmFuc2Zvcm1PcmlnaW4pIHsKLSAgICAgICAgb3JpZ2luVHJhbnNsYXRlLnNldFhZKGJvdW5kaW5n
Qm94LmxvY2F0aW9uKCkgKyBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodHJhbnNmb3JtT3JpZ2lu
WFkoKSwgYm91bmRpbmdCb3guc2l6ZSgpKSk7Ci0gICAgICAgIG9yaWdpblRyYW5zbGF0ZS5zZXRa
KHRyYW5zZm9ybU9yaWdpblooKSk7CisgICAgb3JpZ2luVHJhbnNsYXRlLnNldFhZKGJvdW5kaW5n
Qm94LmxvY2F0aW9uKCkgKyBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodHJhbnNmb3JtT3JpZ2lu
WFkoKSwgYm91bmRpbmdCb3guc2l6ZSgpKSk7CisgICAgb3JpZ2luVHJhbnNsYXRlLnNldFoodHJh
bnNmb3JtT3JpZ2luWigpKTsKKyAgICBpZiAoIW9yaWdpblRyYW5zbGF0ZS5pc1plcm8oKSkKICAg
ICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNkKG9yaWdpblRyYW5zbGF0ZS54KCksIG9yaWdpblRy
YW5zbGF0ZS55KCksIG9yaWdpblRyYW5zbGF0ZS56KCkpOwotICAgIH0KKyAgICByZXR1cm4gb3Jp
Z2luVHJhbnNsYXRlOworfQorCit2b2lkIFJlbmRlclN0eWxlOjp1bmFwcGx5VHJhbnNmb3JtT3Jp
Z2luKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQzRCYg
b3JpZ2luVHJhbnNsYXRlKSBjb25zdAoreworICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9j
c3MtdHJhbnNmb3Jtcy0yLyNjdG0KKyAgICAvLyA4LiBUcmFuc2xhdGUgYnkgdGhlIG5lZ2F0ZWQg
Y29tcHV0ZWQgWCwgWSBhbmQgWiB2YWx1ZXMgb2YgdHJhbnNmb3JtLW9yaWdpbi4KKyAgICBpZiAo
IW9yaWdpblRyYW5zbGF0ZS5pc1plcm8oKSkKKyAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNk
KC1vcmlnaW5UcmFuc2xhdGUueCgpLCAtb3JpZ2luVHJhbnNsYXRlLnkoKSwgLW9yaWdpblRyYW5z
bGF0ZS56KCkpOworfQorCit2b2lkIFJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9ybShUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBP
cHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gb3B0aW9ucykg
Y29uc3QKK3sKKyAgICBhdXRvIG9yaWdpblRyYW5zbGF0ZSA9IGFwcGx5VHJhbnNmb3JtT3JpZ2lu
KHRyYW5zZm9ybSwgYm91bmRpbmdCb3gsIG9wdGlvbnMpOworICAgIGFwcGx5Q1NTVHJhbnNmb3Jt
KHRyYW5zZm9ybSwgYm91bmRpbmdCb3gsIG9wdGlvbnMpOworICAgIHVuYXBwbHlUcmFuc2Zvcm1P
cmlnaW4odHJhbnNmb3JtLCBvcmlnaW5UcmFuc2xhdGUpOworfQorCit2b2lkIFJlbmRlclN0eWxl
OjphcHBseUNTU1RyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25z
dCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9y
bU9wZXJhdGlvbk9wdGlvbj4gb3B0aW9ucykgY29uc3QKK3sKKyAgICAvLyBodHRwczovL3d3dy53
My5vcmcvVFIvY3NzLXRyYW5zZm9ybXMtMi8jY3RtCisgICAgLy8gVGhlIHRyYW5zZm9ybWF0aW9u
IG1hdHJpeCBpcyBjb21wdXRlZCBmcm9tIHRoZSB0cmFuc2Zvcm0sIHRyYW5zZm9ybS1vcmlnaW4s
IHRyYW5zbGF0ZSwgcm90YXRlLCBzY2FsZSwgYW5kIG9mZnNldCBwcm9wZXJ0aWVzIGFzIGZvbGxv
d3M6CisgICAgLy8gMS4gU3RhcnQgd2l0aCB0aGUgaWRlbnRpdHkgbWF0cml4LgorICAgIC8vIDIu
IFRyYW5zbGF0ZSBieSB0aGUgY29tcHV0ZWQgWCwgWSwgYW5kIFogdmFsdWVzIG9mIHRyYW5zZm9y
bS1vcmlnaW4uIChzZWUgYXBwbHlUcmFuc2Zvcm1PcmlnaW4pCiAKICAgICAvLyAzLiBUcmFuc2xh
dGUgYnkgdGhlIGNvbXB1dGVkIFgsIFksIGFuZCBaIHZhbHVlcyBvZiB0cmFuc2xhdGUuCiAgICAg
aWYgKG9wdGlvbnMuY29udGFpbnMoUmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlv
bjo6VHJhbnNsYXRlKSkgewpAQCAtMTQ2NSwxMiArMTQ4NywxMSBAQCB2b2lkIFJlbmRlclN0eWxl
OjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBG
bG9hdFJlYwogICAgICAgICBhcHBseU1vdGlvblBhdGhUcmFuc2Zvcm0odHJhbnNmb3JtLCBib3Vu
ZGluZ0JveCk7CiAKICAgICAvLyA3LiBNdWx0aXBseSBieSBlYWNoIG9mIHRoZSB0cmFuc2Zvcm0g
ZnVuY3Rpb25zIGluIHRyYW5zZm9ybSBmcm9tIGxlZnQgdG8gcmlnaHQuCisgICAgYXV0byYgdHJh
bnNmb3JtT3BlcmF0aW9ucyA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+b3Bl
cmF0aW9uczsKICAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IHRyYW5zZm9ybU9wZXJhdGlvbnMu
b3BlcmF0aW9ucygpKQogICAgICAgICBvcGVyYXRpb24tPmFwcGx5KHRyYW5zZm9ybSwgYm91bmRp
bmdCb3guc2l6ZSgpKTsKIAotICAgIC8vIDguIFRyYW5zbGF0ZSBieSB0aGUgbmVnYXRlZCBjb21w
dXRlZCBYLCBZIGFuZCBaIHZhbHVlcyBvZiB0cmFuc2Zvcm0tb3JpZ2luLgotICAgIGlmIChhcHBs
eVRyYW5zZm9ybU9yaWdpbikKLSAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNkKC1vcmlnaW5U
cmFuc2xhdGUueCgpLCAtb3JpZ2luVHJhbnNsYXRlLnkoKSwgLW9yaWdpblRyYW5zbGF0ZS56KCkp
OworICAgIC8vIDguIFRyYW5zbGF0ZSBieSB0aGUgbmVnYXRlZCBjb21wdXRlZCBYLCBZIGFuZCBa
IHZhbHVlcyBvZiB0cmFuc2Zvcm0tb3JpZ2luLiAoc2VlIHVuYXBwbHlUcmFuc2Zvcm1PcmlnaW4p
CiB9CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBhdGg+IGdldFBhdGhGcm9tUGF0aE9wZXJhdGlv
bihjb25zdCBGbG9hdFJlY3QmIGJveCwgY29uc3QgUGF0aE9wZXJhdGlvbiYgb3BlcmF0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCAyNjhm
ZGIwNDVhNDA3NmFkODM5NzAwN2QxODc4OGRjMmQ4M2M0ZWZlLi4xNzRmNTJjNjgwODhhY2I5MzA5
ZGI5NTU3NmQyMjgzZWYyOTRjM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaApAQCAtNjk3LDcgKzY5NywxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgY29uc3RleHByIE9wdGlvblNldDxUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+IGFsbFRyYW5z
Zm9ybU9wZXJhdGlvbnMgPSB7IFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNmb3JtT3Jp
Z2luLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlRyYW5zbGF0ZSwgVHJhbnNmb3JtT3BlcmF0
aW9uT3B0aW9uOjpSb3RhdGUsIFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6U2NhbGUgLCBUcmFu
c2Zvcm1PcGVyYXRpb25PcHRpb246Ok9mZnNldCB9OwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0
aW9uU2V0PFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gaW5kaXZpZHVhbFRyYW5zZm9ybU9wZXJh
dGlvbnMgPSB7IFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNsYXRlLCBUcmFuc2Zvcm1P
cGVyYXRpb25PcHRpb246OlJvdGF0ZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpTY2FsZSwg
VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpPZmZzZXQgfTsKKworICAgIEZsb2F0UG9pbnQzRCBh
cHBseVRyYW5zZm9ybU9yaWdpbihUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVj
dCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+ID0gYWxs
VHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3Q7CisgICAgdm9pZCB1bmFwcGx5VHJhbnNmb3JtT3Jp
Z2luKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRQb2ludDNEJiBvcmlnaW5UcmFu
c2xhdGUpIGNvbnN0OworICAgIC8vIGFwcGx5VHJhbnNmb3JtIGNhbGxzIGFwcGx5VHJhbnNmb3Jt
T3JpZ2luKCksIHRoZW4gYXBwbHlDU1NUcmFuc2Zvcm0oKSwgZm9sbG93ZWQgYnkgdW5hcHBseVRy
YW5zZm9ybU9yaWdpbigpLgogICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8VHJhbnNmb3Jt
T3BlcmF0aW9uT3B0aW9uPiA9IGFsbFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNvbnN0OworICAgIHZv
aWQgYXBwbHlDU1NUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFJl
Y3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiA9IGFs
bFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNvbnN0OwogICAgIHZvaWQgYXBwbHlNb3Rpb25QYXRoVHJh
bnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0Jv
eCkgY29uc3Q7CiAgICAgdm9pZCBzZXRQYWdlU2NhbGVUcmFuc2Zvcm0oZmxvYXQpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454217</attachid>
            <date>2022-03-09 03:08:44 -0800</date>
            <delta_ts>2022-03-10 05:52:46 -0800</delta_ts>
            <desc>Patch, v3</desc>
            <filename>bug-237590-20220309030838.patch</filename>
            <type>text/plain</type>
            <size>10312</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTAwMzcwMGQ2YmU3OGM1
NmUwZTkxMTVkOTc0ODRiN2NmNjVkNjZmZC4uZDY0NWRiOGY4NTQ1YTRlN2ZiYmZmNDJmMTVlMDAy
YzVjMzlkNWE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIyLTAzLTA5ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIEV4dHJh
Y3QgdHJhbnNmb3JtLW9yaWdpbiBoYW5kbGluZyBvdXQgb2YgUmVuZGVyU3R5bGU6OmFwcGx5VHJh
bnNmb3JtKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzU5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9ybSgpIGltcGxlbWVudHMgdGhlIGFsZ29yaXRobSBn
aXZlbiBpbgorICAgICAgICBDU1MgVHJhbnNmb3JtcyBNb2R1bGUgTGV2ZWwgMiAoaHR0cHM6Ly93
d3cudzMub3JnL1RSL2Nzcy10cmFuc2Zvcm1zLTIvI2N0bSkKKyAgICAgICAgdGhhdCB5aWVsZHMg
dGhlICJjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeCIuIEl0IGlzIHVzZWQgZS5nLiBpbgor
ICAgICAgICBSZW5kZXJMYXllcjo6dXBkYXRlVHJhbnNmb3JtKCkgdG8gY29tcHV0ZSB0aGUgbGF5
ZXIgdHJhbnNmb3JtYXRpb24KKyAgICAgICAgbWF0cml4LCB0aGF0J3MgdXNlZCBmb3IgcmVuZGVy
aW5nLgorCisgICAgICAgIExCU0Ugd2FudHMgdG8gcmUtdXNlIHRoZSBzYW1lIGFsZ29yaXRobSwg
aW50ZXJjaGFuZ2luZyB0aGUgaW5kaXZpZHVhbAorICAgICAgICBDU1MgdHJhbnNmb3JtIHByb3Bl
cnRpZXMgLyB0aGUgQ1NTIHRyYW5zZm9ybSBwcm9wZXJ0eSB3aXRoIGFuIGV4dGVybmFsCisgICAg
ICAgIEFmZmluZVRyYW5zZm9ybSwgcmVwcmVzZW50aW5nIHRoZSBTVkcgMkQgdHJhbnNmb3JtLgor
CisgICAgICAgIFRoZXJlZm9yZSBTcGxpdCBSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm0oKSBp
bnRvIHRocmVlIG1ldGhvZHM6CisgICAgICAgIGFwcGx5VHJhbnNmb3JtT3JpZ2luIC8gYXBwbHlD
U1NUcmFuc2Zvcm0gLyB1bmFwcGx5VHJhbnNmb3JtT3JpZ2luLgorCisgICAgICAgIExCU0UgY2Fu
IGNhbGwgYXBwbHlUcmFuc2Zvcm1PcmlnaW4oKSwgbXVsdGlwbHkgdGhlIFRyYW5zZm9ybWF0aW9u
TWF0cml4CisgICAgICAgIHdpdGggdGhlIGdpdmVuIFNWRyAyRCBBZmZpbmVUcmFuc2Zvcm0gYW5k
IGNhbGwgdW5hcHBseVRyYW5zZm9ybU9yaWdpbigpLgorICAgICAgICBUaGUgcmVzdCBvZiB0aGUg
Y29kZWJhc2UgcmVtYWluZ3MgdW5jaGFuZ2VkLCBzaW5jZSBhcHBseVRyYW5zZm9ybSgpIGlzIGtl
cHQgYXMtaXMuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cywgbm8gY2hhbmdl
IGluIGJlaGF2aW91ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtYXRpb25NYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXg6Om11bHRpcGx5QWZmaW5lVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjphcHBseVRyYW5zZm9ybU9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6dW5hcHBseVRyYW5zZm9ybU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmFwcGx5Q1NTVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaDoKKwogMjAyMi0wMy0wOSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnpp
bW1lcm1hbm5AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbmlmeSAndHJhbnNmb3JtLWJveCcgcmVm
ZXJlbmNlIGJveCBjb21wdXRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4
LmNwcAppbmRleCBmMjI2ZDkzMzFhNGU0MzFmODY2ZTk1N2MxNTg5YmRlZDAzNjEzYmNhLi4yZWRl
M2VlN2EyZTIwZGVjMTc4ODQ1MGY3NTgzYTIxMWVlNzQxZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtMTUzMyw2ICsxNTMzLDE3IEBAIFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bXVsdGlwbHkoY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmCiAgICAgcmV0dXJuICp0aGlzOwogfQogCitUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6Om11bHRpcGx5QWZmaW5lVHJhbnNmb3JtKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgbWF0KQoreworICAgIGlmIChtYXQuaXNJZGVudGl0eSgpKQorICAgICAg
ICByZXR1cm4gKnRoaXM7CisKKyAgICBpZiAobWF0LmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uKCkp
CisgICAgICAgIHJldHVybiB0cmFuc2xhdGUobWF0LmUoKSwgbWF0LmYoKSk7CisKKyAgICByZXR1
cm4gbXVsdGlwbHkobWF0LnRvVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7Cit9CisKIHZvaWQgVHJh
bnNmb3JtYXRpb25NYXRyaXg6Om11bHRWZWNNYXRyaXgoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3Vi
bGUmIHJlc3VsdFgsIGRvdWJsZSYgcmVzdWx0WSkgY29uc3QKIHsKICAgICByZXN1bHRYID0gbV9t
YXRyaXhbM11bMF0gKyB4ICogbV9tYXRyaXhbMF1bMF0gKyB5ICogbV9tYXRyaXhbMV1bMF07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggYzk1MTE3N2EzMTBiNzYwNGMy
MTU5Y2Q2ZTI0OTdmZDhmMjU3YjgzYi4uODU1ZDJlNzJhMTVhN2M4NjM3Nzg2NTZlNGYzODZlYTlh
OGMyMjYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaApAQCAtMjQ5LDYg
KzI0OSw4IEBAIHB1YmxpYzoKIAogICAgIC8vIHRoaXMgPSBtYXQgKiB0aGlzLgogICAgIFdFQkNP
UkVfRVhQT1JUIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtdWx0aXBseShjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYpOworICAgIC8vIElkZW50aWNhbCB0byBtdWx0aXBseShUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYpLCBidXQgc2F2aW5nIGEgQWZmaW5lVHJhbnNmb3JtIC0+IFRyYW5zZm9ybWF0aW9u
TWF0cml4IHJvdW5kdHJpcCBmb3IgaWRlbnRpdHkgb3IgdHJhbnNsYXRpb24gbWF0cmljZXMuCisg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG11bHRpcGx5QWZmaW5lVHJhbnNmb3JtKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHNjYWxlKGRvdWJsZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHNjYWxlTm9uVW5pZm9ybShkb3VibGUgc3gsIGRvdWJsZSBzeSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA1NDA5NTgwZTA2Mjc1
YjM2MDU3M2MyYzcyNTI2NzlkMmFlMDYwOTgxLi4zMzIxZThkYzlmNGY0N2MzYjk4NWFmZDkzMmUz
YzQyNmI0M2Q5ZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKQEAgLTE0MjEsMjYgKzE0MjEsNDggQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0
SGFzQXR0ckNvbnRlbnQoKQogICAgIFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgaGFz
QXR0ckNvbnRlbnQsIHRydWUpOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9y
bShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5k
aW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4g
b3B0aW9ucykgY29uc3QKK0Zsb2F0UG9pbnQzRCBSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm1P
cmlnaW4oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBi
b3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRp
b24+IG9wdGlvbnMpIGNvbnN0CiB7Ci0gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10
cmFuc2Zvcm1zLTIvI2N0bQotICAgIC8vIFRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggaXMgY29t
cHV0ZWQgZnJvbSB0aGUgdHJhbnNmb3JtLCB0cmFuc2Zvcm0tb3JpZ2luLCB0cmFuc2xhdGUsIHJv
dGF0ZSwgc2NhbGUsIGFuZCBvZmZzZXQgcHJvcGVydGllcyBhcyBmb2xsb3dzOgotICAgIC8vIDEu
IFN0YXJ0IHdpdGggdGhlIGlkZW50aXR5IG1hdHJpeC4KLQogICAgIGF1dG8mIHRyYW5zZm9ybU9w
ZXJhdGlvbnMgPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2Zvcm0tPm9wZXJhdGlvbnM7
CiAgICAgYm9vbCBhcHBseVRyYW5zZm9ybU9yaWdpbiA9IG9wdGlvbnMuY29udGFpbnMoUmVuZGVy
U3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNmb3JtT3JpZ2luKQogICAgICAg
ICAmJiAoKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnJvdGF0ZSAmJiAhbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+cm90YXRlLT5pc0lkZW50aXR5KCkpCiAgICAgICAgICAgICB8fCAobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS0+c2NhbGUgJiYgIW1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNjYWxlLT5p
c0lkZW50aXR5KCkpCiAgICAgICAgICAgICB8fCB0cmFuc2Zvcm1PcGVyYXRpb25zLmFmZmVjdGVk
QnlUcmFuc2Zvcm1PcmlnaW4oKQogICAgICAgICAgICAgfHwgb2Zmc2V0UGF0aCgpKTsKKyAgICBp
ZiAoIWFwcGx5VHJhbnNmb3JtT3JpZ2luKQorICAgICAgICByZXR1cm4geyB9OwogCisgICAgLy8g
aHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10cmFuc2Zvcm1zLTIvI2N0bQogICAgIC8vIDIuIFRy
YW5zbGF0ZSBieSB0aGUgY29tcHV0ZWQgWCwgWSwgYW5kIFogdmFsdWVzIG9mIHRyYW5zZm9ybS1v
cmlnaW4uCiAgICAgRmxvYXRQb2ludDNEIG9yaWdpblRyYW5zbGF0ZTsKLSAgICBpZiAoYXBwbHlU
cmFuc2Zvcm1PcmlnaW4pIHsKLSAgICAgICAgb3JpZ2luVHJhbnNsYXRlLnNldFhZKGJvdW5kaW5n
Qm94LmxvY2F0aW9uKCkgKyBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodHJhbnNmb3JtT3JpZ2lu
WFkoKSwgYm91bmRpbmdCb3guc2l6ZSgpKSk7Ci0gICAgICAgIG9yaWdpblRyYW5zbGF0ZS5zZXRa
KHRyYW5zZm9ybU9yaWdpblooKSk7CisgICAgb3JpZ2luVHJhbnNsYXRlLnNldFhZKGJvdW5kaW5n
Qm94LmxvY2F0aW9uKCkgKyBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodHJhbnNmb3JtT3JpZ2lu
WFkoKSwgYm91bmRpbmdCb3guc2l6ZSgpKSk7CisgICAgb3JpZ2luVHJhbnNsYXRlLnNldFoodHJh
bnNmb3JtT3JpZ2luWigpKTsKKyAgICBpZiAoIW9yaWdpblRyYW5zbGF0ZS5pc1plcm8oKSkKICAg
ICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNkKG9yaWdpblRyYW5zbGF0ZS54KCksIG9yaWdpblRy
YW5zbGF0ZS55KCksIG9yaWdpblRyYW5zbGF0ZS56KCkpOwotICAgIH0KKyAgICByZXR1cm4gb3Jp
Z2luVHJhbnNsYXRlOworfQorCit2b2lkIFJlbmRlclN0eWxlOjp1bmFwcGx5VHJhbnNmb3JtT3Jp
Z2luKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQzRCYg
b3JpZ2luVHJhbnNsYXRlKSBjb25zdAoreworICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9j
c3MtdHJhbnNmb3Jtcy0yLyNjdG0KKyAgICAvLyA4LiBUcmFuc2xhdGUgYnkgdGhlIG5lZ2F0ZWQg
Y29tcHV0ZWQgWCwgWSBhbmQgWiB2YWx1ZXMgb2YgdHJhbnNmb3JtLW9yaWdpbi4KKyAgICBpZiAo
IW9yaWdpblRyYW5zbGF0ZS5pc1plcm8oKSkKKyAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNk
KC1vcmlnaW5UcmFuc2xhdGUueCgpLCAtb3JpZ2luVHJhbnNsYXRlLnkoKSwgLW9yaWdpblRyYW5z
bGF0ZS56KCkpOworfQorCit2b2lkIFJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9ybShUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBP
cHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gb3B0aW9ucykg
Y29uc3QKK3sKKyAgICBhdXRvIG9yaWdpblRyYW5zbGF0ZSA9IGFwcGx5VHJhbnNmb3JtT3JpZ2lu
KHRyYW5zZm9ybSwgYm91bmRpbmdCb3gsIG9wdGlvbnMpOworICAgIGFwcGx5Q1NTVHJhbnNmb3Jt
KHRyYW5zZm9ybSwgYm91bmRpbmdCb3gsIG9wdGlvbnMpOworICAgIHVuYXBwbHlUcmFuc2Zvcm1P
cmlnaW4odHJhbnNmb3JtLCBvcmlnaW5UcmFuc2xhdGUpOworfQorCit2b2lkIFJlbmRlclN0eWxl
OjphcHBseUNTU1RyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25z
dCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9y
bU9wZXJhdGlvbk9wdGlvbj4gb3B0aW9ucykgY29uc3QKK3sKKyAgICAvLyBodHRwczovL3d3dy53
My5vcmcvVFIvY3NzLXRyYW5zZm9ybXMtMi8jY3RtCisgICAgLy8gVGhlIHRyYW5zZm9ybWF0aW9u
IG1hdHJpeCBpcyBjb21wdXRlZCBmcm9tIHRoZSB0cmFuc2Zvcm0sIHRyYW5zZm9ybS1vcmlnaW4s
IHRyYW5zbGF0ZSwgcm90YXRlLCBzY2FsZSwgYW5kIG9mZnNldCBwcm9wZXJ0aWVzIGFzIGZvbGxv
d3M6CisgICAgLy8gMS4gU3RhcnQgd2l0aCB0aGUgaWRlbnRpdHkgbWF0cml4LgorICAgIC8vIDIu
IFRyYW5zbGF0ZSBieSB0aGUgY29tcHV0ZWQgWCwgWSwgYW5kIFogdmFsdWVzIG9mIHRyYW5zZm9y
bS1vcmlnaW4uIChzZWUgYXBwbHlUcmFuc2Zvcm1PcmlnaW4pCiAKICAgICAvLyAzLiBUcmFuc2xh
dGUgYnkgdGhlIGNvbXB1dGVkIFgsIFksIGFuZCBaIHZhbHVlcyBvZiB0cmFuc2xhdGUuCiAgICAg
aWYgKG9wdGlvbnMuY29udGFpbnMoUmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlv
bjo6VHJhbnNsYXRlKSkgewpAQCAtMTQ2NSwxMiArMTQ4NywxMSBAQCB2b2lkIFJlbmRlclN0eWxl
OjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBG
bG9hdFJlYwogICAgICAgICBhcHBseU1vdGlvblBhdGhUcmFuc2Zvcm0odHJhbnNmb3JtLCBib3Vu
ZGluZ0JveCk7CiAKICAgICAvLyA3LiBNdWx0aXBseSBieSBlYWNoIG9mIHRoZSB0cmFuc2Zvcm0g
ZnVuY3Rpb25zIGluIHRyYW5zZm9ybSBmcm9tIGxlZnQgdG8gcmlnaHQuCisgICAgYXV0byYgdHJh
bnNmb3JtT3BlcmF0aW9ucyA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+b3Bl
cmF0aW9uczsKICAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IHRyYW5zZm9ybU9wZXJhdGlvbnMu
b3BlcmF0aW9ucygpKQogICAgICAgICBvcGVyYXRpb24tPmFwcGx5KHRyYW5zZm9ybSwgYm91bmRp
bmdCb3guc2l6ZSgpKTsKIAotICAgIC8vIDguIFRyYW5zbGF0ZSBieSB0aGUgbmVnYXRlZCBjb21w
dXRlZCBYLCBZIGFuZCBaIHZhbHVlcyBvZiB0cmFuc2Zvcm0tb3JpZ2luLgotICAgIGlmIChhcHBs
eVRyYW5zZm9ybU9yaWdpbikKLSAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNkKC1vcmlnaW5U
cmFuc2xhdGUueCgpLCAtb3JpZ2luVHJhbnNsYXRlLnkoKSwgLW9yaWdpblRyYW5zbGF0ZS56KCkp
OworICAgIC8vIDguIFRyYW5zbGF0ZSBieSB0aGUgbmVnYXRlZCBjb21wdXRlZCBYLCBZIGFuZCBa
IHZhbHVlcyBvZiB0cmFuc2Zvcm0tb3JpZ2luLiAoc2VlIHVuYXBwbHlUcmFuc2Zvcm1PcmlnaW4p
CiB9CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBhdGg+IGdldFBhdGhGcm9tUGF0aE9wZXJhdGlv
bihjb25zdCBGbG9hdFJlY3QmIGJveCwgY29uc3QgUGF0aE9wZXJhdGlvbiYgb3BlcmF0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCAyNjhm
ZGIwNDVhNDA3NmFkODM5NzAwN2QxODc4OGRjMmQ4M2M0ZWZlLi4xNzRmNTJjNjgwODhhY2I5MzA5
ZGI5NTU3NmQyMjgzZWYyOTRjM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaApAQCAtNjk3LDcgKzY5NywxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgY29uc3RleHByIE9wdGlvblNldDxUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+IGFsbFRyYW5z
Zm9ybU9wZXJhdGlvbnMgPSB7IFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNmb3JtT3Jp
Z2luLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlRyYW5zbGF0ZSwgVHJhbnNmb3JtT3BlcmF0
aW9uT3B0aW9uOjpSb3RhdGUsIFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6U2NhbGUgLCBUcmFu
c2Zvcm1PcGVyYXRpb25PcHRpb246Ok9mZnNldCB9OwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0
aW9uU2V0PFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gaW5kaXZpZHVhbFRyYW5zZm9ybU9wZXJh
dGlvbnMgPSB7IFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNsYXRlLCBUcmFuc2Zvcm1P
cGVyYXRpb25PcHRpb246OlJvdGF0ZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpTY2FsZSwg
VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpPZmZzZXQgfTsKKworICAgIEZsb2F0UG9pbnQzRCBh
cHBseVRyYW5zZm9ybU9yaWdpbihUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVj
dCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+ID0gYWxs
VHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3Q7CisgICAgdm9pZCB1bmFwcGx5VHJhbnNmb3JtT3Jp
Z2luKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRQb2ludDNEJiBvcmlnaW5UcmFu
c2xhdGUpIGNvbnN0OworICAgIC8vIGFwcGx5VHJhbnNmb3JtIGNhbGxzIGFwcGx5VHJhbnNmb3Jt
T3JpZ2luKCksIHRoZW4gYXBwbHlDU1NUcmFuc2Zvcm0oKSwgZm9sbG93ZWQgYnkgdW5hcHBseVRy
YW5zZm9ybU9yaWdpbigpLgogICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8VHJhbnNmb3Jt
T3BlcmF0aW9uT3B0aW9uPiA9IGFsbFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNvbnN0OworICAgIHZv
aWQgYXBwbHlDU1NUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFJl
Y3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiA9IGFs
bFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNvbnN0OwogICAgIHZvaWQgYXBwbHlNb3Rpb25QYXRoVHJh
bnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0Jv
eCkgY29uc3Q7CiAgICAgdm9pZCBzZXRQYWdlU2NhbGVUcmFuc2Zvcm0oZmxvYXQpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454348</attachid>
            <date>2022-03-10 05:52:51 -0800</date>
            <delta_ts>2022-03-14 11:21:18 -0700</delta_ts>
            <desc>Patch, v4</desc>
            <filename>bug-237590-20220310055250.patch</filename>
            <type>text/plain</type>
            <size>9296</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODkxMDk2ZWEwODFlMDgw
MjZlZjYzYjY5ZDJlZjc1M2JjMTM0N2E1Zi4uNDNmYWVmNjQ4NDhhZDYyMzY5YTI5YWE0YWI4OTc4
OGZiOGI3NjU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIyLTAzLTEwICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIEV4dHJh
Y3QgdHJhbnNmb3JtLW9yaWdpbiBoYW5kbGluZyBvdXQgb2YgUmVuZGVyU3R5bGU6OmFwcGx5VHJh
bnNmb3JtKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzU5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9ybSgpIGltcGxlbWVudHMgdGhlIGFsZ29yaXRobSBn
aXZlbiBpbgorICAgICAgICBDU1MgVHJhbnNmb3JtcyBNb2R1bGUgTGV2ZWwgMiAoaHR0cHM6Ly93
d3cudzMub3JnL1RSL2Nzcy10cmFuc2Zvcm1zLTIvI2N0bSkKKyAgICAgICAgdGhhdCB5aWVsZHMg
dGhlICJjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeCIuIEl0IGlzIHVzZWQgZS5nLiBpbgor
ICAgICAgICBSZW5kZXJMYXllcjo6dXBkYXRlVHJhbnNmb3JtKCkgdG8gY29tcHV0ZSB0aGUgbGF5
ZXIgdHJhbnNmb3JtYXRpb24KKyAgICAgICAgbWF0cml4LCB0aGF0J3MgdXNlZCBmb3IgcmVuZGVy
aW5nLgorCisgICAgICAgIExCU0Ugd2FudHMgdG8gcmUtdXNlIHRoZSBzYW1lIGFsZ29yaXRobSwg
aW50ZXJjaGFuZ2luZyB0aGUgaW5kaXZpZHVhbAorICAgICAgICBDU1MgdHJhbnNmb3JtIHByb3Bl
cnRpZXMgLyB0aGUgQ1NTIHRyYW5zZm9ybSBwcm9wZXJ0eSB3aXRoIGFuIGV4dGVybmFsCisgICAg
ICAgIEFmZmluZVRyYW5zZm9ybSwgcmVwcmVzZW50aW5nIHRoZSBTVkcgMkQgdHJhbnNmb3JtLgor
CisgICAgICAgIFRoZXJlZm9yZSBzcGxpdCBSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm0oKSBp
bnRvIHRocmVlIG1haW4gbWV0aG9kczoKKyAgICAgICAgYXBwbHlUcmFuc2Zvcm1PcmlnaW4gLyBh
cHBseUNTU1RyYW5zZm9ybSAvIHVuYXBwbHlUcmFuc2Zvcm1PcmlnaW4uCisKKyAgICAgICAgTEJT
RSBjYW4gY2FsbCBhcHBseVRyYW5zZm9ybU9yaWdpbigpLCBtdWx0aXBseSB0aGUgVHJhbnNmb3Jt
YXRpb25NYXRyaXgKKyAgICAgICAgd2l0aCB0aGUgZ2l2ZW4gU1ZHIDJEIEFmZmluZVRyYW5zZm9y
bSBhbmQgY2FsbCB1bmFwcGx5VHJhbnNmb3JtT3JpZ2luKCk6CisKKyAgICAgICAgICAgIGF1dG8g
b3JpZ2luVHJhbnNsYXRlID0gc3R5bGUuYXBwbHlUcmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtLCBi
b3VuZGluZ0JveCk7CisgICAgICAgICAgICB0cmFuc2Zvcm0ubXVsdGlwbHlBZmZpbmVUcmFuc2Zv
cm0oc3ZnVHJhbnNmb3JtLnZhbHVlKCkpOworICAgICAgICAgICAgc3R5bGUudW5hcHBseVRyYW5z
Zm9ybU9yaWdpbih0cmFuc2Zvcm0sIG9yaWdpblRyYW5zbGF0ZSk7CisKKyAgICAgICAgVGhlIExC
U0UgdHJhbnNmb3JtIGNoYW5nZXMgd2lsbCBmb2xsb3cgaW4gYSBzZXBhcmF0ZWQgcGF0Y2gsIHRo
aXMgb25seSBjb250YWlucworICAgICAgICB0aGUgZ2VuZXJhbCBjaGFuZ2VzLiBUaGUgbm9uLVNW
RyBjb2RlIHBhdGhzIHJlbWFpbiB1bmNoYWluZWQsIHNpbmNlIHRoZSBhcHBseVRyYW5zZm9ybSgp
CisgICAgICAgIGlzIGtlcHQgYXMtaXMsIGp1c3QgcmVmYWN0b3JlZCB0byBtYWtlIHVzZSBvZiB0
aGUgbmV3ICh1bilhcHBseVRyYW5zZm9ybU9yaWdpbigpIG1ldGhvZHMuCisKKyAgICAgICAgQ292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW91ci4KKworICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6YWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm1PcmlnaW4gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnVuYXBwbHlUcmFuc2Zvcm1PcmlnaW4gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphcHBseUNTU1RyYW5zZm9ybSBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisKIDIwMjItMDMtMTAgIE5p
a29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5p
ZnkgJ3RyYW5zZm9ybS1ib3gnIHJlZmVyZW5jZSBib3ggY29tcHV0YXRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IGIxNmFlMDBiMjU2
M2QxYjkzNGZiMWJjZmFkMDkzYTc1N2ExZjBmZmQuLjk3MGZhMzFhODNmM2IwYTQ2M2RkYWMyNzVj
MjA1YzBiY2ZjNDBmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcApAQCAtMTQyMSwyNyArMTQyMSw2MyBAQCB2b2lkIFJlbmRlclN0eWxlOjpz
ZXRIYXNBdHRyQ29udGVudCgpCiAgICAgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBo
YXNBdHRyQ29udGVudCwgdHJ1ZSk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNm
b3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgYm91
bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9u
PiBvcHRpb25zKSBjb25zdAorYm9vbCBSZW5kZXJTdHlsZTo6YWZmZWN0ZWRCeVRyYW5zZm9ybU9y
aWdpbigpIGNvbnN0CiB7Ci0gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10cmFuc2Zv
cm1zLTIvI2N0bQotICAgIC8vIFRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggaXMgY29tcHV0ZWQg
ZnJvbSB0aGUgdHJhbnNmb3JtLCB0cmFuc2Zvcm0tb3JpZ2luLCB0cmFuc2xhdGUsIHJvdGF0ZSwg
c2NhbGUsIGFuZCBvZmZzZXQgcHJvcGVydGllcyBhcyBmb2xsb3dzOgotICAgIC8vIDEuIFN0YXJ0
IHdpdGggdGhlIGlkZW50aXR5IG1hdHJpeC4KKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+cm90YXRlICYmICFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5yb3RhdGUtPmlzSWRlbnRpdHko
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+c2NhbGUgJiYgIW1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnNjYWxlLT5pc0lkZW50aXR5KCkp
CisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgYXV0byYgdHJhbnNmb3JtT3BlcmF0aW9ucyA9
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+b3BlcmF0aW9uczsKLSAgICBib29s
IGFwcGx5VHJhbnNmb3JtT3JpZ2luID0gb3B0aW9ucy5jb250YWlucyhSZW5kZXJTdHlsZTo6VHJh
bnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpUcmFuc2Zvcm1PcmlnaW4pCi0gICAgICAgICYmICgobV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+cm90YXRlICYmICFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5y
b3RhdGUtPmlzSWRlbnRpdHkoKSkKLSAgICAgICAgICAgIHx8IChtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5zY2FsZSAmJiAhbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+c2NhbGUtPmlzSWRlbnRpdHko
KSkKLSAgICAgICAgICAgIHx8IHRyYW5zZm9ybU9wZXJhdGlvbnMuYWZmZWN0ZWRCeVRyYW5zZm9y
bU9yaWdpbigpCi0gICAgICAgICAgICB8fCBvZmZzZXRQYXRoKCkpOworICAgIGlmICh0cmFuc2Zv
cm1PcGVyYXRpb25zLmFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBpZiAob2Zmc2V0UGF0aCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAor
ICAgIHJldHVybiBmYWxzZTsKK30KKworRmxvYXRQb2ludDNEIFJlbmRlclN0eWxlOjphcHBseVRy
YW5zZm9ybU9yaWdpbihUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9h
dFJlY3QmIGJvdW5kaW5nQm94KSBjb25zdAoreworICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9U
Ui9jc3MtdHJhbnNmb3Jtcy0yLyNjdG0KICAgICAvLyAyLiBUcmFuc2xhdGUgYnkgdGhlIGNvbXB1
dGVkIFgsIFksIGFuZCBaIHZhbHVlcyBvZiB0cmFuc2Zvcm0tb3JpZ2luLgogICAgIEZsb2F0UG9p
bnQzRCBvcmlnaW5UcmFuc2xhdGU7Ci0gICAgaWYgKGFwcGx5VHJhbnNmb3JtT3JpZ2luKSB7Ci0g
ICAgICAgIG9yaWdpblRyYW5zbGF0ZS5zZXRYWShib3VuZGluZ0JveC5sb2NhdGlvbigpICsgZmxv
YXRQb2ludEZvckxlbmd0aFBvaW50KHRyYW5zZm9ybU9yaWdpblhZKCksIGJvdW5kaW5nQm94LnNp
emUoKSkpOwotICAgICAgICBvcmlnaW5UcmFuc2xhdGUuc2V0Wih0cmFuc2Zvcm1PcmlnaW5aKCkp
OworICAgIG9yaWdpblRyYW5zbGF0ZS5zZXRYWShib3VuZGluZ0JveC5sb2NhdGlvbigpICsgZmxv
YXRQb2ludEZvckxlbmd0aFBvaW50KHRyYW5zZm9ybU9yaWdpblhZKCksIGJvdW5kaW5nQm94LnNp
emUoKSkpOworICAgIG9yaWdpblRyYW5zbGF0ZS5zZXRaKHRyYW5zZm9ybU9yaWdpblooKSk7Cisg
ICAgaWYgKCFvcmlnaW5UcmFuc2xhdGUuaXNaZXJvKCkpCiAgICAgICAgIHRyYW5zZm9ybS50cmFu
c2xhdGUzZChvcmlnaW5UcmFuc2xhdGUueCgpLCBvcmlnaW5UcmFuc2xhdGUueSgpLCBvcmlnaW5U
cmFuc2xhdGUueigpKTsKKyAgICByZXR1cm4gb3JpZ2luVHJhbnNsYXRlOworfQorCit2b2lkIFJl
bmRlclN0eWxlOjp1bmFwcGx5VHJhbnNmb3JtT3JpZ2luKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQzRCYgb3JpZ2luVHJhbnNsYXRlKSBjb25zdAorewor
ICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdHJhbnNmb3Jtcy0yLyNjdG0KKyAgICAv
LyA4LiBUcmFuc2xhdGUgYnkgdGhlIG5lZ2F0ZWQgY29tcHV0ZWQgWCwgWSBhbmQgWiB2YWx1ZXMg
b2YgdHJhbnNmb3JtLW9yaWdpbi4KKyAgICBpZiAoIW9yaWdpblRyYW5zbGF0ZS5pc1plcm8oKSkK
KyAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNkKC1vcmlnaW5UcmFuc2xhdGUueCgpLCAtb3Jp
Z2luVHJhbnNsYXRlLnkoKSwgLW9yaWdpblRyYW5zbGF0ZS56KCkpOworfQorCit2b2lkIFJlbmRl
clN0eWxlOjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBj
b25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5z
Zm9ybU9wZXJhdGlvbk9wdGlvbj4gb3B0aW9ucykgY29uc3QKK3sKKyAgICBpZiAoIW9wdGlvbnMu
Y29udGFpbnMoUmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNmb3Jt
T3JpZ2luKSB8fCAhYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbigpKSB7CisgICAgICAgIGFwcGx5
Q1NTVHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gsIG9wdGlvbnMpOworICAgICAgICBy
ZXR1cm47CiAgICAgfQogCisgICAgYXV0byBvcmlnaW5UcmFuc2xhdGUgPSBhcHBseVRyYW5zZm9y
bU9yaWdpbih0cmFuc2Zvcm0sIGJvdW5kaW5nQm94KTsKKyAgICBhcHBseUNTU1RyYW5zZm9ybSh0
cmFuc2Zvcm0sIGJvdW5kaW5nQm94LCBvcHRpb25zKTsKKyAgICB1bmFwcGx5VHJhbnNmb3JtT3Jp
Z2luKHRyYW5zZm9ybSwgb3JpZ2luVHJhbnNsYXRlKTsKK30KKwordm9pZCBSZW5kZXJTdHlsZTo6
YXBwbHlDU1NUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1P
cGVyYXRpb25PcHRpb24+IG9wdGlvbnMpIGNvbnN0Cit7CisgICAgLy8gaHR0cHM6Ly93d3cudzMu
b3JnL1RSL2Nzcy10cmFuc2Zvcm1zLTIvI2N0bQorICAgIC8vIFRoZSB0cmFuc2Zvcm1hdGlvbiBt
YXRyaXggaXMgY29tcHV0ZWQgZnJvbSB0aGUgdHJhbnNmb3JtLCB0cmFuc2Zvcm0tb3JpZ2luLCB0
cmFuc2xhdGUsIHJvdGF0ZSwgc2NhbGUsIGFuZCBvZmZzZXQgcHJvcGVydGllcyBhcyBmb2xsb3dz
OgorICAgIC8vIDEuIFN0YXJ0IHdpdGggdGhlIGlkZW50aXR5IG1hdHJpeC4KKyAgICAvLyAyLiBU
cmFuc2xhdGUgYnkgdGhlIGNvbXB1dGVkIFgsIFksIGFuZCBaIHZhbHVlcyBvZiB0cmFuc2Zvcm0t
b3JpZ2luLiAoc2VlIGFwcGx5VHJhbnNmb3JtT3JpZ2luKQorCiAgICAgLy8gMy4gVHJhbnNsYXRl
IGJ5IHRoZSBjb21wdXRlZCBYLCBZLCBhbmQgWiB2YWx1ZXMgb2YgdHJhbnNsYXRlLgogICAgIGlm
IChvcHRpb25zLmNvbnRhaW5zKFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246
OlRyYW5zbGF0ZSkpIHsKICAgICAgICAgaWYgKFRyYW5zZm9ybU9wZXJhdGlvbiogdHJhbnNsYXRl
ID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNsYXRlLmdldCgpKQpAQCAtMTQ2NSwxMiAr
MTUwMSwxMSBAQCB2b2lkIFJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlYwogICAgICAgICBhcHBseU1vdGlvblBh
dGhUcmFuc2Zvcm0odHJhbnNmb3JtLCBib3VuZGluZ0JveCk7CiAKICAgICAvLyA3LiBNdWx0aXBs
eSBieSBlYWNoIG9mIHRoZSB0cmFuc2Zvcm0gZnVuY3Rpb25zIGluIHRyYW5zZm9ybSBmcm9tIGxl
ZnQgdG8gcmlnaHQuCisgICAgYXV0byYgdHJhbnNmb3JtT3BlcmF0aW9ucyA9IG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPnRyYW5zZm9ybS0+b3BlcmF0aW9uczsKICAgICBmb3IgKGF1dG8mIG9wZXJh
dGlvbiA6IHRyYW5zZm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygpKQogICAgICAgICBvcGVyYXRp
b24tPmFwcGx5KHRyYW5zZm9ybSwgYm91bmRpbmdCb3guc2l6ZSgpKTsKIAotICAgIC8vIDguIFRy
YW5zbGF0ZSBieSB0aGUgbmVnYXRlZCBjb21wdXRlZCBYLCBZIGFuZCBaIHZhbHVlcyBvZiB0cmFu
c2Zvcm0tb3JpZ2luLgotICAgIGlmIChhcHBseVRyYW5zZm9ybU9yaWdpbikKLSAgICAgICAgdHJh
bnNmb3JtLnRyYW5zbGF0ZTNkKC1vcmlnaW5UcmFuc2xhdGUueCgpLCAtb3JpZ2luVHJhbnNsYXRl
LnkoKSwgLW9yaWdpblRyYW5zbGF0ZS56KCkpOworICAgIC8vIDguIFRyYW5zbGF0ZSBieSB0aGUg
bmVnYXRlZCBjb21wdXRlZCBYLCBZIGFuZCBaIHZhbHVlcyBvZiB0cmFuc2Zvcm0tb3JpZ2luLiAo
c2VlIHVuYXBwbHlUcmFuc2Zvcm1PcmlnaW4pCiB9CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBh
dGg+IGdldFBhdGhGcm9tUGF0aE9wZXJhdGlvbihjb25zdCBGbG9hdFJlY3QmIGJveCwgY29uc3Qg
UGF0aE9wZXJhdGlvbiYgb3BlcmF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAppbmRleCBhMTY4MDE5MjZkNjU3NjljODE4MTZjZmQ4ZTExNDM2ZjQ5
MWFhYTQwLi4xMDMxYTMxMjU4ZDQyMWNmMGM1MzE5YmMyMzZmYmFmOTg2N2ZkNTg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtNzAzLDcgKzcw
MywxMyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIE9wdGlvblNldDxUcmFuc2Zv
cm1PcGVyYXRpb25PcHRpb24+IGFsbFRyYW5zZm9ybU9wZXJhdGlvbnMgPSB7IFRyYW5zZm9ybU9w
ZXJhdGlvbk9wdGlvbjo6VHJhbnNmb3JtT3JpZ2luLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246
OlRyYW5zbGF0ZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpSb3RhdGUsIFRyYW5zZm9ybU9w
ZXJhdGlvbk9wdGlvbjo6U2NhbGUgLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246Ok9mZnNldCB9
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlv
bj4gaW5kaXZpZHVhbFRyYW5zZm9ybU9wZXJhdGlvbnMgPSB7IFRyYW5zZm9ybU9wZXJhdGlvbk9w
dGlvbjo6VHJhbnNsYXRlLCBUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlJvdGF0ZSwgVHJhbnNm
b3JtT3BlcmF0aW9uT3B0aW9uOjpTY2FsZSwgVHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpPZmZz
ZXQgfTsKKworICAgIGJvb2wgYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbigpIGNvbnN0OworICAg
IEZsb2F0UG9pbnQzRCBhcHBseVRyYW5zZm9ybU9yaWdpbihUcmFuc2Zvcm1hdGlvbk1hdHJpeCYs
IGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpIGNvbnN0OworICAgIHZvaWQgdW5hcHBseVRy
YW5zZm9ybU9yaWdpbihUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UG9pbnQzRCYg
b3JpZ2luVHJhbnNsYXRlKSBjb25zdDsKKyAgICAvLyBhcHBseVRyYW5zZm9ybSBjYWxscyBhcHBs
eVRyYW5zZm9ybU9yaWdpbigpLCB0aGVuIGFwcGx5Q1NTVHJhbnNmb3JtKCksIGZvbGxvd2VkIGJ5
IHVuYXBwbHlUcmFuc2Zvcm1PcmlnaW4oKS4KICAgICB2b2lkIGFwcGx5VHJhbnNmb3JtKFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0
PFRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gPSBhbGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25z
dDsKKyAgICB2b2lkIGFwcGx5Q1NTVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29u
c3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFRyYW5zZm9ybU9wZXJhdGlvbk9w
dGlvbj4gPSBhbGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25zdDsKICAgICB2b2lkIGFwcGx5TW90
aW9uUGF0aFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYg
Ym91bmRpbmdCb3gpIGNvbnN0OwogICAgIHZvaWQgc2V0UGFnZVNjYWxlVHJhbnNmb3JtKGZsb2F0
KTsKIAo=
</data>
<flag name="review"
          id="481966"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="482079"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>