<?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>24551</bug_id>
          
          <creation_ts>2009-03-12 11:04:22 -0700</creation_ts>
          <short_desc>[Qt] leaks in font-handling</short_desc>
          <delta_ts>2009-05-18 07:14:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Balazs Kelemen">kbalazs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ariya.hidayat</cc>
    
    <cc>hausmann</cc>
    
    <cc>hyatt</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>zecke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>113420</commentid>
    <comment_count>0</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2009-03-12 11:04:22 -0700</bug_when>
    <thetext>I found there are leaking SimpleFontData objects in QtWebKit.
That&apos;s because the result of FontFallbackList::fontDataAt
is not freed. I made FontData, SimpleFontData and SegmentedFontData
ref-counted and used RefPtr-s when ownership is passed.
The patch are not complete yet because other ports are not compile with it.
Our measurements shows it has a very good affect on memory usage at least
in the case of Qt port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113423</commentid>
    <comment_count>1</comment_count>
      <attachid>28536</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2009-03-12 11:07:32 -0700</bug_when>
    <thetext>Created attachment 28536
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114009</commentid>
    <comment_count>2</comment_count>
      <attachid>28684</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2009-03-17 01:29:59 -0700</bug_when>
    <thetext>Created attachment 28684
proposed patch

Extend the first patch with doing a delete in 
FontCache::getCachedFontData(const FontPlatformData* data) for the parameter
because without this it is leaking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114069</commentid>
    <comment_count>3</comment_count>
      <attachid>28684</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-03-17 11:07:40 -0700</bug_when>
    <thetext>Comment on attachment 28684
proposed patch

I am not convinced this is necessary.  If the bug is Qt-specific, it seems like Qt should come more in line with the other platforms rather than making all the other platforms use refcounting unnecessarily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115154</commentid>
    <comment_count>4</comment_count>
      <attachid>28928</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2009-03-25 09:39:58 -0700</bug_when>
    <thetext>Created attachment 28928
proposed patch

New solution what solves the problem internally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115156</commentid>
    <comment_count>5</comment_count>
      <attachid>28928</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-03-25 09:55:29 -0700</bug_when>
    <thetext>Comment on attachment 28928
proposed patch

This looks ok to me.  Typo in ChangeLog... &quot;objets&quot; should &quot;objects&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115161</commentid>
    <comment_count>6</comment_count>
      <attachid>28931</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2009-03-25 10:06:58 -0700</bug_when>
    <thetext>Created attachment 28931
proposed patch

Typo in Changelog (and call zecke for review).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115309</commentid>
    <comment_count>7</comment_count>
      <attachid>28931</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-03-26 02:43:47 -0700</bug_when>
    <thetext>Comment on attachment 28931
proposed patch


&gt;  FontPlatformData* FontCache::getCachedFontPlatformData(const FontDescription&amp; description, const AtomicString&amp; family, bool checkingAlternateName)
&gt;  {
&gt; -    return new FontPlatformData(description);
&gt; +    return 0;

This will lead to a null pointer dereference in CSSFontFaceSource::getFontData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115313</commentid>
    <comment_count>8</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2009-03-26 04:20:04 -0700</bug_when>
    <thetext>I see. We can solve it locally like checking the pointer and if it is 0 then creating a new FontPlatformData object. If it is a unique situation then it would be enough. If it is just an example of how can bad happens then we must
find a more general solution. I guess it can be unique because the patch worked form me (I could browse with QtLauncher without segfault after applied it).
I see two possibilities: 1. introduce a macro like USE_FONTCACHE and add #ifdef-s when it is necessary
     2. implement a FontCache that provides the needed interface without leaking

So, what do you prefer? Local solution, one of the two above, or something else?
Anyway, I think we must not return with a pointer of a newly created and instantly released object from methods of FontCache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115316</commentid>
    <comment_count>9</comment_count>
      <attachid>28966</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2009-03-26 05:57:28 -0700</bug_when>
    <thetext>Created attachment 28966
proposed patch

Local fix in WebCore::CSSFontFaceSource::getFontData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115317</commentid>
    <comment_count>10</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2009-03-26 06:07:18 -0700</bug_when>
    <thetext>(In reply to comment #9)
grep says we do not have to do more checks like this so I believe the patch is right</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115347</commentid>
    <comment_count>11</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2009-03-26 10:35:39 -0700</bug_when>
    <thetext>Ops, in a more fully browsing I get segfault, so I must clear the review flag.
Things get wrong in method(s) of SVGFont.
It is because returning with zero from FontCache::getCachedFontPlatformData.
The leak can also destroy through returning from this with a new object and delete it in FontCache::getCachedFontData (it gets it as a parameter) but I think it is silly so I try to find a better solution. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116162</commentid>
    <comment_count>12</comment_count>
      <attachid>29158</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2009-04-01 06:15:52 -0700</bug_when>
    <thetext>Created attachment 29158
proposed patch

At last ready, not leaking, not crashing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116431</commentid>
    <comment_count>13</comment_count>
      <attachid>29228</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2009-04-03 09:36:38 -0700</bug_when>
    <thetext>Created attachment 29228
proposed patch - more clever solution

There is a logical mistake in the previous patch: FontFallbackList::fontDataAt gives back the SimpleFontData what has been created the first time without taking care about what FontDescription the Font what it gets as parameter has. I am not sure it is really a problem because the outputs of LayoutTests are equivalents of what they are with a clean TOT build. I tried the tests in css1/font_properties and in fonts by load and see them (because they fail even with the clean build). However I made another solution what does not suffer from this problem by transplanted some of the logic from FontCache.cpp to FontFallbackListQt.cpp and made a mapping from FontDescription to the SimpleFontData what we create and give back. I am not sure about what copyright and license should I use for the new file and where should I put it - let we discuss about it if you like the patch. Now there are 2 different solution for the same problem - you can choose what is better. I would be very happy if we could fix and close the bug somehow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116599</commentid>
    <comment_count>14</comment_count>
      <attachid>29277</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2009-04-06 02:12:37 -0700</bug_when>
    <thetext>Created attachment 29277
proposed patch - more clever solution

Same as the previous with typos, copyright and Changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118958</commentid>
    <comment_count>15</comment_count>
      <attachid>29815</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2009-04-27 02:39:26 -0700</bug_when>
    <thetext>Created attachment 29815
proposed patch - the simpler one

Ifdefing the changes in CSSFontFaceSource</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118959</commentid>
    <comment_count>16</comment_count>
      <attachid>29816</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2009-04-27 02:50:57 -0700</bug_when>
    <thetext>Created attachment 29816
proposed patch - the caching one

Ifdefing changes in CSSFontFaceSource.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121792</commentid>
    <comment_count>17</comment_count>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2009-05-18 07:14:46 -0700</bug_when>
    <thetext>As discussed with Kelemen on IRC, I splitted the patch into two parts.

The first part is landed in r43828:
http://trac.webkit.org/changeset/43828

The second part is a simplification of the caching method. It is landed in r43830:
http://trac.webkit.org/changeset/43830</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28536</attachid>
            <date>2009-03-12 11:07:32 -0700</date>
            <delta_ts>2009-03-17 01:29:59 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>rcsfd.diff</filename>
            <type>text/plain</type>
            <size>15719</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCAxMTFjZWEyLi40NGYxNGI1IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgU2ltcGxlRm9udERhdGEq
IENTU0ZvbnRGYWNlU291cmNlOjpnZXRGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZv
bnREZXNjcmkKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIFNW
R0ZvbnREYXRhKiBzdmdGb250RGF0YSA9IG5ldyBTVkdGb250RGF0YShmb250RmFjZUVsZW1lbnQp
OwotICAgICAgICAgICAgICAgICAgICBmb250RGF0YS5zZXQobmV3IFNpbXBsZUZvbnREYXRhKG1f
Zm9udC0+cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVk
UGl4ZWxTaXplKCksIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udERlc2NyaXB0
aW9uLnJlbmRlcmluZ01vZGUoKSksIHRydWUsIGZhbHNlLCBzdmdGb250RGF0YSkpOworICAgICAg
ICAgICAgICAgICAgICBmb250RGF0YS5zZXQoKFNpbXBsZUZvbnREYXRhOjpjcmVhdGUobV9mb250
LT5wbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhl
bFNpemUoKSwgc3ludGhldGljQm9sZCwgc3ludGhldGljSXRhbGljLCBmb250RGVzY3JpcHRpb24u
cmVuZGVyaW5nTW9kZSgpKSwgdHJ1ZSwgZmFsc2UsIHN2Z0ZvbnREYXRhKSkucmVsZWFzZVJlZigp
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UKICNlbmRpZgpAQCAtMTYz
LDE0ICsxNjMsMTQgQEAgU2ltcGxlRm9udERhdGEqIENTU0ZvbnRGYWNlU291cmNlOjpnZXRGb250
RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmkKICAgICAgICAgICAgICAgICBp
ZiAoIW1fZm9udC0+ZW5zdXJlQ3VzdG9tRm9udERhdGEoKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICAgICAgICAgICAgICBmb250RGF0YS5zZXQobmV3IFNpbXBsZUZvbnRE
YXRhKG1fZm9udC0+cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoZm9udERlc2NyaXB0aW9uLmNv
bXB1dGVkUGl4ZWxTaXplKCksIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udERl
c2NyaXB0aW9uLnJlbmRlcmluZ01vZGUoKSksIHRydWUsIGZhbHNlKSk7CisgICAgICAgICAgICAg
ICAgZm9udERhdGEuc2V0KFNpbXBsZUZvbnREYXRhOjpjcmVhdGUobV9mb250LT5wbGF0Zm9ybURh
dGFGcm9tQ3VzdG9tRGF0YShmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgc3lu
dGhldGljQm9sZCwgc3ludGhldGljSXRhbGljLCBmb250RGVzY3JpcHRpb24ucmVuZGVyaW5nTW9k
ZSgpKSwgdHJ1ZSwgZmFsc2UpLnJlbGVhc2VSZWYoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZSB7CiAjaWYgRU5BQkxFKFNWR19GT05UUykKICAgICAgICAgICAgIC8vIEluLURvY3Vt
ZW50IFNWRyBGb250cwogICAgICAgICAgICAgaWYgKG1fc3ZnRm9udEZhY2VFbGVtZW50KSB7CiAg
ICAgICAgICAgICAgICAgU1ZHRm9udERhdGEqIHN2Z0ZvbnREYXRhID0gbmV3IFNWR0ZvbnREYXRh
KG1fc3ZnRm9udEZhY2VFbGVtZW50KTsKLSAgICAgICAgICAgICAgICBmb250RGF0YS5zZXQobmV3
IFNpbXBsZUZvbnREYXRhKEZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVk
UGl4ZWxTaXplKCksIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYyksIHRydWUsIGZhbHNl
LCBzdmdGb250RGF0YSkpOworICAgICAgICAgICAgICAgIGZvbnREYXRhLnNldCgoU2ltcGxlRm9u
dERhdGE6OmNyZWF0ZShGb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBp
eGVsU2l6ZSgpLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMpLCB0cnVlLCBmYWxzZSwg
c3ZnRm9udERhdGEpKS5yZWxlYXNlUmVmKCkpOwogICAgICAgICAgICAgfQogI2VuZGlmCiAgICAg
ICAgIH0KQEAgLTE4Miw3ICsxODIsNyBAQCBTaW1wbGVGb250RGF0YSogQ1NTRm9udEZhY2VTb3Vy
Y2U6OmdldEZvbnREYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaQogICAgICAg
ICBGb250UGxhdGZvcm1EYXRhKiB0ZW1wRGF0YSA9IGZvbnRDYWNoZSgpLT5nZXRDYWNoZWRGb250
UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgbV9zdHJpbmcpOwogICAgICAgICBpZiAoIXRl
bXBEYXRhKQogICAgICAgICAgICAgdGVtcERhdGEgPSBmb250Q2FjaGUoKS0+Z2V0TGFzdFJlc29y
dEZhbGxiYWNrRm9udChmb250RGVzY3JpcHRpb24pOwotICAgICAgICBmb250RGF0YS5zZXQobmV3
IFNpbXBsZUZvbnREYXRhKCp0ZW1wRGF0YSwgdHJ1ZSwgdHJ1ZSkpOworICAgICAgICBmb250RGF0
YS5zZXQoU2ltcGxlRm9udERhdGE6OmNyZWF0ZSgqdGVtcERhdGEsIHRydWUsIHRydWUpLnJlbGVh
c2VSZWYoKSk7CiAgICAgfQogCiAgICAgbV9mb250RGF0YVRhYmxlLnNldChoYXNoS2V5LCBmb250
RGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCBmOGJlYzgyLi5i
Zjk1OTI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgogI2luY2x1ZGUgIldpZHRoSXRlcmF0b3IuaCIKICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKQEAgLTU5LDcg
KzYwLDYgQEAgRm9udDo6Q29kZVBhdGggRm9udDo6c19jb2RlUGF0aCA9IEF1dG87CiAKIEZvbnQ6
OkZvbnQoKQogICAgIDogbV9wYWdlWmVybygwKQotICAgICwgbV9jYWNoZWRQcmltYXJ5Rm9udCgw
KQogICAgICwgbV9sZXR0ZXJTcGFjaW5nKDApCiAgICAgLCBtX3dvcmRTcGFjaW5nKDApCiAgICAg
LCBtX2lzUGxhdGZvcm1Gb250KGZhbHNlKQpAQCAtNjksNyArNjksNiBAQCBGb250OjpGb250KCkK
IEZvbnQ6OkZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmZCwgc2hvcnQgbGV0dGVyU3BhY2lu
Zywgc2hvcnQgd29yZFNwYWNpbmcpIAogICAgIDogbV9mb250RGVzY3JpcHRpb24oZmQpCiAgICAg
LCBtX3BhZ2VaZXJvKDApCi0gICAgLCBtX2NhY2hlZFByaW1hcnlGb250KDApCiAgICAgLCBtX2xl
dHRlclNwYWNpbmcobGV0dGVyU3BhY2luZykKICAgICAsIG1fd29yZFNwYWNpbmcod29yZFNwYWNp
bmcpCiAgICAgLCBtX2lzUGxhdGZvcm1Gb250KGZhbHNlKQpAQCAtNzksNyArNzgsNiBAQCBGb250
OjpGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZmQsIHNob3J0IGxldHRlclNwYWNpbmcsIHNo
b3J0IHdvcmRTcGFjaW5nKQogRm9udDo6Rm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBmb250
RGF0YSwgYm9vbCBpc1ByaW50ZXJGb250KQogICAgIDogbV9mb250TGlzdChGb250RmFsbGJhY2tM
aXN0OjpjcmVhdGUoKSkKICAgICAsIG1fcGFnZVplcm8oMCkKLSAgICAsIG1fY2FjaGVkUHJpbWFy
eUZvbnQoMCkKICAgICAsIG1fbGV0dGVyU3BhY2luZygwKQogICAgICwgbV93b3JkU3BhY2luZygw
KQogICAgICwgbV9pc1BsYXRmb3JtRm9udCh0cnVlKQpAQCAtMTM5LDE2ICsxMzcsMTYgQEAgdm9p
ZCBGb250OjpjYWNoZVByaW1hcnlGb250KCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9mb250TGlz
dCk7CiAgICAgQVNTRVJUKCFtX2NhY2hlZFByaW1hcnlGb250KTsKLSAgICBtX2NhY2hlZFByaW1h
cnlGb250ID0gbV9mb250TGlzdC0+cHJpbWFyeUZvbnQodGhpcyktPmZvbnREYXRhRm9yQ2hhcmFj
dGVyKCcgJyk7CisgICAgbV9jYWNoZWRQcmltYXJ5Rm9udCA9IGNvbnN0X2Nhc3Q8U2ltcGxlRm9u
dERhdGEqPihtX2ZvbnRMaXN0LT5wcmltYXJ5Rm9udCh0aGlzKS0+Zm9udERhdGFGb3JDaGFyYWN0
ZXIoJyAnKSk7CiB9CiAKLWNvbnN0IEZvbnREYXRhKiBGb250Ojpmb250RGF0YUF0KHVuc2lnbmVk
IGluZGV4KSBjb25zdAorUGFzc1JlZlB0cjxGb250RGF0YT4gRm9udDo6Zm9udERhdGFBdCh1bnNp
Z25lZCBpbmRleCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9mb250TGlzdCk7CiAgICAgcmV0dXJu
IG1fZm9udExpc3QtPmZvbnREYXRhQXQodGhpcywgaW5kZXgpOwogfQogCi1jb25zdCBGb250RGF0
YSogRm9udDo6Zm9udERhdGFGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBp
bnQgbGVuZ3RoKSBjb25zdAorUGFzc1JlZlB0cjxGb250RGF0YT4gRm9udDo6Zm9udERhdGFGb3JD
aGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoKSBjb25zdAogewog
ICAgIEFTU0VSVChtX2ZvbnRMaXN0KTsKICAgICByZXR1cm4gbV9mb250TGlzdC0+Zm9udERhdGFG
b3JDaGFyYWN0ZXJzKHRoaXMsIGNoYXJhY3RlcnMsIGxlbmd0aCk7CkBAIC0xNjQsNyArMTYyLDcg
QEAgdm9pZCBGb250Ojp1cGRhdGUoUGFzc1JlZlB0cjxGb250U2VsZWN0b3I+IGZvbnRTZWxlY3Rv
cikgY29uc3QKICAgICBpZiAoIW1fZm9udExpc3QpCiAgICAgICAgIG1fZm9udExpc3QgPSBGb250
RmFsbGJhY2tMaXN0OjpjcmVhdGUoKTsKICAgICBtX2ZvbnRMaXN0LT5pbnZhbGlkYXRlKGZvbnRT
ZWxlY3Rvcik7Ci0gICAgbV9jYWNoZWRQcmltYXJ5Rm9udCA9IDA7CisgICAgbV9jYWNoZWRQcmlt
YXJ5Rm9udC5jbGVhcigpOwogICAgIG1fcGFnZVplcm8gPSAwOwogICAgIG1fcGFnZXMuY2xlYXIo
KTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggMWJmZWU4Zi4uMTQ3MGQ5NCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJTaW1w
bGVGb250RGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBQTEFURk9STShRVCkK
ICNpbmNsdWRlIDxRRm9udD4KQEAgLTExNSwxNiArMTE2LDE3IEBAIHB1YmxpYzoKICAgICBpbnQg
c3BhY2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIChpbnQpY2VpbGYocHJpbWFyeUZvbnQoKS0+bV9h
ZGp1c3RlZFNwYWNlV2lkdGggKyBtX2xldHRlclNwYWNpbmcpOyB9CiAgICAgaW50IHRhYldpZHRo
KCkgY29uc3QgeyByZXR1cm4gOCAqIHNwYWNlV2lkdGgoKTsgfQogCi0gICAgY29uc3QgU2ltcGxl
Rm9udERhdGEqIHByaW1hcnlGb250KCkgY29uc3QgeworICAgIGNvbnN0IFNpbXBsZUZvbnREYXRh
KiBwcmltYXJ5Rm9udCgpIGNvbnN0CisgICAgewogICAgICAgICBpZiAoIW1fY2FjaGVkUHJpbWFy
eUZvbnQpCiAgICAgICAgICAgICBjYWNoZVByaW1hcnlGb250KCk7Ci0gICAgICAgIHJldHVybiBt
X2NhY2hlZFByaW1hcnlGb250OworICAgICAgICByZXR1cm4gbV9jYWNoZWRQcmltYXJ5Rm9udC5n
ZXQoKTsKICAgICB9CiAKLSAgICBjb25zdCBGb250RGF0YSogZm9udERhdGFBdCh1bnNpZ25lZCkg
Y29uc3Q7CisgICAgUGFzc1JlZlB0cjxGb250RGF0YT4gZm9udERhdGFBdCh1bnNpZ25lZCkgY29u
c3Q7CiAgICAgY29uc3QgR2x5cGhEYXRhJiBnbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMiwg
Ym9vbCBtaXJyb3IsIGJvb2wgZm9yY2VTbWFsbENhcHMgPSBmYWxzZSkgY29uc3Q7CiAgICAgLy8g
VXNlZCBmb3IgY29tcGxleCB0ZXh0LCBhbmQgZG9lcyBub3QgdXRpbGl6ZSB0aGUgZ2x5cGggbWFw
IGNhY2hlLgotICAgIGNvbnN0IEZvbnREYXRhKiBmb250RGF0YUZvckNoYXJhY3RlcnMoY29uc3Qg
VUNoYXIqLCBpbnQgbGVuZ3RoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEZvbnREYXRhPiBmb250
RGF0YUZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoKSBjb25zdDsKIAogI2lm
IFBMQVRGT1JNKFFUKQogICAgIFFGb250IGZvbnQoKSBjb25zdDsKQEAgLTE4Niw3ICsxODgsNyBA
QCBwcml2YXRlOgogICAgIG11dGFibGUgUmVmUHRyPEZvbnRGYWxsYmFja0xpc3Q+IG1fZm9udExp
c3Q7CiAgICAgbXV0YWJsZSBIYXNoTWFwPGludCwgR2x5cGhQYWdlVHJlZU5vZGUqPiBtX3BhZ2Vz
OwogICAgIG11dGFibGUgR2x5cGhQYWdlVHJlZU5vZGUqIG1fcGFnZVplcm87Ci0gICAgbXV0YWJs
ZSBjb25zdCBTaW1wbGVGb250RGF0YSogbV9jYWNoZWRQcmltYXJ5Rm9udDsKKyAgICBtdXRhYmxl
IFJlZlB0cjxTaW1wbGVGb250RGF0YT4gbV9jYWNoZWRQcmltYXJ5Rm9udDsKICAgICBzaG9ydCBt
X2xldHRlclNwYWNpbmc7CiAgICAgc2hvcnQgbV93b3JkU3BhY2luZzsKICAgICBib29sIG1faXNQ
bGF0Zm9ybUZvbnQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRE
YXRhLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREYXRhLmgKaW5kZXggY2I3OTkx
OS4uMGE1NDU1ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGF0
YS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERhdGEuaApAQCAtMjgsMTgg
KzI4LDE1IEBACiAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYv
dW5pY29kZS9Vbmljb2RlLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNpbXBs
ZUZvbnREYXRhOwogCi1jbGFzcyBGb250RGF0YSA6IE5vbmNvcHlhYmxlIHsKK2NsYXNzIEZvbnRE
YXRhIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udERhdGE+IHsKIHB1YmxpYzoKLSAgICBGb250RGF0
YSgpCi0gICAgICAgIDogbV9tYXhHbHlwaFBhZ2VUcmVlTGV2ZWwoMCkKLSAgICB7Ci0gICAgfQot
CiAgICAgdmlydHVhbCB+Rm9udERhdGEoKTsKIAogICAgIHZpcnR1YWwgY29uc3QgU2ltcGxlRm9u
dERhdGEqIGZvbnREYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIpIGNvbnN0ID0gMDsKQEAgLTUxLDYg
KzQ4LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1heEdseXBoUGFnZVRyZWVMZXZlbCh1bnNp
Z25lZCBsZXZlbCkgY29uc3QgeyBtX21heEdseXBoUGFnZVRyZWVMZXZlbCA9IGxldmVsOyB9CiAg
ICAgdW5zaWduZWQgbWF4R2x5cGhQYWdlVHJlZUxldmVsKCkgY29uc3QgeyByZXR1cm4gbV9tYXhH
bHlwaFBhZ2VUcmVlTGV2ZWw7IH0KIAorcHJvdGVjdGVkOgorCUZvbnREYXRhKCkKKwkJOiBtX21h
eEdseXBoUGFnZVRyZWVMZXZlbCgwKQorCXsKKwl9CisKIHByaXZhdGU6CiAgICAgbXV0YWJsZSB1
bnNpZ25lZCBtX21heEdseXBoUGFnZVRyZWVMZXZlbDsKIH07CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYWxsYmFja0xpc3QuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udEZhbGxiYWNrTGlzdC5oCmluZGV4IGEyM2IzMmMuLmZiNjMzZGMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbGxiYWNrTGlzdC5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbGxiYWNrTGlzdC5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiU2ltcGxlRm9udERh
dGEuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTcsOSArNTgsOSBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIEZvbnRGYWxsYmFja0xpc3QoKTsKIAotICAgIGNvbnN0IEZvbnREYXRhKiBw
cmltYXJ5Rm9udChjb25zdCBGb250KiBmKSBjb25zdCB7IHJldHVybiBmb250RGF0YUF0KGYsIDAp
OyB9Ci0gICAgY29uc3QgRm9udERhdGEqIGZvbnREYXRhQXQoY29uc3QgRm9udCosIHVuc2lnbmVk
IGluZGV4KSBjb25zdDsKLSAgICBjb25zdCBGb250RGF0YSogZm9udERhdGFGb3JDaGFyYWN0ZXJz
KGNvbnN0IEZvbnQqLCBjb25zdCBVQ2hhciosIGludCBsZW5ndGgpIGNvbnN0OworICAgIFBhc3NS
ZWZQdHI8Rm9udERhdGE+IHByaW1hcnlGb250KGNvbnN0IEZvbnQqIGYpIGNvbnN0IHsgcmV0dXJu
IGZvbnREYXRhQXQoZiwgMCk7IH0KKyAgICBQYXNzUmVmUHRyPEZvbnREYXRhPiBmb250RGF0YUF0
KGNvbnN0IEZvbnQqLCB1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxGb250
RGF0YT4gZm9udERhdGFGb3JDaGFyYWN0ZXJzKGNvbnN0IEZvbnQqLCBjb25zdCBVQ2hhciosIGlu
dCBsZW5ndGgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgc2V0UGxhdGZvcm1Gb250KGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TZWdtZW50ZWRGb250RGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50
ZWRGb250RGF0YS5oCmluZGV4IDBhNzgzMjEuLjMzM2I4ZGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVudGVkRm9udERhdGEuaAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkZvbnREYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzcsMjIgKzM4LDI3
IEBAIHN0cnVjdCBGb250RGF0YVJhbmdlIHsKICAgICBGb250RGF0YVJhbmdlKFVDaGFyMzIgZnJv
bSwgVUNoYXIzMiB0bywgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhKQogICAgICAgICA6
IG1fZnJvbShmcm9tKQogICAgICAgICAsIG1fdG8odG8pCi0gICAgICAgICwgbV9mb250RGF0YShm
b250RGF0YSkKKyAgICAgICAgLCBtX2ZvbnREYXRhKGNvbnN0X2Nhc3Q8U2ltcGxlRm9udERhdGEq
Pihmb250RGF0YSkpCiAgICAgewogICAgIH0KIAogICAgIFVDaGFyMzIgZnJvbSgpIGNvbnN0IHsg
cmV0dXJuIG1fZnJvbTsgfQogICAgIFVDaGFyMzIgdG8oKSBjb25zdCB7IHJldHVybiBtX3RvOyB9
Ci0gICAgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9m
b250RGF0YTsgfQorICAgIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fZm9udERhdGEuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBVQ2hhcjMyIG1fZnJv
bTsKICAgICBVQ2hhcjMyIG1fdG87Ci0gICAgY29uc3QgU2ltcGxlRm9udERhdGEqIG1fZm9udERh
dGE7CisgICAgUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBtX2ZvbnREYXRhOwogfTsKIAogY2xhc3Mg
U2VnbWVudGVkRm9udERhdGEgOiBwdWJsaWMgRm9udERhdGEgewogcHVibGljOgorCXN0YXRpYyBQ
YXNzUmVmUHRyPFNlZ21lbnRlZEZvbnREYXRhPiBjcmVhdGUoKQorCXsKKwkJcmV0dXJuIGFkb3B0
UmVmKG5ldyBTZWdtZW50ZWRGb250RGF0YSk7CisJfQorCiAgICAgdmlydHVhbCB+U2VnbWVudGVk
Rm9udERhdGEoKTsKIAogICAgIHZvaWQgYXBwZW5kUmFuZ2UoY29uc3QgRm9udERhdGFSYW5nZSYg
cmFuZ2UpIHsgbV9yYW5nZXMuYXBwZW5kKHJhbmdlKTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcAppbmRleCA5ZjUxMDM3Li40MGJkMjlmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcApAQCAtMzcsNiArMzcs
NyBAQAogI2luY2x1ZGUgIlNWR0ZvbnRGYWNlRWxlbWVudC5oIgogI2VuZGlmCiAKKyNpbmNsdWRl
ICJHbHlwaFBhZ2VUcmVlTm9kZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDcgKzUxLDYgQEAgU2ltcGxlRm9udERhdGE6OlNpbXBs
ZUZvbnREYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIGYsIGJvb2wgY3VzdG9tRm9udCwgYm9v
bAogI2VuZGlmCiAgICAgLCBtX2lzQ3VzdG9tRm9udChjdXN0b21Gb250KQogICAgICwgbV9pc0xv
YWRpbmcobG9hZGluZykKLSAgICAsIG1fc21hbGxDYXBzRm9udERhdGEoMCkKIHsKICNpZiBFTkFC
TEUoU1ZHX0ZPTlRTKQogICAgIGlmIChTVkdGb250RmFjZUVsZW1lbnQqIHN2Z0ZvbnRGYWNlRWxl
bWVudCA9IHN2Z0ZvbnREYXRhID8gc3ZnRm9udERhdGEtPnN2Z0ZvbnRGYWNlRWxlbWVudCgpIDog
MCkgewpAQCAtNjMsNyArNjMsNyBAQCBTaW1wbGVGb250RGF0YTo6U2ltcGxlRm9udERhdGEoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYgZiwgYm9vbCBjdXN0b21Gb250LCBib29sCiAgICAgICAgIG1f
YXNjZW50ID0gc3RhdGljX2Nhc3Q8aW50PihzdmdGb250RmFjZUVsZW1lbnQtPmFzY2VudCgpICog
c2NhbGUpOwogICAgICAgICBtX2Rlc2NlbnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHN2Z0ZvbnRGYWNl
RWxlbWVudC0+ZGVzY2VudCgpICogc2NhbGUpOwogICAgICAgICBtX3hIZWlnaHQgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHN2Z0ZvbnRGYWNlRWxlbWVudC0+eEhlaWdodCgpICogc2NhbGUpOwotICAgICAg
ICBtX2xpbmVHYXAgPSAwLjFmICogZi5zaXplKCk7CisgICAgICAgIG1fbGluZUdhcCA9IHN0YXRp
Y19jYXN0PGludD4oMC4xZiAqIGYuc2l6ZSgpKTsKICAgICAgICAgbV9saW5lU3BhY2luZyA9IG1f
YXNjZW50ICsgbV9kZXNjZW50ICsgbV9saW5lR2FwOwogICAgIAogICAgICAgICBtX3NwYWNlR2x5
cGggPSAwOwpAQCAtMTMxLDcgKzEzMSw3IEBAIFNpbXBsZUZvbnREYXRhOjp+U2ltcGxlRm9udERh
dGEoKQogCiAgICAgaWYgKCFpc0N1c3RvbUZvbnQoKSkgewogICAgICAgICBpZiAobV9zbWFsbENh
cHNGb250RGF0YSkKLSAgICAgICAgICAgIGZvbnRDYWNoZSgpLT5yZWxlYXNlRm9udERhdGEobV9z
bWFsbENhcHNGb250RGF0YSk7CisgICAgICAgICAgICBmb250Q2FjaGUoKS0+cmVsZWFzZUZvbnRE
YXRhKG1fc21hbGxDYXBzRm9udERhdGEuZ2V0KCkpOwogICAgICAgICBHbHlwaFBhZ2VUcmVlTm9k
ZTo6cHJ1bmVUcmVlRm9udERhdGEodGhpcyk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaW1wbGVGb250RGF0YS5oCmluZGV4IGQyZGQwYjkuLjEzMWMwMmUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJHbHlwaFBhZ2VUcmVlTm9kZS5oIgogI2luY2x1ZGUgIkdseXBoV2lkdGhNYXAu
aCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
IAogI2lmIFVTRShBVFNVSSkKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUFUU1VTdHlsZSogQVRTVVN0
eWxlOwpAQCAtNTcsMTEgKzU4LDE0IEBAIGVudW0gUGl0Y2ggeyBVbmtub3duUGl0Y2gsIEZpeGVk
UGl0Y2gsIFZhcmlhYmxlUGl0Y2ggfTsKIAogY2xhc3MgU2ltcGxlRm9udERhdGEgOiBwdWJsaWMg
Rm9udERhdGEgewogcHVibGljOgotICAgIFNpbXBsZUZvbnREYXRhKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmLCBib29sIGN1c3RvbUZvbnQgPSBmYWxzZSwgYm9vbCBsb2FkaW5nID0gZmFsc2UsIFNW
R0ZvbnREYXRhKiBkYXRhID0gMCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2ltcGxlRm9udERh
dGE+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIGJvb2wgY3Vz
dG9tRm9udCA9IGZhbHNlLCBib29sIGxvYWRpbmcgPSBmYWxzZSwgU1ZHRm9udERhdGEqIGRhdGEg
PSAwKQorICAgIHsKKyAgICAJcmV0dXJuIGFkb3B0UmVmKG5ldyBTaW1wbGVGb250RGF0YShwbGF0
Zm9ybURhdGEsIGN1c3RvbUZvbnQsIGxvYWRpbmcsIGRhdGEpKTsKKyAgICB9CiAgICAgdmlydHVh
bCB+U2ltcGxlRm9udERhdGEoKTsKIAogcHVibGljOgotICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIHBsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udDsgfQorCWNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udDsgfQogICAg
IFNpbXBsZUZvbnREYXRhKiBzbWFsbENhcHNGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24m
IGZvbnREZXNjcmlwdGlvbikgY29uc3Q7CiAKICAgICAvLyB2ZXJ0aWNhbCBtZXRyaWNzCkBAIC0x
MzUsNiArMTM5LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisJU2ltcGxlRm9udERh
dGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIGJvb2wgY3VzdG9tRm9udCwgYm9vbCBsb2FkaW5n
LCBTVkdGb250RGF0YSogZGF0YSk7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXQoKTsKICAgICB2b2lk
IHBsYXRmb3JtR2x5cGhJbml0KCk7CiAgICAgdm9pZCBwbGF0Zm9ybURlc3Ryb3koKTsKQEAgLTE3
NCw3ICsxNzksNyBAQCBwdWJsaWM6CiAKICAgICBHbHlwaERhdGEgbV9taXNzaW5nR2x5cGhEYXRh
OwogCi0gICAgbXV0YWJsZSBTaW1wbGVGb250RGF0YSogbV9zbWFsbENhcHNGb250RGF0YTsKKyAg
ICBtdXRhYmxlIFJlZlB0cjxTaW1wbGVGb250RGF0YT4gbV9zbWFsbENhcHNGb250RGF0YTsKIAog
I2lmIFBMQVRGT1JNKENHKSB8fCBQTEFURk9STShXSU4pCiAgICAgZmxvYXQgbV9zeW50aGV0aWNC
b2xkT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250
RmFsbGJhY2tMaXN0UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250RmFs
bGJhY2tMaXN0UXQuY3BwCmluZGV4IDIyYWUyMDUuLmViZjIwOTYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEZhbGxiYWNrTGlzdFF0LmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRGYWxsYmFja0xpc3RRdC5jcHAKQEAgLTI2LDYg
KzI2LDggQEAKIAogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRGb250RGF0
YS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogCiAjaW5jbHVkZSA8UURlYnVnPgogCkBAIC01NywxMSArNTksMTEgQEAgdm9pZCBGb250RmFs
bGJhY2tMaXN0OjpyZWxlYXNlRm9udERhdGEoKQogCiB2b2lkIEZvbnRGYWxsYmFja0xpc3Q6OmRl
dGVybWluZVBpdGNoKGNvbnN0IFdlYkNvcmU6OkZvbnQqIGZvbnQpIGNvbnN0CiB7Ci0gICAgY29u
c3QgRm9udERhdGEqIGZvbnREYXRhID0gcHJpbWFyeUZvbnQoZm9udCk7CisgICAgUmVmUHRyPEZv
bnREYXRhPiBmb250RGF0YSA9IHByaW1hcnlGb250KGZvbnQpOwogICAgIGlmICghZm9udERhdGEt
PmlzU2VnbWVudGVkKCkpCi0gICAgICAgIG1fcGl0Y2ggPSBzdGF0aWNfY2FzdDxjb25zdCBTaW1w
bGVGb250RGF0YSo+KGZvbnREYXRhKS0+cGl0Y2goKTsKKyAgICAgICAgbV9waXRjaCA9IHN0YXRp
Y19wb2ludGVyX2Nhc3Q8U2ltcGxlRm9udERhdGE+KGZvbnREYXRhKS0+cGl0Y2goKTsKICAgICBl
bHNlIHsKLSAgICAgICAgY29uc3QgU2VnbWVudGVkRm9udERhdGEqIHNlZ21lbnRlZEZvbnREYXRh
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgU2VnbWVudGVkRm9udERhdGEqPihmb250RGF0YSk7CisgICAg
ICAgIGNvbnN0IFNlZ21lbnRlZEZvbnREYXRhKiBzZWdtZW50ZWRGb250RGF0YSA9IHN0YXRpY19w
b2ludGVyX2Nhc3Q8U2VnbWVudGVkRm9udERhdGE+KGZvbnREYXRhKS5nZXQoKTsKICAgICAgICAg
dW5zaWduZWQgbnVtUmFuZ2VzID0gc2VnbWVudGVkRm9udERhdGEtPm51bVJhbmdlcygpOwogICAg
ICAgICBpZiAobnVtUmFuZ2VzID09IDEpCiAgICAgICAgICAgICBtX3BpdGNoID0gc2VnbWVudGVk
Rm9udERhdGEtPnJhbmdlQXQoMCkuZm9udERhdGEoKS0+cGl0Y2goKTsKQEAgLTcwLDEwICs3Miwx
MCBAQCB2b2lkIEZvbnRGYWxsYmFja0xpc3Q6OmRldGVybWluZVBpdGNoKGNvbnN0IFdlYkNvcmU6
OkZvbnQqIGZvbnQpIGNvbnN0CiAgICAgfQogfQogCi1jb25zdCBGb250RGF0YSogRm9udEZhbGxi
YWNrTGlzdDo6Zm9udERhdGFBdChjb25zdCBXZWJDb3JlOjpGb250KiBfZm9udCwgdW5zaWduZWQg
aW5kZXgpIGNvbnN0CitQYXNzUmVmUHRyPEZvbnREYXRhPiBGb250RmFsbGJhY2tMaXN0Ojpmb250
RGF0YUF0KGNvbnN0IFdlYkNvcmU6OkZvbnQqIF9mb250LCB1bnNpZ25lZCBpbmRleCkgY29uc3QK
IHsKICAgICBpZiAoaW5kZXggIT0gMCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBQYXNzUmVmUHRyPEZvbnREYXRhPigpOwogCiAgICAgLy8gVXNlIHRoZSBGb250U2VsZWN0b3Ig
dG8gZ2V0IGEgV2ViQ29yZSBmb250IGFuZCB0aGVuIGZhbGxiYWNrIHRvIFF0CiAgICAgY29uc3Qg
Rm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiA9IF9mb250LT5mb250RGVzY3JpcHRpb24oKTsK
QEAgLTg0LDE2ICs4NiwxNiBAQCBjb25zdCBGb250RGF0YSogRm9udEZhbGxiYWNrTGlzdDo6Zm9u
dERhdGFBdChjb25zdCBXZWJDb3JlOjpGb250KiBfZm9udCwgdW5zaWduZQogICAgICAgICAgICAg
aWYgKGRhdGEpIHsKICAgICAgICAgICAgICAgICBpZiAoZGF0YS0+aXNMb2FkaW5nKCkpCiAgICAg
ICAgICAgICAgICAgICAgIG1fbG9hZGluZ0N1c3RvbUZvbnRzID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZGF0YTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoZGF0YSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZmFtaWx5ID0gZmFtaWx5LT5uZXh0
KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIG5ldyBTaW1wbGVGb250RGF0YShGb250UGxhdGZvcm1E
YXRhKGRlc2NyaXB0aW9uKSwgX2ZvbnQtPndvcmRTcGFjaW5nKCksIF9mb250LT5sZXR0ZXJTcGFj
aW5nKCkpOworICAgIHJldHVybiBTaW1wbGVGb250RGF0YTo6Y3JlYXRlKEZvbnRQbGF0Zm9ybURh
dGEoZGVzY3JpcHRpb24pLCBfZm9udC0+d29yZFNwYWNpbmcoKSwgX2ZvbnQtPmxldHRlclNwYWNp
bmcoKSk7CiB9CiAKLWNvbnN0IEZvbnREYXRhKiBGb250RmFsbGJhY2tMaXN0Ojpmb250RGF0YUZv
ckNoYXJhY3RlcnMoY29uc3QgV2ViQ29yZTo6Rm9udCogZm9udCwgY29uc3QgVUNoYXIqLCBpbnQp
IGNvbnN0CitQYXNzUmVmUHRyPEZvbnREYXRhPiBGb250RmFsbGJhY2tMaXN0Ojpmb250RGF0YUZv
ckNoYXJhY3RlcnMoY29uc3QgV2ViQ29yZTo6Rm9udCogZm9udCwgY29uc3QgVUNoYXIqLCBpbnQp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIHByaW1hcnlGb250KGZvbnQpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28684</attachid>
            <date>2009-03-17 01:29:59 -0700</date>
            <delta_ts>2009-03-25 09:39:58 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>sfd2.patch</filename>
            <type>text/plain</type>
            <size>16295</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCAxMTFjZWEyLi40NGYxNGI1IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgU2ltcGxlRm9udERhdGEq
IENTU0ZvbnRGYWNlU291cmNlOjpnZXRGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZv
bnREZXNjcmkKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIFNW
R0ZvbnREYXRhKiBzdmdGb250RGF0YSA9IG5ldyBTVkdGb250RGF0YShmb250RmFjZUVsZW1lbnQp
OwotICAgICAgICAgICAgICAgICAgICBmb250RGF0YS5zZXQobmV3IFNpbXBsZUZvbnREYXRhKG1f
Zm9udC0+cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVk
UGl4ZWxTaXplKCksIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udERlc2NyaXB0
aW9uLnJlbmRlcmluZ01vZGUoKSksIHRydWUsIGZhbHNlLCBzdmdGb250RGF0YSkpOworICAgICAg
ICAgICAgICAgICAgICBmb250RGF0YS5zZXQoKFNpbXBsZUZvbnREYXRhOjpjcmVhdGUobV9mb250
LT5wbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhl
bFNpemUoKSwgc3ludGhldGljQm9sZCwgc3ludGhldGljSXRhbGljLCBmb250RGVzY3JpcHRpb24u
cmVuZGVyaW5nTW9kZSgpKSwgdHJ1ZSwgZmFsc2UsIHN2Z0ZvbnREYXRhKSkucmVsZWFzZVJlZigp
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UKICNlbmRpZgpAQCAtMTYz
LDE0ICsxNjMsMTQgQEAgU2ltcGxlRm9udERhdGEqIENTU0ZvbnRGYWNlU291cmNlOjpnZXRGb250
RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmkKICAgICAgICAgICAgICAgICBp
ZiAoIW1fZm9udC0+ZW5zdXJlQ3VzdG9tRm9udERhdGEoKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICAgICAgICAgICAgICBmb250RGF0YS5zZXQobmV3IFNpbXBsZUZvbnRE
YXRhKG1fZm9udC0+cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoZm9udERlc2NyaXB0aW9uLmNv
bXB1dGVkUGl4ZWxTaXplKCksIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udERl
c2NyaXB0aW9uLnJlbmRlcmluZ01vZGUoKSksIHRydWUsIGZhbHNlKSk7CisgICAgICAgICAgICAg
ICAgZm9udERhdGEuc2V0KFNpbXBsZUZvbnREYXRhOjpjcmVhdGUobV9mb250LT5wbGF0Zm9ybURh
dGFGcm9tQ3VzdG9tRGF0YShmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgc3lu
dGhldGljQm9sZCwgc3ludGhldGljSXRhbGljLCBmb250RGVzY3JpcHRpb24ucmVuZGVyaW5nTW9k
ZSgpKSwgdHJ1ZSwgZmFsc2UpLnJlbGVhc2VSZWYoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZSB7CiAjaWYgRU5BQkxFKFNWR19GT05UUykKICAgICAgICAgICAgIC8vIEluLURvY3Vt
ZW50IFNWRyBGb250cwogICAgICAgICAgICAgaWYgKG1fc3ZnRm9udEZhY2VFbGVtZW50KSB7CiAg
ICAgICAgICAgICAgICAgU1ZHRm9udERhdGEqIHN2Z0ZvbnREYXRhID0gbmV3IFNWR0ZvbnREYXRh
KG1fc3ZnRm9udEZhY2VFbGVtZW50KTsKLSAgICAgICAgICAgICAgICBmb250RGF0YS5zZXQobmV3
IFNpbXBsZUZvbnREYXRhKEZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVk
UGl4ZWxTaXplKCksIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYyksIHRydWUsIGZhbHNl
LCBzdmdGb250RGF0YSkpOworICAgICAgICAgICAgICAgIGZvbnREYXRhLnNldCgoU2ltcGxlRm9u
dERhdGE6OmNyZWF0ZShGb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBp
eGVsU2l6ZSgpLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMpLCB0cnVlLCBmYWxzZSwg
c3ZnRm9udERhdGEpKS5yZWxlYXNlUmVmKCkpOwogICAgICAgICAgICAgfQogI2VuZGlmCiAgICAg
ICAgIH0KQEAgLTE4Miw3ICsxODIsNyBAQCBTaW1wbGVGb250RGF0YSogQ1NTRm9udEZhY2VTb3Vy
Y2U6OmdldEZvbnREYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaQogICAgICAg
ICBGb250UGxhdGZvcm1EYXRhKiB0ZW1wRGF0YSA9IGZvbnRDYWNoZSgpLT5nZXRDYWNoZWRGb250
UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgbV9zdHJpbmcpOwogICAgICAgICBpZiAoIXRl
bXBEYXRhKQogICAgICAgICAgICAgdGVtcERhdGEgPSBmb250Q2FjaGUoKS0+Z2V0TGFzdFJlc29y
dEZhbGxiYWNrRm9udChmb250RGVzY3JpcHRpb24pOwotICAgICAgICBmb250RGF0YS5zZXQobmV3
IFNpbXBsZUZvbnREYXRhKCp0ZW1wRGF0YSwgdHJ1ZSwgdHJ1ZSkpOworICAgICAgICBmb250RGF0
YS5zZXQoU2ltcGxlRm9udERhdGE6OmNyZWF0ZSgqdGVtcERhdGEsIHRydWUsIHRydWUpLnJlbGVh
c2VSZWYoKSk7CiAgICAgfQogCiAgICAgbV9mb250RGF0YVRhYmxlLnNldChoYXNoS2V5LCBmb250
RGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCBmOGJlYzgyLi5i
Zjk1OTI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgogI2luY2x1ZGUgIldpZHRoSXRlcmF0b3IuaCIKICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKQEAgLTU5LDcg
KzYwLDYgQEAgRm9udDo6Q29kZVBhdGggRm9udDo6c19jb2RlUGF0aCA9IEF1dG87CiAKIEZvbnQ6
OkZvbnQoKQogICAgIDogbV9wYWdlWmVybygwKQotICAgICwgbV9jYWNoZWRQcmltYXJ5Rm9udCgw
KQogICAgICwgbV9sZXR0ZXJTcGFjaW5nKDApCiAgICAgLCBtX3dvcmRTcGFjaW5nKDApCiAgICAg
LCBtX2lzUGxhdGZvcm1Gb250KGZhbHNlKQpAQCAtNjksNyArNjksNiBAQCBGb250OjpGb250KCkK
IEZvbnQ6OkZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmZCwgc2hvcnQgbGV0dGVyU3BhY2lu
Zywgc2hvcnQgd29yZFNwYWNpbmcpIAogICAgIDogbV9mb250RGVzY3JpcHRpb24oZmQpCiAgICAg
LCBtX3BhZ2VaZXJvKDApCi0gICAgLCBtX2NhY2hlZFByaW1hcnlGb250KDApCiAgICAgLCBtX2xl
dHRlclNwYWNpbmcobGV0dGVyU3BhY2luZykKICAgICAsIG1fd29yZFNwYWNpbmcod29yZFNwYWNp
bmcpCiAgICAgLCBtX2lzUGxhdGZvcm1Gb250KGZhbHNlKQpAQCAtNzksNyArNzgsNiBAQCBGb250
OjpGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZmQsIHNob3J0IGxldHRlclNwYWNpbmcsIHNo
b3J0IHdvcmRTcGFjaW5nKQogRm9udDo6Rm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBmb250
RGF0YSwgYm9vbCBpc1ByaW50ZXJGb250KQogICAgIDogbV9mb250TGlzdChGb250RmFsbGJhY2tM
aXN0OjpjcmVhdGUoKSkKICAgICAsIG1fcGFnZVplcm8oMCkKLSAgICAsIG1fY2FjaGVkUHJpbWFy
eUZvbnQoMCkKICAgICAsIG1fbGV0dGVyU3BhY2luZygwKQogICAgICwgbV93b3JkU3BhY2luZygw
KQogICAgICwgbV9pc1BsYXRmb3JtRm9udCh0cnVlKQpAQCAtMTM5LDE2ICsxMzcsMTYgQEAgdm9p
ZCBGb250OjpjYWNoZVByaW1hcnlGb250KCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9mb250TGlz
dCk7CiAgICAgQVNTRVJUKCFtX2NhY2hlZFByaW1hcnlGb250KTsKLSAgICBtX2NhY2hlZFByaW1h
cnlGb250ID0gbV9mb250TGlzdC0+cHJpbWFyeUZvbnQodGhpcyktPmZvbnREYXRhRm9yQ2hhcmFj
dGVyKCcgJyk7CisgICAgbV9jYWNoZWRQcmltYXJ5Rm9udCA9IGNvbnN0X2Nhc3Q8U2ltcGxlRm9u
dERhdGEqPihtX2ZvbnRMaXN0LT5wcmltYXJ5Rm9udCh0aGlzKS0+Zm9udERhdGFGb3JDaGFyYWN0
ZXIoJyAnKSk7CiB9CiAKLWNvbnN0IEZvbnREYXRhKiBGb250Ojpmb250RGF0YUF0KHVuc2lnbmVk
IGluZGV4KSBjb25zdAorUGFzc1JlZlB0cjxGb250RGF0YT4gRm9udDo6Zm9udERhdGFBdCh1bnNp
Z25lZCBpbmRleCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9mb250TGlzdCk7CiAgICAgcmV0dXJu
IG1fZm9udExpc3QtPmZvbnREYXRhQXQodGhpcywgaW5kZXgpOwogfQogCi1jb25zdCBGb250RGF0
YSogRm9udDo6Zm9udERhdGFGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBp
bnQgbGVuZ3RoKSBjb25zdAorUGFzc1JlZlB0cjxGb250RGF0YT4gRm9udDo6Zm9udERhdGFGb3JD
aGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoKSBjb25zdAogewog
ICAgIEFTU0VSVChtX2ZvbnRMaXN0KTsKICAgICByZXR1cm4gbV9mb250TGlzdC0+Zm9udERhdGFG
b3JDaGFyYWN0ZXJzKHRoaXMsIGNoYXJhY3RlcnMsIGxlbmd0aCk7CkBAIC0xNjQsNyArMTYyLDcg
QEAgdm9pZCBGb250Ojp1cGRhdGUoUGFzc1JlZlB0cjxGb250U2VsZWN0b3I+IGZvbnRTZWxlY3Rv
cikgY29uc3QKICAgICBpZiAoIW1fZm9udExpc3QpCiAgICAgICAgIG1fZm9udExpc3QgPSBGb250
RmFsbGJhY2tMaXN0OjpjcmVhdGUoKTsKICAgICBtX2ZvbnRMaXN0LT5pbnZhbGlkYXRlKGZvbnRT
ZWxlY3Rvcik7Ci0gICAgbV9jYWNoZWRQcmltYXJ5Rm9udCA9IDA7CisgICAgbV9jYWNoZWRQcmlt
YXJ5Rm9udC5jbGVhcigpOwogICAgIG1fcGFnZVplcm8gPSAwOwogICAgIG1fcGFnZXMuY2xlYXIo
KTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggMWJmZWU4Zi4uMTQ3MGQ5NCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJTaW1w
bGVGb250RGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBQTEFURk9STShRVCkK
ICNpbmNsdWRlIDxRRm9udD4KQEAgLTExNSwxNiArMTE2LDE3IEBAIHB1YmxpYzoKICAgICBpbnQg
c3BhY2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIChpbnQpY2VpbGYocHJpbWFyeUZvbnQoKS0+bV9h
ZGp1c3RlZFNwYWNlV2lkdGggKyBtX2xldHRlclNwYWNpbmcpOyB9CiAgICAgaW50IHRhYldpZHRo
KCkgY29uc3QgeyByZXR1cm4gOCAqIHNwYWNlV2lkdGgoKTsgfQogCi0gICAgY29uc3QgU2ltcGxl
Rm9udERhdGEqIHByaW1hcnlGb250KCkgY29uc3QgeworICAgIGNvbnN0IFNpbXBsZUZvbnREYXRh
KiBwcmltYXJ5Rm9udCgpIGNvbnN0CisgICAgewogICAgICAgICBpZiAoIW1fY2FjaGVkUHJpbWFy
eUZvbnQpCiAgICAgICAgICAgICBjYWNoZVByaW1hcnlGb250KCk7Ci0gICAgICAgIHJldHVybiBt
X2NhY2hlZFByaW1hcnlGb250OworICAgICAgICByZXR1cm4gbV9jYWNoZWRQcmltYXJ5Rm9udC5n
ZXQoKTsKICAgICB9CiAKLSAgICBjb25zdCBGb250RGF0YSogZm9udERhdGFBdCh1bnNpZ25lZCkg
Y29uc3Q7CisgICAgUGFzc1JlZlB0cjxGb250RGF0YT4gZm9udERhdGFBdCh1bnNpZ25lZCkgY29u
c3Q7CiAgICAgY29uc3QgR2x5cGhEYXRhJiBnbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMiwg
Ym9vbCBtaXJyb3IsIGJvb2wgZm9yY2VTbWFsbENhcHMgPSBmYWxzZSkgY29uc3Q7CiAgICAgLy8g
VXNlZCBmb3IgY29tcGxleCB0ZXh0LCBhbmQgZG9lcyBub3QgdXRpbGl6ZSB0aGUgZ2x5cGggbWFw
IGNhY2hlLgotICAgIGNvbnN0IEZvbnREYXRhKiBmb250RGF0YUZvckNoYXJhY3RlcnMoY29uc3Qg
VUNoYXIqLCBpbnQgbGVuZ3RoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEZvbnREYXRhPiBmb250
RGF0YUZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoKSBjb25zdDsKIAogI2lm
IFBMQVRGT1JNKFFUKQogICAgIFFGb250IGZvbnQoKSBjb25zdDsKQEAgLTE4Niw3ICsxODgsNyBA
QCBwcml2YXRlOgogICAgIG11dGFibGUgUmVmUHRyPEZvbnRGYWxsYmFja0xpc3Q+IG1fZm9udExp
c3Q7CiAgICAgbXV0YWJsZSBIYXNoTWFwPGludCwgR2x5cGhQYWdlVHJlZU5vZGUqPiBtX3BhZ2Vz
OwogICAgIG11dGFibGUgR2x5cGhQYWdlVHJlZU5vZGUqIG1fcGFnZVplcm87Ci0gICAgbXV0YWJs
ZSBjb25zdCBTaW1wbGVGb250RGF0YSogbV9jYWNoZWRQcmltYXJ5Rm9udDsKKyAgICBtdXRhYmxl
IFJlZlB0cjxTaW1wbGVGb250RGF0YT4gbV9jYWNoZWRQcmltYXJ5Rm9udDsKICAgICBzaG9ydCBt
X2xldHRlclNwYWNpbmc7CiAgICAgc2hvcnQgbV93b3JkU3BhY2luZzsKICAgICBib29sIG1faXNQ
bGF0Zm9ybUZvbnQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRE
YXRhLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREYXRhLmgKaW5kZXggY2I3OTkx
OS4uMGE1NDU1ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGF0
YS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERhdGEuaApAQCAtMjgsMTgg
KzI4LDE1IEBACiAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYv
dW5pY29kZS9Vbmljb2RlLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNpbXBs
ZUZvbnREYXRhOwogCi1jbGFzcyBGb250RGF0YSA6IE5vbmNvcHlhYmxlIHsKK2NsYXNzIEZvbnRE
YXRhIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udERhdGE+IHsKIHB1YmxpYzoKLSAgICBGb250RGF0
YSgpCi0gICAgICAgIDogbV9tYXhHbHlwaFBhZ2VUcmVlTGV2ZWwoMCkKLSAgICB7Ci0gICAgfQot
CiAgICAgdmlydHVhbCB+Rm9udERhdGEoKTsKIAogICAgIHZpcnR1YWwgY29uc3QgU2ltcGxlRm9u
dERhdGEqIGZvbnREYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIpIGNvbnN0ID0gMDsKQEAgLTUxLDYg
KzQ4LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1heEdseXBoUGFnZVRyZWVMZXZlbCh1bnNp
Z25lZCBsZXZlbCkgY29uc3QgeyBtX21heEdseXBoUGFnZVRyZWVMZXZlbCA9IGxldmVsOyB9CiAg
ICAgdW5zaWduZWQgbWF4R2x5cGhQYWdlVHJlZUxldmVsKCkgY29uc3QgeyByZXR1cm4gbV9tYXhH
bHlwaFBhZ2VUcmVlTGV2ZWw7IH0KIAorcHJvdGVjdGVkOgorCUZvbnREYXRhKCkKKwkJOiBtX21h
eEdseXBoUGFnZVRyZWVMZXZlbCgwKQorCXsKKwl9CisKIHByaXZhdGU6CiAgICAgbXV0YWJsZSB1
bnNpZ25lZCBtX21heEdseXBoUGFnZVRyZWVMZXZlbDsKIH07CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYWxsYmFja0xpc3QuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udEZhbGxiYWNrTGlzdC5oCmluZGV4IGEyM2IzMmMuLmZiNjMzZGMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbGxiYWNrTGlzdC5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbGxiYWNrTGlzdC5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiU2ltcGxlRm9udERh
dGEuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTcsOSArNTgsOSBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIEZvbnRGYWxsYmFja0xpc3QoKTsKIAotICAgIGNvbnN0IEZvbnREYXRhKiBw
cmltYXJ5Rm9udChjb25zdCBGb250KiBmKSBjb25zdCB7IHJldHVybiBmb250RGF0YUF0KGYsIDAp
OyB9Ci0gICAgY29uc3QgRm9udERhdGEqIGZvbnREYXRhQXQoY29uc3QgRm9udCosIHVuc2lnbmVk
IGluZGV4KSBjb25zdDsKLSAgICBjb25zdCBGb250RGF0YSogZm9udERhdGFGb3JDaGFyYWN0ZXJz
KGNvbnN0IEZvbnQqLCBjb25zdCBVQ2hhciosIGludCBsZW5ndGgpIGNvbnN0OworICAgIFBhc3NS
ZWZQdHI8Rm9udERhdGE+IHByaW1hcnlGb250KGNvbnN0IEZvbnQqIGYpIGNvbnN0IHsgcmV0dXJu
IGZvbnREYXRhQXQoZiwgMCk7IH0KKyAgICBQYXNzUmVmUHRyPEZvbnREYXRhPiBmb250RGF0YUF0
KGNvbnN0IEZvbnQqLCB1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxGb250
RGF0YT4gZm9udERhdGFGb3JDaGFyYWN0ZXJzKGNvbnN0IEZvbnQqLCBjb25zdCBVQ2hhciosIGlu
dCBsZW5ndGgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgc2V0UGxhdGZvcm1Gb250KGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TZWdtZW50ZWRGb250RGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50
ZWRGb250RGF0YS5oCmluZGV4IDBhNzgzMjEuLjMzM2I4ZGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVudGVkRm9udERhdGEuaAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkZvbnREYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzcsMjIgKzM4LDI3
IEBAIHN0cnVjdCBGb250RGF0YVJhbmdlIHsKICAgICBGb250RGF0YVJhbmdlKFVDaGFyMzIgZnJv
bSwgVUNoYXIzMiB0bywgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhKQogICAgICAgICA6
IG1fZnJvbShmcm9tKQogICAgICAgICAsIG1fdG8odG8pCi0gICAgICAgICwgbV9mb250RGF0YShm
b250RGF0YSkKKyAgICAgICAgLCBtX2ZvbnREYXRhKGNvbnN0X2Nhc3Q8U2ltcGxlRm9udERhdGEq
Pihmb250RGF0YSkpCiAgICAgewogICAgIH0KIAogICAgIFVDaGFyMzIgZnJvbSgpIGNvbnN0IHsg
cmV0dXJuIG1fZnJvbTsgfQogICAgIFVDaGFyMzIgdG8oKSBjb25zdCB7IHJldHVybiBtX3RvOyB9
Ci0gICAgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9m
b250RGF0YTsgfQorICAgIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fZm9udERhdGEuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBVQ2hhcjMyIG1fZnJv
bTsKICAgICBVQ2hhcjMyIG1fdG87Ci0gICAgY29uc3QgU2ltcGxlRm9udERhdGEqIG1fZm9udERh
dGE7CisgICAgUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBtX2ZvbnREYXRhOwogfTsKIAogY2xhc3Mg
U2VnbWVudGVkRm9udERhdGEgOiBwdWJsaWMgRm9udERhdGEgewogcHVibGljOgorCXN0YXRpYyBQ
YXNzUmVmUHRyPFNlZ21lbnRlZEZvbnREYXRhPiBjcmVhdGUoKQorCXsKKwkJcmV0dXJuIGFkb3B0
UmVmKG5ldyBTZWdtZW50ZWRGb250RGF0YSk7CisJfQorCiAgICAgdmlydHVhbCB+U2VnbWVudGVk
Rm9udERhdGEoKTsKIAogICAgIHZvaWQgYXBwZW5kUmFuZ2UoY29uc3QgRm9udERhdGFSYW5nZSYg
cmFuZ2UpIHsgbV9yYW5nZXMuYXBwZW5kKHJhbmdlKTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcAppbmRleCA5ZjUxMDM3Li40MGJkMjlmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcApAQCAtMzcsNiArMzcs
NyBAQAogI2luY2x1ZGUgIlNWR0ZvbnRGYWNlRWxlbWVudC5oIgogI2VuZGlmCiAKKyNpbmNsdWRl
ICJHbHlwaFBhZ2VUcmVlTm9kZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDcgKzUxLDYgQEAgU2ltcGxlRm9udERhdGE6OlNpbXBs
ZUZvbnREYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIGYsIGJvb2wgY3VzdG9tRm9udCwgYm9v
bAogI2VuZGlmCiAgICAgLCBtX2lzQ3VzdG9tRm9udChjdXN0b21Gb250KQogICAgICwgbV9pc0xv
YWRpbmcobG9hZGluZykKLSAgICAsIG1fc21hbGxDYXBzRm9udERhdGEoMCkKIHsKICNpZiBFTkFC
TEUoU1ZHX0ZPTlRTKQogICAgIGlmIChTVkdGb250RmFjZUVsZW1lbnQqIHN2Z0ZvbnRGYWNlRWxl
bWVudCA9IHN2Z0ZvbnREYXRhID8gc3ZnRm9udERhdGEtPnN2Z0ZvbnRGYWNlRWxlbWVudCgpIDog
MCkgewpAQCAtNjMsNyArNjMsNyBAQCBTaW1wbGVGb250RGF0YTo6U2ltcGxlRm9udERhdGEoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYgZiwgYm9vbCBjdXN0b21Gb250LCBib29sCiAgICAgICAgIG1f
YXNjZW50ID0gc3RhdGljX2Nhc3Q8aW50PihzdmdGb250RmFjZUVsZW1lbnQtPmFzY2VudCgpICog
c2NhbGUpOwogICAgICAgICBtX2Rlc2NlbnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHN2Z0ZvbnRGYWNl
RWxlbWVudC0+ZGVzY2VudCgpICogc2NhbGUpOwogICAgICAgICBtX3hIZWlnaHQgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHN2Z0ZvbnRGYWNlRWxlbWVudC0+eEhlaWdodCgpICogc2NhbGUpOwotICAgICAg
ICBtX2xpbmVHYXAgPSAwLjFmICogZi5zaXplKCk7CisgICAgICAgIG1fbGluZUdhcCA9IHN0YXRp
Y19jYXN0PGludD4oMC4xZiAqIGYuc2l6ZSgpKTsKICAgICAgICAgbV9saW5lU3BhY2luZyA9IG1f
YXNjZW50ICsgbV9kZXNjZW50ICsgbV9saW5lR2FwOwogICAgIAogICAgICAgICBtX3NwYWNlR2x5
cGggPSAwOwpAQCAtMTMxLDcgKzEzMSw3IEBAIFNpbXBsZUZvbnREYXRhOjp+U2ltcGxlRm9udERh
dGEoKQogCiAgICAgaWYgKCFpc0N1c3RvbUZvbnQoKSkgewogICAgICAgICBpZiAobV9zbWFsbENh
cHNGb250RGF0YSkKLSAgICAgICAgICAgIGZvbnRDYWNoZSgpLT5yZWxlYXNlRm9udERhdGEobV9z
bWFsbENhcHNGb250RGF0YSk7CisgICAgICAgICAgICBmb250Q2FjaGUoKS0+cmVsZWFzZUZvbnRE
YXRhKG1fc21hbGxDYXBzRm9udERhdGEuZ2V0KCkpOwogICAgICAgICBHbHlwaFBhZ2VUcmVlTm9k
ZTo6cHJ1bmVUcmVlRm9udERhdGEodGhpcyk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaW1wbGVGb250RGF0YS5oCmluZGV4IGQyZGQwYjkuLjEzMWMwMmUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJHbHlwaFBhZ2VUcmVlTm9kZS5oIgogI2luY2x1ZGUgIkdseXBoV2lkdGhNYXAu
aCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
IAogI2lmIFVTRShBVFNVSSkKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUFUU1VTdHlsZSogQVRTVVN0
eWxlOwpAQCAtNTcsMTEgKzU4LDE0IEBAIGVudW0gUGl0Y2ggeyBVbmtub3duUGl0Y2gsIEZpeGVk
UGl0Y2gsIFZhcmlhYmxlUGl0Y2ggfTsKIAogY2xhc3MgU2ltcGxlRm9udERhdGEgOiBwdWJsaWMg
Rm9udERhdGEgewogcHVibGljOgotICAgIFNpbXBsZUZvbnREYXRhKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmLCBib29sIGN1c3RvbUZvbnQgPSBmYWxzZSwgYm9vbCBsb2FkaW5nID0gZmFsc2UsIFNW
R0ZvbnREYXRhKiBkYXRhID0gMCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2ltcGxlRm9udERh
dGE+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIGJvb2wgY3Vz
dG9tRm9udCA9IGZhbHNlLCBib29sIGxvYWRpbmcgPSBmYWxzZSwgU1ZHRm9udERhdGEqIGRhdGEg
PSAwKQorICAgIHsKKyAgICAJcmV0dXJuIGFkb3B0UmVmKG5ldyBTaW1wbGVGb250RGF0YShwbGF0
Zm9ybURhdGEsIGN1c3RvbUZvbnQsIGxvYWRpbmcsIGRhdGEpKTsKKyAgICB9CiAgICAgdmlydHVh
bCB+U2ltcGxlRm9udERhdGEoKTsKIAogcHVibGljOgotICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIHBsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udDsgfQorCWNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udDsgfQogICAg
IFNpbXBsZUZvbnREYXRhKiBzbWFsbENhcHNGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24m
IGZvbnREZXNjcmlwdGlvbikgY29uc3Q7CiAKICAgICAvLyB2ZXJ0aWNhbCBtZXRyaWNzCkBAIC0x
MzUsNiArMTM5LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisJU2ltcGxlRm9udERh
dGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIGJvb2wgY3VzdG9tRm9udCwgYm9vbCBsb2FkaW5n
LCBTVkdGb250RGF0YSogZGF0YSk7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXQoKTsKICAgICB2b2lk
IHBsYXRmb3JtR2x5cGhJbml0KCk7CiAgICAgdm9pZCBwbGF0Zm9ybURlc3Ryb3koKTsKQEAgLTE3
NCw3ICsxNzksNyBAQCBwdWJsaWM6CiAKICAgICBHbHlwaERhdGEgbV9taXNzaW5nR2x5cGhEYXRh
OwogCi0gICAgbXV0YWJsZSBTaW1wbGVGb250RGF0YSogbV9zbWFsbENhcHNGb250RGF0YTsKKyAg
ICBtdXRhYmxlIFJlZlB0cjxTaW1wbGVGb250RGF0YT4gbV9zbWFsbENhcHNGb250RGF0YTsKIAog
I2lmIFBMQVRGT1JNKENHKSB8fCBQTEFURk9STShXSU4pCiAgICAgZmxvYXQgbV9zeW50aGV0aWNC
b2xkT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250
Q2FjaGVRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDYWNoZVF0LmNw
cAppbmRleCAxMTRmMDczLi40NDRkMDc1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0ZvbnRDYWNoZVF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0ZvbnRDYWNoZVF0LmNwcApAQCAtNDksOCArNDksOSBAQCBGb250UGxhdGZvcm1EYXRhKiBG
b250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9u
JiBkZQogICAgIHJldHVybiBuZXcgRm9udFBsYXRmb3JtRGF0YShkZXNjcmlwdGlvbik7CiB9CiAK
LVNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvbnREYXRhKGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEqKQorU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udERh
dGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSogZGF0YSkKIHsKKyAgICBkZWxldGUgZGF0YTsKICAg
ICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9Gb250RmFsbGJhY2tMaXN0UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9G
b250RmFsbGJhY2tMaXN0UXQuY3BwCmluZGV4IDIyYWUyMDUuLmViZjIwOTYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEZhbGxiYWNrTGlzdFF0LmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRGYWxsYmFja0xpc3RRdC5jcHAKQEAg
LTI2LDYgKzI2LDggQEAKIAogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRG
b250RGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogCiAjaW5jbHVkZSA8UURlYnVnPgogCkBAIC01NywxMSArNTksMTEgQEAgdm9pZCBG
b250RmFsbGJhY2tMaXN0OjpyZWxlYXNlRm9udERhdGEoKQogCiB2b2lkIEZvbnRGYWxsYmFja0xp
c3Q6OmRldGVybWluZVBpdGNoKGNvbnN0IFdlYkNvcmU6OkZvbnQqIGZvbnQpIGNvbnN0CiB7Ci0g
ICAgY29uc3QgRm9udERhdGEqIGZvbnREYXRhID0gcHJpbWFyeUZvbnQoZm9udCk7CisgICAgUmVm
UHRyPEZvbnREYXRhPiBmb250RGF0YSA9IHByaW1hcnlGb250KGZvbnQpOwogICAgIGlmICghZm9u
dERhdGEtPmlzU2VnbWVudGVkKCkpCi0gICAgICAgIG1fcGl0Y2ggPSBzdGF0aWNfY2FzdDxjb25z
dCBTaW1wbGVGb250RGF0YSo+KGZvbnREYXRhKS0+cGl0Y2goKTsKKyAgICAgICAgbV9waXRjaCA9
IHN0YXRpY19wb2ludGVyX2Nhc3Q8U2ltcGxlRm9udERhdGE+KGZvbnREYXRhKS0+cGl0Y2goKTsK
ICAgICBlbHNlIHsKLSAgICAgICAgY29uc3QgU2VnbWVudGVkRm9udERhdGEqIHNlZ21lbnRlZEZv
bnREYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgU2VnbWVudGVkRm9udERhdGEqPihmb250RGF0YSk7
CisgICAgICAgIGNvbnN0IFNlZ21lbnRlZEZvbnREYXRhKiBzZWdtZW50ZWRGb250RGF0YSA9IHN0
YXRpY19wb2ludGVyX2Nhc3Q8U2VnbWVudGVkRm9udERhdGE+KGZvbnREYXRhKS5nZXQoKTsKICAg
ICAgICAgdW5zaWduZWQgbnVtUmFuZ2VzID0gc2VnbWVudGVkRm9udERhdGEtPm51bVJhbmdlcygp
OwogICAgICAgICBpZiAobnVtUmFuZ2VzID09IDEpCiAgICAgICAgICAgICBtX3BpdGNoID0gc2Vn
bWVudGVkRm9udERhdGEtPnJhbmdlQXQoMCkuZm9udERhdGEoKS0+cGl0Y2goKTsKQEAgLTcwLDEw
ICs3MiwxMCBAQCB2b2lkIEZvbnRGYWxsYmFja0xpc3Q6OmRldGVybWluZVBpdGNoKGNvbnN0IFdl
YkNvcmU6OkZvbnQqIGZvbnQpIGNvbnN0CiAgICAgfQogfQogCi1jb25zdCBGb250RGF0YSogRm9u
dEZhbGxiYWNrTGlzdDo6Zm9udERhdGFBdChjb25zdCBXZWJDb3JlOjpGb250KiBfZm9udCwgdW5z
aWduZWQgaW5kZXgpIGNvbnN0CitQYXNzUmVmUHRyPEZvbnREYXRhPiBGb250RmFsbGJhY2tMaXN0
Ojpmb250RGF0YUF0KGNvbnN0IFdlYkNvcmU6OkZvbnQqIF9mb250LCB1bnNpZ25lZCBpbmRleCkg
Y29uc3QKIHsKICAgICBpZiAoaW5kZXggIT0gMCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBQYXNzUmVmUHRyPEZvbnREYXRhPigpOwogCiAgICAgLy8gVXNlIHRoZSBGb250U2Vs
ZWN0b3IgdG8gZ2V0IGEgV2ViQ29yZSBmb250IGFuZCB0aGVuIGZhbGxiYWNrIHRvIFF0CiAgICAg
Y29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiA9IF9mb250LT5mb250RGVzY3JpcHRp
b24oKTsKQEAgLTg0LDE2ICs4NiwxNiBAQCBjb25zdCBGb250RGF0YSogRm9udEZhbGxiYWNrTGlz
dDo6Zm9udERhdGFBdChjb25zdCBXZWJDb3JlOjpGb250KiBfZm9udCwgdW5zaWduZQogICAgICAg
ICAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgICAgICAgICBpZiAoZGF0YS0+aXNMb2FkaW5nKCkp
CiAgICAgICAgICAgICAgICAgICAgIG1fbG9hZGluZ0N1c3RvbUZvbnRzID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZGF0YTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
ZGF0YSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZmFtaWx5ID0gZmFtaWx5
LT5uZXh0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIG5ldyBTaW1wbGVGb250RGF0YShGb250UGxh
dGZvcm1EYXRhKGRlc2NyaXB0aW9uKSwgX2ZvbnQtPndvcmRTcGFjaW5nKCksIF9mb250LT5sZXR0
ZXJTcGFjaW5nKCkpOworICAgIHJldHVybiBTaW1wbGVGb250RGF0YTo6Y3JlYXRlKEZvbnRQbGF0
Zm9ybURhdGEoZGVzY3JpcHRpb24pLCBfZm9udC0+d29yZFNwYWNpbmcoKSwgX2ZvbnQtPmxldHRl
clNwYWNpbmcoKSk7CiB9CiAKLWNvbnN0IEZvbnREYXRhKiBGb250RmFsbGJhY2tMaXN0Ojpmb250
RGF0YUZvckNoYXJhY3RlcnMoY29uc3QgV2ViQ29yZTo6Rm9udCogZm9udCwgY29uc3QgVUNoYXIq
LCBpbnQpIGNvbnN0CitQYXNzUmVmUHRyPEZvbnREYXRhPiBGb250RmFsbGJhY2tMaXN0Ojpmb250
RGF0YUZvckNoYXJhY3RlcnMoY29uc3QgV2ViQ29yZTo6Rm9udCogZm9udCwgY29uc3QgVUNoYXIq
LCBpbnQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHByaW1hcnlGb250KGZvbnQpOwogfQo=
</data>
<flag name="review"
          id="14127"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28928</attachid>
            <date>2009-03-25 09:39:58 -0700</date>
            <delta_ts>2009-03-25 10:06:58 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>general-withcl.patch</filename>
            <type>text/plain</type>
            <size>3115</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDNiN2FmNy4uMzJlZjczOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAwOS0wMy0yNSAgQmFsYXpzIEtlbGVt
ZW4gIDxrZWxlbWVuLmJhbGF6czNAc3R1ZC51LXN6ZWdlZC5odT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDU1MQorICAgICAgICBbUXRdIGxlYWtzIGluIGZvbnQt
aGFuZGxpbmcKKworICAgICAgICBCcmVhayB3aXRoIGNyZWF0aW5nIG5ldyBvYmpldHMgZm9yIHJl
dHVybiB2YWx1ZQorICAgICAgICBvZiBmdW5jdGlvbnMgaW4gdGhlIGNhc2Ugd2hlbiB0aGUgY2Fs
bGVyIGRvZXMKKyAgICAgICAgbm90IGV4cGVjdCB0aGF0IG93bmVyc2hpcCBpcyBwYXNzZWQuCisg
ICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvciBzbyBubyB0ZXN0LgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKTogUmV0dXJuIHdpdGggMAorICAgICAg
ICBpbnN0ZWFkIG9mIHJldHVybmluZyB3aXRoIGEgbmV3IG9iamVjdC4gVGhpcyBpcyBhIGxvZ2lj
YWwgY2hhbmdlCisgICAgICAgIGJlY2F1c2UgUXQgZG9lcyBub3QgaGF2ZSBhIHJlYWwgRm9udENh
Y2hlLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRGYWxsYmFja0xpc3RRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFsbGJhY2tMaXN0OjpyZWxlYXNlRm9udERhdGEp
OiBQdXJnZSBtX2ZvbnRMaXN0LgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbGxiYWNrTGlzdDo6
Zm9udERhdGFBdCk6IEhvbGQgdGhlIGNyZWF0ZWQKKyAgICAgICAgU2ltcGxlRm9udERhdGEgaW4g
bV9mb250TGlzdCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IG9uZQorICAgICAgICBvbiBldmVy
eSBjYWxsLgorCiAyMDA5LTAzLTI1ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlciBGcmV5dGhlci4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2FjaGVRdC5jcHAKaW5kZXggMTE0ZjA3My4uY2Y3MjRh
NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2FjaGVRdC5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2FjaGVRdC5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgdm9pZCBGb250Q2FjaGU6OmdldFRyYWl0c0luRmFtaWx5KGNvbnN0IEF0
b21pY1N0cmluZyYgZmFtaWx5TmFtZSwgVmVjdG9yPHVuc2lnbmUKIAogRm9udFBsYXRmb3JtRGF0
YSogRm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCBib29sIGNoZWNr
aW5nQWx0ZXJuYXRlTmFtZSkKIHsKLSAgICByZXR1cm4gbmV3IEZvbnRQbGF0Zm9ybURhdGEoZGVz
Y3JpcHRpb24pOworICAgIHJldHVybiAwOwogfQogCiBTaW1wbGVGb250RGF0YSogRm9udENhY2hl
OjpnZXRDYWNoZWRGb250RGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhKikKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEZhbGxiYWNrTGlzdFF0LmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEZhbGxiYWNrTGlzdFF0LmNwcAppbmRleCAy
MmFlMjA1Li4xYzg1ODMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0ZvbnRGYWxsYmFja0xpc3RRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9Gb250RmFsbGJhY2tMaXN0UXQuY3BwCkBAIC01Myw2ICs1Myw5IEBAIHZvaWQgRm9udEZhbGxi
YWNrTGlzdDo6aW52YWxpZGF0ZShXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9udFNlbGVjdG9y
PiBmb250U2VsCiAKIHZvaWQgRm9udEZhbGxiYWNrTGlzdDo6cmVsZWFzZUZvbnREYXRhKCkKIHsK
KyAgICBpbnQgc2l6ZSA9IG1fZm9udExpc3Quc2l6ZSgpOworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKQorICAgICAgICBkZWxldGUgbV9mb250TGlzdFtpXS5maXJzdDsKIH0KIAog
dm9pZCBGb250RmFsbGJhY2tMaXN0OjpkZXRlcm1pbmVQaXRjaChjb25zdCBXZWJDb3JlOjpGb250
KiBmb250KSBjb25zdApAQCAtODksOCArOTIsMTMgQEAgY29uc3QgRm9udERhdGEqIEZvbnRGYWxs
YmFja0xpc3Q6OmZvbnREYXRhQXQoY29uc3QgV2ViQ29yZTo6Rm9udCogX2ZvbnQsIHVuc2lnbmUK
ICAgICAgICAgfQogICAgICAgICBmYW1pbHkgPSBmYW1pbHktPm5leHQoKTsKICAgICB9Ci0KLSAg
ICByZXR1cm4gbmV3IFNpbXBsZUZvbnREYXRhKEZvbnRQbGF0Zm9ybURhdGEoZGVzY3JpcHRpb24p
LCBfZm9udC0+d29yZFNwYWNpbmcoKSwgX2ZvbnQtPmxldHRlclNwYWNpbmcoKSk7CisgICAgCisg
ICAgaWYgKCFtX2ZvbnRMaXN0LnNpemUoKSkgeworICAgICAgICBjb25zdCBGb250RGF0YSogcmVz
dWx0ID0gbmV3IFNpbXBsZUZvbnREYXRhKEZvbnRQbGF0Zm9ybURhdGEoZGVzY3JpcHRpb24pLCBf
Zm9udC0+d29yZFNwYWNpbmcoKSwgX2ZvbnQtPmxldHRlclNwYWNpbmcoKSk7CisgICAgICAgIG1f
Zm9udExpc3QuYXBwZW5kKHBhaXI8Y29uc3QgRm9udERhdGEqLCBib29sPihyZXN1bHQsIHJlc3Vs
dC0+aXNDdXN0b21Gb250KCkpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9IGVsc2UK
KyAgICAgICAgcmV0dXJuIG1fZm9udExpc3RbMF0uZmlyc3Q7CiB9CiAKIGNvbnN0IEZvbnREYXRh
KiBGb250RmFsbGJhY2tMaXN0Ojpmb250RGF0YUZvckNoYXJhY3RlcnMoY29uc3QgV2ViQ29yZTo6
Rm9udCogZm9udCwgY29uc3QgVUNoYXIqLCBpbnQpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28931</attachid>
            <date>2009-03-25 10:06:58 -0700</date>
            <delta_ts>2009-04-01 06:15:52 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>general-withcl.patch</filename>
            <type>text/plain</type>
            <size>3116</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDNiN2FmNy4uMzRlNjA4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAwOS0wMy0yNSAgQmFsYXpzIEtlbGVt
ZW4gIDxrZWxlbWVuLmJhbGF6czNAc3R1ZC51LXN6ZWdlZC5odT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDU1MQorICAgICAgICBbUXRdIGxlYWtzIGluIGZvbnQt
aGFuZGxpbmcKKworICAgICAgICBCcmVhayB3aXRoIGNyZWF0aW5nIG5ldyBvYmplY3RzIGZvciBy
ZXR1cm4gdmFsdWUKKyAgICAgICAgb2YgZnVuY3Rpb25zIGluIHRoZSBjYXNlIHdoZW4gdGhlIGNh
bGxlciBkb2VzCisgICAgICAgIG5vdCBleHBlY3QgdGhhdCBvd25lcnNoaXAgaXMgcGFzc2VkLgor
ICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3Igc28gbm8gdGVzdC4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDYWNoZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YSk6IFJldHVybiB3aXRoIDAKKyAgICAg
ICAgaW5zdGVhZCBvZiByZXR1cm5pbmcgd2l0aCBhIG5ldyBvYmplY3QuIFRoaXMgaXMgYSBsb2dp
Y2FsIGNoYW5nZQorICAgICAgICBiZWNhdXNlIFF0IGRvZXMgbm90IGhhdmUgYSByZWFsIEZvbnRD
YWNoZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250RmFsbGJhY2tMaXN0UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbGxiYWNrTGlzdDo6cmVsZWFzZUZvbnREYXRh
KTogUHVyZ2UgbV9mb250TGlzdC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWxsYmFja0xpc3Q6
OmZvbnREYXRhQXQpOiBIb2xkIHRoZSBjcmVhdGVkCisgICAgICAgIFNpbXBsZUZvbnREYXRhIGlu
IG1fZm9udExpc3QgaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBvbmUKKyAgICAgICAgb24gZXZl
cnkgY2FsbC4KKwogMjAwOS0wMy0yNSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21l
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIuCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDYWNoZVF0LmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQuY3BwCmluZGV4IDExNGYwNzMuLmNmNzI0
YTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQuY3BwCkBA
IC00Niw3ICs0Niw3IEBAIHZvaWQgRm9udENhY2hlOjpnZXRUcmFpdHNJbkZhbWlseShjb25zdCBB
dG9taWNTdHJpbmcmIGZhbWlseU5hbWUsIFZlY3Rvcjx1bnNpZ25lCiAKIEZvbnRQbGF0Zm9ybURh
dGEqIEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgYm9vbCBjaGVj
a2luZ0FsdGVybmF0ZU5hbWUpCiB7Ci0gICAgcmV0dXJuIG5ldyBGb250UGxhdGZvcm1EYXRhKGRl
c2NyaXB0aW9uKTsKKyAgICByZXR1cm4gMDsKIH0KIAogU2ltcGxlRm9udERhdGEqIEZvbnRDYWNo
ZTo6Z2V0Q2FjaGVkRm9udERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSopCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRGYWxsYmFja0xpc3RRdC5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRGYWxsYmFja0xpc3RRdC5jcHAKaW5kZXgg
MjJhZTIwNS4uMWM4NTgzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9Gb250RmFsbGJhY2tMaXN0UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvRm9udEZhbGxiYWNrTGlzdFF0LmNwcApAQCAtNTMsNiArNTMsOSBAQCB2b2lkIEZvbnRGYWxs
YmFja0xpc3Q6OmludmFsaWRhdGUoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvbnRTZWxlY3Rv
cj4gZm9udFNlbAogCiB2b2lkIEZvbnRGYWxsYmFja0xpc3Q6OnJlbGVhc2VGb250RGF0YSgpCiB7
CisgICAgaW50IHNpemUgPSBtX2ZvbnRMaXN0LnNpemUoKTsKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IHNpemU7ICsraSkKKyAgICAgICAgZGVsZXRlIG1fZm9udExpc3RbaV0uZmlyc3Q7CiB9CiAK
IHZvaWQgRm9udEZhbGxiYWNrTGlzdDo6ZGV0ZXJtaW5lUGl0Y2goY29uc3QgV2ViQ29yZTo6Rm9u
dCogZm9udCkgY29uc3QKQEAgLTg5LDggKzkyLDEzIEBAIGNvbnN0IEZvbnREYXRhKiBGb250RmFs
bGJhY2tMaXN0Ojpmb250RGF0YUF0KGNvbnN0IFdlYkNvcmU6OkZvbnQqIF9mb250LCB1bnNpZ25l
CiAgICAgICAgIH0KICAgICAgICAgZmFtaWx5ID0gZmFtaWx5LT5uZXh0KCk7CiAgICAgfQotCi0g
ICAgcmV0dXJuIG5ldyBTaW1wbGVGb250RGF0YShGb250UGxhdGZvcm1EYXRhKGRlc2NyaXB0aW9u
KSwgX2ZvbnQtPndvcmRTcGFjaW5nKCksIF9mb250LT5sZXR0ZXJTcGFjaW5nKCkpOworICAgIAor
ICAgIGlmICghbV9mb250TGlzdC5zaXplKCkpIHsKKyAgICAgICAgY29uc3QgRm9udERhdGEqIHJl
c3VsdCA9IG5ldyBTaW1wbGVGb250RGF0YShGb250UGxhdGZvcm1EYXRhKGRlc2NyaXB0aW9uKSwg
X2ZvbnQtPndvcmRTcGFjaW5nKCksIF9mb250LT5sZXR0ZXJTcGFjaW5nKCkpOworICAgICAgICBt
X2ZvbnRMaXN0LmFwcGVuZChwYWlyPGNvbnN0IEZvbnREYXRhKiwgYm9vbD4ocmVzdWx0LCByZXN1
bHQtPmlzQ3VzdG9tRm9udCgpKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSBlbHNl
CisgICAgICAgIHJldHVybiBtX2ZvbnRMaXN0WzBdLmZpcnN0OwogfQogCiBjb25zdCBGb250RGF0
YSogRm9udEZhbGxiYWNrTGlzdDo6Zm9udERhdGFGb3JDaGFyYWN0ZXJzKGNvbnN0IFdlYkNvcmU6
OkZvbnQqIGZvbnQsIGNvbnN0IFVDaGFyKiwgaW50KSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28966</attachid>
            <date>2009-03-26 05:57:28 -0700</date>
            <delta_ts>2009-04-01 06:15:52 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>general-withcl.2.patch</filename>
            <type>text/plain</type>
            <size>4228</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDNiN2FmNy4uNzJkZmJiMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAwOS0wMy0yNiAgQmFsYXpzIEtlbGVt
ZW4gIDxrZWxlbWVuLmJhbGF6c0BzdHVkLnUtc3plZ2VkLmh1PgorCisgICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI0NTUxCisgICAgICAgICBbUXRdIGxlYWtzIGluIGZvbnQtaGFuZGxp
bmcKKworICAgICAgICAgQnJlYWsgd2l0aCBjcmVhdGluZyBuZXcgb2JqZWN0cyBmb3IgcmV0dXJu
IHZhbHVlCisgICAgICAgICBvZiBmdW5jdGlvbnMgaW4gdGhlIGNhc2Ugd2hlbiB0aGUgY2FsbGVy
IGRvZXMKKyAgICAgICAgIG5vdCBleHBlY3QgdGhhdCBvd25lcnNoaXAgaXMgcGFzc2VkLgorICAg
ICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yIHNvIG5vIHRlc3QuCisgCisgICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDYWNoZVF0LmNwcDoKKyAgICAgICAgIChXZWJDb3JlOjpG
b250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEpOiBSZXR1cm4gd2l0aCAwCisgICAg
ICAgICBpbnN0ZWFkIG9mIHJldHVybmluZyB3aXRoIGEgbmV3IG9iamVjdC4gVGhpcyBpcyBhIGxv
Z2ljYWwgY2hhbmdlCisgICAgICAgICBiZWNhdXNlIFF0IGRvZXMgbm90IGhhdmUgYSByZWFsIEZv
bnRDYWNoZS4KKyAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEZhbGxiYWNrTGlz
dFF0LmNwcDoKKyAgICAgICAgIChXZWJDb3JlOjpGb250RmFsbGJhY2tMaXN0OjpyZWxlYXNlRm9u
dERhdGEpOiBQdXJnZSBtX2ZvbnRMaXN0LgorICAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWxsYmFj
a0xpc3Q6OmZvbnREYXRhQXQpOiBIb2xkIHRoZSBjcmVhdGVkCisgICAgICAgICBTaW1wbGVGb250
RGF0YSBpbiBtX2ZvbnRMaXN0IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgb25lCisgICAgICAg
ICBvbiBldmVyeSBjYWxsLgorICAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgor
ICAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpnZXRGb250RGF0YSk6IEFkZCBh
IG5lY2Vzc2FyeQorICAgICAgICAgbnVsbCBwb2ludGVyIGNoZWNrIGFuZCBjcmVhdGUgYSBuZXcg
Rm9udFBsYXRmb3JtRGF0YSBpZiBpdAorICAgICAgICAgd2FzIHRydWUuIEl0IGlzIG5lZWRlZCBi
ZWNhdXNlIG9mIHRoZSBjaGFuZ2UgaW4gRm9udENhY2hlUXQuY3BwLgorCisKIDIwMDktMDMtMjUg
IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgSG9sZ2VyIEZyZXl0aGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IDEx
MWNlYTIuLjBjYTIyOTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE4MCw4ICsx
ODAsMTEgQEAgU2ltcGxlRm9udERhdGEqIENTU0ZvbnRGYWNlU291cmNlOjpnZXRGb250RGF0YShj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmkKICAgICAgICAgICAgIG1fZm9udC0+YmVn
aW5Mb2FkSWZOZWVkZWQoZG9jTG9hZGVyKTsKICAgICAgICAgLy8gRklYTUU6IG1fc3RyaW5nIGlz
IGEgVVJMIHNvIGl0IG1ha2VzIG5vIHNlbnNlIHRvIHBhc3MgaXQgYXMgYSBmYW1pbHkgbmFtZS4K
ICAgICAgICAgRm9udFBsYXRmb3JtRGF0YSogdGVtcERhdGEgPSBmb250Q2FjaGUoKS0+Z2V0Q2Fj
aGVkRm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIG1fc3RyaW5nKTsKLSAgICAgICAg
aWYgKCF0ZW1wRGF0YSkKKyAgICAgICAgaWYgKCF0ZW1wRGF0YSkgewogICAgICAgICAgICAgdGVt
cERhdGEgPSBmb250Q2FjaGUoKS0+Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChmb250RGVzY3Jp
cHRpb24pOworICAgICAgICAgICAgaWYgKCF0ZW1wRGF0YSkKKyAgICAgICAgICAgICAgICB0ZW1w
RGF0YSA9IG5ldyBGb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbik7CisgICAgICAgIH0K
ICAgICAgICAgZm9udERhdGEuc2V0KG5ldyBTaW1wbGVGb250RGF0YSgqdGVtcERhdGEsIHRydWUs
IHRydWUpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvRm9udENhY2hlUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2Fj
aGVRdC5jcHAKaW5kZXggMTE0ZjA3My4uY2Y3MjRhNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2FjaGVRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9Gb250Q2FjaGVRdC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBGb250Q2Fj
aGU6OmdldFRyYWl0c0luRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5TmFtZSwgVmVj
dG9yPHVuc2lnbmUKIAogRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpnZXRDYWNoZWRGb250
UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IEF0
b21pY1N0cmluZyYgZmFtaWx5LCBib29sIGNoZWNraW5nQWx0ZXJuYXRlTmFtZSkKIHsKLSAgICBy
ZXR1cm4gbmV3IEZvbnRQbGF0Zm9ybURhdGEoZGVzY3JpcHRpb24pOworICAgIHJldHVybiAwOwog
fQogCiBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRDYWNoZWRGb250RGF0YShjb25zdCBG
b250UGxhdGZvcm1EYXRhKikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvRm9udEZhbGxiYWNrTGlzdFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
Rm9udEZhbGxiYWNrTGlzdFF0LmNwcAppbmRleCAyMmFlMjA1Li4xYzg1ODMwIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRGYWxsYmFja0xpc3RRdC5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250RmFsbGJhY2tMaXN0UXQuY3BwCkBA
IC01Myw2ICs1Myw5IEBAIHZvaWQgRm9udEZhbGxiYWNrTGlzdDo6aW52YWxpZGF0ZShXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6Rm9udFNlbGVjdG9yPiBmb250U2VsCiAKIHZvaWQgRm9udEZhbGxi
YWNrTGlzdDo6cmVsZWFzZUZvbnREYXRhKCkKIHsKKyAgICBpbnQgc2l6ZSA9IG1fZm9udExpc3Qu
c2l6ZSgpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBkZWxl
dGUgbV9mb250TGlzdFtpXS5maXJzdDsKIH0KIAogdm9pZCBGb250RmFsbGJhY2tMaXN0OjpkZXRl
cm1pbmVQaXRjaChjb25zdCBXZWJDb3JlOjpGb250KiBmb250KSBjb25zdApAQCAtODksOCArOTIs
MTMgQEAgY29uc3QgRm9udERhdGEqIEZvbnRGYWxsYmFja0xpc3Q6OmZvbnREYXRhQXQoY29uc3Qg
V2ViQ29yZTo6Rm9udCogX2ZvbnQsIHVuc2lnbmUKICAgICAgICAgfQogICAgICAgICBmYW1pbHkg
PSBmYW1pbHktPm5leHQoKTsKICAgICB9Ci0KLSAgICByZXR1cm4gbmV3IFNpbXBsZUZvbnREYXRh
KEZvbnRQbGF0Zm9ybURhdGEoZGVzY3JpcHRpb24pLCBfZm9udC0+d29yZFNwYWNpbmcoKSwgX2Zv
bnQtPmxldHRlclNwYWNpbmcoKSk7CisgICAgCisgICAgaWYgKCFtX2ZvbnRMaXN0LnNpemUoKSkg
eworICAgICAgICBjb25zdCBGb250RGF0YSogcmVzdWx0ID0gbmV3IFNpbXBsZUZvbnREYXRhKEZv
bnRQbGF0Zm9ybURhdGEoZGVzY3JpcHRpb24pLCBfZm9udC0+d29yZFNwYWNpbmcoKSwgX2ZvbnQt
PmxldHRlclNwYWNpbmcoKSk7CisgICAgICAgIG1fZm9udExpc3QuYXBwZW5kKHBhaXI8Y29uc3Qg
Rm9udERhdGEqLCBib29sPihyZXN1bHQsIHJlc3VsdC0+aXNDdXN0b21Gb250KCkpKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIG1fZm9udExpc3Rb
MF0uZmlyc3Q7CiB9CiAKIGNvbnN0IEZvbnREYXRhKiBGb250RmFsbGJhY2tMaXN0Ojpmb250RGF0
YUZvckNoYXJhY3RlcnMoY29uc3QgV2ViQ29yZTo6Rm9udCogZm9udCwgY29uc3QgVUNoYXIqLCBp
bnQpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29158</attachid>
            <date>2009-04-01 06:15:52 -0700</date>
            <delta_ts>2009-04-27 02:39:26 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>general-withcl.3.patch</filename>
            <type>text/plain</type>
            <size>4630</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NjM3YmYxMS4uNDI5YWQzZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAwOS0wMy0zMSAgQmFsYXpzIEtlbGVt
ZW4gIDxrZWxlbWVuLmJhbGF6c0BzdHVkLnUtc3plZ2VkLmh1PgorCisgICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI0NTUxCisgICAgICAgICBbUXRdIGxlYWtzIGluIGZvbnQtaGFuZGxp
bmcKKworICAgICAgICAgQnJlYWsgd2l0aCBjcmVhdGluZyBuZXcgb2JqZWN0cyBmb3IgcmV0dXJu
IHZhbHVlCisgICAgICAgICBvZiBmdW5jdGlvbnMgaW4gdGhlIGNhc2Ugd2hlbiB0aGUgY2FsbGVy
IGRvZXMKKyAgICAgICAgIG5vdCBleHBlY3QgdGhhdCBvd25lcnNoaXAgaXMgcGFzc2VkLgorICAg
ICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yIHNvIG5vIHRlc3QuCisgCisgICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDYWNoZVF0LmNwcDoKKyAgICAgICAgIChXZWJDb3JlOjpG
b250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEpOiBSZXR1cm4gd2l0aCAwCisgICAg
ICAgICBpbnN0ZWFkIG9mIHJldHVybmluZyB3aXRoIGEgbmV3IG9iamVjdC4gVGhpcyBpcyBhIGxv
Z2ljYWwgY2hhbmdlCisgICAgICAgICBiZWNhdXNlIFF0IGRvZXMgbm90IGhhdmUgYSByZWFsIEZv
bnRDYWNoZS4KKyAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEZhbGxiYWNrTGlz
dFF0LmNwcDoKKyAgICAgICAgIChXZWJDb3JlOjpGb250RmFsbGJhY2tMaXN0OjppbnZhbGlkYXRl
KTogQXZvaWQgcHVyZ2UgbV9mb250TGlzdAorICAgICAgICAgYmVjYXVzZSBpdCBjYW4gYmUgcmVm
ZXJlbmNlZCBieSBGb250IG9iamVjdHMuCisgICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbGxiYWNr
TGlzdDo6cmVsZWFzZUZvbnREYXRhKTogUHVyZ2UgbV9mb250TGlzdC4KKyAgICAgICAgIFRoaXMg
aXMgb25seSBjYWxsZWQgZnJvbSB0aGUgZGVzdHJ1Y3Rvci4KKyAgICAgICAgIChXZWJDb3JlOjpG
b250RmFsbGJhY2tMaXN0Ojpmb250RGF0YUF0KTogSG9sZCB0aGUgY3JlYXRlZAorICAgICAgICAg
U2ltcGxlRm9udERhdGEgaW4gbV9mb250TGlzdCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IG9u
ZQorICAgICAgICAgb24gZXZlcnkgY2FsbC4KKyAgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmNwcDoKKyAgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6Z2V0Rm9udERh
dGEpOiBBZGQgYSBuZWNlc3NhcnkKKyAgICAgICAgIG51bGwgcG9pbnRlciBjaGVjayBhbmQgY3Jl
YXRlIGEgbmV3IEZvbnRQbGF0Zm9ybURhdGEgaWYgaXQKKyAgICAgICAgIHdhcyB0cnVlLiBJdCBp
cyBuZWVkZWQgYmVjYXVzZSBvZiB0aGUgY2hhbmdlIGluIEZvbnRDYWNoZVF0LmNwcC4KKwogMjAw
OS0wMy0zMSAgUmFmYWVsIFdlaW5zdGVpbiAgPHJhZmFlbHdAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCmlu
ZGV4IDExMWNlYTIuLjBjYTIyOTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE4
MCw4ICsxODAsMTEgQEAgU2ltcGxlRm9udERhdGEqIENTU0ZvbnRGYWNlU291cmNlOjpnZXRGb250
RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmkKICAgICAgICAgICAgIG1fZm9u
dC0+YmVnaW5Mb2FkSWZOZWVkZWQoZG9jTG9hZGVyKTsKICAgICAgICAgLy8gRklYTUU6IG1fc3Ry
aW5nIGlzIGEgVVJMIHNvIGl0IG1ha2VzIG5vIHNlbnNlIHRvIHBhc3MgaXQgYXMgYSBmYW1pbHkg
bmFtZS4KICAgICAgICAgRm9udFBsYXRmb3JtRGF0YSogdGVtcERhdGEgPSBmb250Q2FjaGUoKS0+
Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIG1fc3RyaW5nKTsKLSAg
ICAgICAgaWYgKCF0ZW1wRGF0YSkKKyAgICAgICAgaWYgKCF0ZW1wRGF0YSkgewogICAgICAgICAg
ICAgdGVtcERhdGEgPSBmb250Q2FjaGUoKS0+Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChmb250
RGVzY3JpcHRpb24pOworICAgICAgICAgICAgaWYgKCF0ZW1wRGF0YSkKKyAgICAgICAgICAgICAg
ICB0ZW1wRGF0YSA9IG5ldyBGb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbik7CisgICAg
ICAgIH0KICAgICAgICAgZm9udERhdGEuc2V0KG5ldyBTaW1wbGVGb250RGF0YSgqdGVtcERhdGEs
IHRydWUsIHRydWUpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvRm9udENhY2hlUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9G
b250Q2FjaGVRdC5jcHAKaW5kZXggMTE0ZjA3My4uY2Y3MjRhNyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2FjaGVRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2FjaGVRdC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBG
b250Q2FjaGU6OmdldFRyYWl0c0luRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5TmFt
ZSwgVmVjdG9yPHVuc2lnbmUKIAogRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpnZXRDYWNo
ZWRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNv
bnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCBib29sIGNoZWNraW5nQWx0ZXJuYXRlTmFtZSkKIHsK
LSAgICByZXR1cm4gbmV3IEZvbnRQbGF0Zm9ybURhdGEoZGVzY3JpcHRpb24pOworICAgIHJldHVy
biAwOwogfQogCiBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRDYWNoZWRGb250RGF0YShj
b25zdCBGb250UGxhdGZvcm1EYXRhKikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvRm9udEZhbGxiYWNrTGlzdFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvRm9udEZhbGxiYWNrTGlzdFF0LmNwcAppbmRleCAyMmFlMjA1Li5mMzY1ZGY3IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRGYWxsYmFja0xpc3RRdC5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250RmFsbGJhY2tMaXN0UXQu
Y3BwCkBAIC00Miw4ICs0Miw2IEBAIEZvbnRGYWxsYmFja0xpc3Q6OkZvbnRGYWxsYmFja0xpc3Qo
KQogCiB2b2lkIEZvbnRGYWxsYmFja0xpc3Q6OmludmFsaWRhdGUoV1RGOjpQYXNzUmVmUHRyPFdl
YkNvcmU6OkZvbnRTZWxlY3Rvcj4gZm9udFNlbGVjdG9yKQogewotICAgIHJlbGVhc2VGb250RGF0
YSgpOwotICAgIG1fZm9udExpc3QuY2xlYXIoKTsKICAgICBtX2ZhbWlseUluZGV4ID0gMDsKICAg
ICBtX3BpdGNoID0gVW5rbm93blBpdGNoOwogICAgIG1fbG9hZGluZ0N1c3RvbUZvbnRzID0gZmFs
c2U7CkBAIC01Myw2ICs1MSw4IEBAIHZvaWQgRm9udEZhbGxiYWNrTGlzdDo6aW52YWxpZGF0ZShX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9udFNlbGVjdG9yPiBmb250U2VsCiAKIHZvaWQgRm9u
dEZhbGxiYWNrTGlzdDo6cmVsZWFzZUZvbnREYXRhKCkKIHsKKyAgICBpZiAobV9mb250TGlzdC5z
aXplKCkpCisgICAgICAgIGRlbGV0ZSBtX2ZvbnRMaXN0WzBdLmZpcnN0OwogfQogCiB2b2lkIEZv
bnRGYWxsYmFja0xpc3Q6OmRldGVybWluZVBpdGNoKGNvbnN0IFdlYkNvcmU6OkZvbnQqIGZvbnQp
IGNvbnN0CkBAIC05MCw3ICs5MCwxMiBAQCBjb25zdCBGb250RGF0YSogRm9udEZhbGxiYWNrTGlz
dDo6Zm9udERhdGFBdChjb25zdCBXZWJDb3JlOjpGb250KiBfZm9udCwgdW5zaWduZQogICAgICAg
ICBmYW1pbHkgPSBmYW1pbHktPm5leHQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gbmV3IFNpbXBs
ZUZvbnREYXRhKEZvbnRQbGF0Zm9ybURhdGEoZGVzY3JpcHRpb24pLCBfZm9udC0+d29yZFNwYWNp
bmcoKSwgX2ZvbnQtPmxldHRlclNwYWNpbmcoKSk7CisgICAgaWYgKCFtX2ZvbnRMaXN0LnNpemUo
KSkgeworICAgICAgICBjb25zdCBGb250RGF0YSogcmVzdWx0ID0gbmV3IFNpbXBsZUZvbnREYXRh
KEZvbnRQbGF0Zm9ybURhdGEoZGVzY3JpcHRpb24pLCBfZm9udC0+d29yZFNwYWNpbmcoKSwgX2Zv
bnQtPmxldHRlclNwYWNpbmcoKSk7CisgICAgICAgIG1fZm9udExpc3QuYXBwZW5kKHBhaXI8Y29u
c3QgRm9udERhdGEqLCBib29sPihyZXN1bHQsIHJlc3VsdC0+aXNDdXN0b21Gb250KCkpKTsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIG1fZm9udExp
c3RbMF0uZmlyc3Q7CiB9CiAKIGNvbnN0IEZvbnREYXRhKiBGb250RmFsbGJhY2tMaXN0Ojpmb250
RGF0YUZvckNoYXJhY3RlcnMoY29uc3QgV2ViQ29yZTo6Rm9udCogZm9udCwgY29uc3QgVUNoYXIq
LCBpbnQpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29228</attachid>
            <date>2009-04-03 09:36:38 -0700</date>
            <delta_ts>2009-04-06 02:12:37 -0700</delta_ts>
            <desc>proposed patch - more clever solution</desc>
            <filename>font-leaks.diff</filename>
            <type>text/plain</type>
            <size>7488</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCAxMTFjZWEyLi4wY2EyMjkwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xODAsOCArMTgwLDExIEBAIFNpbXBsZUZvbnREYXRh
KiBDU1NGb250RmFjZVNvdXJjZTo6Z2V0Rm9udERhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBm
b250RGVzY3JpCiAgICAgICAgICAgICBtX2ZvbnQtPmJlZ2luTG9hZElmTmVlZGVkKGRvY0xvYWRl
cik7CiAgICAgICAgIC8vIEZJWE1FOiBtX3N0cmluZyBpcyBhIFVSTCBzbyBpdCBtYWtlcyBubyBz
ZW5zZSB0byBwYXNzIGl0IGFzIGEgZmFtaWx5IG5hbWUuCiAgICAgICAgIEZvbnRQbGF0Zm9ybURh
dGEqIHRlbXBEYXRhID0gZm9udENhY2hlKCktPmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZm9u
dERlc2NyaXB0aW9uLCBtX3N0cmluZyk7Ci0gICAgICAgIGlmICghdGVtcERhdGEpCisgICAgICAg
IGlmICghdGVtcERhdGEpIHsKICAgICAgICAgICAgIHRlbXBEYXRhID0gZm9udENhY2hlKCktPmdl
dExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoZm9udERlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIGlm
ICghdGVtcERhdGEpCisgICAgICAgICAgICAgICAgdGVtcERhdGEgPSBuZXcgRm9udFBsYXRmb3Jt
RGF0YShmb250RGVzY3JpcHRpb24pOworICAgICAgICB9CiAgICAgICAgIGZvbnREYXRhLnNldChu
ZXcgU2ltcGxlRm9udERhdGEoKnRlbXBEYXRhLCB0cnVlLCB0cnVlKSk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYWxsYmFja0xpc3QuaCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbGxiYWNrTGlzdC5oCmluZGV4IGEyM2IzMmMu
LmVhYTE3NGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbGxi
YWNrTGlzdC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbGxiYWNrTGlz
dC5oCkBAIC0yOCw2ICsyOCwxMCBAQAogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgInF0L0Zv
bnRGYWxsYmFja0NhY2hlUXQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEZvbnQ7CkBAIC02NSw3ICs2OSwxMiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZWxlYXNl
Rm9udERhdGEoKTsKIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIG11dGFibGUgRm9udERhdGFDYWNo
ZSBtX2ZvbnRMaXN0OworI2Vsc2UKICAgICBtdXRhYmxlIFZlY3RvcjxwYWlyPGNvbnN0IEZvbnRE
YXRhKiwgYm9vbD4sIDE+IG1fZm9udExpc3Q7CisjZW5kaWYKKwogICAgIG11dGFibGUgaW50IG1f
ZmFtaWx5SW5kZXg7CiAgICAgbXV0YWJsZSBQaXRjaCBtX3BpdGNoOwogICAgIG11dGFibGUgYm9v
bCBtX2xvYWRpbmdDdXN0b21Gb250czsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvRm9udENhY2hlUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9G
b250Q2FjaGVRdC5jcHAKaW5kZXggMTE0ZjA3My4uY2Y3MjRhNyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2FjaGVRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2FjaGVRdC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBG
b250Q2FjaGU6OmdldFRyYWl0c0luRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5TmFt
ZSwgVmVjdG9yPHVuc2lnbmUKIAogRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpnZXRDYWNo
ZWRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNv
bnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCBib29sIGNoZWNraW5nQWx0ZXJuYXRlTmFtZSkKIHsK
LSAgICByZXR1cm4gbmV3IEZvbnRQbGF0Zm9ybURhdGEoZGVzY3JpcHRpb24pOworICAgIHJldHVy
biAwOwogfQogCiBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRDYWNoZWRGb250RGF0YShj
b25zdCBGb250UGxhdGZvcm1EYXRhKikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvRm9udEZhbGxiYWNrQ2FjaGVRdC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9Gb250RmFsbGJhY2tDYWNoZVF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNDQxNTQyMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvRm9udEZhbGxiYWNrQ2FjaGVRdC5oCkBAIC0wLDAgKzEsOTEgQEAKKyNpZm5kZWYgRm9u
dEZhbGxiYWNrQ2FjaGVRdF9oCisjZGVmaW5lIEZvbnRGYWxsYmFja0NhY2hlUXRfaAorCisjaW5j
bHVkZSA8QXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8U3RyaW5nSGFzaC5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUg
IkZvbnREZXNjcmlwdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBzdHJ1Y3Qg
Rm9udERhdGFDYWNoZUtleSB7CisgICAgICAgIEZvbnREYXRhQ2FjaGVLZXkoY29uc3QgQXRvbWlj
U3RyaW5nJiBmYW1pbHkgPSBBdG9taWNTdHJpbmcoKSwgdW5zaWduZWQgc2l6ZSA9IDAsIHVuc2ln
bmVkIHdlaWdodCA9IDAsIGJvb2wgaXRhbGljID0gZmFsc2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzUHJpbnRlckZvbnQgPSBmYWxzZSwgRm9udFJlbmRlcmluZ01vZGUgcmVuZGVy
aW5nTW9kZSA9IE5vcm1hbFJlbmRlcmluZ01vZGUpCisgICAgICAgICAgICA6IG1fZmFtaWx5KGZh
bWlseSkKKyAgICAgICAgICAgICwgbV9zaXplKHNpemUpCisgICAgICAgICAgICAsIG1fd2VpZ2h0
KHdlaWdodCkKKyAgICAgICAgICAgICwgbV9pdGFsaWMoaXRhbGljKQorICAgICAgICAgICAgLCBt
X3ByaW50ZXJGb250KGlzUHJpbnRlckZvbnQpCisgICAgICAgICAgICAsIG1fcmVuZGVyaW5nTW9k
ZShyZW5kZXJpbmdNb2RlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBGb250RGF0
YUNhY2hlS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3NpemUoaGFzaFRh
YmxlRGVsZXRlZFNpemUoKSkgeyB9CisgICAgICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3NpemUgPT0gaGFzaFRhYmxlRGVsZXRlZFNpemUoKTsgfQor
CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250RGF0YUNhY2hlS2V5JiBvdGhlcikg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKG1f
ZmFtaWx5LCBvdGhlci5tX2ZhbWlseSkgJiYgbV9zaXplID09IG90aGVyLm1fc2l6ZSAmJiAKKyAg
ICAgICAgICAgICAgICBtX3dlaWdodCA9PSBvdGhlci5tX3dlaWdodCAmJiBtX2l0YWxpYyA9PSBv
dGhlci5tX2l0YWxpYyAmJiBtX3ByaW50ZXJGb250ID09IG90aGVyLm1fcHJpbnRlckZvbnQgJiYK
KyAgICAgICAgICAgICAgICBtX3JlbmRlcmluZ01vZGUgPT0gb3RoZXIubV9yZW5kZXJpbmdNb2Rl
OworICAgICAgICB9CisKKyAgICAgICAgQXRvbWljU3RyaW5nIG1fZmFtaWx5OworICAgICAgICB1
bnNpZ25lZCBtX3NpemU7CisgICAgICAgIHVuc2lnbmVkIG1fd2VpZ2h0OworICAgICAgICBib29s
IG1faXRhbGljOworICAgICAgICBib29sIG1fcHJpbnRlckZvbnQ7CisgICAgICAgIEZvbnRSZW5k
ZXJpbmdNb2RlIG1fcmVuZGVyaW5nTW9kZTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoVGFibGVEZWxldGVkU2l6ZSgpIHsgcmV0dXJuIDB4RkZGRkZGRkZVOyB9
CisgICAgfTsKKworICAgIGlubGluZSB1bnNpZ25lZCBjb21wdXRlSGFzaChjb25zdCBGb250RGF0
YUNhY2hlS2V5JiBmb250S2V5KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaGFzaENvZGVzWzRd
ID0geworICAgICAgICAgICAgQ2FzZUZvbGRpbmdIYXNoOjpoYXNoKGZvbnRLZXkubV9mYW1pbHkp
LAorICAgICAgICAgICAgZm9udEtleS5tX3NpemUsCisgICAgICAgICAgICBmb250S2V5Lm1fd2Vp
Z2h0LAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZvbnRLZXkubV9pdGFsaWMp
IDw8IDIgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZm9udEtleS5tX3ByaW50ZXJGb250KSA8PCAx
IHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZvbnRLZXkubV9yZW5kZXJpbmdNb2RlKQorICAgICAg
ICB9OworICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y29tcHV0ZUhhc2gocmVpbnRlcnByZXRf
Y2FzdDxVQ2hhcio+KGhhc2hDb2RlcyksIHNpemVvZihoYXNoQ29kZXMpIC8gc2l6ZW9mKFVDaGFy
KSk7CisgICAgfQorCisgICAgc3RydWN0IEZvbnREYXRhQ2FjaGVLZXlIYXNoIHsKKyAgICAgICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgRm9udERhdGFDYWNoZUtleSYgZm9udCkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVIYXNoKGZvbnQpOworICAgICAgICB9CisK
KyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgRm9udERhdGFDYWNoZUtleSYgYSwgY29u
c3QgRm9udERhdGFDYWNoZUtleSYgYikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGEg
PT0gYjsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBh
cmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKKyAgICB9OworCisgICAgc3RydWN0IEZvbnREYXRh
Q2FjaGVLZXlUcmFpdHMgOiBXVEY6OkdlbmVyaWNIYXNoVHJhaXRzPEZvbnREYXRhQ2FjaGVLZXk+
IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBGb250RGF0YUNhY2hlS2V5JiBlbXB0eVZhbHVlKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChGb250RGF0YUNhY2hlS2V5LCBr
ZXksIChudWxsQXRvbSkpOworICAgICAgICAgICAgcmV0dXJuIGtleTsKKyAgICAgICAgfQorICAg
ICAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoRm9udERhdGFDYWNoZUtleSYg
c2xvdCkKKyAgICAgICAgeworICAgICAgICAgICAgbmV3ICgmc2xvdCkgRm9udERhdGFDYWNoZUtl
eShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgc3RhdGlj
IGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgRm9udERhdGFDYWNoZUtleSYgdmFsdWUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
OworICAgICAgICB9CisgICAgfTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxGb250RGF0YUNhY2hl
S2V5LCBjb25zdCBTaW1wbGVGb250RGF0YSosIEZvbnREYXRhQ2FjaGVLZXlIYXNoLCBGb250RGF0
YUNhY2hlS2V5VHJhaXRzPiBGb250RGF0YUNhY2hlOworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250RmFsbGJhY2tMaXN0UXQuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250RmFsbGJhY2tMaXN0UXQuY3BwCmluZGV4
IDIyYWUyMDUuLjc0ODI3NzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvRm9udEZhbGxiYWNrTGlzdFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0ZvbnRGYWxsYmFja0xpc3RRdC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUg
IkZvbnQuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRGb250RGF0YS5oIgorI2luY2x1ZGUgIkZvbnRG
YWxsYmFja0NhY2hlUXQuaCIKIAogI2luY2x1ZGUgPFFEZWJ1Zz4KIApAQCAtNDIsOCArNDMsNiBA
QCBGb250RmFsbGJhY2tMaXN0OjpGb250RmFsbGJhY2tMaXN0KCkKIAogdm9pZCBGb250RmFsbGJh
Y2tMaXN0OjppbnZhbGlkYXRlKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGb250U2VsZWN0b3I+
IGZvbnRTZWxlY3RvcikKIHsKLSAgICByZWxlYXNlRm9udERhdGEoKTsKLSAgICBtX2ZvbnRMaXN0
LmNsZWFyKCk7CiAgICAgbV9mYW1pbHlJbmRleCA9IDA7CiAgICAgbV9waXRjaCA9IFVua25vd25Q
aXRjaDsKICAgICBtX2xvYWRpbmdDdXN0b21Gb250cyA9IGZhbHNlOwpAQCAtNTMsNiArNTIsNyBA
QCB2b2lkIEZvbnRGYWxsYmFja0xpc3Q6OmludmFsaWRhdGUoV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OkZvbnRTZWxlY3Rvcj4gZm9udFNlbAogCiB2b2lkIEZvbnRGYWxsYmFja0xpc3Q6OnJlbGVh
c2VGb250RGF0YSgpCiB7CisgICAgV1RGOjpkZWxldGVBbGxWYWx1ZXMobV9mb250TGlzdCk7CiB9
CiAKIHZvaWQgRm9udEZhbGxiYWNrTGlzdDo6ZGV0ZXJtaW5lUGl0Y2goY29uc3QgV2ViQ29yZTo6
Rm9udCogZm9udCkgY29uc3QKQEAgLTkwLDcgKzkwLDE1IEBAIGNvbnN0IEZvbnREYXRhKiBGb250
RmFsbGJhY2tMaXN0Ojpmb250RGF0YUF0KGNvbnN0IFdlYkNvcmU6OkZvbnQqIF9mb250LCB1bnNp
Z25lCiAgICAgICAgIGZhbWlseSA9IGZhbWlseS0+bmV4dCgpOwogICAgIH0KIAotICAgIHJldHVy
biBuZXcgU2ltcGxlRm9udERhdGEoRm9udFBsYXRmb3JtRGF0YShkZXNjcmlwdGlvbiksIF9mb250
LT53b3JkU3BhY2luZygpLCBfZm9udC0+bGV0dGVyU3BhY2luZygpKTsKKyAgICBGb250RGF0YUNh
Y2hlS2V5IGtleShkZXNjcmlwdGlvbi5mYW1pbHkoKS5mYW1pbHkoKSwgZGVzY3JpcHRpb24uY29t
cHV0ZWRQaXhlbFNpemUoKSwgZGVzY3JpcHRpb24ud2VpZ2h0KCksCisgICAgICAgICAgICAgICAg
ICAgICAgICBkZXNjcmlwdGlvbi5pdGFsaWMoKSwgZGVzY3JpcHRpb24udXNlUHJpbnRlckZvbnQo
KSwgZGVzY3JpcHRpb24ucmVuZGVyaW5nTW9kZSgpKTsKKyAgICBGb250RGF0YUNhY2hlOjppdGVy
YXRvciBpdCA9IG1fZm9udExpc3QuZmluZChrZXkpOworICAgIGlmIChpdCA9PSBtX2ZvbnRMaXN0
LmVuZCgpKSB7CisgICAgICAgIGNvbnN0IFNpbXBsZUZvbnREYXRhKiByZXN1bHQgPSBuZXcgU2lt
cGxlRm9udERhdGEoRm9udFBsYXRmb3JtRGF0YShkZXNjcmlwdGlvbiksIF9mb250LT53b3JkU3Bh
Y2luZygpLCBfZm9udC0+bGV0dGVyU3BhY2luZygpKTsKKyAgICAgICAgbV9mb250TGlzdC5zZXQo
a2V5LCByZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0gZWxzZQorICAgICAg
ICByZXR1cm4gaXQtPnNlY29uZDsKIH0KIAogY29uc3QgRm9udERhdGEqIEZvbnRGYWxsYmFja0xp
c3Q6OmZvbnREYXRhRm9yQ2hhcmFjdGVycyhjb25zdCBXZWJDb3JlOjpGb250KiBmb250LCBjb25z
dCBVQ2hhciosIGludCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29277</attachid>
            <date>2009-04-06 02:12:37 -0700</date>
            <delta_ts>2009-04-27 02:50:57 -0700</delta_ts>
            <desc>proposed patch - more clever solution</desc>
            <filename>font-leaks-with-cr-with-ch.patch</filename>
            <type>text/plain</type>
            <size>11340</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzY0ZTAyOS4uNTExZjExMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAwOS0wNC0wNiAgQmFsYXpzIEtlbGVt
ZW4gIDxrZWxlbWVuLmJhbGF6cy4zQHN0dWQudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI0NTUxCisgICAgICAgIFtRdF0gbGVha3MgaW4gZm9udC1oYW5kbGlu
ZworCisgICAgICAgIEJyZWFrIHdpdGggY3JlYXRpbmcgbmV3IG9iamVjdHMgZm9yIHJldHVybiB2
YWx1ZQorICAgICAgICBvZiBmdW5jdGlvbnMgaW4gdGhlIGNhc2Ugd2hlbiB0aGUgY2FsbGVyIGRv
ZXMKKyAgICAgICAgbm90IGV4cGVjdCB0aGF0IG93bmVyc2hpcCBpcyBwYXNzZWQuCisgICAgICAg
IE5vIGNoYW5nZSBpbiBiZWhhdmlvciBzbyBubyB0ZXN0LgorCisgICAgICAgICogY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpn
ZXRGb250RGF0YSk6IEFkZCBhIG5lY2Vzc2FyeQorICAgICAgICBudWxsIHBvaW50ZXIgY2hlY2sg
YW5kIGNyZWF0ZSBhIG5ldyBGb250UGxhdGZvcm1EYXRhIGlmIGl0CisgICAgICAgIHdhcyB0cnVl
LiBJdCBpcyBuZWVkZWQgYmVjYXVzZSBvZiB0aGUgY2hhbmdlIGluIEZvbnRDYWNoZVF0LmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFsbGJhY2tMaXN0Lmg6IFVzZSBoYXNo
bWFwIChGb250RGF0YUNhY2hlLCBkZWZpbmVkIGluIEZvbnRGYWxsYmFja0NhY2hlUXQuaCkKKyAg
ICAgICAgYXMgbV9mb250TGlzdCBpbnN0ZWFkIG9mIHZlY3RvciBpbiB0aGUgY2FzZSBvZiBRdC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2FjaGVRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEpOiBSZXR1cm4g
d2l0aCAwCisgICAgICAgIGluc3RlYWQgb2YgcmV0dXJuaW5nIHdpdGggYSBuZXcgb2JqZWN0LiBU
aGlzIGlzIGEgbG9naWNhbCBjaGFuZ2UKKyAgICAgICAgYmVjYXVzZSBRdCBkb2VzIG5vdCBoYXZl
IGEgcmVhbCBGb250Q2FjaGUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEZh
bGxiYWNrQ2FjaGVRdC5oOiBBZGRlZC4gTWFwcGluZyBiZXR3ZWVuIEZvbnREZXNjcmlwdGlvbiBh
bmQgU2ltcGxlRm9udERhdGEuCisgICAgICAgIEl0IGlzIG5lY2Nlc3NhcnkgZm9yIGJlaW5nIGFi
bGUgdG8gZnJlZSBTaW1wbGVGb250RGF0YSBvYmplY3RzIHdoYXQgd2UgY3JlYXRlIGluIEZvbnRG
YWxsYmFja0xpc3Q6OmZvbnREYXRhQXQKKyAgICAgICAgbGF0ZXIgKGZyb20gdGhlIGRlc3RydWN0
b3IpLiBMb2dpYyBoYWQgdGFrZW4gZnJvbSBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6Rm9udERhdGFDYWNoZUtleTo6Rm9udERhdGFDYWNoZUtleSk6
CisgICAgICAgIChXZWJDb3JlOjpGb250RGF0YUNhY2hlS2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGF0YUNhY2hlS2V5OjpvcGVyYXRvcj09KToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnREYXRhQ2FjaGVLZXk6Omhhc2hUYWJsZURlbGV0ZWRTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVIYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnREYXRhQ2FjaGVLZXlIYXNoOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREYXRhQ2Fj
aGVLZXlIYXNoOjplcXVhbCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGF0YUNhY2hlS2V5VHJh
aXRzOjplbXB0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREYXRhQ2FjaGVLZXlUcmFp
dHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGF0YUNh
Y2hlS2V5VHJhaXRzOjppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvRm9udEZhbGxiYWNrTGlzdFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWxs
YmFja0xpc3Q6OmludmFsaWRhdGUpOiAgQXZvaWQgcHVyZ2UgbV9mb250TGlzdCBieSByZWxlYXNl
Rm9udERhdGEKKyAgICAgICAgYmVjYXVzZSBvYmplY3RzIHdoYXQgaXQgaGFzIGNhbiBiZSByZWZl
cnJlZCBieSBGb250IG9iamVjdHMuCisgICAgICAgIChXZWJDb3JlOjpGb250RmFsbGJhY2tMaXN0
OjpyZWxlYXNlRm9udERhdGEpOiBQdXJnZSBtX2ZvbnRMaXN0LiBDYWxsZWQgZnJvbSB0aGUgZGVz
dHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWxsYmFja0xpc3Q6OmZvbnREYXRhQXQp
OiBVc2UgdGhlIGhhc2htYXAgdG8gaG9sZCB0aGUgY3JlYXRlZCBTaW1wbGVGb250RGF0YS4KKwog
MjAwOS0wNC0wNSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtPcmlnaW5hbGx5XSBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwCmluZGV4IDExMWNlYTIuLjBjYTIyOTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5j
cHAKQEAgLTE4MCw4ICsxODAsMTEgQEAgU2ltcGxlRm9udERhdGEqIENTU0ZvbnRGYWNlU291cmNl
OjpnZXRGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmkKICAgICAgICAg
ICAgIG1fZm9udC0+YmVnaW5Mb2FkSWZOZWVkZWQoZG9jTG9hZGVyKTsKICAgICAgICAgLy8gRklY
TUU6IG1fc3RyaW5nIGlzIGEgVVJMIHNvIGl0IG1ha2VzIG5vIHNlbnNlIHRvIHBhc3MgaXQgYXMg
YSBmYW1pbHkgbmFtZS4KICAgICAgICAgRm9udFBsYXRmb3JtRGF0YSogdGVtcERhdGEgPSBmb250
Q2FjaGUoKS0+Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIG1fc3Ry
aW5nKTsKLSAgICAgICAgaWYgKCF0ZW1wRGF0YSkKKyAgICAgICAgaWYgKCF0ZW1wRGF0YSkgewog
ICAgICAgICAgICAgdGVtcERhdGEgPSBmb250Q2FjaGUoKS0+Z2V0TGFzdFJlc29ydEZhbGxiYWNr
Rm9udChmb250RGVzY3JpcHRpb24pOworICAgICAgICAgICAgaWYgKCF0ZW1wRGF0YSkKKyAgICAg
ICAgICAgICAgICB0ZW1wRGF0YSA9IG5ldyBGb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlv
bik7CisgICAgICAgIH0KICAgICAgICAgZm9udERhdGEuc2V0KG5ldyBTaW1wbGVGb250RGF0YSgq
dGVtcERhdGEsIHRydWUsIHRydWUpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udEZhbGxiYWNrTGlzdC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250RmFsbGJhY2tMaXN0LmgKaW5kZXggYTIzYjMyYy4uZWFhMTc0YyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFsbGJhY2tMaXN0LmgKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFsbGJhY2tMaXN0LmgKQEAgLTI4LDYgKzI4LDEw
IEBACiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSAicXQvRm9udEZhbGxiYWNrQ2FjaGVRdC5o
IgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udDsKQEAgLTY1LDcg
KzY5LDEyIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlbGVhc2VGb250RGF0YSgpOwogCisjaWYg
UExBVEZPUk0oUVQpCisgICAgbXV0YWJsZSBGb250RGF0YUNhY2hlIG1fZm9udExpc3Q7CisjZWxz
ZQogICAgIG11dGFibGUgVmVjdG9yPHBhaXI8Y29uc3QgRm9udERhdGEqLCBib29sPiwgMT4gbV9m
b250TGlzdDsKKyNlbmRpZgorCiAgICAgbXV0YWJsZSBpbnQgbV9mYW1pbHlJbmRleDsKICAgICBt
dXRhYmxlIFBpdGNoIG1fcGl0Y2g7CiAgICAgbXV0YWJsZSBib29sIG1fbG9hZGluZ0N1c3RvbUZv
bnRzOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2FjaGVR
dC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDYWNoZVF0LmNwcAppbmRl
eCAxMTRmMDczLi5jZjcyNGE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0ZvbnRDYWNoZVF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0Zv
bnRDYWNoZVF0LmNwcApAQCAtNDYsNyArNDYsNyBAQCB2b2lkIEZvbnRDYWNoZTo6Z2V0VHJhaXRz
SW5GYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lLCBWZWN0b3I8dW5zaWduZQog
CiBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBm
YW1pbHksIGJvb2wgY2hlY2tpbmdBbHRlcm5hdGVOYW1lKQogewotICAgIHJldHVybiBuZXcgRm9u
dFBsYXRmb3JtRGF0YShkZXNjcmlwdGlvbik7CisgICAgcmV0dXJuIDA7CiB9CiAKIFNpbXBsZUZv
bnREYXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvbnREYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEqKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250RmFsbGJh
Y2tDYWNoZVF0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRGYWxsYmFja0Nh
Y2hlUXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDFlOTVkCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250RmFsbGJhY2tD
YWNoZVF0LmgKQEAgLTAsMCArMSwxMTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVW5p
dmVyc2l0eSBvZiBTemVnZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBVTklWRVJTSVRZIE9GIFNaRUdFRCBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRm9udEZhbGxiYWNr
Q2FjaGVRdF9oCisjZGVmaW5lIEZvbnRGYWxsYmFja0NhY2hlUXRfaAorCisjaW5jbHVkZSA8QXRv
bWljU3RyaW5nLmg+CisjaW5jbHVkZSA8U3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgIkZvbnREZXNj
cmlwdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBzdHJ1Y3QgRm9udERhdGFD
YWNoZUtleSB7CisgICAgICAgIEZvbnREYXRhQ2FjaGVLZXkoY29uc3QgQXRvbWljU3RyaW5nJiBm
YW1pbHkgPSBBdG9taWNTdHJpbmcoKSwgdW5zaWduZWQgc2l6ZSA9IDAsIHVuc2lnbmVkIHdlaWdo
dCA9IDAsIGJvb2wgaXRhbGljID0gZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGlzUHJpbnRlckZvbnQgPSBmYWxzZSwgRm9udFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9
IE5vcm1hbFJlbmRlcmluZ01vZGUpCisgICAgICAgICAgICA6IG1fZmFtaWx5KGZhbWlseSkKKyAg
ICAgICAgICAgICwgbV9zaXplKHNpemUpCisgICAgICAgICAgICAsIG1fd2VpZ2h0KHdlaWdodCkK
KyAgICAgICAgICAgICwgbV9pdGFsaWMoaXRhbGljKQorICAgICAgICAgICAgLCBtX3ByaW50ZXJG
b250KGlzUHJpbnRlckZvbnQpCisgICAgICAgICAgICAsIG1fcmVuZGVyaW5nTW9kZShyZW5kZXJp
bmdNb2RlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBGb250RGF0YUNhY2hlS2V5
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3NpemUoaGFzaFRhYmxlRGVsZXRl
ZFNpemUoKSkgeyB9CisgICAgICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX3NpemUgPT0gaGFzaFRhYmxlRGVsZXRlZFNpemUoKTsgfQorCisgICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250RGF0YUNhY2hlS2V5JiBvdGhlcikgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKG1fZmFtaWx5LCBv
dGhlci5tX2ZhbWlseSkgJiYgbV9zaXplID09IG90aGVyLm1fc2l6ZSAmJgorICAgICAgICAgICAg
ICAgIG1fd2VpZ2h0ID09IG90aGVyLm1fd2VpZ2h0ICYmIG1faXRhbGljID09IG90aGVyLm1faXRh
bGljICYmIG1fcHJpbnRlckZvbnQgPT0gb3RoZXIubV9wcmludGVyRm9udCAmJgorICAgICAgICAg
ICAgICAgIG1fcmVuZGVyaW5nTW9kZSA9PSBvdGhlci5tX3JlbmRlcmluZ01vZGU7CisgICAgICAg
IH0KKworICAgICAgICBBdG9taWNTdHJpbmcgbV9mYW1pbHk7CisgICAgICAgIHVuc2lnbmVkIG1f
c2l6ZTsKKyAgICAgICAgdW5zaWduZWQgbV93ZWlnaHQ7CisgICAgICAgIGJvb2wgbV9pdGFsaWM7
CisgICAgICAgIGJvb2wgbV9wcmludGVyRm9udDsKKyAgICAgICAgRm9udFJlbmRlcmluZ01vZGUg
bV9yZW5kZXJpbmdNb2RlOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgc3RhdGljIHVuc2lnbmVk
IGhhc2hUYWJsZURlbGV0ZWRTaXplKCkgeyByZXR1cm4gMHhGRkZGRkZGRlU7IH0KKyAgICB9Owor
CisgICAgaW5saW5lIHVuc2lnbmVkIGNvbXB1dGVIYXNoKGNvbnN0IEZvbnREYXRhQ2FjaGVLZXkm
IGZvbnRLZXkpCisgICAgeworICAgICAgICB1bnNpZ25lZCBoYXNoQ29kZXNbNF0gPSB7CisgICAg
ICAgICAgICBDYXNlRm9sZGluZ0hhc2g6Omhhc2goZm9udEtleS5tX2ZhbWlseSksCisgICAgICAg
ICAgICBmb250S2V5Lm1fc2l6ZSwKKyAgICAgICAgICAgIGZvbnRLZXkubV93ZWlnaHQsCisgICAg
ICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZm9udEtleS5tX2l0YWxpYykgPDwgMiB8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihmb250S2V5Lm1fcHJpbnRlckZvbnQpIDw8IDEgfCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZm9udEtleS5tX3JlbmRlcmluZ01vZGUpCisgICAgICAgIH07CisgICAg
ICAgIHJldHVybiBTdHJpbmdJbXBsOjpjb21wdXRlSGFzaChyZWludGVycHJldF9jYXN0PFVDaGFy
Kj4oaGFzaENvZGVzKSwgc2l6ZW9mKGhhc2hDb2RlcykgLyBzaXplb2YoVUNoYXIpKTsKKyAgICB9
CisKKyAgICBzdHJ1Y3QgRm9udERhdGFDYWNoZUtleUhhc2ggeworICAgICAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBGb250RGF0YUNhY2hlS2V5JiBmb250KQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gY29tcHV0ZUhhc2goZm9udCk7CisgICAgICAgIH0KKworICAgICAgICBz
dGF0aWMgYm9vbCBlcXVhbChjb25zdCBGb250RGF0YUNhY2hlS2V5JiBhLCBjb25zdCBGb250RGF0
YUNhY2hlS2V5JiBiKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYSA9PSBiOworICAg
ICAgICB9CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlP
ckRlbGV0ZWQgPSB0cnVlOworICAgIH07CisKKyAgICBzdHJ1Y3QgRm9udERhdGFDYWNoZUtleVRy
YWl0cyA6IFdURjo6R2VuZXJpY0hhc2hUcmFpdHM8Rm9udERhdGFDYWNoZUtleT4geworICAgICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IEZvbnREYXRhQ2FjaGVLZXkmIGVtcHR5VmFsdWUoKQorICAgICAgICB7CisgICAg
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEZvbnREYXRhQ2FjaGVLZXksIGtleSwgKG51bGxB
dG9tKSk7CisgICAgICAgICAgICByZXR1cm4ga2V5OworICAgICAgICB9CisgICAgICAgIHN0YXRp
YyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShGb250RGF0YUNhY2hlS2V5JiBzbG90KQorICAg
ICAgICB7CisgICAgICAgICAgICBuZXcgKCZzbG90KSBGb250RGF0YUNhY2hlS2V5KFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBzdGF0aWMgYm9vbCBpc0Rl
bGV0ZWRWYWx1ZShjb25zdCBGb250RGF0YUNhY2hlS2V5JiB2YWx1ZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7CisgICAgICAg
IH0KKyAgICB9OworCisgICAgdHlwZWRlZiBIYXNoTWFwPEZvbnREYXRhQ2FjaGVLZXksIGNvbnN0
IFNpbXBsZUZvbnREYXRhKiwgRm9udERhdGFDYWNoZUtleUhhc2gsIEZvbnREYXRhQ2FjaGVLZXlU
cmFpdHM+IEZvbnREYXRhQ2FjaGU7CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRGYWxsYmFja0xpc3RRdC5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRGYWxsYmFja0xpc3RRdC5jcHAKaW5kZXggMjJhZTIwNS4u
ZjU4OWE0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250RmFs
bGJhY2tMaXN0UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEZh
bGxiYWNrTGlzdFF0LmNwcApAQCAtNDIsOCArNDIsNiBAQCBGb250RmFsbGJhY2tMaXN0OjpGb250
RmFsbGJhY2tMaXN0KCkKIAogdm9pZCBGb250RmFsbGJhY2tMaXN0OjppbnZhbGlkYXRlKFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpGb250U2VsZWN0b3I+IGZvbnRTZWxlY3RvcikKIHsKLSAgICBy
ZWxlYXNlRm9udERhdGEoKTsKLSAgICBtX2ZvbnRMaXN0LmNsZWFyKCk7CiAgICAgbV9mYW1pbHlJ
bmRleCA9IDA7CiAgICAgbV9waXRjaCA9IFVua25vd25QaXRjaDsKICAgICBtX2xvYWRpbmdDdXN0
b21Gb250cyA9IGZhbHNlOwpAQCAtNTMsNiArNTEsNyBAQCB2b2lkIEZvbnRGYWxsYmFja0xpc3Q6
OmludmFsaWRhdGUoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvbnRTZWxlY3Rvcj4gZm9udFNl
bAogCiB2b2lkIEZvbnRGYWxsYmFja0xpc3Q6OnJlbGVhc2VGb250RGF0YSgpCiB7CisgICAgV1RG
OjpkZWxldGVBbGxWYWx1ZXMobV9mb250TGlzdCk7CiB9CiAKIHZvaWQgRm9udEZhbGxiYWNrTGlz
dDo6ZGV0ZXJtaW5lUGl0Y2goY29uc3QgV2ViQ29yZTo6Rm9udCogZm9udCkgY29uc3QKQEAgLTkw
LDcgKzg5LDE1IEBAIGNvbnN0IEZvbnREYXRhKiBGb250RmFsbGJhY2tMaXN0Ojpmb250RGF0YUF0
KGNvbnN0IFdlYkNvcmU6OkZvbnQqIF9mb250LCB1bnNpZ25lCiAgICAgICAgIGZhbWlseSA9IGZh
bWlseS0+bmV4dCgpOwogICAgIH0KIAotICAgIHJldHVybiBuZXcgU2ltcGxlRm9udERhdGEoRm9u
dFBsYXRmb3JtRGF0YShkZXNjcmlwdGlvbiksIF9mb250LT53b3JkU3BhY2luZygpLCBfZm9udC0+
bGV0dGVyU3BhY2luZygpKTsKKyAgICBGb250RGF0YUNhY2hlS2V5IGtleShkZXNjcmlwdGlvbi5m
YW1pbHkoKS5mYW1pbHkoKSwgZGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgZGVzY3Jp
cHRpb24ud2VpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbi5pdGFs
aWMoKSwgZGVzY3JpcHRpb24udXNlUHJpbnRlckZvbnQoKSwgZGVzY3JpcHRpb24ucmVuZGVyaW5n
TW9kZSgpKTsKKyAgICBGb250RGF0YUNhY2hlOjppdGVyYXRvciBpdCA9IG1fZm9udExpc3QuZmlu
ZChrZXkpOworICAgIGlmIChpdCA9PSBtX2ZvbnRMaXN0LmVuZCgpKSB7CisgICAgICAgIGNvbnN0
IFNpbXBsZUZvbnREYXRhKiByZXN1bHQgPSBuZXcgU2ltcGxlRm9udERhdGEoRm9udFBsYXRmb3Jt
RGF0YShkZXNjcmlwdGlvbiksIF9mb250LT53b3JkU3BhY2luZygpLCBfZm9udC0+bGV0dGVyU3Bh
Y2luZygpKTsKKyAgICAgICAgbV9mb250TGlzdC5zZXQoa2V5LCByZXN1bHQpOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKIH0K
IAogY29uc3QgRm9udERhdGEqIEZvbnRGYWxsYmFja0xpc3Q6OmZvbnREYXRhRm9yQ2hhcmFjdGVy
cyhjb25zdCBXZWJDb3JlOjpGb250KiBmb250LCBjb25zdCBVQ2hhciosIGludCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29815</attachid>
            <date>2009-04-27 02:39:26 -0700</date>
            <delta_ts>2009-05-18 06:11:15 -0700</delta_ts>
            <desc>proposed patch - the simpler one</desc>
            <filename>leakfix.diff</filename>
            <type>text/plain</type>
            <size>4673</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
M2NjMTkzMC4uM2Q1M2U5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAwOS0wNC0yNyAgQmFsYXpzIEtlbGVt
ZW4gIDxrZWxlbWVuLmJhbGF6c0BzdHVkLnUtc3plZ2VkLmh1PgorCisgICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI0NTUxCisgICAgICAgICBbUXRdIGxlYWtzIGluIGZvbnQtaGFuZGxp
bmcKKworICAgICAgICAgQnJlYWsgd2l0aCBjcmVhdGluZyBuZXcgb2JqZWN0cyBmb3IgcmV0dXJu
IHZhbHVlCisgICAgICAgICBvZiBmdW5jdGlvbnMgaW4gdGhlIGNhc2Ugd2hlbiB0aGUgY2FsbGVy
IGRvZXMKKyAgICAgICAgIG5vdCBleHBlY3QgdGhhdCBvd25lcnNoaXAgaXMgcGFzc2VkLgorICAg
ICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yIHNvIG5vIHRlc3QuCisKKyAgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQuY3BwOgorICAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YSk6IFJldHVybiB3aXRoIDAKKyAgICAg
ICAgIGluc3RlYWQgb2YgcmV0dXJuaW5nIHdpdGggYSBuZXcgb2JqZWN0LiBUaGlzIGlzIGEgbG9n
aWNhbCBjaGFuZ2UKKyAgICAgICAgIGJlY2F1c2UgUXQgZG9lcyBub3QgaGF2ZSBhIHJlYWwgRm9u
dENhY2hlLgorICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250RmFsbGJhY2tMaXN0
UXQuY3BwOgorICAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWxsYmFja0xpc3Q6OmludmFsaWRhdGUp
OiBBdm9pZCBwdXJnZSBtX2ZvbnRMaXN0CisgICAgICAgICBiZWNhdXNlIGl0IGNhbiBiZSByZWZl
cmVuY2VkIGJ5IEZvbnQgb2JqZWN0cy4KKyAgICAgICAgIChXZWJDb3JlOjpGb250RmFsbGJhY2tM
aXN0OjpyZWxlYXNlRm9udERhdGEpOiBQdXJnZSBtX2ZvbnRMaXN0LgorICAgICAgICAgVGhpcyBp
cyBvbmx5IGNhbGxlZCBmcm9tIHRoZSBkZXN0cnVjdG9yLgorICAgICAgICAgKFdlYkNvcmU6OkZv
bnRGYWxsYmFja0xpc3Q6OmZvbnREYXRhQXQpOiBIb2xkIHRoZSBjcmVhdGVkCisgICAgICAgICBT
aW1wbGVGb250RGF0YSBpbiBtX2ZvbnRMaXN0IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgb25l
CisgICAgICAgICBvbiBldmVyeSBjYWxsLgorICAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwOgorICAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpnZXRGb250RGF0
YSk6IENyZWF0ZSBuZXcgRm9udFBsYXRmb3JtRGF0YQorICAgICAgICAgb2JqZWN0IGluc3RlYWQg
b2YgY2FsbCBGb250Q2FjaGUgZm9yIGl0IGluIHRoZSBjYXNlIG9mIFF0LgorCisKIDIwMDktMDQt
MjEgIEpvaG4gQWJkLUVsLU1hbGVrICA8amFtQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IDEx
MWNlYTIuLjRmOWMxMTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE3OSwxMCAr
MTc5LDE0IEBAIFNpbXBsZUZvbnREYXRhKiBDU1NGb250RmFjZVNvdXJjZTo6Z2V0Rm9udERhdGEo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpCiAgICAgICAgIGlmIChEb2NMb2FkZXIq
IGRvY0xvYWRlciA9IGZvbnRTZWxlY3Rvci0+ZG9jTG9hZGVyKCkpCiAgICAgICAgICAgICBtX2Zv
bnQtPmJlZ2luTG9hZElmTmVlZGVkKGRvY0xvYWRlcik7CiAgICAgICAgIC8vIEZJWE1FOiBtX3N0
cmluZyBpcyBhIFVSTCBzbyBpdCBtYWtlcyBubyBzZW5zZSB0byBwYXNzIGl0IGFzIGEgZmFtaWx5
IG5hbWUuCisjaWYgUExBVEZPUk0oUVQpCisgICAgICAgIGZvbnREYXRhLnNldChuZXcgU2ltcGxl
Rm9udERhdGEoRm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24pLCB0cnVlLCB0cnVlKSk7
CisjZWxzZQogICAgICAgICBGb250UGxhdGZvcm1EYXRhKiB0ZW1wRGF0YSA9IGZvbnRDYWNoZSgp
LT5nZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgbV9zdHJpbmcpOwog
ICAgICAgICBpZiAoIXRlbXBEYXRhKQogICAgICAgICAgICAgdGVtcERhdGEgPSBmb250Q2FjaGUo
KS0+Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChmb250RGVzY3JpcHRpb24pOwogICAgICAgICBm
b250RGF0YS5zZXQobmV3IFNpbXBsZUZvbnREYXRhKCp0ZW1wRGF0YSwgdHJ1ZSwgdHJ1ZSkpOwor
I2VuZGlmCiAgICAgfQogCiAgICAgbV9mb250RGF0YVRhYmxlLnNldChoYXNoS2V5LCBmb250RGF0
YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRD
YWNoZVF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQuY3Bw
CmluZGV4IDExNGYwNzMuLmNmNzI0YTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvRm9udENhY2hlUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvRm9udENhY2hlUXQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgRm9udENhY2hlOjpnZXRU
cmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUsIFZlY3Rvcjx1bnNp
Z25lCiAKIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udFBsYXRmb3Jt
RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJp
bmcmIGZhbWlseSwgYm9vbCBjaGVja2luZ0FsdGVybmF0ZU5hbWUpCiB7Ci0gICAgcmV0dXJuIG5l
dyBGb250UGxhdGZvcm1EYXRhKGRlc2NyaXB0aW9uKTsKKyAgICByZXR1cm4gMDsKIH0KIAogU2lt
cGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udERhdGEoY29uc3QgRm9udFBsYXRm
b3JtRGF0YSopCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRG
YWxsYmFja0xpc3RRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRGYWxs
YmFja0xpc3RRdC5jcHAKaW5kZXggMjJhZTIwNS4uZjM2NWRmNyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250RmFsbGJhY2tMaXN0UXQuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEZhbGxiYWNrTGlzdFF0LmNwcApAQCAtNDIsOCAr
NDIsNiBAQCBGb250RmFsbGJhY2tMaXN0OjpGb250RmFsbGJhY2tMaXN0KCkKIAogdm9pZCBGb250
RmFsbGJhY2tMaXN0OjppbnZhbGlkYXRlKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGb250U2Vs
ZWN0b3I+IGZvbnRTZWxlY3RvcikKIHsKLSAgICByZWxlYXNlRm9udERhdGEoKTsKLSAgICBtX2Zv
bnRMaXN0LmNsZWFyKCk7CiAgICAgbV9mYW1pbHlJbmRleCA9IDA7CiAgICAgbV9waXRjaCA9IFVu
a25vd25QaXRjaDsKICAgICBtX2xvYWRpbmdDdXN0b21Gb250cyA9IGZhbHNlOwpAQCAtNTMsNiAr
NTEsOCBAQCB2b2lkIEZvbnRGYWxsYmFja0xpc3Q6OmludmFsaWRhdGUoV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OkZvbnRTZWxlY3Rvcj4gZm9udFNlbAogCiB2b2lkIEZvbnRGYWxsYmFja0xpc3Q6
OnJlbGVhc2VGb250RGF0YSgpCiB7CisgICAgaWYgKG1fZm9udExpc3Quc2l6ZSgpKQorICAgICAg
ICBkZWxldGUgbV9mb250TGlzdFswXS5maXJzdDsKIH0KIAogdm9pZCBGb250RmFsbGJhY2tMaXN0
OjpkZXRlcm1pbmVQaXRjaChjb25zdCBXZWJDb3JlOjpGb250KiBmb250KSBjb25zdApAQCAtOTAs
NyArOTAsMTIgQEAgY29uc3QgRm9udERhdGEqIEZvbnRGYWxsYmFja0xpc3Q6OmZvbnREYXRhQXQo
Y29uc3QgV2ViQ29yZTo6Rm9udCogX2ZvbnQsIHVuc2lnbmUKICAgICAgICAgZmFtaWx5ID0gZmFt
aWx5LT5uZXh0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIG5ldyBTaW1wbGVGb250RGF0YShGb250
UGxhdGZvcm1EYXRhKGRlc2NyaXB0aW9uKSwgX2ZvbnQtPndvcmRTcGFjaW5nKCksIF9mb250LT5s
ZXR0ZXJTcGFjaW5nKCkpOworICAgIGlmICghbV9mb250TGlzdC5zaXplKCkpIHsKKyAgICAgICAg
Y29uc3QgRm9udERhdGEqIHJlc3VsdCA9IG5ldyBTaW1wbGVGb250RGF0YShGb250UGxhdGZvcm1E
YXRhKGRlc2NyaXB0aW9uKSwgX2ZvbnQtPndvcmRTcGFjaW5nKCksIF9mb250LT5sZXR0ZXJTcGFj
aW5nKCkpOworICAgICAgICBtX2ZvbnRMaXN0LmFwcGVuZChwYWlyPGNvbnN0IEZvbnREYXRhKiwg
Ym9vbD4ocmVzdWx0LCByZXN1bHQtPmlzQ3VzdG9tRm9udCgpKSk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBtX2ZvbnRMaXN0WzBdLmZpcnN0Owog
fQogCiBjb25zdCBGb250RGF0YSogRm9udEZhbGxiYWNrTGlzdDo6Zm9udERhdGFGb3JDaGFyYWN0
ZXJzKGNvbnN0IFdlYkNvcmU6OkZvbnQqIGZvbnQsIGNvbnN0IFVDaGFyKiwgaW50KSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29816</attachid>
            <date>2009-04-27 02:50:57 -0700</date>
            <delta_ts>2009-05-18 06:11:49 -0700</delta_ts>
            <desc>proposed patch - the caching one</desc>
            <filename>qtcache.diff</filename>
            <type>text/plain</type>
            <size>11378</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
M2NjMTkzMC4uZTgwMDIyZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAwOS0wNC0yNyAgQmFsYXpzIEtlbGVt
ZW4gIDxrZWxlbWVuLmJhbGF6cy4zQHN0dWQudS1zemVnZWQuaHU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI0NTUxCisgICAgICAgIFtRdF0gbGVha3MgaW4gZm9udC1oYW5kbGlu
ZworCisgICAgICAgIEJyZWFrIHdpdGggY3JlYXRpbmcgbmV3IG9iamVjdHMgZm9yIHJldHVybiB2
YWx1ZQorICAgICAgICBvZiBmdW5jdGlvbnMgaW4gdGhlIGNhc2Ugd2hlbiB0aGUgY2FsbGVyIGRv
ZXMKKyAgICAgICAgbm90IGV4cGVjdCB0aGF0IG93bmVyc2hpcCBpcyBwYXNzZWQuCisgICAgICAg
IE5vIGNoYW5nZSBpbiBiZWhhdmlvciBzbyBubyB0ZXN0LgorCisgICAgICAgICogY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpn
ZXRGb250RGF0YSk6IENyZWF0ZSBuZXcgRm9udFBsYXRmb3JtRGF0YQorICAgICAgICAgb2JqZWN0
IGluc3RlYWQgb2YgY2FsbCBGb250Q2FjaGUgZm9yIGl0IGluIHRoZSBjYXNlIG9mIFF0LgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYWxsYmFja0xpc3QuaDogVXNlIGhhc2htYXAg
KEZvbnREYXRhQ2FjaGUsIGRlZmluZWQgaW4gRm9udEZhbGxiYWNrQ2FjaGVRdC5oKQorICAgICAg
ICBhcyBtX2ZvbnRMaXN0IGluc3RlYWQgb2YgdmVjdG9yIGluIHRoZSBjYXNlIG9mIFF0LgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDYWNoZVF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YSk6IFJldHVybiB3aXRo
IDAKKyAgICAgICAgaW5zdGVhZCBvZiByZXR1cm5pbmcgd2l0aCBhIG5ldyBvYmplY3QuIFRoaXMg
aXMgYSBsb2dpY2FsIGNoYW5nZQorICAgICAgICBiZWNhdXNlIFF0IGRvZXMgbm90IGhhdmUgYSBy
ZWFsIEZvbnRDYWNoZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250RmFsbGJh
Y2tDYWNoZVF0Lmg6IEFkZGVkLiBNYXBwaW5nIGJldHdlZW4gRm9udERlc2NyaXB0aW9uIGFuZCBT
aW1wbGVGb250RGF0YS4KKyAgICAgICAgSXQgaXMgbmVjY2Vzc2FyeSBmb3IgYmVpbmcgYWJsZSB0
byBmcmVlIFNpbXBsZUZvbnREYXRhIG9iamVjdHMgd2hhdCB3ZSBjcmVhdGUgaW4gRm9udEZhbGxi
YWNrTGlzdDo6Zm9udERhdGFBdAorICAgICAgICBsYXRlciAoZnJvbSB0aGUgZGVzdHJ1Y3Rvciku
IExvZ2ljIGhhZCB0YWtlbiBmcm9tIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAuCisg
ICAgICAgIChXZWJDb3JlOjpGb250RGF0YUNhY2hlS2V5OjpGb250RGF0YUNhY2hlS2V5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnREYXRhQ2FjaGVLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREYXRhQ2FjaGVLZXk6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udERhdGFDYWNoZUtleTo6aGFzaFRhYmxlRGVsZXRlZFNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERh
dGFDYWNoZUtleUhhc2g6Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERhdGFDYWNoZUtl
eUhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREYXRhQ2FjaGVLZXlUcmFpdHM6
OmVtcHR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERhdGFDYWNoZUtleVRyYWl0czo6
Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREYXRhQ2FjaGVL
ZXlUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9x
dC9Gb250RmFsbGJhY2tMaXN0UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbGxiYWNr
TGlzdDo6aW52YWxpZGF0ZSk6ICBBdm9pZCBwdXJnZSBtX2ZvbnRMaXN0IGJ5IHJlbGVhc2VGb250
RGF0YQorICAgICAgICBiZWNhdXNlIG9iamVjdHMgd2hhdCBpdCBoYXMgY2FuIGJlIHJlZmVycmVk
IGJ5IEZvbnQgb2JqZWN0cy4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWxsYmFja0xpc3Q6OnJl
bGVhc2VGb250RGF0YSk6IFB1cmdlIG1fZm9udExpc3QuIENhbGxlZCBmcm9tIHRoZSBkZXN0cnVj
dG9yLgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbGxiYWNrTGlzdDo6Zm9udERhdGFBdCk6IFVz
ZSB0aGUgaGFzaG1hcCB0byBob2xkIHRoZSBjcmVhdGVkIFNpbXBsZUZvbnREYXRhLgorCiAyMDA5
LTA0LTIxICBKb2huIEFiZC1FbC1NYWxlayAgPGphbUBnb29nbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcCBiL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRl
eCAxMTFjZWEyLi40ZjljMTE2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNzks
MTAgKzE3OSwxNCBAQCBTaW1wbGVGb250RGF0YSogQ1NTRm9udEZhY2VTb3VyY2U6OmdldEZvbnRE
YXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaQogICAgICAgICBpZiAoRG9jTG9h
ZGVyKiBkb2NMb2FkZXIgPSBmb250U2VsZWN0b3ItPmRvY0xvYWRlcigpKQogICAgICAgICAgICAg
bV9mb250LT5iZWdpbkxvYWRJZk5lZWRlZChkb2NMb2FkZXIpOwogICAgICAgICAvLyBGSVhNRTog
bV9zdHJpbmcgaXMgYSBVUkwgc28gaXQgbWFrZXMgbm8gc2Vuc2UgdG8gcGFzcyBpdCBhcyBhIGZh
bWlseSBuYW1lLgorI2lmIFBMQVRGT1JNKFFUKQorICAgICAgICBmb250RGF0YS5zZXQobmV3IFNp
bXBsZUZvbnREYXRhKEZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uKSwgdHJ1ZSwgdHJ1
ZSkpOworI2Vsc2UKICAgICAgICAgRm9udFBsYXRmb3JtRGF0YSogdGVtcERhdGEgPSBmb250Q2Fj
aGUoKS0+Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIG1fc3RyaW5n
KTsKICAgICAgICAgaWYgKCF0ZW1wRGF0YSkKICAgICAgICAgICAgIHRlbXBEYXRhID0gZm9udENh
Y2hlKCktPmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoZm9udERlc2NyaXB0aW9uKTsKICAgICAg
ICAgZm9udERhdGEuc2V0KG5ldyBTaW1wbGVGb250RGF0YSgqdGVtcERhdGEsIHRydWUsIHRydWUp
KTsKKyNlbmRpZgogICAgIH0KIAogICAgIG1fZm9udERhdGFUYWJsZS5zZXQoaGFzaEtleSwgZm9u
dERhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
RmFsbGJhY2tMaXN0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYWxsYmFja0xp
c3QuaAppbmRleCBhMjNiMzJjLi5lYWExNzRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRGYWxsYmFja0xpc3QuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRGYWxsYmFja0xpc3QuaApAQCAtMjgsNiArMjgsMTAgQEAKICNpbmNsdWRlICJTaW1w
bGVGb250RGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKKyNpZiBQTEFURk9STShR
VCkKKyNpbmNsdWRlICJxdC9Gb250RmFsbGJhY2tDYWNoZVF0LmgiCisjZW5kaWYKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250OwpAQCAtNjUsNyArNjksMTIgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgcmVsZWFzZUZvbnREYXRhKCk7CiAKKyNpZiBQTEFURk9STShRVCkKKyAgICBt
dXRhYmxlIEZvbnREYXRhQ2FjaGUgbV9mb250TGlzdDsKKyNlbHNlCiAgICAgbXV0YWJsZSBWZWN0
b3I8cGFpcjxjb25zdCBGb250RGF0YSosIGJvb2w+LCAxPiBtX2ZvbnRMaXN0OworI2VuZGlmCisK
ICAgICBtdXRhYmxlIGludCBtX2ZhbWlseUluZGV4OwogICAgIG11dGFibGUgUGl0Y2ggbV9waXRj
aDsKICAgICBtdXRhYmxlIGJvb2wgbV9sb2FkaW5nQ3VzdG9tRm9udHM7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDYWNoZVF0LmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQuY3BwCmluZGV4IDExNGYwNzMuLmNmNzI0YTcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIHZvaWQgRm9udENhY2hlOjpnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9t
aWNTdHJpbmcmIGZhbWlseU5hbWUsIFZlY3Rvcjx1bnNpZ25lCiAKIEZvbnRQbGF0Zm9ybURhdGEq
IEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRp
b24mIGRlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgYm9vbCBjaGVja2lu
Z0FsdGVybmF0ZU5hbWUpCiB7Ci0gICAgcmV0dXJuIG5ldyBGb250UGxhdGZvcm1EYXRhKGRlc2Ny
aXB0aW9uKTsKKyAgICByZXR1cm4gMDsKIH0KIAogU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6
Z2V0Q2FjaGVkRm9udERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSopCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRGYWxsYmFja0NhY2hlUXQuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEZhbGxiYWNrQ2FjaGVRdC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwMWU5NWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRGYWxsYmFja0NhY2hlUXQuaApAQCAtMCwwICsx
LDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBVbml2ZXJzaXR5IG9mIFN6ZWdlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFVOSVZFUlNJVFkgT0YgU1pFR0VEIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTFIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGb250RmFsbGJhY2tDYWNoZVF0X2gKKyNkZWZpbmUg
Rm9udEZhbGxiYWNrQ2FjaGVRdF9oCisKKyNpbmNsdWRlIDxBdG9taWNTdHJpbmcuaD4KKyNpbmNs
dWRlIDxTdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworICAgIHN0cnVjdCBGb250RGF0YUNhY2hlS2V5IHsKKyAgICAgICAg
Rm9udERhdGFDYWNoZUtleShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSA9IEF0b21pY1N0cmlu
ZygpLCB1bnNpZ25lZCBzaXplID0gMCwgdW5zaWduZWQgd2VpZ2h0ID0gMCwgYm9vbCBpdGFsaWMg
PSBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNQcmludGVyRm9udCA9IGZh
bHNlLCBGb250UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlID0gTm9ybWFsUmVuZGVyaW5nTW9k
ZSkKKyAgICAgICAgICAgIDogbV9mYW1pbHkoZmFtaWx5KQorICAgICAgICAgICAgLCBtX3NpemUo
c2l6ZSkKKyAgICAgICAgICAgICwgbV93ZWlnaHQod2VpZ2h0KQorICAgICAgICAgICAgLCBtX2l0
YWxpYyhpdGFsaWMpCisgICAgICAgICAgICAsIG1fcHJpbnRlckZvbnQoaXNQcmludGVyRm9udCkK
KyAgICAgICAgICAgICwgbV9yZW5kZXJpbmdNb2RlKHJlbmRlcmluZ01vZGUpCisgICAgICAgIHsK
KyAgICAgICAgfQorCisgICAgICAgIEZvbnREYXRhQ2FjaGVLZXkoV1RGOjpIYXNoVGFibGVEZWxl
dGVkVmFsdWVUeXBlKSA6IG1fc2l6ZShoYXNoVGFibGVEZWxldGVkU2l6ZSgpKSB7IH0KKyAgICAg
ICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZSA9
PSBoYXNoVGFibGVEZWxldGVkU2l6ZSgpOyB9CisKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEZvbnREYXRhQ2FjaGVLZXkmIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UobV9mYW1pbHksIG90aGVyLm1fZmFtaWx5KSAmJiBt
X3NpemUgPT0gb3RoZXIubV9zaXplICYmCisgICAgICAgICAgICAgICAgbV93ZWlnaHQgPT0gb3Ro
ZXIubV93ZWlnaHQgJiYgbV9pdGFsaWMgPT0gb3RoZXIubV9pdGFsaWMgJiYgbV9wcmludGVyRm9u
dCA9PSBvdGhlci5tX3ByaW50ZXJGb250ICYmCisgICAgICAgICAgICAgICAgbV9yZW5kZXJpbmdN
b2RlID09IG90aGVyLm1fcmVuZGVyaW5nTW9kZTsKKyAgICAgICAgfQorCisgICAgICAgIEF0b21p
Y1N0cmluZyBtX2ZhbWlseTsKKyAgICAgICAgdW5zaWduZWQgbV9zaXplOworICAgICAgICB1bnNp
Z25lZCBtX3dlaWdodDsKKyAgICAgICAgYm9vbCBtX2l0YWxpYzsKKyAgICAgICAgYm9vbCBtX3By
aW50ZXJGb250OworICAgICAgICBGb250UmVuZGVyaW5nTW9kZSBtX3JlbmRlcmluZ01vZGU7CisK
KyAgICBwcml2YXRlOgorICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaFRhYmxlRGVsZXRlZFNp
emUoKSB7IHJldHVybiAweEZGRkZGRkZGVTsgfQorICAgIH07CisKKyAgICBpbmxpbmUgdW5zaWdu
ZWQgY29tcHV0ZUhhc2goY29uc3QgRm9udERhdGFDYWNoZUtleSYgZm9udEtleSkKKyAgICB7Cisg
ICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rlc1s0XSA9IHsKKyAgICAgICAgICAgIENhc2VGb2xkaW5n
SGFzaDo6aGFzaChmb250S2V5Lm1fZmFtaWx5KSwKKyAgICAgICAgICAgIGZvbnRLZXkubV9zaXpl
LAorICAgICAgICAgICAgZm9udEtleS5tX3dlaWdodCwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihmb250S2V5Lm1faXRhbGljKSA8PCAyIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGZvbnRLZXkubV9wcmludGVyRm9udCkgPDwgMSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihmb250
S2V5Lm1fcmVuZGVyaW5nTW9kZSkKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIFN0cmluZ0lt
cGw6OmNvbXB1dGVIYXNoKHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihoYXNoQ29kZXMpLCBzaXpl
b2YoaGFzaENvZGVzKSAvIHNpemVvZihVQ2hhcikpOworICAgIH0KKworICAgIHN0cnVjdCBGb250
RGF0YUNhY2hlS2V5SGFzaCB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEZv
bnREYXRhQ2FjaGVLZXkmIGZvbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBjb21w
dXRlSGFzaChmb250KTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNv
bnN0IEZvbnREYXRhQ2FjaGVLZXkmIGEsIGNvbnN0IEZvbnREYXRhQ2FjaGVLZXkmIGIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhID09IGI7CisgICAgICAgIH0KKworICAgICAgICBz
dGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cisg
ICAgfTsKKworICAgIHN0cnVjdCBGb250RGF0YUNhY2hlS2V5VHJhaXRzIDogV1RGOjpHZW5lcmlj
SGFzaFRyYWl0czxGb250RGF0YUNhY2hlS2V5PiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBib29s
IGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOworICAgICAgICBzdGF0aWMgY29uc3QgRm9udERhdGFD
YWNoZUtleSYgZW1wdHlWYWx1ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIERFRklORV9TVEFU
SUNfTE9DQUwoRm9udERhdGFDYWNoZUtleSwga2V5LCAobnVsbEF0b20pKTsKKyAgICAgICAgICAg
IHJldHVybiBrZXk7CisgICAgICAgIH0KKyAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVs
ZXRlZFZhbHVlKEZvbnREYXRhQ2FjaGVLZXkmIHNsb3QpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG5ldyAoJnNsb3QpIEZvbnREYXRhQ2FjaGVLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
OworICAgICAgICB9CisgICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IEZv
bnREYXRhQ2FjaGVLZXkmIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdmFs
dWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB0
eXBlZGVmIEhhc2hNYXA8Rm9udERhdGFDYWNoZUtleSwgY29uc3QgU2ltcGxlRm9udERhdGEqLCBG
b250RGF0YUNhY2hlS2V5SGFzaCwgRm9udERhdGFDYWNoZUtleVRyYWl0cz4gRm9udERhdGFDYWNo
ZTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvRm9udEZhbGxiYWNrTGlzdFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
Rm9udEZhbGxiYWNrTGlzdFF0LmNwcAppbmRleCAyMmFlMjA1Li5mNTg5YTQ1IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRGYWxsYmFja0xpc3RRdC5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250RmFsbGJhY2tMaXN0UXQuY3BwCkBA
IC00Miw4ICs0Miw2IEBAIEZvbnRGYWxsYmFja0xpc3Q6OkZvbnRGYWxsYmFja0xpc3QoKQogCiB2
b2lkIEZvbnRGYWxsYmFja0xpc3Q6OmludmFsaWRhdGUoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6
OkZvbnRTZWxlY3Rvcj4gZm9udFNlbGVjdG9yKQogewotICAgIHJlbGVhc2VGb250RGF0YSgpOwot
ICAgIG1fZm9udExpc3QuY2xlYXIoKTsKICAgICBtX2ZhbWlseUluZGV4ID0gMDsKICAgICBtX3Bp
dGNoID0gVW5rbm93blBpdGNoOwogICAgIG1fbG9hZGluZ0N1c3RvbUZvbnRzID0gZmFsc2U7CkBA
IC01Myw2ICs1MSw3IEBAIHZvaWQgRm9udEZhbGxiYWNrTGlzdDo6aW52YWxpZGF0ZShXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6Rm9udFNlbGVjdG9yPiBmb250U2VsCiAKIHZvaWQgRm9udEZhbGxi
YWNrTGlzdDo6cmVsZWFzZUZvbnREYXRhKCkKIHsKKyAgICBXVEY6OmRlbGV0ZUFsbFZhbHVlcyht
X2ZvbnRMaXN0KTsKIH0KIAogdm9pZCBGb250RmFsbGJhY2tMaXN0OjpkZXRlcm1pbmVQaXRjaChj
b25zdCBXZWJDb3JlOjpGb250KiBmb250KSBjb25zdApAQCAtOTAsNyArODksMTUgQEAgY29uc3Qg
Rm9udERhdGEqIEZvbnRGYWxsYmFja0xpc3Q6OmZvbnREYXRhQXQoY29uc3QgV2ViQ29yZTo6Rm9u
dCogX2ZvbnQsIHVuc2lnbmUKICAgICAgICAgZmFtaWx5ID0gZmFtaWx5LT5uZXh0KCk7CiAgICAg
fQogCi0gICAgcmV0dXJuIG5ldyBTaW1wbGVGb250RGF0YShGb250UGxhdGZvcm1EYXRhKGRlc2Ny
aXB0aW9uKSwgX2ZvbnQtPndvcmRTcGFjaW5nKCksIF9mb250LT5sZXR0ZXJTcGFjaW5nKCkpOwor
ICAgIEZvbnREYXRhQ2FjaGVLZXkga2V5KGRlc2NyaXB0aW9uLmZhbWlseSgpLmZhbWlseSgpLCBk
ZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBkZXNjcmlwdGlvbi53ZWlnaHQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLml0YWxpYygpLCBkZXNjcmlwdGlvbi51
c2VQcmludGVyRm9udCgpLCBkZXNjcmlwdGlvbi5yZW5kZXJpbmdNb2RlKCkpOworICAgIEZvbnRE
YXRhQ2FjaGU6Oml0ZXJhdG9yIGl0ID0gbV9mb250TGlzdC5maW5kKGtleSk7CisgICAgaWYgKGl0
ID09IG1fZm9udExpc3QuZW5kKCkpIHsKKyAgICAgICAgY29uc3QgU2ltcGxlRm9udERhdGEqIHJl
c3VsdCA9IG5ldyBTaW1wbGVGb250RGF0YShGb250UGxhdGZvcm1EYXRhKGRlc2NyaXB0aW9uKSwg
X2ZvbnQtPndvcmRTcGFjaW5nKCksIF9mb250LT5sZXR0ZXJTcGFjaW5nKCkpOworICAgICAgICBt
X2ZvbnRMaXN0LnNldChrZXksIHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fSBlbHNlCisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwogfQogCiBjb25zdCBGb250RGF0YSog
Rm9udEZhbGxiYWNrTGlzdDo6Zm9udERhdGFGb3JDaGFyYWN0ZXJzKGNvbnN0IFdlYkNvcmU6OkZv
bnQqIGZvbnQsIGNvbnN0IFVDaGFyKiwgaW50KSBjb25zdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>