<?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>50422</bug_id>
          
          <creation_ts>2010-12-02 16:47:10 -0800</creation_ts>
          <short_desc>[Qt] Canvas shadow offset should not be affected by any transformation</short_desc>
          <delta_ts>2010-12-18 14:18:47 -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>Canvas</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          <dependson>51050</dependson>
    
    <dependson>51183</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Helder Correia">helder</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>alex</cc>
    
    <cc>ariya.hidayat</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>316511</commentid>
    <comment_count>0</comment_count>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-02 16:47:10 -0800</bug_when>
    <thetext>Currently, shadows are affected by all transformations except scaling.  The correct behavior is not being affected by any kind of transformation, and keep the same offset in relation to the shape/image.  NOTE: this is the correct behavior when operating on a canvas, but not with box shadows (where offsets must follow the transformation matrix).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316517</commentid>
    <comment_count>1</comment_count>
      <attachid>75432</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-02 16:53:03 -0800</bug_when>
    <thetext>Created attachment 75432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316552</commentid>
    <comment_count>2</comment_count>
      <attachid>75432</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-02 17:27:33 -0800</bug_when>
    <thetext>Comment on attachment 75432
Patch

Why does this qt-only change affect shared layout test results?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316576</commentid>
    <comment_count>3</comment_count>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-02 18:03:50 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 75432 [details])
&gt; Why does this qt-only change affect shared layout test results?

I&apos;m assuming you&apos;re referring to canvas-strokePath. I wrote that test very recently. I&apos;m changing it slightly now it by using a lineWidth &gt; 1 to make it simultaneously easier to test and more fair among all ports, since we can be dealing with different transformation smoothness/aliasing settings in the different ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316616</commentid>
    <comment_count>4</comment_count>
      <attachid>75453</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-02 19:22:35 -0800</bug_when>
    <thetext>Created attachment 75453
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316649</commentid>
    <comment_count>5</comment_count>
      <attachid>75453</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2010-12-02 20:59:52 -0800</bug_when>
    <thetext>Comment on attachment 75453
Patch

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

&gt; WebCore/platform/graphics/qt/ContextShadowQt.cpp:31
&gt; +#include &lt;QDebug&gt;

Is it needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316701</commentid>
    <comment_count>6</comment_count>
      <attachid>75453</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-03 00:00:51 -0800</bug_when>
    <thetext>Comment on attachment 75453
Patch

QDebug include is just a leftover. Will clean that up. Also need to resolve rebase conflicts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316726</commentid>
    <comment_count>7</comment_count>
      <attachid>75472</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-03 01:13:41 -0800</bug_when>
    <thetext>Created attachment 75472
Resolve conflicts and remove QDebug leftovers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316751</commentid>
    <comment_count>8</comment_count>
      <attachid>75472</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-03 02:13:56 -0800</bug_when>
    <thetext>Comment on attachment 75472
Resolve conflicts and remove QDebug leftovers

Need to fix the build issues for Cairo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>316755</commentid>
    <comment_count>9</comment_count>
      <attachid>75481</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-03 02:22:43 -0800</bug_when>
    <thetext>Created attachment 75481
Don&apos;t break Cairo port build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317208</commentid>
    <comment_count>10</comment_count>
      <attachid>75481</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-03 18:46:09 -0800</bug_when>
    <thetext>Comment on attachment 75481
Don&apos;t break Cairo port build

Removing R? since I found a case where the patch needs to be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319226</commentid>
    <comment_count>11</comment_count>
      <attachid>76006</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-08 19:51:07 -0800</bug_when>
    <thetext>Created attachment 76006
Refactored, more comments, added new test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319232</commentid>
    <comment_count>12</comment_count>
      <attachid>76006</attachid>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2010-12-08 20:10:09 -0800</bug_when>
    <thetext>Comment on attachment 76006
Refactored, more comments, added new test

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

&gt; WebCore/platform/graphics/ContextShadow.cpp:165
&gt; +    QTransform transform = p-&gt;transform();

Use const ref.

&gt; WebCore/platform/graphics/ContextShadow.cpp:167
&gt; +        QPolygonF transDestPolygon = transform.map(QPolygonF(m_layerArea));

transformedPolygon? I don&apos;t think Dest is necessary here (there is no Source and Dest per se, for transformation)

&gt; WebCore/platform/graphics/ContextShadow.h:110
&gt; +    bool shadowsIgnoreTransforms() { return m_shadowsIgnoreTransforms; }

Make it a const.

&gt; WebCore/platform/graphics/ContextShadow.h:127
&gt; +    // Enclosing int rect where shadow needs to be drawn to using the layer context.
&gt;      IntRect m_layerRect;
&gt; +    // Same as m_layerRec but has full precision (useful for lossless transformations).
&gt; +    FloatRect m_layerFloatRect;
&gt; +    // Rect occupied by the original shape or image.
&gt; +    FloatRect m_layerArea;
&gt; +    // Buffer to where the temporary shadow will be drawn to.
&gt;      PlatformImage m_layerImage;

Instead of m_layerArea, m_layerFloatRect and m_layerInflation, I propose using m_layerOrigin (top left corner for endShadowLayer) and m_sourceRect (for the scratch image). These variables are potentially easier to understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319860</commentid>
    <comment_count>13</comment_count>
      <attachid>76155</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-09 18:39:21 -0800</bug_when>
    <thetext>Created attachment 76155
Consts, refactoring, separate ports calc function for now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320756</commentid>
    <comment_count>14</comment_count>
      <attachid>76155</attachid>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2010-12-11 23:28:48 -0800</bug_when>
    <thetext>Comment on attachment 76155
Consts, refactoring, separate ports calc function for now

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

&gt; LayoutTests/ChangeLog:5
&gt; +        [Qt] No shadow offset should be affected by any transformation

I suggest simplifying this to &quot;Canvas shadow offset should not be affected...&quot; (and the bug title as well)

&gt; LayoutTests/fast/canvas/canvas-transforms-fillRect-shadow-expected.txt:1
&gt; +Ensure correct behavior of canvas with fillRect+shadow after translation+rotation+scaling. A blue and red checkered pattern should be displayed.

Isn&apos;t the box solid and not patterned?

&gt; WebCore/platform/graphics/ContextShadow.cpp:159
&gt; +    int inflation = 0;

Is it possible to make this &apos;float&apos; instead? Beside removing confusion (enlarging float rect with int), we are prepared for possible further enhancement when the blur function supports non-integer blur radius.

&gt; WebCore/platform/graphics/qt/ContextShadowQt.cpp:140
&gt; +    // Set the origin as the top left corner of the scratch image.
&gt; +    if (p-&gt;transform().isIdentity()) {
&gt; +        m_layerContext-&gt;translate(offset());
&gt; +        m_layerContext-&gt;translate(-layerRect.x(), -layerRect.y());
&gt; +    } else {
&gt; +        const int frameSize = (m_sourceRect.width() - layerArea.width()) / 2;
&gt; +        m_layerContext-&gt;translate(-layerArea.x() + frameSize, -layerArea.y() + frameSize);
&gt; +    }

Can we get away with the specialization of the identity transform? I can&apos;t see why it&apos;s different.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321361</commentid>
    <comment_count>15</comment_count>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-13 13:21:04 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Isn&apos;t the box solid and not patterned?

&quot;Pattern&quot; does not refer to a canvas pattern brush, but rather to a pattern in the literal meaning of the word (i.e. the test displays a pattern). I&apos;ve used the very same sentence in all my canvas tests, as all of them result in the same pattern. 

&gt; Is it possible to make this &apos;float&apos; instead?

Absolutely, this is something I forgot to change.

&gt; Can we get away with the specialization of the identity transform? I can&apos;t see why it&apos;s different.

Again, absolutely, I also forgot to change that before uploading the last patch.

I&apos;ll upload a new version shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321363</commentid>
    <comment_count>16</comment_count>
      <attachid>76425</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-13 13:29:41 -0800</bug_when>
    <thetext>Created attachment 76425
Add suggestions in comment #14</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321636</commentid>
    <comment_count>17</comment_count>
      <attachid>76425</attachid>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2010-12-13 20:32:24 -0800</bug_when>
    <thetext>Comment on attachment 76425
Add suggestions in comment #14

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321645</commentid>
    <comment_count>18</comment_count>
      <attachid>76425</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-13 20:49:25 -0800</bug_when>
    <thetext>Comment on attachment 76425
Add suggestions in comment #14

Rejecting attachment 76425 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=abarth-cq-sl&apos;, &apos;apply-attachment&apos;, &apos;--non-interactive&apos;, 76425]&quot; exit_code: 2
Last 500 characters of output:
 (offset -3 lines).
Hunk #6 succeeded at 700 (offset -3 lines).
Hunk #7 succeeded at 708 (offset -3 lines).
Hunk #8 succeeded at 732 (offset -3 lines).
Hunk #9 succeeded at 756 (offset -3 lines).
Hunk #10 succeeded at 954 with fuzz 2 (offset -3 lines).
2 out of 10 hunks FAILED -- saving rejects to file WebCore/platform/graphics/qt/GraphicsContextQt.cpp.rej

Failed to run &quot;[u&apos;/Users/abarth/git/webkit-queue/WebKitTools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Ariya Hidayat&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/7056001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321726</commentid>
    <comment_count>19</comment_count>
      <attachid>76509</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-14 00:31:58 -0800</bug_when>
    <thetext>Created attachment 76509
Resolve &quot;m_common-&gt;state&quot; -&gt; &quot;m_state&quot; conflict</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322013</commentid>
    <comment_count>20</comment_count>
      <attachid>76509</attachid>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2010-12-14 09:39:08 -0800</bug_when>
    <thetext>Comment on attachment 76509
Resolve &quot;m_common-&gt;state&quot; -&gt; &quot;m_state&quot; conflict

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322039</commentid>
    <comment_count>21</comment_count>
      <attachid>76509</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-14 10:30:51 -0800</bug_when>
    <thetext>Comment on attachment 76509
Resolve &quot;m_common-&gt;state&quot; -&gt; &quot;m_state&quot; conflict

Clearing flags on attachment: 76509

Committed r74040: &lt;http://trac.webkit.org/changeset/74040&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322040</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-14 10:30:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322051</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-14 11:05:29 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/74040 might have broken Qt Linux Release
The following tests are not passing:
canvas/philip/tests/2d.shadow.canvas.transparent.2.html
canvas/philip/tests/2d.shadow.image.transparent.2.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322115</commentid>
    <comment_count>24</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-12-14 12:25:16 -0800</bug_when>
    <thetext>Apparently this commit broke these tests in the gtk bots:

fast/canvas/canvas-scale-fillPath-shadow.html -&gt; failed
fast/canvas/canvas-scale-fillRect-shadow.html -&gt; failed
fast/canvas/canvas-scale-strokePath-shadow.html -&gt; failed
fast/canvas/canvas-transforms-fillRect-shadow.html -&gt; failed

http://build.webkit.org/results/GTK%20Linux%2064-bit%20Debug/r74042%20(17079)/results.html

I&apos;ve checked the results and not sure if it is a problem with the patch or it could be the same issue we have in bug 49964.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322119</commentid>
    <comment_count>25</comment_count>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-14 12:37:12 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; Apparently this commit broke these tests in the gtk bots:

I&apos;ve reverted this patch as it breaks 2 Qt tests, but I ran the GTK tests and they work fine. It&apos;s very unlikely that they&apos;re failing because of the patch. I can double check later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322162</commentid>
    <comment_count>26</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-14 13:28:26 -0800</bug_when>
    <thetext>Rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322456</commentid>
    <comment_count>27</comment_count>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-14 19:36:51 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; http://trac.webkit.org/changeset/74040 might have broken Qt Linux Release
&gt; The following tests are not passing:
&gt; canvas/philip/tests/2d.shadow.canvas.transparent.2.html
&gt; canvas/philip/tests/2d.shadow.image.transparent.2.html

I found out this is a clipping issue introduced by the patch when we take transformations into account. Essentially, the origin of m_layerContext must be adjusted again in case the shadow is partially clipped out. I have a patch that fixes it, will upload shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322464</commentid>
    <comment_count>28</comment_count>
      <attachid>76620</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-14 20:10:33 -0800</bug_when>
    <thetext>Created attachment 76620
Add changes in comment #27 fixing failing tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322500</commentid>
    <comment_count>29</comment_count>
      <attachid>76620</attachid>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2010-12-14 21:47:09 -0800</bug_when>
    <thetext>Comment on attachment 76620
Add changes in comment #27 fixing failing tests

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

&gt; WebCore/platform/graphics/qt/ContextShadowQt.cpp:139
&gt; +    const FloatSize clippedOffset = m_unclippedLayerOrigin - m_layerOrigin;
&gt; +    const float translationX = -layerArea.x() + frameSize - abs(clippedOffset.width());
&gt; +    const float translationY = -layerArea.y() + frameSize - abs(clippedOffset.height());
&gt; +    m_layerContext-&gt;translate(translationX, translationY);

Having both m_unclippedLayerOrigin and m_layerOrigin will be confusing. In particular since we never need the former.

Here is an alternative: precompute the translation (as a point) in calculateLayerBoundingRect and save it and the use it later here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322525</commentid>
    <comment_count>30</comment_count>
      <attachid>76635</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-15 00:07:58 -0800</bug_when>
    <thetext>Created attachment 76635
Add suggestions from comment #29</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322611</commentid>
    <comment_count>31</comment_count>
      <attachid>76635</attachid>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2010-12-15 08:31:30 -0800</bug_when>
    <thetext>Comment on attachment 76635
Add suggestions from comment #29

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

&gt; WebCore/platform/graphics/qt/ContextShadowQt.cpp:135
&gt; +    // Set the origin as the top left corner of the scratch image, or, in case there&apos;s a clipped
&gt; +    // out region, set the origin accordingly to the full bounding rect&apos;s top-left corner.
&gt; +    m_layerContext-&gt;translate(m_layerContextTranslation);

The comment is confusing if it is paced here. Maybe in calculateLayerBoundingRect?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322810</commentid>
    <comment_count>32</comment_count>
      <attachid>76687</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-15 14:33:50 -0800</bug_when>
    <thetext>Created attachment 76687
Add suggestion from comment #31</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322815</commentid>
    <comment_count>33</comment_count>
      <attachid>76687</attachid>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2010-12-15 14:43:57 -0800</bug_when>
    <thetext>Comment on attachment 76687
Add suggestion from comment #31

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322894</commentid>
    <comment_count>34</comment_count>
      <attachid>76687</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-15 15:48:42 -0800</bug_when>
    <thetext>Comment on attachment 76687
Add suggestion from comment #31

Clearing flags on attachment: 76687

Committed r74154: &lt;http://trac.webkit.org/changeset/74154&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322895</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-15 15:48:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323142</commentid>
    <comment_count>36</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-12-16 06:19:00 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; Apparently this commit broke these tests in the gtk bots:
&gt; 
&gt; I&apos;ve reverted this patch as it breaks 2 Qt tests, but I ran the GTK tests and they work fine. It&apos;s very unlikely that they&apos;re failing because of the patch. I can double check later.

This patch has broken GTK+ bots, as was warned in comment #24.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323152</commentid>
    <comment_count>37</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-12-16 06:45:28 -0800</bug_when>
    <thetext>cq wouldn&apos;t allow me to revert the patch, so I rolled it out manually in r74187.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323365</commentid>
    <comment_count>38</comment_count>
      <attachid>76804</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-16 12:54:45 -0800</bug_when>
    <thetext>Created attachment 76804
Doesn&apos;t break GTK when opening tests in launcher</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323431</commentid>
    <comment_count>39</comment_count>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-16 14:29:17 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; Doesn&apos;t break GTK when opening tests in launcher

So when I test using the launcher, all is fine. Using DRT, OTOH, fails miserably. Could it be that the launcher is using X11, and DRT is using Image (or whatever Cairo&apos;s raster backend is called)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323501</commentid>
    <comment_count>40</comment_count>
      <attachid>76825</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-16 16:21:07 -0800</bug_when>
    <thetext>Created attachment 76825
Remove GTK specific expected results files, tests pass now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323505</commentid>
    <comment_count>41</comment_count>
      <attachid>76826</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-16 16:26:23 -0800</bug_when>
    <thetext>Created attachment 76826
Remove GTK specific expected results files, tests pass now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323524</commentid>
    <comment_count>42</comment_count>
      <attachid>76831</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-16 17:04:17 -0800</bug_when>
    <thetext>Created attachment 76831
Upload manually, git would rename files no matter what</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323533</commentid>
    <comment_count>43</comment_count>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-16 17:28:52 -0800</bug_when>
    <thetext>Patch was rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323540</commentid>
    <comment_count>44</comment_count>
      <attachid>76835</attachid>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-16 17:38:05 -0800</bug_when>
    <thetext>Created attachment 76835
Once more, to force the bots to work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323997</commentid>
    <comment_count>45</comment_count>
      <attachid>76913</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-17 14:41:11 -0800</bug_when>
    <thetext>Created attachment 76913
Cross-platform version of the previous patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324001</commentid>
    <comment_count>46</comment_count>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-17 14:58:46 -0800</bug_when>
    <thetext>(In reply to comment #45)
&gt; Created an attachment (id=76913) [details]
&gt; Cross-platform version of the previous patch

Martin, you need to upload the patch manually, you have the same issue I ran into yesterday: Git is considering that the new transforms test is a rename from one of your the platform scale expected files. There should be 3 new files and 3 deleted files. Just do a git show of the commit to a file and upload manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324006</commentid>
    <comment_count>47</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-12-17 15:17:22 -0800</bug_when>
    <thetext>Attachment 76913 did not build on qt:
Build output: http://queues.webkit.org/results/7216027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324009</commentid>
    <comment_count>48</comment_count>
      <attachid>76915</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-17 15:20:16 -0800</bug_when>
    <thetext>Created attachment 76915
Cross platform version of the previous patch (#2)

Okay. Here&apos;s the output of &apos;git diff&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324012</commentid>
    <comment_count>49</comment_count>
      <attachid>76917</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-17 15:24:31 -0800</bug_when>
    <thetext>Created attachment 76917
Cross platform version of the previous patch (#3)

Uploading a new patch that builds on Qt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324015</commentid>
    <comment_count>50</comment_count>
      <attachid>76918</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-17 15:30:44 -0800</bug_when>
    <thetext>Created attachment 76918
Entire patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324045</commentid>
    <comment_count>51</comment_count>
      <attachid>76915</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-17 16:40:13 -0800</bug_when>
    <thetext>Comment on attachment 76915
Cross platform version of the previous patch (#2)

Cleared Martin Robinson&apos;s review+ from obsolete attachment 76915 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324117</commentid>
    <comment_count>52</comment_count>
      <attachid>76918</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-18 10:45:24 -0800</bug_when>
    <thetext>Comment on attachment 76918
Entire patch

Rejecting attachment 76918 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-3&apos;, &apos;apply-attachment&apos;, &apos;--non-interactive&apos;, 76918]&quot; exit_code: 2
Last 500 characters of output:
raphicsContextQt.cpp
Hunk #1 FAILED at 53.
Hunk #2 FAILED at 510.
Hunk #3 FAILED at 548.
Hunk #4 succeeded at 664 with fuzz 2 (offset 106 lines).
Hunk #5 FAILED at 790.
Hunk #6 FAILED at 798.
Hunk #7 FAILED at 822.
Hunk #8 FAILED at 846.
Hunk #9 FAILED at 1026.
8 out of 9 hunks FAILED -- saving rejects to file WebCore/platform/graphics/qt/GraphicsContextQt.cpp.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Ariya Hidayat&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/7220034</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324118</commentid>
    <comment_count>53</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-12-18 10:45:27 -0800</bug_when>
    <thetext>Committed r74317: &lt;http://trac.webkit.org/changeset/74317&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324128</commentid>
    <comment_count>54</comment_count>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-18 13:08:59 -0800</bug_when>
    <thetext>(In reply to comment #53)
&gt; Committed r74317: &lt;http://trac.webkit.org/changeset/74317&gt;

The patch that was landed is not the same. The gtk platform expected results files were not deleted, and the new canvas-transforms-shadow test is not there either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324142</commentid>
    <comment_count>55</comment_count>
    <who name="Helder Correia">helder</who>
    <bug_when>2010-12-18 14:18:47 -0800</bug_when>
    <thetext>Seems to be fine.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75432</attachid>
            <date>2010-12-02 16:53:03 -0800</date>
            <delta_ts>2010-12-02 17:50:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50422-20101202165302.patch</filename>
            <type>text/plain</type>
            <size>22573</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NTA4OWY4YmVhMzkxYzIzOWQ5ZGFiMjUwMjA5ZTdhZmQxMjExMjU1Li4xZjI4NjQy
ODI5ZDVkN2JjM2Y1ZWJjNzQ5NzcyZDlkZDQzZmIwZGE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTAtMTItMDIgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBObyBzaGFkb3cg
b2Zmc2V0IHNob3VsZCBiZSBhZmZlY3RlZCBieSBhbnkgdHJhbnNmb3JtYXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNDIyCisKKyAgICAgICAg
SW4gYSBjYW52YXMgY29udGV4dCwgc2hhZG93cyBhcmUgY3VycmVudGx5IGFmZmVjdGVkIGJ5IGFs
bAorICAgICAgICB0cmFuc2Zvcm1hdGlvbnMgZXhjZXB0IHNjYWxpbmcuIFRoZSBjb3JyZWN0IGJl
aGF2aW9yIGlzIG5vdCBiZWluZworICAgICAgICBhZmZlY3RlZCBieSBhbnkga2luZCBvZiB0cmFu
c2Zvcm1hdGlvbiwgYW5kIGtlZXAgdGhlIHNhbWUgb2Zmc2V0IGluCisgICAgICAgIHJlbGF0aW9u
IHRvIHRoZSBzaGFwZS9pbWFnZS4KKworICAgICAgICBOT1RFOiB0aGlzIGlzIHRoZSBjb3JyZWN0
IGJlaGF2aW9yIHdoZW4gb3BlcmF0aW5nIG9uIGEgY2FudmFzLCBidXQgbm90CisgICAgICAgIHdp
dGggYm94IHNoYWRvd3MgKHdoZXJlIG9mZnNldHMgbXVzdCBmb2xsb3cgdGhlIHRyYW5zZm9ybWF0
aW9uIG1hdHJpeCkuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tl
UGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10
ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LmpzOgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzOgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFk
b3cuanM6CisKIDIwMTAtMTEtMzAgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1l
eHBlY3RlZC50eHQKaW5kZXggZTU2MjAxZjczODdlNDYyZjc5MjI1ZTY1ZjhhMzQwMWUyZTMyMzZm
ZS4uYTMzN2M0YjYzZmYxZGRmZWVkNDQ4OGUzNTFmZmRhZTE0OWVhODUxNiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ry
b2tlUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0CkBAIC0zMCwyNyArMzAsMjcgQEAgUEFTUyBkWzNd
IGlzIGFyb3VuZCA3NgogUEFTUyBkWzBdIGlzIDI1NQogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsy
XSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDIwCitQQVNTIGRbM10gaXMgYXJvdW5kIDE0OQog
UEFTUyBkWzBdIGlzIDI1NQogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1QQVNTIGRb
M10gaXMgYXJvdW5kIDIyCitQQVNTIGRbM10gaXMgYXJvdW5kIDExNgogUEFTUyBkWzBdIGlzIDI1
NQogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDI4
CitQQVNTIGRbM10gaXMgYXJvdW5kIDExNQogUEFTUyBkWzBdIGlzIDI1NQogUEFTUyBkWzFdIGlz
IDAKIFBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDIyCitQQVNTIGRbM10gaXMg
YXJvdW5kIDcwCiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlz
IDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMTUKK1BBU1MgZFszXSBpcyBhcm91bmQgNzAKIFBBU1Mg
ZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlz
IGFyb3VuZCAxNworUEFTUyBkWzNdIGlzIGFyb3VuZCA2OQogUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgt
c2hhZG93LmpzCmluZGV4IDA1Mjg2ZjUzMjhiNWU1OTk4MzI0MzUwNzVkYmJmMWVjMTdlNWEyMDcu
LjNjYTMzMjE5OTI4ZGRkMWJmMjAyMWM0YTAyNGQ3MzA4YmNiODY1MzMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgt
c2hhZG93LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52
YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LmpzCkBAIC03OSwxMyArNzksMTMgQEAgc2hvdWxkQmUo
J2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAn
MjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgMjk1LCAxLCAxKS5kYXRhOworZCA9
IGN0eC5nZXRJbWFnZURhdGEoMjk4LCAyOTUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScs
ICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsK
IHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDI5
OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjk4LCAxLCAxKS5kYXRh
Owogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91
bGRCZSgnZFsyXScsICcwJyk7CkBAIC05OCwxMyArOTgsMTMgQEAgc2hvdWxkQmUoJ2RbMV0nLCAn
MCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYn
KTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4
LmdldEltYWdlRGF0YSgyOTgsIDQwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1
NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hv
dWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0
OTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OCwgMSwgMSkuZGF0
YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
c2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUmVjdC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5q
cwppbmRleCA5OWExZTU5NGJkNTlmNzM2N2YzYzMwZGVhMTY1MWUzMmYzZDRkZTZlLi5mNDk1Yzkx
MDU1YmJhMWRjYjE0NjgzMmUyODE2MzA3NGEwNDVlODI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5q
cworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxl
LWZpbGxSZWN0LXNoYWRvdy5qcwpAQCAtNTgsMTMgKzU4LDEzIEBAIHNob3VsZEJlKCdkWzFdJywg
JzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwog
Ci1kID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDI5NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0
SW1hZ2VEYXRhKDI5OCwgMjk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7
CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRC
ZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyOTksIDEsIDEp
LmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDI5OCwgMSwgMSkuZGF0YTsKIHNob3Vs
ZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
Ml0nLCAnMCcpOwpAQCAtNzcsMTMgKzc3LDEzIEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNo
b3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQg
PSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFn
ZURhdGEoMjk4LCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNo
b3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJv
dW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk5LCAxLCAx
KS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTgsIDEsIDEpLmRhdGE7CiBzaG91
bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdk
WzJdJywgJzAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10
ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzCmlu
ZGV4IDUxOThkOTQxNTE3ZGFiOTJiYzI4OTFjODM3NGYzNWJhMWE4OWQ1NzkuLjkxYjkyN2Y5NWZh
ODdkZTVmOWQ2NTVmM2IyZmZkMmY0YjVkYWQ1MzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1z
dHJva2VQYXRoLXNoYWRvdy5qcwpAQCAtMzUsNiArMzUsNyBAQCBjdHguc2NhbGUoMiwgMik7CiBj
dHguc2hhZG93T2Zmc2V0WCA9IDEwMDsKIGN0eC5zaGFkb3dPZmZzZXRZID0gMTAwOwogY3R4LnN0
cm9rZVN0eWxlID0gJ3JnYmEoMCwgMCwgMjU1LCAxKSc7CitjdHgubGluZVdpZHRoID0gNTsKIAog
Y3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMjU1LCAwLCAwLCAxLjApJzsKIGN0eC5iZWdpblBhdGgo
KTsKQEAgLTc2LDc5ICs3Nyw3OSBAQCBjdHguc3Ryb2tlKCk7CiB2YXIgZDsgLy8gaW1hZ2VEYXRh
LmRhdGEKIAogLy8gVmVyaWZ5IHNvbGlkIHNoYWRvdy4KLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIw
MCwgMjA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjUwLCAyMDAsIDEsIDEp
LmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsK
IHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0g
Y3R4LmdldEltYWdlRGF0YSgyOTksIDI5NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VE
YXRhKDMwMCwgMjkwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91
bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFsz
XScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAxLCAyOTksIDEsIDEpLmRhdGE7
CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDI1MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdk
WzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAn
MCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKIC8vIFZlcmlmeSBzb2xpZCBhbHBoYSBz
aGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBj
dHguZ2V0SW1hZ2VEYXRhKDIwMSwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAn
MjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBz
aG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTks
IDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwgNTAwLCAxLCAxKS5k
YXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBz
aG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1k
ID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1h
Z2VEYXRhKDMwMCwgNDk5LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBz
aG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFy
b3VuZCgnZFszXScsICc3NicpOwogCiAvLyBWZXJpZnkgYmx1cnJ5IHNoYWRvdy4KLWQgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDM5NCwgMjA4LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEo
NDA0LCAyMTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJl
KCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdk
WzNdJywgJzIwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxNDknKTsKIAotZCA9IGN0eC5n
ZXRJbWFnZURhdGEoNTAzLCAzMDEsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg1
MDUsIDI1MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUo
J2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2Rb
M10nLCAnMjInKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzExNicpOwogCi1kID0gY3R4Lmdl
dEltYWdlRGF0YSg1MDQsIDI1MCwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQ1
MCwgMjA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgn
ZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFsz
XScsICcyOCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTE1Jyk7CiAKIC8vIFZlcmlmeSBi
bHVycnkgYWxwaGEgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoNDA1LCA0MDUsIDEsIDEp
LmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg1MDUsIDQ1MCwgMSwgMSkuZGF0YTsKIHNob3Vs
ZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
Ml0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjInKTsKK3Nob3VsZEJlQXJvdW5k
KCdkWzNdJywgJzcwJyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDQxNSwgNDk1LCAxLCAxKS5k
YXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA1LCA0NTAsIDEsIDEpLmRhdGE7CiBzaG91bGRC
ZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJd
JywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzE1Jyk7CitzaG91bGRCZUFyb3VuZCgn
ZFszXScsICc3MCcpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDUwNCwgMSwgMSkuZGF0
YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQ1MCwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUo
J2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScs
ICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcxNycpOworc2hvdWxkQmVBcm91bmQoJ2Rb
M10nLCAnNjknKTsKIAogdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGI4NGFmZjcxM2U0
MmQ4OWJjZDIzOGM4MzllNTM2NjUyNzUwMGVkNzguLjIzNTIyYzlmZTQ5ZGZhNjZkZDYzODIxYmJj
ODJkZTVhY2VlNTMwOTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAtMTItMDIgIEhlbGRlciBDb3JyZWlh
ICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgW1F0XSBObyBzaGFkb3cgb2Zmc2V0IHNob3VsZCBiZSBhZmZlY3RlZCBi
eSBhbnkgdHJhbnNmb3JtYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUwNDIyCisKKyAgICAgICAgSW4gYSBjYW52YXMgY29udGV4dCwgc2hhZG93
cyBhcmUgY3VycmVudGx5IGFmZmVjdGVkIGJ5IGFsbAorICAgICAgICB0cmFuc2Zvcm1hdGlvbnMg
ZXhjZXB0IHNjYWxpbmcuIFRoZSBjb3JyZWN0IGJlaGF2aW9yIGlzIG5vdCBiZWluZworICAgICAg
ICBhZmZlY3RlZCBieSBhbnkga2luZCBvZiB0cmFuc2Zvcm1hdGlvbiwgYW5kIGtlZXAgdGhlIHNh
bWUgb2Zmc2V0IGluCisgICAgICAgIHJlbGF0aW9uIHRvIHRoZSBzaGFwZS9pbWFnZS4KKworICAg
ICAgICBOT1RFOiB0aGlzIGlzIHRoZSBjb3JyZWN0IGJlaGF2aW9yIHdoZW4gb3BlcmF0aW5nIG9u
IGEgY2FudmFzLCBidXQgbm90CisgICAgICAgIHdpdGggYm94IHNoYWRvd3MgKHdoZXJlIG9mZnNl
dHMgbXVzdCBmb2xsb3cgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRleHRTaGFkb3c6OkNvbnRleHRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNo
YWRvdzo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbnRleHRTaGFkb3cuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6
OnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9xdC9Db250ZXh0U2hhZG93UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRv
dzo6YmVnaW5TaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93Ojpl
bmRTaGFkb3dMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KToKKwogMjAxMC0xMS0zMCAgWGFu
IExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGlu
IFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0
U2hhZG93LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHAK
aW5kZXggODdhMWM1Yzc2M2NlYzU1NjYzNGYyZmJhZmM2NzU5NDI5ZWRjNTlkMS4uOWMxZjQzZjYy
OGI5YzUwNTRjNmNhNWU3OGM4ZTE1N2VjOTYwNDcxZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwCkBAIC00MSw2ICs0MSw3IEBAIENvbnRleHRTaGFkb3c6
OkNvbnRleHRTaGFkb3coKQogICAgIDogbV90eXBlKE5vU2hhZG93KQogICAgICwgbV9ibHVyRGlz
dGFuY2UoMCkKICAgICAsIG1fbGF5ZXJDb250ZXh0KDApCisgICAgLCBtX3NoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKGZhbHNlKQogewogfQogCkBAIC0xNTcsNyArMTU4LDggQEAgdm9pZCBDb250ZXh0
U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBGbG9hdFJlY3QmIGxheWVy
QXJlYSwgY29uc3QKICAgICBtX2xheWVyUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoZGVzdGluYXRp
b25SZWN0KTsKIAogICAgIC8vIFdlIGV4cGFuZCB0aGUgYXJlYSBieSB0aGUgYmx1ciByYWRpdXMg
dG8gZ2l2ZSBleHRyYSBzcGFjZSBmb3IgdGhlIGJsdXIgdHJhbnNpdGlvbi4KLSAgICBtX2xheWVy
UmVjdC5pbmZsYXRlKG1fdHlwZSA9PSBCbHVyU2hhZG93ID8gbV9ibHVyRGlzdGFuY2UgOiAwKTsK
KyAgICBpZiAobV90eXBlID09IEJsdXJTaGFkb3cpCisgICAgICAgIG1fbGF5ZXJSZWN0LmluZmxh
dGUobV9ibHVyRGlzdGFuY2UpOwogCiAgICAgaWYgKCFjbGlwUmVjdC5jb250YWlucyhtX2xheWVy
UmVjdCkpIHsKICAgICAgICAgLy8gTm8gbmVlZCB0byBoYXZlIHRoZSBidWZmZXIgbGFyZ2VyIHRo
YW4gdGhlIGNsaXAuCkBAIC0xNzAsNyArMTcyLDcgQEAgdm9pZCBDb250ZXh0U2hhZG93OjpjYWxj
dWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QK
ICAgICAgICAgLy8gV2UgYWRqdXN0IGFnYWluIGJlY2F1c2UgdGhlIHBpeGVscyBhdCB0aGUgYm9y
ZGVycyBhcmUgc3RpbGwKICAgICAgICAgLy8gcG90ZW50aWFsbHkgYWZmZWN0ZWQgYnkgdGhlIHBp
eGVscyBvdXRzaWRlIHRoZSBidWZmZXIuCiAgICAgICAgIGlmIChtX3R5cGUgPT0gQmx1clNoYWRv
dykKLSAgICAgICAgICAgIG1fbGF5ZXJSZWN0LmluZmxhdGUobV90eXBlID09IEJsdXJTaGFkb3cg
PyBtX2JsdXJEaXN0YW5jZSA6IDApOworICAgICAgICAgICAgbV9sYXllclJlY3QuaW5mbGF0ZSht
X2JsdXJEaXN0YW5jZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
dGV4dFNoYWRvdy5oCmluZGV4IDI2ZjBhMzY2NmU4YTk5YzI1Y2Y0YTg2NWQwNDMyMTQ4MjRkMjM3
NTQuLjQ1MzM0YWVlNzhhNTg5MzZmNmYxMWQ4M2JjODYxYzMyMmQzOGVhY2UgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCkBAIC0xMTIsMTcgKzExMiwxOCBAQCBw
dWJsaWM6CiAKICNpZiBQTEFURk9STShRVCkKICAgICBRUG9pbnRGIG9mZnNldCgpIHsgcmV0dXJu
IFFQb2ludEYobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQuaGVpZ2h0KCkpOyB9CisgICAgdm9p
ZCBzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhib29sIGVuYWJsZSkgeyBtX3NoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zID0gZW5hYmxlOyB9CiAjZW5kaWYKIAogCiBwcml2YXRlOgogICAgIEludFJl
Y3QgbV9sYXllclJlY3Q7CisgICAgRmxvYXRSZWN0IG1fbGF5ZXJBcmVhOwogICAgIFBsYXRmb3Jt
SW1hZ2UgbV9sYXllckltYWdlOwogICAgIFBsYXRmb3JtQ29udGV4dCBtX2xheWVyQ29udGV4dDsK
IAogI2lmIFBMQVRGT1JNKFFUKQotICAgIC8vIFVzZWQgZm9yIHJlZmVyZW5jZSB3aGVuIGNhbnZh
cyBzY2FsZSh4LHkpIHdhcyBjYWxsZWQuCi0gICAgRmxvYXRSZWN0IG1fdW5zY2FsZWRMYXllclJl
Y3Q7CisgICAgYm9vbCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogI2VuZGlmCiAKICAgICB2
b2lkIGJsdXJMYXllckltYWdlKHVuc2lnbmVkIGNoYXIqLCBjb25zdCBJbnRTaXplJiBpbWFnZVNp
emUsIGludCBzdHJpZGUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9Db250ZXh0U2hhZG93UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250
ZXh0U2hhZG93UXQuY3BwCmluZGV4IGY3YzcwZjY5NWJjMGZjNDI1MGNjOWJkYzM1ZTlkNWU4ZTYz
Zjk3NDQuLjBiMWM1OWEwNDJhMWQ2YTY4YmRiMTAxMDhjZWVkYmIxNjQzZDM3OTEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb250ZXh0U2hhZG93
LmgiCiAKKyNpbmNsdWRlIDxRRGVidWc+CiAjaW5jbHVkZSA8UVBhaW50ZXI+CiAjaW5jbHVkZSA8
UVRpbWVyRXZlbnQ+CiAKQEAgLTExNCwxMyArMTE1LDE0IEBAIFBsYXRmb3JtQ29udGV4dCBDb250
ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCBwLCBjb25zdCBGbG9h
dFJlCiAgICAgZWxzZQogICAgICAgICBjbGlwUmVjdCA9IHAtPnRyYW5zZm9ybSgpLmludmVydGVk
KCkubWFwUmVjdChwLT53aW5kb3coKSk7CiAKLSAgICBtX3Vuc2NhbGVkTGF5ZXJSZWN0ID0gbGF5
ZXJBcmVhOwogICAgIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGxheWVyQXJlYSwgSW50UmVj
dChjbGlwUmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3Qu
aGVpZ2h0KCkpKTsKIAogICAgIC8vIERvbid0IHBhaW50IGlmIHdlIGFyZSB0b3RhbGx5IG91dHNp
ZGUgdGhlIGNsaXAgcmVnaW9uLgogICAgIGlmIChtX2xheWVyUmVjdC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiAwOwogCisgICAgbV9sYXllckFyZWEgPSBsYXllckFyZWE7CisKICAgICBTaGFk
b3dCdWZmZXIqIHNoYWRvd0J1ZmZlciA9IHNjcmF0Y2hTaGFkb3dCdWZmZXIoKTsKICAgICBRSW1h
Z2UqIHNoYWRvd0ltYWdlID0gc2hhZG93QnVmZmVyLT5zY3JhdGNoSW1hZ2UobV9sYXllclJlY3Qu
c2l6ZSgpKTsKICAgICBtX2xheWVySW1hZ2UgPSBRSW1hZ2UoKnNoYWRvd0ltYWdlKTsKQEAgLTEy
OCw3ICsxMzAsNyBAQCBQbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dM
YXllcihQbGF0Zm9ybUNvbnRleHQgcCwgY29uc3QgRmxvYXRSZQogICAgIG1fbGF5ZXJDb250ZXh0
ID0gbmV3IFFQYWludGVyOwogICAgIG1fbGF5ZXJDb250ZXh0LT5iZWdpbigmbV9sYXllckltYWdl
KTsKICAgICBtX2xheWVyQ29udGV4dC0+c2V0Rm9udChwLT5mb250KCkpOwotICAgIG1fbGF5ZXJD
b250ZXh0LT50cmFuc2xhdGUobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQuaGVpZ2h0KCkpOwor
ICAgIG1fbGF5ZXJDb250ZXh0LT50cmFuc2xhdGUob2Zmc2V0KCkpOwogCiAgICAgLy8gVGhlIG9y
aWdpbiBpcyBub3cgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgc2NyYXRjaCBpbWFnZS4KICAg
ICBtX2xheWVyQ29udGV4dC0+dHJhbnNsYXRlKC1tX2xheWVyUmVjdC54KCksIC1tX2xheWVyUmVj
dC55KCkpOwpAQCAtMTU2LDEwICsxNTgsMjYgQEAgdm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFk
b3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCkKICAgICB9CiAKICAgICBjb25zdCBRVHJhbnNmb3Jt
IHRyYW5zZm9ybSA9IHAtPnRyYW5zZm9ybSgpOwotICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5n
KCkpIHsKLSAgICAgICAgcXJlYWwgeCA9IG1fdW5zY2FsZWRMYXllclJlY3QueCgpICsgbV9vZmZz
ZXQud2lkdGgoKSAgLyB0cmFuc2Zvcm0ubTExKCkgLSBtX2JsdXJEaXN0YW5jZTsKLSAgICAgICAg
cXJlYWwgeSA9IG1fdW5zY2FsZWRMYXllclJlY3QueSgpICsgbV9vZmZzZXQuaGVpZ2h0KCkgLyB0
cmFuc2Zvcm0ubTIyKCkgLSBtX2JsdXJEaXN0YW5jZTsKLSAgICAgICAgcC0+ZHJhd0ltYWdlKFFQ
b2ludEYoeCwgeSksIG1fbGF5ZXJJbWFnZSk7CisgICAgaWYgKG1fc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMgJiYgIXRyYW5zZm9ybS5pc0lkZW50aXR5KCkpIHsKKyAgICAgICAgLy8gT3BlcmF0aW5n
IG9uIGEgY2FudmFzLCB3aGljaCBtZWFucyB0aGF0IHNoYWRvdyBvZmZzZXRzIG11c3Qgbm90IGJl
IHRyYW5zZm9ybWVkLgorICAgICAgICAvLyBGaW5kIHRoZSByZWN0cyBmb3IgdGhlIGltYWdlIGFu
ZCBzaGFkb3cgYWZ0ZXIgdHJhbnNmb3JtYXRpb24gKGtlZXBpbmcgdGhlIHNhbWUgb2Zmc2V0KS4K
KyAgICAgICAgY29uc3QgUVJlY3RGIGxheWVySW1hZ2VTaXplUmVjdCgwLCAwLCBtX2xheWVySW1h
Z2Uud2lkdGgoKSwgbV9sYXllckltYWdlLmhlaWdodCgpKTsKKyAgICAgICAgY29uc3QgUVJlY3RG
IHRyYW5zZm9ybWVkSW1hZ2VSZWN0ID0gdHJhbnNmb3JtLm1hcFJlY3QobGF5ZXJJbWFnZVNpemVS
ZWN0KTsKKyAgICAgICAgY29uc3QgUVJlY3RGIHRyYW5zZm9ybWVkU2hhZG93UmVjdCA9IHRyYW5z
Zm9ybWVkSW1hZ2VSZWN0LnRyYW5zbGF0ZWQob2Zmc2V0KCkpOworCisgICAgICAgIC8vIEFmdGVy
IGtub3dpbmcgaXQsIGZpbmQgdGhlIHBvaW50IHdoZXJlIHdlIG5lZWQgdG8gZHJhdyBpdCBvbiB0
aGUgY2FudmFzIHNvIHRoYXQgaXQKKyAgICAgICAgLy8gZW5kcyB1cCBpbiB0aGUgY29ycmVjdCBw
bGFjZSBhZnRlciB0aGUgdHJhbnNmb3JtYXRpb25zLgorICAgICAgICBjb25zdCBRVHJhbnNmb3Jt
IGludmVyc2VUcmFuc2Zvcm0gPSB0cmFuc2Zvcm0uaW52ZXJ0ZWQoKTsKKyAgICAgICAgY29uc3Qg
UVBvaW50RiBsb2dpY2FsSW1hZ2VUb3BMZWZ0ID0gaW52ZXJzZVRyYW5zZm9ybS5tYXAodHJhbnNm
b3JtZWRJbWFnZVJlY3QudG9wTGVmdCgpKTsKKyAgICAgICAgY29uc3QgUVBvaW50RiBsb2dpY2Fs
U2hhZG93VG9wTGVmdCA9IGludmVyc2VUcmFuc2Zvcm0ubWFwKHRyYW5zZm9ybWVkU2hhZG93UmVj
dC50b3BMZWZ0KCkpOworCisgICAgICAgIGNvbnN0IFFQb2ludEYgaW1hZ2VUb3BMZWZ0ID0gUVJl
Y3RGKG1fbGF5ZXJBcmVhKS50b3BMZWZ0KCk7CisgICAgICAgIGNvbnN0IFFQb2ludEYgc2hhZG93
VG9wTGVmdCA9IGltYWdlVG9wTGVmdCAtIFFQb2ludEYobV9ibHVyRGlzdGFuY2UsIG1fYmx1ckRp
c3RhbmNlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGxvZ2ljYWxT
aGFkb3dUb3BMZWZ0IC0gbG9naWNhbEltYWdlVG9wTGVmdDsKKworICAgICAgICAvLyBGaW5hbGx5
LCBkcmF3IHRoZSBzaGFkb3cgb24gdGhlIHJpZ2h0IGNhbnZhcyBzcGFjZSBjb29yZCBhbmQgbGV0
IHRoZSB0cmFuc2Zvcm1hdGlvbgorICAgICAgICAvLyBtYWtlIGl0IGFwcGVhciB3aXRoIHRoZSBz
YW1lIHJlbGF0aXZlIG9mZnNldCB0byBpdHMgc2hhcGUvaW1hZ2UuCisgICAgICAgIHAtPmRyYXdJ
bWFnZShzaGFkb3dUb3BMZWZ0LCBtX2xheWVySW1hZ2UpOwogICAgIH0gZWxzZQogICAgICAgICBw
LT5kcmF3SW1hZ2UobV9sYXllclJlY3QudG9wTGVmdCgpLCBtX2xheWVySW1hZ2UpOwogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCmlu
ZGV4IDNkOGViM2M5N2IwMDA2YmEzYzBlNDk4MjMxYzlmZTcxZGUxZTQxNjIuLmQzNDE4MTFiYjI1
ODEyODU1ZmRjNDIwM2M1YTc0OTc4ZWIyNzM2MjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCkBAIC01MTAsMjMgKzUxMCwxMyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICBp
ZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAgICAgICBDb250ZXh0U2hhZG93KiBzaGFkb3cg
PSBjb250ZXh0U2hhZG93KCk7CiAgICAgICAgIGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0
U2hhZG93OjpCbHVyU2hhZG93Ci0gICAgICAgICAgICAmJiAhbV9jb21tb24tPnN0YXRlLmZpbGxQ
YXR0ZXJuICYmICFtX2NvbW1vbi0+c3RhdGUuZmlsbEdyYWRpZW50KQorICAgICAgICAgICAgJiYg
IW1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybiAmJiAhbV9jb21tb24tPnN0YXRlLmZpbGxHcmFk
aWVudAorICAgICAgICAgICAgJiYgcC0+dHJhbnNmb3JtKCkuaXNJZGVudGl0eSgpKQogICAgICAg
ICB7CiAgICAgICAgICAgICBRUG9pbnRGIG9mZnNldCA9IHNoYWRvdy0+b2Zmc2V0KCk7Ci0gICAg
ICAgICAgICBjb25zdCBRVHJhbnNmb3JtIHRyYW5zZm9ybSA9IHAtPnRyYW5zZm9ybSgpOwotICAg
ICAgICAgICAgaWYgKHRyYW5zZm9ybS5pc1NjYWxpbmcoKSkgewotICAgICAgICAgICAgICAgIC8v
IElmIHNjYWxpbmcgaXMgcmVxdWlyZWQsIGZpbmQgdGhlIG5ldyBjb29yZCBmb3Igc2hhZG93IG9y
aWdpbiwKLSAgICAgICAgICAgICAgICAvLyBzbyB0aGF0IHRoZSByZWxhdGl2ZSBvZmZzZXQgdG8g
aXRzIHNoYXBlIGlzIGtlcHQuCi0gICAgICAgICAgICAgICAgUVBvaW50RiB0cmFuc2xhdGVkT2Zm
c2V0KG9mZnNldC54KCkgLyB0cmFuc2Zvcm0ubTExKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9mZnNldC55KCkgLyB0cmFuc2Zvcm0ubTIyKCkpOwotICAgICAg
ICAgICAgICAgIHBsYXRmb3JtUGF0aC50cmFuc2xhdGUodHJhbnNsYXRlZE9mZnNldCk7Ci0gICAg
ICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3Ioc2hhZG93LT5tX2Nv
bG9yKSk7Ci0gICAgICAgICAgICAgICAgcGxhdGZvcm1QYXRoLnRyYW5zbGF0ZSgtdHJhbnNsYXRl
ZE9mZnNldCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHAtPnRyYW5z
bGF0ZShvZmZzZXQpOwotICAgICAgICAgICAgICAgIHAtPmZpbGxQYXRoKHBsYXRmb3JtUGF0aCwg
UUNvbG9yKHNoYWRvdy0+bV9jb2xvcikpOwotICAgICAgICAgICAgICAgIHAtPnRyYW5zbGF0ZSgt
b2Zmc2V0KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShvZmZzZXQp
OworICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3Ioc2hhZG93LT5t
X2NvbG9yKSk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW9mZnNldCk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVn
aW5TaGFkb3dMYXllcihwLCBwbGF0Zm9ybVBhdGguY29udHJvbFBvaW50UmVjdCgpKTsKICAgICAg
ICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CkBAIC01NjIsMjUgKzU1MiwxNSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICBDb250
ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7CiAKICAgICAgICAgaWYgKHNoYWRv
dy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cKLSAgICAgICAgICAgICYmICFt
X2NvbW1vbi0+c3RhdGUuc3Ryb2tlUGF0dGVybiAmJiAhbV9jb21tb24tPnN0YXRlLnN0cm9rZUdy
YWRpZW50KQorICAgICAgICAgICAgJiYgIW1fY29tbW9uLT5zdGF0ZS5zdHJva2VQYXR0ZXJuICYm
ICFtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlR3JhZGllbnQKKyAgICAgICAgICAgICYmIHAtPnRyYW5z
Zm9ybSgpLmlzSWRlbnRpdHkoKSkKICAgICAgICAgewogICAgICAgICAgICAgUVBlbiBzaGFkb3dQ
ZW4ocGVuKTsKICAgICAgICAgICAgIHNoYWRvd1Blbi5zZXRDb2xvcihtX2RhdGEtPnNoYWRvdy5t
X2NvbG9yKTsKICAgICAgICAgICAgIFFQb2ludEYgb2Zmc2V0ID0gc2hhZG93LT5vZmZzZXQoKTsK
LSAgICAgICAgICAgIGNvbnN0IFFUcmFuc2Zvcm0gdHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7
Ci0gICAgICAgICAgICBpZiAodHJhbnNmb3JtLmlzU2NhbGluZygpKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gSWYgc2NhbGluZyBpcyByZXF1aXJlZCwgZmluZCB0aGUgbmV3IGNvb3JkIGZvciBzaGFk
b3cgb3JpZ2luLAotICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIHJlbGF0aXZlIG9mZnNl
dCB0byBpdHMgc2hhcGUgaXMga2VwdC4KLSAgICAgICAgICAgICAgICBRUG9pbnRGIHRyYW5zbGF0
ZWRPZmZzZXQob2Zmc2V0LngoKSAvIHRyYW5zZm9ybS5tMTEoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LnkoKSAvIHRyYW5zZm9ybS5tMjIoKSk7Ci0g
ICAgICAgICAgICAgICAgcGxhdGZvcm1QYXRoLnRyYW5zbGF0ZSh0cmFuc2xhdGVkT2Zmc2V0KTsK
LSAgICAgICAgICAgICAgICBwLT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgc2hhZG93UGVuKTsK
LSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKC10cmFuc2xhdGVkT2Zmc2V0
KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG9m
ZnNldCk7Ci0gICAgICAgICAgICAgICAgcC0+c3Ryb2tlUGF0aChwbGF0Zm9ybVBhdGgsIHNoYWRv
d1Blbik7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZzZXQpOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG9mZnNldCk7CisgICAgICAgICAgICBwLT5z
dHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgc2hhZG93UGVuKTsKKyAgICAgICAgICAgIHAtPnRyYW5z
bGF0ZSgtb2Zmc2V0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCBi
b3VuZGluZ1JlY3QgPSBwbGF0Zm9ybVBhdGguY29udHJvbFBvaW50UmVjdCgpOwogICAgICAgICAg
ICAgYm91bmRpbmdSZWN0LmluZmxhdGUocGVuLm1pdGVyTGltaXQoKSArIHBlbi53aWR0aEYoKSk7
CkBAIC03MDksNyArNjg5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIGJy
dXNoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewot
ICAgICAgICAgICAgaWYgKHNoYWRvdy0+bV90eXBlID09IENvbnRleHRTaGFkb3c6OkJsdXJTaGFk
b3cpIHsKKyAgICAgICAgICAgIGlmIChzaGFkb3ctPm1fdHlwZSA9PSBDb250ZXh0U2hhZG93OjpC
bHVyU2hhZG93IHx8ICFwLT50cmFuc2Zvcm0oKS5pc0lkZW50aXR5KCkpIHsKICAgICAgICAgICAg
ICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihw
LCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsK
ICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0T3BhY2l0eShzdGF0aWNfY2Fz
dDxxcmVhbD4oc2hhZG93LT5tX2NvbG9yLmFscGhhKCkpIC8gMjU1KTsKQEAgLTcxNywxNyArNjk3
LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiAgICAgICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBT
b2xpZCByZWN0YW5nbGUgZmlsbCB3aXRoIG5vIGJsdXIgc2hhZG93IGNhbiBiZSBkb25lIGZhc3Rl
cgotICAgICAgICAgICAgICAgIC8vIHdpdGhvdXQgdXNpbmcgdGhlIHNoYWRvdyBsYXllciBhdCBh
bGwuCisgICAgICAgICAgICAgICAgLy8gU29saWQgcmVjdGFuZ2xlIGZpbGwgd2l0aCBubyBibHVy
IHNoYWRvdyBvciB0cmFuc2Zvcm1hdGlvbnMgYXBwbGllZCBjYW4gYmUgZG9uZQorICAgICAgICAg
ICAgICAgIC8vIGZhc3RlciB3aXRob3V0IHVzaW5nIHRoZSBzaGFkb3cgbGF5ZXIgYXQgYWxsLgog
ICAgICAgICAgICAgICAgIFFDb2xvciBzaGFkb3dDb2xvciA9IHNoYWRvdy0+bV9jb2xvcjsKICAg
ICAgICAgICAgICAgICBzaGFkb3dDb2xvci5zZXRBbHBoYUYoc2hhZG93Q29sb3IuYWxwaGFGKCkg
KiBwLT5icnVzaCgpLmNvbG9yKCkuYWxwaGFGKCkpOwotICAgICAgICAgICAgICAgIGNvbnN0IFFU
cmFuc2Zvcm0gdHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0gICAgICAgICAgICAgICAgaWYg
KHRyYW5zZm9ybS5pc1NjYWxpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBwLT5maWxsUmVj
dChub3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHN0YXRpY19jYXN0PHFyZWFsPihzaGFkb3ctPm9m
ZnNldCgpLngoKSkgLyB0cmFuc2Zvcm0ubTExKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8cXJlYWw+KHNoYWRv
dy0+b2Zmc2V0KCkueSgpICAvIHRyYW5zZm9ybS5tMjIoKSkpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaGFkb3dDb2xvcik7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hh
ZG93LT5vZmZzZXQoKSksIHNoYWRvd0NvbG9yKTsKKyAgICAgICAgICAgICAgICBwLT5maWxsUmVj
dChub3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHNoYWRvdy0+b2Zmc2V0KCkpLCBzaGFkb3dDb2xv
cik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNzQ4LDcgKzcyMiw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENv
bG9yJiBjb2xvciwgQ29sb3JTCiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAg
ICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwogCi0gICAgICAgIGlm
IChzaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93KSB7CisgICAgICAg
IGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93ICYmIHAtPnRy
YW5zZm9ybSgpLmlzSWRlbnRpdHkoKSkgewogICAgICAgICAgICAgLy8gV2UgZG8gbm90IG5lZWQg
YW55IGxheWVyIGZvciBzaW1wbGUgc2hhZG93LgogICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9y
bWFsaXplZFJlY3QudHJhbnNsYXRlZChzaGFkb3ctPm9mZnNldCgpKSwgc2hhZG93LT5tX2NvbG9y
KTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTc3NSw3ICs3NDksNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUm
IHRvcExlZgogICAgIGlmIChtX2RhdGEtPmhhc1NoYWRvdygpKSB7CiAgICAgICAgIENvbnRleHRT
aGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFkb3coKTsKIAotICAgICAgICBpZiAoc2hhZG93LT5t
X3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdykgeworICAgICAgICBpZiAoc2hhZG93
LT5tX3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdyAmJiBwLT50cmFuc2Zvcm0oKS5p
c0lkZW50aXR5KCkpIHsKICAgICAgICAgICAgIC8vIFdlIGRvIG5vdCBuZWVkIGFueSBsYXllciBm
b3Igc2ltcGxlIHNoYWRvdy4KICAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShtX2RhdGEtPnNoYWRv
dy5vZmZzZXQoKSk7CiAgICAgICAgICAgICBwLT5maWxsUGF0aChwYXRoLnBsYXRmb3JtUGF0aCgp
LCBRQ29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xvcikpOwpAQCAtOTY1LDggKzkzOSwxMCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coY29uc3QgRmxvYXRTaXplJiBz
aXplLCBmbG9hdCBibHVyLCBjb25zdAogICAgICAgICAvLyBXZSBmbGlwIHRoZSBoZWlnaHQgc2lu
Y2UgQ0cgYW5kIEhUTUw1IENhbnZhcyBoYXZlIG9wcG9zaXRlIFkgYXhpcwogICAgICAgICBtX2Nv
bW1vbi0+c3RhdGUuc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHNpemUud2lkdGgoKSwgLXNpemUu
aGVpZ2h0KCkpOwogICAgICAgICBtX2RhdGEtPnNoYWRvdyA9IENvbnRleHRTaGFkb3coY29sb3Is
IGJsdXIsIEZsb2F0U2l6ZShzaXplLndpZHRoKCksIC1zaXplLmhlaWdodCgpKSk7CisgICAgICAg
IG1fZGF0YS0+c2hhZG93LnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHRydWUpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIG1fZGF0YS0+c2hhZG93ID0gQ29udGV4dFNoYWRvdyhjb2xvciwgYmx1
ciwgRmxvYXRTaXplKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOworICAgICAgICBtX2Rh
dGEtPnNoYWRvdy5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhmYWxzZSk7CiAgICAgfQogfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75453</attachid>
            <date>2010-12-02 19:22:35 -0800</date>
            <delta_ts>2010-12-03 00:00:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50422-20101202192226.patch</filename>
            <type>text/plain</type>
            <size>26168</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NTA4OWY4YmVhMzkxYzIzOWQ5ZGFiMjUwMjA5ZTdhZmQxMjExMjU1Li4wY2E3YzFk
YjdiMzdiYTBhZTgyZjEyZTI2MTAxZTU2NjMwZDUxNzdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMTAtMTItMDIgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBObyBzaGFkb3cg
b2Zmc2V0IHNob3VsZCBiZSBhZmZlY3RlZCBieSBhbnkgdHJhbnNmb3JtYXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNDIyCisKKyAgICAgICAg
T24gYSBjYW52YXMgY29udGV4dCwgc2hhZG93cyBhcmUgY3VycmVudGx5IGFmZmVjdGVkIGJ5IGFs
bAorICAgICAgICB0cmFuc2Zvcm1hdGlvbnMgZXhjZXB0IHNjYWxpbmcuIEFjY29yZGluZyB0byB0
aGUgc3BlYzoKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWNhbnZhcy1lbGVtZW50Lmh0bWwjc2hhZG93cworCisg
ICAgICAgICJUaGUgc2hhZG93T2Zmc2V0WCBhbmQgc2hhZG93T2Zmc2V0WSBhdHRyaWJ1dGVzIHNw
ZWNpZnkgdGhlIGRpc3RhbmNlCisgICAgICAgIHRoYXQgdGhlIHNoYWRvdyB3aWxsIGJlIG9mZnNl
dCBpbiB0aGUgcG9zaXRpdmUgaG9yaXpvbnRhbCBhbmQgcG9zaXRpdmUKKyAgICAgICAgdmVydGlj
YWwgZGlzdGFuY2UgcmVzcGVjdGl2ZWx5LiBUaGVpciB2YWx1ZXMgYXJlIGluIGNvb3JkaW5hdGUg
c3BhY2UKKyAgICAgICAgdW5pdHMuIFRoZXkgYXJlIG5vdCBhZmZlY3RlZCBieSB0aGUgY3VycmVu
dCB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguIgorCisgICAgICAgIE5PVEU6IHRoaXMgYXBwbGllcyBv
bmx5IHRvIGNhbnZhcywgbm90IHRvIGJveCBzaGFkb3dzLgorCisgICAgICAgICogZmFzdC9jYW52
YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5q
czoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxS
ZWN0LXNoYWRvdy5qczoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFz
LXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzOiBOb3cgdXNpbmcKKyAgICAgICAgICBhIGxpbmVX
aWR0aCA+IDEgdG8gbWFrZSBpdCBlYXNpZXIgdG8gdGVzdCBhbmQgbW9yZSBmYWlyIGFtb25nIGFs
bAorICAgICAgICAgIHBvcnRzLCBzaW5jZSB0aGVyZSBjYW4gYmUgZGlmZmVyZW50IHRyYW5zZm9y
bWF0aW9uIHNtb290aG5lc3Mgb3IKKyAgICAgICAgICBhbGlhc2luZyBzZXR0aW5ncy4KKwogMjAx
MC0xMS0zMCAgWGlhb21laSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGF2aWQgSHlhdHQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9j
YW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dApp
bmRleCBlNTYyMDFmNzM4N2U0NjJmNzkyMjVlNjVmOGEzNDAxZTJlMzIzNmZlLi5hMzM3YzRiNjNm
ZjFkZGZlZWQ0NDg4ZTM1MWZmZGFlMTQ5ZWE4NTE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRv
dy1leHBlY3RlZC50eHQKQEAgLTMwLDI3ICszMCwyNyBAQCBQQVNTIGRbM10gaXMgYXJvdW5kIDc2
CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1Mg
ZFszXSBpcyBhcm91bmQgMjAKK1BBU1MgZFszXSBpcyBhcm91bmQgMTQ5CiBQQVNTIGRbMF0gaXMg
MjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQg
MjIKK1BBU1MgZFszXSBpcyBhcm91bmQgMTE2CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0g
aXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjgKK1BBU1MgZFszXSBp
cyBhcm91bmQgMTE1CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJd
IGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjIKK1BBU1MgZFszXSBpcyBhcm91bmQgNzAKIFBB
U1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNd
IGlzIGFyb3VuZCAxNQorUEFTUyBkWzNdIGlzIGFyb3VuZCA3MAogUEFTUyBkWzBdIGlzIDI1NQog
UEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDE3CitQ
QVNTIGRbM10gaXMgYXJvdW5kIDY5CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAK
IFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Njcmlw
dC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LmpzIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cuanMKaW5k
ZXggMDUyODZmNTMyOGI1ZTU5OTgzMjQzNTA3NWRiYmYxZWMxN2U1YTIwNy4uM2NhMzMyMTk5Mjhk
ZGQxYmYyMDIxYzRhMDI0ZDczMDhiY2I4NjUzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cuanMKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxs
UGF0aC1zaGFkb3cuanMKQEAgLTc5LDEzICs3OSwxMyBAQCBzaG91bGRCZSgnZFsxXScsICcwJyk7
CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9
IGN0eC5nZXRJbWFnZURhdGEoMjk5LCAyOTUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdl
RGF0YSgyOTgsIDI5NSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hv
dWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
M10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjk5LCAxLCAxKS5kYXRh
OworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyOTgsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgn
ZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywg
JzAnKTsKQEAgLTk4LDEzICs5OCwxMyBAQCBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRC
ZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4
LmdldEltYWdlRGF0YSgyOTksIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRh
KDI5OCwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRC
ZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgn
ZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OSwgMSwgMSkuZGF0
YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUo
J2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScs
ICcwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMv
Y2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzCmluZGV4IDk5YTFl
NTk0YmQ1OWY3MzY3ZjNjMzBkZWExNjUxZTMyZjNkNGRlNmUuLmY0OTVjOTEwNTViYmExZGNiMTQ2
ODMyZTI4MTYzMDc0YTA0NWU4MjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hh
ZG93LmpzCkBAIC01OCwxMyArNTgsMTMgQEAgc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxk
QmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0
SW1hZ2VEYXRhKDI5OSwgMjk1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4
LCAyOTgsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdk
WzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1
NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDI5OSwgMSwgMSkuZGF0YTsKK2QgPSBj
dHguZ2V0SW1hZ2VEYXRhKDIwMSwgMjk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAn
MjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CkBA
IC03NywxMyArNzcsMTMgQEAgc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0n
LCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFn
ZURhdGEoMjk5LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyOTgsIDQw
NSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0n
LCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAn
NzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTksIDEsIDEpLmRhdGE7CitkID0g
Y3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywg
JzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1z
Y2FsZS1zdHJva2VQYXRoLXNoYWRvdy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Njcmlw
dC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMKaW5kZXggNTE5OGQ5NDE1
MTdkYWI5MmJjMjg5MWM4Mzc0ZjM1YmExYTg5ZDU3OS4uOTFiOTI3Zjk1ZmE4N2RlNWY5ZDY1NWYz
YjJmZmQyZjRiNWRhZDUzNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2Ny
aXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy5qcworKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hh
ZG93LmpzCkBAIC0zNSw2ICszNSw3IEBAIGN0eC5zY2FsZSgyLCAyKTsKIGN0eC5zaGFkb3dPZmZz
ZXRYID0gMTAwOwogY3R4LnNoYWRvd09mZnNldFkgPSAxMDA7CiBjdHguc3Ryb2tlU3R5bGUgPSAn
cmdiYSgwLCAwLCAyNTUsIDEpJzsKK2N0eC5saW5lV2lkdGggPSA1OwogCiBjdHguc2hhZG93Q29s
b3IgPSAncmdiYSgyNTUsIDAsIDAsIDEuMCknOwogY3R4LmJlZ2luUGF0aCgpOwpAQCAtNzYsNzkg
Kzc3LDc5IEBAIGN0eC5zdHJva2UoKTsKIHZhciBkOyAvLyBpbWFnZURhdGEuZGF0YQogCiAvLyBW
ZXJpZnkgc29saWQgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyMDUsIDEsIDEp
LmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyNTAsIDIwMCwgMSwgMSkuZGF0YTsKIHNob3Vs
ZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
Ml0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VE
YXRhKDI5OSwgMjk1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMzAwLCAyOTAs
IDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywg
JzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwog
Ci1kID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDI5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0
SW1hZ2VEYXRhKDIwMCwgMjUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7
CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRC
ZSgnZFszXScsICcyNTUnKTsKIAogLy8gVmVyaWZ5IHNvbGlkIGFscGhhIHNoYWRvdy4KLWQgPSBj
dHguZ2V0SW1hZ2VEYXRhKDIwMCwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURh
dGEoMjAxLCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3Vs
ZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5k
KCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDA1LCAxLCAxKS5k
YXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAxLCA1MDAsIDEsIDEpLmRhdGE7CiBzaG91bGRC
ZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJd
JywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1h
Z2VEYXRhKDIwNSwgNDk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMzAwLCA0
OTksIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFd
JywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywg
Jzc2Jyk7CiAKIC8vIFZlcmlmeSBibHVycnkgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEo
Mzk0LCAyMDgsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0MDQsIDIxMCwgMSwg
MSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcp
Owogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjAnKTsK
K3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzE0OScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSg1
MDMsIDMwMSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwNSwgMjUwLCAxLCAx
KS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7
CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcyMicpOwor
c2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTE2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDUw
NCwgMjUwLCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoNDUwLCAyMDUsIDEsIDEp
LmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsK
IHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzI4Jyk7Citz
aG91bGRCZUFyb3VuZCgnZFszXScsICcxMTUnKTsKIAogLy8gVmVyaWZ5IGJsdXJyeSBhbHBoYSBz
aGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSg0MDUsIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBj
dHguZ2V0SW1hZ2VEYXRhKDUwNSwgNDUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAn
MjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1z
aG91bGRCZUFyb3VuZCgnZFszXScsICcyMicpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzAn
KTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoNDE1LCA0OTUsIDEsIDEpLmRhdGE7CitkID0gY3R4
LmdldEltYWdlRGF0YSg1MDUsIDQ1MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1
NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hv
dWxkQmVBcm91bmQoJ2RbM10nLCAnMTUnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzcwJyk7
CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDQ1MCwgNTA0LCAxLCAxKS5kYXRhOworZCA9IGN0eC5n
ZXRJbWFnZURhdGEoNDUwLCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUn
KTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3Vs
ZEJlQXJvdW5kKCdkWzNdJywgJzE3Jyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICc2OScpOwog
CiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjg0YWZmNzEzZTQyZDg5YmNkMjM4Yzgz
OWU1MzY2NTI3NTAwZWQ3OC4uNTljZTMxM2EyMWU5NDY5NWRhNzI0YzZkMjEzZTVjMDBiNDU3ZWZj
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNiBAQAorMjAxMC0xMi0wMiAgSGVsZGVyIENvcnJlaWEgIDxoZWxkZXJAc2Vu
Y2hhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbUXRdIE5vIHNoYWRvdyBvZmZzZXQgc2hvdWxkIGJlIGFmZmVjdGVkIGJ5IGFueSB0cmFuc2Zv
cm1hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTA0MjIKKworICAgICAgICBPbiBhIGNhbnZhcyBjb250ZXh0LCBzaGFkb3dzIGFyZSBjdXJyZW50
bHkgYWZmZWN0ZWQgYnkgYWxsCisgICAgICAgIHRyYW5zZm9ybWF0aW9ucyBleGNlcHQgc2NhbGlu
Zy4gQWNjb3JkaW5nIHRvIHRoZSBzcGVjOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcv
c3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQu
aHRtbCNzaGFkb3dzCisKKyAgICAgICAgIlRoZSBzaGFkb3dPZmZzZXRYIGFuZCBzaGFkb3dPZmZz
ZXRZIGF0dHJpYnV0ZXMgc3BlY2lmeSB0aGUgZGlzdGFuY2UKKyAgICAgICAgdGhhdCB0aGUgc2hh
ZG93IHdpbGwgYmUgb2Zmc2V0IGluIHRoZSBwb3NpdGl2ZSBob3Jpem9udGFsIGFuZCBwb3NpdGl2
ZQorICAgICAgICB2ZXJ0aWNhbCBkaXN0YW5jZSByZXNwZWN0aXZlbHkuIFRoZWlyIHZhbHVlcyBh
cmUgaW4gY29vcmRpbmF0ZSBzcGFjZQorICAgICAgICB1bml0cy4gVGhleSBhcmUgbm90IGFmZmVj
dGVkIGJ5IHRoZSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4iCisKKyAgICAgICAgTk9U
RTogdGhpcyBhcHBsaWVzIG9ubHkgdG8gY2FudmFzLCBub3QgdG8gYm94IHNoYWRvd3MuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRleHRTaGFkb3c6OkNvbnRleHRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGV4dFNoYWRvdzo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
eHRTaGFkb3c6OnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0
U2hhZG93OjplbmRTaGFkb3dMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KToKKwogMjAxMC0x
MS0zMCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgTWFydGluIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db250ZXh0U2hhZG93LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNo
YWRvdy5jcHAKaW5kZXggODdhMWM1Yzc2M2NlYzU1NjYzNGYyZmJhZmM2NzU5NDI5ZWRjNTlkMS4u
OWMxZjQzZjYyOGI5YzUwNTRjNmNhNWU3OGM4ZTE1N2VjOTYwNDcxZSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwCkBAIC00MSw2ICs0MSw3IEBAIENvbnRl
eHRTaGFkb3c6OkNvbnRleHRTaGFkb3coKQogICAgIDogbV90eXBlKE5vU2hhZG93KQogICAgICwg
bV9ibHVyRGlzdGFuY2UoMCkKICAgICAsIG1fbGF5ZXJDb250ZXh0KDApCisgICAgLCBtX3NoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKGZhbHNlKQogewogfQogCkBAIC0xNTcsNyArMTU4LDggQEAgdm9p
ZCBDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBGbG9hdFJl
Y3QmIGxheWVyQXJlYSwgY29uc3QKICAgICBtX2xheWVyUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qo
ZGVzdGluYXRpb25SZWN0KTsKIAogICAgIC8vIFdlIGV4cGFuZCB0aGUgYXJlYSBieSB0aGUgYmx1
ciByYWRpdXMgdG8gZ2l2ZSBleHRyYSBzcGFjZSBmb3IgdGhlIGJsdXIgdHJhbnNpdGlvbi4KLSAg
ICBtX2xheWVyUmVjdC5pbmZsYXRlKG1fdHlwZSA9PSBCbHVyU2hhZG93ID8gbV9ibHVyRGlzdGFu
Y2UgOiAwKTsKKyAgICBpZiAobV90eXBlID09IEJsdXJTaGFkb3cpCisgICAgICAgIG1fbGF5ZXJS
ZWN0LmluZmxhdGUobV9ibHVyRGlzdGFuY2UpOwogCiAgICAgaWYgKCFjbGlwUmVjdC5jb250YWlu
cyhtX2xheWVyUmVjdCkpIHsKICAgICAgICAgLy8gTm8gbmVlZCB0byBoYXZlIHRoZSBidWZmZXIg
bGFyZ2VyIHRoYW4gdGhlIGNsaXAuCkBAIC0xNzAsNyArMTcyLDcgQEAgdm9pZCBDb250ZXh0U2hh
ZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJl
YSwgY29uc3QKICAgICAgICAgLy8gV2UgYWRqdXN0IGFnYWluIGJlY2F1c2UgdGhlIHBpeGVscyBh
dCB0aGUgYm9yZGVycyBhcmUgc3RpbGwKICAgICAgICAgLy8gcG90ZW50aWFsbHkgYWZmZWN0ZWQg
YnkgdGhlIHBpeGVscyBvdXRzaWRlIHRoZSBidWZmZXIuCiAgICAgICAgIGlmIChtX3R5cGUgPT0g
Qmx1clNoYWRvdykKLSAgICAgICAgICAgIG1fbGF5ZXJSZWN0LmluZmxhdGUobV90eXBlID09IEJs
dXJTaGFkb3cgPyBtX2JsdXJEaXN0YW5jZSA6IDApOworICAgICAgICAgICAgbV9sYXllclJlY3Qu
aW5mbGF0ZShtX2JsdXJEaXN0YW5jZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29udGV4dFNoYWRvdy5oCmluZGV4IDI2ZjBhMzY2NmU4YTk5YzI1Y2Y0YTg2NWQwNDMy
MTQ4MjRkMjM3NTQuLjhhOGM4ZDA4MDYxODI5MWZjYWQxNzE2MzhkMmJjNjM1M2Y3OWVmN2UgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCkBAIC0xMTIsMTcgKzEx
MiwxOSBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShRVCkKICAgICBRUG9pbnRGIG9mZnNldCgp
IHsgcmV0dXJuIFFQb2ludEYobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQuaGVpZ2h0KCkpOyB9
CisgICAgdm9pZCBzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhib29sIGVuYWJsZSkgeyBtX3No
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gZW5hYmxlOyB9CisgICAgYm9vbCBzaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcygpIHsgcmV0dXJuIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KICNlbmRp
ZgogCiAKIHByaXZhdGU6CiAgICAgSW50UmVjdCBtX2xheWVyUmVjdDsKKyAgICBGbG9hdFJlY3Qg
bV9sYXllckFyZWE7CiAgICAgUGxhdGZvcm1JbWFnZSBtX2xheWVySW1hZ2U7CiAgICAgUGxhdGZv
cm1Db250ZXh0IG1fbGF5ZXJDb250ZXh0OwogCiAjaWYgUExBVEZPUk0oUVQpCi0gICAgLy8gVXNl
ZCBmb3IgcmVmZXJlbmNlIHdoZW4gY2FudmFzIHNjYWxlKHgseSkgd2FzIGNhbGxlZC4KLSAgICBG
bG9hdFJlY3QgbV91bnNjYWxlZExheWVyUmVjdDsKKyAgICBib29sIG1fc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXM7CiAjZW5kaWYKIAogICAgIHZvaWQgYmx1ckxheWVySW1hZ2UodW5zaWduZWQgY2hh
ciosIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgaW50IHN0cmlkZSk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHAKaW5kZXggZjdjNzBmNjk1
YmMwZmM0MjUwY2M5YmRjMzVlOWQ1ZThlNjNmOTc0NC4uMGIxYzU5YTA0MmExZDZhNjhiZGIxMDEw
OGNlZWRiYjE2NDNkMzc5MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9Db250ZXh0U2hhZG93UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
Q29udGV4dFNoYWRvd1F0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkNvbnRleHRTaGFkb3cuaCIKIAorI2luY2x1ZGUgPFFEZWJ1Zz4KICNpbmNs
dWRlIDxRUGFpbnRlcj4KICNpbmNsdWRlIDxRVGltZXJFdmVudD4KIApAQCAtMTE0LDEzICsxMTUs
MTQgQEAgUGxhdGZvcm1Db250ZXh0IENvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIoUGxh
dGZvcm1Db250ZXh0IHAsIGNvbnN0IEZsb2F0UmUKICAgICBlbHNlCiAgICAgICAgIGNsaXBSZWN0
ID0gcC0+dHJhbnNmb3JtKCkuaW52ZXJ0ZWQoKS5tYXBSZWN0KHAtPndpbmRvdygpKTsKIAotICAg
IG1fdW5zY2FsZWRMYXllclJlY3QgPSBsYXllckFyZWE7CiAgICAgY2FsY3VsYXRlTGF5ZXJCb3Vu
ZGluZ1JlY3QobGF5ZXJBcmVhLCBJbnRSZWN0KGNsaXBSZWN0LngoKSwgY2xpcFJlY3QueSgpLCBj
bGlwUmVjdC53aWR0aCgpLCBjbGlwUmVjdC5oZWlnaHQoKSkpOwogCiAgICAgLy8gRG9uJ3QgcGFp
bnQgaWYgd2UgYXJlIHRvdGFsbHkgb3V0c2lkZSB0aGUgY2xpcCByZWdpb24uCiAgICAgaWYgKG1f
bGF5ZXJSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBtX2xheWVyQXJl
YSA9IGxheWVyQXJlYTsKKwogICAgIFNoYWRvd0J1ZmZlciogc2hhZG93QnVmZmVyID0gc2NyYXRj
aFNoYWRvd0J1ZmZlcigpOwogICAgIFFJbWFnZSogc2hhZG93SW1hZ2UgPSBzaGFkb3dCdWZmZXIt
PnNjcmF0Y2hJbWFnZShtX2xheWVyUmVjdC5zaXplKCkpOwogICAgIG1fbGF5ZXJJbWFnZSA9IFFJ
bWFnZSgqc2hhZG93SW1hZ2UpOwpAQCAtMTI4LDcgKzEzMCw3IEBAIFBsYXRmb3JtQ29udGV4dCBD
b250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCBwLCBjb25zdCBG
bG9hdFJlCiAgICAgbV9sYXllckNvbnRleHQgPSBuZXcgUVBhaW50ZXI7CiAgICAgbV9sYXllckNv
bnRleHQtPmJlZ2luKCZtX2xheWVySW1hZ2UpOwogICAgIG1fbGF5ZXJDb250ZXh0LT5zZXRGb250
KHAtPmZvbnQoKSk7Ci0gICAgbV9sYXllckNvbnRleHQtPnRyYW5zbGF0ZShtX29mZnNldC53aWR0
aCgpLCBtX29mZnNldC5oZWlnaHQoKSk7CisgICAgbV9sYXllckNvbnRleHQtPnRyYW5zbGF0ZShv
ZmZzZXQoKSk7CiAKICAgICAvLyBUaGUgb3JpZ2luIGlzIG5vdyB0aGUgdG9wIGxlZnQgY29ybmVy
IG9mIHRoZSBzY3JhdGNoIGltYWdlLgogICAgIG1fbGF5ZXJDb250ZXh0LT50cmFuc2xhdGUoLW1f
bGF5ZXJSZWN0LngoKSwgLW1fbGF5ZXJSZWN0LnkoKSk7CkBAIC0xNTYsMTAgKzE1OCwyNiBAQCB2
b2lkIENvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCBwKQogICAg
IH0KIAogICAgIGNvbnN0IFFUcmFuc2Zvcm0gdHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0g
ICAgaWYgKHRyYW5zZm9ybS5pc1NjYWxpbmcoKSkgewotICAgICAgICBxcmVhbCB4ID0gbV91bnNj
YWxlZExheWVyUmVjdC54KCkgKyBtX29mZnNldC53aWR0aCgpICAvIHRyYW5zZm9ybS5tMTEoKSAt
IG1fYmx1ckRpc3RhbmNlOwotICAgICAgICBxcmVhbCB5ID0gbV91bnNjYWxlZExheWVyUmVjdC55
KCkgKyBtX29mZnNldC5oZWlnaHQoKSAvIHRyYW5zZm9ybS5tMjIoKSAtIG1fYmx1ckRpc3RhbmNl
OwotICAgICAgICBwLT5kcmF3SW1hZ2UoUVBvaW50Rih4LCB5KSwgbV9sYXllckltYWdlKTsKKyAg
ICBpZiAobV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAmJiAhdHJhbnNmb3JtLmlzSWRlbnRpdHko
KSkgeworICAgICAgICAvLyBPcGVyYXRpbmcgb24gYSBjYW52YXMsIHdoaWNoIG1lYW5zIHRoYXQg
c2hhZG93IG9mZnNldHMgbXVzdCBub3QgYmUgdHJhbnNmb3JtZWQuCisgICAgICAgIC8vIEZpbmQg
dGhlIHJlY3RzIGZvciB0aGUgaW1hZ2UgYW5kIHNoYWRvdyBhZnRlciB0cmFuc2Zvcm1hdGlvbiAo
a2VlcGluZyB0aGUgc2FtZSBvZmZzZXQpLgorICAgICAgICBjb25zdCBRUmVjdEYgbGF5ZXJJbWFn
ZVNpemVSZWN0KDAsIDAsIG1fbGF5ZXJJbWFnZS53aWR0aCgpLCBtX2xheWVySW1hZ2UuaGVpZ2h0
KCkpOworICAgICAgICBjb25zdCBRUmVjdEYgdHJhbnNmb3JtZWRJbWFnZVJlY3QgPSB0cmFuc2Zv
cm0ubWFwUmVjdChsYXllckltYWdlU2l6ZVJlY3QpOworICAgICAgICBjb25zdCBRUmVjdEYgdHJh
bnNmb3JtZWRTaGFkb3dSZWN0ID0gdHJhbnNmb3JtZWRJbWFnZVJlY3QudHJhbnNsYXRlZChvZmZz
ZXQoKSk7CisKKyAgICAgICAgLy8gQWZ0ZXIga25vd2luZyBpdCwgZmluZCB0aGUgcG9pbnQgd2hl
cmUgd2UgbmVlZCB0byBkcmF3IGl0IG9uIHRoZSBjYW52YXMgc28gdGhhdCBpdAorICAgICAgICAv
LyBlbmRzIHVwIGluIHRoZSBjb3JyZWN0IHBsYWNlIGFmdGVyIHRoZSB0cmFuc2Zvcm1hdGlvbnMu
CisgICAgICAgIGNvbnN0IFFUcmFuc2Zvcm0gaW52ZXJzZVRyYW5zZm9ybSA9IHRyYW5zZm9ybS5p
bnZlcnRlZCgpOworICAgICAgICBjb25zdCBRUG9pbnRGIGxvZ2ljYWxJbWFnZVRvcExlZnQgPSBp
bnZlcnNlVHJhbnNmb3JtLm1hcCh0cmFuc2Zvcm1lZEltYWdlUmVjdC50b3BMZWZ0KCkpOworICAg
ICAgICBjb25zdCBRUG9pbnRGIGxvZ2ljYWxTaGFkb3dUb3BMZWZ0ID0gaW52ZXJzZVRyYW5zZm9y
bS5tYXAodHJhbnNmb3JtZWRTaGFkb3dSZWN0LnRvcExlZnQoKSk7CisKKyAgICAgICAgY29uc3Qg
UVBvaW50RiBpbWFnZVRvcExlZnQgPSBRUmVjdEYobV9sYXllckFyZWEpLnRvcExlZnQoKTsKKyAg
ICAgICAgY29uc3QgUVBvaW50RiBzaGFkb3dUb3BMZWZ0ID0gaW1hZ2VUb3BMZWZ0IC0gUVBvaW50
RihtX2JsdXJEaXN0YW5jZSwgbV9ibHVyRGlzdGFuY2UpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICsgbG9naWNhbFNoYWRvd1RvcExlZnQgLSBsb2dpY2FsSW1hZ2VUb3BM
ZWZ0OworCisgICAgICAgIC8vIEZpbmFsbHksIGRyYXcgdGhlIHNoYWRvdyBvbiB0aGUgcmlnaHQg
Y2FudmFzIHNwYWNlIGNvb3JkIGFuZCBsZXQgdGhlIHRyYW5zZm9ybWF0aW9uCisgICAgICAgIC8v
IG1ha2UgaXQgYXBwZWFyIHdpdGggdGhlIHNhbWUgcmVsYXRpdmUgb2Zmc2V0IHRvIGl0cyBzaGFw
ZS9pbWFnZS4KKyAgICAgICAgcC0+ZHJhd0ltYWdlKHNoYWRvd1RvcExlZnQsIG1fbGF5ZXJJbWFn
ZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHAtPmRyYXdJbWFnZShtX2xheWVyUmVjdC50b3BMZWZ0
KCksIG1fbGF5ZXJJbWFnZSk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc0NvbnRleHRRdC5jcHAKaW5kZXggM2Q4ZWIzYzk3YjAwMDZiYTNjMGU0OTgyMzFj
OWZlNzFkZTFlNDE2Mi4uMWIxMzI0MjFlM2NkMGNjNTI1OGFmNzNjZjUyYmUwZDE1MmIwYTdkNiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRR
dC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRR
dC5jcHAKQEAgLTE3Niw2ICsxNzYsMjIgQEAgc3RhdGljIGlubGluZSBRdDo6RmlsbFJ1bGUgdG9R
dEZpbGxSdWxlKFdpbmRSdWxlIHJ1bGUpCiAgICAgcmV0dXJuIFF0OjpPZGRFdmVuRmlsbDsKIH0K
IAorc3RhdGljIGlubGluZSBib29sIG11c3RVc2VDb250ZXh0U2hhZG93KFFQYWludGVyKiBwYWlu
dGVyLCBDb250ZXh0U2hhZG93KiBzaGFkb3cpCit7CisgICAgaWYgKHNoYWRvdy0+bV90eXBlID09
IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cpCisgICAgICAgIC8vIFdlIGNhbid0IGF2b2lkIENv
bnRleHRTaGFkb3csIHNpbmNlIHRoZSBzaGFkb3cgaGFzIGJsdXIuCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmICghc2hhZG93LT5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKQorICAgICAg
ICAvLyBXZSBjYW4gYXZvaWQgQ29udGV4dFNoYWRvdyBhbmQgb3B0aW1pemUsIHNpbmNlIHdlJ3Jl
IG5vdCBkcmF3aW5nIG9uIGEgY2FudmFzIGFuZCBib3gKKyAgICAgICAgLy8gc2hhZG93cyBhcmUg
YWZmZWN0ZWQgYnkgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4KKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmIChwYWludGVyLT50cmFuc2Zvcm0oKS5pc0lkZW50aXR5KCkpCisgICAgICAg
IC8vIFdlIGNhbiBhdm9pZCBDb250ZXh0U2hhZG93LCBzaW5jZSB0aGVyZSBhcmUgbm8gdHJhbnNm
b3JtYXRpb25zIHRvIGFwcGx5IHRvIHRoZSBjYW52YXMuCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAvLyBPdGhlcndpc2UsIG5vIGNoYW5jZSBhdm9pZGluZyBDb250ZXh0U2hhZG93LgorICAg
IHJldHVybiB0cnVlOworfQorCiBjbGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUg
OiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZShRUGFpbnRlciosIGNvbnN0IFFDb2xvciYgaW5pdGlhbFNvbGlkQ29sb3IpOwpA
QCAtNTA5LDMxICs1MjUsMjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0
IFBhdGgmIHBhdGgpCiAKICAgICBpZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAgICAgICBD
b250ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7Ci0gICAgICAgIGlmIChzaGFk
b3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93Ci0gICAgICAgICAgICAmJiAh
bV9jb21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuICYmICFtX2NvbW1vbi0+c3RhdGUuZmlsbEdyYWRp
ZW50KQorICAgICAgICBpZiAobXVzdFVzZUNvbnRleHRTaGFkb3cocCwgc2hhZG93KQorICAgICAg
ICAgICAgfHwgbV9jb21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuCisgICAgICAgICAgICB8fCBtX2Nv
bW1vbi0+c3RhdGUuZmlsbEdyYWRpZW50KQogICAgICAgICB7Ci0gICAgICAgICAgICBRUG9pbnRG
IG9mZnNldCA9IHNoYWRvdy0+b2Zmc2V0KCk7Ci0gICAgICAgICAgICBjb25zdCBRVHJhbnNmb3Jt
IHRyYW5zZm9ybSA9IHAtPnRyYW5zZm9ybSgpOwotICAgICAgICAgICAgaWYgKHRyYW5zZm9ybS5p
c1NjYWxpbmcoKSkgewotICAgICAgICAgICAgICAgIC8vIElmIHNjYWxpbmcgaXMgcmVxdWlyZWQs
IGZpbmQgdGhlIG5ldyBjb29yZCBmb3Igc2hhZG93IG9yaWdpbiwKLSAgICAgICAgICAgICAgICAv
LyBzbyB0aGF0IHRoZSByZWxhdGl2ZSBvZmZzZXQgdG8gaXRzIHNoYXBlIGlzIGtlcHQuCi0gICAg
ICAgICAgICAgICAgUVBvaW50RiB0cmFuc2xhdGVkT2Zmc2V0KG9mZnNldC54KCkgLyB0cmFuc2Zv
cm0ubTExKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNl
dC55KCkgLyB0cmFuc2Zvcm0ubTIyKCkpOwotICAgICAgICAgICAgICAgIHBsYXRmb3JtUGF0aC50
cmFuc2xhdGUodHJhbnNsYXRlZE9mZnNldCk7Ci0gICAgICAgICAgICAgICAgcC0+ZmlsbFBhdGgo
cGxhdGZvcm1QYXRoLCBRQ29sb3Ioc2hhZG93LT5tX2NvbG9yKSk7Ci0gICAgICAgICAgICAgICAg
cGxhdGZvcm1QYXRoLnRyYW5zbGF0ZSgtdHJhbnNsYXRlZE9mZnNldCk7Ci0gICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShvZmZzZXQpOwotICAgICAgICAg
ICAgICAgIHAtPmZpbGxQYXRoKHBsYXRmb3JtUGF0aCwgUUNvbG9yKHNoYWRvdy0+bV9jb2xvcikp
OwotICAgICAgICAgICAgICAgIHAtPnRyYW5zbGF0ZSgtb2Zmc2V0KTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0g
c2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHAsIHBsYXRmb3JtUGF0aC5jb250cm9sUG9pbnRSZWN0
KCkpOwogICAgICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAgICBz
aGFkb3dQYWludGVyLT5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9k
ZV9Tb3VyY2UpOwogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmZpbGxQYXRoKHBsYXRm
b3JtUGF0aCwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKICAgICAgICAgICAgICAg
ICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgUVBvaW50RiBvZmZzZXQgPSBzaGFkb3ctPm9mZnNldCgpOworICAg
ICAgICAgICAgcC0+dHJhbnNsYXRlKG9mZnNldCk7CisgICAgICAgICAgICBwLT5maWxsUGF0aChw
bGF0Zm9ybVBhdGgsIFFDb2xvcihzaGFkb3ctPm1fY29sb3IpKTsKKyAgICAgICAgICAgIHAtPnRy
YW5zbGF0ZSgtb2Zmc2V0KTsKICAgICAgICAgfQogCiAgICAgfQpAQCAtNTYwLDI4ICs1NjYsMTAg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAog
ICAgIGlmIChtX2RhdGEtPmhhc1NoYWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNo
YWRvdyA9IGNvbnRleHRTaGFkb3coKTsKLQotICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgIT0g
Q29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdwotICAgICAgICAgICAgJiYgIW1fY29tbW9uLT5zdGF0
ZS5zdHJva2VQYXR0ZXJuICYmICFtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlR3JhZGllbnQpCisgICAg
ICAgIGlmIChtdXN0VXNlQ29udGV4dFNoYWRvdyhwLCBzaGFkb3cpCisgICAgICAgICAgICB8fCBt
X2NvbW1vbi0+c3RhdGUuc3Ryb2tlUGF0dGVybgorICAgICAgICAgICAgfHwgbV9jb21tb24tPnN0
YXRlLnN0cm9rZUdyYWRpZW50KQogICAgICAgICB7Ci0gICAgICAgICAgICBRUGVuIHNoYWRvd1Bl
bihwZW4pOwotICAgICAgICAgICAgc2hhZG93UGVuLnNldENvbG9yKG1fZGF0YS0+c2hhZG93Lm1f
Y29sb3IpOwotICAgICAgICAgICAgUVBvaW50RiBvZmZzZXQgPSBzaGFkb3ctPm9mZnNldCgpOwot
ICAgICAgICAgICAgY29uc3QgUVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBwLT50cmFuc2Zvcm0oKTsK
LSAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5nKCkpIHsKLSAgICAgICAgICAgICAg
ICAvLyBJZiBzY2FsaW5nIGlzIHJlcXVpcmVkLCBmaW5kIHRoZSBuZXcgY29vcmQgZm9yIHNoYWRv
dyBvcmlnaW4sCi0gICAgICAgICAgICAgICAgLy8gc28gdGhhdCB0aGUgcmVsYXRpdmUgb2Zmc2V0
IHRvIGl0cyBzaGFwZSBpcyBrZXB0LgotICAgICAgICAgICAgICAgIFFQb2ludEYgdHJhbnNsYXRl
ZE9mZnNldChvZmZzZXQueCgpIC8gdHJhbnNmb3JtLm0xMSgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQueSgpIC8gdHJhbnNmb3JtLm0yMigpKTsKLSAg
ICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKHRyYW5zbGF0ZWRPZmZzZXQpOwot
ICAgICAgICAgICAgICAgIHAtPnN0cm9rZVBhdGgocGxhdGZvcm1QYXRoLCBzaGFkb3dQZW4pOwot
ICAgICAgICAgICAgICAgIHBsYXRmb3JtUGF0aC50cmFuc2xhdGUoLXRyYW5zbGF0ZWRPZmZzZXQp
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zm
c2V0KTsKLSAgICAgICAgICAgICAgICBwLT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgc2hhZG93
UGVuKTsKLSAgICAgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW9mZnNldCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBGbG9hdFJlY3QgYm91bmRpbmdSZWN0
ID0gcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKTsKICAgICAgICAgICAgIGJvdW5kaW5n
UmVjdC5pbmZsYXRlKHBlbi5taXRlckxpbWl0KCkgKyBwZW4ud2lkdGhGKCkpOwogICAgICAgICAg
ICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwg
Ym91bmRpbmdSZWN0KTsKQEAgLTU5MCw2ICs1NzgsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgICAgICBzaGFkb3dQYWlu
dGVyLT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgcGVuKTsKICAgICAgICAgICAgICAgICBzaGFk
b3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgUVBlbiBzaGFkb3dQZW4ocGVuKTsKKyAgICAgICAgICAgIHNoYWRvd1Blbi5z
ZXRDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9yKTsKKyAgICAgICAgICAgIFFQb2ludEYgb2Zm
c2V0ID0gc2hhZG93LT5vZmZzZXQoKTsKKyAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShvZmZzZXQp
OworICAgICAgICAgICAgcC0+c3Ryb2tlUGF0aChwbGF0Zm9ybVBhdGgsIHNoYWRvd1Blbik7Cisg
ICAgICAgICAgICBwLT50cmFuc2xhdGUoLW9mZnNldCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTcwOSw3ICs3MDQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogICAgICAgICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwgYnJ1c2gp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChtX2RhdGEtPmhhc1NoYWRvdygpKSB7Ci0gICAg
ICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgPT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdykg
eworICAgICAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykpIHsKICAg
ICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFk
b3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAgICAgICAgaWYgKHNoYWRvd1Bh
aW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0T3BhY2l0eShz
dGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5tX2NvbG9yLmFscGhhKCkpIC8gMjU1KTsKQEAgLTcx
NywxNyArNzEyLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiAgICAgICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIo
cCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAvLyBTb2xpZCByZWN0YW5nbGUgZmlsbCB3aXRoIG5vIGJsdXIgc2hhZG93IGNhbiBiZSBk
b25lIGZhc3RlcgotICAgICAgICAgICAgICAgIC8vIHdpdGhvdXQgdXNpbmcgdGhlIHNoYWRvdyBs
YXllciBhdCBhbGwuCisgICAgICAgICAgICAgICAgLy8gU29saWQgcmVjdGFuZ2xlIGZpbGwgd2l0
aCBubyBibHVyIHNoYWRvdyBvciB0cmFuc2Zvcm1hdGlvbnMgYXBwbGllZCBjYW4gYmUgZG9uZQor
ICAgICAgICAgICAgICAgIC8vIGZhc3RlciB3aXRob3V0IHVzaW5nIHRoZSBzaGFkb3cgbGF5ZXIg
YXQgYWxsLgogICAgICAgICAgICAgICAgIFFDb2xvciBzaGFkb3dDb2xvciA9IHNoYWRvdy0+bV9j
b2xvcjsKICAgICAgICAgICAgICAgICBzaGFkb3dDb2xvci5zZXRBbHBoYUYoc2hhZG93Q29sb3Iu
YWxwaGFGKCkgKiBwLT5icnVzaCgpLmNvbG9yKCkuYWxwaGFGKCkpOwotICAgICAgICAgICAgICAg
IGNvbnN0IFFUcmFuc2Zvcm0gdHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHRyYW5zZm9ybS5pc1NjYWxpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBw
LT5maWxsUmVjdChub3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHN0YXRpY19jYXN0PHFyZWFsPihz
aGFkb3ctPm9mZnNldCgpLngoKSkgLyB0cmFuc2Zvcm0ubTExKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8cXJl
YWw+KHNoYWRvdy0+b2Zmc2V0KCkueSgpICAvIHRyYW5zZm9ybS5tMjIoKSkpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dDb2xvcik7Ci0gICAgICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5z
bGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvd0NvbG9yKTsKKyAgICAgICAgICAgICAgICBw
LT5maWxsUmVjdChub3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHNoYWRvdy0+b2Zmc2V0KCkpLCBz
aGFkb3dDb2xvcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNzQ3LDE4ICs3MzYs
MTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclMKIAogICAgIGlmIChtX2RhdGEtPmhhc1NoYWRv
dygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFkb3coKTsK
LQotICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRv
dykgewotICAgICAgICAgICAgLy8gV2UgZG8gbm90IG5lZWQgYW55IGxheWVyIGZvciBzaW1wbGUg
c2hhZG93LgotICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJhbnNsYXRl
ZChzaGFkb3ctPm9mZnNldCgpKSwgc2hhZG93LT5tX2NvbG9yKTsKLSAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykpIHsKICAgICAgICAg
ICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHAs
IG5vcm1hbGl6ZWRSZWN0KTsKICAgICAgICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAgICAg
ICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpD
b21wb3NpdGlvbk1vZGVfU291cmNlKTsKICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5m
aWxsUmVjdChub3JtYWxpemVkUmVjdCwgc2hhZG93LT5tX2NvbG9yKTsKICAgICAgICAgICAgICAg
ICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQotICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJh
bnNsYXRlZChzaGFkb3ctPm9mZnNldCgpKSwgc2hhZG93LT5tX2NvbG9yKTsKICAgICB9CiAKICAg
ICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwgbV9kYXRhLT5zb2xpZENvbG9yKTsKQEAgLTc3
NCwxOSArNzYwLDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29u
c3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmCiAgICAgUVBhaW50ZXIqIHAg
PSBtX2RhdGEtPnAoKTsKICAgICBpZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAgICAgICBD
b250ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7Ci0KLSAgICAgICAgaWYgKHNo
YWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cpIHsKLSAgICAgICAgICAg
IC8vIFdlIGRvIG5vdCBuZWVkIGFueSBsYXllciBmb3Igc2ltcGxlIHNoYWRvdy4KLSAgICAgICAg
ICAgIHAtPnRyYW5zbGF0ZShtX2RhdGEtPnNoYWRvdy5vZmZzZXQoKSk7Ci0gICAgICAgICAgICBw
LT5maWxsUGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3IobV9kYXRhLT5zaGFkb3cubV9j
b2xvcikpOwotICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1tX2RhdGEtPnNoYWRvdy5vZmZzZXQo
KSk7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtdXN0VXNlQ29udGV4dFNoYWRvdyhw
LCBzaGFkb3cpKSB7CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRv
dy0+YmVnaW5TaGFkb3dMYXllcihwLCByZWN0KTsKICAgICAgICAgICAgIGlmIChzaGFkb3dQYWlu
dGVyKSB7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2Rl
KFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsKICAgICAgICAgICAgICAgICBzaGFk
b3dQYWludGVyLT5maWxsUGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3IobV9kYXRhLT5z
aGFkb3cubV9jb2xvcikpOwogICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIo
cCk7CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwLT50cmFu
c2xhdGUobV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOworICAgICAgICAgICAgcC0+ZmlsbFBhdGgo
cGF0aC5wbGF0Zm9ybVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKKyAg
ICAgICAgICAgIHAtPnRyYW5zbGF0ZSgtbV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOwogICAgICAg
ICB9CiAgICAgfQogICAgIHAtPmZpbGxQYXRoKHBhdGgucGxhdGZvcm1QYXRoKCksIFFDb2xvcihj
b2xvcikpOwpAQCAtOTY1LDkgKzk0OSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxh
dGZvcm1TaGFkb3coY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBibHVyLCBjb25zdAogICAg
ICAgICAvLyBXZSBmbGlwIHRoZSBoZWlnaHQgc2luY2UgQ0cgYW5kIEhUTUw1IENhbnZhcyBoYXZl
IG9wcG9zaXRlIFkgYXhpcwogICAgICAgICBtX2NvbW1vbi0+c3RhdGUuc2hhZG93T2Zmc2V0ID0g
RmxvYXRTaXplKHNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpOwogICAgICAgICBtX2RhdGEt
PnNoYWRvdyA9IENvbnRleHRTaGFkb3coY29sb3IsIGJsdXIsIEZsb2F0U2l6ZShzaXplLndpZHRo
KCksIC1zaXplLmhlaWdodCgpKSk7Ci0gICAgfSBlbHNlIHsKKyAgICB9IGVsc2UKICAgICAgICAg
bV9kYXRhLT5zaGFkb3cgPSBDb250ZXh0U2hhZG93KGNvbG9yLCBibHVyLCBGbG9hdFNpemUoc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7Ci0gICAgfQorCisgICAgbV9kYXRhLT5zaGFkb3cu
c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMobV9jb21tb24tPnN0YXRlLnNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyUGxhdGZvcm1TaGFk
b3coKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75472</attachid>
            <date>2010-12-03 01:13:41 -0800</date>
            <delta_ts>2010-12-03 02:13:56 -0800</delta_ts>
            <desc>Resolve conflicts and remove QDebug leftovers</desc>
            <filename>bug-50422-20101203011340.patch</filename>
            <type>text/plain</type>
            <size>26415</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwOTEwYjcwZjAwOWYwNzgxYmY5NjNmOGEyNTNmNjk5ODM3ZjUxY2U3Li5mZGJmY2Ji
NzY1NzI3NzZlYzdkMjk2MmExMjFlOThjOTAwNmQwZTI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMTAtMTItMDMgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBObyBzaGFkb3cg
b2Zmc2V0IHNob3VsZCBiZSBhZmZlY3RlZCBieSBhbnkgdHJhbnNmb3JtYXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNDIyCisKKyAgICAgICAg
T24gYSBjYW52YXMgY29udGV4dCwgc2hhZG93cyBhcmUgY3VycmVudGx5IGFmZmVjdGVkIGJ5IGFs
bAorICAgICAgICB0cmFuc2Zvcm1hdGlvbnMgZXhjZXB0IHNjYWxpbmcuIEFjY29yZGluZyB0byB0
aGUgc3BlYzoKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWNhbnZhcy1lbGVtZW50Lmh0bWwjc2hhZG93cworCisg
ICAgICAgICJUaGUgc2hhZG93T2Zmc2V0WCBhbmQgc2hhZG93T2Zmc2V0WSBhdHRyaWJ1dGVzIHNw
ZWNpZnkgdGhlIGRpc3RhbmNlCisgICAgICAgIHRoYXQgdGhlIHNoYWRvdyB3aWxsIGJlIG9mZnNl
dCBpbiB0aGUgcG9zaXRpdmUgaG9yaXpvbnRhbCBhbmQgcG9zaXRpdmUKKyAgICAgICAgdmVydGlj
YWwgZGlzdGFuY2UgcmVzcGVjdGl2ZWx5LiBUaGVpciB2YWx1ZXMgYXJlIGluIGNvb3JkaW5hdGUg
c3BhY2UKKyAgICAgICAgdW5pdHMuIFRoZXkgYXJlIG5vdCBhZmZlY3RlZCBieSB0aGUgY3VycmVu
dCB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguIgorCisgICAgICAgIE5PVEU6IHRoaXMgYXBwbGllcyBv
bmx5IHRvIGNhbnZhcywgbm90IHRvIGJveCBzaGFkb3dzLgorCisgICAgICAgICogZmFzdC9jYW52
YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5q
czoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxS
ZWN0LXNoYWRvdy5qczoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFz
LXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzOiBOb3cgdXNpbmcKKyAgICAgICAgICBhIGxpbmVX
aWR0aCA+IDEgdG8gbWFrZSBpdCBlYXNpZXIgdG8gdGVzdCBhbmQgbW9yZSBmYWlyIGFtb25nIGFs
bAorICAgICAgICAgIHBvcnRzLCBzaW5jZSB0aGVyZSBjYW4gYmUgZGlmZmVyZW50IHRyYW5zZm9y
bWF0aW9uIHNtb290aG5lc3Mgb3IKKyAgICAgICAgICBhbGlhc2luZyBzZXR0aW5ncy4KKwogMjAx
MC0xMi0wMiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3ct
ZXhwZWN0ZWQudHh0CmluZGV4IGU1NjIwMWY3Mzg3ZTQ2MmY3OTIyNWU2NWY4YTM0MDFlMmUzMjM2
ZmUuLmEzMzdjNGI2M2ZmMWRkZmVlZDQ0ODhlMzUxZmZkYWUxNDllYTg1MTYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0
cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dApAQCAtMzAsMjcgKzMwLDI3IEBAIFBBU1MgZFsz
XSBpcyBhcm91bmQgNzYKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRb
Ml0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMAorUEFTUyBkWzNdIGlzIGFyb3VuZCAxNDkK
IFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBk
WzNdIGlzIGFyb3VuZCAyMgorUEFTUyBkWzNdIGlzIGFyb3VuZCAxMTYKIFBBU1MgZFswXSBpcyAy
NTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAy
OAorUEFTUyBkWzNdIGlzIGFyb3VuZCAxMTUKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBp
cyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMgorUEFTUyBkWzNdIGlz
IGFyb3VuZCA3MAogUEFTUyBkWzBdIGlzIDI1NQogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBp
cyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDE1CitQQVNTIGRbM10gaXMgYXJvdW5kIDcwCiBQQVNT
IGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBp
cyBhcm91bmQgMTcKK1BBU1MgZFszXSBpcyBhcm91bmQgNjkKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cuanMgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxQYXRo
LXNoYWRvdy5qcwppbmRleCAwNTI4NmY1MzI4YjVlNTk5ODMyNDM1MDc1ZGJiZjFlYzE3ZTVhMjA3
Li4zY2EzMzIxOTkyOGRkZDFiZjIwMjFjNGEwMjRkNzMwOGJjYjg2NTMzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxQYXRo
LXNoYWRvdy5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2Fu
dmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcwpAQCAtNzksMTMgKzc5LDEzIEBAIHNob3VsZEJl
KCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywg
JzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDI5NSwgMSwgMSkuZGF0YTsKK2Qg
PSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgMjk1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0n
LCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7
CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAy
OTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDI5OCwgMSwgMSkuZGF0
YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOwpAQCAtOTgsMTMgKzk4LDEzIEBAIHNob3VsZEJlKCdkWzFdJywg
JzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2
Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0
eC5nZXRJbWFnZURhdGEoMjk4LCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcy
NTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNo
b3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwg
NDk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTgsIDEsIDEpLmRh
dGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNo
b3VsZEJlKCdkWzJdJywgJzAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzIGIvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUmVjdC1zaGFkb3cu
anMKaW5kZXggOTlhMWU1OTRiZDU5ZjczNjdmM2MzMGRlYTE2NTFlMzJmM2Q0ZGU2ZS4uZjQ5NWM5
MTA1NWJiYTFkY2IxNDY4MzJlMjgxNjMwNzRhMDQ1ZTgyOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUmVjdC1zaGFkb3cu
anMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2Fs
ZS1maWxsUmVjdC1zaGFkb3cuanMKQEAgLTU4LDEzICs1OCwxMyBAQCBzaG91bGRCZSgnZFsxXScs
ICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsK
IAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCAyOTUsIDEsIDEpLmRhdGE7CitkID0gY3R4Lmdl
dEltYWdlRGF0YSgyOTgsIDI5OCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScp
Owogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxk
QmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjk5LCAxLCAx
KS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAxLCAyOTgsIDEsIDEpLmRhdGE7CiBzaG91
bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdk
WzJdJywgJzAnKTsKQEAgLTc3LDEzICs3NywxMyBAQCBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBz
aG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1k
ID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1h
Z2VEYXRhKDI5OCwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBz
aG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFy
b3VuZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OSwgMSwg
MSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk4LCAxLCAxKS5kYXRhOwogc2hv
dWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgn
ZFsyXScsICcwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQt
dGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy5qcwpp
bmRleCA1MTk4ZDk0MTUxN2RhYjkyYmMyODkxYzgzNzRmMzViYTFhODlkNTc5Li45MWI5MjdmOTVm
YTg3ZGU1ZjlkNjU1ZjNiMmZmZDJmNGI1ZGFkNTM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93Lmpz
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUt
c3Ryb2tlUGF0aC1zaGFkb3cuanMKQEAgLTM1LDYgKzM1LDcgQEAgY3R4LnNjYWxlKDIsIDIpOwog
Y3R4LnNoYWRvd09mZnNldFggPSAxMDA7CiBjdHguc2hhZG93T2Zmc2V0WSA9IDEwMDsKIGN0eC5z
dHJva2VTdHlsZSA9ICdyZ2JhKDAsIDAsIDI1NSwgMSknOworY3R4LmxpbmVXaWR0aCA9IDU7CiAK
IGN0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwgMS4wKSc7CiBjdHguYmVnaW5QYXRo
KCk7CkBAIC03Niw3OSArNzcsNzkgQEAgY3R4LnN0cm9rZSgpOwogdmFyIGQ7IC8vIGltYWdlRGF0
YS5kYXRhCiAKIC8vIFZlcmlmeSBzb2xpZCBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgy
MDAsIDIwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI1MCwgMjAwLCAxLCAx
KS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7
CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9
IGN0eC5nZXRJbWFnZURhdGEoMjk5LCAyOTUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdl
RGF0YSgzMDAsIDI5MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hv
dWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
M10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwgMjk5LCAxLCAxKS5kYXRh
OworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyNTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgn
ZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywg
JzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCiAvLyBWZXJpZnkgc29saWQgYWxwaGEg
c2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCA0MDUsIDEsIDEpLmRhdGE7CitkID0g
Y3R4LmdldEltYWdlRGF0YSgyMDEsIDQwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywg
JzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwog
c2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5
LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDUwMCwgMSwgMSku
ZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwog
c2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAot
ZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldElt
YWdlRGF0YSgzMDAsIDQ5OSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwog
c2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVB
cm91bmQoJ2RbM10nLCAnNzYnKTsKIAogLy8gVmVyaWZ5IGJsdXJyeSBzaGFkb3cuCi1kID0gY3R4
LmdldEltYWdlRGF0YSgzOTQsIDIwOCwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRh
KDQwNCwgMjEwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRC
ZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgn
ZFszXScsICcyMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTQ5Jyk7CiAKLWQgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDUwMywgMzAxLCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEo
NTA1LCAyNTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJl
KCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdk
WzNdJywgJzIyJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMTYnKTsKIAotZCA9IGN0eC5n
ZXRJbWFnZURhdGEoNTA0LCAyNTAsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0
NTAsIDIwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUo
J2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2Rb
M10nLCAnMjgnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzExNScpOwogCiAvLyBWZXJpZnkg
Ymx1cnJ5IGFscGhhIHNoYWRvdy4KLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDQwNSwgNDA1LCAxLCAx
KS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA1LCA0NTAsIDEsIDEpLmRhdGE7CiBzaG91
bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdk
WzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzIyJyk7CitzaG91bGRCZUFyb3Vu
ZCgnZFszXScsICc3MCcpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSg0MTUsIDQ5NSwgMSwgMSku
ZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwNSwgNDUwLCAxLCAxKS5kYXRhOwogc2hvdWxk
QmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsy
XScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcxNScpOworc2hvdWxkQmVBcm91bmQo
J2RbM10nLCAnNzAnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoNDUwLCA1MDQsIDEsIDEpLmRh
dGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDQwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJl
KCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0n
LCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTcnKTsKK3Nob3VsZEJlQXJvdW5kKCdk
WzNdJywgJzY5Jyk7CiAKIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlYjRiYzczYTVl
MWZhOThhYzBhZGU1NzY3MWRlYjkzY2JjMjIwMDBjLi44YWE3MmM2MzhhMzBkYjYyZDA0YWNhZmYx
OGEyY2JlZTY4NTdhMmNhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEwLTEyLTAzICBIZWxkZXIgQ29ycmVp
YSAgPGhlbGRlckBzZW5jaGEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtRdF0gTm8gc2hhZG93IG9mZnNldCBzaG91bGQgYmUgYWZmZWN0ZWQg
YnkgYW55IHRyYW5zZm9ybWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MDQyMgorCisgICAgICAgIE9uIGEgY2FudmFzIGNvbnRleHQsIHNoYWRv
d3MgYXJlIGN1cnJlbnRseSBhZmZlY3RlZCBieSBhbGwKKyAgICAgICAgdHJhbnNmb3JtYXRpb25z
IGV4Y2VwdCBzY2FsaW5nLiBBY2NvcmRpbmcgdG8gdGhlIHNwZWM6CisgICAgICAgIGh0dHA6Ly93
d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1j
YW52YXMtZWxlbWVudC5odG1sI3NoYWRvd3MKKworICAgICAgICAiVGhlIHNoYWRvd09mZnNldFgg
YW5kIHNoYWRvd09mZnNldFkgYXR0cmlidXRlcyBzcGVjaWZ5IHRoZSBkaXN0YW5jZQorICAgICAg
ICB0aGF0IHRoZSBzaGFkb3cgd2lsbCBiZSBvZmZzZXQgaW4gdGhlIHBvc2l0aXZlIGhvcml6b250
YWwgYW5kIHBvc2l0aXZlCisgICAgICAgIHZlcnRpY2FsIGRpc3RhbmNlIHJlc3BlY3RpdmVseS4g
VGhlaXIgdmFsdWVzIGFyZSBpbiBjb29yZGluYXRlIHNwYWNlCisgICAgICAgIHVuaXRzLiBUaGV5
IGFyZSBub3QgYWZmZWN0ZWQgYnkgdGhlIGN1cnJlbnQgdHJhbnNmb3JtYXRpb24gbWF0cml4LiIK
KworICAgICAgICBOT1RFOiB0aGlzIGFwcGxpZXMgb25seSB0byBjYW52YXMsIG5vdCB0byBib3gg
c2hhZG93cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6Q29udGV4dFNoYWRvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjptdXN0VXNlQ29udGV4dFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmZpbGxQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tl
UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3cpOgorCiAyMDEw
LTEyLTAyICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29udGV4dFNoYWRvdy5jcHAKaW5kZXggODdhMWM1Yzc2M2NlYzU1NjYzNGYyZmJhZmM2NzU5
NDI5ZWRjNTlkMS4uOWMxZjQzZjYyOGI5YzUwNTRjNmNhNWU3OGM4ZTE1N2VjOTYwNDcxZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwCkBAIC00MSw2ICs0
MSw3IEBAIENvbnRleHRTaGFkb3c6OkNvbnRleHRTaGFkb3coKQogICAgIDogbV90eXBlKE5vU2hh
ZG93KQogICAgICwgbV9ibHVyRGlzdGFuY2UoMCkKICAgICAsIG1fbGF5ZXJDb250ZXh0KDApCisg
ICAgLCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZhbHNlKQogewogfQogCkBAIC0xNTcsNyAr
MTU4LDggQEAgdm9pZCBDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChj
b25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QKICAgICBtX2xheWVyUmVjdCA9IGVuY2xv
c2luZ0ludFJlY3QoZGVzdGluYXRpb25SZWN0KTsKIAogICAgIC8vIFdlIGV4cGFuZCB0aGUgYXJl
YSBieSB0aGUgYmx1ciByYWRpdXMgdG8gZ2l2ZSBleHRyYSBzcGFjZSBmb3IgdGhlIGJsdXIgdHJh
bnNpdGlvbi4KLSAgICBtX2xheWVyUmVjdC5pbmZsYXRlKG1fdHlwZSA9PSBCbHVyU2hhZG93ID8g
bV9ibHVyRGlzdGFuY2UgOiAwKTsKKyAgICBpZiAobV90eXBlID09IEJsdXJTaGFkb3cpCisgICAg
ICAgIG1fbGF5ZXJSZWN0LmluZmxhdGUobV9ibHVyRGlzdGFuY2UpOwogCiAgICAgaWYgKCFjbGlw
UmVjdC5jb250YWlucyhtX2xheWVyUmVjdCkpIHsKICAgICAgICAgLy8gTm8gbmVlZCB0byBoYXZl
IHRoZSBidWZmZXIgbGFyZ2VyIHRoYW4gdGhlIGNsaXAuCkBAIC0xNzAsNyArMTcyLDcgQEAgdm9p
ZCBDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBGbG9hdFJl
Y3QmIGxheWVyQXJlYSwgY29uc3QKICAgICAgICAgLy8gV2UgYWRqdXN0IGFnYWluIGJlY2F1c2Ug
dGhlIHBpeGVscyBhdCB0aGUgYm9yZGVycyBhcmUgc3RpbGwKICAgICAgICAgLy8gcG90ZW50aWFs
bHkgYWZmZWN0ZWQgYnkgdGhlIHBpeGVscyBvdXRzaWRlIHRoZSBidWZmZXIuCiAgICAgICAgIGlm
IChtX3R5cGUgPT0gQmx1clNoYWRvdykKLSAgICAgICAgICAgIG1fbGF5ZXJSZWN0LmluZmxhdGUo
bV90eXBlID09IEJsdXJTaGFkb3cgPyBtX2JsdXJEaXN0YW5jZSA6IDApOworICAgICAgICAgICAg
bV9sYXllclJlY3QuaW5mbGF0ZShtX2JsdXJEaXN0YW5jZSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCmluZGV4IGZhNzc4YWZiY2NkZGZhZmMz
ZjQwY2QwMjNjYjdhZDRmNDUxZWQ1MmMuLjhhOGM4ZDA4MDYxODI5MWZjYWQxNzE2MzhkMmJjNjM1
M2Y3OWVmN2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNo
YWRvdy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCkBA
IC0xMTIsMTYgKzExMiwyMCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShRVCkKICAgICBRUG9p
bnRGIG9mZnNldCgpIHsgcmV0dXJuIFFQb2ludEYobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQu
aGVpZ2h0KCkpOyB9CisgICAgdm9pZCBzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhib29sIGVu
YWJsZSkgeyBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gZW5hYmxlOyB9CisgICAgYm9vbCBz
aGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHsgcmV0dXJuIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXM7IH0KICNlbmRpZgogCiAKIHByaXZhdGU6CiAgICAgSW50UmVjdCBtX2xheWVyUmVjdDsKKyAg
ICBGbG9hdFJlY3QgbV9sYXllckFyZWE7CiAgICAgUGxhdGZvcm1JbWFnZSBtX2xheWVySW1hZ2U7
CiAgICAgUGxhdGZvcm1Db250ZXh0IG1fbGF5ZXJDb250ZXh0OwogCi0gICAgLy8gVXNlZCBmb3Ig
cmVmZXJlbmNlIHdoZW4gY2FudmFzIHNjYWxlKHgseSkgd2FzIGNhbGxlZC4KLSAgICBGbG9hdFJl
Y3QgbV91bnNjYWxlZExheWVyUmVjdDsKKyNpZiBQTEFURk9STShRVCkKKyAgICBib29sIG1fc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXM7CisjZW5kaWYKIAogICAgIHZvaWQgYmx1ckxheWVySW1hZ2Uo
dW5zaWduZWQgY2hhciosIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgaW50IHN0cmlkZSk7CiAg
ICAgdm9pZCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBGbG9hdFJlY3QmIGxheWVy
QXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwCmluZGV4IGY3YzcwZjY5NWJjMGZjNDI1MGNj
OWJkYzM1ZTlkNWU4ZTYzZjk3NDQuLjY2MmI1N2RmMzc5NWQyNjAzNmYyMGRjZTc0YzNkNTFhZTIy
MjM1NWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNo
YWRvd1F0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFk
b3dRdC5jcHAKQEAgLTExNCwxMyArMTE0LDE0IEBAIFBsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hh
ZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCBwLCBjb25zdCBGbG9hdFJlCiAg
ICAgZWxzZQogICAgICAgICBjbGlwUmVjdCA9IHAtPnRyYW5zZm9ybSgpLmludmVydGVkKCkubWFw
UmVjdChwLT53aW5kb3coKSk7CiAKLSAgICBtX3Vuc2NhbGVkTGF5ZXJSZWN0ID0gbGF5ZXJBcmVh
OwogICAgIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGxheWVyQXJlYSwgSW50UmVjdChjbGlw
UmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0
KCkpKTsKIAogICAgIC8vIERvbid0IHBhaW50IGlmIHdlIGFyZSB0b3RhbGx5IG91dHNpZGUgdGhl
IGNsaXAgcmVnaW9uLgogICAgIGlmIChtX2xheWVyUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiAwOwogCisgICAgbV9sYXllckFyZWEgPSBsYXllckFyZWE7CisKICAgICBTaGFkb3dCdWZm
ZXIqIHNoYWRvd0J1ZmZlciA9IHNjcmF0Y2hTaGFkb3dCdWZmZXIoKTsKICAgICBRSW1hZ2UqIHNo
YWRvd0ltYWdlID0gc2hhZG93QnVmZmVyLT5zY3JhdGNoSW1hZ2UobV9sYXllclJlY3Quc2l6ZSgp
KTsKICAgICBtX2xheWVySW1hZ2UgPSBRSW1hZ2UoKnNoYWRvd0ltYWdlKTsKQEAgLTEyOCw3ICsx
MjksNyBAQCBQbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dMYXllcihQ
bGF0Zm9ybUNvbnRleHQgcCwgY29uc3QgRmxvYXRSZQogICAgIG1fbGF5ZXJDb250ZXh0ID0gbmV3
IFFQYWludGVyOwogICAgIG1fbGF5ZXJDb250ZXh0LT5iZWdpbigmbV9sYXllckltYWdlKTsKICAg
ICBtX2xheWVyQ29udGV4dC0+c2V0Rm9udChwLT5mb250KCkpOwotICAgIG1fbGF5ZXJDb250ZXh0
LT50cmFuc2xhdGUobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQuaGVpZ2h0KCkpOworICAgIG1f
bGF5ZXJDb250ZXh0LT50cmFuc2xhdGUob2Zmc2V0KCkpOwogCiAgICAgLy8gVGhlIG9yaWdpbiBp
cyBub3cgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgc2NyYXRjaCBpbWFnZS4KICAgICBtX2xh
eWVyQ29udGV4dC0+dHJhbnNsYXRlKC1tX2xheWVyUmVjdC54KCksIC1tX2xheWVyUmVjdC55KCkp
OwpAQCAtMTU2LDEwICsxNTcsMjYgQEAgdm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXll
cihQbGF0Zm9ybUNvbnRleHQgcCkKICAgICB9CiAKICAgICBjb25zdCBRVHJhbnNmb3JtIHRyYW5z
Zm9ybSA9IHAtPnRyYW5zZm9ybSgpOwotICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5nKCkpIHsK
LSAgICAgICAgcXJlYWwgeCA9IG1fdW5zY2FsZWRMYXllclJlY3QueCgpICsgbV9vZmZzZXQud2lk
dGgoKSAgLyB0cmFuc2Zvcm0ubTExKCkgLSBtX2JsdXJEaXN0YW5jZTsKLSAgICAgICAgcXJlYWwg
eSA9IG1fdW5zY2FsZWRMYXllclJlY3QueSgpICsgbV9vZmZzZXQuaGVpZ2h0KCkgLyB0cmFuc2Zv
cm0ubTIyKCkgLSBtX2JsdXJEaXN0YW5jZTsKLSAgICAgICAgcC0+ZHJhd0ltYWdlKFFQb2ludEYo
eCwgeSksIG1fbGF5ZXJJbWFnZSk7CisgICAgaWYgKG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMg
JiYgIXRyYW5zZm9ybS5pc0lkZW50aXR5KCkpIHsKKyAgICAgICAgLy8gT3BlcmF0aW5nIG9uIGEg
Y2FudmFzLCB3aGljaCBtZWFucyB0aGF0IHNoYWRvdyBvZmZzZXRzIG11c3Qgbm90IGJlIHRyYW5z
Zm9ybWVkLgorICAgICAgICAvLyBGaW5kIHRoZSByZWN0cyBmb3IgdGhlIGltYWdlIGFuZCBzaGFk
b3cgYWZ0ZXIgdHJhbnNmb3JtYXRpb24gKGtlZXBpbmcgdGhlIHNhbWUgb2Zmc2V0KS4KKyAgICAg
ICAgY29uc3QgUVJlY3RGIGxheWVySW1hZ2VTaXplUmVjdCgwLCAwLCBtX2xheWVySW1hZ2Uud2lk
dGgoKSwgbV9sYXllckltYWdlLmhlaWdodCgpKTsKKyAgICAgICAgY29uc3QgUVJlY3RGIHRyYW5z
Zm9ybWVkSW1hZ2VSZWN0ID0gdHJhbnNmb3JtLm1hcFJlY3QobGF5ZXJJbWFnZVNpemVSZWN0KTsK
KyAgICAgICAgY29uc3QgUVJlY3RGIHRyYW5zZm9ybWVkU2hhZG93UmVjdCA9IHRyYW5zZm9ybWVk
SW1hZ2VSZWN0LnRyYW5zbGF0ZWQob2Zmc2V0KCkpOworCisgICAgICAgIC8vIEFmdGVyIGtub3dp
bmcgaXQsIGZpbmQgdGhlIHBvaW50IHdoZXJlIHdlIG5lZWQgdG8gZHJhdyBpdCBvbiB0aGUgY2Fu
dmFzIHNvIHRoYXQgaXQKKyAgICAgICAgLy8gZW5kcyB1cCBpbiB0aGUgY29ycmVjdCBwbGFjZSBh
ZnRlciB0aGUgdHJhbnNmb3JtYXRpb25zLgorICAgICAgICBjb25zdCBRVHJhbnNmb3JtIGludmVy
c2VUcmFuc2Zvcm0gPSB0cmFuc2Zvcm0uaW52ZXJ0ZWQoKTsKKyAgICAgICAgY29uc3QgUVBvaW50
RiBsb2dpY2FsSW1hZ2VUb3BMZWZ0ID0gaW52ZXJzZVRyYW5zZm9ybS5tYXAodHJhbnNmb3JtZWRJ
bWFnZVJlY3QudG9wTGVmdCgpKTsKKyAgICAgICAgY29uc3QgUVBvaW50RiBsb2dpY2FsU2hhZG93
VG9wTGVmdCA9IGludmVyc2VUcmFuc2Zvcm0ubWFwKHRyYW5zZm9ybWVkU2hhZG93UmVjdC50b3BM
ZWZ0KCkpOworCisgICAgICAgIGNvbnN0IFFQb2ludEYgaW1hZ2VUb3BMZWZ0ID0gUVJlY3RGKG1f
bGF5ZXJBcmVhKS50b3BMZWZ0KCk7CisgICAgICAgIGNvbnN0IFFQb2ludEYgc2hhZG93VG9wTGVm
dCA9IGltYWdlVG9wTGVmdCAtIFFQb2ludEYobV9ibHVyRGlzdGFuY2UsIG1fYmx1ckRpc3RhbmNl
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGxvZ2ljYWxTaGFkb3dU
b3BMZWZ0IC0gbG9naWNhbEltYWdlVG9wTGVmdDsKKworICAgICAgICAvLyBGaW5hbGx5LCBkcmF3
IHRoZSBzaGFkb3cgb24gdGhlIHJpZ2h0IGNhbnZhcyBzcGFjZSBjb29yZCBhbmQgbGV0IHRoZSB0
cmFuc2Zvcm1hdGlvbgorICAgICAgICAvLyBtYWtlIGl0IGFwcGVhciB3aXRoIHRoZSBzYW1lIHJl
bGF0aXZlIG9mZnNldCB0byBpdHMgc2hhcGUvaW1hZ2UuCisgICAgICAgIHAtPmRyYXdJbWFnZShz
aGFkb3dUb3BMZWZ0LCBtX2xheWVySW1hZ2UpOwogICAgIH0gZWxzZQogICAgICAgICBwLT5kcmF3
SW1hZ2UobV9sYXllclJlY3QudG9wTGVmdCgpLCBtX2xheWVySW1hZ2UpOwogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCmluZGV4IGJi
YmNlZGJkY2VkNTNiZmNjMWE5MTE5MWI4OTUxZmIwNTQwNTIwZjEuLmE0ZGMxNzZiMGE2MTk3NzRm
MjMwOTUwZGVkOGZkY2MyMzI1YjVlYjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCkBAIC01NCw3ICs1NCw2IEBACiAjaW5jbHVk
ZSAiVHJhbnNwYXJlbmN5TGF5ZXIuaCIKIAogI2luY2x1ZGUgPFFCcnVzaD4KLSNpbmNsdWRlIDxR
RGVidWc+CiAjaW5jbHVkZSA8UUdyYWRpZW50PgogI2luY2x1ZGUgPFFQYWludERldmljZT4KICNp
bmNsdWRlIDxRUGFpbnRFbmdpbmU+CkBAIC0xNzYsNiArMTc1LDIyIEBAIHN0YXRpYyBpbmxpbmUg
UXQ6OkZpbGxSdWxlIHRvUXRGaWxsUnVsZShXaW5kUnVsZSBydWxlKQogICAgIHJldHVybiBRdDo6
T2RkRXZlbkZpbGw7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBtdXN0VXNlQ29udGV4dFNoYWRv
dyhRUGFpbnRlciogcGFpbnRlciwgQ29udGV4dFNoYWRvdyogc2hhZG93KQoreworICAgIGlmIChz
aGFkb3ctPm1fdHlwZSA9PSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93KQorICAgICAgICAvLyBX
ZSBjYW4ndCBhdm9pZCBDb250ZXh0U2hhZG93LCBzaW5jZSB0aGUgc2hhZG93IGhhcyBibHVyLgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIXNoYWRvdy0+c2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMoKSkKKyAgICAgICAgLy8gV2UgY2FuIGF2b2lkIENvbnRleHRTaGFkb3cgYW5kIG9wdGlt
aXplLCBzaW5jZSB3ZSdyZSBub3QgZHJhd2luZyBvbiBhIGNhbnZhcyBhbmQgYm94CisgICAgICAg
IC8vIHNoYWRvd3MgYXJlIGFmZmVjdGVkIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAocGFpbnRlci0+dHJhbnNmb3JtKCkuaXNJZGVu
dGl0eSgpKQorICAgICAgICAvLyBXZSBjYW4gYXZvaWQgQ29udGV4dFNoYWRvdywgc2luY2UgdGhl
cmUgYXJlIG5vIHRyYW5zZm9ybWF0aW9ucyB0byBhcHBseSB0byB0aGUgY2FudmFzLgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgLy8gT3RoZXJ3aXNlLCBubyBjaGFuY2UgYXZvaWRpbmcgQ29u
dGV4dFNoYWRvdy4KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICBHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoUVBhaW50ZXIqLCBjb25zdCBRQ29sb3ImIGluaXRp
YWxTb2xpZENvbG9yKTsKQEAgLTUwOSwzMSArNTI0LDIxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQogCiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93
KCkpIHsKICAgICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwot
ICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdwot
ICAgICAgICAgICAgJiYgIW1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybiAmJiAhbV9jb21tb24t
PnN0YXRlLmZpbGxHcmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAs
IHNoYWRvdykKKyAgICAgICAgICAgIHx8IG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybgorICAg
ICAgICAgICAgfHwgbV9jb21tb24tPnN0YXRlLmZpbGxHcmFkaWVudCkKICAgICAgICAgewotICAg
ICAgICAgICAgUVBvaW50RiBvZmZzZXQgPSBzaGFkb3ctPm9mZnNldCgpOwotICAgICAgICAgICAg
Y29uc3QgUVRyYW5zZm9ybSYgdHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0gICAgICAgICAg
ICBpZiAodHJhbnNmb3JtLmlzU2NhbGluZygpKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgc2Nh
bGluZyBpcyByZXF1aXJlZCwgZmluZCB0aGUgbmV3IGNvb3JkIGZvciBzaGFkb3cgb3JpZ2luLAot
ICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIHJlbGF0aXZlIG9mZnNldCB0byBpdHMgc2hh
cGUgaXMga2VwdC4KLSAgICAgICAgICAgICAgICBRUG9pbnRGIHRyYW5zbGF0ZWRPZmZzZXQob2Zm
c2V0LngoKSAvIHRyYW5zZm9ybS5tMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb2Zmc2V0LnkoKSAvIHRyYW5zZm9ybS5tMjIoKSk7Ci0gICAgICAgICAgICAg
ICAgcGxhdGZvcm1QYXRoLnRyYW5zbGF0ZSh0cmFuc2xhdGVkT2Zmc2V0KTsKLSAgICAgICAgICAg
ICAgICBwLT5maWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihzaGFkb3ctPm1fY29sb3IpKTsK
LSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKC10cmFuc2xhdGVkT2Zmc2V0
KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG9m
ZnNldCk7Ci0gICAgICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3Io
c2hhZG93LT5tX2NvbG9yKSk7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZzZXQp
OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUVBhaW50ZXIq
IHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcGxhdGZvcm1QYXRo
LmNvbnRyb2xQb2ludFJlY3QoKSk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewog
ICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRl
cjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRl
ci0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xvcikp
OwogICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBRUG9pbnRGIG9mZnNldCA9IHNoYWRv
dy0+b2Zmc2V0KCk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKKyAgICAgICAg
ICAgIHAtPmZpbGxQYXRoKHBsYXRmb3JtUGF0aCwgUUNvbG9yKHNoYWRvdy0+bV9jb2xvcikpOwor
ICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZzZXQpOwogICAgICAgICB9CiAKICAgICB9CkBA
IC01NjAsMjggKzU2NSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25z
dCBQYXRoJiBwYXRoKQogCiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAg
Q29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotCi0gICAgICAgIGlmIChz
aGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93Ci0gICAgICAgICAgICAm
JiAhbV9jb21tb24tPnN0YXRlLnN0cm9rZVBhdHRlcm4gJiYgIW1fY29tbW9uLT5zdGF0ZS5zdHJv
a2VHcmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykK
KyAgICAgICAgICAgIHx8IG1fY29tbW9uLT5zdGF0ZS5zdHJva2VQYXR0ZXJuCisgICAgICAgICAg
ICB8fCBtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlR3JhZGllbnQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIFFQZW4gc2hhZG93UGVuKHBlbik7Ci0gICAgICAgICAgICBzaGFkb3dQZW4uc2V0Q29sb3Io
bV9kYXRhLT5zaGFkb3cubV9jb2xvcik7Ci0gICAgICAgICAgICBRUG9pbnRGIG9mZnNldCA9IHNo
YWRvdy0+b2Zmc2V0KCk7Ci0gICAgICAgICAgICBjb25zdCBRVHJhbnNmb3JtJiB0cmFuc2Zvcm0g
PSBwLT50cmFuc2Zvcm0oKTsKLSAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5nKCkp
IHsKLSAgICAgICAgICAgICAgICAvLyBJZiBzY2FsaW5nIGlzIHJlcXVpcmVkLCBmaW5kIHRoZSBu
ZXcgY29vcmQgZm9yIHNoYWRvdyBvcmlnaW4sCi0gICAgICAgICAgICAgICAgLy8gc28gdGhhdCB0
aGUgcmVsYXRpdmUgb2Zmc2V0IHRvIGl0cyBzaGFwZSBpcyBrZXB0LgotICAgICAgICAgICAgICAg
IFFQb2ludEYgdHJhbnNsYXRlZE9mZnNldChvZmZzZXQueCgpIC8gdHJhbnNmb3JtLm0xMSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQueSgpIC8gdHJh
bnNmb3JtLm0yMigpKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKHRy
YW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgICAgIHAtPnN0cm9rZVBhdGgocGxhdGZvcm1Q
YXRoLCBzaGFkb3dQZW4pOwotICAgICAgICAgICAgICAgIHBsYXRmb3JtUGF0aC50cmFuc2xhdGUo
LXRyYW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBwLT5zdHJva2VQYXRoKHBs
YXRmb3JtUGF0aCwgc2hhZG93UGVuKTsKLSAgICAgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW9m
ZnNldCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBGbG9h
dFJlY3QgYm91bmRpbmdSZWN0ID0gcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKTsKICAg
ICAgICAgICAgIGJvdW5kaW5nUmVjdC5pbmZsYXRlKHBlbi5taXRlckxpbWl0KCkgKyBwZW4ud2lk
dGhGKCkpOwogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJl
Z2luU2hhZG93TGF5ZXIocCwgYm91bmRpbmdSZWN0KTsKQEAgLTU5MCw2ICs1NzcsMTMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAg
ICAgICAgICBzaGFkb3dQYWludGVyLT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgcGVuKTsKICAg
ICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUVBlbiBzaGFkb3dQZW4ocGVuKTsKKyAgICAg
ICAgICAgIHNoYWRvd1Blbi5zZXRDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9yKTsKKyAgICAg
ICAgICAgIFFQb2ludEYgb2Zmc2V0ID0gc2hhZG93LT5vZmZzZXQoKTsKKyAgICAgICAgICAgIHAt
PnRyYW5zbGF0ZShvZmZzZXQpOworICAgICAgICAgICAgcC0+c3Ryb2tlUGF0aChwbGF0Zm9ybVBh
dGgsIHNoYWRvd1Blbik7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW9mZnNldCk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTcwOSw3ICs3MDMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICBwLT5maWxsUmVjdChub3Jt
YWxpemVkUmVjdCwgYnJ1c2gpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChtX2RhdGEtPmhh
c1NoYWRvdygpKSB7Ci0gICAgICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgPT0gQ29udGV4dFNo
YWRvdzo6Qmx1clNoYWRvdykgeworICAgICAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93
KHAsIHNoYWRvdykpIHsKICAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9
IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAg
ICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFp
bnRlci0+c2V0T3BhY2l0eShzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5tX2NvbG9yLmFscGhh
KCkpIC8gMjU1KTsKQEAgLTcxNywxNyArNzExLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgICAgICAgICAgICAgIHNoYWRv
dy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAvLyBTb2xpZCByZWN0YW5nbGUgZmlsbCB3aXRoIG5vIGJs
dXIgc2hhZG93IGNhbiBiZSBkb25lIGZhc3RlcgotICAgICAgICAgICAgICAgIC8vIHdpdGhvdXQg
dXNpbmcgdGhlIHNoYWRvdyBsYXllciBhdCBhbGwuCisgICAgICAgICAgICAgICAgLy8gU29saWQg
cmVjdGFuZ2xlIGZpbGwgd2l0aCBubyBibHVyIHNoYWRvdyBvciB0cmFuc2Zvcm1hdGlvbnMgYXBw
bGllZCBjYW4gYmUgZG9uZQorICAgICAgICAgICAgICAgIC8vIGZhc3RlciB3aXRob3V0IHVzaW5n
IHRoZSBzaGFkb3cgbGF5ZXIgYXQgYWxsLgogICAgICAgICAgICAgICAgIFFDb2xvciBzaGFkb3dD
b2xvciA9IHNoYWRvdy0+bV9jb2xvcjsKICAgICAgICAgICAgICAgICBzaGFkb3dDb2xvci5zZXRB
bHBoYUYoc2hhZG93Q29sb3IuYWxwaGFGKCkgKiBwLT5icnVzaCgpLmNvbG9yKCkuYWxwaGFGKCkp
OwotICAgICAgICAgICAgICAgIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSA9IHAtPnRyYW5z
Zm9ybSgpOwotICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5nKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJhbnNsYXRlZChz
dGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5vZmZzZXQoKS54KCkpIC8gdHJhbnNmb3JtLm0xMSgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PHFyZWFsPihzaGFkb3ctPm9mZnNldCgpLnkoKSAgLyB0cmFuc2Zvcm0u
bTIyKCkpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93Q29sb3IpOwot
ICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBwLT5maWxsUmVjdChu
b3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHNoYWRvdy0+b2Zmc2V0KCkpLCBzaGFkb3dDb2xvcik7
CisgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJhbnNsYXRlZChz
aGFkb3ctPm9mZnNldCgpKSwgc2hhZG93Q29sb3IpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKQEAgLTc0NywxOCArNzM1LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAKICAgICBp
ZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAgICAgICBDb250ZXh0U2hhZG93KiBzaGFkb3cg
PSBjb250ZXh0U2hhZG93KCk7Ci0KLSAgICAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRl
eHRTaGFkb3c6OkJsdXJTaGFkb3cpIHsKLSAgICAgICAgICAgIC8vIFdlIGRvIG5vdCBuZWVkIGFu
eSBsYXllciBmb3Igc2ltcGxlIHNoYWRvdy4KLSAgICAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1h
bGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvdy0+bV9jb2xvcik7
Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtdXN0VXNlQ29udGV4dFNoYWRvdyhwLCBz
aGFkb3cpKSB7CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+
YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAgICBpZiAoc2hh
ZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0
aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAg
ICAgc2hhZG93UGFpbnRlci0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIHNoYWRvdy0+bV9jb2xv
cik7CiAgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwKTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHAtPmZpbGxSZWN0
KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvdy0+bV9j
b2xvcik7CiAgICAgfQogCiAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIG1fZGF0YS0+
c29saWRDb2xvcik7CkBAIC03NzQsMTkgKzc1OSwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExl
ZgogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CiAgICAgaWYgKG1fZGF0YS0+aGFzU2hh
ZG93KCkpIHsKICAgICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygp
OwotCi0gICAgICAgIGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hh
ZG93KSB7Ci0gICAgICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCBhbnkgbGF5ZXIgZm9yIHNpbXBs
ZSBzaGFkb3cuCi0gICAgICAgICAgICBwLT50cmFuc2xhdGUobV9kYXRhLT5zaGFkb3cub2Zmc2V0
KCkpOwotICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGF0aC5wbGF0Zm9ybVBhdGgoKSwgUUNvbG9y
KG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKLSAgICAgICAgICAgIHAtPnRyYW5zbGF0ZSgtbV9k
YXRhLT5zaGFkb3cub2Zmc2V0KCkpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAobXVz
dFVzZUNvbnRleHRTaGFkb3cocCwgc2hhZG93KSkgewogICAgICAgICAgICAgUVBhaW50ZXIqIHNo
YWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcmVjdCk7CiAgICAgICAg
ICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXIt
PnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAg
ICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFBhdGgocGF0aC5wbGF0Zm9ybVBhdGgo
KSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKICAgICAgICAgICAgICAgICBzaGFk
b3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG1fZGF0YS0+c2hhZG93Lm9mZnNldCgpKTsKKyAgICAg
ICAgICAgIHAtPmZpbGxQYXRoKHBhdGgucGxhdGZvcm1QYXRoKCksIFFDb2xvcihtX2RhdGEtPnNo
YWRvdy5tX2NvbG9yKSk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW1fZGF0YS0+c2hhZG93
Lm9mZnNldCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBwLT5maWxsUGF0aChwYXRoLnBsYXRm
b3JtUGF0aCgpLCBRQ29sb3IoY29sb3IpKTsKQEAgLTk2NSw5ICs5NDgsMTAgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxv
YXQgYmx1ciwgY29uc3QKICAgICAgICAgLy8gV2UgZmxpcCB0aGUgaGVpZ2h0IHNpbmNlIENHIGFu
ZCBIVE1MNSBDYW52YXMgaGF2ZSBvcHBvc2l0ZSBZIGF4aXMKICAgICAgICAgbV9jb21tb24tPnN0
YXRlLnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZShzaXplLndpZHRoKCksIC1zaXplLmhlaWdodCgp
KTsKICAgICAgICAgbV9kYXRhLT5zaGFkb3cgPSBDb250ZXh0U2hhZG93KGNvbG9yLCBibHVyLCBG
bG9hdFNpemUoc2l6ZS53aWR0aCgpLCAtc2l6ZS5oZWlnaHQoKSkpOwotICAgIH0gZWxzZSB7Cisg
ICAgfSBlbHNlCiAgICAgICAgIG1fZGF0YS0+c2hhZG93ID0gQ29udGV4dFNoYWRvdyhjb2xvciwg
Ymx1ciwgRmxvYXRTaXplKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOwotICAgIH0KKwor
ICAgIG1fZGF0YS0+c2hhZG93LnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKG1fY29tbW9uLT5z
dGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpjbGVhclBsYXRmb3JtU2hhZG93KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75481</attachid>
            <date>2010-12-03 02:22:43 -0800</date>
            <delta_ts>2010-12-03 18:46:09 -0800</delta_ts>
            <desc>Don&apos;t break Cairo port build</desc>
            <filename>bug-50422-20101203022241.patch</filename>
            <type>text/plain</type>
            <size>26472</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwOTEwYjcwZjAwOWYwNzgxYmY5NjNmOGEyNTNmNjk5ODM3ZjUxY2U3Li5mZGJmY2Ji
NzY1NzI3NzZlYzdkMjk2MmExMjFlOThjOTAwNmQwZTI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMTAtMTItMDMgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBObyBzaGFkb3cg
b2Zmc2V0IHNob3VsZCBiZSBhZmZlY3RlZCBieSBhbnkgdHJhbnNmb3JtYXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNDIyCisKKyAgICAgICAg
T24gYSBjYW52YXMgY29udGV4dCwgc2hhZG93cyBhcmUgY3VycmVudGx5IGFmZmVjdGVkIGJ5IGFs
bAorICAgICAgICB0cmFuc2Zvcm1hdGlvbnMgZXhjZXB0IHNjYWxpbmcuIEFjY29yZGluZyB0byB0
aGUgc3BlYzoKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWNhbnZhcy1lbGVtZW50Lmh0bWwjc2hhZG93cworCisg
ICAgICAgICJUaGUgc2hhZG93T2Zmc2V0WCBhbmQgc2hhZG93T2Zmc2V0WSBhdHRyaWJ1dGVzIHNw
ZWNpZnkgdGhlIGRpc3RhbmNlCisgICAgICAgIHRoYXQgdGhlIHNoYWRvdyB3aWxsIGJlIG9mZnNl
dCBpbiB0aGUgcG9zaXRpdmUgaG9yaXpvbnRhbCBhbmQgcG9zaXRpdmUKKyAgICAgICAgdmVydGlj
YWwgZGlzdGFuY2UgcmVzcGVjdGl2ZWx5LiBUaGVpciB2YWx1ZXMgYXJlIGluIGNvb3JkaW5hdGUg
c3BhY2UKKyAgICAgICAgdW5pdHMuIFRoZXkgYXJlIG5vdCBhZmZlY3RlZCBieSB0aGUgY3VycmVu
dCB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguIgorCisgICAgICAgIE5PVEU6IHRoaXMgYXBwbGllcyBv
bmx5IHRvIGNhbnZhcywgbm90IHRvIGJveCBzaGFkb3dzLgorCisgICAgICAgICogZmFzdC9jYW52
YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5q
czoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxS
ZWN0LXNoYWRvdy5qczoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFz
LXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzOiBOb3cgdXNpbmcKKyAgICAgICAgICBhIGxpbmVX
aWR0aCA+IDEgdG8gbWFrZSBpdCBlYXNpZXIgdG8gdGVzdCBhbmQgbW9yZSBmYWlyIGFtb25nIGFs
bAorICAgICAgICAgIHBvcnRzLCBzaW5jZSB0aGVyZSBjYW4gYmUgZGlmZmVyZW50IHRyYW5zZm9y
bWF0aW9uIHNtb290aG5lc3Mgb3IKKyAgICAgICAgICBhbGlhc2luZyBzZXR0aW5ncy4KKwogMjAx
MC0xMi0wMiAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3ct
ZXhwZWN0ZWQudHh0CmluZGV4IGU1NjIwMWY3Mzg3ZTQ2MmY3OTIyNWU2NWY4YTM0MDFlMmUzMjM2
ZmUuLmEzMzdjNGI2M2ZmMWRkZmVlZDQ0ODhlMzUxZmZkYWUxNDllYTg1MTYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0
cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dApAQCAtMzAsMjcgKzMwLDI3IEBAIFBBU1MgZFsz
XSBpcyBhcm91bmQgNzYKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRb
Ml0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMAorUEFTUyBkWzNdIGlzIGFyb3VuZCAxNDkK
IFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBk
WzNdIGlzIGFyb3VuZCAyMgorUEFTUyBkWzNdIGlzIGFyb3VuZCAxMTYKIFBBU1MgZFswXSBpcyAy
NTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAy
OAorUEFTUyBkWzNdIGlzIGFyb3VuZCAxMTUKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBp
cyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMgorUEFTUyBkWzNdIGlz
IGFyb3VuZCA3MAogUEFTUyBkWzBdIGlzIDI1NQogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBp
cyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDE1CitQQVNTIGRbM10gaXMgYXJvdW5kIDcwCiBQQVNT
IGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBp
cyBhcm91bmQgMTcKK1BBU1MgZFszXSBpcyBhcm91bmQgNjkKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cuanMgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxQYXRo
LXNoYWRvdy5qcwppbmRleCAwNTI4NmY1MzI4YjVlNTk5ODMyNDM1MDc1ZGJiZjFlYzE3ZTVhMjA3
Li4zY2EzMzIxOTkyOGRkZDFiZjIwMjFjNGEwMjRkNzMwOGJjYjg2NTMzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxQYXRo
LXNoYWRvdy5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2Fu
dmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcwpAQCAtNzksMTMgKzc5LDEzIEBAIHNob3VsZEJl
KCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywg
JzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDI5NSwgMSwgMSkuZGF0YTsKK2Qg
PSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgMjk1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0n
LCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7
CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAy
OTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDI5OCwgMSwgMSkuZGF0
YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOwpAQCAtOTgsMTMgKzk4LDEzIEBAIHNob3VsZEJlKCdkWzFdJywg
JzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2
Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0
eC5nZXRJbWFnZURhdGEoMjk4LCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcy
NTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNo
b3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwg
NDk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTgsIDEsIDEpLmRh
dGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNo
b3VsZEJlKCdkWzJdJywgJzAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzIGIvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUmVjdC1zaGFkb3cu
anMKaW5kZXggOTlhMWU1OTRiZDU5ZjczNjdmM2MzMGRlYTE2NTFlMzJmM2Q0ZGU2ZS4uZjQ5NWM5
MTA1NWJiYTFkY2IxNDY4MzJlMjgxNjMwNzRhMDQ1ZTgyOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUmVjdC1zaGFkb3cu
anMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2Fs
ZS1maWxsUmVjdC1zaGFkb3cuanMKQEAgLTU4LDEzICs1OCwxMyBAQCBzaG91bGRCZSgnZFsxXScs
ICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsK
IAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCAyOTUsIDEsIDEpLmRhdGE7CitkID0gY3R4Lmdl
dEltYWdlRGF0YSgyOTgsIDI5OCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScp
Owogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxk
QmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjk5LCAxLCAx
KS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAxLCAyOTgsIDEsIDEpLmRhdGE7CiBzaG91
bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdk
WzJdJywgJzAnKTsKQEAgLTc3LDEzICs3NywxMyBAQCBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBz
aG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1k
ID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1h
Z2VEYXRhKDI5OCwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBz
aG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFy
b3VuZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OSwgMSwg
MSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk4LCAxLCAxKS5kYXRhOwogc2hv
dWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgn
ZFsyXScsICcwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQt
dGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy5qcwpp
bmRleCA1MTk4ZDk0MTUxN2RhYjkyYmMyODkxYzgzNzRmMzViYTFhODlkNTc5Li45MWI5MjdmOTVm
YTg3ZGU1ZjlkNjU1ZjNiMmZmZDJmNGI1ZGFkNTM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93Lmpz
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUt
c3Ryb2tlUGF0aC1zaGFkb3cuanMKQEAgLTM1LDYgKzM1LDcgQEAgY3R4LnNjYWxlKDIsIDIpOwog
Y3R4LnNoYWRvd09mZnNldFggPSAxMDA7CiBjdHguc2hhZG93T2Zmc2V0WSA9IDEwMDsKIGN0eC5z
dHJva2VTdHlsZSA9ICdyZ2JhKDAsIDAsIDI1NSwgMSknOworY3R4LmxpbmVXaWR0aCA9IDU7CiAK
IGN0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwgMS4wKSc7CiBjdHguYmVnaW5QYXRo
KCk7CkBAIC03Niw3OSArNzcsNzkgQEAgY3R4LnN0cm9rZSgpOwogdmFyIGQ7IC8vIGltYWdlRGF0
YS5kYXRhCiAKIC8vIFZlcmlmeSBzb2xpZCBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgy
MDAsIDIwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI1MCwgMjAwLCAxLCAx
KS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7
CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9
IGN0eC5nZXRJbWFnZURhdGEoMjk5LCAyOTUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdl
RGF0YSgzMDAsIDI5MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hv
dWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
M10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwgMjk5LCAxLCAxKS5kYXRh
OworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyNTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgn
ZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywg
JzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCiAvLyBWZXJpZnkgc29saWQgYWxwaGEg
c2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCA0MDUsIDEsIDEpLmRhdGE7CitkID0g
Y3R4LmdldEltYWdlRGF0YSgyMDEsIDQwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywg
JzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwog
c2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5
LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDUwMCwgMSwgMSku
ZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwog
c2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAot
ZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldElt
YWdlRGF0YSgzMDAsIDQ5OSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwog
c2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVB
cm91bmQoJ2RbM10nLCAnNzYnKTsKIAogLy8gVmVyaWZ5IGJsdXJyeSBzaGFkb3cuCi1kID0gY3R4
LmdldEltYWdlRGF0YSgzOTQsIDIwOCwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRh
KDQwNCwgMjEwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRC
ZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgn
ZFszXScsICcyMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTQ5Jyk7CiAKLWQgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDUwMywgMzAxLCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEo
NTA1LCAyNTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJl
KCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdk
WzNdJywgJzIyJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMTYnKTsKIAotZCA9IGN0eC5n
ZXRJbWFnZURhdGEoNTA0LCAyNTAsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0
NTAsIDIwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUo
J2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2Rb
M10nLCAnMjgnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzExNScpOwogCiAvLyBWZXJpZnkg
Ymx1cnJ5IGFscGhhIHNoYWRvdy4KLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDQwNSwgNDA1LCAxLCAx
KS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA1LCA0NTAsIDEsIDEpLmRhdGE7CiBzaG91
bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdk
WzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzIyJyk7CitzaG91bGRCZUFyb3Vu
ZCgnZFszXScsICc3MCcpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSg0MTUsIDQ5NSwgMSwgMSku
ZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwNSwgNDUwLCAxLCAxKS5kYXRhOwogc2hvdWxk
QmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsy
XScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcxNScpOworc2hvdWxkQmVBcm91bmQo
J2RbM10nLCAnNzAnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoNDUwLCA1MDQsIDEsIDEpLmRh
dGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDQwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJl
KCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0n
LCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTcnKTsKK3Nob3VsZEJlQXJvdW5kKCdk
WzNdJywgJzY5Jyk7CiAKIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlYjRiYzczYTVl
MWZhOThhYzBhZGU1NzY3MWRlYjkzY2JjMjIwMDBjLi44YWE3MmM2MzhhMzBkYjYyZDA0YWNhZmYx
OGEyY2JlZTY4NTdhMmNhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEwLTEyLTAzICBIZWxkZXIgQ29ycmVp
YSAgPGhlbGRlckBzZW5jaGEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtRdF0gTm8gc2hhZG93IG9mZnNldCBzaG91bGQgYmUgYWZmZWN0ZWQg
YnkgYW55IHRyYW5zZm9ybWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MDQyMgorCisgICAgICAgIE9uIGEgY2FudmFzIGNvbnRleHQsIHNoYWRv
d3MgYXJlIGN1cnJlbnRseSBhZmZlY3RlZCBieSBhbGwKKyAgICAgICAgdHJhbnNmb3JtYXRpb25z
IGV4Y2VwdCBzY2FsaW5nLiBBY2NvcmRpbmcgdG8gdGhlIHNwZWM6CisgICAgICAgIGh0dHA6Ly93
d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1j
YW52YXMtZWxlbWVudC5odG1sI3NoYWRvd3MKKworICAgICAgICAiVGhlIHNoYWRvd09mZnNldFgg
YW5kIHNoYWRvd09mZnNldFkgYXR0cmlidXRlcyBzcGVjaWZ5IHRoZSBkaXN0YW5jZQorICAgICAg
ICB0aGF0IHRoZSBzaGFkb3cgd2lsbCBiZSBvZmZzZXQgaW4gdGhlIHBvc2l0aXZlIGhvcml6b250
YWwgYW5kIHBvc2l0aXZlCisgICAgICAgIHZlcnRpY2FsIGRpc3RhbmNlIHJlc3BlY3RpdmVseS4g
VGhlaXIgdmFsdWVzIGFyZSBpbiBjb29yZGluYXRlIHNwYWNlCisgICAgICAgIHVuaXRzLiBUaGV5
IGFyZSBub3QgYWZmZWN0ZWQgYnkgdGhlIGN1cnJlbnQgdHJhbnNmb3JtYXRpb24gbWF0cml4LiIK
KworICAgICAgICBOT1RFOiB0aGlzIGFwcGxpZXMgb25seSB0byBjYW52YXMsIG5vdCB0byBib3gg
c2hhZG93cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6Q29udGV4dFNoYWRvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjptdXN0VXNlQ29udGV4dFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmZpbGxQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tl
UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3cpOgorCiAyMDEw
LTEyLTAyICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29udGV4dFNoYWRvdy5jcHAKaW5kZXggODdhMWM1Yzc2M2NlYzU1NjYzNGYyZmJhZmM2NzU5
NDI5ZWRjNTlkMS4uNGU5YTU2NDJmMmJlYTk3YjZjMWQ4MDU1YzdlNjMyNzg2MGYwOTZhMiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwCkBAIC00MSw2ICs0
MSw5IEBAIENvbnRleHRTaGFkb3c6OkNvbnRleHRTaGFkb3coKQogICAgIDogbV90eXBlKE5vU2hh
ZG93KQogICAgICwgbV9ibHVyRGlzdGFuY2UoMCkKICAgICAsIG1fbGF5ZXJDb250ZXh0KDApCisj
aWYgUExBVEZPUk0oUVQpCisgICAgLCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZhbHNlKQor
I2VuZGlmCiB7CiB9CiAKQEAgLTE1Nyw3ICsxNjAsOCBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmNh
bGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25z
dAogICAgIG1fbGF5ZXJSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChkZXN0aW5hdGlvblJlY3QpOwog
CiAgICAgLy8gV2UgZXhwYW5kIHRoZSBhcmVhIGJ5IHRoZSBibHVyIHJhZGl1cyB0byBnaXZlIGV4
dHJhIHNwYWNlIGZvciB0aGUgYmx1ciB0cmFuc2l0aW9uLgotICAgIG1fbGF5ZXJSZWN0LmluZmxh
dGUobV90eXBlID09IEJsdXJTaGFkb3cgPyBtX2JsdXJEaXN0YW5jZSA6IDApOworICAgIGlmICht
X3R5cGUgPT0gQmx1clNoYWRvdykKKyAgICAgICAgbV9sYXllclJlY3QuaW5mbGF0ZShtX2JsdXJE
aXN0YW5jZSk7CiAKICAgICBpZiAoIWNsaXBSZWN0LmNvbnRhaW5zKG1fbGF5ZXJSZWN0KSkgewog
ICAgICAgICAvLyBObyBuZWVkIHRvIGhhdmUgdGhlIGJ1ZmZlciBsYXJnZXIgdGhhbiB0aGUgY2xp
cC4KQEAgLTE3MCw3ICsxNzQsNyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmNhbGN1bGF0ZUxheWVy
Qm91bmRpbmdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdAogICAgICAgICAv
LyBXZSBhZGp1c3QgYWdhaW4gYmVjYXVzZSB0aGUgcGl4ZWxzIGF0IHRoZSBib3JkZXJzIGFyZSBz
dGlsbAogICAgICAgICAvLyBwb3RlbnRpYWxseSBhZmZlY3RlZCBieSB0aGUgcGl4ZWxzIG91dHNp
ZGUgdGhlIGJ1ZmZlci4KICAgICAgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KQotICAgICAg
ICAgICAgbV9sYXllclJlY3QuaW5mbGF0ZShtX3R5cGUgPT0gQmx1clNoYWRvdyA/IG1fYmx1ckRp
c3RhbmNlIDogMCk7CisgICAgICAgICAgICBtX2xheWVyUmVjdC5pbmZsYXRlKG1fYmx1ckRpc3Rh
bmNlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29udGV4dFNoYWRvdy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93
LmgKaW5kZXggZmE3NzhhZmJjY2RkZmFmYzNmNDBjZDAyM2NiN2FkNGY0NTFlZDUyYy4uZGM2ODgy
NmZhZGZlNDc0YzhhMzY0MGY5OGNhOGQwZGQ0YzI4MjIzZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db250ZXh0U2hhZG93LmgKQEAgLTExMiwxNiArMTEyLDI1IEBAIHB1YmxpYzoKIAog
I2lmIFBMQVRGT1JNKFFUKQogICAgIFFQb2ludEYgb2Zmc2V0KCkgeyByZXR1cm4gUVBvaW50Riht
X29mZnNldC53aWR0aCgpLCBtX29mZnNldC5oZWlnaHQoKSk7IH0KKyAgICB2b2lkIHNldFNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgZW5hYmxlKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMgPSBlbmFibGU7IH0KKyAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgeyByZXR1
cm4gbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQogI2VuZGlmCiAKIAogcHJpdmF0ZToKICAg
ICBJbnRSZWN0IG1fbGF5ZXJSZWN0OworICAgIEZsb2F0UmVjdCBtX2xheWVyQXJlYTsKICAgICBQ
bGF0Zm9ybUltYWdlIG1fbGF5ZXJJbWFnZTsKICAgICBQbGF0Zm9ybUNvbnRleHQgbV9sYXllckNv
bnRleHQ7CiAKKyNpZiBQTEFURk9STShDQUlSTykKICAgICAvLyBVc2VkIGZvciByZWZlcmVuY2Ug
d2hlbiBjYW52YXMgc2NhbGUoeCx5KSB3YXMgY2FsbGVkLgogICAgIEZsb2F0UmVjdCBtX3Vuc2Nh
bGVkTGF5ZXJSZWN0OworI2VuZGlmCisKKyNpZiBQTEFURk9STShRVCkKKyAgICBib29sIG1fc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXM7CisjZW5kaWYKIAogICAgIHZvaWQgYmx1ckxheWVySW1hZ2Uo
dW5zaWduZWQgY2hhciosIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgaW50IHN0cmlkZSk7CiAg
ICAgdm9pZCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBGbG9hdFJlY3QmIGxheWVy
QXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwCmluZGV4IGY3YzcwZjY5NWJjMGZjNDI1MGNj
OWJkYzM1ZTlkNWU4ZTYzZjk3NDQuLjY2MmI1N2RmMzc5NWQyNjAzNmYyMGRjZTc0YzNkNTFhZTIy
MjM1NWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNo
YWRvd1F0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFk
b3dRdC5jcHAKQEAgLTExNCwxMyArMTE0LDE0IEBAIFBsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hh
ZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCBwLCBjb25zdCBGbG9hdFJlCiAg
ICAgZWxzZQogICAgICAgICBjbGlwUmVjdCA9IHAtPnRyYW5zZm9ybSgpLmludmVydGVkKCkubWFw
UmVjdChwLT53aW5kb3coKSk7CiAKLSAgICBtX3Vuc2NhbGVkTGF5ZXJSZWN0ID0gbGF5ZXJBcmVh
OwogICAgIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGxheWVyQXJlYSwgSW50UmVjdChjbGlw
UmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0
KCkpKTsKIAogICAgIC8vIERvbid0IHBhaW50IGlmIHdlIGFyZSB0b3RhbGx5IG91dHNpZGUgdGhl
IGNsaXAgcmVnaW9uLgogICAgIGlmIChtX2xheWVyUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiAwOwogCisgICAgbV9sYXllckFyZWEgPSBsYXllckFyZWE7CisKICAgICBTaGFkb3dCdWZm
ZXIqIHNoYWRvd0J1ZmZlciA9IHNjcmF0Y2hTaGFkb3dCdWZmZXIoKTsKICAgICBRSW1hZ2UqIHNo
YWRvd0ltYWdlID0gc2hhZG93QnVmZmVyLT5zY3JhdGNoSW1hZ2UobV9sYXllclJlY3Quc2l6ZSgp
KTsKICAgICBtX2xheWVySW1hZ2UgPSBRSW1hZ2UoKnNoYWRvd0ltYWdlKTsKQEAgLTEyOCw3ICsx
MjksNyBAQCBQbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dMYXllcihQ
bGF0Zm9ybUNvbnRleHQgcCwgY29uc3QgRmxvYXRSZQogICAgIG1fbGF5ZXJDb250ZXh0ID0gbmV3
IFFQYWludGVyOwogICAgIG1fbGF5ZXJDb250ZXh0LT5iZWdpbigmbV9sYXllckltYWdlKTsKICAg
ICBtX2xheWVyQ29udGV4dC0+c2V0Rm9udChwLT5mb250KCkpOwotICAgIG1fbGF5ZXJDb250ZXh0
LT50cmFuc2xhdGUobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQuaGVpZ2h0KCkpOworICAgIG1f
bGF5ZXJDb250ZXh0LT50cmFuc2xhdGUob2Zmc2V0KCkpOwogCiAgICAgLy8gVGhlIG9yaWdpbiBp
cyBub3cgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgc2NyYXRjaCBpbWFnZS4KICAgICBtX2xh
eWVyQ29udGV4dC0+dHJhbnNsYXRlKC1tX2xheWVyUmVjdC54KCksIC1tX2xheWVyUmVjdC55KCkp
OwpAQCAtMTU2LDEwICsxNTcsMjYgQEAgdm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXll
cihQbGF0Zm9ybUNvbnRleHQgcCkKICAgICB9CiAKICAgICBjb25zdCBRVHJhbnNmb3JtIHRyYW5z
Zm9ybSA9IHAtPnRyYW5zZm9ybSgpOwotICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5nKCkpIHsK
LSAgICAgICAgcXJlYWwgeCA9IG1fdW5zY2FsZWRMYXllclJlY3QueCgpICsgbV9vZmZzZXQud2lk
dGgoKSAgLyB0cmFuc2Zvcm0ubTExKCkgLSBtX2JsdXJEaXN0YW5jZTsKLSAgICAgICAgcXJlYWwg
eSA9IG1fdW5zY2FsZWRMYXllclJlY3QueSgpICsgbV9vZmZzZXQuaGVpZ2h0KCkgLyB0cmFuc2Zv
cm0ubTIyKCkgLSBtX2JsdXJEaXN0YW5jZTsKLSAgICAgICAgcC0+ZHJhd0ltYWdlKFFQb2ludEYo
eCwgeSksIG1fbGF5ZXJJbWFnZSk7CisgICAgaWYgKG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMg
JiYgIXRyYW5zZm9ybS5pc0lkZW50aXR5KCkpIHsKKyAgICAgICAgLy8gT3BlcmF0aW5nIG9uIGEg
Y2FudmFzLCB3aGljaCBtZWFucyB0aGF0IHNoYWRvdyBvZmZzZXRzIG11c3Qgbm90IGJlIHRyYW5z
Zm9ybWVkLgorICAgICAgICAvLyBGaW5kIHRoZSByZWN0cyBmb3IgdGhlIGltYWdlIGFuZCBzaGFk
b3cgYWZ0ZXIgdHJhbnNmb3JtYXRpb24gKGtlZXBpbmcgdGhlIHNhbWUgb2Zmc2V0KS4KKyAgICAg
ICAgY29uc3QgUVJlY3RGIGxheWVySW1hZ2VTaXplUmVjdCgwLCAwLCBtX2xheWVySW1hZ2Uud2lk
dGgoKSwgbV9sYXllckltYWdlLmhlaWdodCgpKTsKKyAgICAgICAgY29uc3QgUVJlY3RGIHRyYW5z
Zm9ybWVkSW1hZ2VSZWN0ID0gdHJhbnNmb3JtLm1hcFJlY3QobGF5ZXJJbWFnZVNpemVSZWN0KTsK
KyAgICAgICAgY29uc3QgUVJlY3RGIHRyYW5zZm9ybWVkU2hhZG93UmVjdCA9IHRyYW5zZm9ybWVk
SW1hZ2VSZWN0LnRyYW5zbGF0ZWQob2Zmc2V0KCkpOworCisgICAgICAgIC8vIEFmdGVyIGtub3dp
bmcgaXQsIGZpbmQgdGhlIHBvaW50IHdoZXJlIHdlIG5lZWQgdG8gZHJhdyBpdCBvbiB0aGUgY2Fu
dmFzIHNvIHRoYXQgaXQKKyAgICAgICAgLy8gZW5kcyB1cCBpbiB0aGUgY29ycmVjdCBwbGFjZSBh
ZnRlciB0aGUgdHJhbnNmb3JtYXRpb25zLgorICAgICAgICBjb25zdCBRVHJhbnNmb3JtIGludmVy
c2VUcmFuc2Zvcm0gPSB0cmFuc2Zvcm0uaW52ZXJ0ZWQoKTsKKyAgICAgICAgY29uc3QgUVBvaW50
RiBsb2dpY2FsSW1hZ2VUb3BMZWZ0ID0gaW52ZXJzZVRyYW5zZm9ybS5tYXAodHJhbnNmb3JtZWRJ
bWFnZVJlY3QudG9wTGVmdCgpKTsKKyAgICAgICAgY29uc3QgUVBvaW50RiBsb2dpY2FsU2hhZG93
VG9wTGVmdCA9IGludmVyc2VUcmFuc2Zvcm0ubWFwKHRyYW5zZm9ybWVkU2hhZG93UmVjdC50b3BM
ZWZ0KCkpOworCisgICAgICAgIGNvbnN0IFFQb2ludEYgaW1hZ2VUb3BMZWZ0ID0gUVJlY3RGKG1f
bGF5ZXJBcmVhKS50b3BMZWZ0KCk7CisgICAgICAgIGNvbnN0IFFQb2ludEYgc2hhZG93VG9wTGVm
dCA9IGltYWdlVG9wTGVmdCAtIFFQb2ludEYobV9ibHVyRGlzdGFuY2UsIG1fYmx1ckRpc3RhbmNl
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGxvZ2ljYWxTaGFkb3dU
b3BMZWZ0IC0gbG9naWNhbEltYWdlVG9wTGVmdDsKKworICAgICAgICAvLyBGaW5hbGx5LCBkcmF3
IHRoZSBzaGFkb3cgb24gdGhlIHJpZ2h0IGNhbnZhcyBzcGFjZSBjb29yZCBhbmQgbGV0IHRoZSB0
cmFuc2Zvcm1hdGlvbgorICAgICAgICAvLyBtYWtlIGl0IGFwcGVhciB3aXRoIHRoZSBzYW1lIHJl
bGF0aXZlIG9mZnNldCB0byBpdHMgc2hhcGUvaW1hZ2UuCisgICAgICAgIHAtPmRyYXdJbWFnZShz
aGFkb3dUb3BMZWZ0LCBtX2xheWVySW1hZ2UpOwogICAgIH0gZWxzZQogICAgICAgICBwLT5kcmF3
SW1hZ2UobV9sYXllclJlY3QudG9wTGVmdCgpLCBtX2xheWVySW1hZ2UpOwogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCmluZGV4IGJi
YmNlZGJkY2VkNTNiZmNjMWE5MTE5MWI4OTUxZmIwNTQwNTIwZjEuLmE0ZGMxNzZiMGE2MTk3NzRm
MjMwOTUwZGVkOGZkY2MyMzI1YjVlYjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCkBAIC01NCw3ICs1NCw2IEBACiAjaW5jbHVk
ZSAiVHJhbnNwYXJlbmN5TGF5ZXIuaCIKIAogI2luY2x1ZGUgPFFCcnVzaD4KLSNpbmNsdWRlIDxR
RGVidWc+CiAjaW5jbHVkZSA8UUdyYWRpZW50PgogI2luY2x1ZGUgPFFQYWludERldmljZT4KICNp
bmNsdWRlIDxRUGFpbnRFbmdpbmU+CkBAIC0xNzYsNiArMTc1LDIyIEBAIHN0YXRpYyBpbmxpbmUg
UXQ6OkZpbGxSdWxlIHRvUXRGaWxsUnVsZShXaW5kUnVsZSBydWxlKQogICAgIHJldHVybiBRdDo6
T2RkRXZlbkZpbGw7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBtdXN0VXNlQ29udGV4dFNoYWRv
dyhRUGFpbnRlciogcGFpbnRlciwgQ29udGV4dFNoYWRvdyogc2hhZG93KQoreworICAgIGlmIChz
aGFkb3ctPm1fdHlwZSA9PSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93KQorICAgICAgICAvLyBX
ZSBjYW4ndCBhdm9pZCBDb250ZXh0U2hhZG93LCBzaW5jZSB0aGUgc2hhZG93IGhhcyBibHVyLgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIXNoYWRvdy0+c2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMoKSkKKyAgICAgICAgLy8gV2UgY2FuIGF2b2lkIENvbnRleHRTaGFkb3cgYW5kIG9wdGlt
aXplLCBzaW5jZSB3ZSdyZSBub3QgZHJhd2luZyBvbiBhIGNhbnZhcyBhbmQgYm94CisgICAgICAg
IC8vIHNoYWRvd3MgYXJlIGFmZmVjdGVkIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAocGFpbnRlci0+dHJhbnNmb3JtKCkuaXNJZGVu
dGl0eSgpKQorICAgICAgICAvLyBXZSBjYW4gYXZvaWQgQ29udGV4dFNoYWRvdywgc2luY2UgdGhl
cmUgYXJlIG5vIHRyYW5zZm9ybWF0aW9ucyB0byBhcHBseSB0byB0aGUgY2FudmFzLgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgLy8gT3RoZXJ3aXNlLCBubyBjaGFuY2UgYXZvaWRpbmcgQ29u
dGV4dFNoYWRvdy4KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICBHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoUVBhaW50ZXIqLCBjb25zdCBRQ29sb3ImIGluaXRp
YWxTb2xpZENvbG9yKTsKQEAgLTUwOSwzMSArNTI0LDIxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQogCiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93
KCkpIHsKICAgICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwot
ICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdwot
ICAgICAgICAgICAgJiYgIW1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybiAmJiAhbV9jb21tb24t
PnN0YXRlLmZpbGxHcmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAs
IHNoYWRvdykKKyAgICAgICAgICAgIHx8IG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybgorICAg
ICAgICAgICAgfHwgbV9jb21tb24tPnN0YXRlLmZpbGxHcmFkaWVudCkKICAgICAgICAgewotICAg
ICAgICAgICAgUVBvaW50RiBvZmZzZXQgPSBzaGFkb3ctPm9mZnNldCgpOwotICAgICAgICAgICAg
Y29uc3QgUVRyYW5zZm9ybSYgdHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0gICAgICAgICAg
ICBpZiAodHJhbnNmb3JtLmlzU2NhbGluZygpKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgc2Nh
bGluZyBpcyByZXF1aXJlZCwgZmluZCB0aGUgbmV3IGNvb3JkIGZvciBzaGFkb3cgb3JpZ2luLAot
ICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIHJlbGF0aXZlIG9mZnNldCB0byBpdHMgc2hh
cGUgaXMga2VwdC4KLSAgICAgICAgICAgICAgICBRUG9pbnRGIHRyYW5zbGF0ZWRPZmZzZXQob2Zm
c2V0LngoKSAvIHRyYW5zZm9ybS5tMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb2Zmc2V0LnkoKSAvIHRyYW5zZm9ybS5tMjIoKSk7Ci0gICAgICAgICAgICAg
ICAgcGxhdGZvcm1QYXRoLnRyYW5zbGF0ZSh0cmFuc2xhdGVkT2Zmc2V0KTsKLSAgICAgICAgICAg
ICAgICBwLT5maWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihzaGFkb3ctPm1fY29sb3IpKTsK
LSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKC10cmFuc2xhdGVkT2Zmc2V0
KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG9m
ZnNldCk7Ci0gICAgICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3Io
c2hhZG93LT5tX2NvbG9yKSk7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZzZXQp
OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUVBhaW50ZXIq
IHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcGxhdGZvcm1QYXRo
LmNvbnRyb2xQb2ludFJlY3QoKSk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewog
ICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRl
cjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRl
ci0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xvcikp
OwogICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBRUG9pbnRGIG9mZnNldCA9IHNoYWRv
dy0+b2Zmc2V0KCk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKKyAgICAgICAg
ICAgIHAtPmZpbGxQYXRoKHBsYXRmb3JtUGF0aCwgUUNvbG9yKHNoYWRvdy0+bV9jb2xvcikpOwor
ICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZzZXQpOwogICAgICAgICB9CiAKICAgICB9CkBA
IC01NjAsMjggKzU2NSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25z
dCBQYXRoJiBwYXRoKQogCiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAg
Q29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotCi0gICAgICAgIGlmIChz
aGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93Ci0gICAgICAgICAgICAm
JiAhbV9jb21tb24tPnN0YXRlLnN0cm9rZVBhdHRlcm4gJiYgIW1fY29tbW9uLT5zdGF0ZS5zdHJv
a2VHcmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykK
KyAgICAgICAgICAgIHx8IG1fY29tbW9uLT5zdGF0ZS5zdHJva2VQYXR0ZXJuCisgICAgICAgICAg
ICB8fCBtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlR3JhZGllbnQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIFFQZW4gc2hhZG93UGVuKHBlbik7Ci0gICAgICAgICAgICBzaGFkb3dQZW4uc2V0Q29sb3Io
bV9kYXRhLT5zaGFkb3cubV9jb2xvcik7Ci0gICAgICAgICAgICBRUG9pbnRGIG9mZnNldCA9IHNo
YWRvdy0+b2Zmc2V0KCk7Ci0gICAgICAgICAgICBjb25zdCBRVHJhbnNmb3JtJiB0cmFuc2Zvcm0g
PSBwLT50cmFuc2Zvcm0oKTsKLSAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5nKCkp
IHsKLSAgICAgICAgICAgICAgICAvLyBJZiBzY2FsaW5nIGlzIHJlcXVpcmVkLCBmaW5kIHRoZSBu
ZXcgY29vcmQgZm9yIHNoYWRvdyBvcmlnaW4sCi0gICAgICAgICAgICAgICAgLy8gc28gdGhhdCB0
aGUgcmVsYXRpdmUgb2Zmc2V0IHRvIGl0cyBzaGFwZSBpcyBrZXB0LgotICAgICAgICAgICAgICAg
IFFQb2ludEYgdHJhbnNsYXRlZE9mZnNldChvZmZzZXQueCgpIC8gdHJhbnNmb3JtLm0xMSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQueSgpIC8gdHJh
bnNmb3JtLm0yMigpKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKHRy
YW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgICAgIHAtPnN0cm9rZVBhdGgocGxhdGZvcm1Q
YXRoLCBzaGFkb3dQZW4pOwotICAgICAgICAgICAgICAgIHBsYXRmb3JtUGF0aC50cmFuc2xhdGUo
LXRyYW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBwLT5zdHJva2VQYXRoKHBs
YXRmb3JtUGF0aCwgc2hhZG93UGVuKTsKLSAgICAgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW9m
ZnNldCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBGbG9h
dFJlY3QgYm91bmRpbmdSZWN0ID0gcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKTsKICAg
ICAgICAgICAgIGJvdW5kaW5nUmVjdC5pbmZsYXRlKHBlbi5taXRlckxpbWl0KCkgKyBwZW4ud2lk
dGhGKCkpOwogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJl
Z2luU2hhZG93TGF5ZXIocCwgYm91bmRpbmdSZWN0KTsKQEAgLTU5MCw2ICs1NzcsMTMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAg
ICAgICAgICBzaGFkb3dQYWludGVyLT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgcGVuKTsKICAg
ICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUVBlbiBzaGFkb3dQZW4ocGVuKTsKKyAgICAg
ICAgICAgIHNoYWRvd1Blbi5zZXRDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9yKTsKKyAgICAg
ICAgICAgIFFQb2ludEYgb2Zmc2V0ID0gc2hhZG93LT5vZmZzZXQoKTsKKyAgICAgICAgICAgIHAt
PnRyYW5zbGF0ZShvZmZzZXQpOworICAgICAgICAgICAgcC0+c3Ryb2tlUGF0aChwbGF0Zm9ybVBh
dGgsIHNoYWRvd1Blbik7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW9mZnNldCk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTcwOSw3ICs3MDMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICBwLT5maWxsUmVjdChub3Jt
YWxpemVkUmVjdCwgYnJ1c2gpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChtX2RhdGEtPmhh
c1NoYWRvdygpKSB7Ci0gICAgICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgPT0gQ29udGV4dFNo
YWRvdzo6Qmx1clNoYWRvdykgeworICAgICAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93
KHAsIHNoYWRvdykpIHsKICAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9
IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAg
ICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFp
bnRlci0+c2V0T3BhY2l0eShzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5tX2NvbG9yLmFscGhh
KCkpIC8gMjU1KTsKQEAgLTcxNywxNyArNzExLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgICAgICAgICAgICAgIHNoYWRv
dy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAvLyBTb2xpZCByZWN0YW5nbGUgZmlsbCB3aXRoIG5vIGJs
dXIgc2hhZG93IGNhbiBiZSBkb25lIGZhc3RlcgotICAgICAgICAgICAgICAgIC8vIHdpdGhvdXQg
dXNpbmcgdGhlIHNoYWRvdyBsYXllciBhdCBhbGwuCisgICAgICAgICAgICAgICAgLy8gU29saWQg
cmVjdGFuZ2xlIGZpbGwgd2l0aCBubyBibHVyIHNoYWRvdyBvciB0cmFuc2Zvcm1hdGlvbnMgYXBw
bGllZCBjYW4gYmUgZG9uZQorICAgICAgICAgICAgICAgIC8vIGZhc3RlciB3aXRob3V0IHVzaW5n
IHRoZSBzaGFkb3cgbGF5ZXIgYXQgYWxsLgogICAgICAgICAgICAgICAgIFFDb2xvciBzaGFkb3dD
b2xvciA9IHNoYWRvdy0+bV9jb2xvcjsKICAgICAgICAgICAgICAgICBzaGFkb3dDb2xvci5zZXRB
bHBoYUYoc2hhZG93Q29sb3IuYWxwaGFGKCkgKiBwLT5icnVzaCgpLmNvbG9yKCkuYWxwaGFGKCkp
OwotICAgICAgICAgICAgICAgIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSA9IHAtPnRyYW5z
Zm9ybSgpOwotICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5nKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJhbnNsYXRlZChz
dGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5vZmZzZXQoKS54KCkpIC8gdHJhbnNmb3JtLm0xMSgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PHFyZWFsPihzaGFkb3ctPm9mZnNldCgpLnkoKSAgLyB0cmFuc2Zvcm0u
bTIyKCkpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93Q29sb3IpOwot
ICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBwLT5maWxsUmVjdChu
b3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHNoYWRvdy0+b2Zmc2V0KCkpLCBzaGFkb3dDb2xvcik7
CisgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJhbnNsYXRlZChz
aGFkb3ctPm9mZnNldCgpKSwgc2hhZG93Q29sb3IpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKQEAgLTc0NywxOCArNzM1LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAKICAgICBp
ZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAgICAgICBDb250ZXh0U2hhZG93KiBzaGFkb3cg
PSBjb250ZXh0U2hhZG93KCk7Ci0KLSAgICAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRl
eHRTaGFkb3c6OkJsdXJTaGFkb3cpIHsKLSAgICAgICAgICAgIC8vIFdlIGRvIG5vdCBuZWVkIGFu
eSBsYXllciBmb3Igc2ltcGxlIHNoYWRvdy4KLSAgICAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1h
bGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvdy0+bV9jb2xvcik7
Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtdXN0VXNlQ29udGV4dFNoYWRvdyhwLCBz
aGFkb3cpKSB7CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+
YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAgICBpZiAoc2hh
ZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0
aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAg
ICAgc2hhZG93UGFpbnRlci0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIHNoYWRvdy0+bV9jb2xv
cik7CiAgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwKTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHAtPmZpbGxSZWN0
KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvdy0+bV9j
b2xvcik7CiAgICAgfQogCiAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIG1fZGF0YS0+
c29saWRDb2xvcik7CkBAIC03NzQsMTkgKzc1OSwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExl
ZgogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CiAgICAgaWYgKG1fZGF0YS0+aGFzU2hh
ZG93KCkpIHsKICAgICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygp
OwotCi0gICAgICAgIGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hh
ZG93KSB7Ci0gICAgICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCBhbnkgbGF5ZXIgZm9yIHNpbXBs
ZSBzaGFkb3cuCi0gICAgICAgICAgICBwLT50cmFuc2xhdGUobV9kYXRhLT5zaGFkb3cub2Zmc2V0
KCkpOwotICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGF0aC5wbGF0Zm9ybVBhdGgoKSwgUUNvbG9y
KG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKLSAgICAgICAgICAgIHAtPnRyYW5zbGF0ZSgtbV9k
YXRhLT5zaGFkb3cub2Zmc2V0KCkpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAobXVz
dFVzZUNvbnRleHRTaGFkb3cocCwgc2hhZG93KSkgewogICAgICAgICAgICAgUVBhaW50ZXIqIHNo
YWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcmVjdCk7CiAgICAgICAg
ICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXIt
PnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAg
ICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFBhdGgocGF0aC5wbGF0Zm9ybVBhdGgo
KSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKICAgICAgICAgICAgICAgICBzaGFk
b3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG1fZGF0YS0+c2hhZG93Lm9mZnNldCgpKTsKKyAgICAg
ICAgICAgIHAtPmZpbGxQYXRoKHBhdGgucGxhdGZvcm1QYXRoKCksIFFDb2xvcihtX2RhdGEtPnNo
YWRvdy5tX2NvbG9yKSk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW1fZGF0YS0+c2hhZG93
Lm9mZnNldCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBwLT5maWxsUGF0aChwYXRoLnBsYXRm
b3JtUGF0aCgpLCBRQ29sb3IoY29sb3IpKTsKQEAgLTk2NSw5ICs5NDgsMTAgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxv
YXQgYmx1ciwgY29uc3QKICAgICAgICAgLy8gV2UgZmxpcCB0aGUgaGVpZ2h0IHNpbmNlIENHIGFu
ZCBIVE1MNSBDYW52YXMgaGF2ZSBvcHBvc2l0ZSBZIGF4aXMKICAgICAgICAgbV9jb21tb24tPnN0
YXRlLnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZShzaXplLndpZHRoKCksIC1zaXplLmhlaWdodCgp
KTsKICAgICAgICAgbV9kYXRhLT5zaGFkb3cgPSBDb250ZXh0U2hhZG93KGNvbG9yLCBibHVyLCBG
bG9hdFNpemUoc2l6ZS53aWR0aCgpLCAtc2l6ZS5oZWlnaHQoKSkpOwotICAgIH0gZWxzZSB7Cisg
ICAgfSBlbHNlCiAgICAgICAgIG1fZGF0YS0+c2hhZG93ID0gQ29udGV4dFNoYWRvdyhjb2xvciwg
Ymx1ciwgRmxvYXRTaXplKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOwotICAgIH0KKwor
ICAgIG1fZGF0YS0+c2hhZG93LnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKG1fY29tbW9uLT5z
dGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpjbGVhclBsYXRmb3JtU2hhZG93KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76006</attachid>
            <date>2010-12-08 19:51:07 -0800</date>
            <delta_ts>2010-12-09 18:39:16 -0800</delta_ts>
            <desc>Refactored, more comments, added new test</desc>
            <filename>bug-50422-20101208195106.patch</filename>
            <type>text/plain</type>
            <size>35649</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhYmNiNjdkMDU4OTcwMzNhMWJhNTAzZTA3OTA0NDYwMTU0MTVlY2ZhLi4yNThhMjc1
ODgxODRlMzU5OGFmYjQ4NTNiZjAwYjc0Njk2OGVlMGIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMTAtMTItMDggIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBObyBzaGFkb3cg
b2Zmc2V0IHNob3VsZCBiZSBhZmZlY3RlZCBieSBhbnkgdHJhbnNmb3JtYXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNDIyCisKKyAgICAgICAg
T24gYSBjYW52YXMgY29udGV4dCwgc2hhZG93cyBhcmUgY3VycmVudGx5IGFmZmVjdGVkIGJ5IGFs
bAorICAgICAgICB0cmFuc2Zvcm1hdGlvbnMgZXhjZXB0IHNjYWxpbmcuIEFjY29yZGluZyB0byB0
aGUgc3BlYzoKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWNhbnZhcy1lbGVtZW50Lmh0bWwjc2hhZG93cworCisg
ICAgICAgICJUaGUgc2hhZG93T2Zmc2V0WCBhbmQgc2hhZG93T2Zmc2V0WSBhdHRyaWJ1dGVzIHNw
ZWNpZnkgdGhlIGRpc3RhbmNlCisgICAgICAgIHRoYXQgdGhlIHNoYWRvdyB3aWxsIGJlIG9mZnNl
dCBpbiB0aGUgcG9zaXRpdmUgaG9yaXpvbnRhbCBhbmQgcG9zaXRpdmUKKyAgICAgICAgdmVydGlj
YWwgZGlzdGFuY2UgcmVzcGVjdGl2ZWx5LiBUaGVpciB2YWx1ZXMgYXJlIGluIGNvb3JkaW5hdGUg
c3BhY2UKKyAgICAgICAgdW5pdHMuIFRoZXkgYXJlIG5vdCBhZmZlY3RlZCBieSB0aGUgY3VycmVu
dCB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguIgorCisgICAgICAgIE5PVEU6IHRoaXMgYXBwbGllcyBv
bmx5IHRvIGNhbnZhcywgbm90IHRvIGJveCBzaGFkb3dzLgorCisgICAgICAgIEFkZCBuZXcgdGVz
dCB0byBlbnN1cmUgdGhhdCBzaGFkb3dzIGFyZSBjb3JyZWN0bHkgdHJhbnNmb3JtZWQga2VlcGlu
ZworICAgICAgICB0aGUgcmVsYXRpdmUgb2Zmc2V0IHRvIHRoZSBzaGFwZS4KKworICAgICAgICAq
IGZhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5z
Zm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFz
L3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LmpzOgorICAgICAgICAq
IGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93Lmpz
OgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tl
UGF0aC1zaGFkb3cuanM6IE5vdyB1c2luZworICAgICAgICAgIGEgbGluZVdpZHRoID4gMSB0byBt
YWtlIGl0IGVhc2llciB0byB0ZXN0IGFuZCBtb3JlIGZhaXIgYW1vbmcgYWxsCisgICAgICAgICAg
cG9ydHMsIHNpbmNlIHRoZXJlIGNhbiBiZSBkaWZmZXJlbnQgdHJhbnNmb3JtYXRpb24gc21vb3Ro
bmVzcyBvcgorICAgICAgICAgIGFsaWFzaW5nIHNldHRpbmdzLgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuanM6IEFk
ZGVkLgorCiAyMDEwLTEyLTA4ICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkIENocm9taXVtIHRlc3QgZXhwZWN0YXRpb25zIHVwZGF0ZS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQ
YXRoLXNoYWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMt
c2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0CmluZGV4IGU1NjIwMWY3Mzg3ZTQ2
MmY3OTIyNWU2NWY4YTM0MDFlMmUzMjM2ZmUuLmEzMzdjNGI2M2ZmMWRkZmVlZDQ0ODhlMzUxZmZk
YWUxNDllYTg1MTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1z
Y2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dApAQCAt
MzAsMjcgKzMwLDI3IEBAIFBBU1MgZFszXSBpcyBhcm91bmQgNzYKIFBBU1MgZFswXSBpcyAyNTUK
IFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMAor
UEFTUyBkWzNdIGlzIGFyb3VuZCAxNDkKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAw
CiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMgorUEFTUyBkWzNdIGlzIGFy
b3VuZCAxMTYKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMg
MAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyOAorUEFTUyBkWzNdIGlzIGFyb3VuZCAxMTUKIFBBU1Mg
ZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlz
IGFyb3VuZCAyMgorUEFTUyBkWzNdIGlzIGFyb3VuZCA3MAogUEFTUyBkWzBdIGlzIDI1NQogUEFT
UyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDE1CitQQVNT
IGRbM10gaXMgYXJvdW5kIDcwCiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFT
UyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMTcKK1BBU1MgZFszXSBpcyBhcm91bmQg
NjkKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJl
Y3Qtc2hhZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10
cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDEzYjg5
MTJmMGQyYTdmMDM5MTk2M2NmNjljMGI3NGU2YjQzMTk0YwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NyBAQAorRW5zdXJlIGNvcnJlY3QgYmVoYXZpb3Igb2Yg
Y2FudmFzIHdpdGggZmlsbFJlY3Qrc2hhZG93IGFmdGVyIHRyYW5zbGF0aW9uK3JvdGF0aW9uK3Nj
YWxpbmcuIEEgYmx1ZSBhbmQgcmVkIGNoZWNrZXJlZCBwYXR0ZXJuIHNob3VsZCBiZSBkaXNwbGF5
ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRbMF0gaXMgMjU1CitQ
QVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyAyNTUKK1BBU1MgZFsw
XSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIDI1
NQorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNT
IGRbM10gaXMgMjU1CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJd
IGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQgMTI3CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRb
MV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQgMTI3CitQQVNTIGRb
MF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBh
cm91bmQgMTI3CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlz
IDAKK1BBU1MgZFszXSBpcyBhcm91bmQgMTA2CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0g
aXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQgMTA2CitQQVNTIGRbMF0g
aXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91
bmQgODMKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAor
UEFTUyBkWzNdIGlzIGFyb3VuZCAzNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAK
K1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDM2CitQQVNTIGRbMF0gaXMgMjU1
CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQgMzYK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVj
dC1zaGFkb3cuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1z
LWZpbGxSZWN0LXNoYWRvdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmYzRlOWE4NDRlN2JmNjdmZmVlNWVi
ZjU4ZDUwZGJmNDJhNzhhOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuaHRtbApAQCAtMCwwICsxLDEz
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3Rz
L2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVz
dHMvY2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LmpzCmluZGV4IDA1
Mjg2ZjUzMjhiNWU1OTk4MzI0MzUwNzVkYmJmMWVjMTdlNWEyMDcuLjNjYTMzMjE5OTI4ZGRkMWJm
MjAyMWM0YTAyNGQ3MzA4YmNiODY1MzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LmpzCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgt
c2hhZG93LmpzCkBAIC03OSwxMyArNzksMTMgQEAgc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDI5OSwgMjk1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEo
Mjk4LCAyOTUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJl
KCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywg
JzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDI5OSwgMSwgMSkuZGF0YTsKK2Qg
PSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0n
LCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7
CkBAIC05OCwxMyArOTgsMTMgQEAgc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
Ml0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJ
bWFnZURhdGEoMjk5LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyOTgs
IDQwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2Rb
MV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10n
LCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTksIDEsIDEpLmRhdGE7Citk
ID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBd
JywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZh
cy1zY2FsZS1maWxsUmVjdC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3Jp
cHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5qcwppbmRleCA5OWExZTU5NGJk
NTlmNzM2N2YzYzMwZGVhMTY1MWUzMmYzZDRkZTZlLi5mNDk1YzkxMDU1YmJhMWRjYjE0NjgzMmUy
ODE2MzA3NGEwNDVlODI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3Jp
cHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5qcworKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5q
cwpAQCAtNTgsMTMgKzU4LDEzIEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdk
WzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4LmdldEltYWdl
RGF0YSgyOTksIDI5NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgMjk4
LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScs
ICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsK
IAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyOTksIDEsIDEpLmRhdGE7CitkID0gY3R4Lmdl
dEltYWdlRGF0YSgyMDEsIDI5OCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScp
Owogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwpAQCAtNzcs
MTMgKzc3LDEzIEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAn
KTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRh
KDI5OSwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCA0MDUsIDEs
IDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAn
KTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7
CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5n
ZXRJbWFnZURhdGEoMjA1LCA0OTgsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUn
KTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUt
c3Ryb2tlUGF0aC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVz
dHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzCmluZGV4IDUxOThkOTQxNTE3ZGFi
OTJiYzI4OTFjODM3NGYzNWJhMWE4OWQ1NzkuLjkxYjkyN2Y5NWZhODdkZTVmOWQ2NTVmM2IyZmZk
MmY0YjVkYWQ1MzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10
ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy5q
cwpAQCAtMzUsNiArMzUsNyBAQCBjdHguc2NhbGUoMiwgMik7CiBjdHguc2hhZG93T2Zmc2V0WCA9
IDEwMDsKIGN0eC5zaGFkb3dPZmZzZXRZID0gMTAwOwogY3R4LnN0cm9rZVN0eWxlID0gJ3JnYmEo
MCwgMCwgMjU1LCAxKSc7CitjdHgubGluZVdpZHRoID0gNTsKIAogY3R4LnNoYWRvd0NvbG9yID0g
J3JnYmEoMjU1LCAwLCAwLCAxLjApJzsKIGN0eC5iZWdpblBhdGgoKTsKQEAgLTc2LDc5ICs3Nyw3
OSBAQCBjdHguc3Ryb2tlKCk7CiB2YXIgZDsgLy8gaW1hZ2VEYXRhLmRhdGEKIAogLy8gVmVyaWZ5
IHNvbGlkIHNoYWRvdy4KLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjA1LCAxLCAxKS5kYXRh
OworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjUwLCAyMDAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgn
ZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywg
JzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgy
OTksIDI5NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDMwMCwgMjkwLCAxLCAx
KS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7
CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9
IGN0eC5nZXRJbWFnZURhdGEoMjAxLCAyOTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdl
RGF0YSgyMDAsIDI1MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hv
dWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
M10nLCAnMjU1Jyk7CiAKIC8vIFZlcmlmeSBzb2xpZCBhbHBoYSBzaGFkb3cuCi1kID0gY3R4Lmdl
dEltYWdlRGF0YSgyMDAsIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIw
MSwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgn
ZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFsz
XScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDQwNSwgMSwgMSkuZGF0YTsK
K2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwgNTAwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2Rb
MF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcw
Jyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0
YSgyMDUsIDQ5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDMwMCwgNDk5LCAx
LCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcw
Jyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3Nicp
OwogCiAvLyBWZXJpZnkgYmx1cnJ5IHNoYWRvdy4KLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDM5NCwg
MjA4LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoNDA0LCAyMTAsIDEsIDEpLmRh
dGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNo
b3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzIwJyk7CitzaG91
bGRCZUFyb3VuZCgnZFszXScsICcxNDknKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoNTAzLCAz
MDEsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg1MDUsIDI1MCwgMSwgMSkuZGF0
YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjInKTsKK3Nob3Vs
ZEJlQXJvdW5kKCdkWzNdJywgJzExNicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSg1MDQsIDI1
MCwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQ1MCwgMjA1LCAxLCAxKS5kYXRh
Owogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91
bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcyOCcpOworc2hvdWxk
QmVBcm91bmQoJ2RbM10nLCAnMTE1Jyk7CiAKIC8vIFZlcmlmeSBibHVycnkgYWxwaGEgc2hhZG93
LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoNDA1LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4Lmdl
dEltYWdlRGF0YSg1MDUsIDQ1MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScp
Owogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxk
QmVBcm91bmQoJ2RbM10nLCAnMjInKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzcwJyk7CiAK
LWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDQxNSwgNDk1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJ
bWFnZURhdGEoNTA1LCA0NTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsK
IHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJl
QXJvdW5kKCdkWzNdJywgJzE1Jyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICc3MCcpOwogCi1k
ID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDUwNCwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1h
Z2VEYXRhKDQ1MCwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBz
aG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFy
b3VuZCgnZFszXScsICcxNycpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNjknKTsKIAogdmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmpz
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy10cmFuc2Zvcm1z
LWZpbGxSZWN0LXNoYWRvdy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjdmMjQ0M2NiZTkwNjAwNTNiYzM5OTAy
Nzk4NWVlNWYwNzM3OWVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5qcwpAQCAt
MCwwICsxLDEzMyBAQAorZGVzY3JpcHRpb24oIkVuc3VyZSBjb3JyZWN0IGJlaGF2aW9yIG9mIGNh
bnZhcyB3aXRoIGZpbGxSZWN0K3NoYWRvdyBhZnRlciB0cmFuc2xhdGlvbityb3RhdGlvbitzY2Fs
aW5nLiBBIGJsdWUgYW5kIHJlZCBjaGVja2VyZWQgcGF0dGVybiBzaG91bGQgYmUgZGlzcGxheWVk
LiIpOworCitmdW5jdGlvbiBwcmludChtZXNzYWdlLCBjb2xvcikKK3sKKyAgICB2YXIgcGFyYWdy
YXBoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgcGFyYWdyYXBoLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICBwYXJhZ3JhcGgu
c3R5bGUuZm9udEZhbWlseSA9ICJtb25vc3BhY2UiOworICAgIGlmIChjb2xvcikKKyAgICAgICAg
cGFyYWdyYXBoLnN0eWxlLmNvbG9yID0gY29sb3I7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChwYXJhZ3JhcGgpOworfQorCitmdW5jdGlvbiBzaG91
bGRCZUFyb3VuZChhLCBiKQoreworICAgIHZhciBldmFsQTsKKyAgICB0cnkgeworICAgICAgICBl
dmFsQSA9IGV2YWwoYSk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGV2YWxBID0gZTsKKyAg
ICB9CisKKyAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8IDEwKQorICAgICAgICBwcmludCgi
UEFTUyAiICsgYSArICIgaXMgYXJvdW5kICIgKyBiICwgImdyZWVuIikKKyAgICBlbHNlCisgICAg
ICAgIHByaW50KCJGQUlMICIgKyBhICsgIiBpcyBub3QgYXJvdW5kICIgKyBiICsgIiAoYWN0dWFs
OiAiICsgZXZhbEEgKyAiKSIsICJyZWQiKTsKK30KKwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjYW52YXMp
OworY2FudmFzLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCAnNjAwJyk7CitjYW52YXMuc2V0QXR0cmli
dXRlKCdoZWlnaHQnLCAnNjAwJyk7Cit2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7
CisKK2N0eC5maWxsU3R5bGUgPSAncmdiYSgwLCAwLCAyNTUsIDEuMCknOworY3R4LnNoYWRvd09m
ZnNldFggPSAxMDA7CitjdHguc2hhZG93T2Zmc2V0WSA9IDEwMDsKKworY3R4LnRyYW5zbGF0ZSgt
MTAwLCAtMTAwKTsKK2N0eC5yb3RhdGUoTWF0aC5QSS8yKTsKK2N0eC5zY2FsZSgyLCAyKTsKKwor
Y3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMjU1LCAwLCAwLCAxLjApJzsKK2N0eC5maWxsUmVjdCgx
MDAsIC0xNTAsIDUwLCA1MCk7CisKK2N0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwg
MC41KSc7CitjdHguZmlsbFJlY3QoMjAwLCAtMTUwLCA1MCwgNTApOworCitjdHguc2hhZG93Qmx1
ciA9IDU7CitjdHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDEuMCknOworY3R4LmZp
bGxSZWN0KDEwMCwgLTI1MCwgNTAsIDUwKTsKKworY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMjU1
LCAwLCAwLCAwLjUpJzsKK2N0eC5maWxsUmVjdCgyMDAsIC0yNTAsIDUwLCA1MCk7CisKK3ZhciBk
OyAvLyBpbWFnZURhdGEuZGF0YQorCisvLyBWZXJpZnkgc29saWQgc2hhZG93LgorZCA9IGN0eC5n
ZXRJbWFnZURhdGEoMjAwLCAyMDUsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUn
KTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3Vs
ZEJlKCdkWzNdJywgJzI1NScpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgyOTgsIDI5OCwgMSwg
MSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcp
Oworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CisKK2Qg
PSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwgMjk4LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0n
LCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7
CitzaG91bGRCZSgnZFszXScsICcyNTUnKTsKKworLy8gVmVyaWZ5IHNvbGlkIGFscGhhIHNoYWRv
dy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwgNDAxLCAxLCAxKS5kYXRhOworc2hvdWxkQmUo
J2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScs
ICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMjcnKTsKKworZCA9IGN0eC5nZXRJbWFn
ZURhdGEoMjk5LCA0NTAsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3No
b3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJv
dW5kKCdkWzNdJywgJzEyNycpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OCwgMSwg
MSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcp
Oworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTI3Jyk7
CisKKy8vIFZlcmlmeSBibHVycnkgc2hhZG93LgorZCA9IGN0eC5nZXRJbWFnZURhdGEoMzk5LCAy
MDUsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFd
JywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywg
JzEwNicpOworCitkID0gY3R4LmdldEltYWdlRGF0YSg1MDAsIDIwNSwgMSwgMSkuZGF0YTsKK3No
b3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUo
J2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTA2Jyk7CisKK2QgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDQ5OSwgMjk5LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1
Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91
bGRCZUFyb3VuZCgnZFszXScsICc4MycpOworCisvLyBWZXJpZnkgYmx1cnJ5IGFscGhhIHNoYWRv
dy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDM5OCwgNDA1LCAxLCAxKS5kYXRhOworc2hvdWxkQmUo
J2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScs
ICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICczNicpOworCitkID0gY3R4LmdldEltYWdl
RGF0YSg0MDUsIDUwMSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hv
dWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91
bmQoJ2RbM10nLCAnMzYnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoNDA1LCA1MDEsIDEsIDEp
LmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsK
K3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzM2Jyk7CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NTBmZTgyZjc0Y2IwNDViNmNiMzAzMGNk
NWU1ZTdhOTQ4ZDgwZjY1Li42ZWMxODk1NGM0NTk2Njc4N2MzMzZhY2Y1YzI4ZGQ3N2QwOGQwMTRh
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQwIEBACisyMDEwLTEyLTA4ICBIZWxkZXIgQ29ycmVpYSAgPGhlbGRlckBzZW5j
aGEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtRdF0gTm8gc2hhZG93IG9mZnNldCBzaG91bGQgYmUgYWZmZWN0ZWQgYnkgYW55IHRyYW5zZm9y
bWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MDQyMgorCisgICAgICAgIE9uIGEgY2FudmFzIGNvbnRleHQsIHNoYWRvd3MgYXJlIGN1cnJlbnRs
eSBhZmZlY3RlZCBieSBhbGwKKyAgICAgICAgdHJhbnNmb3JtYXRpb25zIGV4Y2VwdCBzY2FsaW5n
LiBBY2NvcmRpbmcgdG8gdGhlIHNwZWM6CisgICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9z
cGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1jYW52YXMtZWxlbWVudC5o
dG1sI3NoYWRvd3MKKworICAgICAgICAiVGhlIHNoYWRvd09mZnNldFggYW5kIHNoYWRvd09mZnNl
dFkgYXR0cmlidXRlcyBzcGVjaWZ5IHRoZSBkaXN0YW5jZQorICAgICAgICB0aGF0IHRoZSBzaGFk
b3cgd2lsbCBiZSBvZmZzZXQgaW4gdGhlIHBvc2l0aXZlIGhvcml6b250YWwgYW5kIHBvc2l0aXZl
CisgICAgICAgIHZlcnRpY2FsIGRpc3RhbmNlIHJlc3BlY3RpdmVseS4gVGhlaXIgdmFsdWVzIGFy
ZSBpbiBjb29yZGluYXRlIHNwYWNlCisgICAgICAgIHVuaXRzLiBUaGV5IGFyZSBub3QgYWZmZWN0
ZWQgYnkgdGhlIGN1cnJlbnQgdHJhbnNmb3JtYXRpb24gbWF0cml4LiIKKworICAgICAgICBOT1RF
OiB0aGlzIGFwcGxpZXMgb25seSB0byBjYW52YXMsIG5vdCB0byBib3ggc2hhZG93cy4KKworICAg
ICAgICBUZXN0OiBmYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cu
aHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjpDb250ZXh0U2hhZG93KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93Lmg6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZXh0U2hhZG93OjpzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjpzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGV4dFNoYWRvdzo6ZW5kU2hhZG93TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om11
c3RVc2VDb250ZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyk6CisKIDIwMTAtMTIt
MDggIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250
ZXh0U2hhZG93LmNwcAppbmRleCA4N2ExYzVjNzYzY2VjNTU2NjM0ZjJmYmFmYzY3NTk0MjllZGM1
OWQxLi4zYmVkMmEwZGY4NTU5ZTYyMzJjYjJjMzE2MjZlOTY4YjJjMDFmYzkwIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHAKQEAgLTQxLDYgKzQxLDggQEAg
Q29udGV4dFNoYWRvdzo6Q29udGV4dFNoYWRvdygpCiAgICAgOiBtX3R5cGUoTm9TaGFkb3cpCiAg
ICAgLCBtX2JsdXJEaXN0YW5jZSgwKQogICAgICwgbV9sYXllckNvbnRleHQoMCkKKyAgICAsIG1f
bGF5ZXJJbmZsYXRpb24oMCkKKyAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoZmFsc2Up
CiB7CiB9CiAKQEAgLTQ5LDYgKzUxLDggQEAgQ29udGV4dFNoYWRvdzo6Q29udGV4dFNoYWRvdyhj
b25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHJhZGl1cywgY29uc3QgRmxvYXRTaXplJgogICAgICwg
bV9ibHVyRGlzdGFuY2Uocm91bmQocmFkaXVzKSkKICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKICAg
ICAsIG1fbGF5ZXJDb250ZXh0KDApCisgICAgLCBtX2xheWVySW5mbGF0aW9uKDApCisgICAgLCBt
X3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZhbHNlKQogewogICAgIC8vIFNlZSBjb21tZW50cyBp
biBodHRwOi8vd2Via2l0Lm9yZy9iLzQwNzkzLCBpdCBzZWVtcyBzZW5zaWJsZQogICAgIC8vIHRv
IGZvbGxvdyBTa2lhJ3MgbGltaXQgb2YgMTI4IHBpeGVscyBvZiBibHVyIHJhZGl1cwpAQCAtMTQ5
LDI5ICsxNTMsNTIgQEAgdm9pZCBDb250ZXh0U2hhZG93OjpibHVyTGF5ZXJJbWFnZSh1bnNpZ25l
ZCBjaGFyKiBpbWFnZURhdGEsIGNvbnN0IEludFNpemUmIHNpemUKICAgICB9CiB9CiAKKyNpZiBQ
TEFURk9STShRVCkKK3ZvaWQgQ29udGV4dFNoYWRvdzo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1Jl
Y3QoY29uc3QgUGxhdGZvcm1Db250ZXh0IHAsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorI2Vs
c2UKIHZvaWQgQ29udGV4dFNoYWRvdzo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoY29uc3Qg
RmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorI2VuZGlmCiB7
Ci0gICAgLy8gQ2FsY3VsYXRlIHRoZSBkZXN0aW5hdGlvbiBvZiB0aGUgYmx1cnJlZCBsYXllci4K
LSAgICBGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0KGxheWVyQXJlYSk7Ci0gICAgZGVzdGluYXRp
b25SZWN0Lm1vdmUobV9vZmZzZXQpOwotICAgIG1fbGF5ZXJSZWN0ID0gZW5jbG9zaW5nSW50UmVj
dChkZXN0aW5hdGlvblJlY3QpOworICAgIC8vIENhbGN1bGF0ZSB0aGUgZGVzdGluYXRpb24gb2Yg
dGhlIGJsdXJyZWQgYW5kL29yIHRyYW5zZm9ybWVkIGxheWVyLgorICAgIG1fbGF5ZXJJbmZsYXRp
b24gPSAwOworI2lmIFBMQVRGT1JNKFFUKQorICAgIFFUcmFuc2Zvcm0gdHJhbnNmb3JtID0gcC0+
dHJhbnNmb3JtKCk7CisgICAgaWYgKG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgJiYgIXRyYW5z
Zm9ybS5pc0lkZW50aXR5KCkpIHsKKyAgICAgICAgUVBvbHlnb25GIHRyYW5zRGVzdFBvbHlnb24g
PSB0cmFuc2Zvcm0ubWFwKFFQb2x5Z29uRihtX2xheWVyQXJlYSkpOworICAgICAgICB0cmFuc0Rl
c3RQb2x5Z29uLnRyYW5zbGF0ZShvZmZzZXQoKSk7CisgICAgICAgIG1fbGF5ZXJGbG9hdFJlY3Qg
PSB0cmFuc2Zvcm0uaW52ZXJ0ZWQoKS5tYXAodHJhbnNEZXN0UG9seWdvbikuYm91bmRpbmdSZWN0
KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9sYXllckZsb2F0UmVjdCA9IG1fbGF5ZXJBcmVh
OworICAgICAgICBtX2xheWVyRmxvYXRSZWN0Lm1vdmUobV9vZmZzZXQpOworICAgIH0KKyNlbHNl
CisgICAgbV9sYXllckZsb2F0UmVjdCA9IGxheWVyQXJlYTsKKyAgICBtX2xheWVyRmxvYXRSZWN0
Lm1vdmUobV9vZmZzZXQpOworI2VuZGlmCiAKICAgICAvLyBXZSBleHBhbmQgdGhlIGFyZWEgYnkg
dGhlIGJsdXIgcmFkaXVzIHRvIGdpdmUgZXh0cmEgc3BhY2UgZm9yIHRoZSBibHVyIHRyYW5zaXRp
b24uCi0gICAgbV9sYXllclJlY3QuaW5mbGF0ZShtX3R5cGUgPT0gQmx1clNoYWRvdyA/IG1fYmx1
ckRpc3RhbmNlIDogMCk7CisgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7CisgICAgICAg
IG1fbGF5ZXJGbG9hdFJlY3QuaW5mbGF0ZShtX2JsdXJEaXN0YW5jZSk7CisgICAgICAgIG1fbGF5
ZXJJbmZsYXRpb24gKz0gbV9ibHVyRGlzdGFuY2U7CisgICAgfQogCiAgICAgaWYgKCFjbGlwUmVj
dC5jb250YWlucyhtX2xheWVyUmVjdCkpIHsKICAgICAgICAgLy8gTm8gbmVlZCB0byBoYXZlIHRo
ZSBidWZmZXIgbGFyZ2VyIHRoYW4gdGhlIGNsaXAuCi0gICAgICAgIG1fbGF5ZXJSZWN0LmludGVy
c2VjdChjbGlwUmVjdCk7CisgICAgICAgIG1fbGF5ZXJGbG9hdFJlY3QuaW50ZXJzZWN0KGNsaXBS
ZWN0KTsKIAogICAgICAgICAvLyBJZiB3ZSBhcmUgdG90YWxseSBvdXRzaWRlIHRoZSBjbGlwIHJl
Z2lvbiwgd2UgYXJlbid0IHBhaW50aW5nIGF0IGFsbC4KLSAgICAgICAgaWYgKG1fbGF5ZXJSZWN0
LmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKG1fbGF5ZXJGbG9hdFJlY3QuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIFdlIGFkanVzdCBhZ2FpbiBiZWNhdXNlIHRo
ZSBwaXhlbHMgYXQgdGhlIGJvcmRlcnMgYXJlIHN0aWxsCiAgICAgICAgIC8vIHBvdGVudGlhbGx5
IGFmZmVjdGVkIGJ5IHRoZSBwaXhlbHMgb3V0c2lkZSB0aGUgYnVmZmVyLgotICAgICAgICBpZiAo
bV90eXBlID09IEJsdXJTaGFkb3cpCi0gICAgICAgICAgICBtX2xheWVyUmVjdC5pbmZsYXRlKG1f
dHlwZSA9PSBCbHVyU2hhZG93ID8gbV9ibHVyRGlzdGFuY2UgOiAwKTsKKyAgICAgICAgaWYgKG1f
dHlwZSA9PSBCbHVyU2hhZG93KSB7CisgICAgICAgICAgICBtX2xheWVyRmxvYXRSZWN0LmluZmxh
dGUobV9ibHVyRGlzdGFuY2UpOworICAgICAgICAgICAgbV9sYXllckluZmxhdGlvbiArPSBtX2Js
dXJEaXN0YW5jZTsKKyAgICAgICAgfQogICAgIH0KKworICAgIG1fbGF5ZXJSZWN0ID0gZW5jbG9z
aW5nSW50UmVjdChtX2xheWVyRmxvYXRSZWN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93Lmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaAppbmRleCBmYTc3OGFm
YmNjZGRmYWZjM2Y0MGNkMDIzY2I3YWQ0ZjQ1MWVkNTJjLi41YzZiZmQzYjhhM2VhNjE0ODQyNzVj
MzAyZDAyN2FmNTVkZTQ0NDU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbnRleHRTaGFkb3cuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRT
aGFkb3cuaApAQCAtMTA2LDI2ICsxMDYsNDAgQEAgcHVibGljOgogICAgIFBsYXRmb3JtQ29udGV4
dCBiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXll
ckFyZWEpOwogICAgIHZvaWQgZW5kU2hhZG93TGF5ZXIoUGxhdGZvcm1Db250ZXh0KTsKICAgICBz
dGF0aWMgdm9pZCBwdXJnZVNjcmF0Y2hCdWZmZXIoKTsKKyAgICB2b2lkIHNldFNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKGJvb2wgZW5hYmxlKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBl
bmFibGU7IH0KKyAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgeyByZXR1cm4gbV9z
aGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQogI2lmIFBMQVRGT1JNKENBSVJPKQogICAgIHZvaWQg
ZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0UmFkaXVzID0gSW50U2l6ZSgpLCBjb25zdCBJbnRT
aXplJiB0b3BSaWdodFJhZGl1cyA9IEludFNpemUoKSwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVm
dFJhZGl1cyA9IEludFNpemUoKSwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMgPSBJ
bnRTaXplKCkpOwogI2VuZGlmCi0KICNpZiBQTEFURk9STShRVCkKICAgICBRUG9pbnRGIG9mZnNl
dCgpIHsgcmV0dXJuIFFQb2ludEYobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQuaGVpZ2h0KCkp
OyB9CiAjZW5kaWYKIAogCiBwcml2YXRlOgorICAgIC8vIEVuY2xvc2luZyBpbnQgcmVjdCB3aGVy
ZSBzaGFkb3cgbmVlZHMgdG8gYmUgZHJhd24gdG8gdXNpbmcgdGhlIGxheWVyIGNvbnRleHQuCiAg
ICAgSW50UmVjdCBtX2xheWVyUmVjdDsKKyAgICAvLyBTYW1lIGFzIG1fbGF5ZXJSZWMgYnV0IGhh
cyBmdWxsIHByZWNpc2lvbiAodXNlZnVsIGZvciBsb3NzbGVzcyB0cmFuc2Zvcm1hdGlvbnMpLgor
ICAgIEZsb2F0UmVjdCBtX2xheWVyRmxvYXRSZWN0OworICAgIC8vIFJlY3Qgb2NjdXBpZWQgYnkg
dGhlIG9yaWdpbmFsIHNoYXBlIG9yIGltYWdlLgorICAgIEZsb2F0UmVjdCBtX2xheWVyQXJlYTsK
KyAgICAvLyBCdWZmZXIgdG8gd2hlcmUgdGhlIHRlbXBvcmFyeSBzaGFkb3cgd2lsbCBiZSBkcmF3
biB0by4KICAgICBQbGF0Zm9ybUltYWdlIG1fbGF5ZXJJbWFnZTsKKyAgICAvLyBDb250ZXh0IHVz
ZWQgdG8gcGFpbnQgdGhlIHNoYWRvdyB0byB0aGUgbGF5ZXIgaW1hZ2UuCiAgICAgUGxhdGZvcm1D
b250ZXh0IG1fbGF5ZXJDb250ZXh0OwotCisgICAgLy8gVG90YWwgdHJhbnNwYXJlbnQgImJvcmRl
ciIgYWRkZWQgdG8gdGhlIGxheWVyIGltYWdlIHdoZW4gYmx1cnJpbmcuCisgICAgaW50IG1fbGF5
ZXJJbmZsYXRpb247CisjaWYgUExBVEZPUk0oQ0FJUk8pCiAgICAgLy8gVXNlZCBmb3IgcmVmZXJl
bmNlIHdoZW4gY2FudmFzIHNjYWxlKHgseSkgd2FzIGNhbGxlZC4KICAgICBGbG9hdFJlY3QgbV91
bnNjYWxlZExheWVyUmVjdDsKKyNlbmRpZgorICAgIGJvb2wgbV9zaGFkb3dzSWdub3JlVHJhbnNm
b3JtczsKIAogICAgIHZvaWQgYmx1ckxheWVySW1hZ2UodW5zaWduZWQgY2hhciosIGNvbnN0IElu
dFNpemUmIGltYWdlU2l6ZSwgaW50IHN0cmlkZSk7CisjaWYgUExBVEZPUk0oUVQpCisgICAgdm9p
ZCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGNsaXBSZWN0KTsKKyNlbHNlCiAgICAgdm9pZCBjYWxjdWxhdGVMYXllckJvdW5k
aW5nUmVjdChjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJl
Y3QpOwotI2lmIFBMQVRGT1JNKENBSVJPKQogICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRob3V0
VGlsaW5nKFBsYXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBzaGFkb3dSZWN0
LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBJbnRTaXplJiB0b3BSaWdodFJh
ZGl1cywgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgYm90
dG9tUmlnaHRSYWRpdXMsIGZsb2F0IGFscGhhKTsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNwcAppbmRleCBmN2M3MGY2OTVi
YzBmYzQyNTBjYzliZGMzNWU5ZDVlOGU2M2Y5NzQ0Li5hN2YxNjNiYzEzNTJjOWNlMmY2MjQ5YTZh
MmJiNzY3ZGUyNTE4MTc5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0NvbnRleHRTaGFkb3dRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9D
b250ZXh0U2hhZG93UXQuY3BwCkBAIC0xMDQsNiArMTA0LDggQEAgUV9HTE9CQUxfU1RBVElDKFNo
YWRvd0J1ZmZlciwgc2NyYXRjaFNoYWRvd0J1ZmZlcikKIAogUGxhdGZvcm1Db250ZXh0IENvbnRl
eHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIoUGxhdGZvcm1Db250ZXh0IHAsIGNvbnN0IEZsb2F0
UmVjdCYgbGF5ZXJBcmVhKQogeworICAgIG1fbGF5ZXJBcmVhID0gbGF5ZXJBcmVhOworCiAgICAg
UVJlY3QgY2xpcFJlY3Q7CiAgICAgaWYgKHAtPmhhc0NsaXBwaW5nKCkpCiAjaWYgUVRfVkVSU0lP
TiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDgsIDApCkBAIC0xMTQsOCArMTE2LDggQEAgUGxhdGZv
cm1Db250ZXh0IENvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIoUGxhdGZvcm1Db250ZXh0
IHAsIGNvbnN0IEZsb2F0UmUKICAgICBlbHNlCiAgICAgICAgIGNsaXBSZWN0ID0gcC0+dHJhbnNm
b3JtKCkuaW52ZXJ0ZWQoKS5tYXBSZWN0KHAtPndpbmRvdygpKTsKIAotICAgIG1fdW5zY2FsZWRM
YXllclJlY3QgPSBsYXllckFyZWE7Ci0gICAgY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QobGF5
ZXJBcmVhLCBJbnRSZWN0KGNsaXBSZWN0LngoKSwgY2xpcFJlY3QueSgpLCBjbGlwUmVjdC53aWR0
aCgpLCBjbGlwUmVjdC5oZWlnaHQoKSkpOworICAgIC8vIFNldCBtX2xheWVyUmVjdCwgbV9sYXll
ckZsb2F0UmVjdCwgYW5kIG1fbGF5ZXJJbmZsYXRpb24KKyAgICBjYWxjdWxhdGVMYXllckJvdW5k
aW5nUmVjdChwLCBJbnRSZWN0KGNsaXBSZWN0LngoKSwgY2xpcFJlY3QueSgpLCBjbGlwUmVjdC53
aWR0aCgpLCBjbGlwUmVjdC5oZWlnaHQoKSkpOwogCiAgICAgLy8gRG9uJ3QgcGFpbnQgaWYgd2Ug
YXJlIHRvdGFsbHkgb3V0c2lkZSB0aGUgY2xpcCByZWdpb24uCiAgICAgaWYgKG1fbGF5ZXJSZWN0
LmlzRW1wdHkoKSkKQEAgLTEyOCwxMCArMTMwLDE1IEBAIFBsYXRmb3JtQ29udGV4dCBDb250ZXh0
U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCBwLCBjb25zdCBGbG9hdFJl
CiAgICAgbV9sYXllckNvbnRleHQgPSBuZXcgUVBhaW50ZXI7CiAgICAgbV9sYXllckNvbnRleHQt
PmJlZ2luKCZtX2xheWVySW1hZ2UpOwogICAgIG1fbGF5ZXJDb250ZXh0LT5zZXRGb250KHAtPmZv
bnQoKSk7Ci0gICAgbV9sYXllckNvbnRleHQtPnRyYW5zbGF0ZShtX29mZnNldC53aWR0aCgpLCBt
X29mZnNldC5oZWlnaHQoKSk7CiAKLSAgICAvLyBUaGUgb3JpZ2luIGlzIG5vdyB0aGUgdG9wIGxl
ZnQgY29ybmVyIG9mIHRoZSBzY3JhdGNoIGltYWdlLgotICAgIG1fbGF5ZXJDb250ZXh0LT50cmFu
c2xhdGUoLW1fbGF5ZXJSZWN0LngoKSwgLW1fbGF5ZXJSZWN0LnkoKSk7CisgICAgLy8gU2V0IHRo
ZSBvcmlnaW4gYXMgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgc2NyYXRjaCBpbWFnZS4KKyAg
ICBpZiAocC0+dHJhbnNmb3JtKCkuaXNJZGVudGl0eSgpKSB7CisgICAgICAgIG1fbGF5ZXJDb250
ZXh0LT50cmFuc2xhdGUob2Zmc2V0KCkpOworICAgICAgICBtX2xheWVyQ29udGV4dC0+dHJhbnNs
YXRlKC1tX2xheWVyUmVjdC54KCksIC1tX2xheWVyUmVjdC55KCkpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIFFSZWN0RiBhcmVhID0gbV9sYXllckFyZWE7CisgICAgICAgIG1fbGF5ZXJDb250ZXh0
LT50cmFuc2xhdGUoLWFyZWEudG9wTGVmdCgpICsgUVBvaW50KG1fbGF5ZXJJbmZsYXRpb24sIG1f
bGF5ZXJJbmZsYXRpb24pKTsKKyAgICB9CiAKICAgICByZXR1cm4gbV9sYXllckNvbnRleHQ7CiB9
CkBAIC0xNTUsMTMgKzE2Miw5IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6ZW5kU2hhZG93TGF5ZXIo
UGxhdGZvcm1Db250ZXh0IHApCiAgICAgICAgIHAuZW5kKCk7CiAgICAgfQogCi0gICAgY29uc3Qg
UVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBwLT50cmFuc2Zvcm0oKTsKLSAgICBpZiAodHJhbnNmb3Jt
LmlzU2NhbGluZygpKSB7Ci0gICAgICAgIHFyZWFsIHggPSBtX3Vuc2NhbGVkTGF5ZXJSZWN0Lngo
KSArIG1fb2Zmc2V0LndpZHRoKCkgIC8gdHJhbnNmb3JtLm0xMSgpIC0gbV9ibHVyRGlzdGFuY2U7
Ci0gICAgICAgIHFyZWFsIHkgPSBtX3Vuc2NhbGVkTGF5ZXJSZWN0LnkoKSArIG1fb2Zmc2V0Lmhl
aWdodCgpIC8gdHJhbnNmb3JtLm0yMigpIC0gbV9ibHVyRGlzdGFuY2U7Ci0gICAgICAgIHAtPmRy
YXdJbWFnZShRUG9pbnRGKHgsIHkpLCBtX2xheWVySW1hZ2UpOwotICAgIH0gZWxzZQotICAgICAg
ICBwLT5kcmF3SW1hZ2UobV9sYXllclJlY3QudG9wTGVmdCgpLCBtX2xheWVySW1hZ2UpOworICAg
IFFSZWN0IHNvdXJjZVJlY3QoMCwgMCwgbV9sYXllckFyZWEud2lkdGgoKSAgKyBtX2xheWVySW5m
bGF0aW9uICogMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGF5ZXJBcmVhLmhlaWdo
dCgpICsgbV9sYXllckluZmxhdGlvbiAqIDIpOworICAgIHAtPmRyYXdJbWFnZShRUmVjdEYobV9s
YXllckZsb2F0UmVjdCkudG9wTGVmdCgpLCBtX2xheWVySW1hZ2UsIHNvdXJjZVJlY3QpOwogCiAg
ICAgc2NyYXRjaFNoYWRvd0J1ZmZlcigpLT5zY2hlZHVsZVB1cmdlKCk7CiB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCmluZGV4IDcy
N2ZiZjEyOWQ1NWYyYzlhZTA4ZjViNDM2NmJjODFhNTk0ODM2OTQuLjY2YTkxMzYyYTI1YzE3ZmQ5
ODk2NmY4NmRmN2NmNDE5MWE2ZDFlODkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCkBAIC01NCw3ICs1NCw2IEBACiAjaW5jbHVk
ZSAiVHJhbnNwYXJlbmN5TGF5ZXIuaCIKIAogI2luY2x1ZGUgPFFCcnVzaD4KLSNpbmNsdWRlIDxR
RGVidWc+CiAjaW5jbHVkZSA8UUdyYWRpZW50PgogI2luY2x1ZGUgPFFQYWludERldmljZT4KICNp
bmNsdWRlIDxRUGFpbnRFbmdpbmU+CkBAIC0xNzYsNiArMTc1LDIyIEBAIHN0YXRpYyBpbmxpbmUg
UXQ6OkZpbGxSdWxlIHRvUXRGaWxsUnVsZShXaW5kUnVsZSBydWxlKQogICAgIHJldHVybiBRdDo6
T2RkRXZlbkZpbGw7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBtdXN0VXNlQ29udGV4dFNoYWRv
dyhRUGFpbnRlciogcGFpbnRlciwgQ29udGV4dFNoYWRvdyogc2hhZG93KQoreworICAgIGlmIChz
aGFkb3ctPm1fdHlwZSA9PSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93KQorICAgICAgICAvLyBX
ZSBjYW4ndCBhdm9pZCBDb250ZXh0U2hhZG93LCBzaW5jZSB0aGUgc2hhZG93IGhhcyBibHVyLgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIXNoYWRvdy0+c2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMoKSkKKyAgICAgICAgLy8gV2UgY2FuIGF2b2lkIENvbnRleHRTaGFkb3cgYW5kIG9wdGlt
aXplLCBzaW5jZSB3ZSdyZSBub3QgZHJhd2luZyBvbiBhIGNhbnZhcyBhbmQgYm94CisgICAgICAg
IC8vIHNoYWRvd3MgYXJlIGFmZmVjdGVkIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAocGFpbnRlci0+dHJhbnNmb3JtKCkuaXNJZGVu
dGl0eSgpKQorICAgICAgICAvLyBXZSBjYW4gYXZvaWQgQ29udGV4dFNoYWRvdywgc2luY2UgdGhl
cmUgYXJlIG5vIHRyYW5zZm9ybWF0aW9ucyB0byBhcHBseSB0byB0aGUgY2FudmFzLgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgLy8gT3RoZXJ3aXNlLCBubyBjaGFuY2UgYXZvaWRpbmcgQ29u
dGV4dFNoYWRvdy4KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICBHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoUVBhaW50ZXIqLCBjb25zdCBRQ29sb3ImIGluaXRp
YWxTb2xpZENvbG9yKTsKQEAgLTUwOSwzMSArNTI0LDIxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQogCiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93
KCkpIHsKICAgICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwot
ICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdwot
ICAgICAgICAgICAgJiYgIW1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybiAmJiAhbV9jb21tb24t
PnN0YXRlLmZpbGxHcmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAs
IHNoYWRvdykKKyAgICAgICAgICAgIHx8IG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybgorICAg
ICAgICAgICAgfHwgbV9jb21tb24tPnN0YXRlLmZpbGxHcmFkaWVudCkKICAgICAgICAgewotICAg
ICAgICAgICAgUVBvaW50RiBvZmZzZXQgPSBzaGFkb3ctPm9mZnNldCgpOwotICAgICAgICAgICAg
Y29uc3QgUVRyYW5zZm9ybSYgdHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0gICAgICAgICAg
ICBpZiAodHJhbnNmb3JtLmlzU2NhbGluZygpKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgc2Nh
bGluZyBpcyByZXF1aXJlZCwgZmluZCB0aGUgbmV3IGNvb3JkIGZvciBzaGFkb3cgb3JpZ2luLAot
ICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIHJlbGF0aXZlIG9mZnNldCB0byBpdHMgc2hh
cGUgaXMga2VwdC4KLSAgICAgICAgICAgICAgICBRUG9pbnRGIHRyYW5zbGF0ZWRPZmZzZXQob2Zm
c2V0LngoKSAvIHRyYW5zZm9ybS5tMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb2Zmc2V0LnkoKSAvIHRyYW5zZm9ybS5tMjIoKSk7Ci0gICAgICAgICAgICAg
ICAgcGxhdGZvcm1QYXRoLnRyYW5zbGF0ZSh0cmFuc2xhdGVkT2Zmc2V0KTsKLSAgICAgICAgICAg
ICAgICBwLT5maWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihzaGFkb3ctPm1fY29sb3IpKTsK
LSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKC10cmFuc2xhdGVkT2Zmc2V0
KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG9m
ZnNldCk7Ci0gICAgICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3Io
c2hhZG93LT5tX2NvbG9yKSk7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZzZXQp
OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUVBhaW50ZXIq
IHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcGxhdGZvcm1QYXRo
LmNvbnRyb2xQb2ludFJlY3QoKSk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewog
ICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRl
cjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRl
ci0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xvcikp
OwogICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBRUG9pbnRGIG9mZnNldCA9IHNoYWRv
dy0+b2Zmc2V0KCk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKKyAgICAgICAg
ICAgIHAtPmZpbGxQYXRoKHBsYXRmb3JtUGF0aCwgUUNvbG9yKHNoYWRvdy0+bV9jb2xvcikpOwor
ICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZzZXQpOwogICAgICAgICB9CiAKICAgICB9CkBA
IC01NjAsMjggKzU2NSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25z
dCBQYXRoJiBwYXRoKQogCiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAg
Q29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotCi0gICAgICAgIGlmIChz
aGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93Ci0gICAgICAgICAgICAm
JiAhbV9jb21tb24tPnN0YXRlLnN0cm9rZVBhdHRlcm4gJiYgIW1fY29tbW9uLT5zdGF0ZS5zdHJv
a2VHcmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykK
KyAgICAgICAgICAgIHx8IG1fY29tbW9uLT5zdGF0ZS5zdHJva2VQYXR0ZXJuCisgICAgICAgICAg
ICB8fCBtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlR3JhZGllbnQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIFFQZW4gc2hhZG93UGVuKHBlbik7Ci0gICAgICAgICAgICBzaGFkb3dQZW4uc2V0Q29sb3Io
bV9kYXRhLT5zaGFkb3cubV9jb2xvcik7Ci0gICAgICAgICAgICBRUG9pbnRGIG9mZnNldCA9IHNo
YWRvdy0+b2Zmc2V0KCk7Ci0gICAgICAgICAgICBjb25zdCBRVHJhbnNmb3JtJiB0cmFuc2Zvcm0g
PSBwLT50cmFuc2Zvcm0oKTsKLSAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5nKCkp
IHsKLSAgICAgICAgICAgICAgICAvLyBJZiBzY2FsaW5nIGlzIHJlcXVpcmVkLCBmaW5kIHRoZSBu
ZXcgY29vcmQgZm9yIHNoYWRvdyBvcmlnaW4sCi0gICAgICAgICAgICAgICAgLy8gc28gdGhhdCB0
aGUgcmVsYXRpdmUgb2Zmc2V0IHRvIGl0cyBzaGFwZSBpcyBrZXB0LgotICAgICAgICAgICAgICAg
IFFQb2ludEYgdHJhbnNsYXRlZE9mZnNldChvZmZzZXQueCgpIC8gdHJhbnNmb3JtLm0xMSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQueSgpIC8gdHJh
bnNmb3JtLm0yMigpKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKHRy
YW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgICAgIHAtPnN0cm9rZVBhdGgocGxhdGZvcm1Q
YXRoLCBzaGFkb3dQZW4pOwotICAgICAgICAgICAgICAgIHBsYXRmb3JtUGF0aC50cmFuc2xhdGUo
LXRyYW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBwLT5zdHJva2VQYXRoKHBs
YXRmb3JtUGF0aCwgc2hhZG93UGVuKTsKLSAgICAgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW9m
ZnNldCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBGbG9h
dFJlY3QgYm91bmRpbmdSZWN0ID0gcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKTsKICAg
ICAgICAgICAgIGJvdW5kaW5nUmVjdC5pbmZsYXRlKHBlbi5taXRlckxpbWl0KCkgKyBwZW4ud2lk
dGhGKCkpOwogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJl
Z2luU2hhZG93TGF5ZXIocCwgYm91bmRpbmdSZWN0KTsKQEAgLTU5MCw2ICs1NzcsMTMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAg
ICAgICAgICBzaGFkb3dQYWludGVyLT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgcGVuKTsKICAg
ICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUVBlbiBzaGFkb3dQZW4ocGVuKTsKKyAgICAg
ICAgICAgIHNoYWRvd1Blbi5zZXRDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9yKTsKKyAgICAg
ICAgICAgIFFQb2ludEYgb2Zmc2V0ID0gc2hhZG93LT5vZmZzZXQoKTsKKyAgICAgICAgICAgIHAt
PnRyYW5zbGF0ZShvZmZzZXQpOworICAgICAgICAgICAgcC0+c3Ryb2tlUGF0aChwbGF0Zm9ybVBh
dGgsIHNoYWRvd1Blbik7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW9mZnNldCk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTcwOSw3ICs3MDMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICBwLT5maWxsUmVjdChub3Jt
YWxpemVkUmVjdCwgYnJ1c2gpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChtX2RhdGEtPmhh
c1NoYWRvdygpKSB7Ci0gICAgICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgPT0gQ29udGV4dFNo
YWRvdzo6Qmx1clNoYWRvdykgeworICAgICAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93
KHAsIHNoYWRvdykpIHsKICAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9
IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAg
ICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFp
bnRlci0+c2V0T3BhY2l0eShzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5tX2NvbG9yLmFscGhh
KCkpIC8gMjU1KTsKQEAgLTcxNywxNyArNzExLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgICAgICAgICAgICAgIHNoYWRv
dy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAvLyBTb2xpZCByZWN0YW5nbGUgZmlsbCB3aXRoIG5vIGJs
dXIgc2hhZG93IGNhbiBiZSBkb25lIGZhc3RlcgotICAgICAgICAgICAgICAgIC8vIHdpdGhvdXQg
dXNpbmcgdGhlIHNoYWRvdyBsYXllciBhdCBhbGwuCisgICAgICAgICAgICAgICAgLy8gU29saWQg
cmVjdGFuZ2xlIGZpbGwgd2l0aCBubyBibHVyIHNoYWRvdyBvciB0cmFuc2Zvcm1hdGlvbnMgYXBw
bGllZCBjYW4gYmUgZG9uZQorICAgICAgICAgICAgICAgIC8vIGZhc3RlciB3aXRob3V0IHVzaW5n
IHRoZSBzaGFkb3cgbGF5ZXIgYXQgYWxsLgogICAgICAgICAgICAgICAgIFFDb2xvciBzaGFkb3dD
b2xvciA9IHNoYWRvdy0+bV9jb2xvcjsKICAgICAgICAgICAgICAgICBzaGFkb3dDb2xvci5zZXRB
bHBoYUYoc2hhZG93Q29sb3IuYWxwaGFGKCkgKiBwLT5icnVzaCgpLmNvbG9yKCkuYWxwaGFGKCkp
OwotICAgICAgICAgICAgICAgIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSA9IHAtPnRyYW5z
Zm9ybSgpOwotICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5nKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJhbnNsYXRlZChz
dGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5vZmZzZXQoKS54KCkpIC8gdHJhbnNmb3JtLm0xMSgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PHFyZWFsPihzaGFkb3ctPm9mZnNldCgpLnkoKSAgLyB0cmFuc2Zvcm0u
bTIyKCkpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93Q29sb3IpOwot
ICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBwLT5maWxsUmVjdChu
b3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHNoYWRvdy0+b2Zmc2V0KCkpLCBzaGFkb3dDb2xvcik7
CisgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJhbnNsYXRlZChz
aGFkb3ctPm9mZnNldCgpKSwgc2hhZG93Q29sb3IpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKQEAgLTc0NywxOCArNzM1LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAKICAgICBp
ZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAgICAgICBDb250ZXh0U2hhZG93KiBzaGFkb3cg
PSBjb250ZXh0U2hhZG93KCk7Ci0KLSAgICAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRl
eHRTaGFkb3c6OkJsdXJTaGFkb3cpIHsKLSAgICAgICAgICAgIC8vIFdlIGRvIG5vdCBuZWVkIGFu
eSBsYXllciBmb3Igc2ltcGxlIHNoYWRvdy4KLSAgICAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1h
bGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvdy0+bV9jb2xvcik7
Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtdXN0VXNlQ29udGV4dFNoYWRvdyhwLCBz
aGFkb3cpKSB7CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+
YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAgICBpZiAoc2hh
ZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0
aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAg
ICAgc2hhZG93UGFpbnRlci0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIHNoYWRvdy0+bV9jb2xv
cik7CiAgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwKTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHAtPmZpbGxSZWN0
KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvdy0+bV9j
b2xvcik7CiAgICAgfQogCiAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIG1fZGF0YS0+
c29saWRDb2xvcik7CkBAIC03NzQsMTkgKzc1OSwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExl
ZgogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CiAgICAgaWYgKG1fZGF0YS0+aGFzU2hh
ZG93KCkpIHsKICAgICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygp
OwotCi0gICAgICAgIGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hh
ZG93KSB7Ci0gICAgICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCBhbnkgbGF5ZXIgZm9yIHNpbXBs
ZSBzaGFkb3cuCi0gICAgICAgICAgICBwLT50cmFuc2xhdGUobV9kYXRhLT5zaGFkb3cub2Zmc2V0
KCkpOwotICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGF0aC5wbGF0Zm9ybVBhdGgoKSwgUUNvbG9y
KG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKLSAgICAgICAgICAgIHAtPnRyYW5zbGF0ZSgtbV9k
YXRhLT5zaGFkb3cub2Zmc2V0KCkpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAobXVz
dFVzZUNvbnRleHRTaGFkb3cocCwgc2hhZG93KSkgewogICAgICAgICAgICAgUVBhaW50ZXIqIHNo
YWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcmVjdCk7CiAgICAgICAg
ICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXIt
PnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAg
ICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFBhdGgocGF0aC5wbGF0Zm9ybVBhdGgo
KSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKICAgICAgICAgICAgICAgICBzaGFk
b3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG1fZGF0YS0+c2hhZG93Lm9mZnNldCgpKTsKKyAgICAg
ICAgICAgIHAtPmZpbGxQYXRoKHBhdGgucGxhdGZvcm1QYXRoKCksIFFDb2xvcihtX2RhdGEtPnNo
YWRvdy5tX2NvbG9yKSk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW1fZGF0YS0+c2hhZG93
Lm9mZnNldCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBwLT5maWxsUGF0aChwYXRoLnBsYXRm
b3JtUGF0aCgpLCBRQ29sb3IoY29sb3IpKTsKQEAgLTk3NCw5ICs5NTcsMTAgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxv
YXQgYmx1ciwgY29uc3QKICAgICAgICAgLy8gV2UgZmxpcCB0aGUgaGVpZ2h0IHNpbmNlIENHIGFu
ZCBIVE1MNSBDYW52YXMgaGF2ZSBvcHBvc2l0ZSBZIGF4aXMKICAgICAgICAgbV9jb21tb24tPnN0
YXRlLnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZShzaXplLndpZHRoKCksIC1zaXplLmhlaWdodCgp
KTsKICAgICAgICAgbV9kYXRhLT5zaGFkb3cgPSBDb250ZXh0U2hhZG93KGNvbG9yLCBibHVyLCBG
bG9hdFNpemUoc2l6ZS53aWR0aCgpLCAtc2l6ZS5oZWlnaHQoKSkpOwotICAgIH0gZWxzZSB7Cisg
ICAgfSBlbHNlCiAgICAgICAgIG1fZGF0YS0+c2hhZG93ID0gQ29udGV4dFNoYWRvdyhjb2xvciwg
Ymx1ciwgRmxvYXRTaXplKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOwotICAgIH0KKwor
ICAgIG1fZGF0YS0+c2hhZG93LnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKG1fY29tbW9uLT5z
dGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpjbGVhclBsYXRmb3JtU2hhZG93KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76155</attachid>
            <date>2010-12-09 18:39:21 -0800</date>
            <delta_ts>2010-12-13 13:29:37 -0800</delta_ts>
            <desc>Consts, refactoring, separate ports calc function for now</desc>
            <filename>bug-50422-20101209183603.patch</filename>
            <type>text/plain</type>
            <size>35580</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NzQ5NjMyMzQ3OTc0ZTcxNmQ3NjQ1OTY5ZjQxMDNkNjAzNmY2YWIyLi42ZTRjMzkw
Yjg5OThhM2U4Y2YxZjBjNjAyOWE0ZWI2NzU2OGM3OGU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMTAtMTItMDkgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBObyBzaGFkb3cg
b2Zmc2V0IHNob3VsZCBiZSBhZmZlY3RlZCBieSBhbnkgdHJhbnNmb3JtYXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNDIyCisKKyAgICAgICAg
T24gYSBjYW52YXMgY29udGV4dCwgc2hhZG93cyBhcmUgY3VycmVudGx5IGFmZmVjdGVkIGJ5IGFs
bAorICAgICAgICB0cmFuc2Zvcm1hdGlvbnMgZXhjZXB0IHNjYWxpbmcuIEFjY29yZGluZyB0byB0
aGUgc3BlYzoKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWNhbnZhcy1lbGVtZW50Lmh0bWwjc2hhZG93cworCisg
ICAgICAgICJUaGUgc2hhZG93T2Zmc2V0WCBhbmQgc2hhZG93T2Zmc2V0WSBhdHRyaWJ1dGVzIHNw
ZWNpZnkgdGhlIGRpc3RhbmNlCisgICAgICAgIHRoYXQgdGhlIHNoYWRvdyB3aWxsIGJlIG9mZnNl
dCBpbiB0aGUgcG9zaXRpdmUgaG9yaXpvbnRhbCBhbmQgcG9zaXRpdmUKKyAgICAgICAgdmVydGlj
YWwgZGlzdGFuY2UgcmVzcGVjdGl2ZWx5LiBUaGVpciB2YWx1ZXMgYXJlIGluIGNvb3JkaW5hdGUg
c3BhY2UKKyAgICAgICAgdW5pdHMuIFRoZXkgYXJlIG5vdCBhZmZlY3RlZCBieSB0aGUgY3VycmVu
dCB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguIgorCisgICAgICAgIE5PVEU6IHRoaXMgYXBwbGllcyBv
bmx5IHRvIGNhbnZhcywgbm90IHRvIGJveCBzaGFkb3dzLgorCisgICAgICAgIEFkZCBuZXcgdGVz
dCB0byBlbnN1cmUgdGhhdCBzaGFkb3dzIGFyZSBjb3JyZWN0bHkgdHJhbnNmb3JtZWQga2VlcGlu
ZworICAgICAgICB0aGUgcmVsYXRpdmUgb2Zmc2V0IHRvIHRoZSBzaGFwZS4KKworICAgICAgICAq
IGZhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5z
Zm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFz
L3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LmpzOgorICAgICAgICAq
IGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93Lmpz
OgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tl
UGF0aC1zaGFkb3cuanM6IE5vdyB1c2luZworICAgICAgICAgIGEgbGluZVdpZHRoID4gMSB0byBt
YWtlIGl0IGVhc2llciB0byB0ZXN0IGFuZCBtb3JlIGZhaXIgYW1vbmcgYWxsCisgICAgICAgICAg
cG9ydHMsIHNpbmNlIHRoZXJlIGNhbiBiZSBkaWZmZXJlbnQgdHJhbnNmb3JtYXRpb24gc21vb3Ro
bmVzcyBvcgorICAgICAgICAgIGFsaWFzaW5nIHNldHRpbmdzLgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuanM6IEFk
ZGVkLgorCiAyMDEwLTEyLTA5ICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkIENocm9taXVtIHRlc3QgZXhwZWN0YXRpb25zIHVwZGF0ZS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQ
YXRoLXNoYWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMt
c2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0CmluZGV4IGU1NjIwMWY3Mzg3ZTQ2
MmY3OTIyNWU2NWY4YTM0MDFlMmUzMjM2ZmUuLmEzMzdjNGI2M2ZmMWRkZmVlZDQ0ODhlMzUxZmZk
YWUxNDllYTg1MTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1z
Y2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dApAQCAt
MzAsMjcgKzMwLDI3IEBAIFBBU1MgZFszXSBpcyBhcm91bmQgNzYKIFBBU1MgZFswXSBpcyAyNTUK
IFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMAor
UEFTUyBkWzNdIGlzIGFyb3VuZCAxNDkKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAw
CiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMgorUEFTUyBkWzNdIGlzIGFy
b3VuZCAxMTYKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMg
MAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyOAorUEFTUyBkWzNdIGlzIGFyb3VuZCAxMTUKIFBBU1Mg
ZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlz
IGFyb3VuZCAyMgorUEFTUyBkWzNdIGlzIGFyb3VuZCA3MAogUEFTUyBkWzBdIGlzIDI1NQogUEFT
UyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDE1CitQQVNT
IGRbM10gaXMgYXJvdW5kIDcwCiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFT
UyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMTcKK1BBU1MgZFszXSBpcyBhcm91bmQg
NjkKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJl
Y3Qtc2hhZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10
cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDEzYjg5
MTJmMGQyYTdmMDM5MTk2M2NmNjljMGI3NGU2YjQzMTk0YwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NyBAQAorRW5zdXJlIGNvcnJlY3QgYmVoYXZpb3Igb2Yg
Y2FudmFzIHdpdGggZmlsbFJlY3Qrc2hhZG93IGFmdGVyIHRyYW5zbGF0aW9uK3JvdGF0aW9uK3Nj
YWxpbmcuIEEgYmx1ZSBhbmQgcmVkIGNoZWNrZXJlZCBwYXR0ZXJuIHNob3VsZCBiZSBkaXNwbGF5
ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRbMF0gaXMgMjU1CitQ
QVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyAyNTUKK1BBU1MgZFsw
XSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIDI1
NQorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNT
IGRbM10gaXMgMjU1CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJd
IGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQgMTI3CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRb
MV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQgMTI3CitQQVNTIGRb
MF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBh
cm91bmQgMTI3CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlz
IDAKK1BBU1MgZFszXSBpcyBhcm91bmQgMTA2CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0g
aXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQgMTA2CitQQVNTIGRbMF0g
aXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91
bmQgODMKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAor
UEFTUyBkWzNdIGlzIGFyb3VuZCAzNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAK
K1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDM2CitQQVNTIGRbMF0gaXMgMjU1
CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQgMzYK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVj
dC1zaGFkb3cuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1z
LWZpbGxSZWN0LXNoYWRvdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmYzRlOWE4NDRlN2JmNjdmZmVlNWVi
ZjU4ZDUwZGJmNDJhNzhhOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuaHRtbApAQCAtMCwwICsxLDEz
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3Rz
L2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVz
dHMvY2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LmpzCmluZGV4IDA1
Mjg2ZjUzMjhiNWU1OTk4MzI0MzUwNzVkYmJmMWVjMTdlNWEyMDcuLjNjYTMzMjE5OTI4ZGRkMWJm
MjAyMWM0YTAyNGQ3MzA4YmNiODY1MzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LmpzCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgt
c2hhZG93LmpzCkBAIC03OSwxMyArNzksMTMgQEAgc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDI5OSwgMjk1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEo
Mjk4LCAyOTUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJl
KCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywg
JzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDI5OSwgMSwgMSkuZGF0YTsKK2Qg
PSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0n
LCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7
CkBAIC05OCwxMyArOTgsMTMgQEAgc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
Ml0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJ
bWFnZURhdGEoMjk5LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyOTgs
IDQwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2Rb
MV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10n
LCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTksIDEsIDEpLmRhdGE7Citk
ID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBd
JywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZh
cy1zY2FsZS1maWxsUmVjdC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3Jp
cHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5qcwppbmRleCA5OWExZTU5NGJk
NTlmNzM2N2YzYzMwZGVhMTY1MWUzMmYzZDRkZTZlLi5mNDk1YzkxMDU1YmJhMWRjYjE0NjgzMmUy
ODE2MzA3NGEwNDVlODI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3Jp
cHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5qcworKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5q
cwpAQCAtNTgsMTMgKzU4LDEzIEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdk
WzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4LmdldEltYWdl
RGF0YSgyOTksIDI5NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgMjk4
LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScs
ICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsK
IAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyOTksIDEsIDEpLmRhdGE7CitkID0gY3R4Lmdl
dEltYWdlRGF0YSgyMDEsIDI5OCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScp
Owogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwpAQCAtNzcs
MTMgKzc3LDEzIEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAn
KTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRh
KDI5OSwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCA0MDUsIDEs
IDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAn
KTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7
CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5n
ZXRJbWFnZURhdGEoMjA1LCA0OTgsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUn
KTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUt
c3Ryb2tlUGF0aC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVz
dHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzCmluZGV4IDUxOThkOTQxNTE3ZGFi
OTJiYzI4OTFjODM3NGYzNWJhMWE4OWQ1NzkuLjkxYjkyN2Y5NWZhODdkZTVmOWQ2NTVmM2IyZmZk
MmY0YjVkYWQ1MzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10
ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy5q
cwpAQCAtMzUsNiArMzUsNyBAQCBjdHguc2NhbGUoMiwgMik7CiBjdHguc2hhZG93T2Zmc2V0WCA9
IDEwMDsKIGN0eC5zaGFkb3dPZmZzZXRZID0gMTAwOwogY3R4LnN0cm9rZVN0eWxlID0gJ3JnYmEo
MCwgMCwgMjU1LCAxKSc7CitjdHgubGluZVdpZHRoID0gNTsKIAogY3R4LnNoYWRvd0NvbG9yID0g
J3JnYmEoMjU1LCAwLCAwLCAxLjApJzsKIGN0eC5iZWdpblBhdGgoKTsKQEAgLTc2LDc5ICs3Nyw3
OSBAQCBjdHguc3Ryb2tlKCk7CiB2YXIgZDsgLy8gaW1hZ2VEYXRhLmRhdGEKIAogLy8gVmVyaWZ5
IHNvbGlkIHNoYWRvdy4KLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjA1LCAxLCAxKS5kYXRh
OworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjUwLCAyMDAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgn
ZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywg
JzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgy
OTksIDI5NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDMwMCwgMjkwLCAxLCAx
KS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7
CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9
IGN0eC5nZXRJbWFnZURhdGEoMjAxLCAyOTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdl
RGF0YSgyMDAsIDI1MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hv
dWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
M10nLCAnMjU1Jyk7CiAKIC8vIFZlcmlmeSBzb2xpZCBhbHBoYSBzaGFkb3cuCi1kID0gY3R4Lmdl
dEltYWdlRGF0YSgyMDAsIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIw
MSwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgn
ZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFsz
XScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDQwNSwgMSwgMSkuZGF0YTsK
K2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwgNTAwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2Rb
MF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcw
Jyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0
YSgyMDUsIDQ5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDMwMCwgNDk5LCAx
LCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcw
Jyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3Nicp
OwogCiAvLyBWZXJpZnkgYmx1cnJ5IHNoYWRvdy4KLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDM5NCwg
MjA4LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoNDA0LCAyMTAsIDEsIDEpLmRh
dGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNo
b3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzIwJyk7CitzaG91
bGRCZUFyb3VuZCgnZFszXScsICcxNDknKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoNTAzLCAz
MDEsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg1MDUsIDI1MCwgMSwgMSkuZGF0
YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjInKTsKK3Nob3Vs
ZEJlQXJvdW5kKCdkWzNdJywgJzExNicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSg1MDQsIDI1
MCwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQ1MCwgMjA1LCAxLCAxKS5kYXRh
Owogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91
bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcyOCcpOworc2hvdWxk
QmVBcm91bmQoJ2RbM10nLCAnMTE1Jyk7CiAKIC8vIFZlcmlmeSBibHVycnkgYWxwaGEgc2hhZG93
LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoNDA1LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4Lmdl
dEltYWdlRGF0YSg1MDUsIDQ1MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScp
Owogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxk
QmVBcm91bmQoJ2RbM10nLCAnMjInKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzcwJyk7CiAK
LWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDQxNSwgNDk1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJ
bWFnZURhdGEoNTA1LCA0NTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsK
IHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJl
QXJvdW5kKCdkWzNdJywgJzE1Jyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICc3MCcpOwogCi1k
ID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDUwNCwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1h
Z2VEYXRhKDQ1MCwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBz
aG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFy
b3VuZCgnZFszXScsICcxNycpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNjknKTsKIAogdmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmpz
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy10cmFuc2Zvcm1z
LWZpbGxSZWN0LXNoYWRvdy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjdmMjQ0M2NiZTkwNjAwNTNiYzM5OTAy
Nzk4NWVlNWYwNzM3OWVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5qcwpAQCAt
MCwwICsxLDEzMyBAQAorZGVzY3JpcHRpb24oIkVuc3VyZSBjb3JyZWN0IGJlaGF2aW9yIG9mIGNh
bnZhcyB3aXRoIGZpbGxSZWN0K3NoYWRvdyBhZnRlciB0cmFuc2xhdGlvbityb3RhdGlvbitzY2Fs
aW5nLiBBIGJsdWUgYW5kIHJlZCBjaGVja2VyZWQgcGF0dGVybiBzaG91bGQgYmUgZGlzcGxheWVk
LiIpOworCitmdW5jdGlvbiBwcmludChtZXNzYWdlLCBjb2xvcikKK3sKKyAgICB2YXIgcGFyYWdy
YXBoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgcGFyYWdyYXBoLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICBwYXJhZ3JhcGgu
c3R5bGUuZm9udEZhbWlseSA9ICJtb25vc3BhY2UiOworICAgIGlmIChjb2xvcikKKyAgICAgICAg
cGFyYWdyYXBoLnN0eWxlLmNvbG9yID0gY29sb3I7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChwYXJhZ3JhcGgpOworfQorCitmdW5jdGlvbiBzaG91
bGRCZUFyb3VuZChhLCBiKQoreworICAgIHZhciBldmFsQTsKKyAgICB0cnkgeworICAgICAgICBl
dmFsQSA9IGV2YWwoYSk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGV2YWxBID0gZTsKKyAg
ICB9CisKKyAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8IDEwKQorICAgICAgICBwcmludCgi
UEFTUyAiICsgYSArICIgaXMgYXJvdW5kICIgKyBiICwgImdyZWVuIikKKyAgICBlbHNlCisgICAg
ICAgIHByaW50KCJGQUlMICIgKyBhICsgIiBpcyBub3QgYXJvdW5kICIgKyBiICsgIiAoYWN0dWFs
OiAiICsgZXZhbEEgKyAiKSIsICJyZWQiKTsKK30KKwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjYW52YXMp
OworY2FudmFzLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCAnNjAwJyk7CitjYW52YXMuc2V0QXR0cmli
dXRlKCdoZWlnaHQnLCAnNjAwJyk7Cit2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7
CisKK2N0eC5maWxsU3R5bGUgPSAncmdiYSgwLCAwLCAyNTUsIDEuMCknOworY3R4LnNoYWRvd09m
ZnNldFggPSAxMDA7CitjdHguc2hhZG93T2Zmc2V0WSA9IDEwMDsKKworY3R4LnRyYW5zbGF0ZSgt
MTAwLCAtMTAwKTsKK2N0eC5yb3RhdGUoTWF0aC5QSS8yKTsKK2N0eC5zY2FsZSgyLCAyKTsKKwor
Y3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMjU1LCAwLCAwLCAxLjApJzsKK2N0eC5maWxsUmVjdCgx
MDAsIC0xNTAsIDUwLCA1MCk7CisKK2N0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwg
MC41KSc7CitjdHguZmlsbFJlY3QoMjAwLCAtMTUwLCA1MCwgNTApOworCitjdHguc2hhZG93Qmx1
ciA9IDU7CitjdHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDEuMCknOworY3R4LmZp
bGxSZWN0KDEwMCwgLTI1MCwgNTAsIDUwKTsKKworY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMjU1
LCAwLCAwLCAwLjUpJzsKK2N0eC5maWxsUmVjdCgyMDAsIC0yNTAsIDUwLCA1MCk7CisKK3ZhciBk
OyAvLyBpbWFnZURhdGEuZGF0YQorCisvLyBWZXJpZnkgc29saWQgc2hhZG93LgorZCA9IGN0eC5n
ZXRJbWFnZURhdGEoMjAwLCAyMDUsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUn
KTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3Vs
ZEJlKCdkWzNdJywgJzI1NScpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgyOTgsIDI5OCwgMSwg
MSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcp
Oworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CisKK2Qg
PSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwgMjk4LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0n
LCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7
CitzaG91bGRCZSgnZFszXScsICcyNTUnKTsKKworLy8gVmVyaWZ5IHNvbGlkIGFscGhhIHNoYWRv
dy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwgNDAxLCAxLCAxKS5kYXRhOworc2hvdWxkQmUo
J2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScs
ICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMjcnKTsKKworZCA9IGN0eC5nZXRJbWFn
ZURhdGEoMjk5LCA0NTAsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3No
b3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJv
dW5kKCdkWzNdJywgJzEyNycpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OCwgMSwg
MSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcp
Oworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTI3Jyk7
CisKKy8vIFZlcmlmeSBibHVycnkgc2hhZG93LgorZCA9IGN0eC5nZXRJbWFnZURhdGEoMzk5LCAy
MDUsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFd
JywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywg
JzEwNicpOworCitkID0gY3R4LmdldEltYWdlRGF0YSg1MDAsIDIwNSwgMSwgMSkuZGF0YTsKK3No
b3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUo
J2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTA2Jyk7CisKK2QgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDQ5OSwgMjk5LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1
Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91
bGRCZUFyb3VuZCgnZFszXScsICc4MycpOworCisvLyBWZXJpZnkgYmx1cnJ5IGFscGhhIHNoYWRv
dy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDM5OCwgNDA1LCAxLCAxKS5kYXRhOworc2hvdWxkQmUo
J2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScs
ICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICczNicpOworCitkID0gY3R4LmdldEltYWdl
RGF0YSg0MDUsIDUwMSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hv
dWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91
bmQoJ2RbM10nLCAnMzYnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoNDA1LCA1MDEsIDEsIDEp
LmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsK
K3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzM2Jyk7CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjODEwMTE1YThjNmQxYTdjYjM1NWZmMWNm
MTMxODU3Njk2ODk4OTI2Li43OWEwOTY1YTQ0NTAxM2M0NGNkMmJlMWI3NzVkZTVkMjMxMzgzOTEw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQxIEBACisyMDEwLTEyLTA5ICBIZWxkZXIgQ29ycmVpYSAgPGhlbGRlckBzZW5j
aGEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtRdF0gTm8gc2hhZG93IG9mZnNldCBzaG91bGQgYmUgYWZmZWN0ZWQgYnkgYW55IHRyYW5zZm9y
bWF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MDQyMgorCisgICAgICAgIE9uIGEgY2FudmFzIGNvbnRleHQsIHNoYWRvd3MgYXJlIGN1cnJlbnRs
eSBhZmZlY3RlZCBieSBhbGwKKyAgICAgICAgdHJhbnNmb3JtYXRpb25zIGV4Y2VwdCBzY2FsaW5n
LiBBY2NvcmRpbmcgdG8gdGhlIHNwZWM6CisgICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9z
cGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1jYW52YXMtZWxlbWVudC5o
dG1sI3NoYWRvd3MKKworICAgICAgICAiVGhlIHNoYWRvd09mZnNldFggYW5kIHNoYWRvd09mZnNl
dFkgYXR0cmlidXRlcyBzcGVjaWZ5IHRoZSBkaXN0YW5jZQorICAgICAgICB0aGF0IHRoZSBzaGFk
b3cgd2lsbCBiZSBvZmZzZXQgaW4gdGhlIHBvc2l0aXZlIGhvcml6b250YWwgYW5kIHBvc2l0aXZl
CisgICAgICAgIHZlcnRpY2FsIGRpc3RhbmNlIHJlc3BlY3RpdmVseS4gVGhlaXIgdmFsdWVzIGFy
ZSBpbiBjb29yZGluYXRlIHNwYWNlCisgICAgICAgIHVuaXRzLiBUaGV5IGFyZSBub3QgYWZmZWN0
ZWQgYnkgdGhlIGN1cnJlbnQgdHJhbnNmb3JtYXRpb24gbWF0cml4LiIKKworICAgICAgICBOT1RF
OiB0aGlzIGFwcGxpZXMgb25seSB0byBjYW52YXMsIG5vdCB0byBib3ggc2hhZG93cy4KKworICAg
ICAgICBUZXN0OiBmYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cu
aHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjpDb250ZXh0U2hhZG93KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93Lmg6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZXh0U2hhZG93OjpzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjpzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjpvZmZzZXQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRT
aGFkb3c6OmVuZFNoYWRvd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0NvbnRleHRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptdXN0VXNlQ29udGV4dFNo
YWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3cpOgorCiAyMDEwLTEyLTA5ICBTYW0gV2Vpbmln
ICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVHJ5IGFuZCBmaXggdGhlIG1hYyBidWlsZC4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwCmluZGV4IDg3YTFj
NWM3NjNjZWM1NTY2MzRmMmZiYWZjNjc1OTQyOWVkYzU5ZDEuLjNhNzVjYmM1ZGE3ZjA4ZDIxN2Vk
MjZkOTk3YjFjNjk4MzIxMWMwOTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29udGV4dFNoYWRvdy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250
ZXh0U2hhZG93LmNwcApAQCAtNDEsNiArNDEsNyBAQCBDb250ZXh0U2hhZG93OjpDb250ZXh0U2hh
ZG93KCkKICAgICA6IG1fdHlwZShOb1NoYWRvdykKICAgICAsIG1fYmx1ckRpc3RhbmNlKDApCiAg
ICAgLCBtX2xheWVyQ29udGV4dCgwKQorICAgICwgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhm
YWxzZSkKIHsKIH0KIApAQCAtNDksNiArNTAsNyBAQCBDb250ZXh0U2hhZG93OjpDb250ZXh0U2hh
ZG93KGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmCiAg
ICAgLCBtX2JsdXJEaXN0YW5jZShyb3VuZChyYWRpdXMpKQogICAgICwgbV9vZmZzZXQob2Zmc2V0
KQogICAgICwgbV9sYXllckNvbnRleHQoMCkKKyAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMoZmFsc2UpCiB7CiAgICAgLy8gU2VlIGNvbW1lbnRzIGluIGh0dHA6Ly93ZWJraXQub3JnL2Iv
NDA3OTMsIGl0IHNlZW1zIHNlbnNpYmxlCiAgICAgLy8gdG8gZm9sbG93IFNraWEncyBsaW1pdCBv
ZiAxMjggcGl4ZWxzIG9mIGJsdXIgcmFkaXVzCkBAIC0xNDksNiArMTUxLDUzIEBAIHZvaWQgQ29u
dGV4dFNoYWRvdzo6Ymx1ckxheWVySW1hZ2UodW5zaWduZWQgY2hhciogaW1hZ2VEYXRhLCBjb25z
dCBJbnRTaXplJiBzaXplCiAgICAgfQogfQogCisjaWYgUExBVEZPUk0oUVQpCitJbnRSZWN0IENv
bnRleHRTaGFkb3c6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnN0IFBsYXRmb3JtQ29u
dGV4dCBwLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJl
Y3QpCit7CisgICAgLy8gQ2FsY3VsYXRlIHRoZSBkZXN0aW5hdGlvbiBvZiB0aGUgYmx1cnJlZCBh
bmQvb3IgdHJhbnNmb3JtZWQgbGF5ZXIuCisgICAgRmxvYXRSZWN0IGxheWVyRmxvYXRSZWN0Owor
ICAgIGludCBpbmZsYXRpb24gPSAwOworCisgICAgY29uc3QgUVRyYW5zZm9ybSB0cmFuc2Zvcm0g
PSBwLT50cmFuc2Zvcm0oKTsKKyAgICBpZiAobV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAmJiAh
dHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkgeworICAgICAgICBRUG9seWdvbkYgdHJhbnNmb3JtZWRQ
b2x5Z29uID0gdHJhbnNmb3JtLm1hcChRUG9seWdvbkYobGF5ZXJBcmVhKSk7CisgICAgICAgIHRy
YW5zZm9ybWVkUG9seWdvbi50cmFuc2xhdGUob2Zmc2V0KCkpOworICAgICAgICBsYXllckZsb2F0
UmVjdCA9IHRyYW5zZm9ybS5pbnZlcnRlZCgpLm1hcCh0cmFuc2Zvcm1lZFBvbHlnb24pLmJvdW5k
aW5nUmVjdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGxheWVyRmxvYXRSZWN0ID0gbGF5ZXJB
cmVhOworICAgICAgICBsYXllckZsb2F0UmVjdC5tb3ZlKG1fb2Zmc2V0KTsKKyAgICB9CisKKyAg
ICAvLyBXZSBleHBhbmQgdGhlIGFyZWEgYnkgdGhlIGJsdXIgcmFkaXVzIHRvIGdpdmUgZXh0cmEg
c3BhY2UgZm9yIHRoZSBibHVyIHRyYW5zaXRpb24uCisgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hh
ZG93KSB7CisgICAgICAgIGxheWVyRmxvYXRSZWN0LmluZmxhdGUobV9ibHVyRGlzdGFuY2UpOwor
ICAgICAgICBpbmZsYXRpb24gKz0gbV9ibHVyRGlzdGFuY2U7CisgICAgfQorCisgICAgaWYgKCFj
bGlwUmVjdC5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KGxheWVyRmxvYXRSZWN0KSkpIHsKKyAg
ICAgICAgLy8gTm8gbmVlZCB0byBoYXZlIHRoZSBidWZmZXIgbGFyZ2VyIHRoYW4gdGhlIGNsaXAu
CisgICAgICAgIGxheWVyRmxvYXRSZWN0LmludGVyc2VjdChjbGlwUmVjdCk7CisKKyAgICAgICAg
Ly8gSWYgd2UgYXJlIHRvdGFsbHkgb3V0c2lkZSB0aGUgY2xpcCByZWdpb24sIHdlIGFyZW4ndCBw
YWludGluZyBhdCBhbGwuCisgICAgICAgIGlmIChsYXllckZsb2F0UmVjdC5pc0VtcHR5KCkpCisg
ICAgICAgICAgICByZXR1cm4gSW50UmVjdCgwLCAwLCAwLCAwKTsKKworICAgICAgICAvLyBXZSBh
ZGp1c3QgYWdhaW4gYmVjYXVzZSB0aGUgcGl4ZWxzIGF0IHRoZSBib3JkZXJzIGFyZSBzdGlsbAor
ICAgICAgICAvLyBwb3RlbnRpYWxseSBhZmZlY3RlZCBieSB0aGUgcGl4ZWxzIG91dHNpZGUgdGhl
IGJ1ZmZlci4KKyAgICAgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7CisgICAgICAgICAg
ICBsYXllckZsb2F0UmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNlKTsKKyAgICAgICAgICAgIGlu
ZmxhdGlvbiArPSBtX2JsdXJEaXN0YW5jZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0
IGludCBmcmFtZVNpemUgPSBpbmZsYXRpb24gKiAyOworICAgIG1fc291cmNlUmVjdCA9IEludFJl
Y3QoMCwgMCwgbGF5ZXJBcmVhLndpZHRoKCkgKyBmcmFtZVNpemUsIGxheWVyQXJlYS5oZWlnaHQo
KSArIGZyYW1lU2l6ZSk7CisgICAgbV9sYXllck9yaWdpbiA9IEZsb2F0UG9pbnQobGF5ZXJGbG9h
dFJlY3QueCgpLCBsYXllckZsb2F0UmVjdC55KCkpOworICAgIHJldHVybiBlbmNsb3NpbmdJbnRS
ZWN0KGxheWVyRmxvYXRSZWN0KTsKK30KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ0FJUk8pCiB2
b2lkIENvbnRleHRTaGFkb3c6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICAvLyBDYWxj
dWxhdGUgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBibHVycmVkIGxheWVyLgpAQCAtMTczLDUgKzIy
Miw2IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoY29u
c3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0CiAgICAgICAgICAgICBtX2xheWVyUmVjdC5p
bmZsYXRlKG1fdHlwZSA9PSBCbHVyU2hhZG93ID8gbV9ibHVyRGlzdGFuY2UgOiAwKTsKICAgICB9
CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbnRleHRTaGFkb3cuaAppbmRleCBmYTc3OGFmYmNjZGRmYWZjM2Y0MGNkMDIzY2I3
YWQ0ZjQ1MWVkNTJjLi5jMDc3NmJiZWEwNjYwYjNkMDhiZjZkZTFhNDI4NGQ0ZjgxODYzMWI1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaApAQCAtMTA2LDI3ICsx
MDYsNDEgQEAgcHVibGljOgogICAgIFBsYXRmb3JtQ29udGV4dCBiZWdpblNoYWRvd0xheWVyKFBs
YXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEpOwogICAgIHZvaWQgZW5k
U2hhZG93TGF5ZXIoUGxhdGZvcm1Db250ZXh0KTsKICAgICBzdGF0aWMgdm9pZCBwdXJnZVNjcmF0
Y2hCdWZmZXIoKTsKKyAgICB2b2lkIHNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgZW5h
YmxlKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBlbmFibGU7IH0KKyAgICBib29sIHNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dzSWdub3JlVHJh
bnNmb3JtczsgfQogI2lmIFBMQVRGT1JNKENBSVJPKQogICAgIHZvaWQgZHJhd1JlY3RTaGFkb3co
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRT
aXplJiB0b3BMZWZ0UmFkaXVzID0gSW50U2l6ZSgpLCBjb25zdCBJbnRTaXplJiB0b3BSaWdodFJh
ZGl1cyA9IEludFNpemUoKSwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cyA9IEludFNp
emUoKSwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMgPSBJbnRTaXplKCkpOwogI2Vu
ZGlmCi0KICNpZiBQTEFURk9STShRVCkKLSAgICBRUG9pbnRGIG9mZnNldCgpIHsgcmV0dXJuIFFQ
b2ludEYobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQuaGVpZ2h0KCkpOyB9CisgICAgUVBvaW50
RiBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBRUG9pbnRGKG1fb2Zmc2V0LndpZHRoKCksIG1fb2Zm
c2V0LmhlaWdodCgpKTsgfQogI2VuZGlmCiAKIAogcHJpdmF0ZToKLSAgICBJbnRSZWN0IG1fbGF5
ZXJSZWN0OworICAgIC8vIEJ1ZmZlciB0byB3aGVyZSB0aGUgdGVtcG9yYXJ5IHNoYWRvdyB3aWxs
IGJlIGRyYXduIHRvLgogICAgIFBsYXRmb3JtSW1hZ2UgbV9sYXllckltYWdlOworICAgIC8vIENv
bnRleHQgdXNlZCB0byBwYWludCB0aGUgc2hhZG93IHRvIHRoZSBsYXllciBpbWFnZS4KICAgICBQ
bGF0Zm9ybUNvbnRleHQgbV9sYXllckNvbnRleHQ7Ci0KKyNpZiBQTEFURk9STShRVCkKKyAgICAv
LyBTdWItcmVjdCBvZiBtX2xheWVySW1hZ2UgdGhhdCBjb250YWlucyB0aGUgc2hhZG93IHBpeGVs
cy4KKyAgICBGbG9hdFJlY3QgbV9zb3VyY2VSZWN0OworICAgIC8vIFRvcC1sZWZ0IGNvcm5lciBv
ZiB0aGUgYm91bmRpbmcgcmVjdCB3aGVyZSB0aGUgc2hhZG93IGltYWdlIG5lZWRzIHRvIGJlIGRy
YXduLgorICAgIEZsb2F0UG9pbnQgbV9sYXllck9yaWdpbjsKKyNlbmRpZgorI2lmIFBMQVRGT1JN
KENBSVJPKQorICAgIC8vIEVuY2xvc2luZyBpbnQgcmVjdCB3aGVyZSBzaGFkb3cgbmVlZHMgdG8g
YmUgZHJhd24gdG8gdXNpbmcgdGhlIGxheWVyIGNvbnRleHQuCisgICAgSW50UmVjdCBtX2xheWVy
UmVjdDsKICAgICAvLyBVc2VkIGZvciByZWZlcmVuY2Ugd2hlbiBjYW52YXMgc2NhbGUoeCx5KSB3
YXMgY2FsbGVkLgogICAgIEZsb2F0UmVjdCBtX3Vuc2NhbGVkTGF5ZXJSZWN0OworI2VuZGlmCisg
ICAgYm9vbCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogCiAgICAgdm9pZCBibHVyTGF5ZXJJ
bWFnZSh1bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBpbnQgc3RyaWRl
KTsKLSAgICB2b2lkIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
bGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAjaWYgUExBVEZPUk0oQ0FJUk8p
CisgICAgdm9pZCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBGbG9hdFJlY3QmIGxh
eWVyQXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwogICAgIHZvaWQgZHJhd1JlY3RTaGFk
b3dXaXRob3V0VGlsaW5nKFBsYXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBz
aGFkb3dSZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBJbnRTaXplJiB0
b3BSaWdodFJhZGl1cywgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgSW50
U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMsIGZsb2F0IGFscGhhKTsKKyNlbHNlCisgICAgSW50UmVj
dCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAjZW5kaWYK
IH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNo
YWRvd1F0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0
LmNwcAppbmRleCBmN2M3MGY2OTViYzBmYzQyNTBjYzliZGMzNWU5ZDVlOGU2M2Y5NzQ0Li5lMmZi
YWY5NTBmOGQyMTRlOTJiN2QzNDkyNDc4YmViODVkZjE0NzBkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwCkBAIC0xMTQsMjQgKzExNCwz
MCBAQCBQbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dMYXllcihQbGF0
Zm9ybUNvbnRleHQgcCwgY29uc3QgRmxvYXRSZQogICAgIGVsc2UKICAgICAgICAgY2xpcFJlY3Qg
PSBwLT50cmFuc2Zvcm0oKS5pbnZlcnRlZCgpLm1hcFJlY3QocC0+d2luZG93KCkpOwogCi0gICAg
bV91bnNjYWxlZExheWVyUmVjdCA9IGxheWVyQXJlYTsKLSAgICBjYWxjdWxhdGVMYXllckJvdW5k
aW5nUmVjdChsYXllckFyZWEsIEludFJlY3QoY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNs
aXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKSk7CisgICAgLy8gU2V0IG1fbGF5ZXJP
cmlnaW4gYW5kIG1fc291cmNlUmVjdC4KKyAgICBJbnRSZWN0IGNsaXAoY2xpcFJlY3QueCgpLCBj
bGlwUmVjdC55KCksIGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKKyAgICBJ
bnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KHAsIGxheWVyQXJl
YSwgY2xpcCk7CiAKICAgICAvLyBEb24ndCBwYWludCBpZiB3ZSBhcmUgdG90YWxseSBvdXRzaWRl
IHRoZSBjbGlwIHJlZ2lvbi4KLSAgICBpZiAobV9sYXllclJlY3QuaXNFbXB0eSgpKQorICAgIGlm
IChsYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFNoYWRvd0J1
ZmZlciogc2hhZG93QnVmZmVyID0gc2NyYXRjaFNoYWRvd0J1ZmZlcigpOwotICAgIFFJbWFnZSog
c2hhZG93SW1hZ2UgPSBzaGFkb3dCdWZmZXItPnNjcmF0Y2hJbWFnZShtX2xheWVyUmVjdC5zaXpl
KCkpOworICAgIFFJbWFnZSogc2hhZG93SW1hZ2UgPSBzaGFkb3dCdWZmZXItPnNjcmF0Y2hJbWFn
ZShsYXllclJlY3Quc2l6ZSgpKTsKICAgICBtX2xheWVySW1hZ2UgPSBRSW1hZ2UoKnNoYWRvd0lt
YWdlKTsKIAogICAgIG1fbGF5ZXJDb250ZXh0ID0gbmV3IFFQYWludGVyOwogICAgIG1fbGF5ZXJD
b250ZXh0LT5iZWdpbigmbV9sYXllckltYWdlKTsKICAgICBtX2xheWVyQ29udGV4dC0+c2V0Rm9u
dChwLT5mb250KCkpOwotICAgIG1fbGF5ZXJDb250ZXh0LT50cmFuc2xhdGUobV9vZmZzZXQud2lk
dGgoKSwgbV9vZmZzZXQuaGVpZ2h0KCkpOwogCi0gICAgLy8gVGhlIG9yaWdpbiBpcyBub3cgdGhl
IHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgc2NyYXRjaCBpbWFnZS4KLSAgICBtX2xheWVyQ29udGV4
dC0+dHJhbnNsYXRlKC1tX2xheWVyUmVjdC54KCksIC1tX2xheWVyUmVjdC55KCkpOworICAgIC8v
IFNldCB0aGUgb3JpZ2luIGFzIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIHNjcmF0Y2ggaW1h
Z2UuCisgICAgaWYgKHAtPnRyYW5zZm9ybSgpLmlzSWRlbnRpdHkoKSkgeworICAgICAgICBtX2xh
eWVyQ29udGV4dC0+dHJhbnNsYXRlKG9mZnNldCgpKTsKKyAgICAgICAgbV9sYXllckNvbnRleHQt
PnRyYW5zbGF0ZSgtbGF5ZXJSZWN0LngoKSwgLWxheWVyUmVjdC55KCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIGNvbnN0IGludCBmcmFtZVNpemUgPSAobV9zb3VyY2VSZWN0LndpZHRoKCkgLSBs
YXllckFyZWEud2lkdGgoKSkgLyAyOworICAgICAgICBtX2xheWVyQ29udGV4dC0+dHJhbnNsYXRl
KC1sYXllckFyZWEueCgpICsgZnJhbWVTaXplLCAtbGF5ZXJBcmVhLnkoKSArIGZyYW1lU2l6ZSk7
CisgICAgfQogCiAgICAgcmV0dXJuIG1fbGF5ZXJDb250ZXh0OwogfQpAQCAtMTU1LDEzICsxNjEs
NyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCBw
KQogICAgICAgICBwLmVuZCgpOwogICAgIH0KIAotICAgIGNvbnN0IFFUcmFuc2Zvcm0gdHJhbnNm
b3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0gICAgaWYgKHRyYW5zZm9ybS5pc1NjYWxpbmcoKSkgewot
ICAgICAgICBxcmVhbCB4ID0gbV91bnNjYWxlZExheWVyUmVjdC54KCkgKyBtX29mZnNldC53aWR0
aCgpICAvIHRyYW5zZm9ybS5tMTEoKSAtIG1fYmx1ckRpc3RhbmNlOwotICAgICAgICBxcmVhbCB5
ID0gbV91bnNjYWxlZExheWVyUmVjdC55KCkgKyBtX29mZnNldC5oZWlnaHQoKSAvIHRyYW5zZm9y
bS5tMjIoKSAtIG1fYmx1ckRpc3RhbmNlOwotICAgICAgICBwLT5kcmF3SW1hZ2UoUVBvaW50Rih4
LCB5KSwgbV9sYXllckltYWdlKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcC0+ZHJhd0ltYWdlKG1f
bGF5ZXJSZWN0LnRvcExlZnQoKSwgbV9sYXllckltYWdlKTsKKyAgICBwLT5kcmF3SW1hZ2UobV9s
YXllck9yaWdpbiwgbV9sYXllckltYWdlLCBtX3NvdXJjZVJlY3QpOwogCiAgICAgc2NyYXRjaFNo
YWRvd0J1ZmZlcigpLT5zY2hlZHVsZVB1cmdlKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCmluZGV4IDcyN2ZiZjEyOWQ1NWYy
YzlhZTA4ZjViNDM2NmJjODFhNTk0ODM2OTQuLjY2YTkxMzYyYTI1YzE3ZmQ5ODk2NmY4NmRmN2Nm
NDE5MWE2ZDFlODkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0UXQuY3BwCkBAIC01NCw3ICs1NCw2IEBACiAjaW5jbHVkZSAiVHJhbnNwYXJl
bmN5TGF5ZXIuaCIKIAogI2luY2x1ZGUgPFFCcnVzaD4KLSNpbmNsdWRlIDxRRGVidWc+CiAjaW5j
bHVkZSA8UUdyYWRpZW50PgogI2luY2x1ZGUgPFFQYWludERldmljZT4KICNpbmNsdWRlIDxRUGFp
bnRFbmdpbmU+CkBAIC0xNzYsNiArMTc1LDIyIEBAIHN0YXRpYyBpbmxpbmUgUXQ6OkZpbGxSdWxl
IHRvUXRGaWxsUnVsZShXaW5kUnVsZSBydWxlKQogICAgIHJldHVybiBRdDo6T2RkRXZlbkZpbGw7
CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBtdXN0VXNlQ29udGV4dFNoYWRvdyhRUGFpbnRlciog
cGFpbnRlciwgQ29udGV4dFNoYWRvdyogc2hhZG93KQoreworICAgIGlmIChzaGFkb3ctPm1fdHlw
ZSA9PSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93KQorICAgICAgICAvLyBXZSBjYW4ndCBhdm9p
ZCBDb250ZXh0U2hhZG93LCBzaW5jZSB0aGUgc2hhZG93IGhhcyBibHVyLgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAoIXNoYWRvdy0+c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSkKKyAg
ICAgICAgLy8gV2UgY2FuIGF2b2lkIENvbnRleHRTaGFkb3cgYW5kIG9wdGltaXplLCBzaW5jZSB3
ZSdyZSBub3QgZHJhd2luZyBvbiBhIGNhbnZhcyBhbmQgYm94CisgICAgICAgIC8vIHNoYWRvd3Mg
YXJlIGFmZmVjdGVkIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAocGFpbnRlci0+dHJhbnNmb3JtKCkuaXNJZGVudGl0eSgpKQorICAg
ICAgICAvLyBXZSBjYW4gYXZvaWQgQ29udGV4dFNoYWRvdywgc2luY2UgdGhlcmUgYXJlIG5vIHRy
YW5zZm9ybWF0aW9ucyB0byBhcHBseSB0byB0aGUgY2FudmFzLgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgLy8gT3RoZXJ3aXNlLCBubyBjaGFuY2UgYXZvaWRpbmcgQ29udGV4dFNoYWRvdy4K
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHRQ
bGF0Zm9ybVByaXZhdGUoUVBhaW50ZXIqLCBjb25zdCBRQ29sb3ImIGluaXRpYWxTb2xpZENvbG9y
KTsKQEAgLTUwOSwzMSArNTI0LDIxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChj
b25zdCBQYXRoJiBwYXRoKQogCiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAg
ICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotICAgICAgICBpZiAo
c2hhZG93LT5tX3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdwotICAgICAgICAgICAg
JiYgIW1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybiAmJiAhbV9jb21tb24tPnN0YXRlLmZpbGxH
cmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykKKyAg
ICAgICAgICAgIHx8IG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybgorICAgICAgICAgICAgfHwg
bV9jb21tb24tPnN0YXRlLmZpbGxHcmFkaWVudCkKICAgICAgICAgewotICAgICAgICAgICAgUVBv
aW50RiBvZmZzZXQgPSBzaGFkb3ctPm9mZnNldCgpOwotICAgICAgICAgICAgY29uc3QgUVRyYW5z
Zm9ybSYgdHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0gICAgICAgICAgICBpZiAodHJhbnNm
b3JtLmlzU2NhbGluZygpKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgc2NhbGluZyBpcyByZXF1
aXJlZCwgZmluZCB0aGUgbmV3IGNvb3JkIGZvciBzaGFkb3cgb3JpZ2luLAotICAgICAgICAgICAg
ICAgIC8vIHNvIHRoYXQgdGhlIHJlbGF0aXZlIG9mZnNldCB0byBpdHMgc2hhcGUgaXMga2VwdC4K
LSAgICAgICAgICAgICAgICBRUG9pbnRGIHRyYW5zbGF0ZWRPZmZzZXQob2Zmc2V0LngoKSAvIHRy
YW5zZm9ybS5tMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b2Zmc2V0LnkoKSAvIHRyYW5zZm9ybS5tMjIoKSk7Ci0gICAgICAgICAgICAgICAgcGxhdGZvcm1Q
YXRoLnRyYW5zbGF0ZSh0cmFuc2xhdGVkT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBwLT5maWxs
UGF0aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihzaGFkb3ctPm1fY29sb3IpKTsKLSAgICAgICAgICAg
ICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKC10cmFuc2xhdGVkT2Zmc2V0KTsKLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG9mZnNldCk7Ci0gICAg
ICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3Ioc2hhZG93LT5tX2Nv
bG9yKSk7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZzZXQpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50
ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2lu
dFJlY3QoKSk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAg
ICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRp
b25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFBhdGgo
cGxhdGZvcm1QYXRoLCBRQ29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xvcikpOwogICAgICAgICAg
ICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICB9CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBRUG9pbnRGIG9mZnNldCA9IHNoYWRvdy0+b2Zmc2V0KCk7
CisgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKKyAgICAgICAgICAgIHAtPmZpbGxQ
YXRoKHBsYXRmb3JtUGF0aCwgUUNvbG9yKHNoYWRvdy0+bV9jb2xvcikpOworICAgICAgICAgICAg
cC0+dHJhbnNsYXRlKC1vZmZzZXQpOwogICAgICAgICB9CiAKICAgICB9CkBAIC01NjAsMjggKzU2
NSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRo
KQogCiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAgQ29udGV4dFNoYWRv
dyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotCi0gICAgICAgIGlmIChzaGFkb3ctPm1fdHlw
ZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93Ci0gICAgICAgICAgICAmJiAhbV9jb21tb24t
PnN0YXRlLnN0cm9rZVBhdHRlcm4gJiYgIW1fY29tbW9uLT5zdGF0ZS5zdHJva2VHcmFkaWVudCkK
KyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykKKyAgICAgICAgICAg
IHx8IG1fY29tbW9uLT5zdGF0ZS5zdHJva2VQYXR0ZXJuCisgICAgICAgICAgICB8fCBtX2NvbW1v
bi0+c3RhdGUuc3Ryb2tlR3JhZGllbnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFFQZW4gc2hh
ZG93UGVuKHBlbik7Ci0gICAgICAgICAgICBzaGFkb3dQZW4uc2V0Q29sb3IobV9kYXRhLT5zaGFk
b3cubV9jb2xvcik7Ci0gICAgICAgICAgICBRUG9pbnRGIG9mZnNldCA9IHNoYWRvdy0+b2Zmc2V0
KCk7Ci0gICAgICAgICAgICBjb25zdCBRVHJhbnNmb3JtJiB0cmFuc2Zvcm0gPSBwLT50cmFuc2Zv
cm0oKTsKLSAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5nKCkpIHsKLSAgICAgICAg
ICAgICAgICAvLyBJZiBzY2FsaW5nIGlzIHJlcXVpcmVkLCBmaW5kIHRoZSBuZXcgY29vcmQgZm9y
IHNoYWRvdyBvcmlnaW4sCi0gICAgICAgICAgICAgICAgLy8gc28gdGhhdCB0aGUgcmVsYXRpdmUg
b2Zmc2V0IHRvIGl0cyBzaGFwZSBpcyBrZXB0LgotICAgICAgICAgICAgICAgIFFQb2ludEYgdHJh
bnNsYXRlZE9mZnNldChvZmZzZXQueCgpIC8gdHJhbnNmb3JtLm0xMSgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQueSgpIC8gdHJhbnNmb3JtLm0yMigp
KTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKHRyYW5zbGF0ZWRPZmZz
ZXQpOwotICAgICAgICAgICAgICAgIHAtPnN0cm9rZVBhdGgocGxhdGZvcm1QYXRoLCBzaGFkb3dQ
ZW4pOwotICAgICAgICAgICAgICAgIHBsYXRmb3JtUGF0aC50cmFuc2xhdGUoLXRyYW5zbGF0ZWRP
ZmZzZXQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwLT50cmFuc2xh
dGUob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBwLT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwg
c2hhZG93UGVuKTsKLSAgICAgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW9mZnNldCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBGbG9hdFJlY3QgYm91bmRp
bmdSZWN0ID0gcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKTsKICAgICAgICAgICAgIGJv
dW5kaW5nUmVjdC5pbmZsYXRlKHBlbi5taXRlckxpbWl0KCkgKyBwZW4ud2lkdGhGKCkpOwogICAg
ICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5
ZXIocCwgYm91bmRpbmdSZWN0KTsKQEAgLTU5MCw2ICs1NzcsMTMgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgICAgICBzaGFk
b3dQYWludGVyLT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgcGVuKTsKICAgICAgICAgICAgICAg
ICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgUVBlbiBzaGFkb3dQZW4ocGVuKTsKKyAgICAgICAgICAgIHNoYWRv
d1Blbi5zZXRDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9yKTsKKyAgICAgICAgICAgIFFQb2lu
dEYgb2Zmc2V0ID0gc2hhZG93LT5vZmZzZXQoKTsKKyAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShv
ZmZzZXQpOworICAgICAgICAgICAgcC0+c3Ryb2tlUGF0aChwbGF0Zm9ybVBhdGgsIHNoYWRvd1Bl
bik7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW9mZnNldCk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTcwOSw3ICs3MDMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwg
YnJ1c2gpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChtX2RhdGEtPmhhc1NoYWRvdygpKSB7
Ci0gICAgICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgPT0gQ29udGV4dFNoYWRvdzo6Qmx1clNo
YWRvdykgeworICAgICAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykp
IHsKICAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVn
aW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAgICAgICAgaWYgKHNo
YWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0T3Bh
Y2l0eShzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5tX2NvbG9yLmFscGhhKCkpIC8gMjU1KTsK
QEAgLTcxNywxNyArNzExLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93
TGF5ZXIocCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAvLyBTb2xpZCByZWN0YW5nbGUgZmlsbCB3aXRoIG5vIGJsdXIgc2hhZG93IGNh
biBiZSBkb25lIGZhc3RlcgotICAgICAgICAgICAgICAgIC8vIHdpdGhvdXQgdXNpbmcgdGhlIHNo
YWRvdyBsYXllciBhdCBhbGwuCisgICAgICAgICAgICAgICAgLy8gU29saWQgcmVjdGFuZ2xlIGZp
bGwgd2l0aCBubyBibHVyIHNoYWRvdyBvciB0cmFuc2Zvcm1hdGlvbnMgYXBwbGllZCBjYW4gYmUg
ZG9uZQorICAgICAgICAgICAgICAgIC8vIGZhc3RlciB3aXRob3V0IHVzaW5nIHRoZSBzaGFkb3cg
bGF5ZXIgYXQgYWxsLgogICAgICAgICAgICAgICAgIFFDb2xvciBzaGFkb3dDb2xvciA9IHNoYWRv
dy0+bV9jb2xvcjsKICAgICAgICAgICAgICAgICBzaGFkb3dDb2xvci5zZXRBbHBoYUYoc2hhZG93
Q29sb3IuYWxwaGFGKCkgKiBwLT5icnVzaCgpLmNvbG9yKCkuYWxwaGFGKCkpOwotICAgICAgICAg
ICAgICAgIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSA9IHAtPnRyYW5zZm9ybSgpOwotICAg
ICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5nKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJhbnNsYXRlZChzdGF0aWNfY2FzdDxx
cmVhbD4oc2hhZG93LT5vZmZzZXQoKS54KCkpIC8gdHJhbnNmb3JtLm0xMSgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PHFyZWFsPihzaGFkb3ctPm9mZnNldCgpLnkoKSAgLyB0cmFuc2Zvcm0ubTIyKCkpKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93Q29sb3IpOwotICAgICAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVj
dC50cmFuc2xhdGVkKHNoYWRvdy0+b2Zmc2V0KCkpLCBzaGFkb3dDb2xvcik7CisgICAgICAgICAg
ICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJhbnNsYXRlZChzaGFkb3ctPm9mZnNl
dCgpKSwgc2hhZG93Q29sb3IpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTc0Nywx
OCArNzM1LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAKICAgICBpZiAobV9kYXRhLT5o
YXNTaGFkb3coKSkgewogICAgICAgICBDb250ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0U2hh
ZG93KCk7Ci0KLSAgICAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6OkJs
dXJTaGFkb3cpIHsKLSAgICAgICAgICAgIC8vIFdlIGRvIG5vdCBuZWVkIGFueSBsYXllciBmb3Ig
c2ltcGxlIHNoYWRvdy4KLSAgICAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRy
YW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvdy0+bV9jb2xvcik7Ci0gICAgICAgIH0g
ZWxzZSB7CisgICAgICAgIGlmIChtdXN0VXNlQ29udGV4dFNoYWRvdyhwLCBzaGFkb3cpKSB7CiAg
ICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dM
YXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikg
ewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFp
bnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFp
bnRlci0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIHNoYWRvdy0+bV9jb2xvcik7CiAgICAgICAg
ICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwKTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRS
ZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvdy0+bV9jb2xvcik7CiAgICAg
fQogCiAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIG1fZGF0YS0+c29saWRDb2xvcik7
CkBAIC03NzQsMTkgKzc1OSwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRS
ZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZgogICAgIFFQYWlu
dGVyKiBwID0gbV9kYXRhLT5wKCk7CiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAg
ICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotCi0gICAgICAg
IGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93KSB7Ci0gICAg
ICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCBhbnkgbGF5ZXIgZm9yIHNpbXBsZSBzaGFkb3cuCi0g
ICAgICAgICAgICBwLT50cmFuc2xhdGUobV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOwotICAgICAg
ICAgICAgcC0+ZmlsbFBhdGgocGF0aC5wbGF0Zm9ybVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hh
ZG93Lm1fY29sb3IpKTsKLSAgICAgICAgICAgIHAtPnRyYW5zbGF0ZSgtbV9kYXRhLT5zaGFkb3cu
b2Zmc2V0KCkpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAobXVzdFVzZUNvbnRleHRT
aGFkb3cocCwgc2hhZG93KSkgewogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIg
PSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcmVjdCk7CiAgICAgICAgICAgICBpZiAoc2hh
ZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0
aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAg
ICAgc2hhZG93UGFpbnRlci0+ZmlsbFBhdGgocGF0aC5wbGF0Zm9ybVBhdGgoKSwgUUNvbG9yKG1f
ZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKICAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRv
d0xheWVyKHApOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
cC0+dHJhbnNsYXRlKG1fZGF0YS0+c2hhZG93Lm9mZnNldCgpKTsKKyAgICAgICAgICAgIHAtPmZp
bGxQYXRoKHBhdGgucGxhdGZvcm1QYXRoKCksIFFDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9y
KSk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW1fZGF0YS0+c2hhZG93Lm9mZnNldCgpKTsK
ICAgICAgICAgfQogICAgIH0KICAgICBwLT5maWxsUGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBR
Q29sb3IoY29sb3IpKTsKQEAgLTk3NCw5ICs5NTcsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgYmx1ciwgY29u
c3QKICAgICAgICAgLy8gV2UgZmxpcCB0aGUgaGVpZ2h0IHNpbmNlIENHIGFuZCBIVE1MNSBDYW52
YXMgaGF2ZSBvcHBvc2l0ZSBZIGF4aXMKICAgICAgICAgbV9jb21tb24tPnN0YXRlLnNoYWRvd09m
ZnNldCA9IEZsb2F0U2l6ZShzaXplLndpZHRoKCksIC1zaXplLmhlaWdodCgpKTsKICAgICAgICAg
bV9kYXRhLT5zaGFkb3cgPSBDb250ZXh0U2hhZG93KGNvbG9yLCBibHVyLCBGbG9hdFNpemUoc2l6
ZS53aWR0aCgpLCAtc2l6ZS5oZWlnaHQoKSkpOwotICAgIH0gZWxzZSB7CisgICAgfSBlbHNlCiAg
ICAgICAgIG1fZGF0YS0+c2hhZG93ID0gQ29udGV4dFNoYWRvdyhjb2xvciwgYmx1ciwgRmxvYXRT
aXplKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOwotICAgIH0KKworICAgIG1fZGF0YS0+
c2hhZG93LnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKG1fY29tbW9uLT5zdGF0ZS5zaGFkb3dz
SWdub3JlVHJhbnNmb3Jtcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclBsYXRm
b3JtU2hhZG93KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76425</attachid>
            <date>2010-12-13 13:29:41 -0800</date>
            <delta_ts>2010-12-14 00:31:53 -0800</delta_ts>
            <desc>Add suggestions in comment #14</desc>
            <filename>bug-50422-20101213132616.patch</filename>
            <type>text/plain</type>
            <size>35415</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NzQ5NjMyMzQ3OTc0ZTcxNmQ3NjQ1OTY5ZjQxMDNkNjAzNmY2YWIyLi5lNjAyNWUy
Njg5MjJlMjQwMTkyOGVlNTQyMGI1MDM4NGMxMDQ2MGZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMTAtMTItMTMgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBDYW52YXMgc2hh
ZG93IG9mZnNldCBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IGFueSB0cmFuc2Zvcm1hdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0MjIKKwor
ICAgICAgICBPbiBhIGNhbnZhcyBjb250ZXh0LCBzaGFkb3dzIGFyZSBjdXJyZW50bHkgYWZmZWN0
ZWQgYnkgYWxsCisgICAgICAgIHRyYW5zZm9ybWF0aW9ucyBleGNlcHQgc2NhbGluZy4gQWNjb3Jk
aW5nIHRvIHRoZSBzcGVjOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2Vi
LWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbCNzaGFk
b3dzCisKKyAgICAgICAgIlRoZSBzaGFkb3dPZmZzZXRYIGFuZCBzaGFkb3dPZmZzZXRZIGF0dHJp
YnV0ZXMgc3BlY2lmeSB0aGUgZGlzdGFuY2UKKyAgICAgICAgdGhhdCB0aGUgc2hhZG93IHdpbGwg
YmUgb2Zmc2V0IGluIHRoZSBwb3NpdGl2ZSBob3Jpem9udGFsIGFuZCBwb3NpdGl2ZQorICAgICAg
ICB2ZXJ0aWNhbCBkaXN0YW5jZSByZXNwZWN0aXZlbHkuIFRoZWlyIHZhbHVlcyBhcmUgaW4gY29v
cmRpbmF0ZSBzcGFjZQorICAgICAgICB1bml0cy4gVGhleSBhcmUgbm90IGFmZmVjdGVkIGJ5IHRo
ZSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4iCisKKyAgICAgICAgTk9URTogdGhpcyBh
cHBsaWVzIG9ubHkgdG8gY2FudmFzLCBub3QgdG8gYm94IHNoYWRvd3MuCisKKyAgICAgICAgQWRk
IG5ldyB0ZXN0IHRvIGVuc3VyZSB0aGF0IHNoYWRvd3MgYXJlIGNvcnJlY3RseSB0cmFuc2Zvcm1l
ZCBrZWVwaW5nCisgICAgICAgIHRoZSByZWxhdGl2ZSBvZmZzZXQgdG8gdGhlIHNoYXBlLgorCisg
ICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVj
dC1zaGFkb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52
YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cuanM6Cisg
ICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUmVjdC1z
aGFkb3cuanM6CisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2Fs
ZS1zdHJva2VQYXRoLXNoYWRvdy5qczogTm93IHVzaW5nCisgICAgICAgICAgYSBsaW5lV2lkdGgg
PiAxIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHRlc3QgYW5kIG1vcmUgZmFpciBhbW9uZyBhbGwKKyAg
ICAgICAgICBwb3J0cywgc2luY2UgdGhlcmUgY2FuIGJlIGRpZmZlcmVudCB0cmFuc2Zvcm1hdGlv
biBzbW9vdGhuZXNzIG9yCisgICAgICAgICAgYWxpYXNpbmcgc2V0dGluZ3MuCisgICAgICAgICog
ZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRv
dy5qczogQWRkZWQuCisKIDIwMTAtMTItMDkgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgQ2hyb21pdW0gdGVzdCBleHBlY3RhdGlvbnMg
dXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxl
LXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQKaW5kZXggZTU2MjAx
ZjczODdlNDYyZjc5MjI1ZTY1ZjhhMzQwMWUyZTMyMzZmZS4uYTMzN2M0YjYzZmYxZGRmZWVkNDQ4
OGUzNTFmZmRhZTE0OWVhODUxNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
Y2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3ctZXhwZWN0ZWQu
dHh0CkBAIC0zMCwyNyArMzAsMjcgQEAgUEFTUyBkWzNdIGlzIGFyb3VuZCA3NgogUEFTUyBkWzBd
IGlzIDI1NQogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJv
dW5kIDIwCitQQVNTIGRbM10gaXMgYXJvdW5kIDE0OQogUEFTUyBkWzBdIGlzIDI1NQogUEFTUyBk
WzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDIyCitQQVNTIGRb
M10gaXMgYXJvdW5kIDExNgogUEFTUyBkWzBdIGlzIDI1NQogUEFTUyBkWzFdIGlzIDAKIFBBU1Mg
ZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDI4CitQQVNTIGRbM10gaXMgYXJvdW5kIDEx
NQogUEFTUyBkWzBdIGlzIDI1NQogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1QQVNT
IGRbM10gaXMgYXJvdW5kIDIyCitQQVNTIGRbM10gaXMgYXJvdW5kIDcwCiBQQVNTIGRbMF0gaXMg
MjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQg
MTUKK1BBU1MgZFszXSBpcyBhcm91bmQgNzAKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBp
cyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAxNworUEFTUyBkWzNdIGlz
IGFyb3VuZCA2OQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBM
RVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jt
cy1maWxsUmVjdC1zaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
Y2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wMTNiODkxMmYwZDJhN2YwMzkxOTYzY2Y2OWMwYjc0ZTZiNDMxOTRjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qt
c2hhZG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDU3IEBACitFbnN1cmUgY29ycmVjdCBiZWhh
dmlvciBvZiBjYW52YXMgd2l0aCBmaWxsUmVjdCtzaGFkb3cgYWZ0ZXIgdHJhbnNsYXRpb24rcm90
YXRpb24rc2NhbGluZy4gQSBibHVlIGFuZCByZWQgY2hlY2tlcmVkIHBhdHRlcm4gc2hvdWxkIGJl
IGRpc3BsYXllZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZFswXSBp
cyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIDI1NQor
UEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRb
M10gaXMgMjU1CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlz
IDAKK1BBU1MgZFszXSBpcyAyNTUKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQ
QVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIGFyb3VuZCAxMjcKK1BBU1MgZFswXSBpcyAyNTUK
K1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIGFyb3VuZCAxMjcK
K1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBk
WzNdIGlzIGFyb3VuZCAxMjcKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNT
IGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIGFyb3VuZCAxMDYKK1BBU1MgZFswXSBpcyAyNTUKK1BB
U1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIGFyb3VuZCAxMDYKK1BB
U1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNd
IGlzIGFyb3VuZCA4MworUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsy
XSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDM2CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRb
MV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQgMzYKK1BBU1MgZFsw
XSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIGFy
b3VuZCAzNgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1z
LWZpbGxSZWN0LXNoYWRvdy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRy
YW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZjNGU5YTg0NGU3YmY2
N2ZmZWU1ZWJmNThkNTBkYmY0MmE3OGE5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5odG1sCkBAIC0w
LDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Nj
cmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LmpzIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cuanMK
aW5kZXggMDUyODZmNTMyOGI1ZTU5OTgzMjQzNTA3NWRiYmYxZWMxN2U1YTIwNy4uM2NhMzMyMTk5
MjhkZGQxYmYyMDIxYzRhMDI0ZDczMDhiY2I4NjUzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cuanMK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1m
aWxsUGF0aC1zaGFkb3cuanMKQEAgLTc5LDEzICs3OSwxMyBAQCBzaG91bGRCZSgnZFsxXScsICcw
Jyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAot
ZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCAyOTUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldElt
YWdlRGF0YSgyOTgsIDI5NSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwog
c2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUo
J2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjk5LCAxLCAxKS5k
YXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyOTgsIDEsIDEpLmRhdGE7CiBzaG91bGRC
ZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJd
JywgJzAnKTsKQEAgLTk4LDEzICs5OCwxMyBAQCBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91
bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1kID0g
Y3R4LmdldEltYWdlRGF0YSgyOTksIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VE
YXRhKDI5OCwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91
bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3Vu
ZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OSwgMSwgMSku
ZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk4LCAxLCAxKS5kYXRhOwogc2hvdWxk
QmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsy
XScsICcwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVz
dHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzCmluZGV4IDk5
YTFlNTk0YmQ1OWY3MzY3ZjNjMzBkZWExNjUxZTMyZjNkNGRlNmUuLmY0OTVjOTEwNTViYmExZGNi
MTQ2ODMyZTI4MTYzMDc0YTA0NWU4MjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qt
c2hhZG93LmpzCkBAIC01OCwxMyArNTgsMTMgQEAgc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDI5OSwgMjk1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEo
Mjk4LCAyOTgsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJl
KCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywg
JzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDI5OSwgMSwgMSkuZGF0YTsKK2Qg
PSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwgMjk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0n
LCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7
CkBAIC03NywxMyArNzcsMTMgQEAgc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
Ml0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJ
bWFnZURhdGEoMjk5LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyOTgs
IDQwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2Rb
MV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10n
LCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTksIDEsIDEpLmRhdGE7Citk
ID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBd
JywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZh
cy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Nj
cmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMKaW5kZXggNTE5OGQ5
NDE1MTdkYWI5MmJjMjg5MWM4Mzc0ZjM1YmExYTg5ZDU3OS4uOTFiOTI3Zjk1ZmE4N2RlNWY5ZDY1
NWYzYjJmZmQyZjRiNWRhZDUzNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
c2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy5qcworKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgt
c2hhZG93LmpzCkBAIC0zNSw2ICszNSw3IEBAIGN0eC5zY2FsZSgyLCAyKTsKIGN0eC5zaGFkb3dP
ZmZzZXRYID0gMTAwOwogY3R4LnNoYWRvd09mZnNldFkgPSAxMDA7CiBjdHguc3Ryb2tlU3R5bGUg
PSAncmdiYSgwLCAwLCAyNTUsIDEpJzsKK2N0eC5saW5lV2lkdGggPSA1OwogCiBjdHguc2hhZG93
Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDEuMCknOwogY3R4LmJlZ2luUGF0aCgpOwpAQCAtNzYs
NzkgKzc3LDc5IEBAIGN0eC5zdHJva2UoKTsKIHZhciBkOyAvLyBpbWFnZURhdGEuZGF0YQogCiAv
LyBWZXJpZnkgc29saWQgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyMDUsIDEs
IDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyNTAsIDIwMCwgMSwgMSkuZGF0YTsKIHNo
b3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUo
J2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1h
Z2VEYXRhKDI5OSwgMjk1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMzAwLCAy
OTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFd
JywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScp
OwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDI5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDIwMCwgMjUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1
Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91
bGRCZSgnZFszXScsICcyNTUnKTsKIAogLy8gVmVyaWZ5IHNvbGlkIGFscGhhIHNoYWRvdy4KLWQg
PSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFn
ZURhdGEoMjAxLCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNo
b3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJv
dW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDA1LCAxLCAx
KS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAxLCA1MDAsIDEsIDEpLmRhdGE7CiBzaG91
bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdk
WzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0
SW1hZ2VEYXRhKDIwNSwgNDk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMzAw
LCA0OTksIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdk
WzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNd
JywgJzc2Jyk7CiAKIC8vIFZlcmlmeSBibHVycnkgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURh
dGEoMzk0LCAyMDgsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0MDQsIDIxMCwg
MSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAn
MCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjAn
KTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzE0OScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0
YSg1MDMsIDMwMSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwNSwgMjUwLCAx
LCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcw
Jyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcyMicp
Oworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTE2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRh
KDUwNCwgMjUwLCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoNDUwLCAyMDUsIDEs
IDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAn
KTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzI4Jyk7
CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMTUnKTsKIAogLy8gVmVyaWZ5IGJsdXJyeSBhbHBo
YSBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSg0MDUsIDQwNSwgMSwgMSkuZGF0YTsKK2Qg
PSBjdHguZ2V0SW1hZ2VEYXRhKDUwNSwgNDUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0n
LCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7
Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcyMicpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAn
NzAnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoNDE1LCA0OTUsIDEsIDEpLmRhdGE7CitkID0g
Y3R4LmdldEltYWdlRGF0YSg1MDUsIDQ1MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywg
JzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwot
c2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTUnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzcw
Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDQ1MCwgNTA0LCAxLCAxKS5kYXRhOworZCA9IGN0
eC5nZXRJbWFnZURhdGEoNDUwLCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcy
NTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNo
b3VsZEJlQXJvdW5kKCdkWzNdJywgJzE3Jyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICc2OScp
OwogCiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1z
aGFkb3cuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXRy
YW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2N2YyNDQzY2JlOTA2MDA1
M2JjMzk5MDI3OTg1ZWU1ZjA3Mzc5ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93
LmpzCkBAIC0wLDAgKzEsMTMzIEBACitkZXNjcmlwdGlvbigiRW5zdXJlIGNvcnJlY3QgYmVoYXZp
b3Igb2YgY2FudmFzIHdpdGggZmlsbFJlY3Qrc2hhZG93IGFmdGVyIHRyYW5zbGF0aW9uK3JvdGF0
aW9uK3NjYWxpbmcuIEEgYmx1ZSBhbmQgcmVkIGNoZWNrZXJlZCBwYXR0ZXJuIHNob3VsZCBiZSBk
aXNwbGF5ZWQuIik7CisKK2Z1bmN0aW9uIHByaW50KG1lc3NhZ2UsIGNvbG9yKQoreworICAgIHZh
ciBwYXJhZ3JhcGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBwYXJhZ3Jh
cGguYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIHBh
cmFncmFwaC5zdHlsZS5mb250RmFtaWx5ID0gIm1vbm9zcGFjZSI7CisgICAgaWYgKGNvbG9yKQor
ICAgICAgICBwYXJhZ3JhcGguc3R5bGUuY29sb3IgPSBjb2xvcjsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKHBhcmFncmFwaCk7Cit9CisKK2Z1bmN0
aW9uIHNob3VsZEJlQXJvdW5kKGEsIGIpCit7CisgICAgdmFyIGV2YWxBOworICAgIHRyeSB7Cisg
ICAgICAgIGV2YWxBID0gZXZhbChhKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgZXZhbEEg
PSBlOworICAgIH0KKworICAgIGlmIChNYXRoLmFicyhldmFsQSAtIGIpIDwgMTApCisgICAgICAg
IHByaW50KCJQQVNTICIgKyBhICsgIiBpcyBhcm91bmQgIiArIGIgLCAiZ3JlZW4iKQorICAgIGVs
c2UKKyAgICAgICAgcHJpbnQoIkZBSUwgIiArIGEgKyAiIGlzIG5vdCBhcm91bmQgIiArIGIgKyAi
IChhY3R1YWw6ICIgKyBldmFsQSArICIpIiwgInJlZCIpOworfQorCit2YXIgY2FudmFzID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGNhbnZhcyk7CitjYW52YXMuc2V0QXR0cmlidXRlKCd3aWR0aCcsICc2MDAnKTsKK2NhbnZhcy5z
ZXRBdHRyaWJ1dGUoJ2hlaWdodCcsICc2MDAnKTsKK3ZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4
dCgnMmQnKTsKKworY3R4LmZpbGxTdHlsZSA9ICdyZ2JhKDAsIDAsIDI1NSwgMS4wKSc7CitjdHgu
c2hhZG93T2Zmc2V0WCA9IDEwMDsKK2N0eC5zaGFkb3dPZmZzZXRZID0gMTAwOworCitjdHgudHJh
bnNsYXRlKC0xMDAsIC0xMDApOworY3R4LnJvdGF0ZShNYXRoLlBJLzIpOworY3R4LnNjYWxlKDIs
IDIpOworCitjdHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDEuMCknOworY3R4LmZp
bGxSZWN0KDEwMCwgLTE1MCwgNTAsIDUwKTsKKworY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMjU1
LCAwLCAwLCAwLjUpJzsKK2N0eC5maWxsUmVjdCgyMDAsIC0xNTAsIDUwLCA1MCk7CisKK2N0eC5z
aGFkb3dCbHVyID0gNTsKK2N0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwgMS4wKSc7
CitjdHguZmlsbFJlY3QoMTAwLCAtMjUwLCA1MCwgNTApOworCitjdHguc2hhZG93Q29sb3IgPSAn
cmdiYSgyNTUsIDAsIDAsIDAuNSknOworY3R4LmZpbGxSZWN0KDIwMCwgLTI1MCwgNTAsIDUwKTsK
KwordmFyIGQ7IC8vIGltYWdlRGF0YS5kYXRhCisKKy8vIFZlcmlmeSBzb2xpZCBzaGFkb3cuCitk
ID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDIwNSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBd
JywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcp
Oworc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwg
Mjk4LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsx
XScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZSgnZFszXScsICcyNTUn
KTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAxLCAyOTgsIDEsIDEpLmRhdGE7CitzaG91bGRC
ZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJd
JywgJzAnKTsKK3Nob3VsZEJlKCdkWzNdJywgJzI1NScpOworCisvLyBWZXJpZnkgc29saWQgYWxw
aGEgc2hhZG93LgorZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAxLCA0MDEsIDEsIDEpLmRhdGE7Citz
aG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJl
KCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzEyNycpOworCitkID0gY3R4
LmdldEltYWdlRGF0YSgyOTksIDQ1MCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1
NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hv
dWxkQmVBcm91bmQoJ2RbM10nLCAnMTI3Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwg
NDk4LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsx
XScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScs
ICcxMjcnKTsKKworLy8gVmVyaWZ5IGJsdXJyeSBzaGFkb3cuCitkID0gY3R4LmdldEltYWdlRGF0
YSgzOTksIDIwNSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxk
QmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQo
J2RbM10nLCAnMTA2Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwMCwgMjA1LCAxLCAxKS5k
YXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7Citz
aG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMDYnKTsKKwor
ZCA9IGN0eC5nZXRJbWFnZURhdGEoNDk5LCAyOTksIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFsw
XScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAn
KTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzgzJyk7CisKKy8vIFZlcmlmeSBibHVycnkgYWxw
aGEgc2hhZG93LgorZCA9IGN0eC5nZXRJbWFnZURhdGEoMzk4LCA0MDUsIDEsIDEpLmRhdGE7Citz
aG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJl
KCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzM2Jyk7CisKK2QgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDQwNSwgNTAxLCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1
Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91
bGRCZUFyb3VuZCgnZFszXScsICczNicpOworCitkID0gY3R4LmdldEltYWdlRGF0YSg0MDUsIDUw
MSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0n
LCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAn
MzYnKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM4MTAxMTVhOGM2ZDFhN2Ni
MzU1ZmYxY2YxMzE4NTc2OTY4OTg5MjYuLmNjMTlhNjNjMGYwODdiOWUwNGM5ZjVjYWE1YWM0YzJj
Y2NiNDA2NzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTAtMTItMTMgIEhlbGRlciBDb3JyZWlhICA8aGVs
ZGVyQHNlbmNoYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgW1F0XSBDYW52YXMgc2hhZG93IG9mZnNldCBzaG91bGQgbm90IGJlIGFmZmVjdGVk
IGJ5IGFueSB0cmFuc2Zvcm1hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTA0MjIKKworICAgICAgICBPbiBhIGNhbnZhcyBjb250ZXh0LCBzaGFk
b3dzIGFyZSBjdXJyZW50bHkgYWZmZWN0ZWQgYnkgYWxsCisgICAgICAgIHRyYW5zZm9ybWF0aW9u
cyBleGNlcHQgc2NhbGluZy4gQWNjb3JkaW5nIHRvIHRoZSBzcGVjOgorICAgICAgICBodHRwOi8v
d3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUt
Y2FudmFzLWVsZW1lbnQuaHRtbCNzaGFkb3dzCisKKyAgICAgICAgIlRoZSBzaGFkb3dPZmZzZXRY
IGFuZCBzaGFkb3dPZmZzZXRZIGF0dHJpYnV0ZXMgc3BlY2lmeSB0aGUgZGlzdGFuY2UKKyAgICAg
ICAgdGhhdCB0aGUgc2hhZG93IHdpbGwgYmUgb2Zmc2V0IGluIHRoZSBwb3NpdGl2ZSBob3Jpem9u
dGFsIGFuZCBwb3NpdGl2ZQorICAgICAgICB2ZXJ0aWNhbCBkaXN0YW5jZSByZXNwZWN0aXZlbHku
IFRoZWlyIHZhbHVlcyBhcmUgaW4gY29vcmRpbmF0ZSBzcGFjZQorICAgICAgICB1bml0cy4gVGhl
eSBhcmUgbm90IGFmZmVjdGVkIGJ5IHRoZSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4i
CisKKyAgICAgICAgTk9URTogdGhpcyBhcHBsaWVzIG9ubHkgdG8gY2FudmFzLCBub3QgdG8gYm94
IHNoYWRvd3MuCisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMt
ZmlsbFJlY3Qtc2hhZG93Lmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRl
eHRTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6Q29udGV4dFNo
YWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJv
dW5kaW5nUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5o
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6c2V0U2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6c2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6b2Zmc2V0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bXVzdFVzZUNvbnRleHRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KToKKwogMjAxMC0x
Mi0wOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFRyeSBhbmQgZml4
IHRoZSBtYWMgYnVpbGQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bnRleHRTaGFkb3cuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93
LmNwcAppbmRleCA4N2ExYzVjNzYzY2VjNTU2NjM0ZjJmYmFmYzY3NTk0MjllZGM1OWQxLi5lYmZm
ZDk4M2ViM2FkNTc0NTZiOTUyZTQ3Y2NmZjgyODQ4MmIzNTRmIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgQ29udGV4dFNo
YWRvdzo6Q29udGV4dFNoYWRvdygpCiAgICAgOiBtX3R5cGUoTm9TaGFkb3cpCiAgICAgLCBtX2Js
dXJEaXN0YW5jZSgwKQogICAgICwgbV9sYXllckNvbnRleHQoMCkKKyAgICAsIG1fc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMoZmFsc2UpCiB7CiB9CiAKQEAgLTQ5LDYgKzUwLDcgQEAgQ29udGV4dFNo
YWRvdzo6Q29udGV4dFNoYWRvdyhjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHJhZGl1cywgY29u
c3QgRmxvYXRTaXplJgogICAgICwgbV9ibHVyRGlzdGFuY2Uocm91bmQocmFkaXVzKSkKICAgICAs
IG1fb2Zmc2V0KG9mZnNldCkKICAgICAsIG1fbGF5ZXJDb250ZXh0KDApCisgICAgLCBtX3NoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKGZhbHNlKQogewogICAgIC8vIFNlZSBjb21tZW50cyBpbiBodHRw
Oi8vd2Via2l0Lm9yZy9iLzQwNzkzLCBpdCBzZWVtcyBzZW5zaWJsZQogICAgIC8vIHRvIGZvbGxv
dyBTa2lhJ3MgbGltaXQgb2YgMTI4IHBpeGVscyBvZiBibHVyIHJhZGl1cwpAQCAtMTQ5LDYgKzE1
MSw1MyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmJsdXJMYXllckltYWdlKHVuc2lnbmVkIGNoYXIq
IGltYWdlRGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZQogICAgIH0KIH0KIAorI2lmIFBMQVRGT1JN
KFFUKQorSW50UmVjdCBDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChj
b25zdCBQbGF0Zm9ybUNvbnRleHQgcCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0
IEludFJlY3QmIGNsaXBSZWN0KQoreworICAgIC8vIENhbGN1bGF0ZSB0aGUgZGVzdGluYXRpb24g
b2YgdGhlIGJsdXJyZWQgYW5kL29yIHRyYW5zZm9ybWVkIGxheWVyLgorICAgIEZsb2F0UmVjdCBs
YXllckZsb2F0UmVjdDsKKyAgICBmbG9hdCBpbmZsYXRpb24gPSAwOworCisgICAgY29uc3QgUVRy
YW5zZm9ybSB0cmFuc2Zvcm0gPSBwLT50cmFuc2Zvcm0oKTsKKyAgICBpZiAobV9zaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcyAmJiAhdHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkgeworICAgICAgICBRUG9s
eWdvbkYgdHJhbnNmb3JtZWRQb2x5Z29uID0gdHJhbnNmb3JtLm1hcChRUG9seWdvbkYobGF5ZXJB
cmVhKSk7CisgICAgICAgIHRyYW5zZm9ybWVkUG9seWdvbi50cmFuc2xhdGUob2Zmc2V0KCkpOwor
ICAgICAgICBsYXllckZsb2F0UmVjdCA9IHRyYW5zZm9ybS5pbnZlcnRlZCgpLm1hcCh0cmFuc2Zv
cm1lZFBvbHlnb24pLmJvdW5kaW5nUmVjdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGxheWVy
RmxvYXRSZWN0ID0gbGF5ZXJBcmVhOworICAgICAgICBsYXllckZsb2F0UmVjdC5tb3ZlKG1fb2Zm
c2V0KTsKKyAgICB9CisKKyAgICAvLyBXZSBleHBhbmQgdGhlIGFyZWEgYnkgdGhlIGJsdXIgcmFk
aXVzIHRvIGdpdmUgZXh0cmEgc3BhY2UgZm9yIHRoZSBibHVyIHRyYW5zaXRpb24uCisgICAgaWYg
KG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7CisgICAgICAgIGxheWVyRmxvYXRSZWN0LmluZmxhdGUo
bV9ibHVyRGlzdGFuY2UpOworICAgICAgICBpbmZsYXRpb24gKz0gbV9ibHVyRGlzdGFuY2U7Cisg
ICAgfQorCisgICAgaWYgKCFjbGlwUmVjdC5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KGxheWVy
RmxvYXRSZWN0KSkpIHsKKyAgICAgICAgLy8gTm8gbmVlZCB0byBoYXZlIHRoZSBidWZmZXIgbGFy
Z2VyIHRoYW4gdGhlIGNsaXAuCisgICAgICAgIGxheWVyRmxvYXRSZWN0LmludGVyc2VjdChjbGlw
UmVjdCk7CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIHRvdGFsbHkgb3V0c2lkZSB0aGUgY2xpcCBy
ZWdpb24sIHdlIGFyZW4ndCBwYWludGluZyBhdCBhbGwuCisgICAgICAgIGlmIChsYXllckZsb2F0
UmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gSW50UmVjdCgwLCAwLCAwLCAwKTsK
KworICAgICAgICAvLyBXZSBhZGp1c3QgYWdhaW4gYmVjYXVzZSB0aGUgcGl4ZWxzIGF0IHRoZSBi
b3JkZXJzIGFyZSBzdGlsbAorICAgICAgICAvLyBwb3RlbnRpYWxseSBhZmZlY3RlZCBieSB0aGUg
cGl4ZWxzIG91dHNpZGUgdGhlIGJ1ZmZlci4KKyAgICAgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hh
ZG93KSB7CisgICAgICAgICAgICBsYXllckZsb2F0UmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNl
KTsKKyAgICAgICAgICAgIGluZmxhdGlvbiArPSBtX2JsdXJEaXN0YW5jZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGNvbnN0IGludCBmcmFtZVNpemUgPSBpbmZsYXRpb24gKiAyOworICAgIG1f
c291cmNlUmVjdCA9IEludFJlY3QoMCwgMCwgbGF5ZXJBcmVhLndpZHRoKCkgKyBmcmFtZVNpemUs
IGxheWVyQXJlYS5oZWlnaHQoKSArIGZyYW1lU2l6ZSk7CisgICAgbV9sYXllck9yaWdpbiA9IEZs
b2F0UG9pbnQobGF5ZXJGbG9hdFJlY3QueCgpLCBsYXllckZsb2F0UmVjdC55KCkpOworICAgIHJl
dHVybiBlbmNsb3NpbmdJbnRSZWN0KGxheWVyRmxvYXRSZWN0KTsKK30KKyNlbmRpZgorCisjaWYg
UExBVEZPUk0oQ0FJUk8pCiB2b2lkIENvbnRleHRTaGFkb3c6OmNhbGN1bGF0ZUxheWVyQm91bmRp
bmdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVj
dCkKIHsKICAgICAvLyBDYWxjdWxhdGUgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBibHVycmVkIGxh
eWVyLgpAQCAtMTczLDUgKzIyMiw2IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6Y2FsY3VsYXRlTGF5
ZXJCb3VuZGluZ1JlY3QoY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0CiAgICAgICAg
ICAgICBtX2xheWVyUmVjdC5pbmZsYXRlKG1fdHlwZSA9PSBCbHVyU2hhZG93ID8gbV9ibHVyRGlz
dGFuY2UgOiAwKTsKICAgICB9CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmggYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaAppbmRleCBmYTc3OGFmYmNj
ZGRmYWZjM2Y0MGNkMDIzY2I3YWQ0ZjQ1MWVkNTJjLi5jMDc3NmJiZWEwNjYwYjNkMDhiZjZkZTFh
NDI4NGQ0ZjgxODYzMWI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bnRleHRTaGFkb3cuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFk
b3cuaApAQCAtMTA2LDI3ICsxMDYsNDEgQEAgcHVibGljOgogICAgIFBsYXRmb3JtQ29udGV4dCBi
ZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFy
ZWEpOwogICAgIHZvaWQgZW5kU2hhZG93TGF5ZXIoUGxhdGZvcm1Db250ZXh0KTsKICAgICBzdGF0
aWMgdm9pZCBwdXJnZVNjcmF0Y2hCdWZmZXIoKTsKKyAgICB2b2lkIHNldFNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKGJvb2wgZW5hYmxlKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBlbmFi
bGU7IH0KKyAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29uc3QgeyByZXR1cm4g
bV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQogI2lmIFBMQVRGT1JNKENBSVJPKQogICAgIHZv
aWQgZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiByZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0UmFkaXVzID0gSW50U2l6ZSgpLCBjb25zdCBJ
bnRTaXplJiB0b3BSaWdodFJhZGl1cyA9IEludFNpemUoKSwgY29uc3QgSW50U2l6ZSYgYm90dG9t
TGVmdFJhZGl1cyA9IEludFNpemUoKSwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMg
PSBJbnRTaXplKCkpOwogI2VuZGlmCi0KICNpZiBQTEFURk9STShRVCkKLSAgICBRUG9pbnRGIG9m
ZnNldCgpIHsgcmV0dXJuIFFQb2ludEYobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQuaGVpZ2h0
KCkpOyB9CisgICAgUVBvaW50RiBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBRUG9pbnRGKG1fb2Zm
c2V0LndpZHRoKCksIG1fb2Zmc2V0LmhlaWdodCgpKTsgfQogI2VuZGlmCiAKIAogcHJpdmF0ZToK
LSAgICBJbnRSZWN0IG1fbGF5ZXJSZWN0OworICAgIC8vIEJ1ZmZlciB0byB3aGVyZSB0aGUgdGVt
cG9yYXJ5IHNoYWRvdyB3aWxsIGJlIGRyYXduIHRvLgogICAgIFBsYXRmb3JtSW1hZ2UgbV9sYXll
ckltYWdlOworICAgIC8vIENvbnRleHQgdXNlZCB0byBwYWludCB0aGUgc2hhZG93IHRvIHRoZSBs
YXllciBpbWFnZS4KICAgICBQbGF0Zm9ybUNvbnRleHQgbV9sYXllckNvbnRleHQ7Ci0KKyNpZiBQ
TEFURk9STShRVCkKKyAgICAvLyBTdWItcmVjdCBvZiBtX2xheWVySW1hZ2UgdGhhdCBjb250YWlu
cyB0aGUgc2hhZG93IHBpeGVscy4KKyAgICBGbG9hdFJlY3QgbV9zb3VyY2VSZWN0OworICAgIC8v
IFRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgYm91bmRpbmcgcmVjdCB3aGVyZSB0aGUgc2hhZG93IGlt
YWdlIG5lZWRzIHRvIGJlIGRyYXduLgorICAgIEZsb2F0UG9pbnQgbV9sYXllck9yaWdpbjsKKyNl
bmRpZgorI2lmIFBMQVRGT1JNKENBSVJPKQorICAgIC8vIEVuY2xvc2luZyBpbnQgcmVjdCB3aGVy
ZSBzaGFkb3cgbmVlZHMgdG8gYmUgZHJhd24gdG8gdXNpbmcgdGhlIGxheWVyIGNvbnRleHQuCisg
ICAgSW50UmVjdCBtX2xheWVyUmVjdDsKICAgICAvLyBVc2VkIGZvciByZWZlcmVuY2Ugd2hlbiBj
YW52YXMgc2NhbGUoeCx5KSB3YXMgY2FsbGVkLgogICAgIEZsb2F0UmVjdCBtX3Vuc2NhbGVkTGF5
ZXJSZWN0OworI2VuZGlmCisgICAgYm9vbCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogCiAg
ICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYgaW1h
Z2VTaXplLCBpbnQgc3RyaWRlKTsKLSAgICB2b2lkIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAj
aWYgUExBVEZPUk0oQ0FJUk8pCisgICAgdm9pZCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChj
b25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwogICAg
IHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKFBsYXRmb3JtQ29udGV4dCBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0UmFkaXVz
LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVm
dFJhZGl1cywgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMsIGZsb2F0IGFscGhhKTsK
KyNlbHNlCisgICAgSW50UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBQbGF0
Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCk7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvQ29udGV4dFNoYWRvd1F0LmNwcAppbmRleCBmN2M3MGY2OTViYzBmYzQyNTBjYzliZGMzNWU5
ZDVlOGU2M2Y5NzQ0Li41NmUwNjczMTEyYjRiZDNhMzM2MWJkODU3YmJhODJmOWIwN2JjOTZjIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3Bw
CkBAIC0xMTQsMjQgKzExNCwyNSBAQCBQbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRvdzo6YmVn
aW5TaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCwgY29uc3QgRmxvYXRSZQogICAgIGVsc2UK
ICAgICAgICAgY2xpcFJlY3QgPSBwLT50cmFuc2Zvcm0oKS5pbnZlcnRlZCgpLm1hcFJlY3QocC0+
d2luZG93KCkpOwogCi0gICAgbV91bnNjYWxlZExheWVyUmVjdCA9IGxheWVyQXJlYTsKLSAgICBj
YWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChsYXllckFyZWEsIEludFJlY3QoY2xpcFJlY3QueCgp
LCBjbGlwUmVjdC55KCksIGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKSk7Cisg
ICAgLy8gU2V0IG1fbGF5ZXJPcmlnaW4gYW5kIG1fc291cmNlUmVjdC4KKyAgICBJbnRSZWN0IGNs
aXAoY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0
LmhlaWdodCgpKTsKKyAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRp
bmdSZWN0KHAsIGxheWVyQXJlYSwgY2xpcCk7CiAKICAgICAvLyBEb24ndCBwYWludCBpZiB3ZSBh
cmUgdG90YWxseSBvdXRzaWRlIHRoZSBjbGlwIHJlZ2lvbi4KLSAgICBpZiAobV9sYXllclJlY3Qu
aXNFbXB0eSgpKQorICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
MDsKIAogICAgIFNoYWRvd0J1ZmZlciogc2hhZG93QnVmZmVyID0gc2NyYXRjaFNoYWRvd0J1ZmZl
cigpOwotICAgIFFJbWFnZSogc2hhZG93SW1hZ2UgPSBzaGFkb3dCdWZmZXItPnNjcmF0Y2hJbWFn
ZShtX2xheWVyUmVjdC5zaXplKCkpOworICAgIFFJbWFnZSogc2hhZG93SW1hZ2UgPSBzaGFkb3dC
dWZmZXItPnNjcmF0Y2hJbWFnZShsYXllclJlY3Quc2l6ZSgpKTsKICAgICBtX2xheWVySW1hZ2Ug
PSBRSW1hZ2UoKnNoYWRvd0ltYWdlKTsKIAogICAgIG1fbGF5ZXJDb250ZXh0ID0gbmV3IFFQYWlu
dGVyOwogICAgIG1fbGF5ZXJDb250ZXh0LT5iZWdpbigmbV9sYXllckltYWdlKTsKICAgICBtX2xh
eWVyQ29udGV4dC0+c2V0Rm9udChwLT5mb250KCkpOwotICAgIG1fbGF5ZXJDb250ZXh0LT50cmFu
c2xhdGUobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQuaGVpZ2h0KCkpOwogCi0gICAgLy8gVGhl
IG9yaWdpbiBpcyBub3cgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgc2NyYXRjaCBpbWFnZS4K
LSAgICBtX2xheWVyQ29udGV4dC0+dHJhbnNsYXRlKC1tX2xheWVyUmVjdC54KCksIC1tX2xheWVy
UmVjdC55KCkpOworICAgIC8vIFNldCB0aGUgb3JpZ2luIGFzIHRoZSB0b3AgbGVmdCBjb3JuZXIg
b2YgdGhlIHNjcmF0Y2ggaW1hZ2UuCisgICAgY29uc3QgaW50IGZyYW1lU2l6ZSA9IChtX3NvdXJj
ZVJlY3Qud2lkdGgoKSAtIGxheWVyQXJlYS53aWR0aCgpKSAvIDI7CisgICAgbV9sYXllckNvbnRl
eHQtPnRyYW5zbGF0ZSgtbGF5ZXJBcmVhLngoKSArIGZyYW1lU2l6ZSwgLWxheWVyQXJlYS55KCkg
KyBmcmFtZVNpemUpOwogCiAgICAgcmV0dXJuIG1fbGF5ZXJDb250ZXh0OwogfQpAQCAtMTU1LDEz
ICsxNTYsNyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKFBsYXRmb3JtQ29u
dGV4dCBwKQogICAgICAgICBwLmVuZCgpOwogICAgIH0KIAotICAgIGNvbnN0IFFUcmFuc2Zvcm0g
dHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0gICAgaWYgKHRyYW5zZm9ybS5pc1NjYWxpbmco
KSkgewotICAgICAgICBxcmVhbCB4ID0gbV91bnNjYWxlZExheWVyUmVjdC54KCkgKyBtX29mZnNl
dC53aWR0aCgpICAvIHRyYW5zZm9ybS5tMTEoKSAtIG1fYmx1ckRpc3RhbmNlOwotICAgICAgICBx
cmVhbCB5ID0gbV91bnNjYWxlZExheWVyUmVjdC55KCkgKyBtX29mZnNldC5oZWlnaHQoKSAvIHRy
YW5zZm9ybS5tMjIoKSAtIG1fYmx1ckRpc3RhbmNlOwotICAgICAgICBwLT5kcmF3SW1hZ2UoUVBv
aW50Rih4LCB5KSwgbV9sYXllckltYWdlKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcC0+ZHJhd0lt
YWdlKG1fbGF5ZXJSZWN0LnRvcExlZnQoKSwgbV9sYXllckltYWdlKTsKKyAgICBwLT5kcmF3SW1h
Z2UobV9sYXllck9yaWdpbiwgbV9sYXllckltYWdlLCBtX3NvdXJjZVJlY3QpOwogCiAgICAgc2Ny
YXRjaFNoYWRvd0J1ZmZlcigpLT5zY2hlZHVsZVB1cmdlKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCmluZGV4IDcyN2ZiZjEy
OWQ1NWYyYzlhZTA4ZjViNDM2NmJjODFhNTk0ODM2OTQuLjY2YTkxMzYyYTI1YzE3ZmQ5ODk2NmY4
NmRmN2NmNDE5MWE2ZDFlODkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCkBAIC01NCw3ICs1NCw2IEBACiAjaW5jbHVkZSAiVHJh
bnNwYXJlbmN5TGF5ZXIuaCIKIAogI2luY2x1ZGUgPFFCcnVzaD4KLSNpbmNsdWRlIDxRRGVidWc+
CiAjaW5jbHVkZSA8UUdyYWRpZW50PgogI2luY2x1ZGUgPFFQYWludERldmljZT4KICNpbmNsdWRl
IDxRUGFpbnRFbmdpbmU+CkBAIC0xNzYsNiArMTc1LDIyIEBAIHN0YXRpYyBpbmxpbmUgUXQ6OkZp
bGxSdWxlIHRvUXRGaWxsUnVsZShXaW5kUnVsZSBydWxlKQogICAgIHJldHVybiBRdDo6T2RkRXZl
bkZpbGw7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBtdXN0VXNlQ29udGV4dFNoYWRvdyhRUGFp
bnRlciogcGFpbnRlciwgQ29udGV4dFNoYWRvdyogc2hhZG93KQoreworICAgIGlmIChzaGFkb3ct
Pm1fdHlwZSA9PSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93KQorICAgICAgICAvLyBXZSBjYW4n
dCBhdm9pZCBDb250ZXh0U2hhZG93LCBzaW5jZSB0aGUgc2hhZG93IGhhcyBibHVyLgorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIXNoYWRvdy0+c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMo
KSkKKyAgICAgICAgLy8gV2UgY2FuIGF2b2lkIENvbnRleHRTaGFkb3cgYW5kIG9wdGltaXplLCBz
aW5jZSB3ZSdyZSBub3QgZHJhd2luZyBvbiBhIGNhbnZhcyBhbmQgYm94CisgICAgICAgIC8vIHNo
YWRvd3MgYXJlIGFmZmVjdGVkIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAocGFpbnRlci0+dHJhbnNmb3JtKCkuaXNJZGVudGl0eSgp
KQorICAgICAgICAvLyBXZSBjYW4gYXZvaWQgQ29udGV4dFNoYWRvdywgc2luY2UgdGhlcmUgYXJl
IG5vIHRyYW5zZm9ybWF0aW9ucyB0byBhcHBseSB0byB0aGUgY2FudmFzLgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgLy8gT3RoZXJ3aXNlLCBubyBjaGFuY2UgYXZvaWRpbmcgQ29udGV4dFNo
YWRvdy4KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICBHcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGUoUVBhaW50ZXIqLCBjb25zdCBRQ29sb3ImIGluaXRpYWxTb2xp
ZENvbG9yKTsKQEAgLTUwOSwzMSArNTI0LDIxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxs
UGF0aChjb25zdCBQYXRoJiBwYXRoKQogCiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsK
ICAgICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotICAgICAg
ICBpZiAoc2hhZG93LT5tX3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdwotICAgICAg
ICAgICAgJiYgIW1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybiAmJiAhbV9jb21tb24tPnN0YXRl
LmZpbGxHcmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRv
dykKKyAgICAgICAgICAgIHx8IG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybgorICAgICAgICAg
ICAgfHwgbV9jb21tb24tPnN0YXRlLmZpbGxHcmFkaWVudCkKICAgICAgICAgewotICAgICAgICAg
ICAgUVBvaW50RiBvZmZzZXQgPSBzaGFkb3ctPm9mZnNldCgpOwotICAgICAgICAgICAgY29uc3Qg
UVRyYW5zZm9ybSYgdHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0gICAgICAgICAgICBpZiAo
dHJhbnNmb3JtLmlzU2NhbGluZygpKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgc2NhbGluZyBp
cyByZXF1aXJlZCwgZmluZCB0aGUgbmV3IGNvb3JkIGZvciBzaGFkb3cgb3JpZ2luLAotICAgICAg
ICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIHJlbGF0aXZlIG9mZnNldCB0byBpdHMgc2hhcGUgaXMg
a2VwdC4KLSAgICAgICAgICAgICAgICBRUG9pbnRGIHRyYW5zbGF0ZWRPZmZzZXQob2Zmc2V0Lngo
KSAvIHRyYW5zZm9ybS5tMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb2Zmc2V0LnkoKSAvIHRyYW5zZm9ybS5tMjIoKSk7Ci0gICAgICAgICAgICAgICAgcGxh
dGZvcm1QYXRoLnRyYW5zbGF0ZSh0cmFuc2xhdGVkT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBw
LT5maWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihzaGFkb3ctPm1fY29sb3IpKTsKLSAgICAg
ICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKC10cmFuc2xhdGVkT2Zmc2V0KTsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG9mZnNldCk7
Ci0gICAgICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3Ioc2hhZG93
LT5tX2NvbG9yKSk7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZzZXQpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRv
d1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcGxhdGZvcm1QYXRoLmNvbnRy
b2xQb2ludFJlY3QoKSk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAg
ICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29t
cG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+Zmls
bFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xvcikpOwogICAg
ICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBRUG9pbnRGIG9mZnNldCA9IHNoYWRvdy0+b2Zm
c2V0KCk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKKyAgICAgICAgICAgIHAt
PmZpbGxQYXRoKHBsYXRmb3JtUGF0aCwgUUNvbG9yKHNoYWRvdy0+bV9jb2xvcikpOworICAgICAg
ICAgICAgcC0+dHJhbnNsYXRlKC1vZmZzZXQpOwogICAgICAgICB9CiAKICAgICB9CkBAIC01NjAs
MjggKzU2NSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRo
JiBwYXRoKQogCiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAgQ29udGV4
dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotCi0gICAgICAgIGlmIChzaGFkb3ct
Pm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93Ci0gICAgICAgICAgICAmJiAhbV9j
b21tb24tPnN0YXRlLnN0cm9rZVBhdHRlcm4gJiYgIW1fY29tbW9uLT5zdGF0ZS5zdHJva2VHcmFk
aWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykKKyAgICAg
ICAgICAgIHx8IG1fY29tbW9uLT5zdGF0ZS5zdHJva2VQYXR0ZXJuCisgICAgICAgICAgICB8fCBt
X2NvbW1vbi0+c3RhdGUuc3Ryb2tlR3JhZGllbnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFFQ
ZW4gc2hhZG93UGVuKHBlbik7Ci0gICAgICAgICAgICBzaGFkb3dQZW4uc2V0Q29sb3IobV9kYXRh
LT5zaGFkb3cubV9jb2xvcik7Ci0gICAgICAgICAgICBRUG9pbnRGIG9mZnNldCA9IHNoYWRvdy0+
b2Zmc2V0KCk7Ci0gICAgICAgICAgICBjb25zdCBRVHJhbnNmb3JtJiB0cmFuc2Zvcm0gPSBwLT50
cmFuc2Zvcm0oKTsKLSAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5nKCkpIHsKLSAg
ICAgICAgICAgICAgICAvLyBJZiBzY2FsaW5nIGlzIHJlcXVpcmVkLCBmaW5kIHRoZSBuZXcgY29v
cmQgZm9yIHNoYWRvdyBvcmlnaW4sCi0gICAgICAgICAgICAgICAgLy8gc28gdGhhdCB0aGUgcmVs
YXRpdmUgb2Zmc2V0IHRvIGl0cyBzaGFwZSBpcyBrZXB0LgotICAgICAgICAgICAgICAgIFFQb2lu
dEYgdHJhbnNsYXRlZE9mZnNldChvZmZzZXQueCgpIC8gdHJhbnNmb3JtLm0xMSgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQueSgpIC8gdHJhbnNmb3Jt
Lm0yMigpKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKHRyYW5zbGF0
ZWRPZmZzZXQpOwotICAgICAgICAgICAgICAgIHAtPnN0cm9rZVBhdGgocGxhdGZvcm1QYXRoLCBz
aGFkb3dQZW4pOwotICAgICAgICAgICAgICAgIHBsYXRmb3JtUGF0aC50cmFuc2xhdGUoLXRyYW5z
bGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwLT50
cmFuc2xhdGUob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBwLT5zdHJva2VQYXRoKHBsYXRmb3Jt
UGF0aCwgc2hhZG93UGVuKTsKLSAgICAgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW9mZnNldCk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBGbG9hdFJlY3Qg
Ym91bmRpbmdSZWN0ID0gcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKTsKICAgICAgICAg
ICAgIGJvdW5kaW5nUmVjdC5pbmZsYXRlKHBlbi5taXRlckxpbWl0KCkgKyBwZW4ud2lkdGhGKCkp
OwogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hh
ZG93TGF5ZXIocCwgYm91bmRpbmdSZWN0KTsKQEAgLTU5MCw2ICs1NzcsMTMgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgICAg
ICBzaGFkb3dQYWludGVyLT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgcGVuKTsKICAgICAgICAg
ICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgUVBlbiBzaGFkb3dQZW4ocGVuKTsKKyAgICAgICAgICAg
IHNoYWRvd1Blbi5zZXRDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9yKTsKKyAgICAgICAgICAg
IFFQb2ludEYgb2Zmc2V0ID0gc2hhZG93LT5vZmZzZXQoKTsKKyAgICAgICAgICAgIHAtPnRyYW5z
bGF0ZShvZmZzZXQpOworICAgICAgICAgICAgcC0+c3Ryb2tlUGF0aChwbGF0Zm9ybVBhdGgsIHNo
YWRvd1Blbik7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW9mZnNldCk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTcwOSw3ICs3MDMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICBwLT5maWxsUmVjdChub3JtYWxpemVk
UmVjdCwgYnJ1c2gpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChtX2RhdGEtPmhhc1NoYWRv
dygpKSB7Ci0gICAgICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgPT0gQ29udGV4dFNoYWRvdzo6
Qmx1clNoYWRvdykgeworICAgICAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNo
YWRvdykpIHsKICAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRv
dy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAgICAgICAg
aWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+
c2V0T3BhY2l0eShzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5tX2NvbG9yLmFscGhhKCkpIC8g
MjU1KTsKQEAgLTcxNywxNyArNzExLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5k
U2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAvLyBTb2xpZCByZWN0YW5nbGUgZmlsbCB3aXRoIG5vIGJsdXIgc2hh
ZG93IGNhbiBiZSBkb25lIGZhc3RlcgotICAgICAgICAgICAgICAgIC8vIHdpdGhvdXQgdXNpbmcg
dGhlIHNoYWRvdyBsYXllciBhdCBhbGwuCisgICAgICAgICAgICAgICAgLy8gU29saWQgcmVjdGFu
Z2xlIGZpbGwgd2l0aCBubyBibHVyIHNoYWRvdyBvciB0cmFuc2Zvcm1hdGlvbnMgYXBwbGllZCBj
YW4gYmUgZG9uZQorICAgICAgICAgICAgICAgIC8vIGZhc3RlciB3aXRob3V0IHVzaW5nIHRoZSBz
aGFkb3cgbGF5ZXIgYXQgYWxsLgogICAgICAgICAgICAgICAgIFFDb2xvciBzaGFkb3dDb2xvciA9
IHNoYWRvdy0+bV9jb2xvcjsKICAgICAgICAgICAgICAgICBzaGFkb3dDb2xvci5zZXRBbHBoYUYo
c2hhZG93Q29sb3IuYWxwaGFGKCkgKiBwLT5icnVzaCgpLmNvbG9yKCkuYWxwaGFGKCkpOwotICAg
ICAgICAgICAgICAgIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSA9IHAtPnRyYW5zZm9ybSgp
OwotICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5nKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJhbnNsYXRlZChzdGF0aWNf
Y2FzdDxxcmVhbD4oc2hhZG93LT5vZmZzZXQoKS54KCkpIC8gdHJhbnNmb3JtLm0xMSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PHFyZWFsPihzaGFkb3ctPm9mZnNldCgpLnkoKSAgLyB0cmFuc2Zvcm0ubTIyKCkp
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93Q29sb3IpOwotICAgICAg
ICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBwLT5maWxsUmVjdChub3JtYWxp
emVkUmVjdC50cmFuc2xhdGVkKHNoYWRvdy0+b2Zmc2V0KCkpLCBzaGFkb3dDb2xvcik7CisgICAg
ICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJhbnNsYXRlZChzaGFkb3ct
Pm9mZnNldCgpKSwgc2hhZG93Q29sb3IpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAg
LTc0NywxOCArNzM1LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAKICAgICBpZiAobV9k
YXRhLT5oYXNTaGFkb3coKSkgewogICAgICAgICBDb250ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250
ZXh0U2hhZG93KCk7Ci0KLSAgICAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFk
b3c6OkJsdXJTaGFkb3cpIHsKLSAgICAgICAgICAgIC8vIFdlIGRvIG5vdCBuZWVkIGFueSBsYXll
ciBmb3Igc2ltcGxlIHNoYWRvdy4KLSAgICAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRS
ZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvdy0+bV9jb2xvcik7Ci0gICAg
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtdXN0VXNlQ29udGV4dFNoYWRvdyhwLCBzaGFkb3cp
KSB7CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5T
aGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFp
bnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9k
ZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hh
ZG93UGFpbnRlci0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIHNoYWRvdy0+bV9jb2xvcik7CiAg
ICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwKTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1h
bGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvdy0+bV9jb2xvcik7
CiAgICAgfQogCiAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIG1fZGF0YS0+c29saWRD
b2xvcik7CkBAIC03NzQsMTkgKzc1OSwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJv
dW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZgogICAg
IFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkp
IHsKICAgICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotCi0g
ICAgICAgIGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93KSB7
Ci0gICAgICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCBhbnkgbGF5ZXIgZm9yIHNpbXBsZSBzaGFk
b3cuCi0gICAgICAgICAgICBwLT50cmFuc2xhdGUobV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOwot
ICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGF0aC5wbGF0Zm9ybVBhdGgoKSwgUUNvbG9yKG1fZGF0
YS0+c2hhZG93Lm1fY29sb3IpKTsKLSAgICAgICAgICAgIHAtPnRyYW5zbGF0ZSgtbV9kYXRhLT5z
aGFkb3cub2Zmc2V0KCkpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAobXVzdFVzZUNv
bnRleHRTaGFkb3cocCwgc2hhZG93KSkgewogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1Bh
aW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcmVjdCk7CiAgICAgICAgICAgICBp
ZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENv
bXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAg
ICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFBhdGgocGF0aC5wbGF0Zm9ybVBhdGgoKSwgUUNv
bG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKICAgICAgICAgICAgICAgICBzaGFkb3ctPmVu
ZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgcC0+dHJhbnNsYXRlKG1fZGF0YS0+c2hhZG93Lm9mZnNldCgpKTsKKyAgICAgICAgICAg
IHAtPmZpbGxQYXRoKHBhdGgucGxhdGZvcm1QYXRoKCksIFFDb2xvcihtX2RhdGEtPnNoYWRvdy5t
X2NvbG9yKSk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW1fZGF0YS0+c2hhZG93Lm9mZnNl
dCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBwLT5maWxsUGF0aChwYXRoLnBsYXRmb3JtUGF0
aCgpLCBRQ29sb3IoY29sb3IpKTsKQEAgLTk3NCw5ICs5NTcsMTAgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgYmx1
ciwgY29uc3QKICAgICAgICAgLy8gV2UgZmxpcCB0aGUgaGVpZ2h0IHNpbmNlIENHIGFuZCBIVE1M
NSBDYW52YXMgaGF2ZSBvcHBvc2l0ZSBZIGF4aXMKICAgICAgICAgbV9jb21tb24tPnN0YXRlLnNo
YWRvd09mZnNldCA9IEZsb2F0U2l6ZShzaXplLndpZHRoKCksIC1zaXplLmhlaWdodCgpKTsKICAg
ICAgICAgbV9kYXRhLT5zaGFkb3cgPSBDb250ZXh0U2hhZG93KGNvbG9yLCBibHVyLCBGbG9hdFNp
emUoc2l6ZS53aWR0aCgpLCAtc2l6ZS5oZWlnaHQoKSkpOwotICAgIH0gZWxzZSB7CisgICAgfSBl
bHNlCiAgICAgICAgIG1fZGF0YS0+c2hhZG93ID0gQ29udGV4dFNoYWRvdyhjb2xvciwgYmx1ciwg
RmxvYXRTaXplKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOwotICAgIH0KKworICAgIG1f
ZGF0YS0+c2hhZG93LnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKG1fY29tbW9uLT5zdGF0ZS5z
aGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVh
clBsYXRmb3JtU2hhZG93KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76509</attachid>
            <date>2010-12-14 00:31:58 -0800</date>
            <delta_ts>2010-12-14 20:10:27 -0800</delta_ts>
            <desc>Resolve &quot;m_common-&gt;state&quot; -&gt; &quot;m_state&quot; conflict</desc>
            <filename>bug-50422-20101214003156.patch</filename>
            <type>text/plain</type>
            <size>35332</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzYzYwMTBkYzczY2NlZmVmNjc0YmVmZTgzYTc4YzVlOWY2YjgyNDA2Li5lOGJiN2Jh
ODAyNGMwMWRjNmIyYWU2ZDEwZTdkZjhjYTcxNjBmZmVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMTAtMTItMTMgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBDYW52YXMgc2hh
ZG93IG9mZnNldCBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IGFueSB0cmFuc2Zvcm1hdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0MjIKKwor
ICAgICAgICBPbiBhIGNhbnZhcyBjb250ZXh0LCBzaGFkb3dzIGFyZSBjdXJyZW50bHkgYWZmZWN0
ZWQgYnkgYWxsCisgICAgICAgIHRyYW5zZm9ybWF0aW9ucyBleGNlcHQgc2NhbGluZy4gQWNjb3Jk
aW5nIHRvIHRoZSBzcGVjOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2Vi
LWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbCNzaGFk
b3dzCisKKyAgICAgICAgIlRoZSBzaGFkb3dPZmZzZXRYIGFuZCBzaGFkb3dPZmZzZXRZIGF0dHJp
YnV0ZXMgc3BlY2lmeSB0aGUgZGlzdGFuY2UKKyAgICAgICAgdGhhdCB0aGUgc2hhZG93IHdpbGwg
YmUgb2Zmc2V0IGluIHRoZSBwb3NpdGl2ZSBob3Jpem9udGFsIGFuZCBwb3NpdGl2ZQorICAgICAg
ICB2ZXJ0aWNhbCBkaXN0YW5jZSByZXNwZWN0aXZlbHkuIFRoZWlyIHZhbHVlcyBhcmUgaW4gY29v
cmRpbmF0ZSBzcGFjZQorICAgICAgICB1bml0cy4gVGhleSBhcmUgbm90IGFmZmVjdGVkIGJ5IHRo
ZSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4iCisKKyAgICAgICAgTk9URTogdGhpcyBh
cHBsaWVzIG9ubHkgdG8gY2FudmFzLCBub3QgdG8gYm94IHNoYWRvd3MuCisKKyAgICAgICAgQWRk
IG5ldyB0ZXN0IHRvIGVuc3VyZSB0aGF0IHNoYWRvd3MgYXJlIGNvcnJlY3RseSB0cmFuc2Zvcm1l
ZCBrZWVwaW5nCisgICAgICAgIHRoZSByZWxhdGl2ZSBvZmZzZXQgdG8gdGhlIHNoYXBlLgorCisg
ICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVj
dC1zaGFkb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52
YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cuanM6Cisg
ICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUmVjdC1z
aGFkb3cuanM6CisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2Fs
ZS1zdHJva2VQYXRoLXNoYWRvdy5qczogTm93IHVzaW5nCisgICAgICAgICAgYSBsaW5lV2lkdGgg
PiAxIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHRlc3QgYW5kIG1vcmUgZmFpciBhbW9uZyBhbGwKKyAg
ICAgICAgICBwb3J0cywgc2luY2UgdGhlcmUgY2FuIGJlIGRpZmZlcmVudCB0cmFuc2Zvcm1hdGlv
biBzbW9vdGhuZXNzIG9yCisgICAgICAgICAgYWxpYXNpbmcgc2V0dGluZ3MuCisgICAgICAgICog
ZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRv
dy5qczogQWRkZWQuCisKIDIwMTAtMTItMTMgIERhaSBNaWt1cnViZSAgPGRtaWt1cnViZUBnb29n
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQ
YXRoLXNoYWRvdy1leHBlY3RlZC50eHQKaW5kZXggZTU2MjAxZjczODdlNDYyZjc5MjI1ZTY1Zjhh
MzQwMWUyZTMyMzZmZS4uYTMzN2M0YjYzZmYxZGRmZWVkNDQ4OGUzNTFmZmRhZTE0OWVhODUxNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBh
dGgtc2hhZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52
YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0CkBAIC0zMCwyNyArMzAsMjcg
QEAgUEFTUyBkWzNdIGlzIGFyb3VuZCA3NgogUEFTUyBkWzBdIGlzIDI1NQogUEFTUyBkWzFdIGlz
IDAKIFBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDIwCitQQVNTIGRbM10gaXMg
YXJvdW5kIDE0OQogUEFTUyBkWzBdIGlzIDI1NQogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBp
cyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDIyCitQQVNTIGRbM10gaXMgYXJvdW5kIDExNgogUEFT
UyBkWzBdIGlzIDI1NQogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10g
aXMgYXJvdW5kIDI4CitQQVNTIGRbM10gaXMgYXJvdW5kIDExNQogUEFTUyBkWzBdIGlzIDI1NQog
UEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDIyCitQ
QVNTIGRbM10gaXMgYXJvdW5kIDcwCiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAog
UEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMTUKK1BBU1MgZFszXSBpcyBhcm91
bmQgNzAKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAot
UEFTUyBkWzNdIGlzIGFyb3VuZCAxNworUEFTUyBkWzNdIGlzIGFyb3VuZCA2OQogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3ctZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmls
bFJlY3Qtc2hhZG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTNiODkxMmYwZDJhN2YwMzkx
OTYzY2Y2OWMwYjc0ZTZiNDMxOTRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDU3IEBACitFbnN1cmUgY29ycmVjdCBiZWhhdmlvciBvZiBjYW52YXMgd2l0aCBm
aWxsUmVjdCtzaGFkb3cgYWZ0ZXIgdHJhbnNsYXRpb24rcm90YXRpb24rc2NhbGluZy4gQSBibHVl
IGFuZCByZWQgY2hlY2tlcmVkIHBhdHRlcm4gc2hvdWxkIGJlIGRpc3BsYXllZC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAw
CitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIDI1NQorUEFTUyBkWzBdIGlzIDI1NQorUEFT
UyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgMjU1CitQQVNTIGRbMF0g
aXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyAyNTUK
K1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBk
WzNdIGlzIGFyb3VuZCAxMjcKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNT
IGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIGFyb3VuZCAxMjcKK1BBU1MgZFswXSBpcyAyNTUKK1BB
U1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIGFyb3VuZCAxMjcKK1BB
U1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNd
IGlzIGFyb3VuZCAxMDYKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRb
Ml0gaXMgMAorUEFTUyBkWzNdIGlzIGFyb3VuZCAxMDYKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1Mg
ZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIGFyb3VuZCA4MworUEFTUyBk
WzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMg
YXJvdW5kIDM2CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlz
IDAKK1BBU1MgZFszXSBpcyBhcm91bmQgMzYKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBp
cyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIGFyb3VuZCAzNgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hh
ZG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZjNGU5YTg0NGU3YmY2N2ZmZWU1ZWJmNThkNTBkYmY0MmE3
OGE5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10
cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2FudmFzLXRyYW5z
Zm9ybXMtZmlsbFJlY3Qtc2hhZG93LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2Nh
bGUtZmlsbFBhdGgtc2hhZG93LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRl
c3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cuanMKaW5kZXggMDUyODZmNTMyOGI1ZTU5
OTgzMjQzNTA3NWRiYmYxZWMxN2U1YTIwNy4uM2NhMzMyMTk5MjhkZGQxYmYyMDIxYzRhMDI0ZDcz
MDhiY2I4NjUzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRl
c3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cuanMKQEAg
LTc5LDEzICs3OSwxMyBAQCBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScs
ICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEo
Mjk5LCAyOTUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyOTgsIDI5NSwgMSwg
MSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcp
Owogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQg
PSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFn
ZURhdGEoMjAwLCAyOTgsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNo
b3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKQEAgLTk4LDEzICs5
OCwxMyBAQCBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBz
aG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTks
IDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgNDA1LCAxLCAxKS5k
YXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBz
aG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1k
ID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1h
Z2VEYXRhKDIwNSwgNDk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBz
aG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxS
ZWN0LXNoYWRvdy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52
YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzCmluZGV4IDk5YTFlNTk0YmQ1OWY3MzY3ZjNjMzBk
ZWExNjUxZTMyZjNkNGRlNmUuLmY0OTVjOTEwNTViYmExZGNiMTQ2ODMyZTI4MTYzMDc0YTA0NWU4
MjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52
YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzCkBAIC01OCwxMyAr
NTgsMTMgQEAgc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwog
c2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgMjk1
LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCAyOTgsIDEsIDEpLmRhdGE7
CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3Vs
ZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4Lmdl
dEltYWdlRGF0YSgyMDAsIDI5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIw
MSwgMjk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgn
ZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CkBAIC03NywxMyArNzcsMTMgQEAg
c2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVB
cm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCA0MDUsIDEs
IDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyOTgsIDQwNSwgMSwgMSkuZGF0YTsKIHNo
b3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUo
J2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5n
ZXRJbWFnZURhdGEoMjA1LCA0OTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgy
MDUsIDQ5OCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUo
J2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNo
YWRvdy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2Nh
bGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMKaW5kZXggNTE5OGQ5NDE1MTdkYWI5MmJjMjg5MWM4Mzc0
ZjM1YmExYTg5ZDU3OS4uOTFiOTI3Zjk1ZmE4N2RlNWY5ZDY1NWYzYjJmZmQyZjRiNWRhZDUzNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1z
Y2FsZS1zdHJva2VQYXRoLXNoYWRvdy5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9z
Y3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzCkBAIC0zNSw2ICsz
NSw3IEBAIGN0eC5zY2FsZSgyLCAyKTsKIGN0eC5zaGFkb3dPZmZzZXRYID0gMTAwOwogY3R4LnNo
YWRvd09mZnNldFkgPSAxMDA7CiBjdHguc3Ryb2tlU3R5bGUgPSAncmdiYSgwLCAwLCAyNTUsIDEp
JzsKK2N0eC5saW5lV2lkdGggPSA1OwogCiBjdHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAs
IDAsIDEuMCknOwogY3R4LmJlZ2luUGF0aCgpOwpAQCAtNzYsNzkgKzc3LDc5IEBAIGN0eC5zdHJv
a2UoKTsKIHZhciBkOyAvLyBpbWFnZURhdGEuZGF0YQogCiAvLyBWZXJpZnkgc29saWQgc2hhZG93
LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyMDUsIDEsIDEpLmRhdGE7CitkID0gY3R4Lmdl
dEltYWdlRGF0YSgyNTAsIDIwMCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScp
Owogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxk
QmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgMjk1LCAxLCAx
KS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMzAwLCAyOTAsIDEsIDEpLmRhdGE7CiBzaG91
bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdk
WzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4LmdldEltYWdl
RGF0YSgyMDEsIDI5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjUw
LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScs
ICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsK
IAogLy8gVmVyaWZ5IHNvbGlkIGFscGhhIHNoYWRvdy4KLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIw
MCwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAxLCA0MDUsIDEsIDEp
LmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsK
IHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAK
LWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJ
bWFnZURhdGEoMjAxLCA1MDAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsK
IHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJl
QXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk5LCAx
LCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMzAwLCA0OTksIDEsIDEpLmRhdGE7CiBz
aG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJl
KCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKIC8vIFZlcmlm
eSBibHVycnkgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMzk0LCAyMDgsIDEsIDEpLmRh
dGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0MDQsIDIxMCwgMSwgMSkuZGF0YTsKIHNob3VsZEJl
KCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0n
LCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjAnKTsKK3Nob3VsZEJlQXJvdW5kKCdk
WzNdJywgJzE0OScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSg1MDMsIDMwMSwgMSwgMSkuZGF0
YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwNSwgMjUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUo
J2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScs
ICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcyMicpOworc2hvdWxkQmVBcm91bmQoJ2Rb
M10nLCAnMTE2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwNCwgMjUwLCAxLCAxKS5kYXRh
OworZCA9IGN0eC5nZXRJbWFnZURhdGEoNDUwLCAyMDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgn
ZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywg
JzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzI4Jyk7CitzaG91bGRCZUFyb3VuZCgnZFsz
XScsICcxMTUnKTsKIAogLy8gVmVyaWZ5IGJsdXJyeSBhbHBoYSBzaGFkb3cuCi1kID0gY3R4Lmdl
dEltYWdlRGF0YSg0MDUsIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDUw
NSwgNDUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgn
ZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFsz
XScsICcyMicpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzAnKTsKIAotZCA9IGN0eC5nZXRJ
bWFnZURhdGEoNDE1LCA0OTUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg1MDUs
IDQ1MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2Rb
MV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10n
LCAnMTUnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzcwJyk7CiAKLWQgPSBjdHguZ2V0SW1h
Z2VEYXRhKDQ1MCwgNTA0LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoNDUwLCA0
MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFd
JywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywg
JzE3Jyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICc2OScpOwogCiB2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Njcmlw
dC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hh
ZG93LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI2N2YyNDQzY2JlOTA2MDA1M2JjMzk5MDI3OTg1ZWU1ZjA3Mzc5
ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVz
dHMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93LmpzCkBAIC0wLDAgKzEsMTMzIEBA
CitkZXNjcmlwdGlvbigiRW5zdXJlIGNvcnJlY3QgYmVoYXZpb3Igb2YgY2FudmFzIHdpdGggZmls
bFJlY3Qrc2hhZG93IGFmdGVyIHRyYW5zbGF0aW9uK3JvdGF0aW9uK3NjYWxpbmcuIEEgYmx1ZSBh
bmQgcmVkIGNoZWNrZXJlZCBwYXR0ZXJuIHNob3VsZCBiZSBkaXNwbGF5ZWQuIik7CisKK2Z1bmN0
aW9uIHByaW50KG1lc3NhZ2UsIGNvbG9yKQoreworICAgIHZhciBwYXJhZ3JhcGggPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBwYXJhZ3JhcGguYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIHBhcmFncmFwaC5zdHlsZS5mb250RmFt
aWx5ID0gIm1vbm9zcGFjZSI7CisgICAgaWYgKGNvbG9yKQorICAgICAgICBwYXJhZ3JhcGguc3R5
bGUuY29sb3IgPSBjb2xvcjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIp
LmFwcGVuZENoaWxkKHBhcmFncmFwaCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXJvdW5kKGEs
IGIpCit7CisgICAgdmFyIGV2YWxBOworICAgIHRyeSB7CisgICAgICAgIGV2YWxBID0gZXZhbChh
KTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgZXZhbEEgPSBlOworICAgIH0KKworICAgIGlm
IChNYXRoLmFicyhldmFsQSAtIGIpIDwgMTApCisgICAgICAgIHByaW50KCJQQVNTICIgKyBhICsg
IiBpcyBhcm91bmQgIiArIGIgLCAiZ3JlZW4iKQorICAgIGVsc2UKKyAgICAgICAgcHJpbnQoIkZB
SUwgIiArIGEgKyAiIGlzIG5vdCBhcm91bmQgIiArIGIgKyAiIChhY3R1YWw6ICIgKyBldmFsQSAr
ICIpIiwgInJlZCIpOworfQorCit2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
Y2FudmFzJyk7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7CitjYW52YXMuc2V0
QXR0cmlidXRlKCd3aWR0aCcsICc2MDAnKTsKK2NhbnZhcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcs
ICc2MDAnKTsKK3ZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKKworY3R4LmZpbGxT
dHlsZSA9ICdyZ2JhKDAsIDAsIDI1NSwgMS4wKSc7CitjdHguc2hhZG93T2Zmc2V0WCA9IDEwMDsK
K2N0eC5zaGFkb3dPZmZzZXRZID0gMTAwOworCitjdHgudHJhbnNsYXRlKC0xMDAsIC0xMDApOwor
Y3R4LnJvdGF0ZShNYXRoLlBJLzIpOworY3R4LnNjYWxlKDIsIDIpOworCitjdHguc2hhZG93Q29s
b3IgPSAncmdiYSgyNTUsIDAsIDAsIDEuMCknOworY3R4LmZpbGxSZWN0KDEwMCwgLTE1MCwgNTAs
IDUwKTsKKworY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMjU1LCAwLCAwLCAwLjUpJzsKK2N0eC5m
aWxsUmVjdCgyMDAsIC0xNTAsIDUwLCA1MCk7CisKK2N0eC5zaGFkb3dCbHVyID0gNTsKK2N0eC5z
aGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwgMS4wKSc7CitjdHguZmlsbFJlY3QoMTAwLCAt
MjUwLCA1MCwgNTApOworCitjdHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDAuNSkn
OworY3R4LmZpbGxSZWN0KDIwMCwgLTI1MCwgNTAsIDUwKTsKKwordmFyIGQ7IC8vIGltYWdlRGF0
YS5kYXRhCisKKy8vIFZlcmlmeSBzb2xpZCBzaGFkb3cuCitkID0gY3R4LmdldEltYWdlRGF0YSgy
MDAsIDIwNSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUo
J2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmUoJ2RbM10nLCAn
MjU1Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgMjk4LCAxLCAxKS5kYXRhOworc2hv
dWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgn
ZFsyXScsICcwJyk7CitzaG91bGRCZSgnZFszXScsICcyNTUnKTsKKworZCA9IGN0eC5nZXRJbWFn
ZURhdGEoMjAxLCAyOTgsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3No
b3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlKCdk
WzNdJywgJzI1NScpOworCisvLyBWZXJpZnkgc29saWQgYWxwaGEgc2hhZG93LgorZCA9IGN0eC5n
ZXRJbWFnZURhdGEoMjAxLCA0MDEsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUn
KTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3Vs
ZEJlQXJvdW5kKCdkWzNdJywgJzEyNycpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDQ1
MCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0n
LCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAn
MTI3Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk4LCAxLCAxKS5kYXRhOworc2hv
dWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgn
ZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMjcnKTsKKworLy8gVmVyaWZ5
IGJsdXJyeSBzaGFkb3cuCitkID0gY3R4LmdldEltYWdlRGF0YSgzOTksIDIwNSwgMSwgMSkuZGF0
YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTA2Jyk7CisKK2Qg
PSBjdHguZ2V0SW1hZ2VEYXRhKDUwMCwgMjA1LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0n
LCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7
CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMDYnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEo
NDk5LCAyOTksIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJl
KCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdk
WzNdJywgJzgzJyk7CisKKy8vIFZlcmlmeSBibHVycnkgYWxwaGEgc2hhZG93LgorZCA9IGN0eC5n
ZXRJbWFnZURhdGEoMzk4LCA0MDUsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUn
KTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3Vs
ZEJlQXJvdW5kKCdkWzNdJywgJzM2Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQwNSwgNTAx
LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScs
ICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcz
NicpOworCitkID0gY3R4LmdldEltYWdlRGF0YSg0MDUsIDUwMSwgMSwgMSkuZGF0YTsKK3Nob3Vs
ZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2Rb
Ml0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMzYnKTsKKwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDU3MjgwNjQ4OTU1ODJlYzNhM2NmMWE4YjEyZDc1ZWU4ZmM3MGJh
ZjEuLjhkZmJlOWE1MGQwYjgxNTZlODMwMWFmOTc0MjA5ODc1NmI2ZWEyZjIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTAtMTItMTMgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBDYW52YXMg
c2hhZG93IG9mZnNldCBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IGFueSB0cmFuc2Zvcm1hdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0MjIK
KworICAgICAgICBPbiBhIGNhbnZhcyBjb250ZXh0LCBzaGFkb3dzIGFyZSBjdXJyZW50bHkgYWZm
ZWN0ZWQgYnkgYWxsCisgICAgICAgIHRyYW5zZm9ybWF0aW9ucyBleGNlcHQgc2NhbGluZy4gQWNj
b3JkaW5nIHRvIHRoZSBzcGVjOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mv
d2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbCNz
aGFkb3dzCisKKyAgICAgICAgIlRoZSBzaGFkb3dPZmZzZXRYIGFuZCBzaGFkb3dPZmZzZXRZIGF0
dHJpYnV0ZXMgc3BlY2lmeSB0aGUgZGlzdGFuY2UKKyAgICAgICAgdGhhdCB0aGUgc2hhZG93IHdp
bGwgYmUgb2Zmc2V0IGluIHRoZSBwb3NpdGl2ZSBob3Jpem9udGFsIGFuZCBwb3NpdGl2ZQorICAg
ICAgICB2ZXJ0aWNhbCBkaXN0YW5jZSByZXNwZWN0aXZlbHkuIFRoZWlyIHZhbHVlcyBhcmUgaW4g
Y29vcmRpbmF0ZSBzcGFjZQorICAgICAgICB1bml0cy4gVGhleSBhcmUgbm90IGFmZmVjdGVkIGJ5
IHRoZSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4iCisKKyAgICAgICAgTk9URTogdGhp
cyBhcHBsaWVzIG9ubHkgdG8gY2FudmFzLCBub3QgdG8gYm94IHNoYWRvd3MuCisKKyAgICAgICAg
VGVzdDogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWwK
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6Q29udGV4dFNoYWRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGV4dFNoYWRvdzo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGV4dFNoYWRvdzo6c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6b2Zmc2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNo
YWRvdzo6YmVnaW5TaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93
OjplbmRTaGFkb3dMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bXVzdFVzZUNvbnRleHRTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KToKKwogMjAxMC0xMi0xMyAgRGFpIE1pa3VydWJlICA8
ZG1pa3VydWJlQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcAppbmRleCA4N2Ex
YzVjNzYzY2VjNTU2NjM0ZjJmYmFmYzY3NTk0MjllZGM1OWQxLi5lYmZmZDk4M2ViM2FkNTc0NTZi
OTUyZTQ3Y2NmZjgyODQ4MmIzNTRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbnRleHRTaGFkb3cuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
dGV4dFNoYWRvdy5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgQ29udGV4dFNoYWRvdzo6Q29udGV4dFNo
YWRvdygpCiAgICAgOiBtX3R5cGUoTm9TaGFkb3cpCiAgICAgLCBtX2JsdXJEaXN0YW5jZSgwKQog
ICAgICwgbV9sYXllckNvbnRleHQoMCkKKyAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMo
ZmFsc2UpCiB7CiB9CiAKQEAgLTQ5LDYgKzUwLDcgQEAgQ29udGV4dFNoYWRvdzo6Q29udGV4dFNo
YWRvdyhjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHJhZGl1cywgY29uc3QgRmxvYXRTaXplJgog
ICAgICwgbV9ibHVyRGlzdGFuY2Uocm91bmQocmFkaXVzKSkKICAgICAsIG1fb2Zmc2V0KG9mZnNl
dCkKICAgICAsIG1fbGF5ZXJDb250ZXh0KDApCisgICAgLCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKGZhbHNlKQogewogICAgIC8vIFNlZSBjb21tZW50cyBpbiBodHRwOi8vd2Via2l0Lm9yZy9i
LzQwNzkzLCBpdCBzZWVtcyBzZW5zaWJsZQogICAgIC8vIHRvIGZvbGxvdyBTa2lhJ3MgbGltaXQg
b2YgMTI4IHBpeGVscyBvZiBibHVyIHJhZGl1cwpAQCAtMTQ5LDYgKzE1MSw1MyBAQCB2b2lkIENv
bnRleHRTaGFkb3c6OmJsdXJMYXllckltYWdlKHVuc2lnbmVkIGNoYXIqIGltYWdlRGF0YSwgY29u
c3QgSW50U2l6ZSYgc2l6ZQogICAgIH0KIH0KIAorI2lmIFBMQVRGT1JNKFFUKQorSW50UmVjdCBD
b250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBQbGF0Zm9ybUNv
bnRleHQgcCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBS
ZWN0KQoreworICAgIC8vIENhbGN1bGF0ZSB0aGUgZGVzdGluYXRpb24gb2YgdGhlIGJsdXJyZWQg
YW5kL29yIHRyYW5zZm9ybWVkIGxheWVyLgorICAgIEZsb2F0UmVjdCBsYXllckZsb2F0UmVjdDsK
KyAgICBmbG9hdCBpbmZsYXRpb24gPSAwOworCisgICAgY29uc3QgUVRyYW5zZm9ybSB0cmFuc2Zv
cm0gPSBwLT50cmFuc2Zvcm0oKTsKKyAgICBpZiAobV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAm
JiAhdHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkgeworICAgICAgICBRUG9seWdvbkYgdHJhbnNmb3Jt
ZWRQb2x5Z29uID0gdHJhbnNmb3JtLm1hcChRUG9seWdvbkYobGF5ZXJBcmVhKSk7CisgICAgICAg
IHRyYW5zZm9ybWVkUG9seWdvbi50cmFuc2xhdGUob2Zmc2V0KCkpOworICAgICAgICBsYXllckZs
b2F0UmVjdCA9IHRyYW5zZm9ybS5pbnZlcnRlZCgpLm1hcCh0cmFuc2Zvcm1lZFBvbHlnb24pLmJv
dW5kaW5nUmVjdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGxheWVyRmxvYXRSZWN0ID0gbGF5
ZXJBcmVhOworICAgICAgICBsYXllckZsb2F0UmVjdC5tb3ZlKG1fb2Zmc2V0KTsKKyAgICB9CisK
KyAgICAvLyBXZSBleHBhbmQgdGhlIGFyZWEgYnkgdGhlIGJsdXIgcmFkaXVzIHRvIGdpdmUgZXh0
cmEgc3BhY2UgZm9yIHRoZSBibHVyIHRyYW5zaXRpb24uCisgICAgaWYgKG1fdHlwZSA9PSBCbHVy
U2hhZG93KSB7CisgICAgICAgIGxheWVyRmxvYXRSZWN0LmluZmxhdGUobV9ibHVyRGlzdGFuY2Up
OworICAgICAgICBpbmZsYXRpb24gKz0gbV9ibHVyRGlzdGFuY2U7CisgICAgfQorCisgICAgaWYg
KCFjbGlwUmVjdC5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KGxheWVyRmxvYXRSZWN0KSkpIHsK
KyAgICAgICAgLy8gTm8gbmVlZCB0byBoYXZlIHRoZSBidWZmZXIgbGFyZ2VyIHRoYW4gdGhlIGNs
aXAuCisgICAgICAgIGxheWVyRmxvYXRSZWN0LmludGVyc2VjdChjbGlwUmVjdCk7CisKKyAgICAg
ICAgLy8gSWYgd2UgYXJlIHRvdGFsbHkgb3V0c2lkZSB0aGUgY2xpcCByZWdpb24sIHdlIGFyZW4n
dCBwYWludGluZyBhdCBhbGwuCisgICAgICAgIGlmIChsYXllckZsb2F0UmVjdC5pc0VtcHR5KCkp
CisgICAgICAgICAgICByZXR1cm4gSW50UmVjdCgwLCAwLCAwLCAwKTsKKworICAgICAgICAvLyBX
ZSBhZGp1c3QgYWdhaW4gYmVjYXVzZSB0aGUgcGl4ZWxzIGF0IHRoZSBib3JkZXJzIGFyZSBzdGls
bAorICAgICAgICAvLyBwb3RlbnRpYWxseSBhZmZlY3RlZCBieSB0aGUgcGl4ZWxzIG91dHNpZGUg
dGhlIGJ1ZmZlci4KKyAgICAgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7CisgICAgICAg
ICAgICBsYXllckZsb2F0UmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNlKTsKKyAgICAgICAgICAg
IGluZmxhdGlvbiArPSBtX2JsdXJEaXN0YW5jZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNv
bnN0IGludCBmcmFtZVNpemUgPSBpbmZsYXRpb24gKiAyOworICAgIG1fc291cmNlUmVjdCA9IElu
dFJlY3QoMCwgMCwgbGF5ZXJBcmVhLndpZHRoKCkgKyBmcmFtZVNpemUsIGxheWVyQXJlYS5oZWln
aHQoKSArIGZyYW1lU2l6ZSk7CisgICAgbV9sYXllck9yaWdpbiA9IEZsb2F0UG9pbnQobGF5ZXJG
bG9hdFJlY3QueCgpLCBsYXllckZsb2F0UmVjdC55KCkpOworICAgIHJldHVybiBlbmNsb3NpbmdJ
bnRSZWN0KGxheWVyRmxvYXRSZWN0KTsKK30KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ0FJUk8p
CiB2b2lkIENvbnRleHRTaGFkb3c6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICAvLyBD
YWxjdWxhdGUgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBibHVycmVkIGxheWVyLgpAQCAtMTczLDUg
KzIyMiw2IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3Qo
Y29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0CiAgICAgICAgICAgICBtX2xheWVyUmVj
dC5pbmZsYXRlKG1fdHlwZSA9PSBCbHVyU2hhZG93ID8gbV9ibHVyRGlzdGFuY2UgOiAwKTsKICAg
ICB9CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmggYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaAppbmRleCBmYTc3OGFmYmNjZGRmYWZjM2Y0MGNkMDIz
Y2I3YWQ0ZjQ1MWVkNTJjLi5jMDc3NmJiZWEwNjYwYjNkMDhiZjZkZTFhNDI4NGQ0ZjgxODYzMWI1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaApAQCAtMTA2LDI3
ICsxMDYsNDEgQEAgcHVibGljOgogICAgIFBsYXRmb3JtQ29udGV4dCBiZWdpblNoYWRvd0xheWVy
KFBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEpOwogICAgIHZvaWQg
ZW5kU2hhZG93TGF5ZXIoUGxhdGZvcm1Db250ZXh0KTsKICAgICBzdGF0aWMgdm9pZCBwdXJnZVNj
cmF0Y2hCdWZmZXIoKTsKKyAgICB2b2lkIHNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wg
ZW5hYmxlKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBlbmFibGU7IH0KKyAgICBib29s
IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtczsgfQogI2lmIFBMQVRGT1JNKENBSVJPKQogICAgIHZvaWQgZHJhd1JlY3RTaGFk
b3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJ
bnRTaXplJiB0b3BMZWZ0UmFkaXVzID0gSW50U2l6ZSgpLCBjb25zdCBJbnRTaXplJiB0b3BSaWdo
dFJhZGl1cyA9IEludFNpemUoKSwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cyA9IElu
dFNpemUoKSwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMgPSBJbnRTaXplKCkpOwog
I2VuZGlmCi0KICNpZiBQTEFURk9STShRVCkKLSAgICBRUG9pbnRGIG9mZnNldCgpIHsgcmV0dXJu
IFFQb2ludEYobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQuaGVpZ2h0KCkpOyB9CisgICAgUVBv
aW50RiBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBRUG9pbnRGKG1fb2Zmc2V0LndpZHRoKCksIG1f
b2Zmc2V0LmhlaWdodCgpKTsgfQogI2VuZGlmCiAKIAogcHJpdmF0ZToKLSAgICBJbnRSZWN0IG1f
bGF5ZXJSZWN0OworICAgIC8vIEJ1ZmZlciB0byB3aGVyZSB0aGUgdGVtcG9yYXJ5IHNoYWRvdyB3
aWxsIGJlIGRyYXduIHRvLgogICAgIFBsYXRmb3JtSW1hZ2UgbV9sYXllckltYWdlOworICAgIC8v
IENvbnRleHQgdXNlZCB0byBwYWludCB0aGUgc2hhZG93IHRvIHRoZSBsYXllciBpbWFnZS4KICAg
ICBQbGF0Zm9ybUNvbnRleHQgbV9sYXllckNvbnRleHQ7Ci0KKyNpZiBQTEFURk9STShRVCkKKyAg
ICAvLyBTdWItcmVjdCBvZiBtX2xheWVySW1hZ2UgdGhhdCBjb250YWlucyB0aGUgc2hhZG93IHBp
eGVscy4KKyAgICBGbG9hdFJlY3QgbV9zb3VyY2VSZWN0OworICAgIC8vIFRvcC1sZWZ0IGNvcm5l
ciBvZiB0aGUgYm91bmRpbmcgcmVjdCB3aGVyZSB0aGUgc2hhZG93IGltYWdlIG5lZWRzIHRvIGJl
IGRyYXduLgorICAgIEZsb2F0UG9pbnQgbV9sYXllck9yaWdpbjsKKyNlbmRpZgorI2lmIFBMQVRG
T1JNKENBSVJPKQorICAgIC8vIEVuY2xvc2luZyBpbnQgcmVjdCB3aGVyZSBzaGFkb3cgbmVlZHMg
dG8gYmUgZHJhd24gdG8gdXNpbmcgdGhlIGxheWVyIGNvbnRleHQuCisgICAgSW50UmVjdCBtX2xh
eWVyUmVjdDsKICAgICAvLyBVc2VkIGZvciByZWZlcmVuY2Ugd2hlbiBjYW52YXMgc2NhbGUoeCx5
KSB3YXMgY2FsbGVkLgogICAgIEZsb2F0UmVjdCBtX3Vuc2NhbGVkTGF5ZXJSZWN0OworI2VuZGlm
CisgICAgYm9vbCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogCiAgICAgdm9pZCBibHVyTGF5
ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBpbnQgc3Ry
aWRlKTsKLSAgICB2b2lkIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAjaWYgUExBVEZPUk0oQ0FJ
Uk8pCisgICAgdm9pZCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBGbG9hdFJlY3Qm
IGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwogICAgIHZvaWQgZHJhd1JlY3RT
aGFkb3dXaXRob3V0VGlsaW5nKFBsYXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiBzaGFkb3dSZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBJbnRTaXpl
JiB0b3BSaWdodFJhZGl1cywgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3Qg
SW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMsIGZsb2F0IGFscGhhKTsKKyNlbHNlCisgICAgSW50
UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAjZW5k
aWYKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4
dFNoYWRvd1F0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNoYWRv
d1F0LmNwcAppbmRleCBmN2M3MGY2OTViYzBmYzQyNTBjYzliZGMzNWU5ZDVlOGU2M2Y5NzQ0Li41
NmUwNjczMTEyYjRiZDNhMzM2MWJkODU3YmJhODJmOWIwN2JjOTZjIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwCkBAIC0xMTQsMjQgKzEx
NCwyNSBAQCBQbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dMYXllcihQ
bGF0Zm9ybUNvbnRleHQgcCwgY29uc3QgRmxvYXRSZQogICAgIGVsc2UKICAgICAgICAgY2xpcFJl
Y3QgPSBwLT50cmFuc2Zvcm0oKS5pbnZlcnRlZCgpLm1hcFJlY3QocC0+d2luZG93KCkpOwogCi0g
ICAgbV91bnNjYWxlZExheWVyUmVjdCA9IGxheWVyQXJlYTsKLSAgICBjYWxjdWxhdGVMYXllckJv
dW5kaW5nUmVjdChsYXllckFyZWEsIEludFJlY3QoY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCks
IGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKSk7CisgICAgLy8gU2V0IG1fbGF5
ZXJPcmlnaW4gYW5kIG1fc291cmNlUmVjdC4KKyAgICBJbnRSZWN0IGNsaXAoY2xpcFJlY3QueCgp
LCBjbGlwUmVjdC55KCksIGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKKyAg
ICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KHAsIGxheWVy
QXJlYSwgY2xpcCk7CiAKICAgICAvLyBEb24ndCBwYWludCBpZiB3ZSBhcmUgdG90YWxseSBvdXRz
aWRlIHRoZSBjbGlwIHJlZ2lvbi4KLSAgICBpZiAobV9sYXllclJlY3QuaXNFbXB0eSgpKQorICAg
IGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFNoYWRv
d0J1ZmZlciogc2hhZG93QnVmZmVyID0gc2NyYXRjaFNoYWRvd0J1ZmZlcigpOwotICAgIFFJbWFn
ZSogc2hhZG93SW1hZ2UgPSBzaGFkb3dCdWZmZXItPnNjcmF0Y2hJbWFnZShtX2xheWVyUmVjdC5z
aXplKCkpOworICAgIFFJbWFnZSogc2hhZG93SW1hZ2UgPSBzaGFkb3dCdWZmZXItPnNjcmF0Y2hJ
bWFnZShsYXllclJlY3Quc2l6ZSgpKTsKICAgICBtX2xheWVySW1hZ2UgPSBRSW1hZ2UoKnNoYWRv
d0ltYWdlKTsKIAogICAgIG1fbGF5ZXJDb250ZXh0ID0gbmV3IFFQYWludGVyOwogICAgIG1fbGF5
ZXJDb250ZXh0LT5iZWdpbigmbV9sYXllckltYWdlKTsKICAgICBtX2xheWVyQ29udGV4dC0+c2V0
Rm9udChwLT5mb250KCkpOwotICAgIG1fbGF5ZXJDb250ZXh0LT50cmFuc2xhdGUobV9vZmZzZXQu
d2lkdGgoKSwgbV9vZmZzZXQuaGVpZ2h0KCkpOwogCi0gICAgLy8gVGhlIG9yaWdpbiBpcyBub3cg
dGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgc2NyYXRjaCBpbWFnZS4KLSAgICBtX2xheWVyQ29u
dGV4dC0+dHJhbnNsYXRlKC1tX2xheWVyUmVjdC54KCksIC1tX2xheWVyUmVjdC55KCkpOworICAg
IC8vIFNldCB0aGUgb3JpZ2luIGFzIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIHNjcmF0Y2gg
aW1hZ2UuCisgICAgY29uc3QgaW50IGZyYW1lU2l6ZSA9IChtX3NvdXJjZVJlY3Qud2lkdGgoKSAt
IGxheWVyQXJlYS53aWR0aCgpKSAvIDI7CisgICAgbV9sYXllckNvbnRleHQtPnRyYW5zbGF0ZSgt
bGF5ZXJBcmVhLngoKSArIGZyYW1lU2l6ZSwgLWxheWVyQXJlYS55KCkgKyBmcmFtZVNpemUpOwog
CiAgICAgcmV0dXJuIG1fbGF5ZXJDb250ZXh0OwogfQpAQCAtMTU1LDEzICsxNTYsNyBAQCB2b2lk
IENvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCBwKQogICAgICAg
ICBwLmVuZCgpOwogICAgIH0KIAotICAgIGNvbnN0IFFUcmFuc2Zvcm0gdHJhbnNmb3JtID0gcC0+
dHJhbnNmb3JtKCk7Ci0gICAgaWYgKHRyYW5zZm9ybS5pc1NjYWxpbmcoKSkgewotICAgICAgICBx
cmVhbCB4ID0gbV91bnNjYWxlZExheWVyUmVjdC54KCkgKyBtX29mZnNldC53aWR0aCgpICAvIHRy
YW5zZm9ybS5tMTEoKSAtIG1fYmx1ckRpc3RhbmNlOwotICAgICAgICBxcmVhbCB5ID0gbV91bnNj
YWxlZExheWVyUmVjdC55KCkgKyBtX29mZnNldC5oZWlnaHQoKSAvIHRyYW5zZm9ybS5tMjIoKSAt
IG1fYmx1ckRpc3RhbmNlOwotICAgICAgICBwLT5kcmF3SW1hZ2UoUVBvaW50Rih4LCB5KSwgbV9s
YXllckltYWdlKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcC0+ZHJhd0ltYWdlKG1fbGF5ZXJSZWN0
LnRvcExlZnQoKSwgbV9sYXllckltYWdlKTsKKyAgICBwLT5kcmF3SW1hZ2UobV9sYXllck9yaWdp
biwgbV9sYXllckltYWdlLCBtX3NvdXJjZVJlY3QpOwogCiAgICAgc2NyYXRjaFNoYWRvd0J1ZmZl
cigpLT5zY2hlZHVsZVB1cmdlKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCmluZGV4IDI1NDIzNWVlMTI2NGIzOTVlNzQyM2I3
Mzg4YmI5YzBjOWQ4M2I4YjEuLjQyZTU2MTgyMTZlM2E5ZWU4YWZkM2NkNGRmNWE3MmZjOGIxZTBi
MGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250
ZXh0UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250
ZXh0UXQuY3BwCkBAIC01Myw3ICs1Myw2IEBACiAjaW5jbHVkZSAiVHJhbnNwYXJlbmN5TGF5ZXIu
aCIKIAogI2luY2x1ZGUgPFFCcnVzaD4KLSNpbmNsdWRlIDxRRGVidWc+CiAjaW5jbHVkZSA8UUdy
YWRpZW50PgogI2luY2x1ZGUgPFFQYWludERldmljZT4KICNpbmNsdWRlIDxRUGFpbnRFbmdpbmU+
CkBAIC0xNzUsNiArMTc0LDIyIEBAIHN0YXRpYyBpbmxpbmUgUXQ6OkZpbGxSdWxlIHRvUXRGaWxs
UnVsZShXaW5kUnVsZSBydWxlKQogICAgIHJldHVybiBRdDo6T2RkRXZlbkZpbGw7CiB9CiAKK3N0
YXRpYyBpbmxpbmUgYm9vbCBtdXN0VXNlQ29udGV4dFNoYWRvdyhRUGFpbnRlciogcGFpbnRlciwg
Q29udGV4dFNoYWRvdyogc2hhZG93KQoreworICAgIGlmIChzaGFkb3ctPm1fdHlwZSA9PSBDb250
ZXh0U2hhZG93OjpCbHVyU2hhZG93KQorICAgICAgICAvLyBXZSBjYW4ndCBhdm9pZCBDb250ZXh0
U2hhZG93LCBzaW5jZSB0aGUgc2hhZG93IGhhcyBibHVyLgorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAoIXNoYWRvdy0+c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSkKKyAgICAgICAgLy8g
V2UgY2FuIGF2b2lkIENvbnRleHRTaGFkb3cgYW5kIG9wdGltaXplLCBzaW5jZSB3ZSdyZSBub3Qg
ZHJhd2luZyBvbiBhIGNhbnZhcyBhbmQgYm94CisgICAgICAgIC8vIHNoYWRvd3MgYXJlIGFmZmVj
dGVkIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAocGFpbnRlci0+dHJhbnNmb3JtKCkuaXNJZGVudGl0eSgpKQorICAgICAgICAvLyBX
ZSBjYW4gYXZvaWQgQ29udGV4dFNoYWRvdywgc2luY2UgdGhlcmUgYXJlIG5vIHRyYW5zZm9ybWF0
aW9ucyB0byBhcHBseSB0byB0aGUgY2FudmFzLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Ly8gT3RoZXJ3aXNlLCBubyBjaGFuY2UgYXZvaWRpbmcgQ29udGV4dFNoYWRvdy4KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlIDogcHVi
bGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGUoUVBhaW50ZXIqLCBjb25zdCBRQ29sb3ImIGluaXRpYWxTb2xpZENvbG9yKTsKQEAgLTUw
NiwzMyArNTIxLDIwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRo
JiBwYXRoKQogCiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAgQ29udGV4
dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotICAgICAgICBpZiAoc2hhZG93LT5t
X3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdwotICAgICAgICAgICAgJiYgIW1fc3Rh
dGUuZmlsbFBhdHRlcm4gJiYgIW1fc3RhdGUuZmlsbEdyYWRpZW50KQorICAgICAgICBpZiAobXVz
dFVzZUNvbnRleHRTaGFkb3cocCwgc2hhZG93KSB8fCBtX3N0YXRlLmZpbGxQYXR0ZXJuIHx8IG1f
c3RhdGUuZmlsbEdyYWRpZW50KQogICAgICAgICB7Ci0gICAgICAgICAgICBRUG9pbnRGIG9mZnNl
dCA9IHNoYWRvdy0+b2Zmc2V0KCk7Ci0gICAgICAgICAgICBjb25zdCBRVHJhbnNmb3JtJiB0cmFu
c2Zvcm0gPSBwLT50cmFuc2Zvcm0oKTsKLSAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNTY2Fs
aW5nKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBJZiBzY2FsaW5nIGlzIHJlcXVpcmVkLCBmaW5k
IHRoZSBuZXcgY29vcmQgZm9yIHNoYWRvdyBvcmlnaW4sCi0gICAgICAgICAgICAgICAgLy8gc28g
dGhhdCB0aGUgcmVsYXRpdmUgb2Zmc2V0IHRvIGl0cyBzaGFwZSBpcyBrZXB0LgotICAgICAgICAg
ICAgICAgIFFQb2ludEYgdHJhbnNsYXRlZE9mZnNldChvZmZzZXQueCgpIC8gdHJhbnNmb3JtLm0x
MSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQueSgp
IC8gdHJhbnNmb3JtLm0yMigpKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNs
YXRlKHRyYW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgICAgIHAtPmZpbGxQYXRoKHBsYXRm
b3JtUGF0aCwgUUNvbG9yKHNoYWRvdy0+bV9jb2xvcikpOwotICAgICAgICAgICAgICAgIHBsYXRm
b3JtUGF0aC50cmFuc2xhdGUoLXRyYW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKLSAgICAgICAgICAgICAg
ICBwLT5maWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihzaGFkb3ctPm1fY29sb3IpKTsKLSAg
ICAgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW9mZnNldCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRv
dy0+YmVnaW5TaGFkb3dMYXllcihwLCBwbGF0Zm9ybVBhdGguY29udHJvbFBvaW50UmVjdCgpKTsK
ICAgICAgICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAgICAgICAgICAgICAgICAgc2hhZG93
UGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291
cmNlKTsKICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5maWxsUGF0aChwbGF0Zm9ybVBh
dGgsIFFDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9yKSk7CiAgICAgICAgICAgICAgICAgc2hh
ZG93LT5lbmRTaGFkb3dMYXllcihwKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIFFQb2ludEYgb2Zmc2V0ID0gc2hhZG93LT5vZmZzZXQoKTsKKyAgICAgICAg
ICAgIHAtPnRyYW5zbGF0ZShvZmZzZXQpOworICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGxhdGZv
cm1QYXRoLCBRQ29sb3Ioc2hhZG93LT5tX2NvbG9yKSk7CisgICAgICAgICAgICBwLT50cmFuc2xh
dGUoLW9mZnNldCk7CiAgICAgICAgIH0KLQogICAgIH0KICAgICBpZiAobV9zdGF0ZS5maWxsUGF0
dGVybikgewogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gYWZmaW5lOwpAQCAtNTU3LDI4ICs1NTks
OCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQog
CiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAgQ29udGV4dFNoYWRvdyog
c2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotCi0gICAgICAgIGlmIChzaGFkb3ctPm1fdHlwZSAh
PSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93Ci0gICAgICAgICAgICAmJiAhbV9zdGF0ZS5zdHJv
a2VQYXR0ZXJuICYmICFtX3N0YXRlLnN0cm9rZUdyYWRpZW50KQorICAgICAgICBpZiAobXVzdFVz
ZUNvbnRleHRTaGFkb3cocCwgc2hhZG93KSB8fCBtX3N0YXRlLnN0cm9rZVBhdHRlcm4gfHwgbV9z
dGF0ZS5zdHJva2VHcmFkaWVudCkKICAgICAgICAgewotICAgICAgICAgICAgUVBlbiBzaGFkb3dQ
ZW4ocGVuKTsKLSAgICAgICAgICAgIHNoYWRvd1Blbi5zZXRDb2xvcihtX2RhdGEtPnNoYWRvdy5t
X2NvbG9yKTsKLSAgICAgICAgICAgIFFQb2ludEYgb2Zmc2V0ID0gc2hhZG93LT5vZmZzZXQoKTsK
LSAgICAgICAgICAgIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSA9IHAtPnRyYW5zZm9ybSgp
OwotICAgICAgICAgICAgaWYgKHRyYW5zZm9ybS5pc1NjYWxpbmcoKSkgewotICAgICAgICAgICAg
ICAgIC8vIElmIHNjYWxpbmcgaXMgcmVxdWlyZWQsIGZpbmQgdGhlIG5ldyBjb29yZCBmb3Igc2hh
ZG93IG9yaWdpbiwKLSAgICAgICAgICAgICAgICAvLyBzbyB0aGF0IHRoZSByZWxhdGl2ZSBvZmZz
ZXQgdG8gaXRzIHNoYXBlIGlzIGtlcHQuCi0gICAgICAgICAgICAgICAgUVBvaW50RiB0cmFuc2xh
dGVkT2Zmc2V0KG9mZnNldC54KCkgLyB0cmFuc2Zvcm0ubTExKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldC55KCkgLyB0cmFuc2Zvcm0ubTIyKCkpOwot
ICAgICAgICAgICAgICAgIHBsYXRmb3JtUGF0aC50cmFuc2xhdGUodHJhbnNsYXRlZE9mZnNldCk7
Ci0gICAgICAgICAgICAgICAgcC0+c3Ryb2tlUGF0aChwbGF0Zm9ybVBhdGgsIHNoYWRvd1Blbik7
Ci0gICAgICAgICAgICAgICAgcGxhdGZvcm1QYXRoLnRyYW5zbGF0ZSgtdHJhbnNsYXRlZE9mZnNl
dCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShv
ZmZzZXQpOwotICAgICAgICAgICAgICAgIHAtPnN0cm9rZVBhdGgocGxhdGZvcm1QYXRoLCBzaGFk
b3dQZW4pOwotICAgICAgICAgICAgICAgIHAtPnRyYW5zbGF0ZSgtb2Zmc2V0KTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCBib3VuZGluZ1Jl
Y3QgPSBwbGF0Zm9ybVBhdGguY29udHJvbFBvaW50UmVjdCgpOwogICAgICAgICAgICAgYm91bmRp
bmdSZWN0LmluZmxhdGUocGVuLm1pdGVyTGltaXQoKSArIHBlbi53aWR0aEYoKSk7CiAgICAgICAg
ICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihw
LCBib3VuZGluZ1JlY3QpOwpAQCAtNTg3LDYgKzU2OSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgICAgIHNoYWRvd1Bh
aW50ZXItPnN0cm9rZVBhdGgocGxhdGZvcm1QYXRoLCBwZW4pOwogICAgICAgICAgICAgICAgIHNo
YWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBRUGVuIHNoYWRvd1BlbihwZW4pOworICAgICAgICAgICAgc2hhZG93UGVu
LnNldENvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpOworICAgICAgICAgICAgUVBvaW50RiBv
ZmZzZXQgPSBzaGFkb3ctPm9mZnNldCgpOworICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG9mZnNl
dCk7CisgICAgICAgICAgICBwLT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgc2hhZG93UGVuKTsK
KyAgICAgICAgICAgIHAtPnRyYW5zbGF0ZSgtb2Zmc2V0KTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtNzA2LDcgKzY5NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCiAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBicnVz
aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKLSAg
ICAgICAgICAgIGlmIChzaGFkb3ctPm1fdHlwZSA9PSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93
KSB7CisgICAgICAgICAgICBpZiAobXVzdFVzZUNvbnRleHRTaGFkb3cocCwgc2hhZG93KSkgewog
ICAgICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNo
YWRvd0xheWVyKHAsIG5vcm1hbGl6ZWRSZWN0KTsKICAgICAgICAgICAgICAgICBpZiAoc2hhZG93
UGFpbnRlcikgewogICAgICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zZXRPcGFjaXR5
KHN0YXRpY19jYXN0PHFyZWFsPihzaGFkb3ctPm1fY29sb3IuYWxwaGEoKSkgLyAyNTUpOwpAQCAt
NzE0LDE3ICs3MDMsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKICAgICAgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXll
cihwKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIC8vIFNvbGlkIHJlY3RhbmdsZSBmaWxsIHdpdGggbm8gYmx1ciBzaGFkb3cgY2FuIGJl
IGRvbmUgZmFzdGVyCi0gICAgICAgICAgICAgICAgLy8gd2l0aG91dCB1c2luZyB0aGUgc2hhZG93
IGxheWVyIGF0IGFsbC4KKyAgICAgICAgICAgICAgICAvLyBTb2xpZCByZWN0YW5nbGUgZmlsbCB3
aXRoIG5vIGJsdXIgc2hhZG93IG9yIHRyYW5zZm9ybWF0aW9ucyBhcHBsaWVkIGNhbiBiZSBkb25l
CisgICAgICAgICAgICAgICAgLy8gZmFzdGVyIHdpdGhvdXQgdXNpbmcgdGhlIHNoYWRvdyBsYXll
ciBhdCBhbGwuCiAgICAgICAgICAgICAgICAgUUNvbG9yIHNoYWRvd0NvbG9yID0gc2hhZG93LT5t
X2NvbG9yOwogICAgICAgICAgICAgICAgIHNoYWRvd0NvbG9yLnNldEFscGhhRihzaGFkb3dDb2xv
ci5hbHBoYUYoKSAqIHAtPmJydXNoKCkuY29sb3IoKS5hbHBoYUYoKSk7Ci0gICAgICAgICAgICAg
ICAgY29uc3QgUVRyYW5zZm9ybSYgdHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKHRyYW5zZm9ybS5pc1NjYWxpbmcoKSkgewotICAgICAgICAgICAgICAgICAg
ICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHN0YXRpY19jYXN0PHFyZWFs
PihzaGFkb3ctPm9mZnNldCgpLngoKSkgLyB0cmFuc2Zvcm0ubTExKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
cXJlYWw+KHNoYWRvdy0+b2Zmc2V0KCkueSgpICAvIHRyYW5zZm9ybS5tMjIoKSkpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dDb2xvcik7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRy
YW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvd0NvbG9yKTsKKyAgICAgICAgICAgICAg
ICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHNoYWRvdy0+b2Zmc2V0KCkp
LCBzaGFkb3dDb2xvcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNzQ0LDE4ICs3
MjcsMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclMKIAogICAgIGlmIChtX2RhdGEtPmhhc1No
YWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFkb3co
KTsKLQotICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Qmx1clNo
YWRvdykgewotICAgICAgICAgICAgLy8gV2UgZG8gbm90IG5lZWQgYW55IGxheWVyIGZvciBzaW1w
bGUgc2hhZG93LgotICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJhbnNs
YXRlZChzaGFkb3ctPm9mZnNldCgpKSwgc2hhZG93LT5tX2NvbG9yKTsKLSAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykpIHsKICAgICAg
ICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVy
KHAsIG5vcm1hbGl6ZWRSZWN0KTsKICAgICAgICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAg
ICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVy
OjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsKICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVy
LT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwgc2hhZG93LT5tX2NvbG9yKTsKICAgICAgICAgICAg
ICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQotICAgICAgICB9
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3Qu
dHJhbnNsYXRlZChzaGFkb3ctPm9mZnNldCgpKSwgc2hhZG93LT5tX2NvbG9yKTsKICAgICB9CiAK
ICAgICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwgbV9kYXRhLT5zb2xpZENvbG9yKTsKQEAg
LTc3MSwxOSArNzUxLDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3Qo
Y29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmCiAgICAgUVBhaW50ZXIq
IHAgPSBtX2RhdGEtPnAoKTsKICAgICBpZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAgICAg
ICBDb250ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7Ci0KLSAgICAgICAgaWYg
KHNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cpIHsKLSAgICAgICAg
ICAgIC8vIFdlIGRvIG5vdCBuZWVkIGFueSBsYXllciBmb3Igc2ltcGxlIHNoYWRvdy4KLSAgICAg
ICAgICAgIHAtPnRyYW5zbGF0ZShtX2RhdGEtPnNoYWRvdy5vZmZzZXQoKSk7Ci0gICAgICAgICAg
ICBwLT5maWxsUGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3IobV9kYXRhLT5zaGFkb3cu
bV9jb2xvcikpOwotICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1tX2RhdGEtPnNoYWRvdy5vZmZz
ZXQoKSk7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtdXN0VXNlQ29udGV4dFNoYWRv
dyhwLCBzaGFkb3cpKSB7CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNo
YWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCByZWN0KTsKICAgICAgICAgICAgIGlmIChzaGFkb3dQ
YWludGVyKSB7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0Q29tcG9zaXRpb25N
b2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsKICAgICAgICAgICAgICAgICBz
aGFkb3dQYWludGVyLT5maWxsUGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3IobV9kYXRh
LT5zaGFkb3cubV9jb2xvcikpOwogICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5
ZXIocCk7CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwLT50
cmFuc2xhdGUobV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOworICAgICAgICAgICAgcC0+ZmlsbFBh
dGgocGF0aC5wbGF0Zm9ybVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsK
KyAgICAgICAgICAgIHAtPnRyYW5zbGF0ZSgtbV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOwogICAg
ICAgICB9CiAgICAgfQogICAgIHAtPmZpbGxQYXRoKHBhdGgucGxhdGZvcm1QYXRoKCksIFFDb2xv
cihjb2xvcikpOwpAQCAtOTcxLDkgKzk0OSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
UGxhdGZvcm1TaGFkb3coY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBibHVyLCBjb25zdAog
ICAgICAgICAvLyBXZSBmbGlwIHRoZSBoZWlnaHQgc2luY2UgQ0cgYW5kIEhUTUw1IENhbnZhcyBo
YXZlIG9wcG9zaXRlIFkgYXhpcwogICAgICAgICBtX3N0YXRlLnNoYWRvd09mZnNldCA9IEZsb2F0
U2l6ZShzaXplLndpZHRoKCksIC1zaXplLmhlaWdodCgpKTsKICAgICAgICAgbV9kYXRhLT5zaGFk
b3cgPSBDb250ZXh0U2hhZG93KGNvbG9yLCBibHVyLCBGbG9hdFNpemUoc2l6ZS53aWR0aCgpLCAt
c2l6ZS5oZWlnaHQoKSkpOwotICAgIH0gZWxzZSB7CisgICAgfSBlbHNlCiAgICAgICAgIG1fZGF0
YS0+c2hhZG93ID0gQ29udGV4dFNoYWRvdyhjb2xvciwgYmx1ciwgRmxvYXRTaXplKHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSkpOwotICAgIH0KKworICAgIG1fZGF0YS0+c2hhZG93LnNldFNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJQbGF0Zm9ybVNoYWRvdygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76620</attachid>
            <date>2010-12-14 20:10:33 -0800</date>
            <delta_ts>2010-12-15 00:07:52 -0800</delta_ts>
            <desc>Add changes in comment #27 fixing failing tests</desc>
            <filename>bug-50422-20101214201031.patch</filename>
            <type>text/plain</type>
            <size>36014</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzY2JiODI5OGU0NGE4OWNiYmUyMGFmZThmZTUwZDk3OTg4MzJhMDRkLi45NDkwM2Vh
OTJhMTc4ZDAzMjBjN2QwNGI2N2ZiNThjZDU0ZDk4YzVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMTAtMTItMTMgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBDYW52YXMgc2hh
ZG93IG9mZnNldCBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IGFueSB0cmFuc2Zvcm1hdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0MjIKKwor
ICAgICAgICBPbiBhIGNhbnZhcyBjb250ZXh0LCBzaGFkb3dzIGFyZSBjdXJyZW50bHkgYWZmZWN0
ZWQgYnkgYWxsCisgICAgICAgIHRyYW5zZm9ybWF0aW9ucyBleGNlcHQgc2NhbGluZy4gQWNjb3Jk
aW5nIHRvIHRoZSBzcGVjOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2Vi
LWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbCNzaGFk
b3dzCisKKyAgICAgICAgIlRoZSBzaGFkb3dPZmZzZXRYIGFuZCBzaGFkb3dPZmZzZXRZIGF0dHJp
YnV0ZXMgc3BlY2lmeSB0aGUgZGlzdGFuY2UKKyAgICAgICAgdGhhdCB0aGUgc2hhZG93IHdpbGwg
YmUgb2Zmc2V0IGluIHRoZSBwb3NpdGl2ZSBob3Jpem9udGFsIGFuZCBwb3NpdGl2ZQorICAgICAg
ICB2ZXJ0aWNhbCBkaXN0YW5jZSByZXNwZWN0aXZlbHkuIFRoZWlyIHZhbHVlcyBhcmUgaW4gY29v
cmRpbmF0ZSBzcGFjZQorICAgICAgICB1bml0cy4gVGhleSBhcmUgbm90IGFmZmVjdGVkIGJ5IHRo
ZSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4iCisKKyAgICAgICAgTk9URTogdGhpcyBh
cHBsaWVzIG9ubHkgdG8gY2FudmFzLCBub3QgdG8gYm94IHNoYWRvd3MuCisKKyAgICAgICAgQWRk
IG5ldyB0ZXN0IHRvIGVuc3VyZSB0aGF0IHNoYWRvd3MgYXJlIGNvcnJlY3RseSB0cmFuc2Zvcm1l
ZCBrZWVwaW5nCisgICAgICAgIHRoZSByZWxhdGl2ZSBvZmZzZXQgdG8gdGhlIHNoYXBlLgorCisg
ICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVj
dC1zaGFkb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52
YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cuanM6Cisg
ICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUmVjdC1z
aGFkb3cuanM6CisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2Fs
ZS1zdHJva2VQYXRoLXNoYWRvdy5qczogTm93IHVzaW5nCisgICAgICAgICAgYSBsaW5lV2lkdGgg
PiAxIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHRlc3QgYW5kIG1vcmUgZmFpciBhbW9uZyBhbGwKKyAg
ICAgICAgICBwb3J0cywgc2luY2UgdGhlcmUgY2FuIGJlIGRpZmZlcmVudCB0cmFuc2Zvcm1hdGlv
biBzbW9vdGhuZXNzIG9yCisgICAgICAgICAgYWxpYXNpbmcgc2V0dGluZ3MuCisgICAgICAgICog
ZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRv
dy5qczogQWRkZWQuCisKIDIwMTAtMTItMTQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3ctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgt
c2hhZG93LWV4cGVjdGVkLnR4dAppbmRleCBlNTYyMDFmNzM4N2U0NjJmNzkyMjVlNjVmOGEzNDAx
ZTJlMzIzNmZlLi5hMzM3YzRiNjNmZjFkZGZlZWQ0NDg4ZTM1MWZmZGFlMTQ5ZWE4NTE2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1z
aGFkb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1z
Y2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQKQEAgLTMwLDI3ICszMCwyNyBAQCBQ
QVNTIGRbM10gaXMgYXJvdW5kIDc2CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAog
UEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjAKK1BBU1MgZFszXSBpcyBhcm91
bmQgMTQ5CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAK
LVBBU1MgZFszXSBpcyBhcm91bmQgMjIKK1BBU1MgZFszXSBpcyBhcm91bmQgMTE2CiBQQVNTIGRb
MF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBh
cm91bmQgMjgKK1BBU1MgZFszXSBpcyBhcm91bmQgMTE1CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNT
IGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjIKK1BBU1Mg
ZFszXSBpcyBhcm91bmQgNzAKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNT
IGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAxNQorUEFTUyBkWzNdIGlzIGFyb3VuZCA3
MAogUEFTUyBkWzBdIGlzIDI1NQogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1QQVNT
IGRbM10gaXMgYXJvdW5kIDE3CitQQVNTIGRbM10gaXMgYXJvdW5kIDY5CiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVj
dC1zaGFkb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxM2I4OTEyZjBkMmE3ZjAzOTE5NjNj
ZjY5YzBiNzRlNmI0MzE5NGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3ctZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNTcgQEAKK0Vuc3VyZSBjb3JyZWN0IGJlaGF2aW9yIG9mIGNhbnZhcyB3aXRoIGZpbGxS
ZWN0K3NoYWRvdyBhZnRlciB0cmFuc2xhdGlvbityb3RhdGlvbitzY2FsaW5nLiBBIGJsdWUgYW5k
IHJlZCBjaGVja2VyZWQgcGF0dGVybiBzaG91bGQgYmUgZGlzcGxheWVkLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BB
U1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgMjU1CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRb
MV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyAyNTUKK1BBU1MgZFswXSBpcyAy
NTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIDI1NQorUEFT
UyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10g
aXMgYXJvdW5kIDEyNworUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsy
XSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDEyNworUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBk
WzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDEyNworUEFTUyBk
WzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMg
YXJvdW5kIDEwNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBp
cyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDEwNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFd
IGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDgzCitQQVNTIGRbMF0g
aXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91
bmQgMzYKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAor
UEFTUyBkWzNdIGlzIGFyb3VuZCAzNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAK
K1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDM2CitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yZmM0ZTlhODQ0ZTdiZjY3ZmZlZTVlYmY1OGQ1MGRiZjQyYTc4YTkw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5z
Zm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jt
cy1maWxsUmVjdC1zaGFkb3cuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1m
aWxsUGF0aC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMv
Y2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcwppbmRleCAwNTI4NmY1MzI4YjVlNTk5ODMy
NDM1MDc1ZGJiZjFlYzE3ZTVhMjA3Li4zY2EzMzIxOTkyOGRkZDFiZjIwMjFjNGEwMjRkNzMwOGJj
Yjg2NTMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMv
Y2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcwpAQCAtNzks
MTMgKzc5LDEzIEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAn
KTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTks
IDI5NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgMjk1LCAxLCAxKS5k
YXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBz
aG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0
eC5nZXRJbWFnZURhdGEoMjAwLCAyOTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0
YSgyMDAsIDI5OCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxk
QmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwpAQCAtOTgsMTMgKzk4LDEz
IEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3Vs
ZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDA1
LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCA0MDUsIDEsIDEpLmRhdGE7
CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3Vs
ZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBj
dHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURh
dGEoMjA1LCA0OTgsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3Vs
ZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qt
c2hhZG93LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1z
Y2FsZS1maWxsUmVjdC1zaGFkb3cuanMKaW5kZXggOTlhMWU1OTRiZDU5ZjczNjdmM2MzMGRlYTE2
NTFlMzJmM2Q0ZGU2ZS4uZjQ5NWM5MTA1NWJiYTFkY2IxNDY4MzJlMjgxNjMwNzRhMDQ1ZTgyOSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1z
Y2FsZS1maWxsUmVjdC1zaGFkb3cuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2Ny
aXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUmVjdC1zaGFkb3cuanMKQEAgLTU4LDEzICs1OCwx
MyBAQCBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91
bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCAyOTUsIDEs
IDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyOTgsIDI5OCwgMSwgMSkuZGF0YTsKIHNo
b3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUo
J2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1h
Z2VEYXRhKDIwMCwgMjk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAxLCAy
OTgsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFd
JywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKQEAgLTc3LDEzICs3NywxMyBAQCBzaG91
bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3Vu
ZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDQwNSwgMSwgMSku
ZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxk
QmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsy
XScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldElt
YWdlRGF0YSgyMDUsIDQ5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwg
NDk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsx
XScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93
LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1z
dHJva2VQYXRoLXNoYWRvdy5qcwppbmRleCA1MTk4ZDk0MTUxN2RhYjkyYmMyODkxYzgzNzRmMzVi
YTFhODlkNTc5Li45MWI5MjdmOTVmYTg3ZGU1ZjlkNjU1ZjNiMmZmZDJmNGI1ZGFkNTM2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxl
LXN0cm9rZVBhdGgtc2hhZG93LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Njcmlw
dC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMKQEAgLTM1LDYgKzM1LDcg
QEAgY3R4LnNjYWxlKDIsIDIpOwogY3R4LnNoYWRvd09mZnNldFggPSAxMDA7CiBjdHguc2hhZG93
T2Zmc2V0WSA9IDEwMDsKIGN0eC5zdHJva2VTdHlsZSA9ICdyZ2JhKDAsIDAsIDI1NSwgMSknOwor
Y3R4LmxpbmVXaWR0aCA9IDU7CiAKIGN0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwg
MS4wKSc7CiBjdHguYmVnaW5QYXRoKCk7CkBAIC03Niw3OSArNzcsNzkgQEAgY3R4LnN0cm9rZSgp
OwogdmFyIGQ7IC8vIGltYWdlRGF0YS5kYXRhCiAKIC8vIFZlcmlmeSBzb2xpZCBzaGFkb3cuCi1k
ID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDIwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1h
Z2VEYXRhKDI1MCwgMjAwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBz
aG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgn
ZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCAyOTUsIDEsIDEpLmRh
dGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzMDAsIDI5MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJl
KCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0n
LCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRh
KDIwMSwgMjk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyNTAsIDEs
IDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAn
KTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCiAv
LyBWZXJpZnkgc29saWQgYWxwaGEgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCA0
MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDQwNSwgMSwgMSkuZGF0
YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9
IGN0eC5nZXRJbWFnZURhdGEoMjk5LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdl
RGF0YSgyMDEsIDUwMCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hv
dWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91
bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTksIDEsIDEp
LmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzMDAsIDQ5OSwgMSwgMSkuZGF0YTsKIHNob3Vs
ZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
Ml0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAogLy8gVmVyaWZ5IGJs
dXJyeSBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgzOTQsIDIwOCwgMSwgMSkuZGF0YTsK
K2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQwNCwgMjEwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2Rb
MF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcw
Jyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcyMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10n
LCAnMTQ5Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwMywgMzAxLCAxLCAxKS5kYXRhOwor
ZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA1LCAyNTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFsw
XScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAn
KTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzIyJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScs
ICcxMTYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA0LCAyNTAsIDEsIDEpLmRhdGE7Citk
ID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDIwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBd
JywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcp
Owotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjgnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywg
JzExNScpOwogCiAvLyBWZXJpZnkgYmx1cnJ5IGFscGhhIHNoYWRvdy4KLWQgPSBjdHguZ2V0SW1h
Z2VEYXRhKDQwNSwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA1LCA0
NTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFd
JywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywg
JzIyJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICc3MCcpOwogCi1kID0gY3R4LmdldEltYWdl
RGF0YSg0MTUsIDQ5NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwNSwgNDUw
LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScs
ICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcx
NScpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzAnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURh
dGEoNDUwLCA1MDQsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDQwNSwg
MSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAn
MCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTcn
KTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzY5Jyk7CiAKIHZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRl
c3RzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5qcyBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjY3ZjI0NDNjYmU5MDYwMDUzYmMzOTkwMjc5ODVlZTVmMDczNzllZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuanMKQEAgLTAsMCArMSwxMzMgQEAKK2Rl
c2NyaXB0aW9uKCJFbnN1cmUgY29ycmVjdCBiZWhhdmlvciBvZiBjYW52YXMgd2l0aCBmaWxsUmVj
dCtzaGFkb3cgYWZ0ZXIgdHJhbnNsYXRpb24rcm90YXRpb24rc2NhbGluZy4gQSBibHVlIGFuZCBy
ZWQgY2hlY2tlcmVkIHBhdHRlcm4gc2hvdWxkIGJlIGRpc3BsYXllZC4iKTsKKworZnVuY3Rpb24g
cHJpbnQobWVzc2FnZSwgY29sb3IpCit7CisgICAgdmFyIHBhcmFncmFwaCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHBhcmFncmFwaC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgcGFyYWdyYXBoLnN0eWxlLmZvbnRGYW1pbHkg
PSAibW9ub3NwYWNlIjsKKyAgICBpZiAoY29sb3IpCisgICAgICAgIHBhcmFncmFwaC5zdHlsZS5j
b2xvciA9IGNvbG9yOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBw
ZW5kQ2hpbGQocGFyYWdyYXBoKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBcm91bmQoYSwgYikK
K3sKKyAgICB2YXIgZXZhbEE7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbEEgPSBldmFsKGEpOwor
ICAgIH0gY2F0Y2goZSkgeworICAgICAgICBldmFsQSA9IGU7CisgICAgfQorCisgICAgaWYgKE1h
dGguYWJzKGV2YWxBIC0gYikgPCAxMCkKKyAgICAgICAgcHJpbnQoIlBBU1MgIiArIGEgKyAiIGlz
IGFyb3VuZCAiICsgYiAsICJncmVlbiIpCisgICAgZWxzZQorICAgICAgICBwcmludCgiRkFJTCAi
ICsgYSArICIgaXMgbm90IGFyb3VuZCAiICsgYiArICIgKGFjdHVhbDogIiArIGV2YWxBICsgIiki
LCAicmVkIik7Cit9CisKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52
YXMnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTsKK2NhbnZhcy5zZXRBdHRy
aWJ1dGUoJ3dpZHRoJywgJzYwMCcpOworY2FudmFzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgJzYw
MCcpOwordmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworCitjdHguZmlsbFN0eWxl
ID0gJ3JnYmEoMCwgMCwgMjU1LCAxLjApJzsKK2N0eC5zaGFkb3dPZmZzZXRYID0gMTAwOworY3R4
LnNoYWRvd09mZnNldFkgPSAxMDA7CisKK2N0eC50cmFuc2xhdGUoLTEwMCwgLTEwMCk7CitjdHgu
cm90YXRlKE1hdGguUEkvMik7CitjdHguc2NhbGUoMiwgMik7CisKK2N0eC5zaGFkb3dDb2xvciA9
ICdyZ2JhKDI1NSwgMCwgMCwgMS4wKSc7CitjdHguZmlsbFJlY3QoMTAwLCAtMTUwLCA1MCwgNTAp
OworCitjdHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDAuNSknOworY3R4LmZpbGxS
ZWN0KDIwMCwgLTE1MCwgNTAsIDUwKTsKKworY3R4LnNoYWRvd0JsdXIgPSA1OworY3R4LnNoYWRv
d0NvbG9yID0gJ3JnYmEoMjU1LCAwLCAwLCAxLjApJzsKK2N0eC5maWxsUmVjdCgxMDAsIC0yNTAs
IDUwLCA1MCk7CisKK2N0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwgMC41KSc7Citj
dHguZmlsbFJlY3QoMjAwLCAtMjUwLCA1MCwgNTApOworCit2YXIgZDsgLy8gaW1hZ2VEYXRhLmRh
dGEKKworLy8gVmVyaWZ5IHNvbGlkIHNoYWRvdy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwg
MjA1LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsx
XScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZSgnZFszXScsICcyNTUn
KTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCAyOTgsIDEsIDEpLmRhdGE7CitzaG91bGRC
ZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJd
JywgJzAnKTsKK3Nob3VsZEJlKCdkWzNdJywgJzI1NScpOworCitkID0gY3R4LmdldEltYWdlRGF0
YSgyMDEsIDI5OCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxk
QmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmUoJ2RbM10n
LCAnMjU1Jyk7CisKKy8vIFZlcmlmeSBzb2xpZCBhbHBoYSBzaGFkb3cuCitkID0gY3R4LmdldElt
YWdlRGF0YSgyMDEsIDQwMSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOwor
c2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVB
cm91bmQoJ2RbM10nLCAnMTI3Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDUwLCAx
LCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcw
Jyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMjcn
KTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTgsIDEsIDEpLmRhdGE7CitzaG91bGRC
ZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJd
JywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzEyNycpOworCisvLyBWZXJpZnkgYmx1
cnJ5IHNoYWRvdy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDM5OSwgMjA1LCAxLCAxKS5kYXRhOwor
c2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRC
ZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMDYnKTsKKworZCA9IGN0
eC5nZXRJbWFnZURhdGEoNTAwLCAyMDUsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcy
NTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3No
b3VsZEJlQXJvdW5kKCdkWzNdJywgJzEwNicpOworCitkID0gY3R4LmdldEltYWdlRGF0YSg0OTks
IDI5OSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2Rb
MV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10n
LCAnODMnKTsKKworLy8gVmVyaWZ5IGJsdXJyeSBhbHBoYSBzaGFkb3cuCitkID0gY3R4LmdldElt
YWdlRGF0YSgzOTgsIDQwNSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOwor
c2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVB
cm91bmQoJ2RbM10nLCAnMzYnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoNDA1LCA1MDEsIDEs
IDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAn
KTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzM2Jyk7
CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQwNSwgNTAxLCAxLCAxKS5kYXRhOworc2hvdWxkQmUo
J2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScs
ICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICczNicpOworCit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMmZiZDMwZmQwMTY2OTZlMDc5OWZjMDI5ODBjYmMzNjQ3OGEwMTNhOC4u
YmE1YTkwMmU3ZTg2YjhmOGJiNjUyNTg4NGM3OGZiNjRmYjY4OTM4ZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAor
MjAxMC0xMi0xMyAgSGVsZGVyIENvcnJlaWEgIDxoZWxkZXJAc2VuY2hhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIENhbnZhcyBzaGFk
b3cgb2Zmc2V0IHNob3VsZCBub3QgYmUgYWZmZWN0ZWQgYnkgYW55IHRyYW5zZm9ybWF0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDQyMgorCisg
ICAgICAgIE9uIGEgY2FudmFzIGNvbnRleHQsIHNoYWRvd3MgYXJlIGN1cnJlbnRseSBhZmZlY3Rl
ZCBieSBhbGwKKyAgICAgICAgdHJhbnNmb3JtYXRpb25zIGV4Y2VwdCBzY2FsaW5nLiBBY2NvcmRp
bmcgdG8gdGhlIHNwZWM6CisgICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWIt
YXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1jYW52YXMtZWxlbWVudC5odG1sI3NoYWRv
d3MKKworICAgICAgICAiVGhlIHNoYWRvd09mZnNldFggYW5kIHNoYWRvd09mZnNldFkgYXR0cmli
dXRlcyBzcGVjaWZ5IHRoZSBkaXN0YW5jZQorICAgICAgICB0aGF0IHRoZSBzaGFkb3cgd2lsbCBi
ZSBvZmZzZXQgaW4gdGhlIHBvc2l0aXZlIGhvcml6b250YWwgYW5kIHBvc2l0aXZlCisgICAgICAg
IHZlcnRpY2FsIGRpc3RhbmNlIHJlc3BlY3RpdmVseS4gVGhlaXIgdmFsdWVzIGFyZSBpbiBjb29y
ZGluYXRlIHNwYWNlCisgICAgICAgIHVuaXRzLiBUaGV5IGFyZSBub3QgYWZmZWN0ZWQgYnkgdGhl
IGN1cnJlbnQgdHJhbnNmb3JtYXRpb24gbWF0cml4LiIKKworICAgICAgICBOT1RFOiB0aGlzIGFw
cGxpZXMgb25seSB0byBjYW52YXMsIG5vdCB0byBib3ggc2hhZG93cy4KKworICAgICAgICBUZXN0
OiBmYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuaHRtbAorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZXh0U2hhZG93OjpDb250ZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRleHRTaGFkb3c6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0U2hhZG93OjpzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZXh0U2hhZG93OjpzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZXh0U2hhZG93OjpvZmZzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3F0L0NvbnRleHRTaGFkb3dRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93
OjpiZWdpblNoYWRvd0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmVu
ZFNoYWRvd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0Nv
bnRleHRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptdXN0VXNlQ29udGV4dFNoYWRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6c2V0UGxhdGZvcm1TaGFkb3cpOgorCiAyMDEwLTEyLTE0ICBBbnRvbiBEJ0F1cmlhICA8YWRh
dXJpYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcAppbmRleCA4N2ExYzVjNzYz
Y2VjNTU2NjM0ZjJmYmFmYzY3NTk0MjllZGM1OWQxLi43MTQ5MzJhZDA0ODNkZTFhOTYzNmEyZDE2
YmNmMTAxYWYxZDFjYWE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bnRleHRTaGFkb3cuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNo
YWRvdy5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgQ29udGV4dFNoYWRvdzo6Q29udGV4dFNoYWRvdygp
CiAgICAgOiBtX3R5cGUoTm9TaGFkb3cpCiAgICAgLCBtX2JsdXJEaXN0YW5jZSgwKQogICAgICwg
bV9sYXllckNvbnRleHQoMCkKKyAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoZmFsc2Up
CiB7CiB9CiAKQEAgLTQ5LDYgKzUwLDcgQEAgQ29udGV4dFNoYWRvdzo6Q29udGV4dFNoYWRvdyhj
b25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHJhZGl1cywgY29uc3QgRmxvYXRTaXplJgogICAgICwg
bV9ibHVyRGlzdGFuY2Uocm91bmQocmFkaXVzKSkKICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKICAg
ICAsIG1fbGF5ZXJDb250ZXh0KDApCisgICAgLCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZh
bHNlKQogewogICAgIC8vIFNlZSBjb21tZW50cyBpbiBodHRwOi8vd2Via2l0Lm9yZy9iLzQwNzkz
LCBpdCBzZWVtcyBzZW5zaWJsZQogICAgIC8vIHRvIGZvbGxvdyBTa2lhJ3MgbGltaXQgb2YgMTI4
IHBpeGVscyBvZiBibHVyIHJhZGl1cwpAQCAtMTQ5LDYgKzE1MSw1NyBAQCB2b2lkIENvbnRleHRT
aGFkb3c6OmJsdXJMYXllckltYWdlKHVuc2lnbmVkIGNoYXIqIGltYWdlRGF0YSwgY29uc3QgSW50
U2l6ZSYgc2l6ZQogICAgIH0KIH0KIAorI2lmIFBMQVRGT1JNKFFUKQorSW50UmVjdCBDb250ZXh0
U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHQg
cCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQor
eworICAgIC8vIENhbGN1bGF0ZSB0aGUgZGVzdGluYXRpb24gb2YgdGhlIGJsdXJyZWQgYW5kL29y
IHRyYW5zZm9ybWVkIGxheWVyLgorICAgIEZsb2F0UmVjdCBsYXllckZsb2F0UmVjdDsKKyAgICBm
bG9hdCBpbmZsYXRpb24gPSAwOworCisgICAgY29uc3QgUVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBw
LT50cmFuc2Zvcm0oKTsKKyAgICBpZiAobV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAmJiAhdHJh
bnNmb3JtLmlzSWRlbnRpdHkoKSkgeworICAgICAgICBRUG9seWdvbkYgdHJhbnNmb3JtZWRQb2x5
Z29uID0gdHJhbnNmb3JtLm1hcChRUG9seWdvbkYobGF5ZXJBcmVhKSk7CisgICAgICAgIHRyYW5z
Zm9ybWVkUG9seWdvbi50cmFuc2xhdGUob2Zmc2V0KCkpOworICAgICAgICBsYXllckZsb2F0UmVj
dCA9IHRyYW5zZm9ybS5pbnZlcnRlZCgpLm1hcCh0cmFuc2Zvcm1lZFBvbHlnb24pLmJvdW5kaW5n
UmVjdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGxheWVyRmxvYXRSZWN0ID0gbGF5ZXJBcmVh
OworICAgICAgICBsYXllckZsb2F0UmVjdC5tb3ZlKG1fb2Zmc2V0KTsKKyAgICB9CisKKyAgICAv
LyBXZSBleHBhbmQgdGhlIGFyZWEgYnkgdGhlIGJsdXIgcmFkaXVzIHRvIGdpdmUgZXh0cmEgc3Bh
Y2UgZm9yIHRoZSBibHVyIHRyYW5zaXRpb24uCisgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93
KSB7CisgICAgICAgIGxheWVyRmxvYXRSZWN0LmluZmxhdGUobV9ibHVyRGlzdGFuY2UpOworICAg
ICAgICBpbmZsYXRpb24gKz0gbV9ibHVyRGlzdGFuY2U7CisgICAgfQorCisgICAgRmxvYXRSZWN0
IHVuY2xpcHBlZExheWVyUmVjdCA9IGxheWVyRmxvYXRSZWN0OworCisgICAgaWYgKCFjbGlwUmVj
dC5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KGxheWVyRmxvYXRSZWN0KSkpIHsKKyAgICAgICAg
Ly8gTm8gbmVlZCB0byBoYXZlIHRoZSBidWZmZXIgbGFyZ2VyIHRoYW4gdGhlIGNsaXAuCisgICAg
ICAgIGxheWVyRmxvYXRSZWN0LmludGVyc2VjdChjbGlwUmVjdCk7CisKKyAgICAgICAgLy8gSWYg
d2UgYXJlIHRvdGFsbHkgb3V0c2lkZSB0aGUgY2xpcCByZWdpb24sIHdlIGFyZW4ndCBwYWludGlu
ZyBhdCBhbGwuCisgICAgICAgIGlmIChsYXllckZsb2F0UmVjdC5pc0VtcHR5KCkpCisgICAgICAg
ICAgICByZXR1cm4gSW50UmVjdCgwLCAwLCAwLCAwKTsKKworICAgICAgICAvLyBXZSBhZGp1c3Qg
YWdhaW4gYmVjYXVzZSB0aGUgcGl4ZWxzIGF0IHRoZSBib3JkZXJzIGFyZSBzdGlsbAorICAgICAg
ICAvLyBwb3RlbnRpYWxseSBhZmZlY3RlZCBieSB0aGUgcGl4ZWxzIG91dHNpZGUgdGhlIGJ1ZmZl
ci4KKyAgICAgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7CisgICAgICAgICAgICBsYXll
ckZsb2F0UmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNlKTsKKyAgICAgICAgICAgIHVuY2xpcHBl
ZExheWVyUmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNlKTsKKyAgICAgICAgICAgIGluZmxhdGlv
biArPSBtX2JsdXJEaXN0YW5jZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IGludCBm
cmFtZVNpemUgPSBpbmZsYXRpb24gKiAyOworICAgIG1fc291cmNlUmVjdCA9IEludFJlY3QoMCwg
MCwgbGF5ZXJBcmVhLndpZHRoKCkgKyBmcmFtZVNpemUsIGxheWVyQXJlYS5oZWlnaHQoKSArIGZy
YW1lU2l6ZSk7CisgICAgbV9sYXllck9yaWdpbiA9IEZsb2F0UG9pbnQobGF5ZXJGbG9hdFJlY3Qu
eCgpLCBsYXllckZsb2F0UmVjdC55KCkpOworICAgIG1fdW5jbGlwcGVkTGF5ZXJPcmlnaW4gPSBG
bG9hdFBvaW50KHVuY2xpcHBlZExheWVyUmVjdC54KCksIHVuY2xpcHBlZExheWVyUmVjdC55KCkp
OworICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KGxheWVyRmxvYXRSZWN0KTsKK30KKyNlbmRp
ZgorCisjaWYgUExBVEZPUk0oQ0FJUk8pCiB2b2lkIENvbnRleHRTaGFkb3c6OmNhbGN1bGF0ZUxh
eWVyQm91bmRpbmdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0
JiBjbGlwUmVjdCkKIHsKICAgICAvLyBDYWxjdWxhdGUgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBi
bHVycmVkIGxheWVyLgpAQCAtMTczLDUgKzIyNiw2IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6Y2Fs
Y3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0
CiAgICAgICAgICAgICBtX2xheWVyUmVjdC5pbmZsYXRlKG1fdHlwZSA9PSBCbHVyU2hhZG93ID8g
bV9ibHVyRGlzdGFuY2UgOiAwKTsKICAgICB9CiB9CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hh
ZG93LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaAppbmRleCBm
YTc3OGFmYmNjZGRmYWZjM2Y0MGNkMDIzY2I3YWQ0ZjQ1MWVkNTJjLi5kMWQ1ZTg4MjlhZjc1MzVl
YTgzNDI5NjliNGIyMTE1NzQ5YTJmZDg2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbnRleHRTaGFkb3cuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bnRleHRTaGFkb3cuaApAQCAtMTA2LDI3ICsxMDYsNDMgQEAgcHVibGljOgogICAgIFBsYXRmb3Jt
Q29udGV4dCBiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBsYXllckFyZWEpOwogICAgIHZvaWQgZW5kU2hhZG93TGF5ZXIoUGxhdGZvcm1Db250ZXh0KTsK
ICAgICBzdGF0aWMgdm9pZCBwdXJnZVNjcmF0Y2hCdWZmZXIoKTsKKyAgICB2b2lkIHNldFNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgZW5hYmxlKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMgPSBlbmFibGU7IH0KKyAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29uc3Qg
eyByZXR1cm4gbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQogI2lmIFBMQVRGT1JNKENBSVJP
KQogICAgIHZvaWQgZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0UmFkaXVzID0gSW50U2l6ZSgp
LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodFJhZGl1cyA9IEludFNpemUoKSwgY29uc3QgSW50U2l6
ZSYgYm90dG9tTGVmdFJhZGl1cyA9IEludFNpemUoKSwgY29uc3QgSW50U2l6ZSYgYm90dG9tUmln
aHRSYWRpdXMgPSBJbnRTaXplKCkpOwogI2VuZGlmCi0KICNpZiBQTEFURk9STShRVCkKLSAgICBR
UG9pbnRGIG9mZnNldCgpIHsgcmV0dXJuIFFQb2ludEYobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZz
ZXQuaGVpZ2h0KCkpOyB9CisgICAgUVBvaW50RiBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBRUG9p
bnRGKG1fb2Zmc2V0LndpZHRoKCksIG1fb2Zmc2V0LmhlaWdodCgpKTsgfQogI2VuZGlmCiAKIAog
cHJpdmF0ZToKLSAgICBJbnRSZWN0IG1fbGF5ZXJSZWN0OworICAgIC8vIEJ1ZmZlciB0byB3aGVy
ZSB0aGUgdGVtcG9yYXJ5IHNoYWRvdyB3aWxsIGJlIGRyYXduIHRvLgogICAgIFBsYXRmb3JtSW1h
Z2UgbV9sYXllckltYWdlOworICAgIC8vIENvbnRleHQgdXNlZCB0byBwYWludCB0aGUgc2hhZG93
IHRvIHRoZSBsYXllciBpbWFnZS4KICAgICBQbGF0Zm9ybUNvbnRleHQgbV9sYXllckNvbnRleHQ7
Ci0KKyNpZiBQTEFURk9STShRVCkKKyAgICAvLyBTdWItcmVjdCBvZiBtX2xheWVySW1hZ2UgdGhh
dCBjb250YWlucyB0aGUgc2hhZG93IHBpeGVscy4KKyAgICBGbG9hdFJlY3QgbV9zb3VyY2VSZWN0
OworICAgIC8vIFRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgKHBvc3NpYmx5IGNsaXBwZWQpIGJvdW5k
aW5nIHJlY3QgdG8gZHJhdyB0aGUgc2hhZG93IHRvLgorICAgIEZsb2F0UG9pbnQgbV9sYXllck9y
aWdpbjsKKyAgICAvLyBUb3AtbGVmdCBjb3JuZXIgb2YgdGhlIHVuY2xpcHBlZCBib3VuZGluZyBy
ZWN0IHdoZXJlIHRoZSBzaGFkb3cgaW1hZ2UgbmVlZHMgdG8gYmUgZHJhd24uCisgICAgRmxvYXRQ
b2ludCBtX3VuY2xpcHBlZExheWVyT3JpZ2luOworI2VuZGlmCisjaWYgUExBVEZPUk0oQ0FJUk8p
CisgICAgLy8gRW5jbG9zaW5nIGludCByZWN0IHdoZXJlIHNoYWRvdyBuZWVkcyB0byBiZSBkcmF3
biB0byB1c2luZyB0aGUgbGF5ZXIgY29udGV4dC4KKyAgICBJbnRSZWN0IG1fbGF5ZXJSZWN0Owog
ICAgIC8vIFVzZWQgZm9yIHJlZmVyZW5jZSB3aGVuIGNhbnZhcyBzY2FsZSh4LHkpIHdhcyBjYWxs
ZWQuCiAgICAgRmxvYXRSZWN0IG1fdW5zY2FsZWRMYXllclJlY3Q7CisjZW5kaWYKKyAgICBib29s
IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CiAKICAgICB2b2lkIGJsdXJMYXllckltYWdlKHVu
c2lnbmVkIGNoYXIqLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGludCBzdHJpZGUpOwotICAg
IHZvaWQgY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoY29uc3QgRmxvYXRSZWN0JiBsYXllckFy
ZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKICNpZiBQTEFURk9STShDQUlSTykKKyAgICB2
b2lkIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVh
LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhv
dXRUaWxpbmcoUGxhdGZvcm1Db250ZXh0IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHNoYWRvd1Jl
Y3QsIGNvbnN0IEludFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0
UmFkaXVzLCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBJbnRTaXplJiBi
b3R0b21SaWdodFJhZGl1cywgZmxvYXQgYWxwaGEpOworI2Vsc2UKKyAgICBJbnRSZWN0IGNhbGN1
bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnN0IFBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKICNlbmRpZgogfTsKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwCmlu
ZGV4IGY3YzcwZjY5NWJjMGZjNDI1MGNjOWJkYzM1ZTlkNWU4ZTYzZjk3NDQuLjI2ZjEwZmRjZDg2
N2ZjMzU0OGI3NTM3YjY1MzBlNGVlNDQ1YzlmYzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHAKQEAgLTExNCwyNCArMTE0LDI5IEBAIFBs
YXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29u
dGV4dCBwLCBjb25zdCBGbG9hdFJlCiAgICAgZWxzZQogICAgICAgICBjbGlwUmVjdCA9IHAtPnRy
YW5zZm9ybSgpLmludmVydGVkKCkubWFwUmVjdChwLT53aW5kb3coKSk7CiAKLSAgICBtX3Vuc2Nh
bGVkTGF5ZXJSZWN0ID0gbGF5ZXJBcmVhOwotICAgIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KGxheWVyQXJlYSwgSW50UmVjdChjbGlwUmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qu
d2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpKTsKKyAgICAvLyBTZXQgbV9sYXllck9yaWdpbiBh
bmQgbV9zb3VyY2VSZWN0LgorICAgIEludFJlY3QgY2xpcChjbGlwUmVjdC54KCksIGNsaXBSZWN0
LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpOworICAgIEludFJlY3Qg
bGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QocCwgbGF5ZXJBcmVhLCBjbGlw
KTsKIAogICAgIC8vIERvbid0IHBhaW50IGlmIHdlIGFyZSB0b3RhbGx5IG91dHNpZGUgdGhlIGNs
aXAgcmVnaW9uLgotICAgIGlmIChtX2xheWVyUmVjdC5pc0VtcHR5KCkpCisgICAgaWYgKGxheWVy
UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgU2hhZG93QnVmZmVyKiBz
aGFkb3dCdWZmZXIgPSBzY3JhdGNoU2hhZG93QnVmZmVyKCk7Ci0gICAgUUltYWdlKiBzaGFkb3dJ
bWFnZSA9IHNoYWRvd0J1ZmZlci0+c2NyYXRjaEltYWdlKG1fbGF5ZXJSZWN0LnNpemUoKSk7Cisg
ICAgUUltYWdlKiBzaGFkb3dJbWFnZSA9IHNoYWRvd0J1ZmZlci0+c2NyYXRjaEltYWdlKGxheWVy
UmVjdC5zaXplKCkpOwogICAgIG1fbGF5ZXJJbWFnZSA9IFFJbWFnZSgqc2hhZG93SW1hZ2UpOwog
CiAgICAgbV9sYXllckNvbnRleHQgPSBuZXcgUVBhaW50ZXI7CiAgICAgbV9sYXllckNvbnRleHQt
PmJlZ2luKCZtX2xheWVySW1hZ2UpOwogICAgIG1fbGF5ZXJDb250ZXh0LT5zZXRGb250KHAtPmZv
bnQoKSk7Ci0gICAgbV9sYXllckNvbnRleHQtPnRyYW5zbGF0ZShtX29mZnNldC53aWR0aCgpLCBt
X29mZnNldC5oZWlnaHQoKSk7CiAKLSAgICAvLyBUaGUgb3JpZ2luIGlzIG5vdyB0aGUgdG9wIGxl
ZnQgY29ybmVyIG9mIHRoZSBzY3JhdGNoIGltYWdlLgotICAgIG1fbGF5ZXJDb250ZXh0LT50cmFu
c2xhdGUoLW1fbGF5ZXJSZWN0LngoKSwgLW1fbGF5ZXJSZWN0LnkoKSk7CisgICAgLy8gU2V0IHRo
ZSBvcmlnaW4gYXMgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgc2NyYXRjaCBpbWFnZSwgb3Is
IGluIGNhc2UgdGhlcmUncyBhIGNsaXBwZWQKKyAgICAvLyBvdXQgcmVnaW9uLCBzZXQgdGhlIG9y
aWdpbiBhY2NvcmRpbmdseSB0byB0aGUgZnVsbCBib3VuZGluZyByZWN0J3MgdG9wLWxlZnQgY29y
bmVyLgorICAgIGNvbnN0IGludCBmcmFtZVNpemUgPSAobV9zb3VyY2VSZWN0LndpZHRoKCkgLSBs
YXllckFyZWEud2lkdGgoKSkgLyAyOworICAgIGNvbnN0IEZsb2F0U2l6ZSBjbGlwcGVkT2Zmc2V0
ID0gbV91bmNsaXBwZWRMYXllck9yaWdpbiAtIG1fbGF5ZXJPcmlnaW47CisgICAgY29uc3QgZmxv
YXQgdHJhbnNsYXRpb25YID0gLWxheWVyQXJlYS54KCkgKyBmcmFtZVNpemUgLSBhYnMoY2xpcHBl
ZE9mZnNldC53aWR0aCgpKTsKKyAgICBjb25zdCBmbG9hdCB0cmFuc2xhdGlvblkgPSAtbGF5ZXJB
cmVhLnkoKSArIGZyYW1lU2l6ZSAtIGFicyhjbGlwcGVkT2Zmc2V0LmhlaWdodCgpKTsKKyAgICBt
X2xheWVyQ29udGV4dC0+dHJhbnNsYXRlKHRyYW5zbGF0aW9uWCwgdHJhbnNsYXRpb25ZKTsKIAog
ICAgIHJldHVybiBtX2xheWVyQ29udGV4dDsKIH0KQEAgLTE1NSwxMyArMTYwLDcgQEAgdm9pZCBD
b250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCkKICAgICAgICAg
cC5lbmQoKTsKICAgICB9CiAKLSAgICBjb25zdCBRVHJhbnNmb3JtIHRyYW5zZm9ybSA9IHAtPnRy
YW5zZm9ybSgpOwotICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5nKCkpIHsKLSAgICAgICAgcXJl
YWwgeCA9IG1fdW5zY2FsZWRMYXllclJlY3QueCgpICsgbV9vZmZzZXQud2lkdGgoKSAgLyB0cmFu
c2Zvcm0ubTExKCkgLSBtX2JsdXJEaXN0YW5jZTsKLSAgICAgICAgcXJlYWwgeSA9IG1fdW5zY2Fs
ZWRMYXllclJlY3QueSgpICsgbV9vZmZzZXQuaGVpZ2h0KCkgLyB0cmFuc2Zvcm0ubTIyKCkgLSBt
X2JsdXJEaXN0YW5jZTsKLSAgICAgICAgcC0+ZHJhd0ltYWdlKFFQb2ludEYoeCwgeSksIG1fbGF5
ZXJJbWFnZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHAtPmRyYXdJbWFnZShtX2xheWVyUmVjdC50
b3BMZWZ0KCksIG1fbGF5ZXJJbWFnZSk7CisgICAgcC0+ZHJhd0ltYWdlKG1fbGF5ZXJPcmlnaW4s
IG1fbGF5ZXJJbWFnZSwgbV9zb3VyY2VSZWN0KTsKIAogICAgIHNjcmF0Y2hTaGFkb3dCdWZmZXIo
KS0+c2NoZWR1bGVQdXJnZSgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAppbmRleCAyZjhhOTFmYjNhNGQ5YmRkY2ViYjEwZjIw
MDUwNGU2NGE1NmRlNjM2Li5kNWU3Y2NkMzZlMmMzZjQ1YWIzYjkxYjc4NzFlMTg2MDJmYTUzYWU5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4
dFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4
dFF0LmNwcApAQCAtNTMsNyArNTMsNiBAQAogI2luY2x1ZGUgIlRyYW5zcGFyZW5jeUxheWVyLmgi
CiAKICNpbmNsdWRlIDxRQnJ1c2g+Ci0jaW5jbHVkZSA8UURlYnVnPgogI2luY2x1ZGUgPFFHcmFk
aWVudD4KICNpbmNsdWRlIDxRUGFpbnREZXZpY2U+CiAjaW5jbHVkZSA8UVBhaW50RW5naW5lPgpA
QCAtMTc1LDYgKzE3NCwyMiBAQCBzdGF0aWMgaW5saW5lIFF0OjpGaWxsUnVsZSB0b1F0RmlsbFJ1
bGUoV2luZFJ1bGUgcnVsZSkKICAgICByZXR1cm4gUXQ6Ok9kZEV2ZW5GaWxsOwogfQogCitzdGF0
aWMgaW5saW5lIGJvb2wgbXVzdFVzZUNvbnRleHRTaGFkb3coUVBhaW50ZXIqIHBhaW50ZXIsIENv
bnRleHRTaGFkb3cqIHNoYWRvdykKK3sKKyAgICBpZiAoc2hhZG93LT5tX3R5cGUgPT0gQ29udGV4
dFNoYWRvdzo6Qmx1clNoYWRvdykKKyAgICAgICAgLy8gV2UgY2FuJ3QgYXZvaWQgQ29udGV4dFNo
YWRvdywgc2luY2UgdGhlIHNoYWRvdyBoYXMgYmx1ci4KKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgaWYgKCFzaGFkb3ctPnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkpCisgICAgICAgIC8vIFdl
IGNhbiBhdm9pZCBDb250ZXh0U2hhZG93IGFuZCBvcHRpbWl6ZSwgc2luY2Ugd2UncmUgbm90IGRy
YXdpbmcgb24gYSBjYW52YXMgYW5kIGJveAorICAgICAgICAvLyBzaGFkb3dzIGFyZSBhZmZlY3Rl
ZCBieSB0aGUgdHJhbnNmb3JtYXRpb24gbWF0cml4LgorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKHBhaW50ZXItPnRyYW5zZm9ybSgpLmlzSWRlbnRpdHkoKSkKKyAgICAgICAgLy8gV2Ug
Y2FuIGF2b2lkIENvbnRleHRTaGFkb3csIHNpbmNlIHRoZXJlIGFyZSBubyB0cmFuc2Zvcm1hdGlv
bnMgdG8gYXBwbHkgdG8gdGhlIGNhbnZhcy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8v
IE90aGVyd2lzZSwgbm8gY2hhbmNlIGF2b2lkaW5nIENvbnRleHRTaGFkb3cuCisgICAgcmV0dXJu
IHRydWU7Cit9CisKIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSA6IHB1Ymxp
YyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlKFFQYWludGVyKiwgY29uc3QgUUNvbG9yJiBpbml0aWFsU29saWRDb2xvcik7CkBAIC01MDYs
MzMgKzUyMSwyMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0aCYg
cGF0aCkKIAogICAgIGlmIChtX2RhdGEtPmhhc1NoYWRvdygpKSB7CiAgICAgICAgIENvbnRleHRT
aGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFkb3coKTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bV90
eXBlICE9IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cKLSAgICAgICAgICAgICYmICFtX3N0YXRl
LmZpbGxQYXR0ZXJuICYmICFtX3N0YXRlLmZpbGxHcmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RV
c2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykgfHwgbV9zdGF0ZS5maWxsUGF0dGVybiB8fCBtX3N0
YXRlLmZpbGxHcmFkaWVudCkKICAgICAgICAgewotICAgICAgICAgICAgUVBvaW50RiBvZmZzZXQg
PSBzaGFkb3ctPm9mZnNldCgpOwotICAgICAgICAgICAgY29uc3QgUVRyYW5zZm9ybSYgdHJhbnNm
b3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0gICAgICAgICAgICBpZiAodHJhbnNmb3JtLmlzU2NhbGlu
ZygpKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgc2NhbGluZyBpcyByZXF1aXJlZCwgZmluZCB0
aGUgbmV3IGNvb3JkIGZvciBzaGFkb3cgb3JpZ2luLAotICAgICAgICAgICAgICAgIC8vIHNvIHRo
YXQgdGhlIHJlbGF0aXZlIG9mZnNldCB0byBpdHMgc2hhcGUgaXMga2VwdC4KLSAgICAgICAgICAg
ICAgICBRUG9pbnRGIHRyYW5zbGF0ZWRPZmZzZXQob2Zmc2V0LngoKSAvIHRyYW5zZm9ybS5tMTEo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LnkoKSAv
IHRyYW5zZm9ybS5tMjIoKSk7Ci0gICAgICAgICAgICAgICAgcGxhdGZvcm1QYXRoLnRyYW5zbGF0
ZSh0cmFuc2xhdGVkT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBwLT5maWxsUGF0aChwbGF0Zm9y
bVBhdGgsIFFDb2xvcihzaGFkb3ctPm1fY29sb3IpKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9y
bVBhdGgudHJhbnNsYXRlKC10cmFuc2xhdGVkT2Zmc2V0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG9mZnNldCk7Ci0gICAgICAgICAgICAgICAg
cC0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3Ioc2hhZG93LT5tX2NvbG9yKSk7Ci0gICAg
ICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZzZXQpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ct
PmJlZ2luU2hhZG93TGF5ZXIocCwgcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKSk7CiAg
ICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1Bh
aW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJj
ZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFBhdGgocGxhdGZvcm1QYXRo
LCBRQ29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xvcikpOwogICAgICAgICAgICAgICAgIHNoYWRv
dy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBRUG9pbnRGIG9mZnNldCA9IHNoYWRvdy0+b2Zmc2V0KCk7CisgICAgICAgICAg
ICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKKyAgICAgICAgICAgIHAtPmZpbGxQYXRoKHBsYXRmb3Jt
UGF0aCwgUUNvbG9yKHNoYWRvdy0+bV9jb2xvcikpOworICAgICAgICAgICAgcC0+dHJhbnNsYXRl
KC1vZmZzZXQpOwogICAgICAgICB9Ci0KICAgICB9CiAgICAgaWYgKG1fc3RhdGUuZmlsbFBhdHRl
cm4pIHsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGFmZmluZTsKQEAgLTU1NywyOCArNTU5LDgg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAog
ICAgIGlmIChtX2RhdGEtPmhhc1NoYWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNo
YWRvdyA9IGNvbnRleHRTaGFkb3coKTsKLQotICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgIT0g
Q29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdwotICAgICAgICAgICAgJiYgIW1fc3RhdGUuc3Ryb2tl
UGF0dGVybiAmJiAhbV9zdGF0ZS5zdHJva2VHcmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VD
b250ZXh0U2hhZG93KHAsIHNoYWRvdykgfHwgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuIHx8IG1fc3Rh
dGUuc3Ryb2tlR3JhZGllbnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFFQZW4gc2hhZG93UGVu
KHBlbik7Ci0gICAgICAgICAgICBzaGFkb3dQZW4uc2V0Q29sb3IobV9kYXRhLT5zaGFkb3cubV9j
b2xvcik7Ci0gICAgICAgICAgICBRUG9pbnRGIG9mZnNldCA9IHNoYWRvdy0+b2Zmc2V0KCk7Ci0g
ICAgICAgICAgICBjb25zdCBRVHJhbnNmb3JtJiB0cmFuc2Zvcm0gPSBwLT50cmFuc2Zvcm0oKTsK
LSAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5nKCkpIHsKLSAgICAgICAgICAgICAg
ICAvLyBJZiBzY2FsaW5nIGlzIHJlcXVpcmVkLCBmaW5kIHRoZSBuZXcgY29vcmQgZm9yIHNoYWRv
dyBvcmlnaW4sCi0gICAgICAgICAgICAgICAgLy8gc28gdGhhdCB0aGUgcmVsYXRpdmUgb2Zmc2V0
IHRvIGl0cyBzaGFwZSBpcyBrZXB0LgotICAgICAgICAgICAgICAgIFFQb2ludEYgdHJhbnNsYXRl
ZE9mZnNldChvZmZzZXQueCgpIC8gdHJhbnNmb3JtLm0xMSgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQueSgpIC8gdHJhbnNmb3JtLm0yMigpKTsKLSAg
ICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKHRyYW5zbGF0ZWRPZmZzZXQpOwot
ICAgICAgICAgICAgICAgIHAtPnN0cm9rZVBhdGgocGxhdGZvcm1QYXRoLCBzaGFkb3dQZW4pOwot
ICAgICAgICAgICAgICAgIHBsYXRmb3JtUGF0aC50cmFuc2xhdGUoLXRyYW5zbGF0ZWRPZmZzZXQp
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zm
c2V0KTsKLSAgICAgICAgICAgICAgICBwLT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgc2hhZG93
UGVuKTsKLSAgICAgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW9mZnNldCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBGbG9hdFJlY3QgYm91bmRpbmdSZWN0
ID0gcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKTsKICAgICAgICAgICAgIGJvdW5kaW5n
UmVjdC5pbmZsYXRlKHBlbi5taXRlckxpbWl0KCkgKyBwZW4ud2lkdGhGKCkpOwogICAgICAgICAg
ICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwg
Ym91bmRpbmdSZWN0KTsKQEAgLTU4Nyw2ICs1NjksMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgICAgICBzaGFkb3dQYWlu
dGVyLT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgcGVuKTsKICAgICAgICAgICAgICAgICBzaGFk
b3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgUVBlbiBzaGFkb3dQZW4ocGVuKTsKKyAgICAgICAgICAgIHNoYWRvd1Blbi5z
ZXRDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9yKTsKKyAgICAgICAgICAgIFFQb2ludEYgb2Zm
c2V0ID0gc2hhZG93LT5vZmZzZXQoKTsKKyAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShvZmZzZXQp
OworICAgICAgICAgICAgcC0+c3Ryb2tlUGF0aChwbGF0Zm9ybVBhdGgsIHNoYWRvd1Blbik7Cisg
ICAgICAgICAgICBwLT50cmFuc2xhdGUoLW9mZnNldCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTcwNiw3ICs2OTUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogICAgICAgICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwgYnJ1c2gp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChtX2RhdGEtPmhhc1NoYWRvdygpKSB7Ci0gICAg
ICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgPT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdykg
eworICAgICAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykpIHsKICAg
ICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFk
b3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAgICAgICAgaWYgKHNoYWRvd1Bh
aW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0T3BhY2l0eShz
dGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5tX2NvbG9yLmFscGhhKCkpIC8gMjU1KTsKQEAgLTcx
NCwxNyArNzAzLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiAgICAgICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIo
cCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAvLyBTb2xpZCByZWN0YW5nbGUgZmlsbCB3aXRoIG5vIGJsdXIgc2hhZG93IGNhbiBiZSBk
b25lIGZhc3RlcgotICAgICAgICAgICAgICAgIC8vIHdpdGhvdXQgdXNpbmcgdGhlIHNoYWRvdyBs
YXllciBhdCBhbGwuCisgICAgICAgICAgICAgICAgLy8gU29saWQgcmVjdGFuZ2xlIGZpbGwgd2l0
aCBubyBibHVyIHNoYWRvdyBvciB0cmFuc2Zvcm1hdGlvbnMgYXBwbGllZCBjYW4gYmUgZG9uZQor
ICAgICAgICAgICAgICAgIC8vIGZhc3RlciB3aXRob3V0IHVzaW5nIHRoZSBzaGFkb3cgbGF5ZXIg
YXQgYWxsLgogICAgICAgICAgICAgICAgIFFDb2xvciBzaGFkb3dDb2xvciA9IHNoYWRvdy0+bV9j
b2xvcjsKICAgICAgICAgICAgICAgICBzaGFkb3dDb2xvci5zZXRBbHBoYUYoc2hhZG93Q29sb3Iu
YWxwaGFGKCkgKiBwLT5icnVzaCgpLmNvbG9yKCkuYWxwaGFGKCkpOwotICAgICAgICAgICAgICAg
IGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSA9IHAtPnRyYW5zZm9ybSgpOwotICAgICAgICAg
ICAgICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
cC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJhbnNsYXRlZChzdGF0aWNfY2FzdDxxcmVhbD4o
c2hhZG93LT5vZmZzZXQoKS54KCkpIC8gdHJhbnNmb3JtLm0xMSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHFy
ZWFsPihzaGFkb3ctPm9mZnNldCgpLnkoKSAgLyB0cmFuc2Zvcm0ubTIyKCkpKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93Q29sb3IpOwotICAgICAgICAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgICAgICAgICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdC50cmFu
c2xhdGVkKHNoYWRvdy0+b2Zmc2V0KCkpLCBzaGFkb3dDb2xvcik7CisgICAgICAgICAgICAgICAg
cC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJhbnNsYXRlZChzaGFkb3ctPm9mZnNldCgpKSwg
c2hhZG93Q29sb3IpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTc0NCwxOCArNzI3
LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAKICAgICBpZiAobV9kYXRhLT5oYXNTaGFk
b3coKSkgewogICAgICAgICBDb250ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7
Ci0KLSAgICAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6OkJsdXJTaGFk
b3cpIHsKLSAgICAgICAgICAgIC8vIFdlIGRvIG5vdCBuZWVkIGFueSBsYXllciBmb3Igc2ltcGxl
IHNoYWRvdy4KLSAgICAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0
ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvdy0+bV9jb2xvcik7Ci0gICAgICAgIH0gZWxzZSB7
CisgICAgICAgIGlmIChtdXN0VXNlQ29udGV4dFNoYWRvdyhwLCBzaGFkb3cpKSB7CiAgICAgICAg
ICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihw
LCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAg
ICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6
Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+
ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIHNoYWRvdy0+bV9jb2xvcik7CiAgICAgICAgICAgICAg
ICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRy
YW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvdy0+bV9jb2xvcik7CiAgICAgfQogCiAg
ICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIG1fZGF0YS0+c29saWRDb2xvcik7CkBAIC03
NzEsMTkgKzc1MSwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZgogICAgIFFQYWludGVyKiBw
ID0gbV9kYXRhLT5wKCk7CiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAg
Q29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotCi0gICAgICAgIGlmIChz
aGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93KSB7Ci0gICAgICAgICAg
ICAvLyBXZSBkbyBub3QgbmVlZCBhbnkgbGF5ZXIgZm9yIHNpbXBsZSBzaGFkb3cuCi0gICAgICAg
ICAgICBwLT50cmFuc2xhdGUobV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOwotICAgICAgICAgICAg
cC0+ZmlsbFBhdGgocGF0aC5wbGF0Zm9ybVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1f
Y29sb3IpKTsKLSAgICAgICAgICAgIHAtPnRyYW5zbGF0ZSgtbV9kYXRhLT5zaGFkb3cub2Zmc2V0
KCkpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAobXVzdFVzZUNvbnRleHRTaGFkb3co
cCwgc2hhZG93KSkgewogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFk
b3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcmVjdCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFp
bnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9k
ZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hh
ZG93UGFpbnRlci0+ZmlsbFBhdGgocGF0aC5wbGF0Zm9ybVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+
c2hhZG93Lm1fY29sb3IpKTsKICAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVy
KHApOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcC0+dHJh
bnNsYXRlKG1fZGF0YS0+c2hhZG93Lm9mZnNldCgpKTsKKyAgICAgICAgICAgIHAtPmZpbGxQYXRo
KHBhdGgucGxhdGZvcm1QYXRoKCksIFFDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9yKSk7Cisg
ICAgICAgICAgICBwLT50cmFuc2xhdGUoLW1fZGF0YS0+c2hhZG93Lm9mZnNldCgpKTsKICAgICAg
ICAgfQogICAgIH0KICAgICBwLT5maWxsUGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3Io
Y29sb3IpKTsKQEAgLTk1Myw5ICs5MzEsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBs
YXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgYmx1ciwgY29uc3QKICAg
ICAgICAgLy8gV2UgZmxpcCB0aGUgaGVpZ2h0IHNpbmNlIENHIGFuZCBIVE1MNSBDYW52YXMgaGF2
ZSBvcHBvc2l0ZSBZIGF4aXMKICAgICAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBGbG9hdFNp
emUoc2l6ZS53aWR0aCgpLCAtc2l6ZS5oZWlnaHQoKSk7CiAgICAgICAgIG1fZGF0YS0+c2hhZG93
ID0gQ29udGV4dFNoYWRvdyhjb2xvciwgYmx1ciwgRmxvYXRTaXplKHNpemUud2lkdGgoKSwgLXNp
emUuaGVpZ2h0KCkpKTsKLSAgICB9IGVsc2UgeworICAgIH0gZWxzZQogICAgICAgICBtX2RhdGEt
PnNoYWRvdyA9IENvbnRleHRTaGFkb3coY29sb3IsIGJsdXIsIEZsb2F0U2l6ZShzaXplLndpZHRo
KCksIHNpemUuaGVpZ2h0KCkpKTsKLSAgICB9CisKKyAgICBtX2RhdGEtPnNoYWRvdy5zZXRTaGFk
b3dzSWdub3JlVHJhbnNmb3JtcyhtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyUGxhdGZvcm1TaGFkb3coKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76635</attachid>
            <date>2010-12-15 00:07:58 -0800</date>
            <delta_ts>2010-12-15 14:33:40 -0800</delta_ts>
            <desc>Add suggestions from comment #29</desc>
            <filename>bug-50422-20101215000756.patch</filename>
            <type>text/plain</type>
            <size>36048</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzY2JiODI5OGU0NGE4OWNiYmUyMGFmZThmZTUwZDk3OTg4MzJhMDRkLi45NDkwM2Vh
OTJhMTc4ZDAzMjBjN2QwNGI2N2ZiNThjZDU0ZDk4YzVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMTAtMTItMTMgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBDYW52YXMgc2hh
ZG93IG9mZnNldCBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IGFueSB0cmFuc2Zvcm1hdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0MjIKKwor
ICAgICAgICBPbiBhIGNhbnZhcyBjb250ZXh0LCBzaGFkb3dzIGFyZSBjdXJyZW50bHkgYWZmZWN0
ZWQgYnkgYWxsCisgICAgICAgIHRyYW5zZm9ybWF0aW9ucyBleGNlcHQgc2NhbGluZy4gQWNjb3Jk
aW5nIHRvIHRoZSBzcGVjOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2Vi
LWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbCNzaGFk
b3dzCisKKyAgICAgICAgIlRoZSBzaGFkb3dPZmZzZXRYIGFuZCBzaGFkb3dPZmZzZXRZIGF0dHJp
YnV0ZXMgc3BlY2lmeSB0aGUgZGlzdGFuY2UKKyAgICAgICAgdGhhdCB0aGUgc2hhZG93IHdpbGwg
YmUgb2Zmc2V0IGluIHRoZSBwb3NpdGl2ZSBob3Jpem9udGFsIGFuZCBwb3NpdGl2ZQorICAgICAg
ICB2ZXJ0aWNhbCBkaXN0YW5jZSByZXNwZWN0aXZlbHkuIFRoZWlyIHZhbHVlcyBhcmUgaW4gY29v
cmRpbmF0ZSBzcGFjZQorICAgICAgICB1bml0cy4gVGhleSBhcmUgbm90IGFmZmVjdGVkIGJ5IHRo
ZSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4iCisKKyAgICAgICAgTk9URTogdGhpcyBh
cHBsaWVzIG9ubHkgdG8gY2FudmFzLCBub3QgdG8gYm94IHNoYWRvd3MuCisKKyAgICAgICAgQWRk
IG5ldyB0ZXN0IHRvIGVuc3VyZSB0aGF0IHNoYWRvd3MgYXJlIGNvcnJlY3RseSB0cmFuc2Zvcm1l
ZCBrZWVwaW5nCisgICAgICAgIHRoZSByZWxhdGl2ZSBvZmZzZXQgdG8gdGhlIHNoYXBlLgorCisg
ICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVj
dC1zaGFkb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52
YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cuanM6Cisg
ICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUmVjdC1z
aGFkb3cuanM6CisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2Fs
ZS1zdHJva2VQYXRoLXNoYWRvdy5qczogTm93IHVzaW5nCisgICAgICAgICAgYSBsaW5lV2lkdGgg
PiAxIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHRlc3QgYW5kIG1vcmUgZmFpciBhbW9uZyBhbGwKKyAg
ICAgICAgICBwb3J0cywgc2luY2UgdGhlcmUgY2FuIGJlIGRpZmZlcmVudCB0cmFuc2Zvcm1hdGlv
biBzbW9vdGhuZXNzIG9yCisgICAgICAgICAgYWxpYXNpbmcgc2V0dGluZ3MuCisgICAgICAgICog
ZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRv
dy5qczogQWRkZWQuCisKIDIwMTAtMTItMTQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3ctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgt
c2hhZG93LWV4cGVjdGVkLnR4dAppbmRleCBlNTYyMDFmNzM4N2U0NjJmNzkyMjVlNjVmOGEzNDAx
ZTJlMzIzNmZlLi5hMzM3YzRiNjNmZjFkZGZlZWQ0NDg4ZTM1MWZmZGFlMTQ5ZWE4NTE2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1z
aGFkb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1z
Y2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQKQEAgLTMwLDI3ICszMCwyNyBAQCBQ
QVNTIGRbM10gaXMgYXJvdW5kIDc2CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAog
UEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjAKK1BBU1MgZFszXSBpcyBhcm91
bmQgMTQ5CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAK
LVBBU1MgZFszXSBpcyBhcm91bmQgMjIKK1BBU1MgZFszXSBpcyBhcm91bmQgMTE2CiBQQVNTIGRb
MF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBh
cm91bmQgMjgKK1BBU1MgZFszXSBpcyBhcm91bmQgMTE1CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNT
IGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjIKK1BBU1Mg
ZFszXSBpcyBhcm91bmQgNzAKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNT
IGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAxNQorUEFTUyBkWzNdIGlzIGFyb3VuZCA3
MAogUEFTUyBkWzBdIGlzIDI1NQogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1QQVNT
IGRbM10gaXMgYXJvdW5kIDE3CitQQVNTIGRbM10gaXMgYXJvdW5kIDY5CiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVj
dC1zaGFkb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxM2I4OTEyZjBkMmE3ZjAzOTE5NjNj
ZjY5YzBiNzRlNmI0MzE5NGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3ctZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNTcgQEAKK0Vuc3VyZSBjb3JyZWN0IGJlaGF2aW9yIG9mIGNhbnZhcyB3aXRoIGZpbGxS
ZWN0K3NoYWRvdyBhZnRlciB0cmFuc2xhdGlvbityb3RhdGlvbitzY2FsaW5nLiBBIGJsdWUgYW5k
IHJlZCBjaGVja2VyZWQgcGF0dGVybiBzaG91bGQgYmUgZGlzcGxheWVkLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BB
U1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgMjU1CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRb
MV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyAyNTUKK1BBU1MgZFswXSBpcyAy
NTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIDI1NQorUEFT
UyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10g
aXMgYXJvdW5kIDEyNworUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsy
XSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDEyNworUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBk
WzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDEyNworUEFTUyBk
WzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMg
YXJvdW5kIDEwNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBp
cyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDEwNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFd
IGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDgzCitQQVNTIGRbMF0g
aXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91
bmQgMzYKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAor
UEFTUyBkWzNdIGlzIGFyb3VuZCAzNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAK
K1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDM2CitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yZmM0ZTlhODQ0ZTdiZjY3ZmZlZTVlYmY1OGQ1MGRiZjQyYTc4YTkw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5z
Zm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jt
cy1maWxsUmVjdC1zaGFkb3cuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1m
aWxsUGF0aC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMv
Y2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcwppbmRleCAwNTI4NmY1MzI4YjVlNTk5ODMy
NDM1MDc1ZGJiZjFlYzE3ZTVhMjA3Li4zY2EzMzIxOTkyOGRkZDFiZjIwMjFjNGEwMjRkNzMwOGJj
Yjg2NTMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMv
Y2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcwpAQCAtNzks
MTMgKzc5LDEzIEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAn
KTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTks
IDI5NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgMjk1LCAxLCAxKS5k
YXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBz
aG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0
eC5nZXRJbWFnZURhdGEoMjAwLCAyOTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0
YSgyMDAsIDI5OCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxk
QmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwpAQCAtOTgsMTMgKzk4LDEz
IEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3Vs
ZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDA1
LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCA0MDUsIDEsIDEpLmRhdGE7
CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3Vs
ZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBj
dHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURh
dGEoMjA1LCA0OTgsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3Vs
ZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qt
c2hhZG93LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1z
Y2FsZS1maWxsUmVjdC1zaGFkb3cuanMKaW5kZXggOTlhMWU1OTRiZDU5ZjczNjdmM2MzMGRlYTE2
NTFlMzJmM2Q0ZGU2ZS4uZjQ5NWM5MTA1NWJiYTFkY2IxNDY4MzJlMjgxNjMwNzRhMDQ1ZTgyOSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1z
Y2FsZS1maWxsUmVjdC1zaGFkb3cuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2Ny
aXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUmVjdC1zaGFkb3cuanMKQEAgLTU4LDEzICs1OCwx
MyBAQCBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91
bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCAyOTUsIDEs
IDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyOTgsIDI5OCwgMSwgMSkuZGF0YTsKIHNo
b3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUo
J2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1h
Z2VEYXRhKDIwMCwgMjk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAxLCAy
OTgsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFd
JywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKQEAgLTc3LDEzICs3NywxMyBAQCBzaG91
bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3Vu
ZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDQwNSwgMSwgMSku
ZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxk
QmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsy
XScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldElt
YWdlRGF0YSgyMDUsIDQ5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwg
NDk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsx
XScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93
LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1z
dHJva2VQYXRoLXNoYWRvdy5qcwppbmRleCA1MTk4ZDk0MTUxN2RhYjkyYmMyODkxYzgzNzRmMzVi
YTFhODlkNTc5Li45MWI5MjdmOTVmYTg3ZGU1ZjlkNjU1ZjNiMmZmZDJmNGI1ZGFkNTM2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxl
LXN0cm9rZVBhdGgtc2hhZG93LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Njcmlw
dC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMKQEAgLTM1LDYgKzM1LDcg
QEAgY3R4LnNjYWxlKDIsIDIpOwogY3R4LnNoYWRvd09mZnNldFggPSAxMDA7CiBjdHguc2hhZG93
T2Zmc2V0WSA9IDEwMDsKIGN0eC5zdHJva2VTdHlsZSA9ICdyZ2JhKDAsIDAsIDI1NSwgMSknOwor
Y3R4LmxpbmVXaWR0aCA9IDU7CiAKIGN0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwg
MS4wKSc7CiBjdHguYmVnaW5QYXRoKCk7CkBAIC03Niw3OSArNzcsNzkgQEAgY3R4LnN0cm9rZSgp
OwogdmFyIGQ7IC8vIGltYWdlRGF0YS5kYXRhCiAKIC8vIFZlcmlmeSBzb2xpZCBzaGFkb3cuCi1k
ID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDIwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1h
Z2VEYXRhKDI1MCwgMjAwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBz
aG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgn
ZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCAyOTUsIDEsIDEpLmRh
dGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzMDAsIDI5MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJl
KCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0n
LCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRh
KDIwMSwgMjk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyNTAsIDEs
IDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAn
KTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCiAv
LyBWZXJpZnkgc29saWQgYWxwaGEgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCA0
MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDQwNSwgMSwgMSkuZGF0
YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9
IGN0eC5nZXRJbWFnZURhdGEoMjk5LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdl
RGF0YSgyMDEsIDUwMCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hv
dWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91
bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTksIDEsIDEp
LmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzMDAsIDQ5OSwgMSwgMSkuZGF0YTsKIHNob3Vs
ZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
Ml0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAogLy8gVmVyaWZ5IGJs
dXJyeSBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgzOTQsIDIwOCwgMSwgMSkuZGF0YTsK
K2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQwNCwgMjEwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2Rb
MF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcw
Jyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcyMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10n
LCAnMTQ5Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwMywgMzAxLCAxLCAxKS5kYXRhOwor
ZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA1LCAyNTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFsw
XScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAn
KTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzIyJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScs
ICcxMTYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA0LCAyNTAsIDEsIDEpLmRhdGE7Citk
ID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDIwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBd
JywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcp
Owotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjgnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywg
JzExNScpOwogCiAvLyBWZXJpZnkgYmx1cnJ5IGFscGhhIHNoYWRvdy4KLWQgPSBjdHguZ2V0SW1h
Z2VEYXRhKDQwNSwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA1LCA0
NTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFd
JywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywg
JzIyJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICc3MCcpOwogCi1kID0gY3R4LmdldEltYWdl
RGF0YSg0MTUsIDQ5NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwNSwgNDUw
LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScs
ICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcx
NScpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzAnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURh
dGEoNDUwLCA1MDQsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDQwNSwg
MSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAn
MCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTcn
KTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzY5Jyk7CiAKIHZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRl
c3RzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5qcyBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjY3ZjI0NDNjYmU5MDYwMDUzYmMzOTkwMjc5ODVlZTVmMDczNzllZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuanMKQEAgLTAsMCArMSwxMzMgQEAKK2Rl
c2NyaXB0aW9uKCJFbnN1cmUgY29ycmVjdCBiZWhhdmlvciBvZiBjYW52YXMgd2l0aCBmaWxsUmVj
dCtzaGFkb3cgYWZ0ZXIgdHJhbnNsYXRpb24rcm90YXRpb24rc2NhbGluZy4gQSBibHVlIGFuZCBy
ZWQgY2hlY2tlcmVkIHBhdHRlcm4gc2hvdWxkIGJlIGRpc3BsYXllZC4iKTsKKworZnVuY3Rpb24g
cHJpbnQobWVzc2FnZSwgY29sb3IpCit7CisgICAgdmFyIHBhcmFncmFwaCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHBhcmFncmFwaC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgcGFyYWdyYXBoLnN0eWxlLmZvbnRGYW1pbHkg
PSAibW9ub3NwYWNlIjsKKyAgICBpZiAoY29sb3IpCisgICAgICAgIHBhcmFncmFwaC5zdHlsZS5j
b2xvciA9IGNvbG9yOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBw
ZW5kQ2hpbGQocGFyYWdyYXBoKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBcm91bmQoYSwgYikK
K3sKKyAgICB2YXIgZXZhbEE7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbEEgPSBldmFsKGEpOwor
ICAgIH0gY2F0Y2goZSkgeworICAgICAgICBldmFsQSA9IGU7CisgICAgfQorCisgICAgaWYgKE1h
dGguYWJzKGV2YWxBIC0gYikgPCAxMCkKKyAgICAgICAgcHJpbnQoIlBBU1MgIiArIGEgKyAiIGlz
IGFyb3VuZCAiICsgYiAsICJncmVlbiIpCisgICAgZWxzZQorICAgICAgICBwcmludCgiRkFJTCAi
ICsgYSArICIgaXMgbm90IGFyb3VuZCAiICsgYiArICIgKGFjdHVhbDogIiArIGV2YWxBICsgIiki
LCAicmVkIik7Cit9CisKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52
YXMnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTsKK2NhbnZhcy5zZXRBdHRy
aWJ1dGUoJ3dpZHRoJywgJzYwMCcpOworY2FudmFzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgJzYw
MCcpOwordmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworCitjdHguZmlsbFN0eWxl
ID0gJ3JnYmEoMCwgMCwgMjU1LCAxLjApJzsKK2N0eC5zaGFkb3dPZmZzZXRYID0gMTAwOworY3R4
LnNoYWRvd09mZnNldFkgPSAxMDA7CisKK2N0eC50cmFuc2xhdGUoLTEwMCwgLTEwMCk7CitjdHgu
cm90YXRlKE1hdGguUEkvMik7CitjdHguc2NhbGUoMiwgMik7CisKK2N0eC5zaGFkb3dDb2xvciA9
ICdyZ2JhKDI1NSwgMCwgMCwgMS4wKSc7CitjdHguZmlsbFJlY3QoMTAwLCAtMTUwLCA1MCwgNTAp
OworCitjdHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDAuNSknOworY3R4LmZpbGxS
ZWN0KDIwMCwgLTE1MCwgNTAsIDUwKTsKKworY3R4LnNoYWRvd0JsdXIgPSA1OworY3R4LnNoYWRv
d0NvbG9yID0gJ3JnYmEoMjU1LCAwLCAwLCAxLjApJzsKK2N0eC5maWxsUmVjdCgxMDAsIC0yNTAs
IDUwLCA1MCk7CisKK2N0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwgMC41KSc7Citj
dHguZmlsbFJlY3QoMjAwLCAtMjUwLCA1MCwgNTApOworCit2YXIgZDsgLy8gaW1hZ2VEYXRhLmRh
dGEKKworLy8gVmVyaWZ5IHNvbGlkIHNoYWRvdy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwg
MjA1LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsx
XScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZSgnZFszXScsICcyNTUn
KTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCAyOTgsIDEsIDEpLmRhdGE7CitzaG91bGRC
ZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJd
JywgJzAnKTsKK3Nob3VsZEJlKCdkWzNdJywgJzI1NScpOworCitkID0gY3R4LmdldEltYWdlRGF0
YSgyMDEsIDI5OCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxk
QmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmUoJ2RbM10n
LCAnMjU1Jyk7CisKKy8vIFZlcmlmeSBzb2xpZCBhbHBoYSBzaGFkb3cuCitkID0gY3R4LmdldElt
YWdlRGF0YSgyMDEsIDQwMSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOwor
c2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVB
cm91bmQoJ2RbM10nLCAnMTI3Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDUwLCAx
LCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcw
Jyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMjcn
KTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTgsIDEsIDEpLmRhdGE7CitzaG91bGRC
ZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJd
JywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzEyNycpOworCisvLyBWZXJpZnkgYmx1
cnJ5IHNoYWRvdy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDM5OSwgMjA1LCAxLCAxKS5kYXRhOwor
c2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRC
ZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMDYnKTsKKworZCA9IGN0
eC5nZXRJbWFnZURhdGEoNTAwLCAyMDUsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcy
NTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3No
b3VsZEJlQXJvdW5kKCdkWzNdJywgJzEwNicpOworCitkID0gY3R4LmdldEltYWdlRGF0YSg0OTks
IDI5OSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2Rb
MV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10n
LCAnODMnKTsKKworLy8gVmVyaWZ5IGJsdXJyeSBhbHBoYSBzaGFkb3cuCitkID0gY3R4LmdldElt
YWdlRGF0YSgzOTgsIDQwNSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOwor
c2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVB
cm91bmQoJ2RbM10nLCAnMzYnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoNDA1LCA1MDEsIDEs
IDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAn
KTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzM2Jyk7
CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQwNSwgNTAxLCAxLCAxKS5kYXRhOworc2hvdWxkQmUo
J2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScs
ICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICczNicpOworCit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMmZiZDMwZmQwMTY2OTZlMDc5OWZjMDI5ODBjYmMzNjQ3OGEwMTNhOC4u
YmE1YTkwMmU3ZTg2YjhmOGJiNjUyNTg4NGM3OGZiNjRmYjY4OTM4ZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAor
MjAxMC0xMi0xMyAgSGVsZGVyIENvcnJlaWEgIDxoZWxkZXJAc2VuY2hhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIENhbnZhcyBzaGFk
b3cgb2Zmc2V0IHNob3VsZCBub3QgYmUgYWZmZWN0ZWQgYnkgYW55IHRyYW5zZm9ybWF0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDQyMgorCisg
ICAgICAgIE9uIGEgY2FudmFzIGNvbnRleHQsIHNoYWRvd3MgYXJlIGN1cnJlbnRseSBhZmZlY3Rl
ZCBieSBhbGwKKyAgICAgICAgdHJhbnNmb3JtYXRpb25zIGV4Y2VwdCBzY2FsaW5nLiBBY2NvcmRp
bmcgdG8gdGhlIHNwZWM6CisgICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWIt
YXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1jYW52YXMtZWxlbWVudC5odG1sI3NoYWRv
d3MKKworICAgICAgICAiVGhlIHNoYWRvd09mZnNldFggYW5kIHNoYWRvd09mZnNldFkgYXR0cmli
dXRlcyBzcGVjaWZ5IHRoZSBkaXN0YW5jZQorICAgICAgICB0aGF0IHRoZSBzaGFkb3cgd2lsbCBi
ZSBvZmZzZXQgaW4gdGhlIHBvc2l0aXZlIGhvcml6b250YWwgYW5kIHBvc2l0aXZlCisgICAgICAg
IHZlcnRpY2FsIGRpc3RhbmNlIHJlc3BlY3RpdmVseS4gVGhlaXIgdmFsdWVzIGFyZSBpbiBjb29y
ZGluYXRlIHNwYWNlCisgICAgICAgIHVuaXRzLiBUaGV5IGFyZSBub3QgYWZmZWN0ZWQgYnkgdGhl
IGN1cnJlbnQgdHJhbnNmb3JtYXRpb24gbWF0cml4LiIKKworICAgICAgICBOT1RFOiB0aGlzIGFw
cGxpZXMgb25seSB0byBjYW52YXMsIG5vdCB0byBib3ggc2hhZG93cy4KKworICAgICAgICBUZXN0
OiBmYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuaHRtbAorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZXh0U2hhZG93OjpDb250ZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRleHRTaGFkb3c6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0U2hhZG93OjpzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZXh0U2hhZG93OjpzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZXh0U2hhZG93OjpvZmZzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3F0L0NvbnRleHRTaGFkb3dRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93
OjpiZWdpblNoYWRvd0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmVu
ZFNoYWRvd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0Nv
bnRleHRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptdXN0VXNlQ29udGV4dFNoYWRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6c2V0UGxhdGZvcm1TaGFkb3cpOgorCiAyMDEwLTEyLTE0ICBBbnRvbiBEJ0F1cmlhICA8YWRh
dXJpYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcAppbmRleCA4N2ExYzVjNzYz
Y2VjNTU2NjM0ZjJmYmFmYzY3NTk0MjllZGM1OWQxLi4xZGM4ZTUwNzgwMDJkMWZhNzk1MWM0MDc4
MDM4ZjE0ZjZjZjE1NmEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bnRleHRTaGFkb3cuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNo
YWRvdy5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgQ29udGV4dFNoYWRvdzo6Q29udGV4dFNoYWRvdygp
CiAgICAgOiBtX3R5cGUoTm9TaGFkb3cpCiAgICAgLCBtX2JsdXJEaXN0YW5jZSgwKQogICAgICwg
bV9sYXllckNvbnRleHQoMCkKKyAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoZmFsc2Up
CiB7CiB9CiAKQEAgLTQ5LDYgKzUwLDcgQEAgQ29udGV4dFNoYWRvdzo6Q29udGV4dFNoYWRvdyhj
b25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHJhZGl1cywgY29uc3QgRmxvYXRTaXplJgogICAgICwg
bV9ibHVyRGlzdGFuY2Uocm91bmQocmFkaXVzKSkKICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKICAg
ICAsIG1fbGF5ZXJDb250ZXh0KDApCisgICAgLCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZh
bHNlKQogewogICAgIC8vIFNlZSBjb21tZW50cyBpbiBodHRwOi8vd2Via2l0Lm9yZy9iLzQwNzkz
LCBpdCBzZWVtcyBzZW5zaWJsZQogICAgIC8vIHRvIGZvbGxvdyBTa2lhJ3MgbGltaXQgb2YgMTI4
IHBpeGVscyBvZiBibHVyIHJhZGl1cwpAQCAtMTQ5LDYgKzE1MSw2NSBAQCB2b2lkIENvbnRleHRT
aGFkb3c6OmJsdXJMYXllckltYWdlKHVuc2lnbmVkIGNoYXIqIGltYWdlRGF0YSwgY29uc3QgSW50
U2l6ZSYgc2l6ZQogICAgIH0KIH0KIAorI2lmIFBMQVRGT1JNKFFUKQorSW50UmVjdCBDb250ZXh0
U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHQg
cCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQor
eworICAgIC8vIENhbGN1bGF0ZSB0aGUgZGVzdGluYXRpb24gb2YgdGhlIGJsdXJyZWQgYW5kL29y
IHRyYW5zZm9ybWVkIGxheWVyLgorICAgIEZsb2F0UmVjdCBsYXllckZsb2F0UmVjdDsKKyAgICBm
bG9hdCBpbmZsYXRpb24gPSAwOworCisgICAgY29uc3QgUVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBw
LT50cmFuc2Zvcm0oKTsKKyAgICBpZiAobV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAmJiAhdHJh
bnNmb3JtLmlzSWRlbnRpdHkoKSkgeworICAgICAgICBRUG9seWdvbkYgdHJhbnNmb3JtZWRQb2x5
Z29uID0gdHJhbnNmb3JtLm1hcChRUG9seWdvbkYobGF5ZXJBcmVhKSk7CisgICAgICAgIHRyYW5z
Zm9ybWVkUG9seWdvbi50cmFuc2xhdGUob2Zmc2V0KCkpOworICAgICAgICBsYXllckZsb2F0UmVj
dCA9IHRyYW5zZm9ybS5pbnZlcnRlZCgpLm1hcCh0cmFuc2Zvcm1lZFBvbHlnb24pLmJvdW5kaW5n
UmVjdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGxheWVyRmxvYXRSZWN0ID0gbGF5ZXJBcmVh
OworICAgICAgICBsYXllckZsb2F0UmVjdC5tb3ZlKG1fb2Zmc2V0KTsKKyAgICB9CisKKyAgICAv
LyBXZSBleHBhbmQgdGhlIGFyZWEgYnkgdGhlIGJsdXIgcmFkaXVzIHRvIGdpdmUgZXh0cmEgc3Bh
Y2UgZm9yIHRoZSBibHVyIHRyYW5zaXRpb24uCisgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93
KSB7CisgICAgICAgIGxheWVyRmxvYXRSZWN0LmluZmxhdGUobV9ibHVyRGlzdGFuY2UpOworICAg
ICAgICBpbmZsYXRpb24gKz0gbV9ibHVyRGlzdGFuY2U7CisgICAgfQorCisgICAgRmxvYXRSZWN0
IHVuY2xpcHBlZExheWVyUmVjdCA9IGxheWVyRmxvYXRSZWN0OworCisgICAgaWYgKCFjbGlwUmVj
dC5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KGxheWVyRmxvYXRSZWN0KSkpIHsKKyAgICAgICAg
Ly8gTm8gbmVlZCB0byBoYXZlIHRoZSBidWZmZXIgbGFyZ2VyIHRoYW4gdGhlIGNsaXAuCisgICAg
ICAgIGxheWVyRmxvYXRSZWN0LmludGVyc2VjdChjbGlwUmVjdCk7CisKKyAgICAgICAgLy8gSWYg
d2UgYXJlIHRvdGFsbHkgb3V0c2lkZSB0aGUgY2xpcCByZWdpb24sIHdlIGFyZW4ndCBwYWludGlu
ZyBhdCBhbGwuCisgICAgICAgIGlmIChsYXllckZsb2F0UmVjdC5pc0VtcHR5KCkpCisgICAgICAg
ICAgICByZXR1cm4gSW50UmVjdCgwLCAwLCAwLCAwKTsKKworICAgICAgICAvLyBXZSBhZGp1c3Qg
YWdhaW4gYmVjYXVzZSB0aGUgcGl4ZWxzIGF0IHRoZSBib3JkZXJzIGFyZSBzdGlsbAorICAgICAg
ICAvLyBwb3RlbnRpYWxseSBhZmZlY3RlZCBieSB0aGUgcGl4ZWxzIG91dHNpZGUgdGhlIGJ1ZmZl
ci4KKyAgICAgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7CisgICAgICAgICAgICBsYXll
ckZsb2F0UmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNlKTsKKyAgICAgICAgICAgIHVuY2xpcHBl
ZExheWVyUmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNlKTsKKyAgICAgICAgICAgIGluZmxhdGlv
biArPSBtX2JsdXJEaXN0YW5jZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IGludCBm
cmFtZVNpemUgPSBpbmZsYXRpb24gKiAyOworICAgIG1fc291cmNlUmVjdCA9IEludFJlY3QoMCwg
MCwgbGF5ZXJBcmVhLndpZHRoKCkgKyBmcmFtZVNpemUsIGxheWVyQXJlYS5oZWlnaHQoKSArIGZy
YW1lU2l6ZSk7CisKKyAgICBtX2xheWVyT3JpZ2luID0gRmxvYXRQb2ludChsYXllckZsb2F0UmVj
dC54KCksIGxheWVyRmxvYXRSZWN0LnkoKSk7CisKKyAgICBjb25zdCBGbG9hdFBvaW50IG1fdW5j
bGlwcGVkTGF5ZXJPcmlnaW4gPSBGbG9hdFBvaW50KHVuY2xpcHBlZExheWVyUmVjdC54KCksIHVu
Y2xpcHBlZExheWVyUmVjdC55KCkpOworICAgIGNvbnN0IEZsb2F0U2l6ZSBjbGlwcGVkT3V0ID0g
bV91bmNsaXBwZWRMYXllck9yaWdpbiAtIG1fbGF5ZXJPcmlnaW47CisKKyAgICBjb25zdCBmbG9h
dCB0cmFuc2xhdGlvblggPSAtbGF5ZXJBcmVhLngoKSArIGluZmxhdGlvbiAtIGZhYnNmKGNsaXBw
ZWRPdXQud2lkdGgoKSk7CisgICAgY29uc3QgZmxvYXQgdHJhbnNsYXRpb25ZID0gLWxheWVyQXJl
YS55KCkgKyBpbmZsYXRpb24gLSBmYWJzZihjbGlwcGVkT3V0LmhlaWdodCgpKTsKKyAgICBtX2xh
eWVyQ29udGV4dFRyYW5zbGF0aW9uID0gRmxvYXRQb2ludCh0cmFuc2xhdGlvblgsIHRyYW5zbGF0
aW9uWSk7CisKKyAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChsYXllckZsb2F0UmVjdCk7Cit9
CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENBSVJPKQogdm9pZCBDb250ZXh0U2hhZG93OjpjYWxj
dWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QpCiB7CiAgICAgLy8gQ2FsY3VsYXRlIHRoZSBkZXN0aW5hdGlvbiBv
ZiB0aGUgYmx1cnJlZCBsYXllci4KQEAgLTE3Myw1ICsyMzQsNiBAQCB2b2lkIENvbnRleHRTaGFk
b3c6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVh
LCBjb25zdAogICAgICAgICAgICAgbV9sYXllclJlY3QuaW5mbGF0ZShtX3R5cGUgPT0gQmx1clNo
YWRvdyA/IG1fYmx1ckRpc3RhbmNlIDogMCk7CiAgICAgfQogfQorI2VuZGlmCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
dGV4dFNoYWRvdy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmgK
aW5kZXggZmE3NzhhZmJjY2RkZmFmYzNmNDBjZDAyM2NiN2FkNGY0NTFlZDUyYy4uZDc0YjFkZWUx
NDczZjY0ZTU1YzczNTNlZDgwNDdiMDRlMmIwMjVhMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db250ZXh0U2hhZG93LmgKQEAgLTEwNiwyNyArMTA2LDQzIEBAIHB1YmxpYzoKICAgICBQ
bGF0Zm9ybUNvbnRleHQgYmVnaW5TaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgbGF5ZXJBcmVhKTsKICAgICB2b2lkIGVuZFNoYWRvd0xheWVyKFBsYXRmb3JtQ29u
dGV4dCk7CiAgICAgc3RhdGljIHZvaWQgcHVyZ2VTY3JhdGNoQnVmZmVyKCk7CisgICAgdm9pZCBz
ZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhib29sIGVuYWJsZSkgeyBtX3NoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zID0gZW5hYmxlOyB9CisgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcygp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KICNpZiBQTEFURk9S
TShDQUlSTykKICAgICB2b2lkIGRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmdFJhZGl1cyA9IElu
dFNpemUoKSwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMgPSBJbnRTaXplKCksIGNvbnN0
IEludFNpemUmIGJvdHRvbUxlZnRSYWRpdXMgPSBJbnRTaXplKCksIGNvbnN0IEludFNpemUmIGJv
dHRvbVJpZ2h0UmFkaXVzID0gSW50U2l6ZSgpKTsKICNlbmRpZgotCiAjaWYgUExBVEZPUk0oUVQp
Ci0gICAgUVBvaW50RiBvZmZzZXQoKSB7IHJldHVybiBRUG9pbnRGKG1fb2Zmc2V0LndpZHRoKCks
IG1fb2Zmc2V0LmhlaWdodCgpKTsgfQorICAgIFFQb2ludEYgb2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gUVBvaW50RihtX29mZnNldC53aWR0aCgpLCBtX29mZnNldC5oZWlnaHQoKSk7IH0KICNlbmRp
ZgogCiAKIHByaXZhdGU6Ci0gICAgSW50UmVjdCBtX2xheWVyUmVjdDsKKyAgICAvLyBCdWZmZXIg
dG8gd2hlcmUgdGhlIHRlbXBvcmFyeSBzaGFkb3cgd2lsbCBiZSBkcmF3biB0by4KICAgICBQbGF0
Zm9ybUltYWdlIG1fbGF5ZXJJbWFnZTsKKyAgICAvLyBDb250ZXh0IHVzZWQgdG8gcGFpbnQgdGhl
IHNoYWRvdyB0byB0aGUgbGF5ZXIgaW1hZ2UuCiAgICAgUGxhdGZvcm1Db250ZXh0IG1fbGF5ZXJD
b250ZXh0OwotCisjaWYgUExBVEZPUk0oUVQpCisgICAgLy8gU3ViLXJlY3Qgb2YgbV9sYXllcklt
YWdlIHRoYXQgY29udGFpbnMgdGhlIHNoYWRvdyBwaXhlbHMuCisgICAgRmxvYXRSZWN0IG1fc291
cmNlUmVjdDsKKyAgICAvLyBUb3AtbGVmdCBjb3JuZXIgb2YgdGhlIChwb3NzaWJseSBjbGlwcGVk
KSBib3VuZGluZyByZWN0IHRvIGRyYXcgdGhlIHNoYWRvdyB0by4KKyAgICBGbG9hdFBvaW50IG1f
bGF5ZXJPcmlnaW47CisgICAgLy8gVHJhbnNsYXRpb24gdG8gYXBwbHkgdG8gbV9sYXllckNvbnRl
eHQgZm9yIHRoZSBzaGFkb3cgdG8gYmUgY29ycmVjdGx5IGNsaXBwZWQuCisgICAgRmxvYXRQb2lu
dCBtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uOworI2VuZGlmCisjaWYgUExBVEZPUk0oQ0FJUk8p
CisgICAgLy8gRW5jbG9zaW5nIGludCByZWN0IHdoZXJlIHNoYWRvdyBuZWVkcyB0byBiZSBkcmF3
biB0byB1c2luZyB0aGUgbGF5ZXIgY29udGV4dC4KKyAgICBJbnRSZWN0IG1fbGF5ZXJSZWN0Owog
ICAgIC8vIFVzZWQgZm9yIHJlZmVyZW5jZSB3aGVuIGNhbnZhcyBzY2FsZSh4LHkpIHdhcyBjYWxs
ZWQuCiAgICAgRmxvYXRSZWN0IG1fdW5zY2FsZWRMYXllclJlY3Q7CisjZW5kaWYKKyAgICBib29s
IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CiAKICAgICB2b2lkIGJsdXJMYXllckltYWdlKHVu
c2lnbmVkIGNoYXIqLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGludCBzdHJpZGUpOwotICAg
IHZvaWQgY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoY29uc3QgRmxvYXRSZWN0JiBsYXllckFy
ZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKICNpZiBQTEFURk9STShDQUlSTykKKyAgICB2
b2lkIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVh
LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhv
dXRUaWxpbmcoUGxhdGZvcm1Db250ZXh0IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHNoYWRvd1Jl
Y3QsIGNvbnN0IEludFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0
UmFkaXVzLCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBJbnRTaXplJiBi
b3R0b21SaWdodFJhZGl1cywgZmxvYXQgYWxwaGEpOworI2Vsc2UKKyAgICBJbnRSZWN0IGNhbGN1
bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnN0IFBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKICNlbmRpZgogfTsKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwCmlu
ZGV4IGY3YzcwZjY5NWJjMGZjNDI1MGNjOWJkYzM1ZTlkNWU4ZTYzZjk3NDQuLmMzY2ViYzc3ZjVk
N2MyYmE0MzQ0NjIzYTk4OTBiNjBjODg3NTdiZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHAKQEAgLTExNCwyNCArMTE0LDI1IEBAIFBs
YXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29u
dGV4dCBwLCBjb25zdCBGbG9hdFJlCiAgICAgZWxzZQogICAgICAgICBjbGlwUmVjdCA9IHAtPnRy
YW5zZm9ybSgpLmludmVydGVkKCkubWFwUmVjdChwLT53aW5kb3coKSk7CiAKLSAgICBtX3Vuc2Nh
bGVkTGF5ZXJSZWN0ID0gbGF5ZXJBcmVhOwotICAgIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KGxheWVyQXJlYSwgSW50UmVjdChjbGlwUmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qu
d2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpKTsKKyAgICAvLyBTZXQgbV9sYXllck9yaWdpbiwg
bV9sYXllckNvbnRleHRUcmFuc2xhdGlvbiwgbV9zb3VyY2VSZWN0LgorICAgIEludFJlY3QgY2xp
cChjbGlwUmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3Qu
aGVpZ2h0KCkpOworICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGlu
Z1JlY3QocCwgbGF5ZXJBcmVhLCBjbGlwKTsKIAogICAgIC8vIERvbid0IHBhaW50IGlmIHdlIGFy
ZSB0b3RhbGx5IG91dHNpZGUgdGhlIGNsaXAgcmVnaW9uLgotICAgIGlmIChtX2xheWVyUmVjdC5p
c0VtcHR5KCkpCisgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAw
OwogCiAgICAgU2hhZG93QnVmZmVyKiBzaGFkb3dCdWZmZXIgPSBzY3JhdGNoU2hhZG93QnVmZmVy
KCk7Ci0gICAgUUltYWdlKiBzaGFkb3dJbWFnZSA9IHNoYWRvd0J1ZmZlci0+c2NyYXRjaEltYWdl
KG1fbGF5ZXJSZWN0LnNpemUoKSk7CisgICAgUUltYWdlKiBzaGFkb3dJbWFnZSA9IHNoYWRvd0J1
ZmZlci0+c2NyYXRjaEltYWdlKGxheWVyUmVjdC5zaXplKCkpOwogICAgIG1fbGF5ZXJJbWFnZSA9
IFFJbWFnZSgqc2hhZG93SW1hZ2UpOwogCiAgICAgbV9sYXllckNvbnRleHQgPSBuZXcgUVBhaW50
ZXI7CiAgICAgbV9sYXllckNvbnRleHQtPmJlZ2luKCZtX2xheWVySW1hZ2UpOwogICAgIG1fbGF5
ZXJDb250ZXh0LT5zZXRGb250KHAtPmZvbnQoKSk7Ci0gICAgbV9sYXllckNvbnRleHQtPnRyYW5z
bGF0ZShtX29mZnNldC53aWR0aCgpLCBtX29mZnNldC5oZWlnaHQoKSk7CiAKLSAgICAvLyBUaGUg
b3JpZ2luIGlzIG5vdyB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBzY3JhdGNoIGltYWdlLgot
ICAgIG1fbGF5ZXJDb250ZXh0LT50cmFuc2xhdGUoLW1fbGF5ZXJSZWN0LngoKSwgLW1fbGF5ZXJS
ZWN0LnkoKSk7CisgICAgLy8gU2V0IHRoZSBvcmlnaW4gYXMgdGhlIHRvcCBsZWZ0IGNvcm5lciBv
ZiB0aGUgc2NyYXRjaCBpbWFnZSwgb3IsIGluIGNhc2UgdGhlcmUncyBhIGNsaXBwZWQKKyAgICAv
LyBvdXQgcmVnaW9uLCBzZXQgdGhlIG9yaWdpbiBhY2NvcmRpbmdseSB0byB0aGUgZnVsbCBib3Vu
ZGluZyByZWN0J3MgdG9wLWxlZnQgY29ybmVyLgorICAgIG1fbGF5ZXJDb250ZXh0LT50cmFuc2xh
dGUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7CiAKICAgICByZXR1cm4gbV9sYXllckNvbnRl
eHQ7CiB9CkBAIC0xNTUsMTMgKzE1Niw3IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6ZW5kU2hhZG93
TGF5ZXIoUGxhdGZvcm1Db250ZXh0IHApCiAgICAgICAgIHAuZW5kKCk7CiAgICAgfQogCi0gICAg
Y29uc3QgUVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBwLT50cmFuc2Zvcm0oKTsKLSAgICBpZiAodHJh
bnNmb3JtLmlzU2NhbGluZygpKSB7Ci0gICAgICAgIHFyZWFsIHggPSBtX3Vuc2NhbGVkTGF5ZXJS
ZWN0LngoKSArIG1fb2Zmc2V0LndpZHRoKCkgIC8gdHJhbnNmb3JtLm0xMSgpIC0gbV9ibHVyRGlz
dGFuY2U7Ci0gICAgICAgIHFyZWFsIHkgPSBtX3Vuc2NhbGVkTGF5ZXJSZWN0LnkoKSArIG1fb2Zm
c2V0LmhlaWdodCgpIC8gdHJhbnNmb3JtLm0yMigpIC0gbV9ibHVyRGlzdGFuY2U7Ci0gICAgICAg
IHAtPmRyYXdJbWFnZShRUG9pbnRGKHgsIHkpLCBtX2xheWVySW1hZ2UpOwotICAgIH0gZWxzZQot
ICAgICAgICBwLT5kcmF3SW1hZ2UobV9sYXllclJlY3QudG9wTGVmdCgpLCBtX2xheWVySW1hZ2Up
OworICAgIHAtPmRyYXdJbWFnZShtX2xheWVyT3JpZ2luLCBtX2xheWVySW1hZ2UsIG1fc291cmNl
UmVjdCk7CiAKICAgICBzY3JhdGNoU2hhZG93QnVmZmVyKCktPnNjaGVkdWxlUHVyZ2UoKTsKIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0
UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5j
cHAKaW5kZXggMmY4YTkxZmIzYTRkOWJkZGNlYmIxMGYyMDA1MDRlNjRhNTZkZTYzNi4uZDVlN2Nj
ZDM2ZTJjM2Y0NWFiM2I5MWI3ODcxZTE4NjAyZmE1M2FlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKQEAgLTUzLDcgKzUzLDYg
QEAKICNpbmNsdWRlICJUcmFuc3BhcmVuY3lMYXllci5oIgogCiAjaW5jbHVkZSA8UUJydXNoPgot
I2luY2x1ZGUgPFFEZWJ1Zz4KICNpbmNsdWRlIDxRR3JhZGllbnQ+CiAjaW5jbHVkZSA8UVBhaW50
RGV2aWNlPgogI2luY2x1ZGUgPFFQYWludEVuZ2luZT4KQEAgLTE3NSw2ICsxNzQsMjIgQEAgc3Rh
dGljIGlubGluZSBRdDo6RmlsbFJ1bGUgdG9RdEZpbGxSdWxlKFdpbmRSdWxlIHJ1bGUpCiAgICAg
cmV0dXJuIFF0OjpPZGRFdmVuRmlsbDsKIH0KIAorc3RhdGljIGlubGluZSBib29sIG11c3RVc2VD
b250ZXh0U2hhZG93KFFQYWludGVyKiBwYWludGVyLCBDb250ZXh0U2hhZG93KiBzaGFkb3cpCit7
CisgICAgaWYgKHNoYWRvdy0+bV90eXBlID09IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cpCisg
ICAgICAgIC8vIFdlIGNhbid0IGF2b2lkIENvbnRleHRTaGFkb3csIHNpbmNlIHRoZSBzaGFkb3cg
aGFzIGJsdXIuCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICghc2hhZG93LT5zaGFkb3dz
SWdub3JlVHJhbnNmb3JtcygpKQorICAgICAgICAvLyBXZSBjYW4gYXZvaWQgQ29udGV4dFNoYWRv
dyBhbmQgb3B0aW1pemUsIHNpbmNlIHdlJ3JlIG5vdCBkcmF3aW5nIG9uIGEgY2FudmFzIGFuZCBi
b3gKKyAgICAgICAgLy8gc2hhZG93cyBhcmUgYWZmZWN0ZWQgYnkgdGhlIHRyYW5zZm9ybWF0aW9u
IG1hdHJpeC4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChwYWludGVyLT50cmFuc2Zv
cm0oKS5pc0lkZW50aXR5KCkpCisgICAgICAgIC8vIFdlIGNhbiBhdm9pZCBDb250ZXh0U2hhZG93
LCBzaW5jZSB0aGVyZSBhcmUgbm8gdHJhbnNmb3JtYXRpb25zIHRvIGFwcGx5IHRvIHRoZSBjYW52
YXMuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBPdGhlcndpc2UsIG5vIGNoYW5jZSBh
dm9pZGluZyBDb250ZXh0U2hhZG93LgorICAgIHJldHVybiB0cnVlOworfQorCiBjbGFzcyBHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGlj
OgogICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShRUGFpbnRlciosIGNvbnN0IFFD
b2xvciYgaW5pdGlhbFNvbGlkQ29sb3IpOwpAQCAtNTA2LDMzICs1MjEsMjAgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAgICBpZiAobV9kYXRh
LT5oYXNTaGFkb3coKSkgewogICAgICAgICBDb250ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0
U2hhZG93KCk7Ci0gICAgICAgIGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpC
bHVyU2hhZG93Ci0gICAgICAgICAgICAmJiAhbV9zdGF0ZS5maWxsUGF0dGVybiAmJiAhbV9zdGF0
ZS5maWxsR3JhZGllbnQpCisgICAgICAgIGlmIChtdXN0VXNlQ29udGV4dFNoYWRvdyhwLCBzaGFk
b3cpIHx8IG1fc3RhdGUuZmlsbFBhdHRlcm4gfHwgbV9zdGF0ZS5maWxsR3JhZGllbnQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIFFQb2ludEYgb2Zmc2V0ID0gc2hhZG93LT5vZmZzZXQoKTsKLSAg
ICAgICAgICAgIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSA9IHAtPnRyYW5zZm9ybSgpOwot
ICAgICAgICAgICAgaWYgKHRyYW5zZm9ybS5pc1NjYWxpbmcoKSkgewotICAgICAgICAgICAgICAg
IC8vIElmIHNjYWxpbmcgaXMgcmVxdWlyZWQsIGZpbmQgdGhlIG5ldyBjb29yZCBmb3Igc2hhZG93
IG9yaWdpbiwKLSAgICAgICAgICAgICAgICAvLyBzbyB0aGF0IHRoZSByZWxhdGl2ZSBvZmZzZXQg
dG8gaXRzIHNoYXBlIGlzIGtlcHQuCi0gICAgICAgICAgICAgICAgUVBvaW50RiB0cmFuc2xhdGVk
T2Zmc2V0KG9mZnNldC54KCkgLyB0cmFuc2Zvcm0ubTExKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9mZnNldC55KCkgLyB0cmFuc2Zvcm0ubTIyKCkpOwotICAg
ICAgICAgICAgICAgIHBsYXRmb3JtUGF0aC50cmFuc2xhdGUodHJhbnNsYXRlZE9mZnNldCk7Ci0g
ICAgICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3Ioc2hhZG93LT5t
X2NvbG9yKSk7Ci0gICAgICAgICAgICAgICAgcGxhdGZvcm1QYXRoLnRyYW5zbGF0ZSgtdHJhbnNs
YXRlZE9mZnNldCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHAtPnRy
YW5zbGF0ZShvZmZzZXQpOwotICAgICAgICAgICAgICAgIHAtPmZpbGxQYXRoKHBsYXRmb3JtUGF0
aCwgUUNvbG9yKHNoYWRvdy0+bV9jb2xvcikpOwotICAgICAgICAgICAgICAgIHAtPnRyYW5zbGF0
ZSgtb2Zmc2V0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHAsIHBs
YXRmb3JtUGF0aC5jb250cm9sUG9pbnRSZWN0KCkpOwogICAgICAgICAgICAgaWYgKHNoYWRvd1Bh
aW50ZXIpIHsKICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zZXRDb21wb3NpdGlvbk1v
ZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb3VyY2UpOwogICAgICAgICAgICAgICAgIHNo
YWRvd1BhaW50ZXItPmZpbGxQYXRoKHBsYXRmb3JtUGF0aCwgUUNvbG9yKG1fZGF0YS0+c2hhZG93
Lm1fY29sb3IpKTsKICAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwog
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUVBvaW50RiBvZmZz
ZXQgPSBzaGFkb3ctPm9mZnNldCgpOworICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG9mZnNldCk7
CisgICAgICAgICAgICBwLT5maWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihzaGFkb3ctPm1f
Y29sb3IpKTsKKyAgICAgICAgICAgIHAtPnRyYW5zbGF0ZSgtb2Zmc2V0KTsKICAgICAgICAgfQot
CiAgICAgfQogICAgIGlmIChtX3N0YXRlLmZpbGxQYXR0ZXJuKSB7CiAgICAgICAgIEFmZmluZVRy
YW5zZm9ybSBhZmZpbmU7CkBAIC01NTcsMjggKzU1OSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAgICBpZiAobV9kYXRhLT5oYXNTaGFk
b3coKSkgewogICAgICAgICBDb250ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7
Ci0KLSAgICAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6OkJsdXJTaGFk
b3cKLSAgICAgICAgICAgICYmICFtX3N0YXRlLnN0cm9rZVBhdHRlcm4gJiYgIW1fc3RhdGUuc3Ry
b2tlR3JhZGllbnQpCisgICAgICAgIGlmIChtdXN0VXNlQ29udGV4dFNoYWRvdyhwLCBzaGFkb3cp
IHx8IG1fc3RhdGUuc3Ryb2tlUGF0dGVybiB8fCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50KQogICAg
ICAgICB7Ci0gICAgICAgICAgICBRUGVuIHNoYWRvd1BlbihwZW4pOwotICAgICAgICAgICAgc2hh
ZG93UGVuLnNldENvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpOwotICAgICAgICAgICAgUVBv
aW50RiBvZmZzZXQgPSBzaGFkb3ctPm9mZnNldCgpOwotICAgICAgICAgICAgY29uc3QgUVRyYW5z
Zm9ybSYgdHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0gICAgICAgICAgICBpZiAodHJhbnNm
b3JtLmlzU2NhbGluZygpKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgc2NhbGluZyBpcyByZXF1
aXJlZCwgZmluZCB0aGUgbmV3IGNvb3JkIGZvciBzaGFkb3cgb3JpZ2luLAotICAgICAgICAgICAg
ICAgIC8vIHNvIHRoYXQgdGhlIHJlbGF0aXZlIG9mZnNldCB0byBpdHMgc2hhcGUgaXMga2VwdC4K
LSAgICAgICAgICAgICAgICBRUG9pbnRGIHRyYW5zbGF0ZWRPZmZzZXQob2Zmc2V0LngoKSAvIHRy
YW5zZm9ybS5tMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b2Zmc2V0LnkoKSAvIHRyYW5zZm9ybS5tMjIoKSk7Ci0gICAgICAgICAgICAgICAgcGxhdGZvcm1Q
YXRoLnRyYW5zbGF0ZSh0cmFuc2xhdGVkT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBwLT5zdHJv
a2VQYXRoKHBsYXRmb3JtUGF0aCwgc2hhZG93UGVuKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9y
bVBhdGgudHJhbnNsYXRlKC10cmFuc2xhdGVkT2Zmc2V0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG9mZnNldCk7Ci0gICAgICAgICAgICAgICAg
cC0+c3Ryb2tlUGF0aChwbGF0Zm9ybVBhdGgsIHNoYWRvd1Blbik7Ci0gICAgICAgICAgICAgICAg
cC0+dHJhbnNsYXRlKC1vZmZzZXQpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nUmVjdCA9IHBsYXRmb3JtUGF0aC5jb250cm9s
UG9pbnRSZWN0KCk7CiAgICAgICAgICAgICBib3VuZGluZ1JlY3QuaW5mbGF0ZShwZW4ubWl0ZXJM
aW1pdCgpICsgcGVuLndpZHRoRigpKTsKICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWlu
dGVyID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHAsIGJvdW5kaW5nUmVjdCk7CkBAIC01ODcs
NiArNTY5LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBhdGgm
IHBhdGgpCiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c3Ryb2tlUGF0aChwbGF0Zm9y
bVBhdGgsIHBlbik7CiAgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwKTsK
ICAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFFQZW4gc2hhZG93
UGVuKHBlbik7CisgICAgICAgICAgICBzaGFkb3dQZW4uc2V0Q29sb3IobV9kYXRhLT5zaGFkb3cu
bV9jb2xvcik7CisgICAgICAgICAgICBRUG9pbnRGIG9mZnNldCA9IHNoYWRvdy0+b2Zmc2V0KCk7
CisgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKKyAgICAgICAgICAgIHAtPnN0cm9r
ZVBhdGgocGxhdGZvcm1QYXRoLCBzaGFkb3dQZW4pOworICAgICAgICAgICAgcC0+dHJhbnNsYXRl
KC1vZmZzZXQpOwogICAgICAgICB9CiAgICAgfQogCkBAIC03MDYsNyArNjk1LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAg
cC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIGJydXNoKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBpZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewotICAgICAgICAgICAgaWYgKHNoYWRvdy0+bV90
eXBlID09IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cpIHsKKyAgICAgICAgICAgIGlmIChtdXN0
VXNlQ29udGV4dFNoYWRvdyhwLCBzaGFkb3cpKSB7CiAgICAgICAgICAgICAgICAgUVBhaW50ZXIq
IHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgbm9ybWFsaXplZFJl
Y3QpOwogICAgICAgICAgICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAgICAgICAgICAgICAg
ICAgICAgIHNoYWRvd1BhaW50ZXItPnNldE9wYWNpdHkoc3RhdGljX2Nhc3Q8cXJlYWw+KHNoYWRv
dy0+bV9jb2xvci5hbHBoYSgpKSAvIDI1NSk7CkBAIC03MTQsMTcgKzcwMywxMSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICAg
ICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gU29saWQgcmVjdGFuZ2xl
IGZpbGwgd2l0aCBubyBibHVyIHNoYWRvdyBjYW4gYmUgZG9uZSBmYXN0ZXIKLSAgICAgICAgICAg
ICAgICAvLyB3aXRob3V0IHVzaW5nIHRoZSBzaGFkb3cgbGF5ZXIgYXQgYWxsLgorICAgICAgICAg
ICAgICAgIC8vIFNvbGlkIHJlY3RhbmdsZSBmaWxsIHdpdGggbm8gYmx1ciBzaGFkb3cgb3IgdHJh
bnNmb3JtYXRpb25zIGFwcGxpZWQgY2FuIGJlIGRvbmUKKyAgICAgICAgICAgICAgICAvLyBmYXN0
ZXIgd2l0aG91dCB1c2luZyB0aGUgc2hhZG93IGxheWVyIGF0IGFsbC4KICAgICAgICAgICAgICAg
ICBRQ29sb3Igc2hhZG93Q29sb3IgPSBzaGFkb3ctPm1fY29sb3I7CiAgICAgICAgICAgICAgICAg
c2hhZG93Q29sb3Iuc2V0QWxwaGFGKHNoYWRvd0NvbG9yLmFscGhhRigpICogcC0+YnJ1c2goKS5j
b2xvcigpLmFscGhhRigpKTsKLSAgICAgICAgICAgICAgICBjb25zdCBRVHJhbnNmb3JtJiB0cmFu
c2Zvcm0gPSBwLT50cmFuc2Zvcm0oKTsKLSAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtLmlz
U2NhbGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRS
ZWN0LnRyYW5zbGF0ZWQoc3RhdGljX2Nhc3Q8cXJlYWw+KHNoYWRvdy0+b2Zmc2V0KCkueCgpKSAv
IHRyYW5zZm9ybS5tMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5vZmZzZXQoKS55
KCkgIC8gdHJhbnNmb3JtLm0yMigpKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNoYWRvd0NvbG9yKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJhbnNsYXRlZChzaGFkb3ctPm9mZnNldCgp
KSwgc2hhZG93Q29sb3IpOworICAgICAgICAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRS
ZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvd0NvbG9yKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCkBAIC03NDQsMTggKzcyNywxNSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3Is
IENvbG9yUwogCiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAgQ29udGV4
dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotCi0gICAgICAgIGlmIChzaGFkb3ct
Pm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93KSB7Ci0gICAgICAgICAgICAvLyBX
ZSBkbyBub3QgbmVlZCBhbnkgbGF5ZXIgZm9yIHNpbXBsZSBzaGFkb3cuCi0gICAgICAgICAgICBw
LT5maWxsUmVjdChub3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHNoYWRvdy0+b2Zmc2V0KCkpLCBz
aGFkb3ctPm1fY29sb3IpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAobXVzdFVzZUNv
bnRleHRTaGFkb3cocCwgc2hhZG93KSkgewogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1Bh
aW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgbm9ybWFsaXplZFJlY3QpOwogICAg
ICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAgICBzaGFkb3dQYWlu
dGVyLT5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb3VyY2Up
OwogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0
LCBzaGFkb3ctPm1fY29sb3IpOwogICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5
ZXIocCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHNoYWRvdy0+b2Zmc2V0
KCkpLCBzaGFkb3ctPm1fY29sb3IpOwogICAgIH0KIAogICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6
ZWRSZWN0LCBtX2RhdGEtPnNvbGlkQ29sb3IpOwpAQCAtNzcxLDE5ICs3NTEsMTcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25z
dCBJbnRTaXplJiB0b3BMZWYKICAgICBRUGFpbnRlciogcCA9IG1fZGF0YS0+cCgpOwogICAgIGlm
IChtX2RhdGEtPmhhc1NoYWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9
IGNvbnRleHRTaGFkb3coKTsKLQotICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgIT0gQ29udGV4
dFNoYWRvdzo6Qmx1clNoYWRvdykgewotICAgICAgICAgICAgLy8gV2UgZG8gbm90IG5lZWQgYW55
IGxheWVyIGZvciBzaW1wbGUgc2hhZG93LgotICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG1fZGF0
YS0+c2hhZG93Lm9mZnNldCgpKTsKLSAgICAgICAgICAgIHAtPmZpbGxQYXRoKHBhdGgucGxhdGZv
cm1QYXRoKCksIFFDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9yKSk7Ci0gICAgICAgICAgICBw
LT50cmFuc2xhdGUoLW1fZGF0YS0+c2hhZG93Lm9mZnNldCgpKTsKLSAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykpIHsKICAgICAgICAg
ICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHAs
IHJlY3QpOwogICAgICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAg
ICBzaGFkb3dQYWludGVyLT5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9u
TW9kZV9Tb3VyY2UpOwogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmZpbGxQYXRoKHBh
dGgucGxhdGZvcm1QYXRoKCksIFFDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9yKSk7CiAgICAg
ICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwKTsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShtX2RhdGEtPnNoYWRvdy5v
ZmZzZXQoKSk7CisgICAgICAgICAgICBwLT5maWxsUGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBR
Q29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xvcikpOworICAgICAgICAgICAgcC0+dHJhbnNsYXRl
KC1tX2RhdGEtPnNoYWRvdy5vZmZzZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcC0+Zmls
bFBhdGgocGF0aC5wbGF0Zm9ybVBhdGgoKSwgUUNvbG9yKGNvbG9yKSk7CkBAIC05NTMsOSArOTMx
LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBGbG9h
dFNpemUmIHNpemUsIGZsb2F0IGJsdXIsIGNvbnN0CiAgICAgICAgIC8vIFdlIGZsaXAgdGhlIGhl
aWdodCBzaW5jZSBDRyBhbmQgSFRNTDUgQ2FudmFzIGhhdmUgb3Bwb3NpdGUgWSBheGlzCiAgICAg
ICAgIG1fc3RhdGUuc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHNpemUud2lkdGgoKSwgLXNpemUu
aGVpZ2h0KCkpOwogICAgICAgICBtX2RhdGEtPnNoYWRvdyA9IENvbnRleHRTaGFkb3coY29sb3Is
IGJsdXIsIEZsb2F0U2l6ZShzaXplLndpZHRoKCksIC1zaXplLmhlaWdodCgpKSk7Ci0gICAgfSBl
bHNlIHsKKyAgICB9IGVsc2UKICAgICAgICAgbV9kYXRhLT5zaGFkb3cgPSBDb250ZXh0U2hhZG93
KGNvbG9yLCBibHVyLCBGbG9hdFNpemUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7Ci0g
ICAgfQorCisgICAgbV9kYXRhLT5zaGFkb3cuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMobV9z
dGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpjbGVhclBsYXRmb3JtU2hhZG93KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76687</attachid>
            <date>2010-12-15 14:33:50 -0800</date>
            <delta_ts>2010-12-16 12:54:40 -0800</delta_ts>
            <desc>Add suggestion from comment #31</desc>
            <filename>bug-50422-20101215143346.patch</filename>
            <type>text/plain</type>
            <size>36050</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzY2JiODI5OGU0NGE4OWNiYmUyMGFmZThmZTUwZDk3OTg4MzJhMDRkLi45NDkwM2Vh
OTJhMTc4ZDAzMjBjN2QwNGI2N2ZiNThjZDU0ZDk4YzVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMTAtMTItMTMgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBDYW52YXMgc2hh
ZG93IG9mZnNldCBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IGFueSB0cmFuc2Zvcm1hdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0MjIKKwor
ICAgICAgICBPbiBhIGNhbnZhcyBjb250ZXh0LCBzaGFkb3dzIGFyZSBjdXJyZW50bHkgYWZmZWN0
ZWQgYnkgYWxsCisgICAgICAgIHRyYW5zZm9ybWF0aW9ucyBleGNlcHQgc2NhbGluZy4gQWNjb3Jk
aW5nIHRvIHRoZSBzcGVjOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2Vi
LWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbCNzaGFk
b3dzCisKKyAgICAgICAgIlRoZSBzaGFkb3dPZmZzZXRYIGFuZCBzaGFkb3dPZmZzZXRZIGF0dHJp
YnV0ZXMgc3BlY2lmeSB0aGUgZGlzdGFuY2UKKyAgICAgICAgdGhhdCB0aGUgc2hhZG93IHdpbGwg
YmUgb2Zmc2V0IGluIHRoZSBwb3NpdGl2ZSBob3Jpem9udGFsIGFuZCBwb3NpdGl2ZQorICAgICAg
ICB2ZXJ0aWNhbCBkaXN0YW5jZSByZXNwZWN0aXZlbHkuIFRoZWlyIHZhbHVlcyBhcmUgaW4gY29v
cmRpbmF0ZSBzcGFjZQorICAgICAgICB1bml0cy4gVGhleSBhcmUgbm90IGFmZmVjdGVkIGJ5IHRo
ZSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4iCisKKyAgICAgICAgTk9URTogdGhpcyBh
cHBsaWVzIG9ubHkgdG8gY2FudmFzLCBub3QgdG8gYm94IHNoYWRvd3MuCisKKyAgICAgICAgQWRk
IG5ldyB0ZXN0IHRvIGVuc3VyZSB0aGF0IHNoYWRvd3MgYXJlIGNvcnJlY3RseSB0cmFuc2Zvcm1l
ZCBrZWVwaW5nCisgICAgICAgIHRoZSByZWxhdGl2ZSBvZmZzZXQgdG8gdGhlIHNoYXBlLgorCisg
ICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVj
dC1zaGFkb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52
YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cuanM6Cisg
ICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUmVjdC1z
aGFkb3cuanM6CisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2Fs
ZS1zdHJva2VQYXRoLXNoYWRvdy5qczogTm93IHVzaW5nCisgICAgICAgICAgYSBsaW5lV2lkdGgg
PiAxIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHRlc3QgYW5kIG1vcmUgZmFpciBhbW9uZyBhbGwKKyAg
ICAgICAgICBwb3J0cywgc2luY2UgdGhlcmUgY2FuIGJlIGRpZmZlcmVudCB0cmFuc2Zvcm1hdGlv
biBzbW9vdGhuZXNzIG9yCisgICAgICAgICAgYWxpYXNpbmcgc2V0dGluZ3MuCisgICAgICAgICog
ZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRv
dy5qczogQWRkZWQuCisKIDIwMTAtMTItMTQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3ctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgt
c2hhZG93LWV4cGVjdGVkLnR4dAppbmRleCBlNTYyMDFmNzM4N2U0NjJmNzkyMjVlNjVmOGEzNDAx
ZTJlMzIzNmZlLi5hMzM3YzRiNjNmZjFkZGZlZWQ0NDg4ZTM1MWZmZGFlMTQ5ZWE4NTE2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1z
aGFkb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1z
Y2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQKQEAgLTMwLDI3ICszMCwyNyBAQCBQ
QVNTIGRbM10gaXMgYXJvdW5kIDc2CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAog
UEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjAKK1BBU1MgZFszXSBpcyBhcm91
bmQgMTQ5CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAK
LVBBU1MgZFszXSBpcyBhcm91bmQgMjIKK1BBU1MgZFszXSBpcyBhcm91bmQgMTE2CiBQQVNTIGRb
MF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBh
cm91bmQgMjgKK1BBU1MgZFszXSBpcyBhcm91bmQgMTE1CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNT
IGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjIKK1BBU1Mg
ZFszXSBpcyBhcm91bmQgNzAKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNT
IGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAxNQorUEFTUyBkWzNdIGlzIGFyb3VuZCA3
MAogUEFTUyBkWzBdIGlzIDI1NQogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1QQVNT
IGRbM10gaXMgYXJvdW5kIDE3CitQQVNTIGRbM10gaXMgYXJvdW5kIDY5CiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVj
dC1zaGFkb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxM2I4OTEyZjBkMmE3ZjAzOTE5NjNj
ZjY5YzBiNzRlNmI0MzE5NGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3ctZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNTcgQEAKK0Vuc3VyZSBjb3JyZWN0IGJlaGF2aW9yIG9mIGNhbnZhcyB3aXRoIGZpbGxS
ZWN0K3NoYWRvdyBhZnRlciB0cmFuc2xhdGlvbityb3RhdGlvbitzY2FsaW5nLiBBIGJsdWUgYW5k
IHJlZCBjaGVja2VyZWQgcGF0dGVybiBzaG91bGQgYmUgZGlzcGxheWVkLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BB
U1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgMjU1CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRb
MV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyAyNTUKK1BBU1MgZFswXSBpcyAy
NTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIDI1NQorUEFT
UyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10g
aXMgYXJvdW5kIDEyNworUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsy
XSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDEyNworUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBk
WzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDEyNworUEFTUyBk
WzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMg
YXJvdW5kIDEwNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBp
cyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDEwNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFd
IGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDgzCitQQVNTIGRbMF0g
aXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91
bmQgMzYKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAor
UEFTUyBkWzNdIGlzIGFyb3VuZCAzNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAK
K1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDM2CitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yZmM0ZTlhODQ0ZTdiZjY3ZmZlZTVlYmY1OGQ1MGRiZjQyYTc4YTkw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5z
Zm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jt
cy1maWxsUmVjdC1zaGFkb3cuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1m
aWxsUGF0aC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMv
Y2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcwppbmRleCAwNTI4NmY1MzI4YjVlNTk5ODMy
NDM1MDc1ZGJiZjFlYzE3ZTVhMjA3Li4zY2EzMzIxOTkyOGRkZDFiZjIwMjFjNGEwMjRkNzMwOGJj
Yjg2NTMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMv
Y2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcwpAQCAtNzks
MTMgKzc5LDEzIEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAn
KTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTks
IDI5NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgMjk1LCAxLCAxKS5k
YXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBz
aG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0
eC5nZXRJbWFnZURhdGEoMjAwLCAyOTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0
YSgyMDAsIDI5OCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxk
QmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwpAQCAtOTgsMTMgKzk4LDEz
IEBAIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3Vs
ZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDA1
LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCA0MDUsIDEsIDEpLmRhdGE7
CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3Vs
ZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBj
dHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURh
dGEoMjA1LCA0OTgsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3Vs
ZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qt
c2hhZG93LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1z
Y2FsZS1maWxsUmVjdC1zaGFkb3cuanMKaW5kZXggOTlhMWU1OTRiZDU5ZjczNjdmM2MzMGRlYTE2
NTFlMzJmM2Q0ZGU2ZS4uZjQ5NWM5MTA1NWJiYTFkY2IxNDY4MzJlMjgxNjMwNzRhMDQ1ZTgyOSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1z
Y2FsZS1maWxsUmVjdC1zaGFkb3cuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2Ny
aXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUmVjdC1zaGFkb3cuanMKQEAgLTU4LDEzICs1OCwx
MyBAQCBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91
bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCAyOTUsIDEs
IDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyOTgsIDI5OCwgMSwgMSkuZGF0YTsKIHNo
b3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUo
J2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1h
Z2VEYXRhKDIwMCwgMjk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAxLCAy
OTgsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFd
JywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKQEAgLTc3LDEzICs3NywxMyBAQCBzaG91
bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3Vu
ZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDQwNSwgMSwgMSku
ZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxk
QmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsy
XScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldElt
YWdlRGF0YSgyMDUsIDQ5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwg
NDk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsx
XScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93
LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1z
dHJva2VQYXRoLXNoYWRvdy5qcwppbmRleCA1MTk4ZDk0MTUxN2RhYjkyYmMyODkxYzgzNzRmMzVi
YTFhODlkNTc5Li45MWI5MjdmOTVmYTg3ZGU1ZjlkNjU1ZjNiMmZmZDJmNGI1ZGFkNTM2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxl
LXN0cm9rZVBhdGgtc2hhZG93LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Njcmlw
dC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMKQEAgLTM1LDYgKzM1LDcg
QEAgY3R4LnNjYWxlKDIsIDIpOwogY3R4LnNoYWRvd09mZnNldFggPSAxMDA7CiBjdHguc2hhZG93
T2Zmc2V0WSA9IDEwMDsKIGN0eC5zdHJva2VTdHlsZSA9ICdyZ2JhKDAsIDAsIDI1NSwgMSknOwor
Y3R4LmxpbmVXaWR0aCA9IDU7CiAKIGN0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwg
MS4wKSc7CiBjdHguYmVnaW5QYXRoKCk7CkBAIC03Niw3OSArNzcsNzkgQEAgY3R4LnN0cm9rZSgp
OwogdmFyIGQ7IC8vIGltYWdlRGF0YS5kYXRhCiAKIC8vIFZlcmlmeSBzb2xpZCBzaGFkb3cuCi1k
ID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDIwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1h
Z2VEYXRhKDI1MCwgMjAwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBz
aG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgn
ZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCAyOTUsIDEsIDEpLmRh
dGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzMDAsIDI5MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJl
KCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0n
LCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRh
KDIwMSwgMjk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyNTAsIDEs
IDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAn
KTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCiAv
LyBWZXJpZnkgc29saWQgYWxwaGEgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCA0
MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDQwNSwgMSwgMSkuZGF0
YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9
IGN0eC5nZXRJbWFnZURhdGEoMjk5LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdl
RGF0YSgyMDEsIDUwMCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hv
dWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91
bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTksIDEsIDEp
LmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzMDAsIDQ5OSwgMSwgMSkuZGF0YTsKIHNob3Vs
ZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
Ml0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAogLy8gVmVyaWZ5IGJs
dXJyeSBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgzOTQsIDIwOCwgMSwgMSkuZGF0YTsK
K2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQwNCwgMjEwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2Rb
MF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcw
Jyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcyMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10n
LCAnMTQ5Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwMywgMzAxLCAxLCAxKS5kYXRhOwor
ZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA1LCAyNTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFsw
XScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAn
KTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzIyJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScs
ICcxMTYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA0LCAyNTAsIDEsIDEpLmRhdGE7Citk
ID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDIwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBd
JywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcp
Owotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjgnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywg
JzExNScpOwogCiAvLyBWZXJpZnkgYmx1cnJ5IGFscGhhIHNoYWRvdy4KLWQgPSBjdHguZ2V0SW1h
Z2VEYXRhKDQwNSwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA1LCA0
NTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFd
JywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywg
JzIyJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICc3MCcpOwogCi1kID0gY3R4LmdldEltYWdl
RGF0YSg0MTUsIDQ5NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwNSwgNDUw
LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScs
ICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcx
NScpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzAnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURh
dGEoNDUwLCA1MDQsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDQwNSwg
MSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAn
MCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTcn
KTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzY5Jyk7CiAKIHZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRl
c3RzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5qcyBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjY3ZjI0NDNjYmU5MDYwMDUzYmMzOTkwMjc5ODVlZTVmMDczNzllZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuanMKQEAgLTAsMCArMSwxMzMgQEAKK2Rl
c2NyaXB0aW9uKCJFbnN1cmUgY29ycmVjdCBiZWhhdmlvciBvZiBjYW52YXMgd2l0aCBmaWxsUmVj
dCtzaGFkb3cgYWZ0ZXIgdHJhbnNsYXRpb24rcm90YXRpb24rc2NhbGluZy4gQSBibHVlIGFuZCBy
ZWQgY2hlY2tlcmVkIHBhdHRlcm4gc2hvdWxkIGJlIGRpc3BsYXllZC4iKTsKKworZnVuY3Rpb24g
cHJpbnQobWVzc2FnZSwgY29sb3IpCit7CisgICAgdmFyIHBhcmFncmFwaCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHBhcmFncmFwaC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgcGFyYWdyYXBoLnN0eWxlLmZvbnRGYW1pbHkg
PSAibW9ub3NwYWNlIjsKKyAgICBpZiAoY29sb3IpCisgICAgICAgIHBhcmFncmFwaC5zdHlsZS5j
b2xvciA9IGNvbG9yOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBw
ZW5kQ2hpbGQocGFyYWdyYXBoKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBcm91bmQoYSwgYikK
K3sKKyAgICB2YXIgZXZhbEE7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbEEgPSBldmFsKGEpOwor
ICAgIH0gY2F0Y2goZSkgeworICAgICAgICBldmFsQSA9IGU7CisgICAgfQorCisgICAgaWYgKE1h
dGguYWJzKGV2YWxBIC0gYikgPCAxMCkKKyAgICAgICAgcHJpbnQoIlBBU1MgIiArIGEgKyAiIGlz
IGFyb3VuZCAiICsgYiAsICJncmVlbiIpCisgICAgZWxzZQorICAgICAgICBwcmludCgiRkFJTCAi
ICsgYSArICIgaXMgbm90IGFyb3VuZCAiICsgYiArICIgKGFjdHVhbDogIiArIGV2YWxBICsgIiki
LCAicmVkIik7Cit9CisKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52
YXMnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTsKK2NhbnZhcy5zZXRBdHRy
aWJ1dGUoJ3dpZHRoJywgJzYwMCcpOworY2FudmFzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgJzYw
MCcpOwordmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworCitjdHguZmlsbFN0eWxl
ID0gJ3JnYmEoMCwgMCwgMjU1LCAxLjApJzsKK2N0eC5zaGFkb3dPZmZzZXRYID0gMTAwOworY3R4
LnNoYWRvd09mZnNldFkgPSAxMDA7CisKK2N0eC50cmFuc2xhdGUoLTEwMCwgLTEwMCk7CitjdHgu
cm90YXRlKE1hdGguUEkvMik7CitjdHguc2NhbGUoMiwgMik7CisKK2N0eC5zaGFkb3dDb2xvciA9
ICdyZ2JhKDI1NSwgMCwgMCwgMS4wKSc7CitjdHguZmlsbFJlY3QoMTAwLCAtMTUwLCA1MCwgNTAp
OworCitjdHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDAuNSknOworY3R4LmZpbGxS
ZWN0KDIwMCwgLTE1MCwgNTAsIDUwKTsKKworY3R4LnNoYWRvd0JsdXIgPSA1OworY3R4LnNoYWRv
d0NvbG9yID0gJ3JnYmEoMjU1LCAwLCAwLCAxLjApJzsKK2N0eC5maWxsUmVjdCgxMDAsIC0yNTAs
IDUwLCA1MCk7CisKK2N0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwgMC41KSc7Citj
dHguZmlsbFJlY3QoMjAwLCAtMjUwLCA1MCwgNTApOworCit2YXIgZDsgLy8gaW1hZ2VEYXRhLmRh
dGEKKworLy8gVmVyaWZ5IHNvbGlkIHNoYWRvdy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwg
MjA1LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsx
XScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZSgnZFszXScsICcyNTUn
KTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCAyOTgsIDEsIDEpLmRhdGE7CitzaG91bGRC
ZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJd
JywgJzAnKTsKK3Nob3VsZEJlKCdkWzNdJywgJzI1NScpOworCitkID0gY3R4LmdldEltYWdlRGF0
YSgyMDEsIDI5OCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxk
QmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmUoJ2RbM10n
LCAnMjU1Jyk7CisKKy8vIFZlcmlmeSBzb2xpZCBhbHBoYSBzaGFkb3cuCitkID0gY3R4LmdldElt
YWdlRGF0YSgyMDEsIDQwMSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOwor
c2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVB
cm91bmQoJ2RbM10nLCAnMTI3Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDUwLCAx
LCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcw
Jyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMjcn
KTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTgsIDEsIDEpLmRhdGE7CitzaG91bGRC
ZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJd
JywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzEyNycpOworCisvLyBWZXJpZnkgYmx1
cnJ5IHNoYWRvdy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDM5OSwgMjA1LCAxLCAxKS5kYXRhOwor
c2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRC
ZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMDYnKTsKKworZCA9IGN0
eC5nZXRJbWFnZURhdGEoNTAwLCAyMDUsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcy
NTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3No
b3VsZEJlQXJvdW5kKCdkWzNdJywgJzEwNicpOworCitkID0gY3R4LmdldEltYWdlRGF0YSg0OTks
IDI5OSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2Rb
MV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10n
LCAnODMnKTsKKworLy8gVmVyaWZ5IGJsdXJyeSBhbHBoYSBzaGFkb3cuCitkID0gY3R4LmdldElt
YWdlRGF0YSgzOTgsIDQwNSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOwor
c2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVB
cm91bmQoJ2RbM10nLCAnMzYnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoNDA1LCA1MDEsIDEs
IDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAn
KTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzM2Jyk7
CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQwNSwgNTAxLCAxLCAxKS5kYXRhOworc2hvdWxkQmUo
J2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScs
ICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICczNicpOworCit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMmZiZDMwZmQwMTY2OTZlMDc5OWZjMDI5ODBjYmMzNjQ3OGEwMTNhOC4u
YmE1YTkwMmU3ZTg2YjhmOGJiNjUyNTg4NGM3OGZiNjRmYjY4OTM4ZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAor
MjAxMC0xMi0xMyAgSGVsZGVyIENvcnJlaWEgIDxoZWxkZXJAc2VuY2hhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIENhbnZhcyBzaGFk
b3cgb2Zmc2V0IHNob3VsZCBub3QgYmUgYWZmZWN0ZWQgYnkgYW55IHRyYW5zZm9ybWF0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDQyMgorCisg
ICAgICAgIE9uIGEgY2FudmFzIGNvbnRleHQsIHNoYWRvd3MgYXJlIGN1cnJlbnRseSBhZmZlY3Rl
ZCBieSBhbGwKKyAgICAgICAgdHJhbnNmb3JtYXRpb25zIGV4Y2VwdCBzY2FsaW5nLiBBY2NvcmRp
bmcgdG8gdGhlIHNwZWM6CisgICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWIt
YXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1jYW52YXMtZWxlbWVudC5odG1sI3NoYWRv
d3MKKworICAgICAgICAiVGhlIHNoYWRvd09mZnNldFggYW5kIHNoYWRvd09mZnNldFkgYXR0cmli
dXRlcyBzcGVjaWZ5IHRoZSBkaXN0YW5jZQorICAgICAgICB0aGF0IHRoZSBzaGFkb3cgd2lsbCBi
ZSBvZmZzZXQgaW4gdGhlIHBvc2l0aXZlIGhvcml6b250YWwgYW5kIHBvc2l0aXZlCisgICAgICAg
IHZlcnRpY2FsIGRpc3RhbmNlIHJlc3BlY3RpdmVseS4gVGhlaXIgdmFsdWVzIGFyZSBpbiBjb29y
ZGluYXRlIHNwYWNlCisgICAgICAgIHVuaXRzLiBUaGV5IGFyZSBub3QgYWZmZWN0ZWQgYnkgdGhl
IGN1cnJlbnQgdHJhbnNmb3JtYXRpb24gbWF0cml4LiIKKworICAgICAgICBOT1RFOiB0aGlzIGFw
cGxpZXMgb25seSB0byBjYW52YXMsIG5vdCB0byBib3ggc2hhZG93cy4KKworICAgICAgICBUZXN0
OiBmYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuaHRtbAorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZXh0U2hhZG93OjpDb250ZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRleHRTaGFkb3c6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0U2hhZG93OjpzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZXh0U2hhZG93OjpzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZXh0U2hhZG93OjpvZmZzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3F0L0NvbnRleHRTaGFkb3dRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93
OjpiZWdpblNoYWRvd0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmVu
ZFNoYWRvd0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0Nv
bnRleHRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptdXN0VXNlQ29udGV4dFNoYWRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6c2V0UGxhdGZvcm1TaGFkb3cpOgorCiAyMDEwLTEyLTE0ICBBbnRvbiBEJ0F1cmlhICA8YWRh
dXJpYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcAppbmRleCA4N2ExYzVjNzYz
Y2VjNTU2NjM0ZjJmYmFmYzY3NTk0MjllZGM1OWQxLi5iNWFlNTkyNTlkNDQ2MWUzOWY2ZTI2M2Ez
ZWIzOGY1NzYyZGViMDQ3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bnRleHRTaGFkb3cuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNo
YWRvdy5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgQ29udGV4dFNoYWRvdzo6Q29udGV4dFNoYWRvdygp
CiAgICAgOiBtX3R5cGUoTm9TaGFkb3cpCiAgICAgLCBtX2JsdXJEaXN0YW5jZSgwKQogICAgICwg
bV9sYXllckNvbnRleHQoMCkKKyAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoZmFsc2Up
CiB7CiB9CiAKQEAgLTQ5LDYgKzUwLDcgQEAgQ29udGV4dFNoYWRvdzo6Q29udGV4dFNoYWRvdyhj
b25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHJhZGl1cywgY29uc3QgRmxvYXRTaXplJgogICAgICwg
bV9ibHVyRGlzdGFuY2Uocm91bmQocmFkaXVzKSkKICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKICAg
ICAsIG1fbGF5ZXJDb250ZXh0KDApCisgICAgLCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZh
bHNlKQogewogICAgIC8vIFNlZSBjb21tZW50cyBpbiBodHRwOi8vd2Via2l0Lm9yZy9iLzQwNzkz
LCBpdCBzZWVtcyBzZW5zaWJsZQogICAgIC8vIHRvIGZvbGxvdyBTa2lhJ3MgbGltaXQgb2YgMTI4
IHBpeGVscyBvZiBibHVyIHJhZGl1cwpAQCAtMTQ5LDYgKzE1MSw2NyBAQCB2b2lkIENvbnRleHRT
aGFkb3c6OmJsdXJMYXllckltYWdlKHVuc2lnbmVkIGNoYXIqIGltYWdlRGF0YSwgY29uc3QgSW50
U2l6ZSYgc2l6ZQogICAgIH0KIH0KIAorI2lmIFBMQVRGT1JNKFFUKQorSW50UmVjdCBDb250ZXh0
U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHQg
cCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQor
eworICAgIC8vIENhbGN1bGF0ZSB0aGUgZGVzdGluYXRpb24gb2YgdGhlIGJsdXJyZWQgYW5kL29y
IHRyYW5zZm9ybWVkIGxheWVyLgorICAgIEZsb2F0UmVjdCBsYXllckZsb2F0UmVjdDsKKyAgICBm
bG9hdCBpbmZsYXRpb24gPSAwOworCisgICAgY29uc3QgUVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBw
LT50cmFuc2Zvcm0oKTsKKyAgICBpZiAobV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAmJiAhdHJh
bnNmb3JtLmlzSWRlbnRpdHkoKSkgeworICAgICAgICBRUG9seWdvbkYgdHJhbnNmb3JtZWRQb2x5
Z29uID0gdHJhbnNmb3JtLm1hcChRUG9seWdvbkYobGF5ZXJBcmVhKSk7CisgICAgICAgIHRyYW5z
Zm9ybWVkUG9seWdvbi50cmFuc2xhdGUob2Zmc2V0KCkpOworICAgICAgICBsYXllckZsb2F0UmVj
dCA9IHRyYW5zZm9ybS5pbnZlcnRlZCgpLm1hcCh0cmFuc2Zvcm1lZFBvbHlnb24pLmJvdW5kaW5n
UmVjdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGxheWVyRmxvYXRSZWN0ID0gbGF5ZXJBcmVh
OworICAgICAgICBsYXllckZsb2F0UmVjdC5tb3ZlKG1fb2Zmc2V0KTsKKyAgICB9CisKKyAgICAv
LyBXZSBleHBhbmQgdGhlIGFyZWEgYnkgdGhlIGJsdXIgcmFkaXVzIHRvIGdpdmUgZXh0cmEgc3Bh
Y2UgZm9yIHRoZSBibHVyIHRyYW5zaXRpb24uCisgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93
KSB7CisgICAgICAgIGxheWVyRmxvYXRSZWN0LmluZmxhdGUobV9ibHVyRGlzdGFuY2UpOworICAg
ICAgICBpbmZsYXRpb24gKz0gbV9ibHVyRGlzdGFuY2U7CisgICAgfQorCisgICAgRmxvYXRSZWN0
IHVuY2xpcHBlZExheWVyUmVjdCA9IGxheWVyRmxvYXRSZWN0OworCisgICAgaWYgKCFjbGlwUmVj
dC5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KGxheWVyRmxvYXRSZWN0KSkpIHsKKyAgICAgICAg
Ly8gTm8gbmVlZCB0byBoYXZlIHRoZSBidWZmZXIgbGFyZ2VyIHRoYW4gdGhlIGNsaXAuCisgICAg
ICAgIGxheWVyRmxvYXRSZWN0LmludGVyc2VjdChjbGlwUmVjdCk7CisKKyAgICAgICAgLy8gSWYg
d2UgYXJlIHRvdGFsbHkgb3V0c2lkZSB0aGUgY2xpcCByZWdpb24sIHdlIGFyZW4ndCBwYWludGlu
ZyBhdCBhbGwuCisgICAgICAgIGlmIChsYXllckZsb2F0UmVjdC5pc0VtcHR5KCkpCisgICAgICAg
ICAgICByZXR1cm4gSW50UmVjdCgwLCAwLCAwLCAwKTsKKworICAgICAgICAvLyBXZSBhZGp1c3Qg
YWdhaW4gYmVjYXVzZSB0aGUgcGl4ZWxzIGF0IHRoZSBib3JkZXJzIGFyZSBzdGlsbAorICAgICAg
ICAvLyBwb3RlbnRpYWxseSBhZmZlY3RlZCBieSB0aGUgcGl4ZWxzIG91dHNpZGUgdGhlIGJ1ZmZl
ci4KKyAgICAgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7CisgICAgICAgICAgICBsYXll
ckZsb2F0UmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNlKTsKKyAgICAgICAgICAgIHVuY2xpcHBl
ZExheWVyUmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNlKTsKKyAgICAgICAgICAgIGluZmxhdGlv
biArPSBtX2JsdXJEaXN0YW5jZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IGludCBm
cmFtZVNpemUgPSBpbmZsYXRpb24gKiAyOworICAgIG1fc291cmNlUmVjdCA9IEludFJlY3QoMCwg
MCwgbGF5ZXJBcmVhLndpZHRoKCkgKyBmcmFtZVNpemUsIGxheWVyQXJlYS5oZWlnaHQoKSArIGZy
YW1lU2l6ZSk7CisKKyAgICBtX2xheWVyT3JpZ2luID0gRmxvYXRQb2ludChsYXllckZsb2F0UmVj
dC54KCksIGxheWVyRmxvYXRSZWN0LnkoKSk7CisKKyAgICBjb25zdCBGbG9hdFBvaW50IG1fdW5j
bGlwcGVkTGF5ZXJPcmlnaW4gPSBGbG9hdFBvaW50KHVuY2xpcHBlZExheWVyUmVjdC54KCksIHVu
Y2xpcHBlZExheWVyUmVjdC55KCkpOworICAgIGNvbnN0IEZsb2F0U2l6ZSBjbGlwcGVkT3V0ID0g
bV91bmNsaXBwZWRMYXllck9yaWdpbiAtIG1fbGF5ZXJPcmlnaW47CisKKyAgICAvLyBTZXQgdGhl
IG9yaWdpbiBhcyB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBzY3JhdGNoIGltYWdlLCBvciwg
aW4gY2FzZSB0aGVyZSdzIGEgY2xpcHBlZAorICAgIC8vIG91dCByZWdpb24sIHNldCB0aGUgb3Jp
Z2luIGFjY29yZGluZ2x5IHRvIHRoZSBmdWxsIGJvdW5kaW5nIHJlY3QncyB0b3AtbGVmdCBjb3Ju
ZXIuCisgICAgY29uc3QgZmxvYXQgdHJhbnNsYXRpb25YID0gLWxheWVyQXJlYS54KCkgKyBpbmZs
YXRpb24gLSBmYWJzZihjbGlwcGVkT3V0LndpZHRoKCkpOworICAgIGNvbnN0IGZsb2F0IHRyYW5z
bGF0aW9uWSA9IC1sYXllckFyZWEueSgpICsgaW5mbGF0aW9uIC0gZmFic2YoY2xpcHBlZE91dC5o
ZWlnaHQoKSk7CisgICAgbV9sYXllckNvbnRleHRUcmFuc2xhdGlvbiA9IEZsb2F0UG9pbnQodHJh
bnNsYXRpb25YLCB0cmFuc2xhdGlvblkpOworCisgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3Qo
bGF5ZXJGbG9hdFJlY3QpOworfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShDQUlSTykKIHZvaWQg
Q29udGV4dFNoYWRvdzo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoY29uc3QgRmxvYXRSZWN0
JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQogewogICAgIC8vIENhbGN1bGF0
ZSB0aGUgZGVzdGluYXRpb24gb2YgdGhlIGJsdXJyZWQgbGF5ZXIuCkBAIC0xNzMsNSArMjM2LDYg
QEAgdm9pZCBDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBG
bG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QKICAgICAgICAgICAgIG1fbGF5ZXJSZWN0LmluZmxh
dGUobV90eXBlID09IEJsdXJTaGFkb3cgPyBtX2JsdXJEaXN0YW5jZSA6IDApOwogICAgIH0KIH0K
KyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29udGV4dFNoYWRvdy5oCmluZGV4IGZhNzc4YWZiY2NkZGZhZmMzZjQwY2QwMjNjYjdhZDRm
NDUxZWQ1MmMuLmQ3NGIxZGVlMTQ3M2Y2NGU1NWM3MzUzZWQ4MDQ3YjA0ZTJiMDI1YTAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCkBAIC0xMDYsMjcgKzEwNiw0
MyBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1Db250ZXh0IGJlZ2luU2hhZG93TGF5ZXIoUGxhdGZv
cm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSk7CiAgICAgdm9pZCBlbmRTaGFk
b3dMYXllcihQbGF0Zm9ybUNvbnRleHQpOwogICAgIHN0YXRpYyB2b2lkIHB1cmdlU2NyYXRjaEJ1
ZmZlcigpOworICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBlbmFibGUp
IHsgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IGVuYWJsZTsgfQorICAgIGJvb2wgc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zOyB9CiAjaWYgUExBVEZPUk0oQ0FJUk8pCiAgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUm
IHRvcExlZnRSYWRpdXMgPSBJbnRTaXplKCksIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0UmFkaXVz
ID0gSW50U2l6ZSgpLCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0UmFkaXVzID0gSW50U2l6ZSgp
LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodFJhZGl1cyA9IEludFNpemUoKSk7CiAjZW5kaWYK
LQogI2lmIFBMQVRGT1JNKFFUKQotICAgIFFQb2ludEYgb2Zmc2V0KCkgeyByZXR1cm4gUVBvaW50
RihtX29mZnNldC53aWR0aCgpLCBtX29mZnNldC5oZWlnaHQoKSk7IH0KKyAgICBRUG9pbnRGIG9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIFFQb2ludEYobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQu
aGVpZ2h0KCkpOyB9CiAjZW5kaWYKIAogCiBwcml2YXRlOgotICAgIEludFJlY3QgbV9sYXllclJl
Y3Q7CisgICAgLy8gQnVmZmVyIHRvIHdoZXJlIHRoZSB0ZW1wb3Jhcnkgc2hhZG93IHdpbGwgYmUg
ZHJhd24gdG8uCiAgICAgUGxhdGZvcm1JbWFnZSBtX2xheWVySW1hZ2U7CisgICAgLy8gQ29udGV4
dCB1c2VkIHRvIHBhaW50IHRoZSBzaGFkb3cgdG8gdGhlIGxheWVyIGltYWdlLgogICAgIFBsYXRm
b3JtQ29udGV4dCBtX2xheWVyQ29udGV4dDsKLQorI2lmIFBMQVRGT1JNKFFUKQorICAgIC8vIFN1
Yi1yZWN0IG9mIG1fbGF5ZXJJbWFnZSB0aGF0IGNvbnRhaW5zIHRoZSBzaGFkb3cgcGl4ZWxzLgor
ICAgIEZsb2F0UmVjdCBtX3NvdXJjZVJlY3Q7CisgICAgLy8gVG9wLWxlZnQgY29ybmVyIG9mIHRo
ZSAocG9zc2libHkgY2xpcHBlZCkgYm91bmRpbmcgcmVjdCB0byBkcmF3IHRoZSBzaGFkb3cgdG8u
CisgICAgRmxvYXRQb2ludCBtX2xheWVyT3JpZ2luOworICAgIC8vIFRyYW5zbGF0aW9uIHRvIGFw
cGx5IHRvIG1fbGF5ZXJDb250ZXh0IGZvciB0aGUgc2hhZG93IHRvIGJlIGNvcnJlY3RseSBjbGlw
cGVkLgorICAgIEZsb2F0UG9pbnQgbV9sYXllckNvbnRleHRUcmFuc2xhdGlvbjsKKyNlbmRpZgor
I2lmIFBMQVRGT1JNKENBSVJPKQorICAgIC8vIEVuY2xvc2luZyBpbnQgcmVjdCB3aGVyZSBzaGFk
b3cgbmVlZHMgdG8gYmUgZHJhd24gdG8gdXNpbmcgdGhlIGxheWVyIGNvbnRleHQuCisgICAgSW50
UmVjdCBtX2xheWVyUmVjdDsKICAgICAvLyBVc2VkIGZvciByZWZlcmVuY2Ugd2hlbiBjYW52YXMg
c2NhbGUoeCx5KSB3YXMgY2FsbGVkLgogICAgIEZsb2F0UmVjdCBtX3Vuc2NhbGVkTGF5ZXJSZWN0
OworI2VuZGlmCisgICAgYm9vbCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogCiAgICAgdm9p
ZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXpl
LCBpbnQgc3RyaWRlKTsKLSAgICB2b2lkIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAjaWYgUExB
VEZPUk0oQ0FJUk8pCisgICAgdm9pZCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBG
bG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwogICAgIHZvaWQg
ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKFBsYXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25z
dCBJbnRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1
cywgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMsIGZsb2F0IGFscGhhKTsKKyNlbHNl
CisgICAgSW50UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBQbGF0Zm9ybUNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVj
dCk7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvQ29udGV4dFNoYWRvd1F0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29u
dGV4dFNoYWRvd1F0LmNwcAppbmRleCBmN2M3MGY2OTViYzBmYzQyNTBjYzliZGMzNWU5ZDVlOGU2
M2Y5NzQ0Li4xMzJlMTI5OThiZGZhM2MzYTY5YTNkZTBkMTcyZmZlNDg1ZjYwOWUyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwCkBAIC0x
MTQsMjUgKzExNCwyMiBAQCBQbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRvdzo6YmVnaW5TaGFk
b3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCwgY29uc3QgRmxvYXRSZQogICAgIGVsc2UKICAgICAg
ICAgY2xpcFJlY3QgPSBwLT50cmFuc2Zvcm0oKS5pbnZlcnRlZCgpLm1hcFJlY3QocC0+d2luZG93
KCkpOwogCi0gICAgbV91bnNjYWxlZExheWVyUmVjdCA9IGxheWVyQXJlYTsKLSAgICBjYWxjdWxh
dGVMYXllckJvdW5kaW5nUmVjdChsYXllckFyZWEsIEludFJlY3QoY2xpcFJlY3QueCgpLCBjbGlw
UmVjdC55KCksIGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKSk7CisgICAgLy8g
U2V0IG1fbGF5ZXJPcmlnaW4sIG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24sIG1fc291cmNlUmVj
dC4KKyAgICBJbnRSZWN0IGNsaXAoY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNsaXBSZWN0
LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKKyAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNh
bGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KHAsIGxheWVyQXJlYSwgY2xpcCk7CiAKICAgICAvLyBE
b24ndCBwYWludCBpZiB3ZSBhcmUgdG90YWxseSBvdXRzaWRlIHRoZSBjbGlwIHJlZ2lvbi4KLSAg
ICBpZiAobV9sYXllclJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFNoYWRvd0J1ZmZlciogc2hhZG93QnVmZmVyID0g
c2NyYXRjaFNoYWRvd0J1ZmZlcigpOwotICAgIFFJbWFnZSogc2hhZG93SW1hZ2UgPSBzaGFkb3dC
dWZmZXItPnNjcmF0Y2hJbWFnZShtX2xheWVyUmVjdC5zaXplKCkpOworICAgIFFJbWFnZSogc2hh
ZG93SW1hZ2UgPSBzaGFkb3dCdWZmZXItPnNjcmF0Y2hJbWFnZShsYXllclJlY3Quc2l6ZSgpKTsK
ICAgICBtX2xheWVySW1hZ2UgPSBRSW1hZ2UoKnNoYWRvd0ltYWdlKTsKIAogICAgIG1fbGF5ZXJD
b250ZXh0ID0gbmV3IFFQYWludGVyOwogICAgIG1fbGF5ZXJDb250ZXh0LT5iZWdpbigmbV9sYXll
ckltYWdlKTsKICAgICBtX2xheWVyQ29udGV4dC0+c2V0Rm9udChwLT5mb250KCkpOwotICAgIG1f
bGF5ZXJDb250ZXh0LT50cmFuc2xhdGUobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQuaGVpZ2h0
KCkpOwotCi0gICAgLy8gVGhlIG9yaWdpbiBpcyBub3cgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0
aGUgc2NyYXRjaCBpbWFnZS4KLSAgICBtX2xheWVyQ29udGV4dC0+dHJhbnNsYXRlKC1tX2xheWVy
UmVjdC54KCksIC1tX2xheWVyUmVjdC55KCkpOwotCisgICAgbV9sYXllckNvbnRleHQtPnRyYW5z
bGF0ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKICAgICByZXR1cm4gbV9sYXllckNvbnRl
eHQ7CiB9CiAKQEAgLTE1NSwxMyArMTUyLDcgQEAgdm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFk
b3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCkKICAgICAgICAgcC5lbmQoKTsKICAgICB9CiAKLSAg
ICBjb25zdCBRVHJhbnNmb3JtIHRyYW5zZm9ybSA9IHAtPnRyYW5zZm9ybSgpOwotICAgIGlmICh0
cmFuc2Zvcm0uaXNTY2FsaW5nKCkpIHsKLSAgICAgICAgcXJlYWwgeCA9IG1fdW5zY2FsZWRMYXll
clJlY3QueCgpICsgbV9vZmZzZXQud2lkdGgoKSAgLyB0cmFuc2Zvcm0ubTExKCkgLSBtX2JsdXJE
aXN0YW5jZTsKLSAgICAgICAgcXJlYWwgeSA9IG1fdW5zY2FsZWRMYXllclJlY3QueSgpICsgbV9v
ZmZzZXQuaGVpZ2h0KCkgLyB0cmFuc2Zvcm0ubTIyKCkgLSBtX2JsdXJEaXN0YW5jZTsKLSAgICAg
ICAgcC0+ZHJhd0ltYWdlKFFQb2ludEYoeCwgeSksIG1fbGF5ZXJJbWFnZSk7Ci0gICAgfSBlbHNl
Ci0gICAgICAgIHAtPmRyYXdJbWFnZShtX2xheWVyUmVjdC50b3BMZWZ0KCksIG1fbGF5ZXJJbWFn
ZSk7CisgICAgcC0+ZHJhd0ltYWdlKG1fbGF5ZXJPcmlnaW4sIG1fbGF5ZXJJbWFnZSwgbV9zb3Vy
Y2VSZWN0KTsKIAogICAgIHNjcmF0Y2hTaGFkb3dCdWZmZXIoKS0+c2NoZWR1bGVQdXJnZSgpOwog
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0
LmNwcAppbmRleCAyZjhhOTFmYjNhNGQ5YmRkY2ViYjEwZjIwMDUwNGU2NGE1NmRlNjM2Li5kNWU3
Y2NkMzZlMmMzZjQ1YWIzYjkxYjc4NzFlMTg2MDJmYTUzYWU5IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtNTMsNyArNTMs
NiBAQAogI2luY2x1ZGUgIlRyYW5zcGFyZW5jeUxheWVyLmgiCiAKICNpbmNsdWRlIDxRQnJ1c2g+
Ci0jaW5jbHVkZSA8UURlYnVnPgogI2luY2x1ZGUgPFFHcmFkaWVudD4KICNpbmNsdWRlIDxRUGFp
bnREZXZpY2U+CiAjaW5jbHVkZSA8UVBhaW50RW5naW5lPgpAQCAtMTc1LDYgKzE3NCwyMiBAQCBz
dGF0aWMgaW5saW5lIFF0OjpGaWxsUnVsZSB0b1F0RmlsbFJ1bGUoV2luZFJ1bGUgcnVsZSkKICAg
ICByZXR1cm4gUXQ6Ok9kZEV2ZW5GaWxsOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgbXVzdFVz
ZUNvbnRleHRTaGFkb3coUVBhaW50ZXIqIHBhaW50ZXIsIENvbnRleHRTaGFkb3cqIHNoYWRvdykK
K3sKKyAgICBpZiAoc2hhZG93LT5tX3R5cGUgPT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdykK
KyAgICAgICAgLy8gV2UgY2FuJ3QgYXZvaWQgQ29udGV4dFNoYWRvdywgc2luY2UgdGhlIHNoYWRv
dyBoYXMgYmx1ci4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFzaGFkb3ctPnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKCkpCisgICAgICAgIC8vIFdlIGNhbiBhdm9pZCBDb250ZXh0U2hh
ZG93IGFuZCBvcHRpbWl6ZSwgc2luY2Ugd2UncmUgbm90IGRyYXdpbmcgb24gYSBjYW52YXMgYW5k
IGJveAorICAgICAgICAvLyBzaGFkb3dzIGFyZSBhZmZlY3RlZCBieSB0aGUgdHJhbnNmb3JtYXRp
b24gbWF0cml4LgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHBhaW50ZXItPnRyYW5z
Zm9ybSgpLmlzSWRlbnRpdHkoKSkKKyAgICAgICAgLy8gV2UgY2FuIGF2b2lkIENvbnRleHRTaGFk
b3csIHNpbmNlIHRoZXJlIGFyZSBubyB0cmFuc2Zvcm1hdGlvbnMgdG8gYXBwbHkgdG8gdGhlIGNh
bnZhcy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIE90aGVyd2lzZSwgbm8gY2hhbmNl
IGF2b2lkaW5nIENvbnRleHRTaGFkb3cuCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJs
aWM6CiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFFQYWludGVyKiwgY29uc3Qg
UUNvbG9yJiBpbml0aWFsU29saWRDb2xvcik7CkBAIC01MDYsMzMgKzUyMSwyMCBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlmIChtX2Rh
dGEtPmhhc1NoYWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRl
eHRTaGFkb3coKTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6
OkJsdXJTaGFkb3cKLSAgICAgICAgICAgICYmICFtX3N0YXRlLmZpbGxQYXR0ZXJuICYmICFtX3N0
YXRlLmZpbGxHcmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNo
YWRvdykgfHwgbV9zdGF0ZS5maWxsUGF0dGVybiB8fCBtX3N0YXRlLmZpbGxHcmFkaWVudCkKICAg
ICAgICAgewotICAgICAgICAgICAgUVBvaW50RiBvZmZzZXQgPSBzaGFkb3ctPm9mZnNldCgpOwot
ICAgICAgICAgICAgY29uc3QgUVRyYW5zZm9ybSYgdHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7
Ci0gICAgICAgICAgICBpZiAodHJhbnNmb3JtLmlzU2NhbGluZygpKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gSWYgc2NhbGluZyBpcyByZXF1aXJlZCwgZmluZCB0aGUgbmV3IGNvb3JkIGZvciBzaGFk
b3cgb3JpZ2luLAotICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIHJlbGF0aXZlIG9mZnNl
dCB0byBpdHMgc2hhcGUgaXMga2VwdC4KLSAgICAgICAgICAgICAgICBRUG9pbnRGIHRyYW5zbGF0
ZWRPZmZzZXQob2Zmc2V0LngoKSAvIHRyYW5zZm9ybS5tMTEoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LnkoKSAvIHRyYW5zZm9ybS5tMjIoKSk7Ci0g
ICAgICAgICAgICAgICAgcGxhdGZvcm1QYXRoLnRyYW5zbGF0ZSh0cmFuc2xhdGVkT2Zmc2V0KTsK
LSAgICAgICAgICAgICAgICBwLT5maWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihzaGFkb3ct
Pm1fY29sb3IpKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKC10cmFu
c2xhdGVkT2Zmc2V0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcC0+
dHJhbnNsYXRlKG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGxhdGZvcm1Q
YXRoLCBRQ29sb3Ioc2hhZG93LT5tX2NvbG9yKSk7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNs
YXRlKC1vZmZzZXQpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwg
cGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKSk7CiAgICAgICAgICAgICBpZiAoc2hhZG93
UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9u
TW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAg
c2hhZG93UGFpbnRlci0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3IobV9kYXRhLT5zaGFk
b3cubV9jb2xvcikpOwogICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7
CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBRUG9pbnRGIG9m
ZnNldCA9IHNoYWRvdy0+b2Zmc2V0KCk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0
KTsKKyAgICAgICAgICAgIHAtPmZpbGxQYXRoKHBsYXRmb3JtUGF0aCwgUUNvbG9yKHNoYWRvdy0+
bV9jb2xvcikpOworICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZzZXQpOwogICAgICAgICB9
Ci0KICAgICB9CiAgICAgaWYgKG1fc3RhdGUuZmlsbFBhdHRlcm4pIHsKICAgICAgICAgQWZmaW5l
VHJhbnNmb3JtIGFmZmluZTsKQEAgLTU1NywyOCArNTU5LDggQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlmIChtX2RhdGEtPmhhc1No
YWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFkb3co
KTsKLQotICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Qmx1clNo
YWRvdwotICAgICAgICAgICAgJiYgIW1fc3RhdGUuc3Ryb2tlUGF0dGVybiAmJiAhbV9zdGF0ZS5z
dHJva2VHcmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRv
dykgfHwgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuIHx8IG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIFFQZW4gc2hhZG93UGVuKHBlbik7Ci0gICAgICAgICAgICBz
aGFkb3dQZW4uc2V0Q29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xvcik7Ci0gICAgICAgICAgICBR
UG9pbnRGIG9mZnNldCA9IHNoYWRvdy0+b2Zmc2V0KCk7Ci0gICAgICAgICAgICBjb25zdCBRVHJh
bnNmb3JtJiB0cmFuc2Zvcm0gPSBwLT50cmFuc2Zvcm0oKTsKLSAgICAgICAgICAgIGlmICh0cmFu
c2Zvcm0uaXNTY2FsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBJZiBzY2FsaW5nIGlzIHJl
cXVpcmVkLCBmaW5kIHRoZSBuZXcgY29vcmQgZm9yIHNoYWRvdyBvcmlnaW4sCi0gICAgICAgICAg
ICAgICAgLy8gc28gdGhhdCB0aGUgcmVsYXRpdmUgb2Zmc2V0IHRvIGl0cyBzaGFwZSBpcyBrZXB0
LgotICAgICAgICAgICAgICAgIFFQb2ludEYgdHJhbnNsYXRlZE9mZnNldChvZmZzZXQueCgpIC8g
dHJhbnNmb3JtLm0xMSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvZmZzZXQueSgpIC8gdHJhbnNmb3JtLm0yMigpKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9y
bVBhdGgudHJhbnNsYXRlKHRyYW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgICAgIHAtPnN0
cm9rZVBhdGgocGxhdGZvcm1QYXRoLCBzaGFkb3dQZW4pOwotICAgICAgICAgICAgICAgIHBsYXRm
b3JtUGF0aC50cmFuc2xhdGUoLXRyYW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKLSAgICAgICAgICAgICAg
ICBwLT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgc2hhZG93UGVuKTsKLSAgICAgICAgICAgICAg
ICBwLT50cmFuc2xhdGUoLW9mZnNldCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBGbG9hdFJlY3QgYm91bmRpbmdSZWN0ID0gcGxhdGZvcm1QYXRoLmNvbnRy
b2xQb2ludFJlY3QoKTsKICAgICAgICAgICAgIGJvdW5kaW5nUmVjdC5pbmZsYXRlKHBlbi5taXRl
ckxpbWl0KCkgKyBwZW4ud2lkdGhGKCkpOwogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1Bh
aW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgYm91bmRpbmdSZWN0KTsKQEAgLTU4
Nyw2ICs1NjksMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0
aCYgcGF0aCkKICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zdHJva2VQYXRoKHBsYXRm
b3JtUGF0aCwgcGVuKTsKICAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHAp
OwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUVBlbiBzaGFk
b3dQZW4ocGVuKTsKKyAgICAgICAgICAgIHNoYWRvd1Blbi5zZXRDb2xvcihtX2RhdGEtPnNoYWRv
dy5tX2NvbG9yKTsKKyAgICAgICAgICAgIFFQb2ludEYgb2Zmc2V0ID0gc2hhZG93LT5vZmZzZXQo
KTsKKyAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShvZmZzZXQpOworICAgICAgICAgICAgcC0+c3Ry
b2tlUGF0aChwbGF0Zm9ybVBhdGgsIHNoYWRvd1Blbik7CisgICAgICAgICAgICBwLT50cmFuc2xh
dGUoLW9mZnNldCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTcwNiw3ICs2OTUsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAg
ICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwgYnJ1c2gpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGlmIChtX2RhdGEtPmhhc1NoYWRvdygpKSB7Ci0gICAgICAgICAgICBpZiAoc2hhZG93LT5t
X3R5cGUgPT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdykgeworICAgICAgICAgICAgaWYgKG11
c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykpIHsKICAgICAgICAgICAgICAgICBRUGFpbnRl
ciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVk
UmVjdCk7CiAgICAgICAgICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAg
ICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0T3BhY2l0eShzdGF0aWNfY2FzdDxxcmVhbD4oc2hh
ZG93LT5tX2NvbG9yLmFscGhhKCkpIC8gMjU1KTsKQEAgLTcxNCwxNyArNzAzLDExIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAg
ICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBTb2xpZCByZWN0YW5n
bGUgZmlsbCB3aXRoIG5vIGJsdXIgc2hhZG93IGNhbiBiZSBkb25lIGZhc3RlcgotICAgICAgICAg
ICAgICAgIC8vIHdpdGhvdXQgdXNpbmcgdGhlIHNoYWRvdyBsYXllciBhdCBhbGwuCisgICAgICAg
ICAgICAgICAgLy8gU29saWQgcmVjdGFuZ2xlIGZpbGwgd2l0aCBubyBibHVyIHNoYWRvdyBvciB0
cmFuc2Zvcm1hdGlvbnMgYXBwbGllZCBjYW4gYmUgZG9uZQorICAgICAgICAgICAgICAgIC8vIGZh
c3RlciB3aXRob3V0IHVzaW5nIHRoZSBzaGFkb3cgbGF5ZXIgYXQgYWxsLgogICAgICAgICAgICAg
ICAgIFFDb2xvciBzaGFkb3dDb2xvciA9IHNoYWRvdy0+bV9jb2xvcjsKICAgICAgICAgICAgICAg
ICBzaGFkb3dDb2xvci5zZXRBbHBoYUYoc2hhZG93Q29sb3IuYWxwaGFGKCkgKiBwLT5icnVzaCgp
LmNvbG9yKCkuYWxwaGFGKCkpOwotICAgICAgICAgICAgICAgIGNvbnN0IFFUcmFuc2Zvcm0mIHRy
YW5zZm9ybSA9IHAtPnRyYW5zZm9ybSgpOwotICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0u
aXNTY2FsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXpl
ZFJlY3QudHJhbnNsYXRlZChzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5vZmZzZXQoKS54KCkp
IC8gdHJhbnNmb3JtLm0xMSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHFyZWFsPihzaGFkb3ctPm9mZnNldCgp
LnkoKSAgLyB0cmFuc2Zvcm0ubTIyKCkpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2hhZG93Q29sb3IpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
ICAgICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHNoYWRvdy0+b2Zmc2V0
KCkpLCBzaGFkb3dDb2xvcik7CisgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXpl
ZFJlY3QudHJhbnNsYXRlZChzaGFkb3ctPm9mZnNldCgpKSwgc2hhZG93Q29sb3IpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKQEAgLTc0NCwxOCArNzI3LDE1IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xv
ciwgQ29sb3JTCiAKICAgICBpZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAgICAgICBDb250
ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7Ci0KLSAgICAgICAgaWYgKHNoYWRv
dy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cpIHsKLSAgICAgICAgICAgIC8v
IFdlIGRvIG5vdCBuZWVkIGFueSBsYXllciBmb3Igc2ltcGxlIHNoYWRvdy4KLSAgICAgICAgICAg
IHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSks
IHNoYWRvdy0+bV9jb2xvcik7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtdXN0VXNl
Q29udGV4dFNoYWRvdyhwLCBzaGFkb3cpKSB7CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93
UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAg
ICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1Bh
aW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJj
ZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFJlY3Qobm9ybWFsaXplZFJl
Y3QsIHNoYWRvdy0+bV9jb2xvcik7CiAgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dM
YXllcihwKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZz
ZXQoKSksIHNoYWRvdy0+bV9jb2xvcik7CiAgICAgfQogCiAgICAgcC0+ZmlsbFJlY3Qobm9ybWFs
aXplZFJlY3QsIG1fZGF0YS0+c29saWRDb2xvcik7CkBAIC03NzEsMTkgKzc1MSwxNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IEludFNpemUmIHRvcExlZgogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CiAgICAg
aWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93
ID0gY29udGV4dFNoYWRvdygpOwotCi0gICAgICAgIGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250
ZXh0U2hhZG93OjpCbHVyU2hhZG93KSB7Ci0gICAgICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCBh
bnkgbGF5ZXIgZm9yIHNpbXBsZSBzaGFkb3cuCi0gICAgICAgICAgICBwLT50cmFuc2xhdGUobV9k
YXRhLT5zaGFkb3cub2Zmc2V0KCkpOwotICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGF0aC5wbGF0
Zm9ybVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKLSAgICAgICAgICAg
IHAtPnRyYW5zbGF0ZSgtbV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOwotICAgICAgICB9IGVsc2Ug
eworICAgICAgICBpZiAobXVzdFVzZUNvbnRleHRTaGFkb3cocCwgc2hhZG93KSkgewogICAgICAg
ICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIo
cCwgcmVjdCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAg
ICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRp
b25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFBhdGgo
cGF0aC5wbGF0Zm9ybVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKICAg
ICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG1fZGF0YS0+c2hhZG93
Lm9mZnNldCgpKTsKKyAgICAgICAgICAgIHAtPmZpbGxQYXRoKHBhdGgucGxhdGZvcm1QYXRoKCks
IFFDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9yKSk7CisgICAgICAgICAgICBwLT50cmFuc2xh
dGUoLW1fZGF0YS0+c2hhZG93Lm9mZnNldCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBwLT5m
aWxsUGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3IoY29sb3IpKTsKQEAgLTk1Myw5ICs5
MzEsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgZmxvYXQgYmx1ciwgY29uc3QKICAgICAgICAgLy8gV2UgZmxpcCB0aGUg
aGVpZ2h0IHNpbmNlIENHIGFuZCBIVE1MNSBDYW52YXMgaGF2ZSBvcHBvc2l0ZSBZIGF4aXMKICAg
ICAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUoc2l6ZS53aWR0aCgpLCAtc2l6
ZS5oZWlnaHQoKSk7CiAgICAgICAgIG1fZGF0YS0+c2hhZG93ID0gQ29udGV4dFNoYWRvdyhjb2xv
ciwgYmx1ciwgRmxvYXRTaXplKHNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpKTsKLSAgICB9
IGVsc2UgeworICAgIH0gZWxzZQogICAgICAgICBtX2RhdGEtPnNoYWRvdyA9IENvbnRleHRTaGFk
b3coY29sb3IsIGJsdXIsIEZsb2F0U2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsK
LSAgICB9CisKKyAgICBtX2RhdGEtPnNoYWRvdy5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyht
X3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmNsZWFyUGxhdGZvcm1TaGFkb3coKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76804</attachid>
            <date>2010-12-16 12:54:45 -0800</date>
            <delta_ts>2010-12-16 16:20:54 -0800</delta_ts>
            <desc>Doesn&apos;t break GTK when opening tests in launcher</desc>
            <filename>bug-50422-20101216125116.patch</filename>
            <type>text/plain</type>
            <size>37703</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNDc5OThiNzllYjU4NmI2M2U3NzA4ODEzOTViZDcwNTlmOWZlNjJjLi43OTlmZmQ5
ZWJjM2QyZDQ2M2JjZGNlM2E0N2VlMzA5MzZjM2FlNDQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAK
KzIwMTAtMTItMTYgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBDYW52YXMgc2hh
ZG93IG9mZnNldCBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IGFueSB0cmFuc2Zvcm1hdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0MjIKKwor
ICAgICAgICBPbiBhIGNhbnZhcyBjb250ZXh0LCBzaGFkb3dzIGFyZSBjdXJyZW50bHkgYWZmZWN0
ZWQgYnkgYWxsCisgICAgICAgIHRyYW5zZm9ybWF0aW9ucyBleGNlcHQgc2NhbGluZy4gQWNjb3Jk
aW5nIHRvIHRoZSBzcGVjOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2Vi
LWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbCNzaGFk
b3dzCisKKyAgICAgICAgIlRoZSBzaGFkb3dPZmZzZXRYIGFuZCBzaGFkb3dPZmZzZXRZIGF0dHJp
YnV0ZXMgc3BlY2lmeSB0aGUgZGlzdGFuY2UKKyAgICAgICAgdGhhdCB0aGUgc2hhZG93IHdpbGwg
YmUgb2Zmc2V0IGluIHRoZSBwb3NpdGl2ZSBob3Jpem9udGFsIGFuZCBwb3NpdGl2ZQorICAgICAg
ICB2ZXJ0aWNhbCBkaXN0YW5jZSByZXNwZWN0aXZlbHkuIFRoZWlyIHZhbHVlcyBhcmUgaW4gY29v
cmRpbmF0ZSBzcGFjZQorICAgICAgICB1bml0cy4gVGhleSBhcmUgbm90IGFmZmVjdGVkIGJ5IHRo
ZSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4iCisKKyAgICAgICAgTk9URTogdGhpcyBh
cHBsaWVzIG9ubHkgdG8gY2FudmFzLCBub3QgdG8gYm94IHNoYWRvd3MuCisKKyAgICAgICAgQWRk
IG5ldyB0ZXN0IHRvIGVuc3VyZSB0aGF0IHNoYWRvd3MgYXJlIGNvcnJlY3RseSB0cmFuc2Zvcm1l
ZCBrZWVwaW5nCisgICAgICAgIHRoZSByZWxhdGl2ZSBvZmZzZXQgdG8gdGhlIHNoYXBlLgorCisg
ICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVj
dGVkLnR4dDogU2VlIGJlbG93LgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zv
cm1zLWZpbGxSZWN0LXNoYWRvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxQYXRoLXNo
YWRvdy5qczoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxl
LWZpbGxSZWN0LXNoYWRvdy5qczoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMv
Y2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzOiBOb3cgdXNpbmcKKyAgICAgICAgICBh
IGxpbmVXaWR0aCA+IDEgdG8gbWFrZSBpdCBlYXNpZXIgdG8gdGVzdCBhbmQgbW9yZSBmYWlyIGFt
b25nIGFsbAorICAgICAgICAgIHBvcnRzLCBzaW5jZSB0aGVyZSBjYW4gYmUgZGlmZmVyZW50IHRy
YW5zZm9ybWF0aW9uIHNtb290aG5lc3Mgb3IKKyAgICAgICAgICBhbGlhc2luZyBzZXR0aW5ncy4K
KyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXRyYW5zZm9ybXMtZmls
bFJlY3Qtc2hhZG93LmpzOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDog
R1RLIHBvcnQgbmVlZHMgdG8gaW1wbGVtZW50IHRoaXMgZmVhdHVyZS4KKwogMjAxMC0xMi0xNiAg
QW5kcmV3IFNjaGVya3VzICA8c2NoZXJrdXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQuICBVcGRhdGluZyBDaHJvbWl1bSBtZWRpYSB0ZXN0IGV4cGVjdGF0aW9ucy4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNo
YWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUt
c3Ryb2tlUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0CmluZGV4IGU1NjIwMWY3Mzg3ZTQ2MmY3OTIy
NWU2NWY4YTM0MDFlMmUzMjM2ZmUuLmEzMzdjNGI2M2ZmMWRkZmVlZDQ0ODhlMzUxZmZkYWUxNDll
YTg1MTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1z
dHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dApAQCAtMzAsMjcg
KzMwLDI3IEBAIFBBU1MgZFszXSBpcyBhcm91bmQgNzYKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1Mg
ZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMAorUEFTUyBk
WzNdIGlzIGFyb3VuZCAxNDkKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNT
IGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMgorUEFTUyBkWzNdIGlzIGFyb3VuZCAx
MTYKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFT
UyBkWzNdIGlzIGFyb3VuZCAyOAorUEFTUyBkWzNdIGlzIGFyb3VuZCAxMTUKIFBBU1MgZFswXSBp
cyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3Vu
ZCAyMgorUEFTUyBkWzNdIGlzIGFyb3VuZCA3MAogUEFTUyBkWzBdIGlzIDI1NQogUEFTUyBkWzFd
IGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDE1CitQQVNTIGRbM10g
aXMgYXJvdW5kIDcwCiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJd
IGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMTcKK1BBU1MgZFszXSBpcyBhcm91bmQgNjkKIFBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hh
ZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zv
cm1zLWZpbGxSZWN0LXNoYWRvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDEzYjg5MTJmMGQy
YTdmMDM5MTk2M2NmNjljMGI3NGU2YjQzMTk0YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw1NyBAQAorRW5zdXJlIGNvcnJlY3QgYmVoYXZpb3Igb2YgY2FudmFz
IHdpdGggZmlsbFJlY3Qrc2hhZG93IGFmdGVyIHRyYW5zbGF0aW9uK3JvdGF0aW9uK3NjYWxpbmcu
IEEgYmx1ZSBhbmQgcmVkIGNoZWNrZXJlZCBwYXR0ZXJuIHNob3VsZCBiZSBkaXNwbGF5ZWQuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRb
MV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyAyNTUKK1BBU1MgZFswXSBpcyAy
NTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIDI1NQorUEFT
UyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10g
aXMgMjU1CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAK
K1BBU1MgZFszXSBpcyBhcm91bmQgMTI3CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMg
MAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQgMTI3CitQQVNTIGRbMF0gaXMg
MjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQg
MTI3CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BB
U1MgZFszXSBpcyBhcm91bmQgMTA2CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMgMAor
UEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQgMTA2CitQQVNTIGRbMF0gaXMgMjU1
CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQgODMK
K1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBk
WzNdIGlzIGFyb3VuZCAzNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1Mg
ZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDM2CitQQVNTIGRbMF0gaXMgMjU1CitQQVNT
IGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQgMzYKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFk
b3cuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxS
ZWN0LXNoYWRvdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmYzRlOWE4NDRlN2JmNjdmZmVlNWViZjU4ZDUw
ZGJmNDJhNzhhOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9j
YW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuaHRtbApAQCAtMCwwICsxLDEzIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2NhbnZh
cy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2Fu
dmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Nj
cmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LmpzCmluZGV4IDA1Mjg2ZjUz
MjhiNWU1OTk4MzI0MzUwNzVkYmJmMWVjMTdlNWEyMDcuLjUyMzdmYTJkYTdmMTI2OGNjNzdhZDUw
MGIzMzBiNjBjODM5ZDFlNWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Nj
cmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LmpzCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93
LmpzCkBAIC0zNSw3ICszNSw2IEBAIGN0eC5zY2FsZSgyLCAyKTsKIGN0eC5zaGFkb3dPZmZzZXRY
ID0gMTAwOwogY3R4LnNoYWRvd09mZnNldFkgPSAxMDA7CiBjdHguZmlsbFN0eWxlID0gJ3JnYmEo
MCwgMCwgMjU1LCAxKSc7Ci0vL2N0eC5saW5lV2lkdGggPSAzMDsKIAogY3R4LnNoYWRvd0NvbG9y
ID0gJ3JnYmEoMjU1LCAwLCAwLCAxLjApJzsKIGN0eC5iZWdpblBhdGgoKTsKQEAgLTczLDM4ICs3
MiwzOCBAQCBjdHguZmlsbCgpOwogdmFyIGQ7IC8vIGltYWdlRGF0YS5kYXRhCiAKIC8vIFZlcmlm
eSBzb2xpZCBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDIwNSwgMSwgMSkuZGF0
YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwgMjA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUo
J2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScs
ICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEo
Mjk5LCAyOTUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyOTgsIDI5NSwgMSwg
MSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcp
Owogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQg
PSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFn
ZURhdGEoMjAxLCAyOTgsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNo
b3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdk
WzNdJywgJzI1NScpOwogCiAvLyBWZXJpZnkgc29saWQgYWxwaGEgc2hhZG93LgotZCA9IGN0eC5n
ZXRJbWFnZURhdGEoMjAwLCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgy
MDEsIDQwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUo
J2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2Rb
M10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCA0MDUsIDEsIDEpLmRhdGE7
CitkID0gY3R4LmdldEltYWdlRGF0YSgyOTgsIDQwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdk
WzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAn
MCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURh
dGEoMjA1LCA0OTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OCwg
MSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAn
MCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUmVjdC1zaGFkb3cuanMgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0
LXNoYWRvdy5qcwppbmRleCA5OWExZTU5NGJkNTlmNzM2N2YzYzMwZGVhMTY1MWUzMmYzZDRkZTZl
Li5lNGY0ZDcxMWI2ZWI5NjEzYTdjY2JhYTEyZTRjZTM3ZjY2MDYyYTIxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0
LXNoYWRvdy5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2Fu
dmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5qcwpAQCAtNTIsMzggKzUyLDM4IEBAIGN0eC5maWxs
UmVjdCgxNTAsIDE1MCwgNTAsIDUwKTsKIHZhciBkOyAvLyBpbWFnZURhdGEuZGF0YQogCiAvLyBW
ZXJpZnkgc29saWQgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyMDUsIDEsIDEp
LmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDIwNSwgMSwgMSkuZGF0YTsKIHNob3Vs
ZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
Ml0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VE
YXRhKDI5OSwgMjk1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCAyOTgs
IDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywg
JzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwog
Ci1kID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDI5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0
SW1hZ2VEYXRhKDIwMSwgMjk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7
CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRC
ZSgnZFszXScsICcyNTUnKTsKIAogLy8gVmVyaWZ5IHNvbGlkIGFscGhhIHNoYWRvdy4KLWQgPSBj
dHguZ2V0SW1hZ2VEYXRhKDIwMCwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURh
dGEoMjAxLCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3Vs
ZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5k
KCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDA1LCAxLCAxKS5k
YXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRC
ZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJd
JywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1h
Z2VEYXRhKDIwNSwgNDk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0
OTgsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFd
JywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cu
anMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0
cm9rZVBhdGgtc2hhZG93LmpzCmluZGV4IDUxOThkOTQxNTE3ZGFiOTJiYzI4OTFjODM3NGYzNWJh
MWE4OWQ1NzkuLjkxYjkyN2Y5NWZhODdkZTVmOWQ2NTVmM2IyZmZkMmY0YjVkYWQ1MzYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUt
c3Ryb2tlUGF0aC1zaGFkb3cuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0
LXRlc3RzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy5qcwpAQCAtMzUsNiArMzUsNyBA
QCBjdHguc2NhbGUoMiwgMik7CiBjdHguc2hhZG93T2Zmc2V0WCA9IDEwMDsKIGN0eC5zaGFkb3dP
ZmZzZXRZID0gMTAwOwogY3R4LnN0cm9rZVN0eWxlID0gJ3JnYmEoMCwgMCwgMjU1LCAxKSc7Citj
dHgubGluZVdpZHRoID0gNTsKIAogY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMjU1LCAwLCAwLCAx
LjApJzsKIGN0eC5iZWdpblBhdGgoKTsKQEAgLTc2LDc5ICs3Nyw3OSBAQCBjdHguc3Ryb2tlKCk7
CiB2YXIgZDsgLy8gaW1hZ2VEYXRhLmRhdGEKIAogLy8gVmVyaWZ5IHNvbGlkIHNoYWRvdy4KLWQg
PSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFn
ZURhdGEoMjUwLCAyMDAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNo
b3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdk
WzNdJywgJzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDI5NSwgMSwgMSkuZGF0
YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDMwMCwgMjkwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUo
J2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScs
ICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEo
MjAxLCAyOTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDI1MCwgMSwg
MSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcp
Owogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKIC8v
IFZlcmlmeSBzb2xpZCBhbHBoYSBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDQw
NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwgNDA1LCAxLCAxKS5kYXRh
Owogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91
bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1kID0g
Y3R4LmdldEltYWdlRGF0YSgyOTksIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VE
YXRhKDIwMSwgNTAwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91
bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3Vu
ZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OSwgMSwgMSku
ZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDMwMCwgNDk5LCAxLCAxKS5kYXRhOwogc2hvdWxk
QmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsy
XScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCiAvLyBWZXJpZnkgYmx1
cnJ5IHNoYWRvdy4KLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDM5NCwgMjA4LCAxLCAxKS5kYXRhOwor
ZCA9IGN0eC5nZXRJbWFnZURhdGEoNDA0LCAyMTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFsw
XScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAn
KTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzIwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScs
ICcxNDknKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoNTAzLCAzMDEsIDEsIDEpLmRhdGE7Citk
ID0gY3R4LmdldEltYWdlRGF0YSg1MDUsIDI1MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBd
JywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcp
Owotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjInKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywg
JzExNicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSg1MDQsIDI1MCwgMSwgMSkuZGF0YTsKK2Qg
PSBjdHguZ2V0SW1hZ2VEYXRhKDQ1MCwgMjA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0n
LCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7
Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcyOCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAn
MTE1Jyk7CiAKIC8vIFZlcmlmeSBibHVycnkgYWxwaGEgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFn
ZURhdGEoNDA1LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg1MDUsIDQ1
MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0n
LCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAn
MjInKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzcwJyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VE
YXRhKDQxNSwgNDk1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA1LCA0NTAs
IDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywg
JzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzE1
Jyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICc3MCcpOwogCi1kID0gY3R4LmdldEltYWdlRGF0
YSg0NTAsIDUwNCwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQ1MCwgNDA1LCAx
LCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcw
Jyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcxNycp
Oworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNjknKTsKIAogdmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVz
dHMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93LmpzIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iNjdmMjQ0M2NiZTkwNjAwNTNiYzM5OTAyNzk4NWVlNWYwNzM3OWVmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2Nh
bnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5qcwpAQCAtMCwwICsxLDEzMyBAQAorZGVz
Y3JpcHRpb24oIkVuc3VyZSBjb3JyZWN0IGJlaGF2aW9yIG9mIGNhbnZhcyB3aXRoIGZpbGxSZWN0
K3NoYWRvdyBhZnRlciB0cmFuc2xhdGlvbityb3RhdGlvbitzY2FsaW5nLiBBIGJsdWUgYW5kIHJl
ZCBjaGVja2VyZWQgcGF0dGVybiBzaG91bGQgYmUgZGlzcGxheWVkLiIpOworCitmdW5jdGlvbiBw
cmludChtZXNzYWdlLCBjb2xvcikKK3sKKyAgICB2YXIgcGFyYWdyYXBoID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgcGFyYWdyYXBoLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICBwYXJhZ3JhcGguc3R5bGUuZm9udEZhbWlseSA9
ICJtb25vc3BhY2UiOworICAgIGlmIChjb2xvcikKKyAgICAgICAgcGFyYWdyYXBoLnN0eWxlLmNv
bG9yID0gY29sb3I7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBl
bmRDaGlsZChwYXJhZ3JhcGgpOworfQorCitmdW5jdGlvbiBzaG91bGRCZUFyb3VuZChhLCBiKQor
eworICAgIHZhciBldmFsQTsKKyAgICB0cnkgeworICAgICAgICBldmFsQSA9IGV2YWwoYSk7Cisg
ICAgfSBjYXRjaChlKSB7CisgICAgICAgIGV2YWxBID0gZTsKKyAgICB9CisKKyAgICBpZiAoTWF0
aC5hYnMoZXZhbEEgLSBiKSA8IDEwKQorICAgICAgICBwcmludCgiUEFTUyAiICsgYSArICIgaXMg
YXJvdW5kICIgKyBiICwgImdyZWVuIikKKyAgICBlbHNlCisgICAgICAgIHByaW50KCJGQUlMICIg
KyBhICsgIiBpcyBub3QgYXJvdW5kICIgKyBiICsgIiAoYWN0dWFsOiAiICsgZXZhbEEgKyAiKSIs
ICJyZWQiKTsKK30KKwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZh
cycpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjYW52YXMpOworY2FudmFzLnNldEF0dHJp
YnV0ZSgnd2lkdGgnLCAnNjAwJyk7CitjYW52YXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCAnNjAw
Jyk7Cit2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7CisKK2N0eC5maWxsU3R5bGUg
PSAncmdiYSgwLCAwLCAyNTUsIDEuMCknOworY3R4LnNoYWRvd09mZnNldFggPSAxMDA7CitjdHgu
c2hhZG93T2Zmc2V0WSA9IDEwMDsKKworY3R4LnRyYW5zbGF0ZSgtMTAwLCAtMTAwKTsKK2N0eC5y
b3RhdGUoTWF0aC5QSS8yKTsKK2N0eC5zY2FsZSgyLCAyKTsKKworY3R4LnNoYWRvd0NvbG9yID0g
J3JnYmEoMjU1LCAwLCAwLCAxLjApJzsKK2N0eC5maWxsUmVjdCgxMDAsIC0xNTAsIDUwLCA1MCk7
CisKK2N0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwgMC41KSc7CitjdHguZmlsbFJl
Y3QoMjAwLCAtMTUwLCA1MCwgNTApOworCitjdHguc2hhZG93Qmx1ciA9IDU7CitjdHguc2hhZG93
Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDEuMCknOworY3R4LmZpbGxSZWN0KDEwMCwgLTI1MCwg
NTAsIDUwKTsKKworY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMjU1LCAwLCAwLCAwLjUpJzsKK2N0
eC5maWxsUmVjdCgyMDAsIC0yNTAsIDUwLCA1MCk7CisKK3ZhciBkOyAvLyBpbWFnZURhdGEuZGF0
YQorCisvLyBWZXJpZnkgc29saWQgc2hhZG93LgorZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAy
MDUsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFd
JywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzNdJywgJzI1NScp
OworCitkID0gY3R4LmdldEltYWdlRGF0YSgyOTgsIDI5OCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJl
KCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0n
LCAnMCcpOworc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRh
KDIwMSwgMjk4LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRC
ZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZSgnZFszXScs
ICcyNTUnKTsKKworLy8gVmVyaWZ5IHNvbGlkIGFscGhhIHNoYWRvdy4KK2QgPSBjdHguZ2V0SW1h
Z2VEYXRhKDIwMSwgNDAxLCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7Citz
aG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFy
b3VuZCgnZFszXScsICcxMjcnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCA0NTAsIDEs
IDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAn
KTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzEyNycp
OworCitkID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJl
KCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0n
LCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTI3Jyk7CisKKy8vIFZlcmlmeSBibHVy
cnkgc2hhZG93LgorZCA9IGN0eC5nZXRJbWFnZURhdGEoMzk5LCAyMDUsIDEsIDEpLmRhdGE7Citz
aG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJl
KCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzEwNicpOworCitkID0gY3R4
LmdldEltYWdlRGF0YSg1MDAsIDIwNSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1
NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hv
dWxkQmVBcm91bmQoJ2RbM10nLCAnMTA2Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQ5OSwg
Mjk5LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsx
XScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScs
ICc4MycpOworCisvLyBWZXJpZnkgYmx1cnJ5IGFscGhhIHNoYWRvdy4KK2QgPSBjdHguZ2V0SW1h
Z2VEYXRhKDM5OCwgNDA1LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7Citz
aG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFy
b3VuZCgnZFszXScsICczNicpOworCitkID0gY3R4LmdldEltYWdlRGF0YSg0MDUsIDUwMSwgMSwg
MSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcp
Oworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMzYnKTsK
KworZCA9IGN0eC5nZXRJbWFnZURhdGEoNDA1LCA1MDEsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgn
ZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywg
JzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzM2Jyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBw
ZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRleCBkZmI1Yjc0MGNiZjlh
MWM5YjVhNDFkMWQxMzEyYjNiMzhjZTRiNjEwLi5jZDQzMjQ2ZmNlZGU3ZmQ0MTY4NDgyZjI5ZDc4
ZTZiOGIyNjg0OGFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAtMTAyNSw2ICsxMDI1
LDcgQEAgZWRpdGluZy91bnN1cHBvcnRlZC1jb250ZW50L3RhYmxlLXR5cGUtYmVmb3JlLmh0bWwK
IGZhc3QvY2FudmFzL2NhbnZhcy1iZy16b29tLmh0bWwKIGZhc3QvY2FudmFzL2NhbnZhcy1nZXRJ
bWFnZURhdGEuaHRtbAogZmFzdC9jYW52YXMvY2FudmFzLWdyYWRpZW50LWFkZFN0b3AtZXJyb3Iu
aHRtbAorZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWwK
IGZhc3QvY2FudmFzL2NhbnZhcy16b29tLmh0bWwKIGZhc3QvY3NzL2NzczFfZm9yd2FyZF9jb21w
YXRpYmxlX3BhcnNpbmcuaHRtbAogZmFzdC9jc3MvaW52YWxpZC1wZXJjZW50YWdlLXByb3BlcnR5
Lmh0bWwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggYTFjMDA0Njk5NDQ3ZmYwZDI5YjBjMWE2NTBhMWYzNTJmOGZlZjQyOS4uMWZjN2U3Y2Q2
MDZlODczMGJjZWUyNjM2N2Q4YjgyYmM4NzMyMzBjZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMC0xMi0x
NiAgSGVsZGVyIENvcnJlaWEgIDxoZWxkZXJAc2VuY2hhLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIENhbnZhcyBzaGFkb3cgb2Zmc2V0
IHNob3VsZCBub3QgYmUgYWZmZWN0ZWQgYnkgYW55IHRyYW5zZm9ybWF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDQyMgorCisgICAgICAgIE9u
IGEgY2FudmFzIGNvbnRleHQsIHNoYWRvd3MgYXJlIGN1cnJlbnRseSBhZmZlY3RlZCBieSBhbGwK
KyAgICAgICAgdHJhbnNmb3JtYXRpb25zIGV4Y2VwdCBzY2FsaW5nLiBBY2NvcmRpbmcgdG8gdGhl
IHNwZWM6CisgICAgICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJy
ZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1jYW52YXMtZWxlbWVudC5odG1sI3NoYWRvd3MKKworICAg
ICAgICAiVGhlIHNoYWRvd09mZnNldFggYW5kIHNoYWRvd09mZnNldFkgYXR0cmlidXRlcyBzcGVj
aWZ5IHRoZSBkaXN0YW5jZQorICAgICAgICB0aGF0IHRoZSBzaGFkb3cgd2lsbCBiZSBvZmZzZXQg
aW4gdGhlIHBvc2l0aXZlIGhvcml6b250YWwgYW5kIHBvc2l0aXZlCisgICAgICAgIHZlcnRpY2Fs
IGRpc3RhbmNlIHJlc3BlY3RpdmVseS4gVGhlaXIgdmFsdWVzIGFyZSBpbiBjb29yZGluYXRlIHNw
YWNlCisgICAgICAgIHVuaXRzLiBUaGV5IGFyZSBub3QgYWZmZWN0ZWQgYnkgdGhlIGN1cnJlbnQg
dHJhbnNmb3JtYXRpb24gbWF0cml4LiIKKworICAgICAgICBOT1RFOiB0aGlzIGFwcGxpZXMgb25s
eSB0byBjYW52YXMsIG5vdCB0byBib3ggc2hhZG93cy4KKworICAgICAgICBUZXN0OiBmYXN0L2Nh
bnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuaHRtbAorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZXh0U2hhZG93OjpDb250ZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRT
aGFkb3c6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Db250ZXh0U2hhZG93Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93
OjpzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0
U2hhZG93OjpzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0U2hhZG93OjpvZmZzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRl
eHRTaGFkb3dRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjpiZWdpblNo
YWRvd0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xh
eWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjptdXN0VXNlQ29udGV4dFNoYWRvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxh
dGZvcm1TaGFkb3cpOgorCiAyMDEwLTEyLTE2ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcAppbmRleCA4N2ExYzVjNzYz
Y2VjNTU2NjM0ZjJmYmFmYzY3NTk0MjllZGM1OWQxLi5iNWFlNTkyNTlkNDQ2MWUzOWY2ZTI2M2Ez
ZWIzOGY1NzYyZGViMDQ3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bnRleHRTaGFkb3cuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNo
YWRvdy5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgQ29udGV4dFNoYWRvdzo6Q29udGV4dFNoYWRvdygp
CiAgICAgOiBtX3R5cGUoTm9TaGFkb3cpCiAgICAgLCBtX2JsdXJEaXN0YW5jZSgwKQogICAgICwg
bV9sYXllckNvbnRleHQoMCkKKyAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoZmFsc2Up
CiB7CiB9CiAKQEAgLTQ5LDYgKzUwLDcgQEAgQ29udGV4dFNoYWRvdzo6Q29udGV4dFNoYWRvdyhj
b25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHJhZGl1cywgY29uc3QgRmxvYXRTaXplJgogICAgICwg
bV9ibHVyRGlzdGFuY2Uocm91bmQocmFkaXVzKSkKICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKICAg
ICAsIG1fbGF5ZXJDb250ZXh0KDApCisgICAgLCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZh
bHNlKQogewogICAgIC8vIFNlZSBjb21tZW50cyBpbiBodHRwOi8vd2Via2l0Lm9yZy9iLzQwNzkz
LCBpdCBzZWVtcyBzZW5zaWJsZQogICAgIC8vIHRvIGZvbGxvdyBTa2lhJ3MgbGltaXQgb2YgMTI4
IHBpeGVscyBvZiBibHVyIHJhZGl1cwpAQCAtMTQ5LDYgKzE1MSw2NyBAQCB2b2lkIENvbnRleHRT
aGFkb3c6OmJsdXJMYXllckltYWdlKHVuc2lnbmVkIGNoYXIqIGltYWdlRGF0YSwgY29uc3QgSW50
U2l6ZSYgc2l6ZQogICAgIH0KIH0KIAorI2lmIFBMQVRGT1JNKFFUKQorSW50UmVjdCBDb250ZXh0
U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHQg
cCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQor
eworICAgIC8vIENhbGN1bGF0ZSB0aGUgZGVzdGluYXRpb24gb2YgdGhlIGJsdXJyZWQgYW5kL29y
IHRyYW5zZm9ybWVkIGxheWVyLgorICAgIEZsb2F0UmVjdCBsYXllckZsb2F0UmVjdDsKKyAgICBm
bG9hdCBpbmZsYXRpb24gPSAwOworCisgICAgY29uc3QgUVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBw
LT50cmFuc2Zvcm0oKTsKKyAgICBpZiAobV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAmJiAhdHJh
bnNmb3JtLmlzSWRlbnRpdHkoKSkgeworICAgICAgICBRUG9seWdvbkYgdHJhbnNmb3JtZWRQb2x5
Z29uID0gdHJhbnNmb3JtLm1hcChRUG9seWdvbkYobGF5ZXJBcmVhKSk7CisgICAgICAgIHRyYW5z
Zm9ybWVkUG9seWdvbi50cmFuc2xhdGUob2Zmc2V0KCkpOworICAgICAgICBsYXllckZsb2F0UmVj
dCA9IHRyYW5zZm9ybS5pbnZlcnRlZCgpLm1hcCh0cmFuc2Zvcm1lZFBvbHlnb24pLmJvdW5kaW5n
UmVjdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGxheWVyRmxvYXRSZWN0ID0gbGF5ZXJBcmVh
OworICAgICAgICBsYXllckZsb2F0UmVjdC5tb3ZlKG1fb2Zmc2V0KTsKKyAgICB9CisKKyAgICAv
LyBXZSBleHBhbmQgdGhlIGFyZWEgYnkgdGhlIGJsdXIgcmFkaXVzIHRvIGdpdmUgZXh0cmEgc3Bh
Y2UgZm9yIHRoZSBibHVyIHRyYW5zaXRpb24uCisgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93
KSB7CisgICAgICAgIGxheWVyRmxvYXRSZWN0LmluZmxhdGUobV9ibHVyRGlzdGFuY2UpOworICAg
ICAgICBpbmZsYXRpb24gKz0gbV9ibHVyRGlzdGFuY2U7CisgICAgfQorCisgICAgRmxvYXRSZWN0
IHVuY2xpcHBlZExheWVyUmVjdCA9IGxheWVyRmxvYXRSZWN0OworCisgICAgaWYgKCFjbGlwUmVj
dC5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KGxheWVyRmxvYXRSZWN0KSkpIHsKKyAgICAgICAg
Ly8gTm8gbmVlZCB0byBoYXZlIHRoZSBidWZmZXIgbGFyZ2VyIHRoYW4gdGhlIGNsaXAuCisgICAg
ICAgIGxheWVyRmxvYXRSZWN0LmludGVyc2VjdChjbGlwUmVjdCk7CisKKyAgICAgICAgLy8gSWYg
d2UgYXJlIHRvdGFsbHkgb3V0c2lkZSB0aGUgY2xpcCByZWdpb24sIHdlIGFyZW4ndCBwYWludGlu
ZyBhdCBhbGwuCisgICAgICAgIGlmIChsYXllckZsb2F0UmVjdC5pc0VtcHR5KCkpCisgICAgICAg
ICAgICByZXR1cm4gSW50UmVjdCgwLCAwLCAwLCAwKTsKKworICAgICAgICAvLyBXZSBhZGp1c3Qg
YWdhaW4gYmVjYXVzZSB0aGUgcGl4ZWxzIGF0IHRoZSBib3JkZXJzIGFyZSBzdGlsbAorICAgICAg
ICAvLyBwb3RlbnRpYWxseSBhZmZlY3RlZCBieSB0aGUgcGl4ZWxzIG91dHNpZGUgdGhlIGJ1ZmZl
ci4KKyAgICAgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7CisgICAgICAgICAgICBsYXll
ckZsb2F0UmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNlKTsKKyAgICAgICAgICAgIHVuY2xpcHBl
ZExheWVyUmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNlKTsKKyAgICAgICAgICAgIGluZmxhdGlv
biArPSBtX2JsdXJEaXN0YW5jZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IGludCBm
cmFtZVNpemUgPSBpbmZsYXRpb24gKiAyOworICAgIG1fc291cmNlUmVjdCA9IEludFJlY3QoMCwg
MCwgbGF5ZXJBcmVhLndpZHRoKCkgKyBmcmFtZVNpemUsIGxheWVyQXJlYS5oZWlnaHQoKSArIGZy
YW1lU2l6ZSk7CisKKyAgICBtX2xheWVyT3JpZ2luID0gRmxvYXRQb2ludChsYXllckZsb2F0UmVj
dC54KCksIGxheWVyRmxvYXRSZWN0LnkoKSk7CisKKyAgICBjb25zdCBGbG9hdFBvaW50IG1fdW5j
bGlwcGVkTGF5ZXJPcmlnaW4gPSBGbG9hdFBvaW50KHVuY2xpcHBlZExheWVyUmVjdC54KCksIHVu
Y2xpcHBlZExheWVyUmVjdC55KCkpOworICAgIGNvbnN0IEZsb2F0U2l6ZSBjbGlwcGVkT3V0ID0g
bV91bmNsaXBwZWRMYXllck9yaWdpbiAtIG1fbGF5ZXJPcmlnaW47CisKKyAgICAvLyBTZXQgdGhl
IG9yaWdpbiBhcyB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBzY3JhdGNoIGltYWdlLCBvciwg
aW4gY2FzZSB0aGVyZSdzIGEgY2xpcHBlZAorICAgIC8vIG91dCByZWdpb24sIHNldCB0aGUgb3Jp
Z2luIGFjY29yZGluZ2x5IHRvIHRoZSBmdWxsIGJvdW5kaW5nIHJlY3QncyB0b3AtbGVmdCBjb3Ju
ZXIuCisgICAgY29uc3QgZmxvYXQgdHJhbnNsYXRpb25YID0gLWxheWVyQXJlYS54KCkgKyBpbmZs
YXRpb24gLSBmYWJzZihjbGlwcGVkT3V0LndpZHRoKCkpOworICAgIGNvbnN0IGZsb2F0IHRyYW5z
bGF0aW9uWSA9IC1sYXllckFyZWEueSgpICsgaW5mbGF0aW9uIC0gZmFic2YoY2xpcHBlZE91dC5o
ZWlnaHQoKSk7CisgICAgbV9sYXllckNvbnRleHRUcmFuc2xhdGlvbiA9IEZsb2F0UG9pbnQodHJh
bnNsYXRpb25YLCB0cmFuc2xhdGlvblkpOworCisgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3Qo
bGF5ZXJGbG9hdFJlY3QpOworfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShDQUlSTykKIHZvaWQg
Q29udGV4dFNoYWRvdzo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoY29uc3QgRmxvYXRSZWN0
JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQogewogICAgIC8vIENhbGN1bGF0
ZSB0aGUgZGVzdGluYXRpb24gb2YgdGhlIGJsdXJyZWQgbGF5ZXIuCkBAIC0xNzMsNSArMjM2LDYg
QEAgdm9pZCBDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBG
bG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QKICAgICAgICAgICAgIG1fbGF5ZXJSZWN0LmluZmxh
dGUobV90eXBlID09IEJsdXJTaGFkb3cgPyBtX2JsdXJEaXN0YW5jZSA6IDApOwogICAgIH0KIH0K
KyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29udGV4dFNoYWRvdy5oCmluZGV4IGZhNzc4YWZiY2NkZGZhZmMzZjQwY2QwMjNjYjdhZDRm
NDUxZWQ1MmMuLmQ3NGIxZGVlMTQ3M2Y2NGU1NWM3MzUzZWQ4MDQ3YjA0ZTJiMDI1YTAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCkBAIC0xMDYsMjcgKzEwNiw0
MyBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1Db250ZXh0IGJlZ2luU2hhZG93TGF5ZXIoUGxhdGZv
cm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSk7CiAgICAgdm9pZCBlbmRTaGFk
b3dMYXllcihQbGF0Zm9ybUNvbnRleHQpOwogICAgIHN0YXRpYyB2b2lkIHB1cmdlU2NyYXRjaEJ1
ZmZlcigpOworICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBlbmFibGUp
IHsgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IGVuYWJsZTsgfQorICAgIGJvb2wgc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zOyB9CiAjaWYgUExBVEZPUk0oQ0FJUk8pCiAgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUm
IHRvcExlZnRSYWRpdXMgPSBJbnRTaXplKCksIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0UmFkaXVz
ID0gSW50U2l6ZSgpLCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0UmFkaXVzID0gSW50U2l6ZSgp
LCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodFJhZGl1cyA9IEludFNpemUoKSk7CiAjZW5kaWYK
LQogI2lmIFBMQVRGT1JNKFFUKQotICAgIFFQb2ludEYgb2Zmc2V0KCkgeyByZXR1cm4gUVBvaW50
RihtX29mZnNldC53aWR0aCgpLCBtX29mZnNldC5oZWlnaHQoKSk7IH0KKyAgICBRUG9pbnRGIG9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIFFQb2ludEYobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQu
aGVpZ2h0KCkpOyB9CiAjZW5kaWYKIAogCiBwcml2YXRlOgotICAgIEludFJlY3QgbV9sYXllclJl
Y3Q7CisgICAgLy8gQnVmZmVyIHRvIHdoZXJlIHRoZSB0ZW1wb3Jhcnkgc2hhZG93IHdpbGwgYmUg
ZHJhd24gdG8uCiAgICAgUGxhdGZvcm1JbWFnZSBtX2xheWVySW1hZ2U7CisgICAgLy8gQ29udGV4
dCB1c2VkIHRvIHBhaW50IHRoZSBzaGFkb3cgdG8gdGhlIGxheWVyIGltYWdlLgogICAgIFBsYXRm
b3JtQ29udGV4dCBtX2xheWVyQ29udGV4dDsKLQorI2lmIFBMQVRGT1JNKFFUKQorICAgIC8vIFN1
Yi1yZWN0IG9mIG1fbGF5ZXJJbWFnZSB0aGF0IGNvbnRhaW5zIHRoZSBzaGFkb3cgcGl4ZWxzLgor
ICAgIEZsb2F0UmVjdCBtX3NvdXJjZVJlY3Q7CisgICAgLy8gVG9wLWxlZnQgY29ybmVyIG9mIHRo
ZSAocG9zc2libHkgY2xpcHBlZCkgYm91bmRpbmcgcmVjdCB0byBkcmF3IHRoZSBzaGFkb3cgdG8u
CisgICAgRmxvYXRQb2ludCBtX2xheWVyT3JpZ2luOworICAgIC8vIFRyYW5zbGF0aW9uIHRvIGFw
cGx5IHRvIG1fbGF5ZXJDb250ZXh0IGZvciB0aGUgc2hhZG93IHRvIGJlIGNvcnJlY3RseSBjbGlw
cGVkLgorICAgIEZsb2F0UG9pbnQgbV9sYXllckNvbnRleHRUcmFuc2xhdGlvbjsKKyNlbmRpZgor
I2lmIFBMQVRGT1JNKENBSVJPKQorICAgIC8vIEVuY2xvc2luZyBpbnQgcmVjdCB3aGVyZSBzaGFk
b3cgbmVlZHMgdG8gYmUgZHJhd24gdG8gdXNpbmcgdGhlIGxheWVyIGNvbnRleHQuCisgICAgSW50
UmVjdCBtX2xheWVyUmVjdDsKICAgICAvLyBVc2VkIGZvciByZWZlcmVuY2Ugd2hlbiBjYW52YXMg
c2NhbGUoeCx5KSB3YXMgY2FsbGVkLgogICAgIEZsb2F0UmVjdCBtX3Vuc2NhbGVkTGF5ZXJSZWN0
OworI2VuZGlmCisgICAgYm9vbCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogCiAgICAgdm9p
ZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXpl
LCBpbnQgc3RyaWRlKTsKLSAgICB2b2lkIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAjaWYgUExB
VEZPUk0oQ0FJUk8pCisgICAgdm9pZCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBG
bG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwogICAgIHZvaWQg
ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKFBsYXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25z
dCBJbnRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1
cywgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMsIGZsb2F0IGFscGhhKTsKKyNlbHNl
CisgICAgSW50UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBQbGF0Zm9ybUNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVj
dCk7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvQ29udGV4dFNoYWRvd1F0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29u
dGV4dFNoYWRvd1F0LmNwcAppbmRleCBmN2M3MGY2OTViYzBmYzQyNTBjYzliZGMzNWU5ZDVlOGU2
M2Y5NzQ0Li4xMzJlMTI5OThiZGZhM2MzYTY5YTNkZTBkMTcyZmZlNDg1ZjYwOWUyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwCkBAIC0x
MTQsMjUgKzExNCwyMiBAQCBQbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRvdzo6YmVnaW5TaGFk
b3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCwgY29uc3QgRmxvYXRSZQogICAgIGVsc2UKICAgICAg
ICAgY2xpcFJlY3QgPSBwLT50cmFuc2Zvcm0oKS5pbnZlcnRlZCgpLm1hcFJlY3QocC0+d2luZG93
KCkpOwogCi0gICAgbV91bnNjYWxlZExheWVyUmVjdCA9IGxheWVyQXJlYTsKLSAgICBjYWxjdWxh
dGVMYXllckJvdW5kaW5nUmVjdChsYXllckFyZWEsIEludFJlY3QoY2xpcFJlY3QueCgpLCBjbGlw
UmVjdC55KCksIGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKSk7CisgICAgLy8g
U2V0IG1fbGF5ZXJPcmlnaW4sIG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24sIG1fc291cmNlUmVj
dC4KKyAgICBJbnRSZWN0IGNsaXAoY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNsaXBSZWN0
LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKKyAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNh
bGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KHAsIGxheWVyQXJlYSwgY2xpcCk7CiAKICAgICAvLyBE
b24ndCBwYWludCBpZiB3ZSBhcmUgdG90YWxseSBvdXRzaWRlIHRoZSBjbGlwIHJlZ2lvbi4KLSAg
ICBpZiAobV9sYXllclJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFNoYWRvd0J1ZmZlciogc2hhZG93QnVmZmVyID0g
c2NyYXRjaFNoYWRvd0J1ZmZlcigpOwotICAgIFFJbWFnZSogc2hhZG93SW1hZ2UgPSBzaGFkb3dC
dWZmZXItPnNjcmF0Y2hJbWFnZShtX2xheWVyUmVjdC5zaXplKCkpOworICAgIFFJbWFnZSogc2hh
ZG93SW1hZ2UgPSBzaGFkb3dCdWZmZXItPnNjcmF0Y2hJbWFnZShsYXllclJlY3Quc2l6ZSgpKTsK
ICAgICBtX2xheWVySW1hZ2UgPSBRSW1hZ2UoKnNoYWRvd0ltYWdlKTsKIAogICAgIG1fbGF5ZXJD
b250ZXh0ID0gbmV3IFFQYWludGVyOwogICAgIG1fbGF5ZXJDb250ZXh0LT5iZWdpbigmbV9sYXll
ckltYWdlKTsKICAgICBtX2xheWVyQ29udGV4dC0+c2V0Rm9udChwLT5mb250KCkpOwotICAgIG1f
bGF5ZXJDb250ZXh0LT50cmFuc2xhdGUobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQuaGVpZ2h0
KCkpOwotCi0gICAgLy8gVGhlIG9yaWdpbiBpcyBub3cgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0
aGUgc2NyYXRjaCBpbWFnZS4KLSAgICBtX2xheWVyQ29udGV4dC0+dHJhbnNsYXRlKC1tX2xheWVy
UmVjdC54KCksIC1tX2xheWVyUmVjdC55KCkpOwotCisgICAgbV9sYXllckNvbnRleHQtPnRyYW5z
bGF0ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKICAgICByZXR1cm4gbV9sYXllckNvbnRl
eHQ7CiB9CiAKQEAgLTE1NSwxMyArMTUyLDcgQEAgdm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFk
b3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCkKICAgICAgICAgcC5lbmQoKTsKICAgICB9CiAKLSAg
ICBjb25zdCBRVHJhbnNmb3JtIHRyYW5zZm9ybSA9IHAtPnRyYW5zZm9ybSgpOwotICAgIGlmICh0
cmFuc2Zvcm0uaXNTY2FsaW5nKCkpIHsKLSAgICAgICAgcXJlYWwgeCA9IG1fdW5zY2FsZWRMYXll
clJlY3QueCgpICsgbV9vZmZzZXQud2lkdGgoKSAgLyB0cmFuc2Zvcm0ubTExKCkgLSBtX2JsdXJE
aXN0YW5jZTsKLSAgICAgICAgcXJlYWwgeSA9IG1fdW5zY2FsZWRMYXllclJlY3QueSgpICsgbV9v
ZmZzZXQuaGVpZ2h0KCkgLyB0cmFuc2Zvcm0ubTIyKCkgLSBtX2JsdXJEaXN0YW5jZTsKLSAgICAg
ICAgcC0+ZHJhd0ltYWdlKFFQb2ludEYoeCwgeSksIG1fbGF5ZXJJbWFnZSk7Ci0gICAgfSBlbHNl
Ci0gICAgICAgIHAtPmRyYXdJbWFnZShtX2xheWVyUmVjdC50b3BMZWZ0KCksIG1fbGF5ZXJJbWFn
ZSk7CisgICAgcC0+ZHJhd0ltYWdlKG1fbGF5ZXJPcmlnaW4sIG1fbGF5ZXJJbWFnZSwgbV9zb3Vy
Y2VSZWN0KTsKIAogICAgIHNjcmF0Y2hTaGFkb3dCdWZmZXIoKS0+c2NoZWR1bGVQdXJnZSgpOwog
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0
LmNwcAppbmRleCAyZjhhOTFmYjNhNGQ5YmRkY2ViYjEwZjIwMDUwNGU2NGE1NmRlNjM2Li5kNWU3
Y2NkMzZlMmMzZjQ1YWIzYjkxYjc4NzFlMTg2MDJmYTUzYWU5IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtNTMsNyArNTMs
NiBAQAogI2luY2x1ZGUgIlRyYW5zcGFyZW5jeUxheWVyLmgiCiAKICNpbmNsdWRlIDxRQnJ1c2g+
Ci0jaW5jbHVkZSA8UURlYnVnPgogI2luY2x1ZGUgPFFHcmFkaWVudD4KICNpbmNsdWRlIDxRUGFp
bnREZXZpY2U+CiAjaW5jbHVkZSA8UVBhaW50RW5naW5lPgpAQCAtMTc1LDYgKzE3NCwyMiBAQCBz
dGF0aWMgaW5saW5lIFF0OjpGaWxsUnVsZSB0b1F0RmlsbFJ1bGUoV2luZFJ1bGUgcnVsZSkKICAg
ICByZXR1cm4gUXQ6Ok9kZEV2ZW5GaWxsOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgbXVzdFVz
ZUNvbnRleHRTaGFkb3coUVBhaW50ZXIqIHBhaW50ZXIsIENvbnRleHRTaGFkb3cqIHNoYWRvdykK
K3sKKyAgICBpZiAoc2hhZG93LT5tX3R5cGUgPT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdykK
KyAgICAgICAgLy8gV2UgY2FuJ3QgYXZvaWQgQ29udGV4dFNoYWRvdywgc2luY2UgdGhlIHNoYWRv
dyBoYXMgYmx1ci4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFzaGFkb3ctPnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKCkpCisgICAgICAgIC8vIFdlIGNhbiBhdm9pZCBDb250ZXh0U2hh
ZG93IGFuZCBvcHRpbWl6ZSwgc2luY2Ugd2UncmUgbm90IGRyYXdpbmcgb24gYSBjYW52YXMgYW5k
IGJveAorICAgICAgICAvLyBzaGFkb3dzIGFyZSBhZmZlY3RlZCBieSB0aGUgdHJhbnNmb3JtYXRp
b24gbWF0cml4LgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHBhaW50ZXItPnRyYW5z
Zm9ybSgpLmlzSWRlbnRpdHkoKSkKKyAgICAgICAgLy8gV2UgY2FuIGF2b2lkIENvbnRleHRTaGFk
b3csIHNpbmNlIHRoZXJlIGFyZSBubyB0cmFuc2Zvcm1hdGlvbnMgdG8gYXBwbHkgdG8gdGhlIGNh
bnZhcy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIE90aGVyd2lzZSwgbm8gY2hhbmNl
IGF2b2lkaW5nIENvbnRleHRTaGFkb3cuCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJs
aWM6CiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFFQYWludGVyKiwgY29uc3Qg
UUNvbG9yJiBpbml0aWFsU29saWRDb2xvcik7CkBAIC01MDYsMzMgKzUyMSwyMCBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlmIChtX2Rh
dGEtPmhhc1NoYWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRl
eHRTaGFkb3coKTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6
OkJsdXJTaGFkb3cKLSAgICAgICAgICAgICYmICFtX3N0YXRlLmZpbGxQYXR0ZXJuICYmICFtX3N0
YXRlLmZpbGxHcmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNo
YWRvdykgfHwgbV9zdGF0ZS5maWxsUGF0dGVybiB8fCBtX3N0YXRlLmZpbGxHcmFkaWVudCkKICAg
ICAgICAgewotICAgICAgICAgICAgUVBvaW50RiBvZmZzZXQgPSBzaGFkb3ctPm9mZnNldCgpOwot
ICAgICAgICAgICAgY29uc3QgUVRyYW5zZm9ybSYgdHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7
Ci0gICAgICAgICAgICBpZiAodHJhbnNmb3JtLmlzU2NhbGluZygpKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gSWYgc2NhbGluZyBpcyByZXF1aXJlZCwgZmluZCB0aGUgbmV3IGNvb3JkIGZvciBzaGFk
b3cgb3JpZ2luLAotICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIHJlbGF0aXZlIG9mZnNl
dCB0byBpdHMgc2hhcGUgaXMga2VwdC4KLSAgICAgICAgICAgICAgICBRUG9pbnRGIHRyYW5zbGF0
ZWRPZmZzZXQob2Zmc2V0LngoKSAvIHRyYW5zZm9ybS5tMTEoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LnkoKSAvIHRyYW5zZm9ybS5tMjIoKSk7Ci0g
ICAgICAgICAgICAgICAgcGxhdGZvcm1QYXRoLnRyYW5zbGF0ZSh0cmFuc2xhdGVkT2Zmc2V0KTsK
LSAgICAgICAgICAgICAgICBwLT5maWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihzaGFkb3ct
Pm1fY29sb3IpKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKC10cmFu
c2xhdGVkT2Zmc2V0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcC0+
dHJhbnNsYXRlKG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGxhdGZvcm1Q
YXRoLCBRQ29sb3Ioc2hhZG93LT5tX2NvbG9yKSk7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNs
YXRlKC1vZmZzZXQpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwg
cGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKSk7CiAgICAgICAgICAgICBpZiAoc2hhZG93
UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9u
TW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAg
c2hhZG93UGFpbnRlci0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3IobV9kYXRhLT5zaGFk
b3cubV9jb2xvcikpOwogICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7
CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBRUG9pbnRGIG9m
ZnNldCA9IHNoYWRvdy0+b2Zmc2V0KCk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0
KTsKKyAgICAgICAgICAgIHAtPmZpbGxQYXRoKHBsYXRmb3JtUGF0aCwgUUNvbG9yKHNoYWRvdy0+
bV9jb2xvcikpOworICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZzZXQpOwogICAgICAgICB9
Ci0KICAgICB9CiAgICAgaWYgKG1fc3RhdGUuZmlsbFBhdHRlcm4pIHsKICAgICAgICAgQWZmaW5l
VHJhbnNmb3JtIGFmZmluZTsKQEAgLTU1NywyOCArNTU5LDggQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlmIChtX2RhdGEtPmhhc1No
YWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFkb3co
KTsKLQotICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Qmx1clNo
YWRvdwotICAgICAgICAgICAgJiYgIW1fc3RhdGUuc3Ryb2tlUGF0dGVybiAmJiAhbV9zdGF0ZS5z
dHJva2VHcmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRv
dykgfHwgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuIHx8IG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIFFQZW4gc2hhZG93UGVuKHBlbik7Ci0gICAgICAgICAgICBz
aGFkb3dQZW4uc2V0Q29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xvcik7Ci0gICAgICAgICAgICBR
UG9pbnRGIG9mZnNldCA9IHNoYWRvdy0+b2Zmc2V0KCk7Ci0gICAgICAgICAgICBjb25zdCBRVHJh
bnNmb3JtJiB0cmFuc2Zvcm0gPSBwLT50cmFuc2Zvcm0oKTsKLSAgICAgICAgICAgIGlmICh0cmFu
c2Zvcm0uaXNTY2FsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBJZiBzY2FsaW5nIGlzIHJl
cXVpcmVkLCBmaW5kIHRoZSBuZXcgY29vcmQgZm9yIHNoYWRvdyBvcmlnaW4sCi0gICAgICAgICAg
ICAgICAgLy8gc28gdGhhdCB0aGUgcmVsYXRpdmUgb2Zmc2V0IHRvIGl0cyBzaGFwZSBpcyBrZXB0
LgotICAgICAgICAgICAgICAgIFFQb2ludEYgdHJhbnNsYXRlZE9mZnNldChvZmZzZXQueCgpIC8g
dHJhbnNmb3JtLm0xMSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvZmZzZXQueSgpIC8gdHJhbnNmb3JtLm0yMigpKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9y
bVBhdGgudHJhbnNsYXRlKHRyYW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgICAgIHAtPnN0
cm9rZVBhdGgocGxhdGZvcm1QYXRoLCBzaGFkb3dQZW4pOwotICAgICAgICAgICAgICAgIHBsYXRm
b3JtUGF0aC50cmFuc2xhdGUoLXRyYW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKLSAgICAgICAgICAgICAg
ICBwLT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgc2hhZG93UGVuKTsKLSAgICAgICAgICAgICAg
ICBwLT50cmFuc2xhdGUoLW9mZnNldCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBGbG9hdFJlY3QgYm91bmRpbmdSZWN0ID0gcGxhdGZvcm1QYXRoLmNvbnRy
b2xQb2ludFJlY3QoKTsKICAgICAgICAgICAgIGJvdW5kaW5nUmVjdC5pbmZsYXRlKHBlbi5taXRl
ckxpbWl0KCkgKyBwZW4ud2lkdGhGKCkpOwogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1Bh
aW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgYm91bmRpbmdSZWN0KTsKQEAgLTU4
Nyw2ICs1NjksMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0
aCYgcGF0aCkKICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zdHJva2VQYXRoKHBsYXRm
b3JtUGF0aCwgcGVuKTsKICAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHAp
OwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUVBlbiBzaGFk
b3dQZW4ocGVuKTsKKyAgICAgICAgICAgIHNoYWRvd1Blbi5zZXRDb2xvcihtX2RhdGEtPnNoYWRv
dy5tX2NvbG9yKTsKKyAgICAgICAgICAgIFFQb2ludEYgb2Zmc2V0ID0gc2hhZG93LT5vZmZzZXQo
KTsKKyAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShvZmZzZXQpOworICAgICAgICAgICAgcC0+c3Ry
b2tlUGF0aChwbGF0Zm9ybVBhdGgsIHNoYWRvd1Blbik7CisgICAgICAgICAgICBwLT50cmFuc2xh
dGUoLW9mZnNldCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTcwNiw3ICs2OTUsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAg
ICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwgYnJ1c2gpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGlmIChtX2RhdGEtPmhhc1NoYWRvdygpKSB7Ci0gICAgICAgICAgICBpZiAoc2hhZG93LT5t
X3R5cGUgPT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdykgeworICAgICAgICAgICAgaWYgKG11
c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykpIHsKICAgICAgICAgICAgICAgICBRUGFpbnRl
ciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVk
UmVjdCk7CiAgICAgICAgICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAg
ICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0T3BhY2l0eShzdGF0aWNfY2FzdDxxcmVhbD4oc2hh
ZG93LT5tX2NvbG9yLmFscGhhKCkpIC8gMjU1KTsKQEAgLTcxNCwxNyArNzAzLDExIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAg
ICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBTb2xpZCByZWN0YW5n
bGUgZmlsbCB3aXRoIG5vIGJsdXIgc2hhZG93IGNhbiBiZSBkb25lIGZhc3RlcgotICAgICAgICAg
ICAgICAgIC8vIHdpdGhvdXQgdXNpbmcgdGhlIHNoYWRvdyBsYXllciBhdCBhbGwuCisgICAgICAg
ICAgICAgICAgLy8gU29saWQgcmVjdGFuZ2xlIGZpbGwgd2l0aCBubyBibHVyIHNoYWRvdyBvciB0
cmFuc2Zvcm1hdGlvbnMgYXBwbGllZCBjYW4gYmUgZG9uZQorICAgICAgICAgICAgICAgIC8vIGZh
c3RlciB3aXRob3V0IHVzaW5nIHRoZSBzaGFkb3cgbGF5ZXIgYXQgYWxsLgogICAgICAgICAgICAg
ICAgIFFDb2xvciBzaGFkb3dDb2xvciA9IHNoYWRvdy0+bV9jb2xvcjsKICAgICAgICAgICAgICAg
ICBzaGFkb3dDb2xvci5zZXRBbHBoYUYoc2hhZG93Q29sb3IuYWxwaGFGKCkgKiBwLT5icnVzaCgp
LmNvbG9yKCkuYWxwaGFGKCkpOwotICAgICAgICAgICAgICAgIGNvbnN0IFFUcmFuc2Zvcm0mIHRy
YW5zZm9ybSA9IHAtPnRyYW5zZm9ybSgpOwotICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0u
aXNTY2FsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXpl
ZFJlY3QudHJhbnNsYXRlZChzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5vZmZzZXQoKS54KCkp
IC8gdHJhbnNmb3JtLm0xMSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHFyZWFsPihzaGFkb3ctPm9mZnNldCgp
LnkoKSAgLyB0cmFuc2Zvcm0ubTIyKCkpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2hhZG93Q29sb3IpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
ICAgICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHNoYWRvdy0+b2Zmc2V0
KCkpLCBzaGFkb3dDb2xvcik7CisgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXpl
ZFJlY3QudHJhbnNsYXRlZChzaGFkb3ctPm9mZnNldCgpKSwgc2hhZG93Q29sb3IpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKQEAgLTc0NCwxOCArNzI3LDE1IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xv
ciwgQ29sb3JTCiAKICAgICBpZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAgICAgICBDb250
ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7Ci0KLSAgICAgICAgaWYgKHNoYWRv
dy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cpIHsKLSAgICAgICAgICAgIC8v
IFdlIGRvIG5vdCBuZWVkIGFueSBsYXllciBmb3Igc2ltcGxlIHNoYWRvdy4KLSAgICAgICAgICAg
IHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSks
IHNoYWRvdy0+bV9jb2xvcik7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtdXN0VXNl
Q29udGV4dFNoYWRvdyhwLCBzaGFkb3cpKSB7CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93
UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAg
ICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1Bh
aW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJj
ZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFJlY3Qobm9ybWFsaXplZFJl
Y3QsIHNoYWRvdy0+bV9jb2xvcik7CiAgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dM
YXllcihwKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZz
ZXQoKSksIHNoYWRvdy0+bV9jb2xvcik7CiAgICAgfQogCiAgICAgcC0+ZmlsbFJlY3Qobm9ybWFs
aXplZFJlY3QsIG1fZGF0YS0+c29saWRDb2xvcik7CkBAIC03NzEsMTkgKzc1MSwxNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IEludFNpemUmIHRvcExlZgogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CiAgICAg
aWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93
ID0gY29udGV4dFNoYWRvdygpOwotCi0gICAgICAgIGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250
ZXh0U2hhZG93OjpCbHVyU2hhZG93KSB7Ci0gICAgICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCBh
bnkgbGF5ZXIgZm9yIHNpbXBsZSBzaGFkb3cuCi0gICAgICAgICAgICBwLT50cmFuc2xhdGUobV9k
YXRhLT5zaGFkb3cub2Zmc2V0KCkpOwotICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGF0aC5wbGF0
Zm9ybVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKLSAgICAgICAgICAg
IHAtPnRyYW5zbGF0ZSgtbV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOwotICAgICAgICB9IGVsc2Ug
eworICAgICAgICBpZiAobXVzdFVzZUNvbnRleHRTaGFkb3cocCwgc2hhZG93KSkgewogICAgICAg
ICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIo
cCwgcmVjdCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAg
ICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRp
b25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFBhdGgo
cGF0aC5wbGF0Zm9ybVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKICAg
ICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG1fZGF0YS0+c2hhZG93
Lm9mZnNldCgpKTsKKyAgICAgICAgICAgIHAtPmZpbGxQYXRoKHBhdGgucGxhdGZvcm1QYXRoKCks
IFFDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9yKSk7CisgICAgICAgICAgICBwLT50cmFuc2xh
dGUoLW1fZGF0YS0+c2hhZG93Lm9mZnNldCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBwLT5m
aWxsUGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3IoY29sb3IpKTsKQEAgLTk1Myw5ICs5
MzEsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgZmxvYXQgYmx1ciwgY29uc3QKICAgICAgICAgLy8gV2UgZmxpcCB0aGUg
aGVpZ2h0IHNpbmNlIENHIGFuZCBIVE1MNSBDYW52YXMgaGF2ZSBvcHBvc2l0ZSBZIGF4aXMKICAg
ICAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUoc2l6ZS53aWR0aCgpLCAtc2l6
ZS5oZWlnaHQoKSk7CiAgICAgICAgIG1fZGF0YS0+c2hhZG93ID0gQ29udGV4dFNoYWRvdyhjb2xv
ciwgYmx1ciwgRmxvYXRTaXplKHNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpKTsKLSAgICB9
IGVsc2UgeworICAgIH0gZWxzZQogICAgICAgICBtX2RhdGEtPnNoYWRvdyA9IENvbnRleHRTaGFk
b3coY29sb3IsIGJsdXIsIEZsb2F0U2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsK
LSAgICB9CisKKyAgICBtX2RhdGEtPnNoYWRvdy5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyht
X3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmNsZWFyUGxhdGZvcm1TaGFkb3coKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76825</attachid>
            <date>2010-12-16 16:21:07 -0800</date>
            <delta_ts>2010-12-16 16:26:09 -0800</delta_ts>
            <desc>Remove GTK specific expected results files, tests pass now</desc>
            <filename>bug-50422-20101216162101.patch</filename>
            <type>text/plain</type>
            <size>40601</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4MzBlOWNjYzE3ZGM0OTdhYmFlNDdiMzc0NTVmZTM4YWYyZDZmODAyLi4yYjc1NDIw
MjllZThiYmQ1NzhkNTNkMzhlN2QxZTIwYzIwNzBjZTY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAK
KzIwMTAtMTItMTYgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBDYW52YXMgc2hh
ZG93IG9mZnNldCBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IGFueSB0cmFuc2Zvcm1hdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0MjIKKwor
ICAgICAgICBPbiBhIGNhbnZhcyBjb250ZXh0LCBzaGFkb3dzIGFyZSBjdXJyZW50bHkgYWZmZWN0
ZWQgYnkgYWxsCisgICAgICAgIHRyYW5zZm9ybWF0aW9ucyBleGNlcHQgc2NhbGluZy4gQWNjb3Jk
aW5nIHRvIHRoZSBzcGVjOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2Vi
LWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbCNzaGFk
b3dzCisKKyAgICAgICAgIlRoZSBzaGFkb3dPZmZzZXRYIGFuZCBzaGFkb3dPZmZzZXRZIGF0dHJp
YnV0ZXMgc3BlY2lmeSB0aGUgZGlzdGFuY2UKKyAgICAgICAgdGhhdCB0aGUgc2hhZG93IHdpbGwg
YmUgb2Zmc2V0IGluIHRoZSBwb3NpdGl2ZSBob3Jpem9udGFsIGFuZCBwb3NpdGl2ZQorICAgICAg
ICB2ZXJ0aWNhbCBkaXN0YW5jZSByZXNwZWN0aXZlbHkuIFRoZWlyIHZhbHVlcyBhcmUgaW4gY29v
cmRpbmF0ZSBzcGFjZQorICAgICAgICB1bml0cy4gVGhleSBhcmUgbm90IGFmZmVjdGVkIGJ5IHRo
ZSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4iCisKKyAgICAgICAgTk9URTogdGhpcyBh
cHBsaWVzIG9ubHkgdG8gY2FudmFzLCBub3QgdG8gYm94IHNoYWRvd3MuCisKKyAgICAgICAgQWRk
IG5ldyB0ZXN0IHRvIGVuc3VyZSB0aGF0IHNoYWRvd3MgYXJlIGNvcnJlY3RseSB0cmFuc2Zvcm1l
ZCBrZWVwaW5nCisgICAgICAgIHRoZSByZWxhdGl2ZSBvZmZzZXQgdG8gdGhlIHNoYXBlLgorCisg
ICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVj
dGVkLnR4dDogU2VlIHN0cm9rZVBhdGggYmVsb3cuCisgICAgICAgICogZmFzdC9jYW52YXMvY2Fu
dmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUt
ZmlsbFBhdGgtc2hhZG93LmpzOgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzOgorICAgICAgICAqIGZhc3QvY2FudmFzL3Nj
cmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanM6IE5vdyB1c2luZwor
ICAgICAgICAgIGEgbGluZVdpZHRoID4gMSB0byBtYWtlIGl0IGVhc2llciB0byB0ZXN0IGFuZCBt
b3JlIGZhaXIgYW1vbmcgYWxsCisgICAgICAgICAgcG9ydHMsIHNpbmNlIHRoZXJlIGNhbiBiZSBk
aWZmZXJlbnQgdHJhbnNmb3JtYXRpb24gc21vb3RobmVzcyBvcgorICAgICAgICAgIGFsaWFzaW5n
IHNldHRpbmdzLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJh
bnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuanM6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9Ta2lwcGVkOiBHVEsgcG9ydCBuZWVkcyB0byBpbXBsZW1lbnQgdGhpcyBmZWF0dXJlLgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hh
ZG93LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9j
YW52YXMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQ
YXRoLXNoYWRvdy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisKIDIwMTAtMTItMTYgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ry
b2tlUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2Fu
dmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dAppbmRleCBlNTYyMDFmNzM4
N2U0NjJmNzkyMjVlNjVmOGEzNDAxZTJlMzIzNmZlLi5hMzM3YzRiNjNmZjFkZGZlZWQ0NDg4ZTM1
MWZmZGFlMTQ5ZWE4NTE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52
YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQK
QEAgLTMwLDI3ICszMCwyNyBAQCBQQVNTIGRbM10gaXMgYXJvdW5kIDc2CiBQQVNTIGRbMF0gaXMg
MjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQg
MjAKK1BBU1MgZFszXSBpcyBhcm91bmQgMTQ5CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0g
aXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjIKK1BBU1MgZFszXSBp
cyBhcm91bmQgMTE2CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJd
IGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjgKK1BBU1MgZFszXSBpcyBhcm91bmQgMTE1CiBQ
QVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFsz
XSBpcyBhcm91bmQgMjIKK1BBU1MgZFszXSBpcyBhcm91bmQgNzAKIFBBU1MgZFswXSBpcyAyNTUK
IFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAxNQor
UEFTUyBkWzNdIGlzIGFyb3VuZCA3MAogUEFTUyBkWzBdIGlzIDI1NQogUEFTUyBkWzFdIGlzIDAK
IFBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDE3CitQQVNTIGRbM10gaXMgYXJv
dW5kIDY5CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZp
bGxSZWN0LXNoYWRvdy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5z
Zm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZjNGU5YTg0NGU3YmY2N2Zm
ZWU1ZWJmNThkNTBkYmY0MmE3OGE5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5odG1sCkBAIC0wLDAg
KzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Njcmlw
dC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LmpzIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cuanMKaW5k
ZXggMDUyODZmNTMyOGI1ZTU5OTgzMjQzNTA3NWRiYmYxZWMxN2U1YTIwNy4uOGIwNWYzYzI5NTlh
OGZiOGRjNzk3YTkxYmEwNDkzNGU0NDAxYjEzNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cuanMKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxs
UGF0aC1zaGFkb3cuanMKQEAgLTE5LDcgKzE5LDcgQEAgZnVuY3Rpb24gc2hvdWxkQmVBcm91bmQo
YSwgYikKICAgICAgICAgZXZhbEEgPSBlOwogICAgIH0KIAotICAgIGlmIChNYXRoLmFicyhldmFs
QSAtIGIpIDwgMTApCisgICAgaWYgKE1hdGguYWJzKGV2YWxBIC0gYikgPCAyMCkKICAgICAgICAg
cHJpbnQoIlBBU1MgIiArIGEgKyAiIGlzIGFyb3VuZCAiICsgYiAsICJncmVlbiIpCiAgICAgZWxz
ZQogICAgICAgICBwcmludCgiRkFJTCAiICsgYSArICIgaXMgbm90IGFyb3VuZCAiICsgYiArICIg
KGFjdHVhbDogIiArIGV2YWxBICsgIikiLCAicmVkIik7CkBAIC0zNSw3ICszNSw2IEBAIGN0eC5z
Y2FsZSgyLCAyKTsKIGN0eC5zaGFkb3dPZmZzZXRYID0gMTAwOwogY3R4LnNoYWRvd09mZnNldFkg
PSAxMDA7CiBjdHguZmlsbFN0eWxlID0gJ3JnYmEoMCwgMCwgMjU1LCAxKSc7Ci0vL2N0eC5saW5l
V2lkdGggPSAzMDsKIAogY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMjU1LCAwLCAwLCAxLjApJzsK
IGN0eC5iZWdpblBhdGgoKTsKQEAgLTczLDM4ICs3MiwzOCBAQCBjdHguZmlsbCgpOwogdmFyIGQ7
IC8vIGltYWdlRGF0YS5kYXRhCiAKIC8vIFZlcmlmeSBzb2xpZCBzaGFkb3cuCi1kID0gY3R4Lmdl
dEltYWdlRGF0YSgyMDAsIDIwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIw
MSwgMjA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgn
ZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcy
NTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCAyOTUsIDEsIDEpLmRhdGE7CitkID0g
Y3R4LmdldEltYWdlRGF0YSgyOTgsIDI5NSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywg
JzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwog
c2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjk5
LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAxLCAyOTgsIDEsIDEpLmRhdGE7
CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3Vs
ZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCiAvLyBWZXJpZnkg
c29saWQgYWxwaGEgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCA0MDUsIDEsIDEp
LmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDQwNSwgMSwgMSkuZGF0YTsKIHNob3Vs
ZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
Ml0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJ
bWFnZURhdGEoMjk5LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyOTgs
IDQwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2Rb
MV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10n
LCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTksIDEsIDEpLmRhdGE7Citk
ID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBd
JywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZh
cy1zY2FsZS1maWxsUmVjdC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3Jp
cHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5qcwppbmRleCA5OWExZTU5NGJk
NTlmNzM2N2YzYzMwZGVhMTY1MWUzMmYzZDRkZTZlLi41NmQ0YTM0MmQ2ZmMzNGQ4ZjA0OGFkZjNm
ZmU4MjIyOThhODYzNDA0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3Jp
cHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5qcworKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5q
cwpAQCAtMTksNyArMTksNyBAQCBmdW5jdGlvbiBzaG91bGRCZUFyb3VuZChhLCBiKQogICAgICAg
ICBldmFsQSA9IGU7CiAgICAgfQogCi0gICAgaWYgKE1hdGguYWJzKGV2YWxBIC0gYikgPCAxMCkK
KyAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8IDIwKQogICAgICAgICBwcmludCgiUEFTUyAi
ICsgYSArICIgaXMgYXJvdW5kICIgKyBiICwgImdyZWVuIikKICAgICBlbHNlCiAgICAgICAgIHBy
aW50KCJGQUlMICIgKyBhICsgIiBpcyBub3QgYXJvdW5kICIgKyBiICsgIiAoYWN0dWFsOiAiICsg
ZXZhbEEgKyAiKSIsICJyZWQiKTsKQEAgLTUyLDM4ICs1MiwzOCBAQCBjdHguZmlsbFJlY3QoMTUw
LCAxNTAsIDUwLCA1MCk7CiB2YXIgZDsgLy8gaW1hZ2VEYXRhLmRhdGEKIAogLy8gVmVyaWZ5IHNv
bGlkIHNoYWRvdy4KLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjA1LCAxLCAxKS5kYXRhOwor
ZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAxLCAyMDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFsw
XScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAn
KTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTks
IDI5NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgMjk4LCAxLCAxKS5k
YXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBz
aG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0
eC5nZXRJbWFnZURhdGEoMjAwLCAyOTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0
YSgyMDEsIDI5OCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxk
QmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10n
LCAnMjU1Jyk7CiAKIC8vIFZlcmlmeSBzb2xpZCBhbHBoYSBzaGFkb3cuCi1kID0gY3R4LmdldElt
YWdlRGF0YSgyMDAsIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwg
NDA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsx
XScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScs
ICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDQwNSwgMSwgMSkuZGF0YTsKK2Qg
PSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0n
LCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7
CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgy
MDUsIDQ5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk4LCAxLCAx
KS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7
CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzIGIvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRo
LXNoYWRvdy5qcwppbmRleCA1MTk4ZDk0MTUxN2RhYjkyYmMyODkxYzgzNzRmMzViYTFhODlkNTc5
Li42MDAyMTc1YWIzZjZiMjFmZjJhN2VkZGNlYmE2NDcwYWNlNmJhMzg4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBh
dGgtc2hhZG93LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMKQEAgLTE5LDcgKzE5LDcgQEAgZnVuY3Rp
b24gc2hvdWxkQmVBcm91bmQoYSwgYikKICAgICAgICAgZXZhbEEgPSBlOwogICAgIH0KIAotICAg
IGlmIChNYXRoLmFicyhldmFsQSAtIGIpIDwgMTApCisgICAgaWYgKE1hdGguYWJzKGV2YWxBIC0g
YikgPCAyMCkKICAgICAgICAgcHJpbnQoIlBBU1MgIiArIGEgKyAiIGlzIGFyb3VuZCAiICsgYiAs
ICJncmVlbiIpCiAgICAgZWxzZQogICAgICAgICBwcmludCgiRkFJTCAiICsgYSArICIgaXMgbm90
IGFyb3VuZCAiICsgYiArICIgKGFjdHVhbDogIiArIGV2YWxBICsgIikiLCAicmVkIik7CkBAIC0z
NSw2ICszNSw3IEBAIGN0eC5zY2FsZSgyLCAyKTsKIGN0eC5zaGFkb3dPZmZzZXRYID0gMTAwOwog
Y3R4LnNoYWRvd09mZnNldFkgPSAxMDA7CiBjdHguc3Ryb2tlU3R5bGUgPSAncmdiYSgwLCAwLCAy
NTUsIDEpJzsKK2N0eC5saW5lV2lkdGggPSA1OwogCiBjdHguc2hhZG93Q29sb3IgPSAncmdiYSgy
NTUsIDAsIDAsIDEuMCknOwogY3R4LmJlZ2luUGF0aCgpOwpAQCAtNzYsNzkgKzc3LDc5IEBAIGN0
eC5zdHJva2UoKTsKIHZhciBkOyAvLyBpbWFnZURhdGEuZGF0YQogCiAvLyBWZXJpZnkgc29saWQg
c2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyMDUsIDEsIDEpLmRhdGE7CitkID0g
Y3R4LmdldEltYWdlRGF0YSgyNTAsIDIwMCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywg
JzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwog
c2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgMjk1
LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMzAwLCAyOTAsIDEsIDEpLmRhdGE7
CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3Vs
ZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4Lmdl
dEltYWdlRGF0YSgyMDEsIDI5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIw
MCwgMjUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgn
ZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcy
NTUnKTsKIAogLy8gVmVyaWZ5IHNvbGlkIGFscGhhIHNoYWRvdy4KLWQgPSBjdHguZ2V0SW1hZ2VE
YXRhKDIwMCwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAxLCA0MDUs
IDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywg
JzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2
Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0
eC5nZXRJbWFnZURhdGEoMjAxLCA1MDAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcy
NTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNo
b3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwg
NDk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMzAwLCA0OTksIDEsIDEpLmRh
dGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNo
b3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKIC8v
IFZlcmlmeSBibHVycnkgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMzk0LCAyMDgsIDEs
IDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0MDQsIDIxMCwgMSwgMSkuZGF0YTsKIHNo
b3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUo
J2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjAnKTsKK3Nob3VsZEJlQXJv
dW5kKCdkWzNdJywgJzE0OScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSg1MDMsIDMwMSwgMSwg
MSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwNSwgMjUwLCAxLCAxKS5kYXRhOwogc2hv
dWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgn
ZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcyMicpOworc2hvdWxkQmVBcm91
bmQoJ2RbM10nLCAnMTE2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwNCwgMjUwLCAxLCAx
KS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoNDUwLCAyMDUsIDEsIDEpLmRhdGE7CiBzaG91
bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdk
WzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzI4Jyk7CitzaG91bGRCZUFyb3Vu
ZCgnZFszXScsICcxMTUnKTsKIAogLy8gVmVyaWZ5IGJsdXJyeSBhbHBoYSBzaGFkb3cuCi1kID0g
Y3R4LmdldEltYWdlRGF0YSg0MDUsIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VE
YXRhKDUwNSwgNDUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91
bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3Vu
ZCgnZFszXScsICcyMicpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzAnKTsKIAotZCA9IGN0
eC5nZXRJbWFnZURhdGEoNDE1LCA0OTUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0
YSg1MDUsIDQ1MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxk
QmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQo
J2RbM10nLCAnMTUnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzcwJyk7CiAKLWQgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDQ1MCwgNTA0LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEo
NDUwLCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJl
KCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdk
WzNdJywgJzE3Jyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICc2OScpOwogCiB2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3NjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuanMgYi9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJl
Y3Qtc2hhZG93LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2N2YyNDQzY2JlOTA2MDA1M2JjMzk5MDI3OTg1ZWU1
ZjA3Mzc5ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3Jp
cHQtdGVzdHMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93LmpzCkBAIC0wLDAgKzEs
MTMzIEBACitkZXNjcmlwdGlvbigiRW5zdXJlIGNvcnJlY3QgYmVoYXZpb3Igb2YgY2FudmFzIHdp
dGggZmlsbFJlY3Qrc2hhZG93IGFmdGVyIHRyYW5zbGF0aW9uK3JvdGF0aW9uK3NjYWxpbmcuIEEg
Ymx1ZSBhbmQgcmVkIGNoZWNrZXJlZCBwYXR0ZXJuIHNob3VsZCBiZSBkaXNwbGF5ZWQuIik7CisK
K2Z1bmN0aW9uIHByaW50KG1lc3NhZ2UsIGNvbG9yKQoreworICAgIHZhciBwYXJhZ3JhcGggPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBwYXJhZ3JhcGguYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIHBhcmFncmFwaC5zdHlsZS5m
b250RmFtaWx5ID0gIm1vbm9zcGFjZSI7CisgICAgaWYgKGNvbG9yKQorICAgICAgICBwYXJhZ3Jh
cGguc3R5bGUuY29sb3IgPSBjb2xvcjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29u
c29sZSIpLmFwcGVuZENoaWxkKHBhcmFncmFwaCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXJv
dW5kKGEsIGIpCit7CisgICAgdmFyIGV2YWxBOworICAgIHRyeSB7CisgICAgICAgIGV2YWxBID0g
ZXZhbChhKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgZXZhbEEgPSBlOworICAgIH0KKwor
ICAgIGlmIChNYXRoLmFicyhldmFsQSAtIGIpIDwgMTApCisgICAgICAgIHByaW50KCJQQVNTICIg
KyBhICsgIiBpcyBhcm91bmQgIiArIGIgLCAiZ3JlZW4iKQorICAgIGVsc2UKKyAgICAgICAgcHJp
bnQoIkZBSUwgIiArIGEgKyAiIGlzIG5vdCBhcm91bmQgIiArIGIgKyAiIChhY3R1YWw6ICIgKyBl
dmFsQSArICIpIiwgInJlZCIpOworfQorCit2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnY2FudmFzJyk7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7CitjYW52
YXMuc2V0QXR0cmlidXRlKCd3aWR0aCcsICc2MDAnKTsKK2NhbnZhcy5zZXRBdHRyaWJ1dGUoJ2hl
aWdodCcsICc2MDAnKTsKK3ZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKKworY3R4
LmZpbGxTdHlsZSA9ICdyZ2JhKDAsIDAsIDI1NSwgMS4wKSc7CitjdHguc2hhZG93T2Zmc2V0WCA9
IDEwMDsKK2N0eC5zaGFkb3dPZmZzZXRZID0gMTAwOworCitjdHgudHJhbnNsYXRlKC0xMDAsIC0x
MDApOworY3R4LnJvdGF0ZShNYXRoLlBJLzIpOworY3R4LnNjYWxlKDIsIDIpOworCitjdHguc2hh
ZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDEuMCknOworY3R4LmZpbGxSZWN0KDEwMCwgLTE1
MCwgNTAsIDUwKTsKKworY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMjU1LCAwLCAwLCAwLjUpJzsK
K2N0eC5maWxsUmVjdCgyMDAsIC0xNTAsIDUwLCA1MCk7CisKK2N0eC5zaGFkb3dCbHVyID0gNTsK
K2N0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwgMS4wKSc7CitjdHguZmlsbFJlY3Qo
MTAwLCAtMjUwLCA1MCwgNTApOworCitjdHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAs
IDAuNSknOworY3R4LmZpbGxSZWN0KDIwMCwgLTI1MCwgNTAsIDUwKTsKKwordmFyIGQ7IC8vIGlt
YWdlRGF0YS5kYXRhCisKKy8vIFZlcmlmeSBzb2xpZCBzaGFkb3cuCitkID0gY3R4LmdldEltYWdl
RGF0YSgyMDAsIDIwNSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hv
dWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmUoJ2Rb
M10nLCAnMjU1Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgMjk4LCAxLCAxKS5kYXRh
Oworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91
bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZSgnZFszXScsICcyNTUnKTsKKworZCA9IGN0eC5n
ZXRJbWFnZURhdGEoMjAxLCAyOTgsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUn
KTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3Vs
ZEJlKCdkWzNdJywgJzI1NScpOworCisvLyBWZXJpZnkgc29saWQgYWxwaGEgc2hhZG93LgorZCA9
IGN0eC5nZXRJbWFnZURhdGEoMjAxLCA0MDEsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScs
ICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsK
K3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzEyNycpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgy
OTksIDQ1MCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUo
J2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2Rb
M10nLCAnMTI3Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk4LCAxLCAxKS5kYXRh
Oworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91
bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMjcnKTsKKworLy8g
VmVyaWZ5IGJsdXJyeSBzaGFkb3cuCitkID0gY3R4LmdldEltYWdlRGF0YSgzOTksIDIwNSwgMSwg
MSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcp
Oworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTA2Jyk7
CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwMCwgMjA1LCAxLCAxKS5kYXRhOworc2hvdWxkQmUo
J2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScs
ICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMDYnKTsKKworZCA9IGN0eC5nZXRJbWFn
ZURhdGEoNDk5LCAyOTksIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3No
b3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJv
dW5kKCdkWzNdJywgJzgzJyk7CisKKy8vIFZlcmlmeSBibHVycnkgYWxwaGEgc2hhZG93LgorZCA9
IGN0eC5nZXRJbWFnZURhdGEoMzk4LCA0MDUsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScs
ICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsK
K3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzM2Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQw
NSwgNTAxLCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgn
ZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFsz
XScsICczNicpOworCitkID0gY3R4LmdldEltYWdlRGF0YSg0MDUsIDUwMSwgMSwgMSkuZGF0YTsK
K3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxk
QmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMzYnKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IGRm
YjViNzQwY2JmOWExYzliNWE0MWQxZDEzMTJiM2IzOGNlNGI2MTAuLmNkNDMyNDZmY2VkZTdmZDQx
Njg0ODJmMjlkNzhlNmI4YjI2ODQ4YWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC0x
MDI1LDYgKzEwMjUsNyBAQCBlZGl0aW5nL3Vuc3VwcG9ydGVkLWNvbnRlbnQvdGFibGUtdHlwZS1i
ZWZvcmUuaHRtbAogZmFzdC9jYW52YXMvY2FudmFzLWJnLXpvb20uaHRtbAogZmFzdC9jYW52YXMv
Y2FudmFzLWdldEltYWdlRGF0YS5odG1sCiBmYXN0L2NhbnZhcy9jYW52YXMtZ3JhZGllbnQtYWRk
U3RvcC1lcnJvci5odG1sCitmYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1z
aGFkb3cuaHRtbAogZmFzdC9jYW52YXMvY2FudmFzLXpvb20uaHRtbAogZmFzdC9jc3MvY3NzMV9m
b3J3YXJkX2NvbXBhdGlibGVfcGFyc2luZy5odG1sCiBmYXN0L2Nzcy9pbnZhbGlkLXBlcmNlbnRh
Z2UtcHJvcGVydHkuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zh
c3QvY2FudmFzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1z
aGFkb3ctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTcyMTc4
NGE0MDgxYTNkNjQ5NGRjYmY5MTI1NTE0ZGI3N2I4OGZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2Nh
bnZhcy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDU3ICswLDAgQEAKLUVuc3VyZSBjb3JyZWN0IGJlaGF2aW9yIG9mIGNhbnZhcyB3
aXRoIHBhdGggZmlsbCArIHNoYWRvdyBhZnRlciBzY2FsaW5nLiBBIGJsdWUgYW5kIHJlZCBjaGVj
a2VyZWQgcGF0dGVybiBzaG91bGQgYmUgZGlzcGxheWVkLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCi0KLQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBp
cyAwCi1GQUlMIGRbM10gc2hvdWxkIGJlIDI1NS4gV2FzIDE5MS4KLVBBU1MgZFswXSBpcyAyNTUK
LVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIHNob3VsZCBiZSAyNTUu
IFdhcyAxOTEuCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlz
IDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMjU1LiBXYXMgMTQzLgotUEFTUyBkWzBdIGlzIDI1NQot
UEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1GQUlMIGRbM10gaXMgbm90IGFyb3VuZCA3
NiAoYWN0dWFsOiA1NykKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRb
Ml0gaXMgMAotRkFJTCBkWzNdIGlzIG5vdCBhcm91bmQgNzYgKGFjdHVhbDogNTcpCi1QQVNTIGRb
MF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBpcyBu
b3QgYXJvdW5kIDc2IChhY3R1YWw6IDU3KQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlz
IDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDgzCi1QQVNTIGRbMF0gaXMg
MjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQg
ODMKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFT
UyBkWzNdIGlzIGFyb3VuZCA1MwotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBB
U1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDI0Ci1QQVNTIGRbMF0gaXMgMjU1Ci1Q
QVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjQKLVBB
U1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNd
IGlzIGFyb3VuZCAyNAotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENP
TVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2NhbnZh
cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRv
dy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmZGRiMDk3NDlh
ZDExNzk2MjRkZWFmZjU5ZTEwMWEzY2NkNTNmZmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFz
L2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw1NyArMCwwIEBACi1FbnN1cmUgY29ycmVjdCBiZWhhdmlvciBvZiBjYW52YXMgd2l0
aCBwYXRoIHN0cm9rZSArIHNoYWRvdyBhZnRlciBzY2FsaW5nLiBBIGJsdWUgYW5kIHJlZCBjaGVj
a2VyZWQgcGF0dGVybiBzaG91bGQgYmUgZGlzcGxheWVkLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCi0KLQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBp
cyAwCi1GQUlMIGRbM10gc2hvdWxkIGJlIDI1NS4gV2FzIDEyMy4KLVBBU1MgZFswXSBpcyAyNTUK
LVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIHNob3VsZCBiZSAyNTUu
IFdhcyA5MC4KLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMg
MAotRkFJTCBkWzNdIHNob3VsZCBiZSAyNTUuIFdhcyAxNjIuCi1QQVNTIGRbMF0gaXMgMjU1Ci1Q
QVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBpcyBub3QgYXJvdW5kIDc2
IChhY3R1YWw6IDM3KQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsy
XSBpcyAwCi1GQUlMIGRbM10gaXMgbm90IGFyb3VuZCA3NiAoYWN0dWFsOiAyNykKLVBBU1MgZFsw
XSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIGlzIG5v
dCBhcm91bmQgNzYgKGFjdHVhbDogMjcpCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMg
MAotUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjAKLVBBU1MgZFswXSBpcyAy
NTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAy
MgotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNT
IGRbM10gaXMgYXJvdW5kIDI4Ci1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFT
UyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjIKLVBBU1MgZFswXSBpcyAyNTUKLVBB
U1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAxNQotUEFT
UyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10g
aXMgYXJvdW5kIDE3Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09N
UExFVEUKLQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAyMGVhZTk4M2JiNGNjNGI0YTZkMmQ4NTc4NWYzNDYxYmFlYTNmZDQ0Li41MGUwZjA2
OWQxNDRhN2ZlZDMwNzgzODcwMTE0YWE5ZjY2YmI2ZWZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEwLTEy
LTE2ICBIZWxkZXIgQ29ycmVpYSAgPGhlbGRlckBzZW5jaGEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gQ2FudmFzIHNoYWRvdyBvZmZz
ZXQgc2hvdWxkIG5vdCBiZSBhZmZlY3RlZCBieSBhbnkgdHJhbnNmb3JtYXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNDIyCisKKyAgICAgICAg
T24gYSBjYW52YXMgY29udGV4dCwgc2hhZG93cyBhcmUgY3VycmVudGx5IGFmZmVjdGVkIGJ5IGFs
bAorICAgICAgICB0cmFuc2Zvcm1hdGlvbnMgZXhjZXB0IHNjYWxpbmcuIEFjY29yZGluZyB0byB0
aGUgc3BlYzoKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWNhbnZhcy1lbGVtZW50Lmh0bWwjc2hhZG93cworCisg
ICAgICAgICJUaGUgc2hhZG93T2Zmc2V0WCBhbmQgc2hhZG93T2Zmc2V0WSBhdHRyaWJ1dGVzIHNw
ZWNpZnkgdGhlIGRpc3RhbmNlCisgICAgICAgIHRoYXQgdGhlIHNoYWRvdyB3aWxsIGJlIG9mZnNl
dCBpbiB0aGUgcG9zaXRpdmUgaG9yaXpvbnRhbCBhbmQgcG9zaXRpdmUKKyAgICAgICAgdmVydGlj
YWwgZGlzdGFuY2UgcmVzcGVjdGl2ZWx5LiBUaGVpciB2YWx1ZXMgYXJlIGluIGNvb3JkaW5hdGUg
c3BhY2UKKyAgICAgICAgdW5pdHMuIFRoZXkgYXJlIG5vdCBhZmZlY3RlZCBieSB0aGUgY3VycmVu
dCB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguIgorCisgICAgICAgIE5PVEU6IHRoaXMgYXBwbGllcyBv
bmx5IHRvIGNhbnZhcywgbm90IHRvIGJveCBzaGFkb3dzLgorCisgICAgICAgIFRlc3Q6IGZhc3Qv
Y2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5odG1sCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRleHRTaGFkb3c6OkNvbnRleHRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4
dFNoYWRvdzo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFk
b3c6OnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
eHRTaGFkb3c6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRleHRTaGFkb3c6Om9mZnNldCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29u
dGV4dFNoYWRvd1F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmJlZ2lu
U2hhZG93TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6ZW5kU2hhZG93
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om11c3RVc2VDb250ZXh0U2hhZG93KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpm
aWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQ
bGF0Zm9ybVNoYWRvdyk6CisKIDIwMTAtMTItMTYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcAppbmRleCA4N2ExYzVjNzYzY2VjNTU2NjM0
ZjJmYmFmYzY3NTk0MjllZGM1OWQxLi5iNWFlNTkyNTlkNDQ2MWUzOWY2ZTI2M2EzZWIzOGY1NzYy
ZGViMDQ3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFk
b3cuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHAK
QEAgLTQxLDYgKzQxLDcgQEAgQ29udGV4dFNoYWRvdzo6Q29udGV4dFNoYWRvdygpCiAgICAgOiBt
X3R5cGUoTm9TaGFkb3cpCiAgICAgLCBtX2JsdXJEaXN0YW5jZSgwKQogICAgICwgbV9sYXllckNv
bnRleHQoMCkKKyAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoZmFsc2UpCiB7CiB9CiAK
QEAgLTQ5LDYgKzUwLDcgQEAgQ29udGV4dFNoYWRvdzo6Q29udGV4dFNoYWRvdyhjb25zdCBDb2xv
ciYgY29sb3IsIGZsb2F0IHJhZGl1cywgY29uc3QgRmxvYXRTaXplJgogICAgICwgbV9ibHVyRGlz
dGFuY2Uocm91bmQocmFkaXVzKSkKICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKICAgICAsIG1fbGF5
ZXJDb250ZXh0KDApCisgICAgLCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZhbHNlKQogewog
ICAgIC8vIFNlZSBjb21tZW50cyBpbiBodHRwOi8vd2Via2l0Lm9yZy9iLzQwNzkzLCBpdCBzZWVt
cyBzZW5zaWJsZQogICAgIC8vIHRvIGZvbGxvdyBTa2lhJ3MgbGltaXQgb2YgMTI4IHBpeGVscyBv
ZiBibHVyIHJhZGl1cwpAQCAtMTQ5LDYgKzE1MSw2NyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmJs
dXJMYXllckltYWdlKHVuc2lnbmVkIGNoYXIqIGltYWdlRGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6
ZQogICAgIH0KIH0KIAorI2lmIFBMQVRGT1JNKFFUKQorSW50UmVjdCBDb250ZXh0U2hhZG93Ojpj
YWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHQgcCwgY29uc3Qg
RmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQoreworICAgIC8v
IENhbGN1bGF0ZSB0aGUgZGVzdGluYXRpb24gb2YgdGhlIGJsdXJyZWQgYW5kL29yIHRyYW5zZm9y
bWVkIGxheWVyLgorICAgIEZsb2F0UmVjdCBsYXllckZsb2F0UmVjdDsKKyAgICBmbG9hdCBpbmZs
YXRpb24gPSAwOworCisgICAgY29uc3QgUVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBwLT50cmFuc2Zv
cm0oKTsKKyAgICBpZiAobV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAmJiAhdHJhbnNmb3JtLmlz
SWRlbnRpdHkoKSkgeworICAgICAgICBRUG9seWdvbkYgdHJhbnNmb3JtZWRQb2x5Z29uID0gdHJh
bnNmb3JtLm1hcChRUG9seWdvbkYobGF5ZXJBcmVhKSk7CisgICAgICAgIHRyYW5zZm9ybWVkUG9s
eWdvbi50cmFuc2xhdGUob2Zmc2V0KCkpOworICAgICAgICBsYXllckZsb2F0UmVjdCA9IHRyYW5z
Zm9ybS5pbnZlcnRlZCgpLm1hcCh0cmFuc2Zvcm1lZFBvbHlnb24pLmJvdW5kaW5nUmVjdCgpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGxheWVyRmxvYXRSZWN0ID0gbGF5ZXJBcmVhOworICAgICAg
ICBsYXllckZsb2F0UmVjdC5tb3ZlKG1fb2Zmc2V0KTsKKyAgICB9CisKKyAgICAvLyBXZSBleHBh
bmQgdGhlIGFyZWEgYnkgdGhlIGJsdXIgcmFkaXVzIHRvIGdpdmUgZXh0cmEgc3BhY2UgZm9yIHRo
ZSBibHVyIHRyYW5zaXRpb24uCisgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7CisgICAg
ICAgIGxheWVyRmxvYXRSZWN0LmluZmxhdGUobV9ibHVyRGlzdGFuY2UpOworICAgICAgICBpbmZs
YXRpb24gKz0gbV9ibHVyRGlzdGFuY2U7CisgICAgfQorCisgICAgRmxvYXRSZWN0IHVuY2xpcHBl
ZExheWVyUmVjdCA9IGxheWVyRmxvYXRSZWN0OworCisgICAgaWYgKCFjbGlwUmVjdC5jb250YWlu
cyhlbmNsb3NpbmdJbnRSZWN0KGxheWVyRmxvYXRSZWN0KSkpIHsKKyAgICAgICAgLy8gTm8gbmVl
ZCB0byBoYXZlIHRoZSBidWZmZXIgbGFyZ2VyIHRoYW4gdGhlIGNsaXAuCisgICAgICAgIGxheWVy
RmxvYXRSZWN0LmludGVyc2VjdChjbGlwUmVjdCk7CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIHRv
dGFsbHkgb3V0c2lkZSB0aGUgY2xpcCByZWdpb24sIHdlIGFyZW4ndCBwYWludGluZyBhdCBhbGwu
CisgICAgICAgIGlmIChsYXllckZsb2F0UmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1
cm4gSW50UmVjdCgwLCAwLCAwLCAwKTsKKworICAgICAgICAvLyBXZSBhZGp1c3QgYWdhaW4gYmVj
YXVzZSB0aGUgcGl4ZWxzIGF0IHRoZSBib3JkZXJzIGFyZSBzdGlsbAorICAgICAgICAvLyBwb3Rl
bnRpYWxseSBhZmZlY3RlZCBieSB0aGUgcGl4ZWxzIG91dHNpZGUgdGhlIGJ1ZmZlci4KKyAgICAg
ICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7CisgICAgICAgICAgICBsYXllckZsb2F0UmVj
dC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNlKTsKKyAgICAgICAgICAgIHVuY2xpcHBlZExheWVyUmVj
dC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNlKTsKKyAgICAgICAgICAgIGluZmxhdGlvbiArPSBtX2Js
dXJEaXN0YW5jZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IGludCBmcmFtZVNpemUg
PSBpbmZsYXRpb24gKiAyOworICAgIG1fc291cmNlUmVjdCA9IEludFJlY3QoMCwgMCwgbGF5ZXJB
cmVhLndpZHRoKCkgKyBmcmFtZVNpemUsIGxheWVyQXJlYS5oZWlnaHQoKSArIGZyYW1lU2l6ZSk7
CisKKyAgICBtX2xheWVyT3JpZ2luID0gRmxvYXRQb2ludChsYXllckZsb2F0UmVjdC54KCksIGxh
eWVyRmxvYXRSZWN0LnkoKSk7CisKKyAgICBjb25zdCBGbG9hdFBvaW50IG1fdW5jbGlwcGVkTGF5
ZXJPcmlnaW4gPSBGbG9hdFBvaW50KHVuY2xpcHBlZExheWVyUmVjdC54KCksIHVuY2xpcHBlZExh
eWVyUmVjdC55KCkpOworICAgIGNvbnN0IEZsb2F0U2l6ZSBjbGlwcGVkT3V0ID0gbV91bmNsaXBw
ZWRMYXllck9yaWdpbiAtIG1fbGF5ZXJPcmlnaW47CisKKyAgICAvLyBTZXQgdGhlIG9yaWdpbiBh
cyB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBzY3JhdGNoIGltYWdlLCBvciwgaW4gY2FzZSB0
aGVyZSdzIGEgY2xpcHBlZAorICAgIC8vIG91dCByZWdpb24sIHNldCB0aGUgb3JpZ2luIGFjY29y
ZGluZ2x5IHRvIHRoZSBmdWxsIGJvdW5kaW5nIHJlY3QncyB0b3AtbGVmdCBjb3JuZXIuCisgICAg
Y29uc3QgZmxvYXQgdHJhbnNsYXRpb25YID0gLWxheWVyQXJlYS54KCkgKyBpbmZsYXRpb24gLSBm
YWJzZihjbGlwcGVkT3V0LndpZHRoKCkpOworICAgIGNvbnN0IGZsb2F0IHRyYW5zbGF0aW9uWSA9
IC1sYXllckFyZWEueSgpICsgaW5mbGF0aW9uIC0gZmFic2YoY2xpcHBlZE91dC5oZWlnaHQoKSk7
CisgICAgbV9sYXllckNvbnRleHRUcmFuc2xhdGlvbiA9IEZsb2F0UG9pbnQodHJhbnNsYXRpb25Y
LCB0cmFuc2xhdGlvblkpOworCisgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QobGF5ZXJGbG9h
dFJlY3QpOworfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShDQUlSTykKIHZvaWQgQ29udGV4dFNo
YWRvdzo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoY29uc3QgRmxvYXRSZWN0JiBsYXllckFy
ZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQogewogICAgIC8vIENhbGN1bGF0ZSB0aGUgZGVz
dGluYXRpb24gb2YgdGhlIGJsdXJyZWQgbGF5ZXIuCkBAIC0xNzMsNSArMjM2LDYgQEAgdm9pZCBD
b250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBGbG9hdFJlY3Qm
IGxheWVyQXJlYSwgY29uc3QKICAgICAgICAgICAgIG1fbGF5ZXJSZWN0LmluZmxhdGUobV90eXBl
ID09IEJsdXJTaGFkb3cgPyBtX2JsdXJEaXN0YW5jZSA6IDApOwogICAgIH0KIH0KKyNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbnRleHRTaGFkb3cuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4
dFNoYWRvdy5oCmluZGV4IGZhNzc4YWZiY2NkZGZhZmMzZjQwY2QwMjNjYjdhZDRmNDUxZWQ1MmMu
LmQ3NGIxZGVlMTQ3M2Y2NGU1NWM3MzUzZWQ4MDQ3YjA0ZTJiMDI1YTAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCkBAIC0xMDYsMjcgKzEwNiw0MyBAQCBwdWJs
aWM6CiAgICAgUGxhdGZvcm1Db250ZXh0IGJlZ2luU2hhZG93TGF5ZXIoUGxhdGZvcm1Db250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSk7CiAgICAgdm9pZCBlbmRTaGFkb3dMYXllcihQ
bGF0Zm9ybUNvbnRleHQpOwogICAgIHN0YXRpYyB2b2lkIHB1cmdlU2NyYXRjaEJ1ZmZlcigpOwor
ICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBlbmFibGUpIHsgbV9zaGFk
b3dzSWdub3JlVHJhbnNmb3JtcyA9IGVuYWJsZTsgfQorICAgIGJvb2wgc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyB9CiAj
aWYgUExBVEZPUk0oQ0FJUk8pCiAgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZnRS
YWRpdXMgPSBJbnRTaXplKCksIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0UmFkaXVzID0gSW50U2l6
ZSgpLCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0UmFkaXVzID0gSW50U2l6ZSgpLCBjb25zdCBJ
bnRTaXplJiBib3R0b21SaWdodFJhZGl1cyA9IEludFNpemUoKSk7CiAjZW5kaWYKLQogI2lmIFBM
QVRGT1JNKFFUKQotICAgIFFQb2ludEYgb2Zmc2V0KCkgeyByZXR1cm4gUVBvaW50RihtX29mZnNl
dC53aWR0aCgpLCBtX29mZnNldC5oZWlnaHQoKSk7IH0KKyAgICBRUG9pbnRGIG9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIFFQb2ludEYobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQuaGVpZ2h0KCkp
OyB9CiAjZW5kaWYKIAogCiBwcml2YXRlOgotICAgIEludFJlY3QgbV9sYXllclJlY3Q7CisgICAg
Ly8gQnVmZmVyIHRvIHdoZXJlIHRoZSB0ZW1wb3Jhcnkgc2hhZG93IHdpbGwgYmUgZHJhd24gdG8u
CiAgICAgUGxhdGZvcm1JbWFnZSBtX2xheWVySW1hZ2U7CisgICAgLy8gQ29udGV4dCB1c2VkIHRv
IHBhaW50IHRoZSBzaGFkb3cgdG8gdGhlIGxheWVyIGltYWdlLgogICAgIFBsYXRmb3JtQ29udGV4
dCBtX2xheWVyQ29udGV4dDsKLQorI2lmIFBMQVRGT1JNKFFUKQorICAgIC8vIFN1Yi1yZWN0IG9m
IG1fbGF5ZXJJbWFnZSB0aGF0IGNvbnRhaW5zIHRoZSBzaGFkb3cgcGl4ZWxzLgorICAgIEZsb2F0
UmVjdCBtX3NvdXJjZVJlY3Q7CisgICAgLy8gVG9wLWxlZnQgY29ybmVyIG9mIHRoZSAocG9zc2li
bHkgY2xpcHBlZCkgYm91bmRpbmcgcmVjdCB0byBkcmF3IHRoZSBzaGFkb3cgdG8uCisgICAgRmxv
YXRQb2ludCBtX2xheWVyT3JpZ2luOworICAgIC8vIFRyYW5zbGF0aW9uIHRvIGFwcGx5IHRvIG1f
bGF5ZXJDb250ZXh0IGZvciB0aGUgc2hhZG93IHRvIGJlIGNvcnJlY3RseSBjbGlwcGVkLgorICAg
IEZsb2F0UG9pbnQgbV9sYXllckNvbnRleHRUcmFuc2xhdGlvbjsKKyNlbmRpZgorI2lmIFBMQVRG
T1JNKENBSVJPKQorICAgIC8vIEVuY2xvc2luZyBpbnQgcmVjdCB3aGVyZSBzaGFkb3cgbmVlZHMg
dG8gYmUgZHJhd24gdG8gdXNpbmcgdGhlIGxheWVyIGNvbnRleHQuCisgICAgSW50UmVjdCBtX2xh
eWVyUmVjdDsKICAgICAvLyBVc2VkIGZvciByZWZlcmVuY2Ugd2hlbiBjYW52YXMgc2NhbGUoeCx5
KSB3YXMgY2FsbGVkLgogICAgIEZsb2F0UmVjdCBtX3Vuc2NhbGVkTGF5ZXJSZWN0OworI2VuZGlm
CisgICAgYm9vbCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogCiAgICAgdm9pZCBibHVyTGF5
ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBpbnQgc3Ry
aWRlKTsKLSAgICB2b2lkIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAjaWYgUExBVEZPUk0oQ0FJ
Uk8pCisgICAgdm9pZCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBGbG9hdFJlY3Qm
IGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwogICAgIHZvaWQgZHJhd1JlY3RT
aGFkb3dXaXRob3V0VGlsaW5nKFBsYXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiBzaGFkb3dSZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBJbnRTaXpl
JiB0b3BSaWdodFJhZGl1cywgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3Qg
SW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMsIGZsb2F0IGFscGhhKTsKKyNlbHNlCisgICAgSW50
UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAjZW5k
aWYKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4
dFNoYWRvd1F0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNoYWRv
d1F0LmNwcAppbmRleCBmN2M3MGY2OTViYzBmYzQyNTBjYzliZGMzNWU5ZDVlOGU2M2Y5NzQ0Li4x
MzJlMTI5OThiZGZhM2MzYTY5YTNkZTBkMTcyZmZlNDg1ZjYwOWUyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwCkBAIC0xMTQsMjUgKzEx
NCwyMiBAQCBQbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dMYXllcihQ
bGF0Zm9ybUNvbnRleHQgcCwgY29uc3QgRmxvYXRSZQogICAgIGVsc2UKICAgICAgICAgY2xpcFJl
Y3QgPSBwLT50cmFuc2Zvcm0oKS5pbnZlcnRlZCgpLm1hcFJlY3QocC0+d2luZG93KCkpOwogCi0g
ICAgbV91bnNjYWxlZExheWVyUmVjdCA9IGxheWVyQXJlYTsKLSAgICBjYWxjdWxhdGVMYXllckJv
dW5kaW5nUmVjdChsYXllckFyZWEsIEludFJlY3QoY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCks
IGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKSk7CisgICAgLy8gU2V0IG1fbGF5
ZXJPcmlnaW4sIG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24sIG1fc291cmNlUmVjdC4KKyAgICBJ
bnRSZWN0IGNsaXAoY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNsaXBSZWN0LndpZHRoKCks
IGNsaXBSZWN0LmhlaWdodCgpKTsKKyAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxh
eWVyQm91bmRpbmdSZWN0KHAsIGxheWVyQXJlYSwgY2xpcCk7CiAKICAgICAvLyBEb24ndCBwYWlu
dCBpZiB3ZSBhcmUgdG90YWxseSBvdXRzaWRlIHRoZSBjbGlwIHJlZ2lvbi4KLSAgICBpZiAobV9s
YXllclJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIFNoYWRvd0J1ZmZlciogc2hhZG93QnVmZmVyID0gc2NyYXRjaFNo
YWRvd0J1ZmZlcigpOwotICAgIFFJbWFnZSogc2hhZG93SW1hZ2UgPSBzaGFkb3dCdWZmZXItPnNj
cmF0Y2hJbWFnZShtX2xheWVyUmVjdC5zaXplKCkpOworICAgIFFJbWFnZSogc2hhZG93SW1hZ2Ug
PSBzaGFkb3dCdWZmZXItPnNjcmF0Y2hJbWFnZShsYXllclJlY3Quc2l6ZSgpKTsKICAgICBtX2xh
eWVySW1hZ2UgPSBRSW1hZ2UoKnNoYWRvd0ltYWdlKTsKIAogICAgIG1fbGF5ZXJDb250ZXh0ID0g
bmV3IFFQYWludGVyOwogICAgIG1fbGF5ZXJDb250ZXh0LT5iZWdpbigmbV9sYXllckltYWdlKTsK
ICAgICBtX2xheWVyQ29udGV4dC0+c2V0Rm9udChwLT5mb250KCkpOwotICAgIG1fbGF5ZXJDb250
ZXh0LT50cmFuc2xhdGUobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQuaGVpZ2h0KCkpOwotCi0g
ICAgLy8gVGhlIG9yaWdpbiBpcyBub3cgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgc2NyYXRj
aCBpbWFnZS4KLSAgICBtX2xheWVyQ29udGV4dC0+dHJhbnNsYXRlKC1tX2xheWVyUmVjdC54KCks
IC1tX2xheWVyUmVjdC55KCkpOwotCisgICAgbV9sYXllckNvbnRleHQtPnRyYW5zbGF0ZShtX2xh
eWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKICAgICByZXR1cm4gbV9sYXllckNvbnRleHQ7CiB9CiAK
QEAgLTE1NSwxMyArMTUyLDcgQEAgdm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcihQ
bGF0Zm9ybUNvbnRleHQgcCkKICAgICAgICAgcC5lbmQoKTsKICAgICB9CiAKLSAgICBjb25zdCBR
VHJhbnNmb3JtIHRyYW5zZm9ybSA9IHAtPnRyYW5zZm9ybSgpOwotICAgIGlmICh0cmFuc2Zvcm0u
aXNTY2FsaW5nKCkpIHsKLSAgICAgICAgcXJlYWwgeCA9IG1fdW5zY2FsZWRMYXllclJlY3QueCgp
ICsgbV9vZmZzZXQud2lkdGgoKSAgLyB0cmFuc2Zvcm0ubTExKCkgLSBtX2JsdXJEaXN0YW5jZTsK
LSAgICAgICAgcXJlYWwgeSA9IG1fdW5zY2FsZWRMYXllclJlY3QueSgpICsgbV9vZmZzZXQuaGVp
Z2h0KCkgLyB0cmFuc2Zvcm0ubTIyKCkgLSBtX2JsdXJEaXN0YW5jZTsKLSAgICAgICAgcC0+ZHJh
d0ltYWdlKFFQb2ludEYoeCwgeSksIG1fbGF5ZXJJbWFnZSk7Ci0gICAgfSBlbHNlCi0gICAgICAg
IHAtPmRyYXdJbWFnZShtX2xheWVyUmVjdC50b3BMZWZ0KCksIG1fbGF5ZXJJbWFnZSk7CisgICAg
cC0+ZHJhd0ltYWdlKG1fbGF5ZXJPcmlnaW4sIG1fbGF5ZXJJbWFnZSwgbV9zb3VyY2VSZWN0KTsK
IAogICAgIHNjcmF0Y2hTaGFkb3dCdWZmZXIoKS0+c2NoZWR1bGVQdXJnZSgpOwogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAppbmRl
eCAyZjhhOTFmYjNhNGQ5YmRkY2ViYjEwZjIwMDUwNGU2NGE1NmRlNjM2Li5kNWU3Y2NkMzZlMmMz
ZjQ1YWIzYjkxYjc4NzFlMTg2MDJmYTUzYWU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtNTMsNyArNTMsNiBAQAogI2lu
Y2x1ZGUgIlRyYW5zcGFyZW5jeUxheWVyLmgiCiAKICNpbmNsdWRlIDxRQnJ1c2g+Ci0jaW5jbHVk
ZSA8UURlYnVnPgogI2luY2x1ZGUgPFFHcmFkaWVudD4KICNpbmNsdWRlIDxRUGFpbnREZXZpY2U+
CiAjaW5jbHVkZSA8UVBhaW50RW5naW5lPgpAQCAtMTc1LDYgKzE3NCwyMiBAQCBzdGF0aWMgaW5s
aW5lIFF0OjpGaWxsUnVsZSB0b1F0RmlsbFJ1bGUoV2luZFJ1bGUgcnVsZSkKICAgICByZXR1cm4g
UXQ6Ok9kZEV2ZW5GaWxsOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgbXVzdFVzZUNvbnRleHRT
aGFkb3coUVBhaW50ZXIqIHBhaW50ZXIsIENvbnRleHRTaGFkb3cqIHNoYWRvdykKK3sKKyAgICBp
ZiAoc2hhZG93LT5tX3R5cGUgPT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdykKKyAgICAgICAg
Ly8gV2UgY2FuJ3QgYXZvaWQgQ29udGV4dFNoYWRvdywgc2luY2UgdGhlIHNoYWRvdyBoYXMgYmx1
ci4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFzaGFkb3ctPnNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKCkpCisgICAgICAgIC8vIFdlIGNhbiBhdm9pZCBDb250ZXh0U2hhZG93IGFuZCBv
cHRpbWl6ZSwgc2luY2Ugd2UncmUgbm90IGRyYXdpbmcgb24gYSBjYW52YXMgYW5kIGJveAorICAg
ICAgICAvLyBzaGFkb3dzIGFyZSBhZmZlY3RlZCBieSB0aGUgdHJhbnNmb3JtYXRpb24gbWF0cml4
LgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHBhaW50ZXItPnRyYW5zZm9ybSgpLmlz
SWRlbnRpdHkoKSkKKyAgICAgICAgLy8gV2UgY2FuIGF2b2lkIENvbnRleHRTaGFkb3csIHNpbmNl
IHRoZXJlIGFyZSBubyB0cmFuc2Zvcm1hdGlvbnMgdG8gYXBwbHkgdG8gdGhlIGNhbnZhcy4KKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIE90aGVyd2lzZSwgbm8gY2hhbmNlIGF2b2lkaW5n
IENvbnRleHRTaGFkb3cuCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAg
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFFQYWludGVyKiwgY29uc3QgUUNvbG9yJiBp
bml0aWFsU29saWRDb2xvcik7CkBAIC01MDYsMzMgKzUyMSwyMCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlmIChtX2RhdGEtPmhhc1No
YWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFkb3co
KTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6OkJsdXJTaGFk
b3cKLSAgICAgICAgICAgICYmICFtX3N0YXRlLmZpbGxQYXR0ZXJuICYmICFtX3N0YXRlLmZpbGxH
cmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykgfHwg
bV9zdGF0ZS5maWxsUGF0dGVybiB8fCBtX3N0YXRlLmZpbGxHcmFkaWVudCkKICAgICAgICAgewot
ICAgICAgICAgICAgUVBvaW50RiBvZmZzZXQgPSBzaGFkb3ctPm9mZnNldCgpOwotICAgICAgICAg
ICAgY29uc3QgUVRyYW5zZm9ybSYgdHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0gICAgICAg
ICAgICBpZiAodHJhbnNmb3JtLmlzU2NhbGluZygpKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYg
c2NhbGluZyBpcyByZXF1aXJlZCwgZmluZCB0aGUgbmV3IGNvb3JkIGZvciBzaGFkb3cgb3JpZ2lu
LAotICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIHJlbGF0aXZlIG9mZnNldCB0byBpdHMg
c2hhcGUgaXMga2VwdC4KLSAgICAgICAgICAgICAgICBRUG9pbnRGIHRyYW5zbGF0ZWRPZmZzZXQo
b2Zmc2V0LngoKSAvIHRyYW5zZm9ybS5tMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb2Zmc2V0LnkoKSAvIHRyYW5zZm9ybS5tMjIoKSk7Ci0gICAgICAgICAg
ICAgICAgcGxhdGZvcm1QYXRoLnRyYW5zbGF0ZSh0cmFuc2xhdGVkT2Zmc2V0KTsKLSAgICAgICAg
ICAgICAgICBwLT5maWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihzaGFkb3ctPm1fY29sb3Ip
KTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKC10cmFuc2xhdGVkT2Zm
c2V0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRl
KG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29s
b3Ioc2hhZG93LT5tX2NvbG9yKSk7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZz
ZXQpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUVBhaW50
ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcGxhdGZvcm1Q
YXRoLmNvbnRyb2xQb2ludFJlY3QoKSk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikg
ewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFp
bnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFp
bnRlci0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xv
cikpOwogICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBRUG9pbnRGIG9mZnNldCA9IHNo
YWRvdy0+b2Zmc2V0KCk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKKyAgICAg
ICAgICAgIHAtPmZpbGxQYXRoKHBsYXRmb3JtUGF0aCwgUUNvbG9yKHNoYWRvdy0+bV9jb2xvcikp
OworICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZzZXQpOwogICAgICAgICB9Ci0KICAgICB9
CiAgICAgaWYgKG1fc3RhdGUuZmlsbFBhdHRlcm4pIHsKICAgICAgICAgQWZmaW5lVHJhbnNmb3Jt
IGFmZmluZTsKQEAgLTU1NywyOCArNTU5LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9r
ZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlmIChtX2RhdGEtPmhhc1NoYWRvdygpKSB7
CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFkb3coKTsKLQotICAg
ICAgICBpZiAoc2hhZG93LT5tX3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdwotICAg
ICAgICAgICAgJiYgIW1fc3RhdGUuc3Ryb2tlUGF0dGVybiAmJiAhbV9zdGF0ZS5zdHJva2VHcmFk
aWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykgfHwgbV9z
dGF0ZS5zdHJva2VQYXR0ZXJuIHx8IG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIFFQZW4gc2hhZG93UGVuKHBlbik7Ci0gICAgICAgICAgICBzaGFkb3dQZW4u
c2V0Q29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xvcik7Ci0gICAgICAgICAgICBRUG9pbnRGIG9m
ZnNldCA9IHNoYWRvdy0+b2Zmc2V0KCk7Ci0gICAgICAgICAgICBjb25zdCBRVHJhbnNmb3JtJiB0
cmFuc2Zvcm0gPSBwLT50cmFuc2Zvcm0oKTsKLSAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNT
Y2FsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBJZiBzY2FsaW5nIGlzIHJlcXVpcmVkLCBm
aW5kIHRoZSBuZXcgY29vcmQgZm9yIHNoYWRvdyBvcmlnaW4sCi0gICAgICAgICAgICAgICAgLy8g
c28gdGhhdCB0aGUgcmVsYXRpdmUgb2Zmc2V0IHRvIGl0cyBzaGFwZSBpcyBrZXB0LgotICAgICAg
ICAgICAgICAgIFFQb2ludEYgdHJhbnNsYXRlZE9mZnNldChvZmZzZXQueCgpIC8gdHJhbnNmb3Jt
Lm0xMSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQu
eSgpIC8gdHJhbnNmb3JtLm0yMigpKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJh
bnNsYXRlKHRyYW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgICAgIHAtPnN0cm9rZVBhdGgo
cGxhdGZvcm1QYXRoLCBzaGFkb3dQZW4pOwotICAgICAgICAgICAgICAgIHBsYXRmb3JtUGF0aC50
cmFuc2xhdGUoLXRyYW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBwLT5zdHJv
a2VQYXRoKHBsYXRmb3JtUGF0aCwgc2hhZG93UGVuKTsKLSAgICAgICAgICAgICAgICBwLT50cmFu
c2xhdGUoLW9mZnNldCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBGbG9hdFJlY3QgYm91bmRpbmdSZWN0ID0gcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJl
Y3QoKTsKICAgICAgICAgICAgIGJvdW5kaW5nUmVjdC5pbmZsYXRlKHBlbi5taXRlckxpbWl0KCkg
KyBwZW4ud2lkdGhGKCkpOwogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBz
aGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgYm91bmRpbmdSZWN0KTsKQEAgLTU4Nyw2ICs1Njks
MTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkK
ICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwg
cGVuKTsKICAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUVBlbiBzaGFkb3dQZW4ocGVu
KTsKKyAgICAgICAgICAgIHNoYWRvd1Blbi5zZXRDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9y
KTsKKyAgICAgICAgICAgIFFQb2ludEYgb2Zmc2V0ID0gc2hhZG93LT5vZmZzZXQoKTsKKyAgICAg
ICAgICAgIHAtPnRyYW5zbGF0ZShvZmZzZXQpOworICAgICAgICAgICAgcC0+c3Ryb2tlUGF0aChw
bGF0Zm9ybVBhdGgsIHNoYWRvd1Blbik7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW9mZnNl
dCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTcwNiw3ICs2OTUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICBwLT5maWxs
UmVjdChub3JtYWxpemVkUmVjdCwgYnJ1c2gpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICht
X2RhdGEtPmhhc1NoYWRvdygpKSB7Ci0gICAgICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgPT0g
Q29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdykgeworICAgICAgICAgICAgaWYgKG11c3RVc2VDb250
ZXh0U2hhZG93KHAsIHNoYWRvdykpIHsKICAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93
UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAg
ICAgICAgICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAg
c2hhZG93UGFpbnRlci0+c2V0T3BhY2l0eShzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5tX2Nv
bG9yLmFscGhhKCkpIC8gMjU1KTsKQEAgLTcxNCwxNyArNzAzLDExIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgICAgICAgICAg
ICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBTb2xpZCByZWN0YW5nbGUgZmlsbCB3
aXRoIG5vIGJsdXIgc2hhZG93IGNhbiBiZSBkb25lIGZhc3RlcgotICAgICAgICAgICAgICAgIC8v
IHdpdGhvdXQgdXNpbmcgdGhlIHNoYWRvdyBsYXllciBhdCBhbGwuCisgICAgICAgICAgICAgICAg
Ly8gU29saWQgcmVjdGFuZ2xlIGZpbGwgd2l0aCBubyBibHVyIHNoYWRvdyBvciB0cmFuc2Zvcm1h
dGlvbnMgYXBwbGllZCBjYW4gYmUgZG9uZQorICAgICAgICAgICAgICAgIC8vIGZhc3RlciB3aXRo
b3V0IHVzaW5nIHRoZSBzaGFkb3cgbGF5ZXIgYXQgYWxsLgogICAgICAgICAgICAgICAgIFFDb2xv
ciBzaGFkb3dDb2xvciA9IHNoYWRvdy0+bV9jb2xvcjsKICAgICAgICAgICAgICAgICBzaGFkb3dD
b2xvci5zZXRBbHBoYUYoc2hhZG93Q29sb3IuYWxwaGFGKCkgKiBwLT5icnVzaCgpLmNvbG9yKCku
YWxwaGFGKCkpOwotICAgICAgICAgICAgICAgIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSA9
IHAtPnRyYW5zZm9ybSgpOwotICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5n
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJh
bnNsYXRlZChzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5vZmZzZXQoKS54KCkpIC8gdHJhbnNm
b3JtLm0xMSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PHFyZWFsPihzaGFkb3ctPm9mZnNldCgpLnkoKSAgLyB0
cmFuc2Zvcm0ubTIyKCkpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93
Q29sb3IpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBwLT5m
aWxsUmVjdChub3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHNoYWRvdy0+b2Zmc2V0KCkpLCBzaGFk
b3dDb2xvcik7CisgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJh
bnNsYXRlZChzaGFkb3ctPm9mZnNldCgpKSwgc2hhZG93Q29sb3IpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKQEAgLTc0NCwxOCArNzI3LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JT
CiAKICAgICBpZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAgICAgICBDb250ZXh0U2hhZG93
KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7Ci0KLSAgICAgICAgaWYgKHNoYWRvdy0+bV90eXBl
ICE9IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cpIHsKLSAgICAgICAgICAgIC8vIFdlIGRvIG5v
dCBuZWVkIGFueSBsYXllciBmb3Igc2ltcGxlIHNoYWRvdy4KLSAgICAgICAgICAgIHAtPmZpbGxS
ZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvdy0+
bV9jb2xvcik7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtdXN0VXNlQ29udGV4dFNo
YWRvdyhwLCBzaGFkb3cpKSB7CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9
IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAg
ICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNl
dENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAg
ICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIHNoYWRv
dy0+bV9jb2xvcik7CiAgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwKTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHAt
PmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNo
YWRvdy0+bV9jb2xvcik7CiAgICAgfQogCiAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3Qs
IG1fZGF0YS0+c29saWRDb2xvcik7CkBAIC03NzEsMTkgKzc1MSwxNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNp
emUmIHRvcExlZgogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CiAgICAgaWYgKG1fZGF0
YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4
dFNoYWRvdygpOwotCi0gICAgICAgIGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93
OjpCbHVyU2hhZG93KSB7Ci0gICAgICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCBhbnkgbGF5ZXIg
Zm9yIHNpbXBsZSBzaGFkb3cuCi0gICAgICAgICAgICBwLT50cmFuc2xhdGUobV9kYXRhLT5zaGFk
b3cub2Zmc2V0KCkpOwotICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGF0aC5wbGF0Zm9ybVBhdGgo
KSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKLSAgICAgICAgICAgIHAtPnRyYW5z
bGF0ZSgtbV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOwotICAgICAgICB9IGVsc2UgeworICAgICAg
ICBpZiAobXVzdFVzZUNvbnRleHRTaGFkb3cocCwgc2hhZG93KSkgewogICAgICAgICAgICAgUVBh
aW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcmVjdCk7
CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRv
d1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1Nv
dXJjZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFBhdGgocGF0aC5wbGF0
Zm9ybVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKICAgICAgICAgICAg
ICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG1fZGF0YS0+c2hhZG93Lm9mZnNldCgp
KTsKKyAgICAgICAgICAgIHAtPmZpbGxQYXRoKHBhdGgucGxhdGZvcm1QYXRoKCksIFFDb2xvciht
X2RhdGEtPnNoYWRvdy5tX2NvbG9yKSk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW1fZGF0
YS0+c2hhZG93Lm9mZnNldCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBwLT5maWxsUGF0aChw
YXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3IoY29sb3IpKTsKQEAgLTk1Myw5ICs5MzEsMTAgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgYmx1ciwgY29uc3QKICAgICAgICAgLy8gV2UgZmxpcCB0aGUgaGVpZ2h0IHNp
bmNlIENHIGFuZCBIVE1MNSBDYW52YXMgaGF2ZSBvcHBvc2l0ZSBZIGF4aXMKICAgICAgICAgbV9z
dGF0ZS5zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUoc2l6ZS53aWR0aCgpLCAtc2l6ZS5oZWlnaHQo
KSk7CiAgICAgICAgIG1fZGF0YS0+c2hhZG93ID0gQ29udGV4dFNoYWRvdyhjb2xvciwgYmx1ciwg
RmxvYXRTaXplKHNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpKTsKLSAgICB9IGVsc2Ugewor
ICAgIH0gZWxzZQogICAgICAgICBtX2RhdGEtPnNoYWRvdyA9IENvbnRleHRTaGFkb3coY29sb3Is
IGJsdXIsIEZsb2F0U2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKLSAgICB9CisK
KyAgICBtX2RhdGEtPnNoYWRvdy5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX3N0YXRlLnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFy
UGxhdGZvcm1TaGFkb3coKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76826</attachid>
            <date>2010-12-16 16:26:23 -0800</date>
            <delta_ts>2010-12-16 17:04:17 -0800</delta_ts>
            <desc>Remove GTK specific expected results files, tests pass now</desc>
            <filename>bug-50422-20101216162617.patch</filename>
            <type>text/plain</type>
            <size>40601</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4MzBlOWNjYzE3ZGM0OTdhYmFlNDdiMzc0NTVmZTM4YWYyZDZmODAyLi4yYjc1NDIw
MjllZThiYmQ1NzhkNTNkMzhlN2QxZTIwYzIwNzBjZTY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAK
KzIwMTAtMTItMTYgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBDYW52YXMgc2hh
ZG93IG9mZnNldCBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IGFueSB0cmFuc2Zvcm1hdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0MjIKKwor
ICAgICAgICBPbiBhIGNhbnZhcyBjb250ZXh0LCBzaGFkb3dzIGFyZSBjdXJyZW50bHkgYWZmZWN0
ZWQgYnkgYWxsCisgICAgICAgIHRyYW5zZm9ybWF0aW9ucyBleGNlcHQgc2NhbGluZy4gQWNjb3Jk
aW5nIHRvIHRoZSBzcGVjOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2Vi
LWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbCNzaGFk
b3dzCisKKyAgICAgICAgIlRoZSBzaGFkb3dPZmZzZXRYIGFuZCBzaGFkb3dPZmZzZXRZIGF0dHJp
YnV0ZXMgc3BlY2lmeSB0aGUgZGlzdGFuY2UKKyAgICAgICAgdGhhdCB0aGUgc2hhZG93IHdpbGwg
YmUgb2Zmc2V0IGluIHRoZSBwb3NpdGl2ZSBob3Jpem9udGFsIGFuZCBwb3NpdGl2ZQorICAgICAg
ICB2ZXJ0aWNhbCBkaXN0YW5jZSByZXNwZWN0aXZlbHkuIFRoZWlyIHZhbHVlcyBhcmUgaW4gY29v
cmRpbmF0ZSBzcGFjZQorICAgICAgICB1bml0cy4gVGhleSBhcmUgbm90IGFmZmVjdGVkIGJ5IHRo
ZSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4iCisKKyAgICAgICAgTk9URTogdGhpcyBh
cHBsaWVzIG9ubHkgdG8gY2FudmFzLCBub3QgdG8gYm94IHNoYWRvd3MuCisKKyAgICAgICAgQWRk
IG5ldyB0ZXN0IHRvIGVuc3VyZSB0aGF0IHNoYWRvd3MgYXJlIGNvcnJlY3RseSB0cmFuc2Zvcm1l
ZCBrZWVwaW5nCisgICAgICAgIHRoZSByZWxhdGl2ZSBvZmZzZXQgdG8gdGhlIHNoYXBlLgorCisg
ICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVj
dGVkLnR4dDogU2VlIHN0cm9rZVBhdGggYmVsb3cuCisgICAgICAgICogZmFzdC9jYW52YXMvY2Fu
dmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUt
ZmlsbFBhdGgtc2hhZG93LmpzOgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzOgorICAgICAgICAqIGZhc3QvY2FudmFzL3Nj
cmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanM6IE5vdyB1c2luZwor
ICAgICAgICAgIGEgbGluZVdpZHRoID4gMSB0byBtYWtlIGl0IGVhc2llciB0byB0ZXN0IGFuZCBt
b3JlIGZhaXIgYW1vbmcgYWxsCisgICAgICAgICAgcG9ydHMsIHNpbmNlIHRoZXJlIGNhbiBiZSBk
aWZmZXJlbnQgdHJhbnNmb3JtYXRpb24gc21vb3RobmVzcyBvcgorICAgICAgICAgIGFsaWFzaW5n
IHNldHRpbmdzLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJh
bnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuanM6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9Ta2lwcGVkOiBHVEsgcG9ydCBuZWVkcyB0byBpbXBsZW1lbnQgdGhpcyBmZWF0dXJlLgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hh
ZG93LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9j
YW52YXMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQ
YXRoLXNoYWRvdy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisKIDIwMTAtMTItMTYgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ry
b2tlUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2Fu
dmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dAppbmRleCBlNTYyMDFmNzM4
N2U0NjJmNzkyMjVlNjVmOGEzNDAxZTJlMzIzNmZlLi5hMzM3YzRiNjNmZjFkZGZlZWQ0NDg4ZTM1
MWZmZGFlMTQ5ZWE4NTE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52
YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQK
QEAgLTMwLDI3ICszMCwyNyBAQCBQQVNTIGRbM10gaXMgYXJvdW5kIDc2CiBQQVNTIGRbMF0gaXMg
MjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQg
MjAKK1BBU1MgZFszXSBpcyBhcm91bmQgMTQ5CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0g
aXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjIKK1BBU1MgZFszXSBp
cyBhcm91bmQgMTE2CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJd
IGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjgKK1BBU1MgZFszXSBpcyBhcm91bmQgMTE1CiBQ
QVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFsz
XSBpcyBhcm91bmQgMjIKK1BBU1MgZFszXSBpcyBhcm91bmQgNzAKIFBBU1MgZFswXSBpcyAyNTUK
IFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAxNQor
UEFTUyBkWzNdIGlzIGFyb3VuZCA3MAogUEFTUyBkWzBdIGlzIDI1NQogUEFTUyBkWzFdIGlzIDAK
IFBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDE3CitQQVNTIGRbM10gaXMgYXJv
dW5kIDY5CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZp
bGxSZWN0LXNoYWRvdy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5z
Zm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZjNGU5YTg0NGU3YmY2N2Zm
ZWU1ZWJmNThkNTBkYmY0MmE3OGE5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5odG1sCkBAIC0wLDAg
KzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Njcmlw
dC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LmpzIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cuanMKaW5k
ZXggMDUyODZmNTMyOGI1ZTU5OTgzMjQzNTA3NWRiYmYxZWMxN2U1YTIwNy4uOGIwNWYzYzI5NTlh
OGZiOGRjNzk3YTkxYmEwNDkzNGU0NDAxYjEzNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cuanMKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxs
UGF0aC1zaGFkb3cuanMKQEAgLTE5LDcgKzE5LDcgQEAgZnVuY3Rpb24gc2hvdWxkQmVBcm91bmQo
YSwgYikKICAgICAgICAgZXZhbEEgPSBlOwogICAgIH0KIAotICAgIGlmIChNYXRoLmFicyhldmFs
QSAtIGIpIDwgMTApCisgICAgaWYgKE1hdGguYWJzKGV2YWxBIC0gYikgPCAyMCkKICAgICAgICAg
cHJpbnQoIlBBU1MgIiArIGEgKyAiIGlzIGFyb3VuZCAiICsgYiAsICJncmVlbiIpCiAgICAgZWxz
ZQogICAgICAgICBwcmludCgiRkFJTCAiICsgYSArICIgaXMgbm90IGFyb3VuZCAiICsgYiArICIg
KGFjdHVhbDogIiArIGV2YWxBICsgIikiLCAicmVkIik7CkBAIC0zNSw3ICszNSw2IEBAIGN0eC5z
Y2FsZSgyLCAyKTsKIGN0eC5zaGFkb3dPZmZzZXRYID0gMTAwOwogY3R4LnNoYWRvd09mZnNldFkg
PSAxMDA7CiBjdHguZmlsbFN0eWxlID0gJ3JnYmEoMCwgMCwgMjU1LCAxKSc7Ci0vL2N0eC5saW5l
V2lkdGggPSAzMDsKIAogY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMjU1LCAwLCAwLCAxLjApJzsK
IGN0eC5iZWdpblBhdGgoKTsKQEAgLTczLDM4ICs3MiwzOCBAQCBjdHguZmlsbCgpOwogdmFyIGQ7
IC8vIGltYWdlRGF0YS5kYXRhCiAKIC8vIFZlcmlmeSBzb2xpZCBzaGFkb3cuCi1kID0gY3R4Lmdl
dEltYWdlRGF0YSgyMDAsIDIwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIw
MSwgMjA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgn
ZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcy
NTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCAyOTUsIDEsIDEpLmRhdGE7CitkID0g
Y3R4LmdldEltYWdlRGF0YSgyOTgsIDI5NSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywg
JzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwog
c2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjk5
LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAxLCAyOTgsIDEsIDEpLmRhdGE7
CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3Vs
ZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCiAvLyBWZXJpZnkg
c29saWQgYWxwaGEgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCA0MDUsIDEsIDEp
LmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDQwNSwgMSwgMSkuZGF0YTsKIHNob3Vs
ZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
Ml0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJ
bWFnZURhdGEoMjk5LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyOTgs
IDQwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2Rb
MV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10n
LCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTksIDEsIDEpLmRhdGE7Citk
ID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBd
JywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZh
cy1zY2FsZS1maWxsUmVjdC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3Jp
cHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5qcwppbmRleCA5OWExZTU5NGJk
NTlmNzM2N2YzYzMwZGVhMTY1MWUzMmYzZDRkZTZlLi41NmQ0YTM0MmQ2ZmMzNGQ4ZjA0OGFkZjNm
ZmU4MjIyOThhODYzNDA0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3Jp
cHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5qcworKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5q
cwpAQCAtMTksNyArMTksNyBAQCBmdW5jdGlvbiBzaG91bGRCZUFyb3VuZChhLCBiKQogICAgICAg
ICBldmFsQSA9IGU7CiAgICAgfQogCi0gICAgaWYgKE1hdGguYWJzKGV2YWxBIC0gYikgPCAxMCkK
KyAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8IDIwKQogICAgICAgICBwcmludCgiUEFTUyAi
ICsgYSArICIgaXMgYXJvdW5kICIgKyBiICwgImdyZWVuIikKICAgICBlbHNlCiAgICAgICAgIHBy
aW50KCJGQUlMICIgKyBhICsgIiBpcyBub3QgYXJvdW5kICIgKyBiICsgIiAoYWN0dWFsOiAiICsg
ZXZhbEEgKyAiKSIsICJyZWQiKTsKQEAgLTUyLDM4ICs1MiwzOCBAQCBjdHguZmlsbFJlY3QoMTUw
LCAxNTAsIDUwLCA1MCk7CiB2YXIgZDsgLy8gaW1hZ2VEYXRhLmRhdGEKIAogLy8gVmVyaWZ5IHNv
bGlkIHNoYWRvdy4KLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjA1LCAxLCAxKS5kYXRhOwor
ZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAxLCAyMDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFsw
XScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAn
KTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTks
IDI5NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgMjk4LCAxLCAxKS5k
YXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBz
aG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0
eC5nZXRJbWFnZURhdGEoMjAwLCAyOTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0
YSgyMDEsIDI5OCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxk
QmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10n
LCAnMjU1Jyk7CiAKIC8vIFZlcmlmeSBzb2xpZCBhbHBoYSBzaGFkb3cuCi1kID0gY3R4LmdldElt
YWdlRGF0YSgyMDAsIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwg
NDA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsx
XScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScs
ICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDQwNSwgMSwgMSkuZGF0YTsKK2Qg
PSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0n
LCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7
CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgy
MDUsIDQ5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk4LCAxLCAx
KS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7
CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzIGIvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRo
LXNoYWRvdy5qcwppbmRleCA1MTk4ZDk0MTUxN2RhYjkyYmMyODkxYzgzNzRmMzViYTFhODlkNTc5
Li42MDAyMTc1YWIzZjZiMjFmZjJhN2VkZGNlYmE2NDcwYWNlNmJhMzg4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBh
dGgtc2hhZG93LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMKQEAgLTE5LDcgKzE5LDcgQEAgZnVuY3Rp
b24gc2hvdWxkQmVBcm91bmQoYSwgYikKICAgICAgICAgZXZhbEEgPSBlOwogICAgIH0KIAotICAg
IGlmIChNYXRoLmFicyhldmFsQSAtIGIpIDwgMTApCisgICAgaWYgKE1hdGguYWJzKGV2YWxBIC0g
YikgPCAyMCkKICAgICAgICAgcHJpbnQoIlBBU1MgIiArIGEgKyAiIGlzIGFyb3VuZCAiICsgYiAs
ICJncmVlbiIpCiAgICAgZWxzZQogICAgICAgICBwcmludCgiRkFJTCAiICsgYSArICIgaXMgbm90
IGFyb3VuZCAiICsgYiArICIgKGFjdHVhbDogIiArIGV2YWxBICsgIikiLCAicmVkIik7CkBAIC0z
NSw2ICszNSw3IEBAIGN0eC5zY2FsZSgyLCAyKTsKIGN0eC5zaGFkb3dPZmZzZXRYID0gMTAwOwog
Y3R4LnNoYWRvd09mZnNldFkgPSAxMDA7CiBjdHguc3Ryb2tlU3R5bGUgPSAncmdiYSgwLCAwLCAy
NTUsIDEpJzsKK2N0eC5saW5lV2lkdGggPSA1OwogCiBjdHguc2hhZG93Q29sb3IgPSAncmdiYSgy
NTUsIDAsIDAsIDEuMCknOwogY3R4LmJlZ2luUGF0aCgpOwpAQCAtNzYsNzkgKzc3LDc5IEBAIGN0
eC5zdHJva2UoKTsKIHZhciBkOyAvLyBpbWFnZURhdGEuZGF0YQogCiAvLyBWZXJpZnkgc29saWQg
c2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyMDUsIDEsIDEpLmRhdGE7CitkID0g
Y3R4LmdldEltYWdlRGF0YSgyNTAsIDIwMCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywg
JzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwog
c2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgMjk1
LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMzAwLCAyOTAsIDEsIDEpLmRhdGE7
CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3Vs
ZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4Lmdl
dEltYWdlRGF0YSgyMDEsIDI5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIw
MCwgMjUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgn
ZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcy
NTUnKTsKIAogLy8gVmVyaWZ5IHNvbGlkIGFscGhhIHNoYWRvdy4KLWQgPSBjdHguZ2V0SW1hZ2VE
YXRhKDIwMCwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAxLCA0MDUs
IDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywg
JzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2
Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0
eC5nZXRJbWFnZURhdGEoMjAxLCA1MDAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcy
NTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNo
b3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwg
NDk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMzAwLCA0OTksIDEsIDEpLmRh
dGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNo
b3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKIC8v
IFZlcmlmeSBibHVycnkgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMzk0LCAyMDgsIDEs
IDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0MDQsIDIxMCwgMSwgMSkuZGF0YTsKIHNo
b3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUo
J2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjAnKTsKK3Nob3VsZEJlQXJv
dW5kKCdkWzNdJywgJzE0OScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSg1MDMsIDMwMSwgMSwg
MSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwNSwgMjUwLCAxLCAxKS5kYXRhOwogc2hv
dWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgn
ZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcyMicpOworc2hvdWxkQmVBcm91
bmQoJ2RbM10nLCAnMTE2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwNCwgMjUwLCAxLCAx
KS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoNDUwLCAyMDUsIDEsIDEpLmRhdGE7CiBzaG91
bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdk
WzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzI4Jyk7CitzaG91bGRCZUFyb3Vu
ZCgnZFszXScsICcxMTUnKTsKIAogLy8gVmVyaWZ5IGJsdXJyeSBhbHBoYSBzaGFkb3cuCi1kID0g
Y3R4LmdldEltYWdlRGF0YSg0MDUsIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VE
YXRhKDUwNSwgNDUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91
bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3Vu
ZCgnZFszXScsICcyMicpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzAnKTsKIAotZCA9IGN0
eC5nZXRJbWFnZURhdGEoNDE1LCA0OTUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0
YSg1MDUsIDQ1MCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxk
QmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQo
J2RbM10nLCAnMTUnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzcwJyk7CiAKLWQgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDQ1MCwgNTA0LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEo
NDUwLCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJl
KCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdk
WzNdJywgJzE3Jyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICc2OScpOwogCiB2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3NjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuanMgYi9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJl
Y3Qtc2hhZG93LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2N2YyNDQzY2JlOTA2MDA1M2JjMzk5MDI3OTg1ZWU1
ZjA3Mzc5ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3Jp
cHQtdGVzdHMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93LmpzCkBAIC0wLDAgKzEs
MTMzIEBACitkZXNjcmlwdGlvbigiRW5zdXJlIGNvcnJlY3QgYmVoYXZpb3Igb2YgY2FudmFzIHdp
dGggZmlsbFJlY3Qrc2hhZG93IGFmdGVyIHRyYW5zbGF0aW9uK3JvdGF0aW9uK3NjYWxpbmcuIEEg
Ymx1ZSBhbmQgcmVkIGNoZWNrZXJlZCBwYXR0ZXJuIHNob3VsZCBiZSBkaXNwbGF5ZWQuIik7CisK
K2Z1bmN0aW9uIHByaW50KG1lc3NhZ2UsIGNvbG9yKQoreworICAgIHZhciBwYXJhZ3JhcGggPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBwYXJhZ3JhcGguYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIHBhcmFncmFwaC5zdHlsZS5m
b250RmFtaWx5ID0gIm1vbm9zcGFjZSI7CisgICAgaWYgKGNvbG9yKQorICAgICAgICBwYXJhZ3Jh
cGguc3R5bGUuY29sb3IgPSBjb2xvcjsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29u
c29sZSIpLmFwcGVuZENoaWxkKHBhcmFncmFwaCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXJv
dW5kKGEsIGIpCit7CisgICAgdmFyIGV2YWxBOworICAgIHRyeSB7CisgICAgICAgIGV2YWxBID0g
ZXZhbChhKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgZXZhbEEgPSBlOworICAgIH0KKwor
ICAgIGlmIChNYXRoLmFicyhldmFsQSAtIGIpIDwgMTApCisgICAgICAgIHByaW50KCJQQVNTICIg
KyBhICsgIiBpcyBhcm91bmQgIiArIGIgLCAiZ3JlZW4iKQorICAgIGVsc2UKKyAgICAgICAgcHJp
bnQoIkZBSUwgIiArIGEgKyAiIGlzIG5vdCBhcm91bmQgIiArIGIgKyAiIChhY3R1YWw6ICIgKyBl
dmFsQSArICIpIiwgInJlZCIpOworfQorCit2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnY2FudmFzJyk7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7CitjYW52
YXMuc2V0QXR0cmlidXRlKCd3aWR0aCcsICc2MDAnKTsKK2NhbnZhcy5zZXRBdHRyaWJ1dGUoJ2hl
aWdodCcsICc2MDAnKTsKK3ZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKKworY3R4
LmZpbGxTdHlsZSA9ICdyZ2JhKDAsIDAsIDI1NSwgMS4wKSc7CitjdHguc2hhZG93T2Zmc2V0WCA9
IDEwMDsKK2N0eC5zaGFkb3dPZmZzZXRZID0gMTAwOworCitjdHgudHJhbnNsYXRlKC0xMDAsIC0x
MDApOworY3R4LnJvdGF0ZShNYXRoLlBJLzIpOworY3R4LnNjYWxlKDIsIDIpOworCitjdHguc2hh
ZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDEuMCknOworY3R4LmZpbGxSZWN0KDEwMCwgLTE1
MCwgNTAsIDUwKTsKKworY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMjU1LCAwLCAwLCAwLjUpJzsK
K2N0eC5maWxsUmVjdCgyMDAsIC0xNTAsIDUwLCA1MCk7CisKK2N0eC5zaGFkb3dCbHVyID0gNTsK
K2N0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwgMS4wKSc7CitjdHguZmlsbFJlY3Qo
MTAwLCAtMjUwLCA1MCwgNTApOworCitjdHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAs
IDAuNSknOworY3R4LmZpbGxSZWN0KDIwMCwgLTI1MCwgNTAsIDUwKTsKKwordmFyIGQ7IC8vIGlt
YWdlRGF0YS5kYXRhCisKKy8vIFZlcmlmeSBzb2xpZCBzaGFkb3cuCitkID0gY3R4LmdldEltYWdl
RGF0YSgyMDAsIDIwNSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hv
dWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmUoJ2Rb
M10nLCAnMjU1Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgMjk4LCAxLCAxKS5kYXRh
Oworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91
bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZSgnZFszXScsICcyNTUnKTsKKworZCA9IGN0eC5n
ZXRJbWFnZURhdGEoMjAxLCAyOTgsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUn
KTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3Vs
ZEJlKCdkWzNdJywgJzI1NScpOworCisvLyBWZXJpZnkgc29saWQgYWxwaGEgc2hhZG93LgorZCA9
IGN0eC5nZXRJbWFnZURhdGEoMjAxLCA0MDEsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScs
ICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsK
K3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzEyNycpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgy
OTksIDQ1MCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUo
J2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2Rb
M10nLCAnMTI3Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk4LCAxLCAxKS5kYXRh
Oworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91
bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMjcnKTsKKworLy8g
VmVyaWZ5IGJsdXJyeSBzaGFkb3cuCitkID0gY3R4LmdldEltYWdlRGF0YSgzOTksIDIwNSwgMSwg
MSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcp
Oworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTA2Jyk7
CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwMCwgMjA1LCAxLCAxKS5kYXRhOworc2hvdWxkQmUo
J2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScs
ICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMDYnKTsKKworZCA9IGN0eC5nZXRJbWFn
ZURhdGEoNDk5LCAyOTksIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3No
b3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJv
dW5kKCdkWzNdJywgJzgzJyk7CisKKy8vIFZlcmlmeSBibHVycnkgYWxwaGEgc2hhZG93LgorZCA9
IGN0eC5nZXRJbWFnZURhdGEoMzk4LCA0MDUsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScs
ICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsK
K3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzM2Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQw
NSwgNTAxLCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgn
ZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFsz
XScsICczNicpOworCitkID0gY3R4LmdldEltYWdlRGF0YSg0MDUsIDUwMSwgMSwgMSkuZGF0YTsK
K3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxk
QmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMzYnKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IGRm
YjViNzQwY2JmOWExYzliNWE0MWQxZDEzMTJiM2IzOGNlNGI2MTAuLmNkNDMyNDZmY2VkZTdmZDQx
Njg0ODJmMjlkNzhlNmI4YjI2ODQ4YWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC0x
MDI1LDYgKzEwMjUsNyBAQCBlZGl0aW5nL3Vuc3VwcG9ydGVkLWNvbnRlbnQvdGFibGUtdHlwZS1i
ZWZvcmUuaHRtbAogZmFzdC9jYW52YXMvY2FudmFzLWJnLXpvb20uaHRtbAogZmFzdC9jYW52YXMv
Y2FudmFzLWdldEltYWdlRGF0YS5odG1sCiBmYXN0L2NhbnZhcy9jYW52YXMtZ3JhZGllbnQtYWRk
U3RvcC1lcnJvci5odG1sCitmYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1z
aGFkb3cuaHRtbAogZmFzdC9jYW52YXMvY2FudmFzLXpvb20uaHRtbAogZmFzdC9jc3MvY3NzMV9m
b3J3YXJkX2NvbXBhdGlibGVfcGFyc2luZy5odG1sCiBmYXN0L2Nzcy9pbnZhbGlkLXBlcmNlbnRh
Z2UtcHJvcGVydHkuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zh
c3QvY2FudmFzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1z
aGFkb3ctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTcyMTc4
NGE0MDgxYTNkNjQ5NGRjYmY5MTI1NTE0ZGI3N2I4OGZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2Nh
bnZhcy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDU3ICswLDAgQEAKLUVuc3VyZSBjb3JyZWN0IGJlaGF2aW9yIG9mIGNhbnZhcyB3
aXRoIHBhdGggZmlsbCArIHNoYWRvdyBhZnRlciBzY2FsaW5nLiBBIGJsdWUgYW5kIHJlZCBjaGVj
a2VyZWQgcGF0dGVybiBzaG91bGQgYmUgZGlzcGxheWVkLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCi0KLQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBp
cyAwCi1GQUlMIGRbM10gc2hvdWxkIGJlIDI1NS4gV2FzIDE5MS4KLVBBU1MgZFswXSBpcyAyNTUK
LVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIHNob3VsZCBiZSAyNTUu
IFdhcyAxOTEuCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlz
IDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMjU1LiBXYXMgMTQzLgotUEFTUyBkWzBdIGlzIDI1NQot
UEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1GQUlMIGRbM10gaXMgbm90IGFyb3VuZCA3
NiAoYWN0dWFsOiA1NykKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRb
Ml0gaXMgMAotRkFJTCBkWzNdIGlzIG5vdCBhcm91bmQgNzYgKGFjdHVhbDogNTcpCi1QQVNTIGRb
MF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBpcyBu
b3QgYXJvdW5kIDc2IChhY3R1YWw6IDU3KQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlz
IDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDgzCi1QQVNTIGRbMF0gaXMg
MjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQg
ODMKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFT
UyBkWzNdIGlzIGFyb3VuZCA1MwotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBB
U1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDI0Ci1QQVNTIGRbMF0gaXMgMjU1Ci1Q
QVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjQKLVBB
U1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNd
IGlzIGFyb3VuZCAyNAotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENP
TVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2NhbnZh
cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRv
dy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmZGRiMDk3NDlh
ZDExNzk2MjRkZWFmZjU5ZTEwMWEzY2NkNTNmZmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFz
L2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw1NyArMCwwIEBACi1FbnN1cmUgY29ycmVjdCBiZWhhdmlvciBvZiBjYW52YXMgd2l0
aCBwYXRoIHN0cm9rZSArIHNoYWRvdyBhZnRlciBzY2FsaW5nLiBBIGJsdWUgYW5kIHJlZCBjaGVj
a2VyZWQgcGF0dGVybiBzaG91bGQgYmUgZGlzcGxheWVkLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCi0KLQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBp
cyAwCi1GQUlMIGRbM10gc2hvdWxkIGJlIDI1NS4gV2FzIDEyMy4KLVBBU1MgZFswXSBpcyAyNTUK
LVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIHNob3VsZCBiZSAyNTUu
IFdhcyA5MC4KLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMg
MAotRkFJTCBkWzNdIHNob3VsZCBiZSAyNTUuIFdhcyAxNjIuCi1QQVNTIGRbMF0gaXMgMjU1Ci1Q
QVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBpcyBub3QgYXJvdW5kIDc2
IChhY3R1YWw6IDM3KQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsy
XSBpcyAwCi1GQUlMIGRbM10gaXMgbm90IGFyb3VuZCA3NiAoYWN0dWFsOiAyNykKLVBBU1MgZFsw
XSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIGlzIG5v
dCBhcm91bmQgNzYgKGFjdHVhbDogMjcpCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMg
MAotUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjAKLVBBU1MgZFswXSBpcyAy
NTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAy
MgotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNT
IGRbM10gaXMgYXJvdW5kIDI4Ci1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFT
UyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjIKLVBBU1MgZFswXSBpcyAyNTUKLVBB
U1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAxNQotUEFT
UyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10g
aXMgYXJvdW5kIDE3Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09N
UExFVEUKLQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAyMGVhZTk4M2JiNGNjNGI0YTZkMmQ4NTc4NWYzNDYxYmFlYTNmZDQ0Li41MGUwZjA2
OWQxNDRhN2ZlZDMwNzgzODcwMTE0YWE5ZjY2YmI2ZWZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEwLTEy
LTE2ICBIZWxkZXIgQ29ycmVpYSAgPGhlbGRlckBzZW5jaGEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gQ2FudmFzIHNoYWRvdyBvZmZz
ZXQgc2hvdWxkIG5vdCBiZSBhZmZlY3RlZCBieSBhbnkgdHJhbnNmb3JtYXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNDIyCisKKyAgICAgICAg
T24gYSBjYW52YXMgY29udGV4dCwgc2hhZG93cyBhcmUgY3VycmVudGx5IGFmZmVjdGVkIGJ5IGFs
bAorICAgICAgICB0cmFuc2Zvcm1hdGlvbnMgZXhjZXB0IHNjYWxpbmcuIEFjY29yZGluZyB0byB0
aGUgc3BlYzoKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWNhbnZhcy1lbGVtZW50Lmh0bWwjc2hhZG93cworCisg
ICAgICAgICJUaGUgc2hhZG93T2Zmc2V0WCBhbmQgc2hhZG93T2Zmc2V0WSBhdHRyaWJ1dGVzIHNw
ZWNpZnkgdGhlIGRpc3RhbmNlCisgICAgICAgIHRoYXQgdGhlIHNoYWRvdyB3aWxsIGJlIG9mZnNl
dCBpbiB0aGUgcG9zaXRpdmUgaG9yaXpvbnRhbCBhbmQgcG9zaXRpdmUKKyAgICAgICAgdmVydGlj
YWwgZGlzdGFuY2UgcmVzcGVjdGl2ZWx5LiBUaGVpciB2YWx1ZXMgYXJlIGluIGNvb3JkaW5hdGUg
c3BhY2UKKyAgICAgICAgdW5pdHMuIFRoZXkgYXJlIG5vdCBhZmZlY3RlZCBieSB0aGUgY3VycmVu
dCB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguIgorCisgICAgICAgIE5PVEU6IHRoaXMgYXBwbGllcyBv
bmx5IHRvIGNhbnZhcywgbm90IHRvIGJveCBzaGFkb3dzLgorCisgICAgICAgIFRlc3Q6IGZhc3Qv
Y2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5odG1sCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRleHRTaGFkb3c6OkNvbnRleHRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4
dFNoYWRvdzo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFk
b3c6OnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
eHRTaGFkb3c6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRleHRTaGFkb3c6Om9mZnNldCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29u
dGV4dFNoYWRvd1F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmJlZ2lu
U2hhZG93TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6ZW5kU2hhZG93
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om11c3RVc2VDb250ZXh0U2hhZG93KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpm
aWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQ
bGF0Zm9ybVNoYWRvdyk6CisKIDIwMTAtMTItMTYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcAppbmRleCA4N2ExYzVjNzYzY2VjNTU2NjM0
ZjJmYmFmYzY3NTk0MjllZGM1OWQxLi5iNWFlNTkyNTlkNDQ2MWUzOWY2ZTI2M2EzZWIzOGY1NzYy
ZGViMDQ3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFk
b3cuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHAK
QEAgLTQxLDYgKzQxLDcgQEAgQ29udGV4dFNoYWRvdzo6Q29udGV4dFNoYWRvdygpCiAgICAgOiBt
X3R5cGUoTm9TaGFkb3cpCiAgICAgLCBtX2JsdXJEaXN0YW5jZSgwKQogICAgICwgbV9sYXllckNv
bnRleHQoMCkKKyAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoZmFsc2UpCiB7CiB9CiAK
QEAgLTQ5LDYgKzUwLDcgQEAgQ29udGV4dFNoYWRvdzo6Q29udGV4dFNoYWRvdyhjb25zdCBDb2xv
ciYgY29sb3IsIGZsb2F0IHJhZGl1cywgY29uc3QgRmxvYXRTaXplJgogICAgICwgbV9ibHVyRGlz
dGFuY2Uocm91bmQocmFkaXVzKSkKICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKICAgICAsIG1fbGF5
ZXJDb250ZXh0KDApCisgICAgLCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZhbHNlKQogewog
ICAgIC8vIFNlZSBjb21tZW50cyBpbiBodHRwOi8vd2Via2l0Lm9yZy9iLzQwNzkzLCBpdCBzZWVt
cyBzZW5zaWJsZQogICAgIC8vIHRvIGZvbGxvdyBTa2lhJ3MgbGltaXQgb2YgMTI4IHBpeGVscyBv
ZiBibHVyIHJhZGl1cwpAQCAtMTQ5LDYgKzE1MSw2NyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmJs
dXJMYXllckltYWdlKHVuc2lnbmVkIGNoYXIqIGltYWdlRGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6
ZQogICAgIH0KIH0KIAorI2lmIFBMQVRGT1JNKFFUKQorSW50UmVjdCBDb250ZXh0U2hhZG93Ojpj
YWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHQgcCwgY29uc3Qg
RmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQoreworICAgIC8v
IENhbGN1bGF0ZSB0aGUgZGVzdGluYXRpb24gb2YgdGhlIGJsdXJyZWQgYW5kL29yIHRyYW5zZm9y
bWVkIGxheWVyLgorICAgIEZsb2F0UmVjdCBsYXllckZsb2F0UmVjdDsKKyAgICBmbG9hdCBpbmZs
YXRpb24gPSAwOworCisgICAgY29uc3QgUVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBwLT50cmFuc2Zv
cm0oKTsKKyAgICBpZiAobV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAmJiAhdHJhbnNmb3JtLmlz
SWRlbnRpdHkoKSkgeworICAgICAgICBRUG9seWdvbkYgdHJhbnNmb3JtZWRQb2x5Z29uID0gdHJh
bnNmb3JtLm1hcChRUG9seWdvbkYobGF5ZXJBcmVhKSk7CisgICAgICAgIHRyYW5zZm9ybWVkUG9s
eWdvbi50cmFuc2xhdGUob2Zmc2V0KCkpOworICAgICAgICBsYXllckZsb2F0UmVjdCA9IHRyYW5z
Zm9ybS5pbnZlcnRlZCgpLm1hcCh0cmFuc2Zvcm1lZFBvbHlnb24pLmJvdW5kaW5nUmVjdCgpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGxheWVyRmxvYXRSZWN0ID0gbGF5ZXJBcmVhOworICAgICAg
ICBsYXllckZsb2F0UmVjdC5tb3ZlKG1fb2Zmc2V0KTsKKyAgICB9CisKKyAgICAvLyBXZSBleHBh
bmQgdGhlIGFyZWEgYnkgdGhlIGJsdXIgcmFkaXVzIHRvIGdpdmUgZXh0cmEgc3BhY2UgZm9yIHRo
ZSBibHVyIHRyYW5zaXRpb24uCisgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7CisgICAg
ICAgIGxheWVyRmxvYXRSZWN0LmluZmxhdGUobV9ibHVyRGlzdGFuY2UpOworICAgICAgICBpbmZs
YXRpb24gKz0gbV9ibHVyRGlzdGFuY2U7CisgICAgfQorCisgICAgRmxvYXRSZWN0IHVuY2xpcHBl
ZExheWVyUmVjdCA9IGxheWVyRmxvYXRSZWN0OworCisgICAgaWYgKCFjbGlwUmVjdC5jb250YWlu
cyhlbmNsb3NpbmdJbnRSZWN0KGxheWVyRmxvYXRSZWN0KSkpIHsKKyAgICAgICAgLy8gTm8gbmVl
ZCB0byBoYXZlIHRoZSBidWZmZXIgbGFyZ2VyIHRoYW4gdGhlIGNsaXAuCisgICAgICAgIGxheWVy
RmxvYXRSZWN0LmludGVyc2VjdChjbGlwUmVjdCk7CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIHRv
dGFsbHkgb3V0c2lkZSB0aGUgY2xpcCByZWdpb24sIHdlIGFyZW4ndCBwYWludGluZyBhdCBhbGwu
CisgICAgICAgIGlmIChsYXllckZsb2F0UmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1
cm4gSW50UmVjdCgwLCAwLCAwLCAwKTsKKworICAgICAgICAvLyBXZSBhZGp1c3QgYWdhaW4gYmVj
YXVzZSB0aGUgcGl4ZWxzIGF0IHRoZSBib3JkZXJzIGFyZSBzdGlsbAorICAgICAgICAvLyBwb3Rl
bnRpYWxseSBhZmZlY3RlZCBieSB0aGUgcGl4ZWxzIG91dHNpZGUgdGhlIGJ1ZmZlci4KKyAgICAg
ICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7CisgICAgICAgICAgICBsYXllckZsb2F0UmVj
dC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNlKTsKKyAgICAgICAgICAgIHVuY2xpcHBlZExheWVyUmVj
dC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNlKTsKKyAgICAgICAgICAgIGluZmxhdGlvbiArPSBtX2Js
dXJEaXN0YW5jZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IGludCBmcmFtZVNpemUg
PSBpbmZsYXRpb24gKiAyOworICAgIG1fc291cmNlUmVjdCA9IEludFJlY3QoMCwgMCwgbGF5ZXJB
cmVhLndpZHRoKCkgKyBmcmFtZVNpemUsIGxheWVyQXJlYS5oZWlnaHQoKSArIGZyYW1lU2l6ZSk7
CisKKyAgICBtX2xheWVyT3JpZ2luID0gRmxvYXRQb2ludChsYXllckZsb2F0UmVjdC54KCksIGxh
eWVyRmxvYXRSZWN0LnkoKSk7CisKKyAgICBjb25zdCBGbG9hdFBvaW50IG1fdW5jbGlwcGVkTGF5
ZXJPcmlnaW4gPSBGbG9hdFBvaW50KHVuY2xpcHBlZExheWVyUmVjdC54KCksIHVuY2xpcHBlZExh
eWVyUmVjdC55KCkpOworICAgIGNvbnN0IEZsb2F0U2l6ZSBjbGlwcGVkT3V0ID0gbV91bmNsaXBw
ZWRMYXllck9yaWdpbiAtIG1fbGF5ZXJPcmlnaW47CisKKyAgICAvLyBTZXQgdGhlIG9yaWdpbiBh
cyB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBzY3JhdGNoIGltYWdlLCBvciwgaW4gY2FzZSB0
aGVyZSdzIGEgY2xpcHBlZAorICAgIC8vIG91dCByZWdpb24sIHNldCB0aGUgb3JpZ2luIGFjY29y
ZGluZ2x5IHRvIHRoZSBmdWxsIGJvdW5kaW5nIHJlY3QncyB0b3AtbGVmdCBjb3JuZXIuCisgICAg
Y29uc3QgZmxvYXQgdHJhbnNsYXRpb25YID0gLWxheWVyQXJlYS54KCkgKyBpbmZsYXRpb24gLSBm
YWJzZihjbGlwcGVkT3V0LndpZHRoKCkpOworICAgIGNvbnN0IGZsb2F0IHRyYW5zbGF0aW9uWSA9
IC1sYXllckFyZWEueSgpICsgaW5mbGF0aW9uIC0gZmFic2YoY2xpcHBlZE91dC5oZWlnaHQoKSk7
CisgICAgbV9sYXllckNvbnRleHRUcmFuc2xhdGlvbiA9IEZsb2F0UG9pbnQodHJhbnNsYXRpb25Y
LCB0cmFuc2xhdGlvblkpOworCisgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QobGF5ZXJGbG9h
dFJlY3QpOworfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShDQUlSTykKIHZvaWQgQ29udGV4dFNo
YWRvdzo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoY29uc3QgRmxvYXRSZWN0JiBsYXllckFy
ZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQogewogICAgIC8vIENhbGN1bGF0ZSB0aGUgZGVz
dGluYXRpb24gb2YgdGhlIGJsdXJyZWQgbGF5ZXIuCkBAIC0xNzMsNSArMjM2LDYgQEAgdm9pZCBD
b250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBGbG9hdFJlY3Qm
IGxheWVyQXJlYSwgY29uc3QKICAgICAgICAgICAgIG1fbGF5ZXJSZWN0LmluZmxhdGUobV90eXBl
ID09IEJsdXJTaGFkb3cgPyBtX2JsdXJEaXN0YW5jZSA6IDApOwogICAgIH0KIH0KKyNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbnRleHRTaGFkb3cuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4
dFNoYWRvdy5oCmluZGV4IGZhNzc4YWZiY2NkZGZhZmMzZjQwY2QwMjNjYjdhZDRmNDUxZWQ1MmMu
LmQ3NGIxZGVlMTQ3M2Y2NGU1NWM3MzUzZWQ4MDQ3YjA0ZTJiMDI1YTAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCkBAIC0xMDYsMjcgKzEwNiw0MyBAQCBwdWJs
aWM6CiAgICAgUGxhdGZvcm1Db250ZXh0IGJlZ2luU2hhZG93TGF5ZXIoUGxhdGZvcm1Db250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSk7CiAgICAgdm9pZCBlbmRTaGFkb3dMYXllcihQ
bGF0Zm9ybUNvbnRleHQpOwogICAgIHN0YXRpYyB2b2lkIHB1cmdlU2NyYXRjaEJ1ZmZlcigpOwor
ICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBlbmFibGUpIHsgbV9zaGFk
b3dzSWdub3JlVHJhbnNmb3JtcyA9IGVuYWJsZTsgfQorICAgIGJvb2wgc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyB9CiAj
aWYgUExBVEZPUk0oQ0FJUk8pCiAgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZnRS
YWRpdXMgPSBJbnRTaXplKCksIGNvbnN0IEludFNpemUmIHRvcFJpZ2h0UmFkaXVzID0gSW50U2l6
ZSgpLCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0UmFkaXVzID0gSW50U2l6ZSgpLCBjb25zdCBJ
bnRTaXplJiBib3R0b21SaWdodFJhZGl1cyA9IEludFNpemUoKSk7CiAjZW5kaWYKLQogI2lmIFBM
QVRGT1JNKFFUKQotICAgIFFQb2ludEYgb2Zmc2V0KCkgeyByZXR1cm4gUVBvaW50RihtX29mZnNl
dC53aWR0aCgpLCBtX29mZnNldC5oZWlnaHQoKSk7IH0KKyAgICBRUG9pbnRGIG9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIFFQb2ludEYobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQuaGVpZ2h0KCkp
OyB9CiAjZW5kaWYKIAogCiBwcml2YXRlOgotICAgIEludFJlY3QgbV9sYXllclJlY3Q7CisgICAg
Ly8gQnVmZmVyIHRvIHdoZXJlIHRoZSB0ZW1wb3Jhcnkgc2hhZG93IHdpbGwgYmUgZHJhd24gdG8u
CiAgICAgUGxhdGZvcm1JbWFnZSBtX2xheWVySW1hZ2U7CisgICAgLy8gQ29udGV4dCB1c2VkIHRv
IHBhaW50IHRoZSBzaGFkb3cgdG8gdGhlIGxheWVyIGltYWdlLgogICAgIFBsYXRmb3JtQ29udGV4
dCBtX2xheWVyQ29udGV4dDsKLQorI2lmIFBMQVRGT1JNKFFUKQorICAgIC8vIFN1Yi1yZWN0IG9m
IG1fbGF5ZXJJbWFnZSB0aGF0IGNvbnRhaW5zIHRoZSBzaGFkb3cgcGl4ZWxzLgorICAgIEZsb2F0
UmVjdCBtX3NvdXJjZVJlY3Q7CisgICAgLy8gVG9wLWxlZnQgY29ybmVyIG9mIHRoZSAocG9zc2li
bHkgY2xpcHBlZCkgYm91bmRpbmcgcmVjdCB0byBkcmF3IHRoZSBzaGFkb3cgdG8uCisgICAgRmxv
YXRQb2ludCBtX2xheWVyT3JpZ2luOworICAgIC8vIFRyYW5zbGF0aW9uIHRvIGFwcGx5IHRvIG1f
bGF5ZXJDb250ZXh0IGZvciB0aGUgc2hhZG93IHRvIGJlIGNvcnJlY3RseSBjbGlwcGVkLgorICAg
IEZsb2F0UG9pbnQgbV9sYXllckNvbnRleHRUcmFuc2xhdGlvbjsKKyNlbmRpZgorI2lmIFBMQVRG
T1JNKENBSVJPKQorICAgIC8vIEVuY2xvc2luZyBpbnQgcmVjdCB3aGVyZSBzaGFkb3cgbmVlZHMg
dG8gYmUgZHJhd24gdG8gdXNpbmcgdGhlIGxheWVyIGNvbnRleHQuCisgICAgSW50UmVjdCBtX2xh
eWVyUmVjdDsKICAgICAvLyBVc2VkIGZvciByZWZlcmVuY2Ugd2hlbiBjYW52YXMgc2NhbGUoeCx5
KSB3YXMgY2FsbGVkLgogICAgIEZsb2F0UmVjdCBtX3Vuc2NhbGVkTGF5ZXJSZWN0OworI2VuZGlm
CisgICAgYm9vbCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogCiAgICAgdm9pZCBibHVyTGF5
ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBpbnQgc3Ry
aWRlKTsKLSAgICB2b2lkIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAjaWYgUExBVEZPUk0oQ0FJ
Uk8pCisgICAgdm9pZCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBGbG9hdFJlY3Qm
IGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwogICAgIHZvaWQgZHJhd1JlY3RT
aGFkb3dXaXRob3V0VGlsaW5nKFBsYXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiBzaGFkb3dSZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBJbnRTaXpl
JiB0b3BSaWdodFJhZGl1cywgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3Qg
SW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMsIGZsb2F0IGFscGhhKTsKKyNlbHNlCisgICAgSW50
UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CiAjZW5k
aWYKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4
dFNoYWRvd1F0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNoYWRv
d1F0LmNwcAppbmRleCBmN2M3MGY2OTViYzBmYzQyNTBjYzliZGMzNWU5ZDVlOGU2M2Y5NzQ0Li4x
MzJlMTI5OThiZGZhM2MzYTY5YTNkZTBkMTcyZmZlNDg1ZjYwOWUyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwCkBAIC0xMTQsMjUgKzEx
NCwyMiBAQCBQbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dMYXllcihQ
bGF0Zm9ybUNvbnRleHQgcCwgY29uc3QgRmxvYXRSZQogICAgIGVsc2UKICAgICAgICAgY2xpcFJl
Y3QgPSBwLT50cmFuc2Zvcm0oKS5pbnZlcnRlZCgpLm1hcFJlY3QocC0+d2luZG93KCkpOwogCi0g
ICAgbV91bnNjYWxlZExheWVyUmVjdCA9IGxheWVyQXJlYTsKLSAgICBjYWxjdWxhdGVMYXllckJv
dW5kaW5nUmVjdChsYXllckFyZWEsIEludFJlY3QoY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCks
IGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKSk7CisgICAgLy8gU2V0IG1fbGF5
ZXJPcmlnaW4sIG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24sIG1fc291cmNlUmVjdC4KKyAgICBJ
bnRSZWN0IGNsaXAoY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNsaXBSZWN0LndpZHRoKCks
IGNsaXBSZWN0LmhlaWdodCgpKTsKKyAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxh
eWVyQm91bmRpbmdSZWN0KHAsIGxheWVyQXJlYSwgY2xpcCk7CiAKICAgICAvLyBEb24ndCBwYWlu
dCBpZiB3ZSBhcmUgdG90YWxseSBvdXRzaWRlIHRoZSBjbGlwIHJlZ2lvbi4KLSAgICBpZiAobV9s
YXllclJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIFNoYWRvd0J1ZmZlciogc2hhZG93QnVmZmVyID0gc2NyYXRjaFNo
YWRvd0J1ZmZlcigpOwotICAgIFFJbWFnZSogc2hhZG93SW1hZ2UgPSBzaGFkb3dCdWZmZXItPnNj
cmF0Y2hJbWFnZShtX2xheWVyUmVjdC5zaXplKCkpOworICAgIFFJbWFnZSogc2hhZG93SW1hZ2Ug
PSBzaGFkb3dCdWZmZXItPnNjcmF0Y2hJbWFnZShsYXllclJlY3Quc2l6ZSgpKTsKICAgICBtX2xh
eWVySW1hZ2UgPSBRSW1hZ2UoKnNoYWRvd0ltYWdlKTsKIAogICAgIG1fbGF5ZXJDb250ZXh0ID0g
bmV3IFFQYWludGVyOwogICAgIG1fbGF5ZXJDb250ZXh0LT5iZWdpbigmbV9sYXllckltYWdlKTsK
ICAgICBtX2xheWVyQ29udGV4dC0+c2V0Rm9udChwLT5mb250KCkpOwotICAgIG1fbGF5ZXJDb250
ZXh0LT50cmFuc2xhdGUobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQuaGVpZ2h0KCkpOwotCi0g
ICAgLy8gVGhlIG9yaWdpbiBpcyBub3cgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgc2NyYXRj
aCBpbWFnZS4KLSAgICBtX2xheWVyQ29udGV4dC0+dHJhbnNsYXRlKC1tX2xheWVyUmVjdC54KCks
IC1tX2xheWVyUmVjdC55KCkpOwotCisgICAgbV9sYXllckNvbnRleHQtPnRyYW5zbGF0ZShtX2xh
eWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKICAgICByZXR1cm4gbV9sYXllckNvbnRleHQ7CiB9CiAK
QEAgLTE1NSwxMyArMTUyLDcgQEAgdm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcihQ
bGF0Zm9ybUNvbnRleHQgcCkKICAgICAgICAgcC5lbmQoKTsKICAgICB9CiAKLSAgICBjb25zdCBR
VHJhbnNmb3JtIHRyYW5zZm9ybSA9IHAtPnRyYW5zZm9ybSgpOwotICAgIGlmICh0cmFuc2Zvcm0u
aXNTY2FsaW5nKCkpIHsKLSAgICAgICAgcXJlYWwgeCA9IG1fdW5zY2FsZWRMYXllclJlY3QueCgp
ICsgbV9vZmZzZXQud2lkdGgoKSAgLyB0cmFuc2Zvcm0ubTExKCkgLSBtX2JsdXJEaXN0YW5jZTsK
LSAgICAgICAgcXJlYWwgeSA9IG1fdW5zY2FsZWRMYXllclJlY3QueSgpICsgbV9vZmZzZXQuaGVp
Z2h0KCkgLyB0cmFuc2Zvcm0ubTIyKCkgLSBtX2JsdXJEaXN0YW5jZTsKLSAgICAgICAgcC0+ZHJh
d0ltYWdlKFFQb2ludEYoeCwgeSksIG1fbGF5ZXJJbWFnZSk7Ci0gICAgfSBlbHNlCi0gICAgICAg
IHAtPmRyYXdJbWFnZShtX2xheWVyUmVjdC50b3BMZWZ0KCksIG1fbGF5ZXJJbWFnZSk7CisgICAg
cC0+ZHJhd0ltYWdlKG1fbGF5ZXJPcmlnaW4sIG1fbGF5ZXJJbWFnZSwgbV9zb3VyY2VSZWN0KTsK
IAogICAgIHNjcmF0Y2hTaGFkb3dCdWZmZXIoKS0+c2NoZWR1bGVQdXJnZSgpOwogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAppbmRl
eCAyZjhhOTFmYjNhNGQ5YmRkY2ViYjEwZjIwMDUwNGU2NGE1NmRlNjM2Li5kNWU3Y2NkMzZlMmMz
ZjQ1YWIzYjkxYjc4NzFlMTg2MDJmYTUzYWU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtNTMsNyArNTMsNiBAQAogI2lu
Y2x1ZGUgIlRyYW5zcGFyZW5jeUxheWVyLmgiCiAKICNpbmNsdWRlIDxRQnJ1c2g+Ci0jaW5jbHVk
ZSA8UURlYnVnPgogI2luY2x1ZGUgPFFHcmFkaWVudD4KICNpbmNsdWRlIDxRUGFpbnREZXZpY2U+
CiAjaW5jbHVkZSA8UVBhaW50RW5naW5lPgpAQCAtMTc1LDYgKzE3NCwyMiBAQCBzdGF0aWMgaW5s
aW5lIFF0OjpGaWxsUnVsZSB0b1F0RmlsbFJ1bGUoV2luZFJ1bGUgcnVsZSkKICAgICByZXR1cm4g
UXQ6Ok9kZEV2ZW5GaWxsOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgbXVzdFVzZUNvbnRleHRT
aGFkb3coUVBhaW50ZXIqIHBhaW50ZXIsIENvbnRleHRTaGFkb3cqIHNoYWRvdykKK3sKKyAgICBp
ZiAoc2hhZG93LT5tX3R5cGUgPT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdykKKyAgICAgICAg
Ly8gV2UgY2FuJ3QgYXZvaWQgQ29udGV4dFNoYWRvdywgc2luY2UgdGhlIHNoYWRvdyBoYXMgYmx1
ci4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFzaGFkb3ctPnNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKCkpCisgICAgICAgIC8vIFdlIGNhbiBhdm9pZCBDb250ZXh0U2hhZG93IGFuZCBv
cHRpbWl6ZSwgc2luY2Ugd2UncmUgbm90IGRyYXdpbmcgb24gYSBjYW52YXMgYW5kIGJveAorICAg
ICAgICAvLyBzaGFkb3dzIGFyZSBhZmZlY3RlZCBieSB0aGUgdHJhbnNmb3JtYXRpb24gbWF0cml4
LgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHBhaW50ZXItPnRyYW5zZm9ybSgpLmlz
SWRlbnRpdHkoKSkKKyAgICAgICAgLy8gV2UgY2FuIGF2b2lkIENvbnRleHRTaGFkb3csIHNpbmNl
IHRoZXJlIGFyZSBubyB0cmFuc2Zvcm1hdGlvbnMgdG8gYXBwbHkgdG8gdGhlIGNhbnZhcy4KKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIE90aGVyd2lzZSwgbm8gY2hhbmNlIGF2b2lkaW5n
IENvbnRleHRTaGFkb3cuCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAg
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFFQYWludGVyKiwgY29uc3QgUUNvbG9yJiBp
bml0aWFsU29saWRDb2xvcik7CkBAIC01MDYsMzMgKzUyMSwyMCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlmIChtX2RhdGEtPmhhc1No
YWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFkb3co
KTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6OkJsdXJTaGFk
b3cKLSAgICAgICAgICAgICYmICFtX3N0YXRlLmZpbGxQYXR0ZXJuICYmICFtX3N0YXRlLmZpbGxH
cmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykgfHwg
bV9zdGF0ZS5maWxsUGF0dGVybiB8fCBtX3N0YXRlLmZpbGxHcmFkaWVudCkKICAgICAgICAgewot
ICAgICAgICAgICAgUVBvaW50RiBvZmZzZXQgPSBzaGFkb3ctPm9mZnNldCgpOwotICAgICAgICAg
ICAgY29uc3QgUVRyYW5zZm9ybSYgdHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0gICAgICAg
ICAgICBpZiAodHJhbnNmb3JtLmlzU2NhbGluZygpKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYg
c2NhbGluZyBpcyByZXF1aXJlZCwgZmluZCB0aGUgbmV3IGNvb3JkIGZvciBzaGFkb3cgb3JpZ2lu
LAotICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIHJlbGF0aXZlIG9mZnNldCB0byBpdHMg
c2hhcGUgaXMga2VwdC4KLSAgICAgICAgICAgICAgICBRUG9pbnRGIHRyYW5zbGF0ZWRPZmZzZXQo
b2Zmc2V0LngoKSAvIHRyYW5zZm9ybS5tMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb2Zmc2V0LnkoKSAvIHRyYW5zZm9ybS5tMjIoKSk7Ci0gICAgICAgICAg
ICAgICAgcGxhdGZvcm1QYXRoLnRyYW5zbGF0ZSh0cmFuc2xhdGVkT2Zmc2V0KTsKLSAgICAgICAg
ICAgICAgICBwLT5maWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihzaGFkb3ctPm1fY29sb3Ip
KTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKC10cmFuc2xhdGVkT2Zm
c2V0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRl
KG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29s
b3Ioc2hhZG93LT5tX2NvbG9yKSk7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZz
ZXQpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUVBhaW50
ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcGxhdGZvcm1Q
YXRoLmNvbnRyb2xQb2ludFJlY3QoKSk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikg
ewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFp
bnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFp
bnRlci0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xv
cikpOwogICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBRUG9pbnRGIG9mZnNldCA9IHNo
YWRvdy0+b2Zmc2V0KCk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKKyAgICAg
ICAgICAgIHAtPmZpbGxQYXRoKHBsYXRmb3JtUGF0aCwgUUNvbG9yKHNoYWRvdy0+bV9jb2xvcikp
OworICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZzZXQpOwogICAgICAgICB9Ci0KICAgICB9
CiAgICAgaWYgKG1fc3RhdGUuZmlsbFBhdHRlcm4pIHsKICAgICAgICAgQWZmaW5lVHJhbnNmb3Jt
IGFmZmluZTsKQEAgLTU1NywyOCArNTU5LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9r
ZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlmIChtX2RhdGEtPmhhc1NoYWRvdygpKSB7
CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFkb3coKTsKLQotICAg
ICAgICBpZiAoc2hhZG93LT5tX3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdwotICAg
ICAgICAgICAgJiYgIW1fc3RhdGUuc3Ryb2tlUGF0dGVybiAmJiAhbV9zdGF0ZS5zdHJva2VHcmFk
aWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykgfHwgbV9z
dGF0ZS5zdHJva2VQYXR0ZXJuIHx8IG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIFFQZW4gc2hhZG93UGVuKHBlbik7Ci0gICAgICAgICAgICBzaGFkb3dQZW4u
c2V0Q29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xvcik7Ci0gICAgICAgICAgICBRUG9pbnRGIG9m
ZnNldCA9IHNoYWRvdy0+b2Zmc2V0KCk7Ci0gICAgICAgICAgICBjb25zdCBRVHJhbnNmb3JtJiB0
cmFuc2Zvcm0gPSBwLT50cmFuc2Zvcm0oKTsKLSAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNT
Y2FsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBJZiBzY2FsaW5nIGlzIHJlcXVpcmVkLCBm
aW5kIHRoZSBuZXcgY29vcmQgZm9yIHNoYWRvdyBvcmlnaW4sCi0gICAgICAgICAgICAgICAgLy8g
c28gdGhhdCB0aGUgcmVsYXRpdmUgb2Zmc2V0IHRvIGl0cyBzaGFwZSBpcyBrZXB0LgotICAgICAg
ICAgICAgICAgIFFQb2ludEYgdHJhbnNsYXRlZE9mZnNldChvZmZzZXQueCgpIC8gdHJhbnNmb3Jt
Lm0xMSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQu
eSgpIC8gdHJhbnNmb3JtLm0yMigpKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJh
bnNsYXRlKHRyYW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgICAgIHAtPnN0cm9rZVBhdGgo
cGxhdGZvcm1QYXRoLCBzaGFkb3dQZW4pOwotICAgICAgICAgICAgICAgIHBsYXRmb3JtUGF0aC50
cmFuc2xhdGUoLXRyYW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBwLT5zdHJv
a2VQYXRoKHBsYXRmb3JtUGF0aCwgc2hhZG93UGVuKTsKLSAgICAgICAgICAgICAgICBwLT50cmFu
c2xhdGUoLW9mZnNldCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBGbG9hdFJlY3QgYm91bmRpbmdSZWN0ID0gcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJl
Y3QoKTsKICAgICAgICAgICAgIGJvdW5kaW5nUmVjdC5pbmZsYXRlKHBlbi5taXRlckxpbWl0KCkg
KyBwZW4ud2lkdGhGKCkpOwogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBz
aGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgYm91bmRpbmdSZWN0KTsKQEAgLTU4Nyw2ICs1Njks
MTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkK
ICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwg
cGVuKTsKICAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUVBlbiBzaGFkb3dQZW4ocGVu
KTsKKyAgICAgICAgICAgIHNoYWRvd1Blbi5zZXRDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9y
KTsKKyAgICAgICAgICAgIFFQb2ludEYgb2Zmc2V0ID0gc2hhZG93LT5vZmZzZXQoKTsKKyAgICAg
ICAgICAgIHAtPnRyYW5zbGF0ZShvZmZzZXQpOworICAgICAgICAgICAgcC0+c3Ryb2tlUGF0aChw
bGF0Zm9ybVBhdGgsIHNoYWRvd1Blbik7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW9mZnNl
dCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTcwNiw3ICs2OTUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICBwLT5maWxs
UmVjdChub3JtYWxpemVkUmVjdCwgYnJ1c2gpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICht
X2RhdGEtPmhhc1NoYWRvdygpKSB7Ci0gICAgICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgPT0g
Q29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdykgeworICAgICAgICAgICAgaWYgKG11c3RVc2VDb250
ZXh0U2hhZG93KHAsIHNoYWRvdykpIHsKICAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93
UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAg
ICAgICAgICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAg
c2hhZG93UGFpbnRlci0+c2V0T3BhY2l0eShzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5tX2Nv
bG9yLmFscGhhKCkpIC8gMjU1KTsKQEAgLTcxNCwxNyArNzAzLDExIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgICAgICAgICAg
ICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBTb2xpZCByZWN0YW5nbGUgZmlsbCB3
aXRoIG5vIGJsdXIgc2hhZG93IGNhbiBiZSBkb25lIGZhc3RlcgotICAgICAgICAgICAgICAgIC8v
IHdpdGhvdXQgdXNpbmcgdGhlIHNoYWRvdyBsYXllciBhdCBhbGwuCisgICAgICAgICAgICAgICAg
Ly8gU29saWQgcmVjdGFuZ2xlIGZpbGwgd2l0aCBubyBibHVyIHNoYWRvdyBvciB0cmFuc2Zvcm1h
dGlvbnMgYXBwbGllZCBjYW4gYmUgZG9uZQorICAgICAgICAgICAgICAgIC8vIGZhc3RlciB3aXRo
b3V0IHVzaW5nIHRoZSBzaGFkb3cgbGF5ZXIgYXQgYWxsLgogICAgICAgICAgICAgICAgIFFDb2xv
ciBzaGFkb3dDb2xvciA9IHNoYWRvdy0+bV9jb2xvcjsKICAgICAgICAgICAgICAgICBzaGFkb3dD
b2xvci5zZXRBbHBoYUYoc2hhZG93Q29sb3IuYWxwaGFGKCkgKiBwLT5icnVzaCgpLmNvbG9yKCku
YWxwaGFGKCkpOwotICAgICAgICAgICAgICAgIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSA9
IHAtPnRyYW5zZm9ybSgpOwotICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5n
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJh
bnNsYXRlZChzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5vZmZzZXQoKS54KCkpIC8gdHJhbnNm
b3JtLm0xMSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PHFyZWFsPihzaGFkb3ctPm9mZnNldCgpLnkoKSAgLyB0
cmFuc2Zvcm0ubTIyKCkpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93
Q29sb3IpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBwLT5m
aWxsUmVjdChub3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHNoYWRvdy0+b2Zmc2V0KCkpLCBzaGFk
b3dDb2xvcik7CisgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJh
bnNsYXRlZChzaGFkb3ctPm9mZnNldCgpKSwgc2hhZG93Q29sb3IpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKQEAgLTc0NCwxOCArNzI3LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpm
aWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JT
CiAKICAgICBpZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAgICAgICBDb250ZXh0U2hhZG93
KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7Ci0KLSAgICAgICAgaWYgKHNoYWRvdy0+bV90eXBl
ICE9IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cpIHsKLSAgICAgICAgICAgIC8vIFdlIGRvIG5v
dCBuZWVkIGFueSBsYXllciBmb3Igc2ltcGxlIHNoYWRvdy4KLSAgICAgICAgICAgIHAtPmZpbGxS
ZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvdy0+
bV9jb2xvcik7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtdXN0VXNlQ29udGV4dFNo
YWRvdyhwLCBzaGFkb3cpKSB7CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9
IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAg
ICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNl
dENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAg
ICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIHNoYWRv
dy0+bV9jb2xvcik7CiAgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwKTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHAt
PmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNo
YWRvdy0+bV9jb2xvcik7CiAgICAgfQogCiAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3Qs
IG1fZGF0YS0+c29saWRDb2xvcik7CkBAIC03NzEsMTkgKzc1MSwxNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNp
emUmIHRvcExlZgogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CiAgICAgaWYgKG1fZGF0
YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4
dFNoYWRvdygpOwotCi0gICAgICAgIGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93
OjpCbHVyU2hhZG93KSB7Ci0gICAgICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCBhbnkgbGF5ZXIg
Zm9yIHNpbXBsZSBzaGFkb3cuCi0gICAgICAgICAgICBwLT50cmFuc2xhdGUobV9kYXRhLT5zaGFk
b3cub2Zmc2V0KCkpOwotICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGF0aC5wbGF0Zm9ybVBhdGgo
KSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKLSAgICAgICAgICAgIHAtPnRyYW5z
bGF0ZSgtbV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOwotICAgICAgICB9IGVsc2UgeworICAgICAg
ICBpZiAobXVzdFVzZUNvbnRleHRTaGFkb3cocCwgc2hhZG93KSkgewogICAgICAgICAgICAgUVBh
aW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcmVjdCk7
CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRv
d1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1Nv
dXJjZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFBhdGgocGF0aC5wbGF0
Zm9ybVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKICAgICAgICAgICAg
ICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG1fZGF0YS0+c2hhZG93Lm9mZnNldCgp
KTsKKyAgICAgICAgICAgIHAtPmZpbGxQYXRoKHBhdGgucGxhdGZvcm1QYXRoKCksIFFDb2xvciht
X2RhdGEtPnNoYWRvdy5tX2NvbG9yKSk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW1fZGF0
YS0+c2hhZG93Lm9mZnNldCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBwLT5maWxsUGF0aChw
YXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3IoY29sb3IpKTsKQEAgLTk1Myw5ICs5MzEsMTAgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgYmx1ciwgY29uc3QKICAgICAgICAgLy8gV2UgZmxpcCB0aGUgaGVpZ2h0IHNp
bmNlIENHIGFuZCBIVE1MNSBDYW52YXMgaGF2ZSBvcHBvc2l0ZSBZIGF4aXMKICAgICAgICAgbV9z
dGF0ZS5zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUoc2l6ZS53aWR0aCgpLCAtc2l6ZS5oZWlnaHQo
KSk7CiAgICAgICAgIG1fZGF0YS0+c2hhZG93ID0gQ29udGV4dFNoYWRvdyhjb2xvciwgYmx1ciwg
RmxvYXRTaXplKHNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpKTsKLSAgICB9IGVsc2Ugewor
ICAgIH0gZWxzZQogICAgICAgICBtX2RhdGEtPnNoYWRvdyA9IENvbnRleHRTaGFkb3coY29sb3Is
IGJsdXIsIEZsb2F0U2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKLSAgICB9CisK
KyAgICBtX2RhdGEtPnNoYWRvdy5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX3N0YXRlLnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFy
UGxhdGZvcm1TaGFkb3coKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76831</attachid>
            <date>2010-12-16 17:04:17 -0800</date>
            <delta_ts>2010-12-16 17:38:05 -0800</delta_ts>
            <desc>Upload manually, git would rename files no matter what</desc>
            <filename>gtktransupload.patch</filename>
            <type>text/plain</type>
            <size>42659</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4MzBlOWNjLi4yYjc1NDIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTAtMTIt
MTYgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBDYW52YXMgc2hhZG93IG9mZnNl
dCBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IGFueSB0cmFuc2Zvcm1hdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0MjIKKworICAgICAgICBP
biBhIGNhbnZhcyBjb250ZXh0LCBzaGFkb3dzIGFyZSBjdXJyZW50bHkgYWZmZWN0ZWQgYnkgYWxs
CisgICAgICAgIHRyYW5zZm9ybWF0aW9ucyBleGNlcHQgc2NhbGluZy4gQWNjb3JkaW5nIHRvIHRo
ZSBzcGVjOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3Vy
cmVudC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbCNzaGFkb3dzCisKKyAg
ICAgICAgIlRoZSBzaGFkb3dPZmZzZXRYIGFuZCBzaGFkb3dPZmZzZXRZIGF0dHJpYnV0ZXMgc3Bl
Y2lmeSB0aGUgZGlzdGFuY2UKKyAgICAgICAgdGhhdCB0aGUgc2hhZG93IHdpbGwgYmUgb2Zmc2V0
IGluIHRoZSBwb3NpdGl2ZSBob3Jpem9udGFsIGFuZCBwb3NpdGl2ZQorICAgICAgICB2ZXJ0aWNh
bCBkaXN0YW5jZSByZXNwZWN0aXZlbHkuIFRoZWlyIHZhbHVlcyBhcmUgaW4gY29vcmRpbmF0ZSBz
cGFjZQorICAgICAgICB1bml0cy4gVGhleSBhcmUgbm90IGFmZmVjdGVkIGJ5IHRoZSBjdXJyZW50
IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4iCisKKyAgICAgICAgTk9URTogdGhpcyBhcHBsaWVzIG9u
bHkgdG8gY2FudmFzLCBub3QgdG8gYm94IHNoYWRvd3MuCisKKyAgICAgICAgQWRkIG5ldyB0ZXN0
IHRvIGVuc3VyZSB0aGF0IHNoYWRvd3MgYXJlIGNvcnJlY3RseSB0cmFuc2Zvcm1lZCBrZWVwaW5n
CisgICAgICAgIHRoZSByZWxhdGl2ZSBvZmZzZXQgdG8gdGhlIHNoYXBlLgorCisgICAgICAgICog
ZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dDog
U2VlIHN0cm9rZVBhdGggYmVsb3cuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5z
Zm9ybXMtZmlsbFJlY3Qtc2hhZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgt
c2hhZG93LmpzOgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2Nh
bGUtZmlsbFJlY3Qtc2hhZG93LmpzOgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0
cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanM6IE5vdyB1c2luZworICAgICAgICAg
IGEgbGluZVdpZHRoID4gMSB0byBtYWtlIGl0IGVhc2llciB0byB0ZXN0IGFuZCBtb3JlIGZhaXIg
YW1vbmcgYWxsCisgICAgICAgICAgcG9ydHMsIHNpbmNlIHRoZXJlIGNhbiBiZSBkaWZmZXJlbnQg
dHJhbnNmb3JtYXRpb24gc21vb3RobmVzcyBvcgorICAgICAgICAgIGFsaWFzaW5nIHNldHRpbmdz
LgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1m
aWxsUmVjdC1zaGFkb3cuanM6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVk
OiBHVEsgcG9ydCBuZWVkcyB0byBpbXBsZW1lbnQgdGhpcyBmZWF0dXJlLgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9jYW52YXMvY2Fu
dmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRv
dy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisKIDIwMTAtMTItMTYgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1z
aGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxl
LXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dAppbmRleCBlNTYyMDFmLi5hMzM3YzRiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0
aC1zaGFkb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZh
cy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQKQEAgLTMwLDI3ICszMCwyNyBA
QCBQQVNTIGRbM10gaXMgYXJvdW5kIDc2CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMg
MAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjAKK1BBU1MgZFszXSBpcyBh
cm91bmQgMTQ5CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlz
IDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjIKK1BBU1MgZFszXSBpcyBhcm91bmQgMTE2CiBQQVNT
IGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBp
cyBhcm91bmQgMjgKK1BBU1MgZFszXSBpcyBhcm91bmQgMTE1CiBQQVNTIGRbMF0gaXMgMjU1CiBQ
QVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjIKK1BB
U1MgZFszXSBpcyBhcm91bmQgNzAKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQ
QVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAxNQorUEFTUyBkWzNdIGlzIGFyb3Vu
ZCA3MAogUEFTUyBkWzBdIGlzIDI1NQogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1Q
QVNTIGRbM10gaXMgYXJvdW5kIDE3CitQQVNTIGRbM10gaXMgYXJvdW5kIDY5CiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxs
UmVjdC1zaGFkb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjAxM2I4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9j
YW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3ctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NTcgQEAKK0Vuc3VyZSBjb3JyZWN0IGJlaGF2aW9yIG9mIGNhbnZhcyB3aXRoIGZpbGxSZWN0K3No
YWRvdyBhZnRlciB0cmFuc2xhdGlvbityb3RhdGlvbitzY2FsaW5nLiBBIGJsdWUgYW5kIHJlZCBj
aGVja2VyZWQgcGF0dGVybiBzaG91bGQgYmUgZGlzcGxheWVkLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsy
XSBpcyAwCitQQVNTIGRbM10gaXMgMjU1CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMg
MAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyAyNTUKK1BBU1MgZFswXSBpcyAyNTUKK1BB
U1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIDI1NQorUEFTUyBkWzBd
IGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJv
dW5kIDEyNworUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAw
CitQQVNTIGRbM10gaXMgYXJvdW5kIDEyNworUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlz
IDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDEyNworUEFTUyBkWzBdIGlz
IDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5k
IDEwNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQ
QVNTIGRbM10gaXMgYXJvdW5kIDEwNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAK
K1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDgzCitQQVNTIGRbMF0gaXMgMjU1
CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQgMzYK
K1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBk
WzNdIGlzIGFyb3VuZCAzNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1Mg
ZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDM2CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmM0ZTlhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qt
c2hhZG93Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFk
b3cuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cu
anMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZp
bGxQYXRoLXNoYWRvdy5qcwppbmRleCAwNTI4NmY1Li44YjA1ZjNjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxQYXRoLXNo
YWRvdy5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFz
LXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcwpAQCAtMTksNyArMTksNyBAQCBmdW5jdGlvbiBzaG91
bGRCZUFyb3VuZChhLCBiKQogICAgICAgICBldmFsQSA9IGU7CiAgICAgfQogCi0gICAgaWYgKE1h
dGguYWJzKGV2YWxBIC0gYikgPCAxMCkKKyAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8IDIw
KQogICAgICAgICBwcmludCgiUEFTUyAiICsgYSArICIgaXMgYXJvdW5kICIgKyBiICwgImdyZWVu
IikKICAgICBlbHNlCiAgICAgICAgIHByaW50KCJGQUlMICIgKyBhICsgIiBpcyBub3QgYXJvdW5k
ICIgKyBiICsgIiAoYWN0dWFsOiAiICsgZXZhbEEgKyAiKSIsICJyZWQiKTsKQEAgLTM1LDcgKzM1
LDYgQEAgY3R4LnNjYWxlKDIsIDIpOwogY3R4LnNoYWRvd09mZnNldFggPSAxMDA7CiBjdHguc2hh
ZG93T2Zmc2V0WSA9IDEwMDsKIGN0eC5maWxsU3R5bGUgPSAncmdiYSgwLCAwLCAyNTUsIDEpJzsK
LS8vY3R4LmxpbmVXaWR0aCA9IDMwOwogCiBjdHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAs
IDAsIDEuMCknOwogY3R4LmJlZ2luUGF0aCgpOwpAQCAtNzMsMzggKzcyLDM4IEBAIGN0eC5maWxs
KCk7CiB2YXIgZDsgLy8gaW1hZ2VEYXRhLmRhdGEKIAogLy8gVmVyaWZ5IHNvbGlkIHNoYWRvdy4K
LWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJ
bWFnZURhdGEoMjAxLCAyMDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsK
IHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJl
KCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDI5NSwgMSwgMSku
ZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgMjk1LCAxLCAxKS5kYXRhOwogc2hvdWxk
QmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsy
XScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURh
dGEoMjAwLCAyOTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDI5OCwg
MSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAn
MCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAK
IC8vIFZlcmlmeSBzb2xpZCBhbHBoYSBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDAs
IDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwgNDA1LCAxLCAxKS5k
YXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBz
aG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1k
ID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1h
Z2VEYXRhKDI5OCwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBz
aG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFy
b3VuZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OSwgMSwg
MSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk4LCAxLCAxKS5kYXRhOwogc2hv
dWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgn
ZFsyXScsICcwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQt
dGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5qcyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzCmluZGV4
IDk5YTFlNTkuLjU2ZDRhMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Nj
cmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93
LmpzCkBAIC0xOSw3ICsxOSw3IEBAIGZ1bmN0aW9uIHNob3VsZEJlQXJvdW5kKGEsIGIpCiAgICAg
ICAgIGV2YWxBID0gZTsKICAgICB9CiAKLSAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8IDEw
KQorICAgIGlmIChNYXRoLmFicyhldmFsQSAtIGIpIDwgMjApCiAgICAgICAgIHByaW50KCJQQVNT
ICIgKyBhICsgIiBpcyBhcm91bmQgIiArIGIgLCAiZ3JlZW4iKQogICAgIGVsc2UKICAgICAgICAg
cHJpbnQoIkZBSUwgIiArIGEgKyAiIGlzIG5vdCBhcm91bmQgIiArIGIgKyAiIChhY3R1YWw6ICIg
KyBldmFsQSArICIpIiwgInJlZCIpOwpAQCAtNTIsMzggKzUyLDM4IEBAIGN0eC5maWxsUmVjdCgx
NTAsIDE1MCwgNTAsIDUwKTsKIHZhciBkOyAvLyBpbWFnZURhdGEuZGF0YQogCiAvLyBWZXJpZnkg
c29saWQgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyMDUsIDEsIDEpLmRhdGE7
CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDIwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdk
WzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAn
MCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5
OSwgMjk1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCAyOTgsIDEsIDEp
LmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsK
IHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0g
Y3R4LmdldEltYWdlRGF0YSgyMDAsIDI5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VE
YXRhKDIwMSwgMjk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91
bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFsz
XScsICcyNTUnKTsKIAogLy8gVmVyaWZ5IHNvbGlkIGFscGhhIHNoYWRvdy4KLWQgPSBjdHguZ2V0
SW1hZ2VEYXRhKDIwMCwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAx
LCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdk
WzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNd
JywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDA1LCAxLCAxKS5kYXRhOwor
ZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFsw
XScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAn
KTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRh
KDIwNSwgNDk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTgsIDEs
IDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAn
KTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBh
dGgtc2hhZG93LmpzCmluZGV4IDUxOThkOTQuLjYwMDIxNzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFk
b3cuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1z
Y2FsZS1zdHJva2VQYXRoLXNoYWRvdy5qcwpAQCAtMTksNyArMTksNyBAQCBmdW5jdGlvbiBzaG91
bGRCZUFyb3VuZChhLCBiKQogICAgICAgICBldmFsQSA9IGU7CiAgICAgfQogCi0gICAgaWYgKE1h
dGguYWJzKGV2YWxBIC0gYikgPCAxMCkKKyAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8IDIw
KQogICAgICAgICBwcmludCgiUEFTUyAiICsgYSArICIgaXMgYXJvdW5kICIgKyBiICwgImdyZWVu
IikKICAgICBlbHNlCiAgICAgICAgIHByaW50KCJGQUlMICIgKyBhICsgIiBpcyBub3QgYXJvdW5k
ICIgKyBiICsgIiAoYWN0dWFsOiAiICsgZXZhbEEgKyAiKSIsICJyZWQiKTsKQEAgLTM1LDYgKzM1
LDcgQEAgY3R4LnNjYWxlKDIsIDIpOwogY3R4LnNoYWRvd09mZnNldFggPSAxMDA7CiBjdHguc2hh
ZG93T2Zmc2V0WSA9IDEwMDsKIGN0eC5zdHJva2VTdHlsZSA9ICdyZ2JhKDAsIDAsIDI1NSwgMSkn
OworY3R4LmxpbmVXaWR0aCA9IDU7CiAKIGN0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwg
MCwgMS4wKSc7CiBjdHguYmVnaW5QYXRoKCk7CkBAIC03Niw3OSArNzcsNzkgQEAgY3R4LnN0cm9r
ZSgpOwogdmFyIGQ7IC8vIGltYWdlRGF0YS5kYXRhCiAKIC8vIFZlcmlmeSBzb2xpZCBzaGFkb3cu
Ci1kID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDIwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0
SW1hZ2VEYXRhKDI1MCwgMjAwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7
CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRC
ZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCAyOTUsIDEsIDEp
LmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzMDAsIDI5MCwgMSwgMSkuZGF0YTsKIHNob3Vs
ZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
Ml0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VE
YXRhKDIwMSwgMjk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyNTAs
IDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywg
JzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwog
CiAvLyBWZXJpZnkgc29saWQgYWxwaGEgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAw
LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDQwNSwgMSwgMSku
ZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwog
c2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAot
ZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldElt
YWdlRGF0YSgyMDEsIDUwMCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwog
c2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVB
cm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTksIDEs
IDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzMDAsIDQ5OSwgMSwgMSkuZGF0YTsKIHNo
b3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUo
J2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAogLy8gVmVyaWZ5
IGJsdXJyeSBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgzOTQsIDIwOCwgMSwgMSkuZGF0
YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQwNCwgMjEwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUo
J2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScs
ICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcyMCcpOworc2hvdWxkQmVBcm91bmQoJ2Rb
M10nLCAnMTQ5Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwMywgMzAxLCAxLCAxKS5kYXRh
OworZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA1LCAyNTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgn
ZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywg
JzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzIyJyk7CitzaG91bGRCZUFyb3VuZCgnZFsz
XScsICcxMTYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA0LCAyNTAsIDEsIDEpLmRhdGE7
CitkID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDIwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdk
WzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAn
MCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjgnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNd
JywgJzExNScpOwogCiAvLyBWZXJpZnkgYmx1cnJ5IGFscGhhIHNoYWRvdy4KLWQgPSBjdHguZ2V0
SW1hZ2VEYXRhKDQwNSwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA1
LCA0NTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdk
WzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNd
JywgJzIyJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICc3MCcpOwogCi1kID0gY3R4LmdldElt
YWdlRGF0YSg0MTUsIDQ5NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwNSwg
NDUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsx
XScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScs
ICcxNScpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzAnKTsKIAotZCA9IGN0eC5nZXRJbWFn
ZURhdGEoNDUwLCA1MDQsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDQw
NSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0n
LCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAn
MTcnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzY5Jyk7CiAKIHZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0
LXRlc3RzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5qcyBiL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFk
b3cuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY3ZjI0NAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMt
dHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuanMKQEAgLTAsMCArMSwxMzMgQEAKK2Rlc2NyaXB0
aW9uKCJFbnN1cmUgY29ycmVjdCBiZWhhdmlvciBvZiBjYW52YXMgd2l0aCBmaWxsUmVjdCtzaGFk
b3cgYWZ0ZXIgdHJhbnNsYXRpb24rcm90YXRpb24rc2NhbGluZy4gQSBibHVlIGFuZCByZWQgY2hl
Y2tlcmVkIHBhdHRlcm4gc2hvdWxkIGJlIGRpc3BsYXllZC4iKTsKKworZnVuY3Rpb24gcHJpbnQo
bWVzc2FnZSwgY29sb3IpCit7CisgICAgdmFyIHBhcmFncmFwaCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgIHBhcmFncmFwaC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgcGFyYWdyYXBoLnN0eWxlLmZvbnRGYW1pbHkgPSAibW9u
b3NwYWNlIjsKKyAgICBpZiAoY29sb3IpCisgICAgICAgIHBhcmFncmFwaC5zdHlsZS5jb2xvciA9
IGNvbG9yOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hp
bGQocGFyYWdyYXBoKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBcm91bmQoYSwgYikKK3sKKyAg
ICB2YXIgZXZhbEE7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbEEgPSBldmFsKGEpOworICAgIH0g
Y2F0Y2goZSkgeworICAgICAgICBldmFsQSA9IGU7CisgICAgfQorCisgICAgaWYgKE1hdGguYWJz
KGV2YWxBIC0gYikgPCAxMCkKKyAgICAgICAgcHJpbnQoIlBBU1MgIiArIGEgKyAiIGlzIGFyb3Vu
ZCAiICsgYiAsICJncmVlbiIpCisgICAgZWxzZQorICAgICAgICBwcmludCgiRkFJTCAiICsgYSAr
ICIgaXMgbm90IGFyb3VuZCAiICsgYiArICIgKGFjdHVhbDogIiArIGV2YWxBICsgIikiLCAicmVk
Iik7Cit9CisKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsK
K2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTsKK2NhbnZhcy5zZXRBdHRyaWJ1dGUo
J3dpZHRoJywgJzYwMCcpOworY2FudmFzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgJzYwMCcpOwor
dmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworCitjdHguZmlsbFN0eWxlID0gJ3Jn
YmEoMCwgMCwgMjU1LCAxLjApJzsKK2N0eC5zaGFkb3dPZmZzZXRYID0gMTAwOworY3R4LnNoYWRv
d09mZnNldFkgPSAxMDA7CisKK2N0eC50cmFuc2xhdGUoLTEwMCwgLTEwMCk7CitjdHgucm90YXRl
KE1hdGguUEkvMik7CitjdHguc2NhbGUoMiwgMik7CisKK2N0eC5zaGFkb3dDb2xvciA9ICdyZ2Jh
KDI1NSwgMCwgMCwgMS4wKSc7CitjdHguZmlsbFJlY3QoMTAwLCAtMTUwLCA1MCwgNTApOworCitj
dHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDAuNSknOworY3R4LmZpbGxSZWN0KDIw
MCwgLTE1MCwgNTAsIDUwKTsKKworY3R4LnNoYWRvd0JsdXIgPSA1OworY3R4LnNoYWRvd0NvbG9y
ID0gJ3JnYmEoMjU1LCAwLCAwLCAxLjApJzsKK2N0eC5maWxsUmVjdCgxMDAsIC0yNTAsIDUwLCA1
MCk7CisKK2N0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwgMC41KSc7CitjdHguZmls
bFJlY3QoMjAwLCAtMjUwLCA1MCwgNTApOworCit2YXIgZDsgLy8gaW1hZ2VEYXRhLmRhdGEKKwor
Ly8gVmVyaWZ5IHNvbGlkIHNoYWRvdy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjA1LCAx
LCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcw
Jyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZSgnZFszXScsICcyNTUnKTsKKwor
ZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCAyOTgsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFsw
XScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAn
KTsKK3Nob3VsZEJlKCdkWzNdJywgJzI1NScpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEs
IDI5OCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2Rb
MV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmUoJ2RbM10nLCAnMjU1
Jyk7CisKKy8vIFZlcmlmeSBzb2xpZCBhbHBoYSBzaGFkb3cuCitkID0gY3R4LmdldEltYWdlRGF0
YSgyMDEsIDQwMSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxk
QmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQo
J2RbM10nLCAnMTI3Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDUwLCAxLCAxKS5k
YXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7Citz
aG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMjcnKTsKKwor
ZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTgsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFsw
XScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAn
KTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzEyNycpOworCisvLyBWZXJpZnkgYmx1cnJ5IHNo
YWRvdy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDM5OSwgMjA1LCAxLCAxKS5kYXRhOworc2hvdWxk
QmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsy
XScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMDYnKTsKKworZCA9IGN0eC5nZXRJ
bWFnZURhdGEoNTAwLCAyMDUsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsK
K3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJl
QXJvdW5kKCdkWzNdJywgJzEwNicpOworCitkID0gY3R4LmdldEltYWdlRGF0YSg0OTksIDI5OSwg
MSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAn
MCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnODMn
KTsKKworLy8gVmVyaWZ5IGJsdXJyeSBhbHBoYSBzaGFkb3cuCitkID0gY3R4LmdldEltYWdlRGF0
YSgzOTgsIDQwNSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxk
QmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQo
J2RbM10nLCAnMzYnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoNDA1LCA1MDEsIDEsIDEpLmRh
dGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3No
b3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzM2Jyk7CisKK2Qg
PSBjdHguZ2V0SW1hZ2VEYXRhKDQwNSwgNTAxLCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0n
LCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7
CitzaG91bGRCZUFyb3VuZCgnZFszXScsICczNicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggZGZiNWI3NC4uY2Q0MzI0NiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTEwMjUsNiArMTAyNSw3IEBAIGVkaXRpbmcv
dW5zdXBwb3J0ZWQtY29udGVudC90YWJsZS10eXBlLWJlZm9yZS5odG1sCiBmYXN0L2NhbnZhcy9j
YW52YXMtYmctem9vbS5odG1sCiBmYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRhLmh0bWwK
IGZhc3QvY2FudmFzL2NhbnZhcy1ncmFkaWVudC1hZGRTdG9wLWVycm9yLmh0bWwKK2Zhc3QvY2Fu
dmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5odG1sCiBmYXN0L2NhbnZhcy9j
YW52YXMtem9vbS5odG1sCiBmYXN0L2Nzcy9jc3MxX2ZvcndhcmRfY29tcGF0aWJsZV9wYXJzaW5n
Lmh0bWwKIGZhc3QvY3NzL2ludmFsaWQtcGVyY2VudGFnZS1wcm9wZXJ0eS5odG1sCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLWZp
bGxQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFz
dC9jYW52YXMvY2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1NzIxNzguLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3ct
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotRW5zdXJlIGNvcnJl
Y3QgYmVoYXZpb3Igb2YgY2FudmFzIHdpdGggcGF0aCBmaWxsICsgc2hhZG93IGFmdGVyIHNjYWxp
bmcuIEEgYmx1ZSBhbmQgcmVkIGNoZWNrZXJlZCBwYXR0ZXJuIHNob3VsZCBiZSBkaXNwbGF5ZWQu
Ci0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNT
IGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMjU1LiBXYXMg
MTkxLgotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1G
QUlMIGRbM10gc2hvdWxkIGJlIDI1NS4gV2FzIDE5MS4KLVBBU1MgZFswXSBpcyAyNTUKLVBBU1Mg
ZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIHNob3VsZCBiZSAyNTUuIFdhcyAx
NDMuCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLUZB
SUwgZFszXSBpcyBub3QgYXJvdW5kIDc2IChhY3R1YWw6IDU3KQotUEFTUyBkWzBdIGlzIDI1NQot
UEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1GQUlMIGRbM10gaXMgbm90IGFyb3VuZCA3
NiAoYWN0dWFsOiA1NykKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRb
Ml0gaXMgMAotRkFJTCBkWzNdIGlzIG5vdCBhcm91bmQgNzYgKGFjdHVhbDogNTcpCi1QQVNTIGRb
MF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBh
cm91bmQgODMKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMg
MAotUEFTUyBkWzNdIGlzIGFyb3VuZCA4MwotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlz
IDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDUzCi1QQVNTIGRbMF0gaXMg
MjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQg
MjQKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFT
UyBkWzNdIGlzIGFyb3VuZCAyNAotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBB
U1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDI0Ci1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1maWxsUmVjdC1zaGFkb3ctZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1z
Y2FsZS1maWxsUmVjdC1zaGFkb3ctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyMjhkNWZjLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9m
YXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLUVuc3VyZSBjb3JyZWN0IGJlaGF2aW9yIG9mIGNh
bnZhcyB3aXRoIGZpbGxSZWN0K3NoYWRvdyBhZnRlciBzY2FsaW5nLiBBIGJsdWUgYW5kIHJlZCBj
aGVja2VyZWQgcGF0dGVybiBzaG91bGQgYmUgZGlzcGxheWVkLgotCi1PbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCi0KLQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsy
XSBpcyAwCi1GQUlMIGRbM10gc2hvdWxkIGJlIDI1NS4gV2FzIDE5MS4KLVBBU1MgZFswXSBpcyAy
NTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIHNob3VsZCBiZSAy
NTUuIFdhcyAxOTEuCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJd
IGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMjU1LiBXYXMgMTQzLgotUEFTUyBkWzBdIGlzIDI1
NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1GQUlMIGRbM10gaXMgbm90IGFyb3Vu
ZCA3NiAoYWN0dWFsOiA1NykKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNT
IGRbMl0gaXMgMAotRkFJTCBkWzNdIGlzIG5vdCBhcm91bmQgNzYgKGFjdHVhbDogNTcpCi1QQVNT
IGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBp
cyBub3QgYXJvdW5kIDc2IChhY3R1YWw6IDU3KQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFd
IGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDgzCi1QQVNTIGRbMF0g
aXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91
bmQgODMKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAot
UEFTUyBkWzNdIGlzIGFyb3VuZCA1MwotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAK
LVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDI0Ci1QQVNTIGRbMF0gaXMgMjU1
Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjQK
LVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFTUyBk
WzNdIGlzIGFyb3VuZCAyNAotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNU
IENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2Nh
bnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNo
YWRvdy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmZGRiMDku
LjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZh
cy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw1NyArMCwwIEBACi1FbnN1cmUgY29ycmVjdCBiZWhhdmlvciBvZiBjYW52YXMgd2l0aCBwYXRo
IHN0cm9rZSArIHNoYWRvdyBhZnRlciBzY2FsaW5nLiBBIGJsdWUgYW5kIHJlZCBjaGVja2VyZWQg
cGF0dGVybiBzaG91bGQgYmUgZGlzcGxheWVkLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
Ci0KLQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1G
QUlMIGRbM10gc2hvdWxkIGJlIDI1NS4gV2FzIDEyMy4KLVBBU1MgZFswXSBpcyAyNTUKLVBBU1Mg
ZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIHNob3VsZCBiZSAyNTUuIFdhcyA5
MC4KLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJ
TCBkWzNdIHNob3VsZCBiZSAyNTUuIFdhcyAxNjIuCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRb
MV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBpcyBub3QgYXJvdW5kIDc2IChhY3R1
YWw6IDM3KQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAw
Ci1GQUlMIGRbM10gaXMgbm90IGFyb3VuZCA3NiAoYWN0dWFsOiAyNykKLVBBU1MgZFswXSBpcyAy
NTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIGlzIG5vdCBhcm91
bmQgNzYgKGFjdHVhbDogMjcpCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFT
UyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjAKLVBBU1MgZFswXSBpcyAyNTUKLVBB
U1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMgotUEFT
UyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10g
aXMgYXJvdW5kIDI4Ci1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJd
IGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjIKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsx
XSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAxNQotUEFTUyBkWzBd
IGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJv
dW5kIDE3Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUK
LQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAyMGVhZTk4Li41MGUwZjA2IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEwLTEyLTE2ICBIZWxkZXIgQ29y
cmVpYSAgPGhlbGRlckBzZW5jaGEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtRdF0gQ2FudmFzIHNoYWRvdyBvZmZzZXQgc2hvdWxkIG5vdCBi
ZSBhZmZlY3RlZCBieSBhbnkgdHJhbnNmb3JtYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNDIyCisKKyAgICAgICAgT24gYSBjYW52YXMgY29u
dGV4dCwgc2hhZG93cyBhcmUgY3VycmVudGx5IGFmZmVjdGVkIGJ5IGFsbAorICAgICAgICB0cmFu
c2Zvcm1hdGlvbnMgZXhjZXB0IHNjYWxpbmcuIEFjY29yZGluZyB0byB0aGUgc3BlYzoKKyAgICAg
ICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0
aXBhZ2UvdGhlLWNhbnZhcy1lbGVtZW50Lmh0bWwjc2hhZG93cworCisgICAgICAgICJUaGUgc2hh
ZG93T2Zmc2V0WCBhbmQgc2hhZG93T2Zmc2V0WSBhdHRyaWJ1dGVzIHNwZWNpZnkgdGhlIGRpc3Rh
bmNlCisgICAgICAgIHRoYXQgdGhlIHNoYWRvdyB3aWxsIGJlIG9mZnNldCBpbiB0aGUgcG9zaXRp
dmUgaG9yaXpvbnRhbCBhbmQgcG9zaXRpdmUKKyAgICAgICAgdmVydGljYWwgZGlzdGFuY2UgcmVz
cGVjdGl2ZWx5LiBUaGVpciB2YWx1ZXMgYXJlIGluIGNvb3JkaW5hdGUgc3BhY2UKKyAgICAgICAg
dW5pdHMuIFRoZXkgYXJlIG5vdCBhZmZlY3RlZCBieSB0aGUgY3VycmVudCB0cmFuc2Zvcm1hdGlv
biBtYXRyaXguIgorCisgICAgICAgIE5PVEU6IHRoaXMgYXBwbGllcyBvbmx5IHRvIGNhbnZhcywg
bm90IHRvIGJveCBzaGFkb3dzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL2NhbnZhcy10
cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Db250ZXh0U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6
OkNvbnRleHRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6Y2FsY3Vs
YXRlTGF5ZXJCb3VuZGluZ1JlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRl
eHRTaGFkb3cuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OnNldFNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6Om9m
ZnNldCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6ZW5kU2hhZG93TGF5ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om11c3RVc2VDb250ZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyk6
CisKIDIwMTAtMTItMTYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b250ZXh0U2hhZG93LmNwcAppbmRleCA4N2ExYzVjLi5iNWFlNTkyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgQ29udGV4
dFNoYWRvdzo6Q29udGV4dFNoYWRvdygpCiAgICAgOiBtX3R5cGUoTm9TaGFkb3cpCiAgICAgLCBt
X2JsdXJEaXN0YW5jZSgwKQogICAgICwgbV9sYXllckNvbnRleHQoMCkKKyAgICAsIG1fc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMoZmFsc2UpCiB7CiB9CiAKQEAgLTQ5LDYgKzUwLDcgQEAgQ29udGV4
dFNoYWRvdzo6Q29udGV4dFNoYWRvdyhjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHJhZGl1cywg
Y29uc3QgRmxvYXRTaXplJgogICAgICwgbV9ibHVyRGlzdGFuY2Uocm91bmQocmFkaXVzKSkKICAg
ICAsIG1fb2Zmc2V0KG9mZnNldCkKICAgICAsIG1fbGF5ZXJDb250ZXh0KDApCisgICAgLCBtX3No
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZhbHNlKQogewogICAgIC8vIFNlZSBjb21tZW50cyBpbiBo
dHRwOi8vd2Via2l0Lm9yZy9iLzQwNzkzLCBpdCBzZWVtcyBzZW5zaWJsZQogICAgIC8vIHRvIGZv
bGxvdyBTa2lhJ3MgbGltaXQgb2YgMTI4IHBpeGVscyBvZiBibHVyIHJhZGl1cwpAQCAtMTQ5LDYg
KzE1MSw2NyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmJsdXJMYXllckltYWdlKHVuc2lnbmVkIGNo
YXIqIGltYWdlRGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZQogICAgIH0KIH0KIAorI2lmIFBMQVRG
T1JNKFFUKQorSW50UmVjdCBDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVj
dChjb25zdCBQbGF0Zm9ybUNvbnRleHQgcCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNv
bnN0IEludFJlY3QmIGNsaXBSZWN0KQoreworICAgIC8vIENhbGN1bGF0ZSB0aGUgZGVzdGluYXRp
b24gb2YgdGhlIGJsdXJyZWQgYW5kL29yIHRyYW5zZm9ybWVkIGxheWVyLgorICAgIEZsb2F0UmVj
dCBsYXllckZsb2F0UmVjdDsKKyAgICBmbG9hdCBpbmZsYXRpb24gPSAwOworCisgICAgY29uc3Qg
UVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBwLT50cmFuc2Zvcm0oKTsKKyAgICBpZiAobV9zaGFkb3dz
SWdub3JlVHJhbnNmb3JtcyAmJiAhdHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkgeworICAgICAgICBR
UG9seWdvbkYgdHJhbnNmb3JtZWRQb2x5Z29uID0gdHJhbnNmb3JtLm1hcChRUG9seWdvbkYobGF5
ZXJBcmVhKSk7CisgICAgICAgIHRyYW5zZm9ybWVkUG9seWdvbi50cmFuc2xhdGUob2Zmc2V0KCkp
OworICAgICAgICBsYXllckZsb2F0UmVjdCA9IHRyYW5zZm9ybS5pbnZlcnRlZCgpLm1hcCh0cmFu
c2Zvcm1lZFBvbHlnb24pLmJvdW5kaW5nUmVjdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGxh
eWVyRmxvYXRSZWN0ID0gbGF5ZXJBcmVhOworICAgICAgICBsYXllckZsb2F0UmVjdC5tb3ZlKG1f
b2Zmc2V0KTsKKyAgICB9CisKKyAgICAvLyBXZSBleHBhbmQgdGhlIGFyZWEgYnkgdGhlIGJsdXIg
cmFkaXVzIHRvIGdpdmUgZXh0cmEgc3BhY2UgZm9yIHRoZSBibHVyIHRyYW5zaXRpb24uCisgICAg
aWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7CisgICAgICAgIGxheWVyRmxvYXRSZWN0LmluZmxh
dGUobV9ibHVyRGlzdGFuY2UpOworICAgICAgICBpbmZsYXRpb24gKz0gbV9ibHVyRGlzdGFuY2U7
CisgICAgfQorCisgICAgRmxvYXRSZWN0IHVuY2xpcHBlZExheWVyUmVjdCA9IGxheWVyRmxvYXRS
ZWN0OworCisgICAgaWYgKCFjbGlwUmVjdC5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KGxheWVy
RmxvYXRSZWN0KSkpIHsKKyAgICAgICAgLy8gTm8gbmVlZCB0byBoYXZlIHRoZSBidWZmZXIgbGFy
Z2VyIHRoYW4gdGhlIGNsaXAuCisgICAgICAgIGxheWVyRmxvYXRSZWN0LmludGVyc2VjdChjbGlw
UmVjdCk7CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIHRvdGFsbHkgb3V0c2lkZSB0aGUgY2xpcCBy
ZWdpb24sIHdlIGFyZW4ndCBwYWludGluZyBhdCBhbGwuCisgICAgICAgIGlmIChsYXllckZsb2F0
UmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gSW50UmVjdCgwLCAwLCAwLCAwKTsK
KworICAgICAgICAvLyBXZSBhZGp1c3QgYWdhaW4gYmVjYXVzZSB0aGUgcGl4ZWxzIGF0IHRoZSBi
b3JkZXJzIGFyZSBzdGlsbAorICAgICAgICAvLyBwb3RlbnRpYWxseSBhZmZlY3RlZCBieSB0aGUg
cGl4ZWxzIG91dHNpZGUgdGhlIGJ1ZmZlci4KKyAgICAgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hh
ZG93KSB7CisgICAgICAgICAgICBsYXllckZsb2F0UmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNl
KTsKKyAgICAgICAgICAgIHVuY2xpcHBlZExheWVyUmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNl
KTsKKyAgICAgICAgICAgIGluZmxhdGlvbiArPSBtX2JsdXJEaXN0YW5jZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGNvbnN0IGludCBmcmFtZVNpemUgPSBpbmZsYXRpb24gKiAyOworICAgIG1f
c291cmNlUmVjdCA9IEludFJlY3QoMCwgMCwgbGF5ZXJBcmVhLndpZHRoKCkgKyBmcmFtZVNpemUs
IGxheWVyQXJlYS5oZWlnaHQoKSArIGZyYW1lU2l6ZSk7CisKKyAgICBtX2xheWVyT3JpZ2luID0g
RmxvYXRQb2ludChsYXllckZsb2F0UmVjdC54KCksIGxheWVyRmxvYXRSZWN0LnkoKSk7CisKKyAg
ICBjb25zdCBGbG9hdFBvaW50IG1fdW5jbGlwcGVkTGF5ZXJPcmlnaW4gPSBGbG9hdFBvaW50KHVu
Y2xpcHBlZExheWVyUmVjdC54KCksIHVuY2xpcHBlZExheWVyUmVjdC55KCkpOworICAgIGNvbnN0
IEZsb2F0U2l6ZSBjbGlwcGVkT3V0ID0gbV91bmNsaXBwZWRMYXllck9yaWdpbiAtIG1fbGF5ZXJP
cmlnaW47CisKKyAgICAvLyBTZXQgdGhlIG9yaWdpbiBhcyB0aGUgdG9wIGxlZnQgY29ybmVyIG9m
IHRoZSBzY3JhdGNoIGltYWdlLCBvciwgaW4gY2FzZSB0aGVyZSdzIGEgY2xpcHBlZAorICAgIC8v
IG91dCByZWdpb24sIHNldCB0aGUgb3JpZ2luIGFjY29yZGluZ2x5IHRvIHRoZSBmdWxsIGJvdW5k
aW5nIHJlY3QncyB0b3AtbGVmdCBjb3JuZXIuCisgICAgY29uc3QgZmxvYXQgdHJhbnNsYXRpb25Y
ID0gLWxheWVyQXJlYS54KCkgKyBpbmZsYXRpb24gLSBmYWJzZihjbGlwcGVkT3V0LndpZHRoKCkp
OworICAgIGNvbnN0IGZsb2F0IHRyYW5zbGF0aW9uWSA9IC1sYXllckFyZWEueSgpICsgaW5mbGF0
aW9uIC0gZmFic2YoY2xpcHBlZE91dC5oZWlnaHQoKSk7CisgICAgbV9sYXllckNvbnRleHRUcmFu
c2xhdGlvbiA9IEZsb2F0UG9pbnQodHJhbnNsYXRpb25YLCB0cmFuc2xhdGlvblkpOworCisgICAg
cmV0dXJuIGVuY2xvc2luZ0ludFJlY3QobGF5ZXJGbG9hdFJlY3QpOworfQorI2VuZGlmCisKKyNp
ZiBQTEFURk9STShDQUlSTykKIHZvaWQgQ29udGV4dFNoYWRvdzo6Y2FsY3VsYXRlTGF5ZXJCb3Vu
ZGluZ1JlY3QoY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBS
ZWN0KQogewogICAgIC8vIENhbGN1bGF0ZSB0aGUgZGVzdGluYXRpb24gb2YgdGhlIGJsdXJyZWQg
bGF5ZXIuCkBAIC0xNzMsNSArMjM2LDYgQEAgdm9pZCBDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVM
YXllckJvdW5kaW5nUmVjdChjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QKICAgICAg
ICAgICAgIG1fbGF5ZXJSZWN0LmluZmxhdGUobV90eXBlID09IEJsdXJTaGFkb3cgPyBtX2JsdXJE
aXN0YW5jZSA6IDApOwogICAgIH0KIH0KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCmluZGV4IGZhNzc4YWYu
LmQ3NGIxZGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNo
YWRvdy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCkBA
IC0xMDYsMjcgKzEwNiw0MyBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1Db250ZXh0IGJlZ2luU2hh
ZG93TGF5ZXIoUGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSk7CiAg
ICAgdm9pZCBlbmRTaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQpOwogICAgIHN0YXRpYyB2b2lk
IHB1cmdlU2NyYXRjaEJ1ZmZlcigpOworICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMoYm9vbCBlbmFibGUpIHsgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IGVuYWJsZTsgfQor
ICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSBjb25zdCB7IHJldHVybiBtX3NoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zOyB9CiAjaWYgUExBVEZPUk0oQ0FJUk8pCiAgICAgdm9pZCBkcmF3
UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3Qs
IGNvbnN0IEludFNpemUmIHRvcExlZnRSYWRpdXMgPSBJbnRTaXplKCksIGNvbnN0IEludFNpemUm
IHRvcFJpZ2h0UmFkaXVzID0gSW50U2l6ZSgpLCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0UmFk
aXVzID0gSW50U2l6ZSgpLCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodFJhZGl1cyA9IEludFNp
emUoKSk7CiAjZW5kaWYKLQogI2lmIFBMQVRGT1JNKFFUKQotICAgIFFQb2ludEYgb2Zmc2V0KCkg
eyByZXR1cm4gUVBvaW50RihtX29mZnNldC53aWR0aCgpLCBtX29mZnNldC5oZWlnaHQoKSk7IH0K
KyAgICBRUG9pbnRGIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIFFQb2ludEYobV9vZmZzZXQud2lk
dGgoKSwgbV9vZmZzZXQuaGVpZ2h0KCkpOyB9CiAjZW5kaWYKIAogCiBwcml2YXRlOgotICAgIElu
dFJlY3QgbV9sYXllclJlY3Q7CisgICAgLy8gQnVmZmVyIHRvIHdoZXJlIHRoZSB0ZW1wb3Jhcnkg
c2hhZG93IHdpbGwgYmUgZHJhd24gdG8uCiAgICAgUGxhdGZvcm1JbWFnZSBtX2xheWVySW1hZ2U7
CisgICAgLy8gQ29udGV4dCB1c2VkIHRvIHBhaW50IHRoZSBzaGFkb3cgdG8gdGhlIGxheWVyIGlt
YWdlLgogICAgIFBsYXRmb3JtQ29udGV4dCBtX2xheWVyQ29udGV4dDsKLQorI2lmIFBMQVRGT1JN
KFFUKQorICAgIC8vIFN1Yi1yZWN0IG9mIG1fbGF5ZXJJbWFnZSB0aGF0IGNvbnRhaW5zIHRoZSBz
aGFkb3cgcGl4ZWxzLgorICAgIEZsb2F0UmVjdCBtX3NvdXJjZVJlY3Q7CisgICAgLy8gVG9wLWxl
ZnQgY29ybmVyIG9mIHRoZSAocG9zc2libHkgY2xpcHBlZCkgYm91bmRpbmcgcmVjdCB0byBkcmF3
IHRoZSBzaGFkb3cgdG8uCisgICAgRmxvYXRQb2ludCBtX2xheWVyT3JpZ2luOworICAgIC8vIFRy
YW5zbGF0aW9uIHRvIGFwcGx5IHRvIG1fbGF5ZXJDb250ZXh0IGZvciB0aGUgc2hhZG93IHRvIGJl
IGNvcnJlY3RseSBjbGlwcGVkLgorICAgIEZsb2F0UG9pbnQgbV9sYXllckNvbnRleHRUcmFuc2xh
dGlvbjsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKENBSVJPKQorICAgIC8vIEVuY2xvc2luZyBpbnQg
cmVjdCB3aGVyZSBzaGFkb3cgbmVlZHMgdG8gYmUgZHJhd24gdG8gdXNpbmcgdGhlIGxheWVyIGNv
bnRleHQuCisgICAgSW50UmVjdCBtX2xheWVyUmVjdDsKICAgICAvLyBVc2VkIGZvciByZWZlcmVu
Y2Ugd2hlbiBjYW52YXMgc2NhbGUoeCx5KSB3YXMgY2FsbGVkLgogICAgIEZsb2F0UmVjdCBtX3Vu
c2NhbGVkTGF5ZXJSZWN0OworI2VuZGlmCisgICAgYm9vbCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zOwogCiAgICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50
U2l6ZSYgaW1hZ2VTaXplLCBpbnQgc3RyaWRlKTsKLSAgICB2b2lkIGNhbGN1bGF0ZUxheWVyQm91
bmRpbmdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlw
UmVjdCk7CiAjaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgdm9pZCBjYWxjdWxhdGVMYXllckJvdW5k
aW5nUmVjdChjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJl
Y3QpOwogICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKFBsYXRmb3JtQ29udGV4
dCBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBJbnRTaXplJiB0b3BM
ZWZ0UmFkaXVzLCBjb25zdCBJbnRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgSW50U2l6ZSYg
Ym90dG9tTGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMsIGZsb2F0
IGFscGhhKTsKKyNlbHNlCisgICAgSW50UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChj
b25zdCBQbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJ
bnRSZWN0JiBjbGlwUmVjdCk7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNwcAppbmRleCBmN2M3MGY2Li4xMzJlMTI5IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3Bw
CkBAIC0xMTQsMjUgKzExNCwyMiBAQCBQbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRvdzo6YmVn
aW5TaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCwgY29uc3QgRmxvYXRSZQogICAgIGVsc2UK
ICAgICAgICAgY2xpcFJlY3QgPSBwLT50cmFuc2Zvcm0oKS5pbnZlcnRlZCgpLm1hcFJlY3QocC0+
d2luZG93KCkpOwogCi0gICAgbV91bnNjYWxlZExheWVyUmVjdCA9IGxheWVyQXJlYTsKLSAgICBj
YWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChsYXllckFyZWEsIEludFJlY3QoY2xpcFJlY3QueCgp
LCBjbGlwUmVjdC55KCksIGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKSk7Cisg
ICAgLy8gU2V0IG1fbGF5ZXJPcmlnaW4sIG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24sIG1fc291
cmNlUmVjdC4KKyAgICBJbnRSZWN0IGNsaXAoY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNs
aXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKKyAgICBJbnRSZWN0IGxheWVyUmVj
dCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KHAsIGxheWVyQXJlYSwgY2xpcCk7CiAKICAg
ICAvLyBEb24ndCBwYWludCBpZiB3ZSBhcmUgdG90YWxseSBvdXRzaWRlIHRoZSBjbGlwIHJlZ2lv
bi4KLSAgICBpZiAobV9sYXllclJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChsYXllclJlY3QuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFNoYWRvd0J1ZmZlciogc2hhZG93QnVm
ZmVyID0gc2NyYXRjaFNoYWRvd0J1ZmZlcigpOwotICAgIFFJbWFnZSogc2hhZG93SW1hZ2UgPSBz
aGFkb3dCdWZmZXItPnNjcmF0Y2hJbWFnZShtX2xheWVyUmVjdC5zaXplKCkpOworICAgIFFJbWFn
ZSogc2hhZG93SW1hZ2UgPSBzaGFkb3dCdWZmZXItPnNjcmF0Y2hJbWFnZShsYXllclJlY3Quc2l6
ZSgpKTsKICAgICBtX2xheWVySW1hZ2UgPSBRSW1hZ2UoKnNoYWRvd0ltYWdlKTsKIAogICAgIG1f
bGF5ZXJDb250ZXh0ID0gbmV3IFFQYWludGVyOwogICAgIG1fbGF5ZXJDb250ZXh0LT5iZWdpbigm
bV9sYXllckltYWdlKTsKICAgICBtX2xheWVyQ29udGV4dC0+c2V0Rm9udChwLT5mb250KCkpOwot
ICAgIG1fbGF5ZXJDb250ZXh0LT50cmFuc2xhdGUobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQu
aGVpZ2h0KCkpOwotCi0gICAgLy8gVGhlIG9yaWdpbiBpcyBub3cgdGhlIHRvcCBsZWZ0IGNvcm5l
ciBvZiB0aGUgc2NyYXRjaCBpbWFnZS4KLSAgICBtX2xheWVyQ29udGV4dC0+dHJhbnNsYXRlKC1t
X2xheWVyUmVjdC54KCksIC1tX2xheWVyUmVjdC55KCkpOwotCisgICAgbV9sYXllckNvbnRleHQt
PnRyYW5zbGF0ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKICAgICByZXR1cm4gbV9sYXll
ckNvbnRleHQ7CiB9CiAKQEAgLTE1NSwxMyArMTUyLDcgQEAgdm9pZCBDb250ZXh0U2hhZG93Ojpl
bmRTaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCkKICAgICAgICAgcC5lbmQoKTsKICAgICB9
CiAKLSAgICBjb25zdCBRVHJhbnNmb3JtIHRyYW5zZm9ybSA9IHAtPnRyYW5zZm9ybSgpOwotICAg
IGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5nKCkpIHsKLSAgICAgICAgcXJlYWwgeCA9IG1fdW5zY2Fs
ZWRMYXllclJlY3QueCgpICsgbV9vZmZzZXQud2lkdGgoKSAgLyB0cmFuc2Zvcm0ubTExKCkgLSBt
X2JsdXJEaXN0YW5jZTsKLSAgICAgICAgcXJlYWwgeSA9IG1fdW5zY2FsZWRMYXllclJlY3QueSgp
ICsgbV9vZmZzZXQuaGVpZ2h0KCkgLyB0cmFuc2Zvcm0ubTIyKCkgLSBtX2JsdXJEaXN0YW5jZTsK
LSAgICAgICAgcC0+ZHJhd0ltYWdlKFFQb2ludEYoeCwgeSksIG1fbGF5ZXJJbWFnZSk7Ci0gICAg
fSBlbHNlCi0gICAgICAgIHAtPmRyYXdJbWFnZShtX2xheWVyUmVjdC50b3BMZWZ0KCksIG1fbGF5
ZXJJbWFnZSk7CisgICAgcC0+ZHJhd0ltYWdlKG1fbGF5ZXJPcmlnaW4sIG1fbGF5ZXJJbWFnZSwg
bV9zb3VyY2VSZWN0KTsKIAogICAgIHNjcmF0Y2hTaGFkb3dCdWZmZXIoKS0+c2NoZWR1bGVQdXJn
ZSgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dFF0LmNwcAppbmRleCAyZjhhOTFmLi5kNWU3Y2NkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtNTMsNyArNTMsNiBA
QAogI2luY2x1ZGUgIlRyYW5zcGFyZW5jeUxheWVyLmgiCiAKICNpbmNsdWRlIDxRQnJ1c2g+Ci0j
aW5jbHVkZSA8UURlYnVnPgogI2luY2x1ZGUgPFFHcmFkaWVudD4KICNpbmNsdWRlIDxRUGFpbnRE
ZXZpY2U+CiAjaW5jbHVkZSA8UVBhaW50RW5naW5lPgpAQCAtMTc1LDYgKzE3NCwyMiBAQCBzdGF0
aWMgaW5saW5lIFF0OjpGaWxsUnVsZSB0b1F0RmlsbFJ1bGUoV2luZFJ1bGUgcnVsZSkKICAgICBy
ZXR1cm4gUXQ6Ok9kZEV2ZW5GaWxsOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgbXVzdFVzZUNv
bnRleHRTaGFkb3coUVBhaW50ZXIqIHBhaW50ZXIsIENvbnRleHRTaGFkb3cqIHNoYWRvdykKK3sK
KyAgICBpZiAoc2hhZG93LT5tX3R5cGUgPT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdykKKyAg
ICAgICAgLy8gV2UgY2FuJ3QgYXZvaWQgQ29udGV4dFNoYWRvdywgc2luY2UgdGhlIHNoYWRvdyBo
YXMgYmx1ci4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFzaGFkb3ctPnNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zKCkpCisgICAgICAgIC8vIFdlIGNhbiBhdm9pZCBDb250ZXh0U2hhZG93
IGFuZCBvcHRpbWl6ZSwgc2luY2Ugd2UncmUgbm90IGRyYXdpbmcgb24gYSBjYW52YXMgYW5kIGJv
eAorICAgICAgICAvLyBzaGFkb3dzIGFyZSBhZmZlY3RlZCBieSB0aGUgdHJhbnNmb3JtYXRpb24g
bWF0cml4LgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHBhaW50ZXItPnRyYW5zZm9y
bSgpLmlzSWRlbnRpdHkoKSkKKyAgICAgICAgLy8gV2UgY2FuIGF2b2lkIENvbnRleHRTaGFkb3cs
IHNpbmNlIHRoZXJlIGFyZSBubyB0cmFuc2Zvcm1hdGlvbnMgdG8gYXBwbHkgdG8gdGhlIGNhbnZh
cy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIE90aGVyd2lzZSwgbm8gY2hhbmNlIGF2
b2lkaW5nIENvbnRleHRTaGFkb3cuCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGNsYXNzIEdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6
CiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFFQYWludGVyKiwgY29uc3QgUUNv
bG9yJiBpbml0aWFsU29saWRDb2xvcik7CkBAIC01MDYsMzMgKzUyMSwyMCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlmIChtX2RhdGEt
Pmhhc1NoYWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRT
aGFkb3coKTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6OkJs
dXJTaGFkb3cKLSAgICAgICAgICAgICYmICFtX3N0YXRlLmZpbGxQYXR0ZXJuICYmICFtX3N0YXRl
LmZpbGxHcmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRv
dykgfHwgbV9zdGF0ZS5maWxsUGF0dGVybiB8fCBtX3N0YXRlLmZpbGxHcmFkaWVudCkKICAgICAg
ICAgewotICAgICAgICAgICAgUVBvaW50RiBvZmZzZXQgPSBzaGFkb3ctPm9mZnNldCgpOwotICAg
ICAgICAgICAgY29uc3QgUVRyYW5zZm9ybSYgdHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0g
ICAgICAgICAgICBpZiAodHJhbnNmb3JtLmlzU2NhbGluZygpKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gSWYgc2NhbGluZyBpcyByZXF1aXJlZCwgZmluZCB0aGUgbmV3IGNvb3JkIGZvciBzaGFkb3cg
b3JpZ2luLAotICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIHJlbGF0aXZlIG9mZnNldCB0
byBpdHMgc2hhcGUgaXMga2VwdC4KLSAgICAgICAgICAgICAgICBRUG9pbnRGIHRyYW5zbGF0ZWRP
ZmZzZXQob2Zmc2V0LngoKSAvIHRyYW5zZm9ybS5tMTEoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LnkoKSAvIHRyYW5zZm9ybS5tMjIoKSk7Ci0gICAg
ICAgICAgICAgICAgcGxhdGZvcm1QYXRoLnRyYW5zbGF0ZSh0cmFuc2xhdGVkT2Zmc2V0KTsKLSAg
ICAgICAgICAgICAgICBwLT5maWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihzaGFkb3ctPm1f
Y29sb3IpKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKC10cmFuc2xh
dGVkT2Zmc2V0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcC0+dHJh
bnNsYXRlKG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGxhdGZvcm1QYXRo
LCBRQ29sb3Ioc2hhZG93LT5tX2NvbG9yKSk7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRl
KC1vZmZzZXQpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
UVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcGxh
dGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKSk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFp
bnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9k
ZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hh
ZG93UGFpbnRlci0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3IobV9kYXRhLT5zaGFkb3cu
bV9jb2xvcikpOwogICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAg
ICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBRUG9pbnRGIG9mZnNl
dCA9IHNoYWRvdy0+b2Zmc2V0KCk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsK
KyAgICAgICAgICAgIHAtPmZpbGxQYXRoKHBsYXRmb3JtUGF0aCwgUUNvbG9yKHNoYWRvdy0+bV9j
b2xvcikpOworICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZzZXQpOwogICAgICAgICB9Ci0K
ICAgICB9CiAgICAgaWYgKG1fc3RhdGUuZmlsbFBhdHRlcm4pIHsKICAgICAgICAgQWZmaW5lVHJh
bnNmb3JtIGFmZmluZTsKQEAgLTU1NywyOCArNTU5LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlmIChtX2RhdGEtPmhhc1NoYWRv
dygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFkb3coKTsK
LQotICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRv
dwotICAgICAgICAgICAgJiYgIW1fc3RhdGUuc3Ryb2tlUGF0dGVybiAmJiAhbV9zdGF0ZS5zdHJv
a2VHcmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykg
fHwgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuIHx8IG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIFFQZW4gc2hhZG93UGVuKHBlbik7Ci0gICAgICAgICAgICBzaGFk
b3dQZW4uc2V0Q29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xvcik7Ci0gICAgICAgICAgICBRUG9p
bnRGIG9mZnNldCA9IHNoYWRvdy0+b2Zmc2V0KCk7Ci0gICAgICAgICAgICBjb25zdCBRVHJhbnNm
b3JtJiB0cmFuc2Zvcm0gPSBwLT50cmFuc2Zvcm0oKTsKLSAgICAgICAgICAgIGlmICh0cmFuc2Zv
cm0uaXNTY2FsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBJZiBzY2FsaW5nIGlzIHJlcXVp
cmVkLCBmaW5kIHRoZSBuZXcgY29vcmQgZm9yIHNoYWRvdyBvcmlnaW4sCi0gICAgICAgICAgICAg
ICAgLy8gc28gdGhhdCB0aGUgcmVsYXRpdmUgb2Zmc2V0IHRvIGl0cyBzaGFwZSBpcyBrZXB0Lgot
ICAgICAgICAgICAgICAgIFFQb2ludEYgdHJhbnNsYXRlZE9mZnNldChvZmZzZXQueCgpIC8gdHJh
bnNmb3JtLm0xMSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
ZmZzZXQueSgpIC8gdHJhbnNmb3JtLm0yMigpKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBh
dGgudHJhbnNsYXRlKHRyYW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgICAgIHAtPnN0cm9r
ZVBhdGgocGxhdGZvcm1QYXRoLCBzaGFkb3dQZW4pOwotICAgICAgICAgICAgICAgIHBsYXRmb3Jt
UGF0aC50cmFuc2xhdGUoLXRyYW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBw
LT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgc2hhZG93UGVuKTsKLSAgICAgICAgICAgICAgICBw
LT50cmFuc2xhdGUoLW9mZnNldCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBGbG9hdFJlY3QgYm91bmRpbmdSZWN0ID0gcGxhdGZvcm1QYXRoLmNvbnRyb2xQ
b2ludFJlY3QoKTsKICAgICAgICAgICAgIGJvdW5kaW5nUmVjdC5pbmZsYXRlKHBlbi5taXRlckxp
bWl0KCkgKyBwZW4ud2lkdGhGKCkpOwogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50
ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgYm91bmRpbmdSZWN0KTsKQEAgLTU4Nyw2
ICs1NjksMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYg
cGF0aCkKICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zdHJva2VQYXRoKHBsYXRmb3Jt
UGF0aCwgcGVuKTsKICAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwog
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUVBlbiBzaGFkb3dQ
ZW4ocGVuKTsKKyAgICAgICAgICAgIHNoYWRvd1Blbi5zZXRDb2xvcihtX2RhdGEtPnNoYWRvdy5t
X2NvbG9yKTsKKyAgICAgICAgICAgIFFQb2ludEYgb2Zmc2V0ID0gc2hhZG93LT5vZmZzZXQoKTsK
KyAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShvZmZzZXQpOworICAgICAgICAgICAgcC0+c3Ryb2tl
UGF0aChwbGF0Zm9ybVBhdGgsIHNoYWRvd1Blbik7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUo
LW9mZnNldCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTcwNiw3ICs2OTUsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICBw
LT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwgYnJ1c2gpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGlmIChtX2RhdGEtPmhhc1NoYWRvdygpKSB7Ci0gICAgICAgICAgICBpZiAoc2hhZG93LT5tX3R5
cGUgPT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdykgeworICAgICAgICAgICAgaWYgKG11c3RV
c2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykpIHsKICAgICAgICAgICAgICAgICBRUGFpbnRlciog
c2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVj
dCk7CiAgICAgICAgICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAg
ICAgICAgc2hhZG93UGFpbnRlci0+c2V0T3BhY2l0eShzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93
LT5tX2NvbG9yLmFscGhhKCkpIC8gMjU1KTsKQEAgLTcxNCwxNyArNzAzLDExIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgICAg
ICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBTb2xpZCByZWN0YW5nbGUg
ZmlsbCB3aXRoIG5vIGJsdXIgc2hhZG93IGNhbiBiZSBkb25lIGZhc3RlcgotICAgICAgICAgICAg
ICAgIC8vIHdpdGhvdXQgdXNpbmcgdGhlIHNoYWRvdyBsYXllciBhdCBhbGwuCisgICAgICAgICAg
ICAgICAgLy8gU29saWQgcmVjdGFuZ2xlIGZpbGwgd2l0aCBubyBibHVyIHNoYWRvdyBvciB0cmFu
c2Zvcm1hdGlvbnMgYXBwbGllZCBjYW4gYmUgZG9uZQorICAgICAgICAgICAgICAgIC8vIGZhc3Rl
ciB3aXRob3V0IHVzaW5nIHRoZSBzaGFkb3cgbGF5ZXIgYXQgYWxsLgogICAgICAgICAgICAgICAg
IFFDb2xvciBzaGFkb3dDb2xvciA9IHNoYWRvdy0+bV9jb2xvcjsKICAgICAgICAgICAgICAgICBz
aGFkb3dDb2xvci5zZXRBbHBoYUYoc2hhZG93Q29sb3IuYWxwaGFGKCkgKiBwLT5icnVzaCgpLmNv
bG9yKCkuYWxwaGFGKCkpOwotICAgICAgICAgICAgICAgIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5z
Zm9ybSA9IHAtPnRyYW5zZm9ybSgpOwotICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNT
Y2FsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJl
Y3QudHJhbnNsYXRlZChzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5vZmZzZXQoKS54KCkpIC8g
dHJhbnNmb3JtLm0xMSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHFyZWFsPihzaGFkb3ctPm9mZnNldCgpLnko
KSAgLyB0cmFuc2Zvcm0ubTIyKCkpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2hhZG93Q29sb3IpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAg
ICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHNoYWRvdy0+b2Zmc2V0KCkp
LCBzaGFkb3dDb2xvcik7CisgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJl
Y3QudHJhbnNsYXRlZChzaGFkb3ctPm9mZnNldCgpKSwgc2hhZG93Q29sb3IpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKQEAgLTc0NCwxOCArNzI3LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwg
Q29sb3JTCiAKICAgICBpZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAgICAgICBDb250ZXh0
U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7Ci0KLSAgICAgICAgaWYgKHNoYWRvdy0+
bV90eXBlICE9IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cpIHsKLSAgICAgICAgICAgIC8vIFdl
IGRvIG5vdCBuZWVkIGFueSBsYXllciBmb3Igc2ltcGxlIHNoYWRvdy4KLSAgICAgICAgICAgIHAt
PmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNo
YWRvdy0+bV9jb2xvcik7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtdXN0VXNlQ29u
dGV4dFNoYWRvdyhwLCBzaGFkb3cpKSB7CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFp
bnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAgICAg
ICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50
ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7
CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3Qs
IHNoYWRvdy0+bV9jb2xvcik7CiAgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXll
cihwKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQo
KSksIHNoYWRvdy0+bV9jb2xvcik7CiAgICAgfQogCiAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXpl
ZFJlY3QsIG1fZGF0YS0+c29saWRDb2xvcik7CkBAIC03NzEsMTkgKzc1MSwxNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IEludFNpemUmIHRvcExlZgogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CiAgICAgaWYg
KG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0g
Y29udGV4dFNoYWRvdygpOwotCi0gICAgICAgIGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0
U2hhZG93OjpCbHVyU2hhZG93KSB7Ci0gICAgICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCBhbnkg
bGF5ZXIgZm9yIHNpbXBsZSBzaGFkb3cuCi0gICAgICAgICAgICBwLT50cmFuc2xhdGUobV9kYXRh
LT5zaGFkb3cub2Zmc2V0KCkpOwotICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGF0aC5wbGF0Zm9y
bVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKLSAgICAgICAgICAgIHAt
PnRyYW5zbGF0ZSgtbV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOwotICAgICAgICB9IGVsc2Ugewor
ICAgICAgICBpZiAobXVzdFVzZUNvbnRleHRTaGFkb3cocCwgc2hhZG93KSkgewogICAgICAgICAg
ICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwg
cmVjdCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAg
IHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25N
b2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFBhdGgocGF0
aC5wbGF0Zm9ybVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKICAgICAg
ICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG1fZGF0YS0+c2hhZG93Lm9m
ZnNldCgpKTsKKyAgICAgICAgICAgIHAtPmZpbGxQYXRoKHBhdGgucGxhdGZvcm1QYXRoKCksIFFD
b2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9yKSk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUo
LW1fZGF0YS0+c2hhZG93Lm9mZnNldCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBwLT5maWxs
UGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3IoY29sb3IpKTsKQEAgLTk1Myw5ICs5MzEs
MTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgYmx1ciwgY29uc3QKICAgICAgICAgLy8gV2UgZmxpcCB0aGUgaGVp
Z2h0IHNpbmNlIENHIGFuZCBIVE1MNSBDYW52YXMgaGF2ZSBvcHBvc2l0ZSBZIGF4aXMKICAgICAg
ICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUoc2l6ZS53aWR0aCgpLCAtc2l6ZS5o
ZWlnaHQoKSk7CiAgICAgICAgIG1fZGF0YS0+c2hhZG93ID0gQ29udGV4dFNoYWRvdyhjb2xvciwg
Ymx1ciwgRmxvYXRTaXplKHNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpKTsKLSAgICB9IGVs
c2UgeworICAgIH0gZWxzZQogICAgICAgICBtX2RhdGEtPnNoYWRvdyA9IENvbnRleHRTaGFkb3co
Y29sb3IsIGJsdXIsIEZsb2F0U2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKLSAg
ICB9CisKKyAgICBtX2RhdGEtPnNoYWRvdy5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX3N0
YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmNsZWFyUGxhdGZvcm1TaGFkb3coKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76835</attachid>
            <date>2010-12-16 17:38:05 -0800</date>
            <delta_ts>2010-12-17 14:41:06 -0800</delta_ts>
            <desc>Once more, to force the bots to work</desc>
            <filename>gtktransupload.patch</filename>
            <type>text/plain</type>
            <size>42659</size>
            <attacher name="Helder Correia">helder</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4MzBlOWNjLi4yYjc1NDIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTAtMTIt
MTYgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBDYW52YXMgc2hhZG93IG9mZnNl
dCBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IGFueSB0cmFuc2Zvcm1hdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0MjIKKworICAgICAgICBP
biBhIGNhbnZhcyBjb250ZXh0LCBzaGFkb3dzIGFyZSBjdXJyZW50bHkgYWZmZWN0ZWQgYnkgYWxs
CisgICAgICAgIHRyYW5zZm9ybWF0aW9ucyBleGNlcHQgc2NhbGluZy4gQWNjb3JkaW5nIHRvIHRo
ZSBzcGVjOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3Vy
cmVudC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbCNzaGFkb3dzCisKKyAg
ICAgICAgIlRoZSBzaGFkb3dPZmZzZXRYIGFuZCBzaGFkb3dPZmZzZXRZIGF0dHJpYnV0ZXMgc3Bl
Y2lmeSB0aGUgZGlzdGFuY2UKKyAgICAgICAgdGhhdCB0aGUgc2hhZG93IHdpbGwgYmUgb2Zmc2V0
IGluIHRoZSBwb3NpdGl2ZSBob3Jpem9udGFsIGFuZCBwb3NpdGl2ZQorICAgICAgICB2ZXJ0aWNh
bCBkaXN0YW5jZSByZXNwZWN0aXZlbHkuIFRoZWlyIHZhbHVlcyBhcmUgaW4gY29vcmRpbmF0ZSBz
cGFjZQorICAgICAgICB1bml0cy4gVGhleSBhcmUgbm90IGFmZmVjdGVkIGJ5IHRoZSBjdXJyZW50
IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4iCisKKyAgICAgICAgTk9URTogdGhpcyBhcHBsaWVzIG9u
bHkgdG8gY2FudmFzLCBub3QgdG8gYm94IHNoYWRvd3MuCisKKyAgICAgICAgQWRkIG5ldyB0ZXN0
IHRvIGVuc3VyZSB0aGF0IHNoYWRvd3MgYXJlIGNvcnJlY3RseSB0cmFuc2Zvcm1lZCBrZWVwaW5n
CisgICAgICAgIHRoZSByZWxhdGl2ZSBvZmZzZXQgdG8gdGhlIHNoYXBlLgorCisgICAgICAgICog
ZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dDog
U2VlIHN0cm9rZVBhdGggYmVsb3cuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5z
Zm9ybXMtZmlsbFJlY3Qtc2hhZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgt
c2hhZG93LmpzOgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2Nh
bGUtZmlsbFJlY3Qtc2hhZG93LmpzOgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0
cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanM6IE5vdyB1c2luZworICAgICAgICAg
IGEgbGluZVdpZHRoID4gMSB0byBtYWtlIGl0IGVhc2llciB0byB0ZXN0IGFuZCBtb3JlIGZhaXIg
YW1vbmcgYWxsCisgICAgICAgICAgcG9ydHMsIHNpbmNlIHRoZXJlIGNhbiBiZSBkaWZmZXJlbnQg
dHJhbnNmb3JtYXRpb24gc21vb3RobmVzcyBvcgorICAgICAgICAgIGFsaWFzaW5nIHNldHRpbmdz
LgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1m
aWxsUmVjdC1zaGFkb3cuanM6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVk
OiBHVEsgcG9ydCBuZWVkcyB0byBpbXBsZW1lbnQgdGhpcyBmZWF0dXJlLgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9jYW52YXMvY2Fu
dmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRv
dy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisKIDIwMTAtMTItMTYgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1z
aGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxl
LXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dAppbmRleCBlNTYyMDFmLi5hMzM3YzRiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0
aC1zaGFkb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZh
cy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQKQEAgLTMwLDI3ICszMCwyNyBA
QCBQQVNTIGRbM10gaXMgYXJvdW5kIDc2CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMg
MAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjAKK1BBU1MgZFszXSBpcyBh
cm91bmQgMTQ5CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlz
IDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjIKK1BBU1MgZFszXSBpcyBhcm91bmQgMTE2CiBQQVNT
IGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBp
cyBhcm91bmQgMjgKK1BBU1MgZFszXSBpcyBhcm91bmQgMTE1CiBQQVNTIGRbMF0gaXMgMjU1CiBQ
QVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjIKK1BB
U1MgZFszXSBpcyBhcm91bmQgNzAKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQ
QVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAxNQorUEFTUyBkWzNdIGlzIGFyb3Vu
ZCA3MAogUEFTUyBkWzBdIGlzIDI1NQogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1Q
QVNTIGRbM10gaXMgYXJvdW5kIDE3CitQQVNTIGRbM10gaXMgYXJvdW5kIDY5CiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxs
UmVjdC1zaGFkb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjAxM2I4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9j
YW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3ctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NTcgQEAKK0Vuc3VyZSBjb3JyZWN0IGJlaGF2aW9yIG9mIGNhbnZhcyB3aXRoIGZpbGxSZWN0K3No
YWRvdyBhZnRlciB0cmFuc2xhdGlvbityb3RhdGlvbitzY2FsaW5nLiBBIGJsdWUgYW5kIHJlZCBj
aGVja2VyZWQgcGF0dGVybiBzaG91bGQgYmUgZGlzcGxheWVkLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsy
XSBpcyAwCitQQVNTIGRbM10gaXMgMjU1CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0gaXMg
MAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyAyNTUKK1BBU1MgZFswXSBpcyAyNTUKK1BB
U1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIDI1NQorUEFTUyBkWzBd
IGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJv
dW5kIDEyNworUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAw
CitQQVNTIGRbM10gaXMgYXJvdW5kIDEyNworUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlz
IDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDEyNworUEFTUyBkWzBdIGlz
IDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5k
IDEwNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQ
QVNTIGRbM10gaXMgYXJvdW5kIDEwNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAK
K1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDgzCitQQVNTIGRbMF0gaXMgMjU1
CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQgMzYK
K1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBk
WzNdIGlzIGFyb3VuZCAzNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1Mg
ZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDM2CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmM0ZTlhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qt
c2hhZG93Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFk
b3cuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cu
anMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZp
bGxQYXRoLXNoYWRvdy5qcwppbmRleCAwNTI4NmY1Li44YjA1ZjNjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxQYXRoLXNo
YWRvdy5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFz
LXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcwpAQCAtMTksNyArMTksNyBAQCBmdW5jdGlvbiBzaG91
bGRCZUFyb3VuZChhLCBiKQogICAgICAgICBldmFsQSA9IGU7CiAgICAgfQogCi0gICAgaWYgKE1h
dGguYWJzKGV2YWxBIC0gYikgPCAxMCkKKyAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8IDIw
KQogICAgICAgICBwcmludCgiUEFTUyAiICsgYSArICIgaXMgYXJvdW5kICIgKyBiICwgImdyZWVu
IikKICAgICBlbHNlCiAgICAgICAgIHByaW50KCJGQUlMICIgKyBhICsgIiBpcyBub3QgYXJvdW5k
ICIgKyBiICsgIiAoYWN0dWFsOiAiICsgZXZhbEEgKyAiKSIsICJyZWQiKTsKQEAgLTM1LDcgKzM1
LDYgQEAgY3R4LnNjYWxlKDIsIDIpOwogY3R4LnNoYWRvd09mZnNldFggPSAxMDA7CiBjdHguc2hh
ZG93T2Zmc2V0WSA9IDEwMDsKIGN0eC5maWxsU3R5bGUgPSAncmdiYSgwLCAwLCAyNTUsIDEpJzsK
LS8vY3R4LmxpbmVXaWR0aCA9IDMwOwogCiBjdHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAs
IDAsIDEuMCknOwogY3R4LmJlZ2luUGF0aCgpOwpAQCAtNzMsMzggKzcyLDM4IEBAIGN0eC5maWxs
KCk7CiB2YXIgZDsgLy8gaW1hZ2VEYXRhLmRhdGEKIAogLy8gVmVyaWZ5IHNvbGlkIHNoYWRvdy4K
LWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJ
bWFnZURhdGEoMjAxLCAyMDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsK
IHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJl
KCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDI5NSwgMSwgMSku
ZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgMjk1LCAxLCAxKS5kYXRhOwogc2hvdWxk
QmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsy
XScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURh
dGEoMjAwLCAyOTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDI5OCwg
MSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAn
MCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAK
IC8vIFZlcmlmeSBzb2xpZCBhbHBoYSBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDAs
IDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwgNDA1LCAxLCAxKS5k
YXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBz
aG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1k
ID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1h
Z2VEYXRhKDI5OCwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBz
aG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFy
b3VuZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OSwgMSwg
MSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk4LCAxLCAxKS5kYXRhOwogc2hv
dWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgn
ZFsyXScsICcwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQt
dGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5qcyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzCmluZGV4
IDk5YTFlNTkuLjU2ZDRhMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Nj
cmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93
LmpzCkBAIC0xOSw3ICsxOSw3IEBAIGZ1bmN0aW9uIHNob3VsZEJlQXJvdW5kKGEsIGIpCiAgICAg
ICAgIGV2YWxBID0gZTsKICAgICB9CiAKLSAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8IDEw
KQorICAgIGlmIChNYXRoLmFicyhldmFsQSAtIGIpIDwgMjApCiAgICAgICAgIHByaW50KCJQQVNT
ICIgKyBhICsgIiBpcyBhcm91bmQgIiArIGIgLCAiZ3JlZW4iKQogICAgIGVsc2UKICAgICAgICAg
cHJpbnQoIkZBSUwgIiArIGEgKyAiIGlzIG5vdCBhcm91bmQgIiArIGIgKyAiIChhY3R1YWw6ICIg
KyBldmFsQSArICIpIiwgInJlZCIpOwpAQCAtNTIsMzggKzUyLDM4IEBAIGN0eC5maWxsUmVjdCgx
NTAsIDE1MCwgNTAsIDUwKTsKIHZhciBkOyAvLyBpbWFnZURhdGEuZGF0YQogCiAvLyBWZXJpZnkg
c29saWQgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyMDUsIDEsIDEpLmRhdGE7
CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDIwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdk
WzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAn
MCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5
OSwgMjk1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCAyOTgsIDEsIDEp
LmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsK
IHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0g
Y3R4LmdldEltYWdlRGF0YSgyMDAsIDI5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VE
YXRhKDIwMSwgMjk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91
bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFsz
XScsICcyNTUnKTsKIAogLy8gVmVyaWZ5IHNvbGlkIGFscGhhIHNoYWRvdy4KLWQgPSBjdHguZ2V0
SW1hZ2VEYXRhKDIwMCwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAx
LCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdk
WzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNd
JywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDA1LCAxLCAxKS5kYXRhOwor
ZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFsw
XScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAn
KTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRh
KDIwNSwgNDk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTgsIDEs
IDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAn
KTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBh
dGgtc2hhZG93LmpzCmluZGV4IDUxOThkOTQuLjYwMDIxNzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFk
b3cuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1z
Y2FsZS1zdHJva2VQYXRoLXNoYWRvdy5qcwpAQCAtMTksNyArMTksNyBAQCBmdW5jdGlvbiBzaG91
bGRCZUFyb3VuZChhLCBiKQogICAgICAgICBldmFsQSA9IGU7CiAgICAgfQogCi0gICAgaWYgKE1h
dGguYWJzKGV2YWxBIC0gYikgPCAxMCkKKyAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8IDIw
KQogICAgICAgICBwcmludCgiUEFTUyAiICsgYSArICIgaXMgYXJvdW5kICIgKyBiICwgImdyZWVu
IikKICAgICBlbHNlCiAgICAgICAgIHByaW50KCJGQUlMICIgKyBhICsgIiBpcyBub3QgYXJvdW5k
ICIgKyBiICsgIiAoYWN0dWFsOiAiICsgZXZhbEEgKyAiKSIsICJyZWQiKTsKQEAgLTM1LDYgKzM1
LDcgQEAgY3R4LnNjYWxlKDIsIDIpOwogY3R4LnNoYWRvd09mZnNldFggPSAxMDA7CiBjdHguc2hh
ZG93T2Zmc2V0WSA9IDEwMDsKIGN0eC5zdHJva2VTdHlsZSA9ICdyZ2JhKDAsIDAsIDI1NSwgMSkn
OworY3R4LmxpbmVXaWR0aCA9IDU7CiAKIGN0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwg
MCwgMS4wKSc7CiBjdHguYmVnaW5QYXRoKCk7CkBAIC03Niw3OSArNzcsNzkgQEAgY3R4LnN0cm9r
ZSgpOwogdmFyIGQ7IC8vIGltYWdlRGF0YS5kYXRhCiAKIC8vIFZlcmlmeSBzb2xpZCBzaGFkb3cu
Ci1kID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDIwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0
SW1hZ2VEYXRhKDI1MCwgMjAwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7
CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRC
ZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCAyOTUsIDEsIDEp
LmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzMDAsIDI5MCwgMSwgMSkuZGF0YTsKIHNob3Vs
ZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
Ml0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VE
YXRhKDIwMSwgMjk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyNTAs
IDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywg
JzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwog
CiAvLyBWZXJpZnkgc29saWQgYWxwaGEgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAw
LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDQwNSwgMSwgMSku
ZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwog
c2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAot
ZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldElt
YWdlRGF0YSgyMDEsIDUwMCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwog
c2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVB
cm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTksIDEs
IDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzMDAsIDQ5OSwgMSwgMSkuZGF0YTsKIHNo
b3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUo
J2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAogLy8gVmVyaWZ5
IGJsdXJyeSBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgzOTQsIDIwOCwgMSwgMSkuZGF0
YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQwNCwgMjEwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUo
J2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScs
ICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcyMCcpOworc2hvdWxkQmVBcm91bmQoJ2Rb
M10nLCAnMTQ5Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwMywgMzAxLCAxLCAxKS5kYXRh
OworZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA1LCAyNTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgn
ZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywg
JzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzIyJyk7CitzaG91bGRCZUFyb3VuZCgnZFsz
XScsICcxMTYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA0LCAyNTAsIDEsIDEpLmRhdGE7
CitkID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDIwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdk
WzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAn
MCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjgnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNd
JywgJzExNScpOwogCiAvLyBWZXJpZnkgYmx1cnJ5IGFscGhhIHNoYWRvdy4KLWQgPSBjdHguZ2V0
SW1hZ2VEYXRhKDQwNSwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA1
LCA0NTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdk
WzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNd
JywgJzIyJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICc3MCcpOwogCi1kID0gY3R4LmdldElt
YWdlRGF0YSg0MTUsIDQ5NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwNSwg
NDUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsx
XScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScs
ICcxNScpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzAnKTsKIAotZCA9IGN0eC5nZXRJbWFn
ZURhdGEoNDUwLCA1MDQsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDQw
NSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0n
LCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAn
MTcnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzY5Jyk7CiAKIHZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0
LXRlc3RzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5qcyBiL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFk
b3cuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY3ZjI0NAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMt
dHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuanMKQEAgLTAsMCArMSwxMzMgQEAKK2Rlc2NyaXB0
aW9uKCJFbnN1cmUgY29ycmVjdCBiZWhhdmlvciBvZiBjYW52YXMgd2l0aCBmaWxsUmVjdCtzaGFk
b3cgYWZ0ZXIgdHJhbnNsYXRpb24rcm90YXRpb24rc2NhbGluZy4gQSBibHVlIGFuZCByZWQgY2hl
Y2tlcmVkIHBhdHRlcm4gc2hvdWxkIGJlIGRpc3BsYXllZC4iKTsKKworZnVuY3Rpb24gcHJpbnQo
bWVzc2FnZSwgY29sb3IpCit7CisgICAgdmFyIHBhcmFncmFwaCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgIHBhcmFncmFwaC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgcGFyYWdyYXBoLnN0eWxlLmZvbnRGYW1pbHkgPSAibW9u
b3NwYWNlIjsKKyAgICBpZiAoY29sb3IpCisgICAgICAgIHBhcmFncmFwaC5zdHlsZS5jb2xvciA9
IGNvbG9yOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hp
bGQocGFyYWdyYXBoKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBcm91bmQoYSwgYikKK3sKKyAg
ICB2YXIgZXZhbEE7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbEEgPSBldmFsKGEpOworICAgIH0g
Y2F0Y2goZSkgeworICAgICAgICBldmFsQSA9IGU7CisgICAgfQorCisgICAgaWYgKE1hdGguYWJz
KGV2YWxBIC0gYikgPCAxMCkKKyAgICAgICAgcHJpbnQoIlBBU1MgIiArIGEgKyAiIGlzIGFyb3Vu
ZCAiICsgYiAsICJncmVlbiIpCisgICAgZWxzZQorICAgICAgICBwcmludCgiRkFJTCAiICsgYSAr
ICIgaXMgbm90IGFyb3VuZCAiICsgYiArICIgKGFjdHVhbDogIiArIGV2YWxBICsgIikiLCAicmVk
Iik7Cit9CisKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsK
K2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTsKK2NhbnZhcy5zZXRBdHRyaWJ1dGUo
J3dpZHRoJywgJzYwMCcpOworY2FudmFzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgJzYwMCcpOwor
dmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworCitjdHguZmlsbFN0eWxlID0gJ3Jn
YmEoMCwgMCwgMjU1LCAxLjApJzsKK2N0eC5zaGFkb3dPZmZzZXRYID0gMTAwOworY3R4LnNoYWRv
d09mZnNldFkgPSAxMDA7CisKK2N0eC50cmFuc2xhdGUoLTEwMCwgLTEwMCk7CitjdHgucm90YXRl
KE1hdGguUEkvMik7CitjdHguc2NhbGUoMiwgMik7CisKK2N0eC5zaGFkb3dDb2xvciA9ICdyZ2Jh
KDI1NSwgMCwgMCwgMS4wKSc7CitjdHguZmlsbFJlY3QoMTAwLCAtMTUwLCA1MCwgNTApOworCitj
dHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDAuNSknOworY3R4LmZpbGxSZWN0KDIw
MCwgLTE1MCwgNTAsIDUwKTsKKworY3R4LnNoYWRvd0JsdXIgPSA1OworY3R4LnNoYWRvd0NvbG9y
ID0gJ3JnYmEoMjU1LCAwLCAwLCAxLjApJzsKK2N0eC5maWxsUmVjdCgxMDAsIC0yNTAsIDUwLCA1
MCk7CisKK2N0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwgMC41KSc7CitjdHguZmls
bFJlY3QoMjAwLCAtMjUwLCA1MCwgNTApOworCit2YXIgZDsgLy8gaW1hZ2VEYXRhLmRhdGEKKwor
Ly8gVmVyaWZ5IHNvbGlkIHNoYWRvdy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjA1LCAx
LCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcw
Jyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZSgnZFszXScsICcyNTUnKTsKKwor
ZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCAyOTgsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFsw
XScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAn
KTsKK3Nob3VsZEJlKCdkWzNdJywgJzI1NScpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEs
IDI5OCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2Rb
MV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmUoJ2RbM10nLCAnMjU1
Jyk7CisKKy8vIFZlcmlmeSBzb2xpZCBhbHBoYSBzaGFkb3cuCitkID0gY3R4LmdldEltYWdlRGF0
YSgyMDEsIDQwMSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxk
QmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQo
J2RbM10nLCAnMTI3Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDUwLCAxLCAxKS5k
YXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7Citz
aG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMjcnKTsKKwor
ZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTgsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFsw
XScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAn
KTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzEyNycpOworCisvLyBWZXJpZnkgYmx1cnJ5IHNo
YWRvdy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDM5OSwgMjA1LCAxLCAxKS5kYXRhOworc2hvdWxk
QmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsy
XScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMDYnKTsKKworZCA9IGN0eC5nZXRJ
bWFnZURhdGEoNTAwLCAyMDUsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsK
K3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJl
QXJvdW5kKCdkWzNdJywgJzEwNicpOworCitkID0gY3R4LmdldEltYWdlRGF0YSg0OTksIDI5OSwg
MSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAn
MCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnODMn
KTsKKworLy8gVmVyaWZ5IGJsdXJyeSBhbHBoYSBzaGFkb3cuCitkID0gY3R4LmdldEltYWdlRGF0
YSgzOTgsIDQwNSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxk
QmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQo
J2RbM10nLCAnMzYnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoNDA1LCA1MDEsIDEsIDEpLmRh
dGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3No
b3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzM2Jyk7CisKK2Qg
PSBjdHguZ2V0SW1hZ2VEYXRhKDQwNSwgNTAxLCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0n
LCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7
CitzaG91bGRCZUFyb3VuZCgnZFszXScsICczNicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggZGZiNWI3NC4uY2Q0MzI0NiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTEwMjUsNiArMTAyNSw3IEBAIGVkaXRpbmcv
dW5zdXBwb3J0ZWQtY29udGVudC90YWJsZS10eXBlLWJlZm9yZS5odG1sCiBmYXN0L2NhbnZhcy9j
YW52YXMtYmctem9vbS5odG1sCiBmYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRhLmh0bWwK
IGZhc3QvY2FudmFzL2NhbnZhcy1ncmFkaWVudC1hZGRTdG9wLWVycm9yLmh0bWwKK2Zhc3QvY2Fu
dmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5odG1sCiBmYXN0L2NhbnZhcy9j
YW52YXMtem9vbS5odG1sCiBmYXN0L2Nzcy9jc3MxX2ZvcndhcmRfY29tcGF0aWJsZV9wYXJzaW5n
Lmh0bWwKIGZhc3QvY3NzL2ludmFsaWQtcGVyY2VudGFnZS1wcm9wZXJ0eS5odG1sCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLWZp
bGxQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFz
dC9jYW52YXMvY2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1NzIxNzguLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3ct
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotRW5zdXJlIGNvcnJl
Y3QgYmVoYXZpb3Igb2YgY2FudmFzIHdpdGggcGF0aCBmaWxsICsgc2hhZG93IGFmdGVyIHNjYWxp
bmcuIEEgYmx1ZSBhbmQgcmVkIGNoZWNrZXJlZCBwYXR0ZXJuIHNob3VsZCBiZSBkaXNwbGF5ZWQu
Ci0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNT
IGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMjU1LiBXYXMg
MTkxLgotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1G
QUlMIGRbM10gc2hvdWxkIGJlIDI1NS4gV2FzIDE5MS4KLVBBU1MgZFswXSBpcyAyNTUKLVBBU1Mg
ZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIHNob3VsZCBiZSAyNTUuIFdhcyAx
NDMuCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLUZB
SUwgZFszXSBpcyBub3QgYXJvdW5kIDc2IChhY3R1YWw6IDU3KQotUEFTUyBkWzBdIGlzIDI1NQot
UEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1GQUlMIGRbM10gaXMgbm90IGFyb3VuZCA3
NiAoYWN0dWFsOiA1NykKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRb
Ml0gaXMgMAotRkFJTCBkWzNdIGlzIG5vdCBhcm91bmQgNzYgKGFjdHVhbDogNTcpCi1QQVNTIGRb
MF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBh
cm91bmQgODMKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMg
MAotUEFTUyBkWzNdIGlzIGFyb3VuZCA4MwotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlz
IDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDUzCi1QQVNTIGRbMF0gaXMg
MjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQg
MjQKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFT
UyBkWzNdIGlzIGFyb3VuZCAyNAotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBB
U1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDI0Ci1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1maWxsUmVjdC1zaGFkb3ctZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1z
Y2FsZS1maWxsUmVjdC1zaGFkb3ctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyMjhkNWZjLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9m
YXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLUVuc3VyZSBjb3JyZWN0IGJlaGF2aW9yIG9mIGNh
bnZhcyB3aXRoIGZpbGxSZWN0K3NoYWRvdyBhZnRlciBzY2FsaW5nLiBBIGJsdWUgYW5kIHJlZCBj
aGVja2VyZWQgcGF0dGVybiBzaG91bGQgYmUgZGlzcGxheWVkLgotCi1PbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCi0KLQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsy
XSBpcyAwCi1GQUlMIGRbM10gc2hvdWxkIGJlIDI1NS4gV2FzIDE5MS4KLVBBU1MgZFswXSBpcyAy
NTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIHNob3VsZCBiZSAy
NTUuIFdhcyAxOTEuCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJd
IGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMjU1LiBXYXMgMTQzLgotUEFTUyBkWzBdIGlzIDI1
NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1GQUlMIGRbM10gaXMgbm90IGFyb3Vu
ZCA3NiAoYWN0dWFsOiA1NykKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNT
IGRbMl0gaXMgMAotRkFJTCBkWzNdIGlzIG5vdCBhcm91bmQgNzYgKGFjdHVhbDogNTcpCi1QQVNT
IGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBp
cyBub3QgYXJvdW5kIDc2IChhY3R1YWw6IDU3KQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFd
IGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDgzCi1QQVNTIGRbMF0g
aXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91
bmQgODMKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAot
UEFTUyBkWzNdIGlzIGFyb3VuZCA1MwotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAK
LVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDI0Ci1QQVNTIGRbMF0gaXMgMjU1
Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjQK
LVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFTUyBk
WzNdIGlzIGFyb3VuZCAyNAotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNU
IENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2Nh
bnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNo
YWRvdy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmZGRiMDku
LjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZh
cy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSw1NyArMCwwIEBACi1FbnN1cmUgY29ycmVjdCBiZWhhdmlvciBvZiBjYW52YXMgd2l0aCBwYXRo
IHN0cm9rZSArIHNoYWRvdyBhZnRlciBzY2FsaW5nLiBBIGJsdWUgYW5kIHJlZCBjaGVja2VyZWQg
cGF0dGVybiBzaG91bGQgYmUgZGlzcGxheWVkLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
Ci0KLQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1G
QUlMIGRbM10gc2hvdWxkIGJlIDI1NS4gV2FzIDEyMy4KLVBBU1MgZFswXSBpcyAyNTUKLVBBU1Mg
ZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIHNob3VsZCBiZSAyNTUuIFdhcyA5
MC4KLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJ
TCBkWzNdIHNob3VsZCBiZSAyNTUuIFdhcyAxNjIuCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRb
MV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBpcyBub3QgYXJvdW5kIDc2IChhY3R1
YWw6IDM3KQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAw
Ci1GQUlMIGRbM10gaXMgbm90IGFyb3VuZCA3NiAoYWN0dWFsOiAyNykKLVBBU1MgZFswXSBpcyAy
NTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIGlzIG5vdCBhcm91
bmQgNzYgKGFjdHVhbDogMjcpCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFT
UyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjAKLVBBU1MgZFswXSBpcyAyNTUKLVBB
U1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMgotUEFT
UyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10g
aXMgYXJvdW5kIDI4Ci1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJd
IGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjIKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsx
XSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAxNQotUEFTUyBkWzBd
IGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJv
dW5kIDE3Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUK
LQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAyMGVhZTk4Li41MGUwZjA2IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEwLTEyLTE2ICBIZWxkZXIgQ29y
cmVpYSAgPGhlbGRlckBzZW5jaGEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtRdF0gQ2FudmFzIHNoYWRvdyBvZmZzZXQgc2hvdWxkIG5vdCBi
ZSBhZmZlY3RlZCBieSBhbnkgdHJhbnNmb3JtYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNDIyCisKKyAgICAgICAgT24gYSBjYW52YXMgY29u
dGV4dCwgc2hhZG93cyBhcmUgY3VycmVudGx5IGFmZmVjdGVkIGJ5IGFsbAorICAgICAgICB0cmFu
c2Zvcm1hdGlvbnMgZXhjZXB0IHNjYWxpbmcuIEFjY29yZGluZyB0byB0aGUgc3BlYzoKKyAgICAg
ICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0
aXBhZ2UvdGhlLWNhbnZhcy1lbGVtZW50Lmh0bWwjc2hhZG93cworCisgICAgICAgICJUaGUgc2hh
ZG93T2Zmc2V0WCBhbmQgc2hhZG93T2Zmc2V0WSBhdHRyaWJ1dGVzIHNwZWNpZnkgdGhlIGRpc3Rh
bmNlCisgICAgICAgIHRoYXQgdGhlIHNoYWRvdyB3aWxsIGJlIG9mZnNldCBpbiB0aGUgcG9zaXRp
dmUgaG9yaXpvbnRhbCBhbmQgcG9zaXRpdmUKKyAgICAgICAgdmVydGljYWwgZGlzdGFuY2UgcmVz
cGVjdGl2ZWx5LiBUaGVpciB2YWx1ZXMgYXJlIGluIGNvb3JkaW5hdGUgc3BhY2UKKyAgICAgICAg
dW5pdHMuIFRoZXkgYXJlIG5vdCBhZmZlY3RlZCBieSB0aGUgY3VycmVudCB0cmFuc2Zvcm1hdGlv
biBtYXRyaXguIgorCisgICAgICAgIE5PVEU6IHRoaXMgYXBwbGllcyBvbmx5IHRvIGNhbnZhcywg
bm90IHRvIGJveCBzaGFkb3dzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL2NhbnZhcy10
cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Db250ZXh0U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6
OkNvbnRleHRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6Y2FsY3Vs
YXRlTGF5ZXJCb3VuZGluZ1JlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRl
eHRTaGFkb3cuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OnNldFNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6Om9m
ZnNldCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6ZW5kU2hhZG93TGF5ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om11c3RVc2VDb250ZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyk6
CisKIDIwMTAtMTItMTYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b250ZXh0U2hhZG93LmNwcAppbmRleCA4N2ExYzVjLi5iNWFlNTkyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgQ29udGV4
dFNoYWRvdzo6Q29udGV4dFNoYWRvdygpCiAgICAgOiBtX3R5cGUoTm9TaGFkb3cpCiAgICAgLCBt
X2JsdXJEaXN0YW5jZSgwKQogICAgICwgbV9sYXllckNvbnRleHQoMCkKKyAgICAsIG1fc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMoZmFsc2UpCiB7CiB9CiAKQEAgLTQ5LDYgKzUwLDcgQEAgQ29udGV4
dFNoYWRvdzo6Q29udGV4dFNoYWRvdyhjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHJhZGl1cywg
Y29uc3QgRmxvYXRTaXplJgogICAgICwgbV9ibHVyRGlzdGFuY2Uocm91bmQocmFkaXVzKSkKICAg
ICAsIG1fb2Zmc2V0KG9mZnNldCkKICAgICAsIG1fbGF5ZXJDb250ZXh0KDApCisgICAgLCBtX3No
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZhbHNlKQogewogICAgIC8vIFNlZSBjb21tZW50cyBpbiBo
dHRwOi8vd2Via2l0Lm9yZy9iLzQwNzkzLCBpdCBzZWVtcyBzZW5zaWJsZQogICAgIC8vIHRvIGZv
bGxvdyBTa2lhJ3MgbGltaXQgb2YgMTI4IHBpeGVscyBvZiBibHVyIHJhZGl1cwpAQCAtMTQ5LDYg
KzE1MSw2NyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmJsdXJMYXllckltYWdlKHVuc2lnbmVkIGNo
YXIqIGltYWdlRGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZQogICAgIH0KIH0KIAorI2lmIFBMQVRG
T1JNKFFUKQorSW50UmVjdCBDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVj
dChjb25zdCBQbGF0Zm9ybUNvbnRleHQgcCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNv
bnN0IEludFJlY3QmIGNsaXBSZWN0KQoreworICAgIC8vIENhbGN1bGF0ZSB0aGUgZGVzdGluYXRp
b24gb2YgdGhlIGJsdXJyZWQgYW5kL29yIHRyYW5zZm9ybWVkIGxheWVyLgorICAgIEZsb2F0UmVj
dCBsYXllckZsb2F0UmVjdDsKKyAgICBmbG9hdCBpbmZsYXRpb24gPSAwOworCisgICAgY29uc3Qg
UVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBwLT50cmFuc2Zvcm0oKTsKKyAgICBpZiAobV9zaGFkb3dz
SWdub3JlVHJhbnNmb3JtcyAmJiAhdHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkgeworICAgICAgICBR
UG9seWdvbkYgdHJhbnNmb3JtZWRQb2x5Z29uID0gdHJhbnNmb3JtLm1hcChRUG9seWdvbkYobGF5
ZXJBcmVhKSk7CisgICAgICAgIHRyYW5zZm9ybWVkUG9seWdvbi50cmFuc2xhdGUob2Zmc2V0KCkp
OworICAgICAgICBsYXllckZsb2F0UmVjdCA9IHRyYW5zZm9ybS5pbnZlcnRlZCgpLm1hcCh0cmFu
c2Zvcm1lZFBvbHlnb24pLmJvdW5kaW5nUmVjdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGxh
eWVyRmxvYXRSZWN0ID0gbGF5ZXJBcmVhOworICAgICAgICBsYXllckZsb2F0UmVjdC5tb3ZlKG1f
b2Zmc2V0KTsKKyAgICB9CisKKyAgICAvLyBXZSBleHBhbmQgdGhlIGFyZWEgYnkgdGhlIGJsdXIg
cmFkaXVzIHRvIGdpdmUgZXh0cmEgc3BhY2UgZm9yIHRoZSBibHVyIHRyYW5zaXRpb24uCisgICAg
aWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7CisgICAgICAgIGxheWVyRmxvYXRSZWN0LmluZmxh
dGUobV9ibHVyRGlzdGFuY2UpOworICAgICAgICBpbmZsYXRpb24gKz0gbV9ibHVyRGlzdGFuY2U7
CisgICAgfQorCisgICAgRmxvYXRSZWN0IHVuY2xpcHBlZExheWVyUmVjdCA9IGxheWVyRmxvYXRS
ZWN0OworCisgICAgaWYgKCFjbGlwUmVjdC5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KGxheWVy
RmxvYXRSZWN0KSkpIHsKKyAgICAgICAgLy8gTm8gbmVlZCB0byBoYXZlIHRoZSBidWZmZXIgbGFy
Z2VyIHRoYW4gdGhlIGNsaXAuCisgICAgICAgIGxheWVyRmxvYXRSZWN0LmludGVyc2VjdChjbGlw
UmVjdCk7CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIHRvdGFsbHkgb3V0c2lkZSB0aGUgY2xpcCBy
ZWdpb24sIHdlIGFyZW4ndCBwYWludGluZyBhdCBhbGwuCisgICAgICAgIGlmIChsYXllckZsb2F0
UmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gSW50UmVjdCgwLCAwLCAwLCAwKTsK
KworICAgICAgICAvLyBXZSBhZGp1c3QgYWdhaW4gYmVjYXVzZSB0aGUgcGl4ZWxzIGF0IHRoZSBi
b3JkZXJzIGFyZSBzdGlsbAorICAgICAgICAvLyBwb3RlbnRpYWxseSBhZmZlY3RlZCBieSB0aGUg
cGl4ZWxzIG91dHNpZGUgdGhlIGJ1ZmZlci4KKyAgICAgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hh
ZG93KSB7CisgICAgICAgICAgICBsYXllckZsb2F0UmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNl
KTsKKyAgICAgICAgICAgIHVuY2xpcHBlZExheWVyUmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNl
KTsKKyAgICAgICAgICAgIGluZmxhdGlvbiArPSBtX2JsdXJEaXN0YW5jZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGNvbnN0IGludCBmcmFtZVNpemUgPSBpbmZsYXRpb24gKiAyOworICAgIG1f
c291cmNlUmVjdCA9IEludFJlY3QoMCwgMCwgbGF5ZXJBcmVhLndpZHRoKCkgKyBmcmFtZVNpemUs
IGxheWVyQXJlYS5oZWlnaHQoKSArIGZyYW1lU2l6ZSk7CisKKyAgICBtX2xheWVyT3JpZ2luID0g
RmxvYXRQb2ludChsYXllckZsb2F0UmVjdC54KCksIGxheWVyRmxvYXRSZWN0LnkoKSk7CisKKyAg
ICBjb25zdCBGbG9hdFBvaW50IG1fdW5jbGlwcGVkTGF5ZXJPcmlnaW4gPSBGbG9hdFBvaW50KHVu
Y2xpcHBlZExheWVyUmVjdC54KCksIHVuY2xpcHBlZExheWVyUmVjdC55KCkpOworICAgIGNvbnN0
IEZsb2F0U2l6ZSBjbGlwcGVkT3V0ID0gbV91bmNsaXBwZWRMYXllck9yaWdpbiAtIG1fbGF5ZXJP
cmlnaW47CisKKyAgICAvLyBTZXQgdGhlIG9yaWdpbiBhcyB0aGUgdG9wIGxlZnQgY29ybmVyIG9m
IHRoZSBzY3JhdGNoIGltYWdlLCBvciwgaW4gY2FzZSB0aGVyZSdzIGEgY2xpcHBlZAorICAgIC8v
IG91dCByZWdpb24sIHNldCB0aGUgb3JpZ2luIGFjY29yZGluZ2x5IHRvIHRoZSBmdWxsIGJvdW5k
aW5nIHJlY3QncyB0b3AtbGVmdCBjb3JuZXIuCisgICAgY29uc3QgZmxvYXQgdHJhbnNsYXRpb25Y
ID0gLWxheWVyQXJlYS54KCkgKyBpbmZsYXRpb24gLSBmYWJzZihjbGlwcGVkT3V0LndpZHRoKCkp
OworICAgIGNvbnN0IGZsb2F0IHRyYW5zbGF0aW9uWSA9IC1sYXllckFyZWEueSgpICsgaW5mbGF0
aW9uIC0gZmFic2YoY2xpcHBlZE91dC5oZWlnaHQoKSk7CisgICAgbV9sYXllckNvbnRleHRUcmFu
c2xhdGlvbiA9IEZsb2F0UG9pbnQodHJhbnNsYXRpb25YLCB0cmFuc2xhdGlvblkpOworCisgICAg
cmV0dXJuIGVuY2xvc2luZ0ludFJlY3QobGF5ZXJGbG9hdFJlY3QpOworfQorI2VuZGlmCisKKyNp
ZiBQTEFURk9STShDQUlSTykKIHZvaWQgQ29udGV4dFNoYWRvdzo6Y2FsY3VsYXRlTGF5ZXJCb3Vu
ZGluZ1JlY3QoY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBS
ZWN0KQogewogICAgIC8vIENhbGN1bGF0ZSB0aGUgZGVzdGluYXRpb24gb2YgdGhlIGJsdXJyZWQg
bGF5ZXIuCkBAIC0xNzMsNSArMjM2LDYgQEAgdm9pZCBDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVM
YXllckJvdW5kaW5nUmVjdChjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QKICAgICAg
ICAgICAgIG1fbGF5ZXJSZWN0LmluZmxhdGUobV90eXBlID09IEJsdXJTaGFkb3cgPyBtX2JsdXJE
aXN0YW5jZSA6IDApOwogICAgIH0KIH0KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCmluZGV4IGZhNzc4YWYu
LmQ3NGIxZGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNo
YWRvdy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCkBA
IC0xMDYsMjcgKzEwNiw0MyBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1Db250ZXh0IGJlZ2luU2hh
ZG93TGF5ZXIoUGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSk7CiAg
ICAgdm9pZCBlbmRTaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQpOwogICAgIHN0YXRpYyB2b2lk
IHB1cmdlU2NyYXRjaEJ1ZmZlcigpOworICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMoYm9vbCBlbmFibGUpIHsgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IGVuYWJsZTsgfQor
ICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSBjb25zdCB7IHJldHVybiBtX3NoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zOyB9CiAjaWYgUExBVEZPUk0oQ0FJUk8pCiAgICAgdm9pZCBkcmF3
UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3Qs
IGNvbnN0IEludFNpemUmIHRvcExlZnRSYWRpdXMgPSBJbnRTaXplKCksIGNvbnN0IEludFNpemUm
IHRvcFJpZ2h0UmFkaXVzID0gSW50U2l6ZSgpLCBjb25zdCBJbnRTaXplJiBib3R0b21MZWZ0UmFk
aXVzID0gSW50U2l6ZSgpLCBjb25zdCBJbnRTaXplJiBib3R0b21SaWdodFJhZGl1cyA9IEludFNp
emUoKSk7CiAjZW5kaWYKLQogI2lmIFBMQVRGT1JNKFFUKQotICAgIFFQb2ludEYgb2Zmc2V0KCkg
eyByZXR1cm4gUVBvaW50RihtX29mZnNldC53aWR0aCgpLCBtX29mZnNldC5oZWlnaHQoKSk7IH0K
KyAgICBRUG9pbnRGIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIFFQb2ludEYobV9vZmZzZXQud2lk
dGgoKSwgbV9vZmZzZXQuaGVpZ2h0KCkpOyB9CiAjZW5kaWYKIAogCiBwcml2YXRlOgotICAgIElu
dFJlY3QgbV9sYXllclJlY3Q7CisgICAgLy8gQnVmZmVyIHRvIHdoZXJlIHRoZSB0ZW1wb3Jhcnkg
c2hhZG93IHdpbGwgYmUgZHJhd24gdG8uCiAgICAgUGxhdGZvcm1JbWFnZSBtX2xheWVySW1hZ2U7
CisgICAgLy8gQ29udGV4dCB1c2VkIHRvIHBhaW50IHRoZSBzaGFkb3cgdG8gdGhlIGxheWVyIGlt
YWdlLgogICAgIFBsYXRmb3JtQ29udGV4dCBtX2xheWVyQ29udGV4dDsKLQorI2lmIFBMQVRGT1JN
KFFUKQorICAgIC8vIFN1Yi1yZWN0IG9mIG1fbGF5ZXJJbWFnZSB0aGF0IGNvbnRhaW5zIHRoZSBz
aGFkb3cgcGl4ZWxzLgorICAgIEZsb2F0UmVjdCBtX3NvdXJjZVJlY3Q7CisgICAgLy8gVG9wLWxl
ZnQgY29ybmVyIG9mIHRoZSAocG9zc2libHkgY2xpcHBlZCkgYm91bmRpbmcgcmVjdCB0byBkcmF3
IHRoZSBzaGFkb3cgdG8uCisgICAgRmxvYXRQb2ludCBtX2xheWVyT3JpZ2luOworICAgIC8vIFRy
YW5zbGF0aW9uIHRvIGFwcGx5IHRvIG1fbGF5ZXJDb250ZXh0IGZvciB0aGUgc2hhZG93IHRvIGJl
IGNvcnJlY3RseSBjbGlwcGVkLgorICAgIEZsb2F0UG9pbnQgbV9sYXllckNvbnRleHRUcmFuc2xh
dGlvbjsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKENBSVJPKQorICAgIC8vIEVuY2xvc2luZyBpbnQg
cmVjdCB3aGVyZSBzaGFkb3cgbmVlZHMgdG8gYmUgZHJhd24gdG8gdXNpbmcgdGhlIGxheWVyIGNv
bnRleHQuCisgICAgSW50UmVjdCBtX2xheWVyUmVjdDsKICAgICAvLyBVc2VkIGZvciByZWZlcmVu
Y2Ugd2hlbiBjYW52YXMgc2NhbGUoeCx5KSB3YXMgY2FsbGVkLgogICAgIEZsb2F0UmVjdCBtX3Vu
c2NhbGVkTGF5ZXJSZWN0OworI2VuZGlmCisgICAgYm9vbCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zOwogCiAgICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50
U2l6ZSYgaW1hZ2VTaXplLCBpbnQgc3RyaWRlKTsKLSAgICB2b2lkIGNhbGN1bGF0ZUxheWVyQm91
bmRpbmdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlw
UmVjdCk7CiAjaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgdm9pZCBjYWxjdWxhdGVMYXllckJvdW5k
aW5nUmVjdChjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJl
Y3QpOwogICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKFBsYXRmb3JtQ29udGV4
dCBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBJbnRTaXplJiB0b3BM
ZWZ0UmFkaXVzLCBjb25zdCBJbnRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgSW50U2l6ZSYg
Ym90dG9tTGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMsIGZsb2F0
IGFscGhhKTsKKyNlbHNlCisgICAgSW50UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChj
b25zdCBQbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJ
bnRSZWN0JiBjbGlwUmVjdCk7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNwcAppbmRleCBmN2M3MGY2Li4xMzJlMTI5IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3Bw
CkBAIC0xMTQsMjUgKzExNCwyMiBAQCBQbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRvdzo6YmVn
aW5TaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCwgY29uc3QgRmxvYXRSZQogICAgIGVsc2UK
ICAgICAgICAgY2xpcFJlY3QgPSBwLT50cmFuc2Zvcm0oKS5pbnZlcnRlZCgpLm1hcFJlY3QocC0+
d2luZG93KCkpOwogCi0gICAgbV91bnNjYWxlZExheWVyUmVjdCA9IGxheWVyQXJlYTsKLSAgICBj
YWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChsYXllckFyZWEsIEludFJlY3QoY2xpcFJlY3QueCgp
LCBjbGlwUmVjdC55KCksIGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKSk7Cisg
ICAgLy8gU2V0IG1fbGF5ZXJPcmlnaW4sIG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24sIG1fc291
cmNlUmVjdC4KKyAgICBJbnRSZWN0IGNsaXAoY2xpcFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNs
aXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKKyAgICBJbnRSZWN0IGxheWVyUmVj
dCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KHAsIGxheWVyQXJlYSwgY2xpcCk7CiAKICAg
ICAvLyBEb24ndCBwYWludCBpZiB3ZSBhcmUgdG90YWxseSBvdXRzaWRlIHRoZSBjbGlwIHJlZ2lv
bi4KLSAgICBpZiAobV9sYXllclJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChsYXllclJlY3QuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFNoYWRvd0J1ZmZlciogc2hhZG93QnVm
ZmVyID0gc2NyYXRjaFNoYWRvd0J1ZmZlcigpOwotICAgIFFJbWFnZSogc2hhZG93SW1hZ2UgPSBz
aGFkb3dCdWZmZXItPnNjcmF0Y2hJbWFnZShtX2xheWVyUmVjdC5zaXplKCkpOworICAgIFFJbWFn
ZSogc2hhZG93SW1hZ2UgPSBzaGFkb3dCdWZmZXItPnNjcmF0Y2hJbWFnZShsYXllclJlY3Quc2l6
ZSgpKTsKICAgICBtX2xheWVySW1hZ2UgPSBRSW1hZ2UoKnNoYWRvd0ltYWdlKTsKIAogICAgIG1f
bGF5ZXJDb250ZXh0ID0gbmV3IFFQYWludGVyOwogICAgIG1fbGF5ZXJDb250ZXh0LT5iZWdpbigm
bV9sYXllckltYWdlKTsKICAgICBtX2xheWVyQ29udGV4dC0+c2V0Rm9udChwLT5mb250KCkpOwot
ICAgIG1fbGF5ZXJDb250ZXh0LT50cmFuc2xhdGUobV9vZmZzZXQud2lkdGgoKSwgbV9vZmZzZXQu
aGVpZ2h0KCkpOwotCi0gICAgLy8gVGhlIG9yaWdpbiBpcyBub3cgdGhlIHRvcCBsZWZ0IGNvcm5l
ciBvZiB0aGUgc2NyYXRjaCBpbWFnZS4KLSAgICBtX2xheWVyQ29udGV4dC0+dHJhbnNsYXRlKC1t
X2xheWVyUmVjdC54KCksIC1tX2xheWVyUmVjdC55KCkpOwotCisgICAgbV9sYXllckNvbnRleHQt
PnRyYW5zbGF0ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKICAgICByZXR1cm4gbV9sYXll
ckNvbnRleHQ7CiB9CiAKQEAgLTE1NSwxMyArMTUyLDcgQEAgdm9pZCBDb250ZXh0U2hhZG93Ojpl
bmRTaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCkKICAgICAgICAgcC5lbmQoKTsKICAgICB9
CiAKLSAgICBjb25zdCBRVHJhbnNmb3JtIHRyYW5zZm9ybSA9IHAtPnRyYW5zZm9ybSgpOwotICAg
IGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5nKCkpIHsKLSAgICAgICAgcXJlYWwgeCA9IG1fdW5zY2Fs
ZWRMYXllclJlY3QueCgpICsgbV9vZmZzZXQud2lkdGgoKSAgLyB0cmFuc2Zvcm0ubTExKCkgLSBt
X2JsdXJEaXN0YW5jZTsKLSAgICAgICAgcXJlYWwgeSA9IG1fdW5zY2FsZWRMYXllclJlY3QueSgp
ICsgbV9vZmZzZXQuaGVpZ2h0KCkgLyB0cmFuc2Zvcm0ubTIyKCkgLSBtX2JsdXJEaXN0YW5jZTsK
LSAgICAgICAgcC0+ZHJhd0ltYWdlKFFQb2ludEYoeCwgeSksIG1fbGF5ZXJJbWFnZSk7Ci0gICAg
fSBlbHNlCi0gICAgICAgIHAtPmRyYXdJbWFnZShtX2xheWVyUmVjdC50b3BMZWZ0KCksIG1fbGF5
ZXJJbWFnZSk7CisgICAgcC0+ZHJhd0ltYWdlKG1fbGF5ZXJPcmlnaW4sIG1fbGF5ZXJJbWFnZSwg
bV9zb3VyY2VSZWN0KTsKIAogICAgIHNjcmF0Y2hTaGFkb3dCdWZmZXIoKS0+c2NoZWR1bGVQdXJn
ZSgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dFF0LmNwcAppbmRleCAyZjhhOTFmLi5kNWU3Y2NkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtNTMsNyArNTMsNiBA
QAogI2luY2x1ZGUgIlRyYW5zcGFyZW5jeUxheWVyLmgiCiAKICNpbmNsdWRlIDxRQnJ1c2g+Ci0j
aW5jbHVkZSA8UURlYnVnPgogI2luY2x1ZGUgPFFHcmFkaWVudD4KICNpbmNsdWRlIDxRUGFpbnRE
ZXZpY2U+CiAjaW5jbHVkZSA8UVBhaW50RW5naW5lPgpAQCAtMTc1LDYgKzE3NCwyMiBAQCBzdGF0
aWMgaW5saW5lIFF0OjpGaWxsUnVsZSB0b1F0RmlsbFJ1bGUoV2luZFJ1bGUgcnVsZSkKICAgICBy
ZXR1cm4gUXQ6Ok9kZEV2ZW5GaWxsOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgbXVzdFVzZUNv
bnRleHRTaGFkb3coUVBhaW50ZXIqIHBhaW50ZXIsIENvbnRleHRTaGFkb3cqIHNoYWRvdykKK3sK
KyAgICBpZiAoc2hhZG93LT5tX3R5cGUgPT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdykKKyAg
ICAgICAgLy8gV2UgY2FuJ3QgYXZvaWQgQ29udGV4dFNoYWRvdywgc2luY2UgdGhlIHNoYWRvdyBo
YXMgYmx1ci4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFzaGFkb3ctPnNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zKCkpCisgICAgICAgIC8vIFdlIGNhbiBhdm9pZCBDb250ZXh0U2hhZG93
IGFuZCBvcHRpbWl6ZSwgc2luY2Ugd2UncmUgbm90IGRyYXdpbmcgb24gYSBjYW52YXMgYW5kIGJv
eAorICAgICAgICAvLyBzaGFkb3dzIGFyZSBhZmZlY3RlZCBieSB0aGUgdHJhbnNmb3JtYXRpb24g
bWF0cml4LgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHBhaW50ZXItPnRyYW5zZm9y
bSgpLmlzSWRlbnRpdHkoKSkKKyAgICAgICAgLy8gV2UgY2FuIGF2b2lkIENvbnRleHRTaGFkb3cs
IHNpbmNlIHRoZXJlIGFyZSBubyB0cmFuc2Zvcm1hdGlvbnMgdG8gYXBwbHkgdG8gdGhlIGNhbnZh
cy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIE90aGVyd2lzZSwgbm8gY2hhbmNlIGF2
b2lkaW5nIENvbnRleHRTaGFkb3cuCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGNsYXNzIEdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6
CiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFFQYWludGVyKiwgY29uc3QgUUNv
bG9yJiBpbml0aWFsU29saWRDb2xvcik7CkBAIC01MDYsMzMgKzUyMSwyMCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlmIChtX2RhdGEt
Pmhhc1NoYWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRT
aGFkb3coKTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6OkJs
dXJTaGFkb3cKLSAgICAgICAgICAgICYmICFtX3N0YXRlLmZpbGxQYXR0ZXJuICYmICFtX3N0YXRl
LmZpbGxHcmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRv
dykgfHwgbV9zdGF0ZS5maWxsUGF0dGVybiB8fCBtX3N0YXRlLmZpbGxHcmFkaWVudCkKICAgICAg
ICAgewotICAgICAgICAgICAgUVBvaW50RiBvZmZzZXQgPSBzaGFkb3ctPm9mZnNldCgpOwotICAg
ICAgICAgICAgY29uc3QgUVRyYW5zZm9ybSYgdHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0g
ICAgICAgICAgICBpZiAodHJhbnNmb3JtLmlzU2NhbGluZygpKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gSWYgc2NhbGluZyBpcyByZXF1aXJlZCwgZmluZCB0aGUgbmV3IGNvb3JkIGZvciBzaGFkb3cg
b3JpZ2luLAotICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIHJlbGF0aXZlIG9mZnNldCB0
byBpdHMgc2hhcGUgaXMga2VwdC4KLSAgICAgICAgICAgICAgICBRUG9pbnRGIHRyYW5zbGF0ZWRP
ZmZzZXQob2Zmc2V0LngoKSAvIHRyYW5zZm9ybS5tMTEoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LnkoKSAvIHRyYW5zZm9ybS5tMjIoKSk7Ci0gICAg
ICAgICAgICAgICAgcGxhdGZvcm1QYXRoLnRyYW5zbGF0ZSh0cmFuc2xhdGVkT2Zmc2V0KTsKLSAg
ICAgICAgICAgICAgICBwLT5maWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihzaGFkb3ctPm1f
Y29sb3IpKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKC10cmFuc2xh
dGVkT2Zmc2V0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcC0+dHJh
bnNsYXRlKG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGxhdGZvcm1QYXRo
LCBRQ29sb3Ioc2hhZG93LT5tX2NvbG9yKSk7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRl
KC1vZmZzZXQpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
UVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcGxh
dGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKSk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFp
bnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9k
ZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hh
ZG93UGFpbnRlci0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3IobV9kYXRhLT5zaGFkb3cu
bV9jb2xvcikpOwogICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAg
ICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBRUG9pbnRGIG9mZnNl
dCA9IHNoYWRvdy0+b2Zmc2V0KCk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsK
KyAgICAgICAgICAgIHAtPmZpbGxQYXRoKHBsYXRmb3JtUGF0aCwgUUNvbG9yKHNoYWRvdy0+bV9j
b2xvcikpOworICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZzZXQpOwogICAgICAgICB9Ci0K
ICAgICB9CiAgICAgaWYgKG1fc3RhdGUuZmlsbFBhdHRlcm4pIHsKICAgICAgICAgQWZmaW5lVHJh
bnNmb3JtIGFmZmluZTsKQEAgLTU1NywyOCArNTU5LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlmIChtX2RhdGEtPmhhc1NoYWRv
dygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFkb3coKTsK
LQotICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRv
dwotICAgICAgICAgICAgJiYgIW1fc3RhdGUuc3Ryb2tlUGF0dGVybiAmJiAhbV9zdGF0ZS5zdHJv
a2VHcmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykg
fHwgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuIHx8IG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIFFQZW4gc2hhZG93UGVuKHBlbik7Ci0gICAgICAgICAgICBzaGFk
b3dQZW4uc2V0Q29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xvcik7Ci0gICAgICAgICAgICBRUG9p
bnRGIG9mZnNldCA9IHNoYWRvdy0+b2Zmc2V0KCk7Ci0gICAgICAgICAgICBjb25zdCBRVHJhbnNm
b3JtJiB0cmFuc2Zvcm0gPSBwLT50cmFuc2Zvcm0oKTsKLSAgICAgICAgICAgIGlmICh0cmFuc2Zv
cm0uaXNTY2FsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBJZiBzY2FsaW5nIGlzIHJlcXVp
cmVkLCBmaW5kIHRoZSBuZXcgY29vcmQgZm9yIHNoYWRvdyBvcmlnaW4sCi0gICAgICAgICAgICAg
ICAgLy8gc28gdGhhdCB0aGUgcmVsYXRpdmUgb2Zmc2V0IHRvIGl0cyBzaGFwZSBpcyBrZXB0Lgot
ICAgICAgICAgICAgICAgIFFQb2ludEYgdHJhbnNsYXRlZE9mZnNldChvZmZzZXQueCgpIC8gdHJh
bnNmb3JtLm0xMSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
ZmZzZXQueSgpIC8gdHJhbnNmb3JtLm0yMigpKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBh
dGgudHJhbnNsYXRlKHRyYW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgICAgIHAtPnN0cm9r
ZVBhdGgocGxhdGZvcm1QYXRoLCBzaGFkb3dQZW4pOwotICAgICAgICAgICAgICAgIHBsYXRmb3Jt
UGF0aC50cmFuc2xhdGUoLXRyYW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBw
LT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgc2hhZG93UGVuKTsKLSAgICAgICAgICAgICAgICBw
LT50cmFuc2xhdGUoLW9mZnNldCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBGbG9hdFJlY3QgYm91bmRpbmdSZWN0ID0gcGxhdGZvcm1QYXRoLmNvbnRyb2xQ
b2ludFJlY3QoKTsKICAgICAgICAgICAgIGJvdW5kaW5nUmVjdC5pbmZsYXRlKHBlbi5taXRlckxp
bWl0KCkgKyBwZW4ud2lkdGhGKCkpOwogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50
ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgYm91bmRpbmdSZWN0KTsKQEAgLTU4Nyw2
ICs1NjksMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYg
cGF0aCkKICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zdHJva2VQYXRoKHBsYXRmb3Jt
UGF0aCwgcGVuKTsKICAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwog
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUVBlbiBzaGFkb3dQ
ZW4ocGVuKTsKKyAgICAgICAgICAgIHNoYWRvd1Blbi5zZXRDb2xvcihtX2RhdGEtPnNoYWRvdy5t
X2NvbG9yKTsKKyAgICAgICAgICAgIFFQb2ludEYgb2Zmc2V0ID0gc2hhZG93LT5vZmZzZXQoKTsK
KyAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShvZmZzZXQpOworICAgICAgICAgICAgcC0+c3Ryb2tl
UGF0aChwbGF0Zm9ybVBhdGgsIHNoYWRvd1Blbik7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUo
LW9mZnNldCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTcwNiw3ICs2OTUsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICBw
LT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwgYnJ1c2gpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGlmIChtX2RhdGEtPmhhc1NoYWRvdygpKSB7Ci0gICAgICAgICAgICBpZiAoc2hhZG93LT5tX3R5
cGUgPT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdykgeworICAgICAgICAgICAgaWYgKG11c3RV
c2VDb250ZXh0U2hhZG93KHAsIHNoYWRvdykpIHsKICAgICAgICAgICAgICAgICBRUGFpbnRlciog
c2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVj
dCk7CiAgICAgICAgICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAg
ICAgICAgc2hhZG93UGFpbnRlci0+c2V0T3BhY2l0eShzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93
LT5tX2NvbG9yLmFscGhhKCkpIC8gMjU1KTsKQEAgLTcxNCwxNyArNzAzLDExIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgICAg
ICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBTb2xpZCByZWN0YW5nbGUg
ZmlsbCB3aXRoIG5vIGJsdXIgc2hhZG93IGNhbiBiZSBkb25lIGZhc3RlcgotICAgICAgICAgICAg
ICAgIC8vIHdpdGhvdXQgdXNpbmcgdGhlIHNoYWRvdyBsYXllciBhdCBhbGwuCisgICAgICAgICAg
ICAgICAgLy8gU29saWQgcmVjdGFuZ2xlIGZpbGwgd2l0aCBubyBibHVyIHNoYWRvdyBvciB0cmFu
c2Zvcm1hdGlvbnMgYXBwbGllZCBjYW4gYmUgZG9uZQorICAgICAgICAgICAgICAgIC8vIGZhc3Rl
ciB3aXRob3V0IHVzaW5nIHRoZSBzaGFkb3cgbGF5ZXIgYXQgYWxsLgogICAgICAgICAgICAgICAg
IFFDb2xvciBzaGFkb3dDb2xvciA9IHNoYWRvdy0+bV9jb2xvcjsKICAgICAgICAgICAgICAgICBz
aGFkb3dDb2xvci5zZXRBbHBoYUYoc2hhZG93Q29sb3IuYWxwaGFGKCkgKiBwLT5icnVzaCgpLmNv
bG9yKCkuYWxwaGFGKCkpOwotICAgICAgICAgICAgICAgIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5z
Zm9ybSA9IHAtPnRyYW5zZm9ybSgpOwotICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNT
Y2FsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJl
Y3QudHJhbnNsYXRlZChzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5vZmZzZXQoKS54KCkpIC8g
dHJhbnNmb3JtLm0xMSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHFyZWFsPihzaGFkb3ctPm9mZnNldCgpLnko
KSAgLyB0cmFuc2Zvcm0ubTIyKCkpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2hhZG93Q29sb3IpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAg
ICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHNoYWRvdy0+b2Zmc2V0KCkp
LCBzaGFkb3dDb2xvcik7CisgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJl
Y3QudHJhbnNsYXRlZChzaGFkb3ctPm9mZnNldCgpKSwgc2hhZG93Q29sb3IpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKQEAgLTc0NCwxOCArNzI3LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwg
Q29sb3JTCiAKICAgICBpZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAgICAgICBDb250ZXh0
U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7Ci0KLSAgICAgICAgaWYgKHNoYWRvdy0+
bV90eXBlICE9IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cpIHsKLSAgICAgICAgICAgIC8vIFdl
IGRvIG5vdCBuZWVkIGFueSBsYXllciBmb3Igc2ltcGxlIHNoYWRvdy4KLSAgICAgICAgICAgIHAt
PmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNo
YWRvdy0+bV9jb2xvcik7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtdXN0VXNlQ29u
dGV4dFNoYWRvdyhwLCBzaGFkb3cpKSB7CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFp
bnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAgICAg
ICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50
ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7
CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3Qs
IHNoYWRvdy0+bV9jb2xvcik7CiAgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXll
cihwKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQo
KSksIHNoYWRvdy0+bV9jb2xvcik7CiAgICAgfQogCiAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXpl
ZFJlY3QsIG1fZGF0YS0+c29saWRDb2xvcik7CkBAIC03NzEsMTkgKzc1MSwxNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IEludFNpemUmIHRvcExlZgogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CiAgICAgaWYg
KG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0g
Y29udGV4dFNoYWRvdygpOwotCi0gICAgICAgIGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0
U2hhZG93OjpCbHVyU2hhZG93KSB7Ci0gICAgICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCBhbnkg
bGF5ZXIgZm9yIHNpbXBsZSBzaGFkb3cuCi0gICAgICAgICAgICBwLT50cmFuc2xhdGUobV9kYXRh
LT5zaGFkb3cub2Zmc2V0KCkpOwotICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGF0aC5wbGF0Zm9y
bVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKLSAgICAgICAgICAgIHAt
PnRyYW5zbGF0ZSgtbV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOwotICAgICAgICB9IGVsc2Ugewor
ICAgICAgICBpZiAobXVzdFVzZUNvbnRleHRTaGFkb3cocCwgc2hhZG93KSkgewogICAgICAgICAg
ICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwg
cmVjdCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAg
IHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25N
b2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFBhdGgocGF0
aC5wbGF0Zm9ybVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKICAgICAg
ICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG1fZGF0YS0+c2hhZG93Lm9m
ZnNldCgpKTsKKyAgICAgICAgICAgIHAtPmZpbGxQYXRoKHBhdGgucGxhdGZvcm1QYXRoKCksIFFD
b2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9yKSk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUo
LW1fZGF0YS0+c2hhZG93Lm9mZnNldCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBwLT5maWxs
UGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3IoY29sb3IpKTsKQEAgLTk1Myw5ICs5MzEs
MTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgYmx1ciwgY29uc3QKICAgICAgICAgLy8gV2UgZmxpcCB0aGUgaGVp
Z2h0IHNpbmNlIENHIGFuZCBIVE1MNSBDYW52YXMgaGF2ZSBvcHBvc2l0ZSBZIGF4aXMKICAgICAg
ICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUoc2l6ZS53aWR0aCgpLCAtc2l6ZS5o
ZWlnaHQoKSk7CiAgICAgICAgIG1fZGF0YS0+c2hhZG93ID0gQ29udGV4dFNoYWRvdyhjb2xvciwg
Ymx1ciwgRmxvYXRTaXplKHNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpKTsKLSAgICB9IGVs
c2UgeworICAgIH0gZWxzZQogICAgICAgICBtX2RhdGEtPnNoYWRvdyA9IENvbnRleHRTaGFkb3co
Y29sb3IsIGJsdXIsIEZsb2F0U2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKLSAg
ICB9CisKKyAgICBtX2RhdGEtPnNoYWRvdy5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX3N0
YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmNsZWFyUGxhdGZvcm1TaGFkb3coKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76913</attachid>
            <date>2010-12-17 14:41:11 -0800</date>
            <delta_ts>2010-12-17 15:20:16 -0800</delta_ts>
            <desc>Cross-platform version of the previous patch</desc>
            <filename>bug-50422-20101217144113.patch</filename>
            <type>text/plain</type>
            <size>48730</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5NDE0NmRjMzU1MjJhNDk0Yjc1MmRhMmMwMDFlNmM0NzU3ZWJiZWJiLi4wNGE4ODQ2
MTJmOWI2OWIxYjE3OWNlMTNjYWEyYTk2MjcwNmIyY2EwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAK
KzIwMTAtMTItMTcgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBDYW52YXMgc2hh
ZG93IG9mZnNldCBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IGFueSB0cmFuc2Zvcm1hdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0MjIKKwor
ICAgICAgICBPbiBhIGNhbnZhcyBjb250ZXh0LCBzaGFkb3dzIGFyZSBjdXJyZW50bHkgYWZmZWN0
ZWQgYnkgYWxsCisgICAgICAgIHRyYW5zZm9ybWF0aW9ucyBleGNlcHQgc2NhbGluZy4gQWNjb3Jk
aW5nIHRvIHRoZSBzcGVjOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2Vi
LWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbCNzaGFk
b3dzCisKKyAgICAgICAgIlRoZSBzaGFkb3dPZmZzZXRYIGFuZCBzaGFkb3dPZmZzZXRZIGF0dHJp
YnV0ZXMgc3BlY2lmeSB0aGUgZGlzdGFuY2UKKyAgICAgICAgdGhhdCB0aGUgc2hhZG93IHdpbGwg
YmUgb2Zmc2V0IGluIHRoZSBwb3NpdGl2ZSBob3Jpem9udGFsIGFuZCBwb3NpdGl2ZQorICAgICAg
ICB2ZXJ0aWNhbCBkaXN0YW5jZSByZXNwZWN0aXZlbHkuIFRoZWlyIHZhbHVlcyBhcmUgaW4gY29v
cmRpbmF0ZSBzcGFjZQorICAgICAgICB1bml0cy4gVGhleSBhcmUgbm90IGFmZmVjdGVkIGJ5IHRo
ZSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4iCisKKyAgICAgICAgTk9URTogdGhpcyBh
cHBsaWVzIG9ubHkgdG8gY2FudmFzLCBub3QgdG8gYm94IHNoYWRvd3MuCisKKyAgICAgICAgQWRk
IG5ldyB0ZXN0IHRvIGVuc3VyZSB0aGF0IHNoYWRvd3MgYXJlIGNvcnJlY3RseSB0cmFuc2Zvcm1l
ZCBrZWVwaW5nCisgICAgICAgIHRoZSByZWxhdGl2ZSBvZmZzZXQgdG8gdGhlIHNoYXBlLgorCisg
ICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVj
dGVkLnR4dDogU2VlIHN0cm9rZVBhdGggYmVsb3cuCisgICAgICAgICogZmFzdC9jYW52YXMvY2Fu
dmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUt
ZmlsbFBhdGgtc2hhZG93LmpzOgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzOgorICAgICAgICAqIGZhc3QvY2FudmFzL3Nj
cmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanM6IE5vdyB1c2luZwor
ICAgICAgICAgIGEgbGluZVdpZHRoID4gMSB0byBtYWtlIGl0IGVhc2llciB0byB0ZXN0IGFuZCBt
b3JlIGZhaXIgYW1vbmcgYWxsCisgICAgICAgICAgcG9ydHMsIHNpbmNlIHRoZXJlIGNhbiBiZSBk
aWZmZXJlbnQgdHJhbnNmb3JtYXRpb24gc21vb3RobmVzcyBvcgorICAgICAgICAgIGFsaWFzaW5n
IHNldHRpbmdzLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJh
bnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuanM6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9Ta2lwcGVkOiBHVEsgcG9ydCBuZWVkcyB0byBpbXBsZW1lbnQgdGhpcyBmZWF0dXJlLgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hh
ZG93LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9j
YW52YXMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQ
YXRoLXNoYWRvdy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisKIDIwMTAtMTItMTcgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBH
b21lcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1z
dHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9j
YW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0CmluZGV4IGU1NjIwMWY3
Mzg3ZTQ2MmY3OTIyNWU2NWY4YTM0MDFlMmUzMjM2ZmUuLmEzMzdjNGI2M2ZmMWRkZmVlZDQ0ODhl
MzUxZmZkYWUxNDllYTg1MTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4
dApAQCAtMzAsMjcgKzMwLDI3IEBAIFBBU1MgZFszXSBpcyBhcm91bmQgNzYKIFBBU1MgZFswXSBp
cyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3Vu
ZCAyMAorUEFTUyBkWzNdIGlzIGFyb3VuZCAxNDkKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsx
XSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMgorUEFTUyBkWzNd
IGlzIGFyb3VuZCAxMTYKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRb
Ml0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyOAorUEFTUyBkWzNdIGlzIGFyb3VuZCAxMTUK
IFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBk
WzNdIGlzIGFyb3VuZCAyMgorUEFTUyBkWzNdIGlzIGFyb3VuZCA3MAogUEFTUyBkWzBdIGlzIDI1
NQogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDE1
CitQQVNTIGRbM10gaXMgYXJvdW5kIDcwCiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMg
MAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMTcKK1BBU1MgZFszXSBpcyBh
cm91bmQgNjkKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVU
RQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMt
ZmlsbFJlY3Qtc2hhZG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJh
bnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZmM0ZTlhODQ0ZTdiZjY3
ZmZlZTVlYmY1OGQ1MGRiZjQyYTc4YTkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWwKQEAgLTAs
MCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2Ny
aXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcwpp
bmRleCAwNTI4NmY1MzI4YjVlNTk5ODMyNDM1MDc1ZGJiZjFlYzE3ZTVhMjA3Li44YjA1ZjNjMjk1
OWE4ZmI4ZGM3OTdhOTFiYTA0OTM0ZTQ0MDFiMTM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcwor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZp
bGxQYXRoLXNoYWRvdy5qcwpAQCAtMTksNyArMTksNyBAQCBmdW5jdGlvbiBzaG91bGRCZUFyb3Vu
ZChhLCBiKQogICAgICAgICBldmFsQSA9IGU7CiAgICAgfQogCi0gICAgaWYgKE1hdGguYWJzKGV2
YWxBIC0gYikgPCAxMCkKKyAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8IDIwKQogICAgICAg
ICBwcmludCgiUEFTUyAiICsgYSArICIgaXMgYXJvdW5kICIgKyBiICwgImdyZWVuIikKICAgICBl
bHNlCiAgICAgICAgIHByaW50KCJGQUlMICIgKyBhICsgIiBpcyBub3QgYXJvdW5kICIgKyBiICsg
IiAoYWN0dWFsOiAiICsgZXZhbEEgKyAiKSIsICJyZWQiKTsKQEAgLTM1LDcgKzM1LDYgQEAgY3R4
LnNjYWxlKDIsIDIpOwogY3R4LnNoYWRvd09mZnNldFggPSAxMDA7CiBjdHguc2hhZG93T2Zmc2V0
WSA9IDEwMDsKIGN0eC5maWxsU3R5bGUgPSAncmdiYSgwLCAwLCAyNTUsIDEpJzsKLS8vY3R4Lmxp
bmVXaWR0aCA9IDMwOwogCiBjdHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDEuMCkn
OwogY3R4LmJlZ2luUGF0aCgpOwpAQCAtNzMsMzggKzcyLDM4IEBAIGN0eC5maWxsKCk7CiB2YXIg
ZDsgLy8gaW1hZ2VEYXRhLmRhdGEKIAogLy8gVmVyaWZ5IHNvbGlkIHNoYWRvdy4KLWQgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDIwMCwgMjA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEo
MjAxLCAyMDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJl
KCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywg
JzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDI5NSwgMSwgMSkuZGF0YTsKK2Qg
PSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgMjk1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0n
LCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7
CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAy
OTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDI5OCwgMSwgMSkuZGF0
YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKIC8vIFZlcmlm
eSBzb2xpZCBhbHBoYSBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDQwNSwgMSwg
MSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwgNDA1LCAxLCAxKS5kYXRhOwogc2hv
dWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgn
ZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4Lmdl
dEltYWdlRGF0YSgyOTksIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5
OCwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgn
ZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFsz
XScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OSwgMSwgMSkuZGF0YTsK
K2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2Rb
MF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcw
Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2Fu
dmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Nj
cmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzCmluZGV4IDk5YTFlNTk0
YmQ1OWY3MzY3ZjNjMzBkZWExNjUxZTMyZjNkNGRlNmUuLjU2ZDRhMzQyZDZmYzM0ZDhmMDQ4YWRm
M2ZmZTgyMjI5OGE4NjM0MDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Nj
cmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93
LmpzCkBAIC0xOSw3ICsxOSw3IEBAIGZ1bmN0aW9uIHNob3VsZEJlQXJvdW5kKGEsIGIpCiAgICAg
ICAgIGV2YWxBID0gZTsKICAgICB9CiAKLSAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8IDEw
KQorICAgIGlmIChNYXRoLmFicyhldmFsQSAtIGIpIDwgMjApCiAgICAgICAgIHByaW50KCJQQVNT
ICIgKyBhICsgIiBpcyBhcm91bmQgIiArIGIgLCAiZ3JlZW4iKQogICAgIGVsc2UKICAgICAgICAg
cHJpbnQoIkZBSUwgIiArIGEgKyAiIGlzIG5vdCBhcm91bmQgIiArIGIgKyAiIChhY3R1YWw6ICIg
KyBldmFsQSArICIpIiwgInJlZCIpOwpAQCAtNTIsMzggKzUyLDM4IEBAIGN0eC5maWxsUmVjdCgx
NTAsIDE1MCwgNTAsIDUwKTsKIHZhciBkOyAvLyBpbWFnZURhdGEuZGF0YQogCiAvLyBWZXJpZnkg
c29saWQgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyMDUsIDEsIDEpLmRhdGE7
CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDIwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdk
WzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAn
MCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5
OSwgMjk1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCAyOTgsIDEsIDEp
LmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsK
IHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0g
Y3R4LmdldEltYWdlRGF0YSgyMDAsIDI5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VE
YXRhKDIwMSwgMjk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91
bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFsz
XScsICcyNTUnKTsKIAogLy8gVmVyaWZ5IHNvbGlkIGFscGhhIHNoYWRvdy4KLWQgPSBjdHguZ2V0
SW1hZ2VEYXRhKDIwMCwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAx
LCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdk
WzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNd
JywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDA1LCAxLCAxKS5kYXRhOwor
ZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFsw
XScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAn
KTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRh
KDIwNSwgNDk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTgsIDEs
IDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAn
KTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9rZVBh
dGgtc2hhZG93LmpzCmluZGV4IDUxOThkOTQxNTE3ZGFiOTJiYzI4OTFjODM3NGYzNWJhMWE4OWQ1
NzkuLjYwMDIxNzVhYjNmNmIyMWZmMmE3ZWRkY2ViYTY0NzBhY2U2YmEzODggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tl
UGF0aC1zaGFkb3cuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3Rz
L2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy5qcwpAQCAtMTksNyArMTksNyBAQCBmdW5j
dGlvbiBzaG91bGRCZUFyb3VuZChhLCBiKQogICAgICAgICBldmFsQSA9IGU7CiAgICAgfQogCi0g
ICAgaWYgKE1hdGguYWJzKGV2YWxBIC0gYikgPCAxMCkKKyAgICBpZiAoTWF0aC5hYnMoZXZhbEEg
LSBiKSA8IDIwKQogICAgICAgICBwcmludCgiUEFTUyAiICsgYSArICIgaXMgYXJvdW5kICIgKyBi
ICwgImdyZWVuIikKICAgICBlbHNlCiAgICAgICAgIHByaW50KCJGQUlMICIgKyBhICsgIiBpcyBu
b3QgYXJvdW5kICIgKyBiICsgIiAoYWN0dWFsOiAiICsgZXZhbEEgKyAiKSIsICJyZWQiKTsKQEAg
LTM1LDYgKzM1LDcgQEAgY3R4LnNjYWxlKDIsIDIpOwogY3R4LnNoYWRvd09mZnNldFggPSAxMDA7
CiBjdHguc2hhZG93T2Zmc2V0WSA9IDEwMDsKIGN0eC5zdHJva2VTdHlsZSA9ICdyZ2JhKDAsIDAs
IDI1NSwgMSknOworY3R4LmxpbmVXaWR0aCA9IDU7CiAKIGN0eC5zaGFkb3dDb2xvciA9ICdyZ2Jh
KDI1NSwgMCwgMCwgMS4wKSc7CiBjdHguYmVnaW5QYXRoKCk7CkBAIC03Niw3OSArNzcsNzkgQEAg
Y3R4LnN0cm9rZSgpOwogdmFyIGQ7IC8vIGltYWdlRGF0YS5kYXRhCiAKIC8vIFZlcmlmeSBzb2xp
ZCBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDIwNSwgMSwgMSkuZGF0YTsKK2Qg
PSBjdHguZ2V0SW1hZ2VEYXRhKDI1MCwgMjAwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0n
LCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7
CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCAy
OTUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzMDAsIDI5MCwgMSwgMSkuZGF0
YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDIwMSwgMjk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEo
MjAwLCAyNTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJl
KCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywg
JzI1NScpOwogCiAvLyBWZXJpZnkgc29saWQgYWxwaGEgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFn
ZURhdGEoMjAwLCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDQw
NSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0n
LCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAn
NzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCA0MDUsIDEsIDEpLmRhdGE7CitkID0g
Y3R4LmdldEltYWdlRGF0YSgyMDEsIDUwMCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywg
JzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwog
c2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1
LCA0OTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzMDAsIDQ5OSwgMSwgMSku
ZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwog
c2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAog
Ly8gVmVyaWZ5IGJsdXJyeSBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgzOTQsIDIwOCwg
MSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQwNCwgMjEwLCAxLCAxKS5kYXRhOwog
c2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRC
ZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcyMCcpOworc2hvdWxkQmVB
cm91bmQoJ2RbM10nLCAnMTQ5Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwMywgMzAxLCAx
LCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA1LCAyNTAsIDEsIDEpLmRhdGE7CiBz
aG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJl
KCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzIyJyk7CitzaG91bGRCZUFy
b3VuZCgnZFszXScsICcxMTYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA0LCAyNTAsIDEs
IDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDIwNSwgMSwgMSkuZGF0YTsKIHNo
b3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUo
J2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjgnKTsKK3Nob3VsZEJlQXJv
dW5kKCdkWzNdJywgJzExNScpOwogCiAvLyBWZXJpZnkgYmx1cnJ5IGFscGhhIHNoYWRvdy4KLWQg
PSBjdHguZ2V0SW1hZ2VEYXRhKDQwNSwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFn
ZURhdGEoNTA1LCA0NTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNo
b3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJv
dW5kKCdkWzNdJywgJzIyJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICc3MCcpOwogCi1kID0g
Y3R4LmdldEltYWdlRGF0YSg0MTUsIDQ5NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VE
YXRhKDUwNSwgNDUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91
bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3Vu
ZCgnZFszXScsICcxNScpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzAnKTsKIAotZCA9IGN0
eC5nZXRJbWFnZURhdGEoNDUwLCA1MDQsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0
YSg0NTAsIDQwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxk
QmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQo
J2RbM10nLCAnMTcnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzY5Jyk7CiAKIHZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5qcyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxs
UmVjdC1zaGFkb3cuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTA5MGI0NzBlOTI1NmM2NGQxMmRjYWE1YTkxMzA0
NzIzMTZhNWU5YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Nj
cmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuanMKQEAgLTAsMCAr
MSwxMzMgQEAKK2Rlc2NyaXB0aW9uKCJFbnN1cmUgY29ycmVjdCBiZWhhdmlvciBvZiBjYW52YXMg
d2l0aCBmaWxsUmVjdCtzaGFkb3cgYWZ0ZXIgdHJhbnNsYXRpb24rcm90YXRpb24rc2NhbGluZy4g
QSBibHVlIGFuZCByZWQgY2hlY2tlcmVkIHBhdHRlcm4gc2hvdWxkIGJlIGRpc3BsYXllZC4iKTsK
KworZnVuY3Rpb24gcHJpbnQobWVzc2FnZSwgY29sb3IpCit7CisgICAgdmFyIHBhcmFncmFwaCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHBhcmFncmFwaC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgcGFyYWdyYXBoLnN0eWxl
LmZvbnRGYW1pbHkgPSAibW9ub3NwYWNlIjsKKyAgICBpZiAoY29sb3IpCisgICAgICAgIHBhcmFn
cmFwaC5zdHlsZS5jb2xvciA9IGNvbG9yOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIikuYXBwZW5kQ2hpbGQocGFyYWdyYXBoKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVB
cm91bmQoYSwgYikKK3sKKyAgICB2YXIgZXZhbEE7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbEEg
PSBldmFsKGEpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBldmFsQSA9IGU7CisgICAgfQor
CisgICAgaWYgKE1hdGguYWJzKGV2YWxBIC0gYikgPCAxMCkKKyAgICAgICAgcHJpbnQoIlBBU1Mg
IiArIGEgKyAiIGlzIGFyb3VuZCAiICsgYiAsICJncmVlbiIpCisgICAgZWxzZQorICAgICAgICBw
cmludCgiRkFJTCAiICsgYSArICIgaXMgbm90IGFyb3VuZCAiICsgYiArICIgKGFjdHVhbDogIiAr
IGV2YWxBICsgIikiLCAicmVkIik7Cit9CisKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdjYW52YXMnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTsKK2Nh
bnZhcy5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgJzYwMCcpOworY2FudmFzLnNldEF0dHJpYnV0ZSgn
aGVpZ2h0JywgJzYwMCcpOwordmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworCitj
dHguZmlsbFN0eWxlID0gJ3JnYmEoMCwgMCwgMjU1LCAxLjApJzsKK2N0eC5zaGFkb3dPZmZzZXRY
ID0gMTAwOworY3R4LnNoYWRvd09mZnNldFkgPSAxMDA7CisKK2N0eC50cmFuc2xhdGUoLTEwMCwg
LTEwMCk7CitjdHgucm90YXRlKE1hdGguUEkvMik7CitjdHguc2NhbGUoMiwgMik7CisKK2N0eC5z
aGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwgMS4wKSc7CitjdHguZmlsbFJlY3QoMTAwLCAt
MTUwLCA1MCwgNTApOworCitjdHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDAuNSkn
OworY3R4LmZpbGxSZWN0KDIwMCwgLTE1MCwgNTAsIDUwKTsKKworY3R4LnNoYWRvd0JsdXIgPSA1
OworY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMjU1LCAwLCAwLCAxLjApJzsKK2N0eC5maWxsUmVj
dCgxMDAsIC0yNTAsIDUwLCA1MCk7CisKK2N0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwg
MCwgMC41KSc7CitjdHguZmlsbFJlY3QoMjAwLCAtMjUwLCA1MCwgNTApOworCit2YXIgZDsgLy8g
aW1hZ2VEYXRhLmRhdGEKKworLy8gVmVyaWZ5IHNvbGlkIHNoYWRvdy4KK2QgPSBjdHguZ2V0SW1h
Z2VEYXRhKDIwMSwgMjA1LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7Citz
aG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZSgn
ZFszXScsICcyNTUnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCAyOTgsIDEsIDEpLmRh
dGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3No
b3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzNdJywgJzI1NScpOworCitkID0gY3R4
LmdldEltYWdlRGF0YSgyMDEsIDI5OCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1
NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hv
dWxkQmUoJ2RbM10nLCAnMjU1Jyk7CisKKy8vIFZlcmlmeSBzb2xpZCBhbHBoYSBzaGFkb3cuCitk
ID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDQwMSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBd
JywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcp
Oworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTI3Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRh
KDI5OCwgNDUwLCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRC
ZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgn
ZFszXScsICcxMjcnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTgsIDEsIDEpLmRh
dGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3No
b3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzEyNycpOworCisv
LyBWZXJpZnkgYmx1cnJ5IHNoYWRvdy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDM5OSwgMjA1LCAx
LCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcw
Jyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMDYn
KTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoNTAwLCAyMDUsIDEsIDEpLmRhdGE7CitzaG91bGRC
ZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJd
JywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzEwNicpOworCitkID0gY3R4LmdldElt
YWdlRGF0YSg0OTksIDI5OSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOwor
c2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVB
cm91bmQoJ2RbM10nLCAnODMnKTsKKworLy8gVmVyaWZ5IGJsdXJyeSBhbHBoYSBzaGFkb3cuCitk
ID0gY3R4LmdldEltYWdlRGF0YSgzOTgsIDQwNSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBd
JywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcp
Oworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMzYnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEo
NDA1LCA1MDEsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJl
KCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdk
WzNdJywgJzM2Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQwNSwgNTAxLCAxLCAxKS5kYXRh
Oworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91
bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICczNicpOworCit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXgg
ZTcxNWEzNzAyZjIyMTkyNzllNTMyYmRmZDg0Y2QwNjU0ODFjNDA0MC4uMGIwOTQwNWIyYjMxMTA3
NTY4NTA4YzUxZWU2NzRjYjkxZDQ1ZmU0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAg
LTEwMjUsNiArMTAyNSw3IEBAIGVkaXRpbmcvdW5zdXBwb3J0ZWQtY29udGVudC90YWJsZS10eXBl
LWJlZm9yZS5odG1sCiBmYXN0L2NhbnZhcy9jYW52YXMtYmctem9vbS5odG1sCiBmYXN0L2NhbnZh
cy9jYW52YXMtZ2V0SW1hZ2VEYXRhLmh0bWwKIGZhc3QvY2FudmFzL2NhbnZhcy1ncmFkaWVudC1h
ZGRTdG9wLWVycm9yLmh0bWwKK2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0
LXNoYWRvdy5odG1sCiBmYXN0L2NhbnZhcy9jYW52YXMtem9vbS5odG1sCiBmYXN0L2Nzcy9jc3Mx
X2ZvcndhcmRfY29tcGF0aWJsZV9wYXJzaW5nLmh0bWwKIGZhc3QvY3NzL2ludmFsaWQtcGVyY2Vu
dGFnZS1wcm9wZXJ0eS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
ZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLWZpbGxQYXRo
LXNoYWRvdy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1NzIx
Nzg0YTQwODFhM2Q2NDk0ZGNiZjkxMjU1MTRkYjc3Yjg4ZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3Qv
Y2FudmFzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNTcgKzAsMCBAQAotRW5zdXJlIGNvcnJlY3QgYmVoYXZpb3Igb2YgY2FudmFz
IHdpdGggcGF0aCBmaWxsICsgc2hhZG93IGFmdGVyIHNjYWxpbmcuIEEgYmx1ZSBhbmQgcmVkIGNo
ZWNrZXJlZCBwYXR0ZXJuIHNob3VsZCBiZSBkaXNwbGF5ZWQuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KLQotCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJd
IGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMjU1LiBXYXMgMTkxLgotUEFTUyBkWzBdIGlzIDI1
NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1GQUlMIGRbM10gc2hvdWxkIGJlIDI1
NS4gV2FzIDE5MS4KLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0g
aXMgMAotRkFJTCBkWzNdIHNob3VsZCBiZSAyNTUuIFdhcyAxNDMuCi1QQVNTIGRbMF0gaXMgMjU1
Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBpcyBub3QgYXJvdW5k
IDc2IChhY3R1YWw6IDU3KQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1Mg
ZFsyXSBpcyAwCi1GQUlMIGRbM10gaXMgbm90IGFyb3VuZCA3NiAoYWN0dWFsOiA1NykKLVBBU1Mg
ZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIGlz
IG5vdCBhcm91bmQgNzYgKGFjdHVhbDogNTcpCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0g
aXMgMAotUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgODMKLVBBU1MgZFswXSBp
cyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3Vu
ZCA4MwotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1Q
QVNTIGRbM10gaXMgYXJvdW5kIDUzCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAot
UEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjQKLVBBU1MgZFswXSBpcyAyNTUK
LVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyNAot
UEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRb
M10gaXMgYXJvdW5kIDI0Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1Qg
Q09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2Fu
dmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hh
ZG93LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZkZGIwOTc0
OWFkMTE3OTYyNGRlYWZmNTllMTAxYTNjY2Q1M2ZmZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9jYW52
YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDU3ICswLDAgQEAKLUVuc3VyZSBjb3JyZWN0IGJlaGF2aW9yIG9mIGNhbnZhcyB3
aXRoIHBhdGggc3Ryb2tlICsgc2hhZG93IGFmdGVyIHNjYWxpbmcuIEEgYmx1ZSBhbmQgcmVkIGNo
ZWNrZXJlZCBwYXR0ZXJuIHNob3VsZCBiZSBkaXNwbGF5ZWQuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KLQotCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJd
IGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMjU1LiBXYXMgMTIzLgotUEFTUyBkWzBdIGlzIDI1
NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1GQUlMIGRbM10gc2hvdWxkIGJlIDI1
NS4gV2FzIDkwLgotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBp
cyAwCi1GQUlMIGRbM10gc2hvdWxkIGJlIDI1NS4gV2FzIDE2Mi4KLVBBU1MgZFswXSBpcyAyNTUK
LVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIGlzIG5vdCBhcm91bmQg
NzYgKGFjdHVhbDogMzcpCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBk
WzJdIGlzIDAKLUZBSUwgZFszXSBpcyBub3QgYXJvdW5kIDc2IChhY3R1YWw6IDI3KQotUEFTUyBk
WzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1GQUlMIGRbM10gaXMg
bm90IGFyb3VuZCA3NiAoYWN0dWFsOiAyNykKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBp
cyAwCi1QQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMAotUEFTUyBkWzBdIGlz
IDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5k
IDIyCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLVBB
U1MgZFszXSBpcyBhcm91bmQgMjgKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1Q
QVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMgotUEFTUyBkWzBdIGlzIDI1NQot
UEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDE1Ci1Q
QVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFsz
XSBpcyBhcm91bmQgMTcKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBD
T01QTEVURQotCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDNiZGZlOWY4ZGFhNjJlMDVjYzVjZjE3OWYxNjdlOTMxNjdhOWZhZGEuLjliZDdh
YzFlNDZiNDYyMzk1MjA4OTZhNWI5MzFhNDBiMjI2MjJlMzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTAt
MTItMTcgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBDYW52YXMgc2hhZG93IG9m
ZnNldCBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IGFueSB0cmFuc2Zvcm1hdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0MjIKKworICAgICAg
ICBPbiBhIGNhbnZhcyBjb250ZXh0LCBzaGFkb3dzIGFyZSBjdXJyZW50bHkgYWZmZWN0ZWQgYnkg
YWxsCisgICAgICAgIHRyYW5zZm9ybWF0aW9ucyBleGNlcHQgc2NhbGluZy4gQWNjb3JkaW5nIHRv
IHRoZSBzcGVjOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMv
Y3VycmVudC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbCNzaGFkb3dzCisK
KyAgICAgICAgIlRoZSBzaGFkb3dPZmZzZXRYIGFuZCBzaGFkb3dPZmZzZXRZIGF0dHJpYnV0ZXMg
c3BlY2lmeSB0aGUgZGlzdGFuY2UKKyAgICAgICAgdGhhdCB0aGUgc2hhZG93IHdpbGwgYmUgb2Zm
c2V0IGluIHRoZSBwb3NpdGl2ZSBob3Jpem9udGFsIGFuZCBwb3NpdGl2ZQorICAgICAgICB2ZXJ0
aWNhbCBkaXN0YW5jZSByZXNwZWN0aXZlbHkuIFRoZWlyIHZhbHVlcyBhcmUgaW4gY29vcmRpbmF0
ZSBzcGFjZQorICAgICAgICB1bml0cy4gVGhleSBhcmUgbm90IGFmZmVjdGVkIGJ5IHRoZSBjdXJy
ZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4iCisKKyAgICAgICAgTk9URTogdGhpcyBhcHBsaWVz
IG9ubHkgdG8gY2FudmFzLCBub3QgdG8gYm94IHNoYWRvd3MuCisKKyAgICAgICAgVGVzdDogZmFz
dC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWwKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGV4dFNoYWRvdzo6Q29udGV4dFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNo
YWRvdzo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGV4dFNoYWRvdzo6c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGV4dFNoYWRvdzo6b2Zmc2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9D
b250ZXh0U2hhZG93UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6YmVn
aW5TaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjplbmRTaGFk
b3dMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bXVzdFVzZUNvbnRleHRTaGFkb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNl
dFBsYXRmb3JtU2hhZG93KToKKwogMjAxMC0xMi0xNyAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFj
bGVhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24u
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcAppbmRleCA4N2Ex
YzVjNzYzY2VjNTU2NjM0ZjJmYmFmYzY3NTk0MjllZGM1OWQxLi41ZTdhN2EwMDk2NTM2ZTRjMzEx
N2E5MTQ5N2I2YWU0ZTliMWRhYmYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbnRleHRTaGFkb3cuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
dGV4dFNoYWRvdy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJDb250ZXh0U2hhZG93LmgiCiAKKyNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBA
IC00MSw2ICs0Miw3IEBAIENvbnRleHRTaGFkb3c6OkNvbnRleHRTaGFkb3coKQogICAgIDogbV90
eXBlKE5vU2hhZG93KQogICAgICwgbV9ibHVyRGlzdGFuY2UoMCkKICAgICAsIG1fbGF5ZXJDb250
ZXh0KDApCisgICAgLCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZhbHNlKQogewogfQogCkBA
IC00OSw2ICs1MSw3IEBAIENvbnRleHRTaGFkb3c6OkNvbnRleHRTaGFkb3coY29uc3QgQ29sb3Im
IGNvbG9yLCBmbG9hdCByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYKICAgICAsIG1fYmx1ckRpc3Rh
bmNlKHJvdW5kKHJhZGl1cykpCiAgICAgLCBtX29mZnNldChvZmZzZXQpCiAgICAgLCBtX2xheWVy
Q29udGV4dCgwKQorICAgICwgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhmYWxzZSkKIHsKICAg
ICAvLyBTZWUgY29tbWVudHMgaW4gaHR0cDovL3dlYmtpdC5vcmcvYi80MDc5MywgaXQgc2VlbXMg
c2Vuc2libGUKICAgICAvLyB0byBmb2xsb3cgU2tpYSdzIGxpbWl0IG9mIDEyOCBwaXhlbHMgb2Yg
Ymx1ciByYWRpdXMKQEAgLTc3LDYgKzgwLDIzIEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6Y2xlYXIo
KQogICAgIG1fb2Zmc2V0ID0gRmxvYXRTaXplKCk7CiB9CiAKK2Jvb2wgQ29udGV4dFNoYWRvdzo6
bXVzdFVzZUNvbnRleHRTaGFkb3coUGxhdGZvcm1Db250ZXh0IGNvbnRleHQpCit7CisgICAgLy8g
V2UgY2FuJ3QgYXZvaWQgQ29udGV4dFNoYWRvdywgc2luY2UgdGhlIHNoYWRvdyBoYXMgYmx1ci4K
KyAgICBpZiAobV90eXBlID09IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIC8vIFdlIGNhbiBhdm9pZCBDb250ZXh0U2hhZG93IGFuZCBvcHRpbWl6
ZSwgc2luY2Ugd2UncmUgbm90IGRyYXdpbmcgb24gYQorICAgIC8vIGNhbnZhcyBhbmQgYm94IHNo
YWRvd3MgYXJlIGFmZmVjdGVkIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCisgICAgaWYg
KCFzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Ly8gV2UgY2FuIGF2b2lkIENvbnRleHRTaGFkb3csIHNpbmNlIHRoZXJlIGFyZSBubyB0cmFuc2Zv
cm1hdGlvbnMgdG8gYXBwbHkgdG8gdGhlIGNhbnZhcy4KKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCB0cmFuc2Zvcm0oZ2V0VHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tQ29udGV4dChjb250
ZXh0KSk7CisgICAgaWYgKHRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAvLyBPdGhlcndpc2UsIG5vIGNoYW5jZSBhdm9pZGluZyBDb250ZXh0U2hhZG93
LgorICAgIHJldHVybiB0cnVlOworfQorCiAvLyBJbnN0ZWFkIG9mIGludGVnZXIgZGl2aXNpb24s
IHdlIHVzZSAxNy4xNSBmb3IgZml4ZWQtcG9pbnQgZGl2aXNpb24uCiBzdGF0aWMgY29uc3QgaW50
IEJsdXJTdW1TaGlmdCA9IDE1OwogCkBAIC0xNDksMjkgKzE2OSw2MSBAQCB2b2lkIENvbnRleHRT
aGFkb3c6OmJsdXJMYXllckltYWdlKHVuc2lnbmVkIGNoYXIqIGltYWdlRGF0YSwgY29uc3QgSW50
U2l6ZSYgc2l6ZQogICAgIH0KIH0KIAotdm9pZCBDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXll
ckJvdW5kaW5nUmVjdChjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYg
Y2xpcFJlY3QpCitJbnRSZWN0IENvbnRleHRTaGFkb3c6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdS
ZWN0KGNvbnN0IFBsYXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVy
QXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCiB7Ci0gICAgLy8gQ2FsY3VsYXRlIHRoZSBk
ZXN0aW5hdGlvbiBvZiB0aGUgYmx1cnJlZCBsYXllci4KLSAgICBGbG9hdFJlY3QgZGVzdGluYXRp
b25SZWN0KGxheWVyQXJlYSk7Ci0gICAgZGVzdGluYXRpb25SZWN0Lm1vdmUobV9vZmZzZXQpOwot
ICAgIG1fbGF5ZXJSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChkZXN0aW5hdGlvblJlY3QpOworICAg
IC8vIENhbGN1bGF0ZSB0aGUgZGVzdGluYXRpb24gb2YgdGhlIGJsdXJyZWQgYW5kL29yIHRyYW5z
Zm9ybWVkIGxheWVyLgorICAgIEZsb2F0UmVjdCBsYXllckZsb2F0UmVjdDsKKyAgICBmbG9hdCBp
bmZsYXRpb24gPSAwOworCisgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3Jt
KGdldFRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbUNvbnRleHQoY29udGV4dCkpOworICAgIGlmICht
X3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zICYmICF0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKSB7Cisg
ICAgICAgIEZsb2F0UXVhZCB0cmFuc2Zvcm1lZFBvbHlnb24gPSB0cmFuc2Zvcm0ubWFwUXVhZChG
bG9hdFF1YWQobGF5ZXJBcmVhKSk7CisgICAgICAgIHRyYW5zZm9ybWVkUG9seWdvbi5tb3ZlKG1f
b2Zmc2V0KTsKKyAgICAgICAgbGF5ZXJGbG9hdFJlY3QgPSB0cmFuc2Zvcm0uaW52ZXJzZSgpLm1h
cFF1YWQodHJhbnNmb3JtZWRQb2x5Z29uKS5ib3VuZGluZ0JveCgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGxheWVyRmxvYXRSZWN0ID0gbGF5ZXJBcmVhOworICAgICAgICBsYXllckZsb2F0UmVj
dC5tb3ZlKG1fb2Zmc2V0KTsKKyAgICB9CiAKICAgICAvLyBXZSBleHBhbmQgdGhlIGFyZWEgYnkg
dGhlIGJsdXIgcmFkaXVzIHRvIGdpdmUgZXh0cmEgc3BhY2UgZm9yIHRoZSBibHVyIHRyYW5zaXRp
b24uCi0gICAgbV9sYXllclJlY3QuaW5mbGF0ZShtX3R5cGUgPT0gQmx1clNoYWRvdyA/IG1fYmx1
ckRpc3RhbmNlIDogMCk7CisgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7CisgICAgICAg
IGxheWVyRmxvYXRSZWN0LmluZmxhdGUobV9ibHVyRGlzdGFuY2UpOworICAgICAgICBpbmZsYXRp
b24gKz0gbV9ibHVyRGlzdGFuY2U7CisgICAgfQogCi0gICAgaWYgKCFjbGlwUmVjdC5jb250YWlu
cyhtX2xheWVyUmVjdCkpIHsKKyAgICBGbG9hdFJlY3QgdW5jbGlwcGVkTGF5ZXJSZWN0ID0gbGF5
ZXJGbG9hdFJlY3Q7CisKKyAgICBpZiAoIWNsaXBSZWN0LmNvbnRhaW5zKGVuY2xvc2luZ0ludFJl
Y3QobGF5ZXJGbG9hdFJlY3QpKSkgewogICAgICAgICAvLyBObyBuZWVkIHRvIGhhdmUgdGhlIGJ1
ZmZlciBsYXJnZXIgdGhhbiB0aGUgY2xpcC4KLSAgICAgICAgbV9sYXllclJlY3QuaW50ZXJzZWN0
KGNsaXBSZWN0KTsKKyAgICAgICAgbGF5ZXJGbG9hdFJlY3QuaW50ZXJzZWN0KGNsaXBSZWN0KTsK
IAogICAgICAgICAvLyBJZiB3ZSBhcmUgdG90YWxseSBvdXRzaWRlIHRoZSBjbGlwIHJlZ2lvbiwg
d2UgYXJlbid0IHBhaW50aW5nIGF0IGFsbC4KLSAgICAgICAgaWYgKG1fbGF5ZXJSZWN0LmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGxheWVyRmxvYXRSZWN0Lmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBJbnRSZWN0KDAsIDAsIDAsIDApOwogCiAgICAg
ICAgIC8vIFdlIGFkanVzdCBhZ2FpbiBiZWNhdXNlIHRoZSBwaXhlbHMgYXQgdGhlIGJvcmRlcnMg
YXJlIHN0aWxsCiAgICAgICAgIC8vIHBvdGVudGlhbGx5IGFmZmVjdGVkIGJ5IHRoZSBwaXhlbHMg
b3V0c2lkZSB0aGUgYnVmZmVyLgotICAgICAgICBpZiAobV90eXBlID09IEJsdXJTaGFkb3cpCi0g
ICAgICAgICAgICBtX2xheWVyUmVjdC5pbmZsYXRlKG1fdHlwZSA9PSBCbHVyU2hhZG93ID8gbV9i
bHVyRGlzdGFuY2UgOiAwKTsKKyAgICAgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7Cisg
ICAgICAgICAgICBsYXllckZsb2F0UmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNlKTsKKyAgICAg
ICAgICAgIHVuY2xpcHBlZExheWVyUmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNlKTsKKyAgICAg
ICAgICAgIGluZmxhdGlvbiArPSBtX2JsdXJEaXN0YW5jZTsKKyAgICAgICAgfQogICAgIH0KKwor
ICAgIGNvbnN0IGludCBmcmFtZVNpemUgPSBpbmZsYXRpb24gKiAyOworICAgIG1fc291cmNlUmVj
dCA9IEludFJlY3QoMCwgMCwgbGF5ZXJBcmVhLndpZHRoKCkgKyBmcmFtZVNpemUsIGxheWVyQXJl
YS5oZWlnaHQoKSArIGZyYW1lU2l6ZSk7CisgICAgbV9sYXllck9yaWdpbiA9IEZsb2F0UG9pbnQo
bGF5ZXJGbG9hdFJlY3QueCgpLCBsYXllckZsb2F0UmVjdC55KCkpOworCisgICAgY29uc3QgRmxv
YXRQb2ludCBtX3VuY2xpcHBlZExheWVyT3JpZ2luID0gRmxvYXRQb2ludCh1bmNsaXBwZWRMYXll
clJlY3QueCgpLCB1bmNsaXBwZWRMYXllclJlY3QueSgpKTsKKyAgICBjb25zdCBGbG9hdFNpemUg
Y2xpcHBlZE91dCA9IG1fdW5jbGlwcGVkTGF5ZXJPcmlnaW4gLSBtX2xheWVyT3JpZ2luOworCisg
ICAgLy8gU2V0IHRoZSBvcmlnaW4gYXMgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgc2NyYXRj
aCBpbWFnZSwgb3IsIGluIGNhc2UgdGhlcmUncyBhIGNsaXBwZWQKKyAgICAvLyBvdXQgcmVnaW9u
LCBzZXQgdGhlIG9yaWdpbiBhY2NvcmRpbmdseSB0byB0aGUgZnVsbCBib3VuZGluZyByZWN0J3Mg
dG9wLWxlZnQgY29ybmVyLgorICAgIGNvbnN0IGZsb2F0IHRyYW5zbGF0aW9uWCA9IC1sYXllckFy
ZWEueCgpICsgaW5mbGF0aW9uIC0gZmFic2YoY2xpcHBlZE91dC53aWR0aCgpKTsKKyAgICBjb25z
dCBmbG9hdCB0cmFuc2xhdGlvblkgPSAtbGF5ZXJBcmVhLnkoKSArIGluZmxhdGlvbiAtIGZhYnNm
KGNsaXBwZWRPdXQuaGVpZ2h0KCkpOworICAgIG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24gPSBG
bG9hdFBvaW50KHRyYW5zbGF0aW9uWCwgdHJhbnNsYXRpb25ZKTsKKworICAgIHJldHVybiBlbmNs
b3NpbmdJbnRSZWN0KGxheWVyRmxvYXRSZWN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93Lmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaAppbmRleCBmYTc3OGFm
YmNjZGRmYWZjM2Y0MGNkMDIzY2I3YWQ0ZjQ1MWVkNTJjLi5kMTNkMzIxYzQ3OWRkMjA1ODY0ZmQz
MTc1MDFlZTNjYjIxZjEyYjA3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbnRleHRTaGFkb3cuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRT
aGFkb3cuaApAQCAtNzksNiArNzksNyBAQCBwdWJsaWM6CiAgICAgQ29udGV4dFNoYWRvdygpOwog
ICAgIENvbnRleHRTaGFkb3coY29uc3QgQ29sb3ImLCBmbG9hdCByYWRpdXMsIGNvbnN0IEZsb2F0
U2l6ZSYgb2Zmc2V0KTsKIAorICAgIGJvb2wgbXVzdFVzZUNvbnRleHRTaGFkb3coUGxhdGZvcm1D
b250ZXh0KTsKICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICAvLyBUaGUgcGFpciBiZWdpblNoYWRv
d0xheWVyIGFuZCBlbmRTaGFkb3dMYXllciBjcmVhdGVzIGEgdGVtcG9yYXJ5IGltYWdlCkBAIC0x
MDYsMjUgKzEwNywyOCBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1Db250ZXh0IGJlZ2luU2hhZG93
TGF5ZXIoUGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSk7CiAgICAg
dm9pZCBlbmRTaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQpOwogICAgIHN0YXRpYyB2b2lkIHB1
cmdlU2NyYXRjaEJ1ZmZlcigpOworICAgIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBnZXRU
cmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21Db250ZXh0KFBsYXRmb3JtQ29udGV4dCk7CisKKyAgICB2
b2lkIHNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgZW5hYmxlKSB7IG1fc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMgPSBlbmFibGU7IH0KKyAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQogI2lmIFBM
QVRGT1JNKENBSVJPKQogICAgIHZvaWQgZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0UmFkaXVz
ID0gSW50U2l6ZSgpLCBjb25zdCBJbnRTaXplJiB0b3BSaWdodFJhZGl1cyA9IEludFNpemUoKSwg
Y29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cyA9IEludFNpemUoKSwgY29uc3QgSW50U2l6
ZSYgYm90dG9tUmlnaHRSYWRpdXMgPSBJbnRTaXplKCkpOwogI2VuZGlmCi0KICNpZiBQTEFURk9S
TShRVCkKLSAgICBRUG9pbnRGIG9mZnNldCgpIHsgcmV0dXJuIFFQb2ludEYobV9vZmZzZXQud2lk
dGgoKSwgbV9vZmZzZXQuaGVpZ2h0KCkpOyB9CisgICAgUVBvaW50RiBvZmZzZXQoKSBjb25zdCB7
IHJldHVybiBRUG9pbnRGKG1fb2Zmc2V0LndpZHRoKCksIG1fb2Zmc2V0LmhlaWdodCgpKTsgfQog
I2VuZGlmCiAKLQogcHJpdmF0ZToKLSAgICBJbnRSZWN0IG1fbGF5ZXJSZWN0OwotICAgIFBsYXRm
b3JtSW1hZ2UgbV9sYXllckltYWdlOwotICAgIFBsYXRmb3JtQ29udGV4dCBtX2xheWVyQ29udGV4
dDsKLQotICAgIC8vIFVzZWQgZm9yIHJlZmVyZW5jZSB3aGVuIGNhbnZhcyBzY2FsZSh4LHkpIHdh
cyBjYWxsZWQuCi0gICAgRmxvYXRSZWN0IG1fdW5zY2FsZWRMYXllclJlY3Q7CisgICAgUGxhdGZv
cm1JbWFnZSBtX2xheWVySW1hZ2U7IC8vIEJ1ZmZlciB0byB3aGVyZSB0aGUgdGVtcG9yYXJ5IHNo
YWRvdyB3aWxsIGJlIGRyYXduIHRvLgorICAgIFBsYXRmb3JtQ29udGV4dCBtX2xheWVyQ29udGV4
dDsgLy8gQ29udGV4dCB1c2VkIHRvIHBhaW50IHRoZSBzaGFkb3cgdG8gdGhlIGxheWVyIGltYWdl
LgorICAgIEZsb2F0UmVjdCBtX3NvdXJjZVJlY3Q7IC8vIFN1Yi1yZWN0IG9mIG1fbGF5ZXJJbWFn
ZSB0aGF0IGNvbnRhaW5zIHRoZSBzaGFkb3cgcGl4ZWxzLgorICAgIEZsb2F0UG9pbnQgbV9sYXll
ck9yaWdpbjsgLy8gVG9wLWxlZnQgY29ybmVyIG9mIHRoZSAocG9zc2libHkgY2xpcHBlZCkgYm91
bmRpbmcgcmVjdCB0byBkcmF3IHRoZSBzaGFkb3cgdG8uCisgICAgRmxvYXRQb2ludCBtX2xheWVy
Q29udGV4dFRyYW5zbGF0aW9uOyAvLyBUcmFuc2xhdGlvbiB0byBhcHBseSB0byBtX2xheWVyQ29u
dGV4dCBmb3IgdGhlIHNoYWRvdyB0byBiZSBjb3JyZWN0bHkgY2xpcHBlZC4KKyAgICBib29sIG1f
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CiAKICAgICB2b2lkIGJsdXJMYXllckltYWdlKHVuc2ln
bmVkIGNoYXIqLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGludCBzdHJpZGUpOwotICAgIHZv
aWQgY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEs
IGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKKyAgICBJbnRSZWN0IGNhbGN1bGF0ZUxheWVyQm91
bmRpbmdSZWN0KGNvbnN0IFBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFy
ZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KTsKKwogI2lmIFBMQVRGT1JNKENBSVJPKQogICAg
IHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKFBsYXRmb3JtQ29udGV4dCBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0UmFkaXVz
LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVm
dFJhZGl1cywgY29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMsIGZsb2F0IGFscGhhKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Db250
ZXh0U2hhZG93Q2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Db250
ZXh0U2hhZG93Q2Fpcm8uY3BwCmluZGV4IDY5OWVkZjcxOTc5Yzc3Njk1NzJjOGJjMWY4NjdkM2Zj
OTcyZTk1ZjguLjY4MDEyNjkzOGViYWNlNTZiYjcyMmYzZGYwNzVjNjhmN2YzNmRlZmMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJv
LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRTaGFkb3dD
YWlyby5jcHAKQEAgLTgyLDE5ICs4MiwyNSBAQCBzdGF0aWMgY2Fpcm9fc3VyZmFjZV90KiBnZXRT
Y3JhdGNoQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgcmV0dXJuIHNjcmF0Y2hCdWZm
ZXI7CiB9CiAKLVBsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVy
KFBsYXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKK1Ry
YW5zZm9ybWF0aW9uTWF0cml4IENvbnRleHRTaGFkb3c6OmdldFRyYW5zZm9ybWF0aW9uTWF0cml4
RnJvbUNvbnRleHQoUGxhdGZvcm1Db250ZXh0IGNvbnRleHQpCiB7Ci0gICAgbV91bnNjYWxlZExh
eWVyUmVjdCA9IGxheWVyQXJlYTsKKyAgICBjYWlyb19tYXRyaXhfdCB0cmFuc2Zvcm07CisgICAg
Y2Fpcm9fZ2V0X21hdHJpeChjb250ZXh0LCAmdHJhbnNmb3JtKTsKKyAgICByZXR1cm4gVHJhbnNm
b3JtYXRpb25NYXRyaXgodHJhbnNmb3JtLnh4LCB0cmFuc2Zvcm0ueXgsIHRyYW5zZm9ybS54eSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLnl5LCB0cmFuc2Zvcm0u
eDAsIHRyYW5zZm9ybS55MCk7Cit9CiAKK1BsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93Ojpi
ZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGxheWVyQXJlYSkKK3sKICAgICBkb3VibGUgeDEsIHgyLCB5MSwgeTI7CiAgICAgY2Fpcm9fY2xp
cF9leHRlbnRzKGNvbnRleHQsICZ4MSwgJnkxLCAmeDIsICZ5Mik7Ci0gICAgY2FsY3VsYXRlTGF5
ZXJCb3VuZGluZ1JlY3QobGF5ZXJBcmVhLCBJbnRSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5
MSkpOworICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3Qo
Y29udGV4dCwgbGF5ZXJBcmVhLCBJbnRSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSkpOwog
CiAgICAgLy8gRG9uJ3QgcGFpbnQgaWYgd2UgYXJlIHRvdGFsbHkgb3V0c2lkZSB0aGUgY2xpcCBy
ZWdpb24uCi0gICAgaWYgKG1fbGF5ZXJSZWN0LmlzRW1wdHkoKSkKKyAgICBpZiAobGF5ZXJSZWN0
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBtX2xheWVySW1hZ2UgPSBnZXRT
Y3JhdGNoQnVmZmVyKG1fbGF5ZXJSZWN0LnNpemUoKSk7CisgICAgbV9sYXllckltYWdlID0gZ2V0
U2NyYXRjaEJ1ZmZlcihsYXllclJlY3Quc2l6ZSgpKTsKICAgICBtX2xheWVyQ29udGV4dCA9IGNh
aXJvX2NyZWF0ZShtX2xheWVySW1hZ2UpOwogCiAgICAgLy8gQWx3YXlzIGNsZWFyIHRoZSBzdXJm
YWNlIGZpcnN0LgpAQCAtMTAyLDggKzEwOCw3IEBAIFBsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hh
ZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25zdCBGCiAg
ICAgY2Fpcm9fcGFpbnQobV9sYXllckNvbnRleHQpOwogICAgIGNhaXJvX3NldF9vcGVyYXRvciht
X2xheWVyQ29udGV4dCwgQ0FJUk9fT1BFUkFUT1JfT1ZFUik7CiAKLSAgICBjYWlyb190cmFuc2xh
dGUobV9sYXllckNvbnRleHQsIG1fb2Zmc2V0LndpZHRoKCksIG1fb2Zmc2V0LmhlaWdodCgpKTsK
LSAgICBjYWlyb190cmFuc2xhdGUobV9sYXllckNvbnRleHQsIC1tX2xheWVyUmVjdC54KCksIC1t
X2xheWVyUmVjdC55KCkpOworICAgIGNhaXJvX3RyYW5zbGF0ZShtX2xheWVyQ29udGV4dCwgbV9s
YXllckNvbnRleHRUcmFuc2xhdGlvbi54KCksIG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24ueSgp
KTsKICAgICByZXR1cm4gbV9sYXllckNvbnRleHQ7CiB9CiAKQEAgLTEyMiwxOSArMTI3LDcgQEAg
dm9pZCBDb250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcihjYWlyb190KiBjcikKIAogICAgIGNh
aXJvX3NhdmUoY3IpOwogICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IsIG1fY29sb3IpOwot
Ci0gICAgY2Fpcm9fbWF0cml4X3QgdHJhbnNmb3JtOwotICAgIGNhaXJvX2dldF9tYXRyaXgoY3Is
ICZ0cmFuc2Zvcm0pOwotICAgIGRvdWJsZSB4ID0gbV9sYXllclJlY3QueCgpOwotICAgIGRvdWJs
ZSB5ID0gbV9sYXllclJlY3QueSgpOwotCi0gICAgZG91YmxlIHhTY2FsZSA9IHNxcnQodHJhbnNm
b3JtLnh4ICogdHJhbnNmb3JtLnh4ICsgdHJhbnNmb3JtLnl4ICogdHJhbnNmb3JtLnl4KTsKLSAg
ICBkb3VibGUgeVNjYWxlID0gc3FydCh0cmFuc2Zvcm0ueHkgKiB0cmFuc2Zvcm0ueHkgKyB0cmFu
c2Zvcm0ueXkgKiB0cmFuc2Zvcm0ueXkpOwotICAgIGlmICh4U2NhbGUgIT0gMSB8fCB5U2NhbGUg
IT0gMSkgewotICAgICAgICB4ID0gbV91bnNjYWxlZExheWVyUmVjdC54KCkgKyBtX29mZnNldC53
aWR0aCgpICAvIHRyYW5zZm9ybS54eCAtIG1fYmx1ckRpc3RhbmNlOwotICAgICAgICB5ID0gbV91
bnNjYWxlZExheWVyUmVjdC55KCkgKyBtX29mZnNldC5oZWlnaHQoKSAvIHRyYW5zZm9ybS55eSAt
IG1fYmx1ckRpc3RhbmNlOwotICAgIH0KLSAgICBjYWlyb19tYXNrX3N1cmZhY2UoY3IsIG1fbGF5
ZXJJbWFnZSwgeCwgeSk7CisgICAgY2Fpcm9fbWFza19zdXJmYWNlKGNyLCBtX2xheWVySW1hZ2Us
IG1fbGF5ZXJPcmlnaW4ueCgpLCBtX2xheWVyT3JpZ2luLnkoKSk7CiAgICAgY2Fpcm9fcmVzdG9y
ZShjcik7CiAKICAgICAvLyBTY2hlZHVsZSBhIHB1cmdlIG9mIHRoZSBzY3JhdGNoIGJ1ZmZlci4g
V2UgZG8gbm90IG5lZWQgdG8gZGVzdHJveSB0aGUgc3VyZmFjZS4KQEAgLTIzNSw5ICsyMjgsOSBA
QCB2b2lkIENvbnRleHRTaGFkb3c6OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdAogICAgIC8vIFJlZHVjZSB0aGUgc2l6ZSBvZiB3aGF0
IHdlIGhhdmUgdG8gZHJhdyB3aXRoIHRoZSBjbGlwIGFyZWEuCiAgICAgZG91YmxlIHgxLCB4Miwg
eTEsIHkyOwogICAgIGNhaXJvX2NsaXBfZXh0ZW50cyhjciwgJngxLCAmeTEsICZ4MiwgJnkyKTsK
LSAgICBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChzaGFkb3dSZWN0LCBJbnRSZWN0KHgxLCB5
MSwgeDIgLSB4MSwgeTIgLSB5MSkpOworICAgIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNy
LCBzaGFkb3dSZWN0LCBJbnRSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSkpOwogCi0gICAg
aWYgKChzaGFkb3dUZW1wbGF0ZVNpemUud2lkdGgoKSAqIHNoYWRvd1RlbXBsYXRlU2l6ZS5oZWln
aHQoKSA+IG1fbGF5ZXJSZWN0LndpZHRoKCkgKiBtX2xheWVyUmVjdC5oZWlnaHQoKSkpIHsKKyAg
ICBpZiAoKHNoYWRvd1RlbXBsYXRlU2l6ZS53aWR0aCgpICogc2hhZG93VGVtcGxhdGVTaXplLmhl
aWdodCgpID4gbV9zb3VyY2VSZWN0LndpZHRoKCkgKiBtX3NvdXJjZVJlY3QuaGVpZ2h0KCkpKSB7
CiAgICAgICAgIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhjciwgcmVjdCwgdG9wTGVmdFJh
ZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVz
LCBjb250ZXh0LT5nZXRBbHBoYSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCA0YjExNzU2OTEy
Yjg2MWU2ZWFiNTA4MDkxMDZkMTU1Mzc0Yjk0YWNlLi4wZDkyYWRhNTA4YjFhZDY4MDdiMjM4NzVi
MGJmNzM1MTIzNjZmNzk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ZvbnRDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm8uY3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFk
b3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNhaXJvX3QqIGNvbnRleHQsCiAg
ICAgaWYgKCEoZ3JhcGhpY3NDb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlRmls
bCkgfHwgc2hhZG93LT5tX3R5cGUgPT0gQ29udGV4dFNoYWRvdzo6Tm9TaGFkb3cpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChzaGFkb3ctPm1fdHlwZSA9PSBDb250ZXh0U2hhZG93OjpTb2xp
ZFNoYWRvdykgeworICAgIGlmICghc2hhZG93LT5tdXN0VXNlQ29udGV4dFNoYWRvdyhjb250ZXh0
KSkgewogICAgICAgICAvLyBPcHRpbWl6ZSBub24tYmx1cnJ5IHNoYWRvd3MsIGJ5IGp1c3QgZHJh
d2luZyB0ZXh0IHdpdGhvdXQgdGhlIENvbnRleHRTaGFkb3cuCiAgICAgICAgIGNhaXJvX3NhdmUo
Y29udGV4dCk7CiAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjb250ZXh0LCBzaGFkb3ctPm1fb2Zm
c2V0LndpZHRoKCksIHNoYWRvdy0+bV9vZmZzZXQuaGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApp
bmRleCA1MDMyZjk3MzgzYzY4NjA4YjVjNmU4YTE4NzQzZDBkNjY3NmMyYjQ2Li5hNmVkYWY3Zjg3
MzI0OWJmNjU5NzY1ZmI2NDU4YzNkZTUzNTk5YjUxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtODcx
LDYgKzg3MSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhGbG9h
dFNpemUgY29uc3QmIHNpemUsIGZsb2F0IGJsdXIsIENvbG9yCiAgICAgICAgIG1fZGF0YS0+c2hh
ZG93ID0gQ29udGV4dFNoYWRvdyhjb2xvciwgYmx1ciwgRmxvYXRTaXplKHNpemUud2lkdGgoKSwg
LXNpemUuaGVpZ2h0KCkpKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9kYXRhLT5zaGFkb3cgPSBD
b250ZXh0U2hhZG93KGNvbG9yLCBibHVyLCBGbG9hdFNpemUoc2l6ZS53aWR0aCgpLCBzaXplLmhl
aWdodCgpKSk7CisKKyAgICBtX2RhdGEtPnNoYWRvdy5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyhtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKIH0KIAogQ29udGV4dFNoYWRvdyog
R3JhcGhpY3NDb250ZXh0Ojpjb250ZXh0U2hhZG93KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ndGsvRm9udEd0ay5jcHAKaW5kZXggYTBkNWM2MjQ4YTZmYjllY2ZkYzcwZDczNDI4ZmI1NTJl
MTc0NjYxNS4uZWFiZDkxMzRlNjBkMGQ4MGYwNDE3OGQ0MmMxNWJiM2MyYjc1MWI5YSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAKQEAgLTIyNSw3ICsyMjUsNyBA
QCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBjYWlyb190KiBjb250ZXh0LAogICAgIEZsb2F0UG9pbnQgdG90YWxPZmZzZXQocG9p
bnQgKyBzaGFkb3ctPm1fb2Zmc2V0KTsKIAogICAgIC8vIE9wdGltaXplIG5vbi1ibHVycnkgc2hh
ZG93cywgYnkganVzdCBkcmF3aW5nIHRleHQgd2l0aG91dCB0aGUgQ29udGV4dFNoYWRvdy4KLSAg
ICBpZiAoc2hhZG93LT5tX3R5cGUgPT0gQ29udGV4dFNoYWRvdzo6U29saWRTaGFkb3cpIHsKKyAg
ICBpZiAoIXNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3coY29udGV4dCkpIHsKICAgICAgICAg
Y2Fpcm9fc2F2ZShjb250ZXh0KTsKICAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKGNvbnRleHQsIHRv
dGFsT2Zmc2V0LngoKSwgdG90YWxPZmZzZXQueSgpKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwCmluZGV4IGY3YzcwZjY5NWJjMGZjNDI1
MGNjOWJkYzM1ZTlkNWU4ZTYzZjk3NDQuLjQ4Zjc5NzYxYTViYTc2ZGY5ZmJiMzNhN2ExYjBjNDhj
ZGI4MmY3ZjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4
dFNoYWRvd1F0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRT
aGFkb3dRdC5jcHAKQEAgLTEwMCw2ICsxMDAsMTMgQEAgdm9pZCBTaGFkb3dCdWZmZXI6OnRpbWVy
RXZlbnQoUVRpbWVyRXZlbnQqIGV2ZW50KQogICAgIFFPYmplY3Q6OnRpbWVyRXZlbnQoZXZlbnQp
OwogfQogCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBDb250ZXh0U2hhZG93OjpnZXRUcmFuc2Zvcm1h
dGlvbk1hdHJpeEZyb21Db250ZXh0KFBsYXRmb3JtQ29udGV4dCBjb250ZXh0KQoreworICAgIGNv
bnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSA9IGNvbnRleHQtPnRyYW5zZm9ybSgpOworICAgIHJl
dHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCh0cmFuc2Zvcm0ubTExKCksIHRyYW5zZm9ybS5tMTIo
KSwgdHJhbnNmb3JtLm0yMSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFu
c2Zvcm0ubTIyKCksIHRyYW5zZm9ybS5keCgpLCB0cmFuc2Zvcm0uZHkoKSk7Cit9CisKIFFfR0xP
QkFMX1NUQVRJQyhTaGFkb3dCdWZmZXIsIHNjcmF0Y2hTaGFkb3dCdWZmZXIpCiAKIFBsYXRmb3Jt
Q29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCBw
LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKQEAgLTExNCwyNSArMTIxLDIyIEBAIFBsYXRm
b3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4
dCBwLCBjb25zdCBGbG9hdFJlCiAgICAgZWxzZQogICAgICAgICBjbGlwUmVjdCA9IHAtPnRyYW5z
Zm9ybSgpLmludmVydGVkKCkubWFwUmVjdChwLT53aW5kb3coKSk7CiAKLSAgICBtX3Vuc2NhbGVk
TGF5ZXJSZWN0ID0gbGF5ZXJBcmVhOwotICAgIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGxh
eWVyQXJlYSwgSW50UmVjdChjbGlwUmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lk
dGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpKTsKKyAgICAvLyBTZXQgbV9sYXllck9yaWdpbiwgbV9s
YXllckNvbnRleHRUcmFuc2xhdGlvbiwgbV9zb3VyY2VSZWN0LgorICAgIEludFJlY3QgY2xpcChj
bGlwUmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3QuaGVp
Z2h0KCkpOworICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1Jl
Y3QocCwgbGF5ZXJBcmVhLCBjbGlwKTsKIAogICAgIC8vIERvbid0IHBhaW50IGlmIHdlIGFyZSB0
b3RhbGx5IG91dHNpZGUgdGhlIGNsaXAgcmVnaW9uLgotICAgIGlmIChtX2xheWVyUmVjdC5pc0Vt
cHR5KCkpCisgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgU2hhZG93QnVmZmVyKiBzaGFkb3dCdWZmZXIgPSBzY3JhdGNoU2hhZG93QnVmZmVyKCk7
Ci0gICAgUUltYWdlKiBzaGFkb3dJbWFnZSA9IHNoYWRvd0J1ZmZlci0+c2NyYXRjaEltYWdlKG1f
bGF5ZXJSZWN0LnNpemUoKSk7CisgICAgUUltYWdlKiBzaGFkb3dJbWFnZSA9IHNoYWRvd0J1ZmZl
ci0+c2NyYXRjaEltYWdlKGxheWVyUmVjdC5zaXplKCkpOwogICAgIG1fbGF5ZXJJbWFnZSA9IFFJ
bWFnZSgqc2hhZG93SW1hZ2UpOwogCiAgICAgbV9sYXllckNvbnRleHQgPSBuZXcgUVBhaW50ZXI7
CiAgICAgbV9sYXllckNvbnRleHQtPmJlZ2luKCZtX2xheWVySW1hZ2UpOwogICAgIG1fbGF5ZXJD
b250ZXh0LT5zZXRGb250KHAtPmZvbnQoKSk7Ci0gICAgbV9sYXllckNvbnRleHQtPnRyYW5zbGF0
ZShtX29mZnNldC53aWR0aCgpLCBtX29mZnNldC5oZWlnaHQoKSk7Ci0KLSAgICAvLyBUaGUgb3Jp
Z2luIGlzIG5vdyB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBzY3JhdGNoIGltYWdlLgotICAg
IG1fbGF5ZXJDb250ZXh0LT50cmFuc2xhdGUoLW1fbGF5ZXJSZWN0LngoKSwgLW1fbGF5ZXJSZWN0
LnkoKSk7Ci0KKyAgICBtX2xheWVyQ29udGV4dC0+dHJhbnNsYXRlKG1fbGF5ZXJDb250ZXh0VHJh
bnNsYXRpb24pOwogICAgIHJldHVybiBtX2xheWVyQ29udGV4dDsKIH0KIApAQCAtMTU1LDEzICsx
NTksNyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4
dCBwKQogICAgICAgICBwLmVuZCgpOwogICAgIH0KIAotICAgIGNvbnN0IFFUcmFuc2Zvcm0gdHJh
bnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0gICAgaWYgKHRyYW5zZm9ybS5pc1NjYWxpbmcoKSkg
ewotICAgICAgICBxcmVhbCB4ID0gbV91bnNjYWxlZExheWVyUmVjdC54KCkgKyBtX29mZnNldC53
aWR0aCgpICAvIHRyYW5zZm9ybS5tMTEoKSAtIG1fYmx1ckRpc3RhbmNlOwotICAgICAgICBxcmVh
bCB5ID0gbV91bnNjYWxlZExheWVyUmVjdC55KCkgKyBtX29mZnNldC5oZWlnaHQoKSAvIHRyYW5z
Zm9ybS5tMjIoKSAtIG1fYmx1ckRpc3RhbmNlOwotICAgICAgICBwLT5kcmF3SW1hZ2UoUVBvaW50
Rih4LCB5KSwgbV9sYXllckltYWdlKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcC0+ZHJhd0ltYWdl
KG1fbGF5ZXJSZWN0LnRvcExlZnQoKSwgbV9sYXllckltYWdlKTsKKyAgICBwLT5kcmF3SW1hZ2Uo
bV9sYXllck9yaWdpbiwgbV9sYXllckltYWdlLCBtX3NvdXJjZVJlY3QpOwogCiAgICAgc2NyYXRj
aFNoYWRvd0J1ZmZlcigpLT5zY2hlZHVsZVB1cmdlKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0ZvbnRRdC5jcHAKaW5kZXggZTg5ZDMzMDA0ZGJiMjZmMGM4ZjRmNTFiODEzY2VlODYz
ZTJkMDc0MS4uMzI3MWNlZjEwOTRmM2U2YThjOWU4MWIzNGViNDU2OGRjZmYyNWQ3ZiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHN0
YXRpYyB2b2lkIGRyYXdUZXh0Q29tbW9uKEdyYXBoaWNzQ29udGV4dCogY3R4LCBjb25zdCBUZXh0
UnVuJiBydW4sIGNvbnN0IEZsb2F0CiAKICAgICAgICAgICAgIGlmIChjdHhTaGFkb3ctPm1fdHlw
ZSAhPSBDb250ZXh0U2hhZG93OjpOb1NoYWRvdykgewogICAgICAgICAgICAgICAgIENvbnRleHRT
aGFkb3cqIGN0eFNoYWRvdyA9IGN0eC0+Y29udGV4dFNoYWRvdygpOwotICAgICAgICAgICAgICAg
IGlmIChjdHhTaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93KSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFjdHhTaGFkb3ctPm11c3RVc2VDb250ZXh0U2hhZG93KCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgcC0+c2F2ZSgpOwogICAgICAgICAgICAgICAgICAgICBwLT5z
ZXRQZW4oY3R4U2hhZG93LT5tX2NvbG9yKTsKICAgICAgICAgICAgICAgICAgICAgcC0+dHJhbnNs
YXRlKGN0eFNoYWRvdy0+b2Zmc2V0KCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAppbmRleCBiOTRjOTM0Y2UyZDJiNjkyYzdiZTQ4
NzA1OTQ0MDA5YTk4OGRiOGYxLi43MDBiNmEzYjQ2YmZiNzUwMzZmNGM4MzAzMDhmMzI0MmM5Mjlj
YTY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dFF0LmNwcApAQCAtNTMsNyArNTMsNiBAQAogI2luY2x1ZGUgIlRyYW5zcGFyZW5jeUxheWVy
LmgiCiAKICNpbmNsdWRlIDxRQnJ1c2g+Ci0jaW5jbHVkZSA8UURlYnVnPgogI2luY2x1ZGUgPFFH
cmFkaWVudD4KICNpbmNsdWRlIDxRUGFpbnREZXZpY2U+CiAjaW5jbHVkZSA8UVBhaW50RW5naW5l
PgpAQCAtNTExLDMzICs1MTAsMjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNv
bnN0IFBhdGgmIHBhdGgpCiAKICAgICBpZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAgICAg
ICBDb250ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7Ci0gICAgICAgIGlmIChz
aGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93Ci0gICAgICAgICAgICAm
JiAhbV9zdGF0ZS5maWxsUGF0dGVybiAmJiAhbV9zdGF0ZS5maWxsR3JhZGllbnQpCisgICAgICAg
IGlmIChzaGFkb3cubXVzdFVzZUNvbnRleHRTaGFkb3cocCkgfHwgbV9zdGF0ZS5maWxsUGF0dGVy
biB8fCBtX3N0YXRlLmZpbGxHcmFkaWVudCkKICAgICAgICAgewotICAgICAgICAgICAgUVBvaW50
RiBvZmZzZXQgPSBzaGFkb3ctPm9mZnNldCgpOwotICAgICAgICAgICAgY29uc3QgUVRyYW5zZm9y
bSYgdHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0gICAgICAgICAgICBpZiAodHJhbnNmb3Jt
LmlzU2NhbGluZygpKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgc2NhbGluZyBpcyByZXF1aXJl
ZCwgZmluZCB0aGUgbmV3IGNvb3JkIGZvciBzaGFkb3cgb3JpZ2luLAotICAgICAgICAgICAgICAg
IC8vIHNvIHRoYXQgdGhlIHJlbGF0aXZlIG9mZnNldCB0byBpdHMgc2hhcGUgaXMga2VwdC4KLSAg
ICAgICAgICAgICAgICBRUG9pbnRGIHRyYW5zbGF0ZWRPZmZzZXQob2Zmc2V0LngoKSAvIHRyYW5z
Zm9ybS5tMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zm
c2V0LnkoKSAvIHRyYW5zZm9ybS5tMjIoKSk7Ci0gICAgICAgICAgICAgICAgcGxhdGZvcm1QYXRo
LnRyYW5zbGF0ZSh0cmFuc2xhdGVkT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBwLT5maWxsUGF0
aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihzaGFkb3ctPm1fY29sb3IpKTsKLSAgICAgICAgICAgICAg
ICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKC10cmFuc2xhdGVkT2Zmc2V0KTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG9mZnNldCk7Ci0gICAgICAg
ICAgICAgICAgcC0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3Ioc2hhZG93LT5tX2NvbG9y
KSk7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZzZXQpOwotICAgICAgICAgICAg
fQotICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIg
PSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJl
Y3QoKSk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAg
IHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25N
b2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFBhdGgocGxh
dGZvcm1QYXRoLCBRQ29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xvcikpOwogICAgICAgICAgICAg
ICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICB9CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBRUG9pbnRGIG9mZnNldCA9IHNoYWRvdy0+b2Zmc2V0KCk7Cisg
ICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKKyAgICAgICAgICAgIHAtPmZpbGxQYXRo
KHBsYXRmb3JtUGF0aCwgUUNvbG9yKHNoYWRvdy0+bV9jb2xvcikpOworICAgICAgICAgICAgcC0+
dHJhbnNsYXRlKC1vZmZzZXQpOwogICAgICAgICB9Ci0KICAgICB9CiAgICAgaWYgKG1fc3RhdGUu
ZmlsbFBhdHRlcm4pIHsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGFmZmluZTsKQEAgLTU2Miwy
OCArNTQ4LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYg
cGF0aCkKIAogICAgIGlmIChtX2RhdGEtPmhhc1NoYWRvdygpKSB7CiAgICAgICAgIENvbnRleHRT
aGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFkb3coKTsKLQotICAgICAgICBpZiAoc2hhZG93LT5t
X3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdwotICAgICAgICAgICAgJiYgIW1fc3Rh
dGUuc3Ryb2tlUGF0dGVybiAmJiAhbV9zdGF0ZS5zdHJva2VHcmFkaWVudCkKKyAgICAgICAgaWYg
KHNoYWRvdy5tdXN0VXNlQ29udGV4dFNoYWRvdyhwKSB8fCBtX3N0YXRlLnN0cm9rZVBhdHRlcm4g
fHwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudCkKICAgICAgICAgewotICAgICAgICAgICAgUVBlbiBz
aGFkb3dQZW4ocGVuKTsKLSAgICAgICAgICAgIHNoYWRvd1Blbi5zZXRDb2xvcihtX2RhdGEtPnNo
YWRvdy5tX2NvbG9yKTsKLSAgICAgICAgICAgIFFQb2ludEYgb2Zmc2V0ID0gc2hhZG93LT5vZmZz
ZXQoKTsKLSAgICAgICAgICAgIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSA9IHAtPnRyYW5z
Zm9ybSgpOwotICAgICAgICAgICAgaWYgKHRyYW5zZm9ybS5pc1NjYWxpbmcoKSkgewotICAgICAg
ICAgICAgICAgIC8vIElmIHNjYWxpbmcgaXMgcmVxdWlyZWQsIGZpbmQgdGhlIG5ldyBjb29yZCBm
b3Igc2hhZG93IG9yaWdpbiwKLSAgICAgICAgICAgICAgICAvLyBzbyB0aGF0IHRoZSByZWxhdGl2
ZSBvZmZzZXQgdG8gaXRzIHNoYXBlIGlzIGtlcHQuCi0gICAgICAgICAgICAgICAgUVBvaW50RiB0
cmFuc2xhdGVkT2Zmc2V0KG9mZnNldC54KCkgLyB0cmFuc2Zvcm0ubTExKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldC55KCkgLyB0cmFuc2Zvcm0ubTIy
KCkpOwotICAgICAgICAgICAgICAgIHBsYXRmb3JtUGF0aC50cmFuc2xhdGUodHJhbnNsYXRlZE9m
ZnNldCk7Ci0gICAgICAgICAgICAgICAgcC0+c3Ryb2tlUGF0aChwbGF0Zm9ybVBhdGgsIHNoYWRv
d1Blbik7Ci0gICAgICAgICAgICAgICAgcGxhdGZvcm1QYXRoLnRyYW5zbGF0ZSgtdHJhbnNsYXRl
ZE9mZnNldCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHAtPnRyYW5z
bGF0ZShvZmZzZXQpOwotICAgICAgICAgICAgICAgIHAtPnN0cm9rZVBhdGgocGxhdGZvcm1QYXRo
LCBzaGFkb3dQZW4pOwotICAgICAgICAgICAgICAgIHAtPnRyYW5zbGF0ZSgtb2Zmc2V0KTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCBib3Vu
ZGluZ1JlY3QgPSBwbGF0Zm9ybVBhdGguY29udHJvbFBvaW50UmVjdCgpOwogICAgICAgICAgICAg
Ym91bmRpbmdSZWN0LmluZmxhdGUocGVuLm1pdGVyTGltaXQoKSArIHBlbi53aWR0aEYoKSk7CiAg
ICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dM
YXllcihwLCBib3VuZGluZ1JlY3QpOwpAQCAtNTkyLDYgKzU1OCwxMyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgICAgIHNo
YWRvd1BhaW50ZXItPnN0cm9rZVBhdGgocGxhdGZvcm1QYXRoLCBwZW4pOwogICAgICAgICAgICAg
ICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICB9CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBRUGVuIHNoYWRvd1BlbihwZW4pOworICAgICAgICAgICAgc2hh
ZG93UGVuLnNldENvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpOworICAgICAgICAgICAgUVBv
aW50RiBvZmZzZXQgPSBzaGFkb3ctPm9mZnNldCgpOworICAgICAgICAgICAgcC0+dHJhbnNsYXRl
KG9mZnNldCk7CisgICAgICAgICAgICBwLT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgc2hhZG93
UGVuKTsKKyAgICAgICAgICAgIHAtPnRyYW5zbGF0ZSgtb2Zmc2V0KTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtNzExLDcgKzY4NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0
LCBicnVzaCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkp
IHsKLSAgICAgICAgICAgIGlmIChzaGFkb3ctPm1fdHlwZSA9PSBDb250ZXh0U2hhZG93OjpCbHVy
U2hhZG93KSB7CisgICAgICAgICAgICBpZiAoc2hhZG93Lm11c3RVc2VDb250ZXh0U2hhZG93KHAp
KSB7CiAgICAgICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJl
Z2luU2hhZG93TGF5ZXIocCwgbm9ybWFsaXplZFJlY3QpOwogICAgICAgICAgICAgICAgIGlmIChz
aGFkb3dQYWludGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldE9w
YWNpdHkoc3RhdGljX2Nhc3Q8cXJlYWw+KHNoYWRvdy0+bV9jb2xvci5hbHBoYSgpKSAvIDI1NSk7
CkBAIC03MTksMTcgKzY5MiwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRv
d0xheWVyKHApOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgLy8gU29saWQgcmVjdGFuZ2xlIGZpbGwgd2l0aCBubyBibHVyIHNoYWRvdyBj
YW4gYmUgZG9uZSBmYXN0ZXIKLSAgICAgICAgICAgICAgICAvLyB3aXRob3V0IHVzaW5nIHRoZSBz
aGFkb3cgbGF5ZXIgYXQgYWxsLgorICAgICAgICAgICAgICAgIC8vIFNvbGlkIHJlY3RhbmdsZSBm
aWxsIHdpdGggbm8gYmx1ciBzaGFkb3cgb3IgdHJhbnNmb3JtYXRpb25zIGFwcGxpZWQgY2FuIGJl
IGRvbmUKKyAgICAgICAgICAgICAgICAvLyBmYXN0ZXIgd2l0aG91dCB1c2luZyB0aGUgc2hhZG93
IGxheWVyIGF0IGFsbC4KICAgICAgICAgICAgICAgICBRQ29sb3Igc2hhZG93Q29sb3IgPSBzaGFk
b3ctPm1fY29sb3I7CiAgICAgICAgICAgICAgICAgc2hhZG93Q29sb3Iuc2V0QWxwaGFGKHNoYWRv
d0NvbG9yLmFscGhhRigpICogcC0+YnJ1c2goKS5jb2xvcigpLmFscGhhRigpKTsKLSAgICAgICAg
ICAgICAgICBjb25zdCBRVHJhbnNmb3JtJiB0cmFuc2Zvcm0gPSBwLT50cmFuc2Zvcm0oKTsKLSAg
ICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtLmlzU2NhbGluZygpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc3RhdGljX2Nhc3Q8
cXJlYWw+KHNoYWRvdy0+b2Zmc2V0KCkueCgpKSAvIHRyYW5zZm9ybS5tMTEoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxxcmVhbD4oc2hhZG93LT5vZmZzZXQoKS55KCkgIC8gdHJhbnNmb3JtLm0yMigpKSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd0NvbG9yKTsKLSAgICAgICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJl
Y3QudHJhbnNsYXRlZChzaGFkb3ctPm9mZnNldCgpKSwgc2hhZG93Q29sb3IpOworICAgICAgICAg
ICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZz
ZXQoKSksIHNoYWRvd0NvbG9yKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC03NDks
MTggKzcxNiwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yUwogCiAgICAgaWYgKG1fZGF0YS0+
aGFzU2hhZG93KCkpIHsKICAgICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNo
YWRvdygpOwotCi0gICAgICAgIGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpC
bHVyU2hhZG93KSB7Ci0gICAgICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCBhbnkgbGF5ZXIgZm9y
IHNpbXBsZSBzaGFkb3cuCi0gICAgICAgICAgICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdC50
cmFuc2xhdGVkKHNoYWRvdy0+b2Zmc2V0KCkpLCBzaGFkb3ctPm1fY29sb3IpOwotICAgICAgICB9
IGVsc2UgeworICAgICAgICBpZiAoc2hhZG93Lm11c3RVc2VDb250ZXh0U2hhZG93KHApKSB7CiAg
ICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dM
YXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikg
ewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFp
bnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFp
bnRlci0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIHNoYWRvdy0+bV9jb2xvcik7CiAgICAgICAg
ICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwKTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRS
ZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvdy0+bV9jb2xvcik7CiAgICAg
fQogCiAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIG1fZGF0YS0+c29saWRDb2xvcik7
CkBAIC03NzYsMTkgKzc0MCwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRS
ZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZgogICAgIFFQYWlu
dGVyKiBwID0gbV9kYXRhLT5wKCk7CiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAg
ICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotCi0gICAgICAg
IGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93KSB7Ci0gICAg
ICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCBhbnkgbGF5ZXIgZm9yIHNpbXBsZSBzaGFkb3cuCi0g
ICAgICAgICAgICBwLT50cmFuc2xhdGUobV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOwotICAgICAg
ICAgICAgcC0+ZmlsbFBhdGgocGF0aC5wbGF0Zm9ybVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hh
ZG93Lm1fY29sb3IpKTsKLSAgICAgICAgICAgIHAtPnRyYW5zbGF0ZSgtbV9kYXRhLT5zaGFkb3cu
b2Zmc2V0KCkpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAoc2hhZG93Lm11c3RVc2VD
b250ZXh0U2hhZG93KHApKSB7CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9
IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCByZWN0KTsKICAgICAgICAgICAgIGlmIChzaGFk
b3dQYWludGVyKSB7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0Q29tcG9zaXRp
b25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsKICAgICAgICAgICAgICAg
ICBzaGFkb3dQYWludGVyLT5maWxsUGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3IobV9k
YXRhLT5zaGFkb3cubV9jb2xvcikpOwogICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93
TGF5ZXIocCk7CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBw
LT50cmFuc2xhdGUobV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOworICAgICAgICAgICAgcC0+Zmls
bFBhdGgocGF0aC5wbGF0Zm9ybVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3Ip
KTsKKyAgICAgICAgICAgIHAtPnRyYW5zbGF0ZSgtbV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOwog
ICAgICAgICB9CiAgICAgfQogICAgIHAtPmZpbGxQYXRoKHBhdGgucGxhdGZvcm1QYXRoKCksIFFD
b2xvcihjb2xvcikpOwpAQCAtOTU4LDkgKzkyMCwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0UGxhdGZvcm1TaGFkb3coY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBibHVyLCBjb25z
dAogICAgICAgICAvLyBXZSBmbGlwIHRoZSBoZWlnaHQgc2luY2UgQ0cgYW5kIEhUTUw1IENhbnZh
cyBoYXZlIG9wcG9zaXRlIFkgYXhpcwogICAgICAgICBtX3N0YXRlLnNoYWRvd09mZnNldCA9IEZs
b2F0U2l6ZShzaXplLndpZHRoKCksIC1zaXplLmhlaWdodCgpKTsKICAgICAgICAgbV9kYXRhLT5z
aGFkb3cgPSBDb250ZXh0U2hhZG93KGNvbG9yLCBibHVyLCBGbG9hdFNpemUoc2l6ZS53aWR0aCgp
LCAtc2l6ZS5oZWlnaHQoKSkpOwotICAgIH0gZWxzZSB7CisgICAgfSBlbHNlCiAgICAgICAgIG1f
ZGF0YS0+c2hhZG93ID0gQ29udGV4dFNoYWRvdyhjb2xvciwgYmx1ciwgRmxvYXRTaXplKHNpemUu
d2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOwotICAgIH0KKworICAgIG1fZGF0YS0+c2hhZG93LnNl
dFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJQbGF0Zm9ybVNoYWRvdygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76915</attachid>
            <date>2010-12-17 15:20:16 -0800</date>
            <delta_ts>2010-12-17 16:40:13 -0800</delta_ts>
            <desc>Cross platform version of the previous patch (#2)</desc>
            <filename>transformation_patch.diff</filename>
            <type>text/plain</type>
            <size>40621</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5NDE0NmRjLi4wNGE4ODQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTAtMTIt
MTcgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBDYW52YXMgc2hhZG93IG9mZnNl
dCBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IGFueSB0cmFuc2Zvcm1hdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0MjIKKworICAgICAgICBP
biBhIGNhbnZhcyBjb250ZXh0LCBzaGFkb3dzIGFyZSBjdXJyZW50bHkgYWZmZWN0ZWQgYnkgYWxs
CisgICAgICAgIHRyYW5zZm9ybWF0aW9ucyBleGNlcHQgc2NhbGluZy4gQWNjb3JkaW5nIHRvIHRo
ZSBzcGVjOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3Vy
cmVudC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbCNzaGFkb3dzCisKKyAg
ICAgICAgIlRoZSBzaGFkb3dPZmZzZXRYIGFuZCBzaGFkb3dPZmZzZXRZIGF0dHJpYnV0ZXMgc3Bl
Y2lmeSB0aGUgZGlzdGFuY2UKKyAgICAgICAgdGhhdCB0aGUgc2hhZG93IHdpbGwgYmUgb2Zmc2V0
IGluIHRoZSBwb3NpdGl2ZSBob3Jpem9udGFsIGFuZCBwb3NpdGl2ZQorICAgICAgICB2ZXJ0aWNh
bCBkaXN0YW5jZSByZXNwZWN0aXZlbHkuIFRoZWlyIHZhbHVlcyBhcmUgaW4gY29vcmRpbmF0ZSBz
cGFjZQorICAgICAgICB1bml0cy4gVGhleSBhcmUgbm90IGFmZmVjdGVkIGJ5IHRoZSBjdXJyZW50
IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4iCisKKyAgICAgICAgTk9URTogdGhpcyBhcHBsaWVzIG9u
bHkgdG8gY2FudmFzLCBub3QgdG8gYm94IHNoYWRvd3MuCisKKyAgICAgICAgQWRkIG5ldyB0ZXN0
IHRvIGVuc3VyZSB0aGF0IHNoYWRvd3MgYXJlIGNvcnJlY3RseSB0cmFuc2Zvcm1lZCBrZWVwaW5n
CisgICAgICAgIHRoZSByZWxhdGl2ZSBvZmZzZXQgdG8gdGhlIHNoYXBlLgorCisgICAgICAgICog
ZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dDog
U2VlIHN0cm9rZVBhdGggYmVsb3cuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5z
Zm9ybXMtZmlsbFJlY3Qtc2hhZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgt
c2hhZG93LmpzOgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2Nh
bGUtZmlsbFJlY3Qtc2hhZG93LmpzOgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0
cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanM6IE5vdyB1c2luZworICAgICAgICAg
IGEgbGluZVdpZHRoID4gMSB0byBtYWtlIGl0IGVhc2llciB0byB0ZXN0IGFuZCBtb3JlIGZhaXIg
YW1vbmcgYWxsCisgICAgICAgICAgcG9ydHMsIHNpbmNlIHRoZXJlIGNhbiBiZSBkaWZmZXJlbnQg
dHJhbnNmb3JtYXRpb24gc21vb3RobmVzcyBvcgorICAgICAgICAgIGFsaWFzaW5nIHNldHRpbmdz
LgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1m
aWxsUmVjdC1zaGFkb3cuanM6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVk
OiBHVEsgcG9ydCBuZWVkcyB0byBpbXBsZW1lbnQgdGhpcyBmZWF0dXJlLgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9jYW52YXMvY2Fu
dmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRv
dy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisKIDIwMTAtMTItMTcgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRo
LXNoYWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2Nh
bGUtc3Ryb2tlUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0CmluZGV4IGU1NjIwMWYuLmEzMzdjNGIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQ
YXRoLXNoYWRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2Fu
dmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dApAQCAtMzAsMjcgKzMwLDI3
IEBAIFBBU1MgZFszXSBpcyBhcm91bmQgNzYKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBp
cyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMAorUEFTUyBkWzNdIGlz
IGFyb3VuZCAxNDkKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0g
aXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMgorUEFTUyBkWzNdIGlzIGFyb3VuZCAxMTYKIFBB
U1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNd
IGlzIGFyb3VuZCAyOAorUEFTUyBkWzNdIGlzIGFyb3VuZCAxMTUKIFBBU1MgZFswXSBpcyAyNTUK
IFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMgor
UEFTUyBkWzNdIGlzIGFyb3VuZCA3MAogUEFTUyBkWzBdIGlzIDI1NQogUEFTUyBkWzFdIGlzIDAK
IFBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDE1CitQQVNTIGRbM10gaXMgYXJv
dW5kIDcwCiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAK
LVBBU1MgZFszXSBpcyBhcm91bmQgMTcKK1BBU1MgZFszXSBpcyBhcm91bmQgNjkKIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1z
aGFkb3cuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNj
YWxlLWZpbGxQYXRoLXNoYWRvdy5qcwppbmRleCAwNTI4NmY1Li44YjA1ZjNjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxQ
YXRoLXNoYWRvdy5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMv
Y2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcwpAQCAtMTksNyArMTksNyBAQCBmdW5jdGlv
biBzaG91bGRCZUFyb3VuZChhLCBiKQogICAgICAgICBldmFsQSA9IGU7CiAgICAgfQogCi0gICAg
aWYgKE1hdGguYWJzKGV2YWxBIC0gYikgPCAxMCkKKyAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBi
KSA8IDIwKQogICAgICAgICBwcmludCgiUEFTUyAiICsgYSArICIgaXMgYXJvdW5kICIgKyBiICwg
ImdyZWVuIikKICAgICBlbHNlCiAgICAgICAgIHByaW50KCJGQUlMICIgKyBhICsgIiBpcyBub3Qg
YXJvdW5kICIgKyBiICsgIiAoYWN0dWFsOiAiICsgZXZhbEEgKyAiKSIsICJyZWQiKTsKQEAgLTM1
LDcgKzM1LDYgQEAgY3R4LnNjYWxlKDIsIDIpOwogY3R4LnNoYWRvd09mZnNldFggPSAxMDA7CiBj
dHguc2hhZG93T2Zmc2V0WSA9IDEwMDsKIGN0eC5maWxsU3R5bGUgPSAncmdiYSgwLCAwLCAyNTUs
IDEpJzsKLS8vY3R4LmxpbmVXaWR0aCA9IDMwOwogCiBjdHguc2hhZG93Q29sb3IgPSAncmdiYSgy
NTUsIDAsIDAsIDEuMCknOwogY3R4LmJlZ2luUGF0aCgpOwpAQCAtNzMsMzggKzcyLDM4IEBAIGN0
eC5maWxsKCk7CiB2YXIgZDsgLy8gaW1hZ2VEYXRhLmRhdGEKIAogLy8gVmVyaWZ5IHNvbGlkIHNo
YWRvdy4KLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjA1LCAxLCAxKS5kYXRhOworZCA9IGN0
eC5nZXRJbWFnZURhdGEoMjAxLCAyMDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcy
NTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNo
b3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDI5NSwg
MSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgMjk1LCAxLCAxKS5kYXRhOwog
c2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRC
ZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJ
bWFnZURhdGEoMjAwLCAyOTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEs
IDI5OCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2Rb
MV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1
Jyk7CiAKIC8vIFZlcmlmeSBzb2xpZCBhbHBoYSBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0
YSgyMDAsIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwgNDA1LCAx
LCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcw
Jyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3Nicp
OwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDI5OCwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1
Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91
bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5
OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk4LCAxLCAxKS5kYXRh
Owogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91
bGRCZSgnZFsyXScsICcwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9z
Y3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5qcyBiL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93Lmpz
CmluZGV4IDk5YTFlNTkuLjU2ZDRhMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qt
c2hhZG93LmpzCkBAIC0xOSw3ICsxOSw3IEBAIGZ1bmN0aW9uIHNob3VsZEJlQXJvdW5kKGEsIGIp
CiAgICAgICAgIGV2YWxBID0gZTsKICAgICB9CiAKLSAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBi
KSA8IDEwKQorICAgIGlmIChNYXRoLmFicyhldmFsQSAtIGIpIDwgMjApCiAgICAgICAgIHByaW50
KCJQQVNTICIgKyBhICsgIiBpcyBhcm91bmQgIiArIGIgLCAiZ3JlZW4iKQogICAgIGVsc2UKICAg
ICAgICAgcHJpbnQoIkZBSUwgIiArIGEgKyAiIGlzIG5vdCBhcm91bmQgIiArIGIgKyAiIChhY3R1
YWw6ICIgKyBldmFsQSArICIpIiwgInJlZCIpOwpAQCAtNTIsMzggKzUyLDM4IEBAIGN0eC5maWxs
UmVjdCgxNTAsIDE1MCwgNTAsIDUwKTsKIHZhciBkOyAvLyBpbWFnZURhdGEuZGF0YQogCiAvLyBW
ZXJpZnkgc29saWQgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyMDUsIDEsIDEp
LmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDIwNSwgMSwgMSkuZGF0YTsKIHNob3Vs
ZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
Ml0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VE
YXRhKDI5OSwgMjk1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCAyOTgs
IDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywg
JzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwog
Ci1kID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDI5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0
SW1hZ2VEYXRhKDIwMSwgMjk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7
CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRC
ZSgnZFszXScsICcyNTUnKTsKIAogLy8gVmVyaWZ5IHNvbGlkIGFscGhhIHNoYWRvdy4KLWQgPSBj
dHguZ2V0SW1hZ2VEYXRhKDIwMCwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURh
dGEoMjAxLCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3Vs
ZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5k
KCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDA1LCAxLCAxKS5k
YXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRC
ZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJd
JywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1h
Z2VEYXRhKDIwNSwgNDk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0
OTgsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFd
JywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cu
anMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0
cm9rZVBhdGgtc2hhZG93LmpzCmluZGV4IDUxOThkOTQuLjYwMDIxNzUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0
aC1zaGFkb3cuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2Nh
bnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy5qcwpAQCAtMTksNyArMTksNyBAQCBmdW5jdGlv
biBzaG91bGRCZUFyb3VuZChhLCBiKQogICAgICAgICBldmFsQSA9IGU7CiAgICAgfQogCi0gICAg
aWYgKE1hdGguYWJzKGV2YWxBIC0gYikgPCAxMCkKKyAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBi
KSA8IDIwKQogICAgICAgICBwcmludCgiUEFTUyAiICsgYSArICIgaXMgYXJvdW5kICIgKyBiICwg
ImdyZWVuIikKICAgICBlbHNlCiAgICAgICAgIHByaW50KCJGQUlMICIgKyBhICsgIiBpcyBub3Qg
YXJvdW5kICIgKyBiICsgIiAoYWN0dWFsOiAiICsgZXZhbEEgKyAiKSIsICJyZWQiKTsKQEAgLTM1
LDYgKzM1LDcgQEAgY3R4LnNjYWxlKDIsIDIpOwogY3R4LnNoYWRvd09mZnNldFggPSAxMDA7CiBj
dHguc2hhZG93T2Zmc2V0WSA9IDEwMDsKIGN0eC5zdHJva2VTdHlsZSA9ICdyZ2JhKDAsIDAsIDI1
NSwgMSknOworY3R4LmxpbmVXaWR0aCA9IDU7CiAKIGN0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1
NSwgMCwgMCwgMS4wKSc7CiBjdHguYmVnaW5QYXRoKCk7CkBAIC03Niw3OSArNzcsNzkgQEAgY3R4
LnN0cm9rZSgpOwogdmFyIGQ7IC8vIGltYWdlRGF0YS5kYXRhCiAKIC8vIFZlcmlmeSBzb2xpZCBz
aGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDIwNSwgMSwgMSkuZGF0YTsKK2QgPSBj
dHguZ2V0SW1hZ2VEYXRhKDI1MCwgMjAwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAn
MjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBz
aG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCAyOTUs
IDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzMDAsIDI5MCwgMSwgMSkuZGF0YTsK
IHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxk
QmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0
SW1hZ2VEYXRhKDIwMSwgMjk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAw
LCAyNTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdk
WzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1
NScpOwogCiAvLyBWZXJpZnkgc29saWQgYWxwaGEgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURh
dGEoMjAwLCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDQwNSwg
MSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAn
MCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYn
KTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4
LmdldEltYWdlRGF0YSgyMDEsIDUwMCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1
NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hv
dWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0
OTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzMDAsIDQ5OSwgMSwgMSkuZGF0
YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAogLy8g
VmVyaWZ5IGJsdXJyeSBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgzOTQsIDIwOCwgMSwg
MSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQwNCwgMjEwLCAxLCAxKS5kYXRhOwogc2hv
dWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgn
ZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcyMCcpOworc2hvdWxkQmVBcm91
bmQoJ2RbM10nLCAnMTQ5Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwMywgMzAxLCAxLCAx
KS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA1LCAyNTAsIDEsIDEpLmRhdGE7CiBzaG91
bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdk
WzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzIyJyk7CitzaG91bGRCZUFyb3Vu
ZCgnZFszXScsICcxMTYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA0LCAyNTAsIDEsIDEp
LmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDIwNSwgMSwgMSkuZGF0YTsKIHNob3Vs
ZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
Ml0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjgnKTsKK3Nob3VsZEJlQXJvdW5k
KCdkWzNdJywgJzExNScpOwogCiAvLyBWZXJpZnkgYmx1cnJ5IGFscGhhIHNoYWRvdy4KLWQgPSBj
dHguZ2V0SW1hZ2VEYXRhKDQwNSwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURh
dGEoNTA1LCA0NTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3Vs
ZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5k
KCdkWzNdJywgJzIyJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICc3MCcpOwogCi1kID0gY3R4
LmdldEltYWdlRGF0YSg0MTUsIDQ5NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRh
KDUwNSwgNDUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRC
ZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgn
ZFszXScsICcxNScpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzAnKTsKIAotZCA9IGN0eC5n
ZXRJbWFnZURhdGEoNDUwLCA1MDQsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0
NTAsIDQwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUo
J2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2Rb
M10nLCAnMTcnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzY5Jyk7CiAKIHZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
c2NyaXB0LXRlc3RzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5qcyBiL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVj
dC1zaGFkb3cuanMKaW5kZXggYjY3ZjI0NC4uYTA5MGI0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNo
YWRvdy5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFz
LXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93LmpzCkBAIC01NSw3ICs1NSw3IEBAIGN0eC5maWxs
UmVjdCgyMDAsIC0yNTAsIDUwLCA1MCk7CiB2YXIgZDsgLy8gaW1hZ2VEYXRhLmRhdGEKIAogLy8g
VmVyaWZ5IHNvbGlkIHNoYWRvdy4KLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjA1LCAxLCAx
KS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAxLCAyMDUsIDEsIDEpLmRhdGE7CiBzaG91
bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdk
WzJdJywgJzAnKTsKQEAgLTgwLDcgKzgwLDcgQEAgc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTI3Jyk7CiAKLWQg
PSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDUwLCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFn
ZURhdGEoMjk4LCA0NTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNo
b3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1NraXBwZWQKaW5kZXggZTcxNWEzNy4uMGIwOTQwNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Nr
aXBwZWQKQEAgLTEwMjUsNiArMTAyNSw3IEBAIGVkaXRpbmcvdW5zdXBwb3J0ZWQtY29udGVudC90
YWJsZS10eXBlLWJlZm9yZS5odG1sCiBmYXN0L2NhbnZhcy9jYW52YXMtYmctem9vbS5odG1sCiBm
YXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRhLmh0bWwKIGZhc3QvY2FudmFzL2NhbnZhcy1n
cmFkaWVudC1hZGRTdG9wLWVycm9yLmh0bWwKK2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1z
LWZpbGxSZWN0LXNoYWRvdy5odG1sCiBmYXN0L2NhbnZhcy9jYW52YXMtem9vbS5odG1sCiBmYXN0
L2Nzcy9jc3MxX2ZvcndhcmRfY29tcGF0aWJsZV9wYXJzaW5nLmh0bWwKIGZhc3QvY3NzL2ludmFs
aWQtcGVyY2VudGFnZS1wcm9wZXJ0eS5odG1sCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNiZGZlOWYuLjliZDdhYzEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTAtMTItMTcgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBDYW52YXMg
c2hhZG93IG9mZnNldCBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IGFueSB0cmFuc2Zvcm1hdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0MjIK
KworICAgICAgICBPbiBhIGNhbnZhcyBjb250ZXh0LCBzaGFkb3dzIGFyZSBjdXJyZW50bHkgYWZm
ZWN0ZWQgYnkgYWxsCisgICAgICAgIHRyYW5zZm9ybWF0aW9ucyBleGNlcHQgc2NhbGluZy4gQWNj
b3JkaW5nIHRvIHRoZSBzcGVjOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mv
d2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbCNz
aGFkb3dzCisKKyAgICAgICAgIlRoZSBzaGFkb3dPZmZzZXRYIGFuZCBzaGFkb3dPZmZzZXRZIGF0
dHJpYnV0ZXMgc3BlY2lmeSB0aGUgZGlzdGFuY2UKKyAgICAgICAgdGhhdCB0aGUgc2hhZG93IHdp
bGwgYmUgb2Zmc2V0IGluIHRoZSBwb3NpdGl2ZSBob3Jpem9udGFsIGFuZCBwb3NpdGl2ZQorICAg
ICAgICB2ZXJ0aWNhbCBkaXN0YW5jZSByZXNwZWN0aXZlbHkuIFRoZWlyIHZhbHVlcyBhcmUgaW4g
Y29vcmRpbmF0ZSBzcGFjZQorICAgICAgICB1bml0cy4gVGhleSBhcmUgbm90IGFmZmVjdGVkIGJ5
IHRoZSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4iCisKKyAgICAgICAgTk9URTogdGhp
cyBhcHBsaWVzIG9ubHkgdG8gY2FudmFzLCBub3QgdG8gYm94IHNoYWRvd3MuCisKKyAgICAgICAg
VGVzdDogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWwK
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6Q29udGV4dFNoYWRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGV4dFNoYWRvdzo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGV4dFNoYWRvdzo6c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6b2Zmc2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNo
YWRvdzo6YmVnaW5TaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93
OjplbmRTaGFkb3dMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bXVzdFVzZUNvbnRleHRTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KToKKwogMjAxMC0xMi0xNyAgVy4gSmFtZXMgTWFjTGVh
biAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMg
Um9iaW5zb24uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRT
aGFkb3cuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcApp
bmRleCA4N2ExYzVjLi41ZTdhN2EwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbnRleHRTaGFkb3cuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
dGV4dFNoYWRvdy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJDb250ZXh0U2hhZG93LmgiCiAKKyNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBA
IC00MSw2ICs0Miw3IEBAIENvbnRleHRTaGFkb3c6OkNvbnRleHRTaGFkb3coKQogICAgIDogbV90
eXBlKE5vU2hhZG93KQogICAgICwgbV9ibHVyRGlzdGFuY2UoMCkKICAgICAsIG1fbGF5ZXJDb250
ZXh0KDApCisgICAgLCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZhbHNlKQogewogfQogCkBA
IC00OSw2ICs1MSw3IEBAIENvbnRleHRTaGFkb3c6OkNvbnRleHRTaGFkb3coY29uc3QgQ29sb3Im
IGNvbG9yLCBmbG9hdCByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYKICAgICAsIG1fYmx1ckRpc3Rh
bmNlKHJvdW5kKHJhZGl1cykpCiAgICAgLCBtX29mZnNldChvZmZzZXQpCiAgICAgLCBtX2xheWVy
Q29udGV4dCgwKQorICAgICwgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhmYWxzZSkKIHsKICAg
ICAvLyBTZWUgY29tbWVudHMgaW4gaHR0cDovL3dlYmtpdC5vcmcvYi80MDc5MywgaXQgc2VlbXMg
c2Vuc2libGUKICAgICAvLyB0byBmb2xsb3cgU2tpYSdzIGxpbWl0IG9mIDEyOCBwaXhlbHMgb2Yg
Ymx1ciByYWRpdXMKQEAgLTc3LDYgKzgwLDIzIEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6Y2xlYXIo
KQogICAgIG1fb2Zmc2V0ID0gRmxvYXRTaXplKCk7CiB9CiAKK2Jvb2wgQ29udGV4dFNoYWRvdzo6
bXVzdFVzZUNvbnRleHRTaGFkb3coUGxhdGZvcm1Db250ZXh0IGNvbnRleHQpCit7CisgICAgLy8g
V2UgY2FuJ3QgYXZvaWQgQ29udGV4dFNoYWRvdywgc2luY2UgdGhlIHNoYWRvdyBoYXMgYmx1ci4K
KyAgICBpZiAobV90eXBlID09IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIC8vIFdlIGNhbiBhdm9pZCBDb250ZXh0U2hhZG93IGFuZCBvcHRpbWl6
ZSwgc2luY2Ugd2UncmUgbm90IGRyYXdpbmcgb24gYQorICAgIC8vIGNhbnZhcyBhbmQgYm94IHNo
YWRvd3MgYXJlIGFmZmVjdGVkIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCisgICAgaWYg
KCFzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Ly8gV2UgY2FuIGF2b2lkIENvbnRleHRTaGFkb3csIHNpbmNlIHRoZXJlIGFyZSBubyB0cmFuc2Zv
cm1hdGlvbnMgdG8gYXBwbHkgdG8gdGhlIGNhbnZhcy4KKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCB0cmFuc2Zvcm0oZ2V0VHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tQ29udGV4dChjb250
ZXh0KSk7CisgICAgaWYgKHRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAvLyBPdGhlcndpc2UsIG5vIGNoYW5jZSBhdm9pZGluZyBDb250ZXh0U2hhZG93
LgorICAgIHJldHVybiB0cnVlOworfQorCiAvLyBJbnN0ZWFkIG9mIGludGVnZXIgZGl2aXNpb24s
IHdlIHVzZSAxNy4xNSBmb3IgZml4ZWQtcG9pbnQgZGl2aXNpb24uCiBzdGF0aWMgY29uc3QgaW50
IEJsdXJTdW1TaGlmdCA9IDE1OwogCkBAIC0xNDksMjkgKzE2OSw2MSBAQCB2b2lkIENvbnRleHRT
aGFkb3c6OmJsdXJMYXllckltYWdlKHVuc2lnbmVkIGNoYXIqIGltYWdlRGF0YSwgY29uc3QgSW50
U2l6ZSYgc2l6ZQogICAgIH0KIH0KIAotdm9pZCBDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXll
ckJvdW5kaW5nUmVjdChjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYg
Y2xpcFJlY3QpCitJbnRSZWN0IENvbnRleHRTaGFkb3c6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdS
ZWN0KGNvbnN0IFBsYXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVy
QXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCiB7Ci0gICAgLy8gQ2FsY3VsYXRlIHRoZSBk
ZXN0aW5hdGlvbiBvZiB0aGUgYmx1cnJlZCBsYXllci4KLSAgICBGbG9hdFJlY3QgZGVzdGluYXRp
b25SZWN0KGxheWVyQXJlYSk7Ci0gICAgZGVzdGluYXRpb25SZWN0Lm1vdmUobV9vZmZzZXQpOwot
ICAgIG1fbGF5ZXJSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChkZXN0aW5hdGlvblJlY3QpOworICAg
IC8vIENhbGN1bGF0ZSB0aGUgZGVzdGluYXRpb24gb2YgdGhlIGJsdXJyZWQgYW5kL29yIHRyYW5z
Zm9ybWVkIGxheWVyLgorICAgIEZsb2F0UmVjdCBsYXllckZsb2F0UmVjdDsKKyAgICBmbG9hdCBp
bmZsYXRpb24gPSAwOworCisgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3Jt
KGdldFRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbUNvbnRleHQoY29udGV4dCkpOworICAgIGlmICht
X3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zICYmICF0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKSB7Cisg
ICAgICAgIEZsb2F0UXVhZCB0cmFuc2Zvcm1lZFBvbHlnb24gPSB0cmFuc2Zvcm0ubWFwUXVhZChG
bG9hdFF1YWQobGF5ZXJBcmVhKSk7CisgICAgICAgIHRyYW5zZm9ybWVkUG9seWdvbi5tb3ZlKG1f
b2Zmc2V0KTsKKyAgICAgICAgbGF5ZXJGbG9hdFJlY3QgPSB0cmFuc2Zvcm0uaW52ZXJzZSgpLm1h
cFF1YWQodHJhbnNmb3JtZWRQb2x5Z29uKS5ib3VuZGluZ0JveCgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGxheWVyRmxvYXRSZWN0ID0gbGF5ZXJBcmVhOworICAgICAgICBsYXllckZsb2F0UmVj
dC5tb3ZlKG1fb2Zmc2V0KTsKKyAgICB9CiAKICAgICAvLyBXZSBleHBhbmQgdGhlIGFyZWEgYnkg
dGhlIGJsdXIgcmFkaXVzIHRvIGdpdmUgZXh0cmEgc3BhY2UgZm9yIHRoZSBibHVyIHRyYW5zaXRp
b24uCi0gICAgbV9sYXllclJlY3QuaW5mbGF0ZShtX3R5cGUgPT0gQmx1clNoYWRvdyA/IG1fYmx1
ckRpc3RhbmNlIDogMCk7CisgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7CisgICAgICAg
IGxheWVyRmxvYXRSZWN0LmluZmxhdGUobV9ibHVyRGlzdGFuY2UpOworICAgICAgICBpbmZsYXRp
b24gKz0gbV9ibHVyRGlzdGFuY2U7CisgICAgfQogCi0gICAgaWYgKCFjbGlwUmVjdC5jb250YWlu
cyhtX2xheWVyUmVjdCkpIHsKKyAgICBGbG9hdFJlY3QgdW5jbGlwcGVkTGF5ZXJSZWN0ID0gbGF5
ZXJGbG9hdFJlY3Q7CisKKyAgICBpZiAoIWNsaXBSZWN0LmNvbnRhaW5zKGVuY2xvc2luZ0ludFJl
Y3QobGF5ZXJGbG9hdFJlY3QpKSkgewogICAgICAgICAvLyBObyBuZWVkIHRvIGhhdmUgdGhlIGJ1
ZmZlciBsYXJnZXIgdGhhbiB0aGUgY2xpcC4KLSAgICAgICAgbV9sYXllclJlY3QuaW50ZXJzZWN0
KGNsaXBSZWN0KTsKKyAgICAgICAgbGF5ZXJGbG9hdFJlY3QuaW50ZXJzZWN0KGNsaXBSZWN0KTsK
IAogICAgICAgICAvLyBJZiB3ZSBhcmUgdG90YWxseSBvdXRzaWRlIHRoZSBjbGlwIHJlZ2lvbiwg
d2UgYXJlbid0IHBhaW50aW5nIGF0IGFsbC4KLSAgICAgICAgaWYgKG1fbGF5ZXJSZWN0LmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGxheWVyRmxvYXRSZWN0Lmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBJbnRSZWN0KDAsIDAsIDAsIDApOwogCiAgICAg
ICAgIC8vIFdlIGFkanVzdCBhZ2FpbiBiZWNhdXNlIHRoZSBwaXhlbHMgYXQgdGhlIGJvcmRlcnMg
YXJlIHN0aWxsCiAgICAgICAgIC8vIHBvdGVudGlhbGx5IGFmZmVjdGVkIGJ5IHRoZSBwaXhlbHMg
b3V0c2lkZSB0aGUgYnVmZmVyLgotICAgICAgICBpZiAobV90eXBlID09IEJsdXJTaGFkb3cpCi0g
ICAgICAgICAgICBtX2xheWVyUmVjdC5pbmZsYXRlKG1fdHlwZSA9PSBCbHVyU2hhZG93ID8gbV9i
bHVyRGlzdGFuY2UgOiAwKTsKKyAgICAgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7Cisg
ICAgICAgICAgICBsYXllckZsb2F0UmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNlKTsKKyAgICAg
ICAgICAgIHVuY2xpcHBlZExheWVyUmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNlKTsKKyAgICAg
ICAgICAgIGluZmxhdGlvbiArPSBtX2JsdXJEaXN0YW5jZTsKKyAgICAgICAgfQogICAgIH0KKwor
ICAgIGNvbnN0IGludCBmcmFtZVNpemUgPSBpbmZsYXRpb24gKiAyOworICAgIG1fc291cmNlUmVj
dCA9IEludFJlY3QoMCwgMCwgbGF5ZXJBcmVhLndpZHRoKCkgKyBmcmFtZVNpemUsIGxheWVyQXJl
YS5oZWlnaHQoKSArIGZyYW1lU2l6ZSk7CisgICAgbV9sYXllck9yaWdpbiA9IEZsb2F0UG9pbnQo
bGF5ZXJGbG9hdFJlY3QueCgpLCBsYXllckZsb2F0UmVjdC55KCkpOworCisgICAgY29uc3QgRmxv
YXRQb2ludCBtX3VuY2xpcHBlZExheWVyT3JpZ2luID0gRmxvYXRQb2ludCh1bmNsaXBwZWRMYXll
clJlY3QueCgpLCB1bmNsaXBwZWRMYXllclJlY3QueSgpKTsKKyAgICBjb25zdCBGbG9hdFNpemUg
Y2xpcHBlZE91dCA9IG1fdW5jbGlwcGVkTGF5ZXJPcmlnaW4gLSBtX2xheWVyT3JpZ2luOworCisg
ICAgLy8gU2V0IHRoZSBvcmlnaW4gYXMgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgc2NyYXRj
aCBpbWFnZSwgb3IsIGluIGNhc2UgdGhlcmUncyBhIGNsaXBwZWQKKyAgICAvLyBvdXQgcmVnaW9u
LCBzZXQgdGhlIG9yaWdpbiBhY2NvcmRpbmdseSB0byB0aGUgZnVsbCBib3VuZGluZyByZWN0J3Mg
dG9wLWxlZnQgY29ybmVyLgorICAgIGNvbnN0IGZsb2F0IHRyYW5zbGF0aW9uWCA9IC1sYXllckFy
ZWEueCgpICsgaW5mbGF0aW9uIC0gZmFic2YoY2xpcHBlZE91dC53aWR0aCgpKTsKKyAgICBjb25z
dCBmbG9hdCB0cmFuc2xhdGlvblkgPSAtbGF5ZXJBcmVhLnkoKSArIGluZmxhdGlvbiAtIGZhYnNm
KGNsaXBwZWRPdXQuaGVpZ2h0KCkpOworICAgIG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24gPSBG
bG9hdFBvaW50KHRyYW5zbGF0aW9uWCwgdHJhbnNsYXRpb25ZKTsKKworICAgIHJldHVybiBlbmNs
b3NpbmdJbnRSZWN0KGxheWVyRmxvYXRSZWN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93Lmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaAppbmRleCBmYTc3OGFm
Li5kMTNkMzIxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRT
aGFkb3cuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaApA
QCAtNzksNiArNzksNyBAQCBwdWJsaWM6CiAgICAgQ29udGV4dFNoYWRvdygpOwogICAgIENvbnRl
eHRTaGFkb3coY29uc3QgQ29sb3ImLCBmbG9hdCByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zm
c2V0KTsKIAorICAgIGJvb2wgbXVzdFVzZUNvbnRleHRTaGFkb3coUGxhdGZvcm1Db250ZXh0KTsK
ICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICAvLyBUaGUgcGFpciBiZWdpblNoYWRvd0xheWVyIGFu
ZCBlbmRTaGFkb3dMYXllciBjcmVhdGVzIGEgdGVtcG9yYXJ5IGltYWdlCkBAIC0xMDYsMjUgKzEw
NywyOCBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1Db250ZXh0IGJlZ2luU2hhZG93TGF5ZXIoUGxh
dGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSk7CiAgICAgdm9pZCBlbmRT
aGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQpOwogICAgIHN0YXRpYyB2b2lkIHB1cmdlU2NyYXRj
aEJ1ZmZlcigpOworICAgIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBnZXRUcmFuc2Zvcm1h
dGlvbk1hdHJpeEZyb21Db250ZXh0KFBsYXRmb3JtQ29udGV4dCk7CisKKyAgICB2b2lkIHNldFNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgZW5hYmxlKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMgPSBlbmFibGU7IH0KKyAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29u
c3QgeyByZXR1cm4gbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQogI2lmIFBMQVRGT1JNKENB
SVJPKQogICAgIHZvaWQgZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0UmFkaXVzID0gSW50U2l6
ZSgpLCBjb25zdCBJbnRTaXplJiB0b3BSaWdodFJhZGl1cyA9IEludFNpemUoKSwgY29uc3QgSW50
U2l6ZSYgYm90dG9tTGVmdFJhZGl1cyA9IEludFNpemUoKSwgY29uc3QgSW50U2l6ZSYgYm90dG9t
UmlnaHRSYWRpdXMgPSBJbnRTaXplKCkpOwogI2VuZGlmCi0KICNpZiBQTEFURk9STShRVCkKLSAg
ICBRUG9pbnRGIG9mZnNldCgpIHsgcmV0dXJuIFFQb2ludEYobV9vZmZzZXQud2lkdGgoKSwgbV9v
ZmZzZXQuaGVpZ2h0KCkpOyB9CisgICAgUVBvaW50RiBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBR
UG9pbnRGKG1fb2Zmc2V0LndpZHRoKCksIG1fb2Zmc2V0LmhlaWdodCgpKTsgfQogI2VuZGlmCiAK
LQogcHJpdmF0ZToKLSAgICBJbnRSZWN0IG1fbGF5ZXJSZWN0OwotICAgIFBsYXRmb3JtSW1hZ2Ug
bV9sYXllckltYWdlOwotICAgIFBsYXRmb3JtQ29udGV4dCBtX2xheWVyQ29udGV4dDsKLQotICAg
IC8vIFVzZWQgZm9yIHJlZmVyZW5jZSB3aGVuIGNhbnZhcyBzY2FsZSh4LHkpIHdhcyBjYWxsZWQu
Ci0gICAgRmxvYXRSZWN0IG1fdW5zY2FsZWRMYXllclJlY3Q7CisgICAgUGxhdGZvcm1JbWFnZSBt
X2xheWVySW1hZ2U7IC8vIEJ1ZmZlciB0byB3aGVyZSB0aGUgdGVtcG9yYXJ5IHNoYWRvdyB3aWxs
IGJlIGRyYXduIHRvLgorICAgIFBsYXRmb3JtQ29udGV4dCBtX2xheWVyQ29udGV4dDsgLy8gQ29u
dGV4dCB1c2VkIHRvIHBhaW50IHRoZSBzaGFkb3cgdG8gdGhlIGxheWVyIGltYWdlLgorICAgIEZs
b2F0UmVjdCBtX3NvdXJjZVJlY3Q7IC8vIFN1Yi1yZWN0IG9mIG1fbGF5ZXJJbWFnZSB0aGF0IGNv
bnRhaW5zIHRoZSBzaGFkb3cgcGl4ZWxzLgorICAgIEZsb2F0UG9pbnQgbV9sYXllck9yaWdpbjsg
Ly8gVG9wLWxlZnQgY29ybmVyIG9mIHRoZSAocG9zc2libHkgY2xpcHBlZCkgYm91bmRpbmcgcmVj
dCB0byBkcmF3IHRoZSBzaGFkb3cgdG8uCisgICAgRmxvYXRQb2ludCBtX2xheWVyQ29udGV4dFRy
YW5zbGF0aW9uOyAvLyBUcmFuc2xhdGlvbiB0byBhcHBseSB0byBtX2xheWVyQ29udGV4dCBmb3Ig
dGhlIHNoYWRvdyB0byBiZSBjb3JyZWN0bHkgY2xpcHBlZC4KKyAgICBib29sIG1fc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXM7CiAKICAgICB2b2lkIGJsdXJMYXllckltYWdlKHVuc2lnbmVkIGNoYXIq
LCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGludCBzdHJpZGUpOwotICAgIHZvaWQgY2FsY3Vs
YXRlTGF5ZXJCb3VuZGluZ1JlY3QoY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IElu
dFJlY3QmIGNsaXBSZWN0KTsKKyAgICBJbnRSZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KGNvbnN0IFBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0
IEludFJlY3QmIGNsaXBSZWN0KTsKKwogI2lmIFBMQVRGT1JNKENBSVJPKQogICAgIHZvaWQgZHJh
d1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKFBsYXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBJ
bnRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywg
Y29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMsIGZsb2F0IGFscGhhKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Db250ZXh0U2hhZG93
Q2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Db250ZXh0U2hhZG93
Q2Fpcm8uY3BwCmluZGV4IDY5OWVkZjcuLjY4MDEyNjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRTaGFkb3dDYWlyby5jcHAKQEAgLTgyLDE5
ICs4MiwyNSBAQCBzdGF0aWMgY2Fpcm9fc3VyZmFjZV90KiBnZXRTY3JhdGNoQnVmZmVyKGNvbnN0
IEludFNpemUmIHNpemUpCiAgICAgcmV0dXJuIHNjcmF0Y2hCdWZmZXI7CiB9CiAKLVBsYXRmb3Jt
Q29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKK1RyYW5zZm9ybWF0aW9uTWF0cml4
IENvbnRleHRTaGFkb3c6OmdldFRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbUNvbnRleHQoUGxhdGZv
cm1Db250ZXh0IGNvbnRleHQpCiB7Ci0gICAgbV91bnNjYWxlZExheWVyUmVjdCA9IGxheWVyQXJl
YTsKKyAgICBjYWlyb19tYXRyaXhfdCB0cmFuc2Zvcm07CisgICAgY2Fpcm9fZ2V0X21hdHJpeChj
b250ZXh0LCAmdHJhbnNmb3JtKTsKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgodHJh
bnNmb3JtLnh4LCB0cmFuc2Zvcm0ueXgsIHRyYW5zZm9ybS54eSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHJhbnNmb3JtLnl5LCB0cmFuc2Zvcm0ueDAsIHRyYW5zZm9ybS55MCk7
Cit9CiAKK1BsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBs
YXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKK3sKICAg
ICBkb3VibGUgeDEsIHgyLCB5MSwgeTI7CiAgICAgY2Fpcm9fY2xpcF9leHRlbnRzKGNvbnRleHQs
ICZ4MSwgJnkxLCAmeDIsICZ5Mik7Ci0gICAgY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QobGF5
ZXJBcmVhLCBJbnRSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSkpOworICAgIEludFJlY3Qg
bGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoY29udGV4dCwgbGF5ZXJBcmVh
LCBJbnRSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSkpOwogCiAgICAgLy8gRG9uJ3QgcGFp
bnQgaWYgd2UgYXJlIHRvdGFsbHkgb3V0c2lkZSB0aGUgY2xpcCByZWdpb24uCi0gICAgaWYgKG1f
bGF5ZXJSZWN0LmlzRW1wdHkoKSkKKyAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBtX2xheWVySW1hZ2UgPSBnZXRTY3JhdGNoQnVmZmVyKG1fbGF5
ZXJSZWN0LnNpemUoKSk7CisgICAgbV9sYXllckltYWdlID0gZ2V0U2NyYXRjaEJ1ZmZlcihsYXll
clJlY3Quc2l6ZSgpKTsKICAgICBtX2xheWVyQ29udGV4dCA9IGNhaXJvX2NyZWF0ZShtX2xheWVy
SW1hZ2UpOwogCiAgICAgLy8gQWx3YXlzIGNsZWFyIHRoZSBzdXJmYWNlIGZpcnN0LgpAQCAtMTAy
LDggKzEwOCw3IEBAIFBsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xh
eWVyKFBsYXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25zdCBGCiAgICAgY2Fpcm9fcGFpbnQobV9s
YXllckNvbnRleHQpOwogICAgIGNhaXJvX3NldF9vcGVyYXRvcihtX2xheWVyQ29udGV4dCwgQ0FJ
Uk9fT1BFUkFUT1JfT1ZFUik7CiAKLSAgICBjYWlyb190cmFuc2xhdGUobV9sYXllckNvbnRleHQs
IG1fb2Zmc2V0LndpZHRoKCksIG1fb2Zmc2V0LmhlaWdodCgpKTsKLSAgICBjYWlyb190cmFuc2xh
dGUobV9sYXllckNvbnRleHQsIC1tX2xheWVyUmVjdC54KCksIC1tX2xheWVyUmVjdC55KCkpOwor
ICAgIGNhaXJvX3RyYW5zbGF0ZShtX2xheWVyQ29udGV4dCwgbV9sYXllckNvbnRleHRUcmFuc2xh
dGlvbi54KCksIG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24ueSgpKTsKICAgICByZXR1cm4gbV9s
YXllckNvbnRleHQ7CiB9CiAKQEAgLTEyMiwxOSArMTI3LDcgQEAgdm9pZCBDb250ZXh0U2hhZG93
OjplbmRTaGFkb3dMYXllcihjYWlyb190KiBjcikKIAogICAgIGNhaXJvX3NhdmUoY3IpOwogICAg
IHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IsIG1fY29sb3IpOwotCi0gICAgY2Fpcm9fbWF0cml4
X3QgdHJhbnNmb3JtOwotICAgIGNhaXJvX2dldF9tYXRyaXgoY3IsICZ0cmFuc2Zvcm0pOwotICAg
IGRvdWJsZSB4ID0gbV9sYXllclJlY3QueCgpOwotICAgIGRvdWJsZSB5ID0gbV9sYXllclJlY3Qu
eSgpOwotCi0gICAgZG91YmxlIHhTY2FsZSA9IHNxcnQodHJhbnNmb3JtLnh4ICogdHJhbnNmb3Jt
Lnh4ICsgdHJhbnNmb3JtLnl4ICogdHJhbnNmb3JtLnl4KTsKLSAgICBkb3VibGUgeVNjYWxlID0g
c3FydCh0cmFuc2Zvcm0ueHkgKiB0cmFuc2Zvcm0ueHkgKyB0cmFuc2Zvcm0ueXkgKiB0cmFuc2Zv
cm0ueXkpOwotICAgIGlmICh4U2NhbGUgIT0gMSB8fCB5U2NhbGUgIT0gMSkgewotICAgICAgICB4
ID0gbV91bnNjYWxlZExheWVyUmVjdC54KCkgKyBtX29mZnNldC53aWR0aCgpICAvIHRyYW5zZm9y
bS54eCAtIG1fYmx1ckRpc3RhbmNlOwotICAgICAgICB5ID0gbV91bnNjYWxlZExheWVyUmVjdC55
KCkgKyBtX29mZnNldC5oZWlnaHQoKSAvIHRyYW5zZm9ybS55eSAtIG1fYmx1ckRpc3RhbmNlOwot
ICAgIH0KLSAgICBjYWlyb19tYXNrX3N1cmZhY2UoY3IsIG1fbGF5ZXJJbWFnZSwgeCwgeSk7Cisg
ICAgY2Fpcm9fbWFza19zdXJmYWNlKGNyLCBtX2xheWVySW1hZ2UsIG1fbGF5ZXJPcmlnaW4ueCgp
LCBtX2xheWVyT3JpZ2luLnkoKSk7CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiAKICAgICAvLyBT
Y2hlZHVsZSBhIHB1cmdlIG9mIHRoZSBzY3JhdGNoIGJ1ZmZlci4gV2UgZG8gbm90IG5lZWQgdG8g
ZGVzdHJveSB0aGUgc3VyZmFjZS4KQEAgLTIzNSw5ICsyMjgsOSBAQCB2b2lkIENvbnRleHRTaGFk
b3c6OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgcmVjdAogICAgIC8vIFJlZHVjZSB0aGUgc2l6ZSBvZiB3aGF0IHdlIGhhdmUgdG8gZHJhdyB3
aXRoIHRoZSBjbGlwIGFyZWEuCiAgICAgZG91YmxlIHgxLCB4MiwgeTEsIHkyOwogICAgIGNhaXJv
X2NsaXBfZXh0ZW50cyhjciwgJngxLCAmeTEsICZ4MiwgJnkyKTsKLSAgICBjYWxjdWxhdGVMYXll
ckJvdW5kaW5nUmVjdChzaGFkb3dSZWN0LCBJbnRSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5
MSkpOworICAgIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNyLCBzaGFkb3dSZWN0LCBJbnRS
ZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSkpOwogCi0gICAgaWYgKChzaGFkb3dUZW1wbGF0
ZVNpemUud2lkdGgoKSAqIHNoYWRvd1RlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+IG1fbGF5ZXJSZWN0
LndpZHRoKCkgKiBtX2xheWVyUmVjdC5oZWlnaHQoKSkpIHsKKyAgICBpZiAoKHNoYWRvd1RlbXBs
YXRlU2l6ZS53aWR0aCgpICogc2hhZG93VGVtcGxhdGVTaXplLmhlaWdodCgpID4gbV9zb3VyY2VS
ZWN0LndpZHRoKCkgKiBtX3NvdXJjZVJlY3QuaGVpZ2h0KCkpKSB7CiAgICAgICAgIGRyYXdSZWN0
U2hhZG93V2l0aG91dFRpbGluZyhjciwgcmVjdCwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRp
dXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzLCBjb250ZXh0LT5nZXRBbHBo
YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCA0YjExNzU2Li4wZDkyYWRhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCkBAIC03Miw3ICs3Miw3
IEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNhaXJvX3QqIGNvbnRleHQsCiAgICAgaWYgKCEoZ3JhcGhpY3NDb250ZXh0LT50
ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlRmlsbCkgfHwgc2hhZG93LT5tX3R5cGUgPT0gQ29u
dGV4dFNoYWRvdzo6Tm9TaGFkb3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChzaGFkb3ct
Pm1fdHlwZSA9PSBDb250ZXh0U2hhZG93OjpTb2xpZFNoYWRvdykgeworICAgIGlmICghc2hhZG93
LT5tdXN0VXNlQ29udGV4dFNoYWRvdyhjb250ZXh0KSkgewogICAgICAgICAvLyBPcHRpbWl6ZSBu
b24tYmx1cnJ5IHNoYWRvd3MsIGJ5IGp1c3QgZHJhd2luZyB0ZXh0IHdpdGhvdXQgdGhlIENvbnRl
eHRTaGFkb3cuCiAgICAgICAgIGNhaXJvX3NhdmUoY29udGV4dCk7CiAgICAgICAgIGNhaXJvX3Ry
YW5zbGF0ZShjb250ZXh0LCBzaGFkb3ctPm1fb2Zmc2V0LndpZHRoKCksIHNoYWRvdy0+bV9vZmZz
ZXQuaGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCA1MDMyZjk3Li5hNmVkYWY3IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dENhaXJvLmNwcApAQCAtODcxLDYgKzg3MSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRQbGF0Zm9ybVNoYWRvdyhGbG9hdFNpemUgY29uc3QmIHNpemUsIGZsb2F0IGJsdXIsIENvbG9y
CiAgICAgICAgIG1fZGF0YS0+c2hhZG93ID0gQ29udGV4dFNoYWRvdyhjb2xvciwgYmx1ciwgRmxv
YXRTaXplKHNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpKTsKICAgICB9IGVsc2UKICAgICAg
ICAgbV9kYXRhLT5zaGFkb3cgPSBDb250ZXh0U2hhZG93KGNvbG9yLCBibHVyLCBGbG9hdFNpemUo
c2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CisKKyAgICBtX2RhdGEtPnNoYWRvdy5zZXRT
aGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsK
IH0KIAogQ29udGV4dFNoYWRvdyogR3JhcGhpY3NDb250ZXh0Ojpjb250ZXh0U2hhZG93KCkKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAKaW5kZXggYTBkNWM2Mi4uZWFi
ZDkxMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAKQEAgLTIy
NSw3ICsyMjUsNyBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBjYWlyb190KiBjb250ZXh0LAogICAgIEZsb2F0UG9pbnQgdG90
YWxPZmZzZXQocG9pbnQgKyBzaGFkb3ctPm1fb2Zmc2V0KTsKIAogICAgIC8vIE9wdGltaXplIG5v
bi1ibHVycnkgc2hhZG93cywgYnkganVzdCBkcmF3aW5nIHRleHQgd2l0aG91dCB0aGUgQ29udGV4
dFNoYWRvdy4KLSAgICBpZiAoc2hhZG93LT5tX3R5cGUgPT0gQ29udGV4dFNoYWRvdzo6U29saWRT
aGFkb3cpIHsKKyAgICBpZiAoIXNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3coY29udGV4dCkp
IHsKICAgICAgICAgY2Fpcm9fc2F2ZShjb250ZXh0KTsKICAgICAgICAgY2Fpcm9fdHJhbnNsYXRl
KGNvbnRleHQsIHRvdGFsT2Zmc2V0LngoKSwgdG90YWxPZmZzZXQueSgpKTsKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwCmluZGV4IGY3Yzcw
ZjYuLjQ4Zjc5NzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29u
dGV4dFNoYWRvd1F0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRl
eHRTaGFkb3dRdC5jcHAKQEAgLTEwMCw2ICsxMDAsMTMgQEAgdm9pZCBTaGFkb3dCdWZmZXI6OnRp
bWVyRXZlbnQoUVRpbWVyRXZlbnQqIGV2ZW50KQogICAgIFFPYmplY3Q6OnRpbWVyRXZlbnQoZXZl
bnQpOwogfQogCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBDb250ZXh0U2hhZG93OjpnZXRUcmFuc2Zv
cm1hdGlvbk1hdHJpeEZyb21Db250ZXh0KFBsYXRmb3JtQ29udGV4dCBjb250ZXh0KQoreworICAg
IGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSA9IGNvbnRleHQtPnRyYW5zZm9ybSgpOworICAg
IHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCh0cmFuc2Zvcm0ubTExKCksIHRyYW5zZm9ybS5t
MTIoKSwgdHJhbnNmb3JtLm0yMSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
cmFuc2Zvcm0ubTIyKCksIHRyYW5zZm9ybS5keCgpLCB0cmFuc2Zvcm0uZHkoKSk7Cit9CisKIFFf
R0xPQkFMX1NUQVRJQyhTaGFkb3dCdWZmZXIsIHNjcmF0Y2hTaGFkb3dCdWZmZXIpCiAKIFBsYXRm
b3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4
dCBwLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKQEAgLTExNCwyNSArMTIxLDIyIEBAIFBs
YXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29u
dGV4dCBwLCBjb25zdCBGbG9hdFJlCiAgICAgZWxzZQogICAgICAgICBjbGlwUmVjdCA9IHAtPnRy
YW5zZm9ybSgpLmludmVydGVkKCkubWFwUmVjdChwLT53aW5kb3coKSk7CiAKLSAgICBtX3Vuc2Nh
bGVkTGF5ZXJSZWN0ID0gbGF5ZXJBcmVhOwotICAgIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KGxheWVyQXJlYSwgSW50UmVjdChjbGlwUmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qu
d2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpKTsKKyAgICAvLyBTZXQgbV9sYXllck9yaWdpbiwg
bV9sYXllckNvbnRleHRUcmFuc2xhdGlvbiwgbV9zb3VyY2VSZWN0LgorICAgIEludFJlY3QgY2xp
cChjbGlwUmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3Qu
aGVpZ2h0KCkpOworICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGlu
Z1JlY3QocCwgbGF5ZXJBcmVhLCBjbGlwKTsKIAogICAgIC8vIERvbid0IHBhaW50IGlmIHdlIGFy
ZSB0b3RhbGx5IG91dHNpZGUgdGhlIGNsaXAgcmVnaW9uLgotICAgIGlmIChtX2xheWVyUmVjdC5p
c0VtcHR5KCkpCisgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAw
OwogCiAgICAgU2hhZG93QnVmZmVyKiBzaGFkb3dCdWZmZXIgPSBzY3JhdGNoU2hhZG93QnVmZmVy
KCk7Ci0gICAgUUltYWdlKiBzaGFkb3dJbWFnZSA9IHNoYWRvd0J1ZmZlci0+c2NyYXRjaEltYWdl
KG1fbGF5ZXJSZWN0LnNpemUoKSk7CisgICAgUUltYWdlKiBzaGFkb3dJbWFnZSA9IHNoYWRvd0J1
ZmZlci0+c2NyYXRjaEltYWdlKGxheWVyUmVjdC5zaXplKCkpOwogICAgIG1fbGF5ZXJJbWFnZSA9
IFFJbWFnZSgqc2hhZG93SW1hZ2UpOwogCiAgICAgbV9sYXllckNvbnRleHQgPSBuZXcgUVBhaW50
ZXI7CiAgICAgbV9sYXllckNvbnRleHQtPmJlZ2luKCZtX2xheWVySW1hZ2UpOwogICAgIG1fbGF5
ZXJDb250ZXh0LT5zZXRGb250KHAtPmZvbnQoKSk7Ci0gICAgbV9sYXllckNvbnRleHQtPnRyYW5z
bGF0ZShtX29mZnNldC53aWR0aCgpLCBtX29mZnNldC5oZWlnaHQoKSk7Ci0KLSAgICAvLyBUaGUg
b3JpZ2luIGlzIG5vdyB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBzY3JhdGNoIGltYWdlLgot
ICAgIG1fbGF5ZXJDb250ZXh0LT50cmFuc2xhdGUoLW1fbGF5ZXJSZWN0LngoKSwgLW1fbGF5ZXJS
ZWN0LnkoKSk7Ci0KKyAgICBtX2xheWVyQ29udGV4dC0+dHJhbnNsYXRlKG1fbGF5ZXJDb250ZXh0
VHJhbnNsYXRpb24pOwogICAgIHJldHVybiBtX2xheWVyQ29udGV4dDsKIH0KIApAQCAtMTU1LDEz
ICsxNTksNyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKFBsYXRmb3JtQ29u
dGV4dCBwKQogICAgICAgICBwLmVuZCgpOwogICAgIH0KIAotICAgIGNvbnN0IFFUcmFuc2Zvcm0g
dHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0gICAgaWYgKHRyYW5zZm9ybS5pc1NjYWxpbmco
KSkgewotICAgICAgICBxcmVhbCB4ID0gbV91bnNjYWxlZExheWVyUmVjdC54KCkgKyBtX29mZnNl
dC53aWR0aCgpICAvIHRyYW5zZm9ybS5tMTEoKSAtIG1fYmx1ckRpc3RhbmNlOwotICAgICAgICBx
cmVhbCB5ID0gbV91bnNjYWxlZExheWVyUmVjdC55KCkgKyBtX29mZnNldC5oZWlnaHQoKSAvIHRy
YW5zZm9ybS5tMjIoKSAtIG1fYmx1ckRpc3RhbmNlOwotICAgICAgICBwLT5kcmF3SW1hZ2UoUVBv
aW50Rih4LCB5KSwgbV9sYXllckltYWdlKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcC0+ZHJhd0lt
YWdlKG1fbGF5ZXJSZWN0LnRvcExlZnQoKSwgbV9sYXllckltYWdlKTsKKyAgICBwLT5kcmF3SW1h
Z2UobV9sYXllck9yaWdpbiwgbV9sYXllckltYWdlLCBtX3NvdXJjZVJlY3QpOwogCiAgICAgc2Ny
YXRjaFNoYWRvd0J1ZmZlcigpLT5zY2hlZHVsZVB1cmdlKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0ZvbnRRdC5jcHAKaW5kZXggZTg5ZDMzMC4uMzI3MWNlZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyB2
b2lkIGRyYXdUZXh0Q29tbW9uKEdyYXBoaWNzQ29udGV4dCogY3R4LCBjb25zdCBUZXh0UnVuJiBy
dW4sIGNvbnN0IEZsb2F0CiAKICAgICAgICAgICAgIGlmIChjdHhTaGFkb3ctPm1fdHlwZSAhPSBD
b250ZXh0U2hhZG93OjpOb1NoYWRvdykgewogICAgICAgICAgICAgICAgIENvbnRleHRTaGFkb3cq
IGN0eFNoYWRvdyA9IGN0eC0+Y29udGV4dFNoYWRvdygpOwotICAgICAgICAgICAgICAgIGlmIChj
dHhTaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93KSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFjdHhTaGFkb3ctPm11c3RVc2VDb250ZXh0U2hhZG93KCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgcC0+c2F2ZSgpOwogICAgICAgICAgICAgICAgICAgICBwLT5zZXRQZW4o
Y3R4U2hhZG93LT5tX2NvbG9yKTsKICAgICAgICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKGN0
eFNoYWRvdy0+b2Zmc2V0KCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dFF0LmNwcAppbmRleCBiOTRjOTM0Li43MDBiNmEzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAt
NTMsNyArNTMsNiBAQAogI2luY2x1ZGUgIlRyYW5zcGFyZW5jeUxheWVyLmgiCiAKICNpbmNsdWRl
IDxRQnJ1c2g+Ci0jaW5jbHVkZSA8UURlYnVnPgogI2luY2x1ZGUgPFFHcmFkaWVudD4KICNpbmNs
dWRlIDxRUGFpbnREZXZpY2U+CiAjaW5jbHVkZSA8UVBhaW50RW5naW5lPgpAQCAtNTExLDMzICs1
MTAsMjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgp
CiAKICAgICBpZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAgICAgICBDb250ZXh0U2hhZG93
KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7Ci0gICAgICAgIGlmIChzaGFkb3ctPm1fdHlwZSAh
PSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93Ci0gICAgICAgICAgICAmJiAhbV9zdGF0ZS5maWxs
UGF0dGVybiAmJiAhbV9zdGF0ZS5maWxsR3JhZGllbnQpCisgICAgICAgIGlmIChzaGFkb3cubXVz
dFVzZUNvbnRleHRTaGFkb3cocCkgfHwgbV9zdGF0ZS5maWxsUGF0dGVybiB8fCBtX3N0YXRlLmZp
bGxHcmFkaWVudCkKICAgICAgICAgewotICAgICAgICAgICAgUVBvaW50RiBvZmZzZXQgPSBzaGFk
b3ctPm9mZnNldCgpOwotICAgICAgICAgICAgY29uc3QgUVRyYW5zZm9ybSYgdHJhbnNmb3JtID0g
cC0+dHJhbnNmb3JtKCk7Ci0gICAgICAgICAgICBpZiAodHJhbnNmb3JtLmlzU2NhbGluZygpKSB7
Ci0gICAgICAgICAgICAgICAgLy8gSWYgc2NhbGluZyBpcyByZXF1aXJlZCwgZmluZCB0aGUgbmV3
IGNvb3JkIGZvciBzaGFkb3cgb3JpZ2luLAotICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhl
IHJlbGF0aXZlIG9mZnNldCB0byBpdHMgc2hhcGUgaXMga2VwdC4KLSAgICAgICAgICAgICAgICBR
UG9pbnRGIHRyYW5zbGF0ZWRPZmZzZXQob2Zmc2V0LngoKSAvIHRyYW5zZm9ybS5tMTEoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LnkoKSAvIHRyYW5z
Zm9ybS5tMjIoKSk7Ci0gICAgICAgICAgICAgICAgcGxhdGZvcm1QYXRoLnRyYW5zbGF0ZSh0cmFu
c2xhdGVkT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBwLT5maWxsUGF0aChwbGF0Zm9ybVBhdGgs
IFFDb2xvcihzaGFkb3ctPm1fY29sb3IpKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgu
dHJhbnNsYXRlKC10cmFuc2xhdGVkT2Zmc2V0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgcC0+Zmls
bFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3Ioc2hhZG93LT5tX2NvbG9yKSk7Ci0gICAgICAgICAg
ICAgICAgcC0+dHJhbnNsYXRlKC1vZmZzZXQpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2lu
U2hhZG93TGF5ZXIocCwgcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKSk7CiAgICAgICAg
ICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXIt
PnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAg
ICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29s
b3IobV9kYXRhLT5zaGFkb3cubV9jb2xvcikpOwogICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5k
U2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBRUG9pbnRGIG9mZnNldCA9IHNoYWRvdy0+b2Zmc2V0KCk7CisgICAgICAgICAgICBwLT50
cmFuc2xhdGUob2Zmc2V0KTsKKyAgICAgICAgICAgIHAtPmZpbGxQYXRoKHBsYXRmb3JtUGF0aCwg
UUNvbG9yKHNoYWRvdy0+bV9jb2xvcikpOworICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZz
ZXQpOwogICAgICAgICB9Ci0KICAgICB9CiAgICAgaWYgKG1fc3RhdGUuZmlsbFBhdHRlcm4pIHsK
ICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGFmZmluZTsKQEAgLTU2MiwyOCArNTQ4LDggQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlm
IChtX2RhdGEtPmhhc1NoYWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9
IGNvbnRleHRTaGFkb3coKTsKLQotICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgIT0gQ29udGV4
dFNoYWRvdzo6Qmx1clNoYWRvdwotICAgICAgICAgICAgJiYgIW1fc3RhdGUuc3Ryb2tlUGF0dGVy
biAmJiAhbV9zdGF0ZS5zdHJva2VHcmFkaWVudCkKKyAgICAgICAgaWYgKHNoYWRvdy5tdXN0VXNl
Q29udGV4dFNoYWRvdyhwKSB8fCBtX3N0YXRlLnN0cm9rZVBhdHRlcm4gfHwgbV9zdGF0ZS5zdHJv
a2VHcmFkaWVudCkKICAgICAgICAgewotICAgICAgICAgICAgUVBlbiBzaGFkb3dQZW4ocGVuKTsK
LSAgICAgICAgICAgIHNoYWRvd1Blbi5zZXRDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9yKTsK
LSAgICAgICAgICAgIFFQb2ludEYgb2Zmc2V0ID0gc2hhZG93LT5vZmZzZXQoKTsKLSAgICAgICAg
ICAgIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSA9IHAtPnRyYW5zZm9ybSgpOwotICAgICAg
ICAgICAgaWYgKHRyYW5zZm9ybS5pc1NjYWxpbmcoKSkgewotICAgICAgICAgICAgICAgIC8vIElm
IHNjYWxpbmcgaXMgcmVxdWlyZWQsIGZpbmQgdGhlIG5ldyBjb29yZCBmb3Igc2hhZG93IG9yaWdp
biwKLSAgICAgICAgICAgICAgICAvLyBzbyB0aGF0IHRoZSByZWxhdGl2ZSBvZmZzZXQgdG8gaXRz
IHNoYXBlIGlzIGtlcHQuCi0gICAgICAgICAgICAgICAgUVBvaW50RiB0cmFuc2xhdGVkT2Zmc2V0
KG9mZnNldC54KCkgLyB0cmFuc2Zvcm0ubTExKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9mZnNldC55KCkgLyB0cmFuc2Zvcm0ubTIyKCkpOwotICAgICAgICAg
ICAgICAgIHBsYXRmb3JtUGF0aC50cmFuc2xhdGUodHJhbnNsYXRlZE9mZnNldCk7Ci0gICAgICAg
ICAgICAgICAgcC0+c3Ryb2tlUGF0aChwbGF0Zm9ybVBhdGgsIHNoYWRvd1Blbik7Ci0gICAgICAg
ICAgICAgICAgcGxhdGZvcm1QYXRoLnRyYW5zbGF0ZSgtdHJhbnNsYXRlZE9mZnNldCk7Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShvZmZzZXQpOwot
ICAgICAgICAgICAgICAgIHAtPnN0cm9rZVBhdGgocGxhdGZvcm1QYXRoLCBzaGFkb3dQZW4pOwot
ICAgICAgICAgICAgICAgIHAtPnRyYW5zbGF0ZSgtb2Zmc2V0KTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCBib3VuZGluZ1JlY3QgPSBwbGF0
Zm9ybVBhdGguY29udHJvbFBvaW50UmVjdCgpOwogICAgICAgICAgICAgYm91bmRpbmdSZWN0Lmlu
ZmxhdGUocGVuLm1pdGVyTGltaXQoKSArIHBlbi53aWR0aEYoKSk7CiAgICAgICAgICAgICBRUGFp
bnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBib3VuZGlu
Z1JlY3QpOwpAQCAtNTkyLDYgKzU1OCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tl
UGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnN0
cm9rZVBhdGgocGxhdGZvcm1QYXRoLCBwZW4pOwogICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5k
U2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBRUGVuIHNoYWRvd1BlbihwZW4pOworICAgICAgICAgICAgc2hhZG93UGVuLnNldENvbG9y
KG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpOworICAgICAgICAgICAgUVBvaW50RiBvZmZzZXQgPSBz
aGFkb3ctPm9mZnNldCgpOworICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG9mZnNldCk7CisgICAg
ICAgICAgICBwLT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgc2hhZG93UGVuKTsKKyAgICAgICAg
ICAgIHAtPnRyYW5zbGF0ZSgtb2Zmc2V0KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNzExLDcg
KzY4NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCiAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBicnVzaCk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKLSAgICAgICAgICAg
IGlmIChzaGFkb3ctPm1fdHlwZSA9PSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93KSB7CisgICAg
ICAgICAgICBpZiAoc2hhZG93Lm11c3RVc2VDb250ZXh0U2hhZG93KHApKSB7CiAgICAgICAgICAg
ICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIo
cCwgbm9ybWFsaXplZFJlY3QpOwogICAgICAgICAgICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7
CiAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldE9wYWNpdHkoc3RhdGljX2Nh
c3Q8cXJlYWw+KHNoYWRvdy0+bV9jb2xvci5hbHBoYSgpKSAvIDI1NSk7CkBAIC03MTksMTcgKzY5
MiwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogICAgICAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8g
U29saWQgcmVjdGFuZ2xlIGZpbGwgd2l0aCBubyBibHVyIHNoYWRvdyBjYW4gYmUgZG9uZSBmYXN0
ZXIKLSAgICAgICAgICAgICAgICAvLyB3aXRob3V0IHVzaW5nIHRoZSBzaGFkb3cgbGF5ZXIgYXQg
YWxsLgorICAgICAgICAgICAgICAgIC8vIFNvbGlkIHJlY3RhbmdsZSBmaWxsIHdpdGggbm8gYmx1
ciBzaGFkb3cgb3IgdHJhbnNmb3JtYXRpb25zIGFwcGxpZWQgY2FuIGJlIGRvbmUKKyAgICAgICAg
ICAgICAgICAvLyBmYXN0ZXIgd2l0aG91dCB1c2luZyB0aGUgc2hhZG93IGxheWVyIGF0IGFsbC4K
ICAgICAgICAgICAgICAgICBRQ29sb3Igc2hhZG93Q29sb3IgPSBzaGFkb3ctPm1fY29sb3I7CiAg
ICAgICAgICAgICAgICAgc2hhZG93Q29sb3Iuc2V0QWxwaGFGKHNoYWRvd0NvbG9yLmFscGhhRigp
ICogcC0+YnJ1c2goKS5jb2xvcigpLmFscGhhRigpKTsKLSAgICAgICAgICAgICAgICBjb25zdCBR
VHJhbnNmb3JtJiB0cmFuc2Zvcm0gPSBwLT50cmFuc2Zvcm0oKTsKLSAgICAgICAgICAgICAgICBp
ZiAodHJhbnNmb3JtLmlzU2NhbGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHAtPmZpbGxS
ZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc3RhdGljX2Nhc3Q8cXJlYWw+KHNoYWRvdy0+
b2Zmc2V0KCkueCgpKSAvIHRyYW5zZm9ybS5tMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxxcmVhbD4oc2hh
ZG93LT5vZmZzZXQoKS55KCkgIC8gdHJhbnNmb3JtLm0yMigpKSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNoYWRvd0NvbG9yKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJhbnNsYXRlZChz
aGFkb3ctPm9mZnNldCgpKSwgc2hhZG93Q29sb3IpOworICAgICAgICAgICAgICAgIHAtPmZpbGxS
ZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvd0Nv
bG9yKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC03NDksMTggKzcxNiwxNSBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBDb2xvciYgY29sb3IsIENvbG9yUwogCiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsK
ICAgICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotCi0gICAg
ICAgIGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93KSB7Ci0g
ICAgICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCBhbnkgbGF5ZXIgZm9yIHNpbXBsZSBzaGFkb3cu
Ci0gICAgICAgICAgICBwLT5maWxsUmVjdChub3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHNoYWRv
dy0+b2Zmc2V0KCkpLCBzaGFkb3ctPm1fY29sb3IpOwotICAgICAgICB9IGVsc2UgeworICAgICAg
ICBpZiAoc2hhZG93Lm11c3RVc2VDb250ZXh0U2hhZG93KHApKSB7CiAgICAgICAgICAgICBRUGFp
bnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxp
emVkUmVjdCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAg
ICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRp
b25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFJlY3Qo
bm9ybWFsaXplZFJlY3QsIHNoYWRvdy0+bV9jb2xvcik7CiAgICAgICAgICAgICAgICAgc2hhZG93
LT5lbmRTaGFkb3dMYXllcihwKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQo
c2hhZG93LT5vZmZzZXQoKSksIHNoYWRvdy0+bV9jb2xvcik7CiAgICAgfQogCiAgICAgcC0+Zmls
bFJlY3Qobm9ybWFsaXplZFJlY3QsIG1fZGF0YS0+c29saWRDb2xvcik7CkBAIC03NzYsMTkgKzc0
MCwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJl
Y3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZgogICAgIFFQYWludGVyKiBwID0gbV9kYXRh
LT5wKCk7CiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAgQ29udGV4dFNo
YWRvdyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotCi0gICAgICAgIGlmIChzaGFkb3ctPm1f
dHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93KSB7Ci0gICAgICAgICAgICAvLyBXZSBk
byBub3QgbmVlZCBhbnkgbGF5ZXIgZm9yIHNpbXBsZSBzaGFkb3cuCi0gICAgICAgICAgICBwLT50
cmFuc2xhdGUobV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOwotICAgICAgICAgICAgcC0+ZmlsbFBh
dGgocGF0aC5wbGF0Zm9ybVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsK
LSAgICAgICAgICAgIHAtPnRyYW5zbGF0ZSgtbV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOwotICAg
ICAgICB9IGVsc2UgeworICAgICAgICBpZiAoc2hhZG93Lm11c3RVc2VDb250ZXh0U2hhZG93KHAp
KSB7CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5T
aGFkb3dMYXllcihwLCByZWN0KTsKICAgICAgICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAg
ICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVy
OjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsKICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVy
LT5maWxsUGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3IobV9kYXRhLT5zaGFkb3cubV9j
b2xvcikpOwogICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUobV9k
YXRhLT5zaGFkb3cub2Zmc2V0KCkpOworICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGF0aC5wbGF0
Zm9ybVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKKyAgICAgICAgICAg
IHAtPnRyYW5zbGF0ZSgtbV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOwogICAgICAgICB9CiAgICAg
fQogICAgIHAtPmZpbGxQYXRoKHBhdGgucGxhdGZvcm1QYXRoKCksIFFDb2xvcihjb2xvcikpOwpA
QCAtOTU4LDkgKzkyMCwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFk
b3coY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBibHVyLCBjb25zdAogICAgICAgICAvLyBX
ZSBmbGlwIHRoZSBoZWlnaHQgc2luY2UgQ0cgYW5kIEhUTUw1IENhbnZhcyBoYXZlIG9wcG9zaXRl
IFkgYXhpcwogICAgICAgICBtX3N0YXRlLnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZShzaXplLndp
ZHRoKCksIC1zaXplLmhlaWdodCgpKTsKICAgICAgICAgbV9kYXRhLT5zaGFkb3cgPSBDb250ZXh0
U2hhZG93KGNvbG9yLCBibHVyLCBGbG9hdFNpemUoc2l6ZS53aWR0aCgpLCAtc2l6ZS5oZWlnaHQo
KSkpOwotICAgIH0gZWxzZSB7CisgICAgfSBlbHNlCiAgICAgICAgIG1fZGF0YS0+c2hhZG93ID0g
Q29udGV4dFNoYWRvdyhjb2xvciwgYmx1ciwgRmxvYXRTaXplKHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSkpOwotICAgIH0KKworICAgIG1fZGF0YS0+c2hhZG93LnNldFNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6Y2xlYXJQbGF0Zm9ybVNoYWRvdygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76917</attachid>
            <date>2010-12-17 15:24:31 -0800</date>
            <delta_ts>2010-12-17 15:30:44 -0800</delta_ts>
            <desc>Cross platform version of the previous patch (#3)</desc>
            <filename>transformation_patch.diff</filename>
            <type>text/plain</type>
            <size>40627</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5NDE0NmRjLi4wNGE4ODQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTAtMTIt
MTcgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBDYW52YXMgc2hhZG93IG9mZnNl
dCBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IGFueSB0cmFuc2Zvcm1hdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0MjIKKworICAgICAgICBP
biBhIGNhbnZhcyBjb250ZXh0LCBzaGFkb3dzIGFyZSBjdXJyZW50bHkgYWZmZWN0ZWQgYnkgYWxs
CisgICAgICAgIHRyYW5zZm9ybWF0aW9ucyBleGNlcHQgc2NhbGluZy4gQWNjb3JkaW5nIHRvIHRo
ZSBzcGVjOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3Vy
cmVudC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbCNzaGFkb3dzCisKKyAg
ICAgICAgIlRoZSBzaGFkb3dPZmZzZXRYIGFuZCBzaGFkb3dPZmZzZXRZIGF0dHJpYnV0ZXMgc3Bl
Y2lmeSB0aGUgZGlzdGFuY2UKKyAgICAgICAgdGhhdCB0aGUgc2hhZG93IHdpbGwgYmUgb2Zmc2V0
IGluIHRoZSBwb3NpdGl2ZSBob3Jpem9udGFsIGFuZCBwb3NpdGl2ZQorICAgICAgICB2ZXJ0aWNh
bCBkaXN0YW5jZSByZXNwZWN0aXZlbHkuIFRoZWlyIHZhbHVlcyBhcmUgaW4gY29vcmRpbmF0ZSBz
cGFjZQorICAgICAgICB1bml0cy4gVGhleSBhcmUgbm90IGFmZmVjdGVkIGJ5IHRoZSBjdXJyZW50
IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4iCisKKyAgICAgICAgTk9URTogdGhpcyBhcHBsaWVzIG9u
bHkgdG8gY2FudmFzLCBub3QgdG8gYm94IHNoYWRvd3MuCisKKyAgICAgICAgQWRkIG5ldyB0ZXN0
IHRvIGVuc3VyZSB0aGF0IHNoYWRvd3MgYXJlIGNvcnJlY3RseSB0cmFuc2Zvcm1lZCBrZWVwaW5n
CisgICAgICAgIHRoZSByZWxhdGl2ZSBvZmZzZXQgdG8gdGhlIHNoYXBlLgorCisgICAgICAgICog
ZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dDog
U2VlIHN0cm9rZVBhdGggYmVsb3cuCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5z
Zm9ybXMtZmlsbFJlY3Qtc2hhZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFBhdGgt
c2hhZG93LmpzOgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2Nh
bGUtZmlsbFJlY3Qtc2hhZG93LmpzOgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0
cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanM6IE5vdyB1c2luZworICAgICAgICAg
IGEgbGluZVdpZHRoID4gMSB0byBtYWtlIGl0IGVhc2llciB0byB0ZXN0IGFuZCBtb3JlIGZhaXIg
YW1vbmcgYWxsCisgICAgICAgICAgcG9ydHMsIHNpbmNlIHRoZXJlIGNhbiBiZSBkaWZmZXJlbnQg
dHJhbnNmb3JtYXRpb24gc21vb3RobmVzcyBvcgorICAgICAgICAgIGFsaWFzaW5nIHNldHRpbmdz
LgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1m
aWxsUmVjdC1zaGFkb3cuanM6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVk
OiBHVEsgcG9ydCBuZWVkcyB0byBpbXBsZW1lbnQgdGhpcyBmZWF0dXJlLgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9jYW52YXMvY2Fu
dmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRv
dy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisKIDIwMTAtMTItMTcgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRo
LXNoYWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2Nh
bGUtc3Ryb2tlUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0CmluZGV4IGU1NjIwMWYuLmEzMzdjNGIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQ
YXRoLXNoYWRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2Fu
dmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dApAQCAtMzAsMjcgKzMwLDI3
IEBAIFBBU1MgZFszXSBpcyBhcm91bmQgNzYKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBp
cyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMAorUEFTUyBkWzNdIGlz
IGFyb3VuZCAxNDkKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0g
aXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMgorUEFTUyBkWzNdIGlzIGFyb3VuZCAxMTYKIFBB
U1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNd
IGlzIGFyb3VuZCAyOAorUEFTUyBkWzNdIGlzIGFyb3VuZCAxMTUKIFBBU1MgZFswXSBpcyAyNTUK
IFBBU1MgZFsxXSBpcyAwCiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMgor
UEFTUyBkWzNdIGlzIGFyb3VuZCA3MAogUEFTUyBkWzBdIGlzIDI1NQogUEFTUyBkWzFdIGlzIDAK
IFBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDE1CitQQVNTIGRbM10gaXMgYXJv
dW5kIDcwCiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAK
LVBBU1MgZFszXSBpcyBhcm91bmQgMTcKK1BBU1MgZFszXSBpcyBhcm91bmQgNjkKIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1z
aGFkb3cuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNj
YWxlLWZpbGxQYXRoLXNoYWRvdy5qcwppbmRleCAwNTI4NmY1Li44YjA1ZjNjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxQ
YXRoLXNoYWRvdy5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMv
Y2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcwpAQCAtMTksNyArMTksNyBAQCBmdW5jdGlv
biBzaG91bGRCZUFyb3VuZChhLCBiKQogICAgICAgICBldmFsQSA9IGU7CiAgICAgfQogCi0gICAg
aWYgKE1hdGguYWJzKGV2YWxBIC0gYikgPCAxMCkKKyAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBi
KSA8IDIwKQogICAgICAgICBwcmludCgiUEFTUyAiICsgYSArICIgaXMgYXJvdW5kICIgKyBiICwg
ImdyZWVuIikKICAgICBlbHNlCiAgICAgICAgIHByaW50KCJGQUlMICIgKyBhICsgIiBpcyBub3Qg
YXJvdW5kICIgKyBiICsgIiAoYWN0dWFsOiAiICsgZXZhbEEgKyAiKSIsICJyZWQiKTsKQEAgLTM1
LDcgKzM1LDYgQEAgY3R4LnNjYWxlKDIsIDIpOwogY3R4LnNoYWRvd09mZnNldFggPSAxMDA7CiBj
dHguc2hhZG93T2Zmc2V0WSA9IDEwMDsKIGN0eC5maWxsU3R5bGUgPSAncmdiYSgwLCAwLCAyNTUs
IDEpJzsKLS8vY3R4LmxpbmVXaWR0aCA9IDMwOwogCiBjdHguc2hhZG93Q29sb3IgPSAncmdiYSgy
NTUsIDAsIDAsIDEuMCknOwogY3R4LmJlZ2luUGF0aCgpOwpAQCAtNzMsMzggKzcyLDM4IEBAIGN0
eC5maWxsKCk7CiB2YXIgZDsgLy8gaW1hZ2VEYXRhLmRhdGEKIAogLy8gVmVyaWZ5IHNvbGlkIHNo
YWRvdy4KLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjA1LCAxLCAxKS5kYXRhOworZCA9IGN0
eC5nZXRJbWFnZURhdGEoMjAxLCAyMDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcy
NTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNo
b3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDI5NSwg
MSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgMjk1LCAxLCAxKS5kYXRhOwog
c2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRC
ZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJ
bWFnZURhdGEoMjAwLCAyOTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEs
IDI5OCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2Rb
MV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1
Jyk7CiAKIC8vIFZlcmlmeSBzb2xpZCBhbHBoYSBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0
YSgyMDAsIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwgNDA1LCAx
LCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcw
Jyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3Nicp
OwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDI5OCwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1
Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91
bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5
OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk4LCAxLCAxKS5kYXRh
Owogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91
bGRCZSgnZFsyXScsICcwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9z
Y3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5qcyBiL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93Lmpz
CmluZGV4IDk5YTFlNTkuLjU2ZDRhMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qt
c2hhZG93LmpzCkBAIC0xOSw3ICsxOSw3IEBAIGZ1bmN0aW9uIHNob3VsZEJlQXJvdW5kKGEsIGIp
CiAgICAgICAgIGV2YWxBID0gZTsKICAgICB9CiAKLSAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBi
KSA8IDEwKQorICAgIGlmIChNYXRoLmFicyhldmFsQSAtIGIpIDwgMjApCiAgICAgICAgIHByaW50
KCJQQVNTICIgKyBhICsgIiBpcyBhcm91bmQgIiArIGIgLCAiZ3JlZW4iKQogICAgIGVsc2UKICAg
ICAgICAgcHJpbnQoIkZBSUwgIiArIGEgKyAiIGlzIG5vdCBhcm91bmQgIiArIGIgKyAiIChhY3R1
YWw6ICIgKyBldmFsQSArICIpIiwgInJlZCIpOwpAQCAtNTIsMzggKzUyLDM4IEBAIGN0eC5maWxs
UmVjdCgxNTAsIDE1MCwgNTAsIDUwKTsKIHZhciBkOyAvLyBpbWFnZURhdGEuZGF0YQogCiAvLyBW
ZXJpZnkgc29saWQgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyMDUsIDEsIDEp
LmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDIwNSwgMSwgMSkuZGF0YTsKIHNob3Vs
ZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
Ml0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VE
YXRhKDI5OSwgMjk1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCAyOTgs
IDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywg
JzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwog
Ci1kID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDI5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0
SW1hZ2VEYXRhKDIwMSwgMjk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7
CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRC
ZSgnZFszXScsICcyNTUnKTsKIAogLy8gVmVyaWZ5IHNvbGlkIGFscGhhIHNoYWRvdy4KLWQgPSBj
dHguZ2V0SW1hZ2VEYXRhKDIwMCwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURh
dGEoMjAxLCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3Vs
ZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5k
KCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDA1LCAxLCAxKS5k
YXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRC
ZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJd
JywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1h
Z2VEYXRhKDIwNSwgNDk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0
OTgsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFd
JywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cu
anMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0
cm9rZVBhdGgtc2hhZG93LmpzCmluZGV4IDUxOThkOTQuLjYwMDIxNzUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0
aC1zaGFkb3cuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2Nh
bnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy5qcwpAQCAtMTksNyArMTksNyBAQCBmdW5jdGlv
biBzaG91bGRCZUFyb3VuZChhLCBiKQogICAgICAgICBldmFsQSA9IGU7CiAgICAgfQogCi0gICAg
aWYgKE1hdGguYWJzKGV2YWxBIC0gYikgPCAxMCkKKyAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBi
KSA8IDIwKQogICAgICAgICBwcmludCgiUEFTUyAiICsgYSArICIgaXMgYXJvdW5kICIgKyBiICwg
ImdyZWVuIikKICAgICBlbHNlCiAgICAgICAgIHByaW50KCJGQUlMICIgKyBhICsgIiBpcyBub3Qg
YXJvdW5kICIgKyBiICsgIiAoYWN0dWFsOiAiICsgZXZhbEEgKyAiKSIsICJyZWQiKTsKQEAgLTM1
LDYgKzM1LDcgQEAgY3R4LnNjYWxlKDIsIDIpOwogY3R4LnNoYWRvd09mZnNldFggPSAxMDA7CiBj
dHguc2hhZG93T2Zmc2V0WSA9IDEwMDsKIGN0eC5zdHJva2VTdHlsZSA9ICdyZ2JhKDAsIDAsIDI1
NSwgMSknOworY3R4LmxpbmVXaWR0aCA9IDU7CiAKIGN0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1
NSwgMCwgMCwgMS4wKSc7CiBjdHguYmVnaW5QYXRoKCk7CkBAIC03Niw3OSArNzcsNzkgQEAgY3R4
LnN0cm9rZSgpOwogdmFyIGQ7IC8vIGltYWdlRGF0YS5kYXRhCiAKIC8vIFZlcmlmeSBzb2xpZCBz
aGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDIwNSwgMSwgMSkuZGF0YTsKK2QgPSBj
dHguZ2V0SW1hZ2VEYXRhKDI1MCwgMjAwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAn
MjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBz
aG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCAyOTUs
IDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzMDAsIDI5MCwgMSwgMSkuZGF0YTsK
IHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxk
QmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0
SW1hZ2VEYXRhKDIwMSwgMjk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAw
LCAyNTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdk
WzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1
NScpOwogCiAvLyBWZXJpZnkgc29saWQgYWxwaGEgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURh
dGEoMjAwLCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDQwNSwg
MSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAn
MCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYn
KTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4
LmdldEltYWdlRGF0YSgyMDEsIDUwMCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1
NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hv
dWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0
OTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzMDAsIDQ5OSwgMSwgMSkuZGF0
YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAogLy8g
VmVyaWZ5IGJsdXJyeSBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgzOTQsIDIwOCwgMSwg
MSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQwNCwgMjEwLCAxLCAxKS5kYXRhOwogc2hv
dWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgn
ZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcyMCcpOworc2hvdWxkQmVBcm91
bmQoJ2RbM10nLCAnMTQ5Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwMywgMzAxLCAxLCAx
KS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA1LCAyNTAsIDEsIDEpLmRhdGE7CiBzaG91
bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdk
WzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzIyJyk7CitzaG91bGRCZUFyb3Vu
ZCgnZFszXScsICcxMTYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA0LCAyNTAsIDEsIDEp
LmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDIwNSwgMSwgMSkuZGF0YTsKIHNob3Vs
ZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2Rb
Ml0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjgnKTsKK3Nob3VsZEJlQXJvdW5k
KCdkWzNdJywgJzExNScpOwogCiAvLyBWZXJpZnkgYmx1cnJ5IGFscGhhIHNoYWRvdy4KLWQgPSBj
dHguZ2V0SW1hZ2VEYXRhKDQwNSwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURh
dGEoNTA1LCA0NTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3Vs
ZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5k
KCdkWzNdJywgJzIyJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICc3MCcpOwogCi1kID0gY3R4
LmdldEltYWdlRGF0YSg0MTUsIDQ5NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRh
KDUwNSwgNDUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRC
ZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgn
ZFszXScsICcxNScpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzAnKTsKIAotZCA9IGN0eC5n
ZXRJbWFnZURhdGEoNDUwLCA1MDQsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0
NTAsIDQwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUo
J2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2Rb
M10nLCAnMTcnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzY5Jyk7CiAKIHZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
c2NyaXB0LXRlc3RzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5qcyBiL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVj
dC1zaGFkb3cuanMKaW5kZXggYjY3ZjI0NC4uYTA5MGI0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNo
YWRvdy5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFz
LXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93LmpzCkBAIC01NSw3ICs1NSw3IEBAIGN0eC5maWxs
UmVjdCgyMDAsIC0yNTAsIDUwLCA1MCk7CiB2YXIgZDsgLy8gaW1hZ2VEYXRhLmRhdGEKIAogLy8g
VmVyaWZ5IHNvbGlkIHNoYWRvdy4KLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjA1LCAxLCAx
KS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAxLCAyMDUsIDEsIDEpLmRhdGE7CiBzaG91
bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdk
WzJdJywgJzAnKTsKQEAgLTgwLDcgKzgwLDcgQEAgc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hv
dWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMTI3Jyk7CiAKLWQg
PSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDUwLCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFn
ZURhdGEoMjk4LCA0NTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNo
b3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1NraXBwZWQKaW5kZXggZTcxNWEzNy4uMGIwOTQwNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Nr
aXBwZWQKQEAgLTEwMjUsNiArMTAyNSw3IEBAIGVkaXRpbmcvdW5zdXBwb3J0ZWQtY29udGVudC90
YWJsZS10eXBlLWJlZm9yZS5odG1sCiBmYXN0L2NhbnZhcy9jYW52YXMtYmctem9vbS5odG1sCiBm
YXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRhLmh0bWwKIGZhc3QvY2FudmFzL2NhbnZhcy1n
cmFkaWVudC1hZGRTdG9wLWVycm9yLmh0bWwKK2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1z
LWZpbGxSZWN0LXNoYWRvdy5odG1sCiBmYXN0L2NhbnZhcy9jYW52YXMtem9vbS5odG1sCiBmYXN0
L2Nzcy9jc3MxX2ZvcndhcmRfY29tcGF0aWJsZV9wYXJzaW5nLmh0bWwKIGZhc3QvY3NzL2ludmFs
aWQtcGVyY2VudGFnZS1wcm9wZXJ0eS5odG1sCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNiZGZlOWYuLjliZDdhYzEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTAtMTItMTcgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBDYW52YXMg
c2hhZG93IG9mZnNldCBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IGFueSB0cmFuc2Zvcm1hdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA0MjIK
KworICAgICAgICBPbiBhIGNhbnZhcyBjb250ZXh0LCBzaGFkb3dzIGFyZSBjdXJyZW50bHkgYWZm
ZWN0ZWQgYnkgYWxsCisgICAgICAgIHRyYW5zZm9ybWF0aW9ucyBleGNlcHQgc2NhbGluZy4gQWNj
b3JkaW5nIHRvIHRoZSBzcGVjOgorICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mv
d2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbCNz
aGFkb3dzCisKKyAgICAgICAgIlRoZSBzaGFkb3dPZmZzZXRYIGFuZCBzaGFkb3dPZmZzZXRZIGF0
dHJpYnV0ZXMgc3BlY2lmeSB0aGUgZGlzdGFuY2UKKyAgICAgICAgdGhhdCB0aGUgc2hhZG93IHdp
bGwgYmUgb2Zmc2V0IGluIHRoZSBwb3NpdGl2ZSBob3Jpem9udGFsIGFuZCBwb3NpdGl2ZQorICAg
ICAgICB2ZXJ0aWNhbCBkaXN0YW5jZSByZXNwZWN0aXZlbHkuIFRoZWlyIHZhbHVlcyBhcmUgaW4g
Y29vcmRpbmF0ZSBzcGFjZQorICAgICAgICB1bml0cy4gVGhleSBhcmUgbm90IGFmZmVjdGVkIGJ5
IHRoZSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4iCisKKyAgICAgICAgTk9URTogdGhp
cyBhcHBsaWVzIG9ubHkgdG8gY2FudmFzLCBub3QgdG8gYm94IHNoYWRvd3MuCisKKyAgICAgICAg
VGVzdDogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWwK
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6Q29udGV4dFNoYWRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGV4dFNoYWRvdzo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGV4dFNoYWRvdzo6c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6b2Zmc2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNo
YWRvdzo6YmVnaW5TaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93
OjplbmRTaGFkb3dMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bXVzdFVzZUNvbnRleHRTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KToKKwogMjAxMC0xMi0xNyAgVy4gSmFtZXMgTWFjTGVh
biAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMg
Um9iaW5zb24uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRT
aGFkb3cuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcApp
bmRleCA4N2ExYzVjLi41ZTdhN2EwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbnRleHRTaGFkb3cuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
dGV4dFNoYWRvdy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJDb250ZXh0U2hhZG93LmgiCiAKKyNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBA
IC00MSw2ICs0Miw3IEBAIENvbnRleHRTaGFkb3c6OkNvbnRleHRTaGFkb3coKQogICAgIDogbV90
eXBlKE5vU2hhZG93KQogICAgICwgbV9ibHVyRGlzdGFuY2UoMCkKICAgICAsIG1fbGF5ZXJDb250
ZXh0KDApCisgICAgLCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZhbHNlKQogewogfQogCkBA
IC00OSw2ICs1MSw3IEBAIENvbnRleHRTaGFkb3c6OkNvbnRleHRTaGFkb3coY29uc3QgQ29sb3Im
IGNvbG9yLCBmbG9hdCByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYKICAgICAsIG1fYmx1ckRpc3Rh
bmNlKHJvdW5kKHJhZGl1cykpCiAgICAgLCBtX29mZnNldChvZmZzZXQpCiAgICAgLCBtX2xheWVy
Q29udGV4dCgwKQorICAgICwgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhmYWxzZSkKIHsKICAg
ICAvLyBTZWUgY29tbWVudHMgaW4gaHR0cDovL3dlYmtpdC5vcmcvYi80MDc5MywgaXQgc2VlbXMg
c2Vuc2libGUKICAgICAvLyB0byBmb2xsb3cgU2tpYSdzIGxpbWl0IG9mIDEyOCBwaXhlbHMgb2Yg
Ymx1ciByYWRpdXMKQEAgLTc3LDYgKzgwLDIzIEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6Y2xlYXIo
KQogICAgIG1fb2Zmc2V0ID0gRmxvYXRTaXplKCk7CiB9CiAKK2Jvb2wgQ29udGV4dFNoYWRvdzo6
bXVzdFVzZUNvbnRleHRTaGFkb3coUGxhdGZvcm1Db250ZXh0IGNvbnRleHQpCit7CisgICAgLy8g
V2UgY2FuJ3QgYXZvaWQgQ29udGV4dFNoYWRvdywgc2luY2UgdGhlIHNoYWRvdyBoYXMgYmx1ci4K
KyAgICBpZiAobV90eXBlID09IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIC8vIFdlIGNhbiBhdm9pZCBDb250ZXh0U2hhZG93IGFuZCBvcHRpbWl6
ZSwgc2luY2Ugd2UncmUgbm90IGRyYXdpbmcgb24gYQorICAgIC8vIGNhbnZhcyBhbmQgYm94IHNo
YWRvd3MgYXJlIGFmZmVjdGVkIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCisgICAgaWYg
KCFzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
Ly8gV2UgY2FuIGF2b2lkIENvbnRleHRTaGFkb3csIHNpbmNlIHRoZXJlIGFyZSBubyB0cmFuc2Zv
cm1hdGlvbnMgdG8gYXBwbHkgdG8gdGhlIGNhbnZhcy4KKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCB0cmFuc2Zvcm0oZ2V0VHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tQ29udGV4dChjb250
ZXh0KSk7CisgICAgaWYgKHRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAvLyBPdGhlcndpc2UsIG5vIGNoYW5jZSBhdm9pZGluZyBDb250ZXh0U2hhZG93
LgorICAgIHJldHVybiB0cnVlOworfQorCiAvLyBJbnN0ZWFkIG9mIGludGVnZXIgZGl2aXNpb24s
IHdlIHVzZSAxNy4xNSBmb3IgZml4ZWQtcG9pbnQgZGl2aXNpb24uCiBzdGF0aWMgY29uc3QgaW50
IEJsdXJTdW1TaGlmdCA9IDE1OwogCkBAIC0xNDksMjkgKzE2OSw2MSBAQCB2b2lkIENvbnRleHRT
aGFkb3c6OmJsdXJMYXllckltYWdlKHVuc2lnbmVkIGNoYXIqIGltYWdlRGF0YSwgY29uc3QgSW50
U2l6ZSYgc2l6ZQogICAgIH0KIH0KIAotdm9pZCBDb250ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXll
ckJvdW5kaW5nUmVjdChjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYg
Y2xpcFJlY3QpCitJbnRSZWN0IENvbnRleHRTaGFkb3c6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdS
ZWN0KGNvbnN0IFBsYXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVy
QXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCiB7Ci0gICAgLy8gQ2FsY3VsYXRlIHRoZSBk
ZXN0aW5hdGlvbiBvZiB0aGUgYmx1cnJlZCBsYXllci4KLSAgICBGbG9hdFJlY3QgZGVzdGluYXRp
b25SZWN0KGxheWVyQXJlYSk7Ci0gICAgZGVzdGluYXRpb25SZWN0Lm1vdmUobV9vZmZzZXQpOwot
ICAgIG1fbGF5ZXJSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChkZXN0aW5hdGlvblJlY3QpOworICAg
IC8vIENhbGN1bGF0ZSB0aGUgZGVzdGluYXRpb24gb2YgdGhlIGJsdXJyZWQgYW5kL29yIHRyYW5z
Zm9ybWVkIGxheWVyLgorICAgIEZsb2F0UmVjdCBsYXllckZsb2F0UmVjdDsKKyAgICBmbG9hdCBp
bmZsYXRpb24gPSAwOworCisgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3Jt
KGdldFRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbUNvbnRleHQoY29udGV4dCkpOworICAgIGlmICht
X3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zICYmICF0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKSB7Cisg
ICAgICAgIEZsb2F0UXVhZCB0cmFuc2Zvcm1lZFBvbHlnb24gPSB0cmFuc2Zvcm0ubWFwUXVhZChG
bG9hdFF1YWQobGF5ZXJBcmVhKSk7CisgICAgICAgIHRyYW5zZm9ybWVkUG9seWdvbi5tb3ZlKG1f
b2Zmc2V0KTsKKyAgICAgICAgbGF5ZXJGbG9hdFJlY3QgPSB0cmFuc2Zvcm0uaW52ZXJzZSgpLm1h
cFF1YWQodHJhbnNmb3JtZWRQb2x5Z29uKS5ib3VuZGluZ0JveCgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGxheWVyRmxvYXRSZWN0ID0gbGF5ZXJBcmVhOworICAgICAgICBsYXllckZsb2F0UmVj
dC5tb3ZlKG1fb2Zmc2V0KTsKKyAgICB9CiAKICAgICAvLyBXZSBleHBhbmQgdGhlIGFyZWEgYnkg
dGhlIGJsdXIgcmFkaXVzIHRvIGdpdmUgZXh0cmEgc3BhY2UgZm9yIHRoZSBibHVyIHRyYW5zaXRp
b24uCi0gICAgbV9sYXllclJlY3QuaW5mbGF0ZShtX3R5cGUgPT0gQmx1clNoYWRvdyA/IG1fYmx1
ckRpc3RhbmNlIDogMCk7CisgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7CisgICAgICAg
IGxheWVyRmxvYXRSZWN0LmluZmxhdGUobV9ibHVyRGlzdGFuY2UpOworICAgICAgICBpbmZsYXRp
b24gKz0gbV9ibHVyRGlzdGFuY2U7CisgICAgfQogCi0gICAgaWYgKCFjbGlwUmVjdC5jb250YWlu
cyhtX2xheWVyUmVjdCkpIHsKKyAgICBGbG9hdFJlY3QgdW5jbGlwcGVkTGF5ZXJSZWN0ID0gbGF5
ZXJGbG9hdFJlY3Q7CisKKyAgICBpZiAoIWNsaXBSZWN0LmNvbnRhaW5zKGVuY2xvc2luZ0ludFJl
Y3QobGF5ZXJGbG9hdFJlY3QpKSkgewogICAgICAgICAvLyBObyBuZWVkIHRvIGhhdmUgdGhlIGJ1
ZmZlciBsYXJnZXIgdGhhbiB0aGUgY2xpcC4KLSAgICAgICAgbV9sYXllclJlY3QuaW50ZXJzZWN0
KGNsaXBSZWN0KTsKKyAgICAgICAgbGF5ZXJGbG9hdFJlY3QuaW50ZXJzZWN0KGNsaXBSZWN0KTsK
IAogICAgICAgICAvLyBJZiB3ZSBhcmUgdG90YWxseSBvdXRzaWRlIHRoZSBjbGlwIHJlZ2lvbiwg
d2UgYXJlbid0IHBhaW50aW5nIGF0IGFsbC4KLSAgICAgICAgaWYgKG1fbGF5ZXJSZWN0LmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGxheWVyRmxvYXRSZWN0Lmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBJbnRSZWN0KDAsIDAsIDAsIDApOwogCiAgICAg
ICAgIC8vIFdlIGFkanVzdCBhZ2FpbiBiZWNhdXNlIHRoZSBwaXhlbHMgYXQgdGhlIGJvcmRlcnMg
YXJlIHN0aWxsCiAgICAgICAgIC8vIHBvdGVudGlhbGx5IGFmZmVjdGVkIGJ5IHRoZSBwaXhlbHMg
b3V0c2lkZSB0aGUgYnVmZmVyLgotICAgICAgICBpZiAobV90eXBlID09IEJsdXJTaGFkb3cpCi0g
ICAgICAgICAgICBtX2xheWVyUmVjdC5pbmZsYXRlKG1fdHlwZSA9PSBCbHVyU2hhZG93ID8gbV9i
bHVyRGlzdGFuY2UgOiAwKTsKKyAgICAgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KSB7Cisg
ICAgICAgICAgICBsYXllckZsb2F0UmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNlKTsKKyAgICAg
ICAgICAgIHVuY2xpcHBlZExheWVyUmVjdC5pbmZsYXRlKG1fYmx1ckRpc3RhbmNlKTsKKyAgICAg
ICAgICAgIGluZmxhdGlvbiArPSBtX2JsdXJEaXN0YW5jZTsKKyAgICAgICAgfQogICAgIH0KKwor
ICAgIGNvbnN0IGludCBmcmFtZVNpemUgPSBpbmZsYXRpb24gKiAyOworICAgIG1fc291cmNlUmVj
dCA9IEludFJlY3QoMCwgMCwgbGF5ZXJBcmVhLndpZHRoKCkgKyBmcmFtZVNpemUsIGxheWVyQXJl
YS5oZWlnaHQoKSArIGZyYW1lU2l6ZSk7CisgICAgbV9sYXllck9yaWdpbiA9IEZsb2F0UG9pbnQo
bGF5ZXJGbG9hdFJlY3QueCgpLCBsYXllckZsb2F0UmVjdC55KCkpOworCisgICAgY29uc3QgRmxv
YXRQb2ludCBtX3VuY2xpcHBlZExheWVyT3JpZ2luID0gRmxvYXRQb2ludCh1bmNsaXBwZWRMYXll
clJlY3QueCgpLCB1bmNsaXBwZWRMYXllclJlY3QueSgpKTsKKyAgICBjb25zdCBGbG9hdFNpemUg
Y2xpcHBlZE91dCA9IG1fdW5jbGlwcGVkTGF5ZXJPcmlnaW4gLSBtX2xheWVyT3JpZ2luOworCisg
ICAgLy8gU2V0IHRoZSBvcmlnaW4gYXMgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgc2NyYXRj
aCBpbWFnZSwgb3IsIGluIGNhc2UgdGhlcmUncyBhIGNsaXBwZWQKKyAgICAvLyBvdXQgcmVnaW9u
LCBzZXQgdGhlIG9yaWdpbiBhY2NvcmRpbmdseSB0byB0aGUgZnVsbCBib3VuZGluZyByZWN0J3Mg
dG9wLWxlZnQgY29ybmVyLgorICAgIGNvbnN0IGZsb2F0IHRyYW5zbGF0aW9uWCA9IC1sYXllckFy
ZWEueCgpICsgaW5mbGF0aW9uIC0gZmFic2YoY2xpcHBlZE91dC53aWR0aCgpKTsKKyAgICBjb25z
dCBmbG9hdCB0cmFuc2xhdGlvblkgPSAtbGF5ZXJBcmVhLnkoKSArIGluZmxhdGlvbiAtIGZhYnNm
KGNsaXBwZWRPdXQuaGVpZ2h0KCkpOworICAgIG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24gPSBG
bG9hdFBvaW50KHRyYW5zbGF0aW9uWCwgdHJhbnNsYXRpb25ZKTsKKworICAgIHJldHVybiBlbmNs
b3NpbmdJbnRSZWN0KGxheWVyRmxvYXRSZWN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93Lmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaAppbmRleCBmYTc3OGFm
Li5kMTNkMzIxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRT
aGFkb3cuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuaApA
QCAtNzksNiArNzksNyBAQCBwdWJsaWM6CiAgICAgQ29udGV4dFNoYWRvdygpOwogICAgIENvbnRl
eHRTaGFkb3coY29uc3QgQ29sb3ImLCBmbG9hdCByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zm
c2V0KTsKIAorICAgIGJvb2wgbXVzdFVzZUNvbnRleHRTaGFkb3coUGxhdGZvcm1Db250ZXh0KTsK
ICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICAvLyBUaGUgcGFpciBiZWdpblNoYWRvd0xheWVyIGFu
ZCBlbmRTaGFkb3dMYXllciBjcmVhdGVzIGEgdGVtcG9yYXJ5IGltYWdlCkBAIC0xMDYsMjUgKzEw
NywyOCBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1Db250ZXh0IGJlZ2luU2hhZG93TGF5ZXIoUGxh
dGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSk7CiAgICAgdm9pZCBlbmRT
aGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQpOwogICAgIHN0YXRpYyB2b2lkIHB1cmdlU2NyYXRj
aEJ1ZmZlcigpOworICAgIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBnZXRUcmFuc2Zvcm1h
dGlvbk1hdHJpeEZyb21Db250ZXh0KFBsYXRmb3JtQ29udGV4dCk7CisKKyAgICB2b2lkIHNldFNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgZW5hYmxlKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMgPSBlbmFibGU7IH0KKyAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29u
c3QgeyByZXR1cm4gbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgfQogI2lmIFBMQVRGT1JNKENB
SVJPKQogICAgIHZvaWQgZHJhd1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0UmFkaXVzID0gSW50U2l6
ZSgpLCBjb25zdCBJbnRTaXplJiB0b3BSaWdodFJhZGl1cyA9IEludFNpemUoKSwgY29uc3QgSW50
U2l6ZSYgYm90dG9tTGVmdFJhZGl1cyA9IEludFNpemUoKSwgY29uc3QgSW50U2l6ZSYgYm90dG9t
UmlnaHRSYWRpdXMgPSBJbnRTaXplKCkpOwogI2VuZGlmCi0KICNpZiBQTEFURk9STShRVCkKLSAg
ICBRUG9pbnRGIG9mZnNldCgpIHsgcmV0dXJuIFFQb2ludEYobV9vZmZzZXQud2lkdGgoKSwgbV9v
ZmZzZXQuaGVpZ2h0KCkpOyB9CisgICAgUVBvaW50RiBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBR
UG9pbnRGKG1fb2Zmc2V0LndpZHRoKCksIG1fb2Zmc2V0LmhlaWdodCgpKTsgfQogI2VuZGlmCiAK
LQogcHJpdmF0ZToKLSAgICBJbnRSZWN0IG1fbGF5ZXJSZWN0OwotICAgIFBsYXRmb3JtSW1hZ2Ug
bV9sYXllckltYWdlOwotICAgIFBsYXRmb3JtQ29udGV4dCBtX2xheWVyQ29udGV4dDsKLQotICAg
IC8vIFVzZWQgZm9yIHJlZmVyZW5jZSB3aGVuIGNhbnZhcyBzY2FsZSh4LHkpIHdhcyBjYWxsZWQu
Ci0gICAgRmxvYXRSZWN0IG1fdW5zY2FsZWRMYXllclJlY3Q7CisgICAgUGxhdGZvcm1JbWFnZSBt
X2xheWVySW1hZ2U7IC8vIEJ1ZmZlciB0byB3aGVyZSB0aGUgdGVtcG9yYXJ5IHNoYWRvdyB3aWxs
IGJlIGRyYXduIHRvLgorICAgIFBsYXRmb3JtQ29udGV4dCBtX2xheWVyQ29udGV4dDsgLy8gQ29u
dGV4dCB1c2VkIHRvIHBhaW50IHRoZSBzaGFkb3cgdG8gdGhlIGxheWVyIGltYWdlLgorICAgIEZs
b2F0UmVjdCBtX3NvdXJjZVJlY3Q7IC8vIFN1Yi1yZWN0IG9mIG1fbGF5ZXJJbWFnZSB0aGF0IGNv
bnRhaW5zIHRoZSBzaGFkb3cgcGl4ZWxzLgorICAgIEZsb2F0UG9pbnQgbV9sYXllck9yaWdpbjsg
Ly8gVG9wLWxlZnQgY29ybmVyIG9mIHRoZSAocG9zc2libHkgY2xpcHBlZCkgYm91bmRpbmcgcmVj
dCB0byBkcmF3IHRoZSBzaGFkb3cgdG8uCisgICAgRmxvYXRQb2ludCBtX2xheWVyQ29udGV4dFRy
YW5zbGF0aW9uOyAvLyBUcmFuc2xhdGlvbiB0byBhcHBseSB0byBtX2xheWVyQ29udGV4dCBmb3Ig
dGhlIHNoYWRvdyB0byBiZSBjb3JyZWN0bHkgY2xpcHBlZC4KKyAgICBib29sIG1fc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXM7CiAKICAgICB2b2lkIGJsdXJMYXllckltYWdlKHVuc2lnbmVkIGNoYXIq
LCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGludCBzdHJpZGUpOwotICAgIHZvaWQgY2FsY3Vs
YXRlTGF5ZXJCb3VuZGluZ1JlY3QoY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IElu
dFJlY3QmIGNsaXBSZWN0KTsKKyAgICBJbnRSZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KGNvbnN0IFBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0
IEludFJlY3QmIGNsaXBSZWN0KTsKKwogI2lmIFBMQVRGT1JNKENBSVJPKQogICAgIHZvaWQgZHJh
d1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKFBsYXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBJ
bnRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywg
Y29uc3QgSW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMsIGZsb2F0IGFscGhhKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Db250ZXh0U2hhZG93
Q2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Db250ZXh0U2hhZG93
Q2Fpcm8uY3BwCmluZGV4IDY5OWVkZjcuLjY4MDEyNjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NvbnRleHRTaGFkb3dDYWlyby5jcHAKQEAgLTgyLDE5
ICs4MiwyNSBAQCBzdGF0aWMgY2Fpcm9fc3VyZmFjZV90KiBnZXRTY3JhdGNoQnVmZmVyKGNvbnN0
IEludFNpemUmIHNpemUpCiAgICAgcmV0dXJuIHNjcmF0Y2hCdWZmZXI7CiB9CiAKLVBsYXRmb3Jt
Q29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKK1RyYW5zZm9ybWF0aW9uTWF0cml4
IENvbnRleHRTaGFkb3c6OmdldFRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbUNvbnRleHQoUGxhdGZv
cm1Db250ZXh0IGNvbnRleHQpCiB7Ci0gICAgbV91bnNjYWxlZExheWVyUmVjdCA9IGxheWVyQXJl
YTsKKyAgICBjYWlyb19tYXRyaXhfdCB0cmFuc2Zvcm07CisgICAgY2Fpcm9fZ2V0X21hdHJpeChj
b250ZXh0LCAmdHJhbnNmb3JtKTsKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgodHJh
bnNmb3JtLnh4LCB0cmFuc2Zvcm0ueXgsIHRyYW5zZm9ybS54eSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHJhbnNmb3JtLnl5LCB0cmFuc2Zvcm0ueDAsIHRyYW5zZm9ybS55MCk7
Cit9CiAKK1BsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBs
YXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKK3sKICAg
ICBkb3VibGUgeDEsIHgyLCB5MSwgeTI7CiAgICAgY2Fpcm9fY2xpcF9leHRlbnRzKGNvbnRleHQs
ICZ4MSwgJnkxLCAmeDIsICZ5Mik7Ci0gICAgY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QobGF5
ZXJBcmVhLCBJbnRSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSkpOworICAgIEludFJlY3Qg
bGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoY29udGV4dCwgbGF5ZXJBcmVh
LCBJbnRSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSkpOwogCiAgICAgLy8gRG9uJ3QgcGFp
bnQgaWYgd2UgYXJlIHRvdGFsbHkgb3V0c2lkZSB0aGUgY2xpcCByZWdpb24uCi0gICAgaWYgKG1f
bGF5ZXJSZWN0LmlzRW1wdHkoKSkKKyAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBtX2xheWVySW1hZ2UgPSBnZXRTY3JhdGNoQnVmZmVyKG1fbGF5
ZXJSZWN0LnNpemUoKSk7CisgICAgbV9sYXllckltYWdlID0gZ2V0U2NyYXRjaEJ1ZmZlcihsYXll
clJlY3Quc2l6ZSgpKTsKICAgICBtX2xheWVyQ29udGV4dCA9IGNhaXJvX2NyZWF0ZShtX2xheWVy
SW1hZ2UpOwogCiAgICAgLy8gQWx3YXlzIGNsZWFyIHRoZSBzdXJmYWNlIGZpcnN0LgpAQCAtMTAy
LDggKzEwOCw3IEBAIFBsYXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xh
eWVyKFBsYXRmb3JtQ29udGV4dCBjb250ZXh0LCBjb25zdCBGCiAgICAgY2Fpcm9fcGFpbnQobV9s
YXllckNvbnRleHQpOwogICAgIGNhaXJvX3NldF9vcGVyYXRvcihtX2xheWVyQ29udGV4dCwgQ0FJ
Uk9fT1BFUkFUT1JfT1ZFUik7CiAKLSAgICBjYWlyb190cmFuc2xhdGUobV9sYXllckNvbnRleHQs
IG1fb2Zmc2V0LndpZHRoKCksIG1fb2Zmc2V0LmhlaWdodCgpKTsKLSAgICBjYWlyb190cmFuc2xh
dGUobV9sYXllckNvbnRleHQsIC1tX2xheWVyUmVjdC54KCksIC1tX2xheWVyUmVjdC55KCkpOwor
ICAgIGNhaXJvX3RyYW5zbGF0ZShtX2xheWVyQ29udGV4dCwgbV9sYXllckNvbnRleHRUcmFuc2xh
dGlvbi54KCksIG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24ueSgpKTsKICAgICByZXR1cm4gbV9s
YXllckNvbnRleHQ7CiB9CiAKQEAgLTEyMiwxOSArMTI3LDcgQEAgdm9pZCBDb250ZXh0U2hhZG93
OjplbmRTaGFkb3dMYXllcihjYWlyb190KiBjcikKIAogICAgIGNhaXJvX3NhdmUoY3IpOwogICAg
IHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY3IsIG1fY29sb3IpOwotCi0gICAgY2Fpcm9fbWF0cml4
X3QgdHJhbnNmb3JtOwotICAgIGNhaXJvX2dldF9tYXRyaXgoY3IsICZ0cmFuc2Zvcm0pOwotICAg
IGRvdWJsZSB4ID0gbV9sYXllclJlY3QueCgpOwotICAgIGRvdWJsZSB5ID0gbV9sYXllclJlY3Qu
eSgpOwotCi0gICAgZG91YmxlIHhTY2FsZSA9IHNxcnQodHJhbnNmb3JtLnh4ICogdHJhbnNmb3Jt
Lnh4ICsgdHJhbnNmb3JtLnl4ICogdHJhbnNmb3JtLnl4KTsKLSAgICBkb3VibGUgeVNjYWxlID0g
c3FydCh0cmFuc2Zvcm0ueHkgKiB0cmFuc2Zvcm0ueHkgKyB0cmFuc2Zvcm0ueXkgKiB0cmFuc2Zv
cm0ueXkpOwotICAgIGlmICh4U2NhbGUgIT0gMSB8fCB5U2NhbGUgIT0gMSkgewotICAgICAgICB4
ID0gbV91bnNjYWxlZExheWVyUmVjdC54KCkgKyBtX29mZnNldC53aWR0aCgpICAvIHRyYW5zZm9y
bS54eCAtIG1fYmx1ckRpc3RhbmNlOwotICAgICAgICB5ID0gbV91bnNjYWxlZExheWVyUmVjdC55
KCkgKyBtX29mZnNldC5oZWlnaHQoKSAvIHRyYW5zZm9ybS55eSAtIG1fYmx1ckRpc3RhbmNlOwot
ICAgIH0KLSAgICBjYWlyb19tYXNrX3N1cmZhY2UoY3IsIG1fbGF5ZXJJbWFnZSwgeCwgeSk7Cisg
ICAgY2Fpcm9fbWFza19zdXJmYWNlKGNyLCBtX2xheWVySW1hZ2UsIG1fbGF5ZXJPcmlnaW4ueCgp
LCBtX2xheWVyT3JpZ2luLnkoKSk7CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiAKICAgICAvLyBT
Y2hlZHVsZSBhIHB1cmdlIG9mIHRoZSBzY3JhdGNoIGJ1ZmZlci4gV2UgZG8gbm90IG5lZWQgdG8g
ZGVzdHJveSB0aGUgc3VyZmFjZS4KQEAgLTIzNSw5ICsyMjgsOSBAQCB2b2lkIENvbnRleHRTaGFk
b3c6OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgcmVjdAogICAgIC8vIFJlZHVjZSB0aGUgc2l6ZSBvZiB3aGF0IHdlIGhhdmUgdG8gZHJhdyB3
aXRoIHRoZSBjbGlwIGFyZWEuCiAgICAgZG91YmxlIHgxLCB4MiwgeTEsIHkyOwogICAgIGNhaXJv
X2NsaXBfZXh0ZW50cyhjciwgJngxLCAmeTEsICZ4MiwgJnkyKTsKLSAgICBjYWxjdWxhdGVMYXll
ckJvdW5kaW5nUmVjdChzaGFkb3dSZWN0LCBJbnRSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5
MSkpOworICAgIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNyLCBzaGFkb3dSZWN0LCBJbnRS
ZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSkpOwogCi0gICAgaWYgKChzaGFkb3dUZW1wbGF0
ZVNpemUud2lkdGgoKSAqIHNoYWRvd1RlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+IG1fbGF5ZXJSZWN0
LndpZHRoKCkgKiBtX2xheWVyUmVjdC5oZWlnaHQoKSkpIHsKKyAgICBpZiAoKHNoYWRvd1RlbXBs
YXRlU2l6ZS53aWR0aCgpICogc2hhZG93VGVtcGxhdGVTaXplLmhlaWdodCgpID4gbV9zb3VyY2VS
ZWN0LndpZHRoKCkgKiBtX3NvdXJjZVJlY3QuaGVpZ2h0KCkpKSB7CiAgICAgICAgIGRyYXdSZWN0
U2hhZG93V2l0aG91dFRpbGluZyhjciwgcmVjdCwgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRp
dXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzLCBjb250ZXh0LT5nZXRBbHBo
YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCA0YjExNzU2Li4wZDkyYWRhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCkBAIC03Miw3ICs3Miw3
IEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNhaXJvX3QqIGNvbnRleHQsCiAgICAgaWYgKCEoZ3JhcGhpY3NDb250ZXh0LT50
ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlRmlsbCkgfHwgc2hhZG93LT5tX3R5cGUgPT0gQ29u
dGV4dFNoYWRvdzo6Tm9TaGFkb3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChzaGFkb3ct
Pm1fdHlwZSA9PSBDb250ZXh0U2hhZG93OjpTb2xpZFNoYWRvdykgeworICAgIGlmICghc2hhZG93
LT5tdXN0VXNlQ29udGV4dFNoYWRvdyhjb250ZXh0KSkgewogICAgICAgICAvLyBPcHRpbWl6ZSBu
b24tYmx1cnJ5IHNoYWRvd3MsIGJ5IGp1c3QgZHJhd2luZyB0ZXh0IHdpdGhvdXQgdGhlIENvbnRl
eHRTaGFkb3cuCiAgICAgICAgIGNhaXJvX3NhdmUoY29udGV4dCk7CiAgICAgICAgIGNhaXJvX3Ry
YW5zbGF0ZShjb250ZXh0LCBzaGFkb3ctPm1fb2Zmc2V0LndpZHRoKCksIHNoYWRvdy0+bV9vZmZz
ZXQuaGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCA1MDMyZjk3Li5hNmVkYWY3IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dENhaXJvLmNwcApAQCAtODcxLDYgKzg3MSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRQbGF0Zm9ybVNoYWRvdyhGbG9hdFNpemUgY29uc3QmIHNpemUsIGZsb2F0IGJsdXIsIENvbG9y
CiAgICAgICAgIG1fZGF0YS0+c2hhZG93ID0gQ29udGV4dFNoYWRvdyhjb2xvciwgYmx1ciwgRmxv
YXRTaXplKHNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpKTsKICAgICB9IGVsc2UKICAgICAg
ICAgbV9kYXRhLT5zaGFkb3cgPSBDb250ZXh0U2hhZG93KGNvbG9yLCBibHVyLCBGbG9hdFNpemUo
c2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CisKKyAgICBtX2RhdGEtPnNoYWRvdy5zZXRT
aGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsK
IH0KIAogQ29udGV4dFNoYWRvdyogR3JhcGhpY3NDb250ZXh0Ojpjb250ZXh0U2hhZG93KCkKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAKaW5kZXggYTBkNWM2Mi4uZWFi
ZDkxMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAKQEAgLTIy
NSw3ICsyMjUsNyBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBjYWlyb190KiBjb250ZXh0LAogICAgIEZsb2F0UG9pbnQgdG90
YWxPZmZzZXQocG9pbnQgKyBzaGFkb3ctPm1fb2Zmc2V0KTsKIAogICAgIC8vIE9wdGltaXplIG5v
bi1ibHVycnkgc2hhZG93cywgYnkganVzdCBkcmF3aW5nIHRleHQgd2l0aG91dCB0aGUgQ29udGV4
dFNoYWRvdy4KLSAgICBpZiAoc2hhZG93LT5tX3R5cGUgPT0gQ29udGV4dFNoYWRvdzo6U29saWRT
aGFkb3cpIHsKKyAgICBpZiAoIXNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3coY29udGV4dCkp
IHsKICAgICAgICAgY2Fpcm9fc2F2ZShjb250ZXh0KTsKICAgICAgICAgY2Fpcm9fdHJhbnNsYXRl
KGNvbnRleHQsIHRvdGFsT2Zmc2V0LngoKSwgdG90YWxPZmZzZXQueSgpKTsKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwCmluZGV4IGY3Yzcw
ZjYuLjQ4Zjc5NzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29u
dGV4dFNoYWRvd1F0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRl
eHRTaGFkb3dRdC5jcHAKQEAgLTEwMCw2ICsxMDAsMTMgQEAgdm9pZCBTaGFkb3dCdWZmZXI6OnRp
bWVyRXZlbnQoUVRpbWVyRXZlbnQqIGV2ZW50KQogICAgIFFPYmplY3Q6OnRpbWVyRXZlbnQoZXZl
bnQpOwogfQogCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBDb250ZXh0U2hhZG93OjpnZXRUcmFuc2Zv
cm1hdGlvbk1hdHJpeEZyb21Db250ZXh0KFBsYXRmb3JtQ29udGV4dCBjb250ZXh0KQoreworICAg
IGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSA9IGNvbnRleHQtPnRyYW5zZm9ybSgpOworICAg
IHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCh0cmFuc2Zvcm0ubTExKCksIHRyYW5zZm9ybS5t
MTIoKSwgdHJhbnNmb3JtLm0yMSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
cmFuc2Zvcm0ubTIyKCksIHRyYW5zZm9ybS5keCgpLCB0cmFuc2Zvcm0uZHkoKSk7Cit9CisKIFFf
R0xPQkFMX1NUQVRJQyhTaGFkb3dCdWZmZXIsIHNjcmF0Y2hTaGFkb3dCdWZmZXIpCiAKIFBsYXRm
b3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4
dCBwLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKQEAgLTExNCwyNSArMTIxLDIyIEBAIFBs
YXRmb3JtQ29udGV4dCBDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29u
dGV4dCBwLCBjb25zdCBGbG9hdFJlCiAgICAgZWxzZQogICAgICAgICBjbGlwUmVjdCA9IHAtPnRy
YW5zZm9ybSgpLmludmVydGVkKCkubWFwUmVjdChwLT53aW5kb3coKSk7CiAKLSAgICBtX3Vuc2Nh
bGVkTGF5ZXJSZWN0ID0gbGF5ZXJBcmVhOwotICAgIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KGxheWVyQXJlYSwgSW50UmVjdChjbGlwUmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qu
d2lkdGgoKSwgY2xpcFJlY3QuaGVpZ2h0KCkpKTsKKyAgICAvLyBTZXQgbV9sYXllck9yaWdpbiwg
bV9sYXllckNvbnRleHRUcmFuc2xhdGlvbiwgbV9zb3VyY2VSZWN0LgorICAgIEludFJlY3QgY2xp
cChjbGlwUmVjdC54KCksIGNsaXBSZWN0LnkoKSwgY2xpcFJlY3Qud2lkdGgoKSwgY2xpcFJlY3Qu
aGVpZ2h0KCkpOworICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGlu
Z1JlY3QocCwgbGF5ZXJBcmVhLCBjbGlwKTsKIAogICAgIC8vIERvbid0IHBhaW50IGlmIHdlIGFy
ZSB0b3RhbGx5IG91dHNpZGUgdGhlIGNsaXAgcmVnaW9uLgotICAgIGlmIChtX2xheWVyUmVjdC5p
c0VtcHR5KCkpCisgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAw
OwogCiAgICAgU2hhZG93QnVmZmVyKiBzaGFkb3dCdWZmZXIgPSBzY3JhdGNoU2hhZG93QnVmZmVy
KCk7Ci0gICAgUUltYWdlKiBzaGFkb3dJbWFnZSA9IHNoYWRvd0J1ZmZlci0+c2NyYXRjaEltYWdl
KG1fbGF5ZXJSZWN0LnNpemUoKSk7CisgICAgUUltYWdlKiBzaGFkb3dJbWFnZSA9IHNoYWRvd0J1
ZmZlci0+c2NyYXRjaEltYWdlKGxheWVyUmVjdC5zaXplKCkpOwogICAgIG1fbGF5ZXJJbWFnZSA9
IFFJbWFnZSgqc2hhZG93SW1hZ2UpOwogCiAgICAgbV9sYXllckNvbnRleHQgPSBuZXcgUVBhaW50
ZXI7CiAgICAgbV9sYXllckNvbnRleHQtPmJlZ2luKCZtX2xheWVySW1hZ2UpOwogICAgIG1fbGF5
ZXJDb250ZXh0LT5zZXRGb250KHAtPmZvbnQoKSk7Ci0gICAgbV9sYXllckNvbnRleHQtPnRyYW5z
bGF0ZShtX29mZnNldC53aWR0aCgpLCBtX29mZnNldC5oZWlnaHQoKSk7Ci0KLSAgICAvLyBUaGUg
b3JpZ2luIGlzIG5vdyB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBzY3JhdGNoIGltYWdlLgot
ICAgIG1fbGF5ZXJDb250ZXh0LT50cmFuc2xhdGUoLW1fbGF5ZXJSZWN0LngoKSwgLW1fbGF5ZXJS
ZWN0LnkoKSk7Ci0KKyAgICBtX2xheWVyQ29udGV4dC0+dHJhbnNsYXRlKG1fbGF5ZXJDb250ZXh0
VHJhbnNsYXRpb24pOwogICAgIHJldHVybiBtX2xheWVyQ29udGV4dDsKIH0KIApAQCAtMTU1LDEz
ICsxNTksNyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmVuZFNoYWRvd0xheWVyKFBsYXRmb3JtQ29u
dGV4dCBwKQogICAgICAgICBwLmVuZCgpOwogICAgIH0KIAotICAgIGNvbnN0IFFUcmFuc2Zvcm0g
dHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0gICAgaWYgKHRyYW5zZm9ybS5pc1NjYWxpbmco
KSkgewotICAgICAgICBxcmVhbCB4ID0gbV91bnNjYWxlZExheWVyUmVjdC54KCkgKyBtX29mZnNl
dC53aWR0aCgpICAvIHRyYW5zZm9ybS5tMTEoKSAtIG1fYmx1ckRpc3RhbmNlOwotICAgICAgICBx
cmVhbCB5ID0gbV91bnNjYWxlZExheWVyUmVjdC55KCkgKyBtX29mZnNldC5oZWlnaHQoKSAvIHRy
YW5zZm9ybS5tMjIoKSAtIG1fYmx1ckRpc3RhbmNlOwotICAgICAgICBwLT5kcmF3SW1hZ2UoUVBv
aW50Rih4LCB5KSwgbV9sYXllckltYWdlKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcC0+ZHJhd0lt
YWdlKG1fbGF5ZXJSZWN0LnRvcExlZnQoKSwgbV9sYXllckltYWdlKTsKKyAgICBwLT5kcmF3SW1h
Z2UobV9sYXllck9yaWdpbiwgbV9sYXllckltYWdlLCBtX3NvdXJjZVJlY3QpOwogCiAgICAgc2Ny
YXRjaFNoYWRvd0J1ZmZlcigpLT5zY2hlZHVsZVB1cmdlKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0ZvbnRRdC5jcHAKaW5kZXggZTg5ZDMzMC4uMTMxYWU5MyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyB2
b2lkIGRyYXdUZXh0Q29tbW9uKEdyYXBoaWNzQ29udGV4dCogY3R4LCBjb25zdCBUZXh0UnVuJiBy
dW4sIGNvbnN0IEZsb2F0CiAKICAgICAgICAgICAgIGlmIChjdHhTaGFkb3ctPm1fdHlwZSAhPSBD
b250ZXh0U2hhZG93OjpOb1NoYWRvdykgewogICAgICAgICAgICAgICAgIENvbnRleHRTaGFkb3cq
IGN0eFNoYWRvdyA9IGN0eC0+Y29udGV4dFNoYWRvdygpOwotICAgICAgICAgICAgICAgIGlmIChj
dHhTaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93KSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFjdHhTaGFkb3ctPm11c3RVc2VDb250ZXh0U2hhZG93KHApKSB7CiAgICAg
ICAgICAgICAgICAgICAgIHAtPnNhdmUoKTsKICAgICAgICAgICAgICAgICAgICAgcC0+c2V0UGVu
KGN0eFNoYWRvdy0+bV9jb2xvcik7CiAgICAgICAgICAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShj
dHhTaGFkb3ctPm9mZnNldCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc0NvbnRleHRRdC5jcHAKaW5kZXggYjk0YzkzNC4uOWRkMzhhYSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKQEAg
LTUzLDcgKzUzLDYgQEAKICNpbmNsdWRlICJUcmFuc3BhcmVuY3lMYXllci5oIgogCiAjaW5jbHVk
ZSA8UUJydXNoPgotI2luY2x1ZGUgPFFEZWJ1Zz4KICNpbmNsdWRlIDxRR3JhZGllbnQ+CiAjaW5j
bHVkZSA8UVBhaW50RGV2aWNlPgogI2luY2x1ZGUgPFFQYWludEVuZ2luZT4KQEAgLTUxMSwzMyAr
NTEwLDIwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRo
KQogCiAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAgQ29udGV4dFNoYWRv
dyogc2hhZG93ID0gY29udGV4dFNoYWRvdygpOwotICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUg
IT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdwotICAgICAgICAgICAgJiYgIW1fc3RhdGUuZmls
bFBhdHRlcm4gJiYgIW1fc3RhdGUuZmlsbEdyYWRpZW50KQorICAgICAgICBpZiAoc2hhZG93LT5t
dXN0VXNlQ29udGV4dFNoYWRvdyhwKSB8fCBtX3N0YXRlLmZpbGxQYXR0ZXJuIHx8IG1fc3RhdGUu
ZmlsbEdyYWRpZW50KQogICAgICAgICB7Ci0gICAgICAgICAgICBRUG9pbnRGIG9mZnNldCA9IHNo
YWRvdy0+b2Zmc2V0KCk7Ci0gICAgICAgICAgICBjb25zdCBRVHJhbnNmb3JtJiB0cmFuc2Zvcm0g
PSBwLT50cmFuc2Zvcm0oKTsKLSAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5nKCkp
IHsKLSAgICAgICAgICAgICAgICAvLyBJZiBzY2FsaW5nIGlzIHJlcXVpcmVkLCBmaW5kIHRoZSBu
ZXcgY29vcmQgZm9yIHNoYWRvdyBvcmlnaW4sCi0gICAgICAgICAgICAgICAgLy8gc28gdGhhdCB0
aGUgcmVsYXRpdmUgb2Zmc2V0IHRvIGl0cyBzaGFwZSBpcyBrZXB0LgotICAgICAgICAgICAgICAg
IFFQb2ludEYgdHJhbnNsYXRlZE9mZnNldChvZmZzZXQueCgpIC8gdHJhbnNmb3JtLm0xMSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQueSgpIC8gdHJh
bnNmb3JtLm0yMigpKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKHRy
YW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgICAgIHAtPmZpbGxQYXRoKHBsYXRmb3JtUGF0
aCwgUUNvbG9yKHNoYWRvdy0+bV9jb2xvcikpOwotICAgICAgICAgICAgICAgIHBsYXRmb3JtUGF0
aC50cmFuc2xhdGUoLXRyYW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBwLT5m
aWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihzaGFkb3ctPm1fY29sb3IpKTsKLSAgICAgICAg
ICAgICAgICBwLT50cmFuc2xhdGUoLW9mZnNldCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVn
aW5TaGFkb3dMYXllcihwLCBwbGF0Zm9ybVBhdGguY29udHJvbFBvaW50UmVjdCgpKTsKICAgICAg
ICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRl
ci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsK
ICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5maWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFD
b2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9yKSk7CiAgICAgICAgICAgICAgICAgc2hhZG93LT5l
bmRTaGFkb3dMYXllcihwKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIFFQb2ludEYgb2Zmc2V0ID0gc2hhZG93LT5vZmZzZXQoKTsKKyAgICAgICAgICAgIHAt
PnRyYW5zbGF0ZShvZmZzZXQpOworICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGxhdGZvcm1QYXRo
LCBRQ29sb3Ioc2hhZG93LT5tX2NvbG9yKSk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW9m
ZnNldCk7CiAgICAgICAgIH0KLQogICAgIH0KICAgICBpZiAobV9zdGF0ZS5maWxsUGF0dGVybikg
ewogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gYWZmaW5lOwpAQCAtNTYyLDI4ICs1NDgsOCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogCiAgICAg
aWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93
ID0gY29udGV4dFNoYWRvdygpOwotCi0gICAgICAgIGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250
ZXh0U2hhZG93OjpCbHVyU2hhZG93Ci0gICAgICAgICAgICAmJiAhbV9zdGF0ZS5zdHJva2VQYXR0
ZXJuICYmICFtX3N0YXRlLnN0cm9rZUdyYWRpZW50KQorICAgICAgICBpZiAoc2hhZG93LT5tdXN0
VXNlQ29udGV4dFNoYWRvdyhwKSB8fCBtX3N0YXRlLnN0cm9rZVBhdHRlcm4gfHwgbV9zdGF0ZS5z
dHJva2VHcmFkaWVudCkKICAgICAgICAgewotICAgICAgICAgICAgUVBlbiBzaGFkb3dQZW4ocGVu
KTsKLSAgICAgICAgICAgIHNoYWRvd1Blbi5zZXRDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2NvbG9y
KTsKLSAgICAgICAgICAgIFFQb2ludEYgb2Zmc2V0ID0gc2hhZG93LT5vZmZzZXQoKTsKLSAgICAg
ICAgICAgIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9ybSA9IHAtPnRyYW5zZm9ybSgpOwotICAg
ICAgICAgICAgaWYgKHRyYW5zZm9ybS5pc1NjYWxpbmcoKSkgewotICAgICAgICAgICAgICAgIC8v
IElmIHNjYWxpbmcgaXMgcmVxdWlyZWQsIGZpbmQgdGhlIG5ldyBjb29yZCBmb3Igc2hhZG93IG9y
aWdpbiwKLSAgICAgICAgICAgICAgICAvLyBzbyB0aGF0IHRoZSByZWxhdGl2ZSBvZmZzZXQgdG8g
aXRzIHNoYXBlIGlzIGtlcHQuCi0gICAgICAgICAgICAgICAgUVBvaW50RiB0cmFuc2xhdGVkT2Zm
c2V0KG9mZnNldC54KCkgLyB0cmFuc2Zvcm0ubTExKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9mZnNldC55KCkgLyB0cmFuc2Zvcm0ubTIyKCkpOwotICAgICAg
ICAgICAgICAgIHBsYXRmb3JtUGF0aC50cmFuc2xhdGUodHJhbnNsYXRlZE9mZnNldCk7Ci0gICAg
ICAgICAgICAgICAgcC0+c3Ryb2tlUGF0aChwbGF0Zm9ybVBhdGgsIHNoYWRvd1Blbik7Ci0gICAg
ICAgICAgICAgICAgcGxhdGZvcm1QYXRoLnRyYW5zbGF0ZSgtdHJhbnNsYXRlZE9mZnNldCk7Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShvZmZzZXQp
OwotICAgICAgICAgICAgICAgIHAtPnN0cm9rZVBhdGgocGxhdGZvcm1QYXRoLCBzaGFkb3dQZW4p
OwotICAgICAgICAgICAgICAgIHAtPnRyYW5zbGF0ZSgtb2Zmc2V0KTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCBib3VuZGluZ1JlY3QgPSBw
bGF0Zm9ybVBhdGguY29udHJvbFBvaW50UmVjdCgpOwogICAgICAgICAgICAgYm91bmRpbmdSZWN0
LmluZmxhdGUocGVuLm1pdGVyTGltaXQoKSArIHBlbi53aWR0aEYoKSk7CiAgICAgICAgICAgICBR
UGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBib3Vu
ZGluZ1JlY3QpOwpAQCAtNTkyLDYgKzU1OCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ry
b2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXIt
PnN0cm9rZVBhdGgocGxhdGZvcm1QYXRoLCBwZW4pOwogICAgICAgICAgICAgICAgIHNoYWRvdy0+
ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBRUGVuIHNoYWRvd1BlbihwZW4pOworICAgICAgICAgICAgc2hhZG93UGVuLnNldENv
bG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpOworICAgICAgICAgICAgUVBvaW50RiBvZmZzZXQg
PSBzaGFkb3ctPm9mZnNldCgpOworICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG9mZnNldCk7Cisg
ICAgICAgICAgICBwLT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgc2hhZG93UGVuKTsKKyAgICAg
ICAgICAgIHAtPnRyYW5zbGF0ZSgtb2Zmc2V0KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNzEx
LDcgKzY4NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBicnVzaCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG1fZGF0YS0+aGFzU2hhZG93KCkpIHsKLSAgICAgICAg
ICAgIGlmIChzaGFkb3ctPm1fdHlwZSA9PSBDb250ZXh0U2hhZG93OjpCbHVyU2hhZG93KSB7Cisg
ICAgICAgICAgICBpZiAoc2hhZG93LT5tdXN0VXNlQ29udGV4dFNoYWRvdyhwKSkgewogICAgICAg
ICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNoYWRvd0xh
eWVyKHAsIG5vcm1hbGl6ZWRSZWN0KTsKICAgICAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRl
cikgewogICAgICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zZXRPcGFjaXR5KHN0YXRp
Y19jYXN0PHFyZWFsPihzaGFkb3ctPm1fY29sb3IuYWxwaGEoKSkgLyAyNTUpOwpAQCAtNzE5LDE3
ICs2OTIsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKICAgICAgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihwKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IC8vIFNvbGlkIHJlY3RhbmdsZSBmaWxsIHdpdGggbm8gYmx1ciBzaGFkb3cgY2FuIGJlIGRvbmUg
ZmFzdGVyCi0gICAgICAgICAgICAgICAgLy8gd2l0aG91dCB1c2luZyB0aGUgc2hhZG93IGxheWVy
IGF0IGFsbC4KKyAgICAgICAgICAgICAgICAvLyBTb2xpZCByZWN0YW5nbGUgZmlsbCB3aXRoIG5v
IGJsdXIgc2hhZG93IG9yIHRyYW5zZm9ybWF0aW9ucyBhcHBsaWVkIGNhbiBiZSBkb25lCisgICAg
ICAgICAgICAgICAgLy8gZmFzdGVyIHdpdGhvdXQgdXNpbmcgdGhlIHNoYWRvdyBsYXllciBhdCBh
bGwuCiAgICAgICAgICAgICAgICAgUUNvbG9yIHNoYWRvd0NvbG9yID0gc2hhZG93LT5tX2NvbG9y
OwogICAgICAgICAgICAgICAgIHNoYWRvd0NvbG9yLnNldEFscGhhRihzaGFkb3dDb2xvci5hbHBo
YUYoKSAqIHAtPmJydXNoKCkuY29sb3IoKS5hbHBoYUYoKSk7Ci0gICAgICAgICAgICAgICAgY29u
c3QgUVRyYW5zZm9ybSYgdHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHRyYW5zZm9ybS5pc1NjYWxpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBwLT5m
aWxsUmVjdChub3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHN0YXRpY19jYXN0PHFyZWFsPihzaGFk
b3ctPm9mZnNldCgpLngoKSkgLyB0cmFuc2Zvcm0ubTExKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8cXJlYWw+
KHNoYWRvdy0+b2Zmc2V0KCkueSgpICAvIHRyYW5zZm9ybS5tMjIoKSkpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaGFkb3dDb2xvcik7Ci0gICAgICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0
ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRvd0NvbG9yKTsKKyAgICAgICAgICAgICAgICBwLT5m
aWxsUmVjdChub3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHNoYWRvdy0+b2Zmc2V0KCkpLCBzaGFk
b3dDb2xvcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNzQ5LDE4ICs3MTYsMTUg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclMKIAogICAgIGlmIChtX2RhdGEtPmhhc1NoYWRvdygp
KSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFkb3coKTsKLQot
ICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdykg
ewotICAgICAgICAgICAgLy8gV2UgZG8gbm90IG5lZWQgYW55IGxheWVyIGZvciBzaW1wbGUgc2hh
ZG93LgotICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJhbnNsYXRlZChz
aGFkb3ctPm9mZnNldCgpKSwgc2hhZG93LT5tX2NvbG9yKTsKLSAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3cocCkpIHsKICAgICAgICAgICAg
IFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHAsIG5v
cm1hbGl6ZWRSZWN0KTsKICAgICAgICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAgICAgICAg
ICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21w
b3NpdGlvbk1vZGVfU291cmNlKTsKICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5maWxs
UmVjdChub3JtYWxpemVkUmVjdCwgc2hhZG93LT5tX2NvbG9yKTsKICAgICAgICAgICAgICAgICBz
aGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQotICAgICAgICB9CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QudHJhbnNs
YXRlZChzaGFkb3ctPm9mZnNldCgpKSwgc2hhZG93LT5tX2NvbG9yKTsKICAgICB9CiAKICAgICBw
LT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwgbV9kYXRhLT5zb2xpZENvbG9yKTsKQEAgLTc3Niwx
OSArNzQwLDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3Qg
SW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmCiAgICAgUVBhaW50ZXIqIHAgPSBt
X2RhdGEtPnAoKTsKICAgICBpZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAgICAgICBDb250
ZXh0U2hhZG93KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7Ci0KLSAgICAgICAgaWYgKHNoYWRv
dy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cpIHsKLSAgICAgICAgICAgIC8v
IFdlIGRvIG5vdCBuZWVkIGFueSBsYXllciBmb3Igc2ltcGxlIHNoYWRvdy4KLSAgICAgICAgICAg
IHAtPnRyYW5zbGF0ZShtX2RhdGEtPnNoYWRvdy5vZmZzZXQoKSk7Ci0gICAgICAgICAgICBwLT5m
aWxsUGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xv
cikpOwotICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1tX2RhdGEtPnNoYWRvdy5vZmZzZXQoKSk7
Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzaGFkb3ctPm11c3RVc2VDb250ZXh0U2hh
ZG93KHApKSB7CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvdy0+
YmVnaW5TaGFkb3dMYXllcihwLCByZWN0KTsKICAgICAgICAgICAgIGlmIChzaGFkb3dQYWludGVy
KSB7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQ
YWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsKICAgICAgICAgICAgICAgICBzaGFkb3dQ
YWludGVyLT5maWxsUGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3IobV9kYXRhLT5zaGFk
b3cubV9jb2xvcikpOwogICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7
CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwLT50cmFuc2xh
dGUobV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOworICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGF0
aC5wbGF0Zm9ybVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKKyAgICAg
ICAgICAgIHAtPnRyYW5zbGF0ZSgtbV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOwogICAgICAgICB9
CiAgICAgfQogICAgIHAtPmZpbGxQYXRoKHBhdGgucGxhdGZvcm1QYXRoKCksIFFDb2xvcihjb2xv
cikpOwpAQCAtOTU4LDkgKzkyMCwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZv
cm1TaGFkb3coY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBibHVyLCBjb25zdAogICAgICAg
ICAvLyBXZSBmbGlwIHRoZSBoZWlnaHQgc2luY2UgQ0cgYW5kIEhUTUw1IENhbnZhcyBoYXZlIG9w
cG9zaXRlIFkgYXhpcwogICAgICAgICBtX3N0YXRlLnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZShz
aXplLndpZHRoKCksIC1zaXplLmhlaWdodCgpKTsKICAgICAgICAgbV9kYXRhLT5zaGFkb3cgPSBD
b250ZXh0U2hhZG93KGNvbG9yLCBibHVyLCBGbG9hdFNpemUoc2l6ZS53aWR0aCgpLCAtc2l6ZS5o
ZWlnaHQoKSkpOwotICAgIH0gZWxzZSB7CisgICAgfSBlbHNlCiAgICAgICAgIG1fZGF0YS0+c2hh
ZG93ID0gQ29udGV4dFNoYWRvdyhjb2xvciwgYmx1ciwgRmxvYXRTaXplKHNpemUud2lkdGgoKSwg
c2l6ZS5oZWlnaHQoKSkpOwotICAgIH0KKworICAgIG1fZGF0YS0+c2hhZG93LnNldFNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zKG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJQbGF0Zm9ybVNoYWRvdygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76918</attachid>
            <date>2010-12-17 15:30:44 -0800</date>
            <delta_ts>2010-12-18 10:45:24 -0800</delta_ts>
            <desc>Entire patch</desc>
            <filename>transformation_patch.diff</filename>
            <type>text/plain</type>
            <size>53429</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">Y29tbWl0IGQ2MGU4ZDM2OGY1YjE1YmYxZDg2Y2I4MDBjNzdmYzM0MTg4MWE0NDkKQXV0aG9yOiBN
YXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgpEYXRlOiAgIEZyaSBEZWMgMTcg
MTU6Mjk6NTQgMjAxMCAtMDgwMAoKICAgIFtRdF0gQ2FudmFzIHNoYWRvdyBvZmZzZXQgc2hvdWxk
IG5vdCBiZSBhZmZlY3RlZCBieSBhbnkgdHJhbnNmb3JtYXRpb24KICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDQyMgogICAgCiAgICBQYXRjaCBieSBIZWxkZXIg
Q29ycmVpYSA8aGVsZGVyQHNlbmNoYS5jb20+IG9uIDIwMTAtMTItMTcKICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgogICAgCiAgICBPbiBhIGNhbnZhcyBjb250ZXh0LCBzaGFkb3dzIGFy
ZSBjdXJyZW50bHkgYWZmZWN0ZWQgYnkgYWxsCiAgICB0cmFuc2Zvcm1hdGlvbnMgZXhjZXB0IHNj
YWxpbmcuIEFjY29yZGluZyB0byB0aGUgc3BlYzoKICAgIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9z
cGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1jYW52YXMtZWxlbWVudC5o
dG1sI3NoYWRvd3MKICAgIAogICAgIlRoZSBzaGFkb3dPZmZzZXRYIGFuZCBzaGFkb3dPZmZzZXRZ
IGF0dHJpYnV0ZXMgc3BlY2lmeSB0aGUgZGlzdGFuY2UKICAgIHRoYXQgdGhlIHNoYWRvdyB3aWxs
IGJlIG9mZnNldCBpbiB0aGUgcG9zaXRpdmUgaG9yaXpvbnRhbCBhbmQgcG9zaXRpdmUKICAgIHZl
cnRpY2FsIGRpc3RhbmNlIHJlc3BlY3RpdmVseS4gVGhlaXIgdmFsdWVzIGFyZSBpbiBjb29yZGlu
YXRlIHNwYWNlCiAgICB1bml0cy4gVGhleSBhcmUgbm90IGFmZmVjdGVkIGJ5IHRoZSBjdXJyZW50
IHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4iCiAgICAKICAgIE5PVEU6IHRoaXMgYXBwbGllcyBvbmx5
IHRvIGNhbnZhcywgbm90IHRvIGJveCBzaGFkb3dzLgogICAgCiAgICBXZWJDb3JlOgogICAgCiAg
ICBUZXN0OiBmYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuaHRt
bAogICAgCiAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwOgogICAgKFdl
YkNvcmU6OkNvbnRleHRTaGFkb3c6OkNvbnRleHRTaGFkb3cpOgogICAgKFdlYkNvcmU6OkNvbnRl
eHRTaGFkb3c6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KToKICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29udGV4dFNoYWRvdy5oOgogICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OnNldFNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKToKICAgIChXZWJDb3JlOjpDb250ZXh0U2hhZG93OjpzaGFk
b3dzSWdub3JlVHJhbnNmb3Jtcyk6CiAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6b2Zmc2V0
KToKICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNwcDoKICAgIChX
ZWJDb3JlOjpDb250ZXh0U2hhZG93OjpiZWdpblNoYWRvd0xheWVyKToKICAgIChXZWJDb3JlOjpD
b250ZXh0U2hhZG93OjplbmRTaGFkb3dMYXllcik6CiAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dFF0LmNwcDoKICAgIChXZWJDb3JlOjptdXN0VXNlQ29udGV4dFNoYWRv
dyk6CiAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aCk6CiAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKToKICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0KToKICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3Vu
ZGVkUmVjdCk6CiAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRv
dyk6CiAgICAKICAgIExheW91dFRlc3RzOgogICAgCiAgICBBZGQgbmV3IHRlc3QgdG8gZW5zdXJl
IHRoYXQgc2hhZG93cyBhcmUgY29ycmVjdGx5IHRyYW5zZm9ybWVkIGtlZXBpbmcKICAgIHRoZSBy
ZWxhdGl2ZSBvZmZzZXQgdG8gdGhlIHNoYXBlLgogICAgCiAgICAqIGZhc3QvY2FudmFzL2NhbnZh
cy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQ6IFNlZSBzdHJva2VQYXRoIGJl
bG93LgogICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3ct
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KICAgICogZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMt
ZmlsbFJlY3Qtc2hhZG93Lmh0bWw6IEFkZGVkLgogICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVz
dHMvY2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qczoKICAgICogZmFzdC9jYW52YXMvc2Ny
aXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUmVjdC1zaGFkb3cuanM6CiAgICAqIGZhc3QvY2Fu
dmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanM6IE5vdyB1
c2luZwogICAgICBhIGxpbmVXaWR0aCA+IDEgdG8gbWFrZSBpdCBlYXNpZXIgdG8gdGVzdCBhbmQg
bW9yZSBmYWlyIGFtb25nIGFsbAogICAgICBwb3J0cywgc2luY2UgdGhlcmUgY2FuIGJlIGRpZmZl
cmVudCB0cmFuc2Zvcm1hdGlvbiBzbW9vdGhuZXNzIG9yCiAgICAgIGFsaWFzaW5nIHNldHRpbmdz
LgogICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJl
Y3Qtc2hhZG93LmpzOiBBZGRlZC4KICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6IEdUSyBwb3J0
IG5lZWRzIHRvIGltcGxlbWVudCB0aGlzIGZlYXR1cmUuCiAgICAqIHBsYXRmb3JtL2d0ay9mYXN0
L2NhbnZhcy9jYW52YXMtc2NhbGUtZmlsbFBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC4KICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1maWxsUmVjdC1z
aGFkb3ctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgogICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9jYW52
YXMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4K
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggOTQxNDZkYy4uMDRhODg0NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEwLTEy
LTE3ICBIZWxkZXIgQ29ycmVpYSAgPGhlbGRlckBzZW5jaGEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gQ2FudmFzIHNoYWRvdyBvZmZz
ZXQgc2hvdWxkIG5vdCBiZSBhZmZlY3RlZCBieSBhbnkgdHJhbnNmb3JtYXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNDIyCisKKyAgICAgICAg
T24gYSBjYW52YXMgY29udGV4dCwgc2hhZG93cyBhcmUgY3VycmVudGx5IGFmZmVjdGVkIGJ5IGFs
bAorICAgICAgICB0cmFuc2Zvcm1hdGlvbnMgZXhjZXB0IHNjYWxpbmcuIEFjY29yZGluZyB0byB0
aGUgc3BlYzoKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWNhbnZhcy1lbGVtZW50Lmh0bWwjc2hhZG93cworCisg
ICAgICAgICJUaGUgc2hhZG93T2Zmc2V0WCBhbmQgc2hhZG93T2Zmc2V0WSBhdHRyaWJ1dGVzIHNw
ZWNpZnkgdGhlIGRpc3RhbmNlCisgICAgICAgIHRoYXQgdGhlIHNoYWRvdyB3aWxsIGJlIG9mZnNl
dCBpbiB0aGUgcG9zaXRpdmUgaG9yaXpvbnRhbCBhbmQgcG9zaXRpdmUKKyAgICAgICAgdmVydGlj
YWwgZGlzdGFuY2UgcmVzcGVjdGl2ZWx5LiBUaGVpciB2YWx1ZXMgYXJlIGluIGNvb3JkaW5hdGUg
c3BhY2UKKyAgICAgICAgdW5pdHMuIFRoZXkgYXJlIG5vdCBhZmZlY3RlZCBieSB0aGUgY3VycmVu
dCB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguIgorCisgICAgICAgIE5PVEU6IHRoaXMgYXBwbGllcyBv
bmx5IHRvIGNhbnZhcywgbm90IHRvIGJveCBzaGFkb3dzLgorCisgICAgICAgIEFkZCBuZXcgdGVz
dCB0byBlbnN1cmUgdGhhdCBzaGFkb3dzIGFyZSBjb3JyZWN0bHkgdHJhbnNmb3JtZWQga2VlcGlu
ZworICAgICAgICB0aGUgcmVsYXRpdmUgb2Zmc2V0IHRvIHRoZSBzaGFwZS4KKworICAgICAgICAq
IGZhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQ6
IFNlZSBzdHJva2VQYXRoIGJlbG93LgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy10cmFu
c2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxQYXRo
LXNoYWRvdy5qczoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNj
YWxlLWZpbGxSZWN0LXNoYWRvdy5qczoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVz
dHMvY2FudmFzLXNjYWxlLXN0cm9rZVBhdGgtc2hhZG93LmpzOiBOb3cgdXNpbmcKKyAgICAgICAg
ICBhIGxpbmVXaWR0aCA+IDEgdG8gbWFrZSBpdCBlYXNpZXIgdG8gdGVzdCBhbmQgbW9yZSBmYWly
IGFtb25nIGFsbAorICAgICAgICAgIHBvcnRzLCBzaW5jZSB0aGVyZSBjYW4gYmUgZGlmZmVyZW50
IHRyYW5zZm9ybWF0aW9uIHNtb290aG5lc3Mgb3IKKyAgICAgICAgICBhbGlhc2luZyBzZXR0aW5n
cy4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXRyYW5zZm9ybXMt
ZmlsbFJlY3Qtc2hhZG93LmpzOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBl
ZDogR1RLIHBvcnQgbmVlZHMgdG8gaW1wbGVtZW50IHRoaXMgZmVhdHVyZS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2Nh
bnZhcy1zY2FsZS1maWxsUmVjdC1zaGFkb3ctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFk
b3ctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorCiAyMDEwLTEyLTE3ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0
aC1zaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXNj
YWxlLXN0cm9rZVBhdGgtc2hhZG93LWV4cGVjdGVkLnR4dAppbmRleCBlNTYyMDFmLi5hMzM3YzRi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tl
UGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQKQEAgLTMwLDI3ICszMCwy
NyBAQCBQQVNTIGRbM10gaXMgYXJvdW5kIDc2CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0g
aXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjAKK1BBU1MgZFszXSBp
cyBhcm91bmQgMTQ5CiBQQVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJd
IGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjIKK1BBU1MgZFszXSBpcyBhcm91bmQgMTE2CiBQ
QVNTIGRbMF0gaXMgMjU1CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFsz
XSBpcyBhcm91bmQgMjgKK1BBU1MgZFszXSBpcyBhcm91bmQgMTE1CiBQQVNTIGRbMF0gaXMgMjU1
CiBQQVNTIGRbMV0gaXMgMAogUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjIK
K1BBU1MgZFszXSBpcyBhcm91bmQgNzAKIFBBU1MgZFswXSBpcyAyNTUKIFBBU1MgZFsxXSBpcyAw
CiBQQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAxNQorUEFTUyBkWzNdIGlzIGFy
b3VuZCA3MAogUEFTUyBkWzBdIGlzIDI1NQogUEFTUyBkWzFdIGlzIDAKIFBBU1MgZFsyXSBpcyAw
Ci1QQVNTIGRbM10gaXMgYXJvdW5kIDE3CitQQVNTIGRbM10gaXMgYXJvdW5kIDY5CiBQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1m
aWxsUmVjdC1zaGFkb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjAxM2I4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3ctZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNTcgQEAKK0Vuc3VyZSBjb3JyZWN0IGJlaGF2aW9yIG9mIGNhbnZhcyB3aXRoIGZpbGxSZWN0
K3NoYWRvdyBhZnRlciB0cmFuc2xhdGlvbityb3RhdGlvbitzY2FsaW5nLiBBIGJsdWUgYW5kIHJl
ZCBjaGVja2VyZWQgcGF0dGVybiBzaG91bGQgYmUgZGlzcGxheWVkLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1Mg
ZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgMjU1CitQQVNTIGRbMF0gaXMgMjU1CitQQVNTIGRbMV0g
aXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyAyNTUKK1BBU1MgZFswXSBpcyAyNTUK
K1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFTUyBkWzNdIGlzIDI1NQorUEFTUyBk
WzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMg
YXJvdW5kIDEyNworUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBp
cyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDEyNworUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFd
IGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDEyNworUEFTUyBkWzBd
IGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJv
dW5kIDEwNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BBU1MgZFsyXSBpcyAw
CitQQVNTIGRbM10gaXMgYXJvdW5kIDEwNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlz
IDAKK1BBU1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDgzCitQQVNTIGRbMF0gaXMg
MjU1CitQQVNTIGRbMV0gaXMgMAorUEFTUyBkWzJdIGlzIDAKK1BBU1MgZFszXSBpcyBhcm91bmQg
MzYKK1BBU1MgZFswXSBpcyAyNTUKK1BBU1MgZFsxXSBpcyAwCitQQVNTIGRbMl0gaXMgMAorUEFT
UyBkWzNdIGlzIGFyb3VuZCAzNgorUEFTUyBkWzBdIGlzIDI1NQorUEFTUyBkWzFdIGlzIDAKK1BB
U1MgZFsyXSBpcyAwCitQQVNTIGRbM10gaXMgYXJvdW5kIDM2CitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93Lmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmM0ZTlhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJl
Y3Qtc2hhZG93Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1z
aGFkb3cuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFk
b3cuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxl
LWZpbGxQYXRoLXNoYWRvdy5qcwppbmRleCAwNTI4NmY1Li44YjA1ZjNjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxQYXRo
LXNoYWRvdy5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2Fu
dmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy5qcwpAQCAtMTksNyArMTksNyBAQCBmdW5jdGlvbiBz
aG91bGRCZUFyb3VuZChhLCBiKQogICAgICAgICBldmFsQSA9IGU7CiAgICAgfQogCi0gICAgaWYg
KE1hdGguYWJzKGV2YWxBIC0gYikgPCAxMCkKKyAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8
IDIwKQogICAgICAgICBwcmludCgiUEFTUyAiICsgYSArICIgaXMgYXJvdW5kICIgKyBiICwgImdy
ZWVuIikKICAgICBlbHNlCiAgICAgICAgIHByaW50KCJGQUlMICIgKyBhICsgIiBpcyBub3QgYXJv
dW5kICIgKyBiICsgIiAoYWN0dWFsOiAiICsgZXZhbEEgKyAiKSIsICJyZWQiKTsKQEAgLTM1LDcg
KzM1LDYgQEAgY3R4LnNjYWxlKDIsIDIpOwogY3R4LnNoYWRvd09mZnNldFggPSAxMDA7CiBjdHgu
c2hhZG93T2Zmc2V0WSA9IDEwMDsKIGN0eC5maWxsU3R5bGUgPSAncmdiYSgwLCAwLCAyNTUsIDEp
JzsKLS8vY3R4LmxpbmVXaWR0aCA9IDMwOwogCiBjdHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUs
IDAsIDAsIDEuMCknOwogY3R4LmJlZ2luUGF0aCgpOwpAQCAtNzMsMzggKzcyLDM4IEBAIGN0eC5m
aWxsKCk7CiB2YXIgZDsgLy8gaW1hZ2VEYXRhLmRhdGEKIAogLy8gVmVyaWZ5IHNvbGlkIHNoYWRv
dy4KLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMCwgMjA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5n
ZXRJbWFnZURhdGEoMjAxLCAyMDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUn
KTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3Vs
ZEJlKCdkWzNdJywgJzI1NScpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDI5NSwgMSwg
MSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgMjk1LCAxLCAxKS5kYXRhOwogc2hv
dWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgn
ZFsyXScsICcwJyk7CiBzaG91bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFn
ZURhdGEoMjAwLCAyOTksIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDI5
OCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0n
LCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7
CiAKIC8vIFZlcmlmeSBzb2xpZCBhbHBoYSBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgy
MDAsIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwgNDA1LCAxLCAx
KS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7
CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZUFyb3VuZCgnZFszXScsICc3NicpOwog
Ci1kID0gY3R4LmdldEltYWdlRGF0YSgyOTksIDQwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0
SW1hZ2VEYXRhKDI5OCwgNDA1LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7
CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRC
ZUFyb3VuZCgnZFszXScsICc3NicpOwogCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDUsIDQ5OSwg
MSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwNSwgNDk4LCAxLCAxKS5kYXRhOwog
c2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRC
ZSgnZFsyXScsICcwJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3Jp
cHQtdGVzdHMvY2FudmFzLXNjYWxlLWZpbGxSZWN0LXNoYWRvdy5qcyBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzCmlu
ZGV4IDk5YTFlNTkuLjU2ZDRhMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LmpzCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hh
ZG93LmpzCkBAIC0xOSw3ICsxOSw3IEBAIGZ1bmN0aW9uIHNob3VsZEJlQXJvdW5kKGEsIGIpCiAg
ICAgICAgIGV2YWxBID0gZTsKICAgICB9CiAKLSAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8
IDEwKQorICAgIGlmIChNYXRoLmFicyhldmFsQSAtIGIpIDwgMjApCiAgICAgICAgIHByaW50KCJQ
QVNTICIgKyBhICsgIiBpcyBhcm91bmQgIiArIGIgLCAiZ3JlZW4iKQogICAgIGVsc2UKICAgICAg
ICAgcHJpbnQoIkZBSUwgIiArIGEgKyAiIGlzIG5vdCBhcm91bmQgIiArIGIgKyAiIChhY3R1YWw6
ICIgKyBldmFsQSArICIpIiwgInJlZCIpOwpAQCAtNTIsMzggKzUyLDM4IEBAIGN0eC5maWxsUmVj
dCgxNTAsIDE1MCwgNTAsIDUwKTsKIHZhciBkOyAvLyBpbWFnZURhdGEuZGF0YQogCiAvLyBWZXJp
Znkgc29saWQgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAyMDUsIDEsIDEpLmRh
dGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDIwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJl
KCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0n
LCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRh
KDI5OSwgMjk1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCAyOTgsIDEs
IDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAn
KTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScpOwogCi1k
ID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDI5OSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1h
Z2VEYXRhKDIwMSwgMjk4LCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBz
aG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91bGRCZSgn
ZFszXScsICcyNTUnKTsKIAogLy8gVmVyaWZ5IHNvbGlkIGFscGhhIHNoYWRvdy4KLWQgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDIwMCwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEo
MjAxLCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJl
KCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlQXJvdW5kKCdk
WzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OSwgNDA1LCAxLCAxKS5kYXRh
OworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCA0MDUsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgn
ZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywg
JzAnKTsKIHNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzc2Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VE
YXRhKDIwNSwgNDk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTgs
IDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywg
JzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3cuanMg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXNjYWxlLXN0cm9r
ZVBhdGgtc2hhZG93LmpzCmluZGV4IDUxOThkOTQuLjYwMDIxNzUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1z
aGFkb3cuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZh
cy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy5qcwpAQCAtMTksNyArMTksNyBAQCBmdW5jdGlvbiBz
aG91bGRCZUFyb3VuZChhLCBiKQogICAgICAgICBldmFsQSA9IGU7CiAgICAgfQogCi0gICAgaWYg
KE1hdGguYWJzKGV2YWxBIC0gYikgPCAxMCkKKyAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8
IDIwKQogICAgICAgICBwcmludCgiUEFTUyAiICsgYSArICIgaXMgYXJvdW5kICIgKyBiICwgImdy
ZWVuIikKICAgICBlbHNlCiAgICAgICAgIHByaW50KCJGQUlMICIgKyBhICsgIiBpcyBub3QgYXJv
dW5kICIgKyBiICsgIiAoYWN0dWFsOiAiICsgZXZhbEEgKyAiKSIsICJyZWQiKTsKQEAgLTM1LDYg
KzM1LDcgQEAgY3R4LnNjYWxlKDIsIDIpOwogY3R4LnNoYWRvd09mZnNldFggPSAxMDA7CiBjdHgu
c2hhZG93T2Zmc2V0WSA9IDEwMDsKIGN0eC5zdHJva2VTdHlsZSA9ICdyZ2JhKDAsIDAsIDI1NSwg
MSknOworY3R4LmxpbmVXaWR0aCA9IDU7CiAKIGN0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwg
MCwgMCwgMS4wKSc7CiBjdHguYmVnaW5QYXRoKCk7CkBAIC03Niw3OSArNzcsNzkgQEAgY3R4LnN0
cm9rZSgpOwogdmFyIGQ7IC8vIGltYWdlRGF0YS5kYXRhCiAKIC8vIFZlcmlmeSBzb2xpZCBzaGFk
b3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgyMDAsIDIwNSwgMSwgMSkuZGF0YTsKK2QgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDI1MCwgMjAwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1
Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7CiBzaG91
bGRCZSgnZFszXScsICcyNTUnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCAyOTUsIDEs
IDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzMDAsIDI5MCwgMSwgMSkuZGF0YTsKIHNo
b3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUo
J2RbMl0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbM10nLCAnMjU1Jyk7CiAKLWQgPSBjdHguZ2V0SW1h
Z2VEYXRhKDIwMSwgMjk5LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjAwLCAy
NTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFd
JywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKIHNob3VsZEJlKCdkWzNdJywgJzI1NScp
OwogCiAvLyBWZXJpZnkgc29saWQgYWxwaGEgc2hhZG93LgotZCA9IGN0eC5nZXRJbWFnZURhdGEo
MjAwLCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDQwNSwgMSwg
MSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcp
Owogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsK
IAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk5LCA0MDUsIDEsIDEpLmRhdGE7CitkID0gY3R4Lmdl
dEltYWdlRGF0YSgyMDEsIDUwMCwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScp
Owogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxk
QmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTks
IDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSgzMDAsIDQ5OSwgMSwgMSkuZGF0YTsK
IHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxk
QmUoJ2RbMl0nLCAnMCcpOwogc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzYnKTsKIAogLy8gVmVy
aWZ5IGJsdXJyeSBzaGFkb3cuCi1kID0gY3R4LmdldEltYWdlRGF0YSgzOTQsIDIwOCwgMSwgMSku
ZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQwNCwgMjEwLCAxLCAxKS5kYXRhOwogc2hvdWxk
QmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgnZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsy
XScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFszXScsICcyMCcpOworc2hvdWxkQmVBcm91bmQo
J2RbM10nLCAnMTQ5Jyk7CiAKLWQgPSBjdHguZ2V0SW1hZ2VEYXRhKDUwMywgMzAxLCAxLCAxKS5k
YXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA1LCAyNTAsIDEsIDEpLmRhdGE7CiBzaG91bGRC
ZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJlKCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJd
JywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdkWzNdJywgJzIyJyk7CitzaG91bGRCZUFyb3VuZCgn
ZFszXScsICcxMTYnKTsKIAotZCA9IGN0eC5nZXRJbWFnZURhdGEoNTA0LCAyNTAsIDEsIDEpLmRh
dGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0NTAsIDIwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJl
KCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2RbMV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0n
LCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnMjgnKTsKK3Nob3VsZEJlQXJvdW5kKCdk
WzNdJywgJzExNScpOwogCiAvLyBWZXJpZnkgYmx1cnJ5IGFscGhhIHNoYWRvdy4KLWQgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDQwNSwgNDA1LCAxLCAxKS5kYXRhOworZCA9IGN0eC5nZXRJbWFnZURhdGEo
NTA1LCA0NTAsIDEsIDEpLmRhdGE7CiBzaG91bGRCZSgnZFswXScsICcyNTUnKTsKIHNob3VsZEJl
KCdkWzFdJywgJzAnKTsKIHNob3VsZEJlKCdkWzJdJywgJzAnKTsKLXNob3VsZEJlQXJvdW5kKCdk
WzNdJywgJzIyJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICc3MCcpOwogCi1kID0gY3R4Lmdl
dEltYWdlRGF0YSg0MTUsIDQ5NSwgMSwgMSkuZGF0YTsKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDUw
NSwgNDUwLCAxLCAxKS5kYXRhOwogc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CiBzaG91bGRCZSgn
ZFsxXScsICcwJyk7CiBzaG91bGRCZSgnZFsyXScsICcwJyk7Ci1zaG91bGRCZUFyb3VuZCgnZFsz
XScsICcxNScpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAnNzAnKTsKIAotZCA9IGN0eC5nZXRJ
bWFnZURhdGEoNDUwLCA1MDQsIDEsIDEpLmRhdGE7CitkID0gY3R4LmdldEltYWdlRGF0YSg0NTAs
IDQwNSwgMSwgMSkuZGF0YTsKIHNob3VsZEJlKCdkWzBdJywgJzI1NScpOwogc2hvdWxkQmUoJ2Rb
MV0nLCAnMCcpOwogc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOwotc2hvdWxkQmVBcm91bmQoJ2RbM10n
LCAnMTcnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzY5Jyk7CiAKIHZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2Ny
aXB0LXRlc3RzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5qcyBiL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1z
aGFkb3cuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA5MGI0NwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52
YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuanMKQEAgLTAsMCArMSwxMzMgQEAKK2Rlc2Ny
aXB0aW9uKCJFbnN1cmUgY29ycmVjdCBiZWhhdmlvciBvZiBjYW52YXMgd2l0aCBmaWxsUmVjdCtz
aGFkb3cgYWZ0ZXIgdHJhbnNsYXRpb24rcm90YXRpb24rc2NhbGluZy4gQSBibHVlIGFuZCByZWQg
Y2hlY2tlcmVkIHBhdHRlcm4gc2hvdWxkIGJlIGRpc3BsYXllZC4iKTsKKworZnVuY3Rpb24gcHJp
bnQobWVzc2FnZSwgY29sb3IpCit7CisgICAgdmFyIHBhcmFncmFwaCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgIHBhcmFncmFwaC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgcGFyYWdyYXBoLnN0eWxlLmZvbnRGYW1pbHkgPSAi
bW9ub3NwYWNlIjsKKyAgICBpZiAoY29sb3IpCisgICAgICAgIHBhcmFncmFwaC5zdHlsZS5jb2xv
ciA9IGNvbG9yOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5k
Q2hpbGQocGFyYWdyYXBoKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBcm91bmQoYSwgYikKK3sK
KyAgICB2YXIgZXZhbEE7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbEEgPSBldmFsKGEpOworICAg
IH0gY2F0Y2goZSkgeworICAgICAgICBldmFsQSA9IGU7CisgICAgfQorCisgICAgaWYgKE1hdGgu
YWJzKGV2YWxBIC0gYikgPCAxMCkKKyAgICAgICAgcHJpbnQoIlBBU1MgIiArIGEgKyAiIGlzIGFy
b3VuZCAiICsgYiAsICJncmVlbiIpCisgICAgZWxzZQorICAgICAgICBwcmludCgiRkFJTCAiICsg
YSArICIgaXMgbm90IGFyb3VuZCAiICsgYiArICIgKGFjdHVhbDogIiArIGV2YWxBICsgIikiLCAi
cmVkIik7Cit9CisKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMn
KTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTsKK2NhbnZhcy5zZXRBdHRyaWJ1
dGUoJ3dpZHRoJywgJzYwMCcpOworY2FudmFzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgJzYwMCcp
OwordmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworCitjdHguZmlsbFN0eWxlID0g
J3JnYmEoMCwgMCwgMjU1LCAxLjApJzsKK2N0eC5zaGFkb3dPZmZzZXRYID0gMTAwOworY3R4LnNo
YWRvd09mZnNldFkgPSAxMDA7CisKK2N0eC50cmFuc2xhdGUoLTEwMCwgLTEwMCk7CitjdHgucm90
YXRlKE1hdGguUEkvMik7CitjdHguc2NhbGUoMiwgMik7CisKK2N0eC5zaGFkb3dDb2xvciA9ICdy
Z2JhKDI1NSwgMCwgMCwgMS4wKSc7CitjdHguZmlsbFJlY3QoMTAwLCAtMTUwLCA1MCwgNTApOwor
CitjdHguc2hhZG93Q29sb3IgPSAncmdiYSgyNTUsIDAsIDAsIDAuNSknOworY3R4LmZpbGxSZWN0
KDIwMCwgLTE1MCwgNTAsIDUwKTsKKworY3R4LnNoYWRvd0JsdXIgPSA1OworY3R4LnNoYWRvd0Nv
bG9yID0gJ3JnYmEoMjU1LCAwLCAwLCAxLjApJzsKK2N0eC5maWxsUmVjdCgxMDAsIC0yNTAsIDUw
LCA1MCk7CisKK2N0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDI1NSwgMCwgMCwgMC41KSc7CitjdHgu
ZmlsbFJlY3QoMjAwLCAtMjUwLCA1MCwgNTApOworCit2YXIgZDsgLy8gaW1hZ2VEYXRhLmRhdGEK
KworLy8gVmVyaWZ5IHNvbGlkIHNoYWRvdy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMSwgMjA1
LCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScs
ICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZSgnZFszXScsICcyNTUnKTsK
KworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjk4LCAyOTgsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgn
ZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywg
JzAnKTsKK3Nob3VsZEJlKCdkWzNdJywgJzI1NScpOworCitkID0gY3R4LmdldEltYWdlRGF0YSgy
MDEsIDI5OCwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUo
J2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmUoJ2RbM10nLCAn
MjU1Jyk7CisKKy8vIFZlcmlmeSBzb2xpZCBhbHBoYSBzaGFkb3cuCitkID0gY3R4LmdldEltYWdl
RGF0YSgyMDEsIDQwMSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hv
dWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91
bmQoJ2RbM10nLCAnMTI3Jyk7CisKK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDI5OCwgNDUwLCAxLCAx
KS5kYXRhOworc2hvdWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7
CitzaG91bGRCZSgnZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMjcnKTsK
KworZCA9IGN0eC5nZXRJbWFnZURhdGEoMjA1LCA0OTgsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgn
ZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywg
JzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzEyNycpOworCisvLyBWZXJpZnkgYmx1cnJ5
IHNoYWRvdy4KK2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDM5OSwgMjA1LCAxLCAxKS5kYXRhOworc2hv
dWxkQmUoJ2RbMF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgn
ZFsyXScsICcwJyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICcxMDYnKTsKKworZCA9IGN0eC5n
ZXRJbWFnZURhdGEoNTAwLCAyMDUsIDEsIDEpLmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUn
KTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsKK3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3Vs
ZEJlQXJvdW5kKCdkWzNdJywgJzEwNicpOworCitkID0gY3R4LmdldEltYWdlRGF0YSg0OTksIDI5
OSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hvdWxkQmUoJ2RbMV0n
LCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91bmQoJ2RbM10nLCAn
ODMnKTsKKworLy8gVmVyaWZ5IGJsdXJyeSBhbHBoYSBzaGFkb3cuCitkID0gY3R4LmdldEltYWdl
RGF0YSgzOTgsIDQwNSwgMSwgMSkuZGF0YTsKK3Nob3VsZEJlKCdkWzBdJywgJzI1NScpOworc2hv
dWxkQmUoJ2RbMV0nLCAnMCcpOworc2hvdWxkQmUoJ2RbMl0nLCAnMCcpOworc2hvdWxkQmVBcm91
bmQoJ2RbM10nLCAnMzYnKTsKKworZCA9IGN0eC5nZXRJbWFnZURhdGEoNDA1LCA1MDEsIDEsIDEp
LmRhdGE7CitzaG91bGRCZSgnZFswXScsICcyNTUnKTsKK3Nob3VsZEJlKCdkWzFdJywgJzAnKTsK
K3Nob3VsZEJlKCdkWzJdJywgJzAnKTsKK3Nob3VsZEJlQXJvdW5kKCdkWzNdJywgJzM2Jyk7CisK
K2QgPSBjdHguZ2V0SW1hZ2VEYXRhKDQwNSwgNTAxLCAxLCAxKS5kYXRhOworc2hvdWxkQmUoJ2Rb
MF0nLCAnMjU1Jyk7CitzaG91bGRCZSgnZFsxXScsICcwJyk7CitzaG91bGRCZSgnZFsyXScsICcw
Jyk7CitzaG91bGRCZUFyb3VuZCgnZFszXScsICczNicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVk
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggZTcxNWEzNy4uMGIwOTQw
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTEwMjUsNiArMTAyNSw3IEBAIGVkaXRp
bmcvdW5zdXBwb3J0ZWQtY29udGVudC90YWJsZS10eXBlLWJlZm9yZS5odG1sCiBmYXN0L2NhbnZh
cy9jYW52YXMtYmctem9vbS5odG1sCiBmYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRhLmh0
bWwKIGZhc3QvY2FudmFzL2NhbnZhcy1ncmFkaWVudC1hZGRTdG9wLWVycm9yLmh0bWwKK2Zhc3Qv
Y2FudmFzL2NhbnZhcy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5odG1sCiBmYXN0L2NhbnZh
cy9jYW52YXMtem9vbS5odG1sCiBmYXN0L2Nzcy9jc3MxX2ZvcndhcmRfY29tcGF0aWJsZV9wYXJz
aW5nLmh0bWwKIGZhc3QvY3NzL2ludmFsaWQtcGVyY2VudGFnZS1wcm9wZXJ0eS5odG1sCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9jYW52YXMvY2FudmFzLXNjYWxl
LWZpbGxQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
ZmFzdC9jYW52YXMvY2FudmFzLXNjYWxlLWZpbGxQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1NzIxNzguLjAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1maWxsUGF0aC1zaGFk
b3ctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotRW5zdXJlIGNv
cnJlY3QgYmVoYXZpb3Igb2YgY2FudmFzIHdpdGggcGF0aCBmaWxsICsgc2hhZG93IGFmdGVyIHNj
YWxpbmcuIEEgYmx1ZSBhbmQgcmVkIGNoZWNrZXJlZCBwYXR0ZXJuIHNob3VsZCBiZSBkaXNwbGF5
ZWQuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIGRbMF0gaXMgMjU1Ci1Q
QVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMjU1LiBX
YXMgMTkxLgotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAw
Ci1GQUlMIGRbM10gc2hvdWxkIGJlIDI1NS4gV2FzIDE5MS4KLVBBU1MgZFswXSBpcyAyNTUKLVBB
U1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIHNob3VsZCBiZSAyNTUuIFdh
cyAxNDMuCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAK
LUZBSUwgZFszXSBpcyBub3QgYXJvdW5kIDc2IChhY3R1YWw6IDU3KQotUEFTUyBkWzBdIGlzIDI1
NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1GQUlMIGRbM10gaXMgbm90IGFyb3Vu
ZCA3NiAoYWN0dWFsOiA1NykKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNT
IGRbMl0gaXMgMAotRkFJTCBkWzNdIGlzIG5vdCBhcm91bmQgNzYgKGFjdHVhbDogNTcpCi1QQVNT
IGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBp
cyBhcm91bmQgODMKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0g
aXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCA4MwotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFd
IGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDUzCi1QQVNTIGRbMF0g
aXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91
bmQgMjQKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAot
UEFTUyBkWzNdIGlzIGFyb3VuZCAyNAotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAK
LVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDI0Ci1QQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1maWxsUmVjdC1zaGFkb3ct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZh
cy1zY2FsZS1maWxsUmVjdC1zaGFkb3ctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyMjhkNWZjLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9mYXN0L2NhbnZhcy9jYW52YXMtc2NhbGUtZmlsbFJlY3Qtc2hhZG93LWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLUVuc3VyZSBjb3JyZWN0IGJlaGF2aW9yIG9m
IGNhbnZhcyB3aXRoIGZpbGxSZWN0K3NoYWRvdyBhZnRlciBzY2FsaW5nLiBBIGJsdWUgYW5kIHJl
ZCBjaGVja2VyZWQgcGF0dGVybiBzaG91bGQgYmUgZGlzcGxheWVkLgotCi1PbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCi0KLQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1Mg
ZFsyXSBpcyAwCi1GQUlMIGRbM10gc2hvdWxkIGJlIDI1NS4gV2FzIDE5MS4KLVBBU1MgZFswXSBp
cyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIHNob3VsZCBi
ZSAyNTUuIFdhcyAxOTEuCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBk
WzJdIGlzIDAKLUZBSUwgZFszXSBzaG91bGQgYmUgMjU1LiBXYXMgMTQzLgotUEFTUyBkWzBdIGlz
IDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1GQUlMIGRbM10gaXMgbm90IGFy
b3VuZCA3NiAoYWN0dWFsOiA1NykKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1Q
QVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIGlzIG5vdCBhcm91bmQgNzYgKGFjdHVhbDogNTcpCi1Q
QVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFsz
XSBpcyBub3QgYXJvdW5kIDc2IChhY3R1YWw6IDU3KQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBk
WzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDgzCi1QQVNTIGRb
MF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBh
cm91bmQgODMKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMg
MAotUEFTUyBkWzNdIGlzIGFyb3VuZCA1MwotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlz
IDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMgYXJvdW5kIDI0Ci1QQVNTIGRbMF0gaXMg
MjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQg
MjQKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFT
UyBkWzNdIGlzIGFyb3VuZCAyNAotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1U
RVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0
L2NhbnZhcy9jYW52YXMtc2NhbGUtc3Ryb2tlUGF0aC1zaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2NhbnZhcy1zY2FsZS1zdHJva2VQYXRo
LXNoYWRvdy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmZGRi
MDkuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvY2FudmFzL2Nh
bnZhcy1zY2FsZS1zdHJva2VQYXRoLXNoYWRvdy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSw1NyArMCwwIEBACi1FbnN1cmUgY29ycmVjdCBiZWhhdmlvciBvZiBjYW52YXMgd2l0aCBw
YXRoIHN0cm9rZSArIHNoYWRvdyBhZnRlciBzY2FsaW5nLiBBIGJsdWUgYW5kIHJlZCBjaGVja2Vy
ZWQgcGF0dGVybiBzaG91bGQgYmUgZGlzcGxheWVkLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCi0KLQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAw
Ci1GQUlMIGRbM10gc2hvdWxkIGJlIDI1NS4gV2FzIDEyMy4KLVBBU1MgZFswXSBpcyAyNTUKLVBB
U1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIHNob3VsZCBiZSAyNTUuIFdh
cyA5MC4KLVBBU1MgZFswXSBpcyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAot
RkFJTCBkWzNdIHNob3VsZCBiZSAyNTUuIFdhcyAxNjIuCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNT
IGRbMV0gaXMgMAotUEFTUyBkWzJdIGlzIDAKLUZBSUwgZFszXSBpcyBub3QgYXJvdW5kIDc2IChh
Y3R1YWw6IDM3KQotUEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBp
cyAwCi1GQUlMIGRbM10gaXMgbm90IGFyb3VuZCA3NiAoYWN0dWFsOiAyNykKLVBBU1MgZFswXSBp
cyAyNTUKLVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotRkFJTCBkWzNdIGlzIG5vdCBh
cm91bmQgNzYgKGFjdHVhbDogMjcpCi1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAot
UEFTUyBkWzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjAKLVBBU1MgZFswXSBpcyAyNTUK
LVBBU1MgZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAyMgot
UEFTUyBkWzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRb
M10gaXMgYXJvdW5kIDI4Ci1QQVNTIGRbMF0gaXMgMjU1Ci1QQVNTIGRbMV0gaXMgMAotUEFTUyBk
WzJdIGlzIDAKLVBBU1MgZFszXSBpcyBhcm91bmQgMjIKLVBBU1MgZFswXSBpcyAyNTUKLVBBU1Mg
ZFsxXSBpcyAwCi1QQVNTIGRbMl0gaXMgMAotUEFTUyBkWzNdIGlzIGFyb3VuZCAxNQotUEFTUyBk
WzBdIGlzIDI1NQotUEFTUyBkWzFdIGlzIDAKLVBBU1MgZFsyXSBpcyAwCi1QQVNTIGRbM10gaXMg
YXJvdW5kIDE3Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExF
VEUKLQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAzYmRmZTlmLi45YmQ3YWMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEwLTEyLTE3ICBIZWxkZXIg
Q29ycmVpYSAgPGhlbGRlckBzZW5jaGEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gQ2FudmFzIHNoYWRvdyBvZmZzZXQgc2hvdWxkIG5v
dCBiZSBhZmZlY3RlZCBieSBhbnkgdHJhbnNmb3JtYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNDIyCisKKyAgICAgICAgT24gYSBjYW52YXMg
Y29udGV4dCwgc2hhZG93cyBhcmUgY3VycmVudGx5IGFmZmVjdGVkIGJ5IGFsbAorICAgICAgICB0
cmFuc2Zvcm1hdGlvbnMgZXhjZXB0IHNjYWxpbmcuIEFjY29yZGluZyB0byB0aGUgc3BlYzoKKyAg
ICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9t
dWx0aXBhZ2UvdGhlLWNhbnZhcy1lbGVtZW50Lmh0bWwjc2hhZG93cworCisgICAgICAgICJUaGUg
c2hhZG93T2Zmc2V0WCBhbmQgc2hhZG93T2Zmc2V0WSBhdHRyaWJ1dGVzIHNwZWNpZnkgdGhlIGRp
c3RhbmNlCisgICAgICAgIHRoYXQgdGhlIHNoYWRvdyB3aWxsIGJlIG9mZnNldCBpbiB0aGUgcG9z
aXRpdmUgaG9yaXpvbnRhbCBhbmQgcG9zaXRpdmUKKyAgICAgICAgdmVydGljYWwgZGlzdGFuY2Ug
cmVzcGVjdGl2ZWx5LiBUaGVpciB2YWx1ZXMgYXJlIGluIGNvb3JkaW5hdGUgc3BhY2UKKyAgICAg
ICAgdW5pdHMuIFRoZXkgYXJlIG5vdCBhZmZlY3RlZCBieSB0aGUgY3VycmVudCB0cmFuc2Zvcm1h
dGlvbiBtYXRyaXguIgorCisgICAgICAgIE5PVEU6IHRoaXMgYXBwbGllcyBvbmx5IHRvIGNhbnZh
cywgbm90IHRvIGJveCBzaGFkb3dzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL2NhbnZh
cy10cmFuc2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Db250ZXh0U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFk
b3c6OkNvbnRleHRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6Y2Fs
Y3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bnRleHRTaGFkb3cuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OnNldFNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6
Om9mZnNldCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRTaGFkb3c6OmJlZ2luU2hhZG93TGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dFNoYWRvdzo6ZW5kU2hhZG93TGF5ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om11c3RVc2VDb250ZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRv
dyk6CisKIDIwMTAtMTItMTcgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5jcHAKaW5kZXggODdhMWM1Yy4uNWU3YTdhMCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGV4dFNoYWRvdy5o
IgogCisjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIApAQCAtNDEsNiArNDIsNyBAQCBDb250ZXh0
U2hhZG93OjpDb250ZXh0U2hhZG93KCkKICAgICA6IG1fdHlwZShOb1NoYWRvdykKICAgICAsIG1f
Ymx1ckRpc3RhbmNlKDApCiAgICAgLCBtX2xheWVyQ29udGV4dCgwKQorICAgICwgbV9zaGFkb3dz
SWdub3JlVHJhbnNmb3JtcyhmYWxzZSkKIHsKIH0KIApAQCAtNDksNiArNTEsNyBAQCBDb250ZXh0
U2hhZG93OjpDb250ZXh0U2hhZG93KGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgcmFkaXVzLCBj
b25zdCBGbG9hdFNpemUmCiAgICAgLCBtX2JsdXJEaXN0YW5jZShyb3VuZChyYWRpdXMpKQogICAg
ICwgbV9vZmZzZXQob2Zmc2V0KQogICAgICwgbV9sYXllckNvbnRleHQoMCkKKyAgICAsIG1fc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMoZmFsc2UpCiB7CiAgICAgLy8gU2VlIGNvbW1lbnRzIGluIGh0
dHA6Ly93ZWJraXQub3JnL2IvNDA3OTMsIGl0IHNlZW1zIHNlbnNpYmxlCiAgICAgLy8gdG8gZm9s
bG93IFNraWEncyBsaW1pdCBvZiAxMjggcGl4ZWxzIG9mIGJsdXIgcmFkaXVzCkBAIC03Nyw2ICs4
MCwyMyBAQCB2b2lkIENvbnRleHRTaGFkb3c6OmNsZWFyKCkKICAgICBtX29mZnNldCA9IEZsb2F0
U2l6ZSgpOwogfQogCitib29sIENvbnRleHRTaGFkb3c6Om11c3RVc2VDb250ZXh0U2hhZG93KFBs
YXRmb3JtQ29udGV4dCBjb250ZXh0KQoreworICAgIC8vIFdlIGNhbid0IGF2b2lkIENvbnRleHRT
aGFkb3csIHNpbmNlIHRoZSBzaGFkb3cgaGFzIGJsdXIuCisgICAgaWYgKG1fdHlwZSA9PSBDb250
ZXh0U2hhZG93OjpCbHVyU2hhZG93KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBXZSBj
YW4gYXZvaWQgQ29udGV4dFNoYWRvdyBhbmQgb3B0aW1pemUsIHNpbmNlIHdlJ3JlIG5vdCBkcmF3
aW5nIG9uIGEKKyAgICAvLyBjYW52YXMgYW5kIGJveCBzaGFkb3dzIGFyZSBhZmZlY3RlZCBieSB0
aGUgdHJhbnNmb3JtYXRpb24gbWF0cml4LgorICAgIGlmICghc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIFdlIGNhbiBhdm9pZCBDb250ZXh0
U2hhZG93LCBzaW5jZSB0aGVyZSBhcmUgbm8gdHJhbnNmb3JtYXRpb25zIHRvIGFwcGx5IHRvIHRo
ZSBjYW52YXMuCisgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtKGdldFRy
YW5zZm9ybWF0aW9uTWF0cml4RnJvbUNvbnRleHQoY29udGV4dCkpOworICAgIGlmICh0cmFuc2Zv
cm0uaXNJZGVudGl0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gT3RoZXJ3aXNl
LCBubyBjaGFuY2UgYXZvaWRpbmcgQ29udGV4dFNoYWRvdy4KKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogLy8gSW5zdGVhZCBvZiBpbnRlZ2VyIGRpdmlzaW9uLCB3ZSB1c2UgMTcuMTUgZm9yIGZpeGVk
LXBvaW50IGRpdmlzaW9uLgogc3RhdGljIGNvbnN0IGludCBCbHVyU3VtU2hpZnQgPSAxNTsKIApA
QCAtMTQ5LDI5ICsxNjksNjEgQEAgdm9pZCBDb250ZXh0U2hhZG93OjpibHVyTGF5ZXJJbWFnZSh1
bnNpZ25lZCBjaGFyKiBpbWFnZURhdGEsIGNvbnN0IEludFNpemUmIHNpemUKICAgICB9CiB9CiAK
LXZvaWQgQ29udGV4dFNoYWRvdzo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoY29uc3QgRmxv
YXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorSW50UmVjdCBDb250
ZXh0U2hhZG93OjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBQbGF0Zm9ybUNvbnRl
eHQgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEsIGNvbnN0IEludFJlY3QmIGNs
aXBSZWN0KQogewotICAgIC8vIENhbGN1bGF0ZSB0aGUgZGVzdGluYXRpb24gb2YgdGhlIGJsdXJy
ZWQgbGF5ZXIuCi0gICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVjdChsYXllckFyZWEpOwotICAg
IGRlc3RpbmF0aW9uUmVjdC5tb3ZlKG1fb2Zmc2V0KTsKLSAgICBtX2xheWVyUmVjdCA9IGVuY2xv
c2luZ0ludFJlY3QoZGVzdGluYXRpb25SZWN0KTsKKyAgICAvLyBDYWxjdWxhdGUgdGhlIGRlc3Rp
bmF0aW9uIG9mIHRoZSBibHVycmVkIGFuZC9vciB0cmFuc2Zvcm1lZCBsYXllci4KKyAgICBGbG9h
dFJlY3QgbGF5ZXJGbG9hdFJlY3Q7CisgICAgZmxvYXQgaW5mbGF0aW9uID0gMDsKKworICAgIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybShnZXRUcmFuc2Zvcm1hdGlvbk1hdHJp
eEZyb21Db250ZXh0KGNvbnRleHQpKTsKKyAgICBpZiAobV9zaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyAmJiAhdHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkgeworICAgICAgICBGbG9hdFF1YWQgdHJhbnNm
b3JtZWRQb2x5Z29uID0gdHJhbnNmb3JtLm1hcFF1YWQoRmxvYXRRdWFkKGxheWVyQXJlYSkpOwor
ICAgICAgICB0cmFuc2Zvcm1lZFBvbHlnb24ubW92ZShtX29mZnNldCk7CisgICAgICAgIGxheWVy
RmxvYXRSZWN0ID0gdHJhbnNmb3JtLmludmVyc2UoKS5tYXBRdWFkKHRyYW5zZm9ybWVkUG9seWdv
bikuYm91bmRpbmdCb3goKTsKKyAgICB9IGVsc2UgeworICAgICAgICBsYXllckZsb2F0UmVjdCA9
IGxheWVyQXJlYTsKKyAgICAgICAgbGF5ZXJGbG9hdFJlY3QubW92ZShtX29mZnNldCk7CisgICAg
fQogCiAgICAgLy8gV2UgZXhwYW5kIHRoZSBhcmVhIGJ5IHRoZSBibHVyIHJhZGl1cyB0byBnaXZl
IGV4dHJhIHNwYWNlIGZvciB0aGUgYmx1ciB0cmFuc2l0aW9uLgotICAgIG1fbGF5ZXJSZWN0Lmlu
ZmxhdGUobV90eXBlID09IEJsdXJTaGFkb3cgPyBtX2JsdXJEaXN0YW5jZSA6IDApOworICAgIGlm
IChtX3R5cGUgPT0gQmx1clNoYWRvdykgeworICAgICAgICBsYXllckZsb2F0UmVjdC5pbmZsYXRl
KG1fYmx1ckRpc3RhbmNlKTsKKyAgICAgICAgaW5mbGF0aW9uICs9IG1fYmx1ckRpc3RhbmNlOwor
ICAgIH0KIAotICAgIGlmICghY2xpcFJlY3QuY29udGFpbnMobV9sYXllclJlY3QpKSB7CisgICAg
RmxvYXRSZWN0IHVuY2xpcHBlZExheWVyUmVjdCA9IGxheWVyRmxvYXRSZWN0OworCisgICAgaWYg
KCFjbGlwUmVjdC5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KGxheWVyRmxvYXRSZWN0KSkpIHsK
ICAgICAgICAgLy8gTm8gbmVlZCB0byBoYXZlIHRoZSBidWZmZXIgbGFyZ2VyIHRoYW4gdGhlIGNs
aXAuCi0gICAgICAgIG1fbGF5ZXJSZWN0LmludGVyc2VjdChjbGlwUmVjdCk7CisgICAgICAgIGxh
eWVyRmxvYXRSZWN0LmludGVyc2VjdChjbGlwUmVjdCk7CiAKICAgICAgICAgLy8gSWYgd2UgYXJl
IHRvdGFsbHkgb3V0c2lkZSB0aGUgY2xpcCByZWdpb24sIHdlIGFyZW4ndCBwYWludGluZyBhdCBh
bGwuCi0gICAgICAgIGlmIChtX2xheWVyUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGlmIChsYXllckZsb2F0UmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICBy
ZXR1cm4gSW50UmVjdCgwLCAwLCAwLCAwKTsKIAogICAgICAgICAvLyBXZSBhZGp1c3QgYWdhaW4g
YmVjYXVzZSB0aGUgcGl4ZWxzIGF0IHRoZSBib3JkZXJzIGFyZSBzdGlsbAogICAgICAgICAvLyBw
b3RlbnRpYWxseSBhZmZlY3RlZCBieSB0aGUgcGl4ZWxzIG91dHNpZGUgdGhlIGJ1ZmZlci4KLSAg
ICAgICAgaWYgKG1fdHlwZSA9PSBCbHVyU2hhZG93KQotICAgICAgICAgICAgbV9sYXllclJlY3Qu
aW5mbGF0ZShtX3R5cGUgPT0gQmx1clNoYWRvdyA/IG1fYmx1ckRpc3RhbmNlIDogMCk7CisgICAg
ICAgIGlmIChtX3R5cGUgPT0gQmx1clNoYWRvdykgeworICAgICAgICAgICAgbGF5ZXJGbG9hdFJl
Y3QuaW5mbGF0ZShtX2JsdXJEaXN0YW5jZSk7CisgICAgICAgICAgICB1bmNsaXBwZWRMYXllclJl
Y3QuaW5mbGF0ZShtX2JsdXJEaXN0YW5jZSk7CisgICAgICAgICAgICBpbmZsYXRpb24gKz0gbV9i
bHVyRGlzdGFuY2U7CisgICAgICAgIH0KICAgICB9CisKKyAgICBjb25zdCBpbnQgZnJhbWVTaXpl
ID0gaW5mbGF0aW9uICogMjsKKyAgICBtX3NvdXJjZVJlY3QgPSBJbnRSZWN0KDAsIDAsIGxheWVy
QXJlYS53aWR0aCgpICsgZnJhbWVTaXplLCBsYXllckFyZWEuaGVpZ2h0KCkgKyBmcmFtZVNpemUp
OworICAgIG1fbGF5ZXJPcmlnaW4gPSBGbG9hdFBvaW50KGxheWVyRmxvYXRSZWN0LngoKSwgbGF5
ZXJGbG9hdFJlY3QueSgpKTsKKworICAgIGNvbnN0IEZsb2F0UG9pbnQgbV91bmNsaXBwZWRMYXll
ck9yaWdpbiA9IEZsb2F0UG9pbnQodW5jbGlwcGVkTGF5ZXJSZWN0LngoKSwgdW5jbGlwcGVkTGF5
ZXJSZWN0LnkoKSk7CisgICAgY29uc3QgRmxvYXRTaXplIGNsaXBwZWRPdXQgPSBtX3VuY2xpcHBl
ZExheWVyT3JpZ2luIC0gbV9sYXllck9yaWdpbjsKKworICAgIC8vIFNldCB0aGUgb3JpZ2luIGFz
IHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIHNjcmF0Y2ggaW1hZ2UsIG9yLCBpbiBjYXNlIHRo
ZXJlJ3MgYSBjbGlwcGVkCisgICAgLy8gb3V0IHJlZ2lvbiwgc2V0IHRoZSBvcmlnaW4gYWNjb3Jk
aW5nbHkgdG8gdGhlIGZ1bGwgYm91bmRpbmcgcmVjdCdzIHRvcC1sZWZ0IGNvcm5lci4KKyAgICBj
b25zdCBmbG9hdCB0cmFuc2xhdGlvblggPSAtbGF5ZXJBcmVhLngoKSArIGluZmxhdGlvbiAtIGZh
YnNmKGNsaXBwZWRPdXQud2lkdGgoKSk7CisgICAgY29uc3QgZmxvYXQgdHJhbnNsYXRpb25ZID0g
LWxheWVyQXJlYS55KCkgKyBpbmZsYXRpb24gLSBmYWJzZihjbGlwcGVkT3V0LmhlaWdodCgpKTsK
KyAgICBtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uID0gRmxvYXRQb2ludCh0cmFuc2xhdGlvblgs
IHRyYW5zbGF0aW9uWSk7CisKKyAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChsYXllckZsb2F0
UmVjdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db250ZXh0U2hhZG93LmgKaW5kZXggZmE3NzhhZi4uZDEzZDMyMSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGlj
OgogICAgIENvbnRleHRTaGFkb3coKTsKICAgICBDb250ZXh0U2hhZG93KGNvbnN0IENvbG9yJiwg
ZmxvYXQgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCk7CiAKKyAgICBib29sIG11c3RV
c2VDb250ZXh0U2hhZG93KFBsYXRmb3JtQ29udGV4dCk7CiAgICAgdm9pZCBjbGVhcigpOwogCiAg
ICAgLy8gVGhlIHBhaXIgYmVnaW5TaGFkb3dMYXllciBhbmQgZW5kU2hhZG93TGF5ZXIgY3JlYXRl
cyBhIHRlbXBvcmFyeSBpbWFnZQpAQCAtMTA2LDI1ICsxMDcsMjggQEAgcHVibGljOgogICAgIFBs
YXRmb3JtQ29udGV4dCBiZWdpblNoYWRvd0xheWVyKFBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBsYXllckFyZWEpOwogICAgIHZvaWQgZW5kU2hhZG93TGF5ZXIoUGxhdGZvcm1Db250
ZXh0KTsKICAgICBzdGF0aWMgdm9pZCBwdXJnZVNjcmF0Y2hCdWZmZXIoKTsKKyAgICBzdGF0aWMg
VHJhbnNmb3JtYXRpb25NYXRyaXggZ2V0VHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tQ29udGV4dChQ
bGF0Zm9ybUNvbnRleHQpOworCisgICAgdm9pZCBzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhi
b29sIGVuYWJsZSkgeyBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gZW5hYmxlOyB9CisgICAg
Ym9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXM7IH0KICNpZiBQTEFURk9STShDQUlSTykKICAgICB2b2lkIGRyYXdSZWN0
U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29u
c3QgSW50U2l6ZSYgdG9wTGVmdFJhZGl1cyA9IEludFNpemUoKSwgY29uc3QgSW50U2l6ZSYgdG9w
UmlnaHRSYWRpdXMgPSBJbnRTaXplKCksIGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnRSYWRpdXMg
PSBJbnRTaXplKCksIGNvbnN0IEludFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzID0gSW50U2l6ZSgp
KTsKICNlbmRpZgotCiAjaWYgUExBVEZPUk0oUVQpCi0gICAgUVBvaW50RiBvZmZzZXQoKSB7IHJl
dHVybiBRUG9pbnRGKG1fb2Zmc2V0LndpZHRoKCksIG1fb2Zmc2V0LmhlaWdodCgpKTsgfQorICAg
IFFQb2ludEYgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gUVBvaW50RihtX29mZnNldC53aWR0aCgp
LCBtX29mZnNldC5oZWlnaHQoKSk7IH0KICNlbmRpZgogCi0KIHByaXZhdGU6Ci0gICAgSW50UmVj
dCBtX2xheWVyUmVjdDsKLSAgICBQbGF0Zm9ybUltYWdlIG1fbGF5ZXJJbWFnZTsKLSAgICBQbGF0
Zm9ybUNvbnRleHQgbV9sYXllckNvbnRleHQ7Ci0KLSAgICAvLyBVc2VkIGZvciByZWZlcmVuY2Ug
d2hlbiBjYW52YXMgc2NhbGUoeCx5KSB3YXMgY2FsbGVkLgotICAgIEZsb2F0UmVjdCBtX3Vuc2Nh
bGVkTGF5ZXJSZWN0OworICAgIFBsYXRmb3JtSW1hZ2UgbV9sYXllckltYWdlOyAvLyBCdWZmZXIg
dG8gd2hlcmUgdGhlIHRlbXBvcmFyeSBzaGFkb3cgd2lsbCBiZSBkcmF3biB0by4KKyAgICBQbGF0
Zm9ybUNvbnRleHQgbV9sYXllckNvbnRleHQ7IC8vIENvbnRleHQgdXNlZCB0byBwYWludCB0aGUg
c2hhZG93IHRvIHRoZSBsYXllciBpbWFnZS4KKyAgICBGbG9hdFJlY3QgbV9zb3VyY2VSZWN0OyAv
LyBTdWItcmVjdCBvZiBtX2xheWVySW1hZ2UgdGhhdCBjb250YWlucyB0aGUgc2hhZG93IHBpeGVs
cy4KKyAgICBGbG9hdFBvaW50IG1fbGF5ZXJPcmlnaW47IC8vIFRvcC1sZWZ0IGNvcm5lciBvZiB0
aGUgKHBvc3NpYmx5IGNsaXBwZWQpIGJvdW5kaW5nIHJlY3QgdG8gZHJhdyB0aGUgc2hhZG93IHRv
LgorICAgIEZsb2F0UG9pbnQgbV9sYXllckNvbnRleHRUcmFuc2xhdGlvbjsgLy8gVHJhbnNsYXRp
b24gdG8gYXBwbHkgdG8gbV9sYXllckNvbnRleHQgZm9yIHRoZSBzaGFkb3cgdG8gYmUgY29ycmVj
dGx5IGNsaXBwZWQuCisgICAgYm9vbCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogCiAgICAg
dm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYgaW1hZ2VT
aXplLCBpbnQgc3RyaWRlKTsKLSAgICB2b2lkIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CisgICAg
SW50UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CisK
ICNpZiBQTEFURk9STShDQUlSTykKICAgICB2b2lkIGRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGlu
ZyhQbGF0Zm9ybUNvbnRleHQgY29udGV4dCwgY29uc3QgSW50UmVjdCYgc2hhZG93UmVjdCwgY29u
c3QgSW50U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMs
IGNvbnN0IEludFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEludFNpemUmIGJvdHRvbVJp
Z2h0UmFkaXVzLCBmbG9hdCBhbHBoYSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ29udGV4dFNoYWRvd0NhaXJvLmNwcAppbmRleCA2OTllZGY3
Li42ODAxMjY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nv
bnRleHRTaGFkb3dDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Db250ZXh0U2hhZG93Q2Fpcm8uY3BwCkBAIC04MiwxOSArODIsMjUgQEAgc3RhdGljIGNhaXJv
X3N1cmZhY2VfdCogZ2V0U2NyYXRjaEJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHJl
dHVybiBzY3JhdGNoQnVmZmVyOwogfQogCi1QbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRvdzo6
YmVnaW5TaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBsYXllckFyZWEpCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBDb250ZXh0U2hhZG93OjpnZXRUcmFu
c2Zvcm1hdGlvbk1hdHJpeEZyb21Db250ZXh0KFBsYXRmb3JtQ29udGV4dCBjb250ZXh0KQogewot
ICAgIG1fdW5zY2FsZWRMYXllclJlY3QgPSBsYXllckFyZWE7CisgICAgY2Fpcm9fbWF0cml4X3Qg
dHJhbnNmb3JtOworICAgIGNhaXJvX2dldF9tYXRyaXgoY29udGV4dCwgJnRyYW5zZm9ybSk7Cisg
ICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KHRyYW5zZm9ybS54eCwgdHJhbnNmb3JtLnl4
LCB0cmFuc2Zvcm0ueHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9y
bS55eSwgdHJhbnNmb3JtLngwLCB0cmFuc2Zvcm0ueTApOworfQogCitQbGF0Zm9ybUNvbnRleHQg
Q29udGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEpCit7CiAgICAgZG91YmxlIHgxLCB4MiwgeTEsIHky
OwogICAgIGNhaXJvX2NsaXBfZXh0ZW50cyhjb250ZXh0LCAmeDEsICZ5MSwgJngyLCAmeTIpOwot
ICAgIGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KGxheWVyQXJlYSwgSW50UmVjdCh4MSwgeTEs
IHgyIC0geDEsIHkyIC0geTEpKTsKKyAgICBJbnRSZWN0IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxh
eWVyQm91bmRpbmdSZWN0KGNvbnRleHQsIGxheWVyQXJlYSwgSW50UmVjdCh4MSwgeTEsIHgyIC0g
eDEsIHkyIC0geTEpKTsKIAogICAgIC8vIERvbid0IHBhaW50IGlmIHdlIGFyZSB0b3RhbGx5IG91
dHNpZGUgdGhlIGNsaXAgcmVnaW9uLgotICAgIGlmIChtX2xheWVyUmVjdC5pc0VtcHR5KCkpCisg
ICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgbV9s
YXllckltYWdlID0gZ2V0U2NyYXRjaEJ1ZmZlcihtX2xheWVyUmVjdC5zaXplKCkpOworICAgIG1f
bGF5ZXJJbWFnZSA9IGdldFNjcmF0Y2hCdWZmZXIobGF5ZXJSZWN0LnNpemUoKSk7CiAgICAgbV9s
YXllckNvbnRleHQgPSBjYWlyb19jcmVhdGUobV9sYXllckltYWdlKTsKIAogICAgIC8vIEFsd2F5
cyBjbGVhciB0aGUgc3VyZmFjZSBmaXJzdC4KQEAgLTEwMiw4ICsxMDgsNyBAQCBQbGF0Zm9ybUNv
bnRleHQgQ29udGV4dFNoYWRvdzo6YmVnaW5TaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgY29u
dGV4dCwgY29uc3QgRgogICAgIGNhaXJvX3BhaW50KG1fbGF5ZXJDb250ZXh0KTsKICAgICBjYWly
b19zZXRfb3BlcmF0b3IobV9sYXllckNvbnRleHQsIENBSVJPX09QRVJBVE9SX09WRVIpOwogCi0g
ICAgY2Fpcm9fdHJhbnNsYXRlKG1fbGF5ZXJDb250ZXh0LCBtX29mZnNldC53aWR0aCgpLCBtX29m
ZnNldC5oZWlnaHQoKSk7Ci0gICAgY2Fpcm9fdHJhbnNsYXRlKG1fbGF5ZXJDb250ZXh0LCAtbV9s
YXllclJlY3QueCgpLCAtbV9sYXllclJlY3QueSgpKTsKKyAgICBjYWlyb190cmFuc2xhdGUobV9s
YXllckNvbnRleHQsIG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24ueCgpLCBtX2xheWVyQ29udGV4
dFRyYW5zbGF0aW9uLnkoKSk7CiAgICAgcmV0dXJuIG1fbGF5ZXJDb250ZXh0OwogfQogCkBAIC0x
MjIsMTkgKzEyNyw3IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6ZW5kU2hhZG93TGF5ZXIoY2Fpcm9f
dCogY3IpCiAKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBzZXRTb3VyY2VSR0JBRnJvbUNvbG9y
KGNyLCBtX2NvbG9yKTsKLQotICAgIGNhaXJvX21hdHJpeF90IHRyYW5zZm9ybTsKLSAgICBjYWly
b19nZXRfbWF0cml4KGNyLCAmdHJhbnNmb3JtKTsKLSAgICBkb3VibGUgeCA9IG1fbGF5ZXJSZWN0
LngoKTsKLSAgICBkb3VibGUgeSA9IG1fbGF5ZXJSZWN0LnkoKTsKLQotICAgIGRvdWJsZSB4U2Nh
bGUgPSBzcXJ0KHRyYW5zZm9ybS54eCAqIHRyYW5zZm9ybS54eCArIHRyYW5zZm9ybS55eCAqIHRy
YW5zZm9ybS55eCk7Ci0gICAgZG91YmxlIHlTY2FsZSA9IHNxcnQodHJhbnNmb3JtLnh5ICogdHJh
bnNmb3JtLnh5ICsgdHJhbnNmb3JtLnl5ICogdHJhbnNmb3JtLnl5KTsKLSAgICBpZiAoeFNjYWxl
ICE9IDEgfHwgeVNjYWxlICE9IDEpIHsKLSAgICAgICAgeCA9IG1fdW5zY2FsZWRMYXllclJlY3Qu
eCgpICsgbV9vZmZzZXQud2lkdGgoKSAgLyB0cmFuc2Zvcm0ueHggLSBtX2JsdXJEaXN0YW5jZTsK
LSAgICAgICAgeSA9IG1fdW5zY2FsZWRMYXllclJlY3QueSgpICsgbV9vZmZzZXQuaGVpZ2h0KCkg
LyB0cmFuc2Zvcm0ueXkgLSBtX2JsdXJEaXN0YW5jZTsKLSAgICB9Ci0gICAgY2Fpcm9fbWFza19z
dXJmYWNlKGNyLCBtX2xheWVySW1hZ2UsIHgsIHkpOworICAgIGNhaXJvX21hc2tfc3VyZmFjZShj
ciwgbV9sYXllckltYWdlLCBtX2xheWVyT3JpZ2luLngoKSwgbV9sYXllck9yaWdpbi55KCkpOwog
ICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogCiAgICAgLy8gU2NoZWR1bGUgYSBwdXJnZSBvZiB0aGUg
c2NyYXRjaCBidWZmZXIuIFdlIGRvIG5vdCBuZWVkIHRvIGRlc3Ryb3kgdGhlIHN1cmZhY2UuCkBA
IC0yMzUsOSArMjI4LDkgQEAgdm9pZCBDb250ZXh0U2hhZG93OjpkcmF3UmVjdFNoYWRvdyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QKICAgICAvLyBSZWR1Y2Ug
dGhlIHNpemUgb2Ygd2hhdCB3ZSBoYXZlIHRvIGRyYXcgd2l0aCB0aGUgY2xpcCBhcmVhLgogICAg
IGRvdWJsZSB4MSwgeDIsIHkxLCB5MjsKICAgICBjYWlyb19jbGlwX2V4dGVudHMoY3IsICZ4MSwg
JnkxLCAmeDIsICZ5Mik7Ci0gICAgY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3Qoc2hhZG93UmVj
dCwgSW50UmVjdCh4MSwgeTEsIHgyIC0geDEsIHkyIC0geTEpKTsKKyAgICBjYWxjdWxhdGVMYXll
ckJvdW5kaW5nUmVjdChjciwgc2hhZG93UmVjdCwgSW50UmVjdCh4MSwgeTEsIHgyIC0geDEsIHky
IC0geTEpKTsKIAotICAgIGlmICgoc2hhZG93VGVtcGxhdGVTaXplLndpZHRoKCkgKiBzaGFkb3dU
ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgPiBtX2xheWVyUmVjdC53aWR0aCgpICogbV9sYXllclJlY3Qu
aGVpZ2h0KCkpKSB7CisgICAgaWYgKChzaGFkb3dUZW1wbGF0ZVNpemUud2lkdGgoKSAqIHNoYWRv
d1RlbXBsYXRlU2l6ZS5oZWlnaHQoKSA+IG1fc291cmNlUmVjdC53aWR0aCgpICogbV9zb3VyY2VS
ZWN0LmhlaWdodCgpKSkgewogICAgICAgICBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoY3Is
IHJlY3QsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0UmFkaXVzLCBi
b3R0b21SaWdodFJhZGl1cywgY29udGV4dC0+Z2V0QWxwaGEoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
YWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAK
aW5kZXggNGIxMTc1Ni4uMGQ5MmFkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vRm9udENhaXJvLmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5
cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjYWlyb190KiBjb250
ZXh0LAogICAgIGlmICghKGdyYXBoaWNzQ29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0
TW9kZUZpbGwpIHx8IHNoYWRvdy0+bV90eXBlID09IENvbnRleHRTaGFkb3c6Ok5vU2hhZG93KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoc2hhZG93LT5tX3R5cGUgPT0gQ29udGV4dFNoYWRv
dzo6U29saWRTaGFkb3cpIHsKKyAgICBpZiAoIXNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3co
Y29udGV4dCkpIHsKICAgICAgICAgLy8gT3B0aW1pemUgbm9uLWJsdXJyeSBzaGFkb3dzLCBieSBq
dXN0IGRyYXdpbmcgdGV4dCB3aXRob3V0IHRoZSBDb250ZXh0U2hhZG93LgogICAgICAgICBjYWly
b19zYXZlKGNvbnRleHQpOwogICAgICAgICBjYWlyb190cmFuc2xhdGUoY29udGV4dCwgc2hhZG93
LT5tX29mZnNldC53aWR0aCgpLCBzaGFkb3ctPm1fb2Zmc2V0LmhlaWdodCgpKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWly
by5jcHAKaW5kZXggNTAzMmY5Ny4uYTZlZGFmNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTg3MSw2
ICs4NzEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coRmxvYXRT
aXplIGNvbnN0JiBzaXplLCBmbG9hdCBibHVyLCBDb2xvcgogICAgICAgICBtX2RhdGEtPnNoYWRv
dyA9IENvbnRleHRTaGFkb3coY29sb3IsIGJsdXIsIEZsb2F0U2l6ZShzaXplLndpZHRoKCksIC1z
aXplLmhlaWdodCgpKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fZGF0YS0+c2hhZG93ID0gQ29u
dGV4dFNoYWRvdyhjb2xvciwgYmx1ciwgRmxvYXRTaXplKHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSkpOworCisgICAgbV9kYXRhLT5zaGFkb3cuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMo
bV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CiB9CiAKIENvbnRleHRTaGFkb3cqIEdy
YXBoaWNzQ29udGV4dDo6Y29udGV4dFNoYWRvdygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL0ZvbnRHdGsuY3BwCmluZGV4IGEwZDVjNjIuLmVhYmQ5MTMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ZvbnRHdGsuY3BwCkBAIC0yMjUsNyArMjI1LDcgQEAgc3RhdGljIHZv
aWQgZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY2Fp
cm9fdCogY29udGV4dCwKICAgICBGbG9hdFBvaW50IHRvdGFsT2Zmc2V0KHBvaW50ICsgc2hhZG93
LT5tX29mZnNldCk7CiAKICAgICAvLyBPcHRpbWl6ZSBub24tYmx1cnJ5IHNoYWRvd3MsIGJ5IGp1
c3QgZHJhd2luZyB0ZXh0IHdpdGhvdXQgdGhlIENvbnRleHRTaGFkb3cuCi0gICAgaWYgKHNoYWRv
dy0+bV90eXBlID09IENvbnRleHRTaGFkb3c6OlNvbGlkU2hhZG93KSB7CisgICAgaWYgKCFzaGFk
b3ctPm11c3RVc2VDb250ZXh0U2hhZG93KGNvbnRleHQpKSB7CiAgICAgICAgIGNhaXJvX3NhdmUo
Y29udGV4dCk7CiAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjb250ZXh0LCB0b3RhbE9mZnNldC54
KCksIHRvdGFsT2Zmc2V0LnkoKSk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvQ29udGV4dFNoYWRvd1F0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvQ29udGV4dFNoYWRvd1F0LmNwcAppbmRleCBmN2M3MGY2Li40OGY3OTc2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0NvbnRleHRTaGFkb3dRdC5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Db250ZXh0U2hhZG93UXQuY3BwCkBAIC0xMDAs
NiArMTAwLDEzIEBAIHZvaWQgU2hhZG93QnVmZmVyOjp0aW1lckV2ZW50KFFUaW1lckV2ZW50KiBl
dmVudCkKICAgICBRT2JqZWN0Ojp0aW1lckV2ZW50KGV2ZW50KTsKIH0KIAorVHJhbnNmb3JtYXRp
b25NYXRyaXggQ29udGV4dFNoYWRvdzo6Z2V0VHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tQ29udGV4
dChQbGF0Zm9ybUNvbnRleHQgY29udGV4dCkKK3sKKyAgICBjb25zdCBRVHJhbnNmb3JtJiB0cmFu
c2Zvcm0gPSBjb250ZXh0LT50cmFuc2Zvcm0oKTsKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25N
YXRyaXgodHJhbnNmb3JtLm0xMSgpLCB0cmFuc2Zvcm0ubTEyKCksIHRyYW5zZm9ybS5tMjEoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtLm0yMigpLCB0cmFuc2Zv
cm0uZHgoKSwgdHJhbnNmb3JtLmR5KCkpOworfQorCiBRX0dMT0JBTF9TVEFUSUMoU2hhZG93QnVm
ZmVyLCBzY3JhdGNoU2hhZG93QnVmZmVyKQogCiBQbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNoYWRv
dzo6YmVnaW5TaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCwgY29uc3QgRmxvYXRSZWN0JiBs
YXllckFyZWEpCkBAIC0xMTQsMjUgKzEyMSwyMiBAQCBQbGF0Zm9ybUNvbnRleHQgQ29udGV4dFNo
YWRvdzo6YmVnaW5TaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCwgY29uc3QgRmxvYXRSZQog
ICAgIGVsc2UKICAgICAgICAgY2xpcFJlY3QgPSBwLT50cmFuc2Zvcm0oKS5pbnZlcnRlZCgpLm1h
cFJlY3QocC0+d2luZG93KCkpOwogCi0gICAgbV91bnNjYWxlZExheWVyUmVjdCA9IGxheWVyQXJl
YTsKLSAgICBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChsYXllckFyZWEsIEludFJlY3QoY2xp
cFJlY3QueCgpLCBjbGlwUmVjdC55KCksIGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdo
dCgpKSk7CisgICAgLy8gU2V0IG1fbGF5ZXJPcmlnaW4sIG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRp
b24sIG1fc291cmNlUmVjdC4KKyAgICBJbnRSZWN0IGNsaXAoY2xpcFJlY3QueCgpLCBjbGlwUmVj
dC55KCksIGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKKyAgICBJbnRSZWN0
IGxheWVyUmVjdCA9IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KHAsIGxheWVyQXJlYSwgY2xp
cCk7CiAKICAgICAvLyBEb24ndCBwYWludCBpZiB3ZSBhcmUgdG90YWxseSBvdXRzaWRlIHRoZSBj
bGlwIHJlZ2lvbi4KLSAgICBpZiAobV9sYXllclJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChsYXll
clJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFNoYWRvd0J1ZmZlciog
c2hhZG93QnVmZmVyID0gc2NyYXRjaFNoYWRvd0J1ZmZlcigpOwotICAgIFFJbWFnZSogc2hhZG93
SW1hZ2UgPSBzaGFkb3dCdWZmZXItPnNjcmF0Y2hJbWFnZShtX2xheWVyUmVjdC5zaXplKCkpOwor
ICAgIFFJbWFnZSogc2hhZG93SW1hZ2UgPSBzaGFkb3dCdWZmZXItPnNjcmF0Y2hJbWFnZShsYXll
clJlY3Quc2l6ZSgpKTsKICAgICBtX2xheWVySW1hZ2UgPSBRSW1hZ2UoKnNoYWRvd0ltYWdlKTsK
IAogICAgIG1fbGF5ZXJDb250ZXh0ID0gbmV3IFFQYWludGVyOwogICAgIG1fbGF5ZXJDb250ZXh0
LT5iZWdpbigmbV9sYXllckltYWdlKTsKICAgICBtX2xheWVyQ29udGV4dC0+c2V0Rm9udChwLT5m
b250KCkpOwotICAgIG1fbGF5ZXJDb250ZXh0LT50cmFuc2xhdGUobV9vZmZzZXQud2lkdGgoKSwg
bV9vZmZzZXQuaGVpZ2h0KCkpOwotCi0gICAgLy8gVGhlIG9yaWdpbiBpcyBub3cgdGhlIHRvcCBs
ZWZ0IGNvcm5lciBvZiB0aGUgc2NyYXRjaCBpbWFnZS4KLSAgICBtX2xheWVyQ29udGV4dC0+dHJh
bnNsYXRlKC1tX2xheWVyUmVjdC54KCksIC1tX2xheWVyUmVjdC55KCkpOwotCisgICAgbV9sYXll
ckNvbnRleHQtPnRyYW5zbGF0ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKICAgICByZXR1
cm4gbV9sYXllckNvbnRleHQ7CiB9CiAKQEAgLTE1NSwxMyArMTU5LDcgQEAgdm9pZCBDb250ZXh0
U2hhZG93OjplbmRTaGFkb3dMYXllcihQbGF0Zm9ybUNvbnRleHQgcCkKICAgICAgICAgcC5lbmQo
KTsKICAgICB9CiAKLSAgICBjb25zdCBRVHJhbnNmb3JtIHRyYW5zZm9ybSA9IHAtPnRyYW5zZm9y
bSgpOwotICAgIGlmICh0cmFuc2Zvcm0uaXNTY2FsaW5nKCkpIHsKLSAgICAgICAgcXJlYWwgeCA9
IG1fdW5zY2FsZWRMYXllclJlY3QueCgpICsgbV9vZmZzZXQud2lkdGgoKSAgLyB0cmFuc2Zvcm0u
bTExKCkgLSBtX2JsdXJEaXN0YW5jZTsKLSAgICAgICAgcXJlYWwgeSA9IG1fdW5zY2FsZWRMYXll
clJlY3QueSgpICsgbV9vZmZzZXQuaGVpZ2h0KCkgLyB0cmFuc2Zvcm0ubTIyKCkgLSBtX2JsdXJE
aXN0YW5jZTsKLSAgICAgICAgcC0+ZHJhd0ltYWdlKFFQb2ludEYoeCwgeSksIG1fbGF5ZXJJbWFn
ZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHAtPmRyYXdJbWFnZShtX2xheWVyUmVjdC50b3BMZWZ0
KCksIG1fbGF5ZXJJbWFnZSk7CisgICAgcC0+ZHJhd0ltYWdlKG1fbGF5ZXJPcmlnaW4sIG1fbGF5
ZXJJbWFnZSwgbV9zb3VyY2VSZWN0KTsKIAogICAgIHNjcmF0Y2hTaGFkb3dCdWZmZXIoKS0+c2No
ZWR1bGVQdXJnZSgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9Gb250UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwCmlu
ZGV4IGU4OWQzMzAuLjEzMWFlOTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvRm9udFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRR
dC5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCBzdGF0aWMgdm9pZCBkcmF3VGV4dENvbW1vbihHcmFw
aGljc0NvbnRleHQqIGN0eCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdAogCiAgICAg
ICAgICAgICBpZiAoY3R4U2hhZG93LT5tX3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Tm9TaGFkb3cp
IHsKICAgICAgICAgICAgICAgICBDb250ZXh0U2hhZG93KiBjdHhTaGFkb3cgPSBjdHgtPmNvbnRl
eHRTaGFkb3coKTsKLSAgICAgICAgICAgICAgICBpZiAoY3R4U2hhZG93LT5tX3R5cGUgIT0gQ29u
dGV4dFNoYWRvdzo6Qmx1clNoYWRvdykgeworICAgICAgICAgICAgICAgIGlmICghY3R4U2hhZG93
LT5tdXN0VXNlQ29udGV4dFNoYWRvdyhwKSkgewogICAgICAgICAgICAgICAgICAgICBwLT5zYXZl
KCk7CiAgICAgICAgICAgICAgICAgICAgIHAtPnNldFBlbihjdHhTaGFkb3ctPm1fY29sb3IpOwog
ICAgICAgICAgICAgICAgICAgICBwLT50cmFuc2xhdGUoY3R4U2hhZG93LT5vZmZzZXQoKSk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3Bw
CmluZGV4IGI5NGM5MzQuLjlkZDM4YWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCkBAIC01Myw3ICs1Myw2IEBACiAjaW5jbHVk
ZSAiVHJhbnNwYXJlbmN5TGF5ZXIuaCIKIAogI2luY2x1ZGUgPFFCcnVzaD4KLSNpbmNsdWRlIDxR
RGVidWc+CiAjaW5jbHVkZSA8UUdyYWRpZW50PgogI2luY2x1ZGUgPFFQYWludERldmljZT4KICNp
bmNsdWRlIDxRUGFpbnRFbmdpbmU+CkBAIC01MTEsMzMgKzUxMCwyMCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlmIChtX2RhdGEtPmhh
c1NoYWRvdygpKSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFk
b3coKTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bV90eXBlICE9IENvbnRleHRTaGFkb3c6OkJsdXJT
aGFkb3cKLSAgICAgICAgICAgICYmICFtX3N0YXRlLmZpbGxQYXR0ZXJuICYmICFtX3N0YXRlLmZp
bGxHcmFkaWVudCkKKyAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3cocCkg
fHwgbV9zdGF0ZS5maWxsUGF0dGVybiB8fCBtX3N0YXRlLmZpbGxHcmFkaWVudCkKICAgICAgICAg
ewotICAgICAgICAgICAgUVBvaW50RiBvZmZzZXQgPSBzaGFkb3ctPm9mZnNldCgpOwotICAgICAg
ICAgICAgY29uc3QgUVRyYW5zZm9ybSYgdHJhbnNmb3JtID0gcC0+dHJhbnNmb3JtKCk7Ci0gICAg
ICAgICAgICBpZiAodHJhbnNmb3JtLmlzU2NhbGluZygpKSB7Ci0gICAgICAgICAgICAgICAgLy8g
SWYgc2NhbGluZyBpcyByZXF1aXJlZCwgZmluZCB0aGUgbmV3IGNvb3JkIGZvciBzaGFkb3cgb3Jp
Z2luLAotICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIHJlbGF0aXZlIG9mZnNldCB0byBp
dHMgc2hhcGUgaXMga2VwdC4KLSAgICAgICAgICAgICAgICBRUG9pbnRGIHRyYW5zbGF0ZWRPZmZz
ZXQob2Zmc2V0LngoKSAvIHRyYW5zZm9ybS5tMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb2Zmc2V0LnkoKSAvIHRyYW5zZm9ybS5tMjIoKSk7Ci0gICAgICAg
ICAgICAgICAgcGxhdGZvcm1QYXRoLnRyYW5zbGF0ZSh0cmFuc2xhdGVkT2Zmc2V0KTsKLSAgICAg
ICAgICAgICAgICBwLT5maWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihzaGFkb3ctPm1fY29s
b3IpKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgudHJhbnNsYXRlKC10cmFuc2xhdGVk
T2Zmc2V0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNs
YXRlKG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBR
Q29sb3Ioc2hhZG93LT5tX2NvbG9yKSk7Ci0gICAgICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1v
ZmZzZXQpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUVBh
aW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcGxhdGZv
cm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKSk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRl
cikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShR
UGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93
UGFpbnRlci0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3IobV9kYXRhLT5zaGFkb3cubV9j
b2xvcikpOwogICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBRUG9pbnRGIG9mZnNldCA9
IHNoYWRvdy0+b2Zmc2V0KCk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKKyAg
ICAgICAgICAgIHAtPmZpbGxQYXRoKHBsYXRmb3JtUGF0aCwgUUNvbG9yKHNoYWRvdy0+bV9jb2xv
cikpOworICAgICAgICAgICAgcC0+dHJhbnNsYXRlKC1vZmZzZXQpOwogICAgICAgICB9Ci0KICAg
ICB9CiAgICAgaWYgKG1fc3RhdGUuZmlsbFBhdHRlcm4pIHsKICAgICAgICAgQWZmaW5lVHJhbnNm
b3JtIGFmZmluZTsKQEAgLTU2MiwyOCArNTQ4LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0
cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlmIChtX2RhdGEtPmhhc1NoYWRvdygp
KSB7CiAgICAgICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFkb3coKTsKLQot
ICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUgIT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdwot
ICAgICAgICAgICAgJiYgIW1fc3RhdGUuc3Ryb2tlUGF0dGVybiAmJiAhbV9zdGF0ZS5zdHJva2VH
cmFkaWVudCkKKyAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZUNvbnRleHRTaGFkb3cocCkgfHwg
bV9zdGF0ZS5zdHJva2VQYXR0ZXJuIHx8IG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIFFQZW4gc2hhZG93UGVuKHBlbik7Ci0gICAgICAgICAgICBzaGFkb3dQ
ZW4uc2V0Q29sb3IobV9kYXRhLT5zaGFkb3cubV9jb2xvcik7Ci0gICAgICAgICAgICBRUG9pbnRG
IG9mZnNldCA9IHNoYWRvdy0+b2Zmc2V0KCk7Ci0gICAgICAgICAgICBjb25zdCBRVHJhbnNmb3Jt
JiB0cmFuc2Zvcm0gPSBwLT50cmFuc2Zvcm0oKTsKLSAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0u
aXNTY2FsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBJZiBzY2FsaW5nIGlzIHJlcXVpcmVk
LCBmaW5kIHRoZSBuZXcgY29vcmQgZm9yIHNoYWRvdyBvcmlnaW4sCi0gICAgICAgICAgICAgICAg
Ly8gc28gdGhhdCB0aGUgcmVsYXRpdmUgb2Zmc2V0IHRvIGl0cyBzaGFwZSBpcyBrZXB0LgotICAg
ICAgICAgICAgICAgIFFQb2ludEYgdHJhbnNsYXRlZE9mZnNldChvZmZzZXQueCgpIC8gdHJhbnNm
b3JtLm0xMSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZz
ZXQueSgpIC8gdHJhbnNmb3JtLm0yMigpKTsKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVBhdGgu
dHJhbnNsYXRlKHRyYW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgICAgIHAtPnN0cm9rZVBh
dGgocGxhdGZvcm1QYXRoLCBzaGFkb3dQZW4pOwotICAgICAgICAgICAgICAgIHBsYXRmb3JtUGF0
aC50cmFuc2xhdGUoLXRyYW5zbGF0ZWRPZmZzZXQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBwLT50cmFuc2xhdGUob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBwLT5z
dHJva2VQYXRoKHBsYXRmb3JtUGF0aCwgc2hhZG93UGVuKTsKLSAgICAgICAgICAgICAgICBwLT50
cmFuc2xhdGUoLW9mZnNldCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBGbG9hdFJlY3QgYm91bmRpbmdSZWN0ID0gcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2lu
dFJlY3QoKTsKICAgICAgICAgICAgIGJvdW5kaW5nUmVjdC5pbmZsYXRlKHBlbi5taXRlckxpbWl0
KCkgKyBwZW4ud2lkdGhGKCkpOwogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIg
PSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgYm91bmRpbmdSZWN0KTsKQEAgLTU5Miw2ICs1
NTgsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0
aCkKICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zdHJva2VQYXRoKHBsYXRmb3JtUGF0
aCwgcGVuKTsKICAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAg
ICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUVBlbiBzaGFkb3dQZW4o
cGVuKTsKKyAgICAgICAgICAgIHNoYWRvd1Blbi5zZXRDb2xvcihtX2RhdGEtPnNoYWRvdy5tX2Nv
bG9yKTsKKyAgICAgICAgICAgIFFQb2ludEYgb2Zmc2V0ID0gc2hhZG93LT5vZmZzZXQoKTsKKyAg
ICAgICAgICAgIHAtPnRyYW5zbGF0ZShvZmZzZXQpOworICAgICAgICAgICAgcC0+c3Ryb2tlUGF0
aChwbGF0Zm9ybVBhdGgsIHNoYWRvd1Blbik7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW9m
ZnNldCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTcxMSw3ICs2ODQsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICBwLT5m
aWxsUmVjdChub3JtYWxpemVkUmVjdCwgYnJ1c2gpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
IChtX2RhdGEtPmhhc1NoYWRvdygpKSB7Ci0gICAgICAgICAgICBpZiAoc2hhZG93LT5tX3R5cGUg
PT0gQ29udGV4dFNoYWRvdzo6Qmx1clNoYWRvdykgeworICAgICAgICAgICAgaWYgKHNoYWRvdy0+
bXVzdFVzZUNvbnRleHRTaGFkb3cocCkpIHsKICAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hh
ZG93UGFpbnRlciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7
CiAgICAgICAgICAgICAgICAgaWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAgICAg
ICAgc2hhZG93UGFpbnRlci0+c2V0T3BhY2l0eShzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5t
X2NvbG9yLmFscGhhKCkpIC8gMjU1KTsKQEAgLTcxOSwxNyArNjkyLDExIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgICAgICAg
ICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIocCk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBTb2xpZCByZWN0YW5nbGUgZmls
bCB3aXRoIG5vIGJsdXIgc2hhZG93IGNhbiBiZSBkb25lIGZhc3RlcgotICAgICAgICAgICAgICAg
IC8vIHdpdGhvdXQgdXNpbmcgdGhlIHNoYWRvdyBsYXllciBhdCBhbGwuCisgICAgICAgICAgICAg
ICAgLy8gU29saWQgcmVjdGFuZ2xlIGZpbGwgd2l0aCBubyBibHVyIHNoYWRvdyBvciB0cmFuc2Zv
cm1hdGlvbnMgYXBwbGllZCBjYW4gYmUgZG9uZQorICAgICAgICAgICAgICAgIC8vIGZhc3RlciB3
aXRob3V0IHVzaW5nIHRoZSBzaGFkb3cgbGF5ZXIgYXQgYWxsLgogICAgICAgICAgICAgICAgIFFD
b2xvciBzaGFkb3dDb2xvciA9IHNoYWRvdy0+bV9jb2xvcjsKICAgICAgICAgICAgICAgICBzaGFk
b3dDb2xvci5zZXRBbHBoYUYoc2hhZG93Q29sb3IuYWxwaGFGKCkgKiBwLT5icnVzaCgpLmNvbG9y
KCkuYWxwaGFGKCkpOwotICAgICAgICAgICAgICAgIGNvbnN0IFFUcmFuc2Zvcm0mIHRyYW5zZm9y
bSA9IHAtPnRyYW5zZm9ybSgpOwotICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uaXNTY2Fs
aW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3Qu
dHJhbnNsYXRlZChzdGF0aWNfY2FzdDxxcmVhbD4oc2hhZG93LT5vZmZzZXQoKS54KCkpIC8gdHJh
bnNmb3JtLm0xMSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHFyZWFsPihzaGFkb3ctPm9mZnNldCgpLnkoKSAg
LyB0cmFuc2Zvcm0ubTIyKCkpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hh
ZG93Q29sb3IpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBw
LT5maWxsUmVjdChub3JtYWxpemVkUmVjdC50cmFuc2xhdGVkKHNoYWRvdy0+b2Zmc2V0KCkpLCBz
aGFkb3dDb2xvcik7CisgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3Qu
dHJhbnNsYXRlZChzaGFkb3ctPm9mZnNldCgpKSwgc2hhZG93Q29sb3IpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAKQEAgLTc0OSwxOCArNzE2LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29s
b3JTCiAKICAgICBpZiAobV9kYXRhLT5oYXNTaGFkb3coKSkgewogICAgICAgICBDb250ZXh0U2hh
ZG93KiBzaGFkb3cgPSBjb250ZXh0U2hhZG93KCk7Ci0KLSAgICAgICAgaWYgKHNoYWRvdy0+bV90
eXBlICE9IENvbnRleHRTaGFkb3c6OkJsdXJTaGFkb3cpIHsKLSAgICAgICAgICAgIC8vIFdlIGRv
IG5vdCBuZWVkIGFueSBsYXllciBmb3Igc2ltcGxlIHNoYWRvdy4KLSAgICAgICAgICAgIHAtPmZp
bGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSksIHNoYWRv
dy0+bV9jb2xvcik7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzaGFkb3ctPm11c3RV
c2VDb250ZXh0U2hhZG93KHApKSB7CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRl
ciA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihwLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAg
ICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXIt
PnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CiAg
ICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIHNo
YWRvdy0+bV9jb2xvcik7CiAgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihw
KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LnRyYW5zbGF0ZWQoc2hhZG93LT5vZmZzZXQoKSks
IHNoYWRvdy0+bV9jb2xvcik7CiAgICAgfQogCiAgICAgcC0+ZmlsbFJlY3Qobm9ybWFsaXplZFJl
Y3QsIG1fZGF0YS0+c29saWRDb2xvcik7CkBAIC03NzYsMTkgKzc0MCwxNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IElu
dFNpemUmIHRvcExlZgogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CiAgICAgaWYgKG1f
ZGF0YS0+aGFzU2hhZG93KCkpIHsKICAgICAgICAgQ29udGV4dFNoYWRvdyogc2hhZG93ID0gY29u
dGV4dFNoYWRvdygpOwotCi0gICAgICAgIGlmIChzaGFkb3ctPm1fdHlwZSAhPSBDb250ZXh0U2hh
ZG93OjpCbHVyU2hhZG93KSB7Ci0gICAgICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCBhbnkgbGF5
ZXIgZm9yIHNpbXBsZSBzaGFkb3cuCi0gICAgICAgICAgICBwLT50cmFuc2xhdGUobV9kYXRhLT5z
aGFkb3cub2Zmc2V0KCkpOwotICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGF0aC5wbGF0Zm9ybVBh
dGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKLSAgICAgICAgICAgIHAtPnRy
YW5zbGF0ZSgtbV9kYXRhLT5zaGFkb3cub2Zmc2V0KCkpOwotICAgICAgICB9IGVsc2UgeworICAg
ICAgICBpZiAoc2hhZG93LT5tdXN0VXNlQ29udGV4dFNoYWRvdyhwKSkgewogICAgICAgICAgICAg
UVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIocCwgcmVj
dCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgIHNo
YWRvd1BhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2Rl
X1NvdXJjZSk7CiAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFBhdGgocGF0aC5w
bGF0Zm9ybVBhdGgoKSwgUUNvbG9yKG1fZGF0YS0+c2hhZG93Lm1fY29sb3IpKTsKICAgICAgICAg
ICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHApOwogICAgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgcC0+dHJhbnNsYXRlKG1fZGF0YS0+c2hhZG93Lm9mZnNl
dCgpKTsKKyAgICAgICAgICAgIHAtPmZpbGxQYXRoKHBhdGgucGxhdGZvcm1QYXRoKCksIFFDb2xv
cihtX2RhdGEtPnNoYWRvdy5tX2NvbG9yKSk7CisgICAgICAgICAgICBwLT50cmFuc2xhdGUoLW1f
ZGF0YS0+c2hhZG93Lm9mZnNldCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBwLT5maWxsUGF0
aChwYXRoLnBsYXRmb3JtUGF0aCgpLCBRQ29sb3IoY29sb3IpKTsKQEAgLTk1OCw5ICs5MjAsMTAg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgZmxvYXQgYmx1ciwgY29uc3QKICAgICAgICAgLy8gV2UgZmxpcCB0aGUgaGVpZ2h0
IHNpbmNlIENHIGFuZCBIVE1MNSBDYW52YXMgaGF2ZSBvcHBvc2l0ZSBZIGF4aXMKICAgICAgICAg
bV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUoc2l6ZS53aWR0aCgpLCAtc2l6ZS5oZWln
aHQoKSk7CiAgICAgICAgIG1fZGF0YS0+c2hhZG93ID0gQ29udGV4dFNoYWRvdyhjb2xvciwgYmx1
ciwgRmxvYXRTaXplKHNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpKTsKLSAgICB9IGVsc2Ug
eworICAgIH0gZWxzZQogICAgICAgICBtX2RhdGEtPnNoYWRvdyA9IENvbnRleHRTaGFkb3coY29s
b3IsIGJsdXIsIEZsb2F0U2l6ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKLSAgICB9
CisKKyAgICBtX2RhdGEtPnNoYWRvdy5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX3N0YXRl
LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNs
ZWFyUGxhdGZvcm1TaGFkb3coKQo=
</data>
<flag name="review"
          id="67939"
          type_id="1"
          status="+"
          setter="ariya.hidayat"
    />
    <flag name="commit-queue"
          id="67964"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>