<?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>104538</bug_id>
          
          <creation_ts>2012-12-10 05:39:46 -0800</creation_ts>
          <short_desc>[Texmap] Animation fails on large layers</short_desc>
          <delta_ts>2012-12-13 02:48:11 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>Major</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>104826</dependson>
          <blocked>103105</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Stephane Cerveau">scerveau</reporter>
          <assigned_to name="Allan Sandfeld Jensen">allan.jensen</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>kenneth</cc>
    
    <cc>noam</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>787222</commentid>
    <comment_count>0</comment_count>
      <attachid>178522</attachid>
    <who name="Stephane Cerveau">scerveau</who>
    <bug_when>2012-12-10 05:39:46 -0800</bug_when>
    <thetext>Created attachment 178522
simple version of tuenti.com

In this website there is a bounceInUp which causes a crash with using QT-Directfb implementation.
Indeed this animation is composed of one image and a text indent of 9999em. 
A surface is created in TextureMapperLayer::updateBackingStore with a big size such as 160000x300 which is not supported by directfb, causing a crash after imageBuffer = ImageBuffer::create(dirtyRect.size());
If i remove the text indentation, this is not crashing anymore and the animation is working fine.
In attachment a simplified version of www.tuenti.com
This website is perfectly working with Chromium or Safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787240</commentid>
    <comment_count>1</comment_count>
    <who name="Stephane Cerveau">scerveau</who>
    <bug_when>2012-12-10 06:03:09 -0800</bug_when>
    <thetext>Seems to be related to this bug:
https://bugs.webkit.org/show_bug.cgi?id=80456</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787250</commentid>
    <comment_count>2</comment_count>
      <attachid>178531</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-12-10 06:18:07 -0800</bug_when>
    <thetext>Created attachment 178531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787254</commentid>
    <comment_count>3</comment_count>
      <attachid>178531</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-10 06:24:37 -0800</bug_when>
    <thetext>Comment on attachment 178531
Patch

Attachment 178531 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15222732</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787255</commentid>
    <comment_count>4</comment_count>
      <attachid>178531</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-12-10 06:25:45 -0800</bug_when>
    <thetext>Comment on attachment 178531
Patch

Attachment 178531 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15230604</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787259</commentid>
    <comment_count>5</comment_count>
      <attachid>178533</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-12-10 06:29:13 -0800</bug_when>
    <thetext>Created attachment 178533
Patch

Missed a file from the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787325</commentid>
    <comment_count>6</comment_count>
      <attachid>178533</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-10 07:39:31 -0800</bug_when>
    <thetext>Comment on attachment 178533
Patch

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

This would bring back the &quot;old&quot; performance issue with drawing text several times if it falls on the border between tiles...
We should only do this in the case of large dirtyRects.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperBackingStore.h:98
&gt; +    void updateContents(TextureMapper*, GraphicsLayer*, const FloatSize&amp;, const IntRect&amp;, BitmapTexture::UpdateContentsFlag);

This function doesn&apos;t seem right. I don&apos;t like passing all these responsibilities to TextureMapperTile.
I prefer that GraphicsLayerTextureMapper perform all the painting; and if we need to use something like a &quot;Client&quot; approach here.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperImageBuffer.h:68
&gt; +    virtual IntSize maxTextureSize() const { return IntSize(2048, 2048); }

Seems arbitrary, an enum with some explicit name could help...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787367</commentid>
    <comment_count>7</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-12-10 08:32:17 -0800</bug_when>
    <thetext>Renamed the bug. It causes crashes on DirectFb, on X11 it simply prevents the any animation on large layers, meaning we get stuck in the from position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787429</commentid>
    <comment_count>8</comment_count>
      <attachid>178576</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-12-10 09:55:58 -0800</bug_when>
    <thetext>Created attachment 178576
Patch

Use the old path for all repaints that fits, and only do tiled painting when necessary. Tiled painting now happens one step lower to actually avoid any intermediate imagebuffers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787444</commentid>
    <comment_count>9</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-10 10:02:36 -0800</bug_when>
    <thetext>This doesn&apos;t seem Qt specific. Maybe change /[Qt]/[CoordGfx]/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787447</commentid>
    <comment_count>10</comment_count>
      <attachid>178576</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-10 10:06:24 -0800</bug_when>
    <thetext>Comment on attachment 178576
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:475
&gt; +    // We need to paint directly when the dirty rect excedes one of the maximum dimensions.

exceed

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.h:89
&gt; +    virtual void getDebugBorderInfo(Color&amp;, float&amp; width) const OVERRIDE;

This doesn&apos;t seem to be used.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperImageBuffer.cpp:65
&gt; +    GraphicsContext* context = m_image-&gt;context();
&gt; +
&gt; +    IntRect sourceRect(targetRect);
&gt; +    sourceRect.setLocation(sourceOffset);
&gt; +    context-&gt;translate(targetRect.x() - sourceOffset.x(), targetRect.y() - sourceOffset.y());
&gt; +    sourceLayer-&gt;paintGraphicsLayerContents(*context, sourceRect);

You probably want to clear the rect before you paint directly into it.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperImageBuffer.h:29
&gt; +static const int s_maximumAllowedImageBufferDimension = 4096;

Can this be inside the function, or in a CPP file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788223</commentid>
    <comment_count>11</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-12-11 02:23:09 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; This doesn&apos;t seem Qt specific. Maybe change /[Qt]/[CoordGfx]/

It is actually TexMap but non-CoordGfx specific. So for Qt only WK1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788255</commentid>
    <comment_count>12</comment_count>
      <attachid>178762</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-12-11 03:03:33 -0800</bug_when>
    <thetext>Created attachment 178762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788727</commentid>
    <comment_count>13</comment_count>
      <attachid>178762</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-11 13:28:31 -0800</bug_when>
    <thetext>Comment on attachment 178762
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperImageBuffer.cpp:64
&gt; +

Extra line

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperImageBuffer.cpp:68
&gt; +    context-&gt;setCompositeOperation(CompositeCopy);

No... You need to clear and then apply CompositeSourceOver. Otherwise the CompositeCopy state would linger while painting the layer, which would cause different primitives inside the layer to copy on top of each other.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789333</commentid>
    <comment_count>14</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-12-12 01:43:18 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 178762 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178762&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperImageBuffer.cpp:64
&gt; &gt; +
&gt; 
&gt; Extra line
&gt; 
That was were clearRect was ;) I couldn&apos;t get it to work, but I found out it is because the translations were not reset.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789337</commentid>
    <comment_count>15</comment_count>
      <attachid>179001</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-12-12 01:44:54 -0800</bug_when>
    <thetext>Created attachment 179001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789683</commentid>
    <comment_count>16</comment_count>
      <attachid>179001</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 10:33:02 -0800</bug_when>
    <thetext>Comment on attachment 179001
Patch

Clearing flags on attachment: 179001

Committed r137481: &lt;http://trac.webkit.org/changeset/137481&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789684</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 10:33:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790275</commentid>
    <comment_count>18</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-12-12 21:32:15 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 179001 [details])
&gt; Clearing flags on attachment: 179001
&gt; 
&gt; Committed r137481: &lt;http://trac.webkit.org/changeset/137481&gt;

It broke all debug builds. You should have build in debug mode too if you add an,asseetion. Could you fix or rollout, please? I can&apos;t help, I won&apos;t be online for 3-4-5 hours.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790386</commentid>
    <comment_count>19</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-12-13 01:00:14 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #16)
&gt; &gt; (From update of attachment 179001 [details] [details])
&gt; &gt; Clearing flags on attachment: 179001
&gt; &gt; 
&gt; &gt; Committed r137481: &lt;http://trac.webkit.org/changeset/137481&gt;
&gt; 
&gt; It broke all debug builds. You should have build in debug mode too if you add an,asseetion. Could you fix or rollout, please? I can&apos;t help, I won&apos;t be online for 3-4-5 hours.

It was fixed by https://trac.webkit.org/changeset/137502 in a separated bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790430</commentid>
    <comment_count>20</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-12-13 02:13:37 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #16)
&gt; &gt; (From update of attachment 179001 [details] [details])
&gt; &gt; Clearing flags on attachment: 179001
&gt; &gt; 
&gt; &gt; Committed r137481: &lt;http://trac.webkit.org/changeset/137481&gt;
&gt; 
&gt; It broke all debug builds. You should have build in debug mode too if you add an,asseetion. Could you fix or rollout, please? I can&apos;t help, I won&apos;t be online for 3-4-5 hours.

It only broke non-Qt debug builds. I mistakenly un-ifdef&apos;ed an assertion, that would make sense on most platforms but doesn&apos;t build on platforms that disable rtti.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790447</commentid>
    <comment_count>21</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-12-13 02:48:11 -0800</bug_when>
    <thetext>Yes, it&apos;s true, it broke only non-Qt debug builds. Qt debug build was broken by another patch next to this patch - https://trac.webkit.org/changeset/137486.

But you could have avoided breaking others build for 2 hours and 
20 commits if you landed your patch manually and watch the bots.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>178522</attachid>
            <date>2012-12-10 05:39:46 -0800</date>
            <delta_ts>2012-12-10 05:39:46 -0800</delta_ts>
            <desc>simple version of tuenti.com</desc>
            <filename>index.html</filename>
            <type>text/html</type>
            <size>1941</size>
            <attacher name="Stephane Cerveau">scerveau</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c3R5bGU+CiAgLmxkbi1kZXZpY2VzIHsKICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKICAgIGxlZnQ6IDUwJTsKICAgIHotaW5kZXg6IDE7CiAgICBiYWNrZ3JvdW5kLWltYWdl
OiB1cmwoIi8vdHVlbnRpc3RhdGljMi1hLmFrYW1haWhkLm5ldC9sYXlvdXQvY3VwY2FrZS9pbWcv
bGFuZGluZy9zcHJpdGUtbGFuZGluZy5MQ0IxendPS1JFLnBuZyIpOwogICAgdGV4dC1pbmRlbnQ6
IC0xMDAwMHB4OwogICAgLXdlYmtpdC1hbmltYXRpb246IGJvdW5jZUluVXAgMXMgMnMgYm90aDsK
ICAgIC1tb3otYW5pbWF0aW9uOiBib3VuY2VJblVwIDFzIDJzIGJvdGg7CiAgICAtby1hbmltYXRp
b246IGJvdW5jZUluVXAgMXMgMnMgYm90aDsKICAgIGFuaW1hdGlvbjogYm91bmNlSW5VcCAxcyAy
cyBib3RoOwp9CgoubGRuLW1hY2Jvb2sgewogICAgd2lkdGg6IDc1MHB4OwogICAgaGVpZ2h0OiAz
MzZweDsKICAgIGJvdHRvbTogLTE4OHB4OwogICAgbWFyZ2luLWxlZnQ6IC0zNzVweDsKICAgIGJh
Y2tncm91bmQtaW1hZ2U6IHVybCgiLy90dWVudGlzdGF0aWMyLWEuYWthbWFpaGQubmV0L2xheW91
dC9jdXBjYWtlL2ltZy9sYW5kaW5nL2xhbmRpbmctZGVza3RvcC5zd19ZSmJqamdnLnBuZyIpOwp9
CgpALXdlYmtpdC1rZXlmcmFtZXMgYm91bmNlSW5VcCB7CiAgICAwJSB7CiMgICAgICAgIG9wYWNp
dHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjAwMHB4KTsKICAg
IH0KCiAgICA2MCUgewojICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNm
b3JtOiB0cmFuc2xhdGVZKC0zMHB4KTsKICAgIH0KCiAgICA4MCUgewogICAgICAgIC13ZWJraXQt
dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpOwogICAgfQoKICAgIDEwMCUgewogICAgICAgIC13
ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgfQp9CgpALW1vei1rZXlmcmFtZXMg
Ym91bmNlSW5VcCB7CiAgICAwJSB7CiMgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLW1vei10
cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjAwMHB4KTsKICAgIH0KCiAgICA2MCUgewojICAgICAgICBv
cGFjaXR5OiAxOwogICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zMHB4KTsKICAg
IH0KCiAgICA4MCUgewogICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpOwog
ICAgfQoKICAgIDEwMCUgewogICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwog
ICAgfQp9CgpALW8ta2V5ZnJhbWVzIGJvdW5jZUluVXAgewogICAgMCUgewojICAgICAgICBvcGFj
aXR5OiAwOwogICAgICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMDAwcHgpOwogICAgfQoK
ICAgIDYwJSB7CiMgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLW8tdHJhbnNmb3JtOiB0cmFu
c2xhdGVZKC0zMHB4KTsKICAgIH0KCiAgICA4MCUgewogICAgICAgIC1vLXRyYW5zZm9ybTogdHJh
bnNsYXRlWSgxMHB4KTsKICAgIH0KCiAgICAxMDAlIHsKICAgICAgICAtby10cmFuc2Zvcm06IHRy
YW5zbGF0ZVkoMCk7CiAgICB9Cn0KCkBrZXlmcmFtZXMgYm91bmNlSW5VcCB7CiAgICAwJSB7CiMg
ICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwMDBweCk7
CiAgICB9CgogICAgNjAlIHsKIyAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB0cmFuc2Zvcm06
IHRyYW5zbGF0ZVkoLTMwcHgpOwogICAgfQoKICAgIDgwJSB7CiAgICAgICAgdHJhbnNmb3JtOiB0
cmFuc2xhdGVZKDEwcHgpOwogICAgfQoKICAgIDEwMCUgewogICAgICAgIHRyYW5zZm9ybTogdHJh
bnNsYXRlWSgwKTsKICAgIH0KfQoKPC9zdHlsZT4KCgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IGNsYXNz
PSJsZG4tZGV2aWNlcyBsZG4tbWFjYm9vayI+VHVlbnRpLmNvbTwvZGl2Pgo8L2JvZHk+CjwvaHRt
bD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178531</attachid>
            <date>2012-12-10 06:18:07 -0800</date>
            <delta_ts>2012-12-10 06:29:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104538-20121210151500.patch</filename>
            <type>text/plain</type>
            <size>10223</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU4NGRkMTIwNzk0ZDU4
MjY2Yjk3YTZlZDNiOGFmYWQyM2I5NzAwYS4uYjFlMjM2MjRjZDE5ODE2ZDI3NWY3ZGRhOWQyNTcx
MjNlYmJmMDJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTEyLTEwICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtR
dC1EaXJlY3RmYl0gQW5pbWF0aW9uIGNhdXNlcyBhIGNyYXNoIHdpdGggd3d3LnR1ZW50aS5jb20K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDUzOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBhbGxv
Y2F0ZWQgdGV4dHVyZSBoYWQgbm8gdXBwZXIgbGltaXQgZGVmaW5lZCBmb3IgdGhlIG5vbi1HTCBi
YWNrZW5kLCB3aGljaCBjb3VsZCBjYXVzZSBpdAorICAgICAgICB0byBhbGxvY2F0ZSBwaXhtYXAg
bGFyZ2VyIHRoYW4gd2hhdCB0aGUgdW5kZXJseWluZyBncmFwaGljcyBzeXN0ZW1zIGNvdWxkIGhh
bmRsZS4KKworICAgICAgICBPbiB0b3Agb2YgdGhhdCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cjo6cHJlcGFyZUJhY2tpbmdTdG9yZSgpIHdvdWxkIGFsbG9jYXRlIGFuIGludGVybWVkaWF0ZQor
ICAgICAgICBwaXhtYXAgdGhlIHNpemUgb2YgdGhlIGRpcnR5IHJlY3QsIHdoaWNoIHdpbGwgYXQg
bGVhc3Qgb25lIGZpcnN0IHBhaW50IGJlIHRoZSBzaXplIG9mIHRoZSBlbnRpcmUKKyAgICAgICAg
bGF5ZXIsIGFnYWluIGNhdXNpbmcgYWxsb2NhdGlvbiBvZiBwaXhtYXBzIHdpdGggZGltZW5zaW9u
cyBvdXRzaWRlIG9mIGJvdW5kcy4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBs
aW1pdCB0byB0aGUgc2l6ZSBvZiBwaXhtYXAgdGlsZXMsIGFuZCBjaGFuZ2VzIHRoZSBwYWl0aW5n
IG9mIHRoZSB0aWxlcworICAgICAgICBzbyB0aGF0IHRoZSBHcmFwaGljc0xheWVyIHBhaW50cyBk
aXJlY3RseSB0byB0aGUgdGlsZSBpbnN0ZWFkIG9mIG92ZXIgYW4gaW50ZXJtZWRpYXRlIHBpeG1h
cC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVDb250ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0
ZUNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclRpbGUpOgorICAgICAg
ICAoVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6Om1heFRleHR1cmVTaXplKToKKwogMjAxMi0x
Mi0xMCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBjb25zb2xlIGJyb2tlbj8gLSBjb25zb2xlLmRpcnhtbCBiZWhhdmVzIGxp
a2UgY29uc29sZS5sb2cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3Bw
CmluZGV4IDdhNDlkNzE5YzA3MTAyZDk1MGQ1MGMyOWIyZDQ4ZjcxMTJiMTQzYzkuLmY0ZGY3NGFh
YTlhNzVlZTYyOTE5OWUyZDE0ZTQxN2E0NzMyMWIxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNDYzLDI1ICs0NjMsMTEgQEAgdm9pZCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9yZSgpCiAgICAgaWYgKCFtX2Jh
Y2tpbmdTdG9yZSkKICAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmU6OmNyZWF0ZSgpOwogCi0gICAgLy8gUGFpbnQgdGhlIGVudGlyZSBkaXJ0eSBy
ZWN0IGludG8gYW4gaW1hZ2UgYnVmZmVyLiBUaGlzIGVuc3VyZXMgd2Ugb25seSBwYWludCBvbmNl
LgotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGRpcnR5UmVjdC5zaXplKCkpOwotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGlt
YWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSh0ZXh0dXJlTWFwcGVyLT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOwotICAg
IGNvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZSh0ZXh0dXJlTWFwcGVyLT50ZXh0RHJhd2luZ01v
ZGUoKSk7Ci0gICAgY29udGV4dC0+dHJhbnNsYXRlKC1kaXJ0eVJlY3QueCgpLCAtZGlydHlSZWN0
LnkoKSk7Ci0gICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoKmNvbnRleHQsIGRpcnR5UmVj
dCk7Ci0KLSAgICBpZiAoaXNTaG93aW5nUmVwYWludENvdW50ZXIoKSkgeworICAgIGlmIChpc1No
b3dpbmdSZXBhaW50Q291bnRlcigpKQogICAgICAgICBpbmNyZW1lbnRSZXBhaW50Q291bnQoKTsK
LSAgICAgICAgZHJhd1JlcGFpbnRDb3VudGVyKGNvbnRleHQpOwotICAgIH0KIAotICAgIFJlZlB0
cjxJbWFnZT4gaW1hZ2UgPSBpbWFnZUJ1ZmZlci0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0
b3JlKTsKLSNpZiBQTEFURk9STShRVCkKLSAgICBBU1NFUlQoZHluYW1pY19jYXN0PFRleHR1cmVN
YXBwZXJUaWxlZEJhY2tpbmdTdG9yZSo+KG1fYmFja2luZ1N0b3JlLmdldCgpKSk7Ci0jZW5kaWYK
ICAgICBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IHN0YXRp
Y19jYXN0PFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSo+KG1fYmFja2luZ1N0b3JlLmdl
dCgpKTsKLSAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIGlt
YWdlLmdldCgpLCBtX3NpemUsIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9k
aWZ5T3JpZ2luYWxJbWFnZURhdGEpOworICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRlQ29udGVudHMo
dGV4dHVyZU1hcHBlciwgdGhpcywgbV9zaXplLCBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVw
ZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKIAogICAgIGJhY2tpbmdTdG9yZS0+c2V0
U2hvd0RlYnVnQm9yZGVycyhpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpKTsKICAgICBiYWNraW5nU3Rv
cmUtPnNldERlYnVnQm9yZGVyKG1fZGVidWdCb3JkZXJDb2xvciwgbV9kZWJ1Z0JvcmRlcldpZHRo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlci5oCmluZGV4IDE0NDIwOTM0OTYxMDM2NmY2ODkwOTc2ZTYyMGVkMjA0OTJi
YjllZTIuLmU4NTRmZDY2Y2FjMjhjZTU2ZGM2YjMxYzg4OTcxMTBhMzNjMGFkZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXIuaApAQCAtMTUxLDcgKzE1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVn
aW5QYWludGluZyhQYWludEZsYWdzID0gMCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFBhaW50
aW5nKCkgeyB9CiAKLSAgICB2aXJ0dWFsIEludFNpemUgbWF4VGV4dHVyZVNpemUoKSBjb25zdCB7
IHJldHVybiBJbnRTaXplKElOVF9NQVgsIElOVF9NQVgpOyB9CisgICAgdmlydHVhbCBJbnRTaXpl
IG1heFRleHR1cmVTaXplKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJp
dG1hcFRleHR1cmU+IGFjcXVpcmVUZXh0dXJlRnJvbVBvb2woY29uc3QgSW50U2l6ZSYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGNlZDgzNjExMmIw
ZjcxNDUxYzVmNDk4OWVhYmMzZTkwMGM0ZWFkOC4uOWJlMzViMDk1OWQ4MDgwYWFhNWMyN2JlMWE2
MTJjMGZlZGM0NDhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNw
cApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUu
aCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlci5oIgogCkBAIC04MCw2ICs4MSwzNSBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxl
Ojp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBJbWFnZSogaW1h
ZwogICAgIG1fdGV4dHVyZS0+dXBkYXRlQ29udGVudHMoaW1hZ2UsIHRhcmdldFJlY3QsIHNvdXJj
ZU9mZnNldCwgdXBkYXRlQ29udGVudHNGbGFnKTsKIH0KIAordm9pZCBUZXh0dXJlTWFwcGVyVGls
ZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NM
YXllciogc291cmNlTGF5ZXIsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVy
ZTo6VXBkYXRlQ29udGVudHNGbGFnIHVwZGF0ZUNvbnRlbnRzRmxhZykKK3sKKyAgICBJbnRSZWN0
IHRhcmdldFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KG1fcmVjdCk7CisgICAgdGFyZ2V0UmVjdC5p
bnRlcnNlY3QoZGlydHlSZWN0KTsKKyAgICBpZiAodGFyZ2V0UmVjdC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKHRhcmdldFJlY3Quc2l6ZSgpKTsKKyAgICBHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIGNvbnRleHQtPnNldEltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkodGV4dHVyZU1hcHBlci0+aW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSgpKTsKKyAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUodGV4dHVyZU1hcHBlci0+
dGV4dERyYXdpbmdNb2RlKCkpOworCisgICAgY29udGV4dC0+dHJhbnNsYXRlKC10YXJnZXRSZWN0
LngoKSwgLXRhcmdldFJlY3QueSgpKTsKKyAgICBzb3VyY2VMYXllci0+cGFpbnRHcmFwaGljc0xh
eWVyQ29udGVudHMoKmNvbnRleHQsIHRhcmdldFJlY3QpOworICAgIGlmIChzb3VyY2VMYXllci0+
aXNTaG93aW5nUmVwYWludENvdW50ZXIoKSAmJiAhbV9yZWN0LngoKSAmJiAhbV9yZWN0LnkoKSkK
KyAgICAgICAgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqPihzb3VyY2VM
YXllciktPmRyYXdSZXBhaW50Q291bnRlcihjb250ZXh0KTsKKworICAgIFJlZlB0cjxJbWFnZT4g
aW1hZ2UgPSBpbWFnZUJ1ZmZlci0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKwor
ICAgIC8vIE5vcm1hbGl6ZSB0YXJnZXRSZWN0IHRvIHRoZSB0ZXh0dXJlJ3MgY29vcmRpbmF0ZXMu
CisgICAgdGFyZ2V0UmVjdC5tb3ZlKC1tX3JlY3QueCgpLCAtbV9yZWN0LnkoKSk7CisKKyAgICBp
ZiAoIW1fdGV4dHVyZSkgeworICAgICAgICBtX3RleHR1cmUgPSB0ZXh0dXJlTWFwcGVyLT5jcmVh
dGVUZXh0dXJlKCk7CisgICAgICAgIG1fdGV4dHVyZS0+cmVzZXQodGFyZ2V0UmVjdC5zaXplKCks
IGltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpID8gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNB
bHBoYSA6IDApOworICAgIH0KKyAgICBtX3RleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGltYWdlLmdl
dCgpLCB0YXJnZXRSZWN0LCBJbnRQb2ludCgpLCB1cGRhdGVDb250ZW50c0ZsYWcpOworfQorCiB2
b2lkIFRleHR1cmVNYXBwZXJUaWxlOjpwYWludChUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVy
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBC
aXRtYXBUZXh0dXJlKiBtYXNrLCBjb25zdCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpCiB7CiAgICAg
aWYgKHRleHR1cmUoKS5nZXQoKSkKQEAgLTE5Nyw2ICsyMjcsMTMgQEAgdm9pZCBUZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1
cmVNYXBwZXIKICAgICAgICAgbV90aWxlc1tpXS51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVy
LCBpbWFnZSwgZGlydHlSZWN0LCB1cGRhdGVDb250ZW50c0ZsYWcpOwogfQogCit2b2lkIFRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciog
dGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciogc291cmNlTGF5ZXIsIGNvbnN0IEZsb2F0U2l6
ZSYgdG90YWxTaXplLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVw
ZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCit7CisgICAgY3JlYXRlT3JEZXN0
cm95VGlsZXNJZk5lZWRlZCh0b3RhbFNpemUsIHRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXpl
KCksIHRydWUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsr
aSkKKyAgICAgICAgbV90aWxlc1tpXS51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBzb3Vy
Y2VMYXllciwgZGlydHlSZWN0LCB1cGRhdGVDb250ZW50c0ZsYWcpOworfQorCiBQYXNzUmVmUHRy
PEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dGV4dHVyZSgp
IGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaAppbmRleCBhNzA0ZmZkMjNl
NzNiYTUzMmU5MWY1ZWZjYjRmMDJlYTE3YWQ5YWEwLi4wZGQyZGY0YjE5OGJkMzExZmQ0MWM1NWEz
Mzc3MjE4NGNkMTRiMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgK
QEAgLTczLDYgKzczLDcgQEAgcHVibGljOgogICAgIGlubGluZSB2b2lkIHNldFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KSB7IG1fcmVjdCA9IHJlY3Q7IH0KIAogICAgIHZvaWQgdXBkYXRlQ29u
dGVudHMoVGV4dHVyZU1hcHBlciosIEltYWdlKiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1
cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyBVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7
CisgICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgR3JhcGhpY3NMYXllcios
IGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgVXBkYXRl
Q2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChUZXh0
dXJlTWFwcGVyKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4
dHVyZSosIGNvbnN0IHVuc2lnbmVkIGV4cG9zZWRFZGdlcyk7CiAgICAgdmlydHVhbCB+VGV4dHVy
ZU1hcHBlclRpbGUoKSB7IH0KIApAQCAtOTQsNiArOTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIEJpdG1hcFRl
eHR1cmUqKSBPVkVSUklERTsKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIq
LCBJbWFnZSosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJl
OjpVcGRhdGVDb250ZW50c0ZsYWcpOworICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1h
cHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbnRSZWN0Jiwg
Qml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKIAogICAgIHZvaWQgc2V0Q29udGVu
dHNUb0ltYWdlKEltYWdlKiBpbWFnZSkgeyBtX2ltYWdlID0gaW1hZ2U7IH0KICAgICB2b2lkIHNl
dFNob3dEZWJ1Z0JvcmRlcnMoYm9vbCBkcmF3c0RlYnVnQm9yZGVycykgeyBtX2RyYXdzRGVidWdC
b3JkZXJzID0gZHJhd3NEZWJ1Z0JvcmRlcnM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VC
dWZmZXIuaAppbmRleCA5MWZmOWIwMDU4YTBjZGYzNTM0NzA3NWM1YjJkNGM3Y2ZmYzE1MDU1Li4x
ZTY4OTQyYTMwZGFmZWUyMjBhOTM5ZDllYjFiZDZhMWE5YWM4ZWJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxv
YXRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRTdXJmYWNlKEJpdG1hcFRl
eHR1cmUqIHN1cmZhY2UpIE9WRVJSSURFIHsgbV9jdXJyZW50U3VyZmFjZSA9IHN1cmZhY2U7fQog
ICAgIHZpcnR1YWwgdm9pZCBlbmRDbGlwKCkgT1ZFUlJJREUgeyBncmFwaGljc0NvbnRleHQoKS0+
cmVzdG9yZSgpOyB9CisgICAgdmlydHVhbCBJbnRTaXplIG1heFRleHR1cmVTaXplKCkgY29uc3Qg
eyByZXR1cm4gSW50U2l6ZSgyMDQ4LCAyMDQ4KTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxC
aXRtYXBUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKCkgT1ZFUlJJREUgeyByZXR1cm4gQml0bWFwVGV4
dHVyZUltYWdlQnVmZmVyOjpjcmVhdGUoKTsgfQogCiAgICAgaW5saW5lIEdyYXBoaWNzQ29udGV4
dCogY3VycmVudENvbnRleHQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178533</attachid>
            <date>2012-12-10 06:29:13 -0800</date>
            <delta_ts>2012-12-10 09:55:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104538-20121210152605.patch</filename>
            <type>text/plain</type>
            <size>11231</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU4NGRkMTIwNzk0ZDU4
MjY2Yjk3YTZlZDNiOGFmYWQyM2I5NzAwYS4uZjhmMWVkNWIxMTIzY2U4ZDRkMjAwYjNiODdhNzJk
MmE0MGJjOWZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTEyLTEwICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtR
dC1EaXJlY3RmYl0gQW5pbWF0aW9uIGNhdXNlcyBhIGNyYXNoIHdpdGggd3d3LnR1ZW50aS5jb20K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDUzOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBiYWNr
aW5nIHRpbGVzIGhhZCBubyB1cHBlciBsaW1pdCBkZWZpbmVkIGZvciB0aGUgbm9uLUdMIGJhY2tl
bmQsIHdoaWNoIGNvdWxkIGNhdXNlIHRoZW0KKyAgICAgICAgdG8gYWxsb2NhdGUgcGl4bWFwcyBs
YXJnZXIgdGhhbiB3aGF0IHRoZSB1bmRlcmx5aW5nIGdyYXBoaWNzIHN5c3RlbXMgY2FuIGhhbmRs
ZS4KKworICAgICAgICBPbiB0b3Agb2YgdGhhdCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
cHJlcGFyZUJhY2tpbmdTdG9yZSgpIHdvdWxkIGFsbG9jYXRlIGFuIGludGVybWVkaWF0ZQorICAg
ICAgICBwaXhtYXAgdGhlIHNpemUgb2YgdGhlIGRpcnR5IHJlY3QsIHdoaWNoIHdvdWxkIGF0IGxl
YXN0IG9uIHRoZSBmaXJzdCBwYWludCBiZSB0aGUgc2l6ZSBvZiB0aGUKKyAgICAgICAgZW50aXJl
IGxheWVyLCBhZ2FpbiBjYXVzaW5nIGFsbG9jYXRpb24gb2YgcGl4bWFwcyB3aXRoIGRpbWVuc2lv
bnMgb3V0c2lkZSBvZiBwbGF0Zm9ybSBib3VuZHMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRy
b2R1Y2VzIGEgbGltaXQgdG8gdGhlIHNpemUgb2YgcGl4bWFwIHRpbGVzLCBhbmQgY2hhbmdlcyB0
aGUgcGFpbnRpbmcgb2YgdGhlIHRpbGVzCisgICAgICAgIHNvIHRoYXQgdGhlIEdyYXBoaWNzTGF5
ZXIgcGFpbnRzIGRpcmVjdGx5IHRvIHRoZSB0aWxlIGluc3RlYWQgb2Ygb3ZlciBhbiBpbnRlcm1l
ZGlhdGUgcGl4bWFwLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAoVGV4dHVyZU1hcHBl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNr
aW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0
ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChUZXh0dXJlTWFwcGVyVGls
ZSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6bWF4VGV4dHVyZVNpemUp
OgorCiAyMDEyLTEyLTEwICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvbnNvbGUgYnJva2VuPyAtIGNvbnNvbGUuZGlyeG1s
IGJlaGF2ZXMgbGlrZSBjb25zb2xlLmxvZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5jcHAKaW5kZXggN2E0OWQ3MTljMDcxMDJkOTUwZDUwYzI5YjJkNDhmNzExMmIxNDNj
OS4uZjRkZjc0YWFhOWE3NWVlNjI5MTk5ZTJkMTRlNDE3YTQ3MzIxYjE5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC00NjMsMjUgKzQ2MywxMSBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKCkKICAg
ICBpZiAoIW1fYmFja2luZ1N0b3JlKQogICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IFRleHR1cmVN
YXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCk7CiAKLSAgICAvLyBQYWludCB0aGUgZW50
aXJlIGRpcnR5IHJlY3QgaW50byBhbiBpbWFnZSBidWZmZXIuIFRoaXMgZW5zdXJlcyB3ZSBvbmx5
IHBhaW50IG9uY2UuCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoZGlydHlSZWN0LnNpemUoKSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICBjb250ZXh0LT5zZXRJbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KHRleHR1cmVNYXBwZXItPmltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoKSk7Ci0gICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKHRleHR1cmVNYXBwZXItPnRl
eHREcmF3aW5nTW9kZSgpKTsKLSAgICBjb250ZXh0LT50cmFuc2xhdGUoLWRpcnR5UmVjdC54KCks
IC1kaXJ0eVJlY3QueSgpKTsKLSAgICBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cygqY29udGV4
dCwgZGlydHlSZWN0KTsKLQotICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpKSB7Cisg
ICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpCiAgICAgICAgIGluY3JlbWVudFJlcGFp
bnRDb3VudCgpOwotICAgICAgICBkcmF3UmVwYWludENvdW50ZXIoY29udGV4dCk7Ci0gICAgfQog
Ci0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoRG9udENv
cHlCYWNraW5nU3RvcmUpOwotI2lmIFBMQVRGT1JNKFFUKQotICAgIEFTU0VSVChkeW5hbWljX2Nh
c3Q8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKj4obV9iYWNraW5nU3RvcmUuZ2V0KCkp
KTsKLSNlbmRpZgogICAgIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSogYmFja2luZ1N0
b3JlID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKj4obV9iYWNr
aW5nU3RvcmUuZ2V0KCkpOwotICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRlQ29udGVudHModGV4dHVy
ZU1hcHBlciwgaW1hZ2UuZ2V0KCksIG1fc2l6ZSwgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpV
cGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7CisgICAgYmFja2luZ1N0b3JlLT51cGRh
dGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCB0aGlzLCBtX3NpemUsIGRpcnR5UmVjdCwgQml0bWFw
VGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwogCiAgICAgYmFja2lu
Z1N0b3JlLT5zZXRTaG93RGVidWdCb3JkZXJzKGlzU2hvd2luZ0RlYnVnQm9yZGVyKCkpOwogICAg
IGJhY2tpbmdTdG9yZS0+c2V0RGVidWdCb3JkZXIobV9kZWJ1Z0JvcmRlckNvbG9yLCBtX2RlYnVn
Qm9yZGVyV2lkdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRl
eCA0MzJkNmM2YjYwMWM0NWQzZWNmNDMxZTBmZWQ3NDY4ZDEyM2JiNjc5Li5hZDM0ODNiMTRhYjFi
NjYwMzgwMmNkNjhmMjRkYmRkYzBjYWEyMjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuaApAQCAtOTcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGaXhl
ZFRvVmlld3BvcnQoYm9vbCBmaXhlZCkgeyBtX2ZpeGVkVG9WaWV3cG9ydCA9IGZpeGVkOyB9CiAg
ICAgYm9vbCBmaXhlZFRvVmlld3BvcnQoKSBjb25zdCB7IHJldHVybiBtX2ZpeGVkVG9WaWV3cG9y
dDsgfQogCisgICAgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoR3JhcGhpY3NDb250ZXh0Kik7CiBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKICAgICB2b2lkIGRp
ZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOwpAQCAtMTA0LDcgKzEwNSw2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICB2b2lkIHByZXBhcmVCYWNraW5nU3Rv
cmUoKTsKICAgICBib29sIHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSBjb25zdDsKLSAgICB2b2lk
IGRyYXdSZXBhaW50Q291bnRlcihHcmFwaGljc0NvbnRleHQqKTsKICAgICB2b2lkIGFuaW1hdGlv
blN0YXJ0ZWRUaW1lckZpcmVkKFRpbWVyPEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyPiopOwog
CiAgICAgT3duUHRyPFRleHR1cmVNYXBwZXJMYXllcj4gbV9sYXllcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCmlu
ZGV4IDE0NDIwOTM0OTYxMDM2NmY2ODkwOTc2ZTYyMGVkMjA0OTJiYjllZTIuLmU4NTRmZDY2Y2Fj
MjhjZTU2ZGM2YjMxYzg4OTcxMTBhMzNjMGFkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaApAQCAtMTUxLDcg
KzE1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5QYWludGluZyhQYWludEZs
YWdzID0gMCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFBhaW50aW5nKCkgeyB9CiAKLSAgICB2
aXJ0dWFsIEludFNpemUgbWF4VGV4dHVyZVNpemUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKElO
VF9NQVgsIElOVF9NQVgpOyB9CisgICAgdmlydHVhbCBJbnRTaXplIG1heFRleHR1cmVTaXplKCkg
Y29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFjcXVp
cmVUZXh0dXJlRnJvbVBvb2woY29uc3QgSW50U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGNlZDgzNjExMmIwZjcxNDUxYzVmNDk4OWVhYmMz
ZTkwMGM0ZWFkOC4uOWJlMzViMDk1OWQ4MDgwYWFhNWMyN2JlMWE2MTJjMGZlZGM0NDhkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcApAQCAtMjMsNiArMjMsNyBA
QAogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCIKIAogI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIgog
I2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgogCkBA
IC04MCw2ICs4MSwzNSBAQCB2b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVDb250ZW50cyhU
ZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBJbWFnZSogaW1hZwogICAgIG1fdGV4dHVyZS0+
dXBkYXRlQ29udGVudHMoaW1hZ2UsIHRhcmdldFJlY3QsIHNvdXJjZU9mZnNldCwgdXBkYXRlQ29u
dGVudHNGbGFnKTsKIH0KIAordm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciogc291cmNlTGF5ZXIs
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNG
bGFnIHVwZGF0ZUNvbnRlbnRzRmxhZykKK3sKKyAgICBJbnRSZWN0IHRhcmdldFJlY3QgPSBlbmNs
b3NpbmdJbnRSZWN0KG1fcmVjdCk7CisgICAgdGFyZ2V0UmVjdC5pbnRlcnNlY3QoZGlydHlSZWN0
KTsKKyAgICBpZiAodGFyZ2V0UmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IE93blB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRh
cmdldFJlY3Quc2l6ZSgpKTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBpbWFnZUJ1
ZmZlci0+Y29udGV4dCgpOworICAgIGNvbnRleHQtPnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkodGV4dHVyZU1hcHBlci0+aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBjb250
ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUodGV4dHVyZU1hcHBlci0+dGV4dERyYXdpbmdNb2RlKCkp
OworCisgICAgY29udGV4dC0+dHJhbnNsYXRlKC10YXJnZXRSZWN0LngoKSwgLXRhcmdldFJlY3Qu
eSgpKTsKKyAgICBzb3VyY2VMYXllci0+cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoKmNvbnRl
eHQsIHRhcmdldFJlY3QpOworICAgIGlmIChzb3VyY2VMYXllci0+aXNTaG93aW5nUmVwYWludENv
dW50ZXIoKSAmJiAhbV9yZWN0LngoKSAmJiAhbV9yZWN0LnkoKSkKKyAgICAgICAgc3RhdGljX2Nh
c3Q8R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqPihzb3VyY2VMYXllciktPmRyYXdSZXBhaW50
Q291bnRlcihjb250ZXh0KTsKKworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbWFnZUJ1ZmZl
ci0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKworICAgIC8vIE5vcm1hbGl6ZSB0
YXJnZXRSZWN0IHRvIHRoZSB0ZXh0dXJlJ3MgY29vcmRpbmF0ZXMuCisgICAgdGFyZ2V0UmVjdC5t
b3ZlKC1tX3JlY3QueCgpLCAtbV9yZWN0LnkoKSk7CisKKyAgICBpZiAoIW1fdGV4dHVyZSkgewor
ICAgICAgICBtX3RleHR1cmUgPSB0ZXh0dXJlTWFwcGVyLT5jcmVhdGVUZXh0dXJlKCk7CisgICAg
ICAgIG1fdGV4dHVyZS0+cmVzZXQodGFyZ2V0UmVjdC5zaXplKCksIGltYWdlLT5jdXJyZW50RnJh
bWVIYXNBbHBoYSgpID8gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IDApOworICAgIH0K
KyAgICBtX3RleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGltYWdlLmdldCgpLCB0YXJnZXRSZWN0LCBJ
bnRQb2ludCgpLCB1cGRhdGVDb250ZW50c0ZsYWcpOworfQorCiB2b2lkIFRleHR1cmVNYXBwZXJU
aWxlOjpwYWludChUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNr
LCBjb25zdCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpCiB7CiAgICAgaWYgKHRleHR1cmUoKS5nZXQo
KSkKQEAgLTE5Nyw2ICsyMjcsMTMgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3Rv
cmU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICAgICAg
bV90aWxlc1tpXS51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBpbWFnZSwgZGlydHlSZWN0
LCB1cGRhdGVDb250ZW50c0ZsYWcpOwogfQogCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgR3Jh
cGhpY3NMYXllciogc291cmNlTGF5ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgdG90YWxTaXplLCBjb25z
dCBJbnRSZWN0JiBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyB1
cGRhdGVDb250ZW50c0ZsYWcpCit7CisgICAgY3JlYXRlT3JEZXN0cm95VGlsZXNJZk5lZWRlZCh0
b3RhbFNpemUsIHRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCksIHRydWUpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkKKyAgICAgICAgbV90aWxl
c1tpXS51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBzb3VyY2VMYXllciwgZGlydHlSZWN0
LCB1cGRhdGVDb250ZW50c0ZsYWcpOworfQorCiBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRl
eHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CiB7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tp
bmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJCYWNraW5nU3RvcmUuaAppbmRleCBhNzA0ZmZkMjNlNzNiYTUzMmU5MWY1ZWZjYjRm
MDJlYTE3YWQ5YWEwLi4wZGQyZGY0YjE5OGJkMzExZmQ0MWM1NWEzMzc3MjE4NGNkMTRiMzRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKQEAgLTczLDYgKzczLDcgQEAg
cHVibGljOgogICAgIGlubGluZSB2b2lkIHNldFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KSB7
IG1fcmVjdCA9IHJlY3Q7IH0KIAogICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBl
ciosIEltYWdlKiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRz
RmxhZyBVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7CisgICAgdm9pZCB1cGRhdGVD
b250ZW50cyhUZXh0dXJlTWFwcGVyKiwgR3JhcGhpY3NMYXllciosIGNvbnN0IEludFJlY3QmLCBC
aXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgVXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJ
bWFnZURhdGEpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChUZXh0dXJlTWFwcGVyKiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSosIGNvbnN0IHVuc2ln
bmVkIGV4cG9zZWRFZGdlcyk7CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclRpbGUoKSB7IH0K
IApAQCAtOTQsNiArOTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1h
cFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqKSBPVkVSUklERTsK
ICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJbWFnZSosIGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0Zs
YWcpOworICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5
ZXIqLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBk
YXRlQ29udGVudHNGbGFnKTsKIAogICAgIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBp
bWFnZSkgeyBtX2ltYWdlID0gaW1hZ2U7IH0KICAgICB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcnMo
Ym9vbCBkcmF3c0RlYnVnQm9yZGVycykgeyBtX2RyYXdzRGVidWdCb3JkZXJzID0gZHJhd3NEZWJ1
Z0JvcmRlcnM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaAppbmRleCA5MWZm
OWIwMDU4YTBjZGYzNTM0NzA3NWM1YjJkNGM3Y2ZmYzE1MDU1Li4xZTY4OTQyYTMwZGFmZWUyMjBh
OTM5ZDllYjFiZDZhMWE5YWM4ZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZl
ci5oCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5DbGlw
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGJpbmRTdXJmYWNlKEJpdG1hcFRleHR1cmUqIHN1cmZhY2UpIE9W
RVJSSURFIHsgbV9jdXJyZW50U3VyZmFjZSA9IHN1cmZhY2U7fQogICAgIHZpcnR1YWwgdm9pZCBl
bmRDbGlwKCkgT1ZFUlJJREUgeyBncmFwaGljc0NvbnRleHQoKS0+cmVzdG9yZSgpOyB9CisgICAg
dmlydHVhbCBJbnRTaXplIG1heFRleHR1cmVTaXplKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgy
MDQ4LCAyMDQ4KTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBjcmVh
dGVUZXh0dXJlKCkgT1ZFUlJJREUgeyByZXR1cm4gQml0bWFwVGV4dHVyZUltYWdlQnVmZmVyOjpj
cmVhdGUoKTsgfQogCiAgICAgaW5saW5lIEdyYXBoaWNzQ29udGV4dCogY3VycmVudENvbnRleHQo
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178576</attachid>
            <date>2012-12-10 09:55:58 -0800</date>
            <delta_ts>2012-12-11 03:03:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104538-20121210185250.patch</filename>
            <type>text/plain</type>
            <size>17629</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA4NzdiNTQxZjcwYzMw
NzUyNzU4Y2U1ZWY3OTg5ODA2ZTA1OGQ3My4uZTE3MWI1ZjQ3ZjBiNDZkYWRiM2I0OWU3ZGMzODNl
NmMzZWE2ZDg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTEyLTEwICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtR
dF0gQW5pbWF0aW9uIGZhaWxzIG9uIGxhcmdlIGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGJhY2tpbmcgdGlsZXMgaGFkIG5vIHVwcGVy
IGxpbWl0IGRlZmluZWQgZm9yIHRoZSBub24tR0wgYmFja2VuZCwgd2hpY2ggY291bGQgY2F1c2Ug
dGhlbQorICAgICAgICB0byBhbGxvY2F0ZSBwaXhtYXBzIHdpZGllciBvciBoaWdoZXIgdGhhbiB3
aGF0IHRoZSB1bmRlcmx5aW5nIGdyYXBoaWNzIHN5c3RlbXMgY2FuIGhhbmRsZS4KKworICAgICAg
ICBPbiB0b3Agb2YgdGhhdCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tp
bmdTdG9yZSgpIHdvdWxkIGFsbG9jYXRlIGFuIGludGVybWVkaWF0ZQorICAgICAgICBwaXhtYXAg
dGhlIHNpemUgb2YgdGhlIGRpcnR5IHJlY3QsIHdoaWNoIHdvdWxkIGF0IGxlYXN0IG9uIHRoZSBm
aXJzdCBwYWludCBiZSB0aGUgc2l6ZSBvZiB0aGUKKyAgICAgICAgZW50aXJlIGxheWVyLCBhZ2Fp
biBjYXVzaW5nIGFsbG9jYXRpb24gb2YgcGl4bWFwcyB3aXRoIGRpbWVuc2lvbnMgb3V0c2lkZSBv
ZiBwbGF0Zm9ybSBib3VuZHMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbGlt
aXQgdG8gdGhlIHNpemUgb2YgaW1hZ2UgYnVmZmVyIHRpbGVzLCBhbmQgYWRkcyBhbiBhbHRlcm5h
dGl2ZSBwYXRoCisgICAgICAgIGZvciBwYWludGluZyB3aGVyZSB0aGUgR3JhcGhpY3NMYXllciBw
YWludHMgZGlyZWN0bHkgdG8gdGhlIHRpbGUgaW5zdGVhZCBvZiBvdmVyIGFuIGludGVybWVkaWF0
ZQorICAgICAgICBwaXhtYXAuIFRoaXMgYWx0ZXJuYXRpdmUgcGF0aCBjYW4gYWxzbyBiZSB1c2Vm
dWwgbGF0ZXIgdG8gbWluaW1pemUgdGhlIGFtb3VudCBvZiBwaXhlbCBjb3B5aW5nCisgICAgICAg
IGhhcHBlbmluZyBpbiBmdWxsIHJlcGFpbnRzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpnZXREZWJ1Z0JvcmRl
ckluZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5oOgorICAgICAgICAoR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAoQml0
bWFwVGV4dHVyZSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVDb250ZW50cyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmUuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJUaWxlKToKKyAgICAgICAgKFRleHR1cmVN
YXBwZXJUaWxlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBUZXh0dXJlSW1hZ2VCdWZmZXI6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmg6CisgICAgICAgIChC
aXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckltYWdlQnVmZmVyOjptYXhUZXh0dXJlU2l6ZSk6CisKIDIwMTItMTItMTAgIFBhdmVsIEZlbGRt
YW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVt
b3ZlIHRoZSBPdmVycmlkZXMgLyBTZXR0aW5ncyBjb250ZXh0IG1lbnUgZnJvbSBnZWFyIGljb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDdhNDlkNzE5
YzA3MTAyZDk1MGQ1MGMyOWIyZDQ4ZjcxMTJiMTQzYzkuLjNiMmQzZDYwYTExNDBkMTFkOTExNzdi
OTViNDk4MWY0ZGYzNzdlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmNwcApAQCAtNDYzLDI1ICs0NjMsMzQgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6cHJlcGFyZUJhY2tpbmdTdG9yZSgpCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKICAg
ICAgICAgbV9iYWNraW5nU3RvcmUgPSBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNy
ZWF0ZSgpOwogCi0gICAgLy8gUGFpbnQgdGhlIGVudGlyZSBkaXJ0eSByZWN0IGludG8gYW4gaW1h
Z2UgYnVmZmVyLiBUaGlzIGVuc3VyZXMgd2Ugb25seSBwYWludCBvbmNlLgotICAgIE93blB0cjxJ
bWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGRpcnR5UmVjdC5z
aXplKCkpOwotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250
ZXh0KCk7Ci0gICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSh0ZXh0dXJl
TWFwcGVyLT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOwotICAgIGNvbnRleHQtPnNldFRl
eHREcmF3aW5nTW9kZSh0ZXh0dXJlTWFwcGVyLT50ZXh0RHJhd2luZ01vZGUoKSk7Ci0gICAgY29u
dGV4dC0+dHJhbnNsYXRlKC1kaXJ0eVJlY3QueCgpLCAtZGlydHlSZWN0LnkoKSk7Ci0gICAgcGFp
bnRHcmFwaGljc0xheWVyQ29udGVudHMoKmNvbnRleHQsIGRpcnR5UmVjdCk7Ci0KLSAgICBpZiAo
aXNTaG93aW5nUmVwYWludENvdW50ZXIoKSkgewotICAgICAgICBpbmNyZW1lbnRSZXBhaW50Q291
bnQoKTsKLSAgICAgICAgZHJhd1JlcGFpbnRDb3VudGVyKGNvbnRleHQpOwotICAgIH0KLQotICAg
IFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbWFnZUJ1ZmZlci0+Y29weUltYWdlKERvbnRDb3B5QmFj
a2luZ1N0b3JlKTsKLSNpZiBQTEFURk9STShRVCkKICAgICBBU1NFUlQoZHluYW1pY19jYXN0PFRl
eHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSo+KG1fYmFja2luZ1N0b3JlLmdldCgpKSk7Ci0j
ZW5kaWYKICAgICBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9
IHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZSo+KG1fYmFja2luZ1N0
b3JlLmdldCgpKTsKLSAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBw
ZXIsIGltYWdlLmdldCgpLCBtX3NpemUsIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRl
Q2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOworCisgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRD
b3VudGVyKCkpCisgICAgICAgIGluY3JlbWVudFJlcGFpbnRDb3VudCgpOworCisgICAgLy8gUGFp
bnQgaW50byBhbiBpbnRlcm1lZGlhdGUgYnVmZmVyIHRvIGF2b2lkIHBhaW50aW5nIGNvbnRlbnQg
bW9yZSB0aGFuIG9uY2UuCisgICAgYm9vbCBwYWludE9uY2UgPSB0cnVlOworICAgIGNvbnN0IElu
dFNpemUgbWF4VGV4dHVyZVNpemUgPSB0ZXh0dXJlTWFwcGVyLT5tYXhUZXh0dXJlU2l6ZSgpOwor
ICAgIC8vIFdlIG5lZWQgdG8gcGFpbnQgZGlyZWN0bHkgd2hlbiB0aGUgZGlydHkgcmVjdCBleGNl
ZGVzIG9uZSBvZiB0aGUgbWF4aW11bSBkaW1lbnNpb25zLgorICAgIGlmIChkaXJ0eVJlY3Qud2lk
dGgoKSA+IG1heFRleHR1cmVTaXplLndpZHRoKCkgfHwgZGlydHlSZWN0LmhlaWdodCgpID4gbWF4
VGV4dHVyZVNpemUuaGVpZ2h0KCkpCisgICAgICAgIHBhaW50T25jZSA9IGZhbHNlOworCisgICAg
aWYgKHBhaW50T25jZSkgeworICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShkaXJ0eVJlY3Quc2l6ZSgpKTsKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyAgICAgICAgY29u
dGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSh0ZXh0dXJlTWFwcGVyLT5pbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KCkpOworICAgICAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01v
ZGUodGV4dHVyZU1hcHBlci0+dGV4dERyYXdpbmdNb2RlKCkpOworICAgICAgICBjb250ZXh0LT50
cmFuc2xhdGUoLWRpcnR5UmVjdC54KCksIC1kaXJ0eVJlY3QueSgpKTsKKyAgICAgICAgcGFpbnRH
cmFwaGljc0xheWVyQ29udGVudHMoKmNvbnRleHQsIGRpcnR5UmVjdCk7CisKKyAgICAgICAgaWYg
KGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpCisgICAgICAgICAgICBkcmF3UmVwYWludENvdW50
ZXIoY29udGV4dCk7CisKKyAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGltYWdlQnVmZmVy
LT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAgICAgICBiYWNraW5nU3RvcmUt
PnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIGltYWdlLmdldCgpLCBtX3NpemUsIGRpcnR5
UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwor
ICAgIH0gZWxzZQorICAgICAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVN
YXBwZXIsIHRoaXMsIG1fc2l6ZSwgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5N
b2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7CiAKICAgICBiYWNraW5nU3RvcmUtPnNldFNob3dEZWJ1
Z0JvcmRlcnMoaXNTaG93aW5nRGVidWdCb3JkZXIoKSk7CiAgICAgYmFja2luZ1N0b3JlLT5zZXRE
ZWJ1Z0JvcmRlcihtX2RlYnVnQm9yZGVyQ29sb3IsIG1fZGVidWdCb3JkZXJXaWR0aCk7CkBAIC01
NzgsNiArNTg3LDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldERlYnVn
Qm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCiAgICAgbV9kZWJ1Z0JvcmRl
cldpZHRoID0gd2lkdGggKiAyOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpnZXREZWJ1Z0JvcmRlckluZm8oQ29sb3ImIGNvbG9yLCBmbG9hdCYgd2lkdGgpIGNvbnN0Cit7
CisgICAgY29sb3IgPSBtX2RlYnVnQm9yZGVyQ29sb3I7CisgICAgd2lkdGggPSBtX2RlYnVnQm9y
ZGVyV2lkdGg7Cit9CisKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiBib29sIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
cnMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IDQzMmQ2
YzZiNjAxYzQ1ZDNlY2Y0MzFlMGZlZDc0NjhkMTIzYmI2NzkuLjIyZDkyMGRjY2IxODllODkwNjkz
OTk4NmM2ZTQ1NGE4NGFkZjY4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oCkBAIC04Niw2ICs4Niw3IEBAIHB1YmxpYzoKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIq
IGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2
b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgd2lkdGgpOworICAgIHZpcnR1
YWwgdm9pZCBnZXREZWJ1Z0JvcmRlckluZm8oQ29sb3ImLCBmbG9hdCYgd2lkdGgpIGNvbnN0IE9W
RVJSSURFOwogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIHZpcnR1YWwgYm9vbCBzZXRG
aWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKQEAgLTk3LDYgKzk4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgZml4ZWQpIHsgbV9maXhlZFRvVmll
d3BvcnQgPSBmaXhlZDsgfQogICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0KCkgY29uc3QgeyByZXR1
cm4gbV9maXhlZFRvVmlld3BvcnQ7IH0KIAorICAgIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKEdy
YXBoaWNzQ29udGV4dCopOwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJv
eWVkKCk7CiAgICAgdm9pZCBkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKTsKQEAgLTEwNCw3ICsx
MDYsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgdm9p
ZCBwcmVwYXJlQmFja2luZ1N0b3JlKCk7CiAgICAgYm9vbCBzaG91bGRIYXZlQmFja2luZ1N0b3Jl
KCkgY29uc3Q7Ci0gICAgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoR3JhcGhpY3NDb250ZXh0Kik7
CiAgICAgdm9pZCBhbmltYXRpb25TdGFydGVkVGltZXJGaXJlZChUaW1lcjxHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcj4qKTsKIAogICAgIE93blB0cjxUZXh0dXJlTWFwcGVyTGF5ZXI+IG1fbGF5
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggN2E5ODBhOWM1Y2Y2YmJjZTI2ZjJjNDY0MzUzZDhi
M2M2Nzk2OGQ2OC4uNDNmZWM1NDNjYzk0YWYzNTI2NDVhNWJiYTU4NzkzYTcxNDk2MWJlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyLmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKIAorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIK
ICNpbmNsdWRlICJUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMTQ0LDUgKzE0NSwyMyBAQCBUZXh0
dXJlTWFwcGVyOjpUZXh0dXJlTWFwcGVyKEFjY2VsZXJhdGlvbk1vZGUgYWNjZWxlcmF0aW9uTW9k
ZSkKIFRleHR1cmVNYXBwZXI6On5UZXh0dXJlTWFwcGVyKCkKIHsgfQogCit2b2lkIEJpdG1hcFRl
eHR1cmU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBo
aWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJ
bnRQb2ludCYgb2Zmc2V0LCBVcGRhdGVDb250ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFnKQor
eworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHRhcmdldFJlY3Quc2l6ZSgpKTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBp
bWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIGNvbnRleHQtPnNldEltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkodGV4dHVyZU1hcHBlci0+aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAg
ICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUodGV4dHVyZU1hcHBlci0+dGV4dERyYXdpbmdN
b2RlKCkpOworCisgICAgSW50UmVjdCBzb3VyY2VSZWN0KHRhcmdldFJlY3QpOworICAgIHNvdXJj
ZVJlY3Quc2V0TG9jYXRpb24ob2Zmc2V0KTsKKyAgICBjb250ZXh0LT50cmFuc2xhdGUoLW9mZnNl
dC54KCksIC1vZmZzZXQueSgpKTsKKyAgICBzb3VyY2VMYXllci0+cGFpbnRHcmFwaGljc0xheWVy
Q29udGVudHMoKmNvbnRleHQsIHNvdXJjZVJlY3QpOworCisgICAgUmVmUHRyPEltYWdlPiBpbWFn
ZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworCisgICAg
dXBkYXRlQ29udGVudHMoaW1hZ2UuZ2V0KCksIHRhcmdldFJlY3QsIEludFBvaW50KCksIHVwZGF0
ZUNvbnRlbnRzRmxhZyk7CiB9CisKK30gLy8gbmFtZXNwYWNlCisKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
LmgKaW5kZXggMTQ0MjA5MzQ5NjEwMzY2ZjY4OTA5NzZlNjIwZWQyMDQ5MmJiOWVlMi4uMjJlZmQ1
ZmY3NTFmNzA5ZmY1MDkyZjZkN2NhOGNmZDBjODM4NzEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBAIC00
OSwxMCArNDksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCaXRtYXBUZXh0dXJl
UG9vbDsKIGNsYXNzIEN1c3RvbUZpbHRlclByb2dyYW07CitjbGFzcyBHcmFwaGljc0xheWVyOwog
Y2xhc3MgVGV4dHVyZU1hcHBlcjsKIAogLy8gQSAyRCB0ZXh0dXJlIHRoYXQgY2FuIGJlIHRoZSB0
YXJnZXQgb2Ygc29mdHdhcmUgb3IgR0wgcmVuZGVyaW5nLgotY2xhc3MgQml0bWFwVGV4dHVyZSAg
OiBwdWJsaWMgUmVmQ291bnRlZDxCaXRtYXBUZXh0dXJlPiB7CitjbGFzcyBCaXRtYXBUZXh0dXJl
IDogcHVibGljIFJlZkNvdW50ZWQ8Qml0bWFwVGV4dHVyZT4gewogcHVibGljOgogICAgIGVudW0g
RmxhZyB7CiAgICAgICAgIFN1cHBvcnRzQWxwaGEgPSAweDAxCkBAIC03NSw2ICs3Niw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVDb250ZW50cyhJbWFnZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRQ
b2ludCYgb2Zmc2V0LCBVcGRhdGVDb250ZW50c0ZsYWcpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJbnRS
ZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxhZyk7
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqLCBjb25zdCBJbnRS
ZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIGludCBieXRlc1BlckxpbmUsIFVw
ZGF0ZUNvbnRlbnRzRmxhZykgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qg
PSAwOwogICAgIGlubGluZSBGbGFncyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0K
QEAgLTE1MSw3ICsxNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luUGFpbnRp
bmcoUGFpbnRGbGFncyA9IDApIHsgfQogICAgIHZpcnR1YWwgdm9pZCBlbmRQYWludGluZygpIHsg
fQogCi0gICAgdmlydHVhbCBJbnRTaXplIG1heFRleHR1cmVTaXplKCkgY29uc3QgeyByZXR1cm4g
SW50U2l6ZShJTlRfTUFYLCBJTlRfTUFYKTsgfQorICAgIHZpcnR1YWwgSW50U2l6ZSBtYXhUZXh0
dXJlU2l6ZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0
dXJlPiBhY3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnN0IEludFNpemUmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDBjZWQ4MzYxMTJiMGY3MTQ1MWM1
ZjQ5ODllYWJjM2U5MDBjNGVhZDguLjc4OGJiMTJhMTdmZTFjODhlZTZlZTY2MTljN2M3Mzc1MWUx
YWRhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKQEAgLTgw
LDYgKzgwLDI1IEBAIHZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1
cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEltYWdlKiBpbWFnCiAgICAgbV90ZXh0dXJlLT51cGRh
dGVDb250ZW50cyhpbWFnZSwgdGFyZ2V0UmVjdCwgc291cmNlT2Zmc2V0LCB1cGRhdGVDb250ZW50
c0ZsYWcpOwogfQogCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVDb250ZW50cyhUZXh0
dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheWVyKiBzb3VyY2VMYXllciwgY29u
c3QgSW50UmVjdCYgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcg
dXBkYXRlQ29udGVudHNGbGFnKQoreworICAgIEludFJlY3QgdGFyZ2V0UmVjdCA9IGVuY2xvc2lu
Z0ludFJlY3QobV9yZWN0KTsKKyAgICB0YXJnZXRSZWN0LmludGVyc2VjdChkaXJ0eVJlY3QpOwor
ICAgIGlmICh0YXJnZXRSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEludFBv
aW50IHNvdXJjZU9mZnNldCA9IHRhcmdldFJlY3QubG9jYXRpb24oKTsKKworICAgIC8vIE5vcm1h
bGl6ZSB0YXJnZXRSZWN0IHRvIHRoZSB0ZXh0dXJlJ3MgY29vcmRpbmF0ZXMuCisgICAgdGFyZ2V0
UmVjdC5tb3ZlKC1tX3JlY3QueCgpLCAtbV9yZWN0LnkoKSk7CisKKyAgICBpZiAoIW1fdGV4dHVy
ZSkgeworICAgICAgICBtX3RleHR1cmUgPSB0ZXh0dXJlTWFwcGVyLT5jcmVhdGVUZXh0dXJlKCk7
CisgICAgICAgIG1fdGV4dHVyZS0+cmVzZXQodGFyZ2V0UmVjdC5zaXplKCksIEJpdG1hcFRleHR1
cmU6OlN1cHBvcnRzQWxwaGEpOworICAgIH0KKworICAgIG1fdGV4dHVyZS0+dXBkYXRlQ29udGVu
dHModGV4dHVyZU1hcHBlciwgc291cmNlTGF5ZXIsIHRhcmdldFJlY3QsIHNvdXJjZU9mZnNldCwg
dXBkYXRlQ29udGVudHNGbGFnKTsKK30KKwogdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6cGFpbnQo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaywgY29uc3QgdW5z
aWduZWQgZXhwb3NlZEVkZ2VzKQogewogICAgIGlmICh0ZXh0dXJlKCkuZ2V0KCkpCkBAIC0xOTcs
NiArMjE2LDEzIEBAIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVD
b250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyCiAgICAgICAgIG1fdGlsZXNbaV0u
dXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgaW1hZ2UsIGRpcnR5UmVjdCwgdXBkYXRlQ29u
dGVudHNGbGFnKTsKIH0KIAordm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVw
ZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5ZXIq
IHNvdXJjZUxheWVyLCBjb25zdCBGbG9hdFNpemUmIHRvdGFsU2l6ZSwgY29uc3QgSW50UmVjdCYg
ZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgdXBkYXRlQ29udGVu
dHNGbGFnKQoreworICAgIGNyZWF0ZU9yRGVzdHJveVRpbGVzSWZOZWVkZWQodG90YWxTaXplLCB0
ZXh0dXJlTWFwcGVyLT5tYXhUZXh0dXJlU2l6ZSgpLCB0cnVlKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fdGlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fdGlsZXNbaV0udXBkYXRl
Q29udGVudHModGV4dHVyZU1hcHBlciwgc291cmNlTGF5ZXIsIGRpcnR5UmVjdCwgdXBkYXRlQ29u
dGVudHNGbGFnKTsKK30KKwogUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVy
VGlsZWRCYWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFj
a2luZ1N0b3JlLmgKaW5kZXggYTcwNGZmZDIzZTczYmE1MzJlOTFmNWVmY2I0ZjAyZWExN2FkOWFh
MC4uMGRkMmRmNGIxOThiZDMxMWZkNDFjNTVhMzM3NzIxODRjZDE0YjM0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNr
aW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCkBAIC03Myw2ICs3Myw3IEBAIHB1YmxpYzoKICAg
ICBpbmxpbmUgdm9pZCBzZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgeyBtX3JlY3QgPSBy
ZWN0OyB9CiAKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJbWFnZSos
IGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgVXBkYXRl
Q2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOworICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4
dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVy
ZTo6VXBkYXRlQ29udGVudHNGbGFnIFVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoVGV4dHVyZU1hcHBlciosIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqLCBjb25zdCB1bnNpZ25lZCBleHBvc2Vk
RWRnZXMpOwogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJUaWxlKCkgeyB9CiAKQEAgLTk0LDYg
Kzk1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0
ZXh0dXJlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJl
TWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgT1ZFUlJJREU7CiAgICAgdm9pZCB1
cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgSW1hZ2UqLCBjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKKyAgICB2
b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBHcmFwaGljc0xheWVyKiwgY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRz
RmxhZyk7CiAKICAgICB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpIHsgbV9p
bWFnZSA9IGltYWdlOyB9CiAgICAgdm9pZCBzZXRTaG93RGVidWdCb3JkZXJzKGJvb2wgZHJhd3NE
ZWJ1Z0JvcmRlcnMpIHsgbV9kcmF3c0RlYnVnQm9yZGVycyA9IGRyYXdzRGVidWdCb3JkZXJzOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCmluZGV4IDU1N2NkMzI3NmI5
NmFiNDM3N2FhMmQzODdiZGQ3ZTg0ODAzZTE0YjAuLjdhYTk1MTdkYTA2YmE1ZjNlY2VlYjRlM2E2
NzAzNzIwNWM0MTEyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3Bw
CkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgi
CiAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3RSZW5kZXJlci5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
TGF5ZXIuaCIKICNpZiBQTEFURk9STShRVCkKICNpbmNsdWRlICJOYXRpdmVJbWFnZVF0LmgiCiAj
ZW5kaWYKQEAgLTU0LDYgKzU1LDE2IEBAIHZvaWQgQml0bWFwVGV4dHVyZUltYWdlQnVmZmVyOjp1
cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiBkYXRhLCBjb25zdCBJbnRSZWN0JiB0CiAjZW5kaWYK
IH0KIAordm9pZCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXI6OnVwZGF0ZUNvbnRlbnRzKFRleHR1
cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBjb25z
dCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0LCBVcGRh
dGVDb250ZW50c0ZsYWcpCit7CisgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gbV9pbWFn
ZS0+Y29udGV4dCgpOworCisgICAgSW50UmVjdCBzb3VyY2VSZWN0KHRhcmdldFJlY3QpOworICAg
IHNvdXJjZVJlY3Quc2V0TG9jYXRpb24oc291cmNlT2Zmc2V0KTsKKyAgICBjb250ZXh0LT50cmFu
c2xhdGUodGFyZ2V0UmVjdC54KCkgLSBzb3VyY2VPZmZzZXQueCgpLCB0YXJnZXRSZWN0LnkoKSAt
IHNvdXJjZU9mZnNldC55KCkpOworICAgIHNvdXJjZUxheWVyLT5wYWludEdyYXBoaWNzTGF5ZXJD
b250ZW50cygqY29udGV4dCwgc291cmNlUmVjdCk7Cit9CisKIHZvaWQgQml0bWFwVGV4dHVyZUlt
YWdlQnVmZmVyOjpkaWRSZXNldCgpCiB7CiAgICAgbV9pbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoY29udGVudFNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKaW5k
ZXggOTFmZjliMDA1OGEwY2RmMzUzNDcwNzVjNWIyZDRjN2NmZmMxNTA1NS4uYjYzMTFjMGZhN2Yx
ZDQ4YWE2MTY0OTk2NDllMmQ3NjBjMDJmMWZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1h
Z2VCdWZmZXIuaApAQCAtMjYsNiArMjYsOCBAQAogI2lmIFVTRShURVhUVVJFX01BUFBFUikKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGNvbnN0IGludCBzX21heGltdW1BbGxvd2VkSW1h
Z2VCdWZmZXJEaW1lbnNpb24gPSA0MDk2OworCiBjbGFzcyBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZm
ZXIgOiBwdWJsaWMgQml0bWFwVGV4dHVyZSB7CiAgICAgZnJpZW5kIGNsYXNzIFRleHR1cmVNYXBw
ZXJJbWFnZUJ1ZmZlcjsKIHB1YmxpYzoKQEAgLTM1LDYgKzM3LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsgfQogICAgIGlubGlu
ZSBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCgpIHsgcmV0dXJuIG1faW1hZ2UgPyBt
X2ltYWdlLT5jb250ZXh0KCkgOiAwOyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRz
KEltYWdlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFBvaW50JiwgVXBkYXRlQ29udGVudHNG
bGFnKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdy
YXBoaWNzTGF5ZXIqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBvZmZz
ZXQsIFVwZGF0ZUNvbnRlbnRzRmxhZyk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRz
KGNvbnN0IHZvaWQqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBzb3Vy
Y2VPZmZzZXQsIGludCBieXRlc1BlckxpbmUsIFVwZGF0ZUNvbnRlbnRzRmxhZyk7CiAjaWYgRU5B
QkxFKENTU19GSUxURVJTKQogICAgIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYXBwbHlGaWx0
ZXJzKFRleHR1cmVNYXBwZXIqLCBjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYpOwpAQCAtNjUsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJl
Z2luQ2xpcChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBiaW5kU3VyZmFjZShCaXRtYXBUZXh0dXJlKiBzdXJm
YWNlKSBPVkVSUklERSB7IG1fY3VycmVudFN1cmZhY2UgPSBzdXJmYWNlO30KICAgICB2aXJ0dWFs
IHZvaWQgZW5kQ2xpcCgpIE9WRVJSSURFIHsgZ3JhcGhpY3NDb250ZXh0KCktPnJlc3RvcmUoKTsg
fQorICAgIHZpcnR1YWwgSW50U2l6ZSBtYXhUZXh0dXJlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIElu
dFNpemUoc19tYXhpbXVtQWxsb3dlZEltYWdlQnVmZmVyRGltZW5zaW9uLCBzX21heGltdW1BbGxv
d2VkSW1hZ2VCdWZmZXJEaW1lbnNpb24pOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1h
cFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoKSBPVkVSUklERSB7IHJldHVybiBCaXRtYXBUZXh0dXJl
SW1hZ2VCdWZmZXI6OmNyZWF0ZSgpOyB9CiAKICAgICBpbmxpbmUgR3JhcGhpY3NDb250ZXh0KiBj
dXJyZW50Q29udGV4dCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178762</attachid>
            <date>2012-12-11 03:03:33 -0800</date>
            <delta_ts>2012-12-12 01:44:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104538-20121211120024.patch</filename>
            <type>text/plain</type>
            <size>17413</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTMyNDVlNDJmYjZhYmY0
ZTc4YTA1MzQzYjczMWI1ZGY5ZDkyNjU5Mi4uNzhjZWY5NWFhMDJiZmU3NDQ2MzViNGNiMTc0ZTVk
MzQ2NGRhYjRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTEyLTExICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtR
dF0gQW5pbWF0aW9uIGZhaWxzIG9uIGxhcmdlIGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGJhY2tpbmcgdGlsZXMgaGFkIG5vIHVwcGVy
IGxpbWl0IGRlZmluZWQgZm9yIHRoZSBub24tR0wgYmFja2VuZCwgd2hpY2ggY291bGQgY2F1c2Ug
dGhlbQorICAgICAgICB0byBhbGxvY2F0ZSBwaXhtYXBzIHdpZGllciBvciBoaWdoZXIgdGhhbiB3
aGF0IHRoZSB1bmRlcmx5aW5nIGdyYXBoaWNzIHN5c3RlbXMgY2FuIGhhbmRsZS4KKworICAgICAg
ICBPbiB0b3Agb2YgdGhhdCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tp
bmdTdG9yZSgpIHdvdWxkIGFsbG9jYXRlIGFuIGludGVybWVkaWF0ZQorICAgICAgICBwaXhtYXAg
dGhlIHNpemUgb2YgdGhlIGRpcnR5IHJlY3QsIHdoaWNoIHdvdWxkIGF0IGxlYXN0IG9uIHRoZSBm
aXJzdCBwYWludCBiZSB0aGUgc2l6ZSBvZiB0aGUKKyAgICAgICAgZW50aXJlIGxheWVyLCBhZ2Fp
biBjYXVzaW5nIGFsbG9jYXRpb24gb2YgcGl4bWFwcyB3aXRoIGRpbWVuc2lvbnMgb3V0c2lkZSBv
ZiBwbGF0Zm9ybSBib3VuZHMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbGlt
aXQgdG8gdGhlIHNpemUgb2YgaW1hZ2UgYnVmZmVyIHRpbGVzLCBhbmQgYWRkcyBhbiBhbHRlcm5h
dGl2ZSBwYXRoCisgICAgICAgIGZvciBwYWludGluZyB3aGVyZSB0aGUgR3JhcGhpY3NMYXllciBw
YWludHMgZGlyZWN0bHkgdG8gdGhlIHRpbGUgaW5zdGVhZCBvZiBvdmVyIGFuIGludGVybWVkaWF0
ZQorICAgICAgICBwaXhtYXAuIFRoaXMgYWx0ZXJuYXRpdmUgcGF0aCBjYW4gYWxzbyBiZSB1c2Vm
dWwgbGF0ZXIgdG8gbWluaW1pemUgdGhlIGFtb3VudCBvZiBwaXhlbCBjb3B5aW5nCisgICAgICAg
IGhhcHBlbmluZyBpbiBmdWxsIHJlcGFpbnRzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuaDoKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBUZXh0dXJlOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKEJpdG1hcFRleHR1cmUp
OgorICAgICAgICAoVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgIChUZXh0dXJlTWFwcGVyVGlsZSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVySW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUlt
YWdlQnVmZmVyOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVySW1hZ2VCdWZmZXI6Om1heFRleHR1cmVTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmg6CisgICAgICAgIChCaXRtYXBU
ZXh0dXJlSW1hZ2VCdWZmZXIpOgorCiAyMDEyLTEyLTExICBaYW4gRG9iZXJzZWsgIDx6YW5kb2Jl
cnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgW0dUS10gRmVhdHVyZSBlbmFibGluZy9kaXNhYmxp
bmcgc2hvdWxkIGJlIHBvc3NpYmxlIHRocm91Z2ggYnVpbGQtd2Via2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA3YTQ5ZDcxOWMwNzEwMmQ5NTBkNTBj
MjliMmQ0OGY3MTEyYjE0M2M5Li5jYmQzOTkxNWMzMTNjNmZhOTJmYWFlOTAwYjUyZDJhOTgyZWZl
ZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTQ2
MywyNSArNDYzLDM0IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnByZXBhcmVC
YWNraW5nU3RvcmUoKQogICAgIGlmICghbV9iYWNraW5nU3RvcmUpCiAgICAgICAgIG1fYmFja2lu
Z1N0b3JlID0gVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsKIAotICAg
IC8vIFBhaW50IHRoZSBlbnRpcmUgZGlydHkgcmVjdCBpbnRvIGFuIGltYWdlIGJ1ZmZlci4gVGhp
cyBlbnN1cmVzIHdlIG9ubHkgcGFpbnQgb25jZS4KLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShkaXJ0eVJlY3Quc2l6ZSgpKTsKLSAgICBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwotICAgIGNv
bnRleHQtPnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkodGV4dHVyZU1hcHBlci0+aW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUo
dGV4dHVyZU1hcHBlci0+dGV4dERyYXdpbmdNb2RlKCkpOwotICAgIGNvbnRleHQtPnRyYW5zbGF0
ZSgtZGlydHlSZWN0LngoKSwgLWRpcnR5UmVjdC55KCkpOwotICAgIHBhaW50R3JhcGhpY3NMYXll
ckNvbnRlbnRzKCpjb250ZXh0LCBkaXJ0eVJlY3QpOwotCi0gICAgaWYgKGlzU2hvd2luZ1JlcGFp
bnRDb3VudGVyKCkpIHsKLSAgICAgICAgaW5jcmVtZW50UmVwYWludENvdW50KCk7Ci0gICAgICAg
IGRyYXdSZXBhaW50Q291bnRlcihjb250ZXh0KTsKLSAgICB9Ci0KLSAgICBSZWZQdHI8SW1hZ2U+
IGltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0j
aWYgUExBVEZPUk0oUVQpCiAgICAgQVNTRVJUKGR5bmFtaWNfY2FzdDxUZXh0dXJlTWFwcGVyVGls
ZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9yZS5nZXQoKSkpOwotI2VuZGlmCiAgICAgVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBzdGF0aWNfY2FzdDxU
ZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUqPihtX2JhY2tpbmdTdG9yZS5nZXQoKSk7Ci0g
ICAgYmFja2luZ1N0b3JlLT51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBpbWFnZS5nZXQo
KSwgbV9zaXplLCBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdp
bmFsSW1hZ2VEYXRhKTsKKworICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpKQorICAg
ICAgICBpbmNyZW1lbnRSZXBhaW50Q291bnQoKTsKKworICAgIC8vIFBhaW50IGludG8gYW4gaW50
ZXJtZWRpYXRlIGJ1ZmZlciB0byBhdm9pZCBwYWludGluZyBjb250ZW50IG1vcmUgdGhhbiBvbmNl
LgorICAgIGJvb2wgcGFpbnRPbmNlID0gdHJ1ZTsKKyAgICBjb25zdCBJbnRTaXplIG1heFRleHR1
cmVTaXplID0gdGV4dHVyZU1hcHBlci0+bWF4VGV4dHVyZVNpemUoKTsKKyAgICAvLyBXZSBuZWVk
IHRvIHBhaW50IGRpcmVjdGx5IGlmIHRoZSBkaXJ0eSByZWN0IGV4Y2VlZHMgb25lIG9mIHRoZSBt
YXhpbXVtIGRpbWVuc2lvbnMuCisgICAgaWYgKGRpcnR5UmVjdC53aWR0aCgpID4gbWF4VGV4dHVy
ZVNpemUud2lkdGgoKSB8fCBkaXJ0eVJlY3QuaGVpZ2h0KCkgPiBtYXhUZXh0dXJlU2l6ZS5oZWln
aHQoKSkKKyAgICAgICAgcGFpbnRPbmNlID0gZmFsc2U7CisKKyAgICBpZiAocGFpbnRPbmNlKSB7
CisgICAgICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGRpcnR5UmVjdC5zaXplKCkpOworICAgICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgICAgICBjb250ZXh0LT5zZXRJbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KHRleHR1cmVNYXBwZXItPmltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoKSk7CisgICAgICAgIGNvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZSh0ZXh0dXJlTWFwcGVy
LT50ZXh0RHJhd2luZ01vZGUoKSk7CisgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgtZGlydHlS
ZWN0LngoKSwgLWRpcnR5UmVjdC55KCkpOworICAgICAgICBwYWludEdyYXBoaWNzTGF5ZXJDb250
ZW50cygqY29udGV4dCwgZGlydHlSZWN0KTsKKworICAgICAgICBpZiAoaXNTaG93aW5nUmVwYWlu
dENvdW50ZXIoKSkKKyAgICAgICAgICAgIGRyYXdSZXBhaW50Q291bnRlcihjb250ZXh0KTsKKwor
ICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlJbWFnZShEb250
Q29weUJhY2tpbmdTdG9yZSk7CisgICAgICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRlQ29udGVudHMo
dGV4dHVyZU1hcHBlciwgaW1hZ2UuZ2V0KCksIG1fc2l6ZSwgZGlydHlSZWN0LCBCaXRtYXBUZXh0
dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7CisgICAgfSBlbHNlCisgICAg
ICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgdGhpcywgbV9z
aXplLCBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1h
Z2VEYXRhKTsKIAogICAgIGJhY2tpbmdTdG9yZS0+c2V0U2hvd0RlYnVnQm9yZGVycyhpc1Nob3dp
bmdEZWJ1Z0JvcmRlcigpKTsKICAgICBiYWNraW5nU3RvcmUtPnNldERlYnVnQm9yZGVyKG1fZGVi
dWdCb3JkZXJDb2xvciwgbV9kZWJ1Z0JvcmRlcldpZHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggNDMyZDZjNmI2MDFjNDVkM2VjZjQzMWUwZmVkNzQ2OGQx
MjNiYjY3OS4uYWQzNDgzYjE0YWIxYjY2MDM4MDJjZDY4ZjI0ZGJkZGMwY2FhMjI4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAgLTk3LDYgKzk3LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgZml4ZWQpIHsgbV9maXhlZFRv
Vmlld3BvcnQgPSBmaXhlZDsgfQogICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0KCkgY29uc3QgeyBy
ZXR1cm4gbV9maXhlZFRvVmlld3BvcnQ7IH0KIAorICAgIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVy
KEdyYXBoaWNzQ29udGV4dCopOwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVz
dHJveWVkKCk7CiAgICAgdm9pZCBkaWRGbHVzaENvbXBvc2l0aW5nU3RhdGUoKTsKQEAgLTEwNCw3
ICsxMDUsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAg
dm9pZCBwcmVwYXJlQmFja2luZ1N0b3JlKCk7CiAgICAgYm9vbCBzaG91bGRIYXZlQmFja2luZ1N0
b3JlKCkgY29uc3Q7Ci0gICAgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoR3JhcGhpY3NDb250ZXh0
Kik7CiAgICAgdm9pZCBhbmltYXRpb25TdGFydGVkVGltZXJGaXJlZChUaW1lcjxHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcj4qKTsKIAogICAgIE93blB0cjxUZXh0dXJlTWFwcGVyTGF5ZXI+IG1f
bGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggN2E5ODBhOWM1Y2Y2YmJjZTI2ZjJjNDY0MzUz
ZDhiM2M2Nzk2OGQ2OC4uNDNmZWM1NDNjYzk0YWYzNTI2NDVhNWJiYTU4NzkzYTcxNDk2MWJlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyLmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKIAorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIu
aCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJUaW1l
ci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMTQ0LDUgKzE0NSwyMyBAQCBU
ZXh0dXJlTWFwcGVyOjpUZXh0dXJlTWFwcGVyKEFjY2VsZXJhdGlvbk1vZGUgYWNjZWxlcmF0aW9u
TW9kZSkKIFRleHR1cmVNYXBwZXI6On5UZXh0dXJlTWFwcGVyKCkKIHsgfQogCit2b2lkIEJpdG1h
cFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEdy
YXBoaWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBJbnRQb2ludCYgb2Zmc2V0LCBVcGRhdGVDb250ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFn
KQoreworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHRhcmdldFJlY3Quc2l6ZSgpKTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQg
PSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIGNvbnRleHQtPnNldEltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkodGV4dHVyZU1hcHBlci0+aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsK
KyAgICBjb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUodGV4dHVyZU1hcHBlci0+dGV4dERyYXdp
bmdNb2RlKCkpOworCisgICAgSW50UmVjdCBzb3VyY2VSZWN0KHRhcmdldFJlY3QpOworICAgIHNv
dXJjZVJlY3Quc2V0TG9jYXRpb24ob2Zmc2V0KTsKKyAgICBjb250ZXh0LT50cmFuc2xhdGUoLW9m
ZnNldC54KCksIC1vZmZzZXQueSgpKTsKKyAgICBzb3VyY2VMYXllci0+cGFpbnRHcmFwaGljc0xh
eWVyQ29udGVudHMoKmNvbnRleHQsIHNvdXJjZVJlY3QpOworCisgICAgUmVmUHRyPEltYWdlPiBp
bWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworCisg
ICAgdXBkYXRlQ29udGVudHMoaW1hZ2UuZ2V0KCksIHRhcmdldFJlY3QsIEludFBvaW50KCksIHVw
ZGF0ZUNvbnRlbnRzRmxhZyk7CiB9CisKK30gLy8gbmFtZXNwYWNlCisKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyLmgKaW5kZXggMTQ0MjA5MzQ5NjEwMzY2ZjY4OTA5NzZlNjIwZWQyMDQ5MmJiOWVlMi4uMjJl
ZmQ1ZmY3NTFmNzA5ZmY1MDkyZjZkN2NhOGNmZDBjODM4NzEzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCkBA
IC00OSwxMCArNDksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCaXRtYXBUZXh0
dXJlUG9vbDsKIGNsYXNzIEN1c3RvbUZpbHRlclByb2dyYW07CitjbGFzcyBHcmFwaGljc0xheWVy
OwogY2xhc3MgVGV4dHVyZU1hcHBlcjsKIAogLy8gQSAyRCB0ZXh0dXJlIHRoYXQgY2FuIGJlIHRo
ZSB0YXJnZXQgb2Ygc29mdHdhcmUgb3IgR0wgcmVuZGVyaW5nLgotY2xhc3MgQml0bWFwVGV4dHVy
ZSAgOiBwdWJsaWMgUmVmQ291bnRlZDxCaXRtYXBUZXh0dXJlPiB7CitjbGFzcyBCaXRtYXBUZXh0
dXJlIDogcHVibGljIFJlZkNvdW50ZWQ8Qml0bWFwVGV4dHVyZT4gewogcHVibGljOgogICAgIGVu
dW0gRmxhZyB7CiAgICAgICAgIFN1cHBvcnRzQWxwaGEgPSAweDAxCkBAIC03NSw2ICs3Niw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVDb250ZW50cyhJbWFnZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJ
bnRQb2ludCYgb2Zmc2V0LCBVcGRhdGVDb250ZW50c0ZsYWcpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJ
bnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxh
Zyk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqLCBjb25zdCBJ
bnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIGludCBieXRlc1BlckxpbmUs
IFVwZGF0ZUNvbnRlbnRzRmxhZykgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29u
c3QgPSAwOwogICAgIGlubGluZSBGbGFncyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7
IH0KQEAgLTE1MSw3ICsxNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luUGFp
bnRpbmcoUGFpbnRGbGFncyA9IDApIHsgfQogICAgIHZpcnR1YWwgdm9pZCBlbmRQYWludGluZygp
IHsgfQogCi0gICAgdmlydHVhbCBJbnRTaXplIG1heFRleHR1cmVTaXplKCkgY29uc3QgeyByZXR1
cm4gSW50U2l6ZShJTlRfTUFYLCBJTlRfTUFYKTsgfQorICAgIHZpcnR1YWwgSW50U2l6ZSBtYXhU
ZXh0dXJlU2l6ZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBhY3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnN0IEludFNpemUmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDBjZWQ4MzYxMTJiMGY3MTQ1
MWM1ZjQ5ODllYWJjM2U5MDBjNGVhZDguLjc4OGJiMTJhMTdmZTFjODhlZTZlZTY2MTljN2M3Mzc1
MWUxYWRhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKQEAg
LTgwLDYgKzgwLDI1IEBAIHZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEltYWdlKiBpbWFnCiAgICAgbV90ZXh0dXJlLT51
cGRhdGVDb250ZW50cyhpbWFnZSwgdGFyZ2V0UmVjdCwgc291cmNlT2Zmc2V0LCB1cGRhdGVDb250
ZW50c0ZsYWcpOwogfQogCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlOjp1cGRhdGVDb250ZW50cyhU
ZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheWVyKiBzb3VyY2VMYXllciwg
Y29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0Zs
YWcgdXBkYXRlQ29udGVudHNGbGFnKQoreworICAgIEludFJlY3QgdGFyZ2V0UmVjdCA9IGVuY2xv
c2luZ0ludFJlY3QobV9yZWN0KTsKKyAgICB0YXJnZXRSZWN0LmludGVyc2VjdChkaXJ0eVJlY3Qp
OworICAgIGlmICh0YXJnZXRSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIElu
dFBvaW50IHNvdXJjZU9mZnNldCA9IHRhcmdldFJlY3QubG9jYXRpb24oKTsKKworICAgIC8vIE5v
cm1hbGl6ZSB0YXJnZXRSZWN0IHRvIHRoZSB0ZXh0dXJlJ3MgY29vcmRpbmF0ZXMuCisgICAgdGFy
Z2V0UmVjdC5tb3ZlKC1tX3JlY3QueCgpLCAtbV9yZWN0LnkoKSk7CisKKyAgICBpZiAoIW1fdGV4
dHVyZSkgeworICAgICAgICBtX3RleHR1cmUgPSB0ZXh0dXJlTWFwcGVyLT5jcmVhdGVUZXh0dXJl
KCk7CisgICAgICAgIG1fdGV4dHVyZS0+cmVzZXQodGFyZ2V0UmVjdC5zaXplKCksIEJpdG1hcFRl
eHR1cmU6OlN1cHBvcnRzQWxwaGEpOworICAgIH0KKworICAgIG1fdGV4dHVyZS0+dXBkYXRlQ29u
dGVudHModGV4dHVyZU1hcHBlciwgc291cmNlTGF5ZXIsIHRhcmdldFJlY3QsIHNvdXJjZU9mZnNl
dCwgdXBkYXRlQ29udGVudHNGbGFnKTsKK30KKwogdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6cGFp
bnQoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaywgY29uc3Qg
dW5zaWduZWQgZXhwb3NlZEVkZ2VzKQogewogICAgIGlmICh0ZXh0dXJlKCkuZ2V0KCkpCkBAIC0x
OTcsNiArMjE2LDEzIEBAIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRh
dGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyCiAgICAgICAgIG1fdGlsZXNb
aV0udXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgaW1hZ2UsIGRpcnR5UmVjdCwgdXBkYXRl
Q29udGVudHNGbGFnKTsKIH0KIAordm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6
OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5
ZXIqIHNvdXJjZUxheWVyLCBjb25zdCBGbG9hdFNpemUmIHRvdGFsU2l6ZSwgY29uc3QgSW50UmVj
dCYgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgdXBkYXRlQ29u
dGVudHNGbGFnKQoreworICAgIGNyZWF0ZU9yRGVzdHJveVRpbGVzSWZOZWVkZWQodG90YWxTaXpl
LCB0ZXh0dXJlTWFwcGVyLT5tYXhUZXh0dXJlU2l6ZSgpLCB0cnVlKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fdGlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fdGlsZXNbaV0udXBk
YXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgc291cmNlTGF5ZXIsIGRpcnR5UmVjdCwgdXBkYXRl
Q29udGVudHNGbGFnKTsKK30KKwogUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
QmFja2luZ1N0b3JlLmgKaW5kZXggYTcwNGZmZDIzZTczYmE1MzJlOTFmNWVmY2I0ZjAyZWExN2Fk
OWFhMC4uMGRkMmRmNGIxOThiZDMxMWZkNDFjNTVhMzM3NzIxODRjZDE0YjM0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCkBAIC03Myw2ICs3Myw3IEBAIHB1YmxpYzoK
ICAgICBpbmxpbmUgdm9pZCBzZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgeyBtX3JlY3Qg
PSByZWN0OyB9CiAKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJbWFn
ZSosIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgVXBk
YXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOworICAgIHZvaWQgdXBkYXRlQ29udGVudHMo
VGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4
dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIFVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRh
KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoVGV4dHVyZU1hcHBlciosIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqLCBjb25zdCB1bnNpZ25lZCBleHBv
c2VkRWRnZXMpOwogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJUaWxlKCkgeyB9CiAKQEAgLTk0
LDYgKzk1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJl
PiB0ZXh0dXJlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0
dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKikgT1ZFUlJJREU7CiAgICAgdm9p
ZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgSW1hZ2UqLCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnKTsKKyAg
ICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBHcmFwaGljc0xheWVyKiwgY29u
c3QgRmxvYXRTaXplJiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRl
bnRzRmxhZyk7CiAKICAgICB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpIHsg
bV9pbWFnZSA9IGltYWdlOyB9CiAgICAgdm9pZCBzZXRTaG93RGVidWdCb3JkZXJzKGJvb2wgZHJh
d3NEZWJ1Z0JvcmRlcnMpIHsgbV9kcmF3c0RlYnVnQm9yZGVycyA9IGRyYXdzRGVidWdCb3JkZXJz
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCmluZGV4IDU1N2NkMzI3
NmI5NmFiNDM3N2FhMmQzODdiZGQ3ZTg0ODAzZTE0YjAuLjVhZmFlMjVmZDZhNGJkMjk2ZTNlNjU2
NjFmYTE0NzdkY2IzZjVhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIu
Y3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckltYWdlQnVmZmVy
LmgiCiAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3RSZW5kZXJlci5oIgorI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXIuaCIKICNpZiBQTEFURk9STShRVCkKICNpbmNsdWRlICJOYXRpdmVJbWFnZVF0Lmgi
CiAjZW5kaWYKQEAgLTI5LDYgKzMwLDggQEAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdCBpbnQgc19tYXhpbXVtQWxsb3dlZEltYWdl
QnVmZmVyRGltZW5zaW9uID0gNDA5NjsKKwogdm9pZCBCaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXI6
OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIGRhdGEsIGNvbnN0IEludFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGludCBieXRlc1BlckxpbmUsIFVwZGF0
ZUNvbnRlbnRzRmxhZykKIHsKICNpZiBQTEFURk9STShRVCkKQEAgLTU0LDYgKzU3LDE4IEBAIHZv
aWQgQml0bWFwVGV4dHVyZUltYWdlQnVmZmVyOjp1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiBk
YXRhLCBjb25zdCBJbnRSZWN0JiB0CiAjZW5kaWYKIH0KIAordm9pZCBCaXRtYXBUZXh0dXJlSW1h
Z2VCdWZmZXI6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEdy
YXBoaWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBJbnRQb2ludCYgc291cmNlT2Zmc2V0LCBVcGRhdGVDb250ZW50c0ZsYWcpCit7CisgICAgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0ID0gbV9pbWFnZS0+Y29udGV4dCgpOworCisKKyAgICBJbnRS
ZWN0IHNvdXJjZVJlY3QodGFyZ2V0UmVjdCk7CisgICAgc291cmNlUmVjdC5zZXRMb2NhdGlvbihz
b3VyY2VPZmZzZXQpOworICAgIGNvbnRleHQtPnRyYW5zbGF0ZSh0YXJnZXRSZWN0LngoKSAtIHNv
dXJjZU9mZnNldC54KCksIHRhcmdldFJlY3QueSgpIC0gc291cmNlT2Zmc2V0LnkoKSk7CisgICAg
Y29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOworICAgIHNvdXJj
ZUxheWVyLT5wYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cygqY29udGV4dCwgc291cmNlUmVjdCk7
Cit9CisKIHZvaWQgQml0bWFwVGV4dHVyZUltYWdlQnVmZmVyOjpkaWRSZXNldCgpCiB7CiAgICAg
bV9pbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY29udGVudFNpemUoKSk7CkBAIC02NCw2ICs3
OSwxMSBAQCB2b2lkIEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6dXBkYXRlQ29udGVudHMoSW1h
Z2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiB0YXJnZQogICAgIG1faW1hZ2UtPmNvbnRleHQoKS0+
ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCB0YXJnZXRSZWN0LCBJbnRSZWN0
KG9mZnNldCwgdGFyZ2V0UmVjdC5zaXplKCkpLCBDb21wb3NpdGVDb3B5KTsKIH0KIAorSW50U2l6
ZSBUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6Om1heFRleHR1cmVTaXplKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gSW50U2l6ZShzX21heGltdW1BbGxvd2VkSW1hZ2VCdWZmZXJEaW1lbnNpb24sIHNf
bWF4aW11bUFsbG93ZWRJbWFnZUJ1ZmZlckRpbWVuc2lvbik7Cit9CisKIHZvaWQgVGV4dHVyZU1h
cHBlckltYWdlQnVmZmVyOjpiZWdpbkNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1h
dHJpeCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCA9IGN1cnJlbnRDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVy
LmgKaW5kZXggOTFmZjliMDA1OGEwY2RmMzUzNDcwNzVjNWIyZDRjN2NmZmMxNTA1NS4uOWRlNmQ0
Y2JkNWViMTdlOTM0ODgwMThhNjJhNzEzMWQ4OTczODRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVySW1hZ2VCdWZmZXIuaApAQCAtMzUsNiArMzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9CiAgICAgaW5saW5lIEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0KCkgeyByZXR1cm4gbV9pbWFnZSA/IG1faW1hZ2Ut
PmNvbnRleHQoKSA6IDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udGVudHMoSW1hZ2Uq
LCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UG9pbnQmLCBVcGRhdGVDb250ZW50c0ZsYWcpOwor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgR3JhcGhpY3NM
YXllciosIGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29uc3QgSW50UG9pbnQmIG9mZnNldCwgVXBk
YXRlQ29udGVudHNGbGFnKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udGVudHMoY29uc3Qg
dm9pZCosIGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNl
dCwgaW50IGJ5dGVzUGVyTGluZSwgVXBkYXRlQ29udGVudHNGbGFnKTsKICNpZiBFTkFCTEUoQ1NT
X0ZJTFRFUlMpCiAgICAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoVGV4
dHVyZU1hcHBlciosIGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25z
Jik7CkBAIC02NSw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5DbGlw
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0JikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGJpbmRTdXJmYWNlKEJpdG1hcFRleHR1cmUqIHN1cmZhY2UpIE9W
RVJSSURFIHsgbV9jdXJyZW50U3VyZmFjZSA9IHN1cmZhY2U7fQogICAgIHZpcnR1YWwgdm9pZCBl
bmRDbGlwKCkgT1ZFUlJJREUgeyBncmFwaGljc0NvbnRleHQoKS0+cmVzdG9yZSgpOyB9CisgICAg
dmlydHVhbCBJbnRTaXplIG1heFRleHR1cmVTaXplKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEJpdG1hcFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoKSBPVkVSUklERSB7IHJldHVybiBC
aXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXI6OmNyZWF0ZSgpOyB9CiAKICAgICBpbmxpbmUgR3JhcGhp
Y3NDb250ZXh0KiBjdXJyZW50Q29udGV4dCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179001</attachid>
            <date>2012-12-12 01:44:54 -0800</date>
            <delta_ts>2012-12-12 10:33:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104538-20121212104145.patch</filename>
            <type>text/plain</type>
            <size>17438</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmYwOTZjNGM1Yzk3ZTMy
ZWIyMTJkNTA3MWQ0ZTMyN2E5ZTM1N2Y2Yi4uYmRjNzg4MmJjMDc3YjQxZWM2ZmU1ZDM1ZjU3NDAx
MTVjOGNhYTExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTEyLTEyICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtR
dF0gQW5pbWF0aW9uIGZhaWxzIG9uIGxhcmdlIGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGJhY2tpbmcgdGlsZXMgaGFkIG5vIHVwcGVy
IGxpbWl0IGRlZmluZWQgZm9yIHRoZSBub24tR0wgYmFja2VuZCwgd2hpY2ggY291bGQgY2F1c2Ug
dGhlbQorICAgICAgICB0byBhbGxvY2F0ZSBwaXhtYXBzIHdpZGllciBvciBoaWdoZXIgdGhhbiB3
aGF0IHRoZSB1bmRlcmx5aW5nIGdyYXBoaWNzIHN5c3RlbXMgY2FuIGhhbmRsZS4KKworICAgICAg
ICBPbiB0b3Agb2YgdGhhdCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tp
bmdTdG9yZSgpIHdvdWxkIGFsbG9jYXRlIGFuIGludGVybWVkaWF0ZQorICAgICAgICBwaXhtYXAg
dGhlIHNpemUgb2YgdGhlIGRpcnR5IHJlY3QsIHdoaWNoIHdvdWxkIGF0IGxlYXN0IG9uIHRoZSBm
aXJzdCBwYWludCBiZSB0aGUgc2l6ZSBvZiB0aGUKKyAgICAgICAgZW50aXJlIGxheWVyLCBhZ2Fp
biBjYXVzaW5nIGFsbG9jYXRpb24gb2YgcGl4bWFwcyB3aXRoIGRpbWVuc2lvbnMgb3V0c2lkZSBv
ZiBwbGF0Zm9ybSBib3VuZHMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbGlt
aXQgdG8gdGhlIHNpemUgb2YgaW1hZ2UgYnVmZmVyIHRpbGVzLCBhbmQgYWRkcyBhbiBhbHRlcm5h
dGl2ZSBwYXRoCisgICAgICAgIGZvciBwYWludGluZyB3aGVyZSB0aGUgR3JhcGhpY3NMYXllciBw
YWludHMgZGlyZWN0bHkgdG8gdGhlIHRpbGUgaW5zdGVhZCBvZiBvdmVyIGFuIGludGVybWVkaWF0
ZQorICAgICAgICBwaXhtYXAuIFRoaXMgYWx0ZXJuYXRpdmUgcGF0aCBjYW4gYWxzbyBiZSB1c2Vm
dWwgbGF0ZXIgdG8gbWluaW1pemUgdGhlIGFtb3VudCBvZiBwaXhlbCBjb3B5aW5nCisgICAgICAg
IGhhcHBlbmluZyBpbiBmdWxsIHJlcGFpbnRzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpwcmVwYXJlQmFja2luZ1N0b3JlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuaDoKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBUZXh0dXJlOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKEJpdG1hcFRleHR1cmUp
OgorICAgICAgICAoVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgIChUZXh0dXJlTWFwcGVyVGlsZSk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVySW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUlt
YWdlQnVmZmVyOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVySW1hZ2VCdWZmZXI6Om1heFRleHR1cmVTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmg6CisgICAgICAgIChCaXRtYXBU
ZXh0dXJlSW1hZ2VCdWZmZXIpOgorCiAyMDEyLTExLTI5ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVy
eXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEhlYXAgc25hcHNob3Qg
Y3Jhc2hlcyBvbiBhbnkgcGFnZSBpbiBNYWNPUyBDYW5hcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDJjOWZhM2E3NGU2NzRiZjQwNWUzNDcyZjM4NWEz
ZThiNThkZWVmZjMuLmI0ZmMxNDg0OWY3Y2QwY2M3NWM0OTMwOTA1M2NiYzk2Yjk3Mzk3OGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNDY2LDI1ICs0
NjYsMzQgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUJhY2tpbmdT
dG9yZSgpCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKICAgICAgICAgbV9iYWNraW5nU3RvcmUg
PSBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpOwogCi0gICAgLy8gUGFp
bnQgdGhlIGVudGlyZSBkaXJ0eSByZWN0IGludG8gYW4gaW1hZ2UgYnVmZmVyLiBUaGlzIGVuc3Vy
ZXMgd2Ugb25seSBwYWludCBvbmNlLgotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGRpcnR5UmVjdC5zaXplKCkpOwotICAgIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgY29udGV4dC0+
c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSh0ZXh0dXJlTWFwcGVyLT5pbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KCkpOwotICAgIGNvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZSh0ZXh0dXJl
TWFwcGVyLT50ZXh0RHJhd2luZ01vZGUoKSk7Ci0gICAgY29udGV4dC0+dHJhbnNsYXRlKC1kaXJ0
eVJlY3QueCgpLCAtZGlydHlSZWN0LnkoKSk7Ci0gICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVu
dHMoKmNvbnRleHQsIGRpcnR5UmVjdCk7Ci0KLSAgICBpZiAoaXNTaG93aW5nUmVwYWludENvdW50
ZXIoKSkgewotICAgICAgICBpbmNyZW1lbnRSZXBhaW50Q291bnQoKTsKLSAgICAgICAgZHJhd1Jl
cGFpbnRDb3VudGVyKGNvbnRleHQpOwotICAgIH0KLQotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2Ug
PSBpbWFnZUJ1ZmZlci0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSNpZiBQTEFU
Rk9STShRVCkKICAgICBBU1NFUlQoZHluYW1pY19jYXN0PFRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZSo+KG1fYmFja2luZ1N0b3JlLmdldCgpKSk7Ci0jZW5kaWYKICAgICBUZXh0dXJlTWFw
cGVyVGlsZWRCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IHN0YXRpY19jYXN0PFRleHR1cmVN
YXBwZXJUaWxlZEJhY2tpbmdTdG9yZSo+KG1fYmFja2luZ1N0b3JlLmdldCgpKTsKLSAgICBiYWNr
aW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVNYXBwZXIsIGltYWdlLmdldCgpLCBtX3Np
emUsIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFn
ZURhdGEpOworCisgICAgaWYgKGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCkpCisgICAgICAgIGlu
Y3JlbWVudFJlcGFpbnRDb3VudCgpOworCisgICAgLy8gUGFpbnQgaW50byBhbiBpbnRlcm1lZGlh
dGUgYnVmZmVyIHRvIGF2b2lkIHBhaW50aW5nIGNvbnRlbnQgbW9yZSB0aGFuIG9uY2UuCisgICAg
Ym9vbCBwYWludE9uY2UgPSB0cnVlOworICAgIGNvbnN0IEludFNpemUgbWF4VGV4dHVyZVNpemUg
PSB0ZXh0dXJlTWFwcGVyLT5tYXhUZXh0dXJlU2l6ZSgpOworICAgIC8vIFdlIG5lZWQgdG8gcGFp
bnQgZGlyZWN0bHkgaWYgdGhlIGRpcnR5IHJlY3QgZXhjZWVkcyBvbmUgb2YgdGhlIG1heGltdW0g
ZGltZW5zaW9ucy4KKyAgICBpZiAoZGlydHlSZWN0LndpZHRoKCkgPiBtYXhUZXh0dXJlU2l6ZS53
aWR0aCgpIHx8IGRpcnR5UmVjdC5oZWlnaHQoKSA+IG1heFRleHR1cmVTaXplLmhlaWdodCgpKQor
ICAgICAgICBwYWludE9uY2UgPSBmYWxzZTsKKworICAgIGlmIChwYWludE9uY2UpIHsKKyAgICAg
ICAgT3duUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
ZGlydHlSZWN0LnNpemUoKSk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGlt
YWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAgICAgIGNvbnRleHQtPnNldEltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkodGV4dHVyZU1hcHBlci0+aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsK
KyAgICAgICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKHRleHR1cmVNYXBwZXItPnRleHRE
cmF3aW5nTW9kZSgpKTsKKyAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKC1kaXJ0eVJlY3QueCgp
LCAtZGlydHlSZWN0LnkoKSk7CisgICAgICAgIHBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKCpj
b250ZXh0LCBkaXJ0eVJlY3QpOworCisgICAgICAgIGlmIChpc1Nob3dpbmdSZXBhaW50Q291bnRl
cigpKQorICAgICAgICAgICAgZHJhd1JlcGFpbnRDb3VudGVyKGNvbnRleHQpOworCisgICAgICAg
IFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbWFnZUJ1ZmZlci0+Y29weUltYWdlKERvbnRDb3B5QmFj
a2luZ1N0b3JlKTsKKyAgICAgICAgYmFja2luZ1N0b3JlLT51cGRhdGVDb250ZW50cyh0ZXh0dXJl
TWFwcGVyLCBpbWFnZS5nZXQoKSwgbV9zaXplLCBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVw
ZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYmFj
a2luZ1N0b3JlLT51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCB0aGlzLCBtX3NpemUsIGRp
cnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEp
OwogCiAgICAgYmFja2luZ1N0b3JlLT5zZXRTaG93RGVidWdCb3JkZXJzKGlzU2hvd2luZ0RlYnVn
Qm9yZGVyKCkpOwogICAgIGJhY2tpbmdTdG9yZS0+c2V0RGVidWdCb3JkZXIobV9kZWJ1Z0JvcmRl
ckNvbG9yLCBtX2RlYnVnQm9yZGVyV2lkdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuaAppbmRleCA0MzJkNmM2YjYwMWM0NWQzZWNmNDMxZTBmZWQ3NDY4ZDEyM2JiNjc5
Li5hZDM0ODNiMTRhYjFiNjYwMzgwMmNkNjhmMjRkYmRkYzBjYWEyMjg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtOTcsNiArOTcsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRGaXhlZFRvVmlld3BvcnQoYm9vbCBmaXhlZCkgeyBtX2ZpeGVkVG9WaWV3cG9y
dCA9IGZpeGVkOyB9CiAgICAgYm9vbCBmaXhlZFRvVmlld3BvcnQoKSBjb25zdCB7IHJldHVybiBt
X2ZpeGVkVG9WaWV3cG9ydDsgfQogCisgICAgdm9pZCBkcmF3UmVwYWludENvdW50ZXIoR3JhcGhp
Y3NDb250ZXh0Kik7CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQo
KTsKICAgICB2b2lkIGRpZEZsdXNoQ29tcG9zaXRpbmdTdGF0ZSgpOwpAQCAtMTA0LDcgKzEwNSw2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICB2b2lkIHBy
ZXBhcmVCYWNraW5nU3RvcmUoKTsKICAgICBib29sIHNob3VsZEhhdmVCYWNraW5nU3RvcmUoKSBj
b25zdDsKLSAgICB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihHcmFwaGljc0NvbnRleHQqKTsKICAg
ICB2b2lkIGFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKFRpbWVyPEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyPiopOwogCiAgICAgT3duUHRyPFRleHR1cmVNYXBwZXJMYXllcj4gbV9sYXllcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyLmNwcAppbmRleCA3YTk4MGE5YzVjZjZiYmNlMjZmMmM0NjQzNTNkOGIzYzY3
OTY4ZDY4Li40M2ZlYzU0M2NjOTRhZjM1MjY0NWE1YmJhNTg3OTNhNzE0OTYxYmUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXIuY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiVGV4dHVyZU1hcHBlci5oIgogCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0xNDQsNSArMTQ1LDIzIEBAIFRleHR1cmVN
YXBwZXI6OlRleHR1cmVNYXBwZXIoQWNjZWxlcmF0aW9uTW9kZSBhY2NlbGVyYXRpb25Nb2RlKQog
VGV4dHVyZU1hcHBlcjo6flRleHR1cmVNYXBwZXIoKQogeyB9CiAKK3ZvaWQgQml0bWFwVGV4dHVy
ZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NM
YXllciogc291cmNlTGF5ZXIsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBv
aW50JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCit7Cisg
ICAgT3duUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
dGFyZ2V0UmVjdC5zaXplKCkpOworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGltYWdl
QnVmZmVyLT5jb250ZXh0KCk7CisgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSh0ZXh0dXJlTWFwcGVyLT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOworICAgIGNv
bnRleHQtPnNldFRleHREcmF3aW5nTW9kZSh0ZXh0dXJlTWFwcGVyLT50ZXh0RHJhd2luZ01vZGUo
KSk7CisKKyAgICBJbnRSZWN0IHNvdXJjZVJlY3QodGFyZ2V0UmVjdCk7CisgICAgc291cmNlUmVj
dC5zZXRMb2NhdGlvbihvZmZzZXQpOworICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgtb2Zmc2V0Lngo
KSwgLW9mZnNldC55KCkpOworICAgIHNvdXJjZUxheWVyLT5wYWludEdyYXBoaWNzTGF5ZXJDb250
ZW50cygqY29udGV4dCwgc291cmNlUmVjdCk7CisKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0g
aW1hZ2VCdWZmZXItPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisKKyAgICB1cGRh
dGVDb250ZW50cyhpbWFnZS5nZXQoKSwgdGFyZ2V0UmVjdCwgSW50UG9pbnQoKSwgdXBkYXRlQ29u
dGVudHNGbGFnKTsKIH0KKworfSAvLyBuYW1lc3BhY2UKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaApp
bmRleCAxNDQyMDkzNDk2MTAzNjZmNjg5MDk3NmU2MjBlZDIwNDkyYmI5ZWUyLi4yMmVmZDVmZjc1
MWY3MDlmZjUwOTJmNmQ3Y2E4Y2ZkMGM4Mzg3MTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKQEAgLTQ5LDEw
ICs0OSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJpdG1hcFRleHR1cmVQb29s
OwogY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbTsKK2NsYXNzIEdyYXBoaWNzTGF5ZXI7CiBjbGFz
cyBUZXh0dXJlTWFwcGVyOwogCiAvLyBBIDJEIHRleHR1cmUgdGhhdCBjYW4gYmUgdGhlIHRhcmdl
dCBvZiBzb2Z0d2FyZSBvciBHTCByZW5kZXJpbmcuCi1jbGFzcyBCaXRtYXBUZXh0dXJlICA6IHB1
YmxpYyBSZWZDb3VudGVkPEJpdG1hcFRleHR1cmU+IHsKK2NsYXNzIEJpdG1hcFRleHR1cmUgOiBw
dWJsaWMgUmVmQ291bnRlZDxCaXRtYXBUZXh0dXJlPiB7CiBwdWJsaWM6CiAgICAgZW51bSBGbGFn
IHsKICAgICAgICAgU3VwcG9ydHNBbHBoYSA9IDB4MDEKQEAgLTc1LDYgKzc2LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNvbnRlbnRzKEltYWdlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFBvaW50
JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxhZykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgR3JhcGhpY3NMYXllciosIGNvbnN0IEludFJlY3Qm
IHRhcmdldCwgY29uc3QgSW50UG9pbnQmIG9mZnNldCwgVXBkYXRlQ29udGVudHNGbGFnKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udGVudHMoY29uc3Qgdm9pZCosIGNvbnN0IEludFJlY3Qm
IHRhcmdldCwgY29uc3QgSW50UG9pbnQmIG9mZnNldCwgaW50IGJ5dGVzUGVyTGluZSwgVXBkYXRl
Q29udGVudHNGbGFnKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCA9IDA7
CiAgICAgaW5saW5lIEZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQpAQCAt
MTUxLDcgKzE1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5QYWludGluZyhQ
YWludEZsYWdzID0gMCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFBhaW50aW5nKCkgeyB9CiAK
LSAgICB2aXJ0dWFsIEludFNpemUgbWF4VGV4dHVyZVNpemUoKSBjb25zdCB7IHJldHVybiBJbnRT
aXplKElOVF9NQVgsIElOVF9NQVgpOyB9CisgICAgdmlydHVhbCBJbnRTaXplIG1heFRleHR1cmVT
aXplKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+
IGFjcXVpcmVUZXh0dXJlRnJvbVBvb2woY29uc3QgSW50U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tp
bmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGNlZDgzNjExMmIwZjcxNDUxYzVmNDk4
OWVhYmMzZTkwMGM0ZWFkOC4uNzg4YmIxMmExN2ZlMWM4OGVlNmVlNjYxOWM3YzczNzUxZTFhZGE0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcApAQCAtODAsNiAr
ODAsMjUgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciwgSW1hZ2UqIGltYWcKICAgICBtX3RleHR1cmUtPnVwZGF0ZUNv
bnRlbnRzKGltYWdlLCB0YXJnZXRSZWN0LCBzb3VyY2VPZmZzZXQsIHVwZGF0ZUNvbnRlbnRzRmxh
Zyk7CiB9CiAKK3ZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVN
YXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBjb25zdCBJ
bnRSZWN0JiBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRh
dGVDb250ZW50c0ZsYWcpCit7CisgICAgSW50UmVjdCB0YXJnZXRSZWN0ID0gZW5jbG9zaW5nSW50
UmVjdChtX3JlY3QpOworICAgIHRhcmdldFJlY3QuaW50ZXJzZWN0KGRpcnR5UmVjdCk7CisgICAg
aWYgKHRhcmdldFJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgSW50UG9pbnQg
c291cmNlT2Zmc2V0ID0gdGFyZ2V0UmVjdC5sb2NhdGlvbigpOworCisgICAgLy8gTm9ybWFsaXpl
IHRhcmdldFJlY3QgdG8gdGhlIHRleHR1cmUncyBjb29yZGluYXRlcy4KKyAgICB0YXJnZXRSZWN0
Lm1vdmUoLW1fcmVjdC54KCksIC1tX3JlY3QueSgpKTsKKworICAgIGlmICghbV90ZXh0dXJlKSB7
CisgICAgICAgIG1fdGV4dHVyZSA9IHRleHR1cmVNYXBwZXItPmNyZWF0ZVRleHR1cmUoKTsKKyAg
ICAgICAgbV90ZXh0dXJlLT5yZXNldCh0YXJnZXRSZWN0LnNpemUoKSwgQml0bWFwVGV4dHVyZTo6
U3VwcG9ydHNBbHBoYSk7CisgICAgfQorCisgICAgbV90ZXh0dXJlLT51cGRhdGVDb250ZW50cyh0
ZXh0dXJlTWFwcGVyLCBzb3VyY2VMYXllciwgdGFyZ2V0UmVjdCwgc291cmNlT2Zmc2V0LCB1cGRh
dGVDb250ZW50c0ZsYWcpOworfQorCiB2b2lkIFRleHR1cmVNYXBwZXJUaWxlOjpwYWludChUZXh0
dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrLCBjb25zdCB1bnNpZ25l
ZCBleHBvc2VkRWRnZXMpCiB7CiAgICAgaWYgKHRleHR1cmUoKS5nZXQoKSkKQEAgLTE5Nyw2ICsy
MTYsMTMgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZUNvbnRl
bnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIKICAgICAgICAgbV90aWxlc1tpXS51cGRh
dGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBpbWFnZSwgZGlydHlSZWN0LCB1cGRhdGVDb250ZW50
c0ZsYWcpOwogfQogCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRl
Q29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciogc291
cmNlTGF5ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgdG90YWxTaXplLCBjb25zdCBJbnRSZWN0JiBkaXJ0
eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0Zs
YWcpCit7CisgICAgY3JlYXRlT3JEZXN0cm95VGlsZXNJZk5lZWRlZCh0b3RhbFNpemUsIHRleHR1
cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCksIHRydWUpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV90aWxlcy5zaXplKCk7ICsraSkKKyAgICAgICAgbV90aWxlc1tpXS51cGRhdGVDb250
ZW50cyh0ZXh0dXJlTWFwcGVyLCBzb3VyY2VMYXllciwgZGlydHlSZWN0LCB1cGRhdGVDb250ZW50
c0ZsYWcpOworfQorCiBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJUaWxl
ZEJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX3RpbGVzLnNpemUoKTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmUuaAppbmRleCBhNzA0ZmZkMjNlNzNiYTUzMmU5MWY1ZWZjYjRmMDJlYTE3YWQ5YWEwLi4w
ZGQyZGY0YjE5OGJkMzExZmQ0MWM1NWEzMzc3MjE4NGNkMTRiMzRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgogICAgIGlu
bGluZSB2b2lkIHNldFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KSB7IG1fcmVjdCA9IHJlY3Q7
IH0KIAogICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEltYWdlKiwgY29u
c3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyBVcGRhdGVDYW5N
b2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7CisgICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJl
TWFwcGVyKiwgR3JhcGhpY3NMYXllciosIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpV
cGRhdGVDb250ZW50c0ZsYWcgVXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwogICAg
IHZpcnR1YWwgdm9pZCBwYWludChUZXh0dXJlTWFwcGVyKiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSosIGNvbnN0IHVuc2lnbmVkIGV4cG9zZWRFZGdl
cyk7CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclRpbGUoKSB7IH0KIApAQCAtOTQsNiArOTUs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1
cmUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqKSBPVkVSUklERTsKICAgICB2b2lkIHVwZGF0
ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJbWFnZSosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcpOworICAgIHZvaWQg
dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBGbG9h
dFNpemUmLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFn
KTsKIAogICAgIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkgeyBtX2ltYWdl
ID0gaW1hZ2U7IH0KICAgICB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcnMoYm9vbCBkcmF3c0RlYnVn
Qm9yZGVycykgeyBtX2RyYXdzRGVidWdCb3JkZXJzID0gZHJhd3NEZWJ1Z0JvcmRlcnM7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVySW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAKaW5kZXggNTU3Y2QzMjc2Yjk2YWI0
Mzc3YWEyZDM4N2JkZDdlODQ4MDNlMTRiMC4uYTE1MDg2MTRlMGY4ODU1NWZlYjZlNDg4NTIzOTUw
MTg2ZDY5MWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAKQEAg
LTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCIKIAog
I2luY2x1ZGUgIkZpbHRlckVmZmVjdFJlbmRlcmVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXll
ci5oIgogI2lmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUXQuaCIKICNlbmRp
ZgpAQCAtMjksNiArMzAsOCBAQAogI2lmIFVTRShURVhUVVJFX01BUFBFUikKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorc3RhdGljIGNvbnN0IGludCBzX21heGltdW1BbGxvd2VkSW1hZ2VCdWZmZXJE
aW1lbnNpb24gPSA0MDk2OworCiB2b2lkIEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6dXBkYXRl
Q29udGVudHMoY29uc3Qgdm9pZCogZGF0YSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCwgaW50IGJ5dGVzUGVyTGluZSwgVXBkYXRlQ29udGVu
dHNGbGFnKQogewogI2lmIFBMQVRGT1JNKFFUKQpAQCAtNTQsNiArNTcsMjAgQEAgdm9pZCBCaXRt
YXBUZXh0dXJlSW1hZ2VCdWZmZXI6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqIGRhdGEsIGNv
bnN0IEludFJlY3QmIHQKICNlbmRpZgogfQogCit2b2lkIEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZl
cjo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NM
YXllciogc291cmNlTGF5ZXIsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBv
aW50JiBzb3VyY2VPZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxhZykKK3sKKyAgICBHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQgPSBtX2ltYWdlLT5jb250ZXh0KCk7CisKKyAgICBjb250ZXh0LT5jbGVh
clJlY3QodGFyZ2V0UmVjdCk7CisKKyAgICBJbnRSZWN0IHNvdXJjZVJlY3QodGFyZ2V0UmVjdCk7
CisgICAgc291cmNlUmVjdC5zZXRMb2NhdGlvbihzb3VyY2VPZmZzZXQpOworICAgIGNvbnRleHQt
PnNhdmUoKTsKKyAgICBjb250ZXh0LT50cmFuc2xhdGUodGFyZ2V0UmVjdC54KCkgLSBzb3VyY2VP
ZmZzZXQueCgpLCB0YXJnZXRSZWN0LnkoKSAtIHNvdXJjZU9mZnNldC55KCkpOworICAgIHNvdXJj
ZUxheWVyLT5wYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cygqY29udGV4dCwgc291cmNlUmVjdCk7
CisgICAgY29udGV4dC0+cmVzdG9yZSgpOworfQorCiB2b2lkIEJpdG1hcFRleHR1cmVJbWFnZUJ1
ZmZlcjo6ZGlkUmVzZXQoKQogewogICAgIG1faW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNv
bnRlbnRTaXplKCkpOwpAQCAtNjQsNiArODEsMTEgQEAgdm9pZCBCaXRtYXBUZXh0dXJlSW1hZ2VC
dWZmZXI6OnVwZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgdGFyZ2UK
ICAgICBtX2ltYWdlLT5jb250ZXh0KCktPmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgdGFyZ2V0UmVjdCwgSW50UmVjdChvZmZzZXQsIHRhcmdldFJlY3Quc2l6ZSgpKSwgQ29t
cG9zaXRlQ29weSk7CiB9CiAKK0ludFNpemUgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjptYXhU
ZXh0dXJlU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEludFNpemUoc19tYXhpbXVtQWxsb3dl
ZEltYWdlQnVmZmVyRGltZW5zaW9uLCBzX21heGltdW1BbGxvd2VkSW1hZ2VCdWZmZXJEaW1lbnNp
b24pOworfQorCiB2b2lkIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6YmVnaW5DbGlwKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsK
ICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBjdXJyZW50Q29udGV4dCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5oCmluZGV4IDkxZmY5YjAwNThhMGNkZjM1MzQ3MDc1
YzViMmQ0YzdjZmZjMTUwNTUuLjlkZTZkNGNiZDVlYjE3ZTkzNDg4MDE4YTYyYTcxMzFkODk3Mzg0
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgKQEAgLTM1LDYgKzM1LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9p
bWFnZTsgfQogICAgIGlubGluZSBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCgpIHsg
cmV0dXJuIG1faW1hZ2UgPyBtX2ltYWdlLT5jb250ZXh0KCkgOiAwOyB9CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNvbnRlbnRzKEltYWdlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFBvaW50
JiwgVXBkYXRlQ29udGVudHNGbGFnKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udGVudHMo
VGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNv
bnN0IEludFBvaW50JiBvZmZzZXQsIFVwZGF0ZUNvbnRlbnRzRmxhZyk7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNv
bnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQsIGludCBieXRlc1BlckxpbmUsIFVwZGF0ZUNvbnRl
bnRzRmxhZyk7CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIFBhc3NSZWZQdHI8Qml0bWFw
VGV4dHVyZT4gYXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXIqLCBjb25zdCBCaXRtYXBUZXh0dXJl
JiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwpAQCAtNjUsNiArNjYsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGJlZ2luQ2xpcChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNv
bnN0IEZsb2F0UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBiaW5kU3VyZmFjZShC
aXRtYXBUZXh0dXJlKiBzdXJmYWNlKSBPVkVSUklERSB7IG1fY3VycmVudFN1cmZhY2UgPSBzdXJm
YWNlO30KICAgICB2aXJ0dWFsIHZvaWQgZW5kQ2xpcCgpIE9WRVJSSURFIHsgZ3JhcGhpY3NDb250
ZXh0KCktPnJlc3RvcmUoKTsgfQorICAgIHZpcnR1YWwgSW50U2l6ZSBtYXhUZXh0dXJlU2l6ZSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBjcmVhdGVUZXh0
dXJlKCkgT1ZFUlJJREUgeyByZXR1cm4gQml0bWFwVGV4dHVyZUltYWdlQnVmZmVyOjpjcmVhdGUo
KTsgfQogCiAgICAgaW5saW5lIEdyYXBoaWNzQ29udGV4dCogY3VycmVudENvbnRleHQoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>