<?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>100169</bug_id>
          
          <creation_ts>2012-10-23 15:57:26 -0700</creation_ts>
          <short_desc>We should make TileCache tiles the size of the tile coverage rect when we can&apos;t do fast scrolling</short_desc>
          <delta_ts>2012-10-24 20:39:41 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>749081</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-10-23 15:57:26 -0700</bug_when>
    <thetext>Some websites that don&apos;t do fast scrolling still scroll slower than they do with tiled drawing disabled. https://bugs.webkit.org/show_bug.cgi?id=99768 addressed some of this performance problem, but there is still more ground to make up. I propose that we make tiles the size of the window when we can&apos;t do fast scrolling. This seems to have a noticeable improvement on sites like Facebook.

&lt;rdar://problem/12505021&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749093</commentid>
    <comment_count>1</comment_count>
      <attachid>170260</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-10-23 16:04:24 -0700</bug_when>
    <thetext>Created attachment 170260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749097</commentid>
    <comment_count>2</comment_count>
      <attachid>170260</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-10-23 16:09:24 -0700</bug_when>
    <thetext>Comment on attachment 170260
Patch

If the TileCache already has to know the default tile size for the adjustTileSizeForCoverageRect, then I don’t see any reason that WebTileCacheLayer should also have to pass it in. The TileCache should just know what it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749101</commentid>
    <comment_count>3</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-10-23 16:11:44 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 170260 [details])
&gt; If the TileCache already has to know the default tile size for the adjustTileSizeForCoverageRect, then I don’t see any reason that WebTileCacheLayer should also have to pass it in. The TileCache should just know what it is.

Good point. Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749120</commentid>
    <comment_count>4</comment_count>
      <attachid>170267</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-10-23 16:32:16 -0700</bug_when>
    <thetext>Created attachment 170267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749128</commentid>
    <comment_count>5</comment_count>
      <attachid>170267</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-10-23 16:45:48 -0700</bug_when>
    <thetext>Comment on attachment 170267
Patch

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

&gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:49
&gt; +static const int defaultTileCacheWidth = 512;
&gt; +static const int defaultTileCacheHeight = 512;

Normally it would be good to include a comment stating why this is the default.

&gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:59
&gt; +    , m_tileSize(IntSize(defaultTileCacheWidth, defaultTileCacheHeight))

I think you can leave out IntSize() here since it’s already the initializer list for an IntSize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749132</commentid>
    <comment_count>6</comment_count>
      <attachid>170267</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-23 16:53:41 -0700</bug_when>
    <thetext>Comment on attachment 170267
Patch

r- for lack of test.You can test this now (see test in plaform/mac/tiled-scrolling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749171</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-23 17:57:17 -0700</bug_when>
    <thetext>Beth and I also noticed some bugs here when a page toggles between threaded and non-threaded scrolling, which I think also needs to be covered by tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749953</commentid>
    <comment_count>8</comment_count>
      <attachid>170455</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-10-24 13:05:16 -0700</bug_when>
    <thetext>Created attachment 170455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749961</commentid>
    <comment_count>9</comment_count>
      <attachid>170455</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-24 13:11:18 -0700</bug_when>
    <thetext>Comment on attachment 170455
Patch

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

&gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:59
&gt; +    , m_tileSize(IntSize(defaultTileCacheWidth, defaultTileCacheHeight))

You shouldn&apos;t need the IntSize() there.

&gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:317
&gt; +    // If the m_tileSize and clampedRect.size() are the same in either dimension, then we
&gt; +    // don&apos;t want to overdraw, so explicity set x/y to 0 in that case.
&gt; +    if (clampedRect.maxX() !=  m_tileSize.width())
&gt; +        bottomRight.setX(max(clampedRect.maxX() / m_tileSize.width(), 0));
&gt; +    else
&gt; +        bottomRight.setX(0);
&gt; +
&gt; +    if (clampedRect.maxY() !=  m_tileSize.height())
&gt; +        bottomRight.setY(max(clampedRect.maxY() / m_tileSize.height(), 0));
&gt; +    else
&gt; +        bottomRight.setY(0);

Can&apos;t this be done with ceil()? or floor(), since presumably the issue occurs at other integral boundaries too.

&gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:349
&gt; +void TileCache::adjustTileSizeForCoverageRect(const IntRect&amp; coverageRect)
&gt; +{
&gt; +    if (m_tileCoverage == CoverageForVisibleArea) {
&gt; +        m_tileSize = coverageRect.size();
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    m_tileSize = IntSize(defaultTileCacheWidth, defaultTileCacheHeight);
&gt; +}

I think it would be clearer to make this  IntSize tileSizeForCoverageRect(const IntRect&amp;) const. That way the changing of m_tileSize isn&apos;t hidden from the caller.

&gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:441
&gt; +    int numTiles = 0;
&gt;      for (int y = topLeft.y(); y &lt;= bottomRight.y(); ++y) {
&gt;          for (int x = topLeft.x(); x &lt;= bottomRight.x(); ++x) {
&gt; +            numTiles++;
&gt;              TileIndex tileIndex(x, y);

You don&apos;t seem to be using numTiles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750002</commentid>
    <comment_count>10</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-10-24 13:49:04 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 170455 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170455&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:59
&gt; &gt; +    , m_tileSize(IntSize(defaultTileCacheWidth, defaultTileCacheHeight))
&gt; 
&gt; You shouldn&apos;t need the IntSize() there.
&gt; 

Doh! I meant to remove that when Darin pointed it out. Thanks for the reminder.

&gt; &gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:317
&gt; &gt; +    // If the m_tileSize and clampedRect.size() are the same in either dimension, then we
&gt; &gt; +    // don&apos;t want to overdraw, so explicity set x/y to 0 in that case.
&gt; &gt; +    if (clampedRect.maxX() !=  m_tileSize.width())
&gt; &gt; +        bottomRight.setX(max(clampedRect.maxX() / m_tileSize.width(), 0));
&gt; &gt; +    else
&gt; &gt; +        bottomRight.setX(0);
&gt; &gt; +
&gt; &gt; +    if (clampedRect.maxY() !=  m_tileSize.height())
&gt; &gt; +        bottomRight.setY(max(clampedRect.maxY() / m_tileSize.height(), 0));
&gt; &gt; +    else
&gt; &gt; +        bottomRight.setY(0);
&gt; 
&gt; Can&apos;t this be done with ceil()? or floor(), since presumably the issue occurs at other integral boundaries too.
&gt; 

You are definitely right that this can happen at other integral boundaries, so I have a fix for that. I still can&apos;t figure out how to do this in one line though… I&apos;ll try a bit more.

&gt; &gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:349
&gt; &gt; +void TileCache::adjustTileSizeForCoverageRect(const IntRect&amp; coverageRect)
&gt; &gt; +{
&gt; &gt; +    if (m_tileCoverage == CoverageForVisibleArea) {
&gt; &gt; +        m_tileSize = coverageRect.size();
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    m_tileSize = IntSize(defaultTileCacheWidth, defaultTileCacheHeight);
&gt; &gt; +}
&gt; 
&gt; I think it would be clearer to make this  IntSize tileSizeForCoverageRect(const IntRect&amp;) const. That way the changing of m_tileSize isn&apos;t hidden from the caller.
&gt; 

Will change.

&gt; &gt; Source/WebCore/platform/graphics/ca/mac/TileCache.mm:441
&gt; &gt; +    int numTiles = 0;
&gt; &gt;      for (int y = topLeft.y(); y &lt;= bottomRight.y(); ++y) {
&gt; &gt;          for (int x = topLeft.x(); x &lt;= bottomRight.x(); ++x) {
&gt; &gt; +            numTiles++;
&gt; &gt;              TileIndex tileIndex(x, y);
&gt; 
&gt; You don&apos;t seem to be using numTiles.

Oops, this was debugging code. Will remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750045</commentid>
    <comment_count>11</comment_count>
      <attachid>170472</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-10-24 14:27:07 -0700</bug_when>
    <thetext>Created attachment 170472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750236</commentid>
    <comment_count>12</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-10-24 17:21:00 -0700</bug_when>
    <thetext>Thanks! Committed http://trac.webkit.org/changeset/132427</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750331</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-10-24 20:39:41 -0700</bug_when>
    <thetext>This change affected tiled layer tile caches as well as the page tile cache, which was unintentional. Bug 100323.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170260</attachid>
            <date>2012-10-23 16:04:24 -0700</date>
            <delta_ts>2012-10-23 16:32:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>5026</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjI3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDEyLTEwLTIzICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTY5CisgICAgICAgIFdlIHNob3VsZCBtYWtlIFRpbGVDYWNo
ZSB0aWxlcyB0aGUgc2l6ZSBvZiB0aGUgdGlsZSBjb3ZlcmFnZSByZWN0IAorICAgICAgICB3aGVu
IHdlIGNhbid0IGRvIGZhc3Qgc2Nyb2xsaW5nCisgICAgICAgIC1hbmQtCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xMjUwNTAyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTb21lIHdlYnNpdGVzIHRoYXQgZG9uJ3QgZG8gZmFzdCBzY3JvbGxpbmcg
c3RpbGwgc2Nyb2xsIHNsb3dlciB0aGFuIAorICAgICAgICB0aGV5IGRvIHdpdGggdGlsZWQgZHJh
d2luZyBkaXNhYmxlZC4gCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05OTc2OCBhZGRyZXNzZWQgc29tZSBvZiB0aGlzIAorICAgICAgICBwZXJmb3JtYW5j
ZSBwcm9ibGVtLCBidXQgdGhlcmUgaXMgc3RpbGwgbW9yZSBncm91bmQgdG8gbWFrZSB1cC4gVGhp
cyAKKyAgICAgICAgcGF0Y2ggYWRkcmVzc2VzIHRoZSByZW1haW5pbmcgaXNzdWUgYnkgbWFraW5n
IHRpbGVzIHRoZSBzaXplIG9mIHRoZSAKKyAgICAgICAgd2luZG93IHdoZW4gd2UgY2FuJ3QgZG8g
ZmFzdCBzY3JvbGxpbmcuIAorCisgICAgICAgIG1fdGlsZVNpemUgaXMgbm90IGxvbmdlciBjb25z
dC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLmg6CisKKyAg
ICAgICAgVGhpcyBuZXcgZnVuY3Rpb24gd2lsbCBzZXQgbV90aWxlU2l6ZSB0byB0aGUgc2l6ZSBv
ZiB0aGUgdGlsZSAKKyAgICAgICAgY292ZXJhZ2UgcmVjdCBpZiB0aGUgdGlsZSBjb3ZlcmFnZSBp
cyBsaW1pdGVkIHRvIHRoZSB2aXNpYmxlIGFyZWEuIAorICAgICAgICBPdGhlcndpc2UsIHRoZSB0
aWxlcyBhcmUgc2V0IHRvIGJlIHRoZSBkZWZhdWx0IHNpemUuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNo
ZTo6YWRqdXN0VGlsZVNpemVGb3JDb3ZlcmFnZVJlY3QpOgorICAgICAgICAKKyAgICAgICAgQ2Fs
bCBhZGp1c3RUaWxlU2l6ZUZvckNvdmVyYWdlUmVjdCgpLgorICAgICAgICAoV2ViQ29yZTo6VGls
ZUNhY2hlOjpyZXZhbGlkYXRlVGlsZXMpOgorCisgICAgICAgIFN0b3JlIHRoZSBjdXJyZW50IGRl
ZmF1bHQgc2l6ZSBhcyBjb25zdGFudHMgc28gdGhhdCB3ZSBjYW4gYWNjZXNzIGl0IAorICAgICAg
ICBmcm9tIFRpbGVDYWNoZSBhcyB3ZWxsLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L21hYy9XZWJUaWxlQ2FjaGVMYXllci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVDYWNoZUxheWVyLm1tOgorICAgICAgICAo
V2ViQ29yZSk6CisKIDIwMTItMTAtMjMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWxsb3cgdGVzdHMgdG8gcnVuIHdpdGggYSB0aWxlIGNhY2hlLCBh
bmQgb3B0aW9uYWxseSBkdW1wIHRoZSB0aWxlIGNhY2hlIHZpYSBsYXllclRyZWVBc1RleHQoKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9U
aWxlQ2FjaGUuaAkocmV2aXNpb24gMTMyMjc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRUaWxlSW5kZXhSYW5nZUZvclJlY3QoY29uc3QgSW50
UmVjdCYsIFRpbGVJbmRleCYgdG9wTGVmdCwgVGlsZUluZGV4JiBib3R0b21SaWdodCk7CiAKICAg
ICBJbnRSZWN0IGNvbXB1dGVUaWxlQ292ZXJhZ2VSZWN0KCkgY29uc3Q7CisgICAgdm9pZCBhZGp1
c3RUaWxlU2l6ZUZvckNvdmVyYWdlUmVjdChjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2b2lkIHNj
aGVkdWxlVGlsZVJldmFsaWRhdGlvbihkb3VibGUgaW50ZXJ2YWwpOwogICAgIHZvaWQgdGlsZVJl
dmFsaWRhdGlvblRpbWVyRmlyZWQoVGltZXI8VGlsZUNhY2hlPiopOwpAQCAtMTEyLDcgKzExMyw3
IEBAIHByaXZhdGU6CiAKICAgICBXZWJUaWxlQ2FjaGVMYXllciogbV90aWxlQ2FjaGVMYXllcjsK
ICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV90aWxlQ29udGFpbmVyTGF5ZXI7Ci0gICAgY29uc3Qg
SW50U2l6ZSBtX3RpbGVTaXplOworICAgIEludFNpemUgbV90aWxlU2l6ZTsKICAgICBJbnRSZWN0
IG1fdmlzaWJsZVJlY3Q7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8VGlsZUluZGV4LCBSZXRhaW5Q
dHI8V2ViVGlsZUxheWVyPiA+IFRpbGVNYXA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW0JKHJldmlzaW9uIDEzMjI3
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsMTYgQEAgSW50UmVjdCBUaWxlQ2FjaGU6
OmNvbXB1dGVUaWxlQ292ZXJhZ2VSZQogICAgIHJldHVybiB0aWxlQ292ZXJhZ2VSZWN0OwogfQog
Cit2b2lkIFRpbGVDYWNoZTo6YWRqdXN0VGlsZVNpemVGb3JDb3ZlcmFnZVJlY3QoY29uc3QgSW50
UmVjdCYgY292ZXJhZ2VSZWN0KQoreworICAgIGlmIChtX3RpbGVDb3ZlcmFnZSA9PSBDb3ZlcmFn
ZUZvclZpc2libGVBcmVhKSB7CisgICAgICAgIG1fdGlsZVNpemUgPSBjb3ZlcmFnZVJlY3Quc2l6
ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV90aWxlU2l6ZSA9IEludFNpemUo
V2ViQ29yZTo6ZGVmYXVsdFRpbGVDYWNoZVdpZHRoLCBXZWJDb3JlOjpkZWZhdWx0VGlsZUNhY2hl
SGVpZ2h0KTsKK30KKwogdm9pZCBUaWxlQ2FjaGU6OnNjaGVkdWxlVGlsZVJldmFsaWRhdGlvbihk
b3VibGUgaW50ZXJ2YWwpCiB7CiAgICAgaWYgKG1fdGlsZVJldmFsaWRhdGlvblRpbWVyLmlzQWN0
aXZlKCkgJiYgbV90aWxlUmV2YWxpZGF0aW9uVGltZXIubmV4dEZpcmVJbnRlcnZhbCgpIDwgaW50
ZXJ2YWwpCkBAIC0zNzgsNiArMzg4LDcgQEAgdm9pZCBUaWxlQ2FjaGU6OnJldmFsaWRhdGVUaWxl
cygpCiAgICAgICAgIHJldHVybjsKIAogICAgIEludFJlY3QgdGlsZUNvdmVyYWdlUmVjdCA9IGNv
bXB1dGVUaWxlQ292ZXJhZ2VSZWN0KCk7CisgICAgYWRqdXN0VGlsZVNpemVGb3JDb3ZlcmFnZVJl
Y3QodGlsZUNvdmVyYWdlUmVjdCk7CiAKICAgICBWZWN0b3I8VGlsZUluZGV4PiB0aWxlc1RvUmVt
b3ZlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvV2Vi
VGlsZUNhY2hlTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9tYWMvV2ViVGlsZUNhY2hlTGF5ZXIuaAkocmV2aXNpb24gMTMyMjc4KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVDYWNoZUxheWVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xhc3MgVGlsZUNhY2hlOwogICAgIGNsYXNzIFRpbGVk
QmFja2luZzsKKworICAgIHN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRpbGVDYWNoZVdpZHRoID0g
NTEyOworICAgIHN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRpbGVDYWNoZUhlaWdodCA9IDUxMjsK
IH0KIAogQGludGVyZmFjZSBXZWJUaWxlQ2FjaGVMYXllciA6IENBTGF5ZXIgewpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVDYWNoZUxheWVyLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9X
ZWJUaWxlQ2FjaGVMYXllci5tbQkocmV2aXNpb24gMTMyMjc4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVDYWNoZUxheWVyLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw4ICs0MCw3IEBAIC0gKGlkKWluaXQKICAgICBpZiAoIXNlbGYpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKLSAgICAvLyBGSVhNRTogVGhlIHRpbGUgc2l6ZSBzaG91bGQgYmUgY29u
ZmlndXJhYmxlLgotICAgIF90aWxlQ2FjaGUgPSBUaWxlQ2FjaGU6OmNyZWF0ZShzZWxmLCBJbnRT
aXplKDUxMiwgNTEyKSk7CisgICAgX3RpbGVDYWNoZSA9IFRpbGVDYWNoZTo6Y3JlYXRlKHNlbGYs
IEludFNpemUoZGVmYXVsdFRpbGVDYWNoZVdpZHRoLCBkZWZhdWx0VGlsZUNhY2hlSGVpZ2h0KSk7
CiAjaWZuZGVmIE5ERUJVRwogICAgIFtzZWxmIHNldE5hbWU6QCJXZWJUaWxlQ2FjaGVMYXllciJd
OwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170267</attachid>
            <date>2012-10-23 16:32:16 -0700</date>
            <delta_ts>2012-10-24 13:05:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>6178</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjI3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEyLTEwLTIzICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTY5CisgICAgICAgIFdlIHNob3VsZCBtYWtlIFRpbGVDYWNo
ZSB0aWxlcyB0aGUgc2l6ZSBvZiB0aGUgdGlsZSBjb3ZlcmFnZSByZWN0IAorICAgICAgICB3aGVu
IHdlIGNhbid0IGRvIGZhc3Qgc2Nyb2xsaW5nCisgICAgICAgIC1hbmQtCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xMjUwNTAyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTb21lIHdlYnNpdGVzIHRoYXQgZG9uJ3QgZG8gZmFzdCBzY3JvbGxpbmcg
c3RpbGwgc2Nyb2xsIHNsb3dlciB0aGFuIAorICAgICAgICB0aGV5IGRvIHdpdGggdGlsZWQgZHJh
d2luZyBkaXNhYmxlZC4gCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05OTc2OCBhZGRyZXNzZWQgc29tZSBvZiB0aGlzIAorICAgICAgICBwZXJmb3JtYW5j
ZSBwcm9ibGVtLCBidXQgdGhlcmUgaXMgc3RpbGwgbW9yZSBncm91bmQgdG8gbWFrZSB1cC4gVGhp
cyAKKyAgICAgICAgcGF0Y2ggYWRkcmVzc2VzIHRoZSByZW1haW5pbmcgaXNzdWUgYnkgbWFraW5n
IHRpbGVzIHRoZSBzaXplIG9mIHRoZSAKKyAgICAgICAgd2luZG93IHdoZW4gd2UgY2FuJ3QgZG8g
ZmFzdCBzY3JvbGxpbmcuIAorCisgICAgICAgIFRoZSBjb25zdHJ1Y3RvciBhbmQgY3JlYXRlIGZ1
bmN0aW9uIG5vIGxvbmdlciB0YWtlIGEgc2l6ZSBwYXJhbWV0ZXIuIAorICAgICAgICBUaGF0J3Mg
YWxsIGZ1bGx5IGNvbnRyb2xsZWQgd2l0aGluIFRpbGVDYWNoZSBub3cuIG1fdGlsZVNpemUgaXMg
bm8gCisgICAgICAgIGxvbmdlciBjb25zdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YS9tYWMvVGlsZUNhY2hlLmg6CisKKyAgICAgICAgU3RvcmUgdGhlIGN1cnJlbnQgZGVmYXVsdCBz
aXplIGFzIGNvbnN0YW50cyBzbyB0aGF0IHdlIGNhbiBhY2Nlc3MgaXQgCisgICAgICAgIGluIGJv
dGggdGhlIGNvbnN0cnVjdG9yIGFuZCBhZGp1c3RUaWxlU2l6ZUZvckNvdmVyYWdlUmVjdCgpLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW06CisgICAgICAg
IChXZWJDb3JlOjpUaWxlQ2FjaGU6OlRpbGVDYWNoZSk6CisKKyAgICAgICAgVGhpcyBuZXcgZnVu
Y3Rpb24gd2lsbCBzZXQgbV90aWxlU2l6ZSB0byB0aGUgc2l6ZSBvZiB0aGUgdGlsZSAKKyAgICAg
ICAgY292ZXJhZ2UgcmVjdCBpZiB0aGUgdGlsZSBjb3ZlcmFnZSBpcyBsaW1pdGVkIHRvIHRoZSB2
aXNpYmxlIGFyZWEuIAorICAgICAgICBPdGhlcndpc2UsIHRoZSB0aWxlcyBhcmUgc2V0IHRvIGJl
IHRoZSBkZWZhdWx0IHNpemUuCisgICAgICAgIChXZWJDb3JlOjpUaWxlQ2FjaGU6OmFkanVzdFRp
bGVTaXplRm9yQ292ZXJhZ2VSZWN0KToKKyAgICAgICAgCisgICAgICAgIENhbGwgYWRqdXN0VGls
ZVNpemVGb3JDb3ZlcmFnZVJlY3QoKS4KKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNoZTo6cmV2
YWxpZGF0ZVRpbGVzKToKKworICAgICAgICBObyBuZWVkIHRvIHNlbmQgaW4gYSBzaXplIGFueW1v
cmUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVDYWNoZUxheWVy
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0xMC0yMyAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyB0ZXN0cyB0byBydW4gd2l0aCBh
IHRpbGUgY2FjaGUsIGFuZCBvcHRpb25hbGx5IGR1bXAgdGhlIHRpbGUgY2FjaGUgdmlhIGxheWVy
VHJlZUFzVGV4dCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9t
YWMvVGlsZUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oCShyZXZpc2lvbiAxMzIyNzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgVGlsZUNhY2hlIDogcHVibGljIFRpbGVkQmFja2luZyB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGlsZUNhY2hlKTsKIAogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPFRpbGVDYWNoZT4gY3JlYXRlKFdlYlRpbGVDYWNoZUxheWVyKiwgY29u
c3QgSW50U2l6ZSYgdGlsZVNpemUpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFRpbGVDYWNoZT4g
Y3JlYXRlKFdlYlRpbGVDYWNoZUxheWVyKik7CiAgICAgflRpbGVDYWNoZSgpOwogCiAgICAgdm9p
ZCB0aWxlQ2FjaGVMYXllckJvdW5kc0NoYW5nZWQoKTsKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyB1bnNpZ25lZCBibGFua1BpeGVsQ291bnRGb3JUaWxlcyhjb25zdCBXZWJU
aWxlTGF5ZXJMaXN0JiwgSW50UmVjdCwgSW50UG9pbnQpOwogCiBwcml2YXRlOgotICAgIFRpbGVD
YWNoZShXZWJUaWxlQ2FjaGVMYXllciosIGNvbnN0IEludFNpemUmIHRpbGVTaXplKTsKKyAgICBU
aWxlQ2FjaGUoV2ViVGlsZUNhY2hlTGF5ZXIqKTsKIAogICAgIC8vIFRpbGVkQmFja2luZyBtZW1i
ZXIgZnVuY3Rpb25zLgogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlUmVjdChjb25zdCBJbnRS
ZWN0JikgT1ZFUlJJREU7CkBAIC05OSw2ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRU
aWxlSW5kZXhSYW5nZUZvclJlY3QoY29uc3QgSW50UmVjdCYsIFRpbGVJbmRleCYgdG9wTGVmdCwg
VGlsZUluZGV4JiBib3R0b21SaWdodCk7CiAKICAgICBJbnRSZWN0IGNvbXB1dGVUaWxlQ292ZXJh
Z2VSZWN0KCkgY29uc3Q7CisgICAgdm9pZCBhZGp1c3RUaWxlU2l6ZUZvckNvdmVyYWdlUmVjdChj
b25zdCBJbnRSZWN0Jik7CiAKICAgICB2b2lkIHNjaGVkdWxlVGlsZVJldmFsaWRhdGlvbihkb3Vi
bGUgaW50ZXJ2YWwpOwogICAgIHZvaWQgdGlsZVJldmFsaWRhdGlvblRpbWVyRmlyZWQoVGltZXI8
VGlsZUNhY2hlPiopOwpAQCAtMTEyLDcgKzExMyw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJUaWxl
Q2FjaGVMYXllciogbV90aWxlQ2FjaGVMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV90
aWxlQ29udGFpbmVyTGF5ZXI7Ci0gICAgY29uc3QgSW50U2l6ZSBtX3RpbGVTaXplOworICAgIElu
dFNpemUgbV90aWxlU2l6ZTsKICAgICBJbnRSZWN0IG1fdmlzaWJsZVJlY3Q7CiAKICAgICB0eXBl
ZGVmIEhhc2hNYXA8VGlsZUluZGV4LCBSZXRhaW5QdHI8V2ViVGlsZUxheWVyPiA+IFRpbGVNYXA7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21h
Yy9UaWxlQ2FjaGUubW0JKHJldmlzaW9uIDEzMjI3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE1
ICs0NSwxOCBAQCAtICh2b2lkKXNldEFjY2VsZXJhdGVzRHJhd2luZzooQk9PTClmbGFnCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxUaWxlQ2FjaGU+IFRpbGVDYWNoZTo6Y3Jl
YXRlKFdlYlRpbGVDYWNoZUxheWVyKiB0aWxlQ2FjaGVMYXllciwgY29uc3QgSW50U2l6ZSYgdGls
ZVNpemUpCitzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRUaWxlQ2FjaGVXaWR0aCA9IDUxMjsKK3N0
YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRpbGVDYWNoZUhlaWdodCA9IDUxMjsKKworUGFzc093blB0
cjxUaWxlQ2FjaGU+IFRpbGVDYWNoZTo6Y3JlYXRlKFdlYlRpbGVDYWNoZUxheWVyKiB0aWxlQ2Fj
aGVMYXllcikKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRpbGVDYWNoZSh0aWxlQ2FjaGVM
YXllciwgdGlsZVNpemUpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRpbGVDYWNoZSh0aWxl
Q2FjaGVMYXllcikpOwogfQogCi1UaWxlQ2FjaGU6OlRpbGVDYWNoZShXZWJUaWxlQ2FjaGVMYXll
ciogdGlsZUNhY2hlTGF5ZXIsIGNvbnN0IEludFNpemUmIHRpbGVTaXplKQorVGlsZUNhY2hlOjpU
aWxlQ2FjaGUoV2ViVGlsZUNhY2hlTGF5ZXIqIHRpbGVDYWNoZUxheWVyKQogICAgIDogbV90aWxl
Q2FjaGVMYXllcih0aWxlQ2FjaGVMYXllcikKICAgICAsIG1fdGlsZUNvbnRhaW5lckxheWVyKGFk
b3B0Q0YoW1tDQUxheWVyIGFsbG9jXSBpbml0XSkpCi0gICAgLCBtX3RpbGVTaXplKHRpbGVTaXpl
KQorICAgICwgbV90aWxlU2l6ZShJbnRTaXplKGRlZmF1bHRUaWxlQ2FjaGVXaWR0aCwgZGVmYXVs
dFRpbGVDYWNoZUhlaWdodCkpCiAgICAgLCBtX3RpbGVSZXZhbGlkYXRpb25UaW1lcih0aGlzLCAm
VGlsZUNhY2hlOjp0aWxlUmV2YWxpZGF0aW9uVGltZXJGaXJlZCkKICAgICAsIG1fc2NhbGUoMSkK
ICAgICAsIG1fZGV2aWNlU2NhbGVGYWN0b3IoMSkKQEAgLTMyNSw2ICszMjgsMTYgQEAgSW50UmVj
dCBUaWxlQ2FjaGU6OmNvbXB1dGVUaWxlQ292ZXJhZ2VSZQogICAgIHJldHVybiB0aWxlQ292ZXJh
Z2VSZWN0OwogfQogCit2b2lkIFRpbGVDYWNoZTo6YWRqdXN0VGlsZVNpemVGb3JDb3ZlcmFnZVJl
Y3QoY29uc3QgSW50UmVjdCYgY292ZXJhZ2VSZWN0KQoreworICAgIGlmIChtX3RpbGVDb3ZlcmFn
ZSA9PSBDb3ZlcmFnZUZvclZpc2libGVBcmVhKSB7CisgICAgICAgIG1fdGlsZVNpemUgPSBjb3Zl
cmFnZVJlY3Quc2l6ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV90aWxlU2l6
ZSA9IEludFNpemUoZGVmYXVsdFRpbGVDYWNoZVdpZHRoLCBkZWZhdWx0VGlsZUNhY2hlSGVpZ2h0
KTsKK30KKwogdm9pZCBUaWxlQ2FjaGU6OnNjaGVkdWxlVGlsZVJldmFsaWRhdGlvbihkb3VibGUg
aW50ZXJ2YWwpCiB7CiAgICAgaWYgKG1fdGlsZVJldmFsaWRhdGlvblRpbWVyLmlzQWN0aXZlKCkg
JiYgbV90aWxlUmV2YWxpZGF0aW9uVGltZXIubmV4dEZpcmVJbnRlcnZhbCgpIDwgaW50ZXJ2YWwp
CkBAIC0zNzgsNiArMzkxLDcgQEAgdm9pZCBUaWxlQ2FjaGU6OnJldmFsaWRhdGVUaWxlcygpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIEludFJlY3QgdGlsZUNvdmVyYWdlUmVjdCA9IGNvbXB1dGVU
aWxlQ292ZXJhZ2VSZWN0KCk7CisgICAgYWRqdXN0VGlsZVNpemVGb3JDb3ZlcmFnZVJlY3QodGls
ZUNvdmVyYWdlUmVjdCk7CiAKICAgICBWZWN0b3I8VGlsZUluZGV4PiB0aWxlc1RvUmVtb3ZlOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvV2ViVGlsZUNh
Y2hlTGF5ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvbWFjL1dlYlRpbGVDYWNoZUxheWVyLm1tCShyZXZpc2lvbiAxMzIyNzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvV2ViVGlsZUNhY2hlTGF5ZXIubW0J
KHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDcgQEAgLSAoaWQpaW5pdAogICAgIGlmICghc2Vs
ZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIC8vIEZJWE1FOiBUaGUgdGlsZSBzaXplIHNo
b3VsZCBiZSBjb25maWd1cmFibGUuCi0gICAgX3RpbGVDYWNoZSA9IFRpbGVDYWNoZTo6Y3JlYXRl
KHNlbGYsIEludFNpemUoNTEyLCA1MTIpKTsKKyAgICBfdGlsZUNhY2hlID0gVGlsZUNhY2hlOjpj
cmVhdGUoc2VsZik7CiAjaWZuZGVmIE5ERUJVRwogICAgIFtzZWxmIHNldE5hbWU6QCJXZWJUaWxl
Q2FjaGVMYXllciJdOwogI2VuZGlmCg==
</data>
<flag name="review"
          id="183815"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170455</attachid>
            <date>2012-10-24 13:05:16 -0700</date>
            <delta_ts>2012-10-24 14:27:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-3.txt</filename>
            <type>text/plain</type>
            <size>10751</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjI3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEyLTEwLTI0ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTY5CisgICAgICAgIFdlIHNob3VsZCBtYWtlIFRpbGVDYWNo
ZSB0aWxlcyB0aGUgc2l6ZSBvZiB0aGUgdGlsZSBjb3ZlcmFnZSByZWN0IAorICAgICAgICB3aGVu
IHdlIGNhbid0IGRvIGZhc3Qgc2Nyb2xsaW5nCisgICAgICAgIC1hbmQtCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xMjUwNTAyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTb21lIHdlYnNpdGVzIHRoYXQgZG9uJ3QgZG8gZmFzdCBzY3JvbGxpbmcg
c3RpbGwgc2Nyb2xsIHNsb3dlciB0aGFuIAorICAgICAgICB0aGV5IGRvIHdpdGggdGlsZWQgZHJh
d2luZyBkaXNhYmxlZC4gCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05OTc2OCBhZGRyZXNzZWQgc29tZSBvZiB0aGlzIAorICAgICAgICBwZXJmb3JtYW5j
ZSBwcm9ibGVtLCBidXQgdGhlcmUgaXMgc3RpbGwgbW9yZSBncm91bmQgdG8gbWFrZSB1cC4gVGhp
cyAKKyAgICAgICAgcGF0Y2ggYWRkcmVzc2VzIHRoZSByZW1haW5pbmcgaXNzdWUgYnkgbWFraW5n
IHRpbGVzIHRoZSBzaXplIG9mIHRoZSAKKyAgICAgICAgd2luZG93IHdoZW4gd2UgY2FuJ3QgZG8g
ZmFzdCBzY3JvbGxpbmcuIAorCisgICAgICAgIFRoZSBjb25zdHJ1Y3RvciBhbmQgY3JlYXRlIGZ1
bmN0aW9uIG5vIGxvbmdlciB0YWtlIGEgc2l6ZSBwYXJhbWV0ZXIuIAorICAgICAgICBUaGF0J3Mg
YWxsIGZ1bGx5IGNvbnRyb2xsZWQgd2l0aGluIFRpbGVDYWNoZSBub3cuIG1fdGlsZVNpemUgaXMg
bm8gCisgICAgICAgIGxvbmdlciBjb25zdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YS9tYWMvVGlsZUNhY2hlLmg6CisKKyAgICAgICAgU3RvcmUgdGhlIGN1cnJlbnQgZGVmYXVsdCBz
aXplIGFzIGNvbnN0YW50cyBzbyB0aGF0IHdlIGNhbiBhY2Nlc3MgaXQgCisgICAgICAgIGluIGJv
dGggdGhlIGNvbnN0cnVjdG9yIGFuZCBhZGp1c3RUaWxlU2l6ZUZvckNvdmVyYWdlUmVjdCgpLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW06CisgICAgICAg
IChXZWJDb3JlOjpUaWxlQ2FjaGU6OlRpbGVDYWNoZSk6CisKKyAgICAgICAgVGhpcyBuZXcgZnVu
Y3Rpb24gd2lsbCBzZXQgbV90aWxlU2l6ZSB0byB0aGUgc2l6ZSBvZiB0aGUgdGlsZSAKKyAgICAg
ICAgY292ZXJhZ2UgcmVjdCBpZiB0aGUgdGlsZSBjb3ZlcmFnZSBpcyBsaW1pdGVkIHRvIHRoZSB2
aXNpYmxlIGFyZWEuIAorICAgICAgICBPdGhlcndpc2UsIHRoZSB0aWxlcyBhcmUgc2V0IHRvIGJl
IHRoZSBkZWZhdWx0IHNpemUuCisgICAgICAgIChXZWJDb3JlOjpUaWxlQ2FjaGU6OmFkanVzdFRp
bGVTaXplRm9yQ292ZXJhZ2VSZWN0KToKKyAgICAgICAgCisgICAgICAgIENhbGwgYWRqdXN0VGls
ZVNpemVGb3JDb3ZlcmFnZVJlY3QoKS4KKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNoZTo6cmV2
YWxpZGF0ZVRpbGVzKToKKworICAgICAgICBObyBuZWVkIHRvIHNlbmQgaW4gYSBzaXplIGFueW1v
cmUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVDYWNoZUxheWVy
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0xMC0yMyAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyB0ZXN0cyB0byBydW4gd2l0aCBh
IHRpbGUgY2FjaGUsIGFuZCBvcHRpb25hbGx5IGR1bXAgdGhlIHRpbGUgY2FjaGUgdmlhIGxheWVy
VHJlZUFzVGV4dCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9t
YWMvVGlsZUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oCShyZXZpc2lvbiAxMzIyNzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgVGlsZUNhY2hlIDogcHVibGljIFRpbGVkQmFja2luZyB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGlsZUNhY2hlKTsKIAogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPFRpbGVDYWNoZT4gY3JlYXRlKFdlYlRpbGVDYWNoZUxheWVyKiwgY29u
c3QgSW50U2l6ZSYgdGlsZVNpemUpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFRpbGVDYWNoZT4g
Y3JlYXRlKFdlYlRpbGVDYWNoZUxheWVyKik7CiAgICAgflRpbGVDYWNoZSgpOwogCiAgICAgdm9p
ZCB0aWxlQ2FjaGVMYXllckJvdW5kc0NoYW5nZWQoKTsKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyB1bnNpZ25lZCBibGFua1BpeGVsQ291bnRGb3JUaWxlcyhjb25zdCBXZWJU
aWxlTGF5ZXJMaXN0JiwgSW50UmVjdCwgSW50UG9pbnQpOwogCiBwcml2YXRlOgotICAgIFRpbGVD
YWNoZShXZWJUaWxlQ2FjaGVMYXllciosIGNvbnN0IEludFNpemUmIHRpbGVTaXplKTsKKyAgICBU
aWxlQ2FjaGUoV2ViVGlsZUNhY2hlTGF5ZXIqKTsKIAogICAgIC8vIFRpbGVkQmFja2luZyBtZW1i
ZXIgZnVuY3Rpb25zLgogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlUmVjdChjb25zdCBJbnRS
ZWN0JikgT1ZFUlJJREU7CkBAIC05OSw2ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRU
aWxlSW5kZXhSYW5nZUZvclJlY3QoY29uc3QgSW50UmVjdCYsIFRpbGVJbmRleCYgdG9wTGVmdCwg
VGlsZUluZGV4JiBib3R0b21SaWdodCk7CiAKICAgICBJbnRSZWN0IGNvbXB1dGVUaWxlQ292ZXJh
Z2VSZWN0KCkgY29uc3Q7CisgICAgdm9pZCBhZGp1c3RUaWxlU2l6ZUZvckNvdmVyYWdlUmVjdChj
b25zdCBJbnRSZWN0Jik7CiAKICAgICB2b2lkIHNjaGVkdWxlVGlsZVJldmFsaWRhdGlvbihkb3Vi
bGUgaW50ZXJ2YWwpOwogICAgIHZvaWQgdGlsZVJldmFsaWRhdGlvblRpbWVyRmlyZWQoVGltZXI8
VGlsZUNhY2hlPiopOwpAQCAtMTEyLDcgKzExMyw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJUaWxl
Q2FjaGVMYXllciogbV90aWxlQ2FjaGVMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV90
aWxlQ29udGFpbmVyTGF5ZXI7Ci0gICAgY29uc3QgSW50U2l6ZSBtX3RpbGVTaXplOworICAgIElu
dFNpemUgbV90aWxlU2l6ZTsKICAgICBJbnRSZWN0IG1fdmlzaWJsZVJlY3Q7CiAKICAgICB0eXBl
ZGVmIEhhc2hNYXA8VGlsZUluZGV4LCBSZXRhaW5QdHI8V2ViVGlsZUxheWVyPiA+IFRpbGVNYXA7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21h
Yy9UaWxlQ2FjaGUubW0JKHJldmlzaW9uIDEzMjI3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE1
ICs0NSwxOCBAQCAtICh2b2lkKXNldEFjY2VsZXJhdGVzRHJhd2luZzooQk9PTClmbGFnCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxUaWxlQ2FjaGU+IFRpbGVDYWNoZTo6Y3Jl
YXRlKFdlYlRpbGVDYWNoZUxheWVyKiB0aWxlQ2FjaGVMYXllciwgY29uc3QgSW50U2l6ZSYgdGls
ZVNpemUpCitzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRUaWxlQ2FjaGVXaWR0aCA9IDUxMjsKK3N0
YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRpbGVDYWNoZUhlaWdodCA9IDUxMjsKKworUGFzc093blB0
cjxUaWxlQ2FjaGU+IFRpbGVDYWNoZTo6Y3JlYXRlKFdlYlRpbGVDYWNoZUxheWVyKiB0aWxlQ2Fj
aGVMYXllcikKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRpbGVDYWNoZSh0aWxlQ2FjaGVM
YXllciwgdGlsZVNpemUpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRpbGVDYWNoZSh0aWxl
Q2FjaGVMYXllcikpOwogfQogCi1UaWxlQ2FjaGU6OlRpbGVDYWNoZShXZWJUaWxlQ2FjaGVMYXll
ciogdGlsZUNhY2hlTGF5ZXIsIGNvbnN0IEludFNpemUmIHRpbGVTaXplKQorVGlsZUNhY2hlOjpU
aWxlQ2FjaGUoV2ViVGlsZUNhY2hlTGF5ZXIqIHRpbGVDYWNoZUxheWVyKQogICAgIDogbV90aWxl
Q2FjaGVMYXllcih0aWxlQ2FjaGVMYXllcikKICAgICAsIG1fdGlsZUNvbnRhaW5lckxheWVyKGFk
b3B0Q0YoW1tDQUxheWVyIGFsbG9jXSBpbml0XSkpCi0gICAgLCBtX3RpbGVTaXplKHRpbGVTaXpl
KQorICAgICwgbV90aWxlU2l6ZShJbnRTaXplKGRlZmF1bHRUaWxlQ2FjaGVXaWR0aCwgZGVmYXVs
dFRpbGVDYWNoZUhlaWdodCkpCiAgICAgLCBtX3RpbGVSZXZhbGlkYXRpb25UaW1lcih0aGlzLCAm
VGlsZUNhY2hlOjp0aWxlUmV2YWxpZGF0aW9uVGltZXJGaXJlZCkKICAgICAsIG1fc2NhbGUoMSkK
ICAgICAsIG1fZGV2aWNlU2NhbGVGYWN0b3IoMSkKQEAgLTMwMCw4ICszMDMsMTggQEAgdm9pZCBU
aWxlQ2FjaGU6OmdldFRpbGVJbmRleFJhbmdlRm9yUmVjdAogCiAgICAgdG9wTGVmdC5zZXRYKG1h
eChjbGFtcGVkUmVjdC54KCkgLyBtX3RpbGVTaXplLndpZHRoKCksIDApKTsKICAgICB0b3BMZWZ0
LnNldFkobWF4KGNsYW1wZWRSZWN0LnkoKSAvIG1fdGlsZVNpemUuaGVpZ2h0KCksIDApKTsKLSAg
ICBib3R0b21SaWdodC5zZXRYKG1heChjbGFtcGVkUmVjdC5tYXhYKCkgLyBtX3RpbGVTaXplLndp
ZHRoKCksIDApKTsKLSAgICBib3R0b21SaWdodC5zZXRZKG1heChjbGFtcGVkUmVjdC5tYXhZKCkg
LyBtX3RpbGVTaXplLmhlaWdodCgpLCAwKSk7CisKKyAgICAvLyBJZiB0aGUgbV90aWxlU2l6ZSBh
bmQgY2xhbXBlZFJlY3Quc2l6ZSgpIGFyZSB0aGUgc2FtZSBpbiBlaXRoZXIgZGltZW5zaW9uLCB0
aGVuIHdlCisgICAgLy8gZG9uJ3Qgd2FudCB0byBvdmVyZHJhdywgc28gZXhwbGljaXR5IHNldCB4
L3kgdG8gMCBpbiB0aGF0IGNhc2UuCisgICAgaWYgKGNsYW1wZWRSZWN0Lm1heFgoKSAhPSAgbV90
aWxlU2l6ZS53aWR0aCgpKQorICAgICAgICBib3R0b21SaWdodC5zZXRYKG1heChjbGFtcGVkUmVj
dC5tYXhYKCkgLyBtX3RpbGVTaXplLndpZHRoKCksIDApKTsKKyAgICBlbHNlCisgICAgICAgIGJv
dHRvbVJpZ2h0LnNldFgoMCk7CisKKyAgICBpZiAoY2xhbXBlZFJlY3QubWF4WSgpICE9ICBtX3Rp
bGVTaXplLmhlaWdodCgpKQorICAgICAgICBib3R0b21SaWdodC5zZXRZKG1heChjbGFtcGVkUmVj
dC5tYXhZKCkgLyBtX3RpbGVTaXplLmhlaWdodCgpLCAwKSk7CisgICAgZWxzZQorICAgICAgICBi
b3R0b21SaWdodC5zZXRZKDApOwogfQogCiBJbnRSZWN0IFRpbGVDYWNoZTo6Y29tcHV0ZVRpbGVD
b3ZlcmFnZVJlY3QoKSBjb25zdApAQCAtMzI1LDYgKzMzOCwxNiBAQCBJbnRSZWN0IFRpbGVDYWNo
ZTo6Y29tcHV0ZVRpbGVDb3ZlcmFnZVJlCiAgICAgcmV0dXJuIHRpbGVDb3ZlcmFnZVJlY3Q7CiB9
CiAKK3ZvaWQgVGlsZUNhY2hlOjphZGp1c3RUaWxlU2l6ZUZvckNvdmVyYWdlUmVjdChjb25zdCBJ
bnRSZWN0JiBjb3ZlcmFnZVJlY3QpCit7CisgICAgaWYgKG1fdGlsZUNvdmVyYWdlID09IENvdmVy
YWdlRm9yVmlzaWJsZUFyZWEpIHsKKyAgICAgICAgbV90aWxlU2l6ZSA9IGNvdmVyYWdlUmVjdC5z
aXplKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3RpbGVTaXplID0gSW50U2l6
ZShkZWZhdWx0VGlsZUNhY2hlV2lkdGgsIGRlZmF1bHRUaWxlQ2FjaGVIZWlnaHQpOworfQorCiB2
b2lkIFRpbGVDYWNoZTo6c2NoZWR1bGVUaWxlUmV2YWxpZGF0aW9uKGRvdWJsZSBpbnRlcnZhbCkK
IHsKICAgICBpZiAobV90aWxlUmV2YWxpZGF0aW9uVGltZXIuaXNBY3RpdmUoKSAmJiBtX3RpbGVS
ZXZhbGlkYXRpb25UaW1lci5uZXh0RmlyZUludGVydmFsKCkgPCBpbnRlcnZhbCkKQEAgLTM3OSw2
ICs0MDIsMTAgQEAgdm9pZCBUaWxlQ2FjaGU6OnJldmFsaWRhdGVUaWxlcygpCiAKICAgICBJbnRS
ZWN0IHRpbGVDb3ZlcmFnZVJlY3QgPSBjb21wdXRlVGlsZUNvdmVyYWdlUmVjdCgpOwogCisgICAg
SW50U2l6ZSBvbGRUaWxlU2l6ZSA9IG1fdGlsZVNpemU7CisgICAgYWRqdXN0VGlsZVNpemVGb3JD
b3ZlcmFnZVJlY3QodGlsZUNvdmVyYWdlUmVjdCk7CisgICAgYm9vbCB0aWxlU2l6ZUNoYW5nZWQg
PSBtX3RpbGVTaXplICE9IG9sZFRpbGVTaXplOworCiAgICAgVmVjdG9yPFRpbGVJbmRleD4gdGls
ZXNUb1JlbW92ZTsKIAogICAgIGZvciAoVGlsZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmJl
Z2luKCksIGVuZCA9IG1fdGlsZXMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtMzg2LDcg
KzQxMyw3IEBAIHZvaWQgVGlsZUNhY2hlOjpyZXZhbGlkYXRlVGlsZXMoKQogCiAgICAgICAgIFdl
YlRpbGVMYXllciogdGlsZUxheWVyID0gaXQtPnZhbHVlLmdldCgpOwogCi0gICAgICAgIGlmICgh
cmVjdEZvclRpbGVJbmRleCh0aWxlSW5kZXgpLmludGVyc2VjdHModGlsZUNvdmVyYWdlUmVjdCkp
IHsKKyAgICAgICAgaWYgKCFyZWN0Rm9yVGlsZUluZGV4KHRpbGVJbmRleCkuaW50ZXJzZWN0cyh0
aWxlQ292ZXJhZ2VSZWN0KSB8fCB0aWxlU2l6ZUNoYW5nZWQpIHsKICAgICAgICAgICAgIC8vIFJl
bW92ZSB0aGlzIGxheWVyLgogICAgICAgICAgICAgW3RpbGVMYXllciByZW1vdmVGcm9tU3VwZXJs
YXllcl07CiAgICAgICAgICAgICBbdGlsZUxheWVyIHNldFRpbGVDYWNoZTowXTsKQEAgLTQwNyw4
ICs0MzQsMTAgQEAgdm9pZCBUaWxlQ2FjaGU6OnJldmFsaWRhdGVUaWxlcygpCiAKICAgICBWZWN0
b3I8RmxvYXRSZWN0PiBkaXJ0eVJlY3RzOwogCisgICAgaW50IG51bVRpbGVzID0gMDsKICAgICBm
b3IgKGludCB5ID0gdG9wTGVmdC55KCk7IHkgPD0gYm90dG9tUmlnaHQueSgpOyArK3kpIHsKICAg
ICAgICAgZm9yIChpbnQgeCA9IHRvcExlZnQueCgpOyB4IDw9IGJvdHRvbVJpZ2h0LngoKTsgKyt4
KSB7CisgICAgICAgICAgICBudW1UaWxlcysrOwogICAgICAgICAgICAgVGlsZUluZGV4IHRpbGVJ
bmRleCh4LCB5KTsKIAogICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IHJlY3RGb3JUaWxl
SW5kZXgodGlsZUluZGV4KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL21hYy9XZWJUaWxlQ2FjaGVMYXllci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvV2ViVGlsZUNhY2hlTGF5ZXIubW0JKHJldmlzaW9u
IDEzMjI3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9XZWJU
aWxlQ2FjaGVMYXllci5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsNyBAQCAtIChpZClp
bml0CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgLy8gRklYTUU6
IFRoZSB0aWxlIHNpemUgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZS4KLSAgICBfdGlsZUNhY2hlID0g
VGlsZUNhY2hlOjpjcmVhdGUoc2VsZiwgSW50U2l6ZSg1MTIsIDUxMikpOworICAgIF90aWxlQ2Fj
aGUgPSBUaWxlQ2FjaGU6OmNyZWF0ZShzZWxmKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgW3NlbGYg
c2V0TmFtZTpAIldlYlRpbGVDYWNoZUxheWVyIl07CiAjZW5kaWYKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEzMjM4NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDEyLTEwLTI0ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTY5Cisg
ICAgICAgIFdlIHNob3VsZCBtYWtlIFRpbGVDYWNoZSB0aWxlcyB0aGUgc2l6ZSBvZiB0aGUgdGls
ZSBjb3ZlcmFnZSByZWN0IAorICAgICAgICB3aGVuIHdlIGNhbid0IGRvIGZhc3Qgc2Nyb2xsaW5n
CisgICAgICAgIC1hbmQtCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjUwNTAyMT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgdGVzdC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy90aWxlLWNvdmVyYWdlLXNsb3ctc2Ny
b2xsaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL3RpbGVk
LWRyYXdpbmcvdGlsZS1jb3ZlcmFnZS1zbG93LXNjcm9sbGluZy5odG1sOiBBZGRlZC4KKwogMjAx
Mi0xMC0yNCAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQgR1RLIGdhcmRlbmluZy4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy90aWxlZC1kcmF3aW5nL3RpbGUtY292ZXJhZ2Utc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3Rp
bGUtY292ZXJhZ2Utc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvdGlsZS1jb3ZlcmFnZS1zbG93
LXNjcm9sbGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKKyhH
cmFwaGljc0xheWVyCisgIChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgKHZpc2libGUgcmVjdCAw
LjAwLCAwLjAwIDgwMC4wMCB4IDYwMC4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NM
YXllcgorICAgICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAgICAgKGRyYXdzQ29udGVudCAx
KQorICAgICAgKGJhY2tncm91bmRDb2xvciAjRkZGRkZGKQorICAgICAgKHZpc2libGUgcmVjdCAw
LjAwLCAwLjAwIDgwMC4wMCB4IDYwMC4wMCkKKyAgICAgICh0aWxlIGNhY2hlIGNvdmVyYWdlIDAs
IDAgODAwIHggNjAwKQorICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIK
KyAgICAgICAgICAodmlzaWJsZSByZWN0IDAuMDAsIDAuMDAgMC4wMCB4IDAuMDApCisgICAgICAg
ICkKKyAgICAgICkKKyAgICApCisgICkKKykKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL3RpbGVkLWRyYXdpbmcvdGlsZS1jb3ZlcmFnZS1zbG93LXNjcm9sbGluZy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3RpbGUtY292
ZXJhZ2Utc2xvdy1zY3JvbGxpbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3RpbGUtY292ZXJhZ2Utc2xvdy1zY3JvbGxpbmcuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1s
PgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICAuYm94IHsKKyAgICAgICAgICAgIGhlaWdo
dDogMTAwcHg7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgICAgICBwb3NpdGlv
bjogZml4ZWQ7IC8qIEF0IHRoaXMgdGltZSwgcG9zaXRpb246Zml4ZWQgZm9yY2VzIHNsb3cgbW9k
ZS4gKi8KKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisKKyAgICAgICAgZnVuY3Rpb24gZG9UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnbGF5ZXJzJykuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1
bWVudCwKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLkxBWUVSX1RSRUVfSU5DTFVERVNf
VklTSUJMRV9SRUNUUyB8IGludGVybmFscy5MQVlFUl9UUkVFX0lOQ0xVREVTX1RJTEVfQ0FDSEVT
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcignbG9hZCcsIGRvVGVzdCwgZmFsc2UpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGNsYXNzPSJib3giPgorPC9kaXY+Cis8cHJlIGlkPSJsYXllcnMiPkxheWVyIHRy
ZWUgZ29lcyBoZXJlPC9wPgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="184068"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170472</attachid>
            <date>2012-10-24 14:27:07 -0700</date>
            <delta_ts>2012-10-24 14:29:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-4.txt</filename>
            <type>text/plain</type>
            <size>10111</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjM5OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEyLTEwLTI0ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTY5CisgICAgICAgIFdlIHNob3VsZCBtYWtlIFRpbGVDYWNo
ZSB0aWxlcyB0aGUgc2l6ZSBvZiB0aGUgdGlsZSBjb3ZlcmFnZSByZWN0IAorICAgICAgICB3aGVu
IHdlIGNhbid0IGRvIGZhc3Qgc2Nyb2xsaW5nCisgICAgICAgIC1hbmQtCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xMjUwNTAyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTb21lIHdlYnNpdGVzIHRoYXQgZG9uJ3QgZG8gZmFzdCBzY3JvbGxpbmcg
c3RpbGwgc2Nyb2xsIHNsb3dlciB0aGFuIAorICAgICAgICB0aGV5IGRvIHdpdGggdGlsZWQgZHJh
d2luZyBkaXNhYmxlZC4gCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05OTc2OCBhZGRyZXNzZWQgc29tZSBvZiB0aGlzIAorICAgICAgICBwZXJmb3JtYW5j
ZSBwcm9ibGVtLCBidXQgdGhlcmUgaXMgc3RpbGwgbW9yZSBncm91bmQgdG8gbWFrZSB1cC4gVGhp
cyAKKyAgICAgICAgcGF0Y2ggYWRkcmVzc2VzIHRoZSByZW1haW5pbmcgaXNzdWUgYnkgbWFraW5n
IHRpbGVzIHRoZSBzaXplIG9mIHRoZSAKKyAgICAgICAgd2luZG93IHdoZW4gd2UgY2FuJ3QgZG8g
ZmFzdCBzY3JvbGxpbmcuIAorCisgICAgICAgIFRoZSBjb25zdHJ1Y3RvciBhbmQgY3JlYXRlIGZ1
bmN0aW9uIG5vIGxvbmdlciB0YWtlIGEgc2l6ZSBwYXJhbWV0ZXIuIAorICAgICAgICBUaGF0J3Mg
YWxsIGZ1bGx5IGNvbnRyb2xsZWQgd2l0aGluIFRpbGVDYWNoZSBub3cuIG1fdGlsZVNpemUgaXMg
bm8gCisgICAgICAgIGxvbmdlciBjb25zdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YS9tYWMvVGlsZUNhY2hlLmg6CisKKyAgICAgICAgU3RvcmUgdGhlIGN1cnJlbnQgZGVmYXVsdCBz
aXplIGFzIGNvbnN0YW50cyBzbyB0aGF0IHdlIGNhbiBhY2Nlc3MgaXQgCisgICAgICAgIGluIGJv
dGggdGhlIGNvbnN0cnVjdG9yIGFuZCBhZGp1c3RUaWxlU2l6ZUZvckNvdmVyYWdlUmVjdCgpLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW06CisgICAgICAg
IChXZWJDb3JlOjpUaWxlQ2FjaGU6OlRpbGVDYWNoZSk6CisKKyAgICAgICAgVGhpcyBuZXcgZnVu
Y3Rpb24gd2lsbCBzZXQgbV90aWxlU2l6ZSB0byB0aGUgc2l6ZSBvZiB0aGUgdGlsZSAKKyAgICAg
ICAgY292ZXJhZ2UgcmVjdCBpZiB0aGUgdGlsZSBjb3ZlcmFnZSBpcyBsaW1pdGVkIHRvIHRoZSB2
aXNpYmxlIGFyZWEuIAorICAgICAgICBPdGhlcndpc2UsIHRoZSB0aWxlcyBhcmUgc2V0IHRvIGJl
IHRoZSBkZWZhdWx0IHNpemUuCisgICAgICAgIChXZWJDb3JlOjpUaWxlQ2FjaGU6OmFkanVzdFRp
bGVTaXplRm9yQ292ZXJhZ2VSZWN0KToKKyAgICAgICAgCisgICAgICAgIENhbGwgYWRqdXN0VGls
ZVNpemVGb3JDb3ZlcmFnZVJlY3QoKS4KKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDYWNoZTo6cmV2
YWxpZGF0ZVRpbGVzKToKKworICAgICAgICBObyBuZWVkIHRvIHNlbmQgaW4gYSBzaXplIGFueW1v
cmUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVDYWNoZUxheWVy
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0xMC0yNCAgQW1pIEZpc2NobWFuICA8Zmlz
Y2htYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGNhbGwgdG8gc2V0TmVlZHNMYXlvdXQgZHVy
aW5nIFJlbmRlclZpZGVvOjpwYWludFJlcGxhY2VkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5oCShyZXZpc2lvbiAxMzIz
OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgVGlsZUNhY2hlIDogcHVi
bGljIFRpbGVkQmFja2luZyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGlsZUNhY2hlKTsK
IAogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFRpbGVDYWNoZT4gY3JlYXRlKFdlYlRp
bGVDYWNoZUxheWVyKiwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUpOworICAgIHN0YXRpYyBQYXNz
T3duUHRyPFRpbGVDYWNoZT4gY3JlYXRlKFdlYlRpbGVDYWNoZUxheWVyKik7CiAgICAgflRpbGVD
YWNoZSgpOwogCiAgICAgdm9pZCB0aWxlQ2FjaGVMYXllckJvdW5kc0NoYW5nZWQoKTsKQEAgLTc5
LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB1bnNpZ25lZCBibGFua1BpeGVsQ291bnRG
b3JUaWxlcyhjb25zdCBXZWJUaWxlTGF5ZXJMaXN0JiwgSW50UmVjdCwgSW50UG9pbnQpOwogCiBw
cml2YXRlOgotICAgIFRpbGVDYWNoZShXZWJUaWxlQ2FjaGVMYXllciosIGNvbnN0IEludFNpemUm
IHRpbGVTaXplKTsKKyAgICBUaWxlQ2FjaGUoV2ViVGlsZUNhY2hlTGF5ZXIqKTsKIAogICAgIC8v
IFRpbGVkQmFja2luZyBtZW1iZXIgZnVuY3Rpb25zLgogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNp
YmxlUmVjdChjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CkBAIC05OSw2ICs5OSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBnZXRUaWxlSW5kZXhSYW5nZUZvclJlY3QoY29uc3QgSW50UmVjdCYsIFRp
bGVJbmRleCYgdG9wTGVmdCwgVGlsZUluZGV4JiBib3R0b21SaWdodCk7CiAKICAgICBJbnRSZWN0
IGNvbXB1dGVUaWxlQ292ZXJhZ2VSZWN0KCkgY29uc3Q7CisgICAgSW50U2l6ZSB0aWxlU2l6ZUZv
ckNvdmVyYWdlUmVjdChjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAKICAgICB2b2lkIHNjaGVkdWxl
VGlsZVJldmFsaWRhdGlvbihkb3VibGUgaW50ZXJ2YWwpOwogICAgIHZvaWQgdGlsZVJldmFsaWRh
dGlvblRpbWVyRmlyZWQoVGltZXI8VGlsZUNhY2hlPiopOwpAQCAtMTEyLDcgKzExMyw3IEBAIHBy
aXZhdGU6CiAKICAgICBXZWJUaWxlQ2FjaGVMYXllciogbV90aWxlQ2FjaGVMYXllcjsKICAgICBS
ZXRhaW5QdHI8Q0FMYXllcj4gbV90aWxlQ29udGFpbmVyTGF5ZXI7Ci0gICAgY29uc3QgSW50U2l6
ZSBtX3RpbGVTaXplOworICAgIEludFNpemUgbV90aWxlU2l6ZTsKICAgICBJbnRSZWN0IG1fdmlz
aWJsZVJlY3Q7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8VGlsZUluZGV4LCBSZXRhaW5QdHI8V2Vi
VGlsZUxheWVyPiA+IFRpbGVNYXA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW0JKHJldmlzaW9uIDEzMjM5OSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW0JKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDE1ICs0NSwxOCBAQCAtICh2b2lkKXNldEFjY2VsZXJhdGVzRHJh
d2luZzooQk9PTClmbGFnCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxUaWxl
Q2FjaGU+IFRpbGVDYWNoZTo6Y3JlYXRlKFdlYlRpbGVDYWNoZUxheWVyKiB0aWxlQ2FjaGVMYXll
ciwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUpCitzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRUaWxl
Q2FjaGVXaWR0aCA9IDUxMjsKK3N0YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRpbGVDYWNoZUhlaWdo
dCA9IDUxMjsKKworUGFzc093blB0cjxUaWxlQ2FjaGU+IFRpbGVDYWNoZTo6Y3JlYXRlKFdlYlRp
bGVDYWNoZUxheWVyKiB0aWxlQ2FjaGVMYXllcikKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFRpbGVDYWNoZSh0aWxlQ2FjaGVMYXllciwgdGlsZVNpemUpKTsKKyAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFRpbGVDYWNoZSh0aWxlQ2FjaGVMYXllcikpOwogfQogCi1UaWxlQ2FjaGU6OlRpbGVD
YWNoZShXZWJUaWxlQ2FjaGVMYXllciogdGlsZUNhY2hlTGF5ZXIsIGNvbnN0IEludFNpemUmIHRp
bGVTaXplKQorVGlsZUNhY2hlOjpUaWxlQ2FjaGUoV2ViVGlsZUNhY2hlTGF5ZXIqIHRpbGVDYWNo
ZUxheWVyKQogICAgIDogbV90aWxlQ2FjaGVMYXllcih0aWxlQ2FjaGVMYXllcikKICAgICAsIG1f
dGlsZUNvbnRhaW5lckxheWVyKGFkb3B0Q0YoW1tDQUxheWVyIGFsbG9jXSBpbml0XSkpCi0gICAg
LCBtX3RpbGVTaXplKHRpbGVTaXplKQorICAgICwgbV90aWxlU2l6ZShkZWZhdWx0VGlsZUNhY2hl
V2lkdGgsIGRlZmF1bHRUaWxlQ2FjaGVIZWlnaHQpCiAgICAgLCBtX3RpbGVSZXZhbGlkYXRpb25U
aW1lcih0aGlzLCAmVGlsZUNhY2hlOjp0aWxlUmV2YWxpZGF0aW9uVGltZXJGaXJlZCkKICAgICAs
IG1fc2NhbGUoMSkKICAgICAsIG1fZGV2aWNlU2NhbGVGYWN0b3IoMSkKQEAgLTMwMCw4ICszMDMs
MTIgQEAgdm9pZCBUaWxlQ2FjaGU6OmdldFRpbGVJbmRleFJhbmdlRm9yUmVjdAogCiAgICAgdG9w
TGVmdC5zZXRYKG1heChjbGFtcGVkUmVjdC54KCkgLyBtX3RpbGVTaXplLndpZHRoKCksIDApKTsK
ICAgICB0b3BMZWZ0LnNldFkobWF4KGNsYW1wZWRSZWN0LnkoKSAvIG1fdGlsZVNpemUuaGVpZ2h0
KCksIDApKTsKLSAgICBib3R0b21SaWdodC5zZXRYKG1heChjbGFtcGVkUmVjdC5tYXhYKCkgLyBt
X3RpbGVTaXplLndpZHRoKCksIDApKTsKLSAgICBib3R0b21SaWdodC5zZXRZKG1heChjbGFtcGVk
UmVjdC5tYXhZKCkgLyBtX3RpbGVTaXplLmhlaWdodCgpLCAwKSk7CisKKyAgICBpbnQgYm90dG9t
WFJhdGlvID0gY2VpbCgoZmxvYXQpY2xhbXBlZFJlY3QubWF4WCgpIC8gbV90aWxlU2l6ZS53aWR0
aCgpKTsKKyAgICBib3R0b21SaWdodC5zZXRYKG1heChib3R0b21YUmF0aW8gLSAxLCAwKSk7CisK
KyAgICBpbnQgYm90dG9tWVJhdGlvID0gY2VpbCgoZmxvYXQpY2xhbXBlZFJlY3QubWF4WSgpIC8g
bV90aWxlU2l6ZS5oZWlnaHQoKSk7CisgICAgYm90dG9tUmlnaHQuc2V0WShtYXgoYm90dG9tWVJh
dGlvIC0gMSwgMCkpOwogfQogCiBJbnRSZWN0IFRpbGVDYWNoZTo6Y29tcHV0ZVRpbGVDb3ZlcmFn
ZVJlY3QoKSBjb25zdApAQCAtMzI1LDYgKzMzMiwxMyBAQCBJbnRSZWN0IFRpbGVDYWNoZTo6Y29t
cHV0ZVRpbGVDb3ZlcmFnZVJlCiAgICAgcmV0dXJuIHRpbGVDb3ZlcmFnZVJlY3Q7CiB9CiAKK0lu
dFNpemUgVGlsZUNhY2hlOjp0aWxlU2l6ZUZvckNvdmVyYWdlUmVjdChjb25zdCBJbnRSZWN0JiBj
b3ZlcmFnZVJlY3QpIGNvbnN0Cit7CisgICAgaWYgKG1fdGlsZUNvdmVyYWdlID09IENvdmVyYWdl
Rm9yVmlzaWJsZUFyZWEpCisgICAgICAgIHJldHVybiBjb3ZlcmFnZVJlY3Quc2l6ZSgpOworICAg
IHJldHVybiBJbnRTaXplKGRlZmF1bHRUaWxlQ2FjaGVXaWR0aCwgZGVmYXVsdFRpbGVDYWNoZUhl
aWdodCk7Cit9CisKIHZvaWQgVGlsZUNhY2hlOjpzY2hlZHVsZVRpbGVSZXZhbGlkYXRpb24oZG91
YmxlIGludGVydmFsKQogewogICAgIGlmIChtX3RpbGVSZXZhbGlkYXRpb25UaW1lci5pc0FjdGl2
ZSgpICYmIG1fdGlsZVJldmFsaWRhdGlvblRpbWVyLm5leHRGaXJlSW50ZXJ2YWwoKSA8IGludGVy
dmFsKQpAQCAtMzc5LDYgKzM5MywxMCBAQCB2b2lkIFRpbGVDYWNoZTo6cmV2YWxpZGF0ZVRpbGVz
KCkKIAogICAgIEludFJlY3QgdGlsZUNvdmVyYWdlUmVjdCA9IGNvbXB1dGVUaWxlQ292ZXJhZ2VS
ZWN0KCk7CiAKKyAgICBJbnRTaXplIG9sZFRpbGVTaXplID0gbV90aWxlU2l6ZTsKKyAgICBtX3Rp
bGVTaXplID0gdGlsZVNpemVGb3JDb3ZlcmFnZVJlY3QodGlsZUNvdmVyYWdlUmVjdCk7CisgICAg
Ym9vbCB0aWxlU2l6ZUNoYW5nZWQgPSBtX3RpbGVTaXplICE9IG9sZFRpbGVTaXplOworCiAgICAg
VmVjdG9yPFRpbGVJbmRleD4gdGlsZXNUb1JlbW92ZTsKIAogICAgIGZvciAoVGlsZU1hcDo6aXRl
cmF0b3IgaXQgPSBtX3RpbGVzLmJlZ2luKCksIGVuZCA9IG1fdGlsZXMuZW5kKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewpAQCAtMzg2LDcgKzQwNCw3IEBAIHZvaWQgVGlsZUNhY2hlOjpyZXZhbGlkYXRl
VGlsZXMoKQogCiAgICAgICAgIFdlYlRpbGVMYXllciogdGlsZUxheWVyID0gaXQtPnZhbHVlLmdl
dCgpOwogCi0gICAgICAgIGlmICghcmVjdEZvclRpbGVJbmRleCh0aWxlSW5kZXgpLmludGVyc2Vj
dHModGlsZUNvdmVyYWdlUmVjdCkpIHsKKyAgICAgICAgaWYgKCFyZWN0Rm9yVGlsZUluZGV4KHRp
bGVJbmRleCkuaW50ZXJzZWN0cyh0aWxlQ292ZXJhZ2VSZWN0KSB8fCB0aWxlU2l6ZUNoYW5nZWQp
IHsKICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGlzIGxheWVyLgogICAgICAgICAgICAgW3RpbGVM
YXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CiAgICAgICAgICAgICBbdGlsZUxheWVyIHNldFRp
bGVDYWNoZTowXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21h
Yy9XZWJUaWxlQ2FjaGVMYXllci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9tYWMvV2ViVGlsZUNhY2hlTGF5ZXIubW0JKHJldmlzaW9uIDEzMjM5
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9XZWJUaWxlQ2Fj
aGVMYXllci5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsNyBAQCAtIChpZClpbml0CiAg
ICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgLy8gRklYTUU6IFRoZSB0
aWxlIHNpemUgc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZS4KLSAgICBfdGlsZUNhY2hlID0gVGlsZUNh
Y2hlOjpjcmVhdGUoc2VsZiwgSW50U2l6ZSg1MTIsIDUxMikpOworICAgIF90aWxlQ2FjaGUgPSBU
aWxlQ2FjaGU6OmNyZWF0ZShzZWxmKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgW3NlbGYgc2V0TmFt
ZTpAIldlYlRpbGVDYWNoZUxheWVyIl07CiAjZW5kaWYKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjM5
OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3
IEBACisyMDEyLTEwLTI0ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTY5CisgICAgICAg
IFdlIHNob3VsZCBtYWtlIFRpbGVDYWNoZSB0aWxlcyB0aGUgc2l6ZSBvZiB0aGUgdGlsZSBjb3Zl
cmFnZSByZWN0IAorICAgICAgICB3aGVuIHdlIGNhbid0IGRvIGZhc3Qgc2Nyb2xsaW5nCisgICAg
ICAgIC1hbmQtCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjUwNTAyMT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgdGVzdC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy90aWxlLWNvdmVyYWdlLXNsb3ctc2Nyb2xsaW5n
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdp
bmcvdGlsZS1jb3ZlcmFnZS1zbG93LXNjcm9sbGluZy5odG1sOiBBZGRlZC4KKwogMjAxMi0xMC0y
NCAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNldHRpbmcgd2lk
dGggb2YgYSBmbGV4aXRlbSBjYXVzZXMgdGhlIGFkamFjZW50IGZsZXggaXRlbSB0byBiZSBkaXNw
bGF5ZWQgcG9vcmx5LgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdp
bmcvdGlsZS1jb3ZlcmFnZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvdGlsZS1jb3ZlcmFnZS1z
bG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy90aWxlLWNvdmVyYWdlLXNsb3ctc2Nyb2xsaW5nLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorKEdyYXBoaWNzTGF5ZXIK
KyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAodmlzaWJsZSByZWN0IDAuMDAsIDAuMDAgODAw
LjAwIHggNjAwLjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAo
Ym91bmRzIDgwMC4wMCA2MDAuMDApCisgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAoYmFj
a2dyb3VuZENvbG9yICNGRkZGRkYpCisgICAgICAodmlzaWJsZSByZWN0IDAuMDAsIDAuMDAgODAw
LjAwIHggNjAwLjAwKQorICAgICAgKHRpbGUgY2FjaGUgY292ZXJhZ2UgMCwgMCA4MDAgeCA2MDAp
CisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICh2
aXNpYmxlIHJlY3QgMC4wMCwgMC4wMCAwLjAwIHggMC4wMCkKKyAgICAgICAgKQorICAgICAgKQor
ICAgICkKKyAgKQorKQorCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJh
d2luZy90aWxlLWNvdmVyYWdlLXNsb3ctc2Nyb2xsaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvdGlsZS1jb3ZlcmFnZS1zbG93LXNj
cm9sbGluZy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3Rp
bGVkLWRyYXdpbmcvdGlsZS1jb3ZlcmFnZS1zbG93LXNjcm9sbGluZy5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKyAg
ICA8c3R5bGU+CisgICAgICAgIC5ib3ggeworICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAg
ICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsgLyog
QXQgdGhpcyB0aW1lLCBwb3NpdGlvbjpmaXhlZCBmb3JjZXMgc2xvdyBtb2RlLiAqLworICAgICAg
ICB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICBm
dW5jdGlvbiBkb1Rlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMn
KS5pbm5lclRleHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50LAorICAgICAg
ICAgICAgICAgICAgICBpbnRlcm5hbHMuTEFZRVJfVFJFRV9JTkNMVURFU19WSVNJQkxFX1JFQ1RT
IHwgaW50ZXJuYWxzLkxBWUVSX1RSRUVfSU5DTFVERVNfVElMRV9DQUNIRVMpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywg
ZG9UZXN0LCBmYWxzZSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgY2xh
c3M9ImJveCI+Cis8L2Rpdj4KKzxwcmUgaWQ9ImxheWVycyI+TGF5ZXIgdHJlZSBnb2VzIGhlcmU8
L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="184092"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>