<?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>220684</bug_id>
          
          <creation_ts>2021-01-16 12:35:59 -0800</creation_ts>
          <short_desc>Remove explicit clamp to SRGB for Lab colors on CG platforms that support wide color</short_desc>
          <delta_ts>2021-01-21 17:10:02 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=205675</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>220716</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>chris</cc>
    
    <cc>clopez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1720141</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-16 12:35:59 -0800</bug_when>
    <thetext>To break up the lab(), lch() change, I opted to initially land with an explicit clamp to sRGB to avoid the subtle rounding issues we were seeing with CG.

We should remove explicit clamp to SRGB by either:
- Explicit conversion to ExtendedSRGB (-Inf,Inf), which will avoid using CG&apos;s color conversion code, but won&apos;t be re-usable down the road if we want to use CG for things like gradients in the Lab color space.
- Passing the Lab color to CG and identifying and working around the precision issues in the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720142</commentid>
    <comment_count>1</comment_count>
      <attachid>417768</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-16 12:42:05 -0800</bug_when>
    <thetext>Created attachment 417768
Test of CG Lab approach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720143</commentid>
    <comment_count>2</comment_count>
      <attachid>417769</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-16 12:45:55 -0800</bug_when>
    <thetext>Created attachment 417769
Test of ExtendedSRGB approach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720145</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-16 12:53:02 -0800</bug_when>
    <thetext>Probably should take this moment to also figure out a way to actually test out of sRGB gamut rendering in layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720153</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-16 18:47:50 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #1)
&gt; Created attachment 417768 [details]
&gt; Test of CG Lab approach

imported/w3c/web-platform-tests/css/css-color/lab-001.html
imported/w3c/web-platform-tests/css/css-color/lab-006.html
imported/w3c/web-platform-tests/css/css-color/lch-001.html
imported/w3c/web-platform-tests/css/css-color/lch-006.html

Ok, so these 4 still fail. 

Using Digital Color Meter, there is a clear (albeit tiny) difference between the top and bottom half of the green squares in lab-001 and lch-001. (4, 128, 1 vs. 0, 128, 1).

More confusingly though, I can&apos;t see any differences in the lab-006 and lch-006, so something funky is going on there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720154</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-16 20:03:18 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #2)
&gt; Created attachment 417769 [details]
&gt; Test of ExtendedSRGB approach

This one actually isn&apos;t right as the toSRGBA() call in ColorCG.cpp is actually clamping when linearizing, so we will need to add explicit support for ExtendedSRGBA conversion if we want to take this approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720155</commentid>
    <comment_count>6</comment_count>
      <attachid>417771</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-16 20:10:34 -0800</bug_when>
    <thetext>Created attachment 417771
Test Case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720171</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Lilley">chris</who>
    <bug_when>2021-01-17 03:48:03 -0800</bug_when>
    <thetext>&gt; Using Digital Color Meter, there is a clear (albeit tiny) difference between the top and bottom half of the green squares in lab-001 and lch-001. (4, 128, 1 vs. 0, 128, 1).

Is Digital Color Meter a physical measuring instrument or a software color picker? For Lab, does it use a D50 whitepoint (like ICC, and most hardware instruments) or D65?

Looking at lch-006 and double-checking the conversion, lch(70% 70 90) is lab(70% 0 70) is sRGB rgb(76.6254% 66.3607% 5.5775%)
https://colorjs.io/apps/convert/?color=lch(70%25%2070%2090)&amp;precision=6

The conversion was originally done using the sample code I wrote for CSS Color 4; and my check just now was using Color.js which Lea and I wrote.

In lab-01, the color is lab(46.277% -47.562 48.583) which comes out as sRGB rgb(-0.0013% 50.1956% 0.0006%).
https://colorjs.io/apps/convert/?color=lab(46.277%25%20-47.562%2048.583)&amp;precision=6

lab-01 and lch-01 are supposed to be the lab and lch values for sRGB #008000 which, re-checking, is lch(46.2775% 67.9892 134.3912)or lab(46.2775% -47.5621 48.5837)

Maybe I should update that test to 4 decimal places? Just to reduce round-tripping cumulative roundoff. Also, it would again be better for these tests as a colored rectangles rather than text.

I also want to make some P3-gamut Lab and LCH tests. For a manual test that is easy, just use a media query to tell the tester to skip that test if P3 isn&apos;t supported. I&apos;m not sure how to tell WPT to skip rather than pass (or fail) if P3 isn&apos;t supported though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720184</commentid>
    <comment_count>8</comment_count>
      <attachid>417779</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-17 10:03:29 -0800</bug_when>
    <thetext>Created attachment 417779
Test of ExtendedSRGB approach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720189</commentid>
    <comment_count>9</comment_count>
      <attachid>417780</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-17 12:07:10 -0800</bug_when>
    <thetext>Created attachment 417780
ExtendedSRGB approach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720190</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-01-17 12:07:57 -0800</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720191</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-17 12:14:40 -0800</bug_when>
    <thetext>(In reply to Chris Lilley from comment #7)
&gt; &gt; Using Digital Color Meter, there is a clear (albeit tiny) difference between the top and bottom half of the green squares in lab-001 and lch-001. (4, 128, 1 vs. 0, 128, 1).
&gt; 
&gt; Is Digital Color Meter a physical measuring instrument or a software color
&gt; picker? For Lab, does it use a D50 whitepoint (like ICC, and most hardware
&gt; instruments) or D65?

It&apos;s not physical, it&apos;s just a little utility that comes default with macOS that tells you the pixel values at positions on the screen. In this case, what is being sampled has been converted to sRGB already when rendering, since the way these tests work is to draw the test.html and test-ref.html into sRGB png files and then compare the two png files. I&apos;m pretty sure it&apos;s just tiny differences between how I am converting Lab to sRGB vs. how CoreGraphics is doing it, just need to debug it a bit.

&gt; 
&gt; Looking at lch-006 and double-checking the conversion, lch(70% 70 90) is
&gt; lab(70% 0 70) is sRGB rgb(76.6254% 66.3607% 5.5775%)
&gt; https://colorjs.io/apps/convert/?color=lch(70%25%2070%2090)&amp;precision=6
&gt; 
&gt; The conversion was originally done using the sample code I wrote for CSS
&gt; Color 4; and my check just now was using Color.js which Lea and I wrote.
&gt; 
&gt; In lab-01, the color is lab(46.277% -47.562 48.583) which comes out as sRGB
&gt; rgb(-0.0013% 50.1956% 0.0006%).
&gt; https://colorjs.io/apps/convert/?color=lab(46.277%25%20-47.562%2048.
&gt; 583)&amp;precision=6
&gt; 
&gt; lab-01 and lch-01 are supposed to be the lab and lch values for sRGB #008000
&gt; which, re-checking, is lch(46.2775% 67.9892 134.3912)or lab(46.2775%
&gt; -47.5621 48.5837)
&gt; 
&gt; Maybe I should update that test to 4 decimal places? Just to reduce
&gt; round-tripping cumulative roundoff. Also, it would again be better for these
&gt; tests as a colored rectangles rather than text.

I already updated these tests to rectangles in our local copy, so we are good there. I am not sure if more decimal places will help, but I will try that. Thanks.

&gt; 
&gt; I also want to make some P3-gamut Lab and LCH tests. For a manual test that
&gt; is easy, just use a media query to tell the tester to skip that test if P3
&gt; isn&apos;t supported. I&apos;m not sure how to tell WPT to skip rather than pass (or
&gt; fail) if P3 isn&apos;t supported though.

Having a way to do that for reference style tests in WPT would be great if it doesn&apos;t exist yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720198</commentid>
    <comment_count>12</comment_count>
      <attachid>417784</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-17 15:20:52 -0800</bug_when>
    <thetext>Created attachment 417784
CoreGraphics Lab approach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720341</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Lilley">chris</who>
    <bug_when>2021-01-18 07:23:08 -0800</bug_when>
    <thetext>I recalculated all the rgb values to a higher precision and avoiding cumulative roundoff error, which in some cases made small differences. The new values are left as review comments on your WPT pull request

https://github.com/web-platform-tests/wpt/pull/27202</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721231</commentid>
    <comment_count>14</comment_count>
      <attachid>418059</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-21 10:30:32 -0800</bug_when>
    <thetext>Created attachment 418059
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721235</commentid>
    <comment_count>15</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-21 10:37:38 -0800</bug_when>
    <thetext>Ok, this is ready for review now. Going with the ExtendedSRGB approach since it gives identical results and keeps Lab/LCH working on pre-Big Sur WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721320</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-21 13:46:01 -0800</bug_when>
    <thetext>Committed r271712: &lt;https://trac.webkit.org/changeset/271712&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418059.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721322</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-21 13:47:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/73467262&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721389</commentid>
    <comment_count>18</comment_count>
      <attachid>418059</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-21 16:04:11 -0800</bug_when>
    <thetext>Comment on attachment 418059
Patch

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        While CoreGraphics does support the Lab colorspace on some systems (Big Sur and later),
&gt; +        to ensure all versions of WebKit can support wide color Lab this approach provides the
&gt; +        most coverage.

This comment confuses me about what occurs on newer Apple platforms. Do we end up successfully creating a color with the Lab colorspace, and this new code ends up having no effect? Or do we not even try to use the CG support for Lab? Is there a good reason to use the CG Lab support if it’s present?

&gt; Source/WebCore/platform/graphics/ColorTypes.h:52
&gt; +template&lt;typename&gt; struct ExtendedRGBModel;

I guess this is &quot;RGBModel first, then the rest alphabetical&quot;? Why not just stay alphabetical instead of using a logical order?

&gt; Source/WebCore/platform/graphics/ColorTypes.h:81
&gt; +        { -std::numeric_limits&lt;float&gt;::infinity(), std::numeric_limits&lt;float&gt;::infinity() },
&gt; +        { -std::numeric_limits&lt;float&gt;::infinity(), std::numeric_limits&lt;float&gt;::infinity() },
&gt; +        { -std::numeric_limits&lt;float&gt;::infinity(), std::numeric_limits&lt;float&gt;::infinity() }

Surprising that this even includes the infinities. But I’m not saying it’s wrong.

&gt; Source/WebCore/platform/graphics/cg/ColorCG.cpp:108
&gt;      // Some CG ports don&apos;t support all the color spaces required and return
&gt;      // sRGBColorSpaceRef() for unsupported color spaces. In those cases, we
&gt; -    // need to eagerly and potentially lossily convert the color into sRGB
&gt; -    // ourselves before creating the CGColorRef.
&gt; +    // need to eagerly convert the color into extended sRGB ourselves before
&gt; +    // creating the CGColorRef.
&gt; +    // FIXME: This is not a good way to indicate lack of support. Make this
&gt; +    // more explicit.

On some platforms, extendedSRGBColorSpaceRef() will just return sRGBColorSpaceRef(). On those, we’d need to call toSRGBA, not toExtendedSRGBA. All non-Cocoa platforms behave that way, so Windows is in that mode. We can detect that by noticing that extendedSRGBColorSpaceRef() is == sRGBColorSpaceRef() or come up with a fancier way to detect that case.

Separate but related issue: this code is not specific to Lab. We will create extended sRGB CG colors after this change for any non-sRGB color space; more precise than the sRGB would have been. Is this new strategy always better? For performance? For correctness?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721427</commentid>
    <comment_count>19</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-21 17:10:02 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #18)
&gt; Comment on attachment 418059 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=418059&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:13
&gt; &gt; +        While CoreGraphics does support the Lab colorspace on some systems (Big Sur and later),
&gt; &gt; +        to ensure all versions of WebKit can support wide color Lab this approach provides the
&gt; &gt; +        most coverage.
&gt; 
&gt; This comment confuses me about what occurs on newer Apple platforms. Do we
&gt; end up successfully creating a color with the Lab colorspace, and this new
&gt; code ends up having no effect? Or do we not even try to use the CG support
&gt; for Lab? 

We don&apos;t even try to create a CGColorRef in the lab color space. 

&gt; Is there a good reason to use the CG Lab support if it’s present?

At this point I don&apos;t believe there is any benefit to creating a CGColorRef in the Lab color space. I am going to chat with the CoreGraphics folks about this to find out more (there are some really weird peculiarities around creating a CIELab compliant CGColorSpace that I would like to understand better as well), but if it turns out there are benefits, the only change we need to make is to update the labColorSpaceRef() in ColorSpaceCG.cpp to look like this:

CGColorSpaceRef labColorSpaceRef()
{
    static CGColorSpaceRef labColorSpaceRef;
    static std::once_flag onceFlag;
    std::call_once(onceFlag, [] {
#if HAVE(LAB_SUPPORT_IN_CORE_GRAPHICS)
        static constexpr CGFloat d50WhitePoint[] { 0.96422f, 1.0f, 0.82521f };
        static constexpr CGFloat labRange[] { -127.5, 127.5, -127.5, 127.5 };
        labColorSpaceRef = CGColorSpaceCreateLab(d50WhitePoint, nullptr, labRange);
#else
        labColorSpaceRef = sRGBColorSpaceRef();
#endif
    });
    return labColorSpaceRef;
}

(Notice those really odd 127.5 range values, I don&apos;t get those, but they are required).

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ColorTypes.h:52
&gt; &gt; +template&lt;typename&gt; struct ExtendedRGBModel;
&gt; 
&gt; I guess this is &quot;RGBModel first, then the rest alphabetical&quot;? Why not just
&gt; stay alphabetical instead of using a logical order?

It was really just done in the order they were added, and then I wanted ExtendedRGBModel to be next to RGBModel, but probably just making it alphabetical would be better.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ColorTypes.h:81
&gt; &gt; +        { -std::numeric_limits&lt;float&gt;::infinity(), std::numeric_limits&lt;float&gt;::infinity() },
&gt; &gt; +        { -std::numeric_limits&lt;float&gt;::infinity(), std::numeric_limits&lt;float&gt;::infinity() },
&gt; &gt; +        { -std::numeric_limits&lt;float&gt;::infinity(), std::numeric_limits&lt;float&gt;::infinity() }
&gt; 
&gt; Surprising that this even includes the infinities. But I’m not saying it’s
&gt; wrong.

Yeah, it turned out that having the infinities in the ranges as markers is really helpful in writing generic code using these ranges (like the code that clamps and asserts valid values). In the case of clamping, to avoid unnecessary comparisons I use constexpr if and check for these infinities to remove any clamping that might happen (the compiler might do this for us, but being explicit makes it clear these are markers).

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/ColorCG.cpp:108
&gt; &gt;      // Some CG ports don&apos;t support all the color spaces required and return
&gt; &gt;      // sRGBColorSpaceRef() for unsupported color spaces. In those cases, we
&gt; &gt; -    // need to eagerly and potentially lossily convert the color into sRGB
&gt; &gt; -    // ourselves before creating the CGColorRef.
&gt; &gt; +    // need to eagerly convert the color into extended sRGB ourselves before
&gt; &gt; +    // creating the CGColorRef.
&gt; &gt; +    // FIXME: This is not a good way to indicate lack of support. Make this
&gt; &gt; +    // more explicit.
&gt; 
&gt; On some platforms, extendedSRGBColorSpaceRef() will just return
&gt; sRGBColorSpaceRef(). On those, we’d need to call toSRGBA, not
&gt; toExtendedSRGBA. All non-Cocoa platforms behave that way, so Windows is in
&gt; that mode. We can detect that by noticing that extendedSRGBColorSpaceRef()
&gt; is == sRGBColorSpaceRef() or come up with a fancier way to detect that case.

I thought about this, and I don&apos;t think it is actually a problem. When this happens (e.g. we are on a platform without ExtendedSRGB CGColorSpace support) we create a CGColor with the (non-extended) sRGB color space and some extended sRGB values. What CG then does is clamp those values to fit in the sRGB color space. If we special cased platforms that don&apos;t support ExtendedSRGB CGColorSpace, we would just do the clamping ourselves instead. Admittedly, its a bit gross. I have some ideas on how to make this cleaner, hence the FIXME I added.

&gt; 
&gt; Separate but related issue: this code is not specific to Lab. We will create
&gt; extended sRGB CG colors after this change for any non-sRGB color space; more
&gt; precise than the sRGB would have been. 

It&apos;s not more precise actually, just a larger total range of values. Rather than being clamped from 0 to 1, the allowed values now extend outside of that range to the infinities, but 0.0 through 1.0 still mean exactly the same thing.

The code is written to be color type agnostic, but in reality, at least right now, the only color that can hit this case (at least on non-windows CoreGraphics) is Lab.

&gt; Is this new strategy always better? For performance? For correctness?

I think it is always better, though I am not clear on the performance costs within CoreGraphics. At least from the memory side it&apos;s the same, CG always stores 4 floats no matter what. Whether they have some fast paths for non-extended SRGB I don&apos;t know. I&apos;ll check with the CoreGraphics team about this.

Thanks for the review.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417768</attachid>
            <date>2021-01-16 12:42:05 -0800</date>
            <delta_ts>2021-01-17 15:21:11 -0800</delta_ts>
            <desc>Test of CG Lab approach</desc>
            <filename>bug-220684-20210116124204.patch</filename>
            <type>text/plain</type>
            <size>3302</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzE1NTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAxLTE2ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgZXhwbGljaXQgY2xhbXAgdG8gU1JHQiBmb3Ig
TGFiIGNvbG9ycyBvbiBDRyBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IHdpZGUgY29sb3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDY4NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3Jt
SGF2ZS5oOgorICAgICAgICBBZGQgSEFWRV9MQUJfU1VQUE9SVF9JTl9DT1JFX0dSQVBISUNTIHdo
aWNoIGluZGljYXRlcyB0aGF0IHRoZSBDb3JlR3JhcGhpY3MKKyAgICAgICAgb24gdGhlIHN5c3Rt
ZSBoYXMgcHJvcGVyIHN1cHBvcnQgZm9yIGNvbnZlcnNpb25zIHRvL2Zyb20gdGhlIExhYiBjb2xv
ciBzcGFjZQorICAgICAgICBhbmQgaGFzIGEgcmVzb2x1dGlvbiBmb3IgcmRhcjovL3Byb2JsZW0v
NTgzNjA0NTQuCisKIDIwMjEtMDEtMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBbR1BVUHJvY2Vzc10gTW92ZSBET00gLyBDYW52YXMgcmVuZGVyaW5nIG9mZiB0
aGUgbWFpbiB0aHJlYWQgaW4gdGhlIEdQVVByb2Nlc3MKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtSGF2ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5o
CShyZXZpc2lvbiAyNzE1NTgpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAkod29y
a2luZyBjb3B5KQpAQCAtODE5LDMgKzgxOSwxMiBAQAogICAgIHx8IChQTEFURk9STShJT1MpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTQwNDAwKQogI2RlZmluZSBIQVZF
X0FWQ09OVEVOVEtFWVJFUVVFU1RfUEVORElOR19QUk9URUNUSU9OX1NUQVRVUyAxCiAjZW5kaWYK
KworI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTEwMDAwKSBcCisgICAgfHwgKChQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKE1BQ0NBVEFM
WVNUKSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTQwMDAwKSBcCisg
ICAgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gNzAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oQVBQTEVUVikgJiYgX19UVl9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCisvLyBQcmlvciB0byB0aGVzZSByZWxlYXNlcywg
Q29yZUdyYXBoaWNzIGNvdWxkIG5vdCBjb3JyZWN0bHkgY29udmVydCBmcm9tIExhYiB0byBvdGhl
ciBjb2xvciBzcGFjZXMKKy8vIGR1ZSB0byByZGFyOi8vcHJvYmxlbS81ODM2MDQ1NC4KKyNkZWZp
bmUgSEFWRV9MQUJfU1VQUE9SVF9JTl9DT1JFX0dSQVBISUNTIDEKKyNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjcxNTU4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDEtMTYgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBleHBsaWNpdCBjbGFtcCB0byBTUkdCIGZv
ciBMYWIgY29sb3JzIG9uIENHIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgd2lkZSBjb2xvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwNjg0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1dJUCBUZXN0IGZv
ciB0aGUgYm90c10uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNl
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGFiQ29sb3JTcGFjZVJlZik6CisKIDIwMjEtMDEt
MTYgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNd
IERvIG5vdCB1c2UgTGluZUJveDo6aXNDb25zaWRlcmVkRW1wdHkgd2hlbiBjaGVja2luZyBpZiBp
bmxpbmUgYm94IHN0cmV0Y2hlcyB0aGUgbGluZSBib3guCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAJKHJldmlzaW9u
IDI3MTU1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3Bh
Y2VDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDggKzg0LDE2IEBAIENHQ29sb3JTcGFjZVJl
ZiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCkKIAogQ0dDb2xvclNwYWNlUmVmIGxhYkNvbG9yU3Bh
Y2VSZWYoKQogewotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgY29udmVyc2lvbiB0byBM
YWIgb24gc3VwcG9ydGVkIHBsYXRmb3Jtcy4KLSAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYo
KTsKKyAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGxhYkNvbG9yU3BhY2VSZWY7CisgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFn
LCBbXSB7CisjaWYgSEFWRShMQUJfU1VQUE9SVF9JTl9DT1JFX0dSQVBISUNTKQorICAgICAgICBs
YWJDb2xvclNwYWNlUmVmID0gQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFj
ZUdlbmVyaWNMYWIpOworI2Vsc2UKKyAgICAgICAgbGFiQ29sb3JTcGFjZVJlZiA9IHNSR0JDb2xv
clNwYWNlUmVmKCk7CisjZW5kaWYKKyAgICB9KTsKKyAgICByZXR1cm4gbGFiQ29sb3JTcGFjZVJl
ZjsKIH0KIAogQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKQo=
</data>
<flag name="commit-queue"
          id="435548"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417769</attachid>
            <date>2021-01-16 12:45:55 -0800</date>
            <delta_ts>2021-01-17 10:03:46 -0800</delta_ts>
            <desc>Test of ExtendedSRGB approach</desc>
            <filename>bug-220684-20210116124554.patch</filename>
            <type>text/plain</type>
            <size>2047</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTU1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIxLTAxLTE2ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgZXhwbGljaXQgY2xhbXAg
dG8gU1JHQiBmb3IgTGFiIGNvbG9ycyBvbiBDRyBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IHdpZGUg
Y29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MDY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtX
SVAgdGVzdCBmb3IgdGhlIGJvdHNdCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9D
b2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxlYWtDR0NvbG9yKToKKyAgICAgICAgUmF0
aGVyIHRoYW4gdXNpbmcgcmVndWxhciBzUkdCIGFzIHRoZSBDRyBjb2xvcnNwYWNlLCB1c2UgRXh0
ZW5kZWRTUkdCIHdoaWNoIHdpbGwgYXZvaWQKKyAgICAgICAgY2xhbXBpbmcuCisKIDIwMjEtMDEt
MTYgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNd
IERvIG5vdCB1c2UgTGluZUJveDo6aXNDb25zaWRlcmVkRW1wdHkgd2hlbiBjaGVja2luZyBpZiBp
bmxpbmUgYm94IHN0cmV0Y2hlcyB0aGUgbGluZSBib3guCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAkocmV2aXNpb24gMjcxNTU4KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMiwxMyArMTAyLDE2IEBAIHN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0Nv
bG9yKGNvbnN0IENvbG8KIAogICAgIC8vIFNvbWUgQ0cgcG9ydHMgZG9uJ3Qgc3VwcG9ydCBhbGwg
dGhlIGNvbG9yIHNwYWNlcyByZXF1aXJlZCBhbmQgcmV0dXJuCiAgICAgLy8gc1JHQkNvbG9yU3Bh
Y2VSZWYoKSBmb3IgdW5zdXBwb3J0ZWQgY29sb3Igc3BhY2VzLiBJbiB0aG9zZSBjYXNlcywgd2UK
LSAgICAvLyBuZWVkIHRvIGVhZ2VybHkgYW5kIHBvdGVudGlhbGx5IGxvc3NpbHkgY29udmVydCB0
aGUgY29sb3IgaW50byBzUkdCCi0gICAgLy8gb3Vyc2VsdmVzIGJlZm9yZSBjcmVhdGluZyB0aGUg
Q0dDb2xvclJlZi4KKyAgICAvLyBuZWVkIHRvIGVhZ2VybHkgY29udmVydCB0aGUgY29sb3IgaW50
byBleHRlbmRlZCBzUkdCIG91cnNlbHZlcyBiZWZvcmUKKyAgICAvLyBjcmVhdGluZyB0aGUgQ0dD
b2xvclJlZi4KKyAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgYSBnb29kIHdheSB0byBpbmRpY2F0
ZSBsYWNrIG9mIHN1cHBvcnQuIE1ha2UgdGhpcworICAgIC8vIG1vcmUgZXhwbGljaXQuCiAgICAg
aWYgKGNvbG9yU3BhY2UgIT0gQ29sb3JTcGFjZTo6U1JHQiAmJiBjZ0NvbG9yU3BhY2UgPT0gc1JH
QkNvbG9yU3BhY2VSZWYoKSkgewogICAgICAgICBhdXRvIGNvbG9yQ29udmVydGVkVG9TUkdCQSA9
IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2UsIFtdIChjb25zdCBhdXRv
JiBjb2xvcikgewogICAgICAgICAgICAgcmV0dXJuIHRvU1JHQkEoY29sb3IpOwogICAgICAgICB9
KTsKICAgICAgICAgY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yQ29udmVydGVk
VG9TUkdCQSk7CisgICAgICAgIGNnQ29sb3JTcGFjZSA9IGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VS
ZWYoKTsKICAgICB9CiAKICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbXBvbmVudHM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>417771</attachid>
            <date>2021-01-16 20:10:34 -0800</date>
            <delta_ts>2021-01-16 20:10:34 -0800</delta_ts>
            <desc>Test Case</desc>
            <filename>lab-008.html</filename>
            <type>text/html</type>
            <size>757</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KPHRpdGxlPkNTUyBDb2xvciA0
OiBTcGVjaWZ5aW5nIExhYiBhbmQgTENIPC90aXRsZT4KPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxl
PSJDaHJpcyBMaWxsZXkiIGhyZWY9Im1haWx0bzpjaHJpc0B3My5vcmciPgo8bGluayByZWw9Imhl
bHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3ItNC8jc3BlY2lmeWlu
Zy1sYWItbGNoIj4KPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0ibGFiLTAwNy1yZWYuaHRtbCI+Cjxt
ZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0ibGFiKCkgb3V0c2lkZSB0aGUgc1JHQiBnYW11dCI+
CjxzdHlsZT4KICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB3aWR0aDogMTJlbTsg
aGVpZ2h0OiA2ZW07IG1hcmdpbi10b3A6MH0KICAgIC5yZWYgeyBiYWNrZ3JvdW5kLWNvbG9yOiBj
b2xvcihkaXNwbGF5LXAzIDAgMSAwKTsgd2lkdGg6IDEyZW07IGhlaWdodDogNmVtOyBtYXJnaW4t
Ym90dG9tOiAwOyB9CiAgICAudGVzdCB7IGJhY2tncm91bmQtY29sb3I6IGxhYig4Ni42MSUgLTEw
Ni41NiAxMDIuODcpOyB9IAo8L3N0eWxlPgo8Ym9keT4KICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlv
dSBzZWUgYSBzaW5nbGUgc3F1YXJlLCBhbmQgbm90IHR3byByZWN0YW5nbGVzIG9mIGRpZmZlcmVu
dCBjb2xvcnMuPC9wPgogICAgPHAgY2xhc3M9InJlZiI+IDwvcD4KICAgIDxwIGNsYXNzPSJ0ZXN0
Ij4gPC9wPgo8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417779</attachid>
            <date>2021-01-17 10:03:29 -0800</date>
            <delta_ts>2021-01-17 12:14:51 -0800</delta_ts>
            <desc>Test of ExtendedSRGB approach</desc>
            <filename>bug-220684-20210117100328.patch</filename>
            <type>text/plain</type>
            <size>22336</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTU1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIxLTAxLTE2ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgZXhwbGljaXQgY2xhbXAg
dG8gU1JHQiBmb3IgTGFiIGNvbG9ycyBvbiBDRyBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IHdpZGUg
Y29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MDY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtX
SVAgdGVzdCBmb3IgdGhlIGJvdHNdCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9D
b2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxlYWtDR0NvbG9yKToKKyAgICAgICAgUmF0
aGVyIHRoYW4gdXNpbmcgcmVndWxhciBzUkdCIGFzIHRoZSBDRyBjb2xvcnNwYWNlLCB1c2UgRXh0
ZW5kZWRTUkdCIHdoaWNoIHdpbGwgYXZvaWQKKyAgICAgICAgY2xhbXBpbmcuCisKIDIwMjEtMDEt
MTYgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNd
IERvIG5vdCB1c2UgTGluZUJveDo6aXNDb25zaWRlcmVkRW1wdHkgd2hlbiBjaGVja2luZyBpZiBp
bmxpbmUgYm94IHN0cmV0Y2hlcyB0aGUgbGluZSBib3guCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHJldmlzaW9u
IDI3MTU1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVy
c2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDI4ICszMiwxMTAgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1mbG9hdCBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGZsb2F0IGMpCisv
LyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCisvLyBodHRwOi8vd3d3LmJydWNl
bGluZGJsb29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFlaX01hdHJpeC5odG1sCitzdGF0aWMg
Y29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHh5elRvTGluZWFyU1JHQk1hdHJpeCB7CisgICAg
IDMuMjQwNDU0MmYsIC0xLjUzNzEzODVmLCAtMC40OTg1MzE0ZiwKKyAgICAtMC45NjkyNjYwZiwg
IDEuODc2MDEwOGYsICAwLjA0MTU1NjBmLAorICAgICAwLjA1NTY0MzRmLCAtMC4yMDQwMjU5Ziwg
IDEuMDU3MjI1MmYKK307CisKKy8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NSR0IK
Ky8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2luZGV4Lmh0bWw/RXFuX1JHQl9YWVpf
TWF0cml4Lmh0bWwKK3N0YXRpYyBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gbGluZWFyU1JH
QlRvWFlaTWF0cml4IHsKKyAgICAwLjQxMjQ1NjRmLCAgMC4zNTc1NzYxZiwgIDAuMTgwNDM3NWYs
CisgICAgMC4yMTI2NzI5ZiwgIDAuNzE1MTUyMmYsICAwLjA3MjE3NTBmLAorICAgIDAuMDE5MzMz
OWYsICAwLjExOTE5MjBmLCAgMC45NTAzMDQxZgorfTsKKworLy8gaHR0cHM6Ly9kcmFmdHMuY3Nz
d2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCitzdGF0aWMgY29uc3RleHBy
IENvbG9yTWF0cml4PDMsIDM+IHh5elRvTGluZWFyRGlzcGxheVAzTWF0cml4IHsKKyAgICAgMi40
OTM0OTY5MTE5NDE0MjVmLCAgLTAuOTMxMzgzNjE3OTE5MTIzOWYsIC0wLjQwMjcxMDc4NDQ1MDcx
NjhmLAorICAgIC0wLjgyOTQ4ODk2OTU2MTU3NDdmLCAgMS43NjI2NjQwNjAzMTgzNDYzZiwgIDAu
MDIzNjI0Njg1ODQxOTQzNmYsCisgICAgIDAuMDM1ODQ1ODMwMjQzNzg0NWYsIC0wLjA3NjE3MjM4
OTI2ODA0MThmLCAgMC45NTY4ODQ1MjQwMDc2ODcyZgorfTsKKworLy8gaHR0cHM6Ly9kcmFmdHMu
Y3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCitzdGF0aWMgY29uc3Rl
eHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhckRpc3BsYXlQM1RvWFlaTWF0cml4IHsKKyAgICAw
LjQ4NjU3MDk0ODY0ODIxNjJmLCAwLjI2NTY2NzY5MzE2OTA5MzFmLCAwLjE5ODIxNzI4NTIzNDM2
M2YsCisgICAgMC4yMjg5NzQ1NjQwNjk3NDg4ZiwgMC42OTE3Mzg1MjE4MzY1MDY0ZiwgMC4wNzky
ODY5MTQwOTM3NDVmLAorICAgIDAuMGYsICAgICAgICAgICAgICAgIDAuMDQ1MTEzMzgxODU4OTAy
NmYsIDEuMDQzOTQ0MzY4OTAwOTc2ZgorfTsKKworLy8gaHR0cDovL3d3dy5icnVjZWxpbmRibG9v
bS5jb20vaW5kZXguaHRtbD9FcW5fQ2hyb21BZGFwdC5odG1sCitzdGF0aWMgY29uc3RleHByIENv
bG9yTWF0cml4PDMsIDM+IEQ1MFRvRDY1TWF0cml4IHsKKyAgICAgMC45NTU1NzY2ZiwgLTAuMDIz
MDM5M2YsIDAuMDYzMTYzNmYsCisgICAgLTAuMDI4Mjg5NWYsICAxLjAwOTk0MTZmLCAwLjAyMTAw
NzdmLAorICAgICAwLjAxMjI5ODJmLCAtMC4wMjA0ODMwZiwgMS4zMjk5MDk4ZgorfTsKKworLy8g
aHR0cDovL3d3dy5icnVjZWxpbmRibG9vbS5jb20vaW5kZXguaHRtbD9FcW5fQ2hyb21BZGFwdC5o
dG1sCitzdGF0aWMgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IEQ2NVRvRDUwTWF0cml4IHsK
KyAgICAgMS4wNDc4MTEyZiwgMC4wMjI4ODY2ZiwgLTAuMDUwMTI3MGYsCisgICAgIDAuMDI5NTQy
NGYsIDAuOTkwNDg0NGYsIC0wLjAxNzA0OTFmLAorICAgIC0wLjAwOTIzNDVmLCAwLjAxNTA0MzZm
LCAgMC43NTIxMzE2ZgorfTsKKworZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudENsYW1w
aW5nKGZsb2F0IGMpCiB7CisgICAgQVNTRVJUKGMgPj0gMCk7CisgICAgQVNTRVJUKGMgPD0gMSk7
CisKICAgICBpZiAoYyA8IDAuMDAzMTMwOGYpCiAgICAgICAgIHJldHVybiAxMi45MmYgKiBjOwog
CiAgICAgcmV0dXJuIGNsYW1wVG88ZmxvYXQ+KDEuMDU1ZiAqIHN0ZDo6cG93KGMsIDEuMGYgLyAy
LjRmKSAtIDAuMDU1ZiwgMCwgMSk7CiB9CiAKLWZsb2F0IHJnYlRvTGluZWFyQ29sb3JDb21wb25l
bnQoZmxvYXQgYykKK2Zsb2F0IHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnRDbGFtcGluZyhmbG9h
dCBjKQogeworICAgIEFTU0VSVChjID49IDApOworICAgIEFTU0VSVChjIDw9IDEpOworICAgIAog
ICAgIGlmIChjIDw9IDAuMDQwNDVmKQogICAgICAgICByZXR1cm4gYyAvIDEyLjkyZjsKIAogICAg
IHJldHVybiBjbGFtcFRvPGZsb2F0PihzdGQ6OnBvdygoYyArIDAuMDU1ZikgLyAxLjA1NWYsIDIu
NGYpLCAwLCAxKTsKIH0KIAorZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudE5vbkNsYW1w
aW5nKGZsb2F0IGMpCit7CisgICAgZmxvYXQgc2lnbiA9IGMgPiAwID8gMS4wZiA6IC0xLjBmOwor
ICAgIGMgPSBzdGQ6OmFicyhjKTsKKworICAgIGlmIChjIDwgMC4wMDMxMzA4ZikKKyAgICAgICAg
cmV0dXJuIDEyLjkyZiAqIGMgKiBzaWduOworCisgICAgcmV0dXJuICgxLjA1NWYgKiBzdGQ6OnBv
dyhjLCAxLjBmIC8gMi40ZikgLSAwLjA1NWYpICogc2lnbjsKK30KKworZmxvYXQgcmdiVG9MaW5l
YXJDb2xvckNvbXBvbmVudE5vbkNsYW1waW5nKGZsb2F0IGMpCit7CisgICAgZmxvYXQgc2lnbiA9
IGMgPiAwID8gMS4wZiA6IC0xLjBmOworICAgIGMgPSBzdGQ6OmFicyhjKTsKKworICAgIGlmIChj
IDw9IDAuMDQwNDVmKQorICAgICAgICByZXR1cm4gYyAvIDEyLjkyZiAqIHNpZ247CisKKyAgICBy
ZXR1cm4gc3RkOjpwb3coKGMgKyAwLjA1NWYpIC8gMS4wNTVmLCAyLjRmKSAqIHNpZ247Cit9CisK
IExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFNSR0JBPGZsb2F0PiYgY29s
b3IpCiB7CiAgICAgcmV0dXJuIHsKLSAgICAgICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChj
b2xvci5yZWQpLAotICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGNvbG9yLmdyZWVu
KSwKLSAgICAgICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChjb2xvci5ibHVlKSwKKyAgICAg
ICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudENsYW1waW5nKGNvbG9yLnJlZCksCisgICAgICAg
IHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnRDbGFtcGluZyhjb2xvci5ncmVlbiksCisgICAgICAg
IHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnRDbGFtcGluZyhjb2xvci5ibHVlKSwKKyAgICAgICAg
Y29sb3IuYWxwaGEKKyAgICB9OworfQorCitMaW5lYXJFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0xp
bmVhckV4dGVuZGVkU1JHQkEoY29uc3QgRXh0ZW5kZWRTUkdCQTxmbG9hdD4mIGNvbG9yKQorewor
ICAgIHJldHVybiB7CisgICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnROb25DbGFtcGlu
Zyhjb2xvci5yZWQpLAorICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50Tm9uQ2xhbXBp
bmcoY29sb3IuZ3JlZW4pLAorICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50Tm9uQ2xh
bXBpbmcoY29sb3IuYmx1ZSksCiAgICAgICAgIGNvbG9yLmFscGhhCiAgICAgfTsKIH0KQEAgLTYx
LDkgKzE0MywxOSBAQCBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBTCiBT
UkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mIGNvbG9yKQogewog
ICAgIHJldHVybiB7Ci0gICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQoY29sb3IucmVk
KSwKLSAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChjb2xvci5ncmVlbiksCi0gICAg
ICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQoY29sb3IuYmx1ZSksCisgICAgICAgIGxpbmVh
clRvUkdCQ29sb3JDb21wb25lbnRDbGFtcGluZyhjb2xvci5yZWQpLAorICAgICAgICBsaW5lYXJU
b1JHQkNvbG9yQ29tcG9uZW50Q2xhbXBpbmcoY29sb3IuZ3JlZW4pLAorICAgICAgICBsaW5lYXJU
b1JHQkNvbG9yQ29tcG9uZW50Q2xhbXBpbmcoY29sb3IuYmx1ZSksCisgICAgICAgIGNvbG9yLmFs
cGhhCisgICAgfTsKK30KKworRXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9FeHRlbmRlZFNSR0JBKGNv
bnN0IExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4gewor
ICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50Tm9uQ2xhbXBpbmcoY29sb3IucmVkKSwK
KyAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudE5vbkNsYW1waW5nKGNvbG9yLmdyZWVu
KSwKKyAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudE5vbkNsYW1waW5nKGNvbG9yLmJs
dWUpLAogICAgICAgICBjb2xvci5hbHBoYQogICAgIH07CiB9CkBAIC03MSw5ICsxNjMsOSBAQCBT
UkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBMaW5lYXJTUkdCQTxmCiBMaW5lYXJEaXNwbGF5UDM8
ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQog
ewogICAgIHJldHVybiB7Ci0gICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoY29sb3Iu
cmVkKSwKLSAgICAgICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChjb2xvci5ncmVlbiksCi0g
ICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoY29sb3IuYmx1ZSksCisgICAgICAgIHJn
YlRvTGluZWFyQ29sb3JDb21wb25lbnRDbGFtcGluZyhjb2xvci5yZWQpLAorICAgICAgICByZ2JU
b0xpbmVhckNvbG9yQ29tcG9uZW50Q2xhbXBpbmcoY29sb3IuZ3JlZW4pLAorICAgICAgICByZ2JU
b0xpbmVhckNvbG9yQ29tcG9uZW50Q2xhbXBpbmcoY29sb3IuYmx1ZSksCiAgICAgICAgIGNvbG9y
LmFscGhhCiAgICAgfTsKIH0KQEAgLTgxLDc4ICsxNzMsNTIgQEAgTGluZWFyRGlzcGxheVAzPGZs
b2F0PiB0b0xpbmVhckRpc3BsYXlQMwogRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25z
dCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICByZXR1cm4gewotICAgICAg
ICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGNvbG9yLnJlZCksCi0gICAgICAgIGxpbmVhclRv
UkdCQ29sb3JDb21wb25lbnQoY29sb3IuZ3JlZW4pLAotICAgICAgICBsaW5lYXJUb1JHQkNvbG9y
Q29tcG9uZW50KGNvbG9yLmJsdWUpLAorICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50
Q2xhbXBpbmcoY29sb3IucmVkKSwKKyAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudENs
YW1waW5nKGNvbG9yLmdyZWVuKSwKKyAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudENs
YW1waW5nKGNvbG9yLmJsdWUpLAogICAgICAgICBjb2xvci5hbHBoYQogICAgIH07CiB9CiAKIExp
bmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikK
IHsKLSAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCi0gICAgLy8gaHR0
cDovL3d3dy5icnVjZWxpbmRibG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXgu
aHRtbAotICAgIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiB4eXpUb0xpbmVhclNSR0JNYXRy
aXggewotICAgICAgICAgMy4yNDA0NTQyZiwgLTEuNTM3MTM4NWYsIC0wLjQ5ODUzMTRmLAotICAg
ICAgICAtMC45NjkyNjYwZiwgIDEuODc2MDEwOGYsICAwLjA0MTU1NjBmLAotICAgICAgICAgMC4w
NTU2NDM0ZiwgLTAuMjA0MDI1OWYsICAxLjA1NzIyNTJmCi0gICAgfTsKKyAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgY2xhbXAgdG8gMC0xIHZhbHVlcy4KICAgICByZXR1cm4gYXNMaW5lYXJTUkdC
QSh4eXpUb0xpbmVhclNSR0JNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xv
ckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5l
YXJTUkdCQTxmbG9hdD4mIGNvbG9yKQogewotICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL1NSR0IKLSAgICAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5o
dG1sP0Vxbl9SR0JfWFlaX01hdHJpeC5odG1sCi0gICAgY29uc3RleHByIENvbG9yTWF0cml4PDMs
IDM+IGxpbmVhclNSR0JUb1hZWk1hdHJpeCB7Ci0gICAgICAgIDAuNDEyNDU2NGYsICAwLjM1NzU3
NjFmLCAgMC4xODA0Mzc1ZiwKLSAgICAgICAgMC4yMTI2NzI5ZiwgIDAuNzE1MTUyMmYsICAwLjA3
MjE3NTBmLAotICAgICAgICAwLjAxOTMzMzlmLCAgMC4xMTkxOTIwZiwgIDAuOTUwMzA0MWYKLSAg
ICB9OworICAgIHJldHVybiBhc1hZWkEobGluZWFyU1JHQlRvWFlaTWF0cml4LnRyYW5zZm9ybWVk
Q29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOworfQorCitMaW5lYXJF
eHRlbmRlZFNSR0JBPGZsb2F0PiB0b0xpbmVhckV4dGVuZGVkU1JHQkEoY29uc3QgWFlaQTxmbG9h
dD4mIGNvbG9yKQoreworICAgIHJldHVybiBhc0xpbmVhckV4dGVuZGVkU1JHQkEoeHl6VG9MaW5l
YXJTUkdCTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRz
KGNvbG9yKSkpOworfQorCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyRXh0ZW5kZWRT
UkdCQTxmbG9hdD4mIGNvbG9yKQorewogICAgIHJldHVybiBhc1hZWkEobGluZWFyU1JHQlRvWFla
TWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9y
KSkpOwogfQogCiBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0
IFhZWkE8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcv
Y3NzLWNvbG9yLyNjb2xvci1jb252ZXJzaW9uLWNvZGUKLSAgICBjb25zdGV4cHIgQ29sb3JNYXRy
aXg8MywgMz4geHl6VG9MaW5lYXJEaXNwbGF5UDNNYXRyaXggewotICAgICAgICAgMi40OTM0OTY5
MTE5NDE0MjVmLCAgLTAuOTMxMzgzNjE3OTE5MTIzOWYsIC0wLjQwMjcxMDc4NDQ1MDcxNjhmLAot
ICAgICAgICAtMC44Mjk0ODg5Njk1NjE1NzQ3ZiwgIDEuNzYyNjY0MDYwMzE4MzQ2M2YsICAwLjAy
MzYyNDY4NTg0MTk0MzZmLAotICAgICAgICAgMC4wMzU4NDU4MzAyNDM3ODQ1ZiwgLTAuMDc2MTcy
Mzg5MjY4MDQxOGYsICAwLjk1Njg4NDUyNDAwNzY4NzJmCi0gICAgfTsKKyAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgY2xhbXAgdG8gMC0xIHZhbHVlcy4KICAgICByZXR1cm4gYXNMaW5lYXJEaXNw
bGF5UDMoeHl6VG9MaW5lYXJEaXNwbGF5UDNNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVu
dHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKIFhZWkE8ZmxvYXQ+IHRvWFlaQShj
b25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICAvLyBodHRwczovL2Ry
YWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLyNjb2xvci1jb252ZXJzaW9uLWNvZGUKLSAgICBjb25z
dGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gbGluZWFyRGlzcGxheVAzVG9YWVpNYXRyaXggewotICAg
ICAgICAwLjQ4NjU3MDk0ODY0ODIxNjJmLCAwLjI2NTY2NzY5MzE2OTA5MzFmLCAwLjE5ODIxNzI4
NTIzNDM2M2YsCi0gICAgICAgIDAuMjI4OTc0NTY0MDY5NzQ4OGYsIDAuNjkxNzM4NTIxODM2NTA2
NGYsIDAuMDc5Mjg2OTE0MDkzNzQ1ZiwKLSAgICAgICAgMC4wZiwgICAgICAgICAgICAgICAgMC4w
NDUxMTMzODE4NTg5MDI2ZiwgMS4wNDM5NDQzNjg5MDA5NzZmCi0gICAgfTsKICAgICByZXR1cm4g
YXNYWVpBKGxpbmVhckRpc3BsYXlQM1RvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25l
bnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCiBzdGF0aWMgWFlaQTxmbG9hdD4g
Y29udmVydEZyb21ENTBXaGl0ZVBvaW50VG9ENjVXaGl0ZVBvaW50KGNvbnN0IFhZWkE8ZmxvYXQ+
JiBjb2xvcikKIHsKLSAgICAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5o
dG1sP0Vxbl9DaHJvbUFkYXB0Lmh0bWwKLSAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4g
RDUwVG9ENjVNYXRyaXggewotICAgICAgICAgMC45NTU1NzY2ZiwgLTAuMDIzMDM5M2YsIDAuMDYz
MTYzNmYsCi0gICAgICAgIC0wLjAyODI4OTVmLCAgMS4wMDk5NDE2ZiwgMC4wMjEwMDc3ZiwKLSAg
ICAgICAgIDAuMDEyMjk4MmYsIC0wLjAyMDQ4MzBmLCAxLjMyOTkwOThmCi0gICAgfTsKICAgICBy
ZXR1cm4gYXNYWVpBKEQ1MFRvRDY1TWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFz
Q29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwogfQogCiBzdGF0aWMgWFlaQTxmbG9hdD4gY29udmVy
dEZyb21ENjVXaGl0ZVBvaW50VG9ENTBXaGl0ZVBvaW50KGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xv
cikKIHsKLSAgICAvLyBodHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbS9pbmRleC5odG1sP0Vx
bl9DaHJvbUFkYXB0Lmh0bWwKLSAgICBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gRDY1VG9E
NTBNYXRyaXggewotICAgICAgICAgMS4wNDc4MTEyZiwgMC4wMjI4ODY2ZiwgLTAuMDUwMTI3MGYs
Ci0gICAgICAgICAwLjAyOTU0MjRmLCAwLjk5MDQ4NDRmLCAtMC4wMTcwNDkxZiwKLSAgICAgICAg
LTAuMDA5MjM0NWYsIDAuMDE1MDQzNmYsICAwLjc1MjEzMTZmCi0gICAgfTsKICAgICByZXR1cm4g
YXNYWVpBKEQ2NVRvRDUwTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JD
b21wb25lbnRzKGNvbG9yKSkpOwogfQogCkBAIC0zNTgsMjEgKzQyNCwzNSBAQCBDTVlLQTxmbG9h
dD4gdG9DTVlLQShjb25zdCBTUkdCQTxmbG9hdD4mCiAKIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25z
dCBTUkdCQTxmbG9hdD4mIGNvbG9yKQogeworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9i
YWJseSBub3QgcGVyZm9ybSB0aGUgY2xhbXBpbmcgZG9uZSBpbiB0b0xpbmVhclNSR0JBKFNSR0JB
KS4KICAgICByZXR1cm4gdG9YWVpBKHRvTGluZWFyU1JHQkEoY29sb3IpKTsKIH0KIAogU1JHQkE8
ZmxvYXQ+IHRvU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQogeworICAgIC8vIEZJWE1F
OiBJZiB0b0xpbmVhclNSR0JBKFhZWkEpIGlzIHVwZGF0ZWQgdG8gY2xhbXAsIHRoaXMgc2hvdWxk
IGF2b2lkIGNhbGxpbmcgaXQuCiAgICAgcmV0dXJuIHRvU1JHQkEodG9MaW5lYXJTUkdCQShjb2xv
cikpOwogfQogCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgRXh0ZW5kZWRTUkdCQTxmbG9hdD4m
IGNvbG9yKQoreworICAgIHJldHVybiB0b1hZWkEodG9MaW5lYXJFeHRlbmRlZFNSR0JBKGNvbG9y
KSk7Cit9CisKK0V4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvRXh0ZW5kZWRTUkdCQShjb25zdCBYWVpB
PGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvRXh0ZW5kZWRTUkdCQSh0b0xpbmVhckV4
dGVuZGVkU1JHQkEoY29sb3IpKTsKK30KKwogWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IERpc3Bs
YXlQMzxmbG9hdD4mIGNvbG9yKQogeworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJs
eSBub3QgcGVyZm9ybSB0aGUgY2xhbXBpbmcgZG9uZSBpbiB0b0xpbmVhckRpc3BsYXlQMyhEaXNw
bGF5UDMpLgogICAgIHJldHVybiB0b1hZWkEodG9MaW5lYXJEaXNwbGF5UDMoY29sb3IpKTsKIH0K
IAogRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3Ip
CiB7CisgICAgLy8gRklYTUU6IElmIHRvTGluZWFyRGlzcGxheVAzKFhZWkEpIGlzIHVwZGF0ZWQg
dG8gY2xhbXAsIHRoaXMgc2hvdWxkIGF2b2lkIGNhbGxpbmcgaXQuCiAgICAgcmV0dXJuIHRvRGlz
cGxheVAzKHRvTGluZWFyRGlzcGxheVAzKGNvbG9yKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCShyZXZpc2lv
biAyNzE1NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZl
cnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsMTEgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogLy8gVGhlc2UgYXJlIHRoZSBzdGFuZGFyZCBzUkdCIDwtPiBMaW5lYXJSR0IgLyBE
aXNwbGF5UDMgPC0+IExpbmVhckRpc3BsYXlQMyBjb252ZXJzaW9uIGZ1bmN0aW9ucyAoaHR0cHM6
Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1JHQikuCi1mbG9hdCBsaW5lYXJUb1JHQkNvbG9yQ29t
cG9uZW50KGZsb2F0KTsKLWZsb2F0IHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoZmxvYXQpOwor
ZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudENsYW1waW5nKGZsb2F0KTsKK2Zsb2F0IHJn
YlRvTGluZWFyQ29sb3JDb21wb25lbnRDbGFtcGluZyhmbG9hdCk7CisKK2Zsb2F0IGxpbmVhclRv
UkdCQ29sb3JDb21wb25lbnROb25DbGFtcGluZyhmbG9hdCk7CitmbG9hdCByZ2JUb0xpbmVhckNv
bG9yQ29tcG9uZW50Tm9uQ2xhbXBpbmcoZmxvYXQpOwogCiAKIC8vIEFsbCBjb2xvciB0eXBlcyBt
dXN0IGF0IGxlYXN0IGltcGxlbWVudCB0aGUgZm9sbG93aW5nIGNvbnZlcnNpb25zIHRvIGFuZCBm
cm9tIHRoZSBYWVpBIGNvbG9yIHNwYWNlOgpAQCAtNTAsMTIgKzUzLDI0IEBAIFdFQkNPUkVfRVhQ
T1JUIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmUKIFdFQkNPUkVfRVhQT1JUIEhTTEE8ZmxvYXQ+
IHRvSFNMQShjb25zdCBTUkdCQTxmbG9hdD4mKTsKIFdFQkNPUkVfRVhQT1JUIENNWUtBPGZsb2F0
PiB0b0NNWUtBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOwogCisvLyBFeHRlbmRlZFNSR0JBCitXRUJD
T1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgRXh0ZW5kZWRTUkdCQTxmbG9hdD4m
KTsKK1dFQkNPUkVfRVhQT1JUIEV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvRXh0ZW5kZWRTUkdCQShj
b25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRpb25zCitXRUJDT1JFX0VYUE9SVCBMaW5lYXJF
eHRlbmRlZFNSR0JBPGZsb2F0PiB0b0xpbmVhckV4dGVuZGVkU1JHQkEoY29uc3QgRXh0ZW5kZWRT
UkdCQTxmbG9hdD4mKTsKKwogLy8gTGluZWFyU1JHQkEKIFdFQkNPUkVfRVhQT1JUIFhZWkE8Zmxv
YXQ+IHRvWFlaQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mKTsKIFdFQkNPUkVfRVhQT1JUIExp
bmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CiAvLyBB
ZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IExpbmVh
clNSR0JBPGZsb2F0PiYpOwogCisvLyBMaW5lYXJFeHRlbmRlZFNSR0JBCitXRUJDT1JFX0VYUE9S
VCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4mKTsK
K1dFQkNPUkVfRVhQT1JUIExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvTGluZWFyRXh0ZW5k
ZWRTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYpOworLy8gQWRkaXRpb25zCitXRUJDT1JFX0VYUE9S
VCBFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0V4dGVuZGVkU1JHQkEoY29uc3QgTGluZWFyRXh0ZW5k
ZWRTUkdCQTxmbG9hdD4mKTsKKwogCiAvLyBEaXNwbGF5UDMKIFdFQkNPUkVfRVhQT1JUIFhZWkE8
ZmxvYXQ+IHRvWFlaQShjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+Jik7CkBAIC0xMDIsNyArMTE3LDkg
QEAgV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29ucwogLy8gSWRlbnRpdHkg
Y29udmVyc2lvbnMgKHVzZWZ1bCBmb3IgZ2VuZXJpYyBjb250ZXh0cykuCiAKIGNvbnN0ZXhwciBT
UkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBj
b2xvcjsgfQorY29uc3RleHByIEV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvRXh0ZW5kZWRTUkdCQShj
b25zdCBFeHRlbmRlZFNSR0JBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9CiBjb25z
dGV4cHIgTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgTGluZWFyU1JHQkE8
ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KK2NvbnN0ZXhwciBMaW5lYXJFeHRlbmRl
ZFNSR0JBPGZsb2F0PiB0b0xpbmVhckV4dGVuZGVkU1JHQkEoY29uc3QgTGluZWFyRXh0ZW5kZWRT
UkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29uc3RleHByIERpc3BsYXlQ
MzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpIHsgcmV0
dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRp
c3BsYXlQMyhjb25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29s
b3I7IH0KIGNvbnN0ZXhwciBMYWI8ZmxvYXQ+IHRvTGFiKGNvbnN0IExhYjxmbG9hdD4mIGNvbG9y
KSB7IHJldHVybiBjb2xvcjsgfQpAQCAtMTIyLDExICsxMzksMjEgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gU1JHQkE8ZmxvYXQ+IHRvU1JHQgogICAgIHJldHVybiB0b1NSR0JBKHRvWFlaQShjb2xv
cikpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0V4
dGVuZGVkU1JHQkEoY29uc3QgVCYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvRXh0ZW5kZWRTUkdC
QSh0b1hZWkEoY29sb3IpKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gTGluZWFyU1JHQkE8
ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgVCYgY29sb3IpCiB7CiAgICAgcmV0dXJuIHRvTGlu
ZWFyU1JHQkEodG9YWVpBKGNvbG9yKSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IExpbmVh
ckV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvTGluZWFyRXh0ZW5kZWRTUkdCQShjb25zdCBUJiBjb2xv
cikKK3sKKyAgICByZXR1cm4gdG9MaW5lYXJFeHRlbmRlZFNSR0JBKHRvWFlaQShjb2xvcikpOwor
fQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNv
bnN0IFQmIGNvbG9yKQogewogICAgIHJldHVybiB0b0Rpc3BsYXlQMyh0b1hZWkEoY29sb3IpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJ
KHJldmlzaW9uIDI3MTU1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDYgKzExNSw0OCBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyCiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0K
IAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEV4dGVuZGVkU1JHQkEgOiBDb2xvcldpdGhB
bHBoYUhlbHBlcjxFeHRlbmRlZFNSR0JBPFQ+PiB7CisgICAgdXNpbmcgQ29tcG9uZW50VHlwZSA9
IFQ7CisKKyAgICBjb25zdGV4cHIgRXh0ZW5kZWRTUkdCQShUIHJlZCwgVCBncmVlbiwgVCBibHVl
LCBUIGFscGhhID0gQ29tcG9uZW50VHJhaXRzPFQ+OjptYXhWYWx1ZSkKKyAgICAgICAgOiByZWQg
eyByZWQgfQorICAgICAgICAsIGdyZWVuIHsgZ3JlZW4gfQorICAgICAgICAsIGJsdWUgeyBibHVl
IH0KKyAgICAgICAgLCBhbHBoYSB7IGFscGhhIH0KKyAgICB7CisgICAgfQorCisgICAgY29uc3Rl
eHByIEV4dGVuZGVkU1JHQkEoKQorICAgICAgICA6IEV4dGVuZGVkU1JHQkEgeyAwLCAwLCAwLCAw
IH0KKyAgICB7CisgICAgfQorCisgICAgVCByZWQ7CisgICAgVCBncmVlbjsKKyAgICBUIGJsdWU7
CisgICAgVCBhbHBoYTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBDb2xv
ckNvbXBvbmVudHM8VD4gYXNDb2xvckNvbXBvbmVudHMoY29uc3QgRXh0ZW5kZWRTUkdCQTxUPiYg
YykKK3sKKyAgICByZXR1cm4geyBjLnJlZCwgYy5ncmVlbiwgYy5ibHVlLCBjLmFscGhhIH07Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBFeHRlbmRlZFNSR0JBPFQ+IGFzRXh0
ZW5kZWRTUkdCQShjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGMpCit7CisgICAgcmV0dXJuIHsg
Y1swXSwgY1sxXSwgY1syXSwgY1szXSB9OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV4dGVuZGVkU1JHQkE8VD4mIGEsIGNvbnN0IEV4
dGVuZGVkU1JHQkE8VD4mIGIpCit7CisgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGEpID09
IGFzQ29sb3JDb21wb25lbnRzKGIpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEV4dGVuZGVkU1JHQkE8VD4mIGEsIGNvbnN0IEV4dGVu
ZGVkU1JHQkE8VD4mIGIpCit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKK30KKwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTGluZWFyU1JHQkEgOiBDb2xvcldpdGhBbHBoYUhlbHBlcjxM
aW5lYXJTUkdCQTxUPj4gewogICAgIHVzaW5nIENvbXBvbmVudFR5cGUgPSBUOwpAQCAtMTU5LDYg
KzIwMSw0OCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyCiAgICAg
cmV0dXJuICEoYSA9PSBiKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IExpbmVh
ckV4dGVuZGVkU1JHQkEgOiBDb2xvcldpdGhBbHBoYUhlbHBlcjxMaW5lYXJFeHRlbmRlZFNSR0JB
PFQ+PiB7CisgICAgdXNpbmcgQ29tcG9uZW50VHlwZSA9IFQ7CisKKyAgICBjb25zdGV4cHIgTGlu
ZWFyRXh0ZW5kZWRTUkdCQShUIHJlZCwgVCBncmVlbiwgVCBibHVlLCBUIGFscGhhID0gQ29tcG9u
ZW50VHJhaXRzPFQ+OjptYXhWYWx1ZSkKKyAgICAgICAgOiByZWQgeyByZWQgfQorICAgICAgICAs
IGdyZWVuIHsgZ3JlZW4gfQorICAgICAgICAsIGJsdWUgeyBibHVlIH0KKyAgICAgICAgLCBhbHBo
YSB7IGFscGhhIH0KKyAgICB7CisgICAgfQorCisgICAgY29uc3RleHByIExpbmVhckV4dGVuZGVk
U1JHQkEoKQorICAgICAgICA6IExpbmVhckV4dGVuZGVkU1JHQkEgeyAwLCAwLCAwLCAwIH0KKyAg
ICB7CisgICAgfQorCisgICAgVCByZWQ7CisgICAgVCBncmVlbjsKKyAgICBUIGJsdWU7CisgICAg
VCBhbHBoYTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBDb2xvckNvbXBv
bmVudHM8VD4gYXNDb2xvckNvbXBvbmVudHMoY29uc3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxUPiYg
YykKK3sKKyAgICByZXR1cm4geyBjLnJlZCwgYy5ncmVlbiwgYy5ibHVlLCBjLmFscGhhIH07Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBMaW5lYXJFeHRlbmRlZFNSR0JBPFQ+
IGFzTGluZWFyRXh0ZW5kZWRTUkdCQShjb25zdCBDb2xvckNvbXBvbmVudHM8VD4mIGMpCit7Cisg
ICAgcmV0dXJuIHsgY1swXSwgY1sxXSwgY1syXSwgY1szXSB9OworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExpbmVhckV4dGVuZGVkU1JH
QkE8VD4mIGEsIGNvbnN0IExpbmVhckV4dGVuZGVkU1JHQkE8VD4mIGIpCit7CisgICAgcmV0dXJu
IGFzQ29sb3JDb21wb25lbnRzKGEpID09IGFzQ29sb3JDb21wb25lbnRzKGIpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExpbmVhckV4
dGVuZGVkU1JHQkE8VD4mIGEsIGNvbnN0IExpbmVhckV4dGVuZGVkU1JHQkE8VD4mIGIpCit7Cisg
ICAgcmV0dXJuICEoYSA9PSBiKTsKK30KKwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
RGlzcGxheVAzIDogQ29sb3JXaXRoQWxwaGFIZWxwZXI8RGlzcGxheVAzPFQ+PiB7CiAgICAgdXNp
bmcgQ29tcG9uZW50VHlwZSA9IFQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tl
bmQuY3BwCShyZXZpc2lvbiAyNzE1NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNCw3ICsxMDQsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1D
CiAgICAgICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7CiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKICAgICAgICAgICAgICAgICBm
bG9hdCBjb2xvciA9IGkgLyAyNTUuMGY7Ci0gICAgICAgICAgICAgICAgY29sb3IgPSByZ2JUb0xp
bmVhckNvbG9yQ29tcG9uZW50KGNvbG9yKTsKKyAgICAgICAgICAgICAgICBjb2xvciA9IHJnYlRv
TGluZWFyQ29sb3JDb21wb25lbnRDbGFtcGluZyhjb2xvcik7CiAgICAgICAgICAgICAgICAgYXJy
YXlbaV0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pihyb3VuZChjb2xvciAqIDI1NSkpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGFycmF5OwpAQCAtMTE1LDcgKzExNSw3IEBAIHZv
aWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUMKICAgICAgICAgICAgIHN0ZDo6
YXJyYXk8dWludDhfdCwgMjU2PiBhcnJheTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCAyNTY7IGkrKykgewogICAgICAgICAgICAgICAgIGZsb2F0IGNvbG9yID0gaSAvIDI1
NS4wZjsKLSAgICAgICAgICAgICAgICBjb2xvciA9IGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnQo
Y29sb3IpOworICAgICAgICAgICAgICAgIGNvbG9yID0gbGluZWFyVG9SR0JDb2xvckNvbXBvbmVu
dENsYW1waW5nKGNvbG9yKTsKICAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KHJvdW5kKGNvbG9yICogMjU1KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICByZXR1cm4gYXJyYXk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9Db2xvckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvckNHLmNwcAkocmV2aXNpb24gMjcxNTU4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiwx
MyArMTAyLDE2IEBAIHN0YXRpYyBDR0NvbG9yUmVmIGxlYWtDR0NvbG9yKGNvbnN0IENvbG8KIAog
ICAgIC8vIFNvbWUgQ0cgcG9ydHMgZG9uJ3Qgc3VwcG9ydCBhbGwgdGhlIGNvbG9yIHNwYWNlcyBy
ZXF1aXJlZCBhbmQgcmV0dXJuCiAgICAgLy8gc1JHQkNvbG9yU3BhY2VSZWYoKSBmb3IgdW5zdXBw
b3J0ZWQgY29sb3Igc3BhY2VzLiBJbiB0aG9zZSBjYXNlcywgd2UKLSAgICAvLyBuZWVkIHRvIGVh
Z2VybHkgYW5kIHBvdGVudGlhbGx5IGxvc3NpbHkgY29udmVydCB0aGUgY29sb3IgaW50byBzUkdC
Ci0gICAgLy8gb3Vyc2VsdmVzIGJlZm9yZSBjcmVhdGluZyB0aGUgQ0dDb2xvclJlZi4KKyAgICAv
LyBuZWVkIHRvIGVhZ2VybHkgY29udmVydCB0aGUgY29sb3IgaW50byBleHRlbmRlZCBzUkdCIG91
cnNlbHZlcyBiZWZvcmUKKyAgICAvLyBjcmVhdGluZyB0aGUgQ0dDb2xvclJlZi4KKyAgICAvLyBG
SVhNRTogVGhpcyBpcyBub3QgYSBnb29kIHdheSB0byBpbmRpY2F0ZSBsYWNrIG9mIHN1cHBvcnQu
IE1ha2UgdGhpcworICAgIC8vIG1vcmUgZXhwbGljaXQuCiAgICAgaWYgKGNvbG9yU3BhY2UgIT0g
Q29sb3JTcGFjZTo6U1JHQiAmJiBjZ0NvbG9yU3BhY2UgPT0gc1JHQkNvbG9yU3BhY2VSZWYoKSkg
ewotICAgICAgICBhdXRvIGNvbG9yQ29udmVydGVkVG9TUkdCQSA9IGNhbGxXaXRoQ29sb3JUeXBl
KGNvbXBvbmVudHMsIGNvbG9yU3BhY2UsIFtdIChjb25zdCBhdXRvJiBjb2xvcikgewotICAgICAg
ICAgICAgcmV0dXJuIHRvU1JHQkEoY29sb3IpOworICAgICAgICBhdXRvIGNvbG9yQ29udmVydGVk
VG9FeHRlbmRlZFNSR0JBID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JTcGFj
ZSwgW10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7CisgICAgICAgICAgICByZXR1cm4gdG9FeHRlbmRl
ZFNSR0JBKGNvbG9yKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGNvbXBvbmVudHMgPSBhc0NvbG9y
Q29tcG9uZW50cyhjb2xvckNvbnZlcnRlZFRvU1JHQkEpOworICAgICAgICBjb21wb25lbnRzID0g
YXNDb2xvckNvbXBvbmVudHMoY29sb3JDb252ZXJ0ZWRUb0V4dGVuZGVkU1JHQkEpOworICAgICAg
ICBjZ0NvbG9yU3BhY2UgPSBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7CiAgICAgfQogCiAg
ICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCShyZXZpc2lv
biAyNzE1NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNw
YWNlQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNyArMzgsOCBAQCBDR0NvbG9yU3BhY2VS
ZWYgc1JHQkNvbG9yU3BhY2VSZWYoKQogICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgc1JHQkNv
bG9yU3BhY2U7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgICAgICAvLyBP
dXQtb2YtZGF0ZSBDRyBpbnN0YWxsYXRpb25zIHdpbGwgbm90IGhvbm9yIGtDR0NvbG9yU3BhY2VT
UkdCLiBUaGlzIGxvZ2ljIGF2b2lkcwotICAgICAgICAvLyBjYXVzaW5nIGEgY3Jhc2ggdW5kZXIg
dGhvc2UgY29uZGl0aW9ucy4gU2luY2UgdGhlIGRlZmF1bHQgY29sb3Igc3BhY2UgaW4gV2luZG93
cwotICAgICAgICAvLyBpcyBzUkdCLCB0aGlzIGFsbCB3b3JrcyBvdXQgbmljZWx5LgotICAgICAg
ICAvLyBGSVhNRTogSXMgdGhpcyBzdGlsbCBuZWVkZWQ/IHJkYXI6Ly9wcm9ibGVtLzE1MjEzNTE1
IHdhcyBmaXhlZC4KICAgICAgICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVX
aXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQik7Ci0gICAgICAgIGlmICghc1JHQkNvbG9yU3BhY2Up
Ci0gICAgICAgICAgICBzUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJH
QigpOwotI2Vsc2UKLSAgICAgICAgc1JHQkNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVX
aXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQik7Ci0jZW5kaWYgLy8gUExBVEZPUk0oV0lOKQorICAg
ICAgICBBU1NFUlQoc1JHQkNvbG9yU3BhY2UpOwogICAgIH0pOwogICAgIHJldHVybiBzUkdCQ29s
b3JTcGFjZTsKIH0KQEAgLTU4LDEyICs0OSw4IEBAIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJSR0JD
b2xvclNwYWNlUmVmKCkKICAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGxpbmVhclJHQkNvbG9y
U3BhY2U7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgICAgICAvLyBGSVhN
RTogV2luZG93cyBzaG91bGQgYmUgYWJsZSB0byB1c2UgbGluZWFyIHNSR0IsIHRoaXMgaXMgdHJh
Y2tlZCBieSBodHRwOi8vd2Via2l0Lm9yZy9iLzgwMDAwLgotICAgICAgICBsaW5lYXJSR0JDb2xv
clNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCiAgICAgICAgIGxpbmVhclJHQkNv
bG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlTGluZWFy
U1JHQik7Ci0jZW5kaWYKKyAgICAgICAgQVNTRVJUKGxpbmVhclJHQkNvbG9yU3BhY2UpOwogICAg
IH0pOwogICAgIHJldHVybiBsaW5lYXJSR0JDb2xvclNwYWNlOwogfQpAQCAtODQsNyArNzEsNiBA
QCBDR0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpCiAKIENHQ29sb3JTcGFj
ZVJlZiBsYWJDb2xvclNwYWNlUmVmKCkKIHsKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9y
IGNvbnZlcnNpb24gdG8gTGFiIG9uIHN1cHBvcnRlZCBwbGF0Zm9ybXMuCiAgICAgcmV0dXJuIHNS
R0JDb2xvclNwYWNlUmVmKCk7CiB9CiAKQEAgLTkzLDE1ICs3OSw4IEBAIENHQ29sb3JTcGFjZVJl
ZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmUKICAgICBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGV4
dGVuZGVkU1JHQkNvbG9yU3BhY2U7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFn
OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIENHQ29sb3JTcGFj
ZVJlZiBjb2xvclNwYWNlID0gbnVsbHB0cjsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAg
Y29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VFeHRl
bmRlZFNSR0IpOwotI2VuZGlmCi0gICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHN1cHBvcnQgZm9y
IGV4dGVuZGVkIHNSR0IsIGZhbGwgYmFjayB0byBzUkdCLgotICAgICAgICBpZiAoIWNvbG9yU3Bh
Y2UpCi0gICAgICAgICAgICBjb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLQotICAg
ICAgICBleHRlbmRlZFNSR0JDb2xvclNwYWNlID0gY29sb3JTcGFjZTsKKyAgICAgICAgZXh0ZW5k
ZWRTUkdCQ29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3Bh
Y2VFeHRlbmRlZFNSR0IpOworICAgICAgICBBU1NFUlQoZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZSk7
CiAgICAgfSk7CiAgICAgcmV0dXJuIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2U7CiB9Cg==
</data>
<flag name="commit-queue"
          id="435556"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417780</attachid>
            <date>2021-01-17 12:07:10 -0800</date>
            <delta_ts>2021-01-21 10:30:27 -0800</delta_ts>
            <desc>ExtendedSRGB approach</desc>
            <filename>bug-220684-20210117120709.patch</filename>
            <type>text/plain</type>
            <size>25888</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTU1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTAxLTE3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgZXhwbGljaXQgY2xhbXAg
dG8gU1JHQiBmb3IgTGFiIGNvbG9ycyBvbiBDRyBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IHdpZGUg
Y29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MDY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtX
SVBdCisKKyAgICAgICAgVGVzdHM6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1jb2xvci9sYWItMDA4Lmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsaW5lYXJUb1JHQkNvbG9yQ29t
cG9uZW50Q2xhbXBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6cmdiVG9MaW5lYXJDb2xvckNvbXBv
bmVudENsYW1waW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmxpbmVhclRvUkdCQ29sb3JDb21wb25l
bnROb25DbGFtcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpyZ2JUb0xpbmVhckNvbG9yQ29tcG9u
ZW50Tm9uQ2xhbXBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6dG9MaW5lYXJTUkdCQSk6CisgICAg
ICAgIChXZWJDb3JlOjp0b0xpbmVhckV4dGVuZGVkU1JHQkEpOgorICAgICAgICAoV2ViQ29yZTo6
dG9TUkdCQSk6CisgICAgICAgIChXZWJDb3JlOjp0b0V4dGVuZGVkU1JHQkEpOgorICAgICAgICAo
V2ViQ29yZTo6dG9MaW5lYXJEaXNwbGF5UDMpOgorICAgICAgICAoV2ViQ29yZTo6dG9EaXNwbGF5
UDMpOgorICAgICAgICAoV2ViQ29yZTo6dG9YWVpBKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZl
cnRGcm9tRDUwV2hpdGVQb2ludFRvRDY1V2hpdGVQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0RnJvbUQ2NVdoaXRlUG9pbnRUb0Q1MFdoaXRlUG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6bGluZWFyVG9SR0JDb2xvckNvbXBvbmVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpyZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvRXh0ZW5k
ZWRTUkdCQSk6CisgICAgICAgIChXZWJDb3JlOjp0b0xpbmVhckV4dGVuZGVkU1JHQkEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkV4dGVuZGVkU1JHQkE6OkV4dGVuZGVkU1JHQkEpOgorICAgICAgICAoV2ViQ29yZTo6YXNDb2xv
ckNvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6YXNFeHRlbmRlZFNSR0JBKToKKyAgICAg
ICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IhPSk6
CisgICAgICAgIChXZWJDb3JlOjpMaW5lYXJFeHRlbmRlZFNSR0JBOjpMaW5lYXJFeHRlbmRlZFNS
R0JBKToKKyAgICAgICAgKFdlYkNvcmU6OmFzTGluZWFyRXh0ZW5kZWRTUkdCQSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9y
U3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bGVha0NHQ29sb3IpOgorCiAyMDIxLTAxLTE2ICBaYWxhbiBCdWp0YXMg
IDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBEbyBub3QgdXNlIExpbmVC
b3g6OmlzQ29uc2lkZXJlZEVtcHR5IHdoZW4gY2hlY2tpbmcgaWYgaW5saW5lIGJveCBzdHJldGNo
ZXMgdGhlIGxpbmUgYm94LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAyNzE1NTgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiwyOCArMzIsMTEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZmxv
YXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChmbG9hdCBjKQorLy8gaHR0cHM6Ly9lbi53aWtp
cGVkaWEub3JnL3dpa2kvU1JHQgorLy8gaHR0cDovL3d3dy5icnVjZWxpbmRibG9vbS5jb20vaW5k
ZXguaHRtbD9FcW5fUkdCX1hZWl9NYXRyaXguaHRtbAorc3RhdGljIGNvbnN0ZXhwciBDb2xvck1h
dHJpeDwzLCAzPiB4eXpUb0xpbmVhclNSR0JNYXRyaXggeworICAgICAzLjI0MDQ1NDJmLCAtMS41
MzcxMzg1ZiwgLTAuNDk4NTMxNGYsCisgICAgLTAuOTY5MjY2MGYsICAxLjg3NjAxMDhmLCAgMC4w
NDE1NTYwZiwKKyAgICAgMC4wNTU2NDM0ZiwgLTAuMjA0MDI1OWYsICAxLjA1NzIyNTJmCit9Owor
CisvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCisvLyBodHRwOi8vd3d3LmJy
dWNlbGluZGJsb29tLmNvbS9pbmRleC5odG1sP0Vxbl9SR0JfWFlaX01hdHJpeC5odG1sCitzdGF0
aWMgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IGxpbmVhclNSR0JUb1hZWk1hdHJpeCB7Cisg
ICAgMC40MTI0NTY0ZiwgIDAuMzU3NTc2MWYsICAwLjE4MDQzNzVmLAorICAgIDAuMjEyNjcyOWYs
ICAwLjcxNTE1MjJmLCAgMC4wNzIxNzUwZiwKKyAgICAwLjAxOTMzMzlmLCAgMC4xMTkxOTIwZiwg
IDAuOTUwMzA0MWYKK307CisKKy8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3Iv
I2NvbG9yLWNvbnZlcnNpb24tY29kZQorc3RhdGljIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAz
PiB4eXpUb0xpbmVhckRpc3BsYXlQM01hdHJpeCB7CisgICAgIDIuNDkzNDk2OTExOTQxNDI1Ziwg
IC0wLjkzMTM4MzYxNzkxOTEyMzlmLCAtMC40MDI3MTA3ODQ0NTA3MTY4ZiwKKyAgICAtMC44Mjk0
ODg5Njk1NjE1NzQ3ZiwgIDEuNzYyNjY0MDYwMzE4MzQ2M2YsICAwLjAyMzYyNDY4NTg0MTk0MzZm
LAorICAgICAwLjAzNTg0NTgzMDI0Mzc4NDVmLCAtMC4wNzYxNzIzODkyNjgwNDE4ZiwgIDAuOTU2
ODg0NTI0MDA3Njg3MmYKK307CisKKy8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29s
b3IvI2NvbG9yLWNvbnZlcnNpb24tY29kZQorc3RhdGljIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwz
LCAzPiBsaW5lYXJEaXNwbGF5UDNUb1hZWk1hdHJpeCB7CisgICAgMC40ODY1NzA5NDg2NDgyMTYy
ZiwgMC4yNjU2Njc2OTMxNjkwOTMxZiwgMC4xOTgyMTcyODUyMzQzNjNmLAorICAgIDAuMjI4OTc0
NTY0MDY5NzQ4OGYsIDAuNjkxNzM4NTIxODM2NTA2NGYsIDAuMDc5Mjg2OTE0MDkzNzQ1ZiwKKyAg
ICAwLjBmLCAgICAgICAgICAgICAgICAwLjA0NTExMzM4MTg1ODkwMjZmLCAxLjA0Mzk0NDM2ODkw
MDk3NmYKK307CisKKy8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2luZGV4Lmh0bWw/
RXFuX0Nocm9tQWRhcHQuaHRtbAorc3RhdGljIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBE
NTBUb0Q2NU1hdHJpeCB7CisgICAgIDAuOTU1NTc2NmYsIC0wLjAyMzAzOTNmLCAwLjA2MzE2MzZm
LAorICAgIC0wLjAyODI4OTVmLCAgMS4wMDk5NDE2ZiwgMC4wMjEwMDc3ZiwKKyAgICAgMC4wMTIy
OTgyZiwgLTAuMDIwNDgzMGYsIDEuMzI5OTA5OGYKK307CisKKy8vIGh0dHA6Ly93d3cuYnJ1Y2Vs
aW5kYmxvb20uY29tL2luZGV4Lmh0bWw/RXFuX0Nocm9tQWRhcHQuaHRtbAorc3RhdGljIGNvbnN0
ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBENjVUb0Q1ME1hdHJpeCB7CisgICAgIDEuMDQ3ODExMmYs
IDAuMDIyODg2NmYsIC0wLjA1MDEyNzBmLAorICAgICAwLjAyOTU0MjRmLCAwLjk5MDQ4NDRmLCAt
MC4wMTcwNDkxZiwKKyAgICAtMC4wMDkyMzQ1ZiwgMC4wMTUwNDM2ZiwgIDAuNzUyMTMxNmYKK307
CisKK2Zsb2F0IGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnRDbGFtcGluZyhmbG9hdCBjKQogewor
ICAgIEFTU0VSVChjID49IDApOworICAgIEFTU0VSVChjIDw9IDEpOworCiAgICAgaWYgKGMgPCAw
LjAwMzEzMDhmKQogICAgICAgICByZXR1cm4gMTIuOTJmICogYzsKIAogICAgIHJldHVybiBjbGFt
cFRvPGZsb2F0PigxLjA1NWYgKiBzdGQ6OnBvdyhjLCAxLjBmIC8gMi40ZikgLSAwLjA1NWYsIDAs
IDEpOwogfQogCi1mbG9hdCByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGZsb2F0IGMpCitmbG9h
dCByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50Q2xhbXBpbmcoZmxvYXQgYykKIHsKKyAgICBBU1NF
UlQoYyA+PSAwKTsKKyAgICBBU1NFUlQoYyA8PSAxKTsKKyAgICAKICAgICBpZiAoYyA8PSAwLjA0
MDQ1ZikKICAgICAgICAgcmV0dXJuIGMgLyAxMi45MmY7CiAKICAgICByZXR1cm4gY2xhbXBUbzxm
bG9hdD4oc3RkOjpwb3coKGMgKyAwLjA1NWYpIC8gMS4wNTVmLCAyLjRmKSwgMCwgMSk7CiB9CiAK
K2Zsb2F0IGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnROb25DbGFtcGluZyhmbG9hdCBjKQorewor
ICAgIGZsb2F0IHNpZ24gPSBjID4gMCA/IDEuMGYgOiAtMS4wZjsKKyAgICBjID0gc3RkOjphYnMo
Yyk7CisKKyAgICBpZiAoYyA8IDAuMDAzMTMwOGYpCisgICAgICAgIHJldHVybiAxMi45MmYgKiBj
ICogc2lnbjsKKworICAgIHJldHVybiAoMS4wNTVmICogc3RkOjpwb3coYywgMS4wZiAvIDIuNGYp
IC0gMC4wNTVmKSAqIHNpZ247Cit9CisKK2Zsb2F0IHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnRO
b25DbGFtcGluZyhmbG9hdCBjKQoreworICAgIGZsb2F0IHNpZ24gPSBjID4gMCA/IDEuMGYgOiAt
MS4wZjsKKyAgICBjID0gc3RkOjphYnMoYyk7CisKKyAgICBpZiAoYyA8PSAwLjA0MDQ1ZikKKyAg
ICAgICAgcmV0dXJuIGMgLyAxMi45MmYgKiBzaWduOworCisgICAgcmV0dXJuIHN0ZDo6cG93KChj
ICsgMC4wNTVmKSAvIDEuMDU1ZiwgMi40ZikgKiBzaWduOworfQorCiBMaW5lYXJTUkdCQTxmbG9h
dD4gdG9MaW5lYXJTUkdCQShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQogewogICAgIHJldHVy
biB7Ci0gICAgICAgIHJnYlRvTGluZWFyQ29sb3JDb21wb25lbnQoY29sb3IucmVkKSwKLSAgICAg
ICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudChjb2xvci5ncmVlbiksCi0gICAgICAgIHJnYlRv
TGluZWFyQ29sb3JDb21wb25lbnQoY29sb3IuYmx1ZSksCisgICAgICAgIHJnYlRvTGluZWFyQ29s
b3JDb21wb25lbnRDbGFtcGluZyhjb2xvci5yZWQpLAorICAgICAgICByZ2JUb0xpbmVhckNvbG9y
Q29tcG9uZW50Q2xhbXBpbmcoY29sb3IuZ3JlZW4pLAorICAgICAgICByZ2JUb0xpbmVhckNvbG9y
Q29tcG9uZW50Q2xhbXBpbmcoY29sb3IuYmx1ZSksCisgICAgICAgIGNvbG9yLmFscGhhCisgICAg
fTsKK30KKworTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9MaW5lYXJFeHRlbmRlZFNSR0JB
KGNvbnN0IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICByZXR1cm4geworICAg
ICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50Tm9uQ2xhbXBpbmcoY29sb3IucmVkKSwKKyAg
ICAgICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudE5vbkNsYW1waW5nKGNvbG9yLmdyZWVuKSwK
KyAgICAgICAgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudE5vbkNsYW1waW5nKGNvbG9yLmJsdWUp
LAogICAgICAgICBjb2xvci5hbHBoYQogICAgIH07CiB9CkBAIC02MSw5ICsxNDMsMTkgQEAgTGlu
ZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgUwogU1JHQkE8ZmxvYXQ+IHRvU1JH
QkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICByZXR1cm4gewotICAg
ICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGNvbG9yLnJlZCksCi0gICAgICAgIGxpbmVh
clRvUkdCQ29sb3JDb21wb25lbnQoY29sb3IuZ3JlZW4pLAotICAgICAgICBsaW5lYXJUb1JHQkNv
bG9yQ29tcG9uZW50KGNvbG9yLmJsdWUpLAorICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9u
ZW50Q2xhbXBpbmcoY29sb3IucmVkKSwKKyAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVu
dENsYW1waW5nKGNvbG9yLmdyZWVuKSwKKyAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVu
dENsYW1waW5nKGNvbG9yLmJsdWUpLAorICAgICAgICBjb2xvci5hbHBoYQorICAgIH07Cit9CisK
K0V4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvRXh0ZW5kZWRTUkdCQShjb25zdCBMaW5lYXJFeHRlbmRl
ZFNSR0JBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgbGluZWFyVG9S
R0JDb2xvckNvbXBvbmVudE5vbkNsYW1waW5nKGNvbG9yLnJlZCksCisgICAgICAgIGxpbmVhclRv
UkdCQ29sb3JDb21wb25lbnROb25DbGFtcGluZyhjb2xvci5ncmVlbiksCisgICAgICAgIGxpbmVh
clRvUkdCQ29sb3JDb21wb25lbnROb25DbGFtcGluZyhjb2xvci5ibHVlKSwKICAgICAgICAgY29s
b3IuYWxwaGEKICAgICB9OwogfQpAQCAtNzEsOSArMTYzLDkgQEAgU1JHQkE8ZmxvYXQ+IHRvU1JH
QkEoY29uc3QgTGluZWFyU1JHQkE8ZgogTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRp
c3BsYXlQMyhjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICByZXR1cm4gewot
ICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGNvbG9yLnJlZCksCi0gICAgICAgIHJn
YlRvTGluZWFyQ29sb3JDb21wb25lbnQoY29sb3IuZ3JlZW4pLAotICAgICAgICByZ2JUb0xpbmVh
ckNvbG9yQ29tcG9uZW50KGNvbG9yLmJsdWUpLAorICAgICAgICByZ2JUb0xpbmVhckNvbG9yQ29t
cG9uZW50Q2xhbXBpbmcoY29sb3IucmVkKSwKKyAgICAgICAgcmdiVG9MaW5lYXJDb2xvckNvbXBv
bmVudENsYW1waW5nKGNvbG9yLmdyZWVuKSwKKyAgICAgICAgcmdiVG9MaW5lYXJDb2xvckNvbXBv
bmVudENsYW1waW5nKGNvbG9yLmJsdWUpLAogICAgICAgICBjb2xvci5hbHBoYQogICAgIH07CiB9
CkBAIC04MSw3OCArMTczLDUyIEBAIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNw
bGF5UDMKIERpc3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgTGluZWFyRGlzcGxheVAz
PGZsb2F0PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIHsKLSAgICAgICAgbGluZWFyVG9SR0JDb2xv
ckNvbXBvbmVudChjb2xvci5yZWQpLAotICAgICAgICBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50
KGNvbG9yLmdyZWVuKSwKLSAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChjb2xvci5i
bHVlKSwKKyAgICAgICAgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudENsYW1waW5nKGNvbG9yLnJl
ZCksCisgICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnRDbGFtcGluZyhjb2xvci5ncmVl
biksCisgICAgICAgIGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnRDbGFtcGluZyhjb2xvci5ibHVl
KSwKICAgICAgICAgY29sb3IuYWxwaGEKICAgICB9OwogfQogCiBMaW5lYXJTUkdCQTxmbG9hdD4g
dG9MaW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgLy8gaHR0cHM6
Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU1JHQgotICAgIC8vIGh0dHA6Ly93d3cuYnJ1Y2VsaW5k
Ymxvb20uY29tL2luZGV4Lmh0bWw/RXFuX1JHQl9YWVpfTWF0cml4Lmh0bWwKLSAgICBjb25zdGV4
cHIgQ29sb3JNYXRyaXg8MywgMz4geHl6VG9MaW5lYXJTUkdCTWF0cml4IHsKLSAgICAgICAgIDMu
MjQwNDU0MmYsIC0xLjUzNzEzODVmLCAtMC40OTg1MzE0ZiwKLSAgICAgICAgLTAuOTY5MjY2MGYs
ICAxLjg3NjAxMDhmLCAgMC4wNDE1NTYwZiwKLSAgICAgICAgIDAuMDU1NjQzNGYsIC0wLjIwNDAy
NTlmLCAgMS4wNTcyMjUyZgotICAgIH07CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGNsYW1w
IHRvIDAtMSB2YWx1ZXMuCiAgICAgcmV0dXJuIGFzTGluZWFyU1JHQkEoeHl6VG9MaW5lYXJTUkdC
TWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9y
KSkpOwogfQogCiBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+JiBj
b2xvcikKIHsKLSAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TUkdCCi0gICAg
Ly8gaHR0cDovL3d3dy5icnVjZWxpbmRibG9vbS5jb20vaW5kZXguaHRtbD9FcW5fUkdCX1hZWl9N
YXRyaXguaHRtbAotICAgIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBsaW5lYXJTUkdCVG9Y
WVpNYXRyaXggewotICAgICAgICAwLjQxMjQ1NjRmLCAgMC4zNTc1NzYxZiwgIDAuMTgwNDM3NWYs
Ci0gICAgICAgIDAuMjEyNjcyOWYsICAwLjcxNTE1MjJmLCAgMC4wNzIxNzUwZiwKLSAgICAgICAg
MC4wMTkzMzM5ZiwgIDAuMTE5MTkyMGYsICAwLjk1MDMwNDFmCi0gICAgfTsKKyAgICByZXR1cm4g
YXNYWVpBKGxpbmVhclNSR0JUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhh
c0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKK30KKworTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9h
dD4gdG9MaW5lYXJFeHRlbmRlZFNSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAg
ICByZXR1cm4gYXNMaW5lYXJFeHRlbmRlZFNSR0JBKHh5elRvTGluZWFyU1JHQk1hdHJpeC50cmFu
c2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKK30KKwor
WFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+JiBjb2xv
cikKK3sKICAgICByZXR1cm4gYXNYWVpBKGxpbmVhclNSR0JUb1hZWk1hdHJpeC50cmFuc2Zvcm1l
ZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAogTGluZWFy
RGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29s
b3IpCiB7Ci0gICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci8jY29sb3It
Y29udmVyc2lvbi1jb2RlCi0gICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IHh5elRvTGlu
ZWFyRGlzcGxheVAzTWF0cml4IHsKLSAgICAgICAgIDIuNDkzNDk2OTExOTQxNDI1ZiwgIC0wLjkz
MTM4MzYxNzkxOTEyMzlmLCAtMC40MDI3MTA3ODQ0NTA3MTY4ZiwKLSAgICAgICAgLTAuODI5NDg4
OTY5NTYxNTc0N2YsICAxLjc2MjY2NDA2MDMxODM0NjNmLCAgMC4wMjM2MjQ2ODU4NDE5NDM2ZiwK
LSAgICAgICAgIDAuMDM1ODQ1ODMwMjQzNzg0NWYsIC0wLjA3NjE3MjM4OTI2ODA0MThmLCAgMC45
NTY4ODQ1MjQwMDc2ODcyZgotICAgIH07CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGNsYW1w
IHRvIDAtMSB2YWx1ZXMuCiAgICAgcmV0dXJuIGFzTGluZWFyRGlzcGxheVAzKHh5elRvTGluZWFy
RGlzcGxheVAzTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25l
bnRzKGNvbG9yKSkpOwogfQogCiBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyRGlzcGxh
eVAzPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nz
cy1jb2xvci8jY29sb3ItY29udmVyc2lvbi1jb2RlCi0gICAgY29uc3RleHByIENvbG9yTWF0cml4
PDMsIDM+IGxpbmVhckRpc3BsYXlQM1RvWFlaTWF0cml4IHsKLSAgICAgICAgMC40ODY1NzA5NDg2
NDgyMTYyZiwgMC4yNjU2Njc2OTMxNjkwOTMxZiwgMC4xOTgyMTcyODUyMzQzNjNmLAotICAgICAg
ICAwLjIyODk3NDU2NDA2OTc0ODhmLCAwLjY5MTczODUyMTgzNjUwNjRmLCAwLjA3OTI4NjkxNDA5
Mzc0NWYsCi0gICAgICAgIDAuMGYsICAgICAgICAgICAgICAgIDAuMDQ1MTEzMzgxODU4OTAyNmYs
IDEuMDQzOTQ0MzY4OTAwOTc2ZgotICAgIH07CiAgICAgcmV0dXJuIGFzWFlaQShsaW5lYXJEaXNw
bGF5UDNUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9u
ZW50cyhjb2xvcikpKTsKIH0KIAogc3RhdGljIFhZWkE8ZmxvYXQ+IGNvbnZlcnRGcm9tRDUwV2hp
dGVQb2ludFRvRDY1V2hpdGVQb2ludChjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAg
Ly8gaHR0cDovL3d3dy5icnVjZWxpbmRibG9vbS5jb20vaW5kZXguaHRtbD9FcW5fQ2hyb21BZGFw
dC5odG1sCi0gICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IEQ1MFRvRDY1TWF0cml4IHsK
LSAgICAgICAgIDAuOTU1NTc2NmYsIC0wLjAyMzAzOTNmLCAwLjA2MzE2MzZmLAotICAgICAgICAt
MC4wMjgyODk1ZiwgIDEuMDA5OTQxNmYsIDAuMDIxMDA3N2YsCi0gICAgICAgICAwLjAxMjI5ODJm
LCAtMC4wMjA0ODMwZiwgMS4zMjk5MDk4ZgotICAgIH07CiAgICAgcmV0dXJuIGFzWFlaQShENTBU
b0Q2NU1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhj
b2xvcikpKTsKIH0KIAogc3RhdGljIFhZWkE8ZmxvYXQ+IGNvbnZlcnRGcm9tRDY1V2hpdGVQb2lu
dFRvRDUwV2hpdGVQb2ludChjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgLy8gaHR0
cDovL3d3dy5icnVjZWxpbmRibG9vbS5jb20vaW5kZXguaHRtbD9FcW5fQ2hyb21BZGFwdC5odG1s
Ci0gICAgY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IEQ2NVRvRDUwTWF0cml4IHsKLSAgICAg
ICAgIDEuMDQ3ODExMmYsIDAuMDIyODg2NmYsIC0wLjA1MDEyNzBmLAotICAgICAgICAgMC4wMjk1
NDI0ZiwgMC45OTA0ODQ0ZiwgLTAuMDE3MDQ5MWYsCi0gICAgICAgIC0wLjAwOTIzNDVmLCAwLjAx
NTA0MzZmLCAgMC43NTIxMzE2ZgotICAgIH07CiAgICAgcmV0dXJuIGFzWFlaQShENjVUb0Q1ME1h
dHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikp
KTsKIH0KIApAQCAtMzU4LDIxICs0MjQsMzUgQEAgQ01ZS0E8ZmxvYXQ+IHRvQ01ZS0EoY29uc3Qg
U1JHQkE8ZmxvYXQ+JgogCiBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBj
b2xvcikKIHsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgbm90IHBlcmZvcm0g
dGhlIGNsYW1waW5nIGRvbmUgaW4gdG9MaW5lYXJTUkdCQShTUkdCQSkuCiAgICAgcmV0dXJuIHRv
WFlaQSh0b0xpbmVhclNSR0JBKGNvbG9yKSk7CiB9CiAKIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNv
bnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKIHsKKyAgICAvLyBGSVhNRTogSWYgdG9MaW5lYXJTUkdC
QShYWVpBKSBpcyB1cGRhdGVkIHRvIGNsYW1wLCB0aGlzIHNob3VsZCBhdm9pZCBjYWxsaW5nIGl0
LgogICAgIHJldHVybiB0b1NSR0JBKHRvTGluZWFyU1JHQkEoY29sb3IpKTsKIH0KIAorWFlaQTxm
bG9hdD4gdG9YWVpBKGNvbnN0IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAgICBy
ZXR1cm4gdG9YWVpBKHRvTGluZWFyRXh0ZW5kZWRTUkdCQShjb2xvcikpOworfQorCitFeHRlbmRl
ZFNSR0JBPGZsb2F0PiB0b0V4dGVuZGVkU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQor
eworICAgIHJldHVybiB0b0V4dGVuZGVkU1JHQkEodG9MaW5lYXJFeHRlbmRlZFNSR0JBKGNvbG9y
KSk7Cit9CisKIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xv
cikKIHsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgbm90IHBlcmZvcm0gdGhl
IGNsYW1waW5nIGRvbmUgaW4gdG9MaW5lYXJEaXNwbGF5UDMoRGlzcGxheVAzKS4KICAgICByZXR1
cm4gdG9YWVpBKHRvTGluZWFyRGlzcGxheVAzKGNvbG9yKSk7CiB9CiAKIERpc3BsYXlQMzxmbG9h
dD4gdG9EaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQogeworICAgIC8vIEZJWE1F
OiBJZiB0b0xpbmVhckRpc3BsYXlQMyhYWVpBKSBpcyB1cGRhdGVkIHRvIGNsYW1wLCB0aGlzIHNo
b3VsZCBhdm9pZCBjYWxsaW5nIGl0LgogICAgIHJldHVybiB0b0Rpc3BsYXlQMyh0b0xpbmVhckRp
c3BsYXlQMyhjb2xvcikpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbnZlcnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAkocmV2aXNpb24gMjcxNTU4KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDggKzMwLDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFRoZXNl
IGFyZSB0aGUgc3RhbmRhcmQgc1JHQiA8LT4gTGluZWFyUkdCIC8gRGlzcGxheVAzIDwtPiBMaW5l
YXJEaXNwbGF5UDMgY29udmVyc2lvbiBmdW5jdGlvbnMgKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL1NSR0IpLgotZmxvYXQgbGluZWFyVG9SR0JDb2xvckNvbXBvbmVudChmbG9hdCk7Ci1m
bG9hdCByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50KGZsb2F0KTsKK2Zsb2F0IGxpbmVhclRvUkdC
Q29sb3JDb21wb25lbnRDbGFtcGluZyhmbG9hdCk7CitmbG9hdCByZ2JUb0xpbmVhckNvbG9yQ29t
cG9uZW50Q2xhbXBpbmcoZmxvYXQpOworCitmbG9hdCBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50
Tm9uQ2xhbXBpbmcoZmxvYXQpOworZmxvYXQgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudE5vbkNs
YW1waW5nKGZsb2F0KTsKIAogCiAvLyBBbGwgY29sb3IgdHlwZXMgbXVzdCBhdCBsZWFzdCBpbXBs
ZW1lbnQgdGhlIGZvbGxvd2luZyBjb252ZXJzaW9ucyB0byBhbmQgZnJvbSB0aGUgWFlaQSBjb2xv
ciBzcGFjZToKQEAgLTUwLDEyICs1MywyNCBAQCBXRUJDT1JFX0VYUE9SVCBMaW5lYXJTUkdCQTxm
bG9hdD4gdG9MaW5lCiBXRUJDT1JFX0VYUE9SVCBIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgU1JH
QkE8ZmxvYXQ+Jik7CiBXRUJDT1JFX0VYUE9SVCBDTVlLQTxmbG9hdD4gdG9DTVlLQShjb25zdCBT
UkdCQTxmbG9hdD4mKTsKIAorLy8gRXh0ZW5kZWRTUkdCQQorV0VCQ09SRV9FWFBPUlQgWFlaQTxm
bG9hdD4gdG9YWVpBKGNvbnN0IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9S
VCBFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0V4dGVuZGVkU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4m
KTsKKy8vIEFkZGl0aW9ucworV0VCQ09SRV9FWFBPUlQgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9h
dD4gdG9MaW5lYXJFeHRlbmRlZFNSR0JBKGNvbnN0IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+Jik7CisK
IC8vIExpbmVhclNSR0JBCiBXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3Qg
TGluZWFyU1JHQkE8ZmxvYXQ+Jik7CiBXRUJDT1JFX0VYUE9SVCBMaW5lYXJTUkdCQTxmbG9hdD4g
dG9MaW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYpOwogLy8gQWRkaXRpb25zCiBXRUJDT1JF
X0VYUE9SVCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBMaW5lYXJTUkdCQTxmbG9hdD4mKTsK
IAorLy8gTGluZWFyRXh0ZW5kZWRTUkdCQQorV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9Y
WVpBKGNvbnN0IExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBM
aW5lYXJFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0xpbmVhckV4dGVuZGVkU1JHQkEoY29uc3QgWFla
QTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucworV0VCQ09SRV9FWFBPUlQgRXh0ZW5kZWRTUkdCQTxm
bG9hdD4gdG9FeHRlbmRlZFNSR0JBKGNvbnN0IExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+Jik7
CisKIAogLy8gRGlzcGxheVAzCiBXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29u
c3QgRGlzcGxheVAzPGZsb2F0PiYpOwpAQCAtMTAyLDcgKzExNyw5IEBAIFdFQkNPUkVfRVhQT1JU
IFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnMKIC8vIElkZW50aXR5IGNvbnZlcnNpb25zICh1c2Vm
dWwgZm9yIGdlbmVyaWMgY29udGV4dHMpLgogCiBjb25zdGV4cHIgU1JHQkE8ZmxvYXQ+IHRvU1JH
QkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KK2NvbnN0ZXhw
ciBFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0V4dGVuZGVkU1JHQkEoY29uc3QgRXh0ZW5kZWRTUkdC
QTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29uc3RleHByIExpbmVhclNSR0JB
PGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0PiYgY29sb3IpIHsg
cmV0dXJuIGNvbG9yOyB9Citjb25zdGV4cHIgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9M
aW5lYXJFeHRlbmRlZFNSR0JBKGNvbnN0IExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+JiBjb2xv
cikgeyByZXR1cm4gY29sb3I7IH0KIGNvbnN0ZXhwciBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxh
eVAzKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29u
c3RleHByIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3QgTGlu
ZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIg
TGFiPGZsb2F0PiB0b0xhYihjb25zdCBMYWI8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7
IH0KQEAgLTEyMiwxMSArMTM5LDIxIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0
PiB0b1NSR0IKICAgICByZXR1cm4gdG9TUkdCQSh0b1hZWkEoY29sb3IpKTsKIH0KIAordGVtcGxh
dGU8dHlwZW5hbWUgVD4gRXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9FeHRlbmRlZFNSR0JBKGNvbnN0
IFQmIGNvbG9yKQoreworICAgIHJldHVybiB0b0V4dGVuZGVkU1JHQkEodG9YWVpBKGNvbG9yKSk7
Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNS
R0JBKGNvbnN0IFQmIGNvbG9yKQogewogICAgIHJldHVybiB0b0xpbmVhclNSR0JBKHRvWFlaQShj
b2xvcikpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMaW5lYXJFeHRlbmRlZFNSR0JBPGZs
b2F0PiB0b0xpbmVhckV4dGVuZGVkU1JHQkEoY29uc3QgVCYgY29sb3IpCit7CisgICAgcmV0dXJu
IHRvTGluZWFyRXh0ZW5kZWRTUkdCQSh0b1hZWkEoY29sb3IpKTsKK30KKwogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBUJiBjb2xvcikKIHsK
ICAgICByZXR1cm4gdG9EaXNwbGF5UDModG9YWVpBKGNvbG9yKSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCShyZXZpc2lvbiAyNzE1NTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExNSw2ICsxMTUsNDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3Rl
eHByIGJvb2wgb3BlcgogICAgIHJldHVybiAhKGEgPT0gYik7CiB9CiAKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBFeHRlbmRlZFNSR0JBIDogQ29sb3JXaXRoQWxwaGFIZWxwZXI8RXh0ZW5k
ZWRTUkdCQTxUPj4geworICAgIHVzaW5nIENvbXBvbmVudFR5cGUgPSBUOworCisgICAgY29uc3Rl
eHByIEV4dGVuZGVkU1JHQkEoVCByZWQsIFQgZ3JlZW4sIFQgYmx1ZSwgVCBhbHBoYSA9IENvbXBv
bmVudFRyYWl0czxUPjo6bWF4VmFsdWUpCisgICAgICAgIDogcmVkIHsgcmVkIH0KKyAgICAgICAg
LCBncmVlbiB7IGdyZWVuIH0KKyAgICAgICAgLCBibHVlIHsgYmx1ZSB9CisgICAgICAgICwgYWxw
aGEgeyBhbHBoYSB9CisgICAgeworICAgIH0KKworICAgIGNvbnN0ZXhwciBFeHRlbmRlZFNSR0JB
KCkKKyAgICAgICAgOiBFeHRlbmRlZFNSR0JBIHsgMCwgMCwgMCwgMCB9CisgICAgeworICAgIH0K
KworICAgIFQgcmVkOworICAgIFQgZ3JlZW47CisgICAgVCBibHVlOworICAgIFQgYWxwaGE7Cit9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IGFz
Q29sb3JDb21wb25lbnRzKGNvbnN0IEV4dGVuZGVkU1JHQkE8VD4mIGMpCit7CisgICAgcmV0dXJu
IHsgYy5yZWQsIGMuZ3JlZW4sIGMuYmx1ZSwgYy5hbHBoYSB9OworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBjb25zdGV4cHIgRXh0ZW5kZWRTUkdCQTxUPiBhc0V4dGVuZGVkU1JHQkEoY29uc3Qg
Q29sb3JDb21wb25lbnRzPFQ+JiBjKQoreworICAgIHJldHVybiB7IGNbMF0sIGNbMV0sIGNbMl0s
IGNbM10gfTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBFeHRlbmRlZFNSR0JBPFQ+JiBhLCBjb25zdCBFeHRlbmRlZFNSR0JBPFQ+JiBi
KQoreworICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhhKSA9PSBhc0NvbG9yQ29tcG9uZW50
cyhiKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBFeHRlbmRlZFNSR0JBPFQ+JiBhLCBjb25zdCBFeHRlbmRlZFNSR0JBPFQ+JiBiKQor
eworICAgIHJldHVybiAhKGEgPT0gYik7Cit9CisKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IExpbmVhclNSR0JBIDogQ29sb3JXaXRoQWxwaGFIZWxwZXI8TGluZWFyU1JHQkE8VD4+IHsK
ICAgICB1c2luZyBDb21wb25lbnRUeXBlID0gVDsKQEAgLTE1OSw2ICsyMDEsNDggQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGJvb2wgb3BlcgogICAgIHJldHVybiAhKGEgPT0gYik7
CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMaW5lYXJFeHRlbmRlZFNSR0JBIDog
Q29sb3JXaXRoQWxwaGFIZWxwZXI8TGluZWFyRXh0ZW5kZWRTUkdCQTxUPj4geworICAgIHVzaW5n
IENvbXBvbmVudFR5cGUgPSBUOworCisgICAgY29uc3RleHByIExpbmVhckV4dGVuZGVkU1JHQkEo
VCByZWQsIFQgZ3JlZW4sIFQgYmx1ZSwgVCBhbHBoYSA9IENvbXBvbmVudFRyYWl0czxUPjo6bWF4
VmFsdWUpCisgICAgICAgIDogcmVkIHsgcmVkIH0KKyAgICAgICAgLCBncmVlbiB7IGdyZWVuIH0K
KyAgICAgICAgLCBibHVlIHsgYmx1ZSB9CisgICAgICAgICwgYWxwaGEgeyBhbHBoYSB9CisgICAg
eworICAgIH0KKworICAgIGNvbnN0ZXhwciBMaW5lYXJFeHRlbmRlZFNSR0JBKCkKKyAgICAgICAg
OiBMaW5lYXJFeHRlbmRlZFNSR0JBIHsgMCwgMCwgMCwgMCB9CisgICAgeworICAgIH0KKworICAg
IFQgcmVkOworICAgIFQgZ3JlZW47CisgICAgVCBibHVlOworICAgIFQgYWxwaGE7Cit9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IGFzQ29sb3JD
b21wb25lbnRzKGNvbnN0IExpbmVhckV4dGVuZGVkU1JHQkE8VD4mIGMpCit7CisgICAgcmV0dXJu
IHsgYy5yZWQsIGMuZ3JlZW4sIGMuYmx1ZSwgYy5hbHBoYSB9OworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBjb25zdGV4cHIgTGluZWFyRXh0ZW5kZWRTUkdCQTxUPiBhc0xpbmVhckV4dGVuZGVk
U1JHQkEoY29uc3QgQ29sb3JDb21wb25lbnRzPFQ+JiBjKQoreworICAgIHJldHVybiB7IGNbMF0s
IGNbMV0sIGNbMl0sIGNbM10gfTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBMaW5lYXJFeHRlbmRlZFNSR0JBPFQ+JiBhLCBjb25zdCBM
aW5lYXJFeHRlbmRlZFNSR0JBPFQ+JiBiKQoreworICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50
cyhhKSA9PSBhc0NvbG9yQ29tcG9uZW50cyhiKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMaW5lYXJFeHRlbmRlZFNSR0JBPFQ+JiBh
LCBjb25zdCBMaW5lYXJFeHRlbmRlZFNSR0JBPFQ+JiBiKQoreworICAgIHJldHVybiAhKGEgPT0g
Yik7Cit9CisKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERpc3BsYXlQMyA6IENvbG9y
V2l0aEFscGhhSGVscGVyPERpc3BsYXlQMzxUPj4gewogICAgIHVzaW5nIENvbXBvbmVudFR5cGUg
PSBUOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAkocmV2aXNpb24g
MjcxNTU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb0JhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAg
dm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6dHJhbnNmb3JtQwogICAgICAgICAgICAgc3Rk
OjphcnJheTx1aW50OF90LCAyNTY+IGFycmF5OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IDI1NjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgZmxvYXQgY29sb3IgPSBpIC8g
MjU1LjBmOwotICAgICAgICAgICAgICAgIGNvbG9yID0gcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVu
dChjb2xvcik7CisgICAgICAgICAgICAgICAgY29sb3IgPSByZ2JUb0xpbmVhckNvbG9yQ29tcG9u
ZW50Q2xhbXBpbmcoY29sb3IpOwogICAgICAgICAgICAgICAgIGFycmF5W2ldID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4ocm91bmQoY29sb3IgKiAyNTUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHJldHVybiBhcnJheTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kOjp0cmFuc2Zvcm1DCiAgICAgICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1
Nj4gYXJyYXk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKysp
IHsKICAgICAgICAgICAgICAgICBmbG9hdCBjb2xvciA9IGkgLyAyNTUuMGY7Ci0gICAgICAgICAg
ICAgICAgY29sb3IgPSBsaW5lYXJUb1JHQkNvbG9yQ29tcG9uZW50KGNvbG9yKTsKKyAgICAgICAg
ICAgICAgICBjb2xvciA9IGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnRDbGFtcGluZyhjb2xvcik7
CiAgICAgICAgICAgICAgICAgYXJyYXlbaV0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pihyb3VuZChj
b2xvciAqIDI1NSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGFycmF5OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAJKHJldmlzaW9uIDI3MTU1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0NvbG9yQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsMTMgKzEwMiwxNiBAQCBzdGF0
aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25zdCBDb2xvCiAKICAgICAvLyBTb21lIENHIHBv
cnRzIGRvbid0IHN1cHBvcnQgYWxsIHRoZSBjb2xvciBzcGFjZXMgcmVxdWlyZWQgYW5kIHJldHVy
bgogICAgIC8vIHNSR0JDb2xvclNwYWNlUmVmKCkgZm9yIHVuc3VwcG9ydGVkIGNvbG9yIHNwYWNl
cy4gSW4gdGhvc2UgY2FzZXMsIHdlCi0gICAgLy8gbmVlZCB0byBlYWdlcmx5IGFuZCBwb3RlbnRp
YWxseSBsb3NzaWx5IGNvbnZlcnQgdGhlIGNvbG9yIGludG8gc1JHQgotICAgIC8vIG91cnNlbHZl
cyBiZWZvcmUgY3JlYXRpbmcgdGhlIENHQ29sb3JSZWYuCisgICAgLy8gbmVlZCB0byBlYWdlcmx5
IGNvbnZlcnQgdGhlIGNvbG9yIGludG8gZXh0ZW5kZWQgc1JHQiBvdXJzZWx2ZXMgYmVmb3JlCisg
ICAgLy8gY3JlYXRpbmcgdGhlIENHQ29sb3JSZWYuCisgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90
IGEgZ29vZCB3YXkgdG8gaW5kaWNhdGUgbGFjayBvZiBzdXBwb3J0LiBNYWtlIHRoaXMKKyAgICAv
LyBtb3JlIGV4cGxpY2l0LgogICAgIGlmIChjb2xvclNwYWNlICE9IENvbG9yU3BhY2U6OlNSR0Ig
JiYgY2dDb2xvclNwYWNlID09IHNSR0JDb2xvclNwYWNlUmVmKCkpIHsKLSAgICAgICAgYXV0byBj
b2xvckNvbnZlcnRlZFRvU1JHQkEgPSBjYWxsV2l0aENvbG9yVHlwZShjb21wb25lbnRzLCBjb2xv
clNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3IpIHsKLSAgICAgICAgICAgIHJldHVybiB0b1NS
R0JBKGNvbG9yKTsKKyAgICAgICAgYXV0byBjb2xvckNvbnZlcnRlZFRvRXh0ZW5kZWRTUkdCQSA9
IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2UsIFtdIChjb25zdCBhdXRv
JiBjb2xvcikgeworICAgICAgICAgICAgcmV0dXJuIHRvRXh0ZW5kZWRTUkdCQShjb2xvcik7CiAg
ICAgICAgIH0pOwotICAgICAgICBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3JD
b252ZXJ0ZWRUb1NSR0JBKTsKKyAgICAgICAgY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRz
KGNvbG9yQ29udmVydGVkVG9FeHRlbmRlZFNSR0JBKTsKKyAgICAgICAgY2dDb2xvclNwYWNlID0g
ZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOwogICAgIH0KIAogICAgIGF1dG8gW3IsIGcsIGIs
IGFdID0gY29tcG9uZW50czsKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2
aXNpb24gMjcxNTYzKQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDIxLTAxLTE3ICBTYW0gV2VpbmlnICA8d2Vp
bmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgZXhwbGljaXQgY2xhbXAgdG8gU1JHQiBm
b3IgTGFiIGNvbG9ycyBvbiBDRyBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IHdpZGUgY29sb3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDY4NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXSVBdIEFkZCBs
Y2ggdGVzdCBhcyB3ZWxsLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Y29sb3IvbGFiLTAwOC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sYWItMDA4Lmh0bWw6IEFkZGVkLgorICAgICAgICBBZGQg
dGVzdCBvdXRzaWRlIHRoZSBzUkdCIGdhbXV0IHVzaW5nIGNvbG9yKGRpc3BsYXktcDMgMCAxIDAp
IDwtPiBsYWIoODYuNjElIC0xMDYuNTYgMTAyLjg3KS4KKworMjAyMS0wMS0xMCAgU2FtIFdlaW5p
ZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBsYWIoKSwgbGNoKCksIGdy
YXkoKSBhbmQgY29sb3IobGFiIC4uLikgY29sb3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU2NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGVzdHMgdG8gdXNlIHJlY3RhbmdsZXMgcmF0
aGVyIHRoYW4gdGV4dCB0byBtYWtlIGFudGktYWxpYXNpbmcgZGlmZmVyZW5jZXMKKyAgICAgICAg
bm90IGNhdXNlIGZhaWx1cmVzLiBUaGVzZSBjaGFuZ2VzIHdpbGwgYmUgdXBzdHJlYW1lZCB0byB0
aGUgV2ViUGxhdGZvcm1UZXN0cy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWNvbG9yL2xhYi0wMDEtZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1jb2xvci9sYWItMDAxLmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwMi1leHBlY3RlZC5odG1sOgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xhYi0wMDIuaHRtbDoKKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sYWItMDAzLWV4cGVjdGVkLmh0bWw6Cisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwMy5odG1sOgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xhYi0wMDQtZXhwZWN0
ZWQuaHRtbDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sYWIt
MDA0Lmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFi
LTAwNS1leHBlY3RlZC5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWNvbG9yL2xhYi0wMDUuaHRtbDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1jb2xvci9sYWItMDA2LWV4cGVjdGVkLmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwNi5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWNvbG9yL2xhYi0wMDctZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sYWItMDA3Lmh0bWw6CisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGNoLTAwMS1leHBlY3RlZC5odG1sOgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xjaC0wMDEuaHRtbDoKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sY2gtMDAyLWV4cGVjdGVk
Lmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGNoLTAw
Mi5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xjaC0w
MDMtZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1j
b2xvci9sY2gtMDAzLmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Y29sb3IvbGNoLTAwNC1leHBlY3RlZC5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWNvbG9yL2xjaC0wMDQuaHRtbDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1jb2xvci9sY2gtMDA1LWV4cGVjdGVkLmh0bWw6CisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGNoLTAwNS5odG1sOgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xjaC0wMDYtZXhwZWN0ZWQuaHRtbDoKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sY2gtMDA2Lmh0bWw6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGNoLTAwNy1leHBlY3RlZC5o
dG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xjaC0wMDcu
aHRtbDoKKwogMjAyMS0wMS0xNCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW2Nzcy1zY3JvbGwtc25hcF0gc2Nyb2xsLXNuYXAtYWxpZ24gcGFyc2lu
ZyBpcyBpbmNvcnJlY3QvYmFja3dhcmRzCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwOC1leHBlY3RlZC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1jb2xvci9sYWItMDA4LWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xh
Yi0wMDgtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5DU1MgQ29sb3IgNDog
U3BlY2lmeWluZyBMYWIgYW5kIExDSDwvdGl0bGU+Cis8c3R5bGU+CisgICAgLnRlc3QgeyBiYWNr
Z3JvdW5kLWNvbG9yOiBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKTsgd2lkdGg6IDEyZW07IGhlaWdo
dDogMTJlbTsgfSAvKiBsYWIoODYuNjElIC0xMDYuNTYgMTAyLjg3KSBjb252ZXJ0ZWQgdG8gZGlz
cGxheS1QMyAqLworPC9zdHlsZT4KKzxib2R5PgorICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBz
ZWUgYSBzaW5nbGUgc3F1YXJlLCBhbmQgbm90IHR3byByZWN0YW5nbGVzIG9mIGRpZmZlcmVudCBj
b2xvcnMuPC9wPgorICAgIDxwIGNsYXNzPSJ0ZXN0Ij4gPC9wPgorPC9ib2R5PgpJbmRleDogTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xh
Yi0wMDguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwOC5odG1sCShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xv
ci9sYWItMDA4Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q1NTIENvbG9yIDQ6IFNwZWNp
ZnlpbmcgTGFiIGFuZCBMQ0g8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczov
L2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLTQvI3NwZWNpZnlpbmctbGFiLWxjaCI+Cis8bGlu
ayByZWw9Im1hdGNoIiBocmVmPSJsYWItMDA4LXJlZi5odG1sIj4KKzxtZXRhIG5hbWU9ImFzc2Vy
dCIgY29udGVudD0ibGFiKCkgb3V0c2lkZSB0aGUgc1JHQiBnYW11dCI+Cis8c3R5bGU+CisgICAg
LnRlc3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IHdpZHRoOiAxMmVtOyBoZWlnaHQ6IDZlbTsg
bWFyZ2luLXRvcDowfQorICAgIC5yZWYgeyBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcihkaXNwbGF5
LXAzIDAgMSAwKTsgd2lkdGg6IDEyZW07IGhlaWdodDogNmVtOyBtYXJnaW4tYm90dG9tOiAwOyB9
CisgICAgLnRlc3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsYWIoODYuNjElIC0xMDYuNTYgMTAyLjg3
KTsgfQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBz
aW5nbGUgc3F1YXJlLCBhbmQgbm90IHR3byByZWN0YW5nbGVzIG9mIGRpZmZlcmVudCBjb2xvcnMu
PC9wPgorICAgIDxwIGNsYXNzPSJyZWYiPiA8L3A+CisgICAgPHAgY2xhc3M9InRlc3QiPiA8L3A+
Cis8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417784</attachid>
            <date>2021-01-17 15:20:52 -0800</date>
            <delta_ts>2021-01-21 10:30:30 -0800</delta_ts>
            <desc>CoreGraphics Lab approach</desc>
            <filename>bug-220684-20210117152051.patch</filename>
            <type>text/plain</type>
            <size>6090</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzE1NjQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAxLTE3ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgZXhwbGljaXQgY2xhbXAgdG8gU1JHQiBmb3Ig
TGFiIGNvbG9ycyBvbiBDRyBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IHdpZGUgY29sb3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDY4NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3Jt
SGF2ZS5oOgorICAgICAgICBBZGQgSEFWRV9MQUJfU1VQUE9SVF9JTl9DT1JFX0dSQVBISUNTIHdo
aWNoIGluZGljYXRlcyB0aGF0IHRoZSBDb3JlR3JhcGhpY3MKKyAgICAgICAgb24gdGhlIHN5c3Rt
ZSBoYXMgcHJvcGVyIHN1cHBvcnQgZm9yIGNvbnZlcnNpb25zIHRvL2Zyb20gdGhlIExhYiBjb2xv
ciBzcGFjZQorICAgICAgICBhbmQgaGFzIGEgcmVzb2x1dGlvbiBmb3IgcmRhcjovL3Byb2JsZW0v
NTgzNjA0NTQuCisKIDIwMjEtMDEtMTcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgSlNDIEFQSSBjb25maWd1cmluZyBHQyBzaWduYWxzIGluIExpbnV4
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAkocmV2aXNpb24gMjcxNTY0KQorKysgU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1IYXZlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxOSwzICs4MTksMTIgQEAK
ICAgICB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01BWF9BTExPV0VE
ID49IDE0MDQwMCkKICNkZWZpbmUgSEFWRV9BVkNPTlRFTlRLRVlSRVFVRVNUX1BFTkRJTkdfUFJP
VEVDVElPTl9TVEFUVVMgMQogI2VuZGlmCisKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgXAorICAgIHx8ICgoUExBVEZPUk0o
SU9TKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDE0MDAwMCkgXAorICAgIHx8IChQTEFURk9STShXQVRDSE9TKSAmJiBfX1dB
VENIX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDcwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JN
KEFQUExFVFYpICYmIF9fVFZfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTQwMDAwKQorLy8g
UHJpb3IgdG8gdGhlc2UgcmVsZWFzZXMsIENvcmVHcmFwaGljcyBjb3VsZCBub3QgY29ycmVjdGx5
IGNvbnZlcnQgZnJvbSBMYWIgdG8gb3RoZXIgY29sb3Igc3BhY2VzCisvLyBkdWUgdG8gcmRhcjov
L3Byb2JsZW0vNTgzNjA0NTQuCisjZGVmaW5lIEhBVkVfTEFCX1NVUFBPUlRfSU5fQ09SRV9HUkFQ
SElDUyAxCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTU2NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIx
LTAxLTE3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
ZXhwbGljaXQgY2xhbXAgdG8gU1JHQiBmb3IgTGFiIGNvbG9ycyBvbiBDRyBwbGF0Zm9ybXMgdGhh
dCBzdXBwb3J0IHdpZGUgY29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMDY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFtXSVAgVGVzdCBmb3IgdGhlIGJvdHNdLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxhYkNv
bG9yU3BhY2VSZWYpOgorCiAyMDIxLTAxLTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCB0aGUgaW50ZXJuYWwgaU9TIGJ1
aWxkIGFmdGVyIHIyNzE1NTkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0NvbG9yU3BhY2VDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAkocmV2aXNpb24gMjcxNTY0KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODQsOCArODQsMTggQEAgQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9y
U3BhY2VSZWYoKQogCiBDR0NvbG9yU3BhY2VSZWYgbGFiQ29sb3JTcGFjZVJlZigpCiB7Ci0gICAg
Ly8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBjb252ZXJzaW9uIHRvIExhYiBvbiBzdXBwb3J0ZWQg
cGxhdGZvcm1zLgotICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgIHN0YXRpYyBD
R0NvbG9yU3BhY2VSZWYgbGFiQ29sb3JTcGFjZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyNpZiBIQVZF
KExBQl9TVVBQT1JUX0lOX0NPUkVfR1JBUEhJQ1MpCisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Q0dGbG9hdCBkNTBXaGl0ZVBvaW50W10geyAwLjk2NDIyZiwgMS4wZiwgMC44MjUyMWYgfTsKKyAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBDR0Zsb2F0IGxhYlJhbmdlW10geyAtMTI3LjUsIDEyNy41
LCAtMTI3LjUsIDEyNy41IH07CisgICAgICAgIGxhYkNvbG9yU3BhY2VSZWYgPSBDR0NvbG9yU3Bh
Y2VDcmVhdGVMYWIoZDUwV2hpdGVQb2ludCwgbnVsbHB0ciwgbGFiUmFuZ2UpOworI2Vsc2UKKyAg
ICAgICAgbGFiQ29sb3JTcGFjZVJlZiA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisjZW5kaWYKKyAg
ICB9KTsKKyAgICByZXR1cm4gbGFiQ29sb3JTcGFjZVJlZjsKIH0KIAogQ0dDb2xvclNwYWNlUmVm
IGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKQpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzE1NjQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDEtMTcgIFNhbSBX
ZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBleHBsaWNpdCBjbGFt
cCB0byBTUkdCIGZvciBMYWIgY29sb3JzIG9uIENHIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgd2lk
ZSBjb2xvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIwNjg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W1dJUF0gQWRkIGxjaCB0ZXN0IGFzIHdlbGwuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1jb2xvci9sYWItMDA4LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xhYi0wMDguaHRtbDogQWRkZWQuCisg
ICAgICAgIEFkZCB0ZXN0IG91dHNpZGUgdGhlIHNSR0IgZ2FtdXQgdXNpbmcgY29sb3IoZGlzcGxh
eS1wMyAwIDEgMCkgPC0+IGxhYig4Ni42MSUgLTEwNi41NiAxMDIuODcpLgorCiAyMDIxLTAxLTE0
ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3Nz
LXNjcm9sbC1zbmFwXSBzY3JvbGwtc25hcC1hbGlnbiBwYXJzaW5nIGlzIGluY29ycmVjdC9iYWNr
d2FyZHMKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1jb2xvci9sYWItMDA4LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xhYi0w
MDgtZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwOC1leHBlY3RlZC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkNTUyBDb2xvciA0OiBTcGVjaWZ5aW5nIExhYiBhbmQg
TENIPC90aXRsZT4KKzxzdHlsZT4KKyAgICAudGVzdCB7IGJhY2tncm91bmQtY29sb3I6IGNvbG9y
KGRpc3BsYXktcDMgMCAxIDApOyB3aWR0aDogMTJlbTsgaGVpZ2h0OiAxMmVtOyB9IC8qIGxhYig4
Ni42MSUgLTEwNi41NiAxMDIuODcpIGNvbnZlcnRlZCB0byBkaXNwbGF5LVAzICovCis8L3N0eWxl
PgorPGJvZHk+CisgICAgPHA+VGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIHNpbmdsZSBzcXVhcmUs
IGFuZCBub3QgdHdvIHJlY3RhbmdsZXMgb2YgZGlmZmVyZW50IGNvbG9ycy48L3A+CisgICAgPHAg
Y2xhc3M9InRlc3QiPiA8L3A+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwOC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1jb2xvci9sYWItMDA4Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xhYi0wMDguaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzx0aXRsZT5DU1MgQ29sb3IgNDogU3BlY2lmeWluZyBMYWIgYW5kIExDSDwv
dGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9j
c3MtY29sb3ItNC8jc3BlY2lmeWluZy1sYWItbGNoIj4KKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9
ImxhYi0wMDgtcmVmLmh0bWwiPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJsYWIoKSBv
dXRzaWRlIHRoZSBzUkdCIGdhbXV0Ij4KKzxzdHlsZT4KKyAgICAudGVzdCB7IGJhY2tncm91bmQt
Y29sb3I6IHJlZDsgd2lkdGg6IDEyZW07IGhlaWdodDogNmVtOyBtYXJnaW4tdG9wOjB9CisgICAg
LnJlZiB7IGJhY2tncm91bmQtY29sb3I6IGNvbG9yKGRpc3BsYXktcDMgMCAxIDApOyB3aWR0aDog
MTJlbTsgaGVpZ2h0OiA2ZW07IG1hcmdpbi1ib3R0b206IDA7IH0KKyAgICAudGVzdCB7IGJhY2tn
cm91bmQtY29sb3I6IGxhYig4Ni42MSUgLTEwNi41NiAxMDIuODcpOyB9Cis8L3N0eWxlPgorPGJv
ZHk+CisgICAgPHA+VGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIHNpbmdsZSBzcXVhcmUsIGFuZCBu
b3QgdHdvIHJlY3RhbmdsZXMgb2YgZGlmZmVyZW50IGNvbG9ycy48L3A+CisgICAgPHAgY2xhc3M9
InJlZiI+IDwvcD4KKyAgICA8cCBjbGFzcz0idGVzdCI+IDwvcD4KKzwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418059</attachid>
            <date>2021-01-21 10:30:32 -0800</date>
            <delta_ts>2021-01-21 13:46:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220684-20210121103031.patch</filename>
            <type>text/plain</type>
            <size>44384</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTY5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDIxLTAxLTIxICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgZXhwbGljaXQgY2xhbXAg
dG8gU1JHQiBmb3IgTGFiIGNvbG9ycyBvbiBDRyBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IHdpZGUg
Y29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MDY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRv
IGF2b2lkIGNsYW1waW5nIGRldmljZSBpbmRlcGVuZGVudCBjb2xvcnMgdG8gc1JHQiB3ZSBjb252
ZXJ0IGNvbG9ycyB3aXRob3V0IGEgZGlyZWN0CisgICAgICAgIENvcmVHcmFwaGljcyByZXByZXNl
bnRhdGlvbiB0byBFeHRlbmRlZFNSR0IgdG8gZW5zdXJlIHRoZSBmdWxsIGdhbXV0IGlzIHByZXNl
cnZlZC4KKworICAgICAgICBXaGlsZSBDb3JlR3JhcGhpY3MgZG9lcyBzdXBwb3J0IHRoZSBMYWIg
Y29sb3JzcGFjZSBvbiBzb21lIHN5c3RlbXMgKEJpZyBTdXIgYW5kIGxhdGVyKSwKKyAgICAgICAg
dG8gZW5zdXJlIGFsbCB2ZXJzaW9ucyBvZiBXZWJLaXQgY2FuIHN1cHBvcnQgd2lkZSBjb2xvciBM
YWIgdGhpcyBhcHByb2FjaCBwcm92aWRlcyB0aGUKKyAgICAgICAgbW9zdCBjb3ZlcmFnZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oOgorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgRXh0ZW5k
ZWRTUkdCQSBhbmQgTGluZWFyRXh0ZW5kZWRTUkdCQSBjb2xvciB0eXBlcy4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVh
a0NHQ29sb3IpOgorICAgICAgICBVcGRhdGUgZmFsbGJhY2sgY29udmVyc2lvbiB0byBjb252ZXJ0
IHRvIGFuIGV4dGVuZGVkIGNvbG9yIHNwYWNlIHRvIGF2b2lkIHByZW1hdHVyZQorICAgICAgICBj
bGFtcGluZy4KKwogMjAyMS0wMS0yMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgQWxsb3cgTWVkaWFTdHJlYW0gYW5kIG5vbiBNZWRpYVN0cmVhbSBiYWNrZWQg
dmlkZW9zIHRvIHBsYXkgdG9nZXRoZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gMjcxNjk3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsOCBAQCBzdGF0aWMgY29uc3RleHByIENvbG9yTWF0
cml4PDMsIDM+IEQ2NVRvCiAgICAgLTAuMDA5MjM0NWYsIDAuMDE1MDQzNmYsICAwLjc1MjEzMTZm
CiB9OwogCisvLyBHYW1tYSBjb252ZXJzaW9ucy4KKwogZmxvYXQgbGluZWFyVG9SR0JDb2xvckNv
bXBvbmVudENsYW1waW5nKGZsb2F0IGMpCiB7CiAgICAgaWYgKGMgPCAwLjAwMzEzMDhmKQpAQCAt
OTIsNyArOTQsMjcgQEAgZmxvYXQgcmdiVG9MaW5lYXJDb2xvckNvbXBvbmVudENsYW1waW5nKAog
ICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihzdGQ6OnBvdygoYyArIDAuMDU1ZikgLyAxLjA1NWYs
IDIuNGYpLCAwLCAxKTsKIH0KIAotLy8gR2FtbWEgY29udmVyc2lvbnMuCitmbG9hdCBsaW5lYXJU
b1JHQkNvbG9yQ29tcG9uZW50Tm9uQ2xhbXBpbmcoZmxvYXQgYykKK3sKKyAgICBmbG9hdCBzaWdu
ID0gYyA+IDAgPyAxLjBmIDogLTEuMGY7CisgICAgYyA9IHN0ZDo6YWJzKGMpOworCisgICAgaWYg
KGMgPCAwLjAwMzEzMDhmKQorICAgICAgICByZXR1cm4gMTIuOTJmICogYyAqIHNpZ247CisKKyAg
ICByZXR1cm4gKDEuMDU1ZiAqIHN0ZDo6cG93KGMsIDEuMGYgLyAyLjRmKSAtIDAuMDU1ZikgKiBz
aWduOworfQorCitmbG9hdCByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50Tm9uQ2xhbXBpbmcoZmxv
YXQgYykKK3sKKyAgICBmbG9hdCBzaWduID0gYyA+IDAgPyAxLjBmIDogLTEuMGY7CisgICAgYyA9
IHN0ZDo6YWJzKGMpOworCisgICAgaWYgKGMgPD0gMC4wNDA0NWYpCisgICAgICAgIHJldHVybiBj
IC8gMTIuOTJmICogc2lnbjsKKworICAgIHJldHVybiBzdGQ6OnBvdygoYyArIDAuMDU1ZikgLyAx
LjA1NWYsIDIuNGYpICogc2lnbjsKK30KIAogTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JH
QkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKQEAgLTEwNCw2ICsxMjYsMTYgQEAgTGlu
ZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29uc3QgUwogICAgIH07CiB9CiAKK0xpbmVh
ckV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvTGluZWFyRXh0ZW5kZWRTUkdCQShjb25zdCBFeHRlbmRl
ZFNSR0JBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgcmdiVG9MaW5l
YXJDb2xvckNvbXBvbmVudE5vbkNsYW1waW5nKGNvbG9yLnJlZCksCisgICAgICAgIHJnYlRvTGlu
ZWFyQ29sb3JDb21wb25lbnROb25DbGFtcGluZyhjb2xvci5ncmVlbiksCisgICAgICAgIHJnYlRv
TGluZWFyQ29sb3JDb21wb25lbnROb25DbGFtcGluZyhjb2xvci5ibHVlKSwKKyAgICAgICAgY29s
b3IuYWxwaGEKKyAgICB9OworfQorCiBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBMaW5lYXJT
UkdCQTxmbG9hdD4mIGNvbG9yKQogewogICAgIHJldHVybiB7CkBAIC0xMTQsNiArMTQ2LDE2IEBA
IFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnN0IExpbmVhclNSR0JBPGYKICAgICB9OwogfQogCitF
eHRlbmRlZFNSR0JBPGZsb2F0PiB0b0V4dGVuZGVkU1JHQkEoY29uc3QgTGluZWFyRXh0ZW5kZWRT
UkdCQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB7CisgICAgICAgIGxpbmVhclRvUkdC
Q29sb3JDb21wb25lbnROb25DbGFtcGluZyhjb2xvci5yZWQpLAorICAgICAgICBsaW5lYXJUb1JH
QkNvbG9yQ29tcG9uZW50Tm9uQ2xhbXBpbmcoY29sb3IuZ3JlZW4pLAorICAgICAgICBsaW5lYXJU
b1JHQkNvbG9yQ29tcG9uZW50Tm9uQ2xhbXBpbmcoY29sb3IuYmx1ZSksCisgICAgICAgIGNvbG9y
LmFscGhhCisgICAgfTsKK30KKwogTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3Bs
YXlQMyhjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICByZXR1cm4gewpAQCAt
MTQ2LDYgKzE4OCwxNiBAQCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8Zmxv
CiAgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8WFlaQTxm
bG9hdD4+KGxpbmVhclNSR0JUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhh
c0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAorTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9h
dD4gdG9MaW5lYXJFeHRlbmRlZFNSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK3sKKyAg
ICByZXR1cm4gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxMaW5lYXJFeHRl
bmRlZFNSR0JBPGZsb2F0Pj4oeHl6VG9MaW5lYXJTUkdCTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JD
b21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOworfQorCitYWVpBPGZsb2F0PiB0
b1hZWkEoY29uc3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJl
dHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPFhZWkE8ZmxvYXQ+Pihs
aW5lYXJTUkdCVG9YWVpNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNv
bXBvbmVudHMoY29sb3IpKSk7Cit9CisKIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJE
aXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQogewogICAgIHJldHVybiBtYWtlRnJv
bUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPExpbmVhckRpc3BsYXlQMzxmbG9hdD4+KHh5
elRvTGluZWFyRGlzcGxheVAzTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29s
b3JDb21wb25lbnRzKGNvbG9yKSkpOwpAQCAtMzkwLDYgKzQ0MiwxNiBAQCBTUkdCQTxmbG9hdD4g
dG9TUkdCQShjb25zdCBYWVpBPGZsb2F0PiYgCiAgICAgcmV0dXJuIHRvU1JHQkEodG9MaW5lYXJT
UkdCQShjb2xvcikpOwogfQogCitYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgRXh0ZW5kZWRTUkdC
QTxmbG9hdD4mIGNvbG9yKQoreworICAgIHJldHVybiB0b1hZWkEodG9MaW5lYXJFeHRlbmRlZFNS
R0JBKGNvbG9yKSk7Cit9CisKK0V4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvRXh0ZW5kZWRTUkdCQShj
b25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvRXh0ZW5kZWRTUkdCQSh0
b0xpbmVhckV4dGVuZGVkU1JHQkEoY29sb3IpKTsKK30KKwogWFlaQTxmbG9hdD4gdG9YWVpBKGNv
bnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQogewogICAgIHJldHVybiB0b1hZWkEodG9MaW5l
YXJEaXNwbGF5UDMoY29sb3IpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCShyZXZpc2lvbiAyNzE2OTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNiArMzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGVzZSBhcmUg
dGhlIHN0YW5kYXJkIHNSR0IgPC0+IExpbmVhclJHQiAvIERpc3BsYXlQMyA8LT4gTGluZWFyRGlz
cGxheVAzIGNvbnZlcnNpb24gZnVuY3Rpb25zIChodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lr
aS9TUkdCKS4KIGZsb2F0IGxpbmVhclRvUkdCQ29sb3JDb21wb25lbnRDbGFtcGluZyhmbG9hdCk7
CiBmbG9hdCByZ2JUb0xpbmVhckNvbG9yQ29tcG9uZW50Q2xhbXBpbmcoZmxvYXQpOworZmxvYXQg
bGluZWFyVG9SR0JDb2xvckNvbXBvbmVudE5vbkNsYW1waW5nKGZsb2F0KTsKK2Zsb2F0IHJnYlRv
TGluZWFyQ29sb3JDb21wb25lbnROb25DbGFtcGluZyhmbG9hdCk7CiAKIC8vIEFsbCBjb2xvciB0
eXBlcyBtdXN0IGF0IGxlYXN0IGltcGxlbWVudCB0aGUgZm9sbG93aW5nIGNvbnZlcnNpb25zIHRv
IGFuZCBmcm9tIHRoZSBYWVpBIGNvbG9yIHNwYWNlOgogLy8gICAgWFlaQTxmbG9hdD4gdG9YWVpB
KGNvbnN0IENvbG9yVHlwZTxmbG9hdD4mKTsKQEAgLTQ5LDEyICs1MSwyNCBAQCBXRUJDT1JFX0VY
UE9SVCBMaW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lCiBXRUJDT1JFX0VYUE9SVCBIU0xBPGZsb2F0
PiB0b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiBXRUJDT1JFX0VYUE9SVCBDTVlLQTxmbG9h
dD4gdG9DTVlLQShjb25zdCBTUkdCQTxmbG9hdD4mKTsKIAorLy8gRXh0ZW5kZWRTUkdCQQorV0VC
Q09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+
Jik7CitXRUJDT1JFX0VYUE9SVCBFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0V4dGVuZGVkU1JHQkEo
Y29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucworV0VCQ09SRV9FWFBPUlQgTGluZWFy
RXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9MaW5lYXJFeHRlbmRlZFNSR0JBKGNvbnN0IEV4dGVuZGVk
U1JHQkE8ZmxvYXQ+Jik7CisKIC8vIExpbmVhclNSR0JBCiBXRUJDT1JFX0VYUE9SVCBYWVpBPGZs
b2F0PiB0b1hZWkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+Jik7CiBXRUJDT1JFX0VYUE9SVCBM
aW5lYXJTUkdCQTxmbG9hdD4gdG9MaW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYpOwogLy8g
QWRkaXRpb25zCiBXRUJDT1JFX0VYUE9SVCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBMaW5l
YXJTUkdCQTxmbG9hdD4mKTsKIAorLy8gTGluZWFyRXh0ZW5kZWRTUkdCQQorV0VCQ09SRV9FWFBP
UlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+Jik7
CitXRUJDT1JFX0VYUE9SVCBMaW5lYXJFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0xpbmVhckV4dGVu
ZGVkU1JHQkEoY29uc3QgWFlaQTxmbG9hdD4mKTsKKy8vIEFkZGl0aW9ucworV0VCQ09SRV9FWFBP
UlQgRXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9FeHRlbmRlZFNSR0JBKGNvbnN0IExpbmVhckV4dGVu
ZGVkU1JHQkE8ZmxvYXQ+Jik7CisKIC8vIERpc3BsYXlQMwogV0VCQ09SRV9FWFBPUlQgWFlaQTxm
bG9hdD4gdG9YWVpBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKIFdFQkNPUkVfRVhQT1JUIERp
c3BsYXlQMzxmbG9hdD4gdG9EaXNwbGF5UDMoY29uc3QgWFlaQTxmbG9hdD4mKTsKQEAgLTk1LDcg
KzEwOSw5IEBAIFdFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NSR0JBKGNvbnMKIC8vIElk
ZW50aXR5IGNvbnZlcnNpb25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4dHMpLgogCiBjb25z
dGV4cHIgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikgeyBy
ZXR1cm4gY29sb3I7IH0KK2NvbnN0ZXhwciBFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0V4dGVuZGVk
U1JHQkEoY29uc3QgRXh0ZW5kZWRTUkdCQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsg
fQogY29uc3RleHByIExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IExpbmVh
clNSR0JBPGZsb2F0PiYgY29sb3IpIHsgcmV0dXJuIGNvbG9yOyB9Citjb25zdGV4cHIgTGluZWFy
RXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9MaW5lYXJFeHRlbmRlZFNSR0JBKGNvbnN0IExpbmVhckV4
dGVuZGVkU1JHQkE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KIGNvbnN0ZXhwciBE
aXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9y
KSB7IHJldHVybiBjb2xvcjsgfQogY29uc3RleHByIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9M
aW5lYXJEaXNwbGF5UDMoY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpIHsgcmV0
dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgTGFiPGZsb2F0PiB0b0xhYihjb25zdCBMYWI8ZmxvYXQ+
JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KQEAgLTExNSwxMSArMTMxLDIxIEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IFNSR0JBPGZsb2F0PiB0b1NSR0IKICAgICByZXR1cm4gdG9TUkdCQSh0b1hZ
WkEoY29sb3IpKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gRXh0ZW5kZWRTUkdCQTxmbG9h
dD4gdG9FeHRlbmRlZFNSR0JBKGNvbnN0IFQmIGNvbG9yKQoreworICAgIHJldHVybiB0b0V4dGVu
ZGVkU1JHQkEodG9YWVpBKGNvbG9yKSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IExpbmVh
clNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFQmIGNvbG9yKQogewogICAgIHJldHVy
biB0b0xpbmVhclNSR0JBKHRvWFlaQShjb2xvcikpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBMaW5lYXJFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0xpbmVhckV4dGVuZGVkU1JHQkEoY29uc3Qg
VCYgY29sb3IpCit7CisgICAgcmV0dXJuIHRvTGluZWFyRXh0ZW5kZWRTUkdCQSh0b1hZWkEoY29s
b3IpKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3Bs
YXlQMyhjb25zdCBUJiBjb2xvcikKIHsKICAgICByZXR1cm4gdG9EaXNwbGF5UDModG9YWVpBKGNv
bG9yKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JU
eXBlcy5oCShyZXZpc2lvbiAyNzE2OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbG9yQ29tcG9uZQogfTsKIAogdGVtcGxhdGU8dHlwZW5h
bWU+IHN0cnVjdCBSR0JNb2RlbDsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRXh0ZW5kZWRS
R0JNb2RlbDsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTGFiTW9kZWw7CiB0ZW1wbGF0ZTx0
eXBlbmFtZT4gc3RydWN0IExDSE1vZGVsOwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBIU0xN
b2RlbDsKQEAgLTczLDYgKzc0LDE1IEBAIHRlbXBsYXRlPD4gc3RydWN0IFJHQk1vZGVsPGZsb2F0
PiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IHRydWU7CiB9Owog
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFeHRlbmRlZFJHQk1vZGVsPGZsb2F0PiB7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiByYW5n
ZXMgeyB7CisgICAgICAgIHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgp
LCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSB9LAorICAgICAgICB7IC1z
dGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0
czxmbG9hdD46OmluZmluaXR5KCkgfSwKKyAgICAgICAgeyAtc3RkOjpudW1lcmljX2xpbWl0czxm
bG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgp
IH0KKyAgICB9IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IGZh
bHNlOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgTGFiTW9kZWw8ZmxvYXQ+IHsKICAgICBzdGF0
aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Q29sb3JDb21wb25lbnRSYW5nZTxmbG9hdD4sIDM+IHJh
bmdlcyB7IHsKICAgICAgICAgeyAwLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5p
dHkoKSB9LApAQCAtMzExLDYgKzMyMSw0NSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4
cHIgYm9vbCBvcGVyCiB9CiAKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEV4dGVuZGVk
U1JHQkEgOiBDb2xvcldpdGhBbHBoYUhlbHBlcjxFeHRlbmRlZFNSR0JBPFQ+PiB7CisgICAgdXNp
bmcgQ29tcG9uZW50VHlwZSA9IFQ7CisgICAgdXNpbmcgTW9kZWwgPSBFeHRlbmRlZFJHQk1vZGVs
PFQ+OworCisgICAgY29uc3RleHByIEV4dGVuZGVkU1JHQkEoVCByZWQsIFQgZ3JlZW4sIFQgYmx1
ZSwgVCBhbHBoYSA9IEFscGhhVHJhaXRzPFQ+OjpvcGFxdWUpCisgICAgICAgIDogcmVkIHsgcmVk
IH0KKyAgICAgICAgLCBncmVlbiB7IGdyZWVuIH0KKyAgICAgICAgLCBibHVlIHsgYmx1ZSB9Cisg
ICAgICAgICwgYWxwaGEgeyBhbHBoYSB9CisgICAgeworICAgIH0KKworICAgIGNvbnN0ZXhwciBF
eHRlbmRlZFNSR0JBKCkKKyAgICAgICAgOiBFeHRlbmRlZFNSR0JBIHsgMCwgMCwgMCwgMCB9Cisg
ICAgeworICAgIH0KKworICAgIFQgcmVkOworICAgIFQgZ3JlZW47CisgICAgVCBibHVlOworICAg
IFQgYWxwaGE7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgQ29sb3JDb21w
b25lbnRzPFQ+IGFzQ29sb3JDb21wb25lbnRzKGNvbnN0IEV4dGVuZGVkU1JHQkE8VD4mIGMpCit7
CisgICAgcmV0dXJuIHsgYy5yZWQsIGMuZ3JlZW4sIGMuYmx1ZSwgYy5hbHBoYSB9OworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV4dGVu
ZGVkU1JHQkE8VD4mIGEsIGNvbnN0IEV4dGVuZGVkU1JHQkE8VD4mIGIpCit7CisgICAgcmV0dXJu
IGFzQ29sb3JDb21wb25lbnRzKGEpID09IGFzQ29sb3JDb21wb25lbnRzKGIpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEV4dGVuZGVk
U1JHQkE8VD4mIGEsIGNvbnN0IEV4dGVuZGVkU1JHQkE8VD4mIGIpCit7CisgICAgcmV0dXJuICEo
YSA9PSBiKTsKK30KKworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTGluZWFyU1JHQkEg
OiBDb2xvcldpdGhBbHBoYUhlbHBlcjxMaW5lYXJTUkdCQTxUPj4gewogICAgIHVzaW5nIENvbXBv
bmVudFR5cGUgPSBUOwogICAgIHVzaW5nIE1vZGVsID0gUkdCTW9kZWw8VD47CkBAIC0zNTIsNiAr
NDAxLDQ1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9wZXIKIH0KIAog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTGluZWFyRXh0ZW5kZWRTUkdCQSA6IENvbG9y
V2l0aEFscGhhSGVscGVyPExpbmVhckV4dGVuZGVkU1JHQkE8VD4+IHsKKyAgICB1c2luZyBDb21w
b25lbnRUeXBlID0gVDsKKyAgICB1c2luZyBNb2RlbCA9IEV4dGVuZGVkUkdCTW9kZWw8VD47CisK
KyAgICBjb25zdGV4cHIgTGluZWFyRXh0ZW5kZWRTUkdCQShUIHJlZCwgVCBncmVlbiwgVCBibHVl
LCBUIGFscGhhID0gQWxwaGFUcmFpdHM8VD46Om9wYXF1ZSkKKyAgICAgICAgOiByZWQgeyByZWQg
fQorICAgICAgICAsIGdyZWVuIHsgZ3JlZW4gfQorICAgICAgICAsIGJsdWUgeyBibHVlIH0KKyAg
ICAgICAgLCBhbHBoYSB7IGFscGhhIH0KKyAgICB7CisgICAgfQorCisgICAgY29uc3RleHByIExp
bmVhckV4dGVuZGVkU1JHQkEoKQorICAgICAgICA6IExpbmVhckV4dGVuZGVkU1JHQkEgeyAwLCAw
LCAwLCAwIH0KKyAgICB7CisgICAgfQorCisgICAgVCByZWQ7CisgICAgVCBncmVlbjsKKyAgICBU
IGJsdWU7CisgICAgVCBhbHBoYTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhw
ciBDb2xvckNvbXBvbmVudHM8VD4gYXNDb2xvckNvbXBvbmVudHMoY29uc3QgTGluZWFyRXh0ZW5k
ZWRTUkdCQTxUPiYgYykKK3sKKyAgICByZXR1cm4geyBjLnJlZCwgYy5ncmVlbiwgYy5ibHVlLCBj
LmFscGhhIH07Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPT0oY29uc3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxUPiYgYSwgY29uc3QgTGluZWFyRXh0ZW5k
ZWRTUkdCQTxUPiYgYikKK3sKKyAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoYSkgPT0gYXND
b2xvckNvbXBvbmVudHMoYik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yIT0oY29uc3QgTGluZWFyRXh0ZW5kZWRTUkdCQTxUPiYgYSwgY29uc3QgTGlu
ZWFyRXh0ZW5kZWRTUkdCQTxUPiYgYikKK3sKKyAgICByZXR1cm4gIShhID09IGIpOworfQorCisK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEaXNwbGF5UDMgOiBDb2xvcldpdGhBbHBoYUhl
bHBlcjxEaXNwbGF5UDM8VD4+IHsKICAgICB1c2luZyBDb21wb25lbnRUeXBlID0gVDsKICAgICB1
c2luZyBNb2RlbCA9IFJHQk1vZGVsPFQ+OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHJldmlzaW9uIDI3MTY5NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDIsMTMgKzEwMiwxNiBAQCBzdGF0aWMgQ0dDb2xvclJlZiBsZWFrQ0dDb2xvcihjb25z
dCBDb2xvCiAKICAgICAvLyBTb21lIENHIHBvcnRzIGRvbid0IHN1cHBvcnQgYWxsIHRoZSBjb2xv
ciBzcGFjZXMgcmVxdWlyZWQgYW5kIHJldHVybgogICAgIC8vIHNSR0JDb2xvclNwYWNlUmVmKCkg
Zm9yIHVuc3VwcG9ydGVkIGNvbG9yIHNwYWNlcy4gSW4gdGhvc2UgY2FzZXMsIHdlCi0gICAgLy8g
bmVlZCB0byBlYWdlcmx5IGFuZCBwb3RlbnRpYWxseSBsb3NzaWx5IGNvbnZlcnQgdGhlIGNvbG9y
IGludG8gc1JHQgotICAgIC8vIG91cnNlbHZlcyBiZWZvcmUgY3JlYXRpbmcgdGhlIENHQ29sb3JS
ZWYuCisgICAgLy8gbmVlZCB0byBlYWdlcmx5IGNvbnZlcnQgdGhlIGNvbG9yIGludG8gZXh0ZW5k
ZWQgc1JHQiBvdXJzZWx2ZXMgYmVmb3JlCisgICAgLy8gY3JlYXRpbmcgdGhlIENHQ29sb3JSZWYu
CisgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGEgZ29vZCB3YXkgdG8gaW5kaWNhdGUgbGFjayBv
ZiBzdXBwb3J0LiBNYWtlIHRoaXMKKyAgICAvLyBtb3JlIGV4cGxpY2l0LgogICAgIGlmIChjb2xv
clNwYWNlICE9IENvbG9yU3BhY2U6OlNSR0IgJiYgY2dDb2xvclNwYWNlID09IHNSR0JDb2xvclNw
YWNlUmVmKCkpIHsKLSAgICAgICAgYXV0byBjb2xvckNvbnZlcnRlZFRvU1JHQkEgPSBjYWxsV2l0
aENvbG9yVHlwZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3Ip
IHsKLSAgICAgICAgICAgIHJldHVybiB0b1NSR0JBKGNvbG9yKTsKKyAgICAgICAgYXV0byBjb2xv
ckNvbnZlcnRlZFRvRXh0ZW5kZWRTUkdCQSA9IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMs
IGNvbG9yU3BhY2UsIFtdIChjb25zdCBhdXRvJiBjb2xvcikgeworICAgICAgICAgICAgcmV0dXJu
IHRvRXh0ZW5kZWRTUkdCQShjb2xvcik7CiAgICAgICAgIH0pOwotICAgICAgICBjb21wb25lbnRz
ID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3JDb252ZXJ0ZWRUb1NSR0JBKTsKKyAgICAgICAgY29t
cG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yQ29udmVydGVkVG9FeHRlbmRlZFNSR0JB
KTsKKyAgICAgICAgY2dDb2xvclNwYWNlID0gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOwog
ICAgIH0KIAogICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKSW5kZXg6IExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2aXNpb24gMjcxNjk4KQorKysgTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisy
MDIxLTAxLTIxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1v
dmUgZXhwbGljaXQgY2xhbXAgdG8gU1JHQiBmb3IgTGFiIGNvbG9ycyBvbiBDRyBwbGF0Zm9ybXMg
dGhhdCBzdXBwb3J0IHdpZGUgY29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMDY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZSBleGlzdGluZyBsYWIvbGNoIHRlc3RzIHRvIG1hdGNoIG5l
dyBtb3JlIHByZWNpc2UgdmFsdWVzIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQvcHVsbC8yNzIwMgorICAgICAgICBhbmQgYWRkIHR3byBuZXcgdGVzdHMgZm9y
IGNvbG9ycyBvdXRzaWRlIHRoZSBzUkdCIGdhbXV0IHRoYXQgd2lsbCBiZSB1cHN0cmVhbWVkIHRv
IFdQVCBhZnRlciBsYW5kaW5nLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtY29sb3IvbGFiLTAwMS5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWNvbG9yL2xhYi0wMDIuaHRtbDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1jb2xvci9sYWItMDAzLmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtY29sb3IvbGFiLTAwNC1leHBlY3RlZC5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xhYi0wMDQuaHRtbDoKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sYWItMDA1LWV4cGVjdGVkLmh0bWw6CisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwNS5odG1sOgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xhYi0wMDYtZXhwZWN0ZWQuaHRtbDoK
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sYWItMDA2Lmh0bWw6
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwNy1leHBl
Y3RlZC5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xh
Yi0wMDcuaHRtbDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9s
YWItMDA4LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWNvbG9yL2xhYi0wMDguaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGNoLTAwMS5odG1sOgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xjaC0wMDIuaHRtbDoKKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sY2gtMDAzLmh0bWw6CisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGNoLTAwNC1leHBlY3RlZC5odG1sOgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xjaC0wMDQuaHRtbDoKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sY2gtMDA1LWV4cGVjdGVkLmh0
bWw6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGNoLTAwNS5o
dG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xjaC0wMDYt
ZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xv
ci9sY2gtMDA2Lmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29s
b3IvbGNoLTAwNy1leHBlY3RlZC5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWNvbG9yL2xjaC0wMDcuaHRtbDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1jb2xvci9sY2gtMDA4LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xjaC0wMDguaHRtbDogQWRkZWQuCisKIDIw
MjEtMDEtMTkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFsg
QmlnU3VyIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9ub3NuaWZmL3Bh
cnNpbmctbm9zbmlmZi53aW5kb3cuaHRtbCBpcyBmbGFreSBmYWlsaW5nCkluZGV4OiBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAw
MS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sYWItMDAxLmh0bWwJKHJldmlzaW9uIDI3MTY5NykKKysr
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xv
ci9sYWItMDAxLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsMTIgKzYsMTAgQEAKIDxsaW5rIHJl
bD0ibWF0Y2giIGhyZWY9ImdyZWVuc3F1YXJlLXJlZi5odG1sIj4KIDxtZXRhIG5hbWU9ImFzc2Vy
dCIgY29udGVudD0ibGFiKCkgd2l0aCBubyBhbHBoYSI+CiA8c3R5bGU+Ci0gICAgLnRlc3QgeyBi
YWNrZ3JvdW5kLWNvbG9yOiByZWQ7IHdpZHRoOiAxMmVtOyBoZWlnaHQ6IDZlbTsgbWFyZ2luLXRv
cDowfQotICAgIC5yZWYgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA4MDAwOyB3aWR0aDogMTJlbTsg
aGVpZ2h0OiA2ZW07IG1hcmdpbi1ib3R0b206IDB9Ci0gICAgLnRlc3QgeyBiYWNrZ3JvdW5kLWNv
bG9yOiBsYWIoNDYuMjc3JSAtNDcuNTYyIDQ4LjU4Myl9IC8qIGdyZWVuIChzUkdCICMwMDgwMDAp
IGNvbnZlcnRlZCB0byBMYWIgKi8KKyAgICAudGVzdCB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsg
d2lkdGg6IDEyZW07IGhlaWdodDogMTJlbTsgfQorICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xv
cjogbGFiKDQ2LjI3NzUlIC00Ny41NjIxIDQ4LjU4MzcpOyB9IC8qIGdyZWVuIChzUkdCICMwMDgw
MDApIGNvbnZlcnRlZCB0byBMYWIgKi8KIDwvc3R5bGU+CiA8Ym9keT4KICAgICA8cD5UZXN0IHBh
c3NlcyBpZiB5b3Ugc2VlIGEgZ3JlZW4gc3F1YXJlLCBhbmQgbm8gcmVkLjwvcD4KLSAgICA8cCBj
bGFzcz0icmVmIj4gPC9wPgotICAgIDxwIGNsYXNzPSJ0ZXN0Ij4gPC9wPgorICAgIDxkaXYgY2xh
c3M9InRlc3QiPjwvZGl2PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xhYi0wMDIuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Y29sb3IvbGFiLTAwMi5odG1sCShyZXZpc2lvbiAyNzE2OTcpCisrKyBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwMi5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0zLDEzICszLDEzIEBACiA8dGl0bGU+Q1NTIENvbG9yIDQ6IFNwZWNp
ZnlpbmcgTGFiIGFuZCBMQ0g8L3RpdGxlPgogPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJDaHJp
cyBMaWxsZXkiIGhyZWY9Im1haWx0bzpjaHJpc0B3My5vcmciPgogPGxpbmsgcmVsPSJoZWxwIiBo
cmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLTQvI3NwZWNpZnlpbmctbGFi
LWxjaCI+Ci08bGluayByZWw9Im1hdGNoIiBocmVmPSJibGFja2Jsb2NrLXJlZi5odG1sIj4KKzxs
aW5rIHJlbD0ibWF0Y2giIGhyZWY9ImJsYWNrc3F1YXJlLXJlZi5odG1sIj4KIDxtZXRhIG5hbWU9
ImFzc2VydCIgY29udGVudD0ibGFiKCkgd2l0aCBubyBhbHBoYSI+CiA8c3R5bGU+CiAgICAgLnRl
c3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IHdpZHRoOiAxMmVtOyBoZWlnaHQ6IDEyZW07IH0K
LSAgICAudGVzdCB7IGJhY2tncm91bmQtY29sb3I6IGxhYigwJSAwIDApIH0gLyogYmxhY2sgKHNS
R0IgIzAwMDAwMCkgY29udmVydGVkIHRvIExhYiAqLworICAgIC50ZXN0IHsgYmFja2dyb3VuZC1j
b2xvcjogbGFiKDAlIDAgMCk7IH0gLyogYmxhY2sgKHNSR0IgIzAwMDAwMCkgY29udmVydGVkIHRv
IExhYiAqLwogPC9zdHlsZT4KIDxib2R5PgogICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUg
YSBibGFjayBzcXVhcmUsIGFuZCBubyByZWQuPC9wPgotICAgIDxwIGNsYXNzPSJ0ZXN0Ij4gPC9w
PgorICAgIDxkaXYgY2xhc3M9InRlc3QiPjwvZGl2PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xhYi0wMDMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwMy5odG1sCShyZXZpc2lvbiAyNzE2OTcpCisrKyBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3Iv
bGFiLTAwMy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDE0ICszLDE0IEBACiA8dGl0bGU+Q1NT
IENvbG9yIDQ6IFNwZWNpZnlpbmcgTGFiIGFuZCBMQ0g8L3RpdGxlPgogPGxpbmsgcmVsPSJhdXRo
b3IiIHRpdGxlPSJDaHJpcyBMaWxsZXkiIGhyZWY9Im1haWx0bzpjaHJpc0B3My5vcmciPgogPGxp
bmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLTQv
I3NwZWNpZnlpbmctbGFiLWxjaCI+Ci08bGluayByZWw9Im1hdGNoIiBocmVmPSJ3aGl0ZWJsb2Nr
LXJlZi5odG1sIj4KKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9IndoaXRlc3F1YXJlLXJlZi5odG1s
Ij4KIDxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0ibGFiKCkgd2l0aCBubyBhbHBoYSI+CiA8
c3R5bGU+CiAgICAgYm9keSB7IGJhY2tncm91bmQtY29sb3I6IGdyZXk7IH0KICAgICAudGVzdCB7
IGJhY2tncm91bmQtY29sb3I6IHJlZDsgd2lkdGg6IDEyZW07IGhlaWdodDogMTJlbTsgfQotICAg
IC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjogbGFiKDEwMCUgMCAwKTt9IC8qIHdoaXRlIChzUkdC
ICNGRkZGRkYpIGNvbnZlcnRlZCB0byBMYWIgKi8KKyAgICAudGVzdCB7IGJhY2tncm91bmQtY29s
b3I6IGxhYigxMDAlIDAgMCk7IH0gLyogd2hpdGUgKHNSR0IgI0ZGRkZGRikgY29udmVydGVkIHRv
IExhYiAqLwogPC9zdHlsZT4KIDxib2R5PgogICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUg
YSB3aGl0ZSBzcXVhcmUsIGFuZCBubyByZWQuPC9wPgotICAgIDxwIGNsYXNzPSJ0ZXN0Ij4gPC9w
PgorICAgIDxkaXYgY2xhc3M9InRlc3QiPjwvZGl2PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xhYi0wMDQt
ZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwNC1leHBlY3RlZC5odG1sCShyZXZp
c2lvbiAyNzE2OTcpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwNC1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0yLDkgKzIsOSBAQAogPG1ldGEgY2hhcnNldD0idXRmLTgiPgogPHRpdGxlPkNTUyBDb2xvciA0
OiBTcGVjaWZ5aW5nIExhYiBhbmQgTENIPC90aXRsZT4KIDxzdHlsZT4KLSAgICAudGVzdCB7IGJh
Y2tncm91bmQtY29sb3I6cmdiKDc1LjYyJSAzMC40NSUgNDcuNTYlKTsgd2lkdGg6IDEyZW07IGhl
aWdodDogMTJlbTt9IC8qIGxhYig1MCA1MCAwKSBjb252ZXJ0ZWQgdG8gc1JHQiAqLworICAgIC50
ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDc1LjYyMDglIDMwLjQ0ODclIDQ3LjU2MzQlKTsg
d2lkdGg6IDEyZW07IGhlaWdodDogMTJlbTsgfSAvKiBsYWIoNTAlIDUwIDApIGNvbnZlcnRlZCB0
byBzUkdCICovCiA8L3N0eWxlPgogPGJvZHk+CiAgICAgPHA+VGVzdCBwYXNzZXMgaWYgeW91IHNl
ZSBhIHNpbmdsZSBzcXVhcmUsIGFuZCBub3QgdHdvIHJlY3RhbmdsZXMgb2YgZGlmZmVyZW50IGNv
bG9ycy48L3A+Ci0gICAgPHAgY2xhc3M9InRlc3QiPiA8L3A+CisgICAgPGRpdiBjbGFzcz0idGVz
dCI+PC9kaXY+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwNC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9s
YWItMDA0Lmh0bWwJKHJldmlzaW9uIDI3MTY5NykKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sYWItMDA0Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTYsMTIgKzYsMTIgQEAKIDxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImxhYi0wMDQt
cmVmLmh0bWwiPgogPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJsYWIoKSB3aXRoIG5vIGFs
cGhhLCBwb3NpdGl2ZSBhIGF4aXMiPgogPHN0eWxlPgotICAgIC50ZXN0IHsgYmFja2dyb3VuZC1j
b2xvcjogcmVkOyB3aWR0aDogMTJlbTsgaGVpZ2h0OiA2ZW07IG1hcmdpbi10b3A6MH0KLSAgICAu
cmVmIHsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDc1LjYyJSwgMzAuNDUlLCA0Ny41NiUpOyB3aWR0
aDogMTJlbTsgaGVpZ2h0OiA2ZW07IG1hcmdpbi1ib3R0b206IDB9LyogbGFiKDUwIDUwIDApIGNv
bnZlcnRlZCB0byBzUkdCICovCi0gICAgLnRlc3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsYWIoNTAl
IDUwIDApfSAKKyAgICAudGVzdCB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgd2lkdGg6IDEyZW07
IGhlaWdodDogNmVtOyBtYXJnaW4tdG9wOiAwOyB9CisgICAgLnJlZiB7IGJhY2tncm91bmQtY29s
b3I6IHJnYig3NS42MjA4JSAzMC40NDg3JSA0Ny41NjM0JSk7IHdpZHRoOiAxMmVtOyBoZWlnaHQ6
IDZlbTsgbWFyZ2luLWJvdHRvbTogMDsgfS8qIGxhYig1MCUgNTAgMCkgY29udmVydGVkIHRvIHNS
R0IgKi8KKyAgICAudGVzdCB7IGJhY2tncm91bmQtY29sb3I6IGxhYig1MCUgNTAgMCk7IH0KIDwv
c3R5bGU+CiA8Ym9keT4KICAgICA8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xlIHNx
dWFyZSwgYW5kIG5vdCB0d28gcmVjdGFuZ2xlcyBvZiBkaWZmZXJlbnQgY29sb3JzLjwvcD4KLSAg
ICA8cCBjbGFzcz0icmVmIj4gPC9wPgotICAgIDxwIGNsYXNzPSJ0ZXN0Ij4gPC9wPgorICAgIDxk
aXYgY2xhc3M9InJlZiI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0idGVzdCI+PC9kaXY+CiA8L2Jv
ZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtY29sb3IvbGFiLTAwNS1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sYWItMDA1
LWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDI3MTY5NykKKysrIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sYWItMDA1LWV4cGVjdGVkLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOSArMiw5IEBACiA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
CiA8dGl0bGU+Q1NTIENvbG9yIDQ6IFNwZWNpZnlpbmcgTGFiIGFuZCBMQ0g8L3RpdGxlPgogPHN0
eWxlPgotICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEwLjc5JSwgNzUuNTUlLCA2
Ni40MCUpOyB3aWR0aDogMTJlbTsgaGVpZ2h0OiAxMmVtO30gLyogbGFiKDcwIC00NSAwKSBjb252
ZXJ0ZWQgdG8gc1JHQiAqLworICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEwLjc5
MDYlIDc1LjU1NjclIDY2LjM5ODIlKTsgd2lkdGg6IDEyZW07IGhlaWdodDogMTJlbTsgfSAvKiBs
YWIoNzAlIC00NSAwKSBjb252ZXJ0ZWQgdG8gc1JHQiAqLwogPC9zdHlsZT4KIDxib2R5PgogICAg
IDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBzaW5nbGUgc3F1YXJlLCBhbmQgbm90IHR3byBy
ZWN0YW5nbGVzIG9mIGRpZmZlcmVudCBjb2xvcnMuPC9wPgotICAgIDxwIGNsYXNzPSJ0ZXN0Ij4g
PC9wPgorICAgIDxkaXYgY2xhc3M9InRlc3QiPjwvZGl2PgogPC9ib2R5PgpJbmRleDogTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xhYi0w
MDUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwNS5odG1sCShyZXZpc2lvbiAyNzE2OTcpCisr
KyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29s
b3IvbGFiLTAwNS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDEyICs2LDEyIEBACiA8bGluayBy
ZWw9Im1hdGNoIiBocmVmPSJsYWItMDA1LXJlZi5odG1sIj4KIDxtZXRhIG5hbWU9ImFzc2VydCIg
Y29udGVudD0ibGFiKCkgd2l0aCBubyBhbHBoYSwgbmVnYXRpdmUgYSBheGlzIj4KIDxzdHlsZT4K
LSAgICAudGVzdCB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgd2lkdGg6IDEyZW07IGhlaWdodDog
NmVtOyBtYXJnaW4tdG9wOjB9Ci0gICAgLnJlZiB7IGJhY2tncm91bmQtY29sb3I6IHJnYigxMC43
OSUsIDc1LjU1JSwgNjYuNDAlKTsgd2lkdGg6IDEyZW07IGhlaWdodDogNmVtOyBtYXJnaW4tYm90
dG9tOiAwfSAvKiBsYWIoNzAgLTQ1IDApIGNvbnZlcnRlZCB0byBzUkdCICovCi0gICAgLnRlc3Qg
eyBiYWNrZ3JvdW5kLWNvbG9yOiBsYWIoNzAlIC00NSAwKX0gCisgICAgLnRlc3QgeyBiYWNrZ3Jv
dW5kLWNvbG9yOiByZWQ7IHdpZHRoOiAxMmVtOyBoZWlnaHQ6IDZlbTsgbWFyZ2luLXRvcDogMDsg
fQorICAgIC5yZWYgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTAuNzkwNiUgNzUuNTU2NyUgNjYu
Mzk4MiUpOyB3aWR0aDogMTJlbTsgaGVpZ2h0OiA2ZW07IG1hcmdpbi1ib3R0b206IDA7IH0gLyog
bGFiKDcwJSAtNDUgMCkgY29udmVydGVkIHRvIHNSR0IgKi8KKyAgICAudGVzdCB7IGJhY2tncm91
bmQtY29sb3I6IGxhYig3MCUgLTQ1IDApOyB9CiA8L3N0eWxlPgogPGJvZHk+CiAgICAgPHA+VGVz
dCBwYXNzZXMgaWYgeW91IHNlZSBhIHNpbmdsZSBzcXVhcmUsIGFuZCBub3QgdHdvIHJlY3Rhbmds
ZXMgb2YgZGlmZmVyZW50IGNvbG9ycy48L3A+Ci0gICAgPHAgY2xhc3M9InJlZiI+IDwvcD4KLSAg
ICA8cCBjbGFzcz0idGVzdCI+IDwvcD4KKyAgICA8ZGl2IGNsYXNzPSJyZWYiPjwvZGl2PgorICAg
IDxkaXYgY2xhc3M9InRlc3QiPjwvZGl2PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xhYi0wMDYtZXhwZWN0
ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwNi1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAy
NzE2OTcpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtY29sb3IvbGFiLTAwNi1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDkg
KzIsOSBAQAogPG1ldGEgY2hhcnNldD0idXRmLTgiPgogPHRpdGxlPkNTUyBDb2xvciA0OiBTcGVj
aWZ5aW5nIExhYiBhbmQgTENIPC90aXRsZT4KIDxzdHlsZT4KLSAgICAudGVzdCB7IGJhY2tncm91
bmQtY29sb3I6IHJnYig3Ni42MiUsIDY2LjM2JSwgNS41OCUpOyB3aWR0aDogMTJlbTsgaGVpZ2h0
OiAxMmVtO30gLyogbGFiKDcwIDAgNzApIGNvbnZlcnRlZCB0byBzUkdCICovCisgICAgLnRlc3Qg
eyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNzYuNjI1NCUgNjYuMzYwNyUgNS41Nzc1JSk7IHdpZHRo
OiAxMmVtOyBoZWlnaHQ6IDEyZW07IH0gLyogbGFiKDcwJSAwIDcwKSBjb252ZXJ0ZWQgdG8gc1JH
QiAqLwogPC9zdHlsZT4KIDxib2R5PgogICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBz
aW5nbGUgc3F1YXJlLCBhbmQgbm90IHR3byByZWN0YW5nbGVzIG9mIGRpZmZlcmVudCBjb2xvcnMu
PC9wPgotICAgIDxwIGNsYXNzPSJ0ZXN0Ij4gPC9wPgorICAgIDxkaXYgY2xhc3M9InRlc3QiPjwv
ZGl2PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xhYi0wMDYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAw
Ni5odG1sCShyZXZpc2lvbiAyNzE2OTcpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwNi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC02LDEyICs2LDEyIEBACiA8bGluayByZWw9Im1hdGNoIiBocmVmPSJsYWItMDA2LXJlZi5o
dG1sIj4KIDxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0ibGFiKCkgd2l0aCBubyBhbHBoYSwg
cG9zaXRpdmUgYiBheGlzIj4KIDxzdHlsZT4KLSAgICAudGVzdCB7IGJhY2tncm91bmQtY29sb3I6
IHJlZDsgd2lkdGg6IDEyZW07IGhlaWdodDogNmVtOyBtYXJnaW4tdG9wOjB9Ci0gICAgLnJlZiB7
IGJhY2tncm91bmQtY29sb3I6IHJnYig3Ni42MiUsIDY2LjM2JSwgNS41OCUpOyB3aWR0aDogMTJl
bTsgaGVpZ2h0OiA2ZW07IG1hcmdpbi1ib3R0b206IDB9IC8qIGxhYig3MCAwIDcwKSBjb252ZXJ0
ZWQgdG8gc1JHQiAqLwotICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjogbGFiKDcwJSAwIDcw
KX0gCisgICAgLnRlc3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IHdpZHRoOiAxMmVtOyBoZWln
aHQ6IDZlbTsgbWFyZ2luLXRvcDogMDsgfQorICAgIC5yZWYgeyBiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2IoNzYuNjI1NCUgNjYuMzYwNyUgNS41Nzc1JSk7IHdpZHRoOiAxMmVtOyBoZWlnaHQ6IDZlbTsg
bWFyZ2luLWJvdHRvbTogMDsgfSAvKiBsYWIoNzAlIDAgNzApIGNvbnZlcnRlZCB0byBzUkdCICov
CisgICAgLnRlc3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsYWIoNzAlIDAgNzApOyB9CiA8L3N0eWxl
PgogPGJvZHk+CiAgICAgPHA+VGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIHNpbmdsZSBzcXVhcmUs
IGFuZCBub3QgdHdvIHJlY3RhbmdsZXMgb2YgZGlmZmVyZW50IGNvbG9ycy48L3A+Ci0gICAgPHAg
Y2xhc3M9InJlZiI+IDwvcD4KLSAgICA8cCBjbGFzcz0idGVzdCI+IDwvcD4KKyAgICA8ZGl2IGNs
YXNzPSJyZWYiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InRlc3QiPjwvZGl2PgogPC9ib2R5PgpJ
bmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWNvbG9yL2xhYi0wMDctZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwNy1leHBl
Y3RlZC5odG1sCShyZXZpc2lvbiAyNzE2OTcpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwNy1leHBlY3RlZC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsOSBAQAogPG1ldGEgY2hhcnNldD0idXRmLTgiPgogPHRp
dGxlPkNTUyBDb2xvciA0OiBTcGVjaWZ5aW5nIExhYiBhbmQgTENIPC90aXRsZT4KIDxzdHlsZT4K
LSAgICAudGVzdCB7IGJhY2tncm91bmQtY29sb3I6IHJnYigxMi44MSUsIDUzLjEwJSwgOTIuNzYl
KTsgd2lkdGg6IDEyZW07IGhlaWdodDogMTJlbTt9IC8qIGxhYig1NSAwIC02MCkgY29udmVydGVk
IHRvIHNSR0IgKi8KKyAgICAudGVzdCB7IGJhY2tncm91bmQtY29sb3I6IHJnYigxMi44MTI4JSA1
My4xMDUlIDkyLjc2NDUlKTsgd2lkdGg6IDEyZW07IGhlaWdodDogMTJlbTsgfSAvKiBsYWIoNTUl
IDAgLTYwKSBjb252ZXJ0ZWQgdG8gc1JHQiAqLwogPC9zdHlsZT4KIDxib2R5PgogICAgIDxwPlRl
c3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBzaW5nbGUgc3F1YXJlLCBhbmQgbm90IHR3byByZWN0YW5n
bGVzIG9mIGRpZmZlcmVudCBjb2xvcnMuPC9wPgotICAgIDxwIGNsYXNzPSJ0ZXN0Ij4gPC9wPgor
ICAgIDxkaXYgY2xhc3M9InRlc3QiPjwvZGl2PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xhYi0wMDcuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwNy5odG1sCShyZXZpc2lvbiAyNzE2OTcpCisrKyBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFi
LTAwNy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDEyICs2LDEyIEBACiA8bGluayByZWw9Im1h
dGNoIiBocmVmPSJsYWItMDA3LXJlZi5odG1sIj4KIDxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVu
dD0ibGFiKCkgd2l0aCBubyBhbHBoYSwgbmVnYXRpdmUgYiBheGlzIj4KIDxzdHlsZT4KLSAgICAu
dGVzdCB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgd2lkdGg6IDEyZW07IGhlaWdodDogNmVtOyBt
YXJnaW4tdG9wOjB9Ci0gICAgLnJlZiB7IGJhY2tncm91bmQtY29sb3I6IHJnYigxMi44MSUsIDUz
LjEwJSwgOTIuNzYlKTsgd2lkdGg6IDEyZW07IGhlaWdodDogNmVtOyBtYXJnaW4tYm90dG9tOiAw
fSAvKiBsYWIoNTUgMCAtNjApIGNvbnZlcnRlZCB0byBzUkdCICovCi0gICAgLnRlc3QgeyBiYWNr
Z3JvdW5kLWNvbG9yOiBsYWIoNTUlIDAgLTYwKX0gCisgICAgLnRlc3QgeyBiYWNrZ3JvdW5kLWNv
bG9yOiByZWQ7IHdpZHRoOiAxMmVtOyBoZWlnaHQ6IDZlbTsgbWFyZ2luLXRvcDogMDsgfQorICAg
IC5yZWYgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTIuODEyOCUgNTMuMTA1JSA5Mi43NjQ1JSk7
IHdpZHRoOiAxMmVtOyBoZWlnaHQ6IDZlbTsgbWFyZ2luLWJvdHRvbTogMDsgfSAvKiBsYWIoNTUl
IDAgLTYwKSBjb252ZXJ0ZWQgdG8gc1JHQiAqLworICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xv
cjogbGFiKDU1JSAwIC02MCk7IH0KIDwvc3R5bGU+CiA8Ym9keT4KICAgICA8cD5UZXN0IHBhc3Nl
cyBpZiB5b3Ugc2VlIGEgc2luZ2xlIHNxdWFyZSwgYW5kIG5vdCB0d28gcmVjdGFuZ2xlcyBvZiBk
aWZmZXJlbnQgY29sb3JzLjwvcD4KLSAgICA8cCBjbGFzcz0icmVmIj4gPC9wPgotICAgIDxwIGNs
YXNzPSJ0ZXN0Ij4gPC9wPgorICAgIDxkaXYgY2xhc3M9InJlZiI+PC9kaXY+CisgICAgPGRpdiBj
bGFzcz0idGVzdCI+PC9kaXY+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwOC1leHBlY3RlZC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1jb2xvci9sYWItMDA4LWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysg
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9y
L2xhYi0wMDgtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5DU1MgQ29sb3Ig
NDogU3BlY2lmeWluZyBMYWIgYW5kIExDSDwvdGl0bGU+Cis8c3R5bGU+CisgICAgLnRlc3QgeyBi
YWNrZ3JvdW5kLWNvbG9yOiBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKTsgd2lkdGg6IDEyZW07IGhl
aWdodDogMTJlbTsgfQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlv
dSBzZWUgYSBzaW5nbGUgc3F1YXJlLCBhbmQgbm90IHR3byByZWN0YW5nbGVzIG9mIGRpZmZlcmVu
dCBjb2xvcnMuPC9wPgorICAgIDxwIGNsYXNzPSJ0ZXN0Ij4gPC9wPgorPC9ib2R5PgpJbmRleDog
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9y
L2xhYi0wMDguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGFiLTAwOC5odG1sCShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1j
b2xvci9sYWItMDA4Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q1NTIENvbG9yIDQ6IFNw
ZWNpZnlpbmcgTGFiIGFuZCBMQ0g8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRw
czovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLTQvI3NwZWNpZnlpbmctbGFiLWxjaCI+Cis8
bGluayByZWw9Im1hdGNoIiBocmVmPSJsYWItMDA4LXJlZi5odG1sIj4KKzxtZXRhIG5hbWU9ImFz
c2VydCIgY29udGVudD0ibGFiKCkgb3V0c2lkZSB0aGUgc1JHQiBnYW11dCI+Cis8c3R5bGU+Cisg
ICAgLnRlc3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IHdpZHRoOiAxMmVtOyBoZWlnaHQ6IDZl
bTsgbWFyZ2luLXRvcDowfQorICAgIC5yZWYgeyBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcihkaXNw
bGF5LXAzIDAgMSAwKTsgd2lkdGg6IDEyZW07IGhlaWdodDogNmVtOyBtYXJnaW4tYm90dG9tOiAw
OyB9CisgICAgLnRlc3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsYWIoODYuNjE0NiUgLTEwNi41NTk5
IDEwMi44NzE3KTsgfQorPC9zdHlsZT4KKzxib2R5PgorICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlv
dSBzZWUgYSBzaW5nbGUgc3F1YXJlLCBhbmQgbm90IHR3byByZWN0YW5nbGVzIG9mIGRpZmZlcmVu
dCBjb2xvcnMuPC9wPgorICAgIDxwIGNsYXNzPSJyZWYiPiA8L3A+CisgICAgPHAgY2xhc3M9InRl
c3QiPiA8L3A+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGNoLTAwMS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9s
Y2gtMDAxLmh0bWwJKHJldmlzaW9uIDI3MTY5NykKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sY2gtMDAxLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTMsMTUgKzMsMTMgQEAKIDx0aXRsZT5DU1MgQ29sb3IgNDogU3BlY2lmeWluZyBM
YWIgYW5kIExDSDwvdGl0bGU+CiA8bGluayByZWw9ImF1dGhvciIgdGl0bGU9IkNocmlzIExpbGxl
eSIgaHJlZj0ibWFpbHRvOmNocmlzQHczLm9yZyI+CiA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3ItNC8jc3BlY2lmeWluZy1sYWItbGNoIj4K
LTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImdyZWVuYmxvY2stcmVmLmh0bWwiPgorPGxpbmsgcmVs
PSJtYXRjaCIgaHJlZj0iZ3JlZW5zcXVhcmUtcmVmLmh0bWwiPgogPG1ldGEgbmFtZT0iYXNzZXJ0
IiBjb250ZW50PSJsY2goKSB3aXRoIG5vIGFscGhhIj4KIDxzdHlsZT4KLSAgICAudGVzdCB7IGJh
Y2tncm91bmQtY29sb3I6IHJlZDsgd2lkdGg6IDEyZW07IGhlaWdodDogNmVtOyBtYXJnaW4tdG9w
OjB9Ci0gICAgLnJlZiB7IGJhY2tncm91bmQtY29sb3I6ICMwMDgwMDA7IHdpZHRoOiAxMmVtOyBo
ZWlnaHQ6IDZlbTsgbWFyZ2luLWJvdHRvbTogMH0KLSAgICAudGVzdCB7IGJhY2tncm91bmQtY29s
b3I6IGxjaCg0Ni4yNzclIDY3Ljk0NSAxMzQuNDI3KX0gLyogZ3JlZW4gKHNSR0IgIzAwODAwMCkg
Y29udmVydGVkIHRvIExDSCAqLworICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB3
aWR0aDogMTJlbTsgaGVpZ2h0OiAxMmVtOyB9CisgICAgLnRlc3QgeyBiYWNrZ3JvdW5kLWNvbG9y
OiBsY2goNDYuMjc3NSUgNjcuOTg5MiAxMzQuMzkxMik7IH0gLyogZ3JlZW4gKHNSR0IgIzAwODAw
MCkgY29udmVydGVkIHRvIExDSCAqLwogPC9zdHlsZT4KIDxib2R5PgogICAgIDxwPlRlc3QgcGFz
c2VzIGlmIHlvdSBzZWUgYSBncmVlbiBzcXVhcmUsIGFuZCBubyByZWQuPC9wPgotICAgIDxwIGNs
YXNzPSJyZWYiPiA8L3A+Ci0gICAgPHAgY2xhc3M9InRlc3QiPiA8L3A+CisgICAgPGRpdiBjbGFz
cz0idGVzdCI+PC9kaXY+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGNoLTAwMi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1j
b2xvci9sY2gtMDAyLmh0bWwJKHJldmlzaW9uIDI3MTY5NykKKysrIExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sY2gtMDAyLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTMsMTMgKzMsMTMgQEAKIDx0aXRsZT5DU1MgQ29sb3IgNDogU3BlY2lm
eWluZyBMYWIgYW5kIExDSDwvdGl0bGU+CiA8bGluayByZWw9ImF1dGhvciIgdGl0bGU9IkNocmlz
IExpbGxleSIgaHJlZj0ibWFpbHRvOmNocmlzQHczLm9yZyI+CiA8bGluayByZWw9ImhlbHAiIGhy
ZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3ItNC8jc3BlY2lmeWluZy1sYWIt
bGNoIj4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImJsYWNrYmxvY2stcmVmLmh0bWwiPgorPGxp
bmsgcmVsPSJtYXRjaCIgaHJlZj0iYmxhY2tzcXVhcmUtcmVmLmh0bWwiPgogPG1ldGEgbmFtZT0i
YXNzZXJ0IiBjb250ZW50PSJsY2goKSB3aXRoIG5vIGFscGhhIj4KIDxzdHlsZT4KICAgICAudGVz
dCB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgd2lkdGg6IDEyZW07IGhlaWdodDogMTJlbTsgfQot
ICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjogbGNoKDAlIDAgMCkgfSAvKiBibGFjayAoc1JH
QiAjMDAwMDAwKSBjb252ZXJ0ZWQgdG8gTGFiICovCisgICAgLnRlc3QgeyBiYWNrZ3JvdW5kLWNv
bG9yOiBsY2goMCUgMCAwKTsgfSAvKiBibGFjayAoc1JHQiAjMDAwMDAwKSBjb252ZXJ0ZWQgdG8g
TENIICovCiA8L3N0eWxlPgogPGJvZHk+CiAgICAgPHA+VGVzdCBwYXNzZXMgaWYgeW91IHNlZSBh
IGJsYWNrIHNxdWFyZSwgYW5kIG5vIHJlZC48L3A+Ci0gICAgPHAgY2xhc3M9InRlc3QiPiA8L3A+
CisgICAgPGRpdiBjbGFzcz0idGVzdCI+PC9kaXY+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGNoLTAwMy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1jb2xvci9sY2gtMDAzLmh0bWwJKHJldmlzaW9uIDI3MTY5NykKKysrIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9s
Y2gtMDAzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsMTQgKzMsMTQgQEAKIDx0aXRsZT5DU1Mg
Q29sb3IgNDogU3BlY2lmeWluZyBMYWIgYW5kIExDSDwvdGl0bGU+CiA8bGluayByZWw9ImF1dGhv
ciIgdGl0bGU9IkNocmlzIExpbGxleSIgaHJlZj0ibWFpbHRvOmNocmlzQHczLm9yZyI+CiA8bGlu
ayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3ItNC8j
c3BlY2lmeWluZy1sYWItbGNoIj4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9IndoaXRldGV4dC1y
ZWYuaHRtbCI+Cis8bGluayByZWw9Im1hdGNoIiBocmVmPSJ3aGl0ZXNxdWFyZS1yZWYuaHRtbCI+
CiA8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9ImxjaCgpIHdpdGggbm8gYWxwaGEiPgogPHN0
eWxlPgogICAgIGJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyB9CiAgICAgLnRlc3QgeyBi
YWNrZ3JvdW5kLWNvbG9yOiByZWQ7IHdpZHRoOiAxMmVtOyBoZWlnaHQ6IDEyZW07IH0KLSAgICAu
dGVzdCB7IGJhY2tncm91bmQtY29sb3I6IGxjaCgxMDAlIDAgMCk7fSAvKiB3aGl0ZSAoc1JHQiAj
RkZGRkZGKSBjb252ZXJ0ZWQgdG8gTGFiICovCisgICAgLnRlc3QgeyBiYWNrZ3JvdW5kLWNvbG9y
OiBsY2goMTAwJSAwIDApOyB9IC8qIHdoaXRlIChzUkdCICNGRkZGRkYpIGNvbnZlcnRlZCB0byBM
Q0ggKi8KIDwvc3R5bGU+CiA8Ym9keT4KICAgICA8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEg
d2hpdGUgc3F1YXJlLCBhbmQgbm8gcmVkLjwvcD4KLSAgICA8cCBjbGFzcz0idGVzdCI+IDwvcD4K
KyAgICA8ZGl2IGNsYXNzPSJ0ZXN0Ij48L2Rpdj4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sY2gtMDA0LWV4
cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xjaC0wMDQtZXhwZWN0ZWQuaHRtbAkocmV2aXNp
b24gMjcxNjk3KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWNvbG9yL2xjaC0wMDQtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
Miw5ICsyLDkgQEAKIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KIDx0aXRsZT5DU1MgQ29sb3IgNDog
U3BlY2lmeWluZyBMYWIgYW5kIExDSDwvdGl0bGU+CiA8c3R5bGU+Ci0gICAgLnRlc3QgeyBiYWNr
Z3JvdW5kLWNvbG9yOnJnYig3NS42MiUgMzAuNDUlIDQ3LjU2JSk7IHdpZHRoOiAxMmVtOyBoZWln
aHQ6IDEyZW07fSAvKiBsY2goNTAgNTAgMCkgY29udmVydGVkIHRvIHNSR0IgKGhhcHBlbnMgdG8g
YmUgdGhlIHNhbWUgYXMgbGFiKDUwIDUwIDApKi8KKyAgICAudGVzdCB7IGJhY2tncm91bmQtY29s
b3I6IHJnYig3NS42MjA4JSAzMC40NDg3JSA0Ny41NjM0JSk7IHdpZHRoOiAxMmVtOyBoZWlnaHQ6
IDEyZW07IH0gLyogbGNoKDUwJSA1MCAwKSBjb252ZXJ0ZWQgdG8gc1JHQiAoaGFwcGVucyB0byBi
ZSB0aGUgc2FtZSBhcyBsYWIoNTAlIDUwIDApKSAqLwogPC9zdHlsZT4KIDxib2R5PgogICAgIDxw
PlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBzaW5nbGUgc3F1YXJlLCBhbmQgbm90IHR3byByZWN0
YW5nbGVzIG9mIGRpZmZlcmVudCBjb2xvcnMuPC9wPgotICAgIDxwIGNsYXNzPSJ0ZXN0Ij4gPC9w
PgorICAgIDxkaXYgY2xhc3M9InRlc3QiPjwvZGl2PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xjaC0wMDQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtY29sb3IvbGNoLTAwNC5odG1sCShyZXZpc2lvbiAyNzE2OTcpCisrKyBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3Iv
bGNoLTAwNC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDE0ICs0LDE0IEBACiA8bGluayByZWw9
ImF1dGhvciIgdGl0bGU9IkNocmlzIExpbGxleSIgaHJlZj0ibWFpbHRvOmNocmlzQHczLm9yZyI+
CiA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29s
b3ItNC8jc3BlY2lmeWluZy1sYWItbGNoIj4KIDxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImxjaC0w
MDQtcmVmLmh0bWwiPgotPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJsY2goKSB3aXRoIG5v
IGFscGhhLCBwb3NpdGl2ZSBhIGF4aXMiPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJs
Y2goKSB3aXRoIG5vIGFscGhhLCBwb3NpdGl2ZSBhIGF4aXMgKHdoZW4gY29udmVydGVkIHRvIExh
YikiPgogPHN0eWxlPgotICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB3aWR0aDog
MTJlbTsgaGVpZ2h0OiA2ZW07IG1hcmdpbi10b3A6MH0KLSAgICAucmVmIHsgYmFja2dyb3VuZC1j
b2xvcjogcmdiKDc1LjYyJSwgMzAuNDUlLCA0Ny41NiUpOyB3aWR0aDogMTJlbTsgaGVpZ2h0OiA2
ZW07IG1hcmdpbi1ib3R0b206IDB9IC8qIGxjaCg1MCA1MCAwKSBjb252ZXJ0ZWQgdG8gc1JHQiAo
aGFwcGVucyB0byBiZSB0aGUgc2FtZSBhcyBsYWIoNTAgNTAgMCkqLwotICAgIC50ZXN0IHsgYmFj
a2dyb3VuZC1jb2xvcjogbGNoKDUwJSA1MCAwKX0gCisgICAgLnRlc3QgeyBiYWNrZ3JvdW5kLWNv
bG9yOiByZWQ7IHdpZHRoOiAxMmVtOyBoZWlnaHQ6IDZlbTsgbWFyZ2luLXRvcDogMDsgfQorICAg
IC5yZWYgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNzUuNjIwOCUgMzAuNDQ4NyUgNDcuNTYzNCUp
OyB3aWR0aDogMTJlbTsgaGVpZ2h0OiA2ZW07IG1hcmdpbi1ib3R0b206IDA7IH0gLyogbGNoKDUw
JSA1MCAwKSBjb252ZXJ0ZWQgdG8gc1JHQiAoaGFwcGVucyB0byBiZSB0aGUgc2FtZSBhcyBsYWIo
NTAlIDUwIDApKSAqLworICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjogbGNoKDUwJSA1MCAw
KTsgfQogPC9zdHlsZT4KIDxib2R5PgogICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBz
aW5nbGUgc3F1YXJlLCBhbmQgbm90IHR3byByZWN0YW5nbGVzIG9mIGRpZmZlcmVudCBjb2xvcnMu
PC9wPgotICAgIDxwIGNsYXNzPSJyZWYiPiA8L3A+Ci0gICAgPHAgY2xhc3M9InRlc3QiPiA8L3A+
CisgICAgPGRpdiBjbGFzcz0icmVmIj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJ0ZXN0Ij48L2Rp
dj4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1jb2xvci9sY2gtMDA1LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9y
L2xjaC0wMDUtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMjcxNjk3KQorKysgTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xjaC0wMDUtZXhw
ZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw5ICsyLDkgQEAKIDxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KIDx0aXRsZT5DU1MgQ29sb3IgNDogU3BlY2lmeWluZyBMYWIgYW5kIExDSDwvdGl0
bGU+CiA8c3R5bGU+Ci0gICAgLnRlc3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTAuNzklLCA3
NS41NSUsIDY2LjQwJSk7IHdpZHRoOiAxMmVtOyBoZWlnaHQ6IDEyZW07fSAvKiBsY2goNzAgNDUg
MTgwKSBjb252ZXJ0ZWQgdG8gc1JHQiAqLworICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjog
cmdiKDEwLjc5MDYlIDc1LjU1NjclIDY2LjM5ODIlKTsgd2lkdGg6IDEyZW07IGhlaWdodDogMTJl
bTsgfSAvKiBsY2goNzAlIDQ1IDE4MCkgY29udmVydGVkIHRvIHNSR0IgKi8KIDwvc3R5bGU+CiA8
Ym9keT4KICAgICA8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xlIHNxdWFyZSwgYW5k
IG5vdCB0d28gcmVjdGFuZ2xlcyBvZiBkaWZmZXJlbnQgY29sb3JzLjwvcD4KLSAgICA8cCBjbGFz
cz0idGVzdCI+IDwvcD4KKyAgICA8ZGl2IGNsYXNzPSJ0ZXN0Ij48L2Rpdj4KIDwvYm9keT4KSW5k
ZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1j
b2xvci9sY2gtMDA1Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xjaC0wMDUuaHRtbAkocmV2aXNpb24g
MjcxNjk3KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWNvbG9yL2xjaC0wMDUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCwxNCArNCwxNCBA
QAogPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJDaHJpcyBMaWxsZXkiIGhyZWY9Im1haWx0bzpj
aHJpc0B3My5vcmciPgogPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2RyYWZ0cy5jc3N3
Zy5vcmcvY3NzLWNvbG9yLTQvI3NwZWNpZnlpbmctbGFiLWxjaCI+CiA8bGluayByZWw9Im1hdGNo
IiBocmVmPSJsY2gtMDA1LXJlZi5odG1sIj4KLTxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0i
bGNoKCkgd2l0aCBubyBhbHBoYSwgbmVnYXRpdmUgYSBheGlzIj4KKzxtZXRhIG5hbWU9ImFzc2Vy
dCIgY29udGVudD0ibGNoKCkgd2l0aCBubyBhbHBoYSwgbmVnYXRpdmUgYSBheGlzICh3aGVuIGNv
bnZlcnRlZCB0byBMYWIpIj4KIDxzdHlsZT4KLSAgICAudGVzdCB7IGJhY2tncm91bmQtY29sb3I6
IHJlZDsgd2lkdGg6IDEyZW07IGhlaWdodDogNmVtOyBtYXJnaW4tdG9wOjB9Ci0gICAgLnJlZiB7
IGJhY2tncm91bmQtY29sb3I6IHJnYigxMC43OSUsIDc1LjU1JSwgNjYuNDAlKTsgd2lkdGg6IDEy
ZW07IGhlaWdodDogNmVtOyBtYXJnaW4tYm90dG9tOiAwfSAvKiBsY2goNzAgNDUgMTgwKSBjb252
ZXJ0ZWQgdG8gc1JHQiAqLwotICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjogbGNoKDcwJSA0
NSAtMTgwKX0gCisgICAgLnRlc3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IHdpZHRoOiAxMmVt
OyBoZWlnaHQ6IDZlbTsgbWFyZ2luLXRvcDogMDsgfQorICAgIC5yZWYgeyBiYWNrZ3JvdW5kLWNv
bG9yOiByZ2IoMTAuNzkwNiUgNzUuNTU2NyUgNjYuMzk4MiUpOyB3aWR0aDogMTJlbTsgaGVpZ2h0
OiA2ZW07IG1hcmdpbi1ib3R0b206IDA7IH0gLyogbGNoKDcwJSA0NSAxODApIGNvbnZlcnRlZCB0
byBzUkdCICovCisgICAgLnRlc3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsY2goNzAlIDQ1IC0xODAp
OyB9CiA8L3N0eWxlPgogPGJvZHk+CiAgICAgPHA+VGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIHNp
bmdsZSBzcXVhcmUsIGFuZCBub3QgdHdvIHJlY3RhbmdsZXMgb2YgZGlmZmVyZW50IGNvbG9ycy48
L3A+Ci0gICAgPHAgY2xhc3M9InJlZiI+IDwvcD4KLSAgICA8cCBjbGFzcz0idGVzdCI+IDwvcD4K
KyAgICA8ZGl2IGNsYXNzPSJyZWYiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InRlc3QiPjwvZGl2
PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWNvbG9yL2xjaC0wMDYtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3Iv
bGNoLTAwNi1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAyNzE2OTcpCisrKyBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGNoLTAwNi1leHBl
Y3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDkgKzIsOSBAQAogPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgogPHRpdGxlPkNTUyBDb2xvciA0OiBTcGVjaWZ5aW5nIExhYiBhbmQgTENIPC90aXRs
ZT4KIDxzdHlsZT4KLSAgICAudGVzdCB7IGJhY2tncm91bmQtY29sb3I6IHJnYig3Ni42MiUsIDY2
LjM2JSwgNS41OCUpOyB3aWR0aDogMTJlbTsgaGVpZ2h0OiAxMmVtO30gLyogbGNoKDcwIDcwIDkw
KSBjb252ZXJ0ZWQgdG8gc1JHQiAqLworICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjogcmdi
KDc2LjYyNTQlIDY2LjM2MDclIDUuNTc3NSUpOyB3aWR0aDogMTJlbTsgaGVpZ2h0OiAxMmVtOyB9
IC8qIGxjaCg3MCUgNzAgOTApIGNvbnZlcnRlZCB0byBzUkdCICovCiA8L3N0eWxlPgogPGJvZHk+
CiAgICAgPHA+VGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIHNpbmdsZSBzcXVhcmUsIGFuZCBub3Qg
dHdvIHJlY3RhbmdsZXMgb2YgZGlmZmVyZW50IGNvbG9ycy48L3A+Ci0gICAgPHAgY2xhc3M9InRl
c3QiPiA8L3A+CisgICAgPGRpdiBjbGFzcz0idGVzdCI+PC9kaXY+CiA8L2JvZHk+CkluZGV4OiBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3Iv
bGNoLTAwNi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sY2gtMDA2Lmh0bWwJKHJldmlzaW9uIDI3MTY5
NykKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1jb2xvci9sY2gtMDA2Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsMTQgKzQsMTQgQEAKIDxs
aW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iQ2hyaXMgTGlsbGV5IiBocmVmPSJtYWlsdG86Y2hyaXNA
dzMub3JnIj4KIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3Jn
L2Nzcy1jb2xvci00LyNzcGVjaWZ5aW5nLWxhYi1sY2giPgogPGxpbmsgcmVsPSJtYXRjaCIgaHJl
Zj0ibGNoLTAwNi1yZWYuaHRtbCI+Ci08bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9ImxjaCgp
IHdpdGggbm8gYWxwaGEsIHBvc2l0aXZlIGIgYXhpcyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNv
bnRlbnQ9ImxjaCgpIHdpdGggbm8gYWxwaGEsIHBvc2l0aXZlIGIgYXhpcyAod2hlbiBjb252ZXJ0
ZWQgdG8gTGFiKSI+CiA8c3R5bGU+Ci0gICAgLnRlc3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7
IHdpZHRoOiAxMmVtOyBoZWlnaHQ6IDZlbTsgbWFyZ2luLXRvcDowfQotICAgIC5yZWYgeyBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2IoNzYuNjIlLCA2Ni4zNiUsIDUuNTglKTsgd2lkdGg6IDEyZW07IGhl
aWdodDogNmVtOyBtYXJnaW4tYm90dG9tOiAwfSAvKiBsY2goNzAgNzAgOTApIGNvbnZlcnRlZCB0
byBzUkdCICovCi0gICAgLnRlc3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsY2goNzAlIDcwIDkwKX0g
CisgICAgLnRlc3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IHdpZHRoOiAxMmVtOyBoZWlnaHQ6
IDZlbTsgbWFyZ2luLXRvcDogMDsgfQorICAgIC5yZWYgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io
NzYuNjI1NCUgNjYuMzYwNyUgNS41Nzc1JSk7IHdpZHRoOiAxMmVtOyBoZWlnaHQ6IDZlbTsgbWFy
Z2luLWJvdHRvbTogMDsgfSAvKiBsY2goNzAlIDcwIDkwKSBjb252ZXJ0ZWQgdG8gc1JHQiAqLwor
ICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjogbGNoKDcwJSA3MCA5MCk7IH0KIDwvc3R5bGU+
CiA8Ym9keT4KICAgICA8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xlIHNxdWFyZSwg
YW5kIG5vdCB0d28gcmVjdGFuZ2xlcyBvZiBkaWZmZXJlbnQgY29sb3JzLjwvcD4KLSAgICA8cCBj
bGFzcz0icmVmIj4gPC9wPgotICAgIDxwIGNsYXNzPSJ0ZXN0Ij4gPC9wPgorICAgIDxkaXYgY2xh
c3M9InJlZiI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0idGVzdCI+PC9kaXY+CiA8L2JvZHk+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Y29sb3IvbGNoLTAwNy1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sY2gtMDA3LWV4cGVj
dGVkLmh0bWwJKHJldmlzaW9uIDI3MTY5NykKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sY2gtMDA3LWV4cGVjdGVkLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTIsOSArMiw5IEBACiA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiA8dGl0
bGU+Q1NTIENvbG9yIDQ6IFNwZWNpZnlpbmcgTGFiIGFuZCBMQ0g8L3RpdGxlPgogPHN0eWxlPgot
ICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI3LjM4JSA1MS45MiUgOTEuMjUlKTsg
d2lkdGg6IDEyZW07IGhlaWdodDogMTJlbTt9IC8qIGxjaCg1NSUgNTggMjc1KSBjb252ZXJ0ZWQg
dG8gc1JHQiAqLworICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEyLjgxMjglIDUz
LjEwNSUgOTIuNzY0NSUpOyB3aWR0aDogMTJlbTsgaGVpZ2h0OiAxMmVtOyB9IC8qIGxjaCg1NSUg
NjAgMjcwKSBjb252ZXJ0ZWQgdG8gc1JHQiAqLwogPC9zdHlsZT4KIDxib2R5PgogICAgIDxwPlRl
c3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBzaW5nbGUgc3F1YXJlLCBhbmQgbm90IHR3byByZWN0YW5n
bGVzIG9mIGRpZmZlcmVudCBjb2xvcnMuPC9wPgotICAgIDxwIGNsYXNzPSJ0ZXN0Ij4gPC9wPgor
ICAgIDxkaXYgY2xhc3M9InRlc3QiPjwvZGl2PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xjaC0wMDcuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtY29sb3IvbGNoLTAwNy5odG1sCShyZXZpc2lvbiAyNzE2OTcpCisrKyBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvbGNo
LTAwNy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDE0ICs0LDE0IEBACiA8bGluayByZWw9ImF1
dGhvciIgdGl0bGU9IkNocmlzIExpbGxleSIgaHJlZj0ibWFpbHRvOmNocmlzQHczLm9yZyI+CiA8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3It
NC8jc3BlY2lmeWluZy1sYWItbGNoIj4KIDxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImxjaC0wMDct
cmVmLmh0bWwiPgotPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJsYWIoKSB3aXRoIG5vIGFs
cGhhLCBuZWdhdGl2ZSBiIGF4aXMiPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJsY2go
KSB3aXRoIG5vIGFscGhhLCBuZWdhdGl2ZSBiIGF4aXMgKHdoZW4gY29udmVydGVkIHRvIExhYiki
PgogPHN0eWxlPgotICAgIC50ZXN0IHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB3aWR0aDogMTJl
bTsgaGVpZ2h0OiA2ZW07IG1hcmdpbi10b3A6MH0KLSAgICAucmVmIHsgYmFja2dyb3VuZC1jb2xv
cjogcmdiKDI3LjM4JSA1MS45MiUgOTEuMjUlKTsgd2lkdGg6IDEyZW07IGhlaWdodDogNmVtOyBt
YXJnaW4tYm90dG9tOiAwfSAvKiBsY2goNTUlIDU4IDI3NSkgY29udmVydGVkIHRvIHNSR0IgKi8K
LSAgICAudGVzdCB7IGJhY2tncm91bmQtY29sb3I6IGxjaCg1NSUgNTggMjc1KX0gCisgICAgLnRl
c3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IHdpZHRoOiAxMmVtOyBoZWlnaHQ6IDZlbTsgbWFy
Z2luLXRvcDogMDsgfQorICAgIC5yZWYgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTIuODEyOCUg
NTMuMTA1JSA5Mi43NjQ1JSk7IHdpZHRoOiAxMmVtOyBoZWlnaHQ6IDZlbTsgbWFyZ2luLWJvdHRv
bTogMDsgfSAvKiBsY2goNTUlIDYwIDI3MCkgY29udmVydGVkIHRvIHNSR0IgKi8KKyAgICAudGVz
dCB7IGJhY2tncm91bmQtY29sb3I6IGxjaCg1NSUgNjAgMjcwKTsgfQogPC9zdHlsZT4KIDxib2R5
PgogICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBzaW5nbGUgc3F1YXJlLCBhbmQgbm90
IHR3byByZWN0YW5nbGVzIG9mIGRpZmZlcmVudCBjb2xvcnMuPC9wPgotICAgIDxwIGNsYXNzPSJy
ZWYiPiA8L3A+Ci0gICAgPHAgY2xhc3M9InRlc3QiPiA8L3A+CisgICAgPGRpdiBjbGFzcz0icmVm
Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJ0ZXN0Ij48L2Rpdj4KIDwvYm9keT4KSW5kZXg6IExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9s
Y2gtMDA4LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xjaC0wMDgtZXhwZWN0ZWQuaHRt
bAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtY29sb3IvbGNoLTAwOC1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHRpdGxlPkNTUyBDb2xvciA0OiBTcGVjaWZ5aW5nIExhYiBhbmQgTENIPC90aXRsZT4KKzxz
dHlsZT4KKyAgICAudGVzdCB7IGJhY2tncm91bmQtY29sb3I6IGNvbG9yKGRpc3BsYXktcDMgMCAx
IDApOyB3aWR0aDogMTJlbTsgaGVpZ2h0OiAxMmVtOyB9Cis8L3N0eWxlPgorPGJvZHk+CisgICAg
PHA+VGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIHNpbmdsZSBzcXVhcmUsIGFuZCBub3QgdHdvIHJl
Y3RhbmdsZXMgb2YgZGlmZmVyZW50IGNvbG9ycy48L3A+CisgICAgPHAgY2xhc3M9InRlc3QiPiA8
L3A+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtY29sb3IvbGNoLTAwOC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb2xvci9sY2gtMDA4
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2xjaC0wMDguaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5DU1MgQ29sb3IgNDogU3BlY2lmeWluZyBMYWIgYW5kIExDSDwvdGl0bGU+Cis8bGluayBy
ZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3ItNC8jc3Bl
Y2lmeWluZy1sYWItbGNoIj4KKzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImxjaC0wMDgtcmVmLmh0
bWwiPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJsY2goKSBvdXRzaWRlIHRoZSBzUkdC
IGdhbXV0Ij4KKzxzdHlsZT4KKyAgICAudGVzdCB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgd2lk
dGg6IDEyZW07IGhlaWdodDogNmVtOyBtYXJnaW4tdG9wOjB9CisgICAgLnJlZiB7IGJhY2tncm91
bmQtY29sb3I6IGNvbG9yKGRpc3BsYXktcDMgMCAxIDApOyB3aWR0aDogMTJlbTsgaGVpZ2h0OiA2
ZW07IG1hcmdpbi1ib3R0b206IDA7IH0KKyAgICAudGVzdCB7IGJhY2tncm91bmQtY29sb3I6IGxj
aCg4Ni42MTQ2JSAxNDguMTEzNSAxMzYuMDA4OSk7IH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgICA8
cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xlIHNxdWFyZSwgYW5kIG5vdCB0d28gcmVj
dGFuZ2xlcyBvZiBkaWZmZXJlbnQgY29sb3JzLjwvcD4KKyAgICA8cCBjbGFzcz0icmVmIj4gPC9w
PgorICAgIDxwIGNsYXNzPSJ0ZXN0Ij4gPC9wPgorPC9ib2R5Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>