<?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>77245</bug_id>
          
          <creation_ts>2012-01-27 14:22:14 -0800</creation_ts>
          <short_desc>[Chromium] SVG Composite of Offset crashes</short_desc>
          <delta_ts>2012-03-05 17:00:42 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Stephen Chenney">schenney</reporter>
          <assigned_to name="Stephen Chenney">schenney</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>krit</cc>
    
    <cc>reed</cc>
    
    <cc>schenney</cc>
    
    <cc>senorblanco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>544361</commentid>
    <comment_count>0</comment_count>
      <attachid>124368</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-01-27 14:22:14 -0800</bug_when>
    <thetext>Created attachment 124368
Test case, suitable for LayoutTest

What steps will reproduce the problem?
1. Load the attached test case as a chromium LayoutTest
2. In current r106139, it crashes
3. In r105663 it produces incorrect results

What is the expected output? What do you see instead?
You should see a green rectangle and an offset of it, with the upper portion of the image empty. In r105663, you see that the offset rectangle has been incorrectly clipped, and the difference operation that should have removed the upper rectangles has left something behind, because it is subtracting the clipped lower rectangle.

This works in Firefox, and is disabled in Safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544423</commentid>
    <comment_count>1</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-01-27 15:19:54 -0800</bug_when>
    <thetext>This bug may exist prior to r105663. It&apos;s a debug only assert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544425</commentid>
    <comment_count>2</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-01-27 15:21:04 -0800</bug_when>
    <thetext>Somehow a pre-multiplied alpha image is being filled with non-zero RGB but zero alpha, a definite no-no.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546216</commentid>
    <comment_count>3</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-01-31 10:37:47 -0800</bug_when>
    <thetext>I have tracked down the crash to the arithmetic compositing behavior, where:

result = k1*i1*i2 + k2*i1 + k3*i2 + k4

with premultiplied alpha and k1 = k4 = 0, k2 = -1, k3 = 1. That is, computing a difference image in premultiplied alpha.

For opaque pixels, a = 255, this will always generate a = 0 result. But if the color values are not the same it will generate non-zero r, g, or b with a = 0 in a premultiplied pixel, which hits an assert in WebCore/platform/graphics/skia/SkiaUtils.cpp:91, in the method SkPMColorToColor.
The assert checks that r=g=b=0 when a=0, as is required for premultiplied alpha.

There are two possible fixes for this. One is to remove the assert and go with the behavior that a = 0 in a color conversion forces r=g=b=0 regardless of their values. This just makes the debug config behavior match the release behavior, and match other browsers.

The other is to add a test in WebCore before sending the pixel to Skia. I really don&apos;t want to do that, because it would add a branch in otherwise tight loops over all pixel locations.

So I&apos;ll put up a simple patch that removes the assert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546231</commentid>
    <comment_count>4</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2012-01-31 10:57:25 -0800</bug_when>
    <thetext>I had assumed that &quot;arithmetic&quot; operated on unpremultiplied colors. Without that, we should expect to see lots and lots of illegal premul results. Where is this documented?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546273</commentid>
    <comment_count>5</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-01-31 11:16:30 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; I had assumed that &quot;arithmetic&quot; operated on unpremultiplied colors. Without that, we should expect to see lots and lots of illegal premul results. Where is this documented?

&quot;Unless otherwise stated, all image filters operate on premultiplied RGBA samples. Filters which work more naturally on non-premultiplied data (feColorMatrix and feComponentTransfer) will temporarily undo and redo premultiplication as specified. All raster effect filtering operations take 1 to N input RGBA images, additional attributes as parameters, and produce a single output RGBA image.&quot;

There doesn&apos;t seem to be an exception for feComposite with the &quot;arithmetic&quot; operator, but it seems like there should be.  We should probably do the unpremultiply/process/premultiply dance, but that doesn&apos;t seem to be in the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546288</commentid>
    <comment_count>6</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-01-31 11:30:40 -0800</bug_when>
    <thetext>I&apos;ll come up with a test case we can use to verify the behavior of other browsers. We can then see about updating the spec or changing the current behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546304</commentid>
    <comment_count>7</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2012-01-31 11:40:21 -0800</bug_when>
    <thetext>Is there an active discussion area somewhere to see what other people are thinking about arithmetic?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546397</commentid>
    <comment_count>8</comment_count>
      <attachid>124802</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-01-31 12:57:59 -0800</bug_when>
    <thetext>Created attachment 124802
Test to verify behavior of arithmetic image ops</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546403</commentid>
    <comment_count>9</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-01-31 13:01:46 -0800</bug_when>
    <thetext>The attached updated test case verifies that arithmetic ops are done pre-multiplied. I tested in Chrome and Firefox and got the same result.

I would expect this example, where result = constant, to produce the non-pre-multiplied answer in which you get a semi-opaque gray image rather than a semi-opaque white image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546404</commentid>
    <comment_count>10</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-01-31 13:02:36 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Is there an active discussion area somewhere to see what other people are thinking about arithmetic?

Not that I&apos;m aware of. The place to start something would be the W3C SVG mailing list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546409</commentid>
    <comment_count>11</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2012-01-31 13:04:48 -0800</bug_when>
    <thetext>Well, I can believe it is implemented wi/ premuls, I&apos;m just not convinced that is correct/useful :) Have you tried IE9/10? If all 3 browsers agreed, and/or we can find some spec person somewhere to confirm this, I&apos;ll go ahead and change skia&apos;s implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546508</commentid>
    <comment_count>12</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2012-01-31 14:39:35 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; I had assumed that &quot;arithmetic&quot; operated on unpremultiplied colors. Without that, we should expect to see lots and lots of illegal premul results. Where is this documented?

Yeah this behaviour is surprised me sometimes as well. But all browsers do this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546611</commentid>
    <comment_count>13</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-01-31 16:22:37 -0800</bug_when>
    <thetext>IE9 apparently doesn&apos;t support SVG filters, or at least not those I&apos;ve used in the test cases. I&apos;m setting up IE10 to test, but right now  believe that pre-multiplied is the specified way to do it and the way we should do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546613</commentid>
    <comment_count>14</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-01-31 16:25:26 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; IE9 apparently doesn&apos;t support SVG filters, or at least not those I&apos;ve used in the test cases. I&apos;m setting up IE10 to test, but right now  believe that pre-multiplied is the specified way to do it and the way we should do it.

IE10PP3 and later (which also require Windows8, IIRC) support them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547017</commentid>
    <comment_count>15</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2012-02-01 05:07:12 -0800</bug_when>
    <thetext>OK, we need to implement it in premul space (oiy). Either way, the impl must clamp the resulting values to keep them legal premul, or the images just won&apos;t compose correctly afterwards. The assert firing in Skia is not pedantic, it is signaling that this image will not draw as expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547349</commentid>
    <comment_count>16</comment_count>
      <attachid>125011</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-02-01 14:02:30 -0800</bug_when>
    <thetext>Created attachment 125011
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547354</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-01 14:04:15 -0800</bug_when>
    <thetext>Attachment 125011 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1

Traceback (most recent call last):
  File &quot;Tools/Scripts/check-webkit-style&quot;, line 48, in &lt;module&gt;
    sys.exit(CheckWebKitStyle().main())
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/style/main.py&quot;, line 154, in main
    patch_checker.check(patch)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/style/patchreader.py&quot;, line 66, in check
    self._text_file_reader.process_file(file_path=path, line_numbers=line_numbers)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/style/filereader.py&quot;, line 130, in process_file
    self._processor.process(lines, file_path, **kwargs)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/style/checker.py&quot;, line 826, in process
    checker.check(lines)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/style/checkers/test_expectations.py&quot;, line 119, in check
    overrides=overrides)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/style/checkers/test_expectations.py&quot;, line 96, in check_test_expectations
    is_lint_mode=True, overrides=overrides)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py&quot;, line 726, in __init__
    self._add_skipped_tests(port.skipped_tests(tests))
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/layout_tests/port/webkit.py&quot;, line 376, in skipped_tests
    return self.skipped_layout_tests(test_list)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/layout_tests/port/webkit.py&quot;, line 372, in skipped_layout_tests
    tests_to_skip.update(self._skipped_tests_for_unsupported_features(test_list))
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/layout_tests/port/webkit.py&quot;, line 319, in _skipped_tests_for_unsupported_features
    if self._has_test_in_directories(self._missing_feature_to_skipped_tests().values(), test_list):
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/layout_tests/port/webkit.py&quot;, line 311, in _has_test_in_directories
    for directory, test in itertools.product(directories, test_list):
TypeError: &apos;NoneType&apos; object is not iterable


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547357</commentid>
    <comment_count>18</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-02-01 14:06:14 -0800</bug_when>
    <thetext>OK folks, here&apos;s an attempt to fix the issue in the software arithmetic composite filter.

This causes our behavior to differ from Firefox, which seems to allow intermediate invalid pixel states. The change proposed here enforces that pixel states are always valid at every stage of a chained set of arithmetic composite operations.

To my mind we should take this patch, as invalid pixels can cause all sorts of problems as they propagate though the filter stack. It may also be a very little bit little faster (or a very little bit slower).

Feedback welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547364</commentid>
    <comment_count>19</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2012-02-01 14:18:47 -0800</bug_when>
    <thetext>I agree that we should clamp the components against the computed alpha (and zero).

Having to copy/paste the same block of code 4 times (with no comment above each) makes it hard to scan for correctness. Can a local inline helper function encapsulate that block without incurring a perf hit?

I will change the skia impl to match this premul (instead of unpremul) and clamping behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547392</commentid>
    <comment_count>20</comment_count>
      <attachid>125021</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-02-01 14:56:39 -0800</bug_when>
    <thetext>Created attachment 125021
Patch

This removes the redundant code. I wanted to avoid static inlines to ensure that the template optimization happens (not sure how compilers will behave otherwise).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547394</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-01 14:58:36 -0800</bug_when>
    <thetext>Attachment 125021 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1

Traceback (most recent call last):
  File &quot;Tools/Scripts/check-webkit-style&quot;, line 48, in &lt;module&gt;
    sys.exit(CheckWebKitStyle().main())
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/style/main.py&quot;, line 154, in main
    patch_checker.check(patch)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/style/patchreader.py&quot;, line 66, in check
    self._text_file_reader.process_file(file_path=path, line_numbers=line_numbers)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/style/filereader.py&quot;, line 130, in process_file
    self._processor.process(lines, file_path, **kwargs)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/style/checker.py&quot;, line 826, in process
    checker.check(lines)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/style/checkers/test_expectations.py&quot;, line 119, in check
    overrides=overrides)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/style/checkers/test_expectations.py&quot;, line 96, in check_test_expectations
    is_lint_mode=True, overrides=overrides)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py&quot;, line 726, in __init__
    self._add_skipped_tests(port.skipped_tests(tests))
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/layout_tests/port/webkit.py&quot;, line 376, in skipped_tests
    return self.skipped_layout_tests(test_list)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/layout_tests/port/webkit.py&quot;, line 372, in skipped_layout_tests
    tests_to_skip.update(self._skipped_tests_for_unsupported_features(test_list))
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/layout_tests/port/webkit.py&quot;, line 319, in _skipped_tests_for_unsupported_features
    if self._has_test_in_directories(self._missing_feature_to_skipped_tests().values(), test_list):
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/layout_tests/port/webkit.py&quot;, line 311, in _has_test_in_directories
    for directory, test in itertools.product(directories, test_list):
TypeError: &apos;NoneType&apos; object is not iterable


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547799</commentid>
    <comment_count>22</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-02 05:06:26 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; IE9 apparently doesn&apos;t support SVG filters, or at least not those I&apos;ve used in the test cases. I&apos;m setting up IE10 to test, but right now  believe that pre-multiplied is the specified way to do it and the way we should do it.
&gt; 
&gt; IE10PP3 and later (which also require Windows8, IIRC) support them.
I&apos;d rather test with Opera, which has a stable SVG implementation for years now - especially for filters.

(In reply to comment #18)
&gt; This causes our behavior to differ from Firefox, which seems to allow intermediate invalid pixel states. The change proposed here enforces that pixel states are always valid at every stage of a chained set of arithmetic composite operations.
We should create a test and try with Batik/Opera, FF. IE10 filter support is brand-new, likely to contain bugs as well - Batik/Opera implement this much longer.

&gt; To my mind we should take this patch, as invalid pixels can cause all sorts of problems as they propagate though the filter stack. It may also be a very little bit little faster (or a very little bit slower).
Looking at your patch now, though I think you should first test against all viewers I mentioned, and if the outcome is different between most of them, then we should raise an issue with the SVG WG, to see how to proceed.

The history of SVG has proved, that we shouldn&apos;t do anything w/o agreeing, this will only lead to divergences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547801</commentid>
    <comment_count>23</comment_count>
      <attachid>125021</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-02 05:08:57 -0800</bug_when>
    <thetext>Comment on attachment 125021
Patch

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

First quick round of review, will not touch the r? state yet.

&gt; LayoutTests/svg/filters/feComposite-arithmetic-invalid-rgba.svg:3
&gt; +        &lt;!-- This filter produces intermediate results that are invalid pre-multiplioed rgba pixels. --&gt;

typo: pre-multiplied

&gt; LayoutTests/svg/filters/feComposite-arithmetic-invalid-rgba.svg:6
&gt; +        &lt;!-- Specifically, after the 4th step an interior pixel will contain (0, 0.8, 0, 0.5) which  --&gt;
&gt; +        &lt;!-- is invalid because g &gt; a. When used in other operations, this may generate bad results, --&gt;
&gt; +        &lt;!-- so we clamp the color values to [0, alpha] on all intermediate operations.              --&gt;

This sounds wonderful, I hope we can take that approach.
CC&apos;ing Zoltan &amp; Dirk who should comment as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547856</commentid>
    <comment_count>24</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-02-02 07:02:26 -0800</bug_when>
    <thetext>Opera and Firefox clearly allow invalid intermediate results. That is, they have the same behavior that Webkit currently has (modulo the crash in Skia debug). Say we have this filter sequence:

&lt;feComposite operator=&quot;arithmetic&quot; in=&quot;SourceGraphic&quot; in2=&quot;SourceGraphic&quot; k1=&quot;0&quot; k2=&quot;0.2&quot; k3=&quot;0&quot; k4=&quot;0&quot; result=&quot;rgba02&quot; /&gt;
&lt;feComposite operator=&quot;arithmetic&quot; in=&quot;SourceAlpha&quot; in2=&quot;SourceAlpha&quot; k1=&quot;0&quot; k2=&quot;0.3&quot; k3=&quot;0&quot; k4=&quot;0&quot; result=&quot;alpha05&quot; /&gt;
&lt;feComposite operator=&quot;arithmetic&quot; in=&quot;rgba02&quot; in2=&quot;alpha05&quot; k1=&quot;0&quot; k2=&quot;1&quot; k3=&quot;1&quot; k4=&quot;0&quot; result=&quot;tmp&quot; /&gt;
&lt;feComposite operator=&quot;arithmetic&quot; in=&quot;SourceGraphic&quot; in2=&quot;tmp&quot; k1=&quot;0&quot; k2=&quot;1&quot; k3=&quot;-1&quot; k4=&quot;0&quot; /&gt;
&lt;feComposite operator=&quot;arithmetic&quot; in=&quot;tmp&quot; k1=&quot;0&quot; k2=&quot;1&quot; k3=&quot;1&quot; k4=&quot;0&quot; /&gt;

Given an input of (0, 255, 0, 255), the result is:

rgba02 contains (0, 51, 0, 51)
alpha05 contains (0, 0, 0, 77)
tmp contains (0, 51, 0, 128)
step 4 results in (0, 204, 0, 127) which is an invalid pre-mul rgba pixel
final result is (0, 255, 0, 255)

I think it&apos;s time to escalate to the SVG WG. The concrete proposal is to modify section 15.12 of the SVG 1.1 spec (16 August 2011) to change the statement:

&quot;Additionally, a component-wise arithmetic operation (with the result clamped between [0..1]) can be applied.&quot;

to instead say

&quot;Additionally, a component-wise arithmetic operation can be applied. Arithmetic results, including intermediate results, are clamped to alpha in [0,1] and color components in [0,alpha].&quot;

On the example above, the sequence would be:

(0, 51, 0, 51)
(0, 0, 0, 77)
(0, 51, 0, 128)
(0, 127, 0, 127)
(0, 178, 0, 255)

As far as this bug goes, I&apos;ve removed the review and commit flags. I&apos;ll look at alternate bug fixes that allow overflowing intermediate values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547857</commentid>
    <comment_count>25</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-02 07:05:24 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; Opera and Firefox clearly allow invalid intermediate results. That is, they have the same behavior that Webkit currently has (modulo the crash in Skia debug). Say we have this filter sequence:
&gt; 
&gt; &lt;feComposite operator=&quot;arithmetic&quot; in=&quot;SourceGraphic&quot; in2=&quot;SourceGraphic&quot; k1=&quot;0&quot; k2=&quot;0.2&quot; k3=&quot;0&quot; k4=&quot;0&quot; result=&quot;rgba02&quot; /&gt;
&gt; &lt;feComposite operator=&quot;arithmetic&quot; in=&quot;SourceAlpha&quot; in2=&quot;SourceAlpha&quot; k1=&quot;0&quot; k2=&quot;0.3&quot; k3=&quot;0&quot; k4=&quot;0&quot; result=&quot;alpha05&quot; /&gt;
&gt; &lt;feComposite operator=&quot;arithmetic&quot; in=&quot;rgba02&quot; in2=&quot;alpha05&quot; k1=&quot;0&quot; k2=&quot;1&quot; k3=&quot;1&quot; k4=&quot;0&quot; result=&quot;tmp&quot; /&gt;
&gt; &lt;feComposite operator=&quot;arithmetic&quot; in=&quot;SourceGraphic&quot; in2=&quot;tmp&quot; k1=&quot;0&quot; k2=&quot;1&quot; k3=&quot;-1&quot; k4=&quot;0&quot; /&gt;
&gt; &lt;feComposite operator=&quot;arithmetic&quot; in=&quot;tmp&quot; k1=&quot;0&quot; k2=&quot;1&quot; k3=&quot;1&quot; k4=&quot;0&quot; /&gt;
&gt; 
&gt; Given an input of (0, 255, 0, 255), the result is:
&gt; 
&gt; rgba02 contains (0, 51, 0, 51)
&gt; alpha05 contains (0, 0, 0, 77)
&gt; tmp contains (0, 51, 0, 128)
&gt; step 4 results in (0, 204, 0, 127) which is an invalid pre-mul rgba pixel
&gt; final result is (0, 255, 0, 255)
&gt; 
&gt; I think it&apos;s time to escalate to the SVG WG. The concrete proposal is to modify section 15.12 of the SVG 1.1 spec (16 August 2011) to change the statement:
&gt; 
&gt; &quot;Additionally, a component-wise arithmetic operation (with the result clamped between [0..1]) can be applied.&quot;
&gt; 
&gt; to instead say
&gt; 
&gt; &quot;Additionally, a component-wise arithmetic operation can be applied. Arithmetic results, including intermediate results, are clamped to alpha in [0,1] and color components in [0,alpha].&quot;

How about you mail www-svg about this? I think we could get this resolved even for SVG 1.1 2nd edition, and if not, then for SVG2. I&apos;m all for consistency, but if your approach is superior, we should convince the others. Not being an expert in filtering, there maybe some pros for the current approach, that I&apos;m overlooking - hence we should ask the WG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547861</commentid>
    <comment_count>26</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2012-02-02 07:41:36 -0800</bug_when>
    <thetext>Alternatively (or in addition), if we&apos;re going to open a discussion, I would like us to consider defining this mode to operate on nonpremultiplied components. This (imho) makes more sense, and has the nice side-effect of naturally handling the component-range issue &quot;for free&quot;. If the src images are not already in nonpremul, it isn&apos;t free, but we already face that for some other effects (matrix, covolution), where it is more &quot;correct&quot; to operate in that space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547900</commentid>
    <comment_count>27</comment_count>
      <attachid>125011</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-02-02 09:02:30 -0800</bug_when>
    <thetext>Comment on attachment 125011
Patch

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

&gt; Source/WebCore/platform/graphics/filters/FEComposite.cpp:136
&gt; +        unsigned char a1 = *(source + 3);
&gt; +        unsigned char a2 = *(destination + 3);

Perf note:  it&apos;s often much more efficient to load 32 bits at a time, and extract pixel color components with shifts than to do 4 8-bit loads (on x86 at least).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547905</commentid>
    <comment_count>28</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-02-02 09:06:22 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 125011 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125011&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/FEComposite.cpp:136
&gt; &gt; +        unsigned char a1 = *(source + 3);
&gt; &gt; +        unsigned char a2 = *(destination + 3);
&gt; 
&gt; Perf note:  it&apos;s often much more efficient to load 32 bits at a time, and extract pixel color components with shifts than to do 4 8-bit loads (on x86 at least).

Is that safe across different endian machines?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547988</commentid>
    <comment_count>29</comment_count>
      <attachid>125153</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-02-02 11:01:35 -0800</bug_when>
    <thetext>Created attachment 125153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547989</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-02 11:03:39 -0800</bug_when>
    <thetext>Attachment 125153 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1

Last 3072 characters of output:
lock.html  [test/expectations] [2]
LayoutTests/platform/mac/test_expectations.txt:198:  Path does not exist. fast/dom/HTMLTableElement/colSpan.html  [test/expectations] [2]
LayoutTests/platform/mac/test_expectations.txt:199:  Path does not exist. fast/dom/HTMLTableElement/createCaption.html  [test/expectations] [2]
LayoutTests/platform/mac/test_expectations.txt:200:  Path does not exist. fast/repaint/table-section-repaint.html  [test/expectations] [2]
LayoutTests/platform/mac/test_expectations.txt:201:  Path does not exist. fast/table/frame-and-rules.html  [test/expectations] [2]
LayoutTests/platform/mac/test_expectations.txt:204:  Path does not exist. http/tests/media/video-buffering-repaints-controls.html  [test/expectations] [2]
LayoutTests/platform/mac/test_expectations.txt:207:  Path does not exist. fast/table/027.html  [test/expectations] [2]
LayoutTests/platform/mac/test_expectations.txt:208:  Path does not exist. fast/table/027-vertical.html  [test/expectations] [2]
Traceback (most recent call last):
  File &quot;Tools/Scripts/check-webkit-style&quot;, line 48, in &lt;module&gt;
    sys.exit(CheckWebKitStyle().main())
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/style/main.py&quot;, line 154, in main
    patch_checker.check(patch)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/style/patchreader.py&quot;, line 66, in check
    self._text_file_reader.process_file(file_path=path, line_numbers=line_numbers)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/style/filereader.py&quot;, line 130, in process_file
    self._processor.process(lines, file_path, **kwargs)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/style/checker.py&quot;, line 826, in process
    checker.check(lines)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/style/checkers/test_expectations.py&quot;, line 119, in check
    overrides=overrides)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/style/checkers/test_expectations.py&quot;, line 96, in check_test_expectations
    is_lint_mode=True, overrides=overrides)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py&quot;, line 726, in __init__
    self._add_skipped_tests(port.skipped_tests(tests))
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/layout_tests/port/webkit.py&quot;, line 376, in skipped_tests
    return self.skipped_layout_tests(test_list)
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/layout_tests/port/webkit.py&quot;, line 372, in skipped_layout_tests
    tests_to_skip.update(self._skipped_tests_for_unsupported_features(test_list))
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/layout_tests/port/webkit.py&quot;, line 319, in _skipped_tests_for_unsupported_features
    if self._has_test_in_directories(self._missing_feature_to_skipped_tests().values(), test_list):
  File &quot;/mnt/git/webkit-style-queue/Tools/Scripts/webkitpy/layout_tests/port/webkit.py&quot;, line 311, in _has_test_in_directories
    for directory, test in itertools.product(directories, test_list):
TypeError: &apos;NoneType&apos; object is not iterable


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547995</commentid>
    <comment_count>31</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-02-02 11:09:32 -0800</bug_when>
    <thetext>Here&apos;s another patch for your consideration. This one allows for arbitrary  intermediate results in a sequence of arithmetic filter operations while forcing the results passed to any other filter type are valid. Of course it touches all filters, hence the large patch.

So this allows us to match FF and Opera behavior on sequences of arithmetic filters, while not polluting the rest of the filter tree with garbage pixels.

I need to spend some quality time drafting emails to W3 SCG to see if we can get more rational specified behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548014</commentid>
    <comment_count>32</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-02-02 11:28:23 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; (From update of attachment 125011 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125011&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/filters/FEComposite.cpp:136
&gt; &gt; &gt; +        unsigned char a1 = *(source + 3);
&gt; &gt; &gt; +        unsigned char a2 = *(destination + 3);
&gt; &gt; 
&gt; &gt; Perf note:  it&apos;s often much more efficient to load 32 bits at a time, and extract pixel color components with shifts than to do 4 8-bit loads (on x86 at least).
&gt; 
&gt; Is that safe across different endian machines?

Good question.  Skia has endian-independent macros to extract the color components, with the order set at compile-time.  I can&apos;t find anything equivalent for WebKit, but perhaps I&apos;m not looking hard enough.  It wouldn&apos;t be too hard to write them, if we want to be endian-correct.  There seems to be code in platform/graphics/cg that assumes little-endian, but suppose that&apos;s cool for MacOS now that it&apos;s all Intel.

I&apos;m not even sure we have a machine that tests in big-endian mode.  Does anyone know if the WebKit bots run in big-endian mode?  One of the ARM bots maybe?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550728</commentid>
    <comment_count>33</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-07 01:57:56 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; Here&apos;s another patch for your consideration. This one allows for arbitrary  intermediate results in a sequence of arithmetic filter operations while forcing the results passed to any other filter type are valid. Of course it touches all filters, hence the large patch.
&gt; 
&gt; So this allows us to match FF and Opera behavior on sequences of arithmetic filters, while not polluting the rest of the filter tree with garbage pixels.
This seems like a great compromise.

&gt; 
&gt; I need to spend some quality time drafting emails to W3 SCG to see if we can get more rational specified behavior.
Okay.

Do you want to continue investigating in loading 32bit in a row? Or shall it be left as-is? Did you measure perf diffs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550941</commentid>
    <comment_count>34</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-02-07 06:40:27 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; Do you want to continue investigating in loading 32bit in a row? Or shall it be left as-is? Did you measure perf diffs?

I believe we should create a separate bug for the switch to 32bit color packing with a view to modifying all of the intermediate image handling inside SVG filters. Given the priority in moving to hardware acceleration, it&apos;s not clear to me that the work is worth the benefits.

This patch should stay as-is and remain consistent with other code.

I have not done formal perf testing. Can you point me to any information on how to go about that? While I can test it using the new perf testing builds (I think), there may be a better way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552422</commentid>
    <comment_count>35</comment_count>
      <attachid>126139</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-02-08 13:07:45 -0800</bug_when>
    <thetext>Created attachment 126139
Patch

This patch fixes the mac build, I hope. I&apos;m really not concerned about performance here: we don&apos;t do anything significantly different except in the one case of arithmetic inputing to something else. Even then I think the performance will be close to before, maybe even better. Hence, I feel we can commit this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559191</commentid>
    <comment_count>36</comment_count>
      <attachid>126139</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-02-17 07:44:58 -0800</bug_when>
    <thetext>Comment on attachment 126139
Patch

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

Almost there, still some nitpicks:

&gt; Source/WebCore/platform/graphics/filters/FEComposite.cpp:275
&gt; +    if (validPreMulRGBAIsRequired)

Please use an enum here, the magic bool is not so nice.

Also I&apos;d store validPreMulRGBAIsREquired in FilterEffect, to avoid touching all platformApplySoftware methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559232</commentid>
    <comment_count>37</comment_count>
      <attachid>126139</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-02-17 08:56:34 -0800</bug_when>
    <thetext>Comment on attachment 126139
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/filters/FEComposite.cpp:275
&gt;&gt; +    if (validPreMulRGBAIsRequired)
&gt; 
&gt; Please use an enum here, the magic bool is not so nice.
&gt; 
&gt; Also I&apos;d store validPreMulRGBAIsREquired in FilterEffect, to avoid touching all platformApplySoftware methods.

It&apos;s not obvious how to avoid the method argument. The requirement for a valid result is a property of the &quot;parent&quot; of the filter, or the consumer of its output. A given filter cannot decide on the requirement based on its own state. However, the only filter that does not require valid data is the arithmetic filter. Maybe I can come up with something that only requires changes in that class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569965</commentid>
    <comment_count>38</comment_count>
      <attachid>129961</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-03-02 14:57:34 -0800</bug_when>
    <thetext>Created attachment 129961
Patch

A much nicer solution. Thanks to Niko for pushing for something better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569973</commentid>
    <comment_count>39</comment_count>
      <attachid>129963</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-03-02 15:06:47 -0800</bug_when>
    <thetext>Created attachment 129963
Patch

Even nicer solution. Got rid uf an unnecessary local variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569979</commentid>
    <comment_count>40</comment_count>
      <attachid>129963</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-02 15:12:31 -0800</bug_when>
    <thetext>Comment on attachment 129963
Patch

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

Looks good to me, but I&apos;ll leave for the SVG guys to take a look.

&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:142
&gt; +void FilterEffect::forceValidPreMulRGBA()
&gt; +{
&gt; +    if (!m_premultipliedImageResult)
&gt; +        return;
&gt; +
&gt; +    ByteArray* imageArray = m_premultipliedImageResult.get();
&gt; +    unsigned char* pixelData = imageArray-&gt;data();
&gt; +    int pixelArrayLength = imageArray-&gt;length();
&gt; +
&gt; +    ASSERT(!(pixelArrayLength % 4));
&gt; +    int numPixels = pixelArrayLength / 4;
&gt; +    while (--numPixels &gt;= 0) {
&gt; +        unsigned char a = *(pixelData + 3);
&gt; +        for (int i = 0; i &lt; 3; ++i) {
&gt; +            if (*pixelData &gt; a)
&gt; +                *pixelData = a;
&gt; +            ++pixelData;
&gt; +        }
&gt; +        ++pixelData;
&gt; +    }

Just to be clear, this function will only be called when going from an arithmetic FEComposite to something that is not an arithmetic FEComposite, correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569989</commentid>
    <comment_count>41</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-03-02 15:26:59 -0800</bug_when>
    <thetext>(In reply to comment #40)
&gt; (From update of attachment 129963 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129963&amp;action=review
&gt; 
&gt; Looks good to me, but I&apos;ll leave for the SVG guys to take a look.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:142
&gt; &gt; +void FilterEffect::forceValidPreMulRGBA()
&gt; 
&gt; Just to be clear, this function will only be called when going from an arithmetic FEComposite to something that is not an arithmetic FEComposite, correct?

Yes, and I verified by putting ASSERT(false) in which only hit during arithmetic filter layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570126</commentid>
    <comment_count>42</comment_count>
      <attachid>129963</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-03 01:03:37 -0800</bug_when>
    <thetext>Comment on attachment 129963
Patch

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

Patch looks great! I still have some suggestions. First: The testcase is perfectly suited for a ref test, and I encourage you to rewrite it.

&gt; Source/WebCore/platform/graphics/filters/FEComposite.h:62
&gt; +    virtual bool requiresValidPreMulRGBA() OVERRIDE { return m_type != FECOMPOSITE_OPERATOR_ARITHMETIC; }

We shouldn&apos;t use abbreviations in WebKit per coding style guidelines, how about requiresValidPremultipliedRGBA? or PreMultiplied if you prefer that.
(I&apos;d grep for similar names in WebCore, and see what&apos;s used)

&gt; Source/WebCore/platform/graphics/filters/FEComposite.h:63
&gt; +    virtual bool isInvalidPreMulRGBA() OVERRIDE { return m_type == FECOMPOSITE_OPERATOR_ARITHMETIC; }

This method is not really needed, you always use it like this:
for (unsigned i = 0; i &lt; size; ++i) {
    FilterEffect* in = m_inputEffects.at(i).get();
    if (in-&gt;isInvalidPreMulRGBA())
        in-&gt;forceValidPreMulRGBA();
}
How about switching to:

for (unsigned i = 0; i &lt; size; ++i)
    m_inputEffects[i]-&gt;forceValidPreMultipliedRGBAOutputIfNeeded();

Or even &quot;sanitzeEffectIfNeeded&quot; to hide the detail, what that involves.

&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:96
&gt;          return;

You could leave that out.

&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:127
&gt; +

This function should be commented!

&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:136
&gt; +    int numPixels = pixelArrayLength / 4;
&gt; +    while (--numPixels &gt;= 0) {
&gt; +        unsigned char a = *(pixelData + 3);
&gt; +        for (int i = 0; i &lt; 3; ++i) {

While I verified this is correct, comments would be helpful :-)

&gt; LayoutTests/platform/chromium/test_expectations.txt:943
&gt; +BUGWK77245 : svg/filters/feComposite-arithmetic-invalid-rgba.svg = PASS FAIL

This could be fully avoided with a reftest.

&gt; LayoutTests/svg/filters/feComposite-arithmetic-invalid-rgba.svg:1
&gt; +&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; width=&quot;200&quot; height=&quot;100&quot; style=&quot;background:white;&quot;&gt;

Heh, background: white works? Never tried that :-) Is it needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570647</commentid>
    <comment_count>43</comment_count>
      <attachid>129963</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-03-05 06:52:42 -0800</bug_when>
    <thetext>Comment on attachment 129963
Patch

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

New patch shortly.

&gt;&gt; Source/WebCore/platform/graphics/filters/FEComposite.h:62
&gt;&gt; +    virtual bool requiresValidPreMulRGBA() OVERRIDE { return m_type != FECOMPOSITE_OPERATOR_ARITHMETIC; }
&gt; 
&gt; We shouldn&apos;t use abbreviations in WebKit per coding style guidelines, how about requiresValidPremultipliedRGBA? or PreMultiplied if you prefer that.
&gt; (I&apos;d grep for similar names in WebCore, and see what&apos;s used)

Sounds good. All this info is very helpful in helping me reduce mistakes.

&gt;&gt; Source/WebCore/platform/graphics/filters/FEComposite.h:63
&gt;&gt; +    virtual bool isInvalidPreMulRGBA() OVERRIDE { return m_type == FECOMPOSITE_OPERATOR_ARITHMETIC; }
&gt; 
&gt; This method is not really needed, you always use it like this:
&gt; for (unsigned i = 0; i &lt; size; ++i) {
&gt;     FilterEffect* in = m_inputEffects.at(i).get();
&gt;     if (in-&gt;isInvalidPreMulRGBA())
&gt;         in-&gt;forceValidPreMulRGBA();
&gt; }
&gt; How about switching to:
&gt; 
&gt; for (unsigned i = 0; i &lt; size; ++i)
&gt;     m_inputEffects[i]-&gt;forceValidPreMultipliedRGBAOutputIfNeeded();
&gt; 
&gt; Or even &quot;sanitzeEffectIfNeeded&quot; to hide the detail, what that involves.

Good point. Will do.

&gt;&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:96
&gt;&gt;          return;
&gt; 
&gt; You could leave that out.

I did not want to change existing code. I&apos;ll look at it to see if this can ever be called with an existing, valid result.

&gt;&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:127
&gt;&gt; +
&gt; 
&gt; This function should be commented!

Here you mean? Sure.

&gt;&gt; LayoutTests/platform/chromium/test_expectations.txt:943
&gt;&gt; +BUGWK77245 : svg/filters/feComposite-arithmetic-invalid-rgba.svg = PASS FAIL
&gt; 
&gt; This could be fully avoided with a reftest.

Now why didn&apos;t I think of that?

&gt;&gt; LayoutTests/svg/filters/feComposite-arithmetic-invalid-rgba.svg:1
&gt;&gt; +&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; width=&quot;200&quot; height=&quot;100&quot; style=&quot;background:white;&quot;&gt;
&gt; 
&gt; Heh, background: white works? Never tried that :-) Is it needed?

Not needed. At one point I had a colored background and forgot to fully remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570750</commentid>
    <comment_count>44</comment_count>
      <attachid>130146</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-03-05 09:02:10 -0800</bug_when>
    <thetext>Created attachment 130146
Patch

New patch reflecting Niko&apos;s comments. Testing is now simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570802</commentid>
    <comment_count>45</comment_count>
      <attachid>130146</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-05 10:00:55 -0800</bug_when>
    <thetext>Comment on attachment 130146
Patch

Attachment 130146 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11819075

New failing tests:
svg/filters/feComposite-arithmetic-invalid-rgba.svg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570831</commentid>
    <comment_count>46</comment_count>
      <attachid>130146</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-03-05 10:42:24 -0800</bug_when>
    <thetext>Comment on attachment 130146
Patch

Apparently Chrome Linux is rounding the color values differently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570838</commentid>
    <comment_count>47</comment_count>
      <attachid>130146</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-05 10:52:49 -0800</bug_when>
    <thetext>Comment on attachment 130146
Patch

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

In general this patch looks much better, I&apos;d r+ it once you fix the cr-linux problem. Good job!

&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:97
&gt; +

I meant to leave out this whitespace only change before :-)

&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:122
&gt; +    // Must operate on pre-multiplied results - other formats cannot have invalid pixels

Sentences should end with a trailing . in general.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571000</commentid>
    <comment_count>48</comment_count>
      <attachid>130196</attachid>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2012-03-05 13:30:57 -0800</bug_when>
    <thetext>Created attachment 130196
Patch

Fixed the ref test. Note https://bugs.webkit.org/show_bug.cgi?id=80321</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571052</commentid>
    <comment_count>49</comment_count>
      <attachid>130196</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-05 14:33:54 -0800</bug_when>
    <thetext>Comment on attachment 130196
Patch

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

Looks good.  r=me

&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:119
&gt; +void FilterEffect::forceValidPreMultipliedPixels()

Nit:  It looks like the guts of this function could potentially live in FEComposite::correctFilterResultIfNeeded, since it&apos;s the only caller.  Not a big deal, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571202</commentid>
    <comment_count>50</comment_count>
      <attachid>130196</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-05 17:00:35 -0800</bug_when>
    <thetext>Comment on attachment 130196
Patch

Clearing flags on attachment: 130196

Committed r109820: &lt;http://trac.webkit.org/changeset/109820&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571204</commentid>
    <comment_count>51</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-05 17:00:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>124368</attachid>
            <date>2012-01-27 14:22:14 -0800</date>
            <delta_ts>2012-01-27 14:22:14 -0800</delta_ts>
            <desc>Test case, suitable for LayoutTest</desc>
            <filename>composited-offset.svg</filename>
            <type>image/svg+xml</type>
            <size>1457</size>
            <attacher name="Stephen Chenney">schenney</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjI1MCI+CiAgICA8
ZGVmcz4KICAgICAgICA8ZmlsdGVyIGlkPSJzaGFkb3cxIj4KICAgICAgICAgICAgPGZlT2Zmc2V0
IGluPSJTb3VyY2VHcmFwaGljIiBkeD0iNSIgZHk9IjUiIHJlc3VsdD0ib2ZzIiAvPgogICAgICAg
ICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9Im92ZXIiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9
Im9mcyIgLz4KICAgICAgICA8L2ZpbHRlcj4KCiAgICAgICAgPGZpbHRlciBpZD0iZGlmZiI+CiAg
ICAgICAgICAgIDxmZU9mZnNldCBpbj0iU291cmNlR3JhcGhpYyIgZHg9IjAiIGR5PSItMTAwIiBy
ZXN1bHQ9Im9mcyIvPgogICAgICAgICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImFyaXRobWV0
aWMiIGluPSJvZnMiIGluMj0iU291cmNlR3JhcGhpYyIgazI9Ii0xIiBrMz0iMSIgLz4KICAgICAg
ICA8L2ZpbHRlcj4KCiAgICAgICAgPGcgaWQ9InJlY3RzIj4KICAgICAgICAgICAgPHJlY3QgeD0i
MjAiIHk9IjIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIC8+CiAgICAgICAgPC9nPgoKICAgIDwv
ZGVmcz4KCiAgICA8IS0tIEFkZGl0aW9uYWwgbWFya2VycyB0byB2ZXJpZnkgY29ycmVjdG5lc3Mu
IFRoZXNlIHNob3VsZCBiZSBlbnRpcmVseSBjb3ZlcmVkLiAtLT4KICAgIDxnPgogICAgICAgIDxy
ZWN0IHg9IjIwIiB5PSIxMjAiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgZmlsbD0icmdiKDI1NSww
LDApIiAvPgogICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1
MCIgZmlsbD0icmdiKDI1NSwwLDApIiAvPgogICAgPC9nPgoKICAgIDxnIGZpbHRlcj0idXJsKCNk
aWZmKSI+CiAgICAgICAgPGcgZmlsdGVyPSJ1cmwoI3NoYWRvdzEpIiB0cmFuc2Zvcm09InRyYW5z
bGF0ZSgwLDApIj4KICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcmVjdHMiIGZpbGw9InJn
YigyNTUsMCwwKSIgLz4KICAgICAgICA8L2c+CgogICAgICAgIDxnIGZpbHRlcj0idXJsKCNzaGFk
b3cxKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwxMDApIj4KICAgICAgICAgICAgPHVzZSB4bGlu
azpocmVmPSIjcmVjdHMiIGZpbGw9InJnYigwLDI1NSwwKSIgLz4KICAgICAgICA8L2c+CiAgICA8
L2c+CgogICAgPCEtLSBBZGRpdGlvbmFsIG1hcmtlcnMgdG8gdmVyaWZ5IGNvcnJlY3RuZXNzLiBU
aGUgYnJpZ2h0IGdyZWVuIHJlc3VsdCBzaG91bGQgYmUgY29udGFpbmVkIHdpdGhpbiB0aGlzIHBh
dGguIC0tPgogICAgPGc+CiAgICAgICAgPHBhdGggZD0ibSAyMCAxMjAgbCA1MCAwIGwgMCA1IGwg
NSAwIGwgMCA1MCBsIC01MCAwIGwgMCAtNSBsIC01IDAgeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJy
Z2IoMCwxMjcsMCkiIC8+CiAgICA8L2c+Cjwvc3ZnPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>124802</attachid>
            <date>2012-01-31 12:57:59 -0800</date>
            <delta_ts>2012-01-31 12:57:59 -0800</delta_ts>
            <desc>Test to verify behavior of arithmetic image ops</desc>
            <filename>composite-arithmetic-is-premultiplied.svg</filename>
            <type>image/svg+xml</type>
            <size>1015</size>
            <attacher name="Stephen Chenney">schenney</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCI+CiAgICA8
ZGVmcz4KICAgICAgICA8ZmlsdGVyIGlkPSJhcml0aG1ldGljIj4KICAgICAgICAgICAgPGZlQ29t
cG9zaXRlIG9wZXJhdG9yPSJhcml0aG1ldGljIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJTb3Vy
Y2VHcmFwaGljIiBrMT0iMCIgazI9IjAiIGszPSIwIiBrND0iMC41IiAvPgogICAgICAgIDwvZmls
dGVyPgogICAgPC9kZWZzPgoKICAgIDwhLS0gRHJhdyBhIGJsYWNrIGFuZCB3aGl0ZSBzdHJpcGUg
dW5kZXIgdGhlIGZpbHRlcmVkIG9iamVjdHMuIC0tPgogICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBmaWxsPSJyZ2IoMjU1LDI1NSwyNTUpIiAvPgogICAgPHJlY3Qg
eD0iMCIgeT0iNTAiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgZmlsbD0icmdiKDAsMCwwKSIgLz4K
CiAgICA8IS0tIFRoZSBjb250ZW50IG9mIGludGVyZXN0IC0tPgogICAgPHJlY3QgZmlsdGVyPSJ1
cmwoI2FyaXRobWV0aWMpIiB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iMTAwIiBmaWxs
PSJyZ2IoMjU1LDI1NSwyNTUpIiAvPgoKICAgIDwhLS0gQ29sb3IgY29tcGFyaXNvbi4gSWYgdXNp
bmcgcHJlbXVsdGlwbGllZCwgdGhlIGxlZnQgaGFsZiBvZiB0aGUgaW1hZ2Ugc2hvdWxkIGJlIHdo
aXRlIG9uIG1pZC1ncmF5IC0tPgogICAgPCEtLSBUaGlzIHJlY3RhbmdsZSBzaG91bGQgYmUgdGhl
IHNhbWUgc2hhZGUuIElmIG5vdCB1c2luZyBwcmUtbXVsdGlwbGllZCBwaXhlbHMsIHRoZSBmaWx0
ZXIgd291bGQgcHJvZHVjZSAtLT4KICAgIDwhLS0gYSAwLjc1IGdyYXkgc3F1YXJlIG92ZXIgYSAu
MjUgZ3JheSBzcXVhcmUuIC0tPgogICAgPHJlY3QgeD0iNTAiIHk9IjAiIHdpZHRoPSI1MCIgaGVp
Z2h0PSIxMDAiIGZpbGw9InJnYigxMjcsIDEyNywgMTI3KSIgLz4KPC9zdmc+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125011</attachid>
            <date>2012-02-01 14:02:30 -0800</date>
            <delta_ts>2012-02-02 09:02:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77245-20120201170229.patch</filename>
            <type>text/plain</type>
            <size>18148</size>
            <attacher name="Stephen Chenney">schenney</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjQ4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAyLTAxICBTdGVwaGVu
IENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBT
VkcgQ29tcG9zaXRlIG9mIE9mZnNldCBjcmFzaGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzI0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBhcml0aG1ldGljIGNv
bXBvc2l0aW5nIHdhcyBnZW5lcmF0aW5nIGludmFsaWQKKyAgICAgICAgcGl4ZWxzLCB3aXRoIHBy
ZS1tdWwgY29sb3IgdmFsdWVzIHRoYXQgZXhjZWVkIHRoZWlyIGFscGhhIHZhbHVlcy4gVGhpcwor
ICAgICAgICBwYXRjaGVzIGJvdW5kcyBjb2xvciB2YWx1ZXMgdG8gdGhlIGFscGhhIHZhbHVlLCB0
aHVzIHByZXZlbnRpbmcKKyAgICAgICAgaW52YWxpZCBwaXhlbHMuCisKKyAgICAgICAgVGVzdDog
c3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEuc3ZnCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbXB1dGVBcml0aG1ldGljUGl4ZWxzKTogVW53aW5kIHRoZSBsb29wIHRv
IGRvIG9uZSBlbnRpcmUKKyAgICAgICAgcGl4ZWwgcGVyIGxvb3AsIGFuZCBwcm9jZXNzIGFscGhh
IGZpcnN0IHRvIG9idGFpbiBhbiB1cHBlciBib3VuZCBvbgorICAgICAgICB0aGUgb3RoZXIgcGl4
ZWxzLgorCiAyMDEyLTAyLTAxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIENyYXNoIGluIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb3NpdGUuY3BwCShyZXZpc2lvbiAxMDY0OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNCw2
ICs0LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNSBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQu
b3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3Jn
PgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSwgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMjAsNiArMTIxLDcgQEAg
dGVtcGxhdGUgPGludCBiMSwgaW50IGIyLCBpbnQgYjMsIGludCBiNAogc3RhdGljIGlubGluZSB2
b2lkIGNvbXB1dGVBcml0aG1ldGljUGl4ZWxzKHVuc2lnbmVkIGNoYXIqIHNvdXJjZSwgdW5zaWdu
ZWQgY2hhciogZGVzdGluYXRpb24sIGludCBwaXhlbEFycmF5TGVuZ3RoLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9hdCBrMywgZmxv
YXQgazQpCiB7CisgICAgLy8gVGhpcyBtZXRob2QgYXNzdW1lcyB0aGF0IHRoZSBwaXhlbCBhcnJh
eSBpcyByZ2JhIHByZS1tdWx0aXBsaWVkIGRhdGEsIGFuZCBlbmZvcmNlcyB2YWxpZCBwcmUtbXVs
dGlwbGllZCByZ2JhIG91dHB1dC4KICAgICBmbG9hdCBzY2FsZWRLMTsKICAgICBmbG9hdCBzY2Fs
ZWRLNDsKICAgICBpZiAoYjEpCkBAIC0xMjcsNyArMTI5LDMxIEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBjb21wdXRlQXJpdGhtZXRpY1BpeGUKICAgICBpZiAoYjQpCiAgICAgICAgIHNjYWxlZEs0ID0g
azQgKiAyNTUuZjsKIAotICAgIHdoaWxlICgtLXBpeGVsQXJyYXlMZW5ndGggPj0gMCkgeworICAg
IEFTU0VSVCghKHBpeGVsQXJyYXlMZW5ndGggJSA0KSk7CisgICAgaW50IG51bVBpeGVscyA9IHBp
eGVsQXJyYXlMZW5ndGggLyA0OworICAgIHdoaWxlICgtLW51bVBpeGVscyA+PSAwKSB7CisgICAg
ICAgIHVuc2lnbmVkIGNoYXIgYTEgPSAqKHNvdXJjZSArIDMpOworICAgICAgICB1bnNpZ25lZCBj
aGFyIGEyID0gKihkZXN0aW5hdGlvbiArIDMpOworICAgICAgICBmbG9hdCBhbHBoYSA9IDA7Cisg
ICAgICAgIGlmIChiMSkKKyAgICAgICAgICAgIGFscGhhICs9IHNjYWxlZEsxICogYTEgKiBhMjsK
KyAgICAgICAgaWYgKGIyKQorICAgICAgICAgICAgYWxwaGEgKz0gazIgKiBhMTsKKyAgICAgICAg
aWYgKGIzKQorICAgICAgICAgICAgYWxwaGEgKz0gazMgKiBhMjsKKyAgICAgICAgaWYgKGI0KQor
ICAgICAgICAgICAgYWxwaGEgKz0gc2NhbGVkSzQ7CisKKyAgICAgICAgaWYgKGFscGhhIDw9IDAp
IHsKKyAgICAgICAgICAgICooZGVzdGluYXRpb24rKykgPSAwOworICAgICAgICAgICAgKihkZXN0
aW5hdGlvbisrKSA9IDA7CisgICAgICAgICAgICAqKGRlc3RpbmF0aW9uKyspID0gMDsKKyAgICAg
ICAgICAgICooZGVzdGluYXRpb24rKykgPSAwOworICAgICAgICAgICAgc291cmNlICs9IDQ7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfSBlbHNlIGlmIChhbHBoYSA+PSAyNTUpCisg
ICAgICAgICAgICBhbHBoYSA9IDI1NTsKKwogICAgICAgICB1bnNpZ25lZCBjaGFyIGkxID0gKnNv
dXJjZTsKICAgICAgICAgdW5zaWduZWQgY2hhciBpMiA9ICpkZXN0aW5hdGlvbjsKICAgICAgICAg
ZmxvYXQgcmVzdWx0ID0gMDsKQEAgLTE0MiwxMiArMTY4LDU4IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBjb21wdXRlQXJpdGhtZXRpY1BpeGUKIAogICAgICAgICBpZiAocmVzdWx0IDw9IDApCiAgICAg
ICAgICAgICAqZGVzdGluYXRpb24gPSAwOwotICAgICAgICBlbHNlIGlmIChyZXN1bHQgPj0gMjU1
KQotICAgICAgICAgICAgKmRlc3RpbmF0aW9uID0gMjU1OworICAgICAgICBlbHNlIGlmIChyZXN1
bHQgPj0gYWxwaGEpCisgICAgICAgICAgICAqZGVzdGluYXRpb24gPSBhbHBoYTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgKmRlc3RpbmF0aW9uID0gcmVzdWx0OwogICAgICAgICArK3NvdXJj
ZTsKICAgICAgICAgKytkZXN0aW5hdGlvbjsKKworICAgICAgICBpMSA9ICpzb3VyY2U7CisgICAg
ICAgIGkyID0gKmRlc3RpbmF0aW9uOworICAgICAgICByZXN1bHQgPSAwOworICAgICAgICBpZiAo
YjEpCisgICAgICAgICAgICByZXN1bHQgKz0gc2NhbGVkSzEgKiBpMSAqIGkyOworICAgICAgICBp
ZiAoYjIpCisgICAgICAgICAgICByZXN1bHQgKz0gazIgKiBpMTsKKyAgICAgICAgaWYgKGIzKQor
ICAgICAgICAgICAgcmVzdWx0ICs9IGszICogaTI7CisgICAgICAgIGlmIChiNCkKKyAgICAgICAg
ICAgIHJlc3VsdCArPSBzY2FsZWRLNDsKKworICAgICAgICBpZiAocmVzdWx0IDw9IDApCisgICAg
ICAgICAgICAqZGVzdGluYXRpb24gPSAwOworICAgICAgICBlbHNlIGlmIChyZXN1bHQgPj0gYWxw
aGEpCisgICAgICAgICAgICAqZGVzdGluYXRpb24gPSBhbHBoYTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgKmRlc3RpbmF0aW9uID0gcmVzdWx0OworICAgICAgICArK3NvdXJjZTsKKyAgICAg
ICAgKytkZXN0aW5hdGlvbjsKKworICAgICAgICBpMSA9ICpzb3VyY2U7CisgICAgICAgIGkyID0g
KmRlc3RpbmF0aW9uOworICAgICAgICByZXN1bHQgPSAwOworICAgICAgICBpZiAoYjEpCisgICAg
ICAgICAgICByZXN1bHQgKz0gc2NhbGVkSzEgKiBpMSAqIGkyOworICAgICAgICBpZiAoYjIpCisg
ICAgICAgICAgICByZXN1bHQgKz0gazIgKiBpMTsKKyAgICAgICAgaWYgKGIzKQorICAgICAgICAg
ICAgcmVzdWx0ICs9IGszICogaTI7CisgICAgICAgIGlmIChiNCkKKyAgICAgICAgICAgIHJlc3Vs
dCArPSBzY2FsZWRLNDsKKworICAgICAgICBpZiAocmVzdWx0IDw9IDApCisgICAgICAgICAgICAq
ZGVzdGluYXRpb24gPSAwOworICAgICAgICBlbHNlIGlmIChyZXN1bHQgPj0gYWxwaGEpCisgICAg
ICAgICAgICAqZGVzdGluYXRpb24gPSBhbHBoYTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
KmRlc3RpbmF0aW9uID0gcmVzdWx0OworICAgICAgICArK3NvdXJjZTsKKyAgICAgICAgKytkZXN0
aW5hdGlvbjsKKworICAgICAgICAqZGVzdGluYXRpb24gPSBhbHBoYTsKKyAgICAgICAgKytzb3Vy
Y2U7CisgICAgICAgICsrZGVzdGluYXRpb247CiAgICAgfQogfQogCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMDY0ODgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyMyBAQAorMjAxMi0wMi0wMSAgU3RlcGhlbiBDaGVubmV5ICA8c2NoZW5uZXlAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gU1ZHIENvbXBvc2l0ZSBvZiBPZmZzZXQgY3Jh
c2hlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzcy
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUg
aW1wbGVtZW50YXRpb24gb2YgYXJpdGhtZXRpYyBjb21wb3NpdGluZyB3YXMgZ2VuZXJhdGluZyBp
bnZhbGlkCisgICAgICAgIHBpeGVscywgd2l0aCBwcmUtbXVsIGNvbG9yIHZhbHVlcyB0aGF0IGV4
Y2VlZCB0aGVpciBhbHBoYSB2YWx1ZXMuIFRoaXMKKyAgICAgICAgcGF0Y2hlcyBib3VuZHMgY29s
b3IgdmFsdWVzIHRvIHRoZSBhbHBoYSB2YWx1ZSwgdGh1cyBwcmV2ZW50aW5nCisgICAgICAgIGlu
dmFsaWQgcGl4ZWxzLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3Rh
dGlvbnMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9xdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisgICAgICAgICogc3ZnL2ZpbHRl
cnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEtZXhwZWN0ZWQucG5nOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS1hcml0aG1ldGljLWludmFsaWQt
cmdiYS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9maWx0ZXJzL2ZlQ29tcG9z
aXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLnN2ZzogQWRkZWQuCisKIDIwMTItMDItMDEgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ3Jhc2ggaW4gRXZlbnRI
YW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkocmV2aXNpb24gMTA2NDkxKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC04NzYsNiArODc2LDggQEAgQlVHQ1I2MjQzMyBXSU4gOiBmYXN0L2lt
YWdlcy9naWYtbG9vcC1jbwogCiBCVUdDUjg3NjMgTUFDIDogc3ZnL2N1c3RvbS91c2Utb24tZy1j
b250YWluaW5nLWZvcmVpZ25PYmplY3QtYW5kLWltYWdlLnN2ZyA9IElNQUdFCiAKKy8vIFRoaXMg
aXMgYSBuZXcgdGVzdCB0aGF0IHdpbGwgbGlrZWx5IGhhdmUgdW5hbnRpY2lwYXRlZCByZXN1bHRz
LgorQlVHV0s3NzI0NSA6IHN2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxp
ZC1yZ2JhLnN2ZyA9IFBBU1MgRkFJTAogCiAvLyBXZSBzaG93IHJlZHVjZWQgdmVyc2lvbiBvZiB0
aGUgZW50aXJlIFNWTiBpbWFnZSByYXRoZXIgdGhhbiBhbiBpbWFnZQogQlVHQ1IyMzQ2MyBMRU9Q
QVJEIDogc3ZnL1czQy1TVkctMS4xL3N0cnVjdC1zeW1ib2wtMDEtYi5zdmcgPSBJTUFHRQpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0CShy
ZXZpc2lvbiAxMDY0OTEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3Rh
dGlvbnMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw5IEBAIEJVR1dLNjE5MTQgOiBz
dmcvem9vbS9wYWdlL3pvb20tc3ZnLXRocm8KIAogQlVHV0s2ODUyMCA6IHN2Zy9XM0MtU1ZHLTEu
MS1TRS9maWx0ZXJzLWltYWdlLTA1LWYuc3ZnID0gUEFTUyBURVhUCiAKKy8vIFRoaXMgaXMgYSBu
ZXcgdGVzdCB0aGF0IHdpbGwgbGlrZWx5IGhhdmUgdW5hbnRpY2lwYXRlZCByZXN1bHRzLgorQlVH
V0s3NzI0NSA6IHN2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2Jh
LnN2ZyA9IFBBU1MgRkFJTAorCiBCVUdXSzY4NTE2IDogZmFzdC93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItbGlmZWN5Y2xlLmh0bWwgPSBQQVNTIFRFWFQKIEJVR1dLNjg1MTYgOiBmYXN0L3dvcmtlcnMv
c2hhcmVkLXdvcmtlci1mcmFtZS1saWZlY3ljbGUuaHRtbCA9IFBBU1MgVEVYVAogQlVHV0s2ODUx
NiA6IGZhc3Qvd29ya2Vycy93b3JrZXItY2xvc2UtbW9yZS5odG1sID0gUEFTUyBURVhUCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJl
dmlzaW9uIDEwNjQ5MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy90ZXN0X2V4cGVjdGF0
aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDkgQEAgQlVHV0s1NzY4OCA6IGZh
c3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYQogCiBCVUdXSzU4MTkyIDogcGx1Z2lucy9ucHAtc2V0
LXdpbmRvdy1jYWxsZWQtZHVyaW5nLWRlc3RydWN0aW9uLmh0bWwgPSBURVhUCiAKKy8vIFRoaXMg
aXMgYSBuZXcgdGVzdCB0aGF0IHdpbGwgbGlrZWx5IGhhdmUgdW5hbnRpY2lwYXRlZCByZXN1bHRz
LgorQlVHV0s3NzI0NSA6IHN2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxp
ZC1yZ2JhLnN2ZyA9IFBBU1MgRkFJTAorCiAvLyBGbGFreSB0ZXN0cyB3aGVuIHJ1biBtdWx0aS1w
cm9jZXNzCiBCVUdXSzU4MTkyIDogZmFzdC9kb20vZnJhbWUtbG9hZGluZy12aWEtZG9jdW1lbnQt
d3JpdGUuaHRtbCA9IFRFWFQgUEFTUwogQlVHV0s1ODE5MiA6IGh0dHAvdGVzdHMvYXBwY2FjaGUv
ZmFpbC1vbi11cGRhdGUtMi5odG1sID0gVEVYVCBQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvdGVzdF9leHBlY3RhdGlvbnMudHh0CShyZXZpc2lvbiAxMDY0OTEpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDUgKzI1LDggQEAgQlVHV0s3NDI3MCA6IGZhc3QvZm9ybXMvYmFzaWMtc2VsZWN0
cy5odAogLy8gVGhlIHRlc3QgaGl0cyBhbiBBU1NFUlQgaW4gRGVidWcuCiBCVUdXSzY4ODU5IERF
QlVHIDogZmFzdC9keW5hbWljL2NyYXNoLXBhaW50LW5vLWRvY3VtZW50RWxlbWVudC1yZW5kZXJl
ci5odG1sID0gQ1JBU0gKIAorLy8gVGhpcyBpcyBhIG5ldyB0ZXN0IHRoYXQgd2lsbCBsaWtlbHkg
aGF2ZSB1bmFudGljaXBhdGVkIHJlc3VsdHMuCitCVUdXSzc3MjQ1IDogc3ZnL2ZpbHRlcnMvZmVD
b21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEuc3ZnID0gUEFTUyBGQUlMCisKIC8vIE5l
ZWRzIGJhc2VsaW5lCiBCVUdXSzc2MTE4IDogZmFzdC9jc3MvdGV4dC1vdmVyZmxvdy1pbnB1dC5o
dG1sID0gTUlTU0lORwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUt
YXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlQ29t
cG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzNSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZp
ZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDEwMHgxMDAKKyAg
UmVuZGVyU1ZHUm9vdCB7c3ZnfSBhdCAoMTQsMTQpIHNpemUgNzJ4NzIKKyAgICBSZW5kZXJTVkdI
aWRkZW5Db250YWluZXIge2RlZnN9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlciB7ZmlsdGVyfSBbaWQ9ImFyaXRobWV0aWMiXSBbZmlsdGVyVW5pdHM9b2Jq
ZWN0Qm91bmRpbmdCb3hdIFtwcmltaXRpdmVVbml0cz11c2VyU3BhY2VPblVzZV0KKyAgICAgICAg
W2ZlQ29tcG9zaXRlIG9wZXJhdGlvbj0iQVJJVEhNRVRJQyIgazE9IjAuMDAiIGsyPSIxLjAwIiBr
Mz0iMS4wMCIgazQ9IjAuMDAiXQorICAgICAgICAgIFtmZUNvbXBvc2l0ZSBvcGVyYXRpb249IkFS
SVRITUVUSUMiIGsxPSIwLjAwIiBrMj0iMS4wMCIgazM9IjEuMDAiIGs0PSIwLjAwIl0KKyAgICAg
ICAgICAgIFtmZUNvbXBvc2l0ZSBvcGVyYXRpb249IkFSSVRITUVUSUMiIGsxPSIwLjAwIiBrMj0i
MC4yMCIgazM9IjAuMDAiIGs0PSIwLjAwIl0KKyAgICAgICAgICAgICAgW1NvdXJjZUdyYXBoaWNd
CisgICAgICAgICAgICAgIFtTb3VyY2VHcmFwaGljXQorICAgICAgICAgICAgW2ZlQ29tcG9zaXRl
IG9wZXJhdGlvbj0iQVJJVEhNRVRJQyIgazE9IjAuMDAiIGsyPSIwLjMwIiBrMz0iMC4wMCIgazQ9
IjAuMDAiXQorICAgICAgICAgICAgICBbU291cmNlQWxwaGFdCisgICAgICAgICAgICAgIFtTb3Vy
Y2VBbHBoYV0KKyAgICAgICAgICBbZmVDb21wb3NpdGUgb3BlcmF0aW9uPSJBUklUSE1FVElDIiBr
MT0iMC4wMCIgazI9IjEuMDAiIGszPSItMS4wMCIgazQ9IjAuMDAiXQorICAgICAgICAgICAgW1Nv
dXJjZUdyYXBoaWNdCisgICAgICAgICAgICBbZmVDb21wb3NpdGUgb3BlcmF0aW9uPSJBUklUSE1F
VElDIiBrMT0iMC4wMCIgazI9IjEuMDAiIGszPSIxLjAwIiBrND0iMC4wMCJdCisgICAgICAgICAg
ICAgIFtmZUNvbXBvc2l0ZSBvcGVyYXRpb249IkFSSVRITUVUSUMiIGsxPSIwLjAwIiBrMj0iMC4y
MCIgazM9IjAuMDAiIGs0PSIwLjAwIl0KKyAgICAgICAgICAgICAgICBbU291cmNlR3JhcGhpY10K
KyAgICAgICAgICAgICAgICBbU291cmNlR3JhcGhpY10KKyAgICAgICAgICAgICAgW2ZlQ29tcG9z
aXRlIG9wZXJhdGlvbj0iQVJJVEhNRVRJQyIgazE9IjAuMDAiIGsyPSIwLjMwIiBrMz0iMC4wMCIg
azQ9IjAuMDAiXQorICAgICAgICAgICAgICAgIFtTb3VyY2VBbHBoYV0KKyAgICAgICAgICAgICAg
ICBbU291cmNlQWxwaGFdCisgICAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciB7ZmlsdGVyfSBb
aWQ9ImNvbXBhcmlzb24iXSBbZmlsdGVyVW5pdHM9b2JqZWN0Qm91bmRpbmdCb3hdIFtwcmltaXRp
dmVVbml0cz11c2VyU3BhY2VPblVzZV0KKyAgICAgICAgW2ZlQ29tcG9zaXRlIG9wZXJhdGlvbj0i
QVJJVEhNRVRJQyIgazE9IjAuMDAiIGsyPSIxLjAwIiBrMz0iMS4wMCIgazQ9IjAuMDAiXQorICAg
ICAgICAgIFtmZUNvbXBvc2l0ZSBvcGVyYXRpb249IkFSSVRITUVUSUMiIGsxPSIwLjAwIiBrMj0i
MC43MCIgazM9IjAuMDAiIGs0PSIwLjAwIl0KKyAgICAgICAgICAgIFtTb3VyY2VHcmFwaGljXQor
ICAgICAgICAgICAgW1NvdXJjZUdyYXBoaWNdCisgICAgICAgICAgW2ZlQ29tcG9zaXRlIG9wZXJh
dGlvbj0iQVJJVEhNRVRJQyIgazE9IjAuMDAiIGsyPSIwLjMwIiBrMz0iMC4wMCIgazQ9IjAuMDAi
XQorICAgICAgICAgICAgW1NvdXJjZUFscGhhXQorICAgICAgICAgICAgW1NvdXJjZUFscGhhXQor
ICAgIFJlbmRlclNWR1JlY3Qge3JlY3R9IGF0ICgxNCwxNCkgc2l6ZSA3Mng3MiBbZmlsbD17W3R5
cGU9U09MSURdIFtjb2xvcj0jMDBGRjAwXX1dIFt4PTIwLjAwXSBbeT0yMC4wMF0gW3dpZHRoPTYw
LjAwXSBbaGVpZ2h0PTYwLjAwXQorICAgICAgW2ZpbHRlcj0iY29tcGFyaXNvbiJdIFJlbmRlclNW
R1Jlc291cmNlRmlsdGVyIHtmaWx0ZXJ9IGF0ICgxNCwxNCkgc2l6ZSA3Mng3MgorICAgIFJlbmRl
clNWR1JlY3Qge3JlY3R9IGF0ICgyMCwyMCkgc2l6ZSA2MHg2MCBbZmlsbD17W3R5cGU9U09MSURd
IFtjb2xvcj0jMDBGRjAwXX1dIFt4PTI1LjAwXSBbeT0yNS4wMF0gW3dpZHRoPTUwLjAwXSBbaGVp
Z2h0PTUwLjAwXQorICAgICAgW2ZpbHRlcj0iYXJpdGhtZXRpYyJdIFJlbmRlclNWR1Jlc291cmNl
RmlsdGVyIHtmaWx0ZXJ9IGF0ICgyMCwyMCkgc2l6ZSA2MHg2MAoKUHJvcGVydHkgY2hhbmdlcyBv
bjogTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlk
LXJnYmEtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBM
RgoKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMt
aW52YWxpZC1yZ2JhLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9m
ZUNvbXBvc2l0ZS1hcml0aG1ldGljLWludmFsaWQtcmdiYS5zdmcJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS1hcml0aG1ldGljLWludmFsaWQtcmdi
YS5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjggQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
bGluayIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHN0eWxlPSJiYWNrZ3JvdW5kOndoaXRlOyI+
CisgICAgPGRlZnM+CisgICAgICAgIDwhLS0gVGhpcyBmaWx0ZXIgcHJvZHVjZXMgaW50ZXJtZWRp
YXRlIHJlc3VsdHMgdGhhdCBhcmUgaW52YWxpZCBwcmUtbXVsdGlwbGlvZWQgcmdiYSBwaXhlbHMu
IC0tPgorICAgICAgICA8IS0tIFNwZWNpZmljYWxseSwgYWZ0ZXIgdGhlIDR0aCBzdGVwIGFuIGlu
dGVyaW9yIHBpeGVsIHdpbGwgY29udGFpbiAoMCwgMC44LCAwLCAwLjUpIHdoaWNoICAtLT4KKyAg
ICAgICAgPCEtLSBpcyBpbnZhbGlkIGJlY2F1c2UgZyA+IGEuIFdoZW4gdXNlZCBpbiBvdGhlciBv
cGVyYXRpb25zLCB0aGlzIG1heSBnZW5lcmF0ZSBiYWQgcmVzdWx0cywgLS0+CisgICAgICAgIDwh
LS0gc28gd2UgY2xhbXAgdGhlIGNvbG9yIHZhbHVlcyB0byBbMCwgYWxwaGFdIG9uIGFsbCBpbnRl
cm1lZGlhdGUgb3BlcmF0aW9ucy4gICAgICAgICAgICAgIC0tPgorICAgICAgICA8ZmlsdGVyIGlk
PSJhcml0aG1ldGljIj4KKyAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iYXJpdGht
ZXRpYyIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iU291cmNlR3JhcGhpYyIgazE9IjAiIGsyPSIw
LjIiIGszPSIwIiBrND0iMCIgcmVzdWx0PSJyZ2JhMDIiIC8+CisgICAgICAgICAgICA8ZmVDb21w
b3NpdGUgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGluPSJTb3VyY2VBbHBoYSIgaW4yPSJTb3VyY2VB
bHBoYSIgazE9IjAiIGsyPSIwLjMiIGszPSIwIiBrND0iMCIgcmVzdWx0PSJhbHBoYTA1IiAvPgor
ICAgICAgICAgICAgPGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJhcml0aG1ldGljIiBpbj0icmdiYTAy
IiBpbjI9ImFscGhhMDUiIGsxPSIwIiBrMj0iMSIgazM9IjEiIGs0PSIwIiByZXN1bHQ9InRtcCIg
Lz4KKyAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgaW49IlNv
dXJjZUdyYXBoaWMiIGluMj0idG1wIiBrMT0iMCIgazI9IjEiIGszPSItMSIgazQ9IjAiIC8+Cisg
ICAgICAgICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGluPSJ0bXAiIGsx
PSIwIiBrMj0iMSIgazM9IjEiIGs0PSIwIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAg
ICA8IS0tIFRoaXMgZmlsdGVyIGdlbmVyYXRlcyB0aGUgZXhwZWN0ZWQgcmVzdWx0IHdpdGggbm8g
b3ZlcmZsb3cuIC0tPgorICAgICAgICA8ZmlsdGVyIGlkPSJjb21wYXJpc29uIj4KKyAgICAgICAg
ICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgaW49IlNvdXJjZUdyYXBoaWMi
IGluMj0iU291cmNlR3JhcGhpYyIgazE9IjAiIGsyPSIwLjciIGszPSIwIiBrND0iMCIgcmVzdWx0
PSJ0bXAxIiAvPgorICAgICAgICAgICAgPGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJhcml0aG1ldGlj
IiBpbj0iU291cmNlQWxwaGEiIGluMj0iU291cmNlQWxwaGEiIGsxPSIwIiBrMj0iMC4zIiBrMz0i
MCIgazQ9IjAiIHJlc3VsdD0idG1wMiIgLz4KKyAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBvcGVy
YXRvcj0iYXJpdGhtZXRpYyIgaW49InRtcDEiIGluMj0idG1wMiIgazE9IjAiIGsyPSIxIiBrMz0i
MSIgazQ9IjAiIC8+CisgICAgICAgIDwvZmlsdGVyPgorICAgIDwvZGVmcz4KKworICAgIDwhLS0g
QmFja2dyb3VuZCBmb3IgY29sb3IgY29tcGFyaXNvbi4gVGhlIGJvcmRlciBvZiB0aGUgZmluYWwg
cmVjdGFuZ2xlIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgaW50ZXJpb3IgY29sb3IuIC0tPgor
ICAgIDxyZWN0IGZpbHRlcj0idXJsKCNjb21wYXJpc29uKSIgeD0iMjAiIHk9IjIwIiB3aWR0aD0i
NjAiIGhlaWdodD0iNjAiIGZpbGw9InJnYmEoMCwyNTUsMCwxKSIgLz4KKworICAgIDwhLS0gVGhl
IGNvbnRlbnQgb2YgaW50ZXJlc3QgLS0+CisgICAgPHJlY3QgZmlsdGVyPSJ1cmwoI2FyaXRobWV0
aWMpIiB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgZmlsbD0icmdiYSgwLDI1
NSwwLDEpIiBzdHJva2U9Im5vbmUiIC8+Cis8L3N2Zz4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9m
aWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLWV4cGVjdGVkLnBuZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpz
dm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0
cy9zdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS1hcml0aG1ldGljLWludmFsaWQtcmdiYS1leHBlY3Rl
ZC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQogICArIGltYWdlL3BuZwoKCmlW
Qk9SdzBLR2dvQUFBQU5TVWhFVWdBQUF5QUFBQUpZQ0FJQUFBQVZGQlVuQUFBQUtYUkZXSFJqYUdW
amEzTjFiUUJoTVRjelpqSXgKWWpsaU56QmpZbVl5WTJJeFlUSTNZbUZtWVdNeE1tRXpaZmhuQ2Vj
QUFBcllTVVJCVkhpYzdkcXhEY013REFCQnkvQXEyWCtnN0dLbApUK3NIRkR0M3ZRaVdEMEpqenJr
QkFORFpWeThBQVBBMEFnc0FJQ2F3QUFCaUFnc0FJQ2F3QUFCaUFnc0FJQ2F3QUFCaUFnc0FJQ2F3
CkFBQmlBZ3NBSUNhd0FBQmlBZ3NBSUNhd0FBQmlBZ3NBSUNhd0FBQmlBZ3NBSUNhd0FBQmlBZ3NB
SUNhd0FBQml4NVhIKy90K2ZYYSsKenRVckFBQVBkNzlDQWdENGNRSUxBQ0Ftc0FBQVlnSUxBQ0Iy
NlpQN2w3bk5jRnBsYkdQMUNnREFmM0hCQWdDSUNTd0FnSmpBQWdDSQpDU3dBZ0pqQUFnQ0lDU3dB
Z0pqQUFnQ0lDU3dBZ0pqQUFnQ0lDU3dBZ0pqQUFnQ0lDU3dBZ0pqQUFnQ0lDU3dBZ0pqQUFnQ0lD
U3dBCmdKakFBZ0NJQ1N3QWdKakFBZ0NJQ1N3QWdKakFBZ0NJQ1N3QWdKakFBZ0NJQ1N3QWdKakFB
Z0NJQ1N3QWdKakFBZ0NJQ1N3QWdKakEKQWdDSUNTd0FnSmpBQWdDSUNTd0FnSmpBQWdDSUNTd0Fn
SmpBQWdDSUNTd0FnSmpBQWdDSUNTd0FnSmpBQWdDSUNTd0FnSmpBQWdDSQpDU3dBZ0pqQUFnQ0lD
U3dBZ0pqQUFnQ0lDU3dBZ0pqQUFnQ0lDU3dBZ0pqQUFnQ0lIZUdzc1kxd0dnREFUYmxnQVFERUJC
WUFRRXhnCkFRREVCQllBUUd6TU9WZnZBQUR3S0M1WUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFB
QXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXgKZ1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVC
TllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQQpFQk5ZQUFBeGdR
VUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFB
eGdRVUFFQk5ZCkFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJO
WUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXgKZ1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FV
QUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQQpFQk5ZQUFB
eGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5Z
QUFBeGdRVUFFQk5ZCkFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVB
RUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXgKZ1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4
Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQQpFQk5Z
QUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFF
Qk5ZQUFBeGdRVUFFQk5ZCkFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhn
UVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXgKZ1FVQUVCTllBQUF4Z1FVQUVCTllB
QUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQQpF
Qk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdR
VUFFQk5ZQUFBeGdRVUFFQk5ZCkFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFB
QXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXgKZ1FVQUVCTllBQUF4Z1FVQUVC
TllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FV
QQpFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFB
eGdRVUFFQk5ZQUFBeGdRVUFFQk5ZCkFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJO
WUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXgKZ1FVQUVCTllBQUF4Z1FV
QUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4
Z1FVQQpFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5Z
QUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZCkFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVB
RUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXgKZ1FVQUVCTllBQUF4
Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllB
QUF4Z1FVQQpFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFF
Qk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZCkFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhn
UVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXgKZ1FVQUVCTllB
QUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVC
TllBQUF4Z1FVQQpFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdR
VUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZCkFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFB
QXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXgKZ1FVQUVC
TllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FV
QUVCTllBQUF4Z1FVQQpFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFB
eGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZCkFBQXhnUVVBRUJOWUFBQXhnUVVBRUJO
WUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXgKZ1FV
QUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4
Z1FVQUVCTllBQUF4Z1FVQQpFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5Z
QUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZCkFBQXhnUVVBRUJOWUFBQXhnUVVB
RUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXgK
Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllB
QUF4Z1FVQUVCTllBQUF4Z1FVQQpFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFF
Qk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZCkFBQXhnUVVBRUJOWUFBQXhn
UVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFB
QXgKZ1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVC
TllBQUF4Z1FVQUVCTllBQUF4Z1FVQQpFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdR
VUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZCkFBQXhnUVVBRUJOWUFB
QXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJO
WUFBQXgKZ1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FV
QUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQQpFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFB
eGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZCkFBQXhnUVVBRUJO
WUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVB
RUJOWUFBQXgKZ1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4
Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQQpFQk5ZQUFBeGdRVUFFQk5ZQUFDeER6Z21EN0Zu
c1pFWUFBQUFBRWxGVGtTdVFtQ0MKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125021</attachid>
            <date>2012-02-01 14:56:39 -0800</date>
            <delta_ts>2012-02-02 11:01:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77245-20120201175638.patch</filename>
            <type>text/plain</type>
            <size>17881</size>
            <attacher name="Stephen Chenney">schenney</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjQ4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAyLTAxICBTdGVwaGVu
IENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBT
VkcgQ29tcG9zaXRlIG9mIE9mZnNldCBjcmFzaGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzI0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBhcml0aG1ldGljIGNv
bXBvc2l0aW5nIHdhcyBnZW5lcmF0aW5nIGludmFsaWQKKyAgICAgICAgcGl4ZWxzLCB3aXRoIHBy
ZS1tdWwgY29sb3IgdmFsdWVzIHRoYXQgZXhjZWVkIHRoZWlyIGFscGhhIHZhbHVlcy4gVGhpcwor
ICAgICAgICBwYXRjaGVzIGJvdW5kcyBjb2xvciB2YWx1ZXMgdG8gdGhlIGFscGhhIHZhbHVlLCB0
aHVzIHByZXZlbnRpbmcKKyAgICAgICAgaW52YWxpZCBwaXhlbHMuCisKKyAgICAgICAgVGVzdDog
c3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEuc3ZnCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbXB1dGVBcml0aG1ldGljUGl4ZWxzKTogVW53aW5kIHRoZSBsb29wIHRv
IGRvIG9uZSBlbnRpcmUKKyAgICAgICAgcGl4ZWwgcGVyIGxvb3AsIGFuZCBwcm9jZXNzIGFscGhh
IGZpcnN0IHRvIG9idGFpbiBhbiB1cHBlciBib3VuZCBvbgorICAgICAgICB0aGUgb3RoZXIgcGl4
ZWxzLgorCiAyMDEyLTAyLTAxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIENyYXNoIGluIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb3NpdGUuY3BwCShyZXZpc2lvbiAxMDY0OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNCw2
ICs0LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNSBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQu
b3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3Jn
PgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSwgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMjAsNiArMTIxLDcgQEAg
dGVtcGxhdGUgPGludCBiMSwgaW50IGIyLCBpbnQgYjMsIGludCBiNAogc3RhdGljIGlubGluZSB2
b2lkIGNvbXB1dGVBcml0aG1ldGljUGl4ZWxzKHVuc2lnbmVkIGNoYXIqIHNvdXJjZSwgdW5zaWdu
ZWQgY2hhciogZGVzdGluYXRpb24sIGludCBwaXhlbEFycmF5TGVuZ3RoLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9hdCBrMywgZmxv
YXQgazQpCiB7CisgICAgLy8gVGhpcyBtZXRob2QgYXNzdW1lcyB0aGF0IHRoZSBwaXhlbCBhcnJh
eSBpcyByZ2JhIHByZS1tdWx0aXBsaWVkIGRhdGEsIGFuZCBlbmZvcmNlcyB2YWxpZCBwcmUtbXVs
dGlwbGllZCByZ2JhIG91dHB1dC4KICAgICBmbG9hdCBzY2FsZWRLMTsKICAgICBmbG9hdCBzY2Fs
ZWRLNDsKICAgICBpZiAoYjEpCkBAIC0xMjcsMjUgKzEyOSw1OCBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgY29tcHV0ZUFyaXRobWV0aWNQaXhlCiAgICAgaWYgKGI0KQogICAgICAgICBzY2FsZWRLNCA9
IGs0ICogMjU1LmY7CiAKLSAgICB3aGlsZSAoLS1waXhlbEFycmF5TGVuZ3RoID49IDApIHsKLSAg
ICAgICAgdW5zaWduZWQgY2hhciBpMSA9ICpzb3VyY2U7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIg
aTIgPSAqZGVzdGluYXRpb247Ci0gICAgICAgIGZsb2F0IHJlc3VsdCA9IDA7CisgICAgQVNTRVJU
KCEocGl4ZWxBcnJheUxlbmd0aCAlIDQpKTsKKyAgICBpbnQgbnVtUGl4ZWxzID0gcGl4ZWxBcnJh
eUxlbmd0aCAvIDQ7CisgICAgd2hpbGUgKC0tbnVtUGl4ZWxzID49IDApIHsKKyAgICAgICAgLy8g
T3BlcmF0ZSBvbiBhbHBoYSBmaXJzdCB0byBnZXQgbGltaXRzIGZvciB0aGUgY29sb3IgdmFsdWVz
CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYTEgPSAqKHNvdXJjZSArIDMpOworICAgICAgICB1bnNp
Z25lZCBjaGFyIGEyID0gKihkZXN0aW5hdGlvbiArIDMpOworICAgICAgICBmbG9hdCBhbHBoYSA9
IDA7CiAgICAgICAgIGlmIChiMSkKLSAgICAgICAgICAgIHJlc3VsdCArPSBzY2FsZWRLMSAqIGkx
ICogaTI7CisgICAgICAgICAgICBhbHBoYSArPSBzY2FsZWRLMSAqIGExICogYTI7CiAgICAgICAg
IGlmIChiMikKLSAgICAgICAgICAgIHJlc3VsdCArPSBrMiAqIGkxOworICAgICAgICAgICAgYWxw
aGEgKz0gazIgKiBhMTsKICAgICAgICAgaWYgKGIzKQotICAgICAgICAgICAgcmVzdWx0ICs9IGsz
ICogaTI7CisgICAgICAgICAgICBhbHBoYSArPSBrMyAqIGEyOwogICAgICAgICBpZiAoYjQpCi0g
ICAgICAgICAgICByZXN1bHQgKz0gc2NhbGVkSzQ7CisgICAgICAgICAgICBhbHBoYSArPSBzY2Fs
ZWRLNDsKIAotICAgICAgICBpZiAocmVzdWx0IDw9IDApCi0gICAgICAgICAgICAqZGVzdGluYXRp
b24gPSAwOwotICAgICAgICBlbHNlIGlmIChyZXN1bHQgPj0gMjU1KQotICAgICAgICAgICAgKmRl
c3RpbmF0aW9uID0gMjU1OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAqZGVzdGluYXRpb24g
PSByZXN1bHQ7CisgICAgICAgIGlmIChhbHBoYSA8PSAwKSB7CisgICAgICAgICAgICAqKGRlc3Rp
bmF0aW9uKyspID0gMDsKKyAgICAgICAgICAgICooZGVzdGluYXRpb24rKykgPSAwOworICAgICAg
ICAgICAgKihkZXN0aW5hdGlvbisrKSA9IDA7CisgICAgICAgICAgICAqKGRlc3RpbmF0aW9uKysp
ID0gMDsKKyAgICAgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0gZWxzZSBpZiAoYWxwaGEgPj0gMjU1KQorICAgICAgICAgICAgYWxwaGEgPSAyNTU7
CisKKyAgICAgICAgLy8gQ29sb3IgY29tcG9uZW50cworICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IDM7ICsraSkgeworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBpMSA9ICpzb3VyY2U7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGkyID0gKmRlc3RpbmF0aW9uOworICAgICAgICAgICAg
ZmxvYXQgcmVzdWx0ID0gMDsKKyAgICAgICAgICAgIGlmIChiMSkKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgKz0gc2NhbGVkSzEgKiBpMSAqIGkyOworICAgICAgICAgICAgaWYgKGIyKQorICAgICAg
ICAgICAgICAgIHJlc3VsdCArPSBrMiAqIGkxOworICAgICAgICAgICAgaWYgKGIzKQorICAgICAg
ICAgICAgICAgIHJlc3VsdCArPSBrMyAqIGkyOworICAgICAgICAgICAgaWYgKGI0KQorICAgICAg
ICAgICAgICAgIHJlc3VsdCArPSBzY2FsZWRLNDsKKyAgICAKKyAgICAgICAgICAgIGlmIChyZXN1
bHQgPD0gMCkKKyAgICAgICAgICAgICAgICAqZGVzdGluYXRpb24gPSAwOworICAgICAgICAgICAg
ZWxzZSBpZiAocmVzdWx0ID49IGFscGhhKQorICAgICAgICAgICAgICAgICpkZXN0aW5hdGlvbiA9
IGFscGhhOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICpkZXN0aW5hdGlvbiA9
IHJlc3VsdDsKKyAgICAgICAgICAgICsrc291cmNlOworICAgICAgICAgICAgKytkZXN0aW5hdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEFscGhhCisgICAgICAgICpkZXN0aW5hdGlvbiA9
IGFscGhhOwogICAgICAgICArK3NvdXJjZTsKICAgICAgICAgKytkZXN0aW5hdGlvbjsKICAgICB9
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMDY0ODgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0wMi0wMSAgU3RlcGhlbiBDaGVubmV5
ICA8c2NoZW5uZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gU1ZHIENvbXBv
c2l0ZSBvZiBPZmZzZXQgY3Jhc2hlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzcyNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gb2YgYXJpdGhtZXRpYyBjb21wb3NpdGlu
ZyB3YXMgZ2VuZXJhdGluZyBpbnZhbGlkCisgICAgICAgIHBpeGVscywgd2l0aCBwcmUtbXVsIGNv
bG9yIHZhbHVlcyB0aGF0IGV4Y2VlZCB0aGVpciBhbHBoYSB2YWx1ZXMuIFRoaXMKKyAgICAgICAg
cGF0Y2hlcyBib3VuZHMgY29sb3IgdmFsdWVzIHRvIHRoZSBhbHBoYSB2YWx1ZSwgdGh1cyBwcmV2
ZW50aW5nCisgICAgICAgIGludmFsaWQgcGl4ZWxzLgorCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay90ZXN0
X2V4cGVjdGF0aW9ucy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6Cisg
ICAgICAgICogc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEt
ZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS1h
cml0aG1ldGljLWludmFsaWQtcmdiYS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2
Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLnN2ZzogQWRkZWQu
CisKIDIwMTItMDItMDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgQ3Jhc2ggaW4gRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcApJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAko
cmV2aXNpb24gMTA2NDkxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC04NzYsNiArODc2LDggQEAgQlVHQ1I2
MjQzMyBXSU4gOiBmYXN0L2ltYWdlcy9naWYtbG9vcC1jbwogCiBCVUdDUjg3NjMgTUFDIDogc3Zn
L2N1c3RvbS91c2Utb24tZy1jb250YWluaW5nLWZvcmVpZ25PYmplY3QtYW5kLWltYWdlLnN2ZyA9
IElNQUdFCiAKKy8vIFRoaXMgaXMgYSBuZXcgdGVzdCB0aGF0IHdpbGwgbGlrZWx5IGhhdmUgdW5h
bnRpY2lwYXRlZCByZXN1bHRzLgorQlVHV0s3NzI0NSA6IHN2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRl
LWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLnN2ZyA9IFBBU1MgRkFJTAogCiAvLyBXZSBzaG93IHJl
ZHVjZWQgdmVyc2lvbiBvZiB0aGUgZW50aXJlIFNWTiBpbWFnZSByYXRoZXIgdGhhbiBhbiBpbWFn
ZQogQlVHQ1IyMzQ2MyBMRU9QQVJEIDogc3ZnL1czQy1TVkctMS4xL3N0cnVjdC1zeW1ib2wtMDEt
Yi5zdmcgPSBJTUFHRQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9l
eHBlY3RhdGlvbnMudHh0CShyZXZpc2lvbiAxMDY0OTEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw5
IEBAIEJVR1dLNjE5MTQgOiBzdmcvem9vbS9wYWdlL3pvb20tc3ZnLXRocm8KIAogQlVHV0s2ODUy
MCA6IHN2Zy9XM0MtU1ZHLTEuMS1TRS9maWx0ZXJzLWltYWdlLTA1LWYuc3ZnID0gUEFTUyBURVhU
CiAKKy8vIFRoaXMgaXMgYSBuZXcgdGVzdCB0aGF0IHdpbGwgbGlrZWx5IGhhdmUgdW5hbnRpY2lw
YXRlZCByZXN1bHRzLgorQlVHV0s3NzI0NSA6IHN2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRo
bWV0aWMtaW52YWxpZC1yZ2JhLnN2ZyA9IFBBU1MgRkFJTAorCiBCVUdXSzY4NTE2IDogZmFzdC93
b3JrZXJzL3NoYXJlZC13b3JrZXItbGlmZWN5Y2xlLmh0bWwgPSBQQVNTIFRFWFQKIEJVR1dLNjg1
MTYgOiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1mcmFtZS1saWZlY3ljbGUuaHRtbCA9IFBB
U1MgVEVYVAogQlVHV0s2ODUxNiA6IGZhc3Qvd29ya2Vycy93b3JrZXItY2xvc2UtbW9yZS5odG1s
ID0gUEFTUyBURVhUCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGVzdF9leHBlY3Rh
dGlvbnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy90ZXN0X2V4
cGVjdGF0aW9ucy50eHQJKHJldmlzaW9uIDEwNjQ5MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDkg
QEAgQlVHV0s1NzY4OCA6IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYQogCiBCVUdXSzU4MTky
IDogcGx1Z2lucy9ucHAtc2V0LXdpbmRvdy1jYWxsZWQtZHVyaW5nLWRlc3RydWN0aW9uLmh0bWwg
PSBURVhUCiAKKy8vIFRoaXMgaXMgYSBuZXcgdGVzdCB0aGF0IHdpbGwgbGlrZWx5IGhhdmUgdW5h
bnRpY2lwYXRlZCByZXN1bHRzLgorQlVHV0s3NzI0NSA6IHN2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRl
LWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLnN2ZyA9IFBBU1MgRkFJTAorCiAvLyBGbGFreSB0ZXN0
cyB3aGVuIHJ1biBtdWx0aS1wcm9jZXNzCiBCVUdXSzU4MTkyIDogZmFzdC9kb20vZnJhbWUtbG9h
ZGluZy12aWEtZG9jdW1lbnQtd3JpdGUuaHRtbCA9IFRFWFQgUEFTUwogQlVHV0s1ODE5MiA6IGh0
dHAvdGVzdHMvYXBwY2FjaGUvZmFpbC1vbi11cGRhdGUtMi5odG1sID0gVEVYVCBQQVNTCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvdGVzdF9leHBlY3RhdGlvbnMudHh0CShyZXZp
c2lvbiAxMDY0OTEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC90ZXN0X2V4cGVjdGF0aW9u
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI1LDUgKzI1LDggQEAgQlVHV0s3NDI3MCA6IGZhc3Qv
Zm9ybXMvYmFzaWMtc2VsZWN0cy5odAogLy8gVGhlIHRlc3QgaGl0cyBhbiBBU1NFUlQgaW4gRGVi
dWcuCiBCVUdXSzY4ODU5IERFQlVHIDogZmFzdC9keW5hbWljL2NyYXNoLXBhaW50LW5vLWRvY3Vt
ZW50RWxlbWVudC1yZW5kZXJlci5odG1sID0gQ1JBU0gKIAorLy8gVGhpcyBpcyBhIG5ldyB0ZXN0
IHRoYXQgd2lsbCBsaWtlbHkgaGF2ZSB1bmFudGljaXBhdGVkIHJlc3VsdHMuCitCVUdXSzc3MjQ1
IDogc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEuc3ZnID0g
UEFTUyBGQUlMCisKIC8vIE5lZWRzIGJhc2VsaW5lCiBCVUdXSzc2MTE4IDogZmFzdC9jc3MvdGV4
dC1vdmVyZmxvdy1pbnB1dC5odG1sID0gTUlTU0lORwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2Zp
bHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0
aWMtaW52YWxpZC1yZ2JhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L3N2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCww
KSBzaXplIDEwMHgxMDAKKyAgUmVuZGVyU1ZHUm9vdCB7c3ZnfSBhdCAoMTQsMTQpIHNpemUgNzJ4
NzIKKyAgICBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIge2RlZnN9IGF0ICgwLDApIHNpemUgMHgw
CisgICAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciB7ZmlsdGVyfSBbaWQ9ImFyaXRobWV0aWMi
XSBbZmlsdGVyVW5pdHM9b2JqZWN0Qm91bmRpbmdCb3hdIFtwcmltaXRpdmVVbml0cz11c2VyU3Bh
Y2VPblVzZV0KKyAgICAgICAgW2ZlQ29tcG9zaXRlIG9wZXJhdGlvbj0iQVJJVEhNRVRJQyIgazE9
IjAuMDAiIGsyPSIxLjAwIiBrMz0iMS4wMCIgazQ9IjAuMDAiXQorICAgICAgICAgIFtmZUNvbXBv
c2l0ZSBvcGVyYXRpb249IkFSSVRITUVUSUMiIGsxPSIwLjAwIiBrMj0iMS4wMCIgazM9IjEuMDAi
IGs0PSIwLjAwIl0KKyAgICAgICAgICAgIFtmZUNvbXBvc2l0ZSBvcGVyYXRpb249IkFSSVRITUVU
SUMiIGsxPSIwLjAwIiBrMj0iMC4yMCIgazM9IjAuMDAiIGs0PSIwLjAwIl0KKyAgICAgICAgICAg
ICAgW1NvdXJjZUdyYXBoaWNdCisgICAgICAgICAgICAgIFtTb3VyY2VHcmFwaGljXQorICAgICAg
ICAgICAgW2ZlQ29tcG9zaXRlIG9wZXJhdGlvbj0iQVJJVEhNRVRJQyIgazE9IjAuMDAiIGsyPSIw
LjMwIiBrMz0iMC4wMCIgazQ9IjAuMDAiXQorICAgICAgICAgICAgICBbU291cmNlQWxwaGFdCisg
ICAgICAgICAgICAgIFtTb3VyY2VBbHBoYV0KKyAgICAgICAgICBbZmVDb21wb3NpdGUgb3BlcmF0
aW9uPSJBUklUSE1FVElDIiBrMT0iMC4wMCIgazI9IjEuMDAiIGszPSItMS4wMCIgazQ9IjAuMDAi
XQorICAgICAgICAgICAgW1NvdXJjZUdyYXBoaWNdCisgICAgICAgICAgICBbZmVDb21wb3NpdGUg
b3BlcmF0aW9uPSJBUklUSE1FVElDIiBrMT0iMC4wMCIgazI9IjEuMDAiIGszPSIxLjAwIiBrND0i
MC4wMCJdCisgICAgICAgICAgICAgIFtmZUNvbXBvc2l0ZSBvcGVyYXRpb249IkFSSVRITUVUSUMi
IGsxPSIwLjAwIiBrMj0iMC4yMCIgazM9IjAuMDAiIGs0PSIwLjAwIl0KKyAgICAgICAgICAgICAg
ICBbU291cmNlR3JhcGhpY10KKyAgICAgICAgICAgICAgICBbU291cmNlR3JhcGhpY10KKyAgICAg
ICAgICAgICAgW2ZlQ29tcG9zaXRlIG9wZXJhdGlvbj0iQVJJVEhNRVRJQyIgazE9IjAuMDAiIGsy
PSIwLjMwIiBrMz0iMC4wMCIgazQ9IjAuMDAiXQorICAgICAgICAgICAgICAgIFtTb3VyY2VBbHBo
YV0KKyAgICAgICAgICAgICAgICBbU291cmNlQWxwaGFdCisgICAgICBSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlciB7ZmlsdGVyfSBbaWQ9ImNvbXBhcmlzb24iXSBbZmlsdGVyVW5pdHM9b2JqZWN0Qm91
bmRpbmdCb3hdIFtwcmltaXRpdmVVbml0cz11c2VyU3BhY2VPblVzZV0KKyAgICAgICAgW2ZlQ29t
cG9zaXRlIG9wZXJhdGlvbj0iQVJJVEhNRVRJQyIgazE9IjAuMDAiIGsyPSIxLjAwIiBrMz0iMS4w
MCIgazQ9IjAuMDAiXQorICAgICAgICAgIFtmZUNvbXBvc2l0ZSBvcGVyYXRpb249IkFSSVRITUVU
SUMiIGsxPSIwLjAwIiBrMj0iMC43MCIgazM9IjAuMDAiIGs0PSIwLjAwIl0KKyAgICAgICAgICAg
IFtTb3VyY2VHcmFwaGljXQorICAgICAgICAgICAgW1NvdXJjZUdyYXBoaWNdCisgICAgICAgICAg
W2ZlQ29tcG9zaXRlIG9wZXJhdGlvbj0iQVJJVEhNRVRJQyIgazE9IjAuMDAiIGsyPSIwLjMwIiBr
Mz0iMC4wMCIgazQ9IjAuMDAiXQorICAgICAgICAgICAgW1NvdXJjZUFscGhhXQorICAgICAgICAg
ICAgW1NvdXJjZUFscGhhXQorICAgIFJlbmRlclNWR1JlY3Qge3JlY3R9IGF0ICgxNCwxNCkgc2l6
ZSA3Mng3MiBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jMDBGRjAwXX1dIFt4PTIwLjAwXSBb
eT0yMC4wMF0gW3dpZHRoPTYwLjAwXSBbaGVpZ2h0PTYwLjAwXQorICAgICAgW2ZpbHRlcj0iY29t
cGFyaXNvbiJdIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyIHtmaWx0ZXJ9IGF0ICgxNCwxNCkgc2l6
ZSA3Mng3MgorICAgIFJlbmRlclNWR1JlY3Qge3JlY3R9IGF0ICgyMCwyMCkgc2l6ZSA2MHg2MCBb
ZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jMDBGRjAwXX1dIFt4PTI1LjAwXSBbeT0yNS4wMF0g
W3dpZHRoPTUwLjAwXSBbaGVpZ2h0PTUwLjAwXQorICAgICAgW2ZpbHRlcj0iYXJpdGhtZXRpYyJd
IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyIHtmaWx0ZXJ9IGF0ICgyMCwyMCkgc2l6ZSA2MHg2MAoK
UHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUt
YXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2
bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlQ29t
cG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS1hcml0aG1ldGljLWludmFsaWQtcmdiYS5zdmcJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS1hcml0
aG1ldGljLWludmFsaWQtcmdiYS5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjggQEAKKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHN0eWxlPSJi
YWNrZ3JvdW5kOndoaXRlOyI+CisgICAgPGRlZnM+CisgICAgICAgIDwhLS0gVGhpcyBmaWx0ZXIg
cHJvZHVjZXMgaW50ZXJtZWRpYXRlIHJlc3VsdHMgdGhhdCBhcmUgaW52YWxpZCBwcmUtbXVsdGlw
bGlvZWQgcmdiYSBwaXhlbHMuIC0tPgorICAgICAgICA8IS0tIFNwZWNpZmljYWxseSwgYWZ0ZXIg
dGhlIDR0aCBzdGVwIGFuIGludGVyaW9yIHBpeGVsIHdpbGwgY29udGFpbiAoMCwgMC44LCAwLCAw
LjUpIHdoaWNoICAtLT4KKyAgICAgICAgPCEtLSBpcyBpbnZhbGlkIGJlY2F1c2UgZyA+IGEuIFdo
ZW4gdXNlZCBpbiBvdGhlciBvcGVyYXRpb25zLCB0aGlzIG1heSBnZW5lcmF0ZSBiYWQgcmVzdWx0
cywgLS0+CisgICAgICAgIDwhLS0gc28gd2UgY2xhbXAgdGhlIGNvbG9yIHZhbHVlcyB0byBbMCwg
YWxwaGFdIG9uIGFsbCBpbnRlcm1lZGlhdGUgb3BlcmF0aW9ucy4gICAgICAgICAgICAgIC0tPgor
ICAgICAgICA8ZmlsdGVyIGlkPSJhcml0aG1ldGljIj4KKyAgICAgICAgICAgIDxmZUNvbXBvc2l0
ZSBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iU291cmNlR3Jh
cGhpYyIgazE9IjAiIGsyPSIwLjIiIGszPSIwIiBrND0iMCIgcmVzdWx0PSJyZ2JhMDIiIC8+Cisg
ICAgICAgICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGluPSJTb3VyY2VB
bHBoYSIgaW4yPSJTb3VyY2VBbHBoYSIgazE9IjAiIGsyPSIwLjMiIGszPSIwIiBrND0iMCIgcmVz
dWx0PSJhbHBoYTA1IiAvPgorICAgICAgICAgICAgPGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJhcml0
aG1ldGljIiBpbj0icmdiYTAyIiBpbjI9ImFscGhhMDUiIGsxPSIwIiBrMj0iMSIgazM9IjEiIGs0
PSIwIiByZXN1bHQ9InRtcCIgLz4KKyAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0i
YXJpdGhtZXRpYyIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0idG1wIiBrMT0iMCIgazI9IjEiIGsz
PSItMSIgazQ9IjAiIC8+CisgICAgICAgICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImFyaXRo
bWV0aWMiIGluPSJ0bXAiIGsxPSIwIiBrMj0iMSIgazM9IjEiIGs0PSIwIiAvPgorICAgICAgICA8
L2ZpbHRlcj4KKworICAgICAgICA8IS0tIFRoaXMgZmlsdGVyIGdlbmVyYXRlcyB0aGUgZXhwZWN0
ZWQgcmVzdWx0IHdpdGggbm8gb3ZlcmZsb3cuIC0tPgorICAgICAgICA8ZmlsdGVyIGlkPSJjb21w
YXJpc29uIj4KKyAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iYXJpdGhtZXRpYyIg
aW49IlNvdXJjZUdyYXBoaWMiIGluMj0iU291cmNlR3JhcGhpYyIgazE9IjAiIGsyPSIwLjciIGsz
PSIwIiBrND0iMCIgcmVzdWx0PSJ0bXAxIiAvPgorICAgICAgICAgICAgPGZlQ29tcG9zaXRlIG9w
ZXJhdG9yPSJhcml0aG1ldGljIiBpbj0iU291cmNlQWxwaGEiIGluMj0iU291cmNlQWxwaGEiIGsx
PSIwIiBrMj0iMC4zIiBrMz0iMCIgazQ9IjAiIHJlc3VsdD0idG1wMiIgLz4KKyAgICAgICAgICAg
IDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgaW49InRtcDEiIGluMj0idG1wMiIg
azE9IjAiIGsyPSIxIiBrMz0iMSIgazQ9IjAiIC8+CisgICAgICAgIDwvZmlsdGVyPgorICAgIDwv
ZGVmcz4KKworICAgIDwhLS0gQmFja2dyb3VuZCBmb3IgY29sb3IgY29tcGFyaXNvbi4gVGhlIGJv
cmRlciBvZiB0aGUgZmluYWwgcmVjdGFuZ2xlIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgaW50
ZXJpb3IgY29sb3IuIC0tPgorICAgIDxyZWN0IGZpbHRlcj0idXJsKCNjb21wYXJpc29uKSIgeD0i
MjAiIHk9IjIwIiB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIGZpbGw9InJnYmEoMCwyNTUsMCwxKSIg
Lz4KKworICAgIDwhLS0gVGhlIGNvbnRlbnQgb2YgaW50ZXJlc3QgLS0+CisgICAgPHJlY3QgZmls
dGVyPSJ1cmwoI2FyaXRobWV0aWMpIiB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1
MCIgZmlsbD0icmdiYSgwLDI1NSwwLDEpIiBzdHJva2U9Im5vbmUiIC8+Cis8L3N2Zz4KSW5kZXg6
IExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1y
Z2JhLWV4cGVjdGVkLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBh
cyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS1hcml0aG1ldGljLWlu
dmFsaWQtcmdiYS1leHBlY3RlZC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQog
ICArIGltYWdlL3BuZwoKCmlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUF5QUFBQUpZQ0FJQUFBQVZG
QlVuQUFBQUtYUkZXSFJqYUdWamEzTjFiUUJoTVRjelpqSXgKWWpsaU56QmpZbVl5WTJJeFlUSTNZ
bUZtWVdNeE1tRXpaZmhuQ2VjQUFBcllTVVJCVkhpYzdkcXhEY013REFCQnkvQXEyWCtnN0dLbApU
K3NIRkR0M3ZRaVdEMEpqenJrQkFORFpWeThBQVBBMEFnc0FJQ2F3QUFCaUFnc0FJQ2F3QUFCaUFn
c0FJQ2F3QUFCaUFnc0FJQ2F3CkFBQmlBZ3NBSUNhd0FBQmlBZ3NBSUNhd0FBQmlBZ3NBSUNhd0FB
QmlBZ3NBSUNhd0FBQmlBZ3NBSUNhd0FBQml4NVhIKy90K2ZYYSsKenRVckFBQVBkNzlDQWdENGNR
SUxBQ0Ftc0FBQVlnSUxBQ0IyNlpQN2w3bk5jRnBsYkdQMUNnREFmM0hCQWdDSUNTd0FnSmpBQWdD
SQpDU3dBZ0pqQUFnQ0lDU3dBZ0pqQUFnQ0lDU3dBZ0pqQUFnQ0lDU3dBZ0pqQUFnQ0lDU3dBZ0pq
QUFnQ0lDU3dBZ0pqQUFnQ0lDU3dBCmdKakFBZ0NJQ1N3QWdKakFBZ0NJQ1N3QWdKakFBZ0NJQ1N3
QWdKakFBZ0NJQ1N3QWdKakFBZ0NJQ1N3QWdKakFBZ0NJQ1N3QWdKakEKQWdDSUNTd0FnSmpBQWdD
SUNTd0FnSmpBQWdDSUNTd0FnSmpBQWdDSUNTd0FnSmpBQWdDSUNTd0FnSmpBQWdDSUNTd0FnSmpB
QWdDSQpDU3dBZ0pqQUFnQ0lDU3dBZ0pqQUFnQ0lDU3dBZ0pqQUFnQ0lDU3dBZ0pqQUFnQ0lIZUdz
c1kxd0dnREFUYmxnQVFERUJCWUFRRXhnCkFRREVCQllBUUd6TU9WZnZBQUR3S0M1WUFBQXhnUVVB
RUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXgKZ1FVQUVCTllBQUF4
Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllB
QUF4Z1FVQQpFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFF
Qk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZCkFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhn
UVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXgKZ1FVQUVCTllB
QUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVC
TllBQUF4Z1FVQQpFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdR
VUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZCkFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFB
QXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXgKZ1FVQUVC
TllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FV
QUVCTllBQUF4Z1FVQQpFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFB
eGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZCkFBQXhnUVVBRUJOWUFBQXhnUVVBRUJO
WUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXgKZ1FV
QUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4
Z1FVQUVCTllBQUF4Z1FVQQpFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5Z
QUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZCkFBQXhnUVVBRUJOWUFBQXhnUVVB
RUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXgK
Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllB
QUF4Z1FVQUVCTllBQUF4Z1FVQQpFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFF
Qk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZCkFBQXhnUVVBRUJOWUFBQXhn
UVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFB
QXgKZ1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVC
TllBQUF4Z1FVQUVCTllBQUF4Z1FVQQpFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdR
VUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZCkFBQXhnUVVBRUJOWUFB
QXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJO
WUFBQXgKZ1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FV
QUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQQpFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFB
eGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZCkFBQXhnUVVBRUJO
WUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVB
RUJOWUFBQXgKZ1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4
Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQQpFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5Z
QUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZCkFBQXhnUVVB
RUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhn
UVVBRUJOWUFBQXgKZ1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllB
QUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQQpFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFF
Qk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZCkFBQXhn
UVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFB
QXhnUVVBRUJOWUFBQXgKZ1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVC
TllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQQpFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdR
VUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZCkFB
QXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJO
WUFBQXhnUVVBRUJOWUFBQXgKZ1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FV
QUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQQpFQk5ZQUFBeGdRVUFFQk5ZQUFB
eGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5Z
CkFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVB
RUJOWUFBQXhnUVVBRUJOWUFBQXgKZ1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4
Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQQpFQk5ZQUFBeGdRVUFFQk5Z
QUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFF
Qk5ZCkFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhn
UVVBRUJOWUFBQXhnUVVBRUJOWUFBQXgKZ1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllB
QUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQQpFQk5ZQUFBeGdRVUFF
Qk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdRVUFFQk5ZQUFBeGdR
VUFFQk5ZCkFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFB
QXhnUVVBRUJOWUFBQXhnUVVBRUJOWUFBQXgKZ1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVC
TllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQUVCTllBQUF4Z1FVQQpFQk5ZQUFBeGdR
VUFFQk5ZQUFDeER6Z21EN0Zuc1pFWUFBQUFBRWxGVGtTdVFtQ0MKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125153</attachid>
            <date>2012-02-02 11:01:35 -0800</date>
            <delta_ts>2012-02-08 13:07:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77245-20120202140134.patch</filename>
            <type>text/plain</type>
            <size>51688</size>
            <attacher name="Stephen Chenney">schenney</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjU3MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMiBAQAorMjAxMi0wMi0wMiAgU3RlcGhl
biBDaGVubmV5ICA8c2NoZW5uZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
U1ZHIENvbXBvc2l0ZSBvZiBPZmZzZXQgY3Jhc2hlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcyNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZmVDb21wb3NpdGUgYXJpdGhtZXRpYyBtb2RlIGZp
bHRlciBjb3VsZCByZWFkaWx5IGJlIG1hZGUgdG8KKyAgICAgICAgZ2VuZXJhdGUgaW52YWxpZCBw
cmUtbXVsdGlwbGllZCBwaXhlbCB2YWx1ZXMgd2hpY2ggd291bGQgdGhlbiBnbyBvbiB0bworICAg
ICAgICBwb2xsdXRlIG90aGVyIGZpbHRlcnMgYW5kIGNhdXNlIGludmFsaWQgZmluYWwgb3V0cHV0
IHBpeGVscy4gVGhpcworICAgICAgICBwYXRjaCBhZGRzIGEgZmxhZyB0aGF0IGFsbG93cyBhcml0
aG1ldGljIGZpbHRlcnMgdG8gZ2VuZXJhdGUgaW52YWxpZAorICAgICAgICBpbnRlcm1lZGlhdGUg
cmVzdWx0cyB3aGlsZSBub3QgcHJvZHVjaW5nIGludmFsaWQgcmVzdWx0cyBhcyBpbnB1dHMgdG8K
KyAgICAgICAgb3RoZXIgZmlsdGVycy4gVGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiBGRiBh
bmQgT3BlcmEgd2hpbGUKKyAgICAgICAgcHJldmVudGluZyBjcmFzaGVzIG9yIG90aGVyIHVuZGVz
aXJhYmxlIGJlaGF2aW9yLgorCisgICAgICAgIFRlc3Q6IHN2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRl
LWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLnN2ZworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUJsZW5kLmg6CisgICAgICAgIChGRUJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1h
dHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaDoKKyAgICAgICAgKEZFQ29sb3JNYXRyaXgpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRU
cmFuc2Zlci5oOgorICAgICAgICAoRkVDb21wb25lbnRUcmFuc2Zlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVBcml0aG1ldGljUGl4ZWxzVmFsaWRhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OmFyaXRobWV0aWNTb2Z0d2FyZVZhbGlkYXRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6cGxhdGZvcm1Bcml0aG1ldGljU29mdHdhcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6RkVDb21wb3NpdGU6OnJlcXVpcmVzVmFsaWRQcmVNdWxSR0JBKToKKyAgICAgICAg
KEZFQ29tcG9zaXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29u
dm9sdmVNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29udm9sdmVNYXRyaXguaDoKKyAgICAgICAgKEZFQ29udm9sdmVNYXRyaXgpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oOgorICAgICAg
ICAoRkVDdXN0b21GaWx0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEaXNwbGFjZW1lbnRNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRN
YXA6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oOgorICAgICAgICAoRkVEaXNwbGFjZW1lbnRNYXAp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5oOgorICAg
ICAgICAoRkVEcm9wU2hhZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRmxvb2QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaDoK
KyAgICAgICAgKEZFRmxvb2QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVHYXVzc2lhbkJsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5oOgorICAgICAgICAoRkVHYXVzc2lhbkJsdXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oOgorICAgICAgICAoRkVMaWdodGluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmg6CisgICAgICAgIChGRU1lcmdlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaDoKKyAgICAg
ICAgKEZFTW9ycGhvbG9neSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU9mZnNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0Lmg6
CisgICAgICAgIChGRU9mZnNldCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmg6Cisg
ICAgICAgIChGRVRpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
dXJidWxlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVy
YnVsZW5jZS5oOgorICAgICAgICAoRkVUdXJidWxlbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3Q6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5oOgorICAgICAgICAoRmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdDo6cmVxdWlyZXNWYWxpZFByZU11bFJHQkEpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyRWZmZWN0OjpwbGF0Zm9ybUFwcGx5U2tpYSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmg6CisgICAgICAgIChTb3VyY2VBbHBoYSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmg6CisgICAgICAg
IChTb3VyY2VHcmFwaGljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3Nr
aWEvRkVDb2xvck1hdHJpeFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJp
eDo6cGxhdGZvcm1BcHBseVNraWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc2tpYS9GRUdhdXNzaWFuQmx1clNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVz
c2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTa2lhKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFn
ZS5oOgorICAgICAgICAoRkVJbWFnZSk6CisKIDIwMTItMDItMDIgIEFudHRpIEtvaXZpc3RvICA8
YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgcmVtYWluaW5nIGltcGxlbWVudGF0aW9u
IGZyb20gQ1NTU3R5bGVEZWNsYXJhdGlvbiB0byBzdWJjbGFzc2VzIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCShy
ZXZpc2lvbiAxMDY0OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQmxlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyBp
bmxpbmUgdW5zaWduZWQgY2hhciBsaWdodGVuKHVuc2kKICAgICByZXR1cm4gKChzdGQ6Om1heCgo
MjU1IC0gYWxwaGFBKSAqIGNvbG9yQiArIGNvbG9yQSAqIDI1NSwgKDI1NSAtIGFscGhhQikgKiBj
b2xvckEgKyBjb2xvckIgKiAyNTUpKSAvIDI1NSk7CiB9CiAKLXZvaWQgRkVCbGVuZDo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGJv
b2wgdmFsaWRQcmVNdWxSR0JBSXNSZXF1aXJlZCkKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0g
aW5wdXRFZmZlY3QoMCk7CiAgICAgRmlsdGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgxKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVCbGVuZC5oCShyZXZpc2lvbiAxMDY0OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBA
QCBwdWJsaWM6CiAgICAgQmxlbmRNb2RlVHlwZSBibGVuZE1vZGUoKSBjb25zdDsKICAgICBib29s
IHNldEJsZW5kTW9kZShCbGVuZE1vZGVUeXBlKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJl
KGJvb2wgdmFsaWRQcmVNdWxSR0JBSXNSZXF1aXJlZCk7CiAgICAgdmlydHVhbCB2b2lkIGR1bXAo
KTsKIAogICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJiwgaW50IGluZGVudGlvbikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAJ
KHJldmlzaW9uIDEwNjQ5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb2xvck1hdHJpeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw3ICsxNTYsNyBA
QCB2b2lkIGVmZmVjdFR5cGUoQnl0ZUFycmF5KiBwaXhlbEFycmF5LCBjCiAgICAgfQogfQogCi12
b2lkIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFQ29sb3JN
YXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShib29sIHZhbGlkUHJlTXVsUkdCQUlzUmVxdWly
ZWQpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29sb3JNYXRyaXguaAkocmV2aXNpb24gMTA2NDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDkgKzQ4LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcygpIGNv
bnN0OwogICAgIGJvb2wgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxh
dGZvcm1BcHBseVNvZnR3YXJlKGJvb2wgdmFsaWRQcmVNdWxSR0JBSXNSZXF1aXJlZCk7CiAjaWYg
VVNFKFNLSUEpCi0gICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7CisgICAgdmly
dHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKGJvb2wgdmFsaWRQcmVNdWxSR0JBSXNSZXF1aXJl
ZCk7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb25lbnRUcmFuc2Zlci5jcHAJKHJldmlzaW9uIDEwNjQ5MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgdm9pZCBnYW1tYSh1bnNpZ25lZCBj
aGFyKiB2YWx1ZXMsCiAgICAgfQogfQogCi12b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZShib29sIHZhbGlkUHJlTXVsUkdCQUlzUmVxdWlyZWQpCiB7CiAgICAgRmlsdGVy
RWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJh
bnNmZXIuaAkocmV2aXNpb24gMTA2NDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4
LDcgKzc4LDcgQEAgcHVibGljOgogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gYWxwaGFG
dW5jdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0QWxwaGFGdW5jdGlvbihjb25zdCBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCk7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShib29sIHZh
bGlkUHJlTXVsUkdCQUlzUmVxdWlyZWQpOwogICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAKICAg
ICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYs
IGludCBpbmRlbnRpb24pIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAJKHJldmlzaW9uIDEw
NjQ5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b3NpdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsOCArMTcxLDk4IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBhcml0aG1ldGljU29mdHdhcmUodW4KICAgICBjb21wdXRlQXJpdGhtZXRpY1BpeGVs
czwxLCAxLCAxLCAxPihzb3VyY2UsIGRlc3RpbmF0aW9uLCBwaXhlbEFycmF5TGVuZ3RoLCBrMSwg
azIsIGszLCBrNCk7CiB9CiAKK3RlbXBsYXRlIDxpbnQgYjEsIGludCBiMiwgaW50IGIzLCBpbnQg
YjQ+CitzdGF0aWMgaW5saW5lIHZvaWQgY29tcHV0ZUFyaXRobWV0aWNQaXhlbHNWYWxpZGF0ZWQo
dW5zaWduZWQgY2hhciogc291cmNlLCB1bnNpZ25lZCBjaGFyKiBkZXN0aW5hdGlvbiwgaW50IHBp
eGVsQXJyYXlMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCkKK3sKKyAgICBmbG9hdCBzY2FsZWRL
MTsKKyAgICBmbG9hdCBzY2FsZWRLNDsKKyAgICBpZiAoYjEpCisgICAgICAgIHNjYWxlZEsxID0g
azEgLyAyNTUuZjsKKyAgICBpZiAoYjQpCisgICAgICAgIHNjYWxlZEs0ID0gazQgKiAyNTUuZjsK
KworICAgIEFTU0VSVCghKHBpeGVsQXJyYXlMZW5ndGggJSA0KSk7CisgICAgaW50IG51bVBpeGVs
cyA9IHBpeGVsQXJyYXlMZW5ndGggLyA0OworICAgIHdoaWxlICgtLW51bVBpeGVscyA+PSAwKSB7
CisgICAgICAgIC8vIE9wZXJhdGUgb24gYWxwaGEgZmlyc3QgdG8gZ2V0IGxpbWl0cyBmb3IgdGhl
IGNvbG9yIHZhbHVlcworICAgICAgICB1bnNpZ25lZCBjaGFyIGExID0gKihzb3VyY2UgKyAzKTsK
KyAgICAgICAgdW5zaWduZWQgY2hhciBhMiA9ICooZGVzdGluYXRpb24gKyAzKTsKKyAgICAgICAg
ZmxvYXQgYWxwaGEgPSAwOworICAgICAgICBpZiAoYjEpCisgICAgICAgICAgICBhbHBoYSArPSBz
Y2FsZWRLMSAqIGExICogYTI7CisgICAgICAgIGlmIChiMikKKyAgICAgICAgICAgIGFscGhhICs9
IGsyICogYTE7CisgICAgICAgIGlmIChiMykKKyAgICAgICAgICAgIGFscGhhICs9IGszICogYTI7
CisgICAgICAgIGlmIChiNCkKKyAgICAgICAgICAgIGFscGhhICs9IHNjYWxlZEs0OworCisgICAg
ICAgIGlmIChhbHBoYSA8PSAwKSB7CisgICAgICAgICAgICAqKGRlc3RpbmF0aW9uKyspID0gMDsK
KyAgICAgICAgICAgICooZGVzdGluYXRpb24rKykgPSAwOworICAgICAgICAgICAgKihkZXN0aW5h
dGlvbisrKSA9IDA7CisgICAgICAgICAgICAqKGRlc3RpbmF0aW9uKyspID0gMDsKKyAgICAgICAg
ICAgIHNvdXJjZSArPSA0OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoYWxwaGEgPj0gMjU1KQorICAgICAgICAgICAgYWxwaGEgPSAyNTU7CisKKyAgICAg
ICAgLy8gQ29sb3IgY29tcG9uZW50cworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsr
aSkgeworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBpMSA9ICpzb3VyY2U7CisgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIGkyID0gKmRlc3RpbmF0aW9uOworICAgICAgICAgICAgZmxvYXQgcmVz
dWx0ID0gMDsKKyAgICAgICAgICAgIGlmIChiMSkKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0g
c2NhbGVkSzEgKiBpMSAqIGkyOworICAgICAgICAgICAgaWYgKGIyKQorICAgICAgICAgICAgICAg
IHJlc3VsdCArPSBrMiAqIGkxOworICAgICAgICAgICAgaWYgKGIzKQorICAgICAgICAgICAgICAg
IHJlc3VsdCArPSBrMyAqIGkyOworICAgICAgICAgICAgaWYgKGI0KQorICAgICAgICAgICAgICAg
IHJlc3VsdCArPSBzY2FsZWRLNDsKKyAgICAKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPD0gMCkK
KyAgICAgICAgICAgICAgICAqZGVzdGluYXRpb24gPSAwOworICAgICAgICAgICAgZWxzZSBpZiAo
cmVzdWx0ID49IGFscGhhKQorICAgICAgICAgICAgICAgICpkZXN0aW5hdGlvbiA9IGFscGhhOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICpkZXN0aW5hdGlvbiA9IHJlc3VsdDsK
KyAgICAgICAgICAgICsrc291cmNlOworICAgICAgICAgICAgKytkZXN0aW5hdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIEFscGhhCisgICAgICAgICpkZXN0aW5hdGlvbiA9IGFscGhhOwor
ICAgICAgICArK3NvdXJjZTsKKyAgICAgICAgKytkZXN0aW5hdGlvbjsKKyAgICB9Cit9CisKK3N0
YXRpYyBpbmxpbmUgdm9pZCBhcml0aG1ldGljU29mdHdhcmVWYWxpZGF0ZWQodW5zaWduZWQgY2hh
ciogc291cmNlLCB1bnNpZ25lZCBjaGFyKiBkZXN0aW5hdGlvbiwgaW50IHBpeGVsQXJyYXlMZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMs
IGZsb2F0IGs0KQoreworICAgIGlmICghazQpIHsKKyAgICAgICAgaWYgKCFrMSkgeworICAgICAg
ICAgICAgY29tcHV0ZUFyaXRobWV0aWNQaXhlbHNWYWxpZGF0ZWQ8MCwgMSwgMSwgMD4oc291cmNl
LCBkZXN0aW5hdGlvbiwgcGl4ZWxBcnJheUxlbmd0aCwgazEsIGsyLCBrMywgazQpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29tcHV0ZUFyaXRobWV0aWNQaXhl
bHNWYWxpZGF0ZWQ8MSwgMSwgMSwgMD4oc291cmNlLCBkZXN0aW5hdGlvbiwgcGl4ZWxBcnJheUxl
bmd0aCwgazEsIGsyLCBrMywgazQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KCFrMSkgeworICAgICAgICBjb21wdXRlQXJpdGhtZXRpY1BpeGVsc1ZhbGlkYXRlZDwwLCAxLCAx
LCAxPihzb3VyY2UsIGRlc3RpbmF0aW9uLCBwaXhlbEFycmF5TGVuZ3RoLCBrMSwgazIsIGszLCBr
NCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29tcHV0ZUFyaXRobWV0aWNQaXhlbHNW
YWxpZGF0ZWQ8MSwgMSwgMSwgMT4oc291cmNlLCBkZXN0aW5hdGlvbiwgcGl4ZWxBcnJheUxlbmd0
aCwgazEsIGsyLCBrMywgazQpOworfQorCiBpbmxpbmUgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZv
cm1Bcml0aG1ldGljU29mdHdhcmUoQnl0ZUFycmF5KiBzb3VyY2UsIEJ5dGVBcnJheSogZGVzdGlu
YXRpb24sCi0gICAgZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9hdCBrMywgZmxvYXQgazQpCisgICAg
ZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9hdCBrMywgZmxvYXQgazQsIGJvb2wgdmFsaWRQcmVNdWxS
R0JBSXNSZXF1aXJlZCkKIHsKICAgICBpbnQgbGVuZ3RoID0gc291cmNlLT5sZW5ndGgoKTsKICAg
ICBBU1NFUlQobGVuZ3RoID09IHN0YXRpY19jYXN0PGludD4oZGVzdGluYXRpb24tPmxlbmd0aCgp
KSk7CkBAIC0xODIsNyArMjcyLDEwIEBAIGlubGluZSB2b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9y
bUFyaXRobWUKICAgICBmbG9hdCBjb2VmZmljaWVudHNbNF0gID0geyBrMSwgazIsIGszLCBrNCB9
OwogICAgIHBsYXRmb3JtQXJpdGhtZXRpY05lb24oc291cmNlLT5kYXRhKCksIGRlc3RpbmF0aW9u
LT5kYXRhKCksIGxlbmd0aCwgY29lZmZpY2llbnRzKTsKICNlbHNlCi0gICAgYXJpdGhtZXRpY1Nv
ZnR3YXJlKHNvdXJjZS0+ZGF0YSgpLCBkZXN0aW5hdGlvbi0+ZGF0YSgpLCBsZW5ndGgsIGsxLCBr
MiwgazMsIGs0KTsKKyAgICBpZiAodmFsaWRQcmVNdWxSR0JBSXNSZXF1aXJlZCkKKyAgICAgICAg
YXJpdGhtZXRpY1NvZnR3YXJlVmFsaWRhdGVkKHNvdXJjZS0+ZGF0YSgpLCBkZXN0aW5hdGlvbi0+
ZGF0YSgpLCBsZW5ndGgsIGsxLCBrMiwgazMsIGs0KTsKKyAgICBlbHNlCisgICAgICAgIGFyaXRo
bWV0aWNTb2Z0d2FyZShzb3VyY2UtPmRhdGEoKSwgZGVzdGluYXRpb24tPmRhdGEoKSwgbGVuZ3Ro
LCBrMSwgazIsIGszLCBrNCk7CiAjZW5kaWYKIH0KIApAQCAtMjA3LDcgKzMwMCw3IEBAIHZvaWQg
RkVDb21wb3NpdGU6OmRldGVybWluZUFic29sdXRlUGFpbnQKICAgICB9CiB9CiAKLXZvaWQgRkVD
b21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFQ29tcG9zaXRlOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoYm9vbCB2YWxpZFByZU11bFJHQkFJc1JlcXVpcmVkKQogewogICAg
IEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKICAgICBGaWx0ZXJFZmZlY3QqIGlu
MiA9IGlucHV0RWZmZWN0KDEpOwpAQCAtMjIzLDcgKzMxNiw3IEBAIHZvaWQgRkVDb21wb3NpdGU6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgKICAgICAgICAgSW50UmVjdCBlZmZlY3RCRHJhd2luZ1Jl
Y3QgPSByZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VEYXRhKGluMi0+YWJzb2x1dGVQYWludFJl
Y3QoKSk7CiAgICAgICAgIGluMi0+Y29weVByZW11bHRpcGxpZWRJbWFnZShkc3RQaXhlbEFycmF5
LCBlZmZlY3RCRHJhd2luZ1JlY3QpOwogCi0gICAgICAgIHBsYXRmb3JtQXJpdGhtZXRpY1NvZnR3
YXJlKHNyY1BpeGVsQXJyYXkuZ2V0KCksIGRzdFBpeGVsQXJyYXksIG1fazEsIG1fazIsIG1fazMs
IG1fazQpOworICAgICAgICBwbGF0Zm9ybUFyaXRobWV0aWNTb2Z0d2FyZShzcmNQaXhlbEFycmF5
LmdldCgpLCBkc3RQaXhlbEFycmF5LCBtX2sxLCBtX2syLCBtX2szLCBtX2s0LCB2YWxpZFByZU11
bFJHQkFJc1JlcXVpcmVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3Np
dGUuaAkocmV2aXNpb24gMTA2NDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw4IEBA
IHB1YmxpYzoKICAgICBmbG9hdCBrNCgpIGNvbnN0OwogICAgIGJvb2wgc2V0SzQoZmxvYXQpOwog
Ci0gICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpOworICAgIHZpcnR1YWwg
Ym9vbCByZXF1aXJlc1ZhbGlkUHJlTXVsUkdCQSgpIHsgcmV0dXJuIG1fdHlwZSAhPSBGRUNPTVBP
U0lURV9PUEVSQVRPUl9BUklUSE1FVElDOyB9CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBw
bHlTb2Z0d2FyZShib29sIHZhbGlkUHJlTXVsUkdCQUlzUmVxdWlyZWQpOwogICAgIHZpcnR1YWwg
dm9pZCBkdW1wKCk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRldGVybWluZUFic29sdXRlUGFp
bnRSZWN0KCk7CkBAIC02OSw3ICs3MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRkVDb21w
b3NpdGUoRmlsdGVyKiwgY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYsIGZsb2F0LCBmbG9h
dCwgZmxvYXQsIGZsb2F0KTsKIAotICAgIGlubGluZSB2b2lkIHBsYXRmb3JtQXJpdGhtZXRpY1Nv
ZnR3YXJlKEJ5dGVBcnJheSogc291cmNlLCBCeXRlQXJyYXkqIGRlc3RpbmF0aW9uLCBmbG9hdCBr
MSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCk7CisgICAgaW5saW5lIHZvaWQgcGxhdGZv
cm1Bcml0aG1ldGljU29mdHdhcmUoQnl0ZUFycmF5KiBzb3VyY2UsIEJ5dGVBcnJheSogZGVzdGlu
YXRpb24sIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0LCBib29sIHZhbGlk
UHJlTXVsUkdCQUlzUmVxdWlyZWQpOwogICAgIGlubGluZSB2b2lkIHBsYXRmb3JtQXJpdGhtZXRp
Y05lb24odW5zaWduZWQgY2hhciogc291cmNlLCB1bnNpZ25lZCAgY2hhciogZGVzdGluYXRpb24s
IHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5ndGgsIGZsb2F0KiBrQXJyYXkpOwogCiAgICAgQ29tcG9z
aXRlT3BlcmF0aW9uVHlwZSBtX3R5cGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAJ
KHJldmlzaW9uIDEwNjQ5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5OSw3ICszOTks
NyBAQCB2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnNldEludGVyaW9yUGl4ZWxzCiAgICAgcGFyYW0t
PmZpbHRlci0+c2V0SW50ZXJpb3JQaXhlbHMoKnBhcmFtLT5wYWludGluZ0RhdGEsIHBhcmFtLT5j
bGlwUmlnaHQsIHBhcmFtLT5jbGlwQm90dG9tLCBwYXJhbS0+eVN0YXJ0LCBwYXJhbS0+eUVuZCk7
CiB9CiAKLXZvaWQgRkVDb252b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3Zv
aWQgRkVDb252b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGJvb2wgdmFsaWRQcmVN
dWxSR0JBSXNSZXF1aXJlZCkKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3Qo
MCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b252b2x2ZU1hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oCShyZXZpc2lvbiAxMDY0OTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXgu
aAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwcmVz
ZXJ2ZUFscGhhKCkgY29uc3Q7CiAgICAgYm9vbCBzZXRQcmVzZXJ2ZUFscGhhKGJvb2wpOwogCi0g
ICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpOworICAgIHZpcnR1YWwgdm9p
ZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoYm9vbCB2YWxpZFByZU11bFJHQkFJc1JlcXVpcmVkKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRldGVybWluZUFi
c29sdXRlUGFpbnRSZWN0KCkgeyBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0
KG1heEVmZmVjdFJlY3QoKSkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcAkocmV2aXNp
b24gMTA2NDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUN1c3RvbUZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAgUGFzc1Jl
ZlB0cjxGRUN1c3RvbUZpbHRlcj4gRkVDdXN0b21GaWx0ZQogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRkVDdXN0b21GaWx0ZXIoZmlsdGVyLCBkb2N1bWVudCwgcHJvZ3JhbSwgcGFyYW1ldGVycywg
bWVzaFJvd3MsIG1lc2hDb2x1bW5zLCBtZXNoQm94VHlwZSwgbWVzaFR5cGUpKTsKIH0KIAotdm9p
ZCBGRUN1c3RvbUZpbHRlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVDdXN0b21G
aWx0ZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShib29sIHZhbGlkUHJlTXVsUkdCQUlzUmVxdWly
ZWQpCiB7CiAgICAgQnl0ZUFycmF5KiBkc3RQaXhlbEFycmF5ID0gY3JlYXRlUHJlbXVsdGlwbGll
ZEltYWdlUmVzdWx0KCk7CiAgICAgaWYgKCFkc3RQaXhlbEFycmF5KQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21G
aWx0ZXIuaAkocmV2aXNpb24gMTA2NDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2
MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtZXNoUm93cywgdW5z
aWduZWQgbWVzaENvbHVtbnMsIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaEJveFR5cGUsIAog
ICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUpOwogCi0g
ICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpOworICAgIHZpcnR1YWwgdm9p
ZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoYm9vbCB2YWxpZFByZU11bFJHQkFJc1JlcXVpcmVkKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCiAgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRl
cm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50aW9uKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1l
bnRNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCShyZXZpc2lvbiAxMDY0OTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCBib29sIEZFRGlzcGxhY2VtZW50TWFw
OjpzZXRTY2FsZShmbG9hdCBzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRkVEaXNwbGFj
ZW1lbnRNYXA6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFRGlzcGxhY2VtZW50TWFw
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoYm9vbCB2YWxpZFByZU11bFJHQkFJc1JlcXVpcmVkKQog
ewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKICAgICBGaWx0ZXJFZmZl
Y3QqIGluMiA9IGlucHV0RWZmZWN0KDEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaAko
cmV2aXNpb24gMTA2NDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURpc3BsYWNlbWVudE1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBA
IHB1YmxpYzoKICAgICBmbG9hdCBzY2FsZSgpIGNvbnN0OwogICAgIGJvb2wgc2V0U2NhbGUoZmxv
YXQpOwogCi0gICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpOworICAgIHZp
cnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoYm9vbCB2YWxpZFByZU11bFJHQkFJc1Jl
cXVpcmVkKTsKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRl
dGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgeyBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3Np
bmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCShy
ZXZpc2lvbiAxMDY0OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRHJvcFNoYWRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgdm9p
ZCBGRURyb3BTaGFkb3c6OmRldGVybWluZUFic29sdXRlUGFpbgogICAgIHNldEFic29sdXRlUGFp
bnRSZWN0KGVuY2xvc2luZ0ludFJlY3QoYWJzb2x1dGVQYWludFJlY3QpKTsKIH0KIAotdm9pZCBG
RURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFRHJvcFNoYWRvdzo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKGJvb2wgdmFsaWRQcmVNdWxSR0JBSXNSZXF1aXJlZCkKIHsK
ICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFk
b3cuaAkocmV2aXNpb24gMTA2NDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgZmxvYXQgY2FsY3VsYXRlU3RkRGV2aWF0aW9uKGZsb2F0
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGJvb2wgdmFsaWRQcmVNdWxSR0JBSXNSZXF1
aXJlZCk7CiAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkZXRl
cm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCShyZXZpc2lvbiAxMDY0OTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIGJvb2wgRkVGbG9vZDo6c2V0Rmxvb2RP
cGFjaXR5KGZsb2F0IGZsb28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBGRUZsb29kOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUZsb29kOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoYm9vbCB2YWxpZFByZU11bFJHQkFJc1JlcXVpcmVkKQogewogICAgIEltYWdlQnVmZmVyKiBy
ZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAgaWYgKCFyZXN1bHRJ
bWFnZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVG
bG9vZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVGbG9vZC5oCShyZXZpc2lvbiAxMDY0OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyAr
MzksNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZmxvb2RPcGFjaXR5KCkgY29uc3Q7CiAgICAgYm9v
bCBzZXRGbG9vZE9wYWNpdHkoZmxvYXQpOwogCi0gICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpOworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoYm9v
bCB2YWxpZFByZU11bFJHQkFJc1JlcXVpcmVkKTsKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwog
CiAgICAgdmlydHVhbCB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgeyBzZXRBYnNv
bHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAkocmV2aXNpb24gMTA2NDkxKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpkZXRlcm1pbmVB
YnNvbHV0ZVBhCiAgICAgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChhYnNv
bHV0ZVBhaW50UmVjdCkpOwogfQogCi12b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoKQordm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGJv
b2wgdmFsaWRQcmVNdWxSR0JBSXNSZXF1aXJlZCkKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0g
aW5wdXRFZmZlY3QoMCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgJKHJldmlzaW9uIDEwNjQ5
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lh
bkJsdXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgZmxvYXQgY2FsY3VsYXRlU3RkRGV2aWF0aW9uKGZsb2F0KTsKIAotICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1B
cHBseVNvZnR3YXJlKGJvb2wgdmFsaWRQcmVNdWxSR0JBSXNSZXF1aXJlZCk7CiAgICAgdmlydHVh
bCB2b2lkIGR1bXAoKTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQ
YWludFJlY3QoKTsKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICBpbmxpbmUgdm9pZCBw
bGF0Zm9ybUFwcGx5R2VuZXJpYyhCeXRlQXJyYXkqIHNyY1BpeGVsQXJyYXksIEJ5dGVBcnJheSog
dG1wUGl4ZWxBcnJheSwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtlcm5lbFNpemVZ
LCBJbnRTaXplJiBwYWludFNpemUpOwogICAgIGlubGluZSB2b2lkIHBsYXRmb3JtQXBwbHlOZW9u
KEJ5dGVBcnJheSogc3JjUGl4ZWxBcnJheSwgQnl0ZUFycmF5KiB0bXBQaXhlbEFycmF5LCB1bnNp
Z25lZCBrZXJuZWxTaXplWCwgdW5zaWduZWQga2VybmVsU2l6ZVksIEludFNpemUmIHBhaW50U2l6
ZSk7CiAjaWYgVVNFKFNLSUEpCi0gICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7
CisgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKGJvb2wgdmFsaWRQcmVNdWxSR0JB
SXNSZXF1aXJlZCk7CiAjZW5kaWYKIAogICAgIGZsb2F0IG1fc3RkWDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5n
LmNwcAkocmV2aXNpb24gMTA2NDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg0LDcgKzM4NCw3
IEBAIGJvb2wgRkVMaWdodGluZzo6ZHJhd0xpZ2h0aW5nKEJ5dGVBcnJheSoKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9p
ZCBGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoYm9vbCB2YWxpZFByZU11bFJHQkFJ
c1JlcXVpcmVkKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5n
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUxpZ2h0aW5nLmgJKHJldmlzaW9uIDEwNjQ5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3
ICs0NSw3IEBAIHN0cnVjdCBGRUxpZ2h0aW5nUGFpbnRpbmdEYXRhRm9yTmVvbjsKIAogY2xhc3Mg
RkVMaWdodGluZyA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1B
cHBseVNvZnR3YXJlKGJvb2wgdmFsaWRQcmVNdWxSR0JBSXNSZXF1aXJlZCk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSB7IHNldEFic29sdXRlUGFpbnRS
ZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3Bw
CShyZXZpc2lvbiAxMDY0OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTWVyZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIFBhc3NS
ZWZQdHI8RkVNZXJnZT4gRkVNZXJnZTo6Y3JlYXRlKEZpbHQKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEZFTWVyZ2UoZmlsdGVyKSk7CiB9CiAKLXZvaWQgRkVNZXJnZTo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKK3ZvaWQgRkVNZXJnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGJvb2wgdmFsaWRQ
cmVNdWxSR0JBSXNSZXF1aXJlZCkKIHsKICAgICB1bnNpZ25lZCBzaXplID0gbnVtYmVyT2ZFZmZl
Y3RJbnB1dHMoKTsKICAgICBBU1NFUlQoc2l6ZSA+IDApOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmgJKHJldmlzaW9uIDEw
NjQ5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIEZFTWVyZ2UgOiBwdWJs
aWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRU1lcmdl
PiBjcmVhdGUoRmlsdGVyKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3
YXJlKCk7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShib29sIHZhbGlk
UHJlTXVsUkdCQUlzUmVxdWlyZWQpOwogICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAKICAgICB2
aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYsIGlu
dCBpbmRlbnRpb24pIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAkocmV2aXNpb24gMTA2
NDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBo
b2xvZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBGRU1vcnBo
b2xvZ3k6OnBsYXRmb3JtQXBwbHkoUGFpbnRpbgogfQogCiAKLXZvaWQgRkVNb3JwaG9sb2d5Ojpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZShib29sIHZhbGlkUHJlTXVsUkdCQUlzUmVxdWlyZWQpCiB7CiAgICAgRmlsdGVyRWZm
ZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgJKHJldmlzaW9u
IDEwNjQ5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVN
b3JwaG9sb2d5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAg
IGZsb2F0IHJhZGl1c1koKSBjb25zdDsKICAgICBib29sIHNldFJhZGl1c1koZmxvYXQpOwogCi0g
ICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpOworICAgIHZpcnR1YWwgdm9p
ZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoYm9vbCB2YWxpZFByZU11bFJHQkFJc1JlcXVpcmVkKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRldGVybWluZUFi
c29sdXRlUGFpbnRSZWN0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAkocmV2aXNpb24gMTA2NDkxKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBGRU9mZnNldDo6ZGV0ZXJtaW5lQWJz
b2x1dGVQYWludFJlYwogICAgIHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3Qo
cGFpbnRSZWN0KSk7CiB9CiAKLXZvaWQgRkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
Cit2b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoYm9vbCB2YWxpZFByZU11bFJH
QkFJc1JlcXVpcmVkKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNl
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVPZmZzZXQuaAkocmV2aXNpb24gMTA2NDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBkeSgpIGNvbnN0OwogICAgIHZvaWQgc2V0RHkoZmxv
YXQpOwogCi0gICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpOworICAgIHZp
cnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoYm9vbCB2YWxpZFByZU11bFJHQkFJc1Jl
cXVpcmVkKTsKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogICAgIAogICAgIHZpcnR1YWwgdm9p
ZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAkocmV2aXNpb24gMTA2
NDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIFBhc3NSZWZQdHI8RkVUaWxlPiBG
RVRpbGU6OmNyZWF0ZShGaWx0ZXIKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZFVGlsZShmaWx0
ZXIpKTsKIH0KIAotdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZF
VGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGJvb2wgdmFsaWRQcmVNdWxSR0JBSXNSZXF1aXJl
ZCkKIHsKIC8vIEZJWE1FOiBTZWUgYnVnIDQ3MzE1LiBUaGlzIGlzIGEgaGFjayB0byB3b3JrIGFy
b3VuZCBhIGNvbXBpbGUgZmFpbHVyZSwgYnV0IGlzIGluY29ycmVjdCBiZWhhdmlvciBvdGhlcndp
c2UuCiAjaWYgRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUaWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaAkocmV2aXNpb24gMTA2NDkxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBGRVRpbGUgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRVRpbGU+IGNyZWF0ZShGaWx0ZXIqIGZp
bHRlcik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7CisgICAg
dmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShib29sIHZhbGlkUHJlTXVsUkdCQUlz
UmVxdWlyZWQpOwogICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSB7IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xv
c2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAJ
KHJldmlzaW9uIDEwNjQ5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUdXJidWxlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU0LDcgKzM1NCw3IEBA
IHZvaWQgRkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uV29ya2VyKEZpbGwKICAgICBwYXJhbWV0ZXJz
LT5maWx0ZXItPmZpbGxSZWdpb24ocGFyYW1ldGVycy0+cGl4ZWxBcnJheSwgKnBhcmFtZXRlcnMt
PnBhaW50aW5nRGF0YSwgcGFyYW1ldGVycy0+c3RhcnRZLCBwYXJhbWV0ZXJzLT5lbmRZKTsKIH0K
IAotdm9pZCBGRVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFVHVy
YnVsZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGJvb2wgdmFsaWRQcmVNdWxSR0JBSXNSZXF1
aXJlZCkKIHsKICAgICBCeXRlQXJyYXkqIHBpeGVsQXJyYXkgPSBjcmVhdGVVbm11bHRpcGxpZWRJ
bWFnZVJlc3VsdCgpOwogICAgIGlmICghcGl4ZWxBcnJheSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaAko
cmV2aXNpb24gMTA2NDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRVR1cmJ1bGVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgdm9pZCBmaWxsUmVnaW9uV29ya2VyKHZvaWQqKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxh
dGZvcm1BcHBseVNvZnR3YXJlKGJvb2wgdmFsaWRQcmVNdWxSR0JBSXNSZXF1aXJlZCk7CiAgICAg
dmlydHVhbCB2b2lkIGR1bXAoKTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGV0ZXJtaW5lQWJz
b2x1dGVQYWludFJlY3QoKSB7IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3Qo
bWF4RWZmZWN0UmVjdCgpKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHJldmlzaW9uIDEw
NjQ5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsMTQgKzkwLDE3IEBAIEZpbHRlckVmZmVj
dCogRmlsdGVyRWZmZWN0OjppbnB1dEVmZmVjdCgKICAgICByZXR1cm4gbV9pbnB1dEVmZmVjdHMu
YXQobnVtYmVyKS5nZXQoKTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmFwcGx5KCkKK3ZvaWQg
RmlsdGVyRWZmZWN0OjphcHBseShib29sIHZhbGlkUHJlTXVsUkdCQUlzUmVxdWlyZWQpCiB7CiAg
ICAgaWYgKGhhc1Jlc3VsdCgpKQogICAgICAgICByZXR1cm47CisKKyAgICBib29sIHZhbGlkUHJl
TXVsUkdCQUlucHV0c1JlcXVpcmVkID0gcmVxdWlyZXNWYWxpZFByZU11bFJHQkEoKTsKKwogICAg
IHVuc2lnbmVkIHNpemUgPSBtX2lucHV0RWZmZWN0cy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBGaWx0ZXJFZmZlY3QqIGluID0gbV9p
bnB1dEVmZmVjdHMuYXQoaSkuZ2V0KCk7Ci0gICAgICAgIGluLT5hcHBseSgpOworICAgICAgICBp
bi0+YXBwbHkodmFsaWRQcmVNdWxSR0JBSW5wdXRzUmVxdWlyZWQpOwogICAgICAgICBpZiAoIWlu
LT5oYXNSZXN1bHQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDUsMTAgKzEw
OCwxMCBAQCB2b2lkIEZpbHRlckVmZmVjdDo6YXBwbHkoKQogICAgIAogICAgIC8vIEFkZCBwbGF0
Zm9ybSBzcGVjaWZpYyBhcHBseSBmdW5jdGlvbnMgaGVyZSBhbmQgcmV0dXJuIGVhcmxpZXIuCiAj
aWYgVVNFKFNLSUEpCi0gICAgaWYgKHBsYXRmb3JtQXBwbHlTa2lhKCkpCisgICAgaWYgKHBsYXRm
b3JtQXBwbHlTa2lhKHZhbGlkUHJlTXVsUkdCQUlzUmVxdWlyZWQpKQogICAgICAgICByZXR1cm47
CiAjZW5kaWYKLSAgICBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKKyAgICBwbGF0Zm9ybUFwcGx5
U29mdHdhcmUodmFsaWRQcmVNdWxSR0JBSXNSZXF1aXJlZCk7CiB9CiAKIHZvaWQgRmlsdGVyRWZm
ZWN0OjpjbGVhclJlc3VsdCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJKHJldmlzaW9uIDEwNjQ5MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDExICs4NCwxNSBAQCBwdWJsaWM6CiAgICAgRmxvYXRS
ZWN0IG1heEVmZmVjdFJlY3QoKSBjb25zdCB7IHJldHVybiBtX21heEVmZmVjdFJlY3Q7IH0KICAg
ICB2b2lkIHNldE1heEVmZmVjdFJlY3QoY29uc3QgRmxvYXRSZWN0JiBtYXhFZmZlY3RSZWN0KSB7
IG1fbWF4RWZmZWN0UmVjdCA9IG1heEVmZmVjdFJlY3Q7IH0gCiAKLSAgICB2b2lkIGFwcGx5KCk7
CisgICAgdm9pZCBhcHBseShib29sIHZhbGlkUHJlTXVsUkdCQUlzUmVxdWlyZWQgPSB0cnVlKTsK
ICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgPSAwOworICAg
IC8vIFJldHVybiB0cnVlIGlmIHRoZSBmaWx0ZXIgd2lsbCBvbmx5IG9wZXJhdGUgY29ycmVjdGx5
IG9uIHZhbGlkIFJHQkEgdmFsdWVzLCB3aXRoCisgICAgLy8gYWxwaGEgaW4gWzAsMjU1XSBhbmQg
ZWFjaCBjb2xvciBjb21wb25lbnQgaW4gWzAsIGFscGhhXQorICAgIHZpcnR1YWwgYm9vbCByZXF1
aXJlc1ZhbGlkUHJlTXVsUkdCQSgpIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoYm9vbCB2YWxpZFByZU11bFJHQkFJc1JlcXVpcmVkKSA9
IDA7CiAjaWYgVVNFKFNLSUEpCi0gICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCkg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1BcHBseVNraWEoYm9v
bCB2YWxpZFByZU11bFJHQkFJc1JlcXVpcmVkKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAg
ICAgdmlydHVhbCB2b2lkIGR1bXAoKSA9IDA7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCShyZXZp
c2lvbiAxMDY0OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1NvdXJjZUFscGhhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCB2b2lkIFNv
dXJjZUFscGhhOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50CiAgICAgc2V0QWJzb2x1dGVQYWludFJl
Y3QoZW5jbG9zaW5nSW50UmVjdChwYWludFJlY3QpKTsKIH0KIAotdm9pZCBTb3VyY2VBbHBoYTo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgU291cmNlQWxwaGE6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZShib29sIHZhbGlkUHJlTXVsUkdCQUlzUmVxdWlyZWQpCiB7CiAgICAgSW1hZ2VCdWZm
ZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBGaWx0ZXIq
IGZpbHRlciA9IHRoaXMtPmZpbHRlcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaAkocmV2aXNpb24gMTA2
NDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VB
bHBoYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzogICAgICAgIAog
CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZWZmZWN0TmFtZSgpOwogCi0gICAgdmly
dHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpOworICAgIHZpcnR1YWwgdm9pZCBwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoYm9vbCB2YWxpZFByZU11bFJHQkFJc1JlcXVpcmVkKTsKICAgICB2
aXJ0dWFsIHZvaWQgZHVtcCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRldGVybWluZUFic29sdXRl
UGFpbnRSZWN0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAJKHJldmlzaW9uIDEwNjQ5MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhp
Yy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBTb3VyY2VHcmFwaGlj
OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaQogICAgIHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2lu
Z0ludFJlY3QocGFpbnRSZWN0KSk7CiB9CiAKLXZvaWQgU291cmNlR3JhcGhpYzo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKCkKK3ZvaWQgU291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KGJvb2wgdmFsaWRQcmVNdWxSR0JBSXNSZXF1aXJlZCkKIHsKICAgICBJbWFnZUJ1ZmZlciogcmVz
dWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwogICAgIEZpbHRlciogZmlsdGVy
ID0gdGhpcy0+ZmlsdGVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAkocmV2aXNpb24gMTA2NDkx
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFw
aGljLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOiAgICAgICAgCiAK
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBlZmZlY3ROYW1lKCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7CisgICAgdmlydHVhbCB2b2lkIHBsYXRm
b3JtQXBwbHlTb2Z0d2FyZShib29sIHZhbGlkUHJlTXVsUkdCQUlzUmVxdWlyZWQpOwogICAgIHZp
cnR1YWwgdm9pZCBkdW1wKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQ
YWludFJlY3QoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcAko
cmV2aXNpb24gMTA2NDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyAr
ODAsNyBAQCBzdGF0aWMgdm9pZCBsdW1pbmFuY2VUb0FscGhhTWF0cml4KFNrU2NhCiAgICAgbWF0
cml4WzE3XSA9IDAuMDcyMWY7CiB9CiAKLWJvb2wgRkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBs
eVNraWEoKQorYm9vbCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U2tpYShib29sIHZhbGlk
UHJlTXVsUkdCQUlzUmVxdWlyZWQpCiB7CiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0g
Y3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5C
bHVyU2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAJKHJldmlzaW9uIDEwNjQ5MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUdhdXNz
aWFuQmx1clNraWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotYm9vbCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNraWEo
KQorYm9vbCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNraWEoYm9vbCB2YWxpZFByZU11
bFJHQkFJc1JlcXVpcmVkKQogewogICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0
ZUltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCShy
ZXZpc2lvbiAxMDY0OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCBSZW5kZXJPYmpl
Y3QqIEZFSW1hZ2U6OnJlZmVyZW5jZWRSZW5kZXJlCiAgICAgcmV0dXJuIGhyZWZFbGVtZW50LT5y
ZW5kZXJlcigpOwogfQogCi12b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2
b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShib29sIHZhbGlkUHJlTXVsUkdCQUlz
UmVxdWlyZWQpCiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHJlZmVyZW5jZWRSZW5k
ZXJlcigpOwogICAgIGlmICghbV9pbWFnZSAmJiAhcmVuZGVyZXIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCShyZXZpc2lvbiAx
MDY0OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEZFSW1hZ2U+IGNyZWF0ZVdpdGhJbWFnZShGaWx0ZXIqLCBQYXNzUmVmUHRyPElt
YWdlPiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYpOwogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEZFSW1hZ2U+IGNyZWF0ZVdpdGhJUklSZWZlcmVuY2UoRmlsdGVyKiwgRG9jdW1lbnQqLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7CisgICAgdmlydHVhbCB2b2lkIHBsYXRm
b3JtQXBwbHlTb2Z0d2FyZShib29sIHZhbGlkUHJlTXVsUkdCQUlzUmVxdWlyZWQpOwogICAgIHZp
cnR1YWwgdm9pZCBkdW1wKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQ
YWludFJlY3QoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjU3MCkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAyLTAyICBTdGVw
aGVuIENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVt
XSBTVkcgQ29tcG9zaXRlIG9mIE9mZnNldCBjcmFzaGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzI0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBmZUNvbXBvc2l0ZSBhcml0aG1ldGljIG1vZGUg
ZmlsdGVyIGNvdWxkIHJlYWRpbHkgYmUgbWFkZSB0bworICAgICAgICBnZW5lcmF0ZSBpbnZhbGlk
IHByZS1tdWx0aXBsaWVkIHBpeGVsIHZhbHVlcyB3aGljaCB3b3VkbCB0aGVuIGdvIG9uIHRvCisg
ICAgICAgIHBvbGx1dGUgb3RoZXIgZmlsdGVycyBhbmQgY2F1c2UgaW52YWxpZCBmaW5hbCBvdXRw
dXQgcGl4ZWxzLiBUaGlzCisgICAgICAgIHBhdGNoIGFkZHMgYSBmbGFnIHRoYXQgYWxsb3dzIGFy
aXRobWV0aWMgZmlsdGVycyB0byBnZW5lcmF0ZSBpbnZhbGlkCisgICAgICAgIGludGVybWVkaWF0
ZSByZXN1bHRzIHdoaWxlIG5vdCBwcm9kdWNpbmcgaW52YWxpZCByZXN1bHRzIGFzIGlucHV0cyB0
bworICAgICAgICBvdGhlciBmaWx0ZXJzLiBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW9yIG9mIEZG
IGFuZCBPcGVyYSB3aGlsZQorICAgICAgICBwcmV2ZW50aW5nIGNyYXNoZXMgb3Igb3RoZXIgdW5k
ZXNpcmFibGUgYmVoYXZpb3IuCisKKyAgICAgICAgVGVzdHMgYXJlIG1hcmtlZCBhcyBmbGFrZXkg
YmVjYXVzZSByZXN1bHRzIGFyZSB1bmxpa2VseSB0byBiZQorICAgICAgICBjb25zaXN0ZW50IGFj
cm9zcyBwbGF0Zm9ybXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVj
dGF0aW9ucy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKyAgICAgICAgKiBzdmcvZmls
dGVycy9mZUNvbXBvc2l0ZS1hcml0aG1ldGljLWludmFsaWQtcmdiYS1leHBlY3RlZC5wbmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxp
ZC1yZ2JhLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2ZpbHRlcnMvZmVDb21w
b3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEuc3ZnOiBBZGRlZC4KKwogMjAxMi0wMi0wMiAg
Q3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5y
ZXZpZXdlZCBnYXJkZW5pbmcuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CShyZXZpc2lvbiAxMDY0OTEpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTg3Niw2ICs4NzYsOCBAQCBCVUdDUjYyNDMzIFdJTiA6IGZhc3QvaW1hZ2VzL2dp
Zi1sb29wLWNvCiAKIEJVR0NSODc2MyBNQUMgOiBzdmcvY3VzdG9tL3VzZS1vbi1nLWNvbnRhaW5p
bmctZm9yZWlnbk9iamVjdC1hbmQtaW1hZ2Uuc3ZnID0gSU1BR0UKIAorLy8gVGhpcyBpcyBhIG5l
dyB0ZXN0IHRoYXQgd2lsbCBsaWtlbHkgaGF2ZSB1bmFudGljaXBhdGVkIHJlc3VsdHMuCitCVUdX
Szc3MjQ1IDogc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEu
c3ZnID0gUEFTUyBGQUlMCiAKIC8vIFdlIHNob3cgcmVkdWNlZCB2ZXJzaW9uIG9mIHRoZSBlbnRp
cmUgU1ZOIGltYWdlIHJhdGhlciB0aGFuIGFuIGltYWdlCiBCVUdDUjIzNDYzIExFT1BBUkQgOiBz
dmcvVzNDLVNWRy0xLjEvc3RydWN0LXN5bWJvbC0wMS1iLnN2ZyA9IElNQUdFCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJldmlzaW9u
IDEwNjQ5MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay90ZXN0X2V4cGVjdGF0aW9ucy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDkgQEAgQlVHV0s2MTkxNCA6IHN2Zy96b29t
L3BhZ2Uvem9vbS1zdmctdGhybwogCiBCVUdXSzY4NTIwIDogc3ZnL1czQy1TVkctMS4xLVNFL2Zp
bHRlcnMtaW1hZ2UtMDUtZi5zdmcgPSBQQVNTIFRFWFQKIAorLy8gVGhpcyBpcyBhIG5ldyB0ZXN0
IHRoYXQgd2lsbCBsaWtlbHkgaGF2ZSB1bmFudGljaXBhdGVkIHJlc3VsdHMuCitCVUdXSzc3MjQ1
IDogc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEuc3ZnID0g
UEFTUyBGQUlMCisKIEJVR1dLNjg1MTYgOiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1saWZl
Y3ljbGUuaHRtbCA9IFBBU1MgVEVYVAogQlVHV0s2ODUxNiA6IGZhc3Qvd29ya2Vycy9zaGFyZWQt
d29ya2VyLWZyYW1lLWxpZmVjeWNsZS5odG1sID0gUEFTUyBURVhUCiBCVUdXSzY4NTE2IDogZmFz
dC93b3JrZXJzL3dvcmtlci1jbG9zZS1tb3JlLmh0bWwgPSBQQVNTIFRFWFQKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy90ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkocmV2aXNpb24g
MTA2NDkxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsOSBAQCBCVUdXSzU3Njg4IDogZmFzdC90ZXh0
L2ludGVybmF0aW9uYWwvdGhhCiAKIEJVR1dLNTgxOTIgOiBwbHVnaW5zL25wcC1zZXQtd2luZG93
LWNhbGxlZC1kdXJpbmctZGVzdHJ1Y3Rpb24uaHRtbCA9IFRFWFQKIAorLy8gVGhpcyBpcyBhIG5l
dyB0ZXN0IHRoYXQgd2lsbCBsaWtlbHkgaGF2ZSB1bmFudGljaXBhdGVkIHJlc3VsdHMuCitCVUdX
Szc3MjQ1IDogc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEu
c3ZnID0gUEFTUyBGQUlMCisKIC8vIEZsYWt5IHRlc3RzIHdoZW4gcnVuIG11bHRpLXByb2Nlc3MK
IEJVR1dLNTgxOTIgOiBmYXN0L2RvbS9mcmFtZS1sb2FkaW5nLXZpYS1kb2N1bWVudC13cml0ZS5o
dG1sID0gVEVYVCBQQVNTCiBCVUdXSzU4MTkyIDogaHR0cC90ZXN0cy9hcHBjYWNoZS9mYWlsLW9u
LXVwZGF0ZS0yLmh0bWwgPSBURVhUIFBBU1MKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJldmlzaW9uIDEwNjQ5MSkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL3F0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNSArMjUsOCBAQCBCVUdXSzc0MjcwIDogZmFzdC9mb3Jtcy9iYXNpYy1zZWxlY3RzLmh0CiAv
LyBUaGUgdGVzdCBoaXRzIGFuIEFTU0VSVCBpbiBEZWJ1Zy4KIEJVR1dLNjg4NTkgREVCVUcgOiBm
YXN0L2R5bmFtaWMvY3Jhc2gtcGFpbnQtbm8tZG9jdW1lbnRFbGVtZW50LXJlbmRlcmVyLmh0bWwg
PSBDUkFTSAogCisvLyBUaGlzIGlzIGEgbmV3IHRlc3QgdGhhdCB3aWxsIGxpa2VseSBoYXZlIHVu
YW50aWNpcGF0ZWQgcmVzdWx0cy4KK0JVR1dLNzcyNDUgOiBzdmcvZmlsdGVycy9mZUNvbXBvc2l0
ZS1hcml0aG1ldGljLWludmFsaWQtcmdiYS5zdmcgPSBQQVNTIEZBSUwKKwogLy8gTmVlZHMgYmFz
ZWxpbmUKIEJVR1dLNzYxMTggOiBmYXN0L2Nzcy90ZXh0LW92ZXJmbG93LWlucHV0Lmh0bWwgPSBN
SVNTSU5HCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS1hcml0aG1l
dGljLWludmFsaWQtcmdiYS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
c3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUt
YXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDM1IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgMjAweDEwMAorICBSZW5kZXJT
VkdSb290IHtzdmd9IGF0ICgyMCwyMCkgc2l6ZSAxNjB4NjAKKyAgICBSZW5kZXJTVkdIaWRkZW5D
b250YWluZXIge2RlZnN9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlciB7ZmlsdGVyfSBbaWQ9ImFyaXRobWV0aWMiXSBbZmlsdGVyVW5pdHM9b2JqZWN0Qm91
bmRpbmdCb3hdIFtwcmltaXRpdmVVbml0cz11c2VyU3BhY2VPblVzZV0KKyAgICAgICAgW2ZlQ29t
cG9zaXRlIG9wZXJhdGlvbj0iQVJJVEhNRVRJQyIgazE9IjAuMDAiIGsyPSIxLjAwIiBrMz0iMS4w
MCIgazQ9IjAuMDAiXQorICAgICAgICAgIFtmZUNvbXBvc2l0ZSBvcGVyYXRpb249IkFSSVRITUVU
SUMiIGsxPSIwLjAwIiBrMj0iMS4wMCIgazM9IjEuMDAiIGs0PSIwLjAwIl0KKyAgICAgICAgICAg
IFtmZUNvbXBvc2l0ZSBvcGVyYXRpb249IkFSSVRITUVUSUMiIGsxPSIwLjAwIiBrMj0iMC4yMCIg
azM9IjAuMDAiIGs0PSIwLjAwIl0KKyAgICAgICAgICAgICAgW1NvdXJjZUdyYXBoaWNdCisgICAg
ICAgICAgICAgIFtTb3VyY2VHcmFwaGljXQorICAgICAgICAgICAgW2ZlQ29tcG9zaXRlIG9wZXJh
dGlvbj0iQVJJVEhNRVRJQyIgazE9IjAuMDAiIGsyPSIwLjMwIiBrMz0iMC4wMCIgazQ9IjAuMDAi
XQorICAgICAgICAgICAgICBbU291cmNlQWxwaGFdCisgICAgICAgICAgICAgIFtTb3VyY2VBbHBo
YV0KKyAgICAgICAgICBbZmVDb21wb3NpdGUgb3BlcmF0aW9uPSJBUklUSE1FVElDIiBrMT0iMC4w
MCIgazI9IjEuMDAiIGszPSItMS4wMCIgazQ9IjAuMDAiXQorICAgICAgICAgICAgW1NvdXJjZUdy
YXBoaWNdCisgICAgICAgICAgICBbZmVDb21wb3NpdGUgb3BlcmF0aW9uPSJBUklUSE1FVElDIiBr
MT0iMC4wMCIgazI9IjEuMDAiIGszPSIxLjAwIiBrND0iMC4wMCJdCisgICAgICAgICAgICAgIFtm
ZUNvbXBvc2l0ZSBvcGVyYXRpb249IkFSSVRITUVUSUMiIGsxPSIwLjAwIiBrMj0iMC4yMCIgazM9
IjAuMDAiIGs0PSIwLjAwIl0KKyAgICAgICAgICAgICAgICBbU291cmNlR3JhcGhpY10KKyAgICAg
ICAgICAgICAgICBbU291cmNlR3JhcGhpY10KKyAgICAgICAgICAgICAgW2ZlQ29tcG9zaXRlIG9w
ZXJhdGlvbj0iQVJJVEhNRVRJQyIgazE9IjAuMDAiIGsyPSIwLjMwIiBrMz0iMC4wMCIgazQ9IjAu
MDAiXQorICAgICAgICAgICAgICAgIFtTb3VyY2VBbHBoYV0KKyAgICAgICAgICAgICAgICBbU291
cmNlQWxwaGFdCisgICAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciB7ZmlsdGVyfSBbaWQ9Inpl
cm8tYWxwaGEiXSBbZmlsdGVyVW5pdHM9b2JqZWN0Qm91bmRpbmdCb3hdIFtwcmltaXRpdmVVbml0
cz11c2VyU3BhY2VPblVzZV0KKyAgICAgICAgW2ZlQ29tcG9zaXRlIG9wZXJhdGlvbj0iQVJJVEhN
RVRJQyIgazE9IjAuMDAiIGsyPSIxLjAwIiBrMz0iLTEuMDAiIGs0PSIwLjAwIl0KKyAgICAgICAg
ICBbU291cmNlR3JhcGhpY10KKyAgICAgICAgICBbZmVDb21wb3NpdGUgb3BlcmF0aW9uPSJBUklU
SE1FVElDIiBrMT0iMC4wMCIgazI9IjEuMDAiIGszPSIwLjAwIiBrND0iMC4wMCJdCisgICAgICAg
ICAgICBbU291cmNlQWxwaGFdCisgICAgICAgICAgICBbU291cmNlQWxwaGFdCisgICAgUmVuZGVy
U1ZHUmVjdCB7cmVjdH0gYXQgKDIwLDIwKSBzaXplIDYweDYwIFtmaWxsPXtbdHlwZT1TT0xJRF0g
W2NvbG9yPSMwMEZGMDBdfV0gW3g9MjAuMDBdIFt5PTIwLjAwXSBbd2lkdGg9NjAuMDBdIFtoZWln
aHQ9NjAuMDBdCisgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDIwLDIwKSBzaXplIDYweDYw
IFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMEZGMDBdfV0gW3g9MjUuMDBdIFt5PTI1LjAw
XSBbd2lkdGg9NTAuMDBdIFtoZWlnaHQ9NTAuMDBdCisgICAgICBbZmlsdGVyPSJhcml0aG1ldGlj
Il0gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIge2ZpbHRlcn0gYXQgKDIwLDIwKSBzaXplIDYweDYw
CisgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDEyNCwyNCkgc2l6ZSA1Mng1MiBbc3Ryb2tl
PXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMEZGMDBdfV0gW3g9MTI1LjAwXSBbeT0yNS4wMF0gW3dp
ZHRoPTUwLjAwXSBbaGVpZ2h0PTUwLjAwXQorICAgIFJlbmRlclNWR1JlY3Qge3JlY3R9IGF0ICgx
MjAsMjApIHNpemUgNjB4NjAgW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwRkYwMF19XSBb
eD0xMjUuMDBdIFt5PTI1LjAwXSBbd2lkdGg9NTAuMDBdIFtoZWlnaHQ9NTAuMDBdCisgICAgICBb
ZmlsdGVyPSJ6ZXJvLWFscGhhIl0gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIge2ZpbHRlcn0gYXQg
KDEyMCwyMCkgc2l6ZSA2MHg2MAoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvc3Zn
L2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEtZXhwZWN0ZWQudHh0
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRl
c3RzL3N2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLnN2Zwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS1hcml0aG1l
dGljLWludmFsaWQtcmdiYS5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZmls
dGVycy9mZUNvbXBvc2l0ZS1hcml0aG1ldGljLWludmFsaWQtcmdiYS5zdmcJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzMgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjIwMCIg
aGVpZ2h0PSIxMDAiIHN0eWxlPSJiYWNrZ3JvdW5kOndoaXRlOyI+CisgICAgPGRlZnM+CisgICAg
ICAgIDwhLS0gVGhpcyBmaWx0ZXIgcHJvZHVjZXMgcmVzdWx0cyB0aGF0IGFyZSBpbnZhbGlkIHBy
ZS1tdWx0aXBsaWVkIHJnYmEgcGl4ZWxzLiBTcGVjaWZpY2FsbHksIGFmdGVyIHRoZSA0dGggc3Rl
cCBhbiAtLT4KKyAgICAgICAgPCEtLSBpbnRlcmlvciBwaXhlbCB3aWxsIGNvbnRhaW4gKDAsIDAu
OCwgMCwgMC41KSB3aGljaCBpcyBpbnZhbGlkIGJlY2F1c2UgZyA+IGEuIFdoZW4gdXNlZCBpbiBv
dGhlciBvcGVyYXRpb25zICAgIC0tPgorICAgICAgICA8IS0tIHRoaXMgbWF5IGdlbmVyYXRlIGJh
ZCByZXN1bHRzIGJ1dCB3ZSBvbmx5IHdhbnQgdG8gY2xhbXAgdGhlIHZhbHVlcyB3aGVuIHBhc3Nl
ZCBvbiB0byBvdGhlciBvcGVyYXRpb25zLCBub3QgICAgLS0+CisgICAgICAgIDwhLS0gZm9yIGlu
dGVybWVkaWF0ZSBhcml0aG1ldGljIHJlc3VsdHMuIC0tPgorICAgICAgICA8ZmlsdGVyIGlkPSJh
cml0aG1ldGljIj4KKyAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iYXJpdGhtZXRp
YyIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iU291cmNlR3JhcGhpYyIgazE9IjAiIGsyPSIwLjIi
IGszPSIwIiBrND0iMCIgcmVzdWx0PSJyZ2JhMDIiIC8+CisgICAgICAgICAgICA8ZmVDb21wb3Np
dGUgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGluPSJTb3VyY2VBbHBoYSIgaW4yPSJTb3VyY2VBbHBo
YSIgazE9IjAiIGsyPSIwLjMiIGszPSIwIiBrND0iMCIgcmVzdWx0PSJhbHBoYTA1IiAvPgorICAg
ICAgICAgICAgPGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJhcml0aG1ldGljIiBpbj0icmdiYTAyIiBp
bjI9ImFscGhhMDUiIGsxPSIwIiBrMj0iMSIgazM9IjEiIGs0PSIwIiByZXN1bHQ9InRtcCIgLz4K
KyAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgaW49IlNvdXJj
ZUdyYXBoaWMiIGluMj0idG1wIiBrMT0iMCIgazI9IjEiIGszPSItMSIgazQ9IjAiIC8+CisgICAg
ICAgICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGluPSJ0bXAiIGsxPSIw
IiBrMj0iMSIgazM9IjEiIGs0PSIwIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8
IS0tIFRoaXMgZmlsdGVyIHdpbGwgcHJvZHVjZSBpbWFnZXMgd2l0aCB6ZXJvIGFscGhhIGJ1dCBu
b24temVybyBjb2xvciBjb21wb25lbnRzLiAtLT4KKyAgICAgICAgPGZpbHRlciBpZD0iemVyby1h
bHBoYSI+CisgICAgICAgICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGlu
PSJTb3VyY2VBbHBoYSIgaW4yPSJTb3VyY2VBbHBoYSIgazE9IjAiIGsyPSIxLjAiIGszPSIwIiBr
ND0iMCIgcmVzdWx0PSJhbHBoYSIgLz4KKyAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRv
cj0iYXJpdGhtZXRpYyIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iYWxwaGEiIGsxPSIwIiBrMj0i
MS4wIiBrMz0iLTEuMCIgazQ9IjAiIC8+CisgICAgICAgIDwvZmlsdGVyPgorICAgIDwvZGVmcz4K
KworICAgIDwhLS0gQmFja2dyb3VuZCBmb3IgY29sb3IgY29tcGFyaXNvbi4gVGhlIGJvcmRlciBv
ZiB0aGUgZmluYWwgcmVjdGFuZ2xlIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgaW50ZXJpb3Ig
Y29sb3IuIC0tPgorICAgIDxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYw
IiBmaWxsPSJyZ2JhKDAsMjU1LDAsMSkiIC8+CisKKyAgICA8IS0tIFRoZSBjb250ZW50IG9mIGlu
dGVyZXN0IC0tPgorICAgIDxyZWN0IGZpbHRlcj0idXJsKCNhcml0aG1ldGljKSIgeD0iMjUiIHk9
IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9InJnYmEoMCwyNTUsMCwxKSIgc3Ryb2tl
PSJub25lIiAvPgorCisgICAgPCEtLSBCb3JkZXIgdG8gc2hvdyBleHBlY3RlZCBub24tZHJhd2lu
ZyBhcmVhLiAtLT4KKyAgICA8cmVjdCB4PSIxMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0i
NTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmdiKDAsMjU1LDApIiAvPgorCisgICAgPCEtLSBUaGlz
IHNob3VsZCBwcm9kdWNlIG5vdGhpbmcsIGFuZCBub3QgY2F1c2UgYSBjcmFzaC4gLS0+CisgICAg
PHJlY3QgZmlsdGVyPSJ1cmwoI3plcm8tYWxwaGEpIiB4PSIxMjUiIHk9IjI1IiB3aWR0aD0iNTAi
IGhlaWdodD0iNTAiIGZpbGw9InJnYmEoMCwyNTUsMCwxKSIgc3Ryb2tlPSJub25lIiAvPgorPC9z
dmc+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS1hcml0aG1ldGlj
LWludmFsaWQtcmdiYS1leHBlY3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmls
ZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJv
cGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJp
dGhtZXRpYy1pbnZhbGlkLXJnYmEtZXhwZWN0ZWQucG5nCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpt
aW1lLXR5cGUKICAgKyBpbWFnZS9wbmcKCgppVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBeUFBQUFK
WUNBSUFBQUFWRkJVbkFBQUFLWFJGV0hSamFHVmphM04xYlFBNFltSmlNakprCk5UQXlZbVEyT0Ro
bE0yUmhZbVU0WkdGa05UUTJNMk5tT0ttYnYvY0FBQXNwU1VSQlZIaWM3ZHRCVHNNd0FFVkJCM0V2
dUZuZGsxRk8KWnRZSVZ1MFRyc0tNc28zMDI5V1Q1UnhyclFFQVFPZGw5d0FBZ0xNUldBQUFNWUVG
QUJBVFdBQUFNWUVGQUJBVFdBQUFNWUVGQUJBVApXQUFBTVlFRkFCQVRXQUFBTVlFRkFCQVRXQUFB
TVlFRkFCQVRXQUFBTVlFRkFCQVRXQUFBTVlFRkFCQVRXQUFBTVlFRkFCQjdmZVRsCll4elZqait6
eHRvOUFRQTRPU2RZQUFBeGdRVUFFQk5ZQUFDeGgrNWdjYmU1NXU0SnY1akgzRDBCQU00Z1BjRmFU
L2s4bjdubXgvaFkKWXozVmN4dTN5N3JzL204QTRBeWNZTzN4UHQ2dngzWDNpbS9tbWo2eEJJQ0VP
MWdBQURHQkJRQVFFMWdBQURHQkJRQVFFMWdBQURHQgpCUUFRRTFnQUFER0JCUUFRRTFnQUFER0JC
UUFRRTFnQUFER0JCUUFRRTFnQUFER0JCUUFRRTFnQUFER0JCUUFRRTFnQUFER0JCUUFRCkUxZ0FB
REdCQlFBUUUxZ0FBREdCQlFBUUUxZ0FBREdCQlFBUUUxZ0FBREdCQlFBUUUxZ0FBREdCQlFBUUUx
Z0FBREdCQlFBUUUxZ0EKQURHQkJRQVFFMWdBQURHQkJRQVFFMWdBQURHQkJRQVFFMWdBQURHQkJR
QVFFMWdBQURHQkJRQVFFMWdBQURHQkJRQVFFMWdBQURHQgpCUUFRRTFnQUFER0JCUUFRRTFnQUFM
SFgzUVArcWMveE9kZmN2ZUtiMjdpOWpiZmRLd0RnREk2MTF2MHZqeU9jOGpmV3VQLzNoaTdyCnNu
dkNMNjdIZGZjRUFEZ0RnUVVBRUhNSEN3QWdKckFBQUdJQ0N3QWc5dEJYaE80ekFRRDg1QVFMQUNB
bXNBQUFZZ0lMQUNBbXNBQUEKWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJ
TEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTApBQ0Ftc0FBQVlnSUxBQ0Ftc0FB
QVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ft
CnNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lM
QUNBbXNBQUFZZ0lMQUNBbXNBQUEKWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFB
WWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTApBQ0Ftc0FBQVlnSUxBQ0Ft
c0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxB
Q0FtCnNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZ
Z0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUEKWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1z
QUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTApBQ0Ftc0FBQVlnSUxB
Q0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVln
SUxBQ0FtCnNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNB
QUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUEKWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFD
QW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTApBQ0Ftc0FBQVln
SUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FB
QVlnSUxBQ0FtCnNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNB
bXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUEKWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJ
TEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTApBQ0Ftc0FB
QVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ft
c0FBQVlnSUxBQ0FtCnNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lM
QUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUEKWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFB
WWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTApBQ0Ft
c0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxB
Q0Ftc0FBQVlnSUxBQ0FtCnNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZ
Z0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUEKWWdJTEFDQW1zQUFBWWdJTEFDQW1z
QUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTApB
Q0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVln
SUxBQ0Ftc0FBQVlnSUxBQ0FtCnNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNB
QUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUEKWWdJTEFDQW1zQUFBWWdJTEFD
QW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJ
TApBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FB
QVlnSUxBQ0Ftc0FBQVlnSUxBQ0FtCnNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNB
bXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUEKWWdJTEFDQW1zQUFBWWdJ
TEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFB
WWdJTApBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ft
c0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0FtCnNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lM
QUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUEKWWdJTEFDQW1zQUFB
WWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1z
QUFBWWdJTApBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxB
Q0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0FtCnNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZ
Z0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUEKWWdJTEFDQW1z
QUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFD
QW1zQUFBWWdJTApBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVln
SUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0FtCnNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNB
QUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUEKWWdJTEFD
QW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJ
TEFDQW1zQUFBWWdJTApBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FB
QVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0FtCnNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNB
bXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUEKWWdJ
TEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFB
WWdJTEFDQW1zQUFBWWdJTApBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ft
c0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0FtCnNBQUFZZ0lMQUNBbXNBQUFZZ0lM
QUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUEK
WWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1z
QUFBWWdJTEFDQW1zQUFBWWdJTApBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxB
Q0Ftc0FBQVlnSUxBQ0QyQmVJNnZ4UXU5MXRuQUFBQUFFbEZUa1N1ClFtQ0MKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126139</attachid>
            <date>2012-02-08 13:07:45 -0800</date>
            <delta_ts>2012-03-02 14:57:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77245-20120208160744.patch</filename>
            <type>text/plain</type>
            <size>52370</size>
            <attacher name="Stephen Chenney">schenney</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzExMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMiBAQAorMjAxMi0wMi0wOCAgU3RlcGhl
biBDaGVubmV5ICA8c2NoZW5uZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
U1ZHIENvbXBvc2l0ZSBvZiBPZmZzZXQgY3Jhc2hlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcyNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZmVDb21wb3NpdGUgYXJpdGhtZXRpYyBtb2RlIGZp
bHRlciBjb3VsZCByZWFkaWx5IGJlIG1hZGUgdG8KKyAgICAgICAgZ2VuZXJhdGUgaW52YWxpZCBw
cmUtbXVsdGlwbGllZCBwaXhlbCB2YWx1ZXMgd2hpY2ggd291bGQgdGhlbiBnbyBvbiB0bworICAg
ICAgICBwb2xsdXRlIG90aGVyIGZpbHRlcnMgYW5kIGNhdXNlIGludmFsaWQgZmluYWwgb3V0cHV0
IHBpeGVscy4gVGhpcworICAgICAgICBwYXRjaCBhZGRzIGEgZmxhZyB0aGF0IGFsbG93cyBhcml0
aG1ldGljIGZpbHRlcnMgdG8gZ2VuZXJhdGUgaW52YWxpZAorICAgICAgICBpbnRlcm1lZGlhdGUg
cmVzdWx0cyB3aGlsZSBub3QgcHJvZHVjaW5nIGludmFsaWQgcmVzdWx0cyBhcyBpbnB1dHMgdG8K
KyAgICAgICAgb3RoZXIgZmlsdGVycy4gVGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiBGRiBh
bmQgT3BlcmEgd2hpbGUKKyAgICAgICAgcHJldmVudGluZyBjcmFzaGVzIG9yIG90aGVyIHVuZGVz
aXJhYmxlIGJlaGF2aW9yLgorCisgICAgICAgIFRlc3Q6IHN2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRl
LWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLnN2ZworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUJsZW5kLmg6CisgICAgICAgIChGRUJsZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1h
dHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaDoKKyAgICAgICAgKEZFQ29sb3JNYXRyaXgpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRU
cmFuc2Zlci5oOgorICAgICAgICAoRkVDb21wb25lbnRUcmFuc2Zlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVBcml0aG1ldGljUGl4ZWxzVmFsaWRhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OmFyaXRobWV0aWNTb2Z0d2FyZVZhbGlkYXRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6cGxhdGZvcm1Bcml0aG1ldGljU29mdHdhcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6RkVDb21wb3NpdGU6OnJlcXVpcmVzVmFsaWRQcmVNdWxSR0JBKToKKyAgICAgICAg
KEZFQ29tcG9zaXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29u
dm9sdmVNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29udm9sdmVNYXRyaXguaDoKKyAgICAgICAgKEZFQ29udm9sdmVNYXRyaXgpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkVDdXN0b21GaWx0ZXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oOgorICAgICAg
ICAoRkVDdXN0b21GaWx0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEaXNwbGFjZW1lbnRNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRN
YXA6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oOgorICAgICAgICAoRkVEaXNwbGFjZW1lbnRNYXAp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5oOgorICAg
ICAgICAoRkVEcm9wU2hhZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRmxvb2QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaDoK
KyAgICAgICAgKEZFRmxvb2QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVHYXVzc2lhbkJsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5oOgorICAgICAgICAoRkVHYXVzc2lhbkJsdXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oOgorICAgICAgICAoRkVMaWdodGluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmg6CisgICAgICAgIChGRU1lcmdlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaDoKKyAgICAg
ICAgKEZFTW9ycGhvbG9neSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU9mZnNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0Lmg6
CisgICAgICAgIChGRU9mZnNldCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmg6Cisg
ICAgICAgIChGRVRpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
dXJidWxlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVy
YnVsZW5jZS5oOgorICAgICAgICAoRkVUdXJidWxlbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3Q6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5oOgorICAgICAgICAoRmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdDo6cmVxdWlyZXNWYWxpZFByZU11bFJHQkEpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyRWZmZWN0OjpwbGF0Zm9ybUFwcGx5U2tpYSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmg6CisgICAgICAgIChTb3VyY2VBbHBoYSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmg6CisgICAgICAg
IChTb3VyY2VHcmFwaGljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3Nr
aWEvRkVDb2xvck1hdHJpeFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1hdHJp
eDo6cGxhdGZvcm1BcHBseVNraWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc2tpYS9GRUdhdXNzaWFuQmx1clNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVz
c2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTa2lhKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFn
ZS5oOgorICAgICAgICAoRkVJbWFnZSk6CisKIDIwMTItMDItMDggIERpcmsgU2NodWx6ZSAgPGty
aXRAd2Via2l0Lm9yZz4KIAogICAgICAgICB2aWV3Qm94IG9uIG5lc3RlZCBTVkcgY2F1c2VzIHdy
b25nIGNvbnRlbnQgc2l6ZSBmb3IgcmVsYXRpdmUgdmFsdWVzCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAJKHJldmlz
aW9uIDEwNzExMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVCbGVuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIGlubGlu
ZSB1bnNpZ25lZCBjaGFyIGxpZ2h0ZW4odW5zaQogICAgIHJldHVybiAoKHN0ZDo6bWF4KCgyNTUg
LSBhbHBoYUEpICogY29sb3JCICsgY29sb3JBICogMjU1LCAoMjU1IC0gYWxwaGFCKSAqIGNvbG9y
QSArIGNvbG9yQiAqIDI1NSkpIC8gMjU1KTsKIH0KIAotdm9pZCBGRUJsZW5kOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKQordm9pZCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoYm9vbCkK
IHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAgICAgRmlsdGVyRWZm
ZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgxKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCShyZXZpc2lvbiAxMDcxMTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgQmxlbmRNb2RlVHlwZSBi
bGVuZE1vZGUoKSBjb25zdDsKICAgICBib29sIHNldEJsZW5kTW9kZShCbGVuZE1vZGVUeXBlKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBkdW1w
KCk7CiAKICAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4
dFN0cmVhbSYsIGludCBpbmRlbnRpb24pIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3Bw
CShyZXZpc2lvbiAxMDcxMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcg
QEAgdm9pZCBlZmZlY3RUeXBlKEJ5dGVBcnJheSogcGl4ZWxBcnJheSwgYwogICAgIH0KIH0KIAot
dm9pZCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUNvbG9y
TWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoYm9vbCkKIHsKICAgICBGaWx0ZXJFZmZlY3Qq
IGluID0gaW5wdXRFZmZlY3QoMCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCShyZXZpc2lvbiAx
MDcxMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29s
b3JNYXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAtNDgsOSArNDgsOSBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKCkgY29uc3Q7CiAgICAgYm9vbCBzZXRWYWx1ZXMo
Y29uc3QgVmVjdG9yPGZsb2F0PiYpOwogCi0gICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpOworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoYm9vbCk7
CiAjaWYgVVNFKFNLSUEpCi0gICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCk7Cisg
ICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKGJvb2wpOwogI2VuZGlmCiAgICAgdmly
dHVhbCB2b2lkIGR1bXAoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3Bw
CShyZXZpc2lvbiAxMDcxMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyAr
MTUwLDcgQEAgc3RhdGljIHZvaWQgZ2FtbWEodW5zaWduZWQgY2hhciogdmFsdWVzLAogICAgIH0K
IH0KIAotdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQor
dm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoYm9vbCkKIHsK
ICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb25lbnRUcmFuc2Zlci5oCShyZXZpc2lvbiAxMDcxMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbiBhbHBoYUZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBbHBoYUZ1bmN0aW9uKGNv
bnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3
YXJlKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAKICAgICB2aXJ0dWFsIFRleHRT
dHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYsIGludCBpbmRlbnRpb24p
IGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvc2l0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAJKHJldmlzaW9uIDEwNzExMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzEsOCArMTcxLDk4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhcml0aG1l
dGljU29mdHdhcmUodW4KICAgICBjb21wdXRlQXJpdGhtZXRpY1BpeGVsczwxLCAxLCAxLCAxPihz
b3VyY2UsIGRlc3RpbmF0aW9uLCBwaXhlbEFycmF5TGVuZ3RoLCBrMSwgazIsIGszLCBrNCk7CiB9
CiAKK3RlbXBsYXRlIDxpbnQgYjEsIGludCBiMiwgaW50IGIzLCBpbnQgYjQ+CitzdGF0aWMgaW5s
aW5lIHZvaWQgY29tcHV0ZUFyaXRobWV0aWNQaXhlbHNWYWxpZGF0ZWQodW5zaWduZWQgY2hhciog
c291cmNlLCB1bnNpZ25lZCBjaGFyKiBkZXN0aW5hdGlvbiwgaW50IHBpeGVsQXJyYXlMZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBrMSwgZmxvYXQgazIs
IGZsb2F0IGszLCBmbG9hdCBrNCkKK3sKKyAgICBmbG9hdCBzY2FsZWRLMTsKKyAgICBmbG9hdCBz
Y2FsZWRLNDsKKyAgICBpZiAoYjEpCisgICAgICAgIHNjYWxlZEsxID0gazEgLyAyNTUuZjsKKyAg
ICBpZiAoYjQpCisgICAgICAgIHNjYWxlZEs0ID0gazQgKiAyNTUuZjsKKworICAgIEFTU0VSVCgh
KHBpeGVsQXJyYXlMZW5ndGggJSA0KSk7CisgICAgaW50IG51bVBpeGVscyA9IHBpeGVsQXJyYXlM
ZW5ndGggLyA0OworICAgIHdoaWxlICgtLW51bVBpeGVscyA+PSAwKSB7CisgICAgICAgIC8vIE9w
ZXJhdGUgb24gYWxwaGEgZmlyc3QgdG8gZ2V0IGxpbWl0cyBmb3IgdGhlIGNvbG9yIHZhbHVlcwor
ICAgICAgICB1bnNpZ25lZCBjaGFyIGExID0gKihzb3VyY2UgKyAzKTsKKyAgICAgICAgdW5zaWdu
ZWQgY2hhciBhMiA9ICooZGVzdGluYXRpb24gKyAzKTsKKyAgICAgICAgZmxvYXQgYWxwaGEgPSAw
OworICAgICAgICBpZiAoYjEpCisgICAgICAgICAgICBhbHBoYSArPSBzY2FsZWRLMSAqIGExICog
YTI7CisgICAgICAgIGlmIChiMikKKyAgICAgICAgICAgIGFscGhhICs9IGsyICogYTE7CisgICAg
ICAgIGlmIChiMykKKyAgICAgICAgICAgIGFscGhhICs9IGszICogYTI7CisgICAgICAgIGlmIChi
NCkKKyAgICAgICAgICAgIGFscGhhICs9IHNjYWxlZEs0OworCisgICAgICAgIGlmIChhbHBoYSA8
PSAwKSB7CisgICAgICAgICAgICAqKGRlc3RpbmF0aW9uKyspID0gMDsKKyAgICAgICAgICAgICoo
ZGVzdGluYXRpb24rKykgPSAwOworICAgICAgICAgICAgKihkZXN0aW5hdGlvbisrKSA9IDA7Cisg
ICAgICAgICAgICAqKGRlc3RpbmF0aW9uKyspID0gMDsKKyAgICAgICAgICAgIHNvdXJjZSArPSA0
OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYWxwaGEg
Pj0gMjU1KQorICAgICAgICAgICAgYWxwaGEgPSAyNTU7CisKKyAgICAgICAgLy8gQ29sb3IgY29t
cG9uZW50cworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkgeworICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciBpMSA9ICpzb3VyY2U7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
IGkyID0gKmRlc3RpbmF0aW9uOworICAgICAgICAgICAgZmxvYXQgcmVzdWx0ID0gMDsKKyAgICAg
ICAgICAgIGlmIChiMSkKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gc2NhbGVkSzEgKiBpMSAq
IGkyOworICAgICAgICAgICAgaWYgKGIyKQorICAgICAgICAgICAgICAgIHJlc3VsdCArPSBrMiAq
IGkxOworICAgICAgICAgICAgaWYgKGIzKQorICAgICAgICAgICAgICAgIHJlc3VsdCArPSBrMyAq
IGkyOworICAgICAgICAgICAgaWYgKGI0KQorICAgICAgICAgICAgICAgIHJlc3VsdCArPSBzY2Fs
ZWRLNDsKKyAgICAKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPD0gMCkKKyAgICAgICAgICAgICAg
ICAqZGVzdGluYXRpb24gPSAwOworICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0ID49IGFscGhh
KQorICAgICAgICAgICAgICAgICpkZXN0aW5hdGlvbiA9IGFscGhhOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICpkZXN0aW5hdGlvbiA9IHJlc3VsdDsKKyAgICAgICAgICAgICsr
c291cmNlOworICAgICAgICAgICAgKytkZXN0aW5hdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIEFscGhhCisgICAgICAgICpkZXN0aW5hdGlvbiA9IGFscGhhOworICAgICAgICArK3NvdXJj
ZTsKKyAgICAgICAgKytkZXN0aW5hdGlvbjsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9p
ZCBhcml0aG1ldGljU29mdHdhcmVWYWxpZGF0ZWQodW5zaWduZWQgY2hhciogc291cmNlLCB1bnNp
Z25lZCBjaGFyKiBkZXN0aW5hdGlvbiwgaW50IHBpeGVsQXJyYXlMZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0KQorewor
ICAgIGlmICghazQpIHsKKyAgICAgICAgaWYgKCFrMSkgeworICAgICAgICAgICAgY29tcHV0ZUFy
aXRobWV0aWNQaXhlbHNWYWxpZGF0ZWQ8MCwgMSwgMSwgMD4oc291cmNlLCBkZXN0aW5hdGlvbiwg
cGl4ZWxBcnJheUxlbmd0aCwgazEsIGsyLCBrMywgazQpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgY29tcHV0ZUFyaXRobWV0aWNQaXhlbHNWYWxpZGF0ZWQ8MSwg
MSwgMSwgMD4oc291cmNlLCBkZXN0aW5hdGlvbiwgcGl4ZWxBcnJheUxlbmd0aCwgazEsIGsyLCBr
MywgazQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFrMSkgeworICAgICAg
ICBjb21wdXRlQXJpdGhtZXRpY1BpeGVsc1ZhbGlkYXRlZDwwLCAxLCAxLCAxPihzb3VyY2UsIGRl
c3RpbmF0aW9uLCBwaXhlbEFycmF5TGVuZ3RoLCBrMSwgazIsIGszLCBrNCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgY29tcHV0ZUFyaXRobWV0aWNQaXhlbHNWYWxpZGF0ZWQ8MSwgMSwg
MSwgMT4oc291cmNlLCBkZXN0aW5hdGlvbiwgcGl4ZWxBcnJheUxlbmd0aCwgazEsIGsyLCBrMywg
azQpOworfQorCiBpbmxpbmUgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1Bcml0aG1ldGljU29m
dHdhcmUoQnl0ZUFycmF5KiBzb3VyY2UsIEJ5dGVBcnJheSogZGVzdGluYXRpb24sCi0gICAgZmxv
YXQgazEsIGZsb2F0IGsyLCBmbG9hdCBrMywgZmxvYXQgazQpCisgICAgZmxvYXQgazEsIGZsb2F0
IGsyLCBmbG9hdCBrMywgZmxvYXQgazQsIGJvb2wgdmFsaWRQcmVNdWxSR0JBSXNSZXF1aXJlZCkK
IHsKICAgICBpbnQgbGVuZ3RoID0gc291cmNlLT5sZW5ndGgoKTsKICAgICBBU1NFUlQobGVuZ3Ro
ID09IHN0YXRpY19jYXN0PGludD4oZGVzdGluYXRpb24tPmxlbmd0aCgpKSk7CkBAIC0xODIsNyAr
MjcyLDEwIEBAIGlubGluZSB2b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFyaXRobWUKICAgICBm
bG9hdCBjb2VmZmljaWVudHNbNF0gID0geyBrMSwgazIsIGszLCBrNCB9OwogICAgIHBsYXRmb3Jt
QXJpdGhtZXRpY05lb24oc291cmNlLT5kYXRhKCksIGRlc3RpbmF0aW9uLT5kYXRhKCksIGxlbmd0
aCwgY29lZmZpY2llbnRzKTsKICNlbHNlCi0gICAgYXJpdGhtZXRpY1NvZnR3YXJlKHNvdXJjZS0+
ZGF0YSgpLCBkZXN0aW5hdGlvbi0+ZGF0YSgpLCBsZW5ndGgsIGsxLCBrMiwgazMsIGs0KTsKKyAg
ICBpZiAodmFsaWRQcmVNdWxSR0JBSXNSZXF1aXJlZCkKKyAgICAgICAgYXJpdGhtZXRpY1NvZnR3
YXJlVmFsaWRhdGVkKHNvdXJjZS0+ZGF0YSgpLCBkZXN0aW5hdGlvbi0+ZGF0YSgpLCBsZW5ndGgs
IGsxLCBrMiwgazMsIGs0KTsKKyAgICBlbHNlCisgICAgICAgIGFyaXRobWV0aWNTb2Z0d2FyZShz
b3VyY2UtPmRhdGEoKSwgZGVzdGluYXRpb24tPmRhdGEoKSwgbGVuZ3RoLCBrMSwgazIsIGszLCBr
NCk7CiAjZW5kaWYKIH0KIApAQCAtMjA3LDcgKzMwMCw3IEBAIHZvaWQgRkVDb21wb3NpdGU6OmRl
dGVybWluZUFic29sdXRlUGFpbnQKICAgICB9CiB9CiAKLXZvaWQgRkVDb21wb3NpdGU6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoYm9vbCB2YWxpZFByZU11bFJHQkFJc1JlcXVpcmVkKQogewogICAgIEZpbHRlckVmZmVjdCog
aW4gPSBpbnB1dEVmZmVjdCgwKTsKICAgICBGaWx0ZXJFZmZlY3QqIGluMiA9IGlucHV0RWZmZWN0
KDEpOwpAQCAtMjIzLDcgKzMxNiw3IEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgKICAgICAgICAgSW50UmVjdCBlZmZlY3RCRHJhd2luZ1JlY3QgPSByZXF1ZXN0ZWRS
ZWdpb25PZklucHV0SW1hZ2VEYXRhKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSk7CiAgICAgICAg
IGluMi0+Y29weVByZW11bHRpcGxpZWRJbWFnZShkc3RQaXhlbEFycmF5LCBlZmZlY3RCRHJhd2lu
Z1JlY3QpOwogCi0gICAgICAgIHBsYXRmb3JtQXJpdGhtZXRpY1NvZnR3YXJlKHNyY1BpeGVsQXJy
YXkuZ2V0KCksIGRzdFBpeGVsQXJyYXksIG1fazEsIG1fazIsIG1fazMsIG1fazQpOworICAgICAg
ICBwbGF0Zm9ybUFyaXRobWV0aWNTb2Z0d2FyZShzcmNQaXhlbEFycmF5LmdldCgpLCBkc3RQaXhl
bEFycmF5LCBtX2sxLCBtX2syLCBtX2szLCBtX2s0LCB2YWxpZFByZU11bFJHQkFJc1JlcXVpcmVk
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAkocmV2aXNpb24g
MTA3MTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw4IEBAIHB1YmxpYzoKICAgICBm
bG9hdCBrNCgpIGNvbnN0OwogICAgIGJvb2wgc2V0SzQoZmxvYXQpOwogCi0gICAgdmlydHVhbCB2
b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpOworICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc1Zh
bGlkUHJlTXVsUkdCQSgpIHsgcmV0dXJuIG1fdHlwZSAhPSBGRUNPTVBPU0lURV9PUEVSQVRPUl9B
UklUSE1FVElDOyB9CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShib29s
IHZhbGlkUHJlTXVsUkdCQUlzUmVxdWlyZWQpOwogICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAg
ICAgCiAgICAgdmlydHVhbCB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCk7CkBAIC02
OSw3ICs3MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRkVDb21wb3NpdGUoRmlsdGVyKiwg
Y29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0
KTsKIAotICAgIGlubGluZSB2b2lkIHBsYXRmb3JtQXJpdGhtZXRpY1NvZnR3YXJlKEJ5dGVBcnJh
eSogc291cmNlLCBCeXRlQXJyYXkqIGRlc3RpbmF0aW9uLCBmbG9hdCBrMSwgZmxvYXQgazIsIGZs
b2F0IGszLCBmbG9hdCBrNCk7CisgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1Bcml0aG1ldGljU29m
dHdhcmUoQnl0ZUFycmF5KiBzb3VyY2UsIEJ5dGVBcnJheSogZGVzdGluYXRpb24sIGZsb2F0IGsx
LCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0IGs0LCBib29sIHZhbGlkUHJlTXVsUkdCQUlzUmVx
dWlyZWQpOwogICAgIGlubGluZSB2b2lkIHBsYXRmb3JtQXJpdGhtZXRpY05lb24odW5zaWduZWQg
Y2hhciogc291cmNlLCB1bnNpZ25lZCAgY2hhciogZGVzdGluYXRpb24sIHVuc2lnbmVkIHBpeGVs
QXJyYXlMZW5ndGgsIGZsb2F0KiBrQXJyYXkpOwogCiAgICAgQ29tcG9zaXRlT3BlcmF0aW9uVHlw
ZSBtX3R5cGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29udm9sdmVNYXRyaXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAJKHJldmlzaW9uIDEwNzEx
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2
ZU1hdHJpeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5OSw3ICszOTksNyBAQCB2b2lkIEZFQ29u
dm9sdmVNYXRyaXg6OnNldEludGVyaW9yUGl4ZWxzCiAgICAgcGFyYW0tPmZpbHRlci0+c2V0SW50
ZXJpb3JQaXhlbHMoKnBhcmFtLT5wYWludGluZ0RhdGEsIHBhcmFtLT5jbGlwUmlnaHQsIHBhcmFt
LT5jbGlwQm90dG9tLCBwYXJhbS0+eVN0YXJ0LCBwYXJhbS0+eUVuZCk7CiB9CiAKLXZvaWQgRkVD
b252b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVDb252b2x2ZU1h
dHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGJvb2wpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBp
biA9IGlucHV0RWZmZWN0KDApOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaAkocmV2aXNp
b24gMTA3MTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbnZvbHZlTWF0cml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgcHJlc2VydmVBbHBoYSgpIGNvbnN0OwogICAgIGJvb2wgc2V0UHJlc2VydmVB
bHBoYShib29sKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCBkdW1wKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWlu
dFJlY3QoKSB7IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0
UmVjdCgpKSk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDdXN0b21GaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwCShyZXZpc2lvbiAxMDcxMTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ3VzdG9tRmls
dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBAQCBQYXNzUmVmUHRyPEZFQ3Vz
dG9tRmlsdGVyPiBGRUN1c3RvbUZpbHRlCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRUN1c3Rv
bUZpbHRlcihmaWx0ZXIsIGRvY3VtZW50LCBwcm9ncmFtLCBwYXJhbWV0ZXJzLCBtZXNoUm93cywg
bWVzaENvbHVtbnMsIG1lc2hCb3hUeXBlLCBtZXNoVHlwZSkpOwogfQogCi12b2lkIEZFQ3VzdG9t
RmlsdGVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUN1c3RvbUZpbHRlcjo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKGJvb2wpCiB7CiAgICAgQnl0ZUFycmF5KiBkc3RQaXhlbEFycmF5
ID0gY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CiAgICAgaWYgKCFkc3RQaXhlbEFy
cmF5KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1
c3RvbUZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuaAkocmV2aXNpb24gMTA3MTExKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBtZXNoUm93cywgdW5zaWduZWQgbWVzaENvbHVtbnMsIEN1c3RvbUZpbHRlck9wZXJh
dGlvbjo6TWVzaEJveFR5cGUsIAogICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpbHRlck9wZXJh
dGlvbjo6TWVzaFR5cGUpOwogCi0gICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpOworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoYm9vbCk7CiAgICAg
dmlydHVhbCB2b2lkIGR1bXAoKTsKIAogICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwgaW50IGluZGVudGlvbikgY29uc3Q7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFw
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAkocmV2aXNpb24gMTA3MTExKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgYm9vbCBGRURpc3BsYWNlbWVudE1hcDo6c2V0
U2NhbGUoZmxvYXQgcwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEZFRGlzcGxhY2VtZW50
TWFwOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRURpc3BsYWNlbWVudE1hcDo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKGJvb2wpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0
RWZmZWN0KDApOwogICAgIEZpbHRlckVmZmVjdCogaW4yID0gaW5wdXRFZmZlY3QoMSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50
TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURpc3BsYWNlbWVudE1hcC5oCShyZXZpc2lvbiAxMDcxMTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIGZsb2F0IHNjYWxlKCkgY29u
c3Q7CiAgICAgYm9vbCBzZXRTY2FsZShmbG9hdCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZv
cm1BcHBseVNvZnR3YXJlKCk7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRl
dGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgeyBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3Np
bmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCShy
ZXZpc2lvbiAxMDcxMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRHJvcFNoYWRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgdm9p
ZCBGRURyb3BTaGFkb3c6OmRldGVybWluZUFic29sdXRlUGFpbgogICAgIHNldEFic29sdXRlUGFp
bnRSZWN0KGVuY2xvc2luZ0ludFJlY3QoYWJzb2x1dGVQYWludFJlY3QpKTsKIH0KIAotdm9pZCBG
RURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFRHJvcFNoYWRvdzo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKGJvb2wpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlu
cHV0RWZmZWN0KDApOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRHJvcFNoYWRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmgJKHJldmlzaW9uIDEwNzExMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGZs
b2F0IGNhbGN1bGF0ZVN0ZERldmlhdGlvbihmbG9hdCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGxh
dGZvcm1BcHBseVNvZnR3YXJlKCk7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0
d2FyZShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCiAgICAgdmlydHVhbCB2b2lk
IGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAJKHJldmlzaW9uIDEw
NzExMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9v
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgYm9vbCBGRUZsb29kOjpzZXRG
bG9vZE9wYWNpdHkoZmxvYXQgZmxvbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEZFRmxv
b2Q6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFRmxvb2Q6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZShib29sKQogewogICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUlt
YWdlQnVmZmVyUmVzdWx0KCk7CiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCShyZXZp
c2lvbiAxMDcxMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRmxvb2QuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAg
ZmxvYXQgZmxvb2RPcGFjaXR5KCkgY29uc3Q7CiAgICAgYm9vbCBzZXRGbG9vZE9wYWNpdHkoZmxv
YXQpOwogCi0gICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpOworICAgIHZp
cnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lk
IGR1bXAoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgp
IHsgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkp
KTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdh
dXNzaWFuQmx1ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAJKHJldmlzaW9uIDEwNzExMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6
ZGV0ZXJtaW5lQWJzb2x1dGVQYQogICAgIHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0lu
dFJlY3QoYWJzb2x1dGVQYWludFJlY3QpKTsKIH0KIAotdm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZShib29sKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNz
aWFuQmx1ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAkocmV2aXNpb24gMTA3MTExKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw5ICs0MCw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBmbG9hdCBjYWxj
dWxhdGVTdGREZXZpYXRpb24oZmxvYXQpOwogCi0gICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpOworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoYm9v
bCk7CiAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCBk
ZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpOwogICAgIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZUtl
cm5lbFNpemUoRmlsdGVyKiwgdW5zaWduZWQmIGtlcm5lbFNpemVYLCB1bnNpZ25lZCYga2VybmVs
U2l6ZVksIGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFkpOwogICAgIHN0YXRpYyB2b2lkIGNhbGN1bGF0
ZVVuc2NhbGVkS2VybmVsU2l6ZSh1bnNpZ25lZCYga2VybmVsU2l6ZVgsIHVuc2lnbmVkJiBrZXJu
ZWxTaXplWSwgZmxvYXQgc3RkWCwgZmxvYXQgc3RkWSk7CkBAIC03NSw3ICs3NSw3IEBAIHByaXZh
dGU6CiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1BcHBseUdlbmVyaWMoQnl0ZUFycmF5KiBzcmNQ
aXhlbEFycmF5LCBCeXRlQXJyYXkqIHRtcFBpeGVsQXJyYXksIHVuc2lnbmVkIGtlcm5lbFNpemVY
LCB1bnNpZ25lZCBrZXJuZWxTaXplWSwgSW50U2l6ZSYgcGFpbnRTaXplKTsKICAgICBpbmxpbmUg
dm9pZCBwbGF0Zm9ybUFwcGx5TmVvbihCeXRlQXJyYXkqIHNyY1BpeGVsQXJyYXksIEJ5dGVBcnJh
eSogdG1wUGl4ZWxBcnJheSwgdW5zaWduZWQga2VybmVsU2l6ZVgsIHVuc2lnbmVkIGtlcm5lbFNp
emVZLCBJbnRTaXplJiBwYWludFNpemUpOwogI2lmIFVTRShTS0lBKQotICAgIHZpcnR1YWwgYm9v
bCBwbGF0Zm9ybUFwcGx5U2tpYSgpOworICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUFwcGx5U2tp
YShib29sKTsKICNlbmRpZgogCiAgICAgZmxvYXQgbV9zdGRYOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3Bw
CShyZXZpc2lvbiAxMDcxMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODQsNyArMzg0LDcgQEAg
Ym9vbCBGRUxpZ2h0aW5nOjpkcmF3TGlnaHRpbmcoQnl0ZUFycmF5KgogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIEZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZF
TGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShib29sKQogewogICAgIEZpbHRlckVmZmVj
dCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgJKHJldmlzaW9uIDEwNzEx
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGlu
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHN0cnVjdCBGRUxpZ2h0aW5nUGFp
bnRpbmdEYXRhRm9yTmVvbjsKIAogY2xhc3MgRkVMaWdodGluZyA6IHB1YmxpYyBGaWx0ZXJFZmZl
Y3QgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGJvb2wpOwogCiAgICAgdmly
dHVhbCB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgeyBzZXRBYnNvbHV0ZVBhaW50
UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNw
cAkocmV2aXNpb24gMTA3MTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRU1lcmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBQYXNz
UmVmUHRyPEZFTWVyZ2U+IEZFTWVyZ2U6OmNyZWF0ZShGaWx0CiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBGRU1lcmdlKGZpbHRlcikpOwogfQogCi12b2lkIEZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCit2b2lkIEZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShib29sKQogewog
ICAgIHVuc2lnbmVkIHNpemUgPSBudW1iZXJPZkVmZmVjdElucHV0cygpOwogICAgIEFTU0VSVChz
aXplID4gMCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFTWVyZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTWVyZ2UuaAkocmV2aXNpb24gMTA3MTExKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDcgKzMzLDcgQEAgY2xhc3MgRkVNZXJnZSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFTWVyZ2U+IGNyZWF0ZShGaWx0ZXIqKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGxhdGZvcm1BcHBseVNvZnR3YXJlKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAK
ICAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVh
bSYsIGludCBpbmRlbnRpb24pIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAkocmV2aXNp
b24gMTA3MTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU1vcnBob2xvZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBG
RU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHkoUGFpbnRpbgogfQogCiAKLXZvaWQgRkVNb3JwaG9s
b2d5OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZShib29sKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVj
dCgwKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU1vcnBob2xvZ3kuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCShyZXZpc2lvbiAxMDcxMTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIGVudW0gTW9ycGhvbG9neU9wZXJhdG9yVHlwZSB7CiAK
IGNsYXNzIEZFTW9ycGhvbG9neSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEZFTW9ycGhvbG9neT4gY3JlYXRlKEZpbHRlciosIE1vcnBob2xv
Z3lPcGVyYXRvclR5cGUsIGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1kpOyAgCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RkVNb3JwaG9sb2d5PiBjcmVhdGUoRmlsdGVyKiwgTW9ycGhvbG9neU9w
ZXJhdG9yVHlwZSwgZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSk7CiAgICAgTW9ycGhvbG9n
eU9wZXJhdG9yVHlwZSBtb3JwaG9sb2d5T3BlcmF0b3IoKSBjb25zdDsKICAgICBib29sIHNldE1v
cnBob2xvZ3lPcGVyYXRvcihNb3JwaG9sb2d5T3BlcmF0b3JUeXBlKTsKIApAQCAtNDYsNyArNDYs
NyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgcmFkaXVzWSgpIGNvbnN0OwogICAgIGJvb2wgc2V0UmFk
aXVzWShmbG9hdCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7
CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShib29sKTsKICAgICB2aXJ0
dWFsIHZvaWQgZHVtcCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRldGVybWluZUFic29sdXRlUGFp
bnRSZWN0KCk7CkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBpbmxpbmUgdm9pZCBwbGF0
Zm9ybUFwcGx5R2VuZXJpYyhQYWludGluZ0RhdGEqLCBjb25zdCBpbnQgeVN0YXJ0LCBjb25zdCBp
bnQgeUVuZCk7CiBwcml2YXRlOgogICAgIEZFTW9ycGhvbG9neShGaWx0ZXIqLCBNb3JwaG9sb2d5
T3BlcmF0b3JUeXBlLCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZKTsKLSAgICAKKwogICAg
IE1vcnBob2xvZ3lPcGVyYXRvclR5cGUgbV90eXBlOwogICAgIGZsb2F0IG1fcmFkaXVzWDsKICAg
ICBmbG9hdCBtX3JhZGl1c1k7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAkocmV2aXNpb24gMTA3MTExKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBGRU9mZnNldDo6ZGV0ZXJtaW5lQWJz
b2x1dGVQYWludFJlYwogICAgIHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3Qo
cGFpbnRSZWN0KSk7CiB9CiAKLXZvaWQgRkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
Cit2b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoYm9vbCkKIHsKICAgICBGaWx0
ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmgJKHJldmlzaW9uIDEw
NzExMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZz
ZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsOSArMzgsOSBAQCBwdWJsaWM6CiAgICAgZmxvYXQg
ZHkoKSBjb25zdDsKICAgICB2b2lkIHNldER5KGZsb2F0KTsKIAotICAgIHZpcnR1YWwgdm9pZCBw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNv
ZnR3YXJlKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7Ci0gICAgCisKICAgICB2aXJ0
dWFsIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKTsKIAogICAgIHZpcnR1YWwgVGV4
dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwgaW50IGluZGVudGlv
bikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVRpbGUuY3BwCShyZXZpc2lvbiAxMDcxMTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDcgKzQzLDcgQEAgUGFzc1JlZlB0cjxGRVRpbGU+IEZFVGlsZTo6Y3JlYXRlKEZpbHRlcgog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVUaWxlKGZpbHRlcikpOwogfQogCi12b2lkIEZFVGls
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoYm9vbCkKIHsKIC8vIEZJWE1FOiBTZWUgYnVnIDQ3MzE1LiBUaGlzIGlzIGEgaGFjayB0
byB3b3JrIGFyb3VuZCBhIGNvbXBpbGUgZmFpbHVyZSwgYnV0IGlzIGluY29ycmVjdCBiZWhhdmlv
ciBvdGhlcndpc2UuCiAjaWYgRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaAkocmV2aXNpb24gMTA3MTExKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMTIgKzI3LDEyIEBACiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwogY2xhc3MgRkVUaWxlIDogcHVibGljIEZpbHRlckVm
ZmVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVUaWxlPiBjcmVhdGUoRmls
dGVyKiBmaWx0ZXIpOwogCi0gICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
OworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoYm9vbCk7CiAgICAgdmly
dHVhbCB2b2lkIGR1bXAoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBh
aW50UmVjdCgpIHsgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhFZmZl
Y3RSZWN0KCkpKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRVR1cmJ1bGVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAkocmV2aXNpb24gMTA3MTExKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTQsNyArMzU0LDcgQEAgdm9pZCBGRVR1cmJ1bGVuY2U6
OmZpbGxSZWdpb25Xb3JrZXIoRmlsbAogICAgIHBhcmFtZXRlcnMtPmZpbHRlci0+ZmlsbFJlZ2lv
bihwYXJhbWV0ZXJzLT5waXhlbEFycmF5LCAqcGFyYW1ldGVycy0+cGFpbnRpbmdEYXRhLCBwYXJh
bWV0ZXJzLT5zdGFydFksIHBhcmFtZXRlcnMtPmVuZFkpOwogfQogCi12b2lkIEZFVHVyYnVsZW5j
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoYm9vbCkKIHsKICAgICBCeXRlQXJyYXkqIHBpeGVsQXJyYXkgPSBjcmVhdGVV
bm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOwogICAgIGlmICghcGl4ZWxBcnJheSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1
cmJ1bGVuY2UuaAkocmV2aXNpb24gMTA3MTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsOSAr
NjAsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBmaWxsUmVnaW9uV29ya2VyKHZvaWQq
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBk
dW1wKCk7Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJl
Y3QoKSB7IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVj
dCgpKSk7IH0KIAogICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihUZXh0U3RyZWFtJiwgaW50IGluZGVudGlvbikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
Y3BwCShyZXZpc2lvbiAxMDcxMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDE0ICs5MCwx
NyBAQCBGaWx0ZXJFZmZlY3QqIEZpbHRlckVmZmVjdDo6aW5wdXRFZmZlY3QoCiAgICAgcmV0dXJu
IG1faW5wdXRFZmZlY3RzLmF0KG51bWJlcikuZ2V0KCk7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0
OjphcHBseSgpCit2b2lkIEZpbHRlckVmZmVjdDo6YXBwbHkoYm9vbCB2YWxpZFByZU11bFJHQkFJ
c1JlcXVpcmVkKQogewogICAgIGlmIChoYXNSZXN1bHQoKSkKICAgICAgICAgcmV0dXJuOworCisg
ICAgYm9vbCB2YWxpZFByZU11bFJHQkFJbnB1dHNSZXF1aXJlZCA9IHJlcXVpcmVzVmFsaWRQcmVN
dWxSR0JBKCk7CisKICAgICB1bnNpZ25lZCBzaXplID0gbV9pbnB1dEVmZmVjdHMuc2l6ZSgpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgRmlsdGVy
RWZmZWN0KiBpbiA9IG1faW5wdXRFZmZlY3RzLmF0KGkpLmdldCgpOwotICAgICAgICBpbi0+YXBw
bHkoKTsKKyAgICAgICAgaW4tPmFwcGx5KHZhbGlkUHJlTXVsUkdCQUlucHV0c1JlcXVpcmVkKTsK
ICAgICAgICAgaWYgKCFpbi0+aGFzUmVzdWx0KCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMTA1LDEwICsxMDgsMTAgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmFwcGx5KCkKICAgICAK
ICAgICAvLyBBZGQgcGxhdGZvcm0gc3BlY2lmaWMgYXBwbHkgZnVuY3Rpb25zIGhlcmUgYW5kIHJl
dHVybiBlYXJsaWVyLgogI2lmIFVTRShTS0lBKQotICAgIGlmIChwbGF0Zm9ybUFwcGx5U2tpYSgp
KQorICAgIGlmIChwbGF0Zm9ybUFwcGx5U2tpYSh2YWxpZFByZU11bFJHQkFJc1JlcXVpcmVkKSkK
ICAgICAgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7Cisg
ICAgcGxhdGZvcm1BcHBseVNvZnR3YXJlKHZhbGlkUHJlTXVsUkdCQUlzUmVxdWlyZWQpOwogfQog
CiB2b2lkIEZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1bHQoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCShy
ZXZpc2lvbiAxMDcxMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCwxMSArODQsMTUgQEAgcHVi
bGljOgogICAgIEZsb2F0UmVjdCBtYXhFZmZlY3RSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9tYXhF
ZmZlY3RSZWN0OyB9CiAgICAgdm9pZCBzZXRNYXhFZmZlY3RSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
bWF4RWZmZWN0UmVjdCkgeyBtX21heEVmZmVjdFJlY3QgPSBtYXhFZmZlY3RSZWN0OyB9IAogCi0g
ICAgdm9pZCBhcHBseSgpOworICAgIHZvaWQgYXBwbHkoYm9vbCB2YWxpZFByZU11bFJHQkFJc1Jl
cXVpcmVkID0gdHJ1ZSk7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpID0gMDsKKyAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgZmlsdGVyIHdpbGwgb25seSBv
cGVyYXRlIGNvcnJlY3RseSBvbiB2YWxpZCBSR0JBIHZhbHVlcywgd2l0aAorICAgIC8vIGFscGhh
IGluIFswLDI1NV0gYW5kIGVhY2ggY29sb3IgY29tcG9uZW50IGluIFswLCBhbHBoYV0KKyAgICB2
aXJ0dWFsIGJvb2wgcmVxdWlyZXNWYWxpZFByZU11bFJHQkEoKSB7IHJldHVybiB0cnVlOyB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGJvb2wpID0gMDsKICNpZiBV
U0UoU0tJQSkKLSAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1BcHBseVNraWEoKSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUFwcGx5U2tpYShib29sKSB7IHJldHVy
biBmYWxzZTsgfQogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGR1bXAoKSA9IDA7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
U291cmNlQWxwaGEuY3BwCShyZXZpc2lvbiAxMDcxMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTIsNyArNTIsNyBAQCB2b2lkIFNvdXJjZUFscGhhOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50CiAg
ICAgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChwYWludFJlY3QpKTsKIH0K
IAotdm9pZCBTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgU291cmNl
QWxwaGE6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShib29sKQogewogICAgIEltYWdlQnVmZmVyKiBy
ZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAgRmlsdGVyKiBmaWx0
ZXIgPSB0aGlzLT5maWx0ZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmgJKHJldmlzaW9uIDEwNzExMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEu
aAkod29ya2luZyBjb3B5KQpAQCAtMjksMTIgKzI5LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFNvdXJjZUFscGhhIDogcHVibGljIEZpbHRlckVmZmVjdCB7Ci1wdWJsaWM6ICAg
ICAgICAKK3B1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb3VyY2VBbHBoYT4gY3JlYXRl
KEZpbHRlciopOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZWZmZWN0TmFtZSgp
OwogCi0gICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpOworICAgIHZpcnR1
YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIGR1
bXAoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFw
aGljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCShyZXZpc2lvbiAxMDcxMTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHZvaWQgU291cmNlR3JhcGhpYzo6ZGV0ZXJtaW5lQWJz
b2x1dGVQYWkKICAgICBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KHBhaW50
UmVjdCkpOwogfQogCi12b2lkIFNvdXJjZUdyYXBoaWM6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
Cit2b2lkIFNvdXJjZUdyYXBoaWM6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShib29sKQogewogICAg
IEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CiAg
ICAgRmlsdGVyKiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5o
CShyZXZpc2lvbiAxMDcxMTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDEyIEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNvdXJjZUdyYXBoaWMgOiBwdWJsaWMgRmls
dGVyRWZmZWN0IHsKLXB1YmxpYzogICAgICAgIAorcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNvdXJjZUdyYXBoaWM+IGNyZWF0ZShGaWx0ZXIqKTsKIAogICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIGVmZmVjdE5hbWUoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGJv
b2wpOwogICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0ZXJt
aW5lQWJzb2x1dGVQYWludFJlY3QoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUNvbG9yTWF0cml4U2tpYS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29sb3JNYXRy
aXhTa2lhLmNwcAkocmV2aXNpb24gMTA3MTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFQ29sb3JNYXRyaXhTa2lhLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODAsNyArODAsNyBAQCBzdGF0aWMgdm9pZCBsdW1pbmFuY2VUb0FscGhhTWF0cml4KFNr
U2NhCiAgICAgbWF0cml4WzE3XSA9IDAuMDcyMWY7CiB9CiAKLWJvb2wgRkVDb2xvck1hdHJpeDo6
cGxhdGZvcm1BcHBseVNraWEoKQorYm9vbCBGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U2tp
YShib29sKQogewogICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVm
ZmVyUmVzdWx0KCk7CiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUdhdXNzaWFuQmx1clNraWEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tp
YS9GRUdhdXNzaWFuQmx1clNraWEuY3BwCShyZXZpc2lvbiAxMDcxMTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lhLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWJvb2wgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTa2lhKCkKK2Jvb2wgRkVHYXVz
c2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTa2lhKGJvb2wpCiB7CiAgICAgSW1hZ2VCdWZmZXIqIHJl
c3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBpZiAoIXJlc3VsdElt
YWdlKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVJbWFnZS5jcHAJKHJldmlzaW9uIDEwNzExMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5
NCw3IEBAIFJlbmRlck9iamVjdCogRkVJbWFnZTo6cmVmZXJlbmNlZFJlbmRlcmUKICAgICByZXR1
cm4gaHJlZkVsZW1lbnQtPnJlbmRlcmVyKCk7CiB9CiAKLXZvaWQgRkVJbWFnZTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKGJvb2wp
CiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHJlZmVyZW5jZWRSZW5kZXJlcigpOwog
ICAgIGlmICghbV9pbWFnZSAmJiAhcmVuZGVyZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCShyZXZpc2lvbiAxMDcxMTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEZFSW1hZ2U+IGNyZWF0ZVdpdGhJbWFnZShGaWx0ZXIqLCBQYXNzUmVmUHRyPEltYWdlPiwgY29u
c3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFSW1h
Z2U+IGNyZWF0ZVdpdGhJUklSZWZlcmVuY2UoRmlsdGVyKiwgRG9jdW1lbnQqLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlT
b2Z0d2FyZShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCiAgICAgdmlydHVhbCB2
b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCk7CkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIEZpbHRlckVmZmVjdFR5cGUgZmlsdGVyRWZmZWN0VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIEZpbHRlckVmZmVjdFR5cGVJbWFnZTsgfQogCiAgICAgdmlydHVhbCBUZXh0U3Ry
ZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50aW9uKSBj
b25zdDsKLSAgICAKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5GRUltYWdlKCkgeyB9CiAgICAg
RkVJbWFnZShGaWx0ZXIqLCBQYXNzUmVmUHRyPEltYWdlPiwgY29uc3QgU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpbyYpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA3MTExKQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMDItMDggIFN0ZXBo
ZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1d
IFNWRyBDb21wb3NpdGUgb2YgT2Zmc2V0IGNyYXNoZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MjQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGZlQ29tcG9zaXRlIGFyaXRobWV0aWMgbW9kZSBm
aWx0ZXIgY291bGQgcmVhZGlseSBiZSBtYWRlIHRvCisgICAgICAgIGdlbmVyYXRlIGludmFsaWQg
cHJlLW11bHRpcGxpZWQgcGl4ZWwgdmFsdWVzIHdoaWNoIHdvdWRsIHRoZW4gZ28gb24gdG8KKyAg
ICAgICAgcG9sbHV0ZSBvdGhlciBmaWx0ZXJzIGFuZCBjYXVzZSBpbnZhbGlkIGZpbmFsIG91dHB1
dCBwaXhlbHMuIFRoaXMKKyAgICAgICAgcGF0Y2ggYWRkcyBhIGZsYWcgdGhhdCBhbGxvd3MgYXJp
dGhtZXRpYyBmaWx0ZXJzIHRvIGdlbmVyYXRlIGludmFsaWQKKyAgICAgICAgaW50ZXJtZWRpYXRl
IHJlc3VsdHMgd2hpbGUgbm90IHByb2R1Y2luZyBpbnZhbGlkIHJlc3VsdHMgYXMgaW5wdXRzIHRv
CisgICAgICAgIG90aGVyIGZpbHRlcnMuIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2YgRkYg
YW5kIE9wZXJhIHdoaWxlCisgICAgICAgIHByZXZlbnRpbmcgY3Jhc2hlcyBvciBvdGhlciB1bmRl
c2lyYWJsZSBiZWhhdmlvci4KKworICAgICAgICBUZXN0cyBhcmUgbWFya2VkIGFzIGZsYWtleSBi
ZWNhdXNlIHJlc3VsdHMgYXJlIHVubGlrZWx5IHRvIGJlCisgICAgICAgIGNvbnNpc3RlbnQgYWNy
b3NzIHBsYXRmb3Jtcy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisgICAgICAg
ICogcGxhdGZvcm0vcXQvdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHN2Zy9maWx0
ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLWV4cGVjdGVkLnBuZzogQWRk
ZWQuCisgICAgICAgICogc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlk
LXJnYmEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZmlsdGVycy9mZUNvbXBv
c2l0ZS1hcml0aG1ldGljLWludmFsaWQtcmdiYS5zdmc6IEFkZGVkLgorCiAyMDEyLTAyLTA4ICBK
dWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQgZ2FyZGVuaW5nLgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVz
dF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkocmV2aXNpb24gMTA3MTExKQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC04OTYsNiArODk2LDggQEAgQlVHQ1I2MjQzMyBXSU4gOiBmYXN0L2ltYWdlcy9naWYt
bG9vcC1jbwogCiBCVUdDUjg3NjMgTUFDIDogc3ZnL2N1c3RvbS91c2Utb24tZy1jb250YWluaW5n
LWZvcmVpZ25PYmplY3QtYW5kLWltYWdlLnN2ZyA9IElNQUdFCiAKKy8vIFRoaXMgaXMgYSBuZXcg
dGVzdCB0aGF0IHdpbGwgbGlrZWx5IGhhdmUgdW5hbnRpY2lwYXRlZCByZXN1bHRzLgorQlVHV0s3
NzI0NSA6IHN2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLnN2
ZyA9IFBBU1MgRkFJTAogCiAvLyBXZSBzaG93IHJlZHVjZWQgdmVyc2lvbiBvZiB0aGUgZW50aXJl
IFNWTiBpbWFnZSByYXRoZXIgdGhhbiBhbiBpbWFnZQogQlVHQ1IyMzQ2MyBMRU9QQVJEIDogc3Zn
L1czQy1TVkctMS4xL3N0cnVjdC1zeW1ib2wtMDEtYi5zdmcgPSBJTUFHRQpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0CShyZXZpc2lvbiAx
MDcxMTEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw5IEBAIEJVR1dLNjE5MTQgOiBzdmcvem9vbS9w
YWdlL3pvb20tc3ZnLXRocm8KIAogQlVHV0s2ODUyMCA6IHN2Zy9XM0MtU1ZHLTEuMS1TRS9maWx0
ZXJzLWltYWdlLTA1LWYuc3ZnID0gUEFTUyBURVhUCiAKKy8vIFRoaXMgaXMgYSBuZXcgdGVzdCB0
aGF0IHdpbGwgbGlrZWx5IGhhdmUgdW5hbnRpY2lwYXRlZCByZXN1bHRzLgorQlVHV0s3NzI0NSA6
IHN2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLnN2ZyA9IFBB
U1MgRkFJTAorCiBCVUdXSzY4NTE2IDogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItbGlmZWN5
Y2xlLmh0bWwgPSBQQVNTIFRFWFQKIEJVR1dLNjg1MTYgOiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdv
cmtlci1mcmFtZS1saWZlY3ljbGUuaHRtbCA9IFBBU1MgVEVYVAogQlVHV0s2ODUxNiA6IGZhc3Qv
d29ya2Vycy93b3JrZXItY2xvc2UtbW9yZS5odG1sID0gUEFTUyBURVhUCkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJldmlzaW9uIDEw
NzExMSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy90ZXN0X2V4cGVjdGF0aW9ucy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDkgQEAgQlVHV0s1NzY4OCA6IGZhc3QvdGV4dC9p
bnRlcm5hdGlvbmFsL3RoYQogCiBCVUdXSzU4MTkyIDogcGx1Z2lucy9ucHAtc2V0LXdpbmRvdy1j
YWxsZWQtZHVyaW5nLWRlc3RydWN0aW9uLmh0bWwgPSBURVhUCiAKKy8vIFRoaXMgaXMgYSBuZXcg
dGVzdCB0aGF0IHdpbGwgbGlrZWx5IGhhdmUgdW5hbnRpY2lwYXRlZCByZXN1bHRzLgorQlVHV0s3
NzI0NSA6IHN2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLnN2
ZyA9IFBBU1MgRkFJTAorCiAvLyBGbGFreSB0ZXN0cyB3aGVuIHJ1biBtdWx0aS1wcm9jZXNzCiBC
VUdXSzU4MTkyIDogZmFzdC9kb20vZnJhbWUtbG9hZGluZy12aWEtZG9jdW1lbnQtd3JpdGUuaHRt
bCA9IFRFWFQgUEFTUwogQlVHV0s1ODE5MiA6IGh0dHAvdGVzdHMvYXBwY2FjaGUvZmFpbC1vbi11
cGRhdGUtMi5odG1sID0gVEVYVCBQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC90
ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvdGVzdF9leHBlY3RhdGlvbnMudHh0CShyZXZpc2lvbiAxMDcxMTEpCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9xdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI1
LDUgKzI1LDggQEAgQlVHV0s3NDI3MCA6IGZhc3QvZm9ybXMvYmFzaWMtc2VsZWN0cy5odAogLy8g
VGhlIHRlc3QgaGl0cyBhbiBBU1NFUlQgaW4gRGVidWcuCiBCVUdXSzY4ODU5IERFQlVHIDogZmFz
dC9keW5hbWljL2NyYXNoLXBhaW50LW5vLWRvY3VtZW50RWxlbWVudC1yZW5kZXJlci5odG1sID0g
Q1JBU0gKIAorLy8gVGhpcyBpcyBhIG5ldyB0ZXN0IHRoYXQgd2lsbCBsaWtlbHkgaGF2ZSB1bmFu
dGljaXBhdGVkIHJlc3VsdHMuCitCVUdXSzc3MjQ1IDogc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUt
YXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEuc3ZnID0gUEFTUyBGQUlMCisKIC8vIE5lZWRzIGJhc2Vs
aW5lCiBCVUdXSzc2MTE4IDogZmFzdC9jc3MvdGV4dC1vdmVyZmxvdy1pbnB1dC5odG1sID0gTUlT
U0lORwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRp
Yy1pbnZhbGlkLXJnYmEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2
Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFy
aXRobWV0aWMtaW52YWxpZC1yZ2JhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzNSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDIwMHgxMDAKKyAgUmVuZGVyU1ZH
Um9vdCB7c3ZnfSBhdCAoMjAsMjApIHNpemUgMTYweDYwCisgICAgUmVuZGVyU1ZHSGlkZGVuQ29u
dGFpbmVyIHtkZWZzfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIge2ZpbHRlcn0gW2lkPSJhcml0aG1ldGljIl0gW2ZpbHRlclVuaXRzPW9iamVjdEJvdW5k
aW5nQm94XSBbcHJpbWl0aXZlVW5pdHM9dXNlclNwYWNlT25Vc2VdCisgICAgICAgIFtmZUNvbXBv
c2l0ZSBvcGVyYXRpb249IkFSSVRITUVUSUMiIGsxPSIwLjAwIiBrMj0iMS4wMCIgazM9IjEuMDAi
IGs0PSIwLjAwIl0KKyAgICAgICAgICBbZmVDb21wb3NpdGUgb3BlcmF0aW9uPSJBUklUSE1FVElD
IiBrMT0iMC4wMCIgazI9IjEuMDAiIGszPSIxLjAwIiBrND0iMC4wMCJdCisgICAgICAgICAgICBb
ZmVDb21wb3NpdGUgb3BlcmF0aW9uPSJBUklUSE1FVElDIiBrMT0iMC4wMCIgazI9IjAuMjAiIGsz
PSIwLjAwIiBrND0iMC4wMCJdCisgICAgICAgICAgICAgIFtTb3VyY2VHcmFwaGljXQorICAgICAg
ICAgICAgICBbU291cmNlR3JhcGhpY10KKyAgICAgICAgICAgIFtmZUNvbXBvc2l0ZSBvcGVyYXRp
b249IkFSSVRITUVUSUMiIGsxPSIwLjAwIiBrMj0iMC4zMCIgazM9IjAuMDAiIGs0PSIwLjAwIl0K
KyAgICAgICAgICAgICAgW1NvdXJjZUFscGhhXQorICAgICAgICAgICAgICBbU291cmNlQWxwaGFd
CisgICAgICAgICAgW2ZlQ29tcG9zaXRlIG9wZXJhdGlvbj0iQVJJVEhNRVRJQyIgazE9IjAuMDAi
IGsyPSIxLjAwIiBrMz0iLTEuMDAiIGs0PSIwLjAwIl0KKyAgICAgICAgICAgIFtTb3VyY2VHcmFw
aGljXQorICAgICAgICAgICAgW2ZlQ29tcG9zaXRlIG9wZXJhdGlvbj0iQVJJVEhNRVRJQyIgazE9
IjAuMDAiIGsyPSIxLjAwIiBrMz0iMS4wMCIgazQ9IjAuMDAiXQorICAgICAgICAgICAgICBbZmVD
b21wb3NpdGUgb3BlcmF0aW9uPSJBUklUSE1FVElDIiBrMT0iMC4wMCIgazI9IjAuMjAiIGszPSIw
LjAwIiBrND0iMC4wMCJdCisgICAgICAgICAgICAgICAgW1NvdXJjZUdyYXBoaWNdCisgICAgICAg
ICAgICAgICAgW1NvdXJjZUdyYXBoaWNdCisgICAgICAgICAgICAgIFtmZUNvbXBvc2l0ZSBvcGVy
YXRpb249IkFSSVRITUVUSUMiIGsxPSIwLjAwIiBrMj0iMC4zMCIgazM9IjAuMDAiIGs0PSIwLjAw
Il0KKyAgICAgICAgICAgICAgICBbU291cmNlQWxwaGFdCisgICAgICAgICAgICAgICAgW1NvdXJj
ZUFscGhhXQorICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIge2ZpbHRlcn0gW2lkPSJ6ZXJv
LWFscGhhIl0gW2ZpbHRlclVuaXRzPW9iamVjdEJvdW5kaW5nQm94XSBbcHJpbWl0aXZlVW5pdHM9
dXNlclNwYWNlT25Vc2VdCisgICAgICAgIFtmZUNvbXBvc2l0ZSBvcGVyYXRpb249IkFSSVRITUVU
SUMiIGsxPSIwLjAwIiBrMj0iMS4wMCIgazM9Ii0xLjAwIiBrND0iMC4wMCJdCisgICAgICAgICAg
W1NvdXJjZUdyYXBoaWNdCisgICAgICAgICAgW2ZlQ29tcG9zaXRlIG9wZXJhdGlvbj0iQVJJVEhN
RVRJQyIgazE9IjAuMDAiIGsyPSIxLjAwIiBrMz0iMC4wMCIgazQ9IjAuMDAiXQorICAgICAgICAg
ICAgW1NvdXJjZUFscGhhXQorICAgICAgICAgICAgW1NvdXJjZUFscGhhXQorICAgIFJlbmRlclNW
R1JlY3Qge3JlY3R9IGF0ICgyMCwyMCkgc2l6ZSA2MHg2MCBbZmlsbD17W3R5cGU9U09MSURdIFtj
b2xvcj0jMDBGRjAwXX1dIFt4PTIwLjAwXSBbeT0yMC4wMF0gW3dpZHRoPTYwLjAwXSBbaGVpZ2h0
PTYwLjAwXQorICAgIFJlbmRlclNWR1JlY3Qge3JlY3R9IGF0ICgyMCwyMCkgc2l6ZSA2MHg2MCBb
ZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jMDBGRjAwXX1dIFt4PTI1LjAwXSBbeT0yNS4wMF0g
W3dpZHRoPTUwLjAwXSBbaGVpZ2h0PTUwLjAwXQorICAgICAgW2ZpbHRlcj0iYXJpdGhtZXRpYyJd
IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyIHtmaWx0ZXJ9IGF0ICgyMCwyMCkgc2l6ZSA2MHg2MAor
ICAgIFJlbmRlclNWR1JlY3Qge3JlY3R9IGF0ICgxMjQsMjQpIHNpemUgNTJ4NTIgW3N0cm9rZT17
W3R5cGU9U09MSURdIFtjb2xvcj0jMDBGRjAwXX1dIFt4PTEyNS4wMF0gW3k9MjUuMDBdIFt3aWR0
aD01MC4wMF0gW2hlaWdodD01MC4wMF0KKyAgICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBhdCAoMTIw
LDIwKSBzaXplIDYweDYwIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMEZGMDBdfV0gW3g9
MTI1LjAwXSBbeT0yNS4wMF0gW3dpZHRoPTUwLjAwXSBbaGVpZ2h0PTUwLjAwXQorICAgICAgW2Zp
bHRlcj0iemVyby1hbHBoYSJdIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyIHtmaWx0ZXJ9IGF0ICgx
MjAsMjApIHNpemUgNjB4NjAKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3N2Zy9m
aWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLWV4cGVjdGVkLnR4dApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0
cy9zdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS1hcml0aG1ldGljLWludmFsaWQtcmdiYS5zdmcKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRp
Yy1pbnZhbGlkLXJnYmEuc3ZnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2ZpbHRl
cnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEuc3ZnCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDMzIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
eG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIyMDAiIGhl
aWdodD0iMTAwIiBzdHlsZT0iYmFja2dyb3VuZDp3aGl0ZTsiPgorICAgIDxkZWZzPgorICAgICAg
ICA8IS0tIFRoaXMgZmlsdGVyIHByb2R1Y2VzIHJlc3VsdHMgdGhhdCBhcmUgaW52YWxpZCBwcmUt
bXVsdGlwbGllZCByZ2JhIHBpeGVscy4gU3BlY2lmaWNhbGx5LCBhZnRlciB0aGUgNHRoIHN0ZXAg
YW4gLS0+CisgICAgICAgIDwhLS0gaW50ZXJpb3IgcGl4ZWwgd2lsbCBjb250YWluICgwLCAwLjgs
IDAsIDAuNSkgd2hpY2ggaXMgaW52YWxpZCBiZWNhdXNlIGcgPiBhLiBXaGVuIHVzZWQgaW4gb3Ro
ZXIgb3BlcmF0aW9ucyAgICAtLT4KKyAgICAgICAgPCEtLSB0aGlzIG1heSBnZW5lcmF0ZSBiYWQg
cmVzdWx0cyBidXQgd2Ugb25seSB3YW50IHRvIGNsYW1wIHRoZSB2YWx1ZXMgd2hlbiBwYXNzZWQg
b24gdG8gb3RoZXIgb3BlcmF0aW9ucywgbm90ICAgIC0tPgorICAgICAgICA8IS0tIGZvciBpbnRl
cm1lZGlhdGUgYXJpdGhtZXRpYyByZXN1bHRzLiAtLT4KKyAgICAgICAgPGZpbHRlciBpZD0iYXJp
dGhtZXRpYyI+CisgICAgICAgICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImFyaXRobWV0aWMi
IGluPSJTb3VyY2VHcmFwaGljIiBpbjI9IlNvdXJjZUdyYXBoaWMiIGsxPSIwIiBrMj0iMC4yIiBr
Mz0iMCIgazQ9IjAiIHJlc3VsdD0icmdiYTAyIiAvPgorICAgICAgICAgICAgPGZlQ29tcG9zaXRl
IG9wZXJhdG9yPSJhcml0aG1ldGljIiBpbj0iU291cmNlQWxwaGEiIGluMj0iU291cmNlQWxwaGEi
IGsxPSIwIiBrMj0iMC4zIiBrMz0iMCIgazQ9IjAiIHJlc3VsdD0iYWxwaGEwNSIgLz4KKyAgICAg
ICAgICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgaW49InJnYmEwMiIgaW4y
PSJhbHBoYTA1IiBrMT0iMCIgazI9IjEiIGszPSIxIiBrND0iMCIgcmVzdWx0PSJ0bXAiIC8+Cisg
ICAgICAgICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGluPSJTb3VyY2VH
cmFwaGljIiBpbjI9InRtcCIgazE9IjAiIGsyPSIxIiBrMz0iLTEiIGs0PSIwIiAvPgorICAgICAg
ICAgICAgPGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJhcml0aG1ldGljIiBpbj0idG1wIiBrMT0iMCIg
azI9IjEiIGszPSIxIiBrND0iMCIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPCEt
LSBUaGlzIGZpbHRlciB3aWxsIHByb2R1Y2UgaW1hZ2VzIHdpdGggemVybyBhbHBoYSBidXQgbm9u
LXplcm8gY29sb3IgY29tcG9uZW50cy4gLS0+CisgICAgICAgIDxmaWx0ZXIgaWQ9Inplcm8tYWxw
aGEiPgorICAgICAgICAgICAgPGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJhcml0aG1ldGljIiBpbj0i
U291cmNlQWxwaGEiIGluMj0iU291cmNlQWxwaGEiIGsxPSIwIiBrMj0iMS4wIiBrMz0iMCIgazQ9
IjAiIHJlc3VsdD0iYWxwaGEiIC8+CisgICAgICAgICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9
ImFyaXRobWV0aWMiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9ImFscGhhIiBrMT0iMCIgazI9IjEu
MCIgazM9Ii0xLjAiIGs0PSIwIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKyAgICA8L2RlZnM+CisK
KyAgICA8IS0tIEJhY2tncm91bmQgZm9yIGNvbG9yIGNvbXBhcmlzb24uIFRoZSBib3JkZXIgb2Yg
dGhlIGZpbmFsIHJlY3RhbmdsZSBzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhlIGludGVyaW9yIGNv
bG9yLiAtLT4KKyAgICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIg
ZmlsbD0icmdiYSgwLDI1NSwwLDEpIiAvPgorCisgICAgPCEtLSBUaGUgY29udGVudCBvZiBpbnRl
cmVzdCAtLT4KKyAgICA8cmVjdCBmaWx0ZXI9InVybCgjYXJpdGhtZXRpYykiIHg9IjI1IiB5PSIy
NSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBmaWxsPSJyZ2JhKDAsMjU1LDAsMSkiIHN0cm9rZT0i
bm9uZSIgLz4KKworICAgIDwhLS0gQm9yZGVyIHRvIHNob3cgZXhwZWN0ZWQgbm9uLWRyYXdpbmcg
YXJlYS4gLS0+CisgICAgPHJlY3QgeD0iMTI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUw
IiBmaWxsPSJub25lIiBzdHJva2U9InJnYigwLDI1NSwwKSIgLz4KKworICAgIDwhLS0gVGhpcyBz
aG91bGQgcHJvZHVjZSBub3RoaW5nLCBhbmQgbm90IGNhdXNlIGEgY3Jhc2guIC0tPgorICAgIDxy
ZWN0IGZpbHRlcj0idXJsKCN6ZXJvLWFscGhhKSIgeD0iMTI1IiB5PSIyNSIgd2lkdGg9IjUwIiBo
ZWlnaHQ9IjUwIiBmaWxsPSJyZ2JhKDAsMjU1LDAsMSkiIHN0cm9rZT0ibm9uZSIgLz4KKzwvc3Zn
PgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1p
bnZhbGlkLXJnYmEtZXhwZWN0ZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUg
bWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRo
bWV0aWMtaW52YWxpZC1yZ2JhLWV4cGVjdGVkLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWlt
ZS10eXBlCiAgICsgaW1hZ2UvcG5nCgoKaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQXlBQUFBSllD
QUlBQUFBVkZCVW5BQUFBS1hSRldIUmphR1ZqYTNOMWJRQTRZbUppTWpKawpOVEF5WW1RMk9EaGxN
MlJoWW1VNFpHRmtOVFEyTTJObU9LbWJ2L2NBQUFzcFNVUkJWSGljN2R0QlRzTXdBRVZCQjNFdnVG
bmRrMUZPClp0WUlWdTBUcnNLTXNvMzAyOVdUNVJ4cnJRRUFRT2RsOXdBQWdMTVJXQUFBTVlFRkFC
QVRXQUFBTVlFRkFCQVRXQUFBTVlFRkFCQVQKV0FBQU1ZRUZBQkFUV0FBQU1ZRUZBQkFUV0FBQU1Z
RUZBQkFUV0FBQU1ZRUZBQkFUV0FBQU1ZRUZBQkFUV0FBQU1ZRUZBQkI3ZmVUbApZeHpWamorenh0
bzlBUUE0T1NkWUFBQXhnUVVBRUJOWUFBQ3hoKzVnY2JlNTV1NEp2NWpIM0QwQkFNNGdQY0ZhVC9r
OG43bm14L2hZCll6M1ZjeHUzeTdycy9tOEE0QXljWU8zeFB0NnZ4M1gzaW0vbW1qNnhCSUNFTzFn
QUFER0JCUUFRRTFnQUFER0JCUUFRRTFnQUFER0IKQlFBUUUxZ0FBREdCQlFBUUUxZ0FBREdCQlFB
UUUxZ0FBREdCQlFBUUUxZ0FBREdCQlFBUUUxZ0FBREdCQlFBUUUxZ0FBREdCQlFBUQpFMWdBQURH
QkJRQVFFMWdBQURHQkJRQVFFMWdBQURHQkJRQVFFMWdBQURHQkJRQVFFMWdBQURHQkJRQVFFMWdB
QURHQkJRQVFFMWdBCkFER0JCUUFRRTFnQUFER0JCUUFRRTFnQUFER0JCUUFRRTFnQUFER0JCUUFR
RTFnQUFER0JCUUFRRTFnQUFER0JCUUFRRTFnQUFER0IKQlFBUUUxZ0FBREdCQlFBUUUxZ0FBTEhY
M1FQK3FjL3hPZGZjdmVLYjI3aTlqYmZkS3dEZ0RJNjExdjB2anlPYzhqZld1UC8zaGk3cgpzbnZD
TDY3SGRmY0VBRGdEZ1FVQUVITUhDd0FnSnJBQUFHSUNDd0FnOXRCWGhPNHpBUUQ4NUFRTEFDQW1z
QUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxB
Q0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZ
Z0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpz
QUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFD
QW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVln
SUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNB
QUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNB
bQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJ
TEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FB
QVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNB
bXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lM
QUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFB
WWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ft
c0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lM
QUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZ
Z0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1z
QUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxB
Q0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZ
Z0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNB
QUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFD
QW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVln
SUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNB
QUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNB
bXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJ
TEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FB
QVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNB
bXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lM
QUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFB
WWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ft
c0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwK
QUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZ
Z0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1z
QUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxB
Q0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVln
SUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNB
QUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFD
QW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVln
SUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FB
QVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNB
bXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJ
TEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FB
QVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ft
c0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lM
QUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFB
WWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ft
c0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxB
Q0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZ
Z0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1z
QUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxB
Q0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVln
SUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNB
QUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFD
QW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBClln
SUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FB
QVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNB
bXNBQUFZZ0lMQUNEMkJlSTZ2eFF1OTF0bkFBQUFBRWxGVGtTdQpRbUNDCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129961</attachid>
            <date>2012-03-02 14:57:34 -0800</date>
            <delta_ts>2012-03-02 15:06:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77245-20120302175733.patch</filename>
            <type>text/plain</type>
            <size>17669</size>
            <attacher name="Stephen Chenney">schenney</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAzLTAyICBTdGVwaGVu
IENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBT
VkcgQ29tcG9zaXRlIG9mIE9mZnNldCBjcmFzaGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzI0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBmZUNvbXBvc2l0ZSBhcml0aG1ldGljIG1vZGUgZmls
dGVyIGNvdWxkIHJlYWRpbHkgYmUgbWFkZSB0bworICAgICAgICBnZW5lcmF0ZSBpbnZhbGlkIHBy
ZS1tdWx0aXBsaWVkIHBpeGVsIHZhbHVlcyB3aGljaCB3b3VsZCB0aGVuIGdvIG9uIHRvCisgICAg
ICAgIHBvbGx1dGUgb3RoZXIgZmlsdGVycyBhbmQgY2F1c2UgaW52YWxpZCBmaW5hbCBvdXRwdXQg
cGl4ZWxzLiBUaGlzCisgICAgICAgIHBhdGNoIGNoZWNrcyBmb3IgZmlsdGVycyB0aGF0IHJlcXVp
cmUgdmFsaWQgaW5wdXRzLCBhbmQgY2hlY2tzIHRoYXQgYQorICAgICAgICByZXN1bHQgaXMgdmFs
aWQsIGFuZCBjb3JyZWN0cyB0aGUgcmVzdWx0IGlmIG5lY2Vzc2FyeS4gVGhpcyBtYXRjaGVzCisg
ICAgICAgIHRoZSBiZWhhdmlvciBvZiBGRiBhbmQgT3BlcmEgd2hpbGUgcHJldmVudGluZyBjcmFz
aGVzIG9yIG90aGVyCisgICAgICAgIHVuZGVzaXJhYmxlIGJlaGF2aW9yLgorCisgICAgICAgIFRl
c3Q6IHN2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLnN2Zwor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oOiBPdmVy
cmlkZSB0aGUgZGVmYXVsdCB2YWxpZGl0eSBjaGVja3MKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3Q6OmFwcGx5KTogQ2hlY2sgZm9yIHZhbGlkaXR5IHN0YXR1cyBhbmQgY29ycmVjdAorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpmb3JjZVZhbGlkUHJlTXVsUkdCQSk6IE1ha2Ug
YW4gaW1hZ2UgdmFsaWQKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmg6IE5ldyB2aXJ0dWFsIG1ldGhvZHMgZm9yIGlt
YWdlIHZhbGlkaXR5LgorICAgICAgICAoRmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdDo6cmVxdWlyZXNWYWxpZFByZU11bFJHQkEpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyRWZmZWN0Ojppc0ludmFsaWRQcmVNdWxSR0JBKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6IENoZWNrIHRoYXQgdGhl
IGZpbmFsIGZpbHRlciByZXN1bHQgaXMgdmFsaWQKKwogMjAxMi0wMy0wMiAgU3JhdmFuS3VtYXIg
U2FuZGVsYSAgPHNzYW5kZWxhQGlubm9taW5kcy5jb20+CiAKICAgICAgICAgTGF5b3V0IGlzc3Vl
IHdpdGggZmllbGRzZXQgbGVnZW5kIGVsZW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgJKHJldmlzaW9u
IDEwOTYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb3NpdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksOCBAQCBwdWJsaWM6CiAgICAg
ZmxvYXQgazQoKSBjb25zdDsKICAgICBib29sIHNldEs0KGZsb2F0KTsKIAorICAgIHZpcnR1YWwg
Ym9vbCByZXF1aXJlc1ZhbGlkUHJlTXVsUkdCQSgpIE9WRVJSSURFIHsgcmV0dXJuIG1fdHlwZSAh
PSBGRUNPTVBPU0lURV9PUEVSQVRPUl9BUklUSE1FVElDOyB9CisgICAgdmlydHVhbCBib29sIGlz
SW52YWxpZFByZU11bFJHQkEoKSBPVkVSUklERSB7IHJldHVybiBtX3R5cGUgPT0gRkVDT01QT1NJ
VEVfT1BFUkFUT1JfQVJJVEhNRVRJQzsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogICAgIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcAkocmV2aXNpb24gMTA5NjE4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2
ICs5NCw5IEBAIHZvaWQgRmlsdGVyRWZmZWN0OjphcHBseSgpCiB7CiAgICAgaWYgKGhhc1Jlc3Vs
dCgpKQogICAgICAgICByZXR1cm47CisKKyAgICBib29sIHZhbGlkUHJlTXVsUkdCQUlucHV0c1Jl
cXVpcmVkID0gcmVxdWlyZXNWYWxpZFByZU11bFJHQkEoKTsKKwogICAgIHVuc2lnbmVkIHNpemUg
PSBtX2lucHV0RWZmZWN0cy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
emU7ICsraSkgewogICAgICAgICBGaWx0ZXJFZmZlY3QqIGluID0gbV9pbnB1dEVmZmVjdHMuYXQo
aSkuZ2V0KCk7CkBAIC0xMDIsNiArMTA1LDE0IEBAIHZvaWQgRmlsdGVyRWZmZWN0OjphcHBseSgp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGRldGVybWluZUFic29sdXRlUGFpbnRS
ZWN0KCk7CisKKyAgICBpZiAodmFsaWRQcmVNdWxSR0JBSW5wdXRzUmVxdWlyZWQpIHsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgRmls
dGVyRWZmZWN0KiBpbiA9IG1faW5wdXRFZmZlY3RzLmF0KGkpLmdldCgpOworICAgICAgICAgICAg
aWYgKGluLT5pc0ludmFsaWRQcmVNdWxSR0JBKCkpCisgICAgICAgICAgICAgICAgaW4tPmZvcmNl
VmFsaWRQcmVNdWxSR0JBKCk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgLy8gQWRkIHBs
YXRmb3JtIHNwZWNpZmljIGFwcGx5IGZ1bmN0aW9ucyBoZXJlIGFuZCByZXR1cm4gZWFybGllci4K
ICNpZiBVU0UoU0tJQSkKQEAgLTExMSw2ICsxMjIsMjggQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmFw
cGx5KCkKICAgICBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKIH0KIAordm9pZCBGaWx0ZXJFZmZl
Y3Q6OmZvcmNlVmFsaWRQcmVNdWxSR0JBKCkKK3sKKyAgICBpZiAoIW1fcHJlbXVsdGlwbGllZElt
YWdlUmVzdWx0KQorICAgICAgICByZXR1cm47CisKKyAgICBCeXRlQXJyYXkqIGltYWdlQXJyYXkg
PSBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC5nZXQoKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBw
aXhlbERhdGEgPSBpbWFnZUFycmF5LT5kYXRhKCk7CisgICAgaW50IHBpeGVsQXJyYXlMZW5ndGgg
PSBpbWFnZUFycmF5LT5sZW5ndGgoKTsKKworICAgIEFTU0VSVCghKHBpeGVsQXJyYXlMZW5ndGgg
JSA0KSk7CisgICAgaW50IG51bVBpeGVscyA9IHBpeGVsQXJyYXlMZW5ndGggLyA0OworICAgIHdo
aWxlICgtLW51bVBpeGVscyA+PSAwKSB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYSA9ICoocGl4
ZWxEYXRhICsgMyk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAg
ICAgICAgICBpZiAoKnBpeGVsRGF0YSA+IGEpCisgICAgICAgICAgICAgICAgKnBpeGVsRGF0YSA9
IGE7CisgICAgICAgICAgICArK3BpeGVsRGF0YTsKKyAgICAgICAgfQorICAgICAgICArK3BpeGVs
RGF0YTsKKyAgICB9Cit9CisKIHZvaWQgRmlsdGVyRWZmZWN0OjpjbGVhclJlc3VsdCgpCiB7CiAg
ICAgaWYgKG1faW1hZ2VCdWZmZXJSZXN1bHQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJKHJldmlzaW9u
IDEwOTYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDE2IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgYXBwbHkoKTsKICAgICAKKyAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgZmlsdGVy
IHdpbGwgb25seSBvcGVyYXRlIGNvcnJlY3RseSBvbiB2YWxpZCBSR0JBIHZhbHVlcywgd2l0aAor
ICAgIC8vIGFscGhhIGluIFswLDI1NV0gYW5kIGVhY2ggY29sb3IgY29tcG9uZW50IGluIFswLCBh
bHBoYV0uCisgICAgdmlydHVhbCBib29sIHJlcXVpcmVzVmFsaWRQcmVNdWxSR0JBKCkgeyByZXR1
cm4gdHJ1ZTsgfQorCisgICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIHJlc3VsdCB3ZSBoYXZlIGlz
IHByZS1tdWx0aXBsZWQgYW5kIGludmFsaWQsIG9yIG1pZ2h0IGJlLgorICAgIHZpcnR1YWwgYm9v
bCBpc0ludmFsaWRQcmVNdWxSR0JBKCkgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIC8vIFZhbGlk
YXRlIHRoZSByZXN1bHQgaWYgaXQgaXMgYSBwcmUtbXVsdGlwbGllZCByZ2JhIGltYWdlLgorICAg
IHZvaWQgZm9yY2VWYWxpZFByZU11bFJHQkEoKTsKKwogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKSA9IDA7CiAjaWYgVVNFKFNLSUEpCiAgICAgdmlydHVhbCBib29sIHBs
YXRmb3JtQXBwbHlTa2lhKCkgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3Bw
CShyZXZpc2lvbiAxMDk2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDYgKzMwMCw4IEBA
IHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVIKICAgICAgICAgLy8gQWx3
YXlzIHRydWUgaWYgZmlsdGVyRGF0YSBpcyBqdXN0IGJ1aWx0IChmaWx0ZXJEYXRhLT5idWlsZGVk
IGlzIGZhbHNlKS4KICAgICAgICAgaWYgKCFsYXN0RWZmZWN0LT5oYXNSZXN1bHQoKSkgewogICAg
ICAgICAgICAgbGFzdEVmZmVjdC0+YXBwbHkoKTsKKyAgICAgICAgICAgIGlmIChsYXN0RWZmZWN0
LT5pc0ludmFsaWRQcmVNdWxSR0JBKCkpCisgICAgICAgICAgICAgICAgbGFzdEVmZmVjdC0+Zm9y
Y2VWYWxpZFByZU11bFJHQkEoKTsKICNpZiAhVVNFKENHKQogICAgICAgICAgICAgSW1hZ2VCdWZm
ZXIqIHJlc3VsdEltYWdlID0gbGFzdEVmZmVjdC0+YXNJbWFnZUJ1ZmZlcigpOwogICAgICAgICAg
ICAgaWYgKHJlc3VsdEltYWdlKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA5NjE4KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDMt
MDIgIFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4KKworICAgICAgICBb
Q2hyb21pdW1dIFNWRyBDb21wb3NpdGUgb2YgT2Zmc2V0IGNyYXNoZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MjQ1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGZlQ29tcG9zaXRlIGFyaXRobWV0
aWMgbW9kZSBmaWx0ZXIgY291bGQgcmVhZGlseSBiZSBtYWRlIHRvCisgICAgICAgIGdlbmVyYXRl
IGludmFsaWQgcHJlLW11bHRpcGxpZWQgcGl4ZWwgdmFsdWVzIHdoaWNoIHdvdWxkIHRoZW4gZ28g
b24gdG8KKyAgICAgICAgcG9sbHV0ZSBvdGhlciBmaWx0ZXJzIGFuZCBjYXVzZSBpbnZhbGlkIGZp
bmFsIG91dHB1dCBwaXhlbHMuIFRoaXMKKyAgICAgICAgcGF0Y2ggY2hlY2tzIGZvciBmaWx0ZXJz
IHRoYXQgcmVxdWlyZSB2YWxpZCBpbnB1dHMsIGFuZCBjaGVja3MgdGhhdCBhCisgICAgICAgIHJl
c3VsdCBpcyB2YWxpZCwgYW5kIGNvcnJlY3RzIHRoZSByZXN1bHQgaWYgbmVjZXNzYXJ5LiBUaGlz
IG1hdGNoZXMKKyAgICAgICAgdGhlIGJlaGF2aW9yIG9mIEZGIGFuZCBPcGVyYSB3aGlsZSBwcmV2
ZW50aW5nIGNyYXNoZXMgb3Igb3RoZXIKKyAgICAgICAgdW5kZXNpcmFibGUgYmVoYXZpb3IuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisgICAg
ICAgICogc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEtZXhw
ZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS1hcml0
aG1ldGljLWludmFsaWQtcmdiYS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9m
aWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLnN2ZzogQWRkZWQuCisK
IDIwMTItMDMtMDIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDk2MDIuCkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CShy
ZXZpc2lvbiAxMDk2MTgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTkzOSw2ICs5MzksOSBAQCBCVUdXSzc3
OTAzIE1BQyA6IHN2Zy9yZXBhaW50L2lubmVyLXN2Zy1jCiAvLyBOZXcgdGVzdCwgbmVlZHMgYSBy
ZWJhc2VsaW5lCiBCVUdXSzc4NjMxIDogc3ZnL2RvbS9TVkdMb2NhdGFibGUtZ2V0Q1RNLXN2Zy1y
b290Lmh0bWwgPSBJTUFHRQogCisvLyBUaGlzIGlzIGEgbmV3IHRlc3QgdGhhdCB3aWxsIGxpa2Vs
eSBmYWlsCitCVUdXSzc3MjQ1IDogc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1p
bnZhbGlkLXJnYmEuc3ZnID0gUEFTUyBGQUlMCisKIC8vIE5lZWQgcmViYXNlbGluaW5nIGFmdGVy
IGJ1ZyA2NDU5MQogQlVHV0s2NDU5MSA6IGNvbXBvc2l0aW5nL3JlcGFpbnQvYmVjb21lLW92ZXJs
YXktY29tcG9zaXRlZC1sYXllci5odG1sID0gUEFTUyBGQUlMCiAKSW5kZXg6IExheW91dFRlc3Rz
L3N2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS1h
cml0aG1ldGljLWludmFsaWQtcmdiYS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9zdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS1hcml0aG1ldGljLWludmFsaWQtcmdiYS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKK2xheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSAyMDB4MTAwCisgIFJlbmRlclNWR1Jvb3Qge3N2Z30gYXQgKDIwLDIwKSBz
aXplIDE2MHg2MAorICAgIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lciB7ZGVmc30gYXQgKDAsMCkg
c2l6ZSAweDAKKyAgICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyIHtmaWx0ZXJ9IFtpZD0iYXJp
dGhtZXRpYyJdIFtmaWx0ZXJVbml0cz1vYmplY3RCb3VuZGluZ0JveF0gW3ByaW1pdGl2ZVVuaXRz
PXVzZXJTcGFjZU9uVXNlXQorICAgICAgICBbZmVDb21wb3NpdGUgb3BlcmF0aW9uPSJBUklUSE1F
VElDIiBrMT0iMC4wMCIgazI9IjEuMDAiIGszPSIxLjAwIiBrND0iMC4wMCJdCisgICAgICAgICAg
W2ZlQ29tcG9zaXRlIG9wZXJhdGlvbj0iQVJJVEhNRVRJQyIgazE9IjAuMDAiIGsyPSIxLjAwIiBr
Mz0iMS4wMCIgazQ9IjAuMDAiXQorICAgICAgICAgICAgW2ZlQ29tcG9zaXRlIG9wZXJhdGlvbj0i
QVJJVEhNRVRJQyIgazE9IjAuMDAiIGsyPSIwLjIwIiBrMz0iMC4wMCIgazQ9IjAuMDAiXQorICAg
ICAgICAgICAgICBbU291cmNlR3JhcGhpY10KKyAgICAgICAgICAgICAgW1NvdXJjZUdyYXBoaWNd
CisgICAgICAgICAgICBbZmVDb21wb3NpdGUgb3BlcmF0aW9uPSJBUklUSE1FVElDIiBrMT0iMC4w
MCIgazI9IjAuMzAiIGszPSIwLjAwIiBrND0iMC4wMCJdCisgICAgICAgICAgICAgIFtTb3VyY2VB
bHBoYV0KKyAgICAgICAgICAgICAgW1NvdXJjZUFscGhhXQorICAgICAgICAgIFtmZUNvbXBvc2l0
ZSBvcGVyYXRpb249IkFSSVRITUVUSUMiIGsxPSIwLjAwIiBrMj0iMS4wMCIgazM9Ii0xLjAwIiBr
ND0iMC4wMCJdCisgICAgICAgICAgICBbU291cmNlR3JhcGhpY10KKyAgICAgICAgICAgIFtmZUNv
bXBvc2l0ZSBvcGVyYXRpb249IkFSSVRITUVUSUMiIGsxPSIwLjAwIiBrMj0iMS4wMCIgazM9IjEu
MDAiIGs0PSIwLjAwIl0KKyAgICAgICAgICAgICAgW2ZlQ29tcG9zaXRlIG9wZXJhdGlvbj0iQVJJ
VEhNRVRJQyIgazE9IjAuMDAiIGsyPSIwLjIwIiBrMz0iMC4wMCIgazQ9IjAuMDAiXQorICAgICAg
ICAgICAgICAgIFtTb3VyY2VHcmFwaGljXQorICAgICAgICAgICAgICAgIFtTb3VyY2VHcmFwaGlj
XQorICAgICAgICAgICAgICBbZmVDb21wb3NpdGUgb3BlcmF0aW9uPSJBUklUSE1FVElDIiBrMT0i
MC4wMCIgazI9IjAuMzAiIGszPSIwLjAwIiBrND0iMC4wMCJdCisgICAgICAgICAgICAgICAgW1Nv
dXJjZUFscGhhXQorICAgICAgICAgICAgICAgIFtTb3VyY2VBbHBoYV0KKyAgICAgIFJlbmRlclNW
R1Jlc291cmNlRmlsdGVyIHtmaWx0ZXJ9IFtpZD0iemVyby1hbHBoYSJdIFtmaWx0ZXJVbml0cz1v
YmplY3RCb3VuZGluZ0JveF0gW3ByaW1pdGl2ZVVuaXRzPXVzZXJTcGFjZU9uVXNlXQorICAgICAg
ICBbZmVDb21wb3NpdGUgb3BlcmF0aW9uPSJBUklUSE1FVElDIiBrMT0iMC4wMCIgazI9IjEuMDAi
IGszPSItMS4wMCIgazQ9IjAuMDAiXQorICAgICAgICAgIFtTb3VyY2VHcmFwaGljXQorICAgICAg
ICAgIFtmZUNvbXBvc2l0ZSBvcGVyYXRpb249IkFSSVRITUVUSUMiIGsxPSIwLjAwIiBrMj0iMS4w
MCIgazM9IjAuMDAiIGs0PSIwLjAwIl0KKyAgICAgICAgICAgIFtTb3VyY2VBbHBoYV0KKyAgICAg
ICAgICAgIFtTb3VyY2VBbHBoYV0KKyAgICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBhdCAoMjAsMjAp
IHNpemUgNjB4NjAgW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwRkYwMF19XSBbeD0yMC4w
MF0gW3k9MjAuMDBdIFt3aWR0aD02MC4wMF0gW2hlaWdodD02MC4wMF0KKyAgICBSZW5kZXJTVkdS
ZWN0IHtyZWN0fSBhdCAoMjAsMjApIHNpemUgNjB4NjAgW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29s
b3I9IzAwRkYwMF19XSBbeD0yNS4wMF0gW3k9MjUuMDBdIFt3aWR0aD01MC4wMF0gW2hlaWdodD01
MC4wMF0KKyAgICAgIFtmaWx0ZXI9ImFyaXRobWV0aWMiXSBSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ciB7ZmlsdGVyfSBhdCAoMjAsMjApIHNpemUgNjB4NjAKKyAgICBSZW5kZXJTVkdSZWN0IHtyZWN0
fSBhdCAoMTI0LDI0KSBzaXplIDUyeDUyIFtzdHJva2U9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAw
RkYwMF19XSBbeD0xMjUuMDBdIFt5PTI1LjAwXSBbd2lkdGg9NTAuMDBdIFtoZWlnaHQ9NTAuMDBd
CisgICAgUmVuZGVyU1ZHUmVjdCB7cmVjdH0gYXQgKDEyMCwyMCkgc2l6ZSA2MHg2MCBbZmlsbD17
W3R5cGU9U09MSURdIFtjb2xvcj0jMDBGRjAwXX1dIFt4PTEyNS4wMF0gW3k9MjUuMDBdIFt3aWR0
aD01MC4wMF0gW2hlaWdodD01MC4wMF0KKyAgICAgIFtmaWx0ZXI9Inplcm8tYWxwaGEiXSBSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlciB7ZmlsdGVyfSBhdCAoMTIwLDIwKSBzaXplIDYweDYwCkluZGV4
OiBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS1hcml0aG1ldGljLWludmFsaWQt
cmdiYS5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVDb21wb3Np
dGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEuc3ZnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEuc3ZnCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMzIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdp
ZHRoPSIyMDAiIGhlaWdodD0iMTAwIiBzdHlsZT0iYmFja2dyb3VuZDp3aGl0ZTsiPgorICAgIDxk
ZWZzPgorICAgICAgICA8IS0tIFRoaXMgZmlsdGVyIHByb2R1Y2VzIHJlc3VsdHMgdGhhdCBhcmUg
aW52YWxpZCBwcmUtbXVsdGlwbGllZCByZ2JhIHBpeGVscy4gU3BlY2lmaWNhbGx5LCBhZnRlciB0
aGUgNHRoIHN0ZXAgYW4gLS0+CisgICAgICAgIDwhLS0gaW50ZXJpb3IgcGl4ZWwgd2lsbCBjb250
YWluICgwLCAwLjgsIDAsIDAuNSkgd2hpY2ggaXMgaW52YWxpZCBiZWNhdXNlIGcgPiBhLiBXaGVu
IHVzZWQgaW4gb3RoZXIgb3BlcmF0aW9ucyAgICAtLT4KKyAgICAgICAgPCEtLSB0aGlzIG1heSBn
ZW5lcmF0ZSBiYWQgcmVzdWx0cyBidXQgd2Ugb25seSB3YW50IHRvIGNsYW1wIHRoZSB2YWx1ZXMg
d2hlbiBwYXNzZWQgb24gdG8gb3RoZXIgb3BlcmF0aW9ucywgbm90ICAgIC0tPgorICAgICAgICA8
IS0tIGZvciBpbnRlcm1lZGlhdGUgYXJpdGhtZXRpYyByZXN1bHRzLiAtLT4KKyAgICAgICAgPGZp
bHRlciBpZD0iYXJpdGhtZXRpYyI+CisgICAgICAgICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9
ImFyaXRobWV0aWMiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9IlNvdXJjZUdyYXBoaWMiIGsxPSIw
IiBrMj0iMC4yIiBrMz0iMCIgazQ9IjAiIHJlc3VsdD0icmdiYTAyIiAvPgorICAgICAgICAgICAg
PGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJhcml0aG1ldGljIiBpbj0iU291cmNlQWxwaGEiIGluMj0i
U291cmNlQWxwaGEiIGsxPSIwIiBrMj0iMC4zIiBrMz0iMCIgazQ9IjAiIHJlc3VsdD0iYWxwaGEw
NSIgLz4KKyAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgaW49
InJnYmEwMiIgaW4yPSJhbHBoYTA1IiBrMT0iMCIgazI9IjEiIGszPSIxIiBrND0iMCIgcmVzdWx0
PSJ0bXAiIC8+CisgICAgICAgICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImFyaXRobWV0aWMi
IGluPSJTb3VyY2VHcmFwaGljIiBpbjI9InRtcCIgazE9IjAiIGsyPSIxIiBrMz0iLTEiIGs0PSIw
IiAvPgorICAgICAgICAgICAgPGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJhcml0aG1ldGljIiBpbj0i
dG1wIiBrMT0iMCIgazI9IjEiIGszPSIxIiBrND0iMCIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisK
KyAgICAgICAgPCEtLSBUaGlzIGZpbHRlciB3aWxsIHByb2R1Y2UgaW1hZ2VzIHdpdGggemVybyBh
bHBoYSBidXQgbm9uLXplcm8gY29sb3IgY29tcG9uZW50cy4gLS0+CisgICAgICAgIDxmaWx0ZXIg
aWQ9Inplcm8tYWxwaGEiPgorICAgICAgICAgICAgPGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJhcml0
aG1ldGljIiBpbj0iU291cmNlQWxwaGEiIGluMj0iU291cmNlQWxwaGEiIGsxPSIwIiBrMj0iMS4w
IiBrMz0iMCIgazQ9IjAiIHJlc3VsdD0iYWxwaGEiIC8+CisgICAgICAgICAgICA8ZmVDb21wb3Np
dGUgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9ImFscGhhIiBr
MT0iMCIgazI9IjEuMCIgazM9Ii0xLjAiIGs0PSIwIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKyAg
ICA8L2RlZnM+CisKKyAgICA8IS0tIEJhY2tncm91bmQgZm9yIGNvbG9yIGNvbXBhcmlzb24uIFRo
ZSBib3JkZXIgb2YgdGhlIGZpbmFsIHJlY3RhbmdsZSBzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhl
IGludGVyaW9yIGNvbG9yLiAtLT4KKyAgICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIg
aGVpZ2h0PSI2MCIgZmlsbD0icmdiYSgwLDI1NSwwLDEpIiAvPgorCisgICAgPCEtLSBUaGUgY29u
dGVudCBvZiBpbnRlcmVzdCAtLT4KKyAgICA8cmVjdCBmaWx0ZXI9InVybCgjYXJpdGhtZXRpYyki
IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBmaWxsPSJyZ2JhKDAsMjU1LDAs
MSkiIHN0cm9rZT0ibm9uZSIgLz4KKworICAgIDwhLS0gQm9yZGVyIHRvIHNob3cgZXhwZWN0ZWQg
bm9uLWRyYXdpbmcgYXJlYS4gLS0+CisgICAgPHJlY3QgeD0iMTI1IiB5PSIyNSIgd2lkdGg9IjUw
IiBoZWlnaHQ9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9InJnYigwLDI1NSwwKSIgLz4KKworICAg
IDwhLS0gVGhpcyBzaG91bGQgcHJvZHVjZSBub3RoaW5nLCBhbmQgbm90IGNhdXNlIGEgY3Jhc2gu
IC0tPgorICAgIDxyZWN0IGZpbHRlcj0idXJsKCN6ZXJvLWFscGhhKSIgeD0iMTI1IiB5PSIyNSIg
d2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBmaWxsPSJyZ2JhKDAsMjU1LDAsMSkiIHN0cm9rZT0ibm9u
ZSIgLz4KKzwvc3ZnPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUt
YXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEtZXhwZWN0ZWQucG5nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRp
c3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFn
ZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlQ29t
cG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLWV4cGVjdGVkLnBuZwpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46bWltZS10eXBlCiAgICsgaW1hZ2UvcG5nCgoKaVZCT1J3MEtHZ29BQUFBTlNVaEVV
Z0FBQXlBQUFBSllDQUlBQUFBVkZCVW5BQUFBS1hSRldIUmphR1ZqYTNOMWJRQTRZbUppTWpKawpO
VEF5WW1RMk9EaGxNMlJoWW1VNFpHRmtOVFEyTTJObU9LbWJ2L2NBQUFzcFNVUkJWSGljN2R0QlRz
TXdBRVZCQjNFdnVGbmRrMUZPClp0WUlWdTBUcnNLTXNvMzAyOVdUNVJ4cnJRRUFRT2RsOXdBQWdM
TVJXQUFBTVlFRkFCQVRXQUFBTVlFRkFCQVRXQUFBTVlFRkFCQVQKV0FBQU1ZRUZBQkFUV0FBQU1Z
RUZBQkFUV0FBQU1ZRUZBQkFUV0FBQU1ZRUZBQkFUV0FBQU1ZRUZBQkFUV0FBQU1ZRUZBQkI3ZmVU
bApZeHpWamorenh0bzlBUUE0T1NkWUFBQXhnUVVBRUJOWUFBQ3hoKzVnY2JlNTV1NEp2NWpIM0Qw
QkFNNGdQY0ZhVC9rOG43bm14L2hZCll6M1ZjeHUzeTdycy9tOEE0QXljWU8zeFB0NnZ4M1gzaW0v
bW1qNnhCSUNFTzFnQUFER0JCUUFRRTFnQUFER0JCUUFRRTFnQUFER0IKQlFBUUUxZ0FBREdCQlFB
UUUxZ0FBREdCQlFBUUUxZ0FBREdCQlFBUUUxZ0FBREdCQlFBUUUxZ0FBREdCQlFBUUUxZ0FBREdC
QlFBUQpFMWdBQURHQkJRQVFFMWdBQURHQkJRQVFFMWdBQURHQkJRQVFFMWdBQURHQkJRQVFFMWdB
QURHQkJRQVFFMWdBQURHQkJRQVFFMWdBCkFER0JCUUFRRTFnQUFER0JCUUFRRTFnQUFER0JCUUFR
RTFnQUFER0JCUUFRRTFnQUFER0JCUUFRRTFnQUFER0JCUUFRRTFnQUFER0IKQlFBUUUxZ0FBREdC
QlFBUUUxZ0FBTEhYM1FQK3FjL3hPZGZjdmVLYjI3aTlqYmZkS3dEZ0RJNjExdjB2anlPYzhqZld1
UC8zaGk3cgpzbnZDTDY3SGRmY0VBRGdEZ1FVQUVITUhDd0FnSnJBQUFHSUNDd0FnOXRCWGhPNHpB
UUQ4NUFRTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxB
Q0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZ
Z0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNB
QUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFD
QW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVln
SUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNB
QUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNB
bXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJ
TEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FB
QVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNB
bXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lM
QUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFB
WWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ft
c0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwK
QUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZ
Z0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1z
QUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxB
Q0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVln
SUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNB
QUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFD
QW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVln
SUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FB
QVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNB
bXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJ
TEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FB
QVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ft
c0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lM
QUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFB
WWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ft
c0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxB
Q0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZ
Z0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1z
QUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxB
Q0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVln
SUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNB
QUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFD
QW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBClln
SUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FB
QVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNB
bXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJ
TEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFB
CllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ft
c0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lM
QUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFB
WWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1z
QUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxB
Q0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZ
Z0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1z
QUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFD
QW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVln
SUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNB
QUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFD
QW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJ
TEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FB
QVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNB
bXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNEMkJlSTZ2eFF1OTF0bkFBQUFBRWxGVGtTdQpRbUNDCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129963</attachid>
            <date>2012-03-02 15:06:47 -0800</date>
            <delta_ts>2012-03-05 09:01:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77245-20120302180646.patch</filename>
            <type>text/plain</type>
            <size>17594</size>
            <attacher name="Stephen Chenney">schenney</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAzLTAyICBTdGVwaGVu
IENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBT
VkcgQ29tcG9zaXRlIG9mIE9mZnNldCBjcmFzaGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzI0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBmZUNvbXBvc2l0ZSBhcml0aG1ldGljIG1vZGUgZmls
dGVyIGNvdWxkIHJlYWRpbHkgYmUgbWFkZSB0bworICAgICAgICBnZW5lcmF0ZSBpbnZhbGlkIHBy
ZS1tdWx0aXBsaWVkIHBpeGVsIHZhbHVlcyB3aGljaCB3b3VsZCB0aGVuIGdvIG9uIHRvCisgICAg
ICAgIHBvbGx1dGUgb3RoZXIgZmlsdGVycyBhbmQgY2F1c2UgaW52YWxpZCBmaW5hbCBvdXRwdXQg
cGl4ZWxzLiBUaGlzCisgICAgICAgIHBhdGNoIGNoZWNrcyBmb3IgZmlsdGVycyB0aGF0IHJlcXVp
cmUgdmFsaWQgaW5wdXRzLCBhbmQgY2hlY2tzIHRoYXQgYQorICAgICAgICByZXN1bHQgaXMgdmFs
aWQsIGFuZCBjb3JyZWN0cyB0aGUgcmVzdWx0IGlmIG5lY2Vzc2FyeS4gVGhpcyBtYXRjaGVzCisg
ICAgICAgIHRoZSBiZWhhdmlvciBvZiBGRiBhbmQgT3BlcmEgd2hpbGUgcHJldmVudGluZyBjcmFz
aGVzIG9yIG90aGVyCisgICAgICAgIHVuZGVzaXJhYmxlIGJlaGF2aW9yLgorCisgICAgICAgIFRl
c3Q6IHN2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLnN2Zwor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oOiBPdmVy
cmlkZSB0aGUgZGVmYXVsdCB2YWxpZGl0eSBjaGVja3MKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3Q6OmFwcGx5KTogQ2hlY2sgZm9yIHZhbGlkaXR5IHN0YXR1cyBhbmQgY29ycmVjdAorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpmb3JjZVZhbGlkUHJlTXVsUkdCQSk6IE1ha2Ug
YW4gaW1hZ2UgdmFsaWQKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmg6IE5ldyB2aXJ0dWFsIG1ldGhvZHMgZm9yIGlt
YWdlIHZhbGlkaXR5LgorICAgICAgICAoRmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdDo6cmVxdWlyZXNWYWxpZFByZU11bFJHQkEpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyRWZmZWN0Ojppc0ludmFsaWRQcmVNdWxSR0JBKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6IENoZWNrIHRoYXQgdGhl
IGZpbmFsIGZpbHRlciByZXN1bHQgaXMgdmFsaWQKKwogMjAxMi0wMy0wMiAgU3JhdmFuS3VtYXIg
U2FuZGVsYSAgPHNzYW5kZWxhQGlubm9taW5kcy5jb20+CiAKICAgICAgICAgTGF5b3V0IGlzc3Vl
IHdpdGggZmllbGRzZXQgbGVnZW5kIGVsZW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgJKHJldmlzaW9u
IDEwOTYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb3NpdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksOCBAQCBwdWJsaWM6CiAgICAg
ZmxvYXQgazQoKSBjb25zdDsKICAgICBib29sIHNldEs0KGZsb2F0KTsKIAorICAgIHZpcnR1YWwg
Ym9vbCByZXF1aXJlc1ZhbGlkUHJlTXVsUkdCQSgpIE9WRVJSSURFIHsgcmV0dXJuIG1fdHlwZSAh
PSBGRUNPTVBPU0lURV9PUEVSQVRPUl9BUklUSE1FVElDOyB9CisgICAgdmlydHVhbCBib29sIGlz
SW52YWxpZFByZU11bFJHQkEoKSBPVkVSUklERSB7IHJldHVybiBtX3R5cGUgPT0gRkVDT01QT1NJ
VEVfT1BFUkFUT1JfQVJJVEhNRVRJQzsgfQogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogICAgIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcAkocmV2aXNpb24gMTA5NjE4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2
ICs5NCw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0OjphcHBseSgpCiB7CiAgICAgaWYgKGhhc1Jlc3Vs
dCgpKQogICAgICAgICByZXR1cm47CisKICAgICB1bnNpZ25lZCBzaXplID0gbV9pbnB1dEVmZmVj
dHMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAg
ICAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IG1faW5wdXRFZmZlY3RzLmF0KGkpLmdldCgpOwpAQCAt
MTAyLDYgKzEwMywxNCBAQCB2b2lkIEZpbHRlckVmZmVjdDo6YXBwbHkoKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpOworCisgICAg
aWYgKHJlcXVpcmVzVmFsaWRQcmVNdWxSR0JBKCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IG1f
aW5wdXRFZmZlY3RzLmF0KGkpLmdldCgpOworICAgICAgICAgICAgaWYgKGluLT5pc0ludmFsaWRQ
cmVNdWxSR0JBKCkpCisgICAgICAgICAgICAgICAgaW4tPmZvcmNlVmFsaWRQcmVNdWxSR0JBKCk7
CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgLy8gQWRkIHBsYXRmb3JtIHNwZWNpZmljIGFw
cGx5IGZ1bmN0aW9ucyBoZXJlIGFuZCByZXR1cm4gZWFybGllci4KICNpZiBVU0UoU0tJQSkKQEAg
LTExMSw2ICsxMjAsMjggQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmFwcGx5KCkKICAgICBwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKTsKIH0KIAordm9pZCBGaWx0ZXJFZmZlY3Q6OmZvcmNlVmFsaWRQcmVN
dWxSR0JBKCkKK3sKKyAgICBpZiAoIW1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KQorICAgICAg
ICByZXR1cm47CisKKyAgICBCeXRlQXJyYXkqIGltYWdlQXJyYXkgPSBtX3ByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdC5nZXQoKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBwaXhlbERhdGEgPSBpbWFnZUFy
cmF5LT5kYXRhKCk7CisgICAgaW50IHBpeGVsQXJyYXlMZW5ndGggPSBpbWFnZUFycmF5LT5sZW5n
dGgoKTsKKworICAgIEFTU0VSVCghKHBpeGVsQXJyYXlMZW5ndGggJSA0KSk7CisgICAgaW50IG51
bVBpeGVscyA9IHBpeGVsQXJyYXlMZW5ndGggLyA0OworICAgIHdoaWxlICgtLW51bVBpeGVscyA+
PSAwKSB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYSA9ICoocGl4ZWxEYXRhICsgMyk7CisgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgICAgICAgICBpZiAoKnBpeGVs
RGF0YSA+IGEpCisgICAgICAgICAgICAgICAgKnBpeGVsRGF0YSA9IGE7CisgICAgICAgICAgICAr
K3BpeGVsRGF0YTsKKyAgICAgICAgfQorICAgICAgICArK3BpeGVsRGF0YTsKKyAgICB9Cit9CisK
IHZvaWQgRmlsdGVyRWZmZWN0OjpjbGVhclJlc3VsdCgpCiB7CiAgICAgaWYgKG1faW1hZ2VCdWZm
ZXJSZXN1bHQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJKHJldmlzaW9uIDEwOTYxOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTg2LDYgKzg2LDE2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoKTsK
ICAgICAKKyAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgZmlsdGVyIHdpbGwgb25seSBvcGVyYXRl
IGNvcnJlY3RseSBvbiB2YWxpZCBSR0JBIHZhbHVlcywgd2l0aAorICAgIC8vIGFscGhhIGluIFsw
LDI1NV0gYW5kIGVhY2ggY29sb3IgY29tcG9uZW50IGluIFswLCBhbHBoYV0uCisgICAgdmlydHVh
bCBib29sIHJlcXVpcmVzVmFsaWRQcmVNdWxSR0JBKCkgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAg
Ly8gUmV0dXJuIHRydWUgaWYgdGhlIHJlc3VsdCB3ZSBoYXZlIGlzIHByZS1tdWx0aXBsZWQgYW5k
IGludmFsaWQsIG9yIG1pZ2h0IGJlLgorICAgIHZpcnR1YWwgYm9vbCBpc0ludmFsaWRQcmVNdWxS
R0JBKCkgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIC8vIFZhbGlkYXRlIHRoZSByZXN1bHQgaWYg
aXQgaXMgYSBwcmUtbXVsdGlwbGllZCByZ2JhIGltYWdlLgorICAgIHZvaWQgZm9yY2VWYWxpZFBy
ZU11bFJHQkEoKTsKKwogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSA9
IDA7CiAjaWYgVVNFKFNLSUEpCiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQXBwbHlTa2lhKCkg
eyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCShyZXZpc2lvbiAxMDk2MTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDYgKzMwMCw4IEBAIHZvaWQgUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXI6OnBvc3RBcHBseVIKICAgICAgICAgLy8gQWx3YXlzIHRydWUgaWYgZmlsdGVy
RGF0YSBpcyBqdXN0IGJ1aWx0IChmaWx0ZXJEYXRhLT5idWlsZGVkIGlzIGZhbHNlKS4KICAgICAg
ICAgaWYgKCFsYXN0RWZmZWN0LT5oYXNSZXN1bHQoKSkgewogICAgICAgICAgICAgbGFzdEVmZmVj
dC0+YXBwbHkoKTsKKyAgICAgICAgICAgIGlmIChsYXN0RWZmZWN0LT5pc0ludmFsaWRQcmVNdWxS
R0JBKCkpCisgICAgICAgICAgICAgICAgbGFzdEVmZmVjdC0+Zm9yY2VWYWxpZFByZU11bFJHQkEo
KTsKICNpZiAhVVNFKENHKQogICAgICAgICAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0g
bGFzdEVmZmVjdC0+YXNJbWFnZUJ1ZmZlcigpOwogICAgICAgICAgICAgaWYgKHJlc3VsdEltYWdl
KQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gMTA5NjE4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDMtMDIgIFN0ZXBoZW4gQ2hlbm5l
eSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFNWRyBDb21w
b3NpdGUgb2YgT2Zmc2V0IGNyYXNoZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc3MjQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIGZlQ29tcG9zaXRlIGFyaXRobWV0aWMgbW9kZSBmaWx0ZXIgY291
bGQgcmVhZGlseSBiZSBtYWRlIHRvCisgICAgICAgIGdlbmVyYXRlIGludmFsaWQgcHJlLW11bHRp
cGxpZWQgcGl4ZWwgdmFsdWVzIHdoaWNoIHdvdWxkIHRoZW4gZ28gb24gdG8KKyAgICAgICAgcG9s
bHV0ZSBvdGhlciBmaWx0ZXJzIGFuZCBjYXVzZSBpbnZhbGlkIGZpbmFsIG91dHB1dCBwaXhlbHMu
IFRoaXMKKyAgICAgICAgcGF0Y2ggY2hlY2tzIGZvciBmaWx0ZXJzIHRoYXQgcmVxdWlyZSB2YWxp
ZCBpbnB1dHMsIGFuZCBjaGVja3MgdGhhdCBhCisgICAgICAgIHJlc3VsdCBpcyB2YWxpZCwgYW5k
IGNvcnJlY3RzIHRoZSByZXN1bHQgaWYgbmVjZXNzYXJ5LiBUaGlzIG1hdGNoZXMKKyAgICAgICAg
dGhlIGJlaGF2aW9yIG9mIEZGIGFuZCBPcGVyYSB3aGlsZSBwcmV2ZW50aW5nIGNyYXNoZXMgb3Ig
b3RoZXIKKyAgICAgICAgdW5kZXNpcmFibGUgYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisgICAgICAgICogc3ZnL2ZpbHRlcnMv
ZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEtZXhwZWN0ZWQucG5nOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS1hcml0aG1ldGljLWludmFsaWQtcmdi
YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRl
LWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLnN2ZzogQWRkZWQuCisKIDIwMTItMDMtMDIgIFNoZXJp
ZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxMDk2MDIuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CShyZXZpc2lvbiAxMDk2MTgpCisr
KyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTkzOSw2ICs5MzksOSBAQCBCVUdXSzc3OTAzIE1BQyA6IHN2Zy9yZXBh
aW50L2lubmVyLXN2Zy1jCiAvLyBOZXcgdGVzdCwgbmVlZHMgYSByZWJhc2VsaW5lCiBCVUdXSzc4
NjMxIDogc3ZnL2RvbS9TVkdMb2NhdGFibGUtZ2V0Q1RNLXN2Zy1yb290Lmh0bWwgPSBJTUFHRQog
CisvLyBUaGlzIGlzIGEgbmV3IHRlc3QgdGhhdCB3aWxsIGxpa2VseSBmYWlsCitCVUdXSzc3MjQ1
IDogc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEuc3ZnID0g
UEFTUyBGQUlMCisKIC8vIE5lZWQgcmViYXNlbGluaW5nIGFmdGVyIGJ1ZyA2NDU5MQogQlVHV0s2
NDU5MSA6IGNvbXBvc2l0aW5nL3JlcGFpbnQvYmVjb21lLW92ZXJsYXktY29tcG9zaXRlZC1sYXll
ci5odG1sID0gUEFTUyBGQUlMCiAKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlQ29t
cG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS1hcml0aG1ldGljLWludmFsaWQt
cmdiYS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZmlsdGVy
cy9mZUNvbXBvc2l0ZS1hcml0aG1ldGljLWludmFsaWQtcmdiYS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBS
ZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSAyMDB4
MTAwCisgIFJlbmRlclNWR1Jvb3Qge3N2Z30gYXQgKDIwLDIwKSBzaXplIDE2MHg2MAorICAgIFJl
bmRlclNWR0hpZGRlbkNvbnRhaW5lciB7ZGVmc30gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyIHtmaWx0ZXJ9IFtpZD0iYXJpdGhtZXRpYyJdIFtmaWx0ZXJV
bml0cz1vYmplY3RCb3VuZGluZ0JveF0gW3ByaW1pdGl2ZVVuaXRzPXVzZXJTcGFjZU9uVXNlXQor
ICAgICAgICBbZmVDb21wb3NpdGUgb3BlcmF0aW9uPSJBUklUSE1FVElDIiBrMT0iMC4wMCIgazI9
IjEuMDAiIGszPSIxLjAwIiBrND0iMC4wMCJdCisgICAgICAgICAgW2ZlQ29tcG9zaXRlIG9wZXJh
dGlvbj0iQVJJVEhNRVRJQyIgazE9IjAuMDAiIGsyPSIxLjAwIiBrMz0iMS4wMCIgazQ9IjAuMDAi
XQorICAgICAgICAgICAgW2ZlQ29tcG9zaXRlIG9wZXJhdGlvbj0iQVJJVEhNRVRJQyIgazE9IjAu
MDAiIGsyPSIwLjIwIiBrMz0iMC4wMCIgazQ9IjAuMDAiXQorICAgICAgICAgICAgICBbU291cmNl
R3JhcGhpY10KKyAgICAgICAgICAgICAgW1NvdXJjZUdyYXBoaWNdCisgICAgICAgICAgICBbZmVD
b21wb3NpdGUgb3BlcmF0aW9uPSJBUklUSE1FVElDIiBrMT0iMC4wMCIgazI9IjAuMzAiIGszPSIw
LjAwIiBrND0iMC4wMCJdCisgICAgICAgICAgICAgIFtTb3VyY2VBbHBoYV0KKyAgICAgICAgICAg
ICAgW1NvdXJjZUFscGhhXQorICAgICAgICAgIFtmZUNvbXBvc2l0ZSBvcGVyYXRpb249IkFSSVRI
TUVUSUMiIGsxPSIwLjAwIiBrMj0iMS4wMCIgazM9Ii0xLjAwIiBrND0iMC4wMCJdCisgICAgICAg
ICAgICBbU291cmNlR3JhcGhpY10KKyAgICAgICAgICAgIFtmZUNvbXBvc2l0ZSBvcGVyYXRpb249
IkFSSVRITUVUSUMiIGsxPSIwLjAwIiBrMj0iMS4wMCIgazM9IjEuMDAiIGs0PSIwLjAwIl0KKyAg
ICAgICAgICAgICAgW2ZlQ29tcG9zaXRlIG9wZXJhdGlvbj0iQVJJVEhNRVRJQyIgazE9IjAuMDAi
IGsyPSIwLjIwIiBrMz0iMC4wMCIgazQ9IjAuMDAiXQorICAgICAgICAgICAgICAgIFtTb3VyY2VH
cmFwaGljXQorICAgICAgICAgICAgICAgIFtTb3VyY2VHcmFwaGljXQorICAgICAgICAgICAgICBb
ZmVDb21wb3NpdGUgb3BlcmF0aW9uPSJBUklUSE1FVElDIiBrMT0iMC4wMCIgazI9IjAuMzAiIGsz
PSIwLjAwIiBrND0iMC4wMCJdCisgICAgICAgICAgICAgICAgW1NvdXJjZUFscGhhXQorICAgICAg
ICAgICAgICAgIFtTb3VyY2VBbHBoYV0KKyAgICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyIHtm
aWx0ZXJ9IFtpZD0iemVyby1hbHBoYSJdIFtmaWx0ZXJVbml0cz1vYmplY3RCb3VuZGluZ0JveF0g
W3ByaW1pdGl2ZVVuaXRzPXVzZXJTcGFjZU9uVXNlXQorICAgICAgICBbZmVDb21wb3NpdGUgb3Bl
cmF0aW9uPSJBUklUSE1FVElDIiBrMT0iMC4wMCIgazI9IjEuMDAiIGszPSItMS4wMCIgazQ9IjAu
MDAiXQorICAgICAgICAgIFtTb3VyY2VHcmFwaGljXQorICAgICAgICAgIFtmZUNvbXBvc2l0ZSBv
cGVyYXRpb249IkFSSVRITUVUSUMiIGsxPSIwLjAwIiBrMj0iMS4wMCIgazM9IjAuMDAiIGs0PSIw
LjAwIl0KKyAgICAgICAgICAgIFtTb3VyY2VBbHBoYV0KKyAgICAgICAgICAgIFtTb3VyY2VBbHBo
YV0KKyAgICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBhdCAoMjAsMjApIHNpemUgNjB4NjAgW2ZpbGw9
e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwRkYwMF19XSBbeD0yMC4wMF0gW3k9MjAuMDBdIFt3aWR0
aD02MC4wMF0gW2hlaWdodD02MC4wMF0KKyAgICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBhdCAoMjAs
MjApIHNpemUgNjB4NjAgW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwRkYwMF19XSBbeD0y
NS4wMF0gW3k9MjUuMDBdIFt3aWR0aD01MC4wMF0gW2hlaWdodD01MC4wMF0KKyAgICAgIFtmaWx0
ZXI9ImFyaXRobWV0aWMiXSBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciB7ZmlsdGVyfSBhdCAoMjAs
MjApIHNpemUgNjB4NjAKKyAgICBSZW5kZXJTVkdSZWN0IHtyZWN0fSBhdCAoMTI0LDI0KSBzaXpl
IDUyeDUyIFtzdHJva2U9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwRkYwMF19XSBbeD0xMjUuMDBd
IFt5PTI1LjAwXSBbd2lkdGg9NTAuMDBdIFtoZWlnaHQ9NTAuMDBdCisgICAgUmVuZGVyU1ZHUmVj
dCB7cmVjdH0gYXQgKDEyMCwyMCkgc2l6ZSA2MHg2MCBbZmlsbD17W3R5cGU9U09MSURdIFtjb2xv
cj0jMDBGRjAwXX1dIFt4PTEyNS4wMF0gW3k9MjUuMDBdIFt3aWR0aD01MC4wMF0gW2hlaWdodD01
MC4wMF0KKyAgICAgIFtmaWx0ZXI9Inplcm8tYWxwaGEiXSBSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ciB7ZmlsdGVyfSBhdCAoMTIwLDIwKSBzaXplIDYweDYwCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcv
ZmlsdGVycy9mZUNvbXBvc2l0ZS1hcml0aG1ldGljLWludmFsaWQtcmdiYS5zdmcKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZh
bGlkLXJnYmEuc3ZnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVD
b21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEuc3ZnCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDMzIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6
eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIyMDAiIGhlaWdodD0i
MTAwIiBzdHlsZT0iYmFja2dyb3VuZDp3aGl0ZTsiPgorICAgIDxkZWZzPgorICAgICAgICA8IS0t
IFRoaXMgZmlsdGVyIHByb2R1Y2VzIHJlc3VsdHMgdGhhdCBhcmUgaW52YWxpZCBwcmUtbXVsdGlw
bGllZCByZ2JhIHBpeGVscy4gU3BlY2lmaWNhbGx5LCBhZnRlciB0aGUgNHRoIHN0ZXAgYW4gLS0+
CisgICAgICAgIDwhLS0gaW50ZXJpb3IgcGl4ZWwgd2lsbCBjb250YWluICgwLCAwLjgsIDAsIDAu
NSkgd2hpY2ggaXMgaW52YWxpZCBiZWNhdXNlIGcgPiBhLiBXaGVuIHVzZWQgaW4gb3RoZXIgb3Bl
cmF0aW9ucyAgICAtLT4KKyAgICAgICAgPCEtLSB0aGlzIG1heSBnZW5lcmF0ZSBiYWQgcmVzdWx0
cyBidXQgd2Ugb25seSB3YW50IHRvIGNsYW1wIHRoZSB2YWx1ZXMgd2hlbiBwYXNzZWQgb24gdG8g
b3RoZXIgb3BlcmF0aW9ucywgbm90ICAgIC0tPgorICAgICAgICA8IS0tIGZvciBpbnRlcm1lZGlh
dGUgYXJpdGhtZXRpYyByZXN1bHRzLiAtLT4KKyAgICAgICAgPGZpbHRlciBpZD0iYXJpdGhtZXRp
YyI+CisgICAgICAgICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGluPSJT
b3VyY2VHcmFwaGljIiBpbjI9IlNvdXJjZUdyYXBoaWMiIGsxPSIwIiBrMj0iMC4yIiBrMz0iMCIg
azQ9IjAiIHJlc3VsdD0icmdiYTAyIiAvPgorICAgICAgICAgICAgPGZlQ29tcG9zaXRlIG9wZXJh
dG9yPSJhcml0aG1ldGljIiBpbj0iU291cmNlQWxwaGEiIGluMj0iU291cmNlQWxwaGEiIGsxPSIw
IiBrMj0iMC4zIiBrMz0iMCIgazQ9IjAiIHJlc3VsdD0iYWxwaGEwNSIgLz4KKyAgICAgICAgICAg
IDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgaW49InJnYmEwMiIgaW4yPSJhbHBo
YTA1IiBrMT0iMCIgazI9IjEiIGszPSIxIiBrND0iMCIgcmVzdWx0PSJ0bXAiIC8+CisgICAgICAg
ICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGluPSJTb3VyY2VHcmFwaGlj
IiBpbjI9InRtcCIgazE9IjAiIGsyPSIxIiBrMz0iLTEiIGs0PSIwIiAvPgorICAgICAgICAgICAg
PGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJhcml0aG1ldGljIiBpbj0idG1wIiBrMT0iMCIgazI9IjEi
IGszPSIxIiBrND0iMCIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPCEtLSBUaGlz
IGZpbHRlciB3aWxsIHByb2R1Y2UgaW1hZ2VzIHdpdGggemVybyBhbHBoYSBidXQgbm9uLXplcm8g
Y29sb3IgY29tcG9uZW50cy4gLS0+CisgICAgICAgIDxmaWx0ZXIgaWQ9Inplcm8tYWxwaGEiPgor
ICAgICAgICAgICAgPGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJhcml0aG1ldGljIiBpbj0iU291cmNl
QWxwaGEiIGluMj0iU291cmNlQWxwaGEiIGsxPSIwIiBrMj0iMS4wIiBrMz0iMCIgazQ9IjAiIHJl
c3VsdD0iYWxwaGEiIC8+CisgICAgICAgICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImFyaXRo
bWV0aWMiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9ImFscGhhIiBrMT0iMCIgazI9IjEuMCIgazM9
Ii0xLjAiIGs0PSIwIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKyAgICA8L2RlZnM+CisKKyAgICA8
IS0tIEJhY2tncm91bmQgZm9yIGNvbG9yIGNvbXBhcmlzb24uIFRoZSBib3JkZXIgb2YgdGhlIGZp
bmFsIHJlY3RhbmdsZSBzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhlIGludGVyaW9yIGNvbG9yLiAt
LT4KKyAgICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgZmlsbD0i
cmdiYSgwLDI1NSwwLDEpIiAvPgorCisgICAgPCEtLSBUaGUgY29udGVudCBvZiBpbnRlcmVzdCAt
LT4KKyAgICA8cmVjdCBmaWx0ZXI9InVybCgjYXJpdGhtZXRpYykiIHg9IjI1IiB5PSIyNSIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBmaWxsPSJyZ2JhKDAsMjU1LDAsMSkiIHN0cm9rZT0ibm9uZSIg
Lz4KKworICAgIDwhLS0gQm9yZGVyIHRvIHNob3cgZXhwZWN0ZWQgbm9uLWRyYXdpbmcgYXJlYS4g
LS0+CisgICAgPHJlY3QgeD0iMTI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBmaWxs
PSJub25lIiBzdHJva2U9InJnYigwLDI1NSwwKSIgLz4KKworICAgIDwhLS0gVGhpcyBzaG91bGQg
cHJvZHVjZSBub3RoaW5nLCBhbmQgbm90IGNhdXNlIGEgY3Jhc2guIC0tPgorICAgIDxyZWN0IGZp
bHRlcj0idXJsKCN6ZXJvLWFscGhhKSIgeD0iMTI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9
IjUwIiBmaWxsPSJyZ2JhKDAsMjU1LDAsMSkiIHN0cm9rZT0ibm9uZSIgLz4KKzwvc3ZnPgpJbmRl
eDogTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlk
LXJnYmEtZXhwZWN0ZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2Vk
IGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNo
YW5nZXMgb246IExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMt
aW52YWxpZC1yZ2JhLWV4cGVjdGVkLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBl
CiAgICsgaW1hZ2UvcG5nCgoKaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQXlBQUFBSllDQUlBQUFB
VkZCVW5BQUFBS1hSRldIUmphR1ZqYTNOMWJRQTRZbUppTWpKawpOVEF5WW1RMk9EaGxNMlJoWW1V
NFpHRmtOVFEyTTJObU9LbWJ2L2NBQUFzcFNVUkJWSGljN2R0QlRzTXdBRVZCQjNFdnVGbmRrMUZP
Clp0WUlWdTBUcnNLTXNvMzAyOVdUNVJ4cnJRRUFRT2RsOXdBQWdMTVJXQUFBTVlFRkFCQVRXQUFB
TVlFRkFCQVRXQUFBTVlFRkFCQVQKV0FBQU1ZRUZBQkFUV0FBQU1ZRUZBQkFUV0FBQU1ZRUZBQkFU
V0FBQU1ZRUZBQkFUV0FBQU1ZRUZBQkFUV0FBQU1ZRUZBQkI3ZmVUbApZeHpWamorenh0bzlBUUE0
T1NkWUFBQXhnUVVBRUJOWUFBQ3hoKzVnY2JlNTV1NEp2NWpIM0QwQkFNNGdQY0ZhVC9rOG43bm14
L2hZCll6M1ZjeHUzeTdycy9tOEE0QXljWU8zeFB0NnZ4M1gzaW0vbW1qNnhCSUNFTzFnQUFER0JC
UUFRRTFnQUFER0JCUUFRRTFnQUFER0IKQlFBUUUxZ0FBREdCQlFBUUUxZ0FBREdCQlFBUUUxZ0FB
REdCQlFBUUUxZ0FBREdCQlFBUUUxZ0FBREdCQlFBUUUxZ0FBREdCQlFBUQpFMWdBQURHQkJRQVFF
MWdBQURHQkJRQVFFMWdBQURHQkJRQVFFMWdBQURHQkJRQVFFMWdBQURHQkJRQVFFMWdBQURHQkJR
QVFFMWdBCkFER0JCUUFRRTFnQUFER0JCUUFRRTFnQUFER0JCUUFRRTFnQUFER0JCUUFRRTFnQUFE
R0JCUUFRRTFnQUFER0JCUUFRRTFnQUFER0IKQlFBUUUxZ0FBREdCQlFBUUUxZ0FBTEhYM1FQK3Fj
L3hPZGZjdmVLYjI3aTlqYmZkS3dEZ0RJNjExdjB2anlPYzhqZld1UC8zaGk3cgpzbnZDTDY3SGRm
Y0VBRGdEZ1FVQUVITUhDd0FnSnJBQUFHSUNDd0FnOXRCWGhPNHpBUUQ4NUFRTEFDQW1zQUFBWWdJ
TEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FB
QVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNB
bXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJ
TEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFB
WWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ft
c0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lM
QUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFB
WWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1z
QUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxB
Q0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZ
Z0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpz
QUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFD
QW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVln
SUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNB
QUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNB
bQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJ
TEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FB
QVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNB
bXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lM
QUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFB
WWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ft
c0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lM
QUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZ
Z0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1z
QUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxB
Q0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNBQUFZ
Z0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNB
QUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFD
QW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVln
SUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNBbXNB
QUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNB
bXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJ
TEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FB
QVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwKQUNB
bXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lM
QUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFB
WWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxBQ0Ft
c0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUwK
QUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZ
Z0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1z
QUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVlnSUxB
Q0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVln
SUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNB
QUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFD
QW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FBQVln
SUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FB
QVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNB
bXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJ
TEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ftc0FB
QVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ft
c0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lM
QUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbQpzQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFB
WWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBWWdJTEFDQW1zQUFBCllnSUxBQ0Ft
c0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxBQ0Ftc0FBQVlnSUxB
Q0Ftc0FBQVlnSUwKQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZZ0lMQUNBbXNBQUFZ
Z0lMQUNEMkJlSTZ2eFF1OTF0bkFBQUFBRWxGVGtTdQpRbUNDCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130146</attachid>
            <date>2012-03-05 09:02:10 -0800</date>
            <delta_ts>2012-03-05 13:30:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77245-20120305120208.patch</filename>
            <type>text/plain</type>
            <size>12448</size>
            <attacher name="Stephen Chenney">schenney</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTc0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTA1ICBTdGVwaGVu
IENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBT
VkcgQ29tcG9zaXRlIG9mIE9mZnNldCBjcmFzaGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzI0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBmZUNvbXBvc2l0ZSBhcml0aG1ldGljIG1vZGUgZmls
dGVyIGNvdWxkIHJlYWRpbHkgYmUgbWFkZSB0bworICAgICAgICBnZW5lcmF0ZSBpbnZhbGlkIHBy
ZS1tdWx0aXBsaWVkIHBpeGVsIHZhbHVlcyB3aGljaCB3b3VsZCB0aGVuIGdvIG9uIHRvCisgICAg
ICAgIHBvbGx1dGUgb3RoZXIgZmlsdGVycyBhbmQgY2F1c2UgaW52YWxpZCBmaW5hbCBvdXRwdXQg
cGl4ZWxzLiBUaGlzCisgICAgICAgIHBhdGNoIGNoZWNrcyBmb3IgZmlsdGVycyB0aGF0IHJlcXVp
cmUgdmFsaWQgaW5wdXRzLCBhbmQgY2hlY2tzIHRoYXQgYQorICAgICAgICByZXN1bHQgaXMgdmFs
aWQsIGFuZCBjb3JyZWN0cyB0aGUgcmVzdWx0IGlmIG5lY2Vzc2FyeS4gVGhpcyBtYXRjaGVzCisg
ICAgICAgIHRoZSBiZWhhdmlvciBvZiBGRiBhbmQgT3BlcmEgd2hpbGUgcHJldmVudGluZyBjcmFz
aGVzIG9yIG90aGVyCisgICAgICAgIHVuZGVzaXJhYmxlIGJlaGF2aW9yLgorCisgICAgICAgIFRl
c3Q6IHN2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLnN2Zwor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oOiBPdmVy
cmlkZSB0aGUgZGVmYXVsdCB2YWxpZGl0eSBjaGVja3MgYW5kIGltYWdlIGNsZWFudXAgbWV0aG9k
cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpjb3JyZWN0RmlsdGVyUmVzdWx0SWZOZWVk
ZWQpOiBGb3JjZSB2YWxpZCBwaXhlbHMgaWYgdGhpcyBpcyBhbiBhcml0aG1ldGljIGZpbHRlcgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXBwbHkpOiBDaGVjayBmb3IgdmFsaWRpdHkg
c3RhdHVzIGFuZCBjb3JyZWN0CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmZvcmNl
VmFsaWRQcmVtdWx0aXBsaWVkUGl4ZWxzKTogTWFrZSBhbiBpbWFnZSB2YWxpZAorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuaDogTmV3IHZpcnR1YWwgbWV0aG9kcyBmb3IgaW1hZ2UgdmFsaWRpdHkuCisgICAgICAgIChG
aWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpyZXF1aXJlc1Zh
bGlkUHJlTXVsdWx0aXBsaWVkUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6Zm9yY2VWYWxpZFByZW11bHRpcGxpZWRQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0Ojpjb3JyZWN0RmlsdGVyUmVzdWx0SWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKTogQ2hlY2sgdGhhdCB0
aGUgZmluYWwgZmlsdGVyIHJlc3VsdCBpcyB2YWxpZAorCiAyMDEyLTAzLTA1ICBSb2IgQnVpcyAg
PHJidWlzQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFVwZGF0ZSBMb2NhbGl6ZWRT
dHJpbmdzQmxhY2tCZXJyeS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCShyZXZpc2lvbiAxMDk3
NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9z
aXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiwxNCBAQCBib29sIEZFQ29tcG9z
aXRlOjpzZXRLNChmbG9hdCBrNCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBGRUNvbXBv
c2l0ZTo6Y29ycmVjdEZpbHRlclJlc3VsdElmTmVlZGVkKCkKK3sKKyAgICBpZiAobV90eXBlICE9
IEZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUMpCisgICAgICAgIHJldHVybjsKKworICAg
IGZvcmNlVmFsaWRQcmVNdWx0aXBsaWVkUGl4ZWxzKCk7Cit9CisKIHRlbXBsYXRlIDxpbnQgYjEs
IGludCBiMiwgaW50IGIzLCBpbnQgYjQ+CiBzdGF0aWMgaW5saW5lIHZvaWQgY29tcHV0ZUFyaXRo
bWV0aWNQaXhlbHModW5zaWduZWQgY2hhciogc291cmNlLCB1bnNpZ25lZCBjaGFyKiBkZXN0aW5h
dGlvbiwgaW50IHBpeGVsQXJyYXlMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9zaXRlLmgJKHJldmlzaW9uIDEwOTc0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTks
OCBAQCBwdWJsaWM6CiAgICAgZmxvYXQgazQoKSBjb25zdDsKICAgICBib29sIHNldEs0KGZsb2F0
KTsKIAorICAgIHZpcnR1YWwgdm9pZCBjb3JyZWN0RmlsdGVyUmVzdWx0SWZOZWVkZWQoKSBPVkVS
UklERTsKKwogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZHVtcCgpOwogICAgIApAQCAtNjYsNiArNjgsOSBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYs
IGludCBpbmRlbnRpb24pIGNvbnN0OwogCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBib29sIHJl
cXVpcmVzVmFsaWRQcmVNdWx0aXBsaWVkUGl4ZWxzKCkgT1ZFUlJJREUgeyByZXR1cm4gbV90eXBl
ICE9IEZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUM7IH0KKwogcHJpdmF0ZToKICAgICBG
RUNvbXBvc2l0ZShGaWx0ZXIqLCBjb25zdCBDb21wb3NpdGVPcGVyYXRpb25UeXBlJiwgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgZmxvYXQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCShyZXZpc2lv
biAxMDk3NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDcgQEAgdm9pZCBGaWx0
ZXJFZmZlY3Q6OmFwcGx5KCkKIHsKICAgICBpZiAoaGFzUmVzdWx0KCkpCiAgICAgICAgIHJldHVy
bjsKKwogICAgIHVuc2lnbmVkIHNpemUgPSBtX2lucHV0RWZmZWN0cy5zaXplKCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBGaWx0ZXJFZmZlY3Qq
IGluID0gbV9pbnB1dEVmZmVjdHMuYXQoaSkuZ2V0KCk7CkBAIC0xMDIsNiArMTAzLDExIEBAIHZv
aWQgRmlsdGVyRWZmZWN0OjphcHBseSgpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCk7CisKKyAgICBpZiAocmVxdWlyZXNWYWxpZFBy
ZU11bHRpcGxpZWRQaXhlbHMoKSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c2l6ZTsgKytpKQorICAgICAgICAgICAgaW5wdXRFZmZlY3QoaSktPmNvcnJlY3RGaWx0ZXJSZXN1
bHRJZk5lZWRlZCgpOworICAgIH0KICAgICAKICAgICAvLyBBZGQgcGxhdGZvcm0gc3BlY2lmaWMg
YXBwbHkgZnVuY3Rpb25zIGhlcmUgYW5kIHJldHVybiBlYXJsaWVyLgogI2lmIFVTRShTS0lBKQpA
QCAtMTExLDYgKzExNywzNSBAQCB2b2lkIEZpbHRlckVmZmVjdDo6YXBwbHkoKQogICAgIHBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpOwogfQogCit2b2lkIEZpbHRlckVmZmVjdDo6Zm9yY2VWYWxpZFBy
ZU11bHRpcGxpZWRQaXhlbHMoKQoreworICAgIC8vIE11c3Qgb3BlcmF0ZSBvbiBwcmUtbXVsdGlw
bGllZCByZXN1bHRzIC0gb3RoZXIgZm9ybWF0cyBjYW5ub3QgaGF2ZSBpbnZhbGlkIHBpeGVscwor
ICAgIGlmICghbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEJ5dGVBcnJheSogaW1hZ2VBcnJheSA9IG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0Lmdl
dCgpOworICAgIHVuc2lnbmVkIGNoYXIqIHBpeGVsRGF0YSA9IGltYWdlQXJyYXktPmRhdGEoKTsK
KyAgICBpbnQgcGl4ZWxBcnJheUxlbmd0aCA9IGltYWdlQXJyYXktPmxlbmd0aCgpOworCisgICAg
Ly8gV2UgbXVzdCBoYXZlIGZvdXIgYnl0ZXMgcGVyIHBpeGVsLCBhbmQgY29tcGxldGUgcGl4ZWxz
CisgICAgQVNTRVJUKCEocGl4ZWxBcnJheUxlbmd0aCAlIDQpKTsKKyAgICBpbnQgbnVtUGl4ZWxz
ID0gcGl4ZWxBcnJheUxlbmd0aCAvIDQ7CisKKyAgICAvLyBJdGVyYXRlIG92ZXIgZWFjaCBwaXhl
bCwgY2hlY2tpbmcgYWxwaGEgYW5kIGFkanVzdGluZyBjb2xvciBjb21wb25lbnRzIGlmIG5lY2Vz
c2FyeQorICAgIHdoaWxlICgtLW51bVBpeGVscyA+PSAwKSB7CisgICAgICAgIC8vIEFscGhhIGlz
IHRoZSA0dGggYnl0ZSBpbiBhIHBpeGVsCisgICAgICAgIHVuc2lnbmVkIGNoYXIgYSA9ICoocGl4
ZWxEYXRhICsgMyk7CisgICAgICAgIC8vIENsYW1wIGVhY2ggY29tcG9uZW50IHRvIGFscGhhLCBh
bmQgaW5jcmVtZW50IHRoZSBwaXhlbCBsb2NhdGlvbgorICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IDM7ICsraSkgeworICAgICAgICAgICAgaWYgKCpwaXhlbERhdGEgPiBhKQorICAgICAgICAg
ICAgICAgICpwaXhlbERhdGEgPSBhOworICAgICAgICAgICAgKytwaXhlbERhdGE7CisgICAgICAg
IH0KKyAgICAgICAgLy8gSW5jcmVtZW50IGZvciBhbHBoYQorICAgICAgICArK3BpeGVsRGF0YTsK
KyAgICB9Cit9CisKIHZvaWQgRmlsdGVyRWZmZWN0OjpjbGVhclJlc3VsdCgpCiB7CiAgICAgaWYg
KG1faW1hZ2VCdWZmZXJSZXN1bHQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJKHJldmlzaW9uIDEwOTc0
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDExIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYXBwbHkoKTsKICAgICAKKyAgICAvLyBDb3JyZWN0IGFueSBpbnZhbGlkIHBpeGVscywgaWYg
bmVjZXNzYXJ5LCBpbiB0aGUgcmVzdWx0IG9mIGEgZmlsdGVyIG9wZXJhdGlvbi4KKyAgICAvLyBU
aGlzIG1ldGhvZCBpcyB1c2VkIHRvIGVuc3VyZSB2YWxpZCBwaXhlbCB2YWx1ZXMgb24gZmlsdGVy
IGlucHV0cyBhbmQgdGhlIGZpbmFsIHJlc3VsdC4KKyAgICAvLyBPbmx5IHRoZSBhcml0aG1ldGlj
IGNvbXBvc2l0ZSBmaWx0ZXIgZXZlciBuZWVkcyB0byBwZXJmb3JtIGNvcnJlY3Rpb24uCisgICAg
dmlydHVhbCB2b2lkIGNvcnJlY3RGaWx0ZXJSZXN1bHRJZk5lZWRlZCgpIHsgfQorCiAgICAgdmly
dHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpID0gMDsKICNpZiBVU0UoU0tJQSkKICAg
ICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1BcHBseVNraWEoKSB7IHJldHVybiBmYWxzZTsgfQpAQCAt
MTMxLDYgKzEzNiwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgQnl0ZUFycmF5KiBjcmVhdGVVbm11bHRp
cGxpZWRJbWFnZVJlc3VsdCgpOwogICAgIEJ5dGVBcnJheSogY3JlYXRlUHJlbXVsdGlwbGllZElt
YWdlUmVzdWx0KCk7CiAKKyAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgZmlsdGVyIHdpbGwgb25s
eSBvcGVyYXRlIGNvcnJlY3RseSBvbiB2YWxpZCBSR0JBIHZhbHVlcywgd2l0aAorICAgIC8vIGFs
cGhhIGluIFswLDI1NV0gYW5kIGVhY2ggY29sb3IgY29tcG9uZW50IGluIFswLCBhbHBoYV0uCisg
ICAgdmlydHVhbCBib29sIHJlcXVpcmVzVmFsaWRQcmVNdWx0aXBsaWVkUGl4ZWxzKCkgeyByZXR1
cm4gdHJ1ZTsgfQorCisgICAgLy8gSWYgYSBwcmUtbXVsdGlwbGllZCBpbWFnZSwgY2hlY2sgZXZl
cnkgcGl4ZWwgZm9yIHZhbGlkaXR5IGFuZCBjb3JyZWN0IGlmIG5lY2Vzc2FyeS4KKyAgICB2b2lk
IGZvcmNlVmFsaWRQcmVNdWx0aXBsaWVkUGl4ZWxzKCk7CisKIHByaXZhdGU6CiAgICAgT3duUHRy
PEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyUmVzdWx0OwogICAgIFJlZlB0cjxCeXRlQXJyYXk+
IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAkocmV2aXNp
b24gMTA5NzQ0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMCw2ICszMDAsNyBAQCB2b2lkIFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSCiAgICAgICAgIC8vIEFsd2F5cyB0cnVl
IGlmIGZpbHRlckRhdGEgaXMganVzdCBidWlsdCAoZmlsdGVyRGF0YS0+YnVpbGRlZCBpcyBmYWxz
ZSkuCiAgICAgICAgIGlmICghbGFzdEVmZmVjdC0+aGFzUmVzdWx0KCkpIHsKICAgICAgICAgICAg
IGxhc3RFZmZlY3QtPmFwcGx5KCk7CisgICAgICAgICAgICBsYXN0RWZmZWN0LT5jb3JyZWN0Rmls
dGVyUmVzdWx0SWZOZWVkZWQoKTsKICNpZiAhVVNFKENHKQogICAgICAgICAgICAgSW1hZ2VCdWZm
ZXIqIHJlc3VsdEltYWdlID0gbGFzdEVmZmVjdC0+YXNJbWFnZUJ1ZmZlcigpOwogICAgICAgICAg
ICAgaWYgKHJlc3VsdEltYWdlKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA5NzQ0KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDMt
MDUgIFN0ZXBoZW4gQ2hlbm5leSAgPHNjaGVubmV5QGNocm9taXVtLm9yZz4KKworICAgICAgICBb
Q2hyb21pdW1dIFNWRyBDb21wb3NpdGUgb2YgT2Zmc2V0IGNyYXNoZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MjQ1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGZlQ29tcG9zaXRlIGFyaXRobWV0
aWMgbW9kZSBmaWx0ZXIgY291bGQgcmVhZGlseSBiZSBtYWRlIHRvCisgICAgICAgIGdlbmVyYXRl
IGludmFsaWQgcHJlLW11bHRpcGxpZWQgcGl4ZWwgdmFsdWVzIHdoaWNoIHdvdWxkIHRoZW4gZ28g
b24gdG8KKyAgICAgICAgcG9sbHV0ZSBvdGhlciBmaWx0ZXJzIGFuZCBjYXVzZSBpbnZhbGlkIGZp
bmFsIG91dHB1dCBwaXhlbHMuIFRoaXMKKyAgICAgICAgcGF0Y2ggY2hlY2tzIGZvciBmaWx0ZXJz
IHRoYXQgcmVxdWlyZSB2YWxpZCBpbnB1dHMsIGFuZCBjaGVja3MgdGhhdCBhCisgICAgICAgIHJl
c3VsdCBpcyB2YWxpZCwgYW5kIGNvcnJlY3RzIHRoZSByZXN1bHQgaWYgbmVjZXNzYXJ5LiBUaGlz
IG1hdGNoZXMKKyAgICAgICAgdGhlIGJlaGF2aW9yIG9mIEZGIGFuZCBPcGVyYSB3aGlsZSBwcmV2
ZW50aW5nIGNyYXNoZXMgb3Igb3RoZXIKKyAgICAgICAgdW5kZXNpcmFibGUgYmVoYXZpb3IuCisK
KyAgICAgICAgKiBzdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS1hcml0aG1ldGljLWludmFsaWQtcmdi
YS1leHBlY3RlZC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRl
LWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLnN2ZzogQWRkZWQuCisKIDIwMTItMDMtMDUgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogY2hlY2sgZm9yIHRoZSBudW1iZXIgb2YgcGFyc2VkIGNzcyBwcm9wZXJ0aWVzLgpJbmRleDog
TGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJn
YmEtZXhwZWN0ZWQuc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2Zl
Q29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLWV4cGVjdGVkLnN2ZwkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52
YWxpZC1yZ2JhLWV4cGVjdGVkLnN2ZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4KKyAgICA8IS0t
IEV4cGVjdGVkIHJlc3VsdCBmb3Igc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1p
bnZhbGlkLXJnYmEuc3ZnIC0tPgorCisgICAgPCEtLSBCYWNrZ3JvdW5kIGZvciBjb2xvciBjb21w
YXJpc29uLiBUaGUgYm9yZGVyIG9mIHRoZSBmaW5hbCByZWN0YW5nbGUgc2hvdWxkIGJlIHRoZSBz
YW1lIGFzIHRoZSBpbnRlcmlvciBjb2xvci4gLS0+CisgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3
aWR0aD0iNjAiIGhlaWdodD0iNjAiIGZpbGw9InJnYmEoMCwyNTUsMCwxKSIgLz4KKworICAgIDwh
LS0gQm9yZGVyIHRvIHNob3cgZXhwZWN0ZWQgbm9uLWRyYXdpbmcgYXJlYS4gLS0+CisgICAgPHJl
Y3QgeD0iMTI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBmaWxsPSJub25lIiBzdHJv
a2U9InJnYigwLDI1NSwwKSIgLz4KKzwvc3ZnPgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2ZpbHRl
cnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEuc3ZnCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1y
Z2JhLnN2ZwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL2ZlQ29tcG9z
aXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLnN2ZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
MyBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5r
PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjEwMCI+
CisgICAgPGRlZnM+CisgICAgICAgIDwhLS0gVGhpcyBmaWx0ZXIgcHJvZHVjZXMgcmVzdWx0cyB0
aGF0IGFyZSBpbnZhbGlkIHByZS1tdWx0aXBsaWVkIHJnYmEgcGl4ZWxzLiBTcGVjaWZpY2FsbHks
IGFmdGVyIHRoZSA0dGggc3RlcCBhbiAtLT4KKyAgICAgICAgPCEtLSBpbnRlcmlvciBwaXhlbCB3
aWxsIGNvbnRhaW4gKDAsIDAuOCwgMCwgMC41KSB3aGljaCBpcyBpbnZhbGlkIGJlY2F1c2UgZyA+
IGEuIFdoZW4gdXNlZCBpbiBvdGhlciBvcGVyYXRpb25zICAgIC0tPgorICAgICAgICA8IS0tIHRo
aXMgbWF5IGdlbmVyYXRlIGJhZCByZXN1bHRzIGJ1dCB3ZSBvbmx5IHdhbnQgdG8gY2xhbXAgdGhl
IHZhbHVlcyB3aGVuIHBhc3NlZCBvbiB0byBvdGhlciBvcGVyYXRpb25zLCBub3QgICAgLS0+Cisg
ICAgICAgIDwhLS0gZm9yIGludGVybWVkaWF0ZSBhcml0aG1ldGljIHJlc3VsdHMuIC0tPgorICAg
ICAgICA8ZmlsdGVyIGlkPSJhcml0aG1ldGljIj4KKyAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBv
cGVyYXRvcj0iYXJpdGhtZXRpYyIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iU291cmNlR3JhcGhp
YyIgazE9IjAiIGsyPSIwLjIiIGszPSIwIiBrND0iMCIgcmVzdWx0PSJyZ2JhMDIiIC8+CisgICAg
ICAgICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGluPSJTb3VyY2VBbHBo
YSIgaW4yPSJTb3VyY2VBbHBoYSIgazE9IjAiIGsyPSIwLjMiIGszPSIwIiBrND0iMCIgcmVzdWx0
PSJhbHBoYTA1IiAvPgorICAgICAgICAgICAgPGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJhcml0aG1l
dGljIiBpbj0icmdiYTAyIiBpbjI9ImFscGhhMDUiIGsxPSIwIiBrMj0iMSIgazM9IjEiIGs0PSIw
IiByZXN1bHQ9InRtcCIgLz4KKyAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iYXJp
dGhtZXRpYyIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0idG1wIiBrMT0iMCIgazI9IjEiIGszPSIt
MSIgazQ9IjAiIC8+CisgICAgICAgICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImFyaXRobWV0
aWMiIGluPSJ0bXAiIGsxPSIwIiBrMj0iMSIgazM9IjEiIGs0PSIwIiAvPgorICAgICAgICA8L2Zp
bHRlcj4KKworICAgICAgICA8IS0tIFRoaXMgZmlsdGVyIHdpbGwgcHJvZHVjZSBpbWFnZXMgd2l0
aCB6ZXJvIGFscGhhIGJ1dCBub24temVybyBjb2xvciBjb21wb25lbnRzLiAtLT4KKyAgICAgICAg
PGZpbHRlciBpZD0iemVyby1hbHBoYSI+CisgICAgICAgICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0
b3I9ImFyaXRobWV0aWMiIGluPSJTb3VyY2VBbHBoYSIgaW4yPSJTb3VyY2VBbHBoYSIgazE9IjAi
IGsyPSIxLjAiIGszPSIwIiBrND0iMCIgcmVzdWx0PSJhbHBoYSIgLz4KKyAgICAgICAgICAgIDxm
ZUNvbXBvc2l0ZSBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0i
YWxwaGEiIGsxPSIwIiBrMj0iMS4wIiBrMz0iLTEuMCIgazQ9IjAiIC8+CisgICAgICAgIDwvZmls
dGVyPgorICAgIDwvZGVmcz4KKworICAgIDwhLS0gQmFja2dyb3VuZCBmb3IgY29sb3IgY29tcGFy
aXNvbi4gVGhlIGJvcmRlciBvZiB0aGUgZmluYWwgcmVjdGFuZ2xlIHNob3VsZCBiZSB0aGUgc2Ft
ZSBhcyB0aGUgaW50ZXJpb3IgY29sb3IuIC0tPgorICAgIDxyZWN0IHg9IjIwIiB5PSIyMCIgd2lk
dGg9IjYwIiBoZWlnaHQ9IjYwIiBmaWxsPSJyZ2JhKDAsMjU1LDAsMSkiIC8+CisKKyAgICA8IS0t
IFRoZSBjb250ZW50IG9mIGludGVyZXN0IC0tPgorICAgIDxyZWN0IGZpbHRlcj0idXJsKCNhcml0
aG1ldGljKSIgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9InJnYmEo
MCwyNTUsMCwxKSIgc3Ryb2tlPSJub25lIiAvPgorCisgICAgPCEtLSBCb3JkZXIgdG8gc2hvdyBl
eHBlY3RlZCBub24tZHJhd2luZyBhcmVhLiAtLT4KKyAgICA8cmVjdCB4PSIxMjUiIHk9IjI1IiB3
aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmdiKDAsMjU1LDApIiAv
PgorCisgICAgPCEtLSBUaGlzIHNob3VsZCBwcm9kdWNlIG5vdGhpbmcsIGFuZCBub3QgY2F1c2Ug
YSBjcmFzaC4gLS0+CisgICAgPHJlY3QgZmlsdGVyPSJ1cmwoI3plcm8tYWxwaGEpIiB4PSIxMjUi
IHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9InJnYmEoMCwyNTUsMCwxKSIgc3Ry
b2tlPSJub25lIiAvPgorPC9zdmc+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130196</attachid>
            <date>2012-03-05 13:30:57 -0800</date>
            <delta_ts>2012-03-05 17:00:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77245-20120305163056.patch</filename>
            <type>text/plain</type>
            <size>12688</size>
            <attacher name="Stephen Chenney">schenney</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTc0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAzLTA1ICBTdGVwaGVu
IENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBT
VkcgQ29tcG9zaXRlIG9mIE9mZnNldCBjcmFzaGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzI0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBmZUNvbXBvc2l0ZSBhcml0aG1ldGljIG1vZGUgZmls
dGVyIGNvdWxkIHJlYWRpbHkgYmUgbWFkZSB0bworICAgICAgICBnZW5lcmF0ZSBpbnZhbGlkIHBy
ZS1tdWx0aXBsaWVkIHBpeGVsIHZhbHVlcyB3aGljaCB3b3VsZCB0aGVuIGdvIG9uIHRvCisgICAg
ICAgIHBvbGx1dGUgb3RoZXIgZmlsdGVycyBhbmQgY2F1c2UgaW52YWxpZCBmaW5hbCBvdXRwdXQg
cGl4ZWxzLiBUaGlzCisgICAgICAgIHBhdGNoIGNoZWNrcyBmb3IgZmlsdGVycyB0aGF0IHJlcXVp
cmUgdmFsaWQgaW5wdXRzLCBhbmQgY2hlY2tzIHRoYXQgYQorICAgICAgICByZXN1bHQgaXMgdmFs
aWQsIGFuZCBjb3JyZWN0cyB0aGUgcmVzdWx0IGlmIG5lY2Vzc2FyeS4gVGhpcyBtYXRjaGVzCisg
ICAgICAgIHRoZSBiZWhhdmlvciBvZiBGRiBhbmQgT3BlcmEgd2hpbGUgcHJldmVudGluZyBjcmFz
aGVzIG9yIG90aGVyCisgICAgICAgIHVuZGVzaXJhYmxlIGJlaGF2aW9yLgorCisgICAgICAgIFRl
c3Q6IHN2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLnN2Zwor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oOiBPdmVy
cmlkZSB0aGUgZGVmYXVsdCB2YWxpZGl0eSBjaGVja3MgYW5kIGltYWdlIGNsZWFudXAgbWV0aG9k
cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpjb3JyZWN0RmlsdGVyUmVzdWx0SWZOZWVk
ZWQpOiBGb3JjZSB2YWxpZCBwaXhlbHMgaWYgdGhpcyBpcyBhbiBhcml0aG1ldGljIGZpbHRlcgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXBwbHkpOiBDaGVjayBmb3IgdmFsaWRpdHkg
c3RhdHVzIGFuZCBjb3JyZWN0CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmZvcmNl
VmFsaWRQcmVtdWx0aXBsaWVkUGl4ZWxzKTogTWFrZSBhbiBpbWFnZSB2YWxpZAorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuaDogTmV3IHZpcnR1YWwgbWV0aG9kcyBmb3IgaW1hZ2UgdmFsaWRpdHkuCisgICAgICAgIChG
aWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpyZXF1aXJlc1Zh
bGlkUHJlTXVsdWx0aXBsaWVkUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6Zm9yY2VWYWxpZFByZW11bHRpcGxpZWRQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0Ojpjb3JyZWN0RmlsdGVyUmVzdWx0SWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKTogQ2hlY2sgdGhhdCB0
aGUgZmluYWwgZmlsdGVyIHJlc3VsdCBpcyB2YWxpZAorCiAyMDEyLTAzLTA1ICBSb2IgQnVpcyAg
PHJidWlzQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFVwZGF0ZSBMb2NhbGl6ZWRT
dHJpbmdzQmxhY2tCZXJyeS5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCShyZXZpc2lvbiAxMDk3
NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9z
aXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiwxNCBAQCBib29sIEZFQ29tcG9z
aXRlOjpzZXRLNChmbG9hdCBrNCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBGRUNvbXBv
c2l0ZTo6Y29ycmVjdEZpbHRlclJlc3VsdElmTmVlZGVkKCkKK3sKKyAgICBpZiAobV90eXBlICE9
IEZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUMpCisgICAgICAgIHJldHVybjsKKworICAg
IGZvcmNlVmFsaWRQcmVNdWx0aXBsaWVkUGl4ZWxzKCk7Cit9CisKIHRlbXBsYXRlIDxpbnQgYjEs
IGludCBiMiwgaW50IGIzLCBpbnQgYjQ+CiBzdGF0aWMgaW5saW5lIHZvaWQgY29tcHV0ZUFyaXRo
bWV0aWNQaXhlbHModW5zaWduZWQgY2hhciogc291cmNlLCB1bnNpZ25lZCBjaGFyKiBkZXN0aW5h
dGlvbiwgaW50IHBpeGVsQXJyYXlMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9zaXRlLmgJKHJldmlzaW9uIDEwOTc0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTks
OCBAQCBwdWJsaWM6CiAgICAgZmxvYXQgazQoKSBjb25zdDsKICAgICBib29sIHNldEs0KGZsb2F0
KTsKIAorICAgIHZpcnR1YWwgdm9pZCBjb3JyZWN0RmlsdGVyUmVzdWx0SWZOZWVkZWQoKSBPVkVS
UklERTsKKwogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZHVtcCgpOwogICAgIApAQCAtNjYsNiArNjgsOSBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYs
IGludCBpbmRlbnRpb24pIGNvbnN0OwogCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBib29sIHJl
cXVpcmVzVmFsaWRQcmVNdWx0aXBsaWVkUGl4ZWxzKCkgT1ZFUlJJREUgeyByZXR1cm4gbV90eXBl
ICE9IEZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUM7IH0KKwogcHJpdmF0ZToKICAgICBG
RUNvbXBvc2l0ZShGaWx0ZXIqLCBjb25zdCBDb21wb3NpdGVPcGVyYXRpb25UeXBlJiwgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgZmxvYXQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCShyZXZpc2lv
biAxMDk3NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsMTEgQEAgdm9pZCBG
aWx0ZXJFZmZlY3Q6OmFwcGx5KCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgZGV0
ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKTsKKworICAgIGlmIChyZXF1aXJlc1ZhbGlkUHJlTXVs
dGlwbGllZFBpeGVscygpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCisgICAgICAgICAgICBpbnB1dEVmZmVjdChpKS0+Y29ycmVjdEZpbHRlclJlc3VsdElm
TmVlZGVkKCk7CisgICAgfQogICAgIAogICAgIC8vIEFkZCBwbGF0Zm9ybSBzcGVjaWZpYyBhcHBs
eSBmdW5jdGlvbnMgaGVyZSBhbmQgcmV0dXJuIGVhcmxpZXIuCiAjaWYgVVNFKFNLSUEpCkBAIC0x
MTEsNiArMTE2LDM1IEBAIHZvaWQgRmlsdGVyRWZmZWN0OjphcHBseSgpCiAgICAgcGxhdGZvcm1B
cHBseVNvZnR3YXJlKCk7CiB9CiAKK3ZvaWQgRmlsdGVyRWZmZWN0Ojpmb3JjZVZhbGlkUHJlTXVs
dGlwbGllZFBpeGVscygpCit7CisgICAgLy8gTXVzdCBvcGVyYXRlIG9uIHByZS1tdWx0aXBsaWVk
IHJlc3VsdHM7IG90aGVyIGZvcm1hdHMgY2Fubm90IGhhdmUgaW52YWxpZCBwaXhlbHMuCisgICAg
aWYgKCFtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Qnl0ZUFycmF5KiBpbWFnZUFycmF5ID0gbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCk7
CisgICAgdW5zaWduZWQgY2hhciogcGl4ZWxEYXRhID0gaW1hZ2VBcnJheS0+ZGF0YSgpOworICAg
IGludCBwaXhlbEFycmF5TGVuZ3RoID0gaW1hZ2VBcnJheS0+bGVuZ3RoKCk7CisKKyAgICAvLyBX
ZSBtdXN0IGhhdmUgZm91ciBieXRlcyBwZXIgcGl4ZWwsIGFuZCBjb21wbGV0ZSBwaXhlbHMKKyAg
ICBBU1NFUlQoIShwaXhlbEFycmF5TGVuZ3RoICUgNCkpOworICAgIGludCBudW1QaXhlbHMgPSBw
aXhlbEFycmF5TGVuZ3RoIC8gNDsKKworICAgIC8vIEl0ZXJhdGUgb3ZlciBlYWNoIHBpeGVsLCBj
aGVja2luZyBhbHBoYSBhbmQgYWRqdXN0aW5nIGNvbG9yIGNvbXBvbmVudHMgaWYgbmVjZXNzYXJ5
CisgICAgd2hpbGUgKC0tbnVtUGl4ZWxzID49IDApIHsKKyAgICAgICAgLy8gQWxwaGEgaXMgdGhl
IDR0aCBieXRlIGluIGEgcGl4ZWwKKyAgICAgICAgdW5zaWduZWQgY2hhciBhID0gKihwaXhlbERh
dGEgKyAzKTsKKyAgICAgICAgLy8gQ2xhbXAgZWFjaCBjb21wb25lbnQgdG8gYWxwaGEsIGFuZCBp
bmNyZW1lbnQgdGhlIHBpeGVsIGxvY2F0aW9uCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
MzsgKytpKSB7CisgICAgICAgICAgICBpZiAoKnBpeGVsRGF0YSA+IGEpCisgICAgICAgICAgICAg
ICAgKnBpeGVsRGF0YSA9IGE7CisgICAgICAgICAgICArK3BpeGVsRGF0YTsKKyAgICAgICAgfQor
ICAgICAgICAvLyBJbmNyZW1lbnQgZm9yIGFscGhhCisgICAgICAgICsrcGl4ZWxEYXRhOworICAg
IH0KK30KKwogdm9pZCBGaWx0ZXJFZmZlY3Q6OmNsZWFyUmVzdWx0KCkKIHsKICAgICBpZiAobV9p
bWFnZUJ1ZmZlclJlc3VsdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAkocmV2aXNpb24gMTA5NzQ0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBh
cHBseSgpOwogICAgIAorICAgIC8vIENvcnJlY3QgYW55IGludmFsaWQgcGl4ZWxzLCBpZiBuZWNl
c3NhcnksIGluIHRoZSByZXN1bHQgb2YgYSBmaWx0ZXIgb3BlcmF0aW9uLgorICAgIC8vIFRoaXMg
bWV0aG9kIGlzIHVzZWQgdG8gZW5zdXJlIHZhbGlkIHBpeGVsIHZhbHVlcyBvbiBmaWx0ZXIgaW5w
dXRzIGFuZCB0aGUgZmluYWwgcmVzdWx0LgorICAgIC8vIE9ubHkgdGhlIGFyaXRobWV0aWMgY29t
cG9zaXRlIGZpbHRlciBldmVyIG5lZWRzIHRvIHBlcmZvcm0gY29ycmVjdGlvbi4KKyAgICB2aXJ0
dWFsIHZvaWQgY29ycmVjdEZpbHRlclJlc3VsdElmTmVlZGVkKCkgeyB9CisKICAgICB2aXJ0dWFs
IHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgPSAwOwogI2lmIFVTRShTS0lBKQogICAgIHZp
cnR1YWwgYm9vbCBwbGF0Zm9ybUFwcGx5U2tpYSgpIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMzEs
NiArMTM2LDEzIEBAIHByb3RlY3RlZDoKICAgICBCeXRlQXJyYXkqIGNyZWF0ZVVubXVsdGlwbGll
ZEltYWdlUmVzdWx0KCk7CiAgICAgQnl0ZUFycmF5KiBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQoKTsKIAorICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBmaWx0ZXIgd2lsbCBvbmx5IG9w
ZXJhdGUgY29ycmVjdGx5IG9uIHZhbGlkIFJHQkEgdmFsdWVzLCB3aXRoCisgICAgLy8gYWxwaGEg
aW4gWzAsMjU1XSBhbmQgZWFjaCBjb2xvciBjb21wb25lbnQgaW4gWzAsIGFscGhhXS4KKyAgICB2
aXJ0dWFsIGJvb2wgcmVxdWlyZXNWYWxpZFByZU11bHRpcGxpZWRQaXhlbHMoKSB7IHJldHVybiB0
cnVlOyB9CisKKyAgICAvLyBJZiBhIHByZS1tdWx0aXBsaWVkIGltYWdlLCBjaGVjayBldmVyeSBw
aXhlbCBmb3IgdmFsaWRpdHkgYW5kIGNvcnJlY3QgaWYgbmVjZXNzYXJ5LgorICAgIHZvaWQgZm9y
Y2VWYWxpZFByZU11bHRpcGxpZWRQaXhlbHMoKTsKKwogcHJpdmF0ZToKICAgICBPd25QdHI8SW1h
Z2VCdWZmZXI+IG1faW1hZ2VCdWZmZXJSZXN1bHQ7CiAgICAgUmVmUHRyPEJ5dGVBcnJheT4gbV91
bm11bHRpcGxpZWRJbWFnZVJlc3VsdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCShyZXZpc2lvbiAx
MDk3NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDYgKzMwMCw3IEBAIHZvaWQgUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVIKICAgICAgICAgLy8gQWx3YXlzIHRydWUgaWYg
ZmlsdGVyRGF0YSBpcyBqdXN0IGJ1aWx0IChmaWx0ZXJEYXRhLT5idWlsZGVkIGlzIGZhbHNlKS4K
ICAgICAgICAgaWYgKCFsYXN0RWZmZWN0LT5oYXNSZXN1bHQoKSkgewogICAgICAgICAgICAgbGFz
dEVmZmVjdC0+YXBwbHkoKTsKKyAgICAgICAgICAgIGxhc3RFZmZlY3QtPmNvcnJlY3RGaWx0ZXJS
ZXN1bHRJZk5lZWRlZCgpOwogI2lmICFVU0UoQ0cpCiAgICAgICAgICAgICBJbWFnZUJ1ZmZlciog
cmVzdWx0SW1hZ2UgPSBsYXN0RWZmZWN0LT5hc0ltYWdlQnVmZmVyKCk7CiAgICAgICAgICAgICBp
ZiAocmVzdWx0SW1hZ2UpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDk3NDQpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wMy0wNSAg
U3RlcGhlbiBDaGVubmV5ICA8c2NoZW5uZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJv
bWl1bV0gU1ZHIENvbXBvc2l0ZSBvZiBPZmZzZXQgY3Jhc2hlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcyNDUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZmVDb21wb3NpdGUgYXJpdGhtZXRpYyBt
b2RlIGZpbHRlciBjb3VsZCByZWFkaWx5IGJlIG1hZGUgdG8KKyAgICAgICAgZ2VuZXJhdGUgaW52
YWxpZCBwcmUtbXVsdGlwbGllZCBwaXhlbCB2YWx1ZXMgd2hpY2ggd291bGQgdGhlbiBnbyBvbiB0
bworICAgICAgICBwb2xsdXRlIG90aGVyIGZpbHRlcnMgYW5kIGNhdXNlIGludmFsaWQgZmluYWwg
b3V0cHV0IHBpeGVscy4gVGhpcworICAgICAgICBwYXRjaCBjaGVja3MgZm9yIGZpbHRlcnMgdGhh
dCByZXF1aXJlIHZhbGlkIGlucHV0cywgYW5kIGNoZWNrcyB0aGF0IGEKKyAgICAgICAgcmVzdWx0
IGlzIHZhbGlkLCBhbmQgY29ycmVjdHMgdGhlIHJlc3VsdCBpZiBuZWNlc3NhcnkuIFRoaXMgbWF0
Y2hlcworICAgICAgICB0aGUgYmVoYXZpb3Igb2YgRkYgYW5kIE9wZXJhIHdoaWxlIHByZXZlbnRp
bmcgY3Jhc2hlcyBvciBvdGhlcgorICAgICAgICB1bmRlc2lyYWJsZSBiZWhhdmlvci4KKworICAg
ICAgICAqIHN2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLWV4
cGVjdGVkLnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJp
dGhtZXRpYy1pbnZhbGlkLXJnYmEuc3ZnOiBBZGRlZC4KKwogMjAxMi0wMy0wNSAgUGF2ZWwgRmVs
ZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBj
aGVjayBmb3IgdGhlIG51bWJlciBvZiBwYXJzZWQgY3NzIHByb3BlcnRpZXMuCkluZGV4OiBMYXlv
dXRUZXN0cy9zdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS1hcml0aG1ldGljLWludmFsaWQtcmdiYS1l
eHBlY3RlZC5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVDb21w
b3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlkLXJnYmEtZXhwZWN0ZWQuc3ZnCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvZmVDb21wb3NpdGUtYXJpdGhtZXRpYy1pbnZhbGlk
LXJnYmEtZXhwZWN0ZWQuc3ZnCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4IEBACis8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4KKyAgICA8IS0tIER1
ZSB0byBCdWcgODAzMjEsIHdlIG5lZWQgdG8gdXNlIGEgZmlsdGVyIGluIHRoaXMgZXhwZWN0ZWQg
cmVzdWx0IHJlZmVyZW5jZS4gLS0+CisgICAgPGRlZnM+CisgICAgICAgIDwhLS0gVGhpcyBmaWx0
ZXIgcHJvZHVjZXMgdGhlIHNhbWUgYXMgdGhlIGlucHV0LCBidXQgZG9lcyBjb2xvciBjb252ZXJz
aW9ucyBhbG9uZyB0aGUgd2F5LiAtLT4KKyAgICAgICAgPGZpbHRlciBpZD0iaWRlbnRpdHkiPgor
ICAgICAgICAgICAgPGZlQ29tcG9zaXRlIG9wZXJhdG9yPSJhcml0aG1ldGljIiBpbj0iU291cmNl
R3JhcGhpYyIgaW4yPSJTb3VyY2VHcmFwaGljIiBrMT0iMCIgazI9IjEuMCIgazM9IjAiIGs0PSIw
IiAvPgorICAgICAgICA8L2ZpbHRlcj4KKyAgICA8L2RlZnM+CisKKyAgICA8IS0tIEJhY2tncm91
bmQgZm9yIGNvbG9yIGNvbXBhcmlzb24uIFRoZSBib3JkZXIgb2YgdGhlIGZpbmFsIHJlY3Rhbmds
ZSBzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhlIGludGVyaW9yIGNvbG9yLiAtLT4KKyAgICA8cmVj
dCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgZmlsbD0icmdiYSgwLDI1NSww
LDEpIiAvPgorCisgICAgPCEtLSBUaGUgY29udGVudCBvZiBpbnRlcmVzdCAtLT4KKyAgICA8cmVj
dCBmaWx0ZXI9InVybCgjaWRlbnRpdHkpIiB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0
PSI1MCIgZmlsbD0icmdiYSgwLDI1NSwwLDEpIiBzdHJva2U9Im5vbmUiIC8+CisKKyAgICA8IS0t
IEJvcmRlciB0byBzaG93IGV4cGVjdGVkIG5vbi1kcmF3aW5nIGFyZWEuIC0tPgorICAgIDxyZWN0
IHg9IjEyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tl
PSJyZ2IoMCwyNTUsMCkiIC8+Cis8L3N2Zz4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9maWx0ZXJz
L2ZlQ29tcG9zaXRlLWFyaXRobWV0aWMtaW52YWxpZC1yZ2JhLnN2Zwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUNvbXBvc2l0ZS1hcml0aG1ldGljLWludmFsaWQtcmdi
YS5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9mZUNvbXBvc2l0
ZS1hcml0aG1ldGljLWludmFsaWQtcmdiYS5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMg
QEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiPgor
ICAgIDxkZWZzPgorICAgICAgICA8IS0tIFRoaXMgZmlsdGVyIHByb2R1Y2VzIHJlc3VsdHMgdGhh
dCBhcmUgaW52YWxpZCBwcmUtbXVsdGlwbGllZCByZ2JhIHBpeGVscy4gU3BlY2lmaWNhbGx5LCBh
ZnRlciB0aGUgNHRoIHN0ZXAgYW4gLS0+CisgICAgICAgIDwhLS0gaW50ZXJpb3IgcGl4ZWwgd2ls
bCBjb250YWluIGFwcHJveGltYXRlbHkgKDAsIDAuOCwgMCwgMC42KSB3aGljaCBpcyBpbnZhbGlk
IGJlY2F1c2UgZyA+IGEuIFdoZW4gdXNlZCBpbiAgICAgLS0+CisgICAgICAgIDwhLS0gb3RoZXIg
b3BlcmF0aW9ucyB0aGlzIG1heSBnZW5lcmF0ZSBiYWQgcmVzdWx0cyBidXQgd2Ugb25seSB3YW50
IHRvIGNsYW1wIHRoZSB2YWx1ZXMgd2hlbiBwYXNzZWQgb24gdG8gb3RoZXIgICAtLT4KKyAgICAg
ICAgPCEtLSBvcGVyYXRpb25zLCBub3QgZm9yIGludGVybWVkaWF0ZSBhcml0aG1ldGljIHJlc3Vs
dHMuIC0tPgorICAgICAgICA8ZmlsdGVyIGlkPSJhcml0aG1ldGljIj4KKyAgICAgICAgICAgIDxm
ZUNvbXBvc2l0ZSBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0i
U291cmNlR3JhcGhpYyIgazE9IjAiIGsyPSIwLjIiIGszPSIwIiBrND0iMCIgcmVzdWx0PSJyZ2Jh
MDIiIC8+CisgICAgICAgICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGlu
PSJTb3VyY2VBbHBoYSIgaW4yPSJTb3VyY2VBbHBoYSIgazE9IjAiIGsyPSIwLjIiIGszPSIwIiBr
ND0iMCIgcmVzdWx0PSJhbHBoYTA1IiAvPgorICAgICAgICAgICAgPGZlQ29tcG9zaXRlIG9wZXJh
dG9yPSJhcml0aG1ldGljIiBpbj0icmdiYTAyIiBpbjI9ImFscGhhMDUiIGsxPSIwIiBrMj0iMSIg
azM9IjEiIGs0PSIwIiByZXN1bHQ9InRtcCIgLz4KKyAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBv
cGVyYXRvcj0iYXJpdGhtZXRpYyIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0idG1wIiBrMT0iMCIg
azI9IjEiIGszPSItMSIgazQ9IjAiIC8+CisgICAgICAgICAgICA8ZmVDb21wb3NpdGUgb3BlcmF0
b3I9ImFyaXRobWV0aWMiIGluPSJ0bXAiIGsxPSIwIiBrMj0iMSIgazM9IjEiIGs0PSIwIiAvPgor
ICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8IS0tIFRoaXMgZmlsdGVyIHdpbGwgcHJvZHVj
ZSBpbWFnZXMgd2l0aCB6ZXJvIGFscGhhIGJ1dCBub24temVybyBjb2xvciBjb21wb25lbnRzLiAt
LT4KKyAgICAgICAgPGZpbHRlciBpZD0iemVyby1hbHBoYSI+CisgICAgICAgICAgICA8ZmVDb21w
b3NpdGUgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGluPSJTb3VyY2VBbHBoYSIgaW4yPSJTb3VyY2VB
bHBoYSIgazE9IjAiIGsyPSIxLjAiIGszPSIwIiBrND0iMCIgcmVzdWx0PSJhbHBoYSIgLz4KKyAg
ICAgICAgICAgIDxmZUNvbXBvc2l0ZSBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgaW49IlNvdXJjZUdy
YXBoaWMiIGluMj0iYWxwaGEiIGsxPSIwIiBrMj0iMS4wIiBrMz0iLTEuMCIgazQ9IjAiIC8+Cisg
ICAgICAgIDwvZmlsdGVyPgorICAgIDwvZGVmcz4KKworICAgIDwhLS0gQmFja2dyb3VuZCBmb3Ig
Y29sb3IgY29tcGFyaXNvbi4gVGhlIGJvcmRlciBvZiB0aGUgZmluYWwgcmVjdGFuZ2xlIHNob3Vs
ZCBiZSB0aGUgc2FtZSBhcyB0aGUgaW50ZXJpb3IgY29sb3IuIC0tPgorICAgIDxyZWN0IHg9IjIw
IiB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiBmaWxsPSJyZ2JhKDAsMjU1LDAsMSkiIC8+
CisKKyAgICA8IS0tIFRoZSBjb250ZW50IG9mIGludGVyZXN0IC0tPgorICAgIDxyZWN0IGZpbHRl
cj0idXJsKCNhcml0aG1ldGljKSIgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAi
IGZpbGw9InJnYmEoMCwyNTUsMCwxKSIgc3Ryb2tlPSJub25lIiAvPgorCisgICAgPCEtLSBCb3Jk
ZXIgdG8gc2hvdyBleHBlY3RlZCBub24tZHJhd2luZyBhcmVhLiAtLT4KKyAgICA8cmVjdCB4PSIx
MjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmdi
KDAsMjU1LDApIiAvPgorCisgICAgPCEtLSBUaGlzIHNob3VsZCBwcm9kdWNlIG5vdGhpbmcsIGFu
ZCBub3QgY2F1c2UgYSBjcmFzaC4gLS0+CisgICAgPHJlY3QgZmlsdGVyPSJ1cmwoI3plcm8tYWxw
aGEpIiB4PSIxMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9InJnYmEoMCwy
NTUsMCwxKSIgc3Ryb2tlPSJub25lIiAvPgorPC9zdmc+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>