<?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>22861</bug_id>
          
          <creation_ts>2008-12-14 18:52:22 -0800</creation_ts>
          <short_desc>Turn the FontCache into a singleton</short_desc>
          <delta_ts>2009-01-12 02:52:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mario.bensi</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>102531</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-12-14 18:52:22 -0800</bug_when>
    <thetext>As discussed on the mailing list, this is part of the initial clean-up for the fontcache.

Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102532</commentid>
    <comment_count>1</comment_count>
      <attachid>26020</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-12-14 18:58:34 -0800</bug_when>
    <thetext>Created attachment 26020
Proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102596</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-12-15 14:00:19 -0800</bug_when>
    <thetext>Why is it a good idea to turn the FontCache into a singleton?  What does this get us?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102646</commentid>
    <comment_count>3</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-12-16 02:09:18 -0800</bug_when>
    <thetext>
(In reply to comment #2)
&gt; Why is it a good idea to turn the FontCache into a singleton?  What does this
&gt; get us?
&gt; 

First it makes FontCache coherent with the rest of WebCore: I have not found another class that only bears static methods inside WebCore. IMHO it is also particularly relevant to make this class close to the Cache.
Then it makes it cristal clear that we are using a singleton: static methods + static HashMaps / HashList inside the .cpp sounds like a hidden singleton.
Finally when you start hacking the FontCache as it is now, you have to find the different definitions mixed with the code in FontCache.cpp. Making it a real class is a first step into moving those definitons in their own files and move the static HashMaps / HashList in the header.

So to answer the benefits: right now, it adds a little overhead to the compiled code. But within a few changes, we should have a more readable code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102696</commentid>
    <comment_count>4</comment_count>
      <attachid>26065</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-12-16 13:17:08 -0800</bug_when>
    <thetext>Created attachment 26065
Same as the first version, with corrected ChangeLogs

I had forgotten to update the ChangeLog in the WebKit directory, so attached is an updated version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104117</commentid>
    <comment_count>5</comment_count>
      <attachid>26065</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-02 10:56:14 -0800</bug_when>
    <thetext>Comment on attachment 26065
Same as the first version, with corrected ChangeLogs

I&apos;m not entirely convinced this is an improvement, but it seems OK. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105319</commentid>
    <comment_count>6</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2009-01-12 02:52:18 -0800</bug_when>
    <thetext>Landed patch in r39823.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26020</attachid>
            <date>2008-12-14 18:58:34 -0800</date>
            <delta_ts>2008-12-16 13:17:08 -0800</delta_ts>
            <desc>Proposed fix</desc>
            <filename>FontCacheSingleton.diff</filename>
            <type>text/plain</type>
            <size>20140</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTI5NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMDgtMTItMTQgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4
QHBsZXlvLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBCdWcgMjI4NjE6IFR1cm4gdGhlIEZvbnRDYWNoZSBpbnRvIGEgc2luZ2xldG9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2MQorCisgICAg
ICAgIC0gQWRkZWQgZm9udENhY2hlKCkgdG8gZ2V0IHRoZSBnbG9iYWwgRm9udENhY2hlLgorCisg
ICAgICAgIC0gTWFkZSBhbGwgdGhlIG1ldGhvZHMgaW4gRm9udENhY2hlIGluc3RhbmNlIG1ldGhv
ZC4KKworICAgICAgICAtIENoYW5nZWQgRm9udENhY2hlOjogdG8gZm9udENhY2hlKCktPiBpbiBX
ZWJDb3JlLgorCisgICAgICAgICogV2ViQ29yZS5iYXNlLmV4cDogTm93IGV4cG9ydCBmb250Q2Fj
aGUoKS4KKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmdldEZvbnREYXRhKToKKyAgICAgICAgKiBjc3MvQ1NT
Rm9udFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Q1NT
Rm9udFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6fkNTU0Zv
bnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRG
YWNlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpmb250RGF0YUZvckdlbmVyaWNGYW1pbHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udDo6Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9udENhY2hlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRDYWNoZTo6Rm9udENhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFsbGJh
Y2tMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWxsYmFja0xpc3Q6OkZvbnRGYWxs
YmFja0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbGxiYWNrTGlzdDo6aW52YWxpZGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFsbGJhY2tMaXN0OjpyZWxlYXNlRm9udERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbGxiYWNrTGlzdDo6Zm9udERhdGFBdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250RmFsbGJhY2tMaXN0Ojpmb250RGF0YUZvckNoYXJhY3RlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbGxiYWNrTGlzdDo6c2V0UGxhdGZvcm1Gb250KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6flNpbXBsZUZvbnREYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Zm9u
dENhY2hlQVRTTm90aWZpY2F0aW9uQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZv
bnREYXRhOjpzbWFsbENhcHNGb250RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDYWNoZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDSktDb2RlUGFnZU1h
c2tzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OmNvbnRhaW5zQ2hhcmFjdGVy
cyk6CisKIDIwMDgtMTItMTMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuYmFzZS5l
eHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCShyZXZpc2lvbiAzOTI5
NikKKysrIFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtNjE3LDYg
KzYxNyw3IEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczQxc2V0TmVlZHNLZXlib2FyZEUKIF9fWk43
V2ViQ29yZThibGFua1VSTEV2CiBfX1pON1dlYkNvcmU4cGFyc2VVUkxFUktOU182U3RyaW5nRQog
X19aTjdXZWJDb3JlOUZsb2F0UmVjdEMxRVJLN19OU1JlY3QKK19fWk43V2ViQ29yZTlmb250Q2Fj
aGVFdgogX19aTjdXZWJDb3JlOUZvbnRDYWNoZTEzZm9udERhdGFDb3VudEV2CiBfX1pON1dlYkNv
cmU5Rm9udENhY2hlMjFpbmFjdGl2ZUZvbnREYXRhQ291bnRFdgogX19aTjdXZWJDb3JlOUZvbnRD
YWNoZTIxcHVyZ2VJbmFjdGl2ZUZvbnREYXRhRWkKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJj
ZS5jcHAJKHJldmlzaW9uIDM5Mjk2KQorKysgV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsOCArMTA3LDggQEAgU2ltcGxlRm9udERhdGEqIENT
U0ZvbnRGYWNlU291cmNlOjpnZXRGbwogI2Vsc2UKICAgICBpZiAoIW1fZm9udCkgewogI2VuZGlm
Ci0gICAgICAgIEZvbnRQbGF0Zm9ybURhdGEqIGRhdGEgPSBGb250Q2FjaGU6OmdldENhY2hlZEZv
bnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBtX3N0cmluZyk7Ci0gICAgICAgIFNpbXBs
ZUZvbnREYXRhKiBmb250RGF0YSA9IEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udERhdGEoZGF0YSk7
CisgICAgICAgIEZvbnRQbGF0Zm9ybURhdGEqIGRhdGEgPSBmb250Q2FjaGUoKS0+Z2V0Q2FjaGVk
Rm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIG1fc3RyaW5nKTsKKyAgICAgICAgU2lt
cGxlRm9udERhdGEqIGZvbnREYXRhID0gZm9udENhY2hlKCktPmdldENhY2hlZEZvbnREYXRhKGRh
dGEpOwogCiAgICAgICAgIC8vIFdlJ3JlIGxvY2FsLiBKdXN0IHJldHVybiBhIFNpbXBsZUZvbnRE
YXRhIGZyb20gdGhlIG5vcm1hbCBjYWNoZS4KICAgICAgICAgcmV0dXJuIGZvbnREYXRhOwpAQCAt
MTc5LDkgKzE3OSw5IEBAIFNpbXBsZUZvbnREYXRhKiBDU1NGb250RmFjZVNvdXJjZTo6Z2V0Rm8K
ICAgICAgICAgaWYgKERvY0xvYWRlciogZG9jTG9hZGVyID0gZm9udFNlbGVjdG9yLT5kb2NMb2Fk
ZXIoKSkKICAgICAgICAgICAgIG1fZm9udC0+YmVnaW5Mb2FkSWZOZWVkZWQoZG9jTG9hZGVyKTsK
ICAgICAgICAgLy8gRklYTUU6IG1fc3RyaW5nIGlzIGEgVVJMIHNvIGl0IG1ha2VzIG5vIHNlbnNl
IHRvIHBhc3MgaXQgYXMgYSBmYW1pbHkgbmFtZS4KLSAgICAgICAgRm9udFBsYXRmb3JtRGF0YSog
dGVtcERhdGEgPSBGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2Ny
aXB0aW9uLCBtX3N0cmluZyk7CisgICAgICAgIEZvbnRQbGF0Zm9ybURhdGEqIHRlbXBEYXRhID0g
Zm9udENhY2hlKCktPmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBt
X3N0cmluZyk7CiAgICAgICAgIGlmICghdGVtcERhdGEpCi0gICAgICAgICAgICB0ZW1wRGF0YSA9
IEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChmb250RGVzY3JpcHRpb24pOwor
ICAgICAgICAgICAgdGVtcERhdGEgPSBmb250Q2FjaGUoKS0+Z2V0TGFzdFJlc29ydEZhbGxiYWNr
Rm9udChmb250RGVzY3JpcHRpb24pOwogICAgICAgICBmb250RGF0YS5zZXQobmV3IFNpbXBsZUZv
bnREYXRhKCp0ZW1wRGF0YSwgdHJ1ZSwgdHJ1ZSkpOwogICAgIH0KIApJbmRleDogV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuY3BwCShyZXZpc2lvbiAzOTI5NikKKysrIFdlYkNvcmUvY3NzL0NTU0ZvbnRTZWxl
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDEyICs2NSwxMiBAQCBDU1NGb250U2VsZWN0
b3I6OkNTU0ZvbnRTZWxlY3RvcihEb2N1bWVuCiAgICAgLy8gc2VlbSB0byBiZSBhbnkgc3VjaCBn
dWFyYW50ZWUuCiAKICAgICBBU1NFUlQobV9kb2N1bWVudCk7Ci0gICAgRm9udENhY2hlOjphZGRD
bGllbnQodGhpcyk7CisgICAgZm9udENhY2hlKCktPmFkZENsaWVudCh0aGlzKTsKIH0KIAogQ1NT
Rm9udFNlbGVjdG9yOjp+Q1NTRm9udFNlbGVjdG9yKCkKIHsKLSAgICBGb250Q2FjaGU6OnJlbW92
ZUNsaWVudCh0aGlzKTsKKyAgICBmb250Q2FjaGUoKS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAg
IGRlbGV0ZUFsbFZhbHVlcyhtX2ZvbnRGYWNlcyk7CiAgICAgZGVsZXRlQWxsVmFsdWVzKG1fbG9j
YWxseUluc3RhbGxlZEZvbnRGYWNlcyk7CiAgICAgZGVsZXRlQWxsVmFsdWVzKG1fZm9udHMpOwpA
QCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUo
Y28KICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8Q1NTRm9udEZhY2U+ID4qIGZhbWlseUxvY2Fs
bHlJbnN0YWxsZWRGYWNlczsKIAogICAgICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBsb2NhbGx5
SW5zdGFsbGVkRm9udHNUcmFpdHNNYXNrczsKLSAgICAgICAgICAgIEZvbnRDYWNoZTo6Z2V0VHJh
aXRzSW5GYW1pbHkoZmFtaWx5TmFtZSwgbG9jYWxseUluc3RhbGxlZEZvbnRzVHJhaXRzTWFza3Mp
OworICAgICAgICAgICAgZm9udENhY2hlKCktPmdldFRyYWl0c0luRmFtaWx5KGZhbWlseU5hbWUs
IGxvY2FsbHlJbnN0YWxsZWRGb250c1RyYWl0c01hc2tzKTsKICAgICAgICAgICAgIHVuc2lnbmVk
IG51bUxvY2FsbHlJbnN0YWxsZWRGYWNlcyA9IGxvY2FsbHlJbnN0YWxsZWRGb250c1RyYWl0c01h
c2tzLnNpemUoKTsKICAgICAgICAgICAgIGlmIChudW1Mb2NhbGx5SW5zdGFsbGVkRmFjZXMpIHsK
ICAgICAgICAgICAgICAgICBmYW1pbHlMb2NhbGx5SW5zdGFsbGVkRmFjZXMgPSBuZXcgVmVjdG9y
PFJlZlB0cjxDU1NGb250RmFjZT4gPjsKQEAgLTM5Nyw3ICszOTcsNyBAQCBzdGF0aWMgRm9udERh
dGEqIGZvbnREYXRhRm9yR2VuZXJpY0ZhbWlsCiAgICAgICAgIGdlbmVyaWNGYW1pbHkgPSBzZXR0
aW5ncy0+c3RhbmRhcmRGb250RmFtaWx5KCk7CiAKICAgICBpZiAoIWdlbmVyaWNGYW1pbHkuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gRm9udENhY2hlOjpnZXRDYWNoZWRGb250RGF0YShGb250
Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBnZW5lcmlj
RmFtaWx5KSk7CisgICAgICAgIHJldHVybiBmb250Q2FjaGUoKS0+Z2V0Q2FjaGVkRm9udERhdGEo
Zm9udENhY2hlKCktPmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBn
ZW5lcmljRmFtaWx5KSk7CiAKICAgICByZXR1cm4gMDsKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcAkocmV2aXNpb24gMzkyOTYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRl
ICJDaGFyYWN0ZXJOYW1lcy5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkZv
bnRDYWNoZS5oIgogI2luY2x1ZGUgIkZvbnRGYWxsYmFja0xpc3QuaCIKICNpbmNsdWRlICJJbnRQ
b2ludC5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuY3BwCShyZXZpc2lvbiAzOTI5NikKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsMTYg
QEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitGb250Q2Fj
aGUqIGZvbnRDYWNoZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChGb250Q2FjaGUsIGds
b2JhbEZvbnRDYWNoZSwgKCkpOworICAgIHJldHVybiAmZ2xvYmFsRm9udENhY2hlOworfQorCitG
b250Q2FjaGU6OkZvbnRDYWNoZSgpCit7Cit9CisKIHN0cnVjdCBGb250UGxhdGZvcm1EYXRhQ2Fj
aGVLZXkgewogICAgIEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleShjb25zdCBBdG9taWNTdHJpbmcm
IGZhbWlseSA9IEF0b21pY1N0cmluZygpLCB1bnNpZ25lZCBzaXplID0gMCwgdW5zaWduZWQgd2Vp
Z2h0ID0gMCwgYm9vbCBpdGFsaWMgPSBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc1ByaW50ZXJGb250ID0gZmFsc2UsIEZvbnRSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUgPSBOb3JtYWxSZW5kZXJpbmdNb2RlKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5oCShyZXZpc2lvbiAzOTI5NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDQ1ICs1MSw1MSBAQCBjbGFzcyBT
aW1wbGVGb250RGF0YTsKIAogY2xhc3MgRm9udENhY2hlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
Y29uc3QgRm9udERhdGEqIGdldEZvbnREYXRhKGNvbnN0IEZvbnQmLCBpbnQmIGZhbWlseUluZGV4
LCBGb250U2VsZWN0b3IqKTsKLSAgICBzdGF0aWMgdm9pZCByZWxlYXNlRm9udERhdGEoY29uc3Qg
U2ltcGxlRm9udERhdGEqKTsKKyAgICBmcmllbmQgRm9udENhY2hlKiBmb250Q2FjaGUoKTsKKwor
ICAgIGNvbnN0IEZvbnREYXRhKiBnZXRGb250RGF0YShjb25zdCBGb250JiwgaW50JiBmYW1pbHlJ
bmRleCwgRm9udFNlbGVjdG9yKik7CisgICAgdm9pZCByZWxlYXNlRm9udERhdGEoY29uc3QgU2lt
cGxlRm9udERhdGEqKTsKICAgICAKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBpbXBsZW1lbnRlZCBi
eSB0aGUgcGxhdGZvcm0uCiAgICAgLy8gRklYTUU6IEZvbnQgZGF0YSByZXR1cm5lZCBieSB0aGlz
IG1ldGhvZCBuZXZlciBnbyBpbmFjdGl2ZSBiZWNhdXNlIGNhbGxlcnMgZG9uJ3QgdHJhY2sgYW5k
IHJlbGVhc2UgdGhlbS4KLSAgICBzdGF0aWMgY29uc3QgU2ltcGxlRm9udERhdGEqIGdldEZvbnRE
YXRhRm9yQ2hhcmFjdGVycyhjb25zdCBGb250JiwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGlu
dCBsZW5ndGgpOworICAgIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBnZXRGb250RGF0YUZvckNoYXJh
Y3RlcnMoY29uc3QgRm9udCYsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoKTsK
ICAgICAKICAgICAvLyBBbHNvIGltcGxlbWVudGVkIGJ5IHRoZSBwbGF0Zm9ybS4KLSAgICBzdGF0
aWMgdm9pZCBwbGF0Zm9ybUluaXQoKTsKKyAgICB2b2lkIHBsYXRmb3JtSW5pdCgpOwogCiAjaWYg
UExBVEZPUk0oV0lOKQotICAgIHN0YXRpYyBJTUxhbmdGb250TGluazIqIGdldEZvbnRMaW5rSW50
ZXJmYWNlKCk7CisgICAgSU1MYW5nRm9udExpbmsyKiBnZXRGb250TGlua0ludGVyZmFjZSgpOwog
I2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCBnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNT
dHJpbmcmLCBWZWN0b3I8dW5zaWduZWQ+Jik7CisgICAgdm9pZCBnZXRUcmFpdHNJbkZhbWlseShj
b25zdCBBdG9taWNTdHJpbmcmLCBWZWN0b3I8dW5zaWduZWQ+Jik7CiAKLSAgICBzdGF0aWMgRm9u
dFBsYXRmb3JtRGF0YSogZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3Jp
cHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgYm9vbCBjaGVja2luZ0FsdGVybmF0
ZU5hbWUgPSBmYWxzZSk7Ci0gICAgc3RhdGljIFNpbXBsZUZvbnREYXRhKiBnZXRDYWNoZWRGb250
RGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhKik7Ci0gICAgc3RhdGljIEZvbnRQbGF0Zm9ybURh
dGEqIGdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJik7Cisg
ICAgRm9udFBsYXRmb3JtRGF0YSogZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250
RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgYm9vbCBjaGVja2luZ0Fs
dGVybmF0ZU5hbWUgPSBmYWxzZSk7CisgICAgU2ltcGxlRm9udERhdGEqIGdldENhY2hlZEZvbnRE
YXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEqKTsKKyAgICBGb250UGxhdGZvcm1EYXRhKiBnZXRM
YXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYpOwogCi0gICAgc3Rh
dGljIHZvaWQgYWRkQ2xpZW50KEZvbnRTZWxlY3RvciopOwotICAgIHN0YXRpYyB2b2lkIHJlbW92
ZUNsaWVudChGb250U2VsZWN0b3IqKTsKKyAgICB2b2lkIGFkZENsaWVudChGb250U2VsZWN0b3Iq
KTsKKyAgICB2b2lkIHJlbW92ZUNsaWVudChGb250U2VsZWN0b3IqKTsKIAotICAgIHN0YXRpYyB1
bnNpZ25lZCBnZW5lcmF0aW9uKCk7Ci0gICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZSgpOworICAg
IHVuc2lnbmVkIGdlbmVyYXRpb24oKTsKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKIAotICAgIHN0
YXRpYyBzaXplX3QgZm9udERhdGFDb3VudCgpOwotICAgIHN0YXRpYyBzaXplX3QgaW5hY3RpdmVG
b250RGF0YUNvdW50KCk7Ci0gICAgc3RhdGljIHZvaWQgcHVyZ2VJbmFjdGl2ZUZvbnREYXRhKGlu
dCBjb3VudCA9IElOVF9NQVgpOworICAgIHNpemVfdCBmb250RGF0YUNvdW50KCk7CisgICAgc2l6
ZV90IGluYWN0aXZlRm9udERhdGFDb3VudCgpOworICAgIHZvaWQgcHVyZ2VJbmFjdGl2ZUZvbnRE
YXRhKGludCBjb3VudCA9IElOVF9NQVgpOwogCiBwcml2YXRlOgorICAgIEZvbnRDYWNoZSgpOwor
CiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQgYnkgZWFjaCBwbGF0Zm9ybS4K
LSAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSogZ2V0U2ltaWxhckZvbnRQbGF0Zm9ybURhdGEo
Y29uc3QgRm9udCYpOwotICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhKiBjcmVhdGVGb250UGxh
dGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgZmFt
aWx5KTsKKyAgICBGb250UGxhdGZvcm1EYXRhKiBnZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250Jik7CisgICAgRm9udFBsYXRmb3JtRGF0YSogY3JlYXRlRm9udFBsYXRmb3JtRGF0
YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSk7CiAK
ICAgICBmcmllbmQgY2xhc3MgU2ltcGxlRm9udERhdGE7CiAgICAgZnJpZW5kIGNsYXNzIEZvbnRG
YWxsYmFja0xpc3Q7CiB9OwogCisvLyBHZXQgdGhlIGdsb2JhbCBmb250Q2FjaGUuCitGb250Q2Fj
aGUqIGZvbnRDYWNoZSgpOwogfQogCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udEZhbGxiYWNrTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250RmFsbGJhY2tMaXN0LmNwcAkocmV2aXNpb24gMzkyOTYpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYWxsYmFja0xpc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw3ICs0MCw3IEBAIEZvbnRGYWxsYmFja0xpc3Q6OkZvbnRGYWxsYmFja0xpc3QoKQog
ICAgICwgbV9waXRjaChVbmtub3duUGl0Y2gpCiAgICAgLCBtX2xvYWRpbmdDdXN0b21Gb250cyhm
YWxzZSkKICAgICAsIG1fZm9udFNlbGVjdG9yKDApCi0gICAgLCBtX2dlbmVyYXRpb24oRm9udENh
Y2hlOjpnZW5lcmF0aW9uKCkpCisgICAgLCBtX2dlbmVyYXRpb24oZm9udENhY2hlKCktPmdlbmVy
YXRpb24oKSkKIHsKIH0KIApAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEZvbnRGYWxsYmFja0xpc3Q6
OmludmFsaWRhdGUoUGFzc1JlCiAgICAgbV9waXRjaCA9IFVua25vd25QaXRjaDsKICAgICBtX2xv
YWRpbmdDdXN0b21Gb250cyA9IGZhbHNlOwogICAgIG1fZm9udFNlbGVjdG9yID0gZm9udFNlbGVj
dG9yOwotICAgIG1fZ2VuZXJhdGlvbiA9IEZvbnRDYWNoZTo6Z2VuZXJhdGlvbigpOworICAgIG1f
Z2VuZXJhdGlvbiA9IGZvbnRDYWNoZSgpLT5nZW5lcmF0aW9uKCk7CiB9CiAKIHZvaWQgRm9udEZh
bGxiYWNrTGlzdDo6cmVsZWFzZUZvbnREYXRhKCkKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBGb250
RmFsbGJhY2tMaXN0OjpyZWxlYXNlRm9udERhdGEoKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1Gb250czsgKytpKSB7CiAgICAgICAgIGlmICghbV9mb250TGlzdFtpXS5zZWNvbmQp
IHsKICAgICAgICAgICAgIEFTU0VSVCghbV9mb250TGlzdFtpXS5maXJzdC0+aXNTZWdtZW50ZWQo
KSk7Ci0gICAgICAgICAgICBGb250Q2FjaGU6OnJlbGVhc2VGb250RGF0YShzdGF0aWNfY2FzdDxj
b25zdCBTaW1wbGVGb250RGF0YSo+KG1fZm9udExpc3RbaV0uZmlyc3QpKTsKKyAgICAgICAgICAg
IGZvbnRDYWNoZSgpLT5yZWxlYXNlRm9udERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgU2ltcGxlRm9u
dERhdGEqPihtX2ZvbnRMaXN0W2ldLmZpcnN0KSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC05
Niw4ICs5Niw4IEBAIGNvbnN0IEZvbnREYXRhKiBGb250RmFsbGJhY2tMaXN0Ojpmb250RGEKICAg
ICAvLyBXZSBhcmUgb2J0YWluaW5nIHRoaXMgZm9udCBmb3IgdGhlIGZpcnN0IHRpbWUuICBXZSBr
ZWVwIHRyYWNrIG9mIHRoZSBmYW1pbGllcyB3ZSd2ZSBsb29rZWQgYXQgYmVmb3JlCiAgICAgLy8g
aW4gfG1fZmFtaWx5SW5kZXh8LCBzbyB0aGF0IHdlIG5ldmVyIHNjYW4gdGhlIHNhbWUgc3BvdCBp
biB0aGUgbGlzdCB0d2ljZS4gIGdldEZvbnREYXRhIHdpbGwgYWRqdXN0IG91cgogICAgIC8vIHxt
X2ZhbWlseUluZGV4fCBhcyBpdCBzY2FucyBmb3IgdGhlIHJpZ2h0IGZvbnQgdG8gbWFrZS4KLSAg
ICBBU1NFUlQoRm9udENhY2hlOjpnZW5lcmF0aW9uKCkgPT0gbV9nZW5lcmF0aW9uKTsKLSAgICBj
b25zdCBGb250RGF0YSogcmVzdWx0ID0gRm9udENhY2hlOjpnZXRGb250RGF0YSgqZm9udCwgbV9m
YW1pbHlJbmRleCwgbV9mb250U2VsZWN0b3IuZ2V0KCkpOworICAgIEFTU0VSVChmb250Q2FjaGUo
KS0+Z2VuZXJhdGlvbigpID09IG1fZ2VuZXJhdGlvbik7CisgICAgY29uc3QgRm9udERhdGEqIHJl
c3VsdCA9IGZvbnRDYWNoZSgpLT5nZXRGb250RGF0YSgqZm9udCwgbV9mYW1pbHlJbmRleCwgbV9m
b250U2VsZWN0b3IuZ2V0KCkpOwogICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAgbV9mb250TGlz
dC5hcHBlbmQocGFpcjxjb25zdCBGb250RGF0YSosIGJvb2w+KHJlc3VsdCwgcmVzdWx0LT5pc0N1
c3RvbUZvbnQoKSkpOwogICAgICAgICBpZiAocmVzdWx0LT5pc0xvYWRpbmcoKSkKQEAgLTExNiw4
ICsxMTYsOCBAQCBjb25zdCBGb250RGF0YSogRm9udEZhbGxiYWNrTGlzdDo6Zm9udERhCiAgICAg
ICAgIGZvbnREYXRhID0gZm9udERhdGFBdChmb250LCArK3JlYWxpemVkRm9udEluZGV4KTsKICAg
ICAKICAgICBpZiAoIWZvbnREYXRhKSB7Ci0gICAgICAgIEFTU0VSVChGb250Q2FjaGU6OmdlbmVy
YXRpb24oKSA9PSBtX2dlbmVyYXRpb24pOwotICAgICAgICBmb250RGF0YSA9IEZvbnRDYWNoZTo6
Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKCpmb250LCBjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAg
ICAgICBBU1NFUlQoZm9udENhY2hlKCktPmdlbmVyYXRpb24oKSA9PSBtX2dlbmVyYXRpb24pOwor
ICAgICAgICBmb250RGF0YSA9IGZvbnRDYWNoZSgpLT5nZXRGb250RGF0YUZvckNoYXJhY3RlcnMo
KmZvbnQsIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGZvbnREYXRh
OwpAQCAtMTI2LDggKzEyNiw4IEBAIGNvbnN0IEZvbnREYXRhKiBGb250RmFsbGJhY2tMaXN0Ojpm
b250RGEKIHZvaWQgRm9udEZhbGxiYWNrTGlzdDo6c2V0UGxhdGZvcm1Gb250KGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICBtX2ZhbWlseUluZGV4ID0gY0FsbEZh
bWlsaWVzU2Nhbm5lZDsKLSAgICBBU1NFUlQoRm9udENhY2hlOjpnZW5lcmF0aW9uKCkgPT0gbV9n
ZW5lcmF0aW9uKTsKLSAgICBjb25zdCBGb250RGF0YSogZm9udERhdGEgPSBGb250Q2FjaGU6Omdl
dENhY2hlZEZvbnREYXRhKCZwbGF0Zm9ybURhdGEpOworICAgIEFTU0VSVChmb250Q2FjaGUoKS0+
Z2VuZXJhdGlvbigpID09IG1fZ2VuZXJhdGlvbik7CisgICAgY29uc3QgRm9udERhdGEqIGZvbnRE
YXRhID0gZm9udENhY2hlKCktPmdldENhY2hlZEZvbnREYXRhKCZwbGF0Zm9ybURhdGEpOwogICAg
IG1fZm9udExpc3QuYXBwZW5kKHBhaXI8Y29uc3QgRm9udERhdGEqLCBib29sPihmb250RGF0YSwg
Zm9udERhdGEtPmlzQ3VzdG9tRm9udCgpKSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udEZhc3RQYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRGYXN0UGF0aC5jcHAJKHJldmlzaW9uIDM5Mjk2KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQs
NyArMTQ0LDcgQEAgY29uc3QgR2x5cGhEYXRhJiBGb250OjpnbHlwaERhdGFGb3JDaGFyYQogICAg
ICAgICBjb2RlVW5pdHNbMV0gPSBVMTZfVFJBSUwoYyk7CiAgICAgICAgIGNvZGVVbml0c0xlbmd0
aCA9IDI7CiAgICAgfQotICAgIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBjaGFyYWN0ZXJGb250RGF0
YSA9IEZvbnRDYWNoZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKCp0aGlzLCBjb2RlVW5pdHMs
IGNvZGVVbml0c0xlbmd0aCk7CisgICAgY29uc3QgU2ltcGxlRm9udERhdGEqIGNoYXJhY3RlckZv
bnREYXRhID0gZm9udENhY2hlKCktPmdldEZvbnREYXRhRm9yQ2hhcmFjdGVycygqdGhpcywgY29k
ZVVuaXRzLCBjb2RlVW5pdHNMZW5ndGgpOwogICAgIGlmICh1c2VTbWFsbENhcHNGb250ICYmIGNo
YXJhY3RlckZvbnREYXRhKQogICAgICAgICBjaGFyYWN0ZXJGb250RGF0YSA9IGNoYXJhY3RlckZv
bnREYXRhLT5zbWFsbENhcHNGb250RGF0YShtX2ZvbnREZXNjcmlwdGlvbik7CiAgICAgaWYgKGNo
YXJhY3RlckZvbnREYXRhKSB7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBs
ZUZvbnREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Np
bXBsZUZvbnREYXRhLmNwcAkocmV2aXNpb24gMzkyOTYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3
IEBAIFNpbXBsZUZvbnREYXRhOjp+U2ltcGxlRm9udERhdGEoKQogewogICAgIGlmICghaXNDdXN0
b21Gb250KCkpIHsKICAgICAgICAgaWYgKG1fc21hbGxDYXBzRm9udERhdGEpCi0gICAgICAgICAg
ICBGb250Q2FjaGU6OnJlbGVhc2VGb250RGF0YShtX3NtYWxsQ2Fwc0ZvbnREYXRhKTsKKyAgICAg
ICAgICAgIGZvbnRDYWNoZSgpLT5yZWxlYXNlRm9udERhdGEobV9zbWFsbENhcHNGb250RGF0YSk7
CiAgICAgICAgIEdseXBoUGFnZVRyZWVOb2RlOjpwcnVuZVRyZWVGb250RGF0YSh0aGlzKTsKICAg
ICB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVN
YWMubW0JKHJldmlzaW9uIDM5Mjk2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udENhY2hlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIHZvaWQgZm9udENhY2hlQVRTTm90aWZpY2F0aW9uQ2FsbGJh
Y2soQVRTRm9udE5vdGlmaWNhdGlvbkluZm9SZWYsIHZvaWQqKQogewotICAgIEZvbnRDYWNoZTo6
aW52YWxpZGF0ZSgpOworICAgIGZvbnRDYWNoZSgpLT5pbnZhbGlkYXRlKCk7CiB9CiAKIHZvaWQg
Rm9udENhY2hlOjpwbGF0Zm9ybUluaXQoKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0JKHJldmlzaW9uIDM5Mjk2KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTMxNCw3ICszMTQsNyBAQCBTaW1wbGVGb250RGF0YSogU2ltcGxlRm9udERh
dGE6OnNtYWxsQ2FwCiAgICAgICAgICAgICAgICAgc21hbGxDYXBzRm9udC5tX3N5bnRoZXRpY0Jv
bGQgPSAoZm9udFRyYWl0cyAmIE5TQm9sZEZvbnRNYXNrKSAmJiAhKHNtYWxsQ2Fwc0ZvbnRUcmFp
dHMgJiBOU0JvbGRGb250TWFzayk7CiAgICAgICAgICAgICAgICAgc21hbGxDYXBzRm9udC5tX3N5
bnRoZXRpY09ibGlxdWUgPSAoZm9udFRyYWl0cyAmIE5TSXRhbGljRm9udE1hc2spICYmICEoc21h
bGxDYXBzRm9udFRyYWl0cyAmIE5TSXRhbGljRm9udE1hc2spOwogCi0gICAgICAgICAgICAgICAg
bV9zbWFsbENhcHNGb250RGF0YSA9IEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udERhdGEoJnNtYWxs
Q2Fwc0ZvbnQpOworICAgICAgICAgICAgICAgIG1fc21hbGxDYXBzRm9udERhdGEgPSBmb250Q2Fj
aGUoKS0+Z2V0Q2FjaGVkRm9udERhdGEoJnNtYWxsQ2Fwc0ZvbnQpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICAgICAgfQpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCShyZXZp
c2lvbiAzOTI5NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMgY29uc3QgVmVj
dG9yPERXT1JELCA0PiYgZ2V0Q0pLQ29kCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7CiAg
ICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7Ci0gICAg
ICAgIElNTGFuZ0ZvbnRMaW5rMiogbGFuZ0ZvbnRMaW5rID0gRm9udENhY2hlOjpnZXRGb250TGlu
a0ludGVyZmFjZSgpOworICAgICAgICBJTUxhbmdGb250TGluazIqIGxhbmdGb250TGluayA9IGZv
bnRDYWNoZSgpLT5nZXRGb250TGlua0ludGVyZmFjZSgpOwogICAgICAgICBpZiAoIWxhbmdGb250
TGluaykKICAgICAgICAgICAgIHJldHVybiBjb2RlUGFnZU1hc2tzOwogCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YVdpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFXaW4uY3BwCShy
ZXZpc2lvbiAzOTI5NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZv
bnREYXRhV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIGJvb2wgU2lt
cGxlRm9udERhdGE6OmNvbnRhaW5zQ2hhcmFjdGVycygKICAgICAvLyBGSVhNRTogTWljcm9zb2Z0
IGRvY3VtZW50YXRpb24gc2VlbXMgdG8gaW1wbHkgdGhhdCBjaGFyYWN0ZXJzIGNhbiBiZSBvdXRw
dXQgdXNpbmcgYSBnaXZlbiBmb250IGFuZCBEQwogICAgIC8vIG1lcmVseSBieSB0ZXN0aW5nIGNv
ZGUgcGFnZSBpbnRlcnNlY3Rpb24uICBUaGlzIHNlZW1zIHN1c3BlY3QgdGhvdWdoLiAgQ2FuJ3Qg
YSBmb250IG9ubHkgcGFydGlhbGx5CiAgICAgLy8gY292ZXIgYSBnaXZlbiBjb2RlIHBhZ2U/Ci0g
ICAgSU1MYW5nRm9udExpbmsyKiBsYW5nRm9udExpbmsgPSBGb250Q2FjaGU6OmdldEZvbnRMaW5r
SW50ZXJmYWNlKCk7CisgICAgSU1MYW5nRm9udExpbmsyKiBsYW5nRm9udExpbmsgPSBmb250Q2Fj
aGUoKS0+Z2V0Rm9udExpbmtJbnRlcmZhY2UoKTsKICAgICBpZiAoIWxhbmdGb250TGluaykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMzkyOTYpCisrKyBXZWJLaXQv
bWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDA4LTEyLTE0
ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyBGSVhNRTogVHJhbnNmb3Jt
IHRoZSBGb250Q2FjaGUgdG8gYmUgYSByZWFsIGNsYXNzCisKKyAgICAgICAgKiBNaXNjL1dlYkNv
cmVTdGF0aXN0aWNzLm1tOgorICAgICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBjYWNoZWRGb250
RGF0YUNvdW50XSk6CisgICAgICAgICgrW1dlYkNvcmVTdGF0aXN0aWNzIGNhY2hlZEZvbnREYXRh
SW5hY3RpdmVDb3VudF0pOgorICAgICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBwdXJnZUluYWN0
aXZlRm9udERhdGFdKToKKyAgICAgICAgUmVkaXJlY3RlZCBhbGwgdGhlIHN0YXRpYyBjYWxscyB0
byB0aGUgZ2xvYmFsIEZvbnRDYWNoZQorICAgICAgICBpbnN0YW5jZS4KKwogMjAwOC0xMi0xNCAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgpJbmRleDogV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQkocmV2aXNp
b24gMzkyOTYpCisrKyBXZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEyMiwxNyArMTIyLDE3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiArIChzaXplX3QpY2FjaGVkRm9udERhdGFDb3VudAogewotICAgIHJldHVybiBGb250Q2FjaGU6
OmZvbnREYXRhQ291bnQoKTsKKyAgICByZXR1cm4gZm9udENhY2hlKCktPmZvbnREYXRhQ291bnQo
KTsKIH0KIAogKyAoc2l6ZV90KWNhY2hlZEZvbnREYXRhSW5hY3RpdmVDb3VudAogewotICAgIHJl
dHVybiBGb250Q2FjaGU6OmluYWN0aXZlRm9udERhdGFDb3VudCgpOworICAgIHJldHVybiBmb250
Q2FjaGUoKS0+aW5hY3RpdmVGb250RGF0YUNvdW50KCk7CiB9CiAKICsgKHZvaWQpcHVyZ2VJbmFj
dGl2ZUZvbnREYXRhCiB7Ci0gICAgRm9udENhY2hlOjpwdXJnZUluYWN0aXZlRm9udERhdGEoKTsK
KyAgICBmb250Q2FjaGUoKS0+cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CiB9CiAKICsgKHNpemVf
dClnbHlwaFBhZ2VDb3VudApJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDM5Mjk2KQorKysgV2ViS2l0L3dpbi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAwOC0xMi0xNCAgSnVs
aWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgRklYTUU6IFRyYW5zZm9ybSB0aGUg
Rm9udENhY2hlIHRvIGJlIGEgcmVhbCBjbGFzcworCisgICAgICAgICogV2ViQ29yZVN0YXRpc3Rp
Y3MuY3BwOgorICAgICAgICAoV2ViQ29yZVN0YXRpc3RpY3M6OmNhY2hlZEZvbnREYXRhQ291bnQp
OgorICAgICAgICAoV2ViQ29yZVN0YXRpc3RpY3M6OmNhY2hlZEZvbnREYXRhSW5hY3RpdmVDb3Vu
dCk6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKToK
KyAgICAgICAgUmVkaXJlY3RlZCBhbGwgdGhlIHN0YXRpYyBjYWxscyB0byB0aGUgZ2xvYmFsIEZv
bnRDYWNoZQorICAgICAgICBpbnN0YW5jZS4KKwogMjAwOC0xMi0xNCAgRGFuIEJlcm5zdGVpbiAg
PG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRl
eDogV2ViS2l0L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDM5Mjk2KQorKysgV2ViS2l0L3dp
bi9XZWJDb3JlU3RhdGlzdGljcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw3ICsxOTIsNyBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNvcmVTdGF0aXN0CiB7CiAgICAgaWYgKCFj
b3VudCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLSAgICAqY291bnQgPSAoVUlOVCkgRm9u
dENhY2hlOjpmb250RGF0YUNvdW50KCk7CisgICAgKmNvdW50ID0gKFVJTlQpIGZvbnRDYWNoZSgp
LT5mb250RGF0YUNvdW50KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTIwMSwxMyArMjAx
LDEzIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29yZVN0YXRpc3QKIHsKICAgICBp
ZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotICAgICpjb3VudCA9IChVSU5U
KSBGb250Q2FjaGU6OmluYWN0aXZlRm9udERhdGFDb3VudCgpOworICAgICpjb3VudCA9IChVSU5U
KSBmb250Q2FjaGUoKS0+aW5hY3RpdmVGb250RGF0YUNvdW50KCk7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29yZVN0YXRpc3RpY3M6OnB1cmdl
SW5hY3RpdmVGb250RGF0YSh2b2lkKQogewotICAgIEZvbnRDYWNoZTo6cHVyZ2VJbmFjdGl2ZUZv
bnREYXRhKCk7CisgICAgZm9udENhY2hlKCktPnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOwogICAg
IHJldHVybiBTX09LOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26065</attachid>
            <date>2008-12-16 13:17:08 -0800</date>
            <delta_ts>2009-01-02 10:56:14 -0800</delta_ts>
            <desc>Same as the first version, with corrected ChangeLogs</desc>
            <filename>FontCacheSingleton.diff</filename>
            <type>text/plain</type>
            <size>20236</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTI5NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMDgtMTItMTQgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4
QHBsZXlvLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBCdWcgMjI4NjE6IFR1cm4gdGhlIEZvbnRDYWNoZSBpbnRvIGEgc2luZ2xldG9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2MQorCisgICAg
ICAgIC0gQWRkZWQgZm9udENhY2hlKCkgdG8gZ2V0IHRoZSBnbG9iYWwgRm9udENhY2hlLgorCisg
ICAgICAgIC0gTWFkZSBhbGwgdGhlIG1ldGhvZHMgaW4gRm9udENhY2hlIGluc3RhbmNlIG1ldGhv
ZC4KKworICAgICAgICAtIENoYW5nZWQgRm9udENhY2hlOjogdG8gZm9udENhY2hlKCktPiBpbiBX
ZWJDb3JlLgorCisgICAgICAgICogV2ViQ29yZS5iYXNlLmV4cDogTm93IGV4cG9ydCBmb250Q2Fj
aGUoKS4KKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRm9udEZhY2VTb3VyY2U6OmdldEZvbnREYXRhKToKKyAgICAgICAgKiBjc3MvQ1NT
Rm9udFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Q1NT
Rm9udFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6fkNTU0Zv
bnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRG
YWNlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpmb250RGF0YUZvckdlbmVyaWNGYW1pbHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udDo6Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9udENhY2hlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRDYWNoZTo6Rm9udENhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFsbGJh
Y2tMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWxsYmFja0xpc3Q6OkZvbnRGYWxs
YmFja0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbGxiYWNrTGlzdDo6aW52YWxpZGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFsbGJhY2tMaXN0OjpyZWxlYXNlRm9udERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbGxiYWNrTGlzdDo6Zm9udERhdGFBdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250RmFsbGJhY2tMaXN0Ojpmb250RGF0YUZvckNoYXJhY3RlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbGxiYWNrTGlzdDo6c2V0UGxhdGZvcm1Gb250KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6flNpbXBsZUZvbnREYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Zm9u
dENhY2hlQVRTTm90aWZpY2F0aW9uQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZv
bnREYXRhOjpzbWFsbENhcHNGb250RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDYWNoZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDSktDb2RlUGFnZU1h
c2tzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OmNvbnRhaW5zQ2hhcmFjdGVy
cyk6CisKIDIwMDgtMTItMTMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuYmFzZS5l
eHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCShyZXZpc2lvbiAzOTI5
NikKKysrIFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtNjE3LDYg
KzYxNyw3IEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczQxc2V0TmVlZHNLZXlib2FyZEUKIF9fWk43
V2ViQ29yZThibGFua1VSTEV2CiBfX1pON1dlYkNvcmU4cGFyc2VVUkxFUktOU182U3RyaW5nRQog
X19aTjdXZWJDb3JlOUZsb2F0UmVjdEMxRVJLN19OU1JlY3QKK19fWk43V2ViQ29yZTlmb250Q2Fj
aGVFdgogX19aTjdXZWJDb3JlOUZvbnRDYWNoZTEzZm9udERhdGFDb3VudEV2CiBfX1pON1dlYkNv
cmU5Rm9udENhY2hlMjFpbmFjdGl2ZUZvbnREYXRhQ291bnRFdgogX19aTjdXZWJDb3JlOUZvbnRD
YWNoZTIxcHVyZ2VJbmFjdGl2ZUZvbnREYXRhRWkKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJj
ZS5jcHAJKHJldmlzaW9uIDM5Mjk2KQorKysgV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsOCArMTA3LDggQEAgU2ltcGxlRm9udERhdGEqIENT
U0ZvbnRGYWNlU291cmNlOjpnZXRGbwogI2Vsc2UKICAgICBpZiAoIW1fZm9udCkgewogI2VuZGlm
Ci0gICAgICAgIEZvbnRQbGF0Zm9ybURhdGEqIGRhdGEgPSBGb250Q2FjaGU6OmdldENhY2hlZEZv
bnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBtX3N0cmluZyk7Ci0gICAgICAgIFNpbXBs
ZUZvbnREYXRhKiBmb250RGF0YSA9IEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udERhdGEoZGF0YSk7
CisgICAgICAgIEZvbnRQbGF0Zm9ybURhdGEqIGRhdGEgPSBmb250Q2FjaGUoKS0+Z2V0Q2FjaGVk
Rm9udFBsYXRmb3JtRGF0YShmb250RGVzY3JpcHRpb24sIG1fc3RyaW5nKTsKKyAgICAgICAgU2lt
cGxlRm9udERhdGEqIGZvbnREYXRhID0gZm9udENhY2hlKCktPmdldENhY2hlZEZvbnREYXRhKGRh
dGEpOwogCiAgICAgICAgIC8vIFdlJ3JlIGxvY2FsLiBKdXN0IHJldHVybiBhIFNpbXBsZUZvbnRE
YXRhIGZyb20gdGhlIG5vcm1hbCBjYWNoZS4KICAgICAgICAgcmV0dXJuIGZvbnREYXRhOwpAQCAt
MTc5LDkgKzE3OSw5IEBAIFNpbXBsZUZvbnREYXRhKiBDU1NGb250RmFjZVNvdXJjZTo6Z2V0Rm8K
ICAgICAgICAgaWYgKERvY0xvYWRlciogZG9jTG9hZGVyID0gZm9udFNlbGVjdG9yLT5kb2NMb2Fk
ZXIoKSkKICAgICAgICAgICAgIG1fZm9udC0+YmVnaW5Mb2FkSWZOZWVkZWQoZG9jTG9hZGVyKTsK
ICAgICAgICAgLy8gRklYTUU6IG1fc3RyaW5nIGlzIGEgVVJMIHNvIGl0IG1ha2VzIG5vIHNlbnNl
IHRvIHBhc3MgaXQgYXMgYSBmYW1pbHkgbmFtZS4KLSAgICAgICAgRm9udFBsYXRmb3JtRGF0YSog
dGVtcERhdGEgPSBGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2Ny
aXB0aW9uLCBtX3N0cmluZyk7CisgICAgICAgIEZvbnRQbGF0Zm9ybURhdGEqIHRlbXBEYXRhID0g
Zm9udENhY2hlKCktPmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBt
X3N0cmluZyk7CiAgICAgICAgIGlmICghdGVtcERhdGEpCi0gICAgICAgICAgICB0ZW1wRGF0YSA9
IEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChmb250RGVzY3JpcHRpb24pOwor
ICAgICAgICAgICAgdGVtcERhdGEgPSBmb250Q2FjaGUoKS0+Z2V0TGFzdFJlc29ydEZhbGxiYWNr
Rm9udChmb250RGVzY3JpcHRpb24pOwogICAgICAgICBmb250RGF0YS5zZXQobmV3IFNpbXBsZUZv
bnREYXRhKCp0ZW1wRGF0YSwgdHJ1ZSwgdHJ1ZSkpOwogICAgIH0KIApJbmRleDogV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuY3BwCShyZXZpc2lvbiAzOTI5NikKKysrIFdlYkNvcmUvY3NzL0NTU0ZvbnRTZWxl
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDEyICs2NSwxMiBAQCBDU1NGb250U2VsZWN0
b3I6OkNTU0ZvbnRTZWxlY3RvcihEb2N1bWVuCiAgICAgLy8gc2VlbSB0byBiZSBhbnkgc3VjaCBn
dWFyYW50ZWUuCiAKICAgICBBU1NFUlQobV9kb2N1bWVudCk7Ci0gICAgRm9udENhY2hlOjphZGRD
bGllbnQodGhpcyk7CisgICAgZm9udENhY2hlKCktPmFkZENsaWVudCh0aGlzKTsKIH0KIAogQ1NT
Rm9udFNlbGVjdG9yOjp+Q1NTRm9udFNlbGVjdG9yKCkKIHsKLSAgICBGb250Q2FjaGU6OnJlbW92
ZUNsaWVudCh0aGlzKTsKKyAgICBmb250Q2FjaGUoKS0+cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAg
IGRlbGV0ZUFsbFZhbHVlcyhtX2ZvbnRGYWNlcyk7CiAgICAgZGVsZXRlQWxsVmFsdWVzKG1fbG9j
YWxseUluc3RhbGxlZEZvbnRGYWNlcyk7CiAgICAgZGVsZXRlQWxsVmFsdWVzKG1fZm9udHMpOwpA
QCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUo
Y28KICAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8Q1NTRm9udEZhY2U+ID4qIGZhbWlseUxvY2Fs
bHlJbnN0YWxsZWRGYWNlczsKIAogICAgICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBsb2NhbGx5
SW5zdGFsbGVkRm9udHNUcmFpdHNNYXNrczsKLSAgICAgICAgICAgIEZvbnRDYWNoZTo6Z2V0VHJh
aXRzSW5GYW1pbHkoZmFtaWx5TmFtZSwgbG9jYWxseUluc3RhbGxlZEZvbnRzVHJhaXRzTWFza3Mp
OworICAgICAgICAgICAgZm9udENhY2hlKCktPmdldFRyYWl0c0luRmFtaWx5KGZhbWlseU5hbWUs
IGxvY2FsbHlJbnN0YWxsZWRGb250c1RyYWl0c01hc2tzKTsKICAgICAgICAgICAgIHVuc2lnbmVk
IG51bUxvY2FsbHlJbnN0YWxsZWRGYWNlcyA9IGxvY2FsbHlJbnN0YWxsZWRGb250c1RyYWl0c01h
c2tzLnNpemUoKTsKICAgICAgICAgICAgIGlmIChudW1Mb2NhbGx5SW5zdGFsbGVkRmFjZXMpIHsK
ICAgICAgICAgICAgICAgICBmYW1pbHlMb2NhbGx5SW5zdGFsbGVkRmFjZXMgPSBuZXcgVmVjdG9y
PFJlZlB0cjxDU1NGb250RmFjZT4gPjsKQEAgLTM5Nyw3ICszOTcsNyBAQCBzdGF0aWMgRm9udERh
dGEqIGZvbnREYXRhRm9yR2VuZXJpY0ZhbWlsCiAgICAgICAgIGdlbmVyaWNGYW1pbHkgPSBzZXR0
aW5ncy0+c3RhbmRhcmRGb250RmFtaWx5KCk7CiAKICAgICBpZiAoIWdlbmVyaWNGYW1pbHkuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gRm9udENhY2hlOjpnZXRDYWNoZWRGb250RGF0YShGb250
Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBnZW5lcmlj
RmFtaWx5KSk7CisgICAgICAgIHJldHVybiBmb250Q2FjaGUoKS0+Z2V0Q2FjaGVkRm9udERhdGEo
Zm9udENhY2hlKCktPmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBn
ZW5lcmljRmFtaWx5KSk7CiAKICAgICByZXR1cm4gMDsKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcAkocmV2aXNpb24gMzkyOTYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRl
ICJDaGFyYWN0ZXJOYW1lcy5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkZv
bnRDYWNoZS5oIgogI2luY2x1ZGUgIkZvbnRGYWxsYmFja0xpc3QuaCIKICNpbmNsdWRlICJJbnRQ
b2ludC5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuY3BwCShyZXZpc2lvbiAzOTI5NikKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsMTYg
QEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitGb250Q2Fj
aGUqIGZvbnRDYWNoZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChGb250Q2FjaGUsIGds
b2JhbEZvbnRDYWNoZSwgKCkpOworICAgIHJldHVybiAmZ2xvYmFsRm9udENhY2hlOworfQorCitG
b250Q2FjaGU6OkZvbnRDYWNoZSgpCit7Cit9CisKIHN0cnVjdCBGb250UGxhdGZvcm1EYXRhQ2Fj
aGVLZXkgewogICAgIEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleShjb25zdCBBdG9taWNTdHJpbmcm
IGZhbWlseSA9IEF0b21pY1N0cmluZygpLCB1bnNpZ25lZCBzaXplID0gMCwgdW5zaWduZWQgd2Vp
Z2h0ID0gMCwgYm9vbCBpdGFsaWMgPSBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc1ByaW50ZXJGb250ID0gZmFsc2UsIEZvbnRSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUgPSBOb3JtYWxSZW5kZXJpbmdNb2RlKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5oCShyZXZpc2lvbiAzOTI5NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDQ1ICs1MSw1MSBAQCBjbGFzcyBT
aW1wbGVGb250RGF0YTsKIAogY2xhc3MgRm9udENhY2hlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
Y29uc3QgRm9udERhdGEqIGdldEZvbnREYXRhKGNvbnN0IEZvbnQmLCBpbnQmIGZhbWlseUluZGV4
LCBGb250U2VsZWN0b3IqKTsKLSAgICBzdGF0aWMgdm9pZCByZWxlYXNlRm9udERhdGEoY29uc3Qg
U2ltcGxlRm9udERhdGEqKTsKKyAgICBmcmllbmQgRm9udENhY2hlKiBmb250Q2FjaGUoKTsKKwor
ICAgIGNvbnN0IEZvbnREYXRhKiBnZXRGb250RGF0YShjb25zdCBGb250JiwgaW50JiBmYW1pbHlJ
bmRleCwgRm9udFNlbGVjdG9yKik7CisgICAgdm9pZCByZWxlYXNlRm9udERhdGEoY29uc3QgU2lt
cGxlRm9udERhdGEqKTsKICAgICAKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBpbXBsZW1lbnRlZCBi
eSB0aGUgcGxhdGZvcm0uCiAgICAgLy8gRklYTUU6IEZvbnQgZGF0YSByZXR1cm5lZCBieSB0aGlz
IG1ldGhvZCBuZXZlciBnbyBpbmFjdGl2ZSBiZWNhdXNlIGNhbGxlcnMgZG9uJ3QgdHJhY2sgYW5k
IHJlbGVhc2UgdGhlbS4KLSAgICBzdGF0aWMgY29uc3QgU2ltcGxlRm9udERhdGEqIGdldEZvbnRE
YXRhRm9yQ2hhcmFjdGVycyhjb25zdCBGb250JiwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGlu
dCBsZW5ndGgpOworICAgIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBnZXRGb250RGF0YUZvckNoYXJh
Y3RlcnMoY29uc3QgRm9udCYsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoKTsK
ICAgICAKICAgICAvLyBBbHNvIGltcGxlbWVudGVkIGJ5IHRoZSBwbGF0Zm9ybS4KLSAgICBzdGF0
aWMgdm9pZCBwbGF0Zm9ybUluaXQoKTsKKyAgICB2b2lkIHBsYXRmb3JtSW5pdCgpOwogCiAjaWYg
UExBVEZPUk0oV0lOKQotICAgIHN0YXRpYyBJTUxhbmdGb250TGluazIqIGdldEZvbnRMaW5rSW50
ZXJmYWNlKCk7CisgICAgSU1MYW5nRm9udExpbmsyKiBnZXRGb250TGlua0ludGVyZmFjZSgpOwog
I2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCBnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNT
dHJpbmcmLCBWZWN0b3I8dW5zaWduZWQ+Jik7CisgICAgdm9pZCBnZXRUcmFpdHNJbkZhbWlseShj
b25zdCBBdG9taWNTdHJpbmcmLCBWZWN0b3I8dW5zaWduZWQ+Jik7CiAKLSAgICBzdGF0aWMgRm9u
dFBsYXRmb3JtRGF0YSogZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3Jp
cHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgYm9vbCBjaGVja2luZ0FsdGVybmF0
ZU5hbWUgPSBmYWxzZSk7Ci0gICAgc3RhdGljIFNpbXBsZUZvbnREYXRhKiBnZXRDYWNoZWRGb250
RGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhKik7Ci0gICAgc3RhdGljIEZvbnRQbGF0Zm9ybURh
dGEqIGdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJik7Cisg
ICAgRm9udFBsYXRmb3JtRGF0YSogZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250
RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgYm9vbCBjaGVja2luZ0Fs
dGVybmF0ZU5hbWUgPSBmYWxzZSk7CisgICAgU2ltcGxlRm9udERhdGEqIGdldENhY2hlZEZvbnRE
YXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEqKTsKKyAgICBGb250UGxhdGZvcm1EYXRhKiBnZXRM
YXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYpOwogCi0gICAgc3Rh
dGljIHZvaWQgYWRkQ2xpZW50KEZvbnRTZWxlY3RvciopOwotICAgIHN0YXRpYyB2b2lkIHJlbW92
ZUNsaWVudChGb250U2VsZWN0b3IqKTsKKyAgICB2b2lkIGFkZENsaWVudChGb250U2VsZWN0b3Iq
KTsKKyAgICB2b2lkIHJlbW92ZUNsaWVudChGb250U2VsZWN0b3IqKTsKIAotICAgIHN0YXRpYyB1
bnNpZ25lZCBnZW5lcmF0aW9uKCk7Ci0gICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZSgpOworICAg
IHVuc2lnbmVkIGdlbmVyYXRpb24oKTsKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKIAotICAgIHN0
YXRpYyBzaXplX3QgZm9udERhdGFDb3VudCgpOwotICAgIHN0YXRpYyBzaXplX3QgaW5hY3RpdmVG
b250RGF0YUNvdW50KCk7Ci0gICAgc3RhdGljIHZvaWQgcHVyZ2VJbmFjdGl2ZUZvbnREYXRhKGlu
dCBjb3VudCA9IElOVF9NQVgpOworICAgIHNpemVfdCBmb250RGF0YUNvdW50KCk7CisgICAgc2l6
ZV90IGluYWN0aXZlRm9udERhdGFDb3VudCgpOworICAgIHZvaWQgcHVyZ2VJbmFjdGl2ZUZvbnRE
YXRhKGludCBjb3VudCA9IElOVF9NQVgpOwogCiBwcml2YXRlOgorICAgIEZvbnRDYWNoZSgpOwor
CiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQgYnkgZWFjaCBwbGF0Zm9ybS4K
LSAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSogZ2V0U2ltaWxhckZvbnRQbGF0Zm9ybURhdGEo
Y29uc3QgRm9udCYpOwotICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhKiBjcmVhdGVGb250UGxh
dGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgZmFt
aWx5KTsKKyAgICBGb250UGxhdGZvcm1EYXRhKiBnZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250Jik7CisgICAgRm9udFBsYXRmb3JtRGF0YSogY3JlYXRlRm9udFBsYXRmb3JtRGF0
YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSk7CiAK
ICAgICBmcmllbmQgY2xhc3MgU2ltcGxlRm9udERhdGE7CiAgICAgZnJpZW5kIGNsYXNzIEZvbnRG
YWxsYmFja0xpc3Q7CiB9OwogCisvLyBHZXQgdGhlIGdsb2JhbCBmb250Q2FjaGUuCitGb250Q2Fj
aGUqIGZvbnRDYWNoZSgpOwogfQogCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udEZhbGxiYWNrTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250RmFsbGJhY2tMaXN0LmNwcAkocmV2aXNpb24gMzkyOTYpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYWxsYmFja0xpc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw3ICs0MCw3IEBAIEZvbnRGYWxsYmFja0xpc3Q6OkZvbnRGYWxsYmFja0xpc3QoKQog
ICAgICwgbV9waXRjaChVbmtub3duUGl0Y2gpCiAgICAgLCBtX2xvYWRpbmdDdXN0b21Gb250cyhm
YWxzZSkKICAgICAsIG1fZm9udFNlbGVjdG9yKDApCi0gICAgLCBtX2dlbmVyYXRpb24oRm9udENh
Y2hlOjpnZW5lcmF0aW9uKCkpCisgICAgLCBtX2dlbmVyYXRpb24oZm9udENhY2hlKCktPmdlbmVy
YXRpb24oKSkKIHsKIH0KIApAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEZvbnRGYWxsYmFja0xpc3Q6
OmludmFsaWRhdGUoUGFzc1JlCiAgICAgbV9waXRjaCA9IFVua25vd25QaXRjaDsKICAgICBtX2xv
YWRpbmdDdXN0b21Gb250cyA9IGZhbHNlOwogICAgIG1fZm9udFNlbGVjdG9yID0gZm9udFNlbGVj
dG9yOwotICAgIG1fZ2VuZXJhdGlvbiA9IEZvbnRDYWNoZTo6Z2VuZXJhdGlvbigpOworICAgIG1f
Z2VuZXJhdGlvbiA9IGZvbnRDYWNoZSgpLT5nZW5lcmF0aW9uKCk7CiB9CiAKIHZvaWQgRm9udEZh
bGxiYWNrTGlzdDo6cmVsZWFzZUZvbnREYXRhKCkKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBGb250
RmFsbGJhY2tMaXN0OjpyZWxlYXNlRm9udERhdGEoKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1Gb250czsgKytpKSB7CiAgICAgICAgIGlmICghbV9mb250TGlzdFtpXS5zZWNvbmQp
IHsKICAgICAgICAgICAgIEFTU0VSVCghbV9mb250TGlzdFtpXS5maXJzdC0+aXNTZWdtZW50ZWQo
KSk7Ci0gICAgICAgICAgICBGb250Q2FjaGU6OnJlbGVhc2VGb250RGF0YShzdGF0aWNfY2FzdDxj
b25zdCBTaW1wbGVGb250RGF0YSo+KG1fZm9udExpc3RbaV0uZmlyc3QpKTsKKyAgICAgICAgICAg
IGZvbnRDYWNoZSgpLT5yZWxlYXNlRm9udERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgU2ltcGxlRm9u
dERhdGEqPihtX2ZvbnRMaXN0W2ldLmZpcnN0KSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC05
Niw4ICs5Niw4IEBAIGNvbnN0IEZvbnREYXRhKiBGb250RmFsbGJhY2tMaXN0Ojpmb250RGEKICAg
ICAvLyBXZSBhcmUgb2J0YWluaW5nIHRoaXMgZm9udCBmb3IgdGhlIGZpcnN0IHRpbWUuICBXZSBr
ZWVwIHRyYWNrIG9mIHRoZSBmYW1pbGllcyB3ZSd2ZSBsb29rZWQgYXQgYmVmb3JlCiAgICAgLy8g
aW4gfG1fZmFtaWx5SW5kZXh8LCBzbyB0aGF0IHdlIG5ldmVyIHNjYW4gdGhlIHNhbWUgc3BvdCBp
biB0aGUgbGlzdCB0d2ljZS4gIGdldEZvbnREYXRhIHdpbGwgYWRqdXN0IG91cgogICAgIC8vIHxt
X2ZhbWlseUluZGV4fCBhcyBpdCBzY2FucyBmb3IgdGhlIHJpZ2h0IGZvbnQgdG8gbWFrZS4KLSAg
ICBBU1NFUlQoRm9udENhY2hlOjpnZW5lcmF0aW9uKCkgPT0gbV9nZW5lcmF0aW9uKTsKLSAgICBj
b25zdCBGb250RGF0YSogcmVzdWx0ID0gRm9udENhY2hlOjpnZXRGb250RGF0YSgqZm9udCwgbV9m
YW1pbHlJbmRleCwgbV9mb250U2VsZWN0b3IuZ2V0KCkpOworICAgIEFTU0VSVChmb250Q2FjaGUo
KS0+Z2VuZXJhdGlvbigpID09IG1fZ2VuZXJhdGlvbik7CisgICAgY29uc3QgRm9udERhdGEqIHJl
c3VsdCA9IGZvbnRDYWNoZSgpLT5nZXRGb250RGF0YSgqZm9udCwgbV9mYW1pbHlJbmRleCwgbV9m
b250U2VsZWN0b3IuZ2V0KCkpOwogICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAgbV9mb250TGlz
dC5hcHBlbmQocGFpcjxjb25zdCBGb250RGF0YSosIGJvb2w+KHJlc3VsdCwgcmVzdWx0LT5pc0N1
c3RvbUZvbnQoKSkpOwogICAgICAgICBpZiAocmVzdWx0LT5pc0xvYWRpbmcoKSkKQEAgLTExNiw4
ICsxMTYsOCBAQCBjb25zdCBGb250RGF0YSogRm9udEZhbGxiYWNrTGlzdDo6Zm9udERhCiAgICAg
ICAgIGZvbnREYXRhID0gZm9udERhdGFBdChmb250LCArK3JlYWxpemVkRm9udEluZGV4KTsKICAg
ICAKICAgICBpZiAoIWZvbnREYXRhKSB7Ci0gICAgICAgIEFTU0VSVChGb250Q2FjaGU6OmdlbmVy
YXRpb24oKSA9PSBtX2dlbmVyYXRpb24pOwotICAgICAgICBmb250RGF0YSA9IEZvbnRDYWNoZTo6
Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKCpmb250LCBjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAg
ICAgICBBU1NFUlQoZm9udENhY2hlKCktPmdlbmVyYXRpb24oKSA9PSBtX2dlbmVyYXRpb24pOwor
ICAgICAgICBmb250RGF0YSA9IGZvbnRDYWNoZSgpLT5nZXRGb250RGF0YUZvckNoYXJhY3RlcnMo
KmZvbnQsIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGZvbnREYXRh
OwpAQCAtMTI2LDggKzEyNiw4IEBAIGNvbnN0IEZvbnREYXRhKiBGb250RmFsbGJhY2tMaXN0Ojpm
b250RGEKIHZvaWQgRm9udEZhbGxiYWNrTGlzdDo6c2V0UGxhdGZvcm1Gb250KGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICBtX2ZhbWlseUluZGV4ID0gY0FsbEZh
bWlsaWVzU2Nhbm5lZDsKLSAgICBBU1NFUlQoRm9udENhY2hlOjpnZW5lcmF0aW9uKCkgPT0gbV9n
ZW5lcmF0aW9uKTsKLSAgICBjb25zdCBGb250RGF0YSogZm9udERhdGEgPSBGb250Q2FjaGU6Omdl
dENhY2hlZEZvbnREYXRhKCZwbGF0Zm9ybURhdGEpOworICAgIEFTU0VSVChmb250Q2FjaGUoKS0+
Z2VuZXJhdGlvbigpID09IG1fZ2VuZXJhdGlvbik7CisgICAgY29uc3QgRm9udERhdGEqIGZvbnRE
YXRhID0gZm9udENhY2hlKCktPmdldENhY2hlZEZvbnREYXRhKCZwbGF0Zm9ybURhdGEpOwogICAg
IG1fZm9udExpc3QuYXBwZW5kKHBhaXI8Y29uc3QgRm9udERhdGEqLCBib29sPihmb250RGF0YSwg
Zm9udERhdGEtPmlzQ3VzdG9tRm9udCgpKSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udEZhc3RQYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRGYXN0UGF0aC5jcHAJKHJldmlzaW9uIDM5Mjk2KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQs
NyArMTQ0LDcgQEAgY29uc3QgR2x5cGhEYXRhJiBGb250OjpnbHlwaERhdGFGb3JDaGFyYQogICAg
ICAgICBjb2RlVW5pdHNbMV0gPSBVMTZfVFJBSUwoYyk7CiAgICAgICAgIGNvZGVVbml0c0xlbmd0
aCA9IDI7CiAgICAgfQotICAgIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBjaGFyYWN0ZXJGb250RGF0
YSA9IEZvbnRDYWNoZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKCp0aGlzLCBjb2RlVW5pdHMs
IGNvZGVVbml0c0xlbmd0aCk7CisgICAgY29uc3QgU2ltcGxlRm9udERhdGEqIGNoYXJhY3RlckZv
bnREYXRhID0gZm9udENhY2hlKCktPmdldEZvbnREYXRhRm9yQ2hhcmFjdGVycygqdGhpcywgY29k
ZVVuaXRzLCBjb2RlVW5pdHNMZW5ndGgpOwogICAgIGlmICh1c2VTbWFsbENhcHNGb250ICYmIGNo
YXJhY3RlckZvbnREYXRhKQogICAgICAgICBjaGFyYWN0ZXJGb250RGF0YSA9IGNoYXJhY3RlckZv
bnREYXRhLT5zbWFsbENhcHNGb250RGF0YShtX2ZvbnREZXNjcmlwdGlvbik7CiAgICAgaWYgKGNo
YXJhY3RlckZvbnREYXRhKSB7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBs
ZUZvbnREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Np
bXBsZUZvbnREYXRhLmNwcAkocmV2aXNpb24gMzkyOTYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3
IEBAIFNpbXBsZUZvbnREYXRhOjp+U2ltcGxlRm9udERhdGEoKQogewogICAgIGlmICghaXNDdXN0
b21Gb250KCkpIHsKICAgICAgICAgaWYgKG1fc21hbGxDYXBzRm9udERhdGEpCi0gICAgICAgICAg
ICBGb250Q2FjaGU6OnJlbGVhc2VGb250RGF0YShtX3NtYWxsQ2Fwc0ZvbnREYXRhKTsKKyAgICAg
ICAgICAgIGZvbnRDYWNoZSgpLT5yZWxlYXNlRm9udERhdGEobV9zbWFsbENhcHNGb250RGF0YSk7
CiAgICAgICAgIEdseXBoUGFnZVRyZWVOb2RlOjpwcnVuZVRyZWVGb250RGF0YSh0aGlzKTsKICAg
ICB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVN
YWMubW0JKHJldmlzaW9uIDM5Mjk2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udENhY2hlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIHZvaWQgZm9udENhY2hlQVRTTm90aWZpY2F0aW9uQ2FsbGJh
Y2soQVRTRm9udE5vdGlmaWNhdGlvbkluZm9SZWYsIHZvaWQqKQogewotICAgIEZvbnRDYWNoZTo6
aW52YWxpZGF0ZSgpOworICAgIGZvbnRDYWNoZSgpLT5pbnZhbGlkYXRlKCk7CiB9CiAKIHZvaWQg
Rm9udENhY2hlOjpwbGF0Zm9ybUluaXQoKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0JKHJldmlzaW9uIDM5Mjk2KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTMxNCw3ICszMTQsNyBAQCBTaW1wbGVGb250RGF0YSogU2ltcGxlRm9udERh
dGE6OnNtYWxsQ2FwCiAgICAgICAgICAgICAgICAgc21hbGxDYXBzRm9udC5tX3N5bnRoZXRpY0Jv
bGQgPSAoZm9udFRyYWl0cyAmIE5TQm9sZEZvbnRNYXNrKSAmJiAhKHNtYWxsQ2Fwc0ZvbnRUcmFp
dHMgJiBOU0JvbGRGb250TWFzayk7CiAgICAgICAgICAgICAgICAgc21hbGxDYXBzRm9udC5tX3N5
bnRoZXRpY09ibGlxdWUgPSAoZm9udFRyYWl0cyAmIE5TSXRhbGljRm9udE1hc2spICYmICEoc21h
bGxDYXBzRm9udFRyYWl0cyAmIE5TSXRhbGljRm9udE1hc2spOwogCi0gICAgICAgICAgICAgICAg
bV9zbWFsbENhcHNGb250RGF0YSA9IEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udERhdGEoJnNtYWxs
Q2Fwc0ZvbnQpOworICAgICAgICAgICAgICAgIG1fc21hbGxDYXBzRm9udERhdGEgPSBmb250Q2Fj
aGUoKS0+Z2V0Q2FjaGVkRm9udERhdGEoJnNtYWxsQ2Fwc0ZvbnQpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICAgICAgfQpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCShyZXZp
c2lvbiAzOTI5NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMgY29uc3QgVmVj
dG9yPERXT1JELCA0PiYgZ2V0Q0pLQ29kCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7CiAg
ICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7Ci0gICAg
ICAgIElNTGFuZ0ZvbnRMaW5rMiogbGFuZ0ZvbnRMaW5rID0gRm9udENhY2hlOjpnZXRGb250TGlu
a0ludGVyZmFjZSgpOworICAgICAgICBJTUxhbmdGb250TGluazIqIGxhbmdGb250TGluayA9IGZv
bnRDYWNoZSgpLT5nZXRGb250TGlua0ludGVyZmFjZSgpOwogICAgICAgICBpZiAoIWxhbmdGb250
TGluaykKICAgICAgICAgICAgIHJldHVybiBjb2RlUGFnZU1hc2tzOwogCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YVdpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFXaW4uY3BwCShy
ZXZpc2lvbiAzOTI5NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZv
bnREYXRhV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIGJvb2wgU2lt
cGxlRm9udERhdGE6OmNvbnRhaW5zQ2hhcmFjdGVycygKICAgICAvLyBGSVhNRTogTWljcm9zb2Z0
IGRvY3VtZW50YXRpb24gc2VlbXMgdG8gaW1wbHkgdGhhdCBjaGFyYWN0ZXJzIGNhbiBiZSBvdXRw
dXQgdXNpbmcgYSBnaXZlbiBmb250IGFuZCBEQwogICAgIC8vIG1lcmVseSBieSB0ZXN0aW5nIGNv
ZGUgcGFnZSBpbnRlcnNlY3Rpb24uICBUaGlzIHNlZW1zIHN1c3BlY3QgdGhvdWdoLiAgQ2FuJ3Qg
YSBmb250IG9ubHkgcGFydGlhbGx5CiAgICAgLy8gY292ZXIgYSBnaXZlbiBjb2RlIHBhZ2U/Ci0g
ICAgSU1MYW5nRm9udExpbmsyKiBsYW5nRm9udExpbmsgPSBGb250Q2FjaGU6OmdldEZvbnRMaW5r
SW50ZXJmYWNlKCk7CisgICAgSU1MYW5nRm9udExpbmsyKiBsYW5nRm9udExpbmsgPSBmb250Q2Fj
aGUoKS0+Z2V0Rm9udExpbmtJbnRlcmZhY2UoKTsKICAgICBpZiAoIWxhbmdGb250TGluaykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMzkyOTYpCisrKyBXZWJLaXQv
bWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDA4LTEyLTE0
ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyMjg2MTogVHVybiB0aGUg
Rm9udENhY2hlIGludG8gYSBzaW5nbGV0b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyODYxCisKKyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0aXN0
aWNzLm1tOgorICAgICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBjYWNoZWRGb250RGF0YUNvdW50
XSk6CisgICAgICAgICgrW1dlYkNvcmVTdGF0aXN0aWNzIGNhY2hlZEZvbnREYXRhSW5hY3RpdmVD
b3VudF0pOgorICAgICAgICAoK1tXZWJDb3JlU3RhdGlzdGljcyBwdXJnZUluYWN0aXZlRm9udERh
dGFdKToKKyAgICAgICAgUmVkaXJlY3RlZCBhbGwgdGhlIHN0YXRpYyBjYWxscyB0byB0aGUgZ2xv
YmFsIEZvbnRDYWNoZQorICAgICAgICBpbnN0YW5jZS4KKwogMjAwOC0xMi0xNCAgRGFuIEJlcm5z
dGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpJbmRleDogV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQkocmV2aXNpb24gMzkyOTYp
CisrKyBXZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0JKHdvcmtpbmcgY29weSkK
QEAgLTEyMiwxNyArMTIyLDE3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiArIChzaXpl
X3QpY2FjaGVkRm9udERhdGFDb3VudAogewotICAgIHJldHVybiBGb250Q2FjaGU6OmZvbnREYXRh
Q291bnQoKTsKKyAgICByZXR1cm4gZm9udENhY2hlKCktPmZvbnREYXRhQ291bnQoKTsKIH0KIAog
KyAoc2l6ZV90KWNhY2hlZEZvbnREYXRhSW5hY3RpdmVDb3VudAogewotICAgIHJldHVybiBGb250
Q2FjaGU6OmluYWN0aXZlRm9udERhdGFDb3VudCgpOworICAgIHJldHVybiBmb250Q2FjaGUoKS0+
aW5hY3RpdmVGb250RGF0YUNvdW50KCk7CiB9CiAKICsgKHZvaWQpcHVyZ2VJbmFjdGl2ZUZvbnRE
YXRhCiB7Ci0gICAgRm9udENhY2hlOjpwdXJnZUluYWN0aXZlRm9udERhdGEoKTsKKyAgICBmb250
Q2FjaGUoKS0+cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CiB9CiAKICsgKHNpemVfdClnbHlwaFBh
Z2VDb3VudApJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDM5Mjk2KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAwOC0xMi0xNCAgSnVsaWVuIENoYWZm
cmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMjI4NjE6IFR1cm4gdGhlIEZvbnRDYWNoZSBpbnRv
IGEgc2luZ2xldG9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjg2MQorCisgICAgICAgICogV2ViQ29yZVN0YXRpc3RpY3MuY3BwOgorICAgICAgICAo
V2ViQ29yZVN0YXRpc3RpY3M6OmNhY2hlZEZvbnREYXRhQ291bnQpOgorICAgICAgICAoV2ViQ29y
ZVN0YXRpc3RpY3M6OmNhY2hlZEZvbnREYXRhSW5hY3RpdmVDb3VudCk6CisgICAgICAgIChXZWJD
b3JlU3RhdGlzdGljczo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKToKKyAgICAgICAgUmVkaXJlY3Rl
ZCBhbGwgdGhlIHN0YXRpYyBjYWxscyB0byB0aGUgZ2xvYmFsIEZvbnRDYWNoZQorICAgICAgICBp
bnN0YW5jZS4KKwogMjAwOC0xMi0xNCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L3dpbi9XZWJD
b3JlU3RhdGlzdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3RhdGlz
dGljcy5jcHAJKHJldmlzaW9uIDM5Mjk2KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3RhdGlzdGlj
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw3ICsxOTIsNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkNvcmVTdGF0aXN0CiB7CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKLSAgICAqY291bnQgPSAoVUlOVCkgRm9udENhY2hlOjpmb250RGF0YUNv
dW50KCk7CisgICAgKmNvdW50ID0gKFVJTlQpIGZvbnRDYWNoZSgpLT5mb250RGF0YUNvdW50KCk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTIwMSwxMyArMjAxLDEzIEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViQ29yZVN0YXRpc3QKIHsKICAgICBpZiAoIWNvdW50KQogICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOwotICAgICpjb3VudCA9IChVSU5UKSBGb250Q2FjaGU6OmluYWN0
aXZlRm9udERhdGFDb3VudCgpOworICAgICpjb3VudCA9IChVSU5UKSBmb250Q2FjaGUoKS0+aW5h
Y3RpdmVGb250RGF0YUNvdW50KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViQ29yZVN0YXRpc3RpY3M6OnB1cmdlSW5hY3RpdmVGb250RGF0YSh2
b2lkKQogewotICAgIEZvbnRDYWNoZTo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CisgICAgZm9u
dENhY2hlKCktPnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOwogICAgIHJldHVybiBTX09LOwogfQog
Cg==
</data>
<flag name="review"
          id="12283"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>