<?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>89658</bug_id>
          
          <creation_ts>2012-06-21 06:50:22 -0700</creation_ts>
          <short_desc>FontFallbackList should release cached font data when the FontCache is invalidated</short_desc>
          <delta_ts>2012-07-03 01:13:21 -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>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>79668</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Balazs Kelemen">kbalazs</reporter>
          <assigned_to name="Balazs Kelemen">kbalazs</assigned_to>
          <cc>jchaffraix</cc>
    
    <cc>mitz</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>rgabor</cc>
    
    <cc>zherczeg</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>654464</commentid>
    <comment_count>0</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-06-21 06:50:22 -0700</bug_when>
    <thetext>This has shown in #76534, i.e. the assertion |fontCache()-&gt;generation() == m_generation| in FontFallbackList::fontDataAt is failing. This means we hurt the invariant that the FontData* stored in FontFallbackList also exists in the FontCache with it&apos;s associated FontPlatformData. I believe the reason why it did not shown up earlier is that FontCache::invalidate is not well tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654466</commentid>
    <comment_count>1</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-06-21 06:51:49 -0700</bug_when>
    <thetext>*** Bug 76534 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654519</commentid>
    <comment_count>2</comment_count>
      <attachid>148804</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-06-21 07:59:44 -0700</bug_when>
    <thetext>Created attachment 148804
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654528</commentid>
    <comment_count>3</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-06-21 08:03:26 -0700</bug_when>
    <thetext>It causes assertion on Qt, so it should block bug79668, please don&apos;t remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654551</commentid>
    <comment_count>4</comment_count>
      <attachid>148804</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-21 08:28:33 -0700</bug_when>
    <thetext>Comment on attachment 148804
Patch

Attachment 148804 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13034156</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654557</commentid>
    <comment_count>5</comment_count>
      <attachid>148804</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-21 08:33:43 -0700</bug_when>
    <thetext>Comment on attachment 148804
Patch

Attachment 148804 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13031110</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654564</commentid>
    <comment_count>6</comment_count>
      <attachid>148804</attachid>
    <who name="">mitz</who>
    <bug_when>2012-06-21 08:39:24 -0700</bug_when>
    <thetext>Comment on attachment 148804
Patch

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        but it is not reliable. Fix this by making FontFallBackList a client of

What does this mean? Please describe the circumstances under which the problem occurs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656111</commentid>
    <comment_count>7</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-06-23 10:55:40 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 148804 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148804&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:14
&gt; &gt; +        but it is not reliable. Fix this by making FontFallBackList a client of
&gt; 
&gt; What does this mean? Please describe the circumstances under which the problem occurs.

Ok, this has not been formulated well, but I think it&apos;s quite simple. If there is some style change that affects a font of an element, we invalidate the FontFallbackList, so it will acquire the fonts from the FontCache again. But if we invalidate the FontCache itself, we should invalidate all FontFallbackList immediately. As I see FontFallbackList is nothing more than a simple cache that saves a hashmap lookup in the general case (when we lookup the font data for a non-extraordinary character). In the case of the Qt DRT, it invalidates the FontCache after every test. But than it loads a new url, so we will do a full relayout anyway, and it hides this issue, except in that particular test that has been skipped for the failed assert. Actually I don&apos;t know how can that test trigger this, maybe that&apos;s a result of some other relayouting bug. I can investigate more to understand, but basically I still think that the logic of FontCache::invalidate and FontFallbackList&apos;s is plain broken, just hard to trigger.

I think the appropriate test would be to force a font cache invalidation from the test and do an incremental relayout. For being able to do that we have to add FontCache::invalidate to internals. Do you think that makes sense?

Note that a font cache invalidation could happen any time. For example the Mac port installs a listener for font settings change and call it from there (in FontCacheMac.mm)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657591</commentid>
    <comment_count>8</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-06-26 07:16:11 -0700</bug_when>
    <thetext>I tried further to trigger this bug with the approach of invalidating the font cache during page load, with no success. In the general case there is a CSSFontSelector of the document and it schedules a full style update upon font cache invalidation and it will update all fonts. However, this is not the case with the problematic test case (svg/carto.net/combobox.svg). With this test, the CSSFontSelector schedules the style update, and we assert with this particular subtree:
&lt;text x=&quot;240&quot; y=&quot;333&quot;&gt;This comboBox gives&lt;tspan x=&quot;240&quot; dy=&quot;15&quot;&gt;feedback on changes&lt;/tspan&gt;&lt;tspan x=&quot;240&quot; dy=&quot;15&quot;&gt;in the selection&lt;/tspan&gt;&lt;/text&gt;

The relevant call stack is the following:
#0  WebCore::FontFallbackList::fontDataAt
#1  WebCore::FontFallbackList::primaryFontData
#2  WebCore::FontFallbackList::primarySimpleFontData
#3  WebCore::Font::primaryFont
#4  WebCore::textRunNeedsRenderingContext
#5  WebCore::SVGTextMetrics::constructTextRun
#6  WebCore::SVGTextMetricsBuilder::initializeMeasurementWithTextRenderer
#7  WebCore::SVGTextMetricsBuilder::measureTextRenderer
#8  WebCore::SVGTextMetricsBuilder::walkTree
#9  WebCore::SVGTextMetricsBuilder::walkTree
#10 WebCore::SVGTextMetricsBuilder::measureTextRenderer
#11 WebCore::SVGTextLayoutAttributesBuilder::rebuildMetricsForTextRenderer
#12 WebCore::RenderSVGText::subtreeStyleDidChange
#13 WebCore::RenderSVGInlineText::styleDidChange
#14 WebCore::RenderObject::setStyle
#15 WebCore::Text::recalcTextStyle
#16 WebCore::Element::recalcStyle

As I see basically the problem is that: when we start walking the tree of svg text element&apos;s from measureTextRenderer, we reach element&apos;s with a renderer that still have the old style (RenderObject::setStyle did not reach them yet), and this old style refers to a font that has invalid font data in it&apos;s FontFallbackList.
Do you think I understand the situation correctly? Furthermore, do you see a better way to fix this than making FontFallbackList&apos;s invalidate their data immediately after FontCache::invalidate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657779</commentid>
    <comment_count>9</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-06-26 11:28:05 -0700</bug_when>
    <thetext>(In reply to comment #8)

Thanks for looking into this.

&gt; I tried further to trigger this bug with the approach of invalidating the font cache during page load, with no success. In the general case there is a CSSFontSelector of the document and it schedules a full style update upon font cache invalidation and it will update all fonts.

Indeed. That’s how things should work.

&gt; However, this is not the case with the problematic test case (svg/carto.net/combobox.svg). With this test, the CSSFontSelector schedules the style update, and we assert with this particular subtree:
&gt; &lt;text x=&quot;240&quot; y=&quot;333&quot;&gt;This comboBox gives&lt;tspan x=&quot;240&quot; dy=&quot;15&quot;&gt;feedback on changes&lt;/tspan&gt;&lt;tspan x=&quot;240&quot; dy=&quot;15&quot;&gt;in the selection&lt;/tspan&gt;&lt;/text&gt;
&gt; 
&gt; The relevant call stack is the following:
&gt; #0  WebCore::FontFallbackList::fontDataAt
&gt; #1  WebCore::FontFallbackList::primaryFontData
&gt; #2  WebCore::FontFallbackList::primarySimpleFontData
&gt; #3  WebCore::Font::primaryFont
&gt; #4  WebCore::textRunNeedsRenderingContext
&gt; #5  WebCore::SVGTextMetrics::constructTextRun
&gt; #6  WebCore::SVGTextMetricsBuilder::initializeMeasurementWithTextRenderer
&gt; #7  WebCore::SVGTextMetricsBuilder::measureTextRenderer
&gt; #8  WebCore::SVGTextMetricsBuilder::walkTree
&gt; #9  WebCore::SVGTextMetricsBuilder::walkTree
&gt; #10 WebCore::SVGTextMetricsBuilder::measureTextRenderer
&gt; #11 WebCore::SVGTextLayoutAttributesBuilder::rebuildMetricsForTextRenderer
&gt; #12 WebCore::RenderSVGText::subtreeStyleDidChange
&gt; #13 WebCore::RenderSVGInlineText::styleDidChange
&gt; #14 WebCore::RenderObject::setStyle
&gt; #15 WebCore::Text::recalcTextStyle
&gt; #16 WebCore::Element::recalcStyle
&gt; 
&gt; As I see basically the problem is that: when we start walking the tree of svg text element&apos;s from measureTextRenderer, we reach element&apos;s with a renderer that still have the old style (RenderObject::setStyle did not reach them yet), and this old style refers to a font that has invalid font data in it&apos;s FontFallbackList.

This looks like a serious bug in that piece of SVG code. Using stale style could lead to incorrect layout or rendering, even if the particular way we noticed the issue (through the stale font data) were fixed.

&gt; Do you think I understand the situation correctly? Furthermore, do you see a better way to fix this than making FontFallbackList&apos;s invalidate their data immediately after FontCache::invalidate?

I think we should fix the SVG code. It would be neat to come up with a test case that shows the correctness problem here even when the font cache is not getting invalidated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658592</commentid>
    <comment_count>10</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-06-27 07:31:34 -0700</bug_when>
    <thetext>Nico, do you agree that this is a bug in SVG code? If so, I&apos;m going to invalidate this entry or at least change the title.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662035</commentid>
    <comment_count>11</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-07-03 01:13:21 -0700</bug_when>
    <thetext>This is not a problem of the font system. Let&apos;s continue in bug 76534.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148804</attachid>
            <date>2012-06-21 07:59:44 -0700</date>
            <delta_ts>2012-06-21 08:39:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89658-20120621165938.patch</filename>
            <type>text/plain</type>
            <size>12241</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDM1YWJkZGMyYTJmNWIy
ZmY2NDg1MTNiN2YxYjk4ZjUzYjlkMmY1MC4uODg4ZmY1ZmE0NWRkZmI3ZDQ2ZDdjMGRmMWY0YWQ0
YjlmOGQzZmY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTA2LTIxICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBGb250RmFsbGJhY2tM
aXN0IHNob3VsZCByZWxlYXNlIGNhY2hlZCBmb250IGRhdGEgd2hlbiB0aGUgRm9udENhY2hlIGlz
IGludmFsaWRhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04OTY1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEV4aXN0aW5nIHRlc3RzIGNvdmVyc3QgdGhpcyBhcyBsb25nIGFzIHRoZSBkcml2ZXIgcHVy
Z2UgdGhlCisgICAgICAgIGZvbnQgY2FjaGUgcmVndWxhcmx5LiBUaGlzIGlzIHdoYXQgdGhlIFF0
IGFuZCBFRkwgRFJUJ3MgZG8uCisKKyAgICAgICAgQ3VycmVudGx5IHRoZXJlIGlzIG5vIGd1YXJh
bnRlZSB0aGF0IGNhY2hlZCBGb250RGF0YSBzdG9yZWQgaW4KKyAgICAgICAgRm9udEZhbGxCYWNr
TGlzdCdzIHdpbGwgYmUgaW52YWxpZGF0ZWQgYWZ0ZXIgZm9udENhY2hlKCktPmludmFsaWRhdGUo
KS4KKyAgICAgICAgSWYgd2UgYXJlIGx1Y2t5IGl0IGNhbiBiZSBpbnZhbGlkYXRlZCBpbiBzdHls
ZSB1cGRhdGVzIHZpYSBGb250Ojp1cGRhdGUKKyAgICAgICAgYnV0IGl0IGlzIG5vdCByZWxpYWJs
ZS4gRml4IHRoaXMgYnkgbWFraW5nIEZvbnRGYWxsQmFja0xpc3QgYSBjbGllbnQgb2YKKyAgICAg
ICAgdGhlIEZvbnRDYWNoZSBzbyBpdCB3aWxsIG9ic2VydmUgaW52YWxpZGF0aW9uIGp1c3QgbGlr
ZSBGb250U2VsZWN0b3IgZG9lcy4KKyAgICAgICAgSSBiZWxpZXZlIHRoZSBvbmx5IHJlYXNvbiBp
dCBkaWQgbm90IHNob3cgdXAgc28gZmFyIGlzIHRoYXQgRm9udENhY2hlOjppbnZhbGlkYXRlCisg
ICAgICAgIGlzIG5vdCB3ZWxsIHRlc3RlZCBhbmQgYWxzbyByYXJlbHkgdXNlZCBieSBicm93c2Vy
cy4gVGhpcyBidWcgaGFzIHNob3duCisgICAgICAgIG9uIFF0IGFzIGEgZmFpbGluZyBhc3NlcnRp
b24gaW4gRm9udEZhbGxCYWNrTGlzdDo6Zm9udERhdGFBdDoKKyAgICAgICAgICAgIEFTU0VSVElP
TiBGQUlMRUQ6IGZvbnRDYWNoZSgpLT5nZW5lcmF0aW9uKCkgPT0gbV9nZW5lcmF0aW9uCisKKyAg
ICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6
YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6cmVtb3ZlQ2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6aW52YWxpZGF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGVDbGllbnQuaDoKKyAgICAgICAgKEZvbnRDYWNo
ZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGVDbGllbnQ6OmZvbnRDYWNoZUlu
dmFsaWRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZUNsaWVudDo6fkZvbnRDYWNo
ZUNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbGxiYWNrTGlzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFsbGJhY2tMaXN0OjpGb250RmFsbGJhY2tMaXN0
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbGxiYWNrTGlz
dDo6fkZvbnRGYWxsYmFja0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbGxiYWNrTGlz
dDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFsbGJhY2tMaXN0OjppbnZh
bGlkYXRlRm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbGxiYWNrTGlzdDo6Zm9u
dENhY2hlSW52YWxpZGF0ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYWxs
YmFja0xpc3QuaDoKKyAgICAgICAgKEZvbnRGYWxsYmFja0xpc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oOgorCiAyMDEyLTA2LTE5ICBNaWtlIFdlc3QgIDxt
a3dzdEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGEgc2NoZW1lIHJlZ2lzdHJ5IGZvciBi
eXBhc3NpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA4YjZkYjRh
MmU3MmVmNjBhOGJjMzI3NTU1ZjM1NWJkNDEwNTNlNjU2Li5iNDg2OThlY2I5NDNjNWZiMDA4YjAy
ZTZmYzZiOGI2NTY0NzlhZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEwOTIsNiArMTA5Miw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwIFwKICAgICBwbGF0Zm9ybS9G
aWxlU3lzdGVtLmNwcCBcCiAgICAgcGxhdGZvcm0vSGlzdG9ncmFtU3VwcG9ydC5jcHAgXAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZUNsaWVudC5jcHAgXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRG
YWxsYmFja0xpc3QuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFtaWx5LmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAppbmRl
eCA0N2YyNTFjODQxNGExZTJkYjU5ZjAwNGE5MDQ0YWEwZjhjMmU5ZDY1Li43ZWE2NDcwOTkyNmY2
YWJmODI1NzZmZmQyM2RjOTJmMDg0NWI2ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTQ0NCwxOCArNDQ0LDE4IEBAIGNvbnN0IEZv
bnREYXRhKiBGb250Q2FjaGU6OmdldEZvbnREYXRhKGNvbnN0IEZvbnQmIGZvbnQsIGludCYgZmFt
aWx5SW5kZXgsIEZvbnRTCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIEhhc2hTZXQ8
Rm9udFNlbGVjdG9yKj4qIGdDbGllbnRzOworc3RhdGljIEhhc2hTZXQ8Rm9udENhY2hlQ2xpZW50
Kj4qIGdDbGllbnRzOwogCi12b2lkIEZvbnRDYWNoZTo6YWRkQ2xpZW50KEZvbnRTZWxlY3Rvciog
Y2xpZW50KQordm9pZCBGb250Q2FjaGU6OmFkZENsaWVudChGb250Q2FjaGVDbGllbnQqIGNsaWVu
dCkKIHsKICAgICBpZiAoIWdDbGllbnRzKQotICAgICAgICBnQ2xpZW50cyA9IG5ldyBIYXNoU2V0
PEZvbnRTZWxlY3Rvcio+OworICAgICAgICBnQ2xpZW50cyA9IG5ldyBIYXNoU2V0PEZvbnRDYWNo
ZUNsaWVudCo+OwogCiAgICAgQVNTRVJUKCFnQ2xpZW50cy0+Y29udGFpbnMoY2xpZW50KSk7CiAg
ICAgZ0NsaWVudHMtPmFkZChjbGllbnQpOwogfQogCi12b2lkIEZvbnRDYWNoZTo6cmVtb3ZlQ2xp
ZW50KEZvbnRTZWxlY3RvciogY2xpZW50KQordm9pZCBGb250Q2FjaGU6OnJlbW92ZUNsaWVudChG
b250Q2FjaGVDbGllbnQqIGNsaWVudCkKIHsKICAgICBBU1NFUlQoZ0NsaWVudHMpOwogICAgIEFT
U0VSVChnQ2xpZW50cy0+Y29udGFpbnMoY2xpZW50KSk7CkBAIC00ODUsMTEgKzQ4NSwxMSBAQCB2
b2lkIEZvbnRDYWNoZTo6aW52YWxpZGF0ZSgpCiAKICAgICBnR2VuZXJhdGlvbisrOwogCi0gICAg
VmVjdG9yPFJlZlB0cjxGb250U2VsZWN0b3I+ID4gY2xpZW50czsKKyAgICBWZWN0b3I8UmVmUHRy
PEZvbnRDYWNoZUNsaWVudD4gPiBjbGllbnRzOwogICAgIHNpemVfdCBudW1DbGllbnRzID0gZ0Ns
aWVudHMtPnNpemUoKTsKICAgICBjbGllbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtQ2xp
ZW50cyk7Ci0gICAgSGFzaFNldDxGb250U2VsZWN0b3IqPjo6aXRlcmF0b3IgZW5kID0gZ0NsaWVu
dHMtPmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxGb250U2VsZWN0b3IqPjo6aXRlcmF0b3IgaXQg
PSBnQ2xpZW50cy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgIEhhc2hTZXQ8Rm9udENh
Y2hlQ2xpZW50Kj46Oml0ZXJhdG9yIGVuZCA9IGdDbGllbnRzLT5lbmQoKTsKKyAgICBmb3IgKEhh
c2hTZXQ8Rm9udENhY2hlQ2xpZW50Kj46Oml0ZXJhdG9yIGl0ID0gZ0NsaWVudHMtPmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgY2xpZW50cy5hcHBlbmQoKml0KTsKIAogICAgIEFT
U0VSVChudW1DbGllbnRzID09IGNsaWVudHMuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKaW5kZXggOTA2M2NhN2EyODJhNjk1Zjg0MmE0NWU4
MTUzMGVhZmNkYzdiMWMxNi4uZTg2NzAwMmYyODQ4M2YwZjNmZmE5YmNjOTk2ODMzMGQyNDAyMmYy
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKQEAg
LTQ4LDYgKzQ4LDcgQEAgY2xhc3MgRm9udDsKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7CiBjbGFz
cyBGb250RGF0YTsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKK2NsYXNzIEZvbnRDYWNoZUNsaWVu
dDsKIGNsYXNzIEZvbnRTZWxlY3RvcjsKIGNsYXNzIFNpbXBsZUZvbnREYXRhOwogCkBAIC04OCw4
ICs4OSw4IEBAIHB1YmxpYzoKICAgICBTaW1wbGVGb250RGF0YSogZ2V0TGFzdFJlc29ydEZhbGxi
YWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBTaG91bGRSZXRhaW4gPSBSZXRhaW4pOwog
ICAgIFNpbXBsZUZvbnREYXRhKiBnZXROb25SZXRhaW5lZExhc3RSZXNvcnRGYWxsYmFja0ZvbnQo
Y29uc3QgRm9udERlc2NyaXB0aW9uJik7CiAKLSAgICB2b2lkIGFkZENsaWVudChGb250U2VsZWN0
b3IqKTsKLSAgICB2b2lkIHJlbW92ZUNsaWVudChGb250U2VsZWN0b3IqKTsKKyAgICB2b2lkIGFk
ZENsaWVudChGb250Q2FjaGVDbGllbnQqKTsKKyAgICB2b2lkIHJlbW92ZUNsaWVudChGb250Q2Fj
aGVDbGllbnQqKTsKIAogICAgIHVuc2lnbmVkIHNob3J0IGdlbmVyYXRpb24oKTsKICAgICB2b2lk
IGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhY2hlQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk4ZmNlMmI5MmUxNGY1ZmJjNDQyN2ExM2Y2
ZGU1ODE2NzhhOWUxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZUNsaWVudC5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEyIFVuaXZlcnNpdHkgb2YgU3plZ2VkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgRm9udENhY2hlQ2xpZW50X2gKKyNkZWZpbmUgRm9udENhY2hlQ2xpZW50
X2gKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgRm9udENhY2hlQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udENhY2hlQ2xp
ZW50PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGZvbnRDYWNoZUludmFsaWRhdGVkKCkg
PSAwOworICAgIHZpcnR1YWwgfkZvbnRDYWNoZUNsaWVudCgpIHsgfQorfTsKKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYWxs
YmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbGxi
YWNrTGlzdC5jcHAKaW5kZXggNmQxMWMwOWUzNGI3MGViY2QzN2ZkNzkxZGU5Y2RkOGY4MTJiOTVm
Ny4uN2Y2ZjYwOGRlMTFhZjI5YTQ1NDY4MzdkMjFiNjgyYzFhZDRiNGViNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbGxiYWNrTGlzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbGxiYWNrTGlzdC5jcHAK
QEAgLTQ1LDIzICs0NSw0MCBAQCBGb250RmFsbGJhY2tMaXN0OjpGb250RmFsbGJhY2tMaXN0KCkK
ICAgICAsIG1fcGl0Y2goVW5rbm93blBpdGNoKQogICAgICwgbV9sb2FkaW5nQ3VzdG9tRm9udHMo
ZmFsc2UpCiB7CisgICAgZm9udENhY2hlKCktPmFkZENsaWVudCh0aGlzKTsKK30KKworRm9udEZh
bGxiYWNrTGlzdDo6fkZvbnRGYWxsYmFja0xpc3QoKQoreworICAgIHJlbGVhc2VGb250RGF0YSgp
OworICAgIGZvbnRDYWNoZSgpLT5yZW1vdmVDbGllbnQodGhpcyk7CiB9CiAKIHZvaWQgRm9udEZh
bGxiYWNrTGlzdDo6aW52YWxpZGF0ZShQYXNzUmVmUHRyPEZvbnRTZWxlY3Rvcj4gZm9udFNlbGVj
dG9yKQogeworICAgIGludmFsaWRhdGVGb250RGF0YSgpOworICAgIG1fZm9udFNlbGVjdG9yID0g
Zm9udFNlbGVjdG9yOworICAgIG1fZm9udFNlbGVjdG9yVmVyc2lvbiA9IG1fZm9udFNlbGVjdG9y
ID8gbV9mb250U2VsZWN0b3ItPnZlcnNpb24oKSA6IDA7Cit9CisKK3ZvaWQgRm9udEZhbGxiYWNr
TGlzdDo6aW52YWxpZGF0ZUZvbnREYXRhKCkKK3sKICAgICByZWxlYXNlRm9udERhdGEoKTsKICAg
ICBtX2ZvbnRMaXN0LmNsZWFyKCk7CiAgICAgbV9wYWdlWmVybyA9IDA7CiAgICAgbV9wYWdlcy5j
bGVhcigpOwogICAgIG1fY2FjaGVkUHJpbWFyeVNpbXBsZUZvbnREYXRhID0gMDsKLSAgICBtX2Zh
bWlseUluZGV4ID0gMDsgICAgCisgICAgbV9mYW1pbHlJbmRleCA9IDA7CiAgICAgbV9waXRjaCA9
IFVua25vd25QaXRjaDsKICAgICBtX2xvYWRpbmdDdXN0b21Gb250cyA9IGZhbHNlOwotICAgIG1f
Zm9udFNlbGVjdG9yID0gZm9udFNlbGVjdG9yOwotICAgIG1fZm9udFNlbGVjdG9yVmVyc2lvbiA9
IG1fZm9udFNlbGVjdG9yID8gbV9mb250U2VsZWN0b3ItPnZlcnNpb24oKSA6IDA7CiAgICAgbV9n
ZW5lcmF0aW9uID0gZm9udENhY2hlKCktPmdlbmVyYXRpb24oKTsKIH0KIAordm9pZCBGb250RmFs
bGJhY2tMaXN0Ojpmb250Q2FjaGVJbnZhbGlkYXRlZCgpCit7CisgICAgaW52YWxpZGF0ZUZvbnRE
YXRhKCk7Cit9CisKIHZvaWQgRm9udEZhbGxiYWNrTGlzdDo6cmVsZWFzZUZvbnREYXRhKCkKIHsK
ICAgICB1bnNpZ25lZCBudW1Gb250cyA9IG1fZm9udExpc3Quc2l6ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbGxiYWNrTGlzdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbGxiYWNrTGlzdC5oCmluZGV4IDEy
NDc5YjJjOWEwYWQ1NzVkMWUwMGE2NzQwYjE5YjljYmEwZWMxZDcuLjY0NTY3OWY5Y2I0NzBhOTI2
Mzk1MTM0ZTE1N2FmNTc1YjQ1Yjg4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRGYWxsYmFja0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250RmFsbGJhY2tMaXN0LmgKQEAgLTM4LDExICszOCwxMSBAQCBjbGFz
cyBGb250U2VsZWN0b3I7CiAKIGNvbnN0IGludCBjQWxsRmFtaWxpZXNTY2FubmVkID0gLTE7CiAK
LWNsYXNzIEZvbnRGYWxsYmFja0xpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250RmFsbGJhY2tM
aXN0PiB7CitjbGFzcyBGb250RmFsbGJhY2tMaXN0IDogcHVibGljIEZvbnRDYWNoZUNsaWVudCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Rm9udEZhbGxiYWNrTGlzdD4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEZvbnRGYWxsYmFja0xpc3QoKSk7IH0KIAotICAgIH5G
b250RmFsbGJhY2tMaXN0KCkgeyByZWxlYXNlRm9udERhdGEoKTsgfQorICAgIHZpcnR1YWwgfkZv
bnRGYWxsYmFja0xpc3QoKTsKICAgICB2b2lkIGludmFsaWRhdGUoUGFzc1JlZlB0cjxGb250U2Vs
ZWN0b3I+KTsKICAgICAKICAgICBib29sIGlzRml4ZWRQaXRjaChjb25zdCBGb250KiBmKSBjb25z
dCB7IGlmIChtX3BpdGNoID09IFVua25vd25QaXRjaCkgZGV0ZXJtaW5lUGl0Y2goZik7IHJldHVy
biBtX3BpdGNoID09IEZpeGVkUGl0Y2g7IH07CkBAIC04Miw2ICs4Miw4IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHNldFBsYXRmb3JtRm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CiAKKyAg
ICB2aXJ0dWFsIHZvaWQgZm9udENhY2hlSW52YWxpZGF0ZWQoKTsKKyAgICB2b2lkIGludmFsaWRh
dGVGb250RGF0YSgpOwogICAgIHZvaWQgcmVsZWFzZUZvbnREYXRhKCk7CiAKICAgICBtdXRhYmxl
IFZlY3RvcjxwYWlyPGNvbnN0IEZvbnREYXRhKiwgYm9vbD4sIDE+IG1fZm9udExpc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oCmluZGV4IDJj
N2QxNDk0ZTQ3YTQ2ZTNmOGIwZWUyZTRlZjkyYmZjZTdiMTkzNDIuLmU2ZTVkYjNlMDJhM2Y3MTg0
ZTRhZmI1MmNkNjEyOWM1ZGY0YTJmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRTZWxlY3Rvci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEZvbnRT
ZWxlY3Rvcl9oCiAjZGVmaW5lIEZvbnRTZWxlY3Rvcl9oCiAKKyNpbmNsdWRlICJGb250Q2FjaGVD
bGllbnQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAKQEAgLTM1LDcgKzM2LDcgQEAgY2xhc3MgRm9udERhdGE7CiBjbGFzcyBGb250RGVz
Y3JpcHRpb247CiBjbGFzcyBGb250U2VsZWN0b3JDbGllbnQ7CiAKLWNsYXNzIEZvbnRTZWxlY3Rv
ciA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRTZWxlY3Rvcj4geworY2xhc3MgRm9udFNlbGVjdG9y
IDogcHVibGljIEZvbnRDYWNoZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Rm9udFNl
bGVjdG9yKCkgeyB9CiAgICAgdmlydHVhbCBGb250RGF0YSogZ2V0Rm9udERhdGEoY29uc3QgRm9u
dERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lKSA9IDA7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNjVjMzUxYTk1ZWUyNzFmMTM0NDgyZWUxZTgwZWM0Y2QxNzJlNTk3YS4uZTA5MjhjOTY5MGNm
MGE4MDY4YjhmZjBjNmI1NzJiOWNlZGFkMDMxMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEy
LTA2LTIxICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBG
b250RmFsbGJhY2tMaXN0IHNob3VsZCByZWxlYXNlIGNhY2hlZCBmb250IGRhdGEgd2hlbiB0aGUg
Rm9udENhY2hlIGlzIGludmFsaWRhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04OTY1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVuc2tpcCB0aGUgdGVzdCB0aGF0IHRyaWdnZXJlZCB0aGlzIGJ1Zy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorCiAyMDEyLTA2LTE5ICBNT1JJVEEgSGFq
aW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZXhwZWN0YXRp
b24gdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggMDRhNTNiYTRiNjhiNzI1YTMw
OGI1ZGNjYmNiOGQyODE5ZTE0YzM0ZC4uNThjNTViZWRjMDlhN2U2NDJlNDk0OTFjMWNhNDM4MjAy
Y2E2MDZkNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0xMzc2LDEwICsxMzc2LDYgQEAg
c3ZnL3pvb20vdGV4dC96b29tLWNvb3Jkcy12aWV3YXR0ci0wMS1iLnN2ZwogIyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY5NzEKIHN2Zy9jdXN0b20vbm9uLXNjYWxp
bmctc3Ryb2tlLnN2ZwogCi0jIFtRdF0gZm9udENhY2hlIHJlbGF0ZWQgYXNzZXJ0aW9uIHJldmVh
bGVkIGJ5IHIxMDUxNDMKLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc2NTM0Ci1zdmcvY2FydG8ubmV0L2NvbWJvYm94LnN2ZwotCiAjIFtRdF0gc3ZnL2N1c3RvbS9n
ZXRCQm94LXBhdGguc3ZnIGZhaWxzCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MTc2Ngogc3ZnL2N1c3RvbS9nZXRCQm94LXBhdGguc3ZnCg==
</data>
<flag name="review"
          id="156650"
          type_id="1"
          status="-"
          setter="mitz"
    />
    <flag name="commit-queue"
          id="156656"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>