<?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>38217</bug_id>
          
          <creation_ts>2010-04-27 13:58:52 -0700</creation_ts>
          <short_desc>[chromium] Add WOFF support</short_desc>
          <delta_ts>2010-04-29 10:52:03 -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>Text</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Langley">agl</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>evan</cc>
    
    <cc>levin</cc>
    
    <cc>paulirish</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>217916</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Langley">agl</who>
    <bug_when>2010-04-27 13:58:52 -0700</bug_when>
    <thetext>This patch adds support for WOFF in Chromium. Since Chromium already transcodes all OpenType files for security reasons we are adding WOFF support into the transcoder. The WebKit changes which remain are
  * To recognise &quot;woff&quot; as a font-face format value (guarded by PLATFORM(CHROMIUM) at this point)
  * To change the transcoder glue file so that the transcoded font can be larger than the original. (WOFF files are compressed, so the transcoded TTF is typically larger.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217921</commentid>
    <comment_count>1</comment_count>
      <attachid>54451</attachid>
    <who name="Adam Langley">agl</who>
    <bug_when>2010-04-27 14:05:42 -0700</bug_when>
    <thetext>Created attachment 54451
patch

(This patch doesn&apos;t build against the Chromium tree until the OTS change in http://codereview.appspot.com/946044 has landed.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217930</commentid>
    <comment_count>2</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2010-04-27 14:11:05 -0700</bug_when>
    <thetext>Consider making the test case use a sans-serif as a fallback in the test so it&apos;s more obvious when the font fails to load.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217937</commentid>
    <comment_count>3</comment_count>
      <attachid>54456</attachid>
    <who name="Adam Langley">agl</who>
    <bug_when>2010-04-27 14:15:18 -0700</bug_when>
    <thetext>Created attachment 54456
patch

(In reply to comment #2)
&gt; Consider making the test case use a sans-serif as a fallback in the test so
&gt; it&apos;s more obvious when the font fails to load.

Good point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218063</commentid>
    <comment_count>4</comment_count>
      <attachid>54456</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-04-27 17:14:01 -0700</bug_when>
    <thetext>Comment on attachment 54456
patch


It seems like your test needs to added to &quot;Skipped&quot; files so that other platforms don&apos;t try to run it and fail.


&gt; diff --git a/LayoutTests/fast/css/resources/DroidSerif-Regular.woff b/LayoutTests/fast/css/resources/DroidSerif-Regular.woff

According to http://www.droidfonts.com/licensing/, the Droid font is Apache licensed so it isn&apos;t allowed to be checked into WebKit.

&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; +2010-04-27  Adam Langley  &lt;agl@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        This patch adds support for WOFF in Chromium. Since Chromium
&gt; +        already transcodes all OpenType files for security reasons we
&gt; +        are adding WOFF support into the transcoder. The WebKit changes
&gt; +        which remain are:
&gt; +          - To recognise &quot;woff&quot; as a font-face format value (guarded by
&gt; +            PLATFORM(CHROMIUM) at this point)
&gt; +          - To change the transcoder glue file so that the transcoded
&gt; +            font can be larger than the original. (WOFF files are
&gt; +            compressed, so the transcoded TTF is typically larger.)

These comments would ideally be next to the functions below where the changes occur.


&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=38217
&gt; +
&gt; +        * css/CSSFontFaceSrcValue.cpp:
&gt; +        (WebCore::CSSFontFaceSrcValue::isSupportedFormat):
&gt; +        * platform/graphics/opentype/OpenTypeSanitizer.cpp:
&gt; +        (WebCore::OpenTypeSanitizer::sanitize):
&gt; +



&gt; diff --git a/WebCore/platform/graphics/opentype/OpenTypeSanitizer.cpp b/WebCore/platform/graphics/opentype/OpenTypeSanitizer.cpp
&gt; +    return SharedBuffer::create(static_cast&lt;unsigned char*&gt;(output.Release()), transcodeLen);

output.Release() looks like a memory leak here because Release typically implies that it lets go of ownership of a buffer but SharedBuffer::create isn&apos;t taking ownership of it. Why isn&apos;t this a leak? (Should Release have a different name?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218206</commentid>
    <comment_count>5</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-04-27 22:35:06 -0700</bug_when>
    <thetext>one more issue with the patch:

Should 

#if PLATFORM(CHROMIUM)
            || equalIgnoringCase(m_format, &quot;woff&quot;)
#endif

really be

#if ENABLE(OPENTYPE_SANITIZER)
            || equalIgnoringCase(m_format, &quot;woff&quot;)
#endif

?

Since if chromium turned off  &quot;OPENTYPE_SANITIZER&quot;, then chromium wouldn&apos;t have woff support and any port that does enable it would have woff support?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218395</commentid>
    <comment_count>6</comment_count>
      <attachid>54563</attachid>
    <who name="Adam Langley">agl</who>
    <bug_when>2010-04-28 07:45:45 -0700</bug_when>
    <thetext>Created attachment 54563
patch

PTAL

&gt; It seems like your test needs to added to &quot;Skipped&quot; files so that other
&gt; platforms don&apos;t try to run it and fail.

Done. (I didn&apos;t know about the Skipped files before, thanks.)

&gt; According to http://www.droidfonts.com/licensing/, the Droid font is Apache
&gt; licensed so it isn&apos;t allowed to be checked into WebKit.

I figured that we owned the copyright so could do what we liked with them. However, it appears that Ascender might have kept the copyrights so I encoded Ahem as a WOFF and used that.

&gt; These comments would ideally be next to the functions below where the changes
&gt; occur.

Done.

&gt; output.Release() looks like a memory leak here because Release typically
&gt; implies that it lets go of ownership of a buffer but SharedBuffer::create isn&apos;t
&gt; taking ownership of it. Why isn&apos;t this a leak? (Should Release have a different
&gt; name?)

Thanks, that was a leak. I assume that SharedBuffer was taking ownership, but it&apos;s just copying. That&apos;s a little unfortunate, but I can&apos;t see any way to give a buffer to a SharedBuffer so I&apos;ve kept the same design and switched to .get() instead.

&gt; Should
&gt;   #if PLATFORM(CHROMIUM)
&gt; really be
&gt;   #if ENABLE(OPENTYPE_SANITIZER)

Sure thing. Changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218403</commentid>
    <comment_count>7</comment_count>
      <attachid>54563</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-04-28 08:13:40 -0700</bug_when>
    <thetext>Comment on attachment 54563
patch

Regarding the Skipped files, I&apos;m pretty sure that &quot;LayoutTests/platform/mac/Skipped&quot; is used for all Mac OSX platforms, so there is no need to additionally put it in mac-tiger, etc. Ditto for qt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219039</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-29 08:07:23 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/58517 might have broken Chromium Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219042</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Langley">agl</who>
    <bug_when>2010-04-29 08:15:21 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; http://trac.webkit.org/changeset/58517 might have broken Chromium Linux Release

It made all the bots red, but that&apos;s because they&apos;re hugely behind. (They&apos;re building against Chromium r45696. But ToT is 45933 and LKGR is 45931)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219045</commentid>
    <comment_count>10</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-29 08:20:47 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; http://trac.webkit.org/changeset/58517 might have broken Chromium Linux Release
&gt; 
&gt; It made all the bots red, but that&apos;s because they&apos;re hugely behind. (They&apos;re
&gt; building against Chromium r45696. But ToT is 45933 and LKGR is 45931)

So maybe need to change WebKit/chromium/DEPS to rectify that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219046</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Langley">agl</who>
    <bug_when>2010-04-29 08:29:48 -0700</bug_when>
    <thetext>&gt; So maybe need to change WebKit/chromium/DEPS to rectify that?

dglazkov set me straight. Have rolled WebKit/chromium/DEPS to the correct version now. (Sorry guys, new WebKit things that I didn&apos;t know about.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219092</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Langley">agl</who>
    <bug_when>2010-04-29 10:52:03 -0700</bug_when>
    <thetext>r58517</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54451</attachid>
            <date>2010-04-27 14:05:42 -0700</date>
            <delta_ts>2010-04-27 14:15:18 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>4416</size>
            <attacher name="Adam Langley">agl</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwYzY1YjA0Li5jOTNhNjljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDQt
MjcgIEFkYW0gTGFuZ2xleSAgPGFnbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIGEgdGVzdCB3aGljaCB1c2VzIGEg
Zm9udCBmcm9tIGEgV09GRiBmaWxlLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zODIxNworCisgICAgICAgICogZmFzdC9jc3MvZm9udC1mYWNlLXdv
ZmYuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvcmVzb3VyY2VzL0Ryb2lkU2VyaWYt
UmVndWxhci53b2ZmOiBBZGRlZC4KKwogMjAxMC0wNC0yNiAgT2phbiBWYWZhaSAgPG9qYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udC1mYWNlLXdvZmYuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL2ZvbnQtZmFjZS13b2ZmLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZjk5Mzg4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L2ZvbnQtZmFjZS13b2ZmLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPHN0eWxlPgorICAgIEBmb250
LWZhY2UgeworICAgICAgICBmb250LWZhbWlseTogZmFtaWx5MTsKKyAgICAgICAgc3JjOiB1cmwo
cmVzb3VyY2VzL0Ryb2lkU2VyaWYtUmVndWxhci53b2ZmKSBmb3JtYXQoIndvZmYiKTsKKyAgICB9
Cis8L3N0eWxlPgorCis8cD5UaGlzIHRlc3QgdHJpZXMgdG8gcmVuZGVyIHRoZSBmb2xsb3dpbmcg
dGV4dCB3aXRoIERyb2lkU2VyaWYsIGxvYWRlZCBmcm9tIGEgV09GRiBmaWxlLjwvcD4KKworPHAg
c3R5bGU9ImZvbnQtZmFtaWx5OiBmYW1pbHkxOyBmb250LXNpemU6IDRlbTsiPlNob3VsZCBiZSBy
ZW5kZXJlZCBpbiBEcm9pZCBTZXJpZjwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3Jlc291cmNlcy9Ecm9pZFNlcmlmLVJlZ3VsYXIud29mZiBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3Jlc291cmNlcy9Ecm9pZFNlcmlmLVJlZ3VsYXIud29mZgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4wZjgyMzk5CkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MvcmVzb3VyY2VzL0Ryb2lkU2VyaWYtUmVndWxhci53b2ZmIGRpZmZl
cgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBhZmM1ZjQyLi4yNzBhZTgyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEwLTA0LTI3ICBBZGFtIExhbmds
ZXkgIDxhZ2xAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBXT0ZGIGluIENocm9t
aXVtLiBTaW5jZSBDaHJvbWl1bQorICAgICAgICBhbHJlYWR5IHRyYW5zY29kZXMgYWxsIE9wZW5U
eXBlIGZpbGVzIGZvciBzZWN1cml0eSByZWFzb25zIHdlCisgICAgICAgIGFyZSBhZGRpbmcgV09G
RiBzdXBwb3J0IGludG8gdGhlIHRyYW5zY29kZXIuIFRoZSBXZWJLaXQgY2hhbmdlcworICAgICAg
ICB3aGljaCByZW1haW4gYXJlOgorICAgICAgICAgIC0gVG8gcmVjb2duaXNlICJ3b2ZmIiBhcyBh
IGZvbnQtZmFjZSBmb3JtYXQgdmFsdWUgKGd1YXJkZWQgYnkKKyAgICAgICAgICAgIFBMQVRGT1JN
KENIUk9NSVVNKSBhdCB0aGlzIHBvaW50KQorICAgICAgICAgIC0gVG8gY2hhbmdlIHRoZSB0cmFu
c2NvZGVyIGdsdWUgZmlsZSBzbyB0aGF0IHRoZSB0cmFuc2NvZGVkCisgICAgICAgICAgICBmb250
IGNhbiBiZSBsYXJnZXIgdGhhbiB0aGUgb3JpZ2luYWwuIChXT0ZGIGZpbGVzIGFyZQorICAgICAg
ICAgICAgY29tcHJlc3NlZCwgc28gdGhlIHRyYW5zY29kZWQgVFRGIGlzIHR5cGljYWxseSBsYXJn
ZXIuKQorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
ODIxNworCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRm9udEZhY2VTcmNWYWx1ZTo6aXNTdXBwb3J0ZWRGb3JtYXQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlU2FuaXRpemVyOjpzYW5pdGl6ZSk6CisKIDIwMTAtMDQt
MjcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFs
dWUuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKaW5kZXggMzA4ZmYz
MS4uNjk1MmI3ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5j
cHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKQEAgLTQ5LDYgKzQ5
LDkgQEAgYm9vbCBDU1NGb250RmFjZVNyY1ZhbHVlOjppc1N1cHBvcnRlZEZvcm1hdCgpIGNvbnN0
CiAgICAgfQogCiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKG1fZm9ybWF0LCAidHJ1ZXR5
cGUiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShtX2Zvcm1hdCwgIm9wZW50eXBlIikKKyNpZiBQTEFU
Rk9STShDSFJPTUlVTSkKKyAgICAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobV9mb3JtYXQs
ICJ3b2ZmIikKKyNlbmRpZgogI2lmIEVOQUJMRShTVkdfRk9OVFMpCiAgICAgICAgICAgIHx8IGlz
U1ZHRm9udEZhY2VTcmMoKQogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuY3BwCmluZGV4IGI0Y2RiMDkuLjAx
ODNiYzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVTYW5pdGl6ZXIuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVTYW5pdGl6ZXIuY3BwCkBAIC01MiwxNSArNTIsMTYgQEAgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IE9wZW5UeXBlU2FuaXRpemVyOjpzYW5pdGl6ZSgpCiAgICAgLy8gQSB0cmFu
c2NvZGVkIGZvbnQgaXMgdXN1YWxseSBzbWFsbGVyIHRoYW4gYW4gb3JpZ2luYWwgZm9udC4KICAg
ICAvLyBIb3dldmVyLCBpdCBjYW4gYmUgc2xpZ2h0bHkgYmlnZ2VyIHRoYW4gdGhlIG9yaWdpbmFs
IG9uZSBkdWUgdG8KICAgICAvLyBuYW1lIHRhYmxlIHJlcGxhY2VtZW50IGFuZC9vciBwYWRkaW5n
IGZvciBnbHlmIHRhYmxlLgotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcGFkTGVuID0gMjAgKiAx
MDI0OyAvLyAyMCBrQgorICAgIC8vCisgICAgLy8gV2l0aCBXT0ZGIGZvbnRzLCBob3dldmVyLCB3
ZSdsbCBiZSBkZWNvbXByZXNzaW5nLCBzbyB0aGUgcmVzdWx0IGNhbiBiZQorICAgIC8vIG11Y2gg
bGFyZ2VyIHRoYW4gdGhlIG9yaWdpbmFsLgogCi0gICAgT3duQXJyYXlQdHI8dW5zaWduZWQgY2hh
cj4gdHJhbnNjb2RlUmF3QnVmZmVyKG5ldyB1bnNpZ25lZCBjaGFyW21fYnVmZmVyLT5zaXplKCkg
KyBwYWRMZW5dKTsKLSAgICBvdHM6Ok1lbW9yeVN0cmVhbSBvdXRwdXQodHJhbnNjb2RlUmF3QnVm
ZmVyLmdldCgpLCBtX2J1ZmZlci0+c2l6ZSgpICsgcGFkTGVuKTsKKyAgICBvdHM6OkV4cGFuZGlu
Z01lbW9yeVN0cmVhbSBvdXRwdXQobV9idWZmZXItPnNpemUoKSwgbWF4V2ViRm9udFNpemUpOwog
ICAgIGlmICghb3RzOjpQcm9jZXNzKCZvdXRwdXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKICAgICBjb25zdCBzaXplX3QgdHJhbnNjb2RlTGVuID0gb3V0cHV0LlRlbGwoKTsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUodHJhbnNjb2RlUmF3QnVmZmVyLmdldCgp
LCB0cmFuc2NvZGVMZW4pOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyKj4ob3V0cHV0LlJlbGVhc2UoKSksIHRyYW5zY29kZUxlbik7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="commit-queue"
          id="38441"
          type_id="3"
          status="-"
          setter="agl"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54456</attachid>
            <date>2010-04-27 14:15:18 -0700</date>
            <delta_ts>2010-04-28 07:45:45 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>4507</size>
            <attacher name="Adam Langley">agl</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwYzY1YjA0Li5jOTNhNjljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDQt
MjcgIEFkYW0gTGFuZ2xleSAgPGFnbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIGEgdGVzdCB3aGljaCB1c2VzIGEg
Zm9udCBmcm9tIGEgV09GRiBmaWxlLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zODIxNworCisgICAgICAgICogZmFzdC9jc3MvZm9udC1mYWNlLXdv
ZmYuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvcmVzb3VyY2VzL0Ryb2lkU2VyaWYt
UmVndWxhci53b2ZmOiBBZGRlZC4KKwogMjAxMC0wNC0yNiAgT2phbiBWYWZhaSAgPG9qYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZm9udC1mYWNlLXdvZmYuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL2ZvbnQtZmFjZS13b2ZmLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNWMwYmZiOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L2ZvbnQtZmFjZS13b2ZmLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPHN0eWxlPgorICAgIEBmb250
LWZhY2UgeworICAgICAgICBmb250LWZhbWlseTogZmFtaWx5MTsKKyAgICAgICAgc3JjOiB1cmwo
cmVzb3VyY2VzL0Ryb2lkU2VyaWYtUmVndWxhci53b2ZmKSBmb3JtYXQoIndvZmYiKTsKKyAgICB9
Cis8L3N0eWxlPgorCis8cD5UaGlzIHRlc3QgdHJpZXMgdG8gcmVuZGVyIHRoZSBmb2xsb3dpbmcg
dGV4dCB3aXRoIERyb2lkU2VyaWYsIGxvYWRlZCBmcm9tIGEgV09GRiBmaWxlLiBUaGUgZmFsbGJh
Y2sgZm9udCBpcyBhIHNhbnMgc2VyaWYsIHNvIGl0IHNob3VsZCBiZSBvYnZpb3VzIHdoaWNoIGlz
IGJlaW5nIHVzZWQuPC9wPgorCis8cCBzdHlsZT0iZm9udC1mYW1pbHk6IGZhbWlseTEsc2Fucy1z
ZXJpZjsgZm9udC1zaXplOiA0ZW07Ij5TaG91bGQgYmUgcmVuZGVyZWQgaW4gRHJvaWQgU2VyaWY8
L3A+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXNvdXJjZXMvRHJvaWRTZXJp
Zi1SZWd1bGFyLndvZmYgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9yZXNvdXJjZXMvRHJvaWRTZXJp
Zi1SZWd1bGFyLndvZmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY4MjM5
OQpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3Jlc291
cmNlcy9Ecm9pZFNlcmlmLVJlZ3VsYXIud29mZiBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZjNWY0Mi4uMjcwYWU4MiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxMC0wNC0yNyAgQWRhbSBMYW5nbGV5ICA8YWdsQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGFkZHMgc3VwcG9ydCBmb3IgV09GRiBpbiBDaHJvbWl1bS4gU2luY2UgQ2hyb21pdW0KKyAg
ICAgICAgYWxyZWFkeSB0cmFuc2NvZGVzIGFsbCBPcGVuVHlwZSBmaWxlcyBmb3Igc2VjdXJpdHkg
cmVhc29ucyB3ZQorICAgICAgICBhcmUgYWRkaW5nIFdPRkYgc3VwcG9ydCBpbnRvIHRoZSB0cmFu
c2NvZGVyLiBUaGUgV2ViS2l0IGNoYW5nZXMKKyAgICAgICAgd2hpY2ggcmVtYWluIGFyZToKKyAg
ICAgICAgICAtIFRvIHJlY29nbmlzZSAid29mZiIgYXMgYSBmb250LWZhY2UgZm9ybWF0IHZhbHVl
IChndWFyZGVkIGJ5CisgICAgICAgICAgICBQTEFURk9STShDSFJPTUlVTSkgYXQgdGhpcyBwb2lu
dCkKKyAgICAgICAgICAtIFRvIGNoYW5nZSB0aGUgdHJhbnNjb2RlciBnbHVlIGZpbGUgc28gdGhh
dCB0aGUgdHJhbnNjb2RlZAorICAgICAgICAgICAgZm9udCBjYW4gYmUgbGFyZ2VyIHRoYW4gdGhl
IG9yaWdpbmFsLiAoV09GRiBmaWxlcyBhcmUKKyAgICAgICAgICAgIGNvbXByZXNzZWQsIHNvIHRo
ZSB0cmFuc2NvZGVkIFRURiBpcyB0eXBpY2FsbHkgbGFyZ2VyLikKKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgyMTcKKworICAgICAgICAqIGNzcy9D
U1NGb250RmFjZVNyY1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU3Jj
VmFsdWU6OmlzU3VwcG9ydGVkRm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZVNhbml0aXplcjo6c2FuaXRpemUpOgorCiAyMDEwLTA0LTI3ICBBZGFtIEJhcnRoICA8YWJhcnRo
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcCBiL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU3JjVmFsdWUuY3BwCmluZGV4IDMwOGZmMzEuLjY5NTJiN2UgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU3JjVmFsdWUuY3BwCkBAIC00OSw2ICs0OSw5IEBAIGJvb2wgQ1NTRm9udEZhY2VT
cmNWYWx1ZTo6aXNTdXBwb3J0ZWRGb3JtYXQoKSBjb25zdAogICAgIH0KIAogICAgIHJldHVybiBl
cXVhbElnbm9yaW5nQ2FzZShtX2Zvcm1hdCwgInRydWV0eXBlIikgfHwgZXF1YWxJZ25vcmluZ0Nh
c2UobV9mb3JtYXQsICJvcGVudHlwZSIpCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgICAg
ICAgIHx8IGVxdWFsSWdub3JpbmdDYXNlKG1fZm9ybWF0LCAid29mZiIpCisjZW5kaWYKICNpZiBF
TkFCTEUoU1ZHX0ZPTlRTKQogICAgICAgICAgICB8fCBpc1NWR0ZvbnRGYWNlU3JjKCkKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVNhbml0aXplci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlU2FuaXRpemVyLmNwcAppbmRleCBiNGNkYjA5Li4wMTgzYmMyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlU2FuaXRpemVyLmNw
cApAQCAtNTIsMTUgKzUyLDE2IEBAIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBPcGVuVHlwZVNh
bml0aXplcjo6c2FuaXRpemUoKQogICAgIC8vIEEgdHJhbnNjb2RlZCBmb250IGlzIHVzdWFsbHkg
c21hbGxlciB0aGFuIGFuIG9yaWdpbmFsIGZvbnQuCiAgICAgLy8gSG93ZXZlciwgaXQgY2FuIGJl
IHNsaWdodGx5IGJpZ2dlciB0aGFuIHRoZSBvcmlnaW5hbCBvbmUgZHVlIHRvCiAgICAgLy8gbmFt
ZSB0YWJsZSByZXBsYWNlbWVudCBhbmQvb3IgcGFkZGluZyBmb3IgZ2x5ZiB0YWJsZS4KLSAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IHBhZExlbiA9IDIwICogMTAyNDsgLy8gMjAga0IKKyAgICAvLwor
ICAgIC8vIFdpdGggV09GRiBmb250cywgaG93ZXZlciwgd2UnbGwgYmUgZGVjb21wcmVzc2luZywg
c28gdGhlIHJlc3VsdCBjYW4gYmUKKyAgICAvLyBtdWNoIGxhcmdlciB0aGFuIHRoZSBvcmlnaW5h
bC4KIAotICAgIE93bkFycmF5UHRyPHVuc2lnbmVkIGNoYXI+IHRyYW5zY29kZVJhd0J1ZmZlcihu
ZXcgdW5zaWduZWQgY2hhclttX2J1ZmZlci0+c2l6ZSgpICsgcGFkTGVuXSk7Ci0gICAgb3RzOjpN
ZW1vcnlTdHJlYW0gb3V0cHV0KHRyYW5zY29kZVJhd0J1ZmZlci5nZXQoKSwgbV9idWZmZXItPnNp
emUoKSArIHBhZExlbik7CisgICAgb3RzOjpFeHBhbmRpbmdNZW1vcnlTdHJlYW0gb3V0cHV0KG1f
YnVmZmVyLT5zaXplKCksIG1heFdlYkZvbnRTaXplKTsKICAgICBpZiAoIW90czo6UHJvY2Vzcygm
b3V0cHV0LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX2J1ZmZlci0+ZGF0YSgp
KSwgbV9idWZmZXItPnNpemUoKSkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgY29uc3Qgc2l6
ZV90IHRyYW5zY29kZUxlbiA9IG91dHB1dC5UZWxsKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHRyYW5zY29kZVJhd0J1ZmZlci5nZXQoKSwgdHJhbnNjb2RlTGVuKTsKKyAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KG91
dHB1dC5SZWxlYXNlKCkpLCB0cmFuc2NvZGVMZW4pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCg==
</data>
<flag name="review"
          id="38447"
          type_id="1"
          status="-"
          setter="levin"
    />
    <flag name="commit-queue"
          id="38448"
          type_id="3"
          status="-"
          setter="agl"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54563</attachid>
            <date>2010-04-28 07:45:45 -0700</date>
            <delta_ts>2010-04-28 08:13:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>8575</size>
            <attacher name="Adam Langley">agl</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwYzY1YjA0Li5iM2M5NmI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDQt
MjcgIEFkYW0gTGFuZ2xleSAgPGFnbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIGEgdGVzdCB3aGljaCB1c2VzIGEg
Zm9udCBmcm9tIGEgV09GRiBmaWxlLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zODIxNworCisgICAgICAgICogZmFzdC9jc3MvZm9udC1mYWNlLXdv
ZmYuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvcmVzb3VyY2VzL0FoZW0ud29mZjog
QWRkZWQuCisKIDIwMTAtMDQtMjYgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL2ZvbnQtZmFjZS13b2ZmLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250
LWZhY2Utd29mZi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiZGY1
MjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mb250LWZhY2Utd29m
Zi5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxzdHlsZT4KKyAgICBAZm9udC1mYWNlIHsKKyAgICAg
ICAgZm9udC1mYW1pbHk6IGZhbWlseTE7CisgICAgICAgIHNyYzogdXJsKHJlc291cmNlcy9BaGVt
LndvZmYpIGZvcm1hdCgid29mZiIpOworICAgIH0KKzwvc3R5bGU+CisKKzxwPlRoaXMgdGVzdCB0
cmllcyB0byByZW5kZXIgdGhlIGZvbGxvd2luZyB0ZXh0IHdpdGggQWhlbSwgbG9hZGVkIGZyb20g
YSBXT0ZGIGZpbGUuIFRoZSB0ZXh0IGJlbG93IHNob3VsZCBiZSBhIHNlcmllcyBvZiBibGFjayBi
b3hlcy48L3A+CisKKzxwIHN0eWxlPSJmb250LWZhbWlseTogZmFtaWx5MTsgZm9udC1zaXplOiA0
ZW07Ij5GYWlsdXJlPC9wPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcmVzb3Vy
Y2VzL0FoZW0ud29mZiBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3Jlc291cmNlcy9BaGVtLndvZmYK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGJjODA5MwpCaW5hcnkgZmlsZXMg
L2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3Jlc291cmNlcy9BaGVtLndvZmYg
ZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDdmNWI2MWUuLmFhNzY4NjYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC0xMjg5LDYgKzEyODksNyBAQCBmYXN0L2Nzcy9p
bnZhbGlkLXBlcmNlbnRhZ2UtcHJvcGVydHkuaHRtbAogZmFzdC9jc3MvdGV4dC1hbGlnbi5odG1s
CiBmYXN0L2Nzcy9nZXRDb21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLXdpdGhvdXQtcmVuZGVy
ZXIuaHRtbAogZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS5odG1sCitm
YXN0L2Nzcy9mb250LWZhY2Utd29mZi5odG1sICMgRG9lc24ndCBzdXBwb3J0IFdPRkYgeWV0Lgog
ZmFzdC9kb20vY2xpZW50LXdpZHRoLWhlaWdodC1xdWlya3MuaHRtbAogZmFzdC9kb20vY2xpZW50
LXdpZHRoLWhlaWdodC5odG1sCiBmYXN0L2RvbS9jc3NUYXJnZXQtY3Jhc2guaHRtbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQKaW5kZXggNTQyMjFkNS4uYTk1NzAzNCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9Ta2lwcGVkCkBAIC02NSwzICs2NSw2
IEBAIHBsYXRmb3JtL21hYy9mb250cy9jb2xvci1iaXRtYXAuaHRtbAogIyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgwMDAgLSByNTgxMDcgY2F1c2VzIHZpZGVvLXBs
YXktc3RhbGwgYW5kIHZpZGVvLXBsYXktc3RhbGwtc2VlayB0byBmYWlsCiBodHRwL3Rlc3RzL21l
ZGlhL3ZpZGVvLXBsYXktc3RhbGwuaHRtbAogaHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXN0
YWxsLXNlZWsuaHRtbAorCisjIERvZXNuJ3Qgc3VwcG9ydCBXT0ZGIHlldC4KK2Zhc3QvY3NzL2Zv
bnQtZmFjZS13b2ZmLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1z
bm93bGVvcGFyZC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXNub3dsZW9wYXJk
L1NraXBwZWQKaW5kZXggYmFiNTA3ZC4uYjcyMzJhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXNub3dsZW9wYXJkL1NraXBwZWQKQEAgLTEyMCwzICsxMjAsNiBAQCBmYXN0L2NhbnZh
cy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC5odG1sCiAKICMgVGhpcyB0ZXN0
IGFzc2VydHM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzkzMgog
dHJhbnNpdGlvbnMvdHJhbnNpdGlvbi1lbmQtZXZlbnQtZGVzdHJveS1pZnJhbWUuaHRtbAorCisj
IERvZXNuJ3Qgc3VwcG9ydCBXT0ZGIHlldC4KK2Zhc3QvY3NzL2ZvbnQtZmFjZS13b2ZmLmh0bWwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy10aWdlci9Ta2lwcGVkIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQKaW5kZXggZjNkODYzNC4uMDMxMDBi
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQKQEAgLTE0MSwzICsxNDEs
NiBAQCBwbGF0Zm9ybS9tYWMvZm9udHMvY29sb3ItYml0bWFwLmh0bWwKICMgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4MDAwIC0gcjU4MTA3IGNhdXNlcyB2aWRlby1w
bGF5LXN0YWxsIGFuZCB2aWRlby1wbGF5LXN0YWxsLXNlZWsgdG8gZmFpbAogaHR0cC90ZXN0cy9t
ZWRpYS92aWRlby1wbGF5LXN0YWxsLmh0bWwKIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcGxheS1z
dGFsbC1zZWVrLmh0bWwKKworIyBEb2Vzbid0IHN1cHBvcnQgV09GRiB5ZXQuCitmYXN0L2Nzcy9m
b250LWZhY2Utd29mZi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
U2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCmluZGV4IDc5MDkxYzUu
LmU2M2ZlMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCkBAIC0xNzIsMyArMTcyLDYgQEAg
ZmFzdC9saXN0cy9vbC1uZXN0ZWQtbGlzdC5odG1sCiAKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMzODEyCiBmYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1s
CisKKyMgRG9lc24ndCBzdXBwb3J0IFdPRkYgeWV0LgorZmFzdC9jc3MvZm9udC1mYWNlLXdvZmYu
aHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtbGludXgvU2tpcHBlZCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LWxpbnV4L1NraXBwZWQKaW5kZXggZTY5ZGUyOS4uZTVi
ZDk2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtbGludXgvU2tpcHBlZAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC1saW51eC9Ta2lwcGVkCkBAIC0wLDAgKzEsMiBA
QAorIyBEb2Vzbid0IHN1cHBvcnQgV09GRiB5ZXQuCitmYXN0L2Nzcy9mb250LWZhY2Utd29mZi5o
dG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC1tYWMvU2tpcHBlZCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0LW1hYy9Ta2lwcGVkCmluZGV4IDQxNDhmODcuLmNhZGJjZDcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LW1hYy9Ta2lwcGVkCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0LW1hYy9Ta2lwcGVkCkBAIC0xLDMgKzEsNSBAQAotCiAjIFRo
aXMgdGVzdCByZXF1aXJlcyBvZ2cgY29kZWNzCiBtZWRpYS9tZWRpYS1jYW4tcGxheS1vZ2cuaHRt
bAorCisjIERvZXNuJ3Qgc3VwcG9ydCBXT0ZGIHlldC4KK2Zhc3QvY3NzL2ZvbnQtZmFjZS13b2Zm
Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LXdpbi9Ta2lwcGVkIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2luL1NraXBwZWQKaW5kZXggNDE0OGY4Ny4uY2FkYmNk
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2luL1NraXBwZWQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2luL1NraXBwZWQKQEAgLTEsMyArMSw1IEBACi0KICMg
VGhpcyB0ZXN0IHJlcXVpcmVzIG9nZyBjb2RlY3MKIG1lZGlhL21lZGlhLWNhbi1wbGF5LW9nZy5o
dG1sCisKKyMgRG9lc24ndCBzdXBwb3J0IFdPRkYgeWV0LgorZmFzdC9jc3MvZm9udC1mYWNlLXdv
ZmYuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggZWVhMDI1MS4uOTJiMjE1NiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC01MjIwLDMgKzUyMjAsNSBAQCBzdmcvY3VzdG9tL2Ns
aXAtcGF0aC13aXRoLXRyYW5zZm9ybS5zdmcKIHN2Zy9jdXN0b20vcmVjdXJzaXZlLWNsaXBwYXRo
LnN2Zwogc3ZnL2N1c3RvbS9tYXJrZXItb3ZlcmZsb3ctY2xpcC5zdmcKIAorIyBEb2Vzbid0IHN1
cHBvcnQgV09GRiB5ZXQuCitmYXN0L2Nzcy9mb250LWZhY2Utd29mZi5odG1sCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9Ta2lwcGVkCmluZGV4IDEzMDhkNjQuLjZhYWFjNzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9T
a2lwcGVkCkBAIC04NTUsMyArODU1LDYgQEAgZmFzdC9saXN0cy9vbC1uZXN0ZWQtaXRlbXMuaHRt
bAogZmFzdC9saXN0cy9vbC1uZXN0ZWQtbGlzdC1keW5hbWljLWluc2VydC5odG1sCiBmYXN0L2xp
c3RzL29sLW5lc3RlZC1saXN0LWR5bmFtaWMtcmVtb3ZlLmh0bWwKIGZhc3QvbGlzdHMvb2wtbmVz
dGVkLWxpc3QuaHRtbAorCisjIERvZXNuJ3Qgc3VwcG9ydCBXT0ZGIHlldC4KK2Zhc3QvY3NzL2Zv
bnQtZmFjZS13b2ZmLmh0bWwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggYWZjNWY0Mi4uNGMzOTZlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0w
NC0yNyAgQWRhbSBMYW5nbGV5ICA8YWdsQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBm
b3IgV09GRiBpbiBDaHJvbWl1bS4gU2luY2UgQ2hyb21pdW0KKyAgICAgICAgYWxyZWFkeSB0cmFu
c2NvZGVzIGFsbCBPcGVuVHlwZSBmaWxlcyBmb3Igc2VjdXJpdHkgcmVhc29ucyB3ZQorICAgICAg
ICBhcmUgYWRkaW5nIFdPRkYgc3VwcG9ydCBpbnRvIHRoZSB0cmFuc2NvZGVyLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODIxNworCisgICAgICAg
ICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9u
dEZhY2VTcmNWYWx1ZTo6aXNTdXBwb3J0ZWRGb3JtYXQpOgorICAgICAgICAgIFJlY29nbmlzZSAi
d29mZiIgYXMgYSBmb250LWZhY2UgZm9ybWF0IHZhbHVlIChndWFyZGVkIGJ5CisgICAgICAgICAg
RU5BQkxFKE9QRU5UWVBFX1NBTklUSVpFUikgYXQgdGhpcyBwb2ludCkKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZVNhbml0aXplcjo6c2FuaXRpemUpOgorICAgICAgICAgIENoYW5nZSBz
byB0aGF0IHRoZSB0cmFuc2NvZGVkIGZvbnQgY2FuIGJlIGxhcmdlciB0aGFuIHRoZSBvcmlnaW5h
bC4KKyAgICAgICAgICAoV09GRiBmaWxlcyBhcmUgY29tcHJlc3NlZCwgc28gdGhlIHRyYW5zY29k
ZWQgVFRGIGlzIHR5cGljYWxseQorICAgICAgICAgIGxhcmdlci4pCisKIDIwMTAtMDQtMjcgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3Bw
IGIvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKaW5kZXggMzA4ZmYzMS4uMjFl
ZWEwNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKKysr
IGIvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKQEAgLTQ5LDYgKzQ5LDkgQEAg
Ym9vbCBDU1NGb250RmFjZVNyY1ZhbHVlOjppc1N1cHBvcnRlZEZvcm1hdCgpIGNvbnN0CiAgICAg
fQogCiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKG1fZm9ybWF0LCAidHJ1ZXR5cGUiKSB8
fCBlcXVhbElnbm9yaW5nQ2FzZShtX2Zvcm1hdCwgIm9wZW50eXBlIikKKyNpZiBFTkFCTEUoT1BF
TlRZUEVfU0FOSVRJWkVSKQorICAgICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShtX2Zvcm1h
dCwgIndvZmYiKQorI2VuZGlmCiAjaWYgRU5BQkxFKFNWR19GT05UUykKICAgICAgICAgICAgfHwg
aXNTVkdGb250RmFjZVNyYygpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVTYW5pdGl6ZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplci5jcHAKaW5kZXggYjRjZGIwOS4u
MTRhZWQwZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVNhbml0aXplci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVNhbml0aXplci5jcHAKQEAgLTUyLDE1ICs1MiwxNiBAQCBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gT3BlblR5cGVTYW5pdGl6ZXI6OnNhbml0aXplKCkKICAgICAvLyBBIHRy
YW5zY29kZWQgZm9udCBpcyB1c3VhbGx5IHNtYWxsZXIgdGhhbiBhbiBvcmlnaW5hbCBmb250Lgog
ICAgIC8vIEhvd2V2ZXIsIGl0IGNhbiBiZSBzbGlnaHRseSBiaWdnZXIgdGhhbiB0aGUgb3JpZ2lu
YWwgb25lIGR1ZSB0bwogICAgIC8vIG5hbWUgdGFibGUgcmVwbGFjZW1lbnQgYW5kL29yIHBhZGRp
bmcgZm9yIGdseWYgdGFibGUuCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBwYWRMZW4gPSAyMCAq
IDEwMjQ7IC8vIDIwIGtCCisgICAgLy8KKyAgICAvLyBXaXRoIFdPRkYgZm9udHMsIGhvd2V2ZXIs
IHdlJ2xsIGJlIGRlY29tcHJlc3NpbmcsIHNvIHRoZSByZXN1bHQgY2FuIGJlCisgICAgLy8gbXVj
aCBsYXJnZXIgdGhhbiB0aGUgb3JpZ2luYWwuCiAKLSAgICBPd25BcnJheVB0cjx1bnNpZ25lZCBj
aGFyPiB0cmFuc2NvZGVSYXdCdWZmZXIobmV3IHVuc2lnbmVkIGNoYXJbbV9idWZmZXItPnNpemUo
KSArIHBhZExlbl0pOwotICAgIG90czo6TWVtb3J5U3RyZWFtIG91dHB1dCh0cmFuc2NvZGVSYXdC
dWZmZXIuZ2V0KCksIG1fYnVmZmVyLT5zaXplKCkgKyBwYWRMZW4pOworICAgIG90czo6RXhwYW5k
aW5nTWVtb3J5U3RyZWFtIG91dHB1dChtX2J1ZmZlci0+c2l6ZSgpLCBtYXhXZWJGb250U2l6ZSk7
CiAgICAgaWYgKCFvdHM6OlByb2Nlc3MoJm91dHB1dCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVyLT5zaXplKCkpKQogICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIGNvbnN0IHNpemVfdCB0cmFuc2NvZGVMZW4gPSBvdXRwdXQuVGVsbCgp
OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0cmFuc2NvZGVSYXdCdWZmZXIuZ2V0
KCksIHRyYW5zY29kZUxlbik7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXIqPihvdXRwdXQuZ2V0KCkpLCB0cmFuc2NvZGVMZW4pOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="38577"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="38578"
          type_id="3"
          status="-"
          setter="agl"
    />
          </attachment>
      

    </bug>

</bugzilla>