<?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>37310</bug_id>
          
          <creation_ts>2010-04-08 23:15:35 -0700</creation_ts>
          <short_desc>[Chromium] Support HTML5 &lt;progress&gt; element on Linux.</short_desc>
          <delta_ts>2010-06-02 21:46:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>37307</blocked>
    
    <blocked>40045</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>210572</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-04-08 23:15:35 -0700</bug_when>
    <thetext>Porting &lt;progress&gt; to Chromium Linux.
Note that chromium has platform-specific rendering code.
So we need bugs for each platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233024</commentid>
    <comment_count>1</comment_count>
      <attachid>57613</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-01 18:42:22 -0700</bug_when>
    <thetext>Created attachment 57613
patch v0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233025</commentid>
    <comment_count>2</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-01 18:48:26 -0700</bug_when>
    <thetext>A change on Chromium side is here: http://codereview.chromium.org/2478002</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233031</commentid>
    <comment_count>3</comment_count>
      <attachid>57613</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-01 19:12:29 -0700</bug_when>
    <thetext>Comment on attachment 57613
patch v0

Please update WebKit source and regenerate the patch.

Could you split the patch into two parts? graphics/skia change and RenderThemeChromium* change.

WebCore/ChangeLog:12
 +          an image resampling mode. across multiple paintSkBitmap() calls.
You probably want to remove &quot;.&quot; after &quot;mode&quot;?


WebCore/platform/graphics/skia/PlatformContextSkia.cpp:648
 +      const float kFractionalChangeThreshold = 0.025f;
We don&apos;t prepend &quot;k&quot; to constant values though I know you didn&apos;t write this code.


r- because of svn-apply failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233109</commentid>
    <comment_count>4</comment_count>
      <attachid>57630</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-02 00:02:40 -0700</bug_when>
    <thetext>Created attachment 57630
patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233111</commentid>
    <comment_count>5</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-02 00:05:05 -0700</bug_when>
    <thetext>Hi, Kent-san thank you for reviewing.
I updated and rebased the patch

&gt; Could you split the patch into two parts? graphics/skia change and RenderThemeChromium* change.
OK. I split skia change out to Bug 40045, whose patch will come shortly.
Other feedback will be taken on that patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233248</commentid>
    <comment_count>6</comment_count>
      <attachid>57630</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-02 06:58:55 -0700</bug_when>
    <thetext>Comment on attachment 57630
patch v1

WebCore/rendering/RenderThemeChromiumSkia.cpp:775
 +  static const int progressDeltaPixelsPerSecond = 100;
Please add comments about how did you determine these values.


WebCore/rendering/RenderThemeChromiumSkia.cpp:810
 +      return progressAnimationInterval*progressAnimationFrmaes*2; // &quot;2&quot; for back and forth
Add spaces around *.


WebCore/rendering/RenderThemeChromiumSkia.cpp:826
 +      paintInfo.context-&gt;drawTiledImage(barImage, renderObject-&gt;style()-&gt;colorSpace(), rect, IntPoint(0, 0), barTileSize);
We had better assign renderObject-&gt;style()-&gt;colorSpace() to a variable because it is used multiple times.


WebCore/rendering/RenderThemeChromiumSkia.h:126
 +          IntRect determinateProgressValueRectFor(RenderProgress*, const IntRect&amp;) const;
We should make these internal functions to private or protected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233535</commentid>
    <comment_count>7</comment_count>
      <attachid>57720</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-02 17:53:25 -0700</bug_when>
    <thetext>Created attachment 57720
patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233538</commentid>
    <comment_count>8</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-02 17:55:40 -0700</bug_when>
    <thetext>Hi Kent-san, thank you for reviewing!
I updated the patch.

(In reply to comment #6)
&gt; (From update of attachment 57630 [details])
&gt; WebCore/rendering/RenderThemeChromiumSkia.cpp:775
&gt;  +  static const int progressDeltaPixelsPerSecond = 100;
&gt; Please add comments about how did you determine these values.
Added comment.

&gt; WebCore/rendering/RenderThemeChromiumSkia.cpp:810
&gt;  +      return progressAnimationInterval*progressAnimationFrmaes*2; // &quot;2&quot; for back and forth
&gt; Add spaces around *.
Done.

&gt; 
&gt; 
&gt; WebCore/rendering/RenderThemeChromiumSkia.cpp:826
&gt;  +      paintInfo.context-&gt;drawTiledImage(barImage, renderObject-&gt;style()-&gt;colorSpace(), rect, IntPoint(0, 0), barTileSize);
&gt; We had better assign renderObject-&gt;style()-&gt;colorSpace() to a variable because it is used multiple times.
Done.

&gt; 
&gt; 
&gt; WebCore/rendering/RenderThemeChromiumSkia.h:126
&gt;  +          IntRect determinateProgressValueRectFor(RenderProgress*, const IntRect&amp;) const;
&gt; We should make these internal functions to private or protected.
Moved to protected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233602</commentid>
    <comment_count>9</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-02 21:46:54 -0700</bug_when>
    <thetext>Committed r60604: &lt;http://trac.webkit.org/changeset/60604&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57613</attachid>
            <date>2010-06-01 18:42:22 -0700</date>
            <delta_ts>2010-06-02 00:02:33 -0700</delta_ts>
            <desc>patch v0</desc>
            <filename>bug-37310-20100602094219.patch</filename>
            <type>text/plain</type>
            <size>27927</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWFlMGQ5MzRmZTY4YTdkNThjMTg1YzFiZTAwNThkYTc1Njg5Y2Q4OC4uNTE2ODE1OGFlZjhhM2E1
MjE3ZWM1YzllNzc3YTJjYTJiMmRkOTZjNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxMC0wNi0wMSAgTU9S
SVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dIFN1cHBvcnQgSFRNTDUgPHByb2dy
ZXNzPiBlbGVtZW50IG9uIExpbnV4LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzczMTAKKyAgICAgICAgCisgICAgICAgIEltcGxlbWVudGVkIFJlbmRl
clRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludFByb2dyZXNzQmFyKCkuCisgICAgICAgIAorICAgICAg
ICBUaGlzIGNoYW5nZSBhbHNvIGFkZGVkCisgICAgICAgIFBsYXRmb3JtQ29udGV4dFNraWE6OnNl
dEltYWdlUmVzYW1wbGluZ0hpbnQoKSB0byBhbGxvdyBjb250cm9sbGluZworICAgICAgICBhbiBp
bWFnZSByZXNhbXBsaW5nIG1vZGUuIGFjcm9zcyBtdWx0aXBsZSBwYWludFNrQml0bWFwKCkgY2Fs
bHMuCisgICAgICAgIFdpdGhvdXQgc3VjaCBjb250cm9sLCBkaWZmZXJlbnQgcmVzYW1wbGluZyBt
b2RlcyBjYW4gYmUgY2hvb3NlZAorICAgICAgICBmb3IgZWFjaCBpbWFnZXMgZm9yIHRoZSBzYW1l
IHByb2dyZXNzIGJhciwgd2hpY2ggd291bGQgY2F1c2UKKyAgICAgICAgdmlzdWFsIGFydGlmYWN0
LiAgCisgICAgICAgIAorICAgICAgICBjb21wdXRlUmVzYW1wbGluZ01vZGUoKSBpcyBmYWN0b3Jl
ZCBvdXQgdG8KKyAgICAgICAgUGxhdGZvcm1Db250ZXh0U2tpYTo6aW1hZ2VSZXNhbXBsaW5nTW9k
ZUZvcigpIHRvIHJlZmVyIGdpdmVuCisgICAgICAgIGNvbnRyb2wgcGFyYW1ldGVyLgorICAgICAg
ICAKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBFeHBlY3RhdGlvbnMgd2lsbCBjb21lIGFmdGVyIEVO
QUJMRV9QUk9HUkVTU19CQVIgZ2V0CisgICAgICAgIGVuYWJsZWQgb24gY2hyb21pdW0uCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwYWludFNrQml0bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRT
a2lhLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ29udGV4dFNraWE6OnNhdmUpOgorICAgICAgICAo
UGxhdGZvcm1Db250ZXh0U2tpYTo6aXNQcmludGluZyk6CisgICAgICAgIChQbGF0Zm9ybUNvbnRl
eHRTa2lhOjpzZXRJbWFnZVJlc2FtcGxpbmdIaW50KTogQWRkZWQuCisgICAgICAgIChQbGF0Zm9y
bUNvbnRleHRTa2lhOjpjbGVhckltYWdlUmVzYW1wbGluZ0hpbnQpOiBBZGRlZC4KKyAgICAgICAg
KFBsYXRmb3JtQ29udGV4dFNraWE6Omhhc0ltYWdlUmVzYW1wbGluZ0hpbnQpOiBBZGRlZC4KKyAg
ICAgICAgKFBsYXRmb3JtQ29udGV4dFNraWE6OmltYWdlUmVzYW1wbGluZ01vZGVGb3IpOgorICAg
ICAgICAtIE1vdmVkIGFuZCByZW5hbWVkIGNvbXB1dGVSZXNhbXBsaW5nTW9kZSgpIGZyb20gSW1h
Z2VTa2lhLmNwcC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29u
dGV4dFNraWEuaDoKKyAgICAgICAgKFBsYXRmb3JtQ29udGV4dFNraWE6Oik6IAorICAgICAgICAt
IEFkZGVkIGVudW0gUmVzYW1wbGluZ01vZGUsIG1faW1hZ2VSZXNhbXBsaW5nSGludFNyYywgbV9p
bWFnZVJlc2FtcGxpbmdIaW50RHN0LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNo
cm9taXVtU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtU2tp
YTo6ZGV0ZXJtaW5hdGVQcm9ncmVzc1ZhbHVlUmVjdEZvcik6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmluZGV0ZXJtaW5hdGVQcm9ncmVzc1ZhbHVl
UmVjdEZvcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVNr
aWE6OmFuaW1hdGlvblJlcGVhdEludGVydmFsRm9yUHJvZ3Jlc3NCYXIpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphbmltYXRpb25EdXJhdGlvbkZv
clByb2dyZXNzQmFyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9t
aXVtU2tpYTo6cGFpbnRQcm9ncmVzc0Jhcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVDaHJvbWl1bVNraWE6OnByb2dyZXNzVmFsdWVSZWN0Rm9yKTogQWRkZWQuCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRQcm9ncmVzc0Jhcik6CisKIDIwMTAtMDUtMjggIEVy
aWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
QmFydGguCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VT
a2lhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCmlu
ZGV4IDIxYmE5MzQyYjk2MDBhNDBmNmJmOWJmOWRlOGE5OGJkMzc3ZTcyMDYuLjRhY2U5MmY4ZDE0
ZTM4YjUyNjY3MmIzZjQ5NWFhZDgwMWE2ZGZmNDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCkBAIC01MCw4OSArNTAsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLS8vIFVzZWQgYnkgY29tcHV0ZVJlc2FtcGxpbmdNb2RlIHRvIHRlbGwgaG93
IGJpdG1hcHMgc2hvdWxkIGJlIHJlc2FtcGxlZC4KLWVudW0gUmVzYW1wbGluZ01vZGUgewotICAg
IC8vIE5lYXJlc3QgbmVpZ2hib3IgcmVzYW1wbGluZy4gVXNlZCB3aGVuIHdlIGRldGVjdCB0aGF0
IHRoZSBwYWdlIGlzCi0gICAgLy8gdHJ5aW5nIHRvIG1ha2UgYSBwYXR0ZXJuIGJ5IHN0cmV0Y2hp
bmcgYSBzbWFsbCBiaXRtYXAgdmVyeSBsYXJnZS4KLSAgICBSRVNBTVBMRV9OT05FLAotCi0gICAg
Ly8gRGVmYXVsdCBza2lhIHJlc2FtcGxpbmcuIFVzZWQgZm9yIGxhcmdlIGdyb3dpbmcgb2YgaW1h
Z2VzIHdoZXJlIGhpZ2gKLSAgICAvLyBxdWFsaXR5IHJlc2FtcGxpbmcgZG9lc24ndCBnZXQgdXMg
dmVyeSBtdWNoIGV4Y2VwdCBhIHNsb3dkb3duLgotICAgIFJFU0FNUExFX0xJTkVBUiwKLQotICAg
IC8vIEhpZ2ggcXVhbGl0eSByZXNhbXBsaW5nLgotICAgIFJFU0FNUExFX0FXRVNPTUUsCi19Owot
Ci1zdGF0aWMgUmVzYW1wbGluZ01vZGUgY29tcHV0ZVJlc2FtcGxpbmdNb2RlKGNvbnN0IE5hdGl2
ZUltYWdlU2tpYSYgYml0bWFwLCBpbnQgc3JjV2lkdGgsIGludCBzcmNIZWlnaHQsIGZsb2F0IGRl
c3RXaWR0aCwgZmxvYXQgZGVzdEhlaWdodCkKLXsKLSAgICBpbnQgZGVzdElXaWR0aCA9IHN0YXRp
Y19jYXN0PGludD4oZGVzdFdpZHRoKTsKLSAgICBpbnQgZGVzdElIZWlnaHQgPSBzdGF0aWNfY2Fz
dDxpbnQ+KGRlc3RIZWlnaHQpOwotCi0gICAgLy8gVGhlIHBlcmNlbnQgY2hhbmdlIGJlbG93IHdo
aWNoIHdlIHdpbGwgbm90IHJlc2FtcGxlLiBUaGlzIHVzdWFsbHkgbWVhbnMKLSAgICAvLyBhbiBv
ZmYtYnktb25lIGVycm9yIG9uIHRoZSB3ZWIgcGFnZSwgYW5kIGp1c3QgZG9pbmcgbmVhcmVzdCBu
ZWlnaGJvcgotICAgIC8vIHNhbXBsaW5nIGlzIHVzdWFsbHkgZ29vZCBlbm91Z2guCi0gICAgY29u
c3QgZmxvYXQga0ZyYWN0aW9uYWxDaGFuZ2VUaHJlc2hvbGQgPSAwLjAyNWY7Ci0KLSAgICAvLyBJ
bWFnZXMgc21hbGxlciB0aGFuIHRoaXMgaW4gZWl0aGVyIGRpcmVjdGlvbiBhcmUgY29uc2lkZXJl
ZCAic21hbGwiIGFuZAotICAgIC8vIGFyZSBub3QgcmVzYW1wbGVkIGV2ZXIgKHNlZSBiZWxvdyku
Ci0gICAgY29uc3QgaW50IGtTbWFsbEltYWdlU2l6ZVRocmVzaG9sZCA9IDg7Ci0KLSAgICAvLyBU
aGUgYW1vdW50IGFuIGltYWdlIGNhbiBiZSBzdHJldGNoZWQgaW4gYSBzaW5nbGUgZGlyZWN0aW9u
IGJlZm9yZSB3ZQotICAgIC8vIHNheSB0aGF0IGl0IGlzIGJlaW5nIHN0cmV0Y2hlZCBzbyBtdWNo
IHRoYXQgaXQgbXVzdCBiZSBhIGxpbmUgb3IKLSAgICAvLyBiYWNrZ3JvdW5kIHRoYXQgZG9lc24n
dCBuZWVkIHJlc2FtcGxpbmcuCi0gICAgY29uc3QgZmxvYXQga0xhcmdlU3RyZXRjaCA9IDMuMGY7
Ci0KLSAgICAvLyBGaWd1cmUgb3V0IGlmIHdlIHNob3VsZCByZXNhbXBsZSB0aGlzIGltYWdlLiBX
ZSB0cnkgdG8gcHJ1bmUgb3V0IHNvbWUKLSAgICAvLyBjb21tb24gY2FzZXMgd2hlcmUgcmVzYW1w
bGluZyB3b24ndCBnaXZlIHVzIGFueXRoaW5nLCBzaW5jZSBpdCBpcyBtdWNoCi0gICAgLy8gc2xv
d2VyIHRoYW4gZHJhd2luZyBzdHJldGNoZWQuCi0gICAgaWYgKHNyY1dpZHRoID09IGRlc3RJV2lk
dGggJiYgc3JjSGVpZ2h0ID09IGRlc3RJSGVpZ2h0KSB7Ci0gICAgICAgIC8vIFdlIGRvbid0IG5l
ZWQgdG8gcmVzYW1wbGUgaWYgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYXJlIHRoZSBzYW1l
LgotICAgICAgICByZXR1cm4gUkVTQU1QTEVfTk9ORTsKLSAgICB9Ci0KLSAgICBpZiAoc3JjV2lk
dGggPD0ga1NtYWxsSW1hZ2VTaXplVGhyZXNob2xkCi0gICAgICAgIHx8IHNyY0hlaWdodCA8PSBr
U21hbGxJbWFnZVNpemVUaHJlc2hvbGQKLSAgICAgICAgfHwgZGVzdFdpZHRoIDw9IGtTbWFsbElt
YWdlU2l6ZVRocmVzaG9sZAotICAgICAgICB8fCBkZXN0SGVpZ2h0IDw9IGtTbWFsbEltYWdlU2l6
ZVRocmVzaG9sZCkgewotICAgICAgICAvLyBOZXZlciByZXNhbXBsZSBzbWFsbCBpbWFnZXMuIFRo
ZXNlIGFyZSBvZnRlbiB1c2VkIGZvciBib3JkZXJzIGFuZAotICAgICAgICAvLyBydWxlcyAodGhp
bmsgMXgxIGltYWdlcyB1c2VkIHRvIG1ha2UgbGluZXMpLgotICAgICAgICByZXR1cm4gUkVTQU1Q
TEVfTk9ORTsKLSAgICB9Ci0KLSAgICBpZiAoc3JjSGVpZ2h0ICoga0xhcmdlU3RyZXRjaCA8PSBk
ZXN0SGVpZ2h0IHx8IHNyY1dpZHRoICoga0xhcmdlU3RyZXRjaCA8PSBkZXN0V2lkdGgpIHsKLSAg
ICAgICAgLy8gTGFyZ2UgaW1hZ2UgZGV0ZWN0ZWQuCi0KLSAgICAgICAgLy8gRG9uJ3QgcmVzYW1w
bGUgaWYgaXQgaXMgYmVpbmcgc3RyZXRjaGVkIGEgbG90IGluIG9ubHkgb25lIGRpcmVjdGlvbi4K
LSAgICAgICAgLy8gVGhpcyBpcyB0cnlpbmcgdG8gY2F0Y2ggY2FzZXMgd2hlcmUgc29tZWJvZHkg
aGFzIGNyZWF0ZWQgYSBib3JkZXIKLSAgICAgICAgLy8gKHdoaWNoIG1pZ2h0IGJlIGxhcmdlKSBh
bmQgdGhlbiBpcyBzdHJldGNoaW5nIGl0IHRvIGZpbGwgc29tZSBwYXJ0Ci0gICAgICAgIC8vIG9m
IHRoZSBwYWdlLgotICAgICAgICBpZiAoc3JjV2lkdGggPT0gZGVzdFdpZHRoIHx8IHNyY0hlaWdo
dCA9PSBkZXN0SGVpZ2h0KQotICAgICAgICAgICAgcmV0dXJuIFJFU0FNUExFX05PTkU7Ci0KLSAg
ICAgICAgLy8gVGhlIGltYWdlIGlzIGdyb3dpbmcgYSBsb3QgYW5kIGluIG1vcmUgdGhhbiBvbmUg
ZGlyZWN0aW9uLiBSZXNhbXBsaW5nCi0gICAgICAgIC8vIGlzIHNsb3cgYW5kIGRvZXNuJ3QgZ2l2
ZSB1cyB2ZXJ5IG11Y2ggd2hlbiBncm93aW5nIGEgbG90LgotICAgICAgICByZXR1cm4gUkVTQU1Q
TEVfTElORUFSOwotICAgIH0KLQotICAgIGlmICgoZmFicyhkZXN0V2lkdGggLSBzcmNXaWR0aCkg
LyBzcmNXaWR0aCA8IGtGcmFjdGlvbmFsQ2hhbmdlVGhyZXNob2xkKQotICAgICAgICAmJiAoZmFi
cyhkZXN0SGVpZ2h0IC0gc3JjSGVpZ2h0KSAvIHNyY0hlaWdodCA8IGtGcmFjdGlvbmFsQ2hhbmdl
VGhyZXNob2xkKSkgewotICAgICAgICAvLyBJdCBpcyBkaXNhcHBvaW50aW5nbHkgY29tbW9uIG9u
IHRoZSB3ZWIgZm9yIGltYWdlIHNpemVzIHRvIGJlIG9mZiBieQotICAgICAgICAvLyBvbmUgb3Ig
dHdvIHBpeGVscy4gV2UgZG9uJ3QgYm90aGVyIHJlc2FtcGxpbmcgaWYgdGhlIHNpemUgZGlmZmVy
ZW5jZQotICAgICAgICAvLyBpcyBhIHNtYWxsIGZyYWN0aW9uIG9mIHRoZSBvcmlnaW5hbCBzaXpl
LgotICAgICAgICByZXR1cm4gUkVTQU1QTEVfTk9ORTsKLSAgICB9Ci0KLSAgICAvLyBXaGVuIHRo
ZSBpbWFnZSBpcyBub3QgeWV0IGRvbmUgbG9hZGluZywgdXNlIGxpbmVhci4gV2UgZG9uJ3QgY2Fj
aGUgdGhlCi0gICAgLy8gcGFydGlhbGx5IHJlc2FtcGxlZCBpbWFnZXMsIGFuZCBhcyB0aGV5IGNv
bWUgaW4gaW5jcmVtZW50YWxseSwgaXQgY2F1c2VzCi0gICAgLy8gdXMgdG8gaGF2ZSB0byByZXNh
bXBsZSB0aGUgd2hvbGUgdGhpbmcgZXZlcnkgdGltZS4KLSAgICBpZiAoIWJpdG1hcC5pc0RhdGFD
b21wbGV0ZSgpKQotICAgICAgICByZXR1cm4gUkVTQU1QTEVfTElORUFSOwotCi0gICAgLy8gRXZl
cnl0aGluZyBlbHNlIGdldHMgcmVzYW1wbGVkLgotICAgIHJldHVybiBSRVNBTVBMRV9BV0VTT01F
OwotfQotCiAvLyBEcmF3cyB0aGUgZ2l2ZW4gYml0bWFwIHRvIHRoZSBnaXZlbiBjYW52YXMuIFRo
ZSBzdWJzZXQgb2YgdGhlIHNvdXJjZSBiaXRtYXAKIC8vIGlkZW50aWZpZWQgYnkgc3JjX3JlY3Qg
aXMgZHJhd24gdG8gdGhlIGdpdmVuIGRlc3RpbmF0aW9uIHJlY3QuIFRoZSBiaXRtYXAKIC8vIHdp
bGwgYmUgcmVzYW1wbGVkIHRvIHJlc2FtcGxlX3dpZHRoICogcmVzYW1wbGVfaGVpZ2h0ICh0aGlz
IGlzIHRoZSBzaXplIG9mCkBAIC0yMTUsNyArMTMyLDcgQEAgc3RhdGljIHZvaWQgZHJhd1Jlc2Ft
cGxlZEJpdG1hcChTa0NhbnZhcyYgY2FudmFzLCBTa1BhaW50JiBwYWludCwgY29uc3QgTmF0aXZl
SW0KICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50U2tCaXRtYXAoUGxhdGZvcm1Db250ZXh0
U2tpYSogcGxhdGZvcm1Db250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZVNraWEmIGJpdG1hcCwgY29u
c3QgU2tJUmVjdCYgc3JjUmVjdCwgY29uc3QgU2tSZWN0JiBkZXN0UmVjdCwgY29uc3QgU2tYZmVy
bW9kZTo6TW9kZSYgY29tcE9wKQorc3RhdGljIHZvaWQgcGFpbnRTa0JpdG1hcChQbGF0Zm9ybUNv
bnRleHRTa2lhKiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlU2tpYSYgYml0bWFw
LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBTa1hmZXJtb2RlOjpNb2RlJiBjb21wT3ApCiB7CiAgICAgU2tQYWludCBwYWludDsKICAgICBw
YWludC5zZXRYZmVybW9kZU1vZGUoY29tcE9wKTsKQEAgLTIyOSwxMSArMTQ2LDkgQEAgc3RhdGlj
IHZvaWQgcGFpbnRTa0JpdG1hcChQbGF0Zm9ybUNvbnRleHRTa2lhKiBwbGF0Zm9ybUNvbnRleHQs
IGNvbnN0IE5hdGl2ZUltYWcKIAogICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzKiBjYW52YXMgPSBw
bGF0Zm9ybUNvbnRleHQtPmNhbnZhcygpOwogCi0gICAgUmVzYW1wbGluZ01vZGUgcmVzYW1wbGlu
ZyA9IHBsYXRmb3JtQ29udGV4dC0+aXNQcmludGluZygpID8gUkVTQU1QTEVfTk9ORSA6Ci0gICAg
ICAgIGNvbXB1dGVSZXNhbXBsaW5nTW9kZShiaXRtYXAsIHNyY1JlY3Qud2lkdGgoKSwgc3JjUmVj
dC5oZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNrU2NhbGFyVG9GbG9h
dChkZXN0UmVjdC53aWR0aCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNrU2Nh
bGFyVG9GbG9hdChkZXN0UmVjdC5oZWlnaHQoKSkpOwotICAgIGlmIChyZXNhbXBsaW5nID09IFJF
U0FNUExFX0FXRVNPTUUpIHsKKyAgICBQbGF0Zm9ybUNvbnRleHRTa2lhOjpSZXNhbXBsaW5nTW9k
ZSByZXNhbXBsaW5nCisgICAgICAgID0gcGxhdGZvcm1Db250ZXh0LT5pbWFnZVJlc2FtcGxpbmdN
b2RlRm9yKGJpdG1hcCwgc3JjUmVjdC5zaXplKCksIGRlc3RSZWN0LnNpemUoKSk7CisgICAgaWYg
KHJlc2FtcGxpbmcgPT0gUGxhdGZvcm1Db250ZXh0U2tpYTo6UkVTQU1QTEVfQVdFU09NRSkgewog
ICAgICAgICBkcmF3UmVzYW1wbGVkQml0bWFwKCpjYW52YXMsIHBhaW50LCBiaXRtYXAsIHNyY1Jl
Y3QsIGRlc3RSZWN0KTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBObyByZXNhbXBsaW5nIG5l
Y2Vzc2FyeSwgd2UgY2FuIGp1c3QgZHJhdyB0aGUgYml0bWFwLiBXZSB3YW50IHRvCkBAIC0yNDEs
NyArMTU2LDkgQEAgc3RhdGljIHZvaWQgcGFpbnRTa0JpdG1hcChQbGF0Zm9ybUNvbnRleHRTa2lh
KiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWcKICAgICAgICAgLy8gaXMgc29tZXRo
aW5nIGludGVyZXN0aW5nIGdvaW5nIG9uIHdpdGggdGhlIG1hdHJpeCAobGlrZSBhIHJvdGF0aW9u
KS4KICAgICAgICAgLy8gTm90ZTogZm9yIHNlcmlhbGl6YXRpb24sIHdlIHdpbGwgd2FudCB0byBz
dWJzZXQgdGhlIGJpdG1hcCBmaXJzdCBzbwogICAgICAgICAvLyB3ZSBkb24ndCBzZW5kIGV4dHJh
IHBpeGVscy4KLSAgICAgICAgY2FudmFzLT5kcmF3Qml0bWFwUmVjdChiaXRtYXAsICZzcmNSZWN0
LCBkZXN0UmVjdCwgJnBhaW50KTsKKyAgICAgICAgU2tSZWN0IHNrRGVzdFJlY3QgPSBkZXN0UmVj
dDsKKyAgICAgICAgU2tJUmVjdCBza1NyY1JlY3QgPSBzcmNSZWN0OworICAgICAgICBjYW52YXMt
PmRyYXdCaXRtYXBSZWN0KGJpdG1hcCwgJnNrU3JjUmVjdCwgc2tEZXN0UmVjdCwgJnBhaW50KTsK
ICAgICB9CiB9CiAKQEAgLTMzMCwyMSArMjQ3LDEyIEBAIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKICAgICBmbG9hdCBkZXN0Qml0bWFwV2lkdGgsIGRl
c3RCaXRtYXBIZWlnaHQ7CiAgICAgVHJhbnNmb3JtRGltZW5zaW9ucyhwYXR0ZXJuVHJhbnNmb3Jt
LCBzcmNSZWN0LndpZHRoKCksIHNyY1JlY3QuaGVpZ2h0KCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAmZGVzdEJpdG1hcFdpZHRoLCAmZGVzdEJpdG1hcEhlaWdodCk7Ci0KLSAgICAvLyBDb21w
dXRlIHRoZSByZXNhbXBsaW5nIG1vZGUuCi0gICAgUmVzYW1wbGluZ01vZGUgcmVzYW1wbGluZzsK
LSAgICBpZiAoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmlzUHJpbnRpbmcoKSkKLSAgICAg
IHJlc2FtcGxpbmcgPSBSRVNBTVBMRV9MSU5FQVI7Ci0gICAgZWxzZSB7Ci0gICAgICByZXNhbXBs
aW5nID0gY29tcHV0ZVJlc2FtcGxpbmdNb2RlKCpiaXRtYXAsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNyY1JlY3Qud2lkdGgoKSwgc3JjUmVjdC5oZWlnaHQoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdEJpdG1hcFdpZHRo
LCBkZXN0Qml0bWFwSGVpZ2h0KTsKLSAgICB9Ci0KICAgICAvLyBMb2FkIHRoZSB0cmFuc2Zvcm0g
V2ViS2l0IHJlcXVlc3RlZC4KICAgICBTa01hdHJpeCBtYXRyaXgocGF0dGVyblRyYW5zZm9ybSk7
CiAKLSAgICBpZiAocmVzYW1wbGluZyA9PSBSRVNBTVBMRV9BV0VTT01FKSB7CisgICAgUGxhdGZv
cm1Db250ZXh0U2tpYTo6UmVzYW1wbGluZ01vZGUgcmVzYW1wbGluZworICAgICAgICA9IGNvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpLT5pbWFnZVJlc2FtcGxpbmdNb2RlRm9yKCpiaXRtYXAsIElu
dFNpemUoc3JjUmVjdC53aWR0aCgpLCBzcmNSZWN0LmhlaWdodCgpKSwgZGVzdFJlY3Quc2l6ZSgp
KTsKKyAgICBpZiAocmVzYW1wbGluZyA9PSBQbGF0Zm9ybUNvbnRleHRTa2lhOjpSRVNBTVBMRV9B
V0VTT01FKSB7CiAgICAgICAgIC8vIERvIG5pY2UgcmVzYW1wbGluZy4KICAgICAgICAgU2tCaXRt
YXAgcmVzYW1wbGVkOwogICAgICAgICBpbnQgd2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KGRlc3RC
aXRtYXBXaWR0aCk7CkBAIC0zODUsNyArMjkzLDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAogICAgIFNrUGFpbnQgcGFpbnQ7CiAgICAgcGFpbnQu
c2V0U2hhZGVyKHNoYWRlciktPnVucmVmKCk7CiAgICAgcGFpbnQuc2V0WGZlcm1vZGVNb2RlKFdl
YkNvcmVDb21wb3NpdGVUb1NraWFDb21wb3NpdGUoY29tcG9zaXRlT3ApKTsKLSAgICBwYWludC5z
ZXRGaWx0ZXJCaXRtYXAocmVzYW1wbGluZyA9PSBSRVNBTVBMRV9MSU5FQVIpOworICAgIHBhaW50
LnNldEZpbHRlckJpdG1hcChyZXNhbXBsaW5nID09IFBsYXRmb3JtQ29udGV4dFNraWE6OlJFU0FN
UExFX0xJTkVBUik7CiAKICAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+cGFpbnRTa1Bh
aW50KGRlc3RSZWN0LCBwYWludCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAKaW5kZXggZTBmNmY1ZDlkNjY5NzI2
M2NjMzgyOTU0ZjhhZmM2ZGY2ZDgwNTI0NC4uYjAxNmI4M2NlMzc3ZDE3YWI1NWFkMDEzMmNhMTE5
N2NlZWFkY2FiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1Bs
YXRmb3JtQ29udGV4dFNraWEuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcApAQCAtMjExLDYgKzIxMSw5IEBAIGJvb2wgUGxhdGZv
cm1Db250ZXh0U2tpYTo6aXNEcmF3aW5nVG9JbWFnZUJ1ZmZlcigpIGNvbnN0CiAKIHZvaWQgUGxh
dGZvcm1Db250ZXh0U2tpYTo6c2F2ZSgpCiB7CisgICAgLy8gSW1hZ2UgcmVzYW1wbGluZyBoaW50
IGNhbm5vdCBiZSBzYXZlZC4KKyAgICBBU1NFUlQoIWhhc0ltYWdlUmVzYW1wbGluZ0hpbnQoKSk7
CisKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKCptX3N0YXRlKTsKICAgICBtX3N0YXRlID0gJm1f
c3RhdGVTdGFjay5sYXN0KCk7CiAKQEAgLTU1OCw3ICs1NjEsNyBAQCBjb25zdCBTa0JpdG1hcCog
UGxhdGZvcm1Db250ZXh0U2tpYTo6Yml0bWFwKCkgY29uc3QKICAgICByZXR1cm4gJm1fY2FudmFz
LT5nZXREZXZpY2UoKS0+YWNjZXNzQml0bWFwKGZhbHNlKTsKIH0KIAotYm9vbCBQbGF0Zm9ybUNv
bnRleHRTa2lhOjppc1ByaW50aW5nKCkKK2Jvb2wgUGxhdGZvcm1Db250ZXh0U2tpYTo6aXNQcmlu
dGluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY2FudmFzLT5nZXRUb3BQbGF0Zm9ybURldmlj
ZSgpLklzVmVjdG9yaWFsKCk7CiB9CkBAIC02MTAsMyArNjEzLDk2IEBAIHZvaWQgUGxhdGZvcm1D
b250ZXh0U2tpYTo6YXBwbHlBbnRpQWxpYXNlZENsaXBQYXRocyhXVEY6OlZlY3RvcjxTa1BhdGg+
JiBwYXRocykKIAogICAgIG1fY2FudmFzLT5yZXN0b3JlKCk7CiB9CisKK3ZvaWQgUGxhdGZvcm1D
b250ZXh0U2tpYTo6c2V0SW1hZ2VSZXNhbXBsaW5nSGludChjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBzcmNTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGRzdFNpemUpCit7CisgICAgbV9p
bWFnZVJlc2FtcGxpbmdIaW50U3JjID0gc3JjU2l6ZTsKKyAgICBtX2ltYWdlUmVzYW1wbGluZ0hp
bnREc3QgPSBkc3RTaXplOworfQorCit2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmNsZWFySW1h
Z2VSZXNhbXBsaW5nSGludCgpCit7CisgICAgbV9pbWFnZVJlc2FtcGxpbmdIaW50RHN0ID0gbV9p
bWFnZVJlc2FtcGxpbmdIaW50U3JjID0gV2ViQ29yZTo6SW50U2l6ZSgpOworfQorCitib29sIFBs
YXRmb3JtQ29udGV4dFNraWE6Omhhc0ltYWdlUmVzYW1wbGluZ0hpbnQoKSBjb25zdAoreworICAg
IHJldHVybiAhbV9pbWFnZVJlc2FtcGxpbmdIaW50U3JjLmlzRW1wdHkoKSAmJiAhbV9pbWFnZVJl
c2FtcGxpbmdIaW50RHN0LmlzRW1wdHkoKTsKK30KKworUGxhdGZvcm1Db250ZXh0U2tpYTo6UmVz
YW1wbGluZ01vZGUgUGxhdGZvcm1Db250ZXh0U2tpYTo6aW1hZ2VSZXNhbXBsaW5nTW9kZUZvcihj
b25zdCBOYXRpdmVJbWFnZVNraWEmIGJpdG1hcCwgCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIGdpdmVuU3JjU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBnaXZlbkRzdFNpemUpIGNvbnN0Cit7CisgICAgaWYgKGlzUHJpbnRpbmcoKSkKKyAgICAg
ICAgcmV0dXJuIFJFU0FNUExFX05PTkU7CisgICAgCisgICAgYm9vbCBoYXNIaW50ID0gaGFzSW1h
Z2VSZXNhbXBsaW5nSGludCgpOworICAgIFdlYkNvcmU6OkludFNpemUgc3JjU2l6ZSA9IGhhc0hp
bnQgPyBtX2ltYWdlUmVzYW1wbGluZ0hpbnRTcmMgOiBnaXZlblNyY1NpemU7CisgICAgV2ViQ29y
ZTo6RmxvYXRTaXplIGRzdFNpemUgPSBoYXNIaW50ID8gbV9pbWFnZVJlc2FtcGxpbmdIaW50RHN0
IDogZ2l2ZW5Ec3RTaXplOworCisgICAgV2ViQ29yZTo6SW50U2l6ZSBkc3RJU2l6ZShzdGF0aWNf
Y2FzdDxpbnQ+KGRzdFNpemUud2lkdGgoKSksIHN0YXRpY19jYXN0PGludD4oZHN0U2l6ZS5oZWln
aHQoKSkpOworCisgICAgLy8gVGhlIHBlcmNlbnQgY2hhbmdlIGJlbG93IHdoaWNoIHdlIHdpbGwg
bm90IHJlc2FtcGxlLiBUaGlzIHVzdWFsbHkgbWVhbnMKKyAgICAvLyBhbiBvZmYtYnktb25lIGVy
cm9yIG9uIHRoZSB3ZWIgcGFnZSwgYW5kIGp1c3QgZG9pbmcgbmVhcmVzdCBuZWlnaGJvcgorICAg
IC8vIHNhbXBsaW5nIGlzIHVzdWFsbHkgZ29vZCBlbm91Z2guCisgICAgY29uc3QgZmxvYXQga0Zy
YWN0aW9uYWxDaGFuZ2VUaHJlc2hvbGQgPSAwLjAyNWY7CisKKyAgICAvLyBJbWFnZXMgc21hbGxl
ciB0aGFuIHRoaXMgaW4gZWl0aGVyIGRpcmVjdGlvbiBhcmUgY29uc2lkZXJlZCAic21hbGwiIGFu
ZAorICAgIC8vIGFyZSBub3QgcmVzYW1wbGVkIGV2ZXIgKHNlZSBiZWxvdykuCisgICAgY29uc3Qg
aW50IGtTbWFsbEltYWdlU2l6ZVRocmVzaG9sZCA9IDg7CisKKyAgICAvLyBUaGUgYW1vdW50IGFu
IGltYWdlIGNhbiBiZSBzdHJldGNoZWQgaW4gYSBzaW5nbGUgZGlyZWN0aW9uIGJlZm9yZSB3ZQor
ICAgIC8vIHNheSB0aGF0IGl0IGlzIGJlaW5nIHN0cmV0Y2hlZCBzbyBtdWNoIHRoYXQgaXQgbXVz
dCBiZSBhIGxpbmUgb3IKKyAgICAvLyBiYWNrZ3JvdW5kIHRoYXQgZG9lc24ndCBuZWVkIHJlc2Ft
cGxpbmcuCisgICAgY29uc3QgZmxvYXQga0xhcmdlU3RyZXRjaCA9IDMuMGY7CisKKyAgICAvLyBG
aWd1cmUgb3V0IGlmIHdlIHNob3VsZCByZXNhbXBsZSB0aGlzIGltYWdlLiBXZSB0cnkgdG8gcHJ1
bmUgb3V0IHNvbWUKKyAgICAvLyBjb21tb24gY2FzZXMgd2hlcmUgcmVzYW1wbGluZyB3b24ndCBn
aXZlIHVzIGFueXRoaW5nLCBzaW5jZSBpdCBpcyBtdWNoCisgICAgLy8gc2xvd2VyIHRoYW4gZHJh
d2luZyBzdHJldGNoZWQuCisgICAgaWYgKHNyY1NpemUgPT0gZHN0SVNpemUpIHsKKyAgICAgICAg
Ly8gV2UgZG9uJ3QgbmVlZCB0byByZXNhbXBsZSBpZiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlv
biBhcmUgdGhlIHNhbWUuCisgICAgICAgIHJldHVybiBSRVNBTVBMRV9OT05FOworICAgIH0KKwor
ICAgIGlmIChzcmNTaXplLndpZHRoKCkgPD0ga1NtYWxsSW1hZ2VTaXplVGhyZXNob2xkCisgICAg
ICAgIHx8IHNyY1NpemUuaGVpZ2h0KCkgPD0ga1NtYWxsSW1hZ2VTaXplVGhyZXNob2xkCisgICAg
ICAgIHx8IGRzdFNpemUud2lkdGgoKSA8PSBrU21hbGxJbWFnZVNpemVUaHJlc2hvbGQKKyAgICAg
ICAgfHwgZHN0U2l6ZS5oZWlnaHQoKSA8PSBrU21hbGxJbWFnZVNpemVUaHJlc2hvbGQpIHsKKyAg
ICAgICAgLy8gTmV2ZXIgcmVzYW1wbGUgc21hbGwgaW1hZ2VzLiBUaGVzZSBhcmUgb2Z0ZW4gdXNl
ZCBmb3IgYm9yZGVycyBhbmQKKyAgICAgICAgLy8gcnVsZXMgKHRoaW5rIDF4MSBpbWFnZXMgdXNl
ZCB0byBtYWtlIGxpbmVzKS4KKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtQ29udGV4dFNraWE6OlJF
U0FNUExFX05PTkU7CisgICAgfQorCisgICAgaWYgKHNyY1NpemUuaGVpZ2h0KCkgKiBrTGFyZ2VT
dHJldGNoIDw9IGRzdFNpemUuaGVpZ2h0KCkgfHwgc3JjU2l6ZS53aWR0aCgpICoga0xhcmdlU3Ry
ZXRjaCA8PSBkc3RTaXplLndpZHRoKCkpIHsKKyAgICAgICAgLy8gTGFyZ2UgaW1hZ2UgZGV0ZWN0
ZWQuCisKKyAgICAgICAgLy8gRG9uJ3QgcmVzYW1wbGUgaWYgaXQgaXMgYmVpbmcgc3RyZXRjaGVk
IGEgbG90IGluIG9ubHkgb25lIGRpcmVjdGlvbi4KKyAgICAgICAgLy8gVGhpcyBpcyB0cnlpbmcg
dG8gY2F0Y2ggY2FzZXMgd2hlcmUgc29tZWJvZHkgaGFzIGNyZWF0ZWQgYSBib3JkZXIKKyAgICAg
ICAgLy8gKHdoaWNoIG1pZ2h0IGJlIGxhcmdlKSBhbmQgdGhlbiBpcyBzdHJldGNoaW5nIGl0IHRv
IGZpbGwgc29tZSBwYXJ0CisgICAgICAgIC8vIG9mIHRoZSBwYWdlLgorICAgICAgICBpZiAoc3Jj
U2l6ZS53aWR0aCgpID09IGRzdFNpemUud2lkdGgoKSB8fCBzcmNTaXplLmhlaWdodCgpID09IGRz
dFNpemUuaGVpZ2h0KCkpCisgICAgICAgICAgICByZXR1cm4gUGxhdGZvcm1Db250ZXh0U2tpYTo6
UkVTQU1QTEVfTk9ORTsKKworICAgICAgICAvLyBUaGUgaW1hZ2UgaXMgZ3Jvd2luZyBhIGxvdCBh
bmQgaW4gbW9yZSB0aGFuIG9uZSBkaXJlY3Rpb24uIFJlc2FtcGxpbmcKKyAgICAgICAgLy8gaXMg
c2xvdyBhbmQgZG9lc24ndCBnaXZlIHVzIHZlcnkgbXVjaCB3aGVuIGdyb3dpbmcgYSBsb3QuCisg
ICAgICAgIHJldHVybiBQbGF0Zm9ybUNvbnRleHRTa2lhOjpSRVNBTVBMRV9MSU5FQVI7CisgICAg
fQorCisgICAgaWYgKChmYWJzKGRzdFNpemUud2lkdGgoKSAtIHNyY1NpemUud2lkdGgoKSkgLyBz
cmNTaXplLndpZHRoKCkgPCBrRnJhY3Rpb25hbENoYW5nZVRocmVzaG9sZCkKKyAgICAgICAgJiYg
KGZhYnMoZHN0U2l6ZS5oZWlnaHQoKSAtIHNyY1NpemUuaGVpZ2h0KCkpIC8gc3JjU2l6ZS5oZWln
aHQoKSA8IGtGcmFjdGlvbmFsQ2hhbmdlVGhyZXNob2xkKSkgeworICAgICAgICAvLyBJdCBpcyBk
aXNhcHBvaW50aW5nbHkgY29tbW9uIG9uIHRoZSB3ZWIgZm9yIGltYWdlIHNpemVzIHRvIGJlIG9m
ZiBieQorICAgICAgICAvLyBvbmUgb3IgdHdvIHBpeGVscy4gV2UgZG9uJ3QgYm90aGVyIHJlc2Ft
cGxpbmcgaWYgdGhlIHNpemUgZGlmZmVyZW5jZQorICAgICAgICAvLyBpcyBhIHNtYWxsIGZyYWN0
aW9uIG9mIHRoZSBvcmlnaW5hbCBzaXplLgorICAgICAgICByZXR1cm4gUGxhdGZvcm1Db250ZXh0
U2tpYTo6UkVTQU1QTEVfTk9ORTsKKyAgICB9CisKKyAgICAvLyBXaGVuIHRoZSBpbWFnZSBpcyBu
b3QgeWV0IGRvbmUgbG9hZGluZywgdXNlIGxpbmVhci4gV2UgZG9uJ3QgY2FjaGUgdGhlCisgICAg
Ly8gcGFydGlhbGx5IHJlc2FtcGxlZCBpbWFnZXMsIGFuZCBhcyB0aGV5IGNvbWUgaW4gaW5jcmVt
ZW50YWxseSwgaXQgY2F1c2VzCisgICAgLy8gdXMgdG8gaGF2ZSB0byByZXNhbXBsZSB0aGUgd2hv
bGUgdGhpbmcgZXZlcnkgdGltZS4KKyAgICBpZiAoIWJpdG1hcC5pc0RhdGFDb21wbGV0ZSgpKQor
ICAgICAgICByZXR1cm4gUGxhdGZvcm1Db250ZXh0U2tpYTo6UkVTQU1QTEVfTElORUFSOworCisg
ICAgLy8gRXZlcnl0aGluZyBlbHNlIGdldHMgcmVzYW1wbGVkLgorICAgIHJldHVybiBQbGF0Zm9y
bUNvbnRleHRTa2lhOjpSRVNBTVBMRV9BV0VTT01FOworfQorCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaAppbmRleCBlNDQ1MjYy
MTJmZjNjMmNmZTQwYWFiODYzZTEzMDdhYjk1YTQ3ODE5Li5mMzdhOWU0ZDRjZmM0NDk0MTUwZWIz
MThhZThjNzYyMjI1ZDcxMTliIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgKQEAgLTQzLDYgKzQzLDggQEAKIAogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAorY2xhc3MgTmF0aXZlSW1hZ2VTa2lhOworCiAvLyBUaGlzIGNs
YXNzIGhvbGRzIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBzdGF0ZSBmb3IgR3JhcGhpY3NDb250ZXh0
LiBXZSBwdXQKIC8vIG1vc3Qgb2Ygb3VyIFNraWEgd3JhcHBlcnMgb24gdGhpcyBjbGFzcy4gSW4g
dGhlb3J5LCBhIGxvdCBvZiB0aGlzIHN0dWZmIGNvdWxkCiAvLyBiZSBtb3ZlZCB0byBHcmFwaGlj
c0NvbnRleHQgZGlyZWN0bHksIGV4Y2VwdCB0aGF0IHNvbWUgY29kZSBleHRlcm5hbCB0byB0aGlz
CkBAIC02Miw2ICs2NCwyMCBAQAogLy8gc3RhdGUgdG8gYmUgcHVzaGVkIGFuZCBwb3BwZWQgYWxv
bmcgd2l0aCB0aGUgYml0bWFwLgogY2xhc3MgUGxhdGZvcm1Db250ZXh0U2tpYSA6IHB1YmxpYyBO
b25jb3B5YWJsZSB7CiBwdWJsaWM6CisgICAgLy8gVXNlZCBieSBjb21wdXRlUmVzYW1wbGluZ01v
ZGUgdG8gdGVsbCBob3cgYml0bWFwcyBzaG91bGQgYmUgcmVzYW1wbGVkLgorICAgIGVudW0gUmVz
YW1wbGluZ01vZGUgeworICAgICAgICAvLyBOZWFyZXN0IG5laWdoYm9yIHJlc2FtcGxpbmcuIFVz
ZWQgd2hlbiB3ZSBkZXRlY3QgdGhhdCB0aGUgcGFnZSBpcworICAgICAgICAvLyB0cnlpbmcgdG8g
bWFrZSBhIHBhdHRlcm4gYnkgc3RyZXRjaGluZyBhIHNtYWxsIGJpdG1hcCB2ZXJ5IGxhcmdlLgor
ICAgICAgICBSRVNBTVBMRV9OT05FLAorCisgICAgICAgIC8vIERlZmF1bHQgc2tpYSByZXNhbXBs
aW5nLiBVc2VkIGZvciBsYXJnZSBncm93aW5nIG9mIGltYWdlcyB3aGVyZSBoaWdoCisgICAgICAg
IC8vIHF1YWxpdHkgcmVzYW1wbGluZyBkb2Vzbid0IGdldCB1cyB2ZXJ5IG11Y2ggZXhjZXB0IGEg
c2xvd2Rvd24uCisgICAgICAgIFJFU0FNUExFX0xJTkVBUiwKKworICAgICAgICAvLyBIaWdoIHF1
YWxpdHkgcmVzYW1wbGluZy4KKyAgICAgICAgUkVTQU1QTEVfQVdFU09NRSwKKyAgICB9OworCiAg
ICAgLy8gRm9yIHByaW50aW5nLCB0aGVyZSBzaG91bGRuJ3QgYmUgYW55IGNhbnZhcy4gY2FudmFz
IGNhbiBiZSBOVUxMLiBJZiB5b3UKICAgICAvLyBzdXBwbHkgYSBOVUxMIGNhbnZhcywgeW91IGNh
biBhbHNvIGNhbGwgc2V0Q2FudmFzIGxhdGVyLgogICAgIFBsYXRmb3JtQ29udGV4dFNraWEoc2tp
YTo6UGxhdGZvcm1DYW52YXMqKTsKQEAgLTE2NSw3ICsxODEsMTIgQEAgcHVibGljOgogICAgIC8v
IFJldHVybnMgaWYgdGhlIGNvbnRleHQgaXMgYSBwcmludGluZyBjb250ZXh0IGluc3RlYWQgb2Yg
YSBkaXNwbGF5CiAgICAgLy8gY29udGV4dC4gQml0bWFwIHNob3VsZG4ndCBiZSByZXNhbXBsZWQg
d2hlbiBwcmludGluZyB0byBrZWVwIHRoZSBiZXN0CiAgICAgLy8gcG9zc2libGUgcXVhbGl0eS4K
LSAgICBib29sIGlzUHJpbnRpbmcoKTsKKyAgICBib29sIGlzUHJpbnRpbmcoKSBjb25zdDsKKwor
ICAgIHZvaWQgc2V0SW1hZ2VSZXNhbXBsaW5nSGludChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBz
cmNTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGRzdFNpemUpOworICAgIHZvaWQgY2xl
YXJJbWFnZVJlc2FtcGxpbmdIaW50KCk7CisgICAgYm9vbCBoYXNJbWFnZVJlc2FtcGxpbmdIaW50
KCkgY29uc3Q7CisgICAgUmVzYW1wbGluZ01vZGUgaW1hZ2VSZXNhbXBsaW5nTW9kZUZvcihjb25z
dCBOYXRpdmVJbWFnZVNraWEmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzcmNTaXplLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIGRzdFNpemUpIGNvbnN0OwogCiBwcml2YXRlOgogI2lmIE9T
KExJTlVYKSB8fCBPUyhXSU5ET1dTKQpAQCAtMTkxLDYgKzIxMiw5IEBAIHByaXZhdGU6CiAgICAg
Ly8gQ3VycmVudCBwYXRoIGluIGdsb2JhbCBjb29yZGluYXRlcy4KICAgICBTa1BhdGggbV9wYXRo
OwogCisgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2ltYWdlUmVzYW1wbGluZ0hpbnRTcmM7CisgICAg
V2ViQ29yZTo6RmxvYXRTaXplIG1faW1hZ2VSZXNhbXBsaW5nSGludERzdDsKKwogI2lmIE9TKFdJ
TkRPV1MpCiAgICAgYm9vbCBtX2RyYXdpbmdUb0ltYWdlQnVmZmVyOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5jcHAgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5jcHAKaW5kZXggMDk1NmUzOGVh
NzFlYTZmYmQ2OWQ2YWU4YmZiYjYzZWY2MGViZWUwMS4uOThkM2JjMmY2ZTlkYWRkMTIxZDYyYTg4
ODMzNjM3ZTRlNTRlMzI2YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVDaHJvbWl1bVNraWEuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hy
b21pdW1Ta2lhLmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiQ2hyb21pdW1Ccmlk
Z2UuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAiQ3VycmVudFRp
bWUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCkBAIC0zNSw2ICszNiw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyTWVkaWFDb250cm9sc0Nocm9taXVt
LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyUHJvZ3Jlc3Mu
aCIKICNpbmNsdWRlICJSZW5kZXJTbGlkZXIuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5o
IgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKQEAgLTc2OCw0ICs3NzAsMTEwIEBAIGludCBSZW5k
ZXJUaGVtZUNocm9taXVtU2tpYTo6bWVudUxpc3RJbnRlcm5hbFBhZGRpbmcoUmVuZGVyU3R5bGUq
IHN0eWxlLCBpbnQgcGFkCiAgICAgcmV0dXJuIHBhZGRpbmc7CiB9CiAKKyNpZiBFTkFCTEUoUFJP
R1JFU1NfVEFHKQorCitzdGF0aWMgY29uc3QgaW50IHByb2dyZXNzRGVsdGFQaXhlbHNQZXJTZWNv
bmQgPSAxMDA7CitzdGF0aWMgY29uc3QgaW50IHByb2dyZXNzQWN0aXZpdHlCbG9ja3MgPSA1Owor
c3RhdGljIGNvbnN0IGludCBwcm9ncmVzc0FuaW1hdGlvbkZybWFlcyA9IDEwOworc3RhdGljIGNv
bnN0IGRvdWJsZSBwcm9ncmVzc0FuaW1hdGlvbkludGVydmFsID0gMC4xMjU7CisKK0ludFJlY3Qg
UmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmRldGVybWluYXRlUHJvZ3Jlc3NWYWx1ZVJlY3RGb3Io
UmVuZGVyUHJvZ3Jlc3MqIHJlbmRlclByb2dyZXNzLCBjb25zdCBJbnRSZWN0JiByZWN0KSBjb25z
dAoreworICAgIGludCBkeCA9IHJlY3Qud2lkdGgoKSAqIHJlbmRlclByb2dyZXNzLT5wb3NpdGlv
bigpOworICAgIGlmIChyZW5kZXJQcm9ncmVzcy0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gUlRM
KQorICAgICAgICByZXR1cm4gSW50UmVjdChyZWN0LngoKSArIHJlY3Qud2lkdGgoKSAtIGR4LCBy
ZWN0LnkoKSwgZHgsIHJlY3QuaGVpZ2h0KCkpOworICAgIHJldHVybiBJbnRSZWN0KHJlY3QueCgp
LCByZWN0LnkoKSwgZHgsIHJlY3QuaGVpZ2h0KCkpOworfQorCitJbnRSZWN0IFJlbmRlclRoZW1l
Q2hyb21pdW1Ta2lhOjppbmRldGVybWluYXRlUHJvZ3Jlc3NWYWx1ZVJlY3RGb3IoUmVuZGVyUHJv
Z3Jlc3MqIHJlbmRlclByb2dyZXNzLCBjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAoreworCisg
ICAgaW50IHZhbHVlV2lkdGggPSByZWN0LndpZHRoKCkgLyBwcm9ncmVzc0FjdGl2aXR5QmxvY2tz
OworICAgIGludCBtb3ZhYmxlV2lkdGggPSByZWN0LndpZHRoKCkgLSB2YWx1ZVdpZHRoOworICAg
IGlmIChtb3ZhYmxlV2lkdGggPD0gMCkKKyAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKKyAgICAK
KyAgICBkb3VibGUgcHJvZ3Jlc3MgPSByZW5kZXJQcm9ncmVzcy0+YW5pbWF0aW9uUHJvZ3Jlc3Mo
KTsKKyAgICBpZiAocHJvZ3Jlc3MgPCAwLjUpCisgICAgICAgIHJldHVybiBJbnRSZWN0KHJlY3Qu
eCgpICsgcHJvZ3Jlc3MgKiAyICogbW92YWJsZVdpZHRoLCByZWN0LnkoKSwgdmFsdWVXaWR0aCwg
cmVjdC5oZWlnaHQoKSk7CisgICAgcmV0dXJuIEludFJlY3QocmVjdC54KCkgKyAoMS4wIC0gcHJv
Z3Jlc3MpICogMiAqIG1vdmFibGVXaWR0aCwgcmVjdC55KCksIHZhbHVlV2lkdGgsIHJlY3QuaGVp
Z2h0KCkpOworfQorCisKK2RvdWJsZSBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6YW5pbWF0aW9u
UmVwZWF0SW50ZXJ2YWxGb3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyopIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHByb2dyZXNzQW5pbWF0aW9uSW50ZXJ2YWw7Cit9CisKK2RvdWJsZSBSZW5kZXJU
aGVtZUNocm9taXVtU2tpYTo6YW5pbWF0aW9uRHVyYXRpb25Gb3JQcm9ncmVzc0JhcihSZW5kZXJQ
cm9ncmVzcyogcmVuZGVyUHJvZ3Jlc3MpIGNvbnN0Cit7CisgICAgcmV0dXJuIHByb2dyZXNzQW5p
bWF0aW9uSW50ZXJ2YWwqcHJvZ3Jlc3NBbmltYXRpb25Gcm1hZXMqMjsgLy8gIjIiIGZvciBiYWNr
IGFuZCBmb3J0aAorfQorCitib29sIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludFByb2dy
ZXNzQmFyKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBSZW5kZXJPYmplY3Q6OlBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIHN0YXRpYyBJ
bWFnZSogYmFySW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImxpbnV4UHJvZ3Jl
c3NCYXIiKS5yZWxlYXNlUmVmKCk7CisgICAgc3RhdGljIEltYWdlKiB2YWx1ZUltYWdlID0gSW1h
Z2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJsaW51eFByb2dyZXNzVmFsdWUiKS5yZWxlYXNlUmVm
KCk7CisgICAgc3RhdGljIEltYWdlKiBsZWZ0Qm9yZGVySW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoImxpbnV4UHJvZ3Jlc3NCb3JkZXJMZWZ0IikucmVsZWFzZVJlZigpOworICAg
IHN0YXRpYyBJbWFnZSogcmlnaHRCb3JkZXJJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZSgibGludXhQcm9ncmVzc0JvcmRlclJpZ2h0IikucmVsZWFzZVJlZigpOworICAgIEFTU0VS
VChiYXJJbWFnZS0+aGVpZ2h0KCkgPT0gdmFsdWVJbWFnZS0+aGVpZ2h0KCkpOworCisKKyAgICBS
ZW5kZXJQcm9ncmVzcyogcmVuZGVyUHJvZ3Jlc3MgPSB0b1JlbmRlclByb2dyZXNzKHJlbmRlck9i
amVjdCk7CisgICAgZG91YmxlIHRpbGVTY2FsZSA9IHN0YXRpY19jYXN0PGRvdWJsZT4ocmVjdC5o
ZWlnaHQoKSkgLyBiYXJJbWFnZS0+aGVpZ2h0KCk7CisgICAgSW50U2l6ZSBiYXJUaWxlU2l6ZShz
dGF0aWNfY2FzdDxpbnQ+KGJhckltYWdlLT53aWR0aCgpICogdGlsZVNjYWxlKSwgcmVjdC5oZWln
aHQoKSk7CisKKyAgICAvLyBEdXJpbmcgcGFpbnRpbmcgbXVsdGlwbGUgaW1hZ2VzIHRvIGRyYXcg
c2luZ2xlIGNvbnRyb2wsIAorICAgIC8vIHdlIG5lZWQgdG8gYWxpZ24gcmVzYW1wbGluZyBzY2hl
bWUgYmV0d2VlbiB0aGVzZSBpbWFnZXMuCisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLT5zZXRJbWFnZVJlc2FtcGxpbmdIaW50KGJhckltYWdlLT5zaXplKCksIHJlY3Qu
c2l6ZSgpKTsKKworICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3VGlsZWRJbWFnZShiYXJJbWFn
ZSwgcmVuZGVyT2JqZWN0LT5zdHlsZSgpLT5jb2xvclNwYWNlKCksIHJlY3QsIEludFBvaW50KDAs
IDApLCBiYXJUaWxlU2l6ZSk7CisKKyAgICBJbnRSZWN0IHZhbHVlUmVjdCA9IHByb2dyZXNzVmFs
dWVSZWN0Rm9yKHJlbmRlclByb2dyZXNzLCByZWN0KTsKKyAgICBpZiAodmFsdWVSZWN0LndpZHRo
KCkpIHsKKworICAgICAgICBJbnRTaXplIHZhbHVlVGlsZVNpemUoc3RhdGljX2Nhc3Q8aW50Pih2
YWx1ZUltYWdlLT53aWR0aCgpICogdGlsZVNjYWxlKSwgdmFsdWVSZWN0LmhlaWdodCgpKTsKKyAg
ICAgICAgaW50IGxlZnRPZmZzZXQgPSB2YWx1ZVJlY3QueCgpIC0gcmVjdC54KCk7CisgICAgICAg
IGludCByb3VuZGVkTGVmdE9mZnNldD0gKGxlZnRPZmZzZXQgLyB2YWx1ZVRpbGVTaXplLndpZHRo
KCkpICogdmFsdWVUaWxlU2l6ZS53aWR0aCgpOworICAgICAgICBpbnQgZHN0TGVmdFZhbHVlV2lk
dGggPSByb3VuZGVkTGVmdE9mZnNldCAtIGxlZnRPZmZzZXQgKyAobGVmdE9mZnNldCAlIHZhbHVl
SW1hZ2UtPndpZHRoKCkpID8gdmFsdWVUaWxlU2l6ZS53aWR0aCgpIDogMDsKKworICAgICAgICBJ
bnRSZWN0IGRzdExlZnRWYWx1ZVJlY3QodmFsdWVSZWN0LngoKSwgdmFsdWVSZWN0LnkoKSwgZHN0
TGVmdFZhbHVlV2lkdGgsIHZhbHVlUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGludCBzcmNMZWZ0
VmFsdWVXaWR0aCA9IGRzdExlZnRWYWx1ZVdpZHRoIC8gdGlsZVNjYWxlOworICAgICAgICBJbnRS
ZWN0IHNyY0xlZnRWYWx1ZVJlY3QodmFsdWVJbWFnZS0+d2lkdGgoKSAtIHNyY0xlZnRWYWx1ZVdp
ZHRoLCAwLCBzcmNMZWZ0VmFsdWVXaWR0aCwgdmFsdWVJbWFnZS0+aGVpZ2h0KCkpOworICAgICAg
ICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKHZhbHVlSW1hZ2UsIHJlbmRlck9iamVjdC0+
c3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBkc3RMZWZ0VmFsdWVSZWN0LCBzcmNMZWZ0VmFsdWVSZWN0
KTsKKworICAgICAgICBpbnQgcmlnaHRPZmZzZXQgPSB2YWx1ZVJlY3QucmlnaHQoKSAtIHJlY3Qu
eCgpOworICAgICAgICBpbnQgcm91bmRlZFJpZ2h0T2Zmc2V0ID0gKHJpZ2h0T2Zmc2V0IC8gdmFs
dWVUaWxlU2l6ZS53aWR0aCgpKSAqIHZhbHVlVGlsZVNpemUud2lkdGgoKTsKKyAgICAgICAgaW50
IGRzdFJpZ2h0VmFsdWVXaWR0aCA9IHJpZ2h0T2Zmc2V0IC0gcm91bmRlZFJpZ2h0T2Zmc2V0Owor
ICAgICAgICBJbnRSZWN0IGRzdFJpZ2h0VmFsdWVSZWN0KHJlY3QueCgpICsgcm91bmRlZFJpZ2h0
T2Zmc2V0LCB2YWx1ZVJlY3QueSgpLCBkc3RSaWdodFZhbHVlV2lkdGgsIHZhbHVlVGlsZVNpemUu
aGVpZ2h0KCkpOworICAgICAgICBpbnQgc3JjUmlnaHRWYWx1ZVdpZHRoID0gZHN0UmlnaHRWYWx1
ZVdpZHRoIC8gdGlsZVNjYWxlOworICAgICAgICBJbnRSZWN0IHNyY1JpZ2h0VmFsdWVSZWN0KDAs
IDAsIHNyY1JpZ2h0VmFsdWVXaWR0aCwgdmFsdWVJbWFnZS0+aGVpZ2h0KCkpOworICAgICAgICBw
YWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKHZhbHVlSW1hZ2UsIHJlbmRlck9iamVjdC0+c3R5
bGUoKS0+Y29sb3JTcGFjZSgpLCBkc3RSaWdodFZhbHVlUmVjdCwgc3JjUmlnaHRWYWx1ZVJlY3Qp
OworICAgICAgICAKKyAgICAgICAgSW50UmVjdCBhbGlnbmVkVmFsdWVSZWN0KGRzdExlZnRWYWx1
ZVJlY3QucmlnaHQoKSwgZHN0TGVmdFZhbHVlUmVjdC55KCksIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZHN0UmlnaHRWYWx1ZVJlY3QueCgpIC0gZHN0TGVmdFZhbHVlUmVjdC5y
aWdodCgpLCBkc3RMZWZ0VmFsdWVSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPmRyYXdUaWxlZEltYWdlKHZhbHVlSW1hZ2UsIHJlbmRlck9iamVjdC0+c3R5bGUoKS0+
Y29sb3JTcGFjZSgpLCBhbGlnbmVkVmFsdWVSZWN0LCBJbnRQb2ludCgwLCAwKSwgdmFsdWVUaWxl
U2l6ZSk7CisgICAgfQorCisgICAgaW50IGRzdExlZnRCb3JkZXJXaWR0aCA9IGxlZnRCb3JkZXJJ
bWFnZS0+d2lkdGgoKSAqIHRpbGVTY2FsZTsKKyAgICBJbnRSZWN0IGRzdExlZnRCb3JkZXJSZWN0
KHJlY3QueCgpLCByZWN0LnkoKSwgZHN0TGVmdEJvcmRlcldpZHRoLCByZWN0LmhlaWdodCgpKTsK
KyAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGxlZnRCb3JkZXJJbWFnZSwgcmVuZGVy
T2JqZWN0LT5zdHlsZSgpLT5jb2xvclNwYWNlKCksIGRzdExlZnRCb3JkZXJSZWN0LCBsZWZ0Qm9y
ZGVySW1hZ2UtPnJlY3QoKSk7CisKKyAgICBpbnQgZHN0UmlnaHRCb3JkZXJXaWR0aCA9IHJpZ2h0
Qm9yZGVySW1hZ2UtPndpZHRoKCkgKiB0aWxlU2NhbGU7CisgICAgSW50UmVjdCBkc3RSaWdodEJv
cmRlclJlY3QocmVjdC5yaWdodCgpIC0gZHN0UmlnaHRCb3JkZXJXaWR0aCwgcmVjdC55KCksIGRz
dFJpZ2h0Qm9yZGVyV2lkdGgsIHJlY3QuaGVpZ2h0KCkpOworICAgIHBhaW50SW5mby5jb250ZXh0
LT5kcmF3SW1hZ2UocmlnaHRCb3JkZXJJbWFnZSwgcmVuZGVyT2JqZWN0LT5zdHlsZSgpLT5jb2xv
clNwYWNlKCksIGRzdFJpZ2h0Qm9yZGVyUmVjdCwgcmlnaHRCb3JkZXJJbWFnZS0+cmVjdCgpKTsK
KworICAgIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2xlYXJJbWFnZVJl
c2FtcGxpbmdIaW50KCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKworSW50UmVjdCBSZW5k
ZXJUaGVtZUNocm9taXVtU2tpYTo6cHJvZ3Jlc3NWYWx1ZVJlY3RGb3IoUmVuZGVyUHJvZ3Jlc3Mq
IHJlbmRlclByb2dyZXNzLCBjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAoreworICAgIHJldHVy
biByZW5kZXJQcm9ncmVzcy0+aXNEZXRlcm1pbmF0ZSgpID8gZGV0ZXJtaW5hdGVQcm9ncmVzc1Zh
bHVlUmVjdEZvcihyZW5kZXJQcm9ncmVzcywgcmVjdCkgOiBpbmRldGVybWluYXRlUHJvZ3Jlc3NW
YWx1ZVJlY3RGb3IocmVuZGVyUHJvZ3Jlc3MsIHJlY3QpOworfQorCisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVDaHJvbWl1bVNraWEuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1T
a2lhLmgKaW5kZXggZGM5MjBiMWNmMjhiYjMyNGM4Y2UwM2I5ZjBkNmQ5MzNhYjAzZTc1ZS4uNTRj
OWExNDZlNTQ3YmYwMzcxMWM2NWEyZmRkNmQ2ZWU3YWE0MjRjMyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuaAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5oCkBAIC0zMiw2ICszMiw4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVuZGVyUHJvZ3Jlc3M7CisKICAgICBjbGFzcyBSZW5k
ZXJUaGVtZUNocm9taXVtU2tpYSA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7CiAgICAgcHVibGljOgog
ICAgICAgICBSZW5kZXJUaGVtZUNocm9taXVtU2tpYSgpOwpAQCAtMTE3LDYgKzExOSwxNSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRyYWNr
KFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmpl
Y3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAor
I2lmIEVOQUJMRShQUk9HUkVTU19UQUcpCisgICAgICAgIHZpcnR1YWwgZG91YmxlIGFuaW1hdGlv
blJlcGVhdEludGVydmFsRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MqKSBjb25zdDsKKyAg
ICAgICAgdmlydHVhbCBkb3VibGUgYW5pbWF0aW9uRHVyYXRpb25Gb3JQcm9ncmVzc0JhcihSZW5k
ZXJQcm9ncmVzcyopIGNvbnN0OworICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRQcm9ncmVzc0Jh
cihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKTsKKyAgICAgICAgSW50UmVjdCBkZXRlcm1pbmF0ZVByb2dyZXNzVmFsdWVSZWN0Rm9y
KFJlbmRlclByb2dyZXNzKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0OworICAgICAgICBJbnRSZWN0
IGluZGV0ZXJtaW5hdGVQcm9ncmVzc1ZhbHVlUmVjdEZvcihSZW5kZXJQcm9ncmVzcyosIGNvbnN0
IEludFJlY3QmKSBjb25zdDsKKyAgICAgICAgSW50UmVjdCBwcm9ncmVzc1ZhbHVlUmVjdEZvcihS
ZW5kZXJQcm9ncmVzcyosIGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyNlbmRpZgorCiAgICAgICAg
IC8vIFRoZXNlIG1ldGhvZHMgZGVmaW5lIHRoZSBwYWRkaW5nIGZvciB0aGUgTWVudUxpc3QncyBp
bm5lciBibG9jay4KICAgICAgICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdMZWZ0
KFJlbmRlclN0eWxlKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgaW50IHBvcHVwSW50ZXJuYWxQ
YWRkaW5nUmlnaHQoUmVuZGVyU3R5bGUqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1XaW4uY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKaW5kZXggY2M3NTcwY2ZiMGFjZDQ3ZGU5Yzc4Yjg0ODY5
ZmQ5OTI0YzJkOGJjNC4uNjUzZWNjNTM0YjA5NmIzNGJlODY3OGMyOTNiNDBhMmQ3NGM3ZTdlMiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAKQEAgLTY4
MCwyMCArNjgwLDkgQEAgdm9pZCBSZW5kZXJUaGVtZUNocm9taXVtV2luOjphZGp1c3RQcm9ncmVz
c0JhclN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHkKIGJvb2wgUmVuZGVyVGhlbWVD
aHJvbWl1bVdpbjo6cGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRl
ck9iamVjdDo6UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIFJlbmRlclBy
b2dyZXNzKiByZW5kZXJQcm9ncmVzcyA9IHRvUmVuZGVyUHJvZ3Jlc3Mobyk7Ci0KLSAgICBJbnRS
ZWN0IHZhbHVlUmVjdDsKLSAgICBpZiAocmVuZGVyUHJvZ3Jlc3MtPmlzRGV0ZXJtaW5hdGUoKSkg
ewotICAgICAgICBpbnQgZHggPSByLndpZHRoKCkgKiByZW5kZXJQcm9ncmVzcy0+cG9zaXRpb24o
KTsKLSAgICAgICAgaWYgKHJlbmRlclByb2dyZXNzLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBS
VEwpCi0gICAgICAgICAgICB2YWx1ZVJlY3QgPSBJbnRSZWN0KHIueCgpICsgci53aWR0aCgpIC0g
ZHgsIHIueSgpLCBkeCwgci5oZWlnaHQoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZh
bHVlUmVjdCA9IEludFJlY3Qoci54KCksIHIueSgpLCBkeCwgci5oZWlnaHQoKSk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgLy8gRm9yIGluZGV0ZXJtaW5hdGUgYmFyLCB2YWx1ZVJlY3QgaXMgaWdu
b3JlZCBhbmQgaXQgaXMgY29tcHV0ZWQgYnkgdGhlIHRoZW1lIGVuZ2luZQotICAgICAgICAvLyBi
ZWNhdXNlIHRoZSBhbmltYXRpb24gaXMgYSBwbGF0Zm9ybSBkZXRhaWwgYW5kIFdlYktpdCBkb2Vz
bid0IG5lZWQgdG8ga25vdyBob3cuCi0gICAgICAgIHZhbHVlUmVjdCA9IEludFJlY3QoMCwgMCwg
MCwgMCk7Ci0gICAgfQotCisgICAgLy8gRm9yIGluZGV0ZXJtaW5hdGUgYmFyLCB2YWx1ZVJlY3Qg
aXMgaWdub3JlZCBhbmQgaXQgaXMgY29tcHV0ZWQgYnkgdGhlIHRoZW1lIGVuZ2luZQorICAgIC8v
IGJlY2F1c2UgdGhlIGFuaW1hdGlvbiBpcyBhIHBsYXRmb3JtIGRldGFpbCBhbmQgV2ViS2l0IGRv
ZXNuJ3QgbmVlZCB0byBrbm93IGhvdy4KKyAgICBJbnRSZWN0IHZhbHVlUmVjdCA9IHJlbmRlclBy
b2dyZXNzLT5pc0RldGVybWluYXRlKCkgPyBkZXRlcm1pYW50ZVByb2dyZXNzVmFsdWVSZWN0Rm9y
KHJlbmRlclByb2dyZXNzLCByKSA6IEludFJlY3QoMCwgMCwgMCwgMCk7CiAgICAgZG91YmxlIGFu
aW1hdGVkU2Vjb25kcyA9IHJlbmRlclByb2dyZXNzLT5hbmltYXRpb25TdGFydFRpbWUoKSA/ICBX
VEY6OmN1cnJlbnRUaW1lKCkgLSByZW5kZXJQcm9ncmVzcy0+YW5pbWF0aW9uU3RhcnRUaW1lKCkg
OiAwOwogICAgIFRoZW1lUGFpbnRlciBwYWludGVyKGkuY29udGV4dCwgcik7CiAgICAgQ2hyb21p
dW1CcmlkZ2U6OnBhaW50UHJvZ3Jlc3NCYXIocGFpbnRlci5jb250ZXh0KCksIHIsIHZhbHVlUmVj
dCwgcmVuZGVyUHJvZ3Jlc3MtPmlzRGV0ZXJtaW5hdGUoKSwgYW5pbWF0ZWRTZWNvbmRzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57630</attachid>
            <date>2010-06-02 00:02:40 -0700</date>
            <delta_ts>2010-06-02 17:53:19 -0700</delta_ts>
            <desc>patch v1</desc>
            <filename>bug-37310-20100602150238.patch</filename>
            <type>text/plain</type>
            <size>11006</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODUwYzQ5OTg2OWRjZWNjMGU0ODQ2NGZkYmEwYmMyZjM1YzgzZTY3Ni4uNjlhNzYyODhlNTMxMWJh
ZjU0MDYwMGFkMThhYTg3NTEzNzRlYThiZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wNi0wMSAgTU9S
SVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dIFN1cHBvcnQgSFRNTDUgPHByb2dy
ZXNzPiBlbGVtZW50IG9uIExpbnV4LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzczMTAKKyAgICAgICAgCisgICAgICAgIEltcGxlbWVudGVkIFJlbmRl
clRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludFByb2dyZXNzQmFyKCksIGV4dHJhY2luZworICAgICAg
ICBkZXRlcm1pbmF0ZVByb2dyZXNzVmFsdWVSZWN0Rm9yKCkgZnJvbSBSZW5kZXJUaGVtZUNocm9t
aXVtV2luIHRvCisgICAgICAgIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhCisgICAgICAgIAorICAg
ICAgICBObyBuZXcgdGVzdHMuIEV4cGVjdGF0aW9ucyB3aWxsIGNvbWUgYWZ0ZXIgRU5BQkxFX1BS
T0dSRVNTX0JBUiBnZXQKKyAgICAgICAgZW5hYmxlZCBvbiBjaHJvbWl1bS4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6ZGV0ZXJtaW5hdGVQcm9ncmVzc1ZhbHVlUmVjdEZv
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6aW5kZXRlcm1p
bmF0ZVByb2dyZXNzVmFsdWVSZWN0Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
Q2hyb21pdW1Ta2lhOjphbmltYXRpb25SZXBlYXRJbnRlcnZhbEZvclByb2dyZXNzQmFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphbmltYXRpb25EdXJhdGlv
bkZvclByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1T
a2lhOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hy
b21pdW1Ta2lhOjpwcm9ncmVzc1ZhbHVlUmVjdEZvcik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ2hyb21pdW1Ta2lhLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVdp
bjo6cGFpbnRQcm9ncmVzc0Jhcik6CisKIDIwMTAtMDYtMDEgIE5vJ2FtIFJvc2VudGhhbCAgPG5v
YW0ucm9zZW50aGFsQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJv
aGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1Ta2lhLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21p
dW1Ta2lhLmNwcAppbmRleCAwOTU2ZTM4ZWE3MWVhNmZiZDY5ZDZhZThiZmJiNjNlZjYwZWJlZTAx
Li45MjIyMTZkNDRhY2NhYjg1YjAxODA5MWEzMjJiNWJiZmZkNGUwNjk3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5jcHAKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAKICNpbmNsdWRlICJDaHJvbWl1bUJyaWRnZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29y
ZHMuaCIKKyNpbmNsdWRlICJDdXJyZW50VGltZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKQEAgLTM1LDYgKzM2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJS
ZW5kZXJNZWRpYUNvbnRyb2xzQ2hyb21pdW0uaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
KyNpbmNsdWRlICJSZW5kZXJQcm9ncmVzcy5oIgogI2luY2x1ZGUgIlJlbmRlclNsaWRlci5oIgog
I2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgpAQCAt
NzY4LDQgKzc3MCwxMDQgQEAgaW50IFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjptZW51TGlzdElu
dGVybmFsUGFkZGluZyhSZW5kZXJTdHlsZSogc3R5bGUsIGludCBwYWQKICAgICByZXR1cm4gcGFk
ZGluZzsKIH0KIAorI2lmIEVOQUJMRShQUk9HUkVTU19UQUcpCisKK3N0YXRpYyBjb25zdCBpbnQg
cHJvZ3Jlc3NEZWx0YVBpeGVsc1BlclNlY29uZCA9IDEwMDsKK3N0YXRpYyBjb25zdCBpbnQgcHJv
Z3Jlc3NBY3Rpdml0eUJsb2NrcyA9IDU7CitzdGF0aWMgY29uc3QgaW50IHByb2dyZXNzQW5pbWF0
aW9uRnJtYWVzID0gMTA7CitzdGF0aWMgY29uc3QgZG91YmxlIHByb2dyZXNzQW5pbWF0aW9uSW50
ZXJ2YWwgPSAwLjEyNTsKKworSW50UmVjdCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6ZGV0ZXJt
aW5hdGVQcm9ncmVzc1ZhbHVlUmVjdEZvcihSZW5kZXJQcm9ncmVzcyogcmVuZGVyUHJvZ3Jlc3Ms
IGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0Cit7CisgICAgaW50IGR4ID0gcmVjdC53aWR0aCgp
ICogcmVuZGVyUHJvZ3Jlc3MtPnBvc2l0aW9uKCk7CisgICAgaWYgKHJlbmRlclByb2dyZXNzLT5z
dHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBSVEwpCisgICAgICAgIHJldHVybiBJbnRSZWN0KHJlY3Qu
eCgpICsgcmVjdC53aWR0aCgpIC0gZHgsIHJlY3QueSgpLCBkeCwgcmVjdC5oZWlnaHQoKSk7Cisg
ICAgcmV0dXJuIEludFJlY3QocmVjdC54KCksIHJlY3QueSgpLCBkeCwgcmVjdC5oZWlnaHQoKSk7
Cit9CisKK0ludFJlY3QgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmluZGV0ZXJtaW5hdGVQcm9n
cmVzc1ZhbHVlUmVjdEZvcihSZW5kZXJQcm9ncmVzcyogcmVuZGVyUHJvZ3Jlc3MsIGNvbnN0IElu
dFJlY3QmIHJlY3QpIGNvbnN0Cit7CisKKyAgICBpbnQgdmFsdWVXaWR0aCA9IHJlY3Qud2lkdGgo
KSAvIHByb2dyZXNzQWN0aXZpdHlCbG9ja3M7CisgICAgaW50IG1vdmFibGVXaWR0aCA9IHJlY3Qu
d2lkdGgoKSAtIHZhbHVlV2lkdGg7CisgICAgaWYgKG1vdmFibGVXaWR0aCA8PSAwKQorICAgICAg
ICByZXR1cm4gSW50UmVjdCgpOworICAgIAorICAgIGRvdWJsZSBwcm9ncmVzcyA9IHJlbmRlclBy
b2dyZXNzLT5hbmltYXRpb25Qcm9ncmVzcygpOworICAgIGlmIChwcm9ncmVzcyA8IDAuNSkKKyAg
ICAgICAgcmV0dXJuIEludFJlY3QocmVjdC54KCkgKyBwcm9ncmVzcyAqIDIgKiBtb3ZhYmxlV2lk
dGgsIHJlY3QueSgpLCB2YWx1ZVdpZHRoLCByZWN0LmhlaWdodCgpKTsKKyAgICByZXR1cm4gSW50
UmVjdChyZWN0LngoKSArICgxLjAgLSBwcm9ncmVzcykgKiAyICogbW92YWJsZVdpZHRoLCByZWN0
LnkoKSwgdmFsdWVXaWR0aCwgcmVjdC5oZWlnaHQoKSk7Cit9CisKKworZG91YmxlIFJlbmRlclRo
ZW1lQ2hyb21pdW1Ta2lhOjphbmltYXRpb25SZXBlYXRJbnRlcnZhbEZvclByb2dyZXNzQmFyKFJl
bmRlclByb2dyZXNzKikgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvZ3Jlc3NBbmltYXRpb25JbnRl
cnZhbDsKK30KKworZG91YmxlIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphbmltYXRpb25EdXJh
dGlvbkZvclByb2dyZXNzQmFyKFJlbmRlclByb2dyZXNzKiByZW5kZXJQcm9ncmVzcykgY29uc3QK
K3sKKyAgICByZXR1cm4gcHJvZ3Jlc3NBbmltYXRpb25JbnRlcnZhbCpwcm9ncmVzc0FuaW1hdGlv
bkZybWFlcyoyOyAvLyAiMiIgZm9yIGJhY2sgYW5kIGZvcnRoCit9CisKK2Jvb2wgUmVuZGVyVGhl
bWVDaHJvbWl1bVNraWE6OnBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiByZW5kZXJPYmpl
Y3QsIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJl
Y3QmIHJlY3QpCit7CisgICAgc3RhdGljIEltYWdlKiBiYXJJbWFnZSA9IEltYWdlOjpsb2FkUGxh
dGZvcm1SZXNvdXJjZSgibGludXhQcm9ncmVzc0JhciIpLnJlbGVhc2VSZWYoKTsKKyAgICBzdGF0
aWMgSW1hZ2UqIHZhbHVlSW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImxpbnV4
UHJvZ3Jlc3NWYWx1ZSIpLnJlbGVhc2VSZWYoKTsKKyAgICBzdGF0aWMgSW1hZ2UqIGxlZnRCb3Jk
ZXJJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgibGludXhQcm9ncmVzc0JvcmRl
ckxlZnQiKS5yZWxlYXNlUmVmKCk7CisgICAgc3RhdGljIEltYWdlKiByaWdodEJvcmRlckltYWdl
ID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJsaW51eFByb2dyZXNzQm9yZGVyUmlnaHQi
KS5yZWxlYXNlUmVmKCk7CisgICAgQVNTRVJUKGJhckltYWdlLT5oZWlnaHQoKSA9PSB2YWx1ZUlt
YWdlLT5oZWlnaHQoKSk7CisKKworICAgIFJlbmRlclByb2dyZXNzKiByZW5kZXJQcm9ncmVzcyA9
IHRvUmVuZGVyUHJvZ3Jlc3MocmVuZGVyT2JqZWN0KTsKKyAgICBkb3VibGUgdGlsZVNjYWxlID0g
c3RhdGljX2Nhc3Q8ZG91YmxlPihyZWN0LmhlaWdodCgpKSAvIGJhckltYWdlLT5oZWlnaHQoKTsK
KyAgICBJbnRTaXplIGJhclRpbGVTaXplKHN0YXRpY19jYXN0PGludD4oYmFySW1hZ2UtPndpZHRo
KCkgKiB0aWxlU2NhbGUpLCByZWN0LmhlaWdodCgpKTsKKworICAgIHBhaW50SW5mby5jb250ZXh0
LT5kcmF3VGlsZWRJbWFnZShiYXJJbWFnZSwgcmVuZGVyT2JqZWN0LT5zdHlsZSgpLT5jb2xvclNw
YWNlKCksIHJlY3QsIEludFBvaW50KDAsIDApLCBiYXJUaWxlU2l6ZSk7CisKKyAgICBJbnRSZWN0
IHZhbHVlUmVjdCA9IHByb2dyZXNzVmFsdWVSZWN0Rm9yKHJlbmRlclByb2dyZXNzLCByZWN0KTsK
KyAgICBpZiAodmFsdWVSZWN0LndpZHRoKCkpIHsKKworICAgICAgICBJbnRTaXplIHZhbHVlVGls
ZVNpemUoc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZUltYWdlLT53aWR0aCgpICogdGlsZVNjYWxlKSwg
dmFsdWVSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgaW50IGxlZnRPZmZzZXQgPSB2YWx1ZVJlY3Qu
eCgpIC0gcmVjdC54KCk7CisgICAgICAgIGludCByb3VuZGVkTGVmdE9mZnNldD0gKGxlZnRPZmZz
ZXQgLyB2YWx1ZVRpbGVTaXplLndpZHRoKCkpICogdmFsdWVUaWxlU2l6ZS53aWR0aCgpOworICAg
ICAgICBpbnQgZHN0TGVmdFZhbHVlV2lkdGggPSByb3VuZGVkTGVmdE9mZnNldCAtIGxlZnRPZmZz
ZXQgKyAobGVmdE9mZnNldCAlIHZhbHVlSW1hZ2UtPndpZHRoKCkpID8gdmFsdWVUaWxlU2l6ZS53
aWR0aCgpIDogMDsKKworICAgICAgICBJbnRSZWN0IGRzdExlZnRWYWx1ZVJlY3QodmFsdWVSZWN0
LngoKSwgdmFsdWVSZWN0LnkoKSwgZHN0TGVmdFZhbHVlV2lkdGgsIHZhbHVlUmVjdC5oZWlnaHQo
KSk7CisgICAgICAgIGludCBzcmNMZWZ0VmFsdWVXaWR0aCA9IGRzdExlZnRWYWx1ZVdpZHRoIC8g
dGlsZVNjYWxlOworICAgICAgICBJbnRSZWN0IHNyY0xlZnRWYWx1ZVJlY3QodmFsdWVJbWFnZS0+
d2lkdGgoKSAtIHNyY0xlZnRWYWx1ZVdpZHRoLCAwLCBzcmNMZWZ0VmFsdWVXaWR0aCwgdmFsdWVJ
bWFnZS0+aGVpZ2h0KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKHZh
bHVlSW1hZ2UsIHJlbmRlck9iamVjdC0+c3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBkc3RMZWZ0VmFs
dWVSZWN0LCBzcmNMZWZ0VmFsdWVSZWN0KTsKKworICAgICAgICBpbnQgcmlnaHRPZmZzZXQgPSB2
YWx1ZVJlY3QucmlnaHQoKSAtIHJlY3QueCgpOworICAgICAgICBpbnQgcm91bmRlZFJpZ2h0T2Zm
c2V0ID0gKHJpZ2h0T2Zmc2V0IC8gdmFsdWVUaWxlU2l6ZS53aWR0aCgpKSAqIHZhbHVlVGlsZVNp
emUud2lkdGgoKTsKKyAgICAgICAgaW50IGRzdFJpZ2h0VmFsdWVXaWR0aCA9IHJpZ2h0T2Zmc2V0
IC0gcm91bmRlZFJpZ2h0T2Zmc2V0OworICAgICAgICBJbnRSZWN0IGRzdFJpZ2h0VmFsdWVSZWN0
KHJlY3QueCgpICsgcm91bmRlZFJpZ2h0T2Zmc2V0LCB2YWx1ZVJlY3QueSgpLCBkc3RSaWdodFZh
bHVlV2lkdGgsIHZhbHVlVGlsZVNpemUuaGVpZ2h0KCkpOworICAgICAgICBpbnQgc3JjUmlnaHRW
YWx1ZVdpZHRoID0gZHN0UmlnaHRWYWx1ZVdpZHRoIC8gdGlsZVNjYWxlOworICAgICAgICBJbnRS
ZWN0IHNyY1JpZ2h0VmFsdWVSZWN0KDAsIDAsIHNyY1JpZ2h0VmFsdWVXaWR0aCwgdmFsdWVJbWFn
ZS0+aGVpZ2h0KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKHZhbHVl
SW1hZ2UsIHJlbmRlck9iamVjdC0+c3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBkc3RSaWdodFZhbHVl
UmVjdCwgc3JjUmlnaHRWYWx1ZVJlY3QpOworICAgICAgICAKKyAgICAgICAgSW50UmVjdCBhbGln
bmVkVmFsdWVSZWN0KGRzdExlZnRWYWx1ZVJlY3QucmlnaHQoKSwgZHN0TGVmdFZhbHVlUmVjdC55
KCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0UmlnaHRWYWx1ZVJlY3Qu
eCgpIC0gZHN0TGVmdFZhbHVlUmVjdC5yaWdodCgpLCBkc3RMZWZ0VmFsdWVSZWN0LmhlaWdodCgp
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdUaWxlZEltYWdlKHZhbHVlSW1hZ2Us
IHJlbmRlck9iamVjdC0+c3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBhbGlnbmVkVmFsdWVSZWN0LCBJ
bnRQb2ludCgwLCAwKSwgdmFsdWVUaWxlU2l6ZSk7CisgICAgfQorCisgICAgaW50IGRzdExlZnRC
b3JkZXJXaWR0aCA9IGxlZnRCb3JkZXJJbWFnZS0+d2lkdGgoKSAqIHRpbGVTY2FsZTsKKyAgICBJ
bnRSZWN0IGRzdExlZnRCb3JkZXJSZWN0KHJlY3QueCgpLCByZWN0LnkoKSwgZHN0TGVmdEJvcmRl
cldpZHRoLCByZWN0LmhlaWdodCgpKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdl
KGxlZnRCb3JkZXJJbWFnZSwgcmVuZGVyT2JqZWN0LT5zdHlsZSgpLT5jb2xvclNwYWNlKCksIGRz
dExlZnRCb3JkZXJSZWN0LCBsZWZ0Qm9yZGVySW1hZ2UtPnJlY3QoKSk7CisKKyAgICBpbnQgZHN0
UmlnaHRCb3JkZXJXaWR0aCA9IHJpZ2h0Qm9yZGVySW1hZ2UtPndpZHRoKCkgKiB0aWxlU2NhbGU7
CisgICAgSW50UmVjdCBkc3RSaWdodEJvcmRlclJlY3QocmVjdC5yaWdodCgpIC0gZHN0UmlnaHRC
b3JkZXJXaWR0aCwgcmVjdC55KCksIGRzdFJpZ2h0Qm9yZGVyV2lkdGgsIHJlY3QuaGVpZ2h0KCkp
OworICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UocmlnaHRCb3JkZXJJbWFnZSwgcmVu
ZGVyT2JqZWN0LT5zdHlsZSgpLT5jb2xvclNwYWNlKCksIGRzdFJpZ2h0Qm9yZGVyUmVjdCwgcmln
aHRCb3JkZXJJbWFnZS0+cmVjdCgpKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworCitJbnRS
ZWN0IFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpwcm9ncmVzc1ZhbHVlUmVjdEZvcihSZW5kZXJQ
cm9ncmVzcyogcmVuZGVyUHJvZ3Jlc3MsIGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHJlbmRlclByb2dyZXNzLT5pc0RldGVybWluYXRlKCkgPyBkZXRlcm1pbmF0ZVBy
b2dyZXNzVmFsdWVSZWN0Rm9yKHJlbmRlclByb2dyZXNzLCByZWN0KSA6IGluZGV0ZXJtaW5hdGVQ
cm9ncmVzc1ZhbHVlUmVjdEZvcihyZW5kZXJQcm9ncmVzcywgcmVjdCk7Cit9CisKKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUNocm9taXVtU2tpYS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVD
aHJvbWl1bVNraWEuaAppbmRleCBkYzkyMGIxY2YyOGJiMzI0YzhjZTAzYjlmMGQ2ZDkzM2FiMDNl
NzVlLi41NGM5YTE0NmU1NDdiZjAzNzExYzY1YTJmZGQ2ZDZlZTdhYTQyNGMzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5oCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1Ta2lhLmgKQEAgLTMyLDYgKzMyLDggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBSZW5kZXJQcm9ncmVzczsKKwogICAgIGNs
YXNzIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhIDogcHVibGljIFJlbmRlclRoZW1lIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhKCk7CkBAIC0xMTcsNiArMTE5
LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIHBhaW50U2xp
ZGVyVHJhY2soUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRodW1iKFJl
bmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpOwogCisjaWYgRU5BQkxFKFBST0dSRVNTX1RBRykKKyAgICAgICAgdmlydHVhbCBkb3VibGUg
YW5pbWF0aW9uUmVwZWF0SW50ZXJ2YWxGb3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyopIGNv
bnN0OworICAgICAgICB2aXJ0dWFsIGRvdWJsZSBhbmltYXRpb25EdXJhdGlvbkZvclByb2dyZXNz
QmFyKFJlbmRlclByb2dyZXNzKikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFBy
b2dyZXNzQmFyKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpOworICAgICAgICBJbnRSZWN0IGRldGVybWluYXRlUHJvZ3Jlc3NWYWx1
ZVJlY3RGb3IoUmVuZGVyUHJvZ3Jlc3MqLCBjb25zdCBJbnRSZWN0JikgY29uc3Q7CisgICAgICAg
IEludFJlY3QgaW5kZXRlcm1pbmF0ZVByb2dyZXNzVmFsdWVSZWN0Rm9yKFJlbmRlclByb2dyZXNz
KiwgY29uc3QgSW50UmVjdCYpIGNvbnN0OworICAgICAgICBJbnRSZWN0IHByb2dyZXNzVmFsdWVS
ZWN0Rm9yKFJlbmRlclByb2dyZXNzKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0OworI2VuZGlmCisK
ICAgICAgICAgLy8gVGhlc2UgbWV0aG9kcyBkZWZpbmUgdGhlIHBhZGRpbmcgZm9yIHRoZSBNZW51
TGlzdCdzIGlubmVyIGJsb2NrLgogICAgICAgICB2aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFk
ZGluZ0xlZnQoUmVuZGVyU3R5bGUqKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBpbnQgcG9wdXBJ
bnRlcm5hbFBhZGRpbmdSaWdodChSZW5kZXJTdHlsZSopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNwcAppbmRleCBjYzc1NzBjZmIwYWNkNDdkZTlj
NzhiODQ4NjlmZDk5MjRjMmQ4YmM0Li42NTNlY2M1MzRiMDk2YjM0YmU4Njc4YzI5M2I0MGEyZDc0
YzdlN2UyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVt
V2luLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNw
cApAQCAtNjgwLDIwICs2ODAsOSBAQCB2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46OmFkanVz
dFByb2dyZXNzQmFyU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eQogYm9vbCBSZW5k
ZXJUaGVtZUNocm9taXVtV2luOjpwYWludFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCogbywgY29u
c3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAg
UmVuZGVyUHJvZ3Jlc3MqIHJlbmRlclByb2dyZXNzID0gdG9SZW5kZXJQcm9ncmVzcyhvKTsKLQot
ICAgIEludFJlY3QgdmFsdWVSZWN0OwotICAgIGlmIChyZW5kZXJQcm9ncmVzcy0+aXNEZXRlcm1p
bmF0ZSgpKSB7Ci0gICAgICAgIGludCBkeCA9IHIud2lkdGgoKSAqIHJlbmRlclByb2dyZXNzLT5w
b3NpdGlvbigpOwotICAgICAgICBpZiAocmVuZGVyUHJvZ3Jlc3MtPnN0eWxlKCktPmRpcmVjdGlv
bigpID09IFJUTCkKLSAgICAgICAgICAgIHZhbHVlUmVjdCA9IEludFJlY3Qoci54KCkgKyByLndp
ZHRoKCkgLSBkeCwgci55KCksIGR4LCByLmhlaWdodCgpKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgdmFsdWVSZWN0ID0gSW50UmVjdChyLngoKSwgci55KCksIGR4LCByLmhlaWdodCgpKTsK
LSAgICB9IGVsc2UgewotICAgICAgICAvLyBGb3IgaW5kZXRlcm1pbmF0ZSBiYXIsIHZhbHVlUmVj
dCBpcyBpZ25vcmVkIGFuZCBpdCBpcyBjb21wdXRlZCBieSB0aGUgdGhlbWUgZW5naW5lCi0gICAg
ICAgIC8vIGJlY2F1c2UgdGhlIGFuaW1hdGlvbiBpcyBhIHBsYXRmb3JtIGRldGFpbCBhbmQgV2Vi
S2l0IGRvZXNuJ3QgbmVlZCB0byBrbm93IGhvdy4KLSAgICAgICAgdmFsdWVSZWN0ID0gSW50UmVj
dCgwLCAwLCAwLCAwKTsKLSAgICB9Ci0KKyAgICAvLyBGb3IgaW5kZXRlcm1pbmF0ZSBiYXIsIHZh
bHVlUmVjdCBpcyBpZ25vcmVkIGFuZCBpdCBpcyBjb21wdXRlZCBieSB0aGUgdGhlbWUgZW5naW5l
CisgICAgLy8gYmVjYXVzZSB0aGUgYW5pbWF0aW9uIGlzIGEgcGxhdGZvcm0gZGV0YWlsIGFuZCBX
ZWJLaXQgZG9lc24ndCBuZWVkIHRvIGtub3cgaG93LgorICAgIEludFJlY3QgdmFsdWVSZWN0ID0g
cmVuZGVyUHJvZ3Jlc3MtPmlzRGV0ZXJtaW5hdGUoKSA/IGRldGVybWlhbnRlUHJvZ3Jlc3NWYWx1
ZVJlY3RGb3IocmVuZGVyUHJvZ3Jlc3MsIHIpIDogSW50UmVjdCgwLCAwLCAwLCAwKTsKICAgICBk
b3VibGUgYW5pbWF0ZWRTZWNvbmRzID0gcmVuZGVyUHJvZ3Jlc3MtPmFuaW1hdGlvblN0YXJ0VGlt
ZSgpID8gIFdURjo6Y3VycmVudFRpbWUoKSAtIHJlbmRlclByb2dyZXNzLT5hbmltYXRpb25TdGFy
dFRpbWUoKSA6IDA7CiAgICAgVGhlbWVQYWludGVyIHBhaW50ZXIoaS5jb250ZXh0LCByKTsKICAg
ICBDaHJvbWl1bUJyaWRnZTo6cGFpbnRQcm9ncmVzc0JhcihwYWludGVyLmNvbnRleHQoKSwgciwg
dmFsdWVSZWN0LCByZW5kZXJQcm9ncmVzcy0+aXNEZXRlcm1pbmF0ZSgpLCBhbmltYXRlZFNlY29u
ZHMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57720</attachid>
            <date>2010-06-02 17:53:25 -0700</date>
            <delta_ts>2010-06-02 18:19:54 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>bug-37310-20100603085323.patch</filename>
            <type>text/plain</type>
            <size>11297</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODUwYzQ5OTg2OWRjZWNjMGU0ODQ2NGZkYmEwYmMyZjM1YzgzZTY3Ni4uNjlhNzYyODhlNTMxMWJh
ZjU0MDYwMGFkMThhYTg3NTEzNzRlYThiZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wNi0wMSAgTU9S
SVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dIFN1cHBvcnQgSFRNTDUgPHByb2dy
ZXNzPiBlbGVtZW50IG9uIExpbnV4LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzczMTAKKyAgICAgICAgCisgICAgICAgIEltcGxlbWVudGVkIFJlbmRl
clRoZW1lQ2hyb21pdW1Ta2lhOjpwYWludFByb2dyZXNzQmFyKCksIGV4dHJhY2luZworICAgICAg
ICBkZXRlcm1pbmF0ZVByb2dyZXNzVmFsdWVSZWN0Rm9yKCkgZnJvbSBSZW5kZXJUaGVtZUNocm9t
aXVtV2luIHRvCisgICAgICAgIFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhCisgICAgICAgIAorICAg
ICAgICBObyBuZXcgdGVzdHMuIEV4cGVjdGF0aW9ucyB3aWxsIGNvbWUgYWZ0ZXIgRU5BQkxFX1BS
T0dSRVNTX0JBUiBnZXQKKyAgICAgICAgZW5hYmxlZCBvbiBjaHJvbWl1bS4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6ZGV0ZXJtaW5hdGVQcm9ncmVzc1ZhbHVlUmVjdEZv
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6aW5kZXRlcm1p
bmF0ZVByb2dyZXNzVmFsdWVSZWN0Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
Q2hyb21pdW1Ta2lhOjphbmltYXRpb25SZXBlYXRJbnRlcnZhbEZvclByb2dyZXNzQmFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjphbmltYXRpb25EdXJhdGlv
bkZvclByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1T
a2lhOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hy
b21pdW1Ta2lhOjpwcm9ncmVzc1ZhbHVlUmVjdEZvcik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ2hyb21pdW1Ta2lhLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDaHJvbWl1bVdp
bjo6cGFpbnRQcm9ncmVzc0Jhcik6CisKIDIwMTAtMDYtMDEgIE5vJ2FtIFJvc2VudGhhbCAgPG5v
YW0ucm9zZW50aGFsQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJv
aGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1Ta2lhLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21p
dW1Ta2lhLmNwcAppbmRleCAwOTU2ZTM4ZWE3MWVhNmZiZDY5ZDZhZThiZmJiNjNlZjYwZWJlZTAx
Li5lMGRjZjU3MGQzM2Q2NDUwODA4ODhmYzRkNGQ0OTcxZTU1YTNjMjBlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5jcHAKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAKICNpbmNsdWRlICJDaHJvbWl1bUJyaWRnZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29y
ZHMuaCIKKyNpbmNsdWRlICJDdXJyZW50VGltZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKQEAgLTM1LDYgKzM2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJS
ZW5kZXJNZWRpYUNvbnRyb2xzQ2hyb21pdW0uaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
KyNpbmNsdWRlICJSZW5kZXJQcm9ncmVzcy5oIgogI2luY2x1ZGUgIlJlbmRlclNsaWRlci5oIgog
I2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgpAQCAt
NzY4LDQgKzc3MCwxMDggQEAgaW50IFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjptZW51TGlzdElu
dGVybmFsUGFkZGluZyhSZW5kZXJTdHlsZSogc3R5bGUsIGludCBwYWQKICAgICByZXR1cm4gcGFk
ZGluZzsKIH0KIAorI2lmIEVOQUJMRShQUk9HUkVTU19UQUcpCisKKy8vCisvLyBGb2xsb3dpbmcg
dmFsdWVzIGFyZSBjb21lIGZyb20gZGVmYXVsdCBvZiBHVEsrCisvLworc3RhdGljIGNvbnN0IGlu
dCBwcm9ncmVzc0RlbHRhUGl4ZWxzUGVyU2Vjb25kID0gMTAwOworc3RhdGljIGNvbnN0IGludCBw
cm9ncmVzc0FjdGl2aXR5QmxvY2tzID0gNTsKK3N0YXRpYyBjb25zdCBpbnQgcHJvZ3Jlc3NBbmlt
YXRpb25Gcm1hZXMgPSAxMDsKK3N0YXRpYyBjb25zdCBkb3VibGUgcHJvZ3Jlc3NBbmltYXRpb25J
bnRlcnZhbCA9IDAuMTI1OworCitJbnRSZWN0IFJlbmRlclRoZW1lQ2hyb21pdW1Ta2lhOjpkZXRl
cm1pbmF0ZVByb2dyZXNzVmFsdWVSZWN0Rm9yKFJlbmRlclByb2dyZXNzKiByZW5kZXJQcm9ncmVz
cywgY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAgICBpbnQgZHggPSByZWN0LndpZHRo
KCkgKiByZW5kZXJQcm9ncmVzcy0+cG9zaXRpb24oKTsKKyAgICBpZiAocmVuZGVyUHJvZ3Jlc3Mt
PnN0eWxlKCktPmRpcmVjdGlvbigpID09IFJUTCkKKyAgICAgICAgcmV0dXJuIEludFJlY3QocmVj
dC54KCkgKyByZWN0LndpZHRoKCkgLSBkeCwgcmVjdC55KCksIGR4LCByZWN0LmhlaWdodCgpKTsK
KyAgICByZXR1cm4gSW50UmVjdChyZWN0LngoKSwgcmVjdC55KCksIGR4LCByZWN0LmhlaWdodCgp
KTsKK30KKworSW50UmVjdCBSZW5kZXJUaGVtZUNocm9taXVtU2tpYTo6aW5kZXRlcm1pbmF0ZVBy
b2dyZXNzVmFsdWVSZWN0Rm9yKFJlbmRlclByb2dyZXNzKiByZW5kZXJQcm9ncmVzcywgY29uc3Qg
SW50UmVjdCYgcmVjdCkgY29uc3QKK3sKKworICAgIGludCB2YWx1ZVdpZHRoID0gcmVjdC53aWR0
aCgpIC8gcHJvZ3Jlc3NBY3Rpdml0eUJsb2NrczsKKyAgICBpbnQgbW92YWJsZVdpZHRoID0gcmVj
dC53aWR0aCgpIC0gdmFsdWVXaWR0aDsKKyAgICBpZiAobW92YWJsZVdpZHRoIDw9IDApCisgICAg
ICAgIHJldHVybiBJbnRSZWN0KCk7CisgICAgCisgICAgZG91YmxlIHByb2dyZXNzID0gcmVuZGVy
UHJvZ3Jlc3MtPmFuaW1hdGlvblByb2dyZXNzKCk7CisgICAgaWYgKHByb2dyZXNzIDwgMC41KQor
ICAgICAgICByZXR1cm4gSW50UmVjdChyZWN0LngoKSArIHByb2dyZXNzICogMiAqIG1vdmFibGVX
aWR0aCwgcmVjdC55KCksIHZhbHVlV2lkdGgsIHJlY3QuaGVpZ2h0KCkpOworICAgIHJldHVybiBJ
bnRSZWN0KHJlY3QueCgpICsgKDEuMCAtIHByb2dyZXNzKSAqIDIgKiBtb3ZhYmxlV2lkdGgsIHJl
Y3QueSgpLCB2YWx1ZVdpZHRoLCByZWN0LmhlaWdodCgpKTsKK30KKworCitkb3VibGUgUmVuZGVy
VGhlbWVDaHJvbWl1bVNraWE6OmFuaW1hdGlvblJlcGVhdEludGVydmFsRm9yUHJvZ3Jlc3NCYXIo
UmVuZGVyUHJvZ3Jlc3MqKSBjb25zdAoreworICAgIHJldHVybiBwcm9ncmVzc0FuaW1hdGlvbklu
dGVydmFsOworfQorCitkb3VibGUgUmVuZGVyVGhlbWVDaHJvbWl1bVNraWE6OmFuaW1hdGlvbkR1
cmF0aW9uRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MqIHJlbmRlclByb2dyZXNzKSBjb25z
dAoreworICAgIHJldHVybiBwcm9ncmVzc0FuaW1hdGlvbkludGVydmFsICogcHJvZ3Jlc3NBbmlt
YXRpb25Gcm1hZXMgKiAyOyAvLyAiMiIgZm9yIGJhY2sgYW5kIGZvcnRoCit9CisKK2Jvb2wgUmVu
ZGVyVGhlbWVDaHJvbWl1bVNraWE6OnBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiByZW5k
ZXJPYmplY3QsIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEludFJlY3QmIHJlY3QpCit7CisgICAgc3RhdGljIEltYWdlKiBiYXJJbWFnZSA9IEltYWdlOjps
b2FkUGxhdGZvcm1SZXNvdXJjZSgibGludXhQcm9ncmVzc0JhciIpLnJlbGVhc2VSZWYoKTsKKyAg
ICBzdGF0aWMgSW1hZ2UqIHZhbHVlSW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2Uo
ImxpbnV4UHJvZ3Jlc3NWYWx1ZSIpLnJlbGVhc2VSZWYoKTsKKyAgICBzdGF0aWMgSW1hZ2UqIGxl
ZnRCb3JkZXJJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgibGludXhQcm9ncmVz
c0JvcmRlckxlZnQiKS5yZWxlYXNlUmVmKCk7CisgICAgc3RhdGljIEltYWdlKiByaWdodEJvcmRl
ckltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJsaW51eFByb2dyZXNzQm9yZGVy
UmlnaHQiKS5yZWxlYXNlUmVmKCk7CisgICAgQVNTRVJUKGJhckltYWdlLT5oZWlnaHQoKSA9PSB2
YWx1ZUltYWdlLT5oZWlnaHQoKSk7CisKKworICAgIFJlbmRlclByb2dyZXNzKiByZW5kZXJQcm9n
cmVzcyA9IHRvUmVuZGVyUHJvZ3Jlc3MocmVuZGVyT2JqZWN0KTsKKyAgICBkb3VibGUgdGlsZVNj
YWxlID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihyZWN0LmhlaWdodCgpKSAvIGJhckltYWdlLT5oZWln
aHQoKTsKKyAgICBJbnRTaXplIGJhclRpbGVTaXplKHN0YXRpY19jYXN0PGludD4oYmFySW1hZ2Ut
PndpZHRoKCkgKiB0aWxlU2NhbGUpLCByZWN0LmhlaWdodCgpKTsKKyAgICBDb2xvclNwYWNlIGNv
bG9yU3BhY2UgPSByZW5kZXJPYmplY3QtPnN0eWxlKCktPmNvbG9yU3BhY2UoKTsKKworICAgIHBh
aW50SW5mby5jb250ZXh0LT5kcmF3VGlsZWRJbWFnZShiYXJJbWFnZSwgY29sb3JTcGFjZSwgcmVj
dCwgSW50UG9pbnQoMCwgMCksIGJhclRpbGVTaXplKTsKKworICAgIEludFJlY3QgdmFsdWVSZWN0
ID0gcHJvZ3Jlc3NWYWx1ZVJlY3RGb3IocmVuZGVyUHJvZ3Jlc3MsIHJlY3QpOworICAgIGlmICh2
YWx1ZVJlY3Qud2lkdGgoKSkgeworCisgICAgICAgIEludFNpemUgdmFsdWVUaWxlU2l6ZShzdGF0
aWNfY2FzdDxpbnQ+KHZhbHVlSW1hZ2UtPndpZHRoKCkgKiB0aWxlU2NhbGUpLCB2YWx1ZVJlY3Qu
aGVpZ2h0KCkpOworICAgICAgICBpbnQgbGVmdE9mZnNldCA9IHZhbHVlUmVjdC54KCkgLSByZWN0
LngoKTsKKyAgICAgICAgaW50IHJvdW5kZWRMZWZ0T2Zmc2V0PSAobGVmdE9mZnNldCAvIHZhbHVl
VGlsZVNpemUud2lkdGgoKSkgKiB2YWx1ZVRpbGVTaXplLndpZHRoKCk7CisgICAgICAgIGludCBk
c3RMZWZ0VmFsdWVXaWR0aCA9IHJvdW5kZWRMZWZ0T2Zmc2V0IC0gbGVmdE9mZnNldCArIChsZWZ0
T2Zmc2V0ICUgdmFsdWVJbWFnZS0+d2lkdGgoKSkgPyB2YWx1ZVRpbGVTaXplLndpZHRoKCkgOiAw
OworCisgICAgICAgIEludFJlY3QgZHN0TGVmdFZhbHVlUmVjdCh2YWx1ZVJlY3QueCgpLCB2YWx1
ZVJlY3QueSgpLCBkc3RMZWZ0VmFsdWVXaWR0aCwgdmFsdWVSZWN0LmhlaWdodCgpKTsKKyAgICAg
ICAgaW50IHNyY0xlZnRWYWx1ZVdpZHRoID0gZHN0TGVmdFZhbHVlV2lkdGggLyB0aWxlU2NhbGU7
CisgICAgICAgIEludFJlY3Qgc3JjTGVmdFZhbHVlUmVjdCh2YWx1ZUltYWdlLT53aWR0aCgpIC0g
c3JjTGVmdFZhbHVlV2lkdGgsIDAsIHNyY0xlZnRWYWx1ZVdpZHRoLCB2YWx1ZUltYWdlLT5oZWln
aHQoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UodmFsdWVJbWFnZSwg
Y29sb3JTcGFjZSwgZHN0TGVmdFZhbHVlUmVjdCwgc3JjTGVmdFZhbHVlUmVjdCk7CisKKyAgICAg
ICAgaW50IHJpZ2h0T2Zmc2V0ID0gdmFsdWVSZWN0LnJpZ2h0KCkgLSByZWN0LngoKTsKKyAgICAg
ICAgaW50IHJvdW5kZWRSaWdodE9mZnNldCA9IChyaWdodE9mZnNldCAvIHZhbHVlVGlsZVNpemUu
d2lkdGgoKSkgKiB2YWx1ZVRpbGVTaXplLndpZHRoKCk7CisgICAgICAgIGludCBkc3RSaWdodFZh
bHVlV2lkdGggPSByaWdodE9mZnNldCAtIHJvdW5kZWRSaWdodE9mZnNldDsKKyAgICAgICAgSW50
UmVjdCBkc3RSaWdodFZhbHVlUmVjdChyZWN0LngoKSArIHJvdW5kZWRSaWdodE9mZnNldCwgdmFs
dWVSZWN0LnkoKSwgZHN0UmlnaHRWYWx1ZVdpZHRoLCB2YWx1ZVRpbGVTaXplLmhlaWdodCgpKTsK
KyAgICAgICAgaW50IHNyY1JpZ2h0VmFsdWVXaWR0aCA9IGRzdFJpZ2h0VmFsdWVXaWR0aCAvIHRp
bGVTY2FsZTsKKyAgICAgICAgSW50UmVjdCBzcmNSaWdodFZhbHVlUmVjdCgwLCAwLCBzcmNSaWdo
dFZhbHVlV2lkdGgsIHZhbHVlSW1hZ2UtPmhlaWdodCgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPmRyYXdJbWFnZSh2YWx1ZUltYWdlLCBjb2xvclNwYWNlLCBkc3RSaWdodFZhbHVlUmVj
dCwgc3JjUmlnaHRWYWx1ZVJlY3QpOworICAgICAgICAKKyAgICAgICAgSW50UmVjdCBhbGlnbmVk
VmFsdWVSZWN0KGRzdExlZnRWYWx1ZVJlY3QucmlnaHQoKSwgZHN0TGVmdFZhbHVlUmVjdC55KCks
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0UmlnaHRWYWx1ZVJlY3QueCgp
IC0gZHN0TGVmdFZhbHVlUmVjdC5yaWdodCgpLCBkc3RMZWZ0VmFsdWVSZWN0LmhlaWdodCgpKTsK
KyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdUaWxlZEltYWdlKHZhbHVlSW1hZ2UsIGNv
bG9yU3BhY2UsIGFsaWduZWRWYWx1ZVJlY3QsIEludFBvaW50KDAsIDApLCB2YWx1ZVRpbGVTaXpl
KTsKKyAgICB9CisKKyAgICBpbnQgZHN0TGVmdEJvcmRlcldpZHRoID0gbGVmdEJvcmRlckltYWdl
LT53aWR0aCgpICogdGlsZVNjYWxlOworICAgIEludFJlY3QgZHN0TGVmdEJvcmRlclJlY3QocmVj
dC54KCksIHJlY3QueSgpLCBkc3RMZWZ0Qm9yZGVyV2lkdGgsIHJlY3QuaGVpZ2h0KCkpOworICAg
IHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UobGVmdEJvcmRlckltYWdlLCBjb2xvclNwYWNl
LCBkc3RMZWZ0Qm9yZGVyUmVjdCwgbGVmdEJvcmRlckltYWdlLT5yZWN0KCkpOworCisgICAgaW50
IGRzdFJpZ2h0Qm9yZGVyV2lkdGggPSByaWdodEJvcmRlckltYWdlLT53aWR0aCgpICogdGlsZVNj
YWxlOworICAgIEludFJlY3QgZHN0UmlnaHRCb3JkZXJSZWN0KHJlY3QucmlnaHQoKSAtIGRzdFJp
Z2h0Qm9yZGVyV2lkdGgsIHJlY3QueSgpLCBkc3RSaWdodEJvcmRlcldpZHRoLCByZWN0LmhlaWdo
dCgpKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKHJpZ2h0Qm9yZGVySW1hZ2Us
IGNvbG9yU3BhY2UsIGRzdFJpZ2h0Qm9yZGVyUmVjdCwgcmlnaHRCb3JkZXJJbWFnZS0+cmVjdCgp
KTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworCitJbnRSZWN0IFJlbmRlclRoZW1lQ2hyb21p
dW1Ta2lhOjpwcm9ncmVzc1ZhbHVlUmVjdEZvcihSZW5kZXJQcm9ncmVzcyogcmVuZGVyUHJvZ3Jl
c3MsIGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlbmRlclByb2dy
ZXNzLT5pc0RldGVybWluYXRlKCkgPyBkZXRlcm1pbmF0ZVByb2dyZXNzVmFsdWVSZWN0Rm9yKHJl
bmRlclByb2dyZXNzLCByZWN0KSA6IGluZGV0ZXJtaW5hdGVQcm9ncmVzc1ZhbHVlUmVjdEZvcihy
ZW5kZXJQcm9ncmVzcywgcmVjdCk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tp
YS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuaAppbmRleCBk
YzkyMGIxY2YyOGJiMzI0YzhjZTAzYjlmMGQ2ZDkzM2FiMDNlNzVlLi41NmMzMTVlYjhjNTM1MzMx
M2QzNTIwNTRlMzVmNDQ1NDE1MjA5NWJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUNocm9taXVtU2tpYS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1Ta2lhLmgKQEAgLTMyLDYgKzMyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBSZW5kZXJQcm9ncmVzczsKKwogICAgIGNsYXNzIFJlbmRlclRoZW1lQ2hyb21p
dW1Ta2lhIDogcHVibGljIFJlbmRlclRoZW1lIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlbmRl
clRoZW1lQ2hyb21pdW1Ta2lhKCk7CkBAIC0xMTcsNiArMTE5LDEyIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0
KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBwYWludFNsaWRlclRodW1iKFJlbmRlck9iamVjdCosIGNvbnN0IFJl
bmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCisjaWYgRU5BQkxFKFBS
T0dSRVNTX1RBRykKKyAgICAgICAgdmlydHVhbCBkb3VibGUgYW5pbWF0aW9uUmVwZWF0SW50ZXJ2
YWxGb3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyopIGNvbnN0OworICAgICAgICB2aXJ0dWFs
IGRvdWJsZSBhbmltYXRpb25EdXJhdGlvbkZvclByb2dyZXNzQmFyKFJlbmRlclByb2dyZXNzKikg
Y29uc3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBwYWludFByb2dyZXNzQmFyKFJlbmRlck9iamVj
dCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworI2Vu
ZGlmCisKICAgICAgICAgLy8gVGhlc2UgbWV0aG9kcyBkZWZpbmUgdGhlIHBhZGRpbmcgZm9yIHRo
ZSBNZW51TGlzdCdzIGlubmVyIGJsb2NrLgogICAgICAgICB2aXJ0dWFsIGludCBwb3B1cEludGVy
bmFsUGFkZGluZ0xlZnQoUmVuZGVyU3R5bGUqKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBpbnQg
cG9wdXBJbnRlcm5hbFBhZGRpbmdSaWdodChSZW5kZXJTdHlsZSopIGNvbnN0OwpAQCAtMTQ1LDYg
KzE1MywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBkb3VibGUg
Y2FyZXRCbGlua0ludGVydmFsSW50ZXJuYWwoKSBjb25zdDsKIAorI2lmIEVOQUJMRShQUk9HUkVT
U19UQUcpCisgICAgICAgIEludFJlY3QgZGV0ZXJtaW5hdGVQcm9ncmVzc1ZhbHVlUmVjdEZvcihS
ZW5kZXJQcm9ncmVzcyosIGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICAgICAgSW50UmVjdCBp
bmRldGVybWluYXRlUHJvZ3Jlc3NWYWx1ZVJlY3RGb3IoUmVuZGVyUHJvZ3Jlc3MqLCBjb25zdCBJ
bnRSZWN0JikgY29uc3Q7CisgICAgICAgIEludFJlY3QgcHJvZ3Jlc3NWYWx1ZVJlY3RGb3IoUmVu
ZGVyUHJvZ3Jlc3MqLCBjb25zdCBJbnRSZWN0JikgY29uc3Q7CisjZW5kaWYKKwogICAgIHByaXZh
dGU6CiAgICAgICAgIGludCBtZW51TGlzdEludGVybmFsUGFkZGluZyhSZW5kZXJTdHlsZSosIGlu
dCBwYWRkaW5nVHlwZSkgY29uc3Q7CiAgICAgICAgIGJvb2wgcGFpbnRNZWRpYUJ1dHRvbkludGVy
bmFsKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmLCBJbWFnZSopOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVdpbi5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtV2luLmNwcAppbmRleCBjYzc1NzBjZmIwYWNk
NDdkZTljNzhiODQ4NjlmZDk5MjRjMmQ4YmM0Li42NTNlY2M1MzRiMDk2YjM0YmU4Njc4YzI5M2I0
MGEyZDc0YzdlN2UyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNo
cm9taXVtV2luLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVt
V2luLmNwcApAQCAtNjgwLDIwICs2ODAsOSBAQCB2b2lkIFJlbmRlclRoZW1lQ2hyb21pdW1XaW46
OmFkanVzdFByb2dyZXNzQmFyU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eQogYm9v
bCBSZW5kZXJUaGVtZUNocm9taXVtV2luOjpwYWludFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCog
bywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCiB7
CiAgICAgUmVuZGVyUHJvZ3Jlc3MqIHJlbmRlclByb2dyZXNzID0gdG9SZW5kZXJQcm9ncmVzcyhv
KTsKLQotICAgIEludFJlY3QgdmFsdWVSZWN0OwotICAgIGlmIChyZW5kZXJQcm9ncmVzcy0+aXNE
ZXRlcm1pbmF0ZSgpKSB7Ci0gICAgICAgIGludCBkeCA9IHIud2lkdGgoKSAqIHJlbmRlclByb2dy
ZXNzLT5wb3NpdGlvbigpOwotICAgICAgICBpZiAocmVuZGVyUHJvZ3Jlc3MtPnN0eWxlKCktPmRp
cmVjdGlvbigpID09IFJUTCkKLSAgICAgICAgICAgIHZhbHVlUmVjdCA9IEludFJlY3Qoci54KCkg
KyByLndpZHRoKCkgLSBkeCwgci55KCksIGR4LCByLmhlaWdodCgpKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgdmFsdWVSZWN0ID0gSW50UmVjdChyLngoKSwgci55KCksIGR4LCByLmhlaWdo
dCgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBGb3IgaW5kZXRlcm1pbmF0ZSBiYXIsIHZh
bHVlUmVjdCBpcyBpZ25vcmVkIGFuZCBpdCBpcyBjb21wdXRlZCBieSB0aGUgdGhlbWUgZW5naW5l
Ci0gICAgICAgIC8vIGJlY2F1c2UgdGhlIGFuaW1hdGlvbiBpcyBhIHBsYXRmb3JtIGRldGFpbCBh
bmQgV2ViS2l0IGRvZXNuJ3QgbmVlZCB0byBrbm93IGhvdy4KLSAgICAgICAgdmFsdWVSZWN0ID0g
SW50UmVjdCgwLCAwLCAwLCAwKTsKLSAgICB9Ci0KKyAgICAvLyBGb3IgaW5kZXRlcm1pbmF0ZSBi
YXIsIHZhbHVlUmVjdCBpcyBpZ25vcmVkIGFuZCBpdCBpcyBjb21wdXRlZCBieSB0aGUgdGhlbWUg
ZW5naW5lCisgICAgLy8gYmVjYXVzZSB0aGUgYW5pbWF0aW9uIGlzIGEgcGxhdGZvcm0gZGV0YWls
IGFuZCBXZWJLaXQgZG9lc24ndCBuZWVkIHRvIGtub3cgaG93LgorICAgIEludFJlY3QgdmFsdWVS
ZWN0ID0gcmVuZGVyUHJvZ3Jlc3MtPmlzRGV0ZXJtaW5hdGUoKSA/IGRldGVybWlhbnRlUHJvZ3Jl
c3NWYWx1ZVJlY3RGb3IocmVuZGVyUHJvZ3Jlc3MsIHIpIDogSW50UmVjdCgwLCAwLCAwLCAwKTsK
ICAgICBkb3VibGUgYW5pbWF0ZWRTZWNvbmRzID0gcmVuZGVyUHJvZ3Jlc3MtPmFuaW1hdGlvblN0
YXJ0VGltZSgpID8gIFdURjo6Y3VycmVudFRpbWUoKSAtIHJlbmRlclByb2dyZXNzLT5hbmltYXRp
b25TdGFydFRpbWUoKSA6IDA7CiAgICAgVGhlbWVQYWludGVyIHBhaW50ZXIoaS5jb250ZXh0LCBy
KTsKICAgICBDaHJvbWl1bUJyaWRnZTo6cGFpbnRQcm9ncmVzc0JhcihwYWludGVyLmNvbnRleHQo
KSwgciwgdmFsdWVSZWN0LCByZW5kZXJQcm9ncmVzcy0+aXNEZXRlcm1pbmF0ZSgpLCBhbmltYXRl
ZFNlY29uZHMpOwo=
</data>
<flag name="review"
          id="42367"
          type_id="1"
          status="+"
          setter="tkent"
    />
          </attachment>
      

    </bug>

</bugzilla>