<?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>23297</bug_id>
          
          <creation_ts>2009-01-13 11:21:01 -0800</creation_ts>
          <short_desc>Upstream some of platform/graphics/chromium</short_desc>
          <delta_ts>2009-01-13 13:05:36 -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>WebKit 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="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>105528</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-01-13 11:21:01 -0800</bug_when>
    <thetext>Font-related files, pre-scrubbed for easy digestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105532</commentid>
    <comment_count>1</comment_count>
      <attachid>26676</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-01-13 11:38:41 -0800</bug_when>
    <thetext>Created attachment 26676
add a few font-related files

 .../graphics/chromium/FontCustomPlatformData.cpp   |  232 ++++++++++++++++++++
 .../graphics/chromium/FontCustomPlatformData.h     |   70 ++++++
 WebCore/platform/graphics/chromium/FontLinux.cpp   |  111 ++++++++++
 .../platform/graphics/chromium/FontPlatformData.h  |   43 ++++
 4 files changed, 456 insertions(+), 0 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105537</commentid>
    <comment_count>2</comment_count>
      <attachid>26676</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-01-13 11:44:41 -0800</bug_when>
    <thetext>Comment on attachment 26676
add a few font-related files

Looks good except for:
 #ifndef FontPlatformData_h
 32 #define FontPlatformData_h
 33 
 34 #include &quot;config.h&quot;
 35 #include &quot;build/build_config.h&quot;
 36 
 37 #if defined(OS_WIN)
 38 #include &quot;FontPlatformDataChromiumWin.h&quot;
 39 #elif defined(OS_LINUX)
 40 #include &quot;FontPlatformDataLinux.h&quot;
 41 #endif
 42 

We never include config.h in a header.  And I would think we should use WebCore equivilents to the OS_ defines, like PLATFORM(WIN_OS) and defined(__linux__) (since we don&apos;t seem to have a PLATFORM(LINUX).  Otherwise you&apos;re good to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105557</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-01-13 13:05:36 -0800</bug_when>
    <thetext>Comments addressed and committed in http://trac.webkit.org/changeset/39875</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26676</attachid>
            <date>2009-01-13 11:38:41 -0800</date>
            <delta_ts>2009-01-13 11:44:41 -0800</delta_ts>
            <desc>add a few font-related files</desc>
            <filename>add-a-few-font-related-files.patch</filename>
            <type>text/plain</type>
            <size>18283</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">NzNkNDMwN2I5Yzc0MTBlYzQxY2JiNDM1Yjc3MjA2OTViZjFjYzQ4MgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY4ZGY4OAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTAsMCArMSwyMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDcgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAwNywgMjAw
OCwgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIgorCisjaWYgUExBVEZPUk0o
V0lOX09TKQorI2luY2x1ZGUgIkJhc2U2NC5oIgorI2luY2x1ZGUgIkNocm9taXVtQnJpZGdlLmgi
CisjaW5jbHVkZSAiT3BlblR5cGVVdGlsaXRpZXMuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiRm9u
dFBsYXRmb3JtRGF0YS5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCisKKyNpZiBQTEFURk9STShXSU5fT1MpCisjaW5jbHVkZSA8b2JqYmFz
ZS5oPgorI2luY2x1ZGUgPHQyZW1iYXBpLmg+CisjcHJhZ21hIGNvbW1lbnQobGliLCAidDJlbWJl
ZCIpCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitGb250Q3VzdG9tUGxhdGZvcm1E
YXRhOjp+Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgpCit7CisjaWYgUExBVEZPUk0oV0lOX09TKQor
ICAgIGlmIChtX2ZvbnRSZWZlcmVuY2UpIHsKKyAgICAgICAgaWYgKG1fbmFtZS5pc051bGwoKSkg
eworICAgICAgICAgICAgVUxPTkcgc3RhdHVzOworICAgICAgICAgICAgVFREZWxldGVFbWJlZGRl
ZEZvbnQobV9mb250UmVmZXJlbmNlLCAwLCAmc3RhdHVzKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBSZW1vdmVGb250TWVtUmVzb3VyY2VFeChtX2ZvbnRSZWZlcmVuY2UpOworICAgIH0K
KyNlbmRpZgorfQorCitGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZv
bnRQbGF0Zm9ybURhdGEoaW50IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIEZvbnRSZW5k
ZXJpbmdNb2RlIG1vZGUpCit7CisjaWYgUExBVEZPUk0oV0lOX09TKQorICAgIEFTU0VSVChtX2Zv
bnRSZWZlcmVuY2UpOworCisgICAgTE9HRk9OVCBsb2dGb250OworICAgIGlmIChtX25hbWUuaXNO
dWxsKCkpCisgICAgICAgIFRUR2V0TmV3Rm9udE5hbWUoJm1fZm9udFJlZmVyZW5jZSwgbG9nRm9u
dC5sZkZhY2VOYW1lLCBMRl9GQUNFU0laRSwgMCwgMCk7CisgICAgZWxzZSB7CisgICAgICAgIC8v
IG1fbmFtZSBjb21lcyBmcm9tIGNyZWF0ZVVuaXF1ZUZvbnROYW1lLCB3aGljaCwgaW4gdHVybiwg
Z2V0cworICAgICAgICAvLyBpdCBmcm9tIGJhc2U2NC1lbmNvZGVkIHV1aWQgKDEyOC1iaXQpLiBT
bywgbV9uYW1lCisgICAgICAgIC8vIGNhbiBuZXZlciBiZSBsb25nZXIgdGhhbiBMRl9GQUNFU0la
RSAoMzIpLgorICAgICAgICBpZiAobV9uYW1lLmxlbmd0aCgpICsgMSA+PSBMRl9GQUNFU0laRSkg
eworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4g
Rm9udFBsYXRmb3JtRGF0YSgpOworICAgICAgICB9CisgICAgICAgIG1lbWNweShsb2dGb250Lmxm
RmFjZU5hbWUsIG1fbmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLAorICAgICAg
ICAgICAgICAgc2l6ZW9mKGxvZ0ZvbnQubGZGYWNlTmFtZVswXSkgKiAoMSArIG1fbmFtZS5sZW5n
dGgoKSkpOworICAgIH0KKworICAgIC8vIEZJWE1FOiBhbG1vc3QgaWRlbnRpY2FsIHRvIEZpbGxM
b2dGb250IGluIEZvbnRDYWNoZVdpbi5jcHAuCisgICAgLy8gTmVlZCB0byByZWZhY3Rvci4gCisg
ICAgbG9nRm9udC5sZkhlaWdodCA9IC1zaXplOworICAgIGxvZ0ZvbnQubGZXaWR0aCA9IDA7Cisg
ICAgbG9nRm9udC5sZkVzY2FwZW1lbnQgPSAwOworICAgIGxvZ0ZvbnQubGZPcmllbnRhdGlvbiA9
IDA7CisgICAgbG9nRm9udC5sZlVuZGVybGluZSA9IGZhbHNlOworICAgIGxvZ0ZvbnQubGZTdHJp
a2VPdXQgPSBmYWxzZTsKKyAgICBsb2dGb250LmxmQ2hhclNldCA9IERFRkFVTFRfQ0hBUlNFVDsK
KyAgICBsb2dGb250LmxmT3V0UHJlY2lzaW9uID0gT1VUX1RUX09OTFlfUFJFQ0lTOworICAgIGxv
Z0ZvbnQubGZRdWFsaXR5ID0gQ2hyb21pdW1CcmlkZ2U6OmxheW91dFRlc3RNb2RlKCkgPworICAg
ICAgICAgICAgICAgICAgICAgICAgTk9OQU5USUFMSUFTRURfUVVBTElUWSA6CisgICAgICAgICAg
ICAgICAgICAgICAgICBERUZBVUxUX1FVQUxJVFk7IC8vIEhvbm9yIHVzZXIncyBkZXNrdG9wIHNl
dHRpbmdzLgorICAgIGxvZ0ZvbnQubGZQaXRjaEFuZEZhbWlseSA9IERFRkFVTFRfUElUQ0ggfCBG
Rl9ET05UQ0FSRTsKKyAgICBsb2dGb250LmxmSXRhbGljID0gaXRhbGljOworICAgIGxvZ0ZvbnQu
bGZXZWlnaHQgPSBib2xkID8gNzAwIDogNDAwOworCisgICAgSEZPTlQgaGZvbnQgPSBDcmVhdGVG
b250SW5kaXJlY3QoJmxvZ0ZvbnQpOworICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKGhmb250
LCBzaXplKTsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRm9udFBs
YXRmb3JtRGF0YSgpOworI2VuZGlmCit9CisKKyNpZiBQTEFURk9STShXSU5fT1MpCisvLyBGSVhN
RTogRU9UU3RyZWFtIGNsYXNzIGFuZCBzdGF0aWMgZnVuY3Rpb25zIGluIHRoaXMgI2lmIGJsb2Nr
IGFyZQorLy8gZHVwbGljYXRlZCBmcm9tIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcAorLy8gYW5kIG5lZWQgdG8gYmUgc2hhcmVkLgorCisvLyBTdHJlYW1z
IHRoZSBjb25jYXRlbmF0aW9uIG9mIGEgaGVhZGVyIGFuZCBmb250IGRhdGEuCitjbGFzcyBFT1RT
dHJlYW0geworcHVibGljOgorICAgIEVPVFN0cmVhbShjb25zdCBWZWN0b3I8VUludDgsIDUxMj4m
IGVvdEhlYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBmb250RGF0YSwgc2l6ZV90IG92ZXJsYXlE
c3QsIHNpemVfdCBvdmVybGF5U3JjLCBzaXplX3Qgb3ZlcmxheUxlbmd0aCkKKyAgICAgICAgOiBt
X2VvdEhlYWRlcihlb3RIZWFkZXIpCisgICAgICAgICwgbV9mb250RGF0YShmb250RGF0YSkKKyAg
ICAgICAgLCBtX292ZXJsYXlEc3Qob3ZlcmxheURzdCkKKyAgICAgICAgLCBtX292ZXJsYXlTcmMo
b3ZlcmxheVNyYykKKyAgICAgICAgLCBtX292ZXJsYXlMZW5ndGgob3ZlcmxheUxlbmd0aCkKKyAg
ICAgICAgLCBtX29mZnNldCgwKQorICAgICAgICAsIG1faW5IZWFkZXIodHJ1ZSkKKyAgICB7Cisg
ICAgfQorCisgICAgc2l6ZV90IHJlYWQodm9pZCogYnVmZmVyLCBzaXplX3QgY291bnQpOworCitw
cml2YXRlOgorICAgIGNvbnN0IFZlY3RvcjxVSW50OCwgNTEyPiYgbV9lb3RIZWFkZXI7CisgICAg
Y29uc3QgU2hhcmVkQnVmZmVyKiBtX2ZvbnREYXRhOworICAgIHNpemVfdCBtX292ZXJsYXlEc3Q7
CisgICAgc2l6ZV90IG1fb3ZlcmxheVNyYzsKKyAgICBzaXplX3QgbV9vdmVybGF5TGVuZ3RoOwor
ICAgIHNpemVfdCBtX29mZnNldDsKKyAgICBib29sIG1faW5IZWFkZXI7Cit9OworCitzaXplX3Qg
RU9UU3RyZWFtOjpyZWFkKHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGNvdW50KQoreworICAgIHNpemVf
dCBieXRlc1RvUmVhZCA9IGNvdW50OworICAgIGlmIChtX2luSGVhZGVyKSB7CisgICAgICAgIHNp
emVfdCBieXRlc0Zyb21IZWFkZXIgPSBzdGQ6Om1pbihtX2VvdEhlYWRlci5zaXplKCkgLSBtX29m
ZnNldCwgY291bnQpOworICAgICAgICBtZW1jcHkoYnVmZmVyLCBtX2VvdEhlYWRlci5kYXRhKCkg
KyBtX29mZnNldCwgYnl0ZXNGcm9tSGVhZGVyKTsKKyAgICAgICAgbV9vZmZzZXQgKz0gYnl0ZXNG
cm9tSGVhZGVyOworICAgICAgICBieXRlc1RvUmVhZCAtPSBieXRlc0Zyb21IZWFkZXI7CisgICAg
ICAgIGlmIChtX29mZnNldCA9PSBtX2VvdEhlYWRlci5zaXplKCkpIHsKKyAgICAgICAgICAgIG1f
aW5IZWFkZXIgPSBmYWxzZTsKKyAgICAgICAgICAgIG1fb2Zmc2V0ID0gMDsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBpZiAoYnl0ZXNUb1JlYWQgJiYgIW1faW5IZWFkZXIpIHsKKyAgICAgICAgc2l6
ZV90IGJ5dGVzRnJvbURhdGEgPSBzdGQ6Om1pbihtX2ZvbnREYXRhLT5zaXplKCkgLSBtX29mZnNl
dCwgYnl0ZXNUb1JlYWQpOworICAgICAgICBtZW1jcHkoYnVmZmVyLCBtX2ZvbnREYXRhLT5kYXRh
KCkgKyBtX29mZnNldCwgYnl0ZXNGcm9tRGF0YSk7CisgICAgICAgIGlmIChtX29mZnNldCA8IG1f
b3ZlcmxheURzdCArIG1fb3ZlcmxheUxlbmd0aCAmJiBtX29mZnNldCArIGJ5dGVzRnJvbURhdGEg
Pj0gbV9vdmVybGF5RHN0KSB7CisgICAgICAgICAgICBzaXplX3QgZHN0T2Zmc2V0ID0gc3RkOjpt
YXg8aW50PihtX292ZXJsYXlEc3QgLSBtX29mZnNldCwgMCk7CisgICAgICAgICAgICBzaXplX3Qg
c3JjT2Zmc2V0ID0gc3RkOjptYXg8aW50PigwLCBtX29mZnNldCAtIG1fb3ZlcmxheURzdCk7Cisg
ICAgICAgICAgICBzaXplX3QgYnl0ZXNUb0NvcHkgPSBzdGQ6Om1pbihieXRlc0Zyb21EYXRhIC0g
ZHN0T2Zmc2V0LCBtX292ZXJsYXlMZW5ndGggLSBzcmNPZmZzZXQpOworICAgICAgICAgICAgbWVt
Y3B5KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlcikgKyBkc3RPZmZzZXQsIG1fZm9udERh
dGEtPmRhdGEoKSArIG1fb3ZlcmxheVNyYyArIHNyY09mZnNldCwgYnl0ZXNUb0NvcHkpOworICAg
ICAgICB9CisgICAgICAgIG1fb2Zmc2V0ICs9IGJ5dGVzRnJvbURhdGE7CisgICAgICAgIGJ5dGVz
VG9SZWFkIC09IGJ5dGVzRnJvbURhdGE7CisgICAgfQorICAgIHJldHVybiBjb3VudCAtIGJ5dGVz
VG9SZWFkOworfQorCitzdGF0aWMgdW5zaWduZWQgbG9uZyBXSU5BUElWIHJlYWRFbWJlZFByb2Mo
dm9pZCogc3RyZWFtLCB2b2lkKiBidWZmZXIsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKQoreworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxFT1RTdHJlYW0qPihzdHJlYW0pLT5yZWFkKGJ1ZmZlciwgbGVu
Z3RoKTsKK30KKworLy8gQ3JlYXRlcyBhIHVuaXF1ZSBhbmQgdW5wcmVkaWN0YWJsZSBmb250IG5h
bWUsIGluIG9yZGVyIHRvIGF2b2lkIGNvbGxpc2lvbnMgYW5kIHRvCisvLyBub3QgYWxsb3cgYWNj
ZXNzIGZyb20gQ1NTLgorc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCit7Cisg
ICAgVmVjdG9yPGNoYXI+IGZvbnRVdWlkKHNpemVvZihHVUlEKSk7CisgICAgQ29DcmVhdGVHdWlk
KHJlaW50ZXJwcmV0X2Nhc3Q8R1VJRCo+KGZvbnRVdWlkLmRhdGEoKSkpOworCisgICAgVmVjdG9y
PGNoYXI+IGZvbnROYW1lVmVjdG9yOworICAgIGJhc2U2NEVuY29kZShmb250VXVpZCwgZm9udE5h
bWVWZWN0b3IpOworICAgIEFTU0VSVChmb250TmFtZVZlY3Rvci5zaXplKCkgPCBMRl9GQUNFU0la
RSk7CisgICAgcmV0dXJuIFN0cmluZyhmb250TmFtZVZlY3Rvci5kYXRhKCksIGZvbnROYW1lVmVj
dG9yLnNpemUoKSk7Cit9CisjZW5kaWYKKworRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBBU1NF
UlRfQVJHKGJ1ZmZlciwgYnVmZmVyKTsKKworI2lmIFBMQVRGT1JNKFdJTl9PUykKKyAgICAvLyBJ
bnRyb2R1Y2UgdGhlIGZvbnQgdG8gR0RJLiBBZGRGb250TWVtUmVzb3VyY2VFeCBjYW5ub3QgYmUg
dXNlZCwgYmVjYXVzZSBpdCB3aWxsIHBvbGx1dGUgdGhlIHByb2Nlc3MncworICAgIC8vIGZvbnQg
bmFtZXNwYWNlIChXaW5kb3dzIGhhcyBubyBBUEkgZm9yIGNyZWF0aW5nIGFuIEhGT05UIGZyb20g
ZGF0YSB3aXRob3V0IGV4cG9zaW5nIHRoZSBmb250IHRvIHRoZQorICAgIC8vIGVudGlyZSBwcm9j
ZXNzIGZpcnN0KS4gVFRMb2FkRW1iZWRkZWRGb250IGxldHMgdXMgb3ZlcnJpZGUgdGhlIGZvbnQg
ZmFtaWx5IG5hbWUsIHNvIHVzaW5nIGEgdW5pcXVlIG5hbWUKKyAgICAvLyB3ZSBhdm9pZCBuYW1l
c3BhY2UgY29sbGlzaW9ucy4KKworICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZv
bnROYW1lKCk7CisKKyAgICAvLyBUVExvYWRFbWJlZGRlZEZvbnQgd29ya3Mgb25seSB3aXRoIEVt
YmVkZGVkIE9wZW5UeXBlICguZW90KSBkYXRhLAorICAgIC8vIHNvIHdlIG5lZWQgdG8gY3JlYXRl
IGFuIEVPVCBoZWFkZXIgYW5kIHByZXBlbmQgaXQgdG8gdGhlIGZvbnQgZGF0YS4KKyAgICBWZWN0
b3I8VUludDgsIDUxMj4gZW90SGVhZGVyOworICAgIHNpemVfdCBvdmVybGF5RHN0OworICAgIHNp
emVfdCBvdmVybGF5U3JjOworICAgIHNpemVfdCBvdmVybGF5TGVuZ3RoOworCisgICAgaWYgKCFn
ZXRFT1RIZWFkZXIoYnVmZmVyLCBlb3RIZWFkZXIsIG92ZXJsYXlEc3QsIG92ZXJsYXlTcmMsIG92
ZXJsYXlMZW5ndGgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEhBTkRMRSBmb250UmVmZXJl
bmNlOworICAgIFVMT05HIHByaXZTdGF0dXM7CisgICAgVUxPTkcgc3RhdHVzOworICAgIEVPVFN0
cmVhbSBlb3RTdHJlYW0oZW90SGVhZGVyLCBidWZmZXIsIG92ZXJsYXlEc3QsIG92ZXJsYXlTcmMs
IG92ZXJsYXlMZW5ndGgpOworCisgICAgTE9ORyBsb2FkRW1iZWRkZWRGb250UmVzdWx0ID0gVFRM
b2FkRW1iZWRkZWRGb250KCZmb250UmVmZXJlbmNlLCBUVExPQURfUFJJVkFURSwgJnByaXZTdGF0
dXMsIExJQ0VOU0VfUFJFVklFV1BSSU5ULCAmc3RhdHVzLCByZWFkRW1iZWRQcm9jLCAmZW90U3Ry
ZWFtLCBjb25zdF9jYXN0PExQV1NUUj4oZm9udE5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKSksIDAsIDApOworICAgIGlmIChsb2FkRW1iZWRkZWRGb250UmVzdWx0ID09IEVfTk9O
RSkKKyAgICAgICAgZm9udE5hbWUgPSBTdHJpbmcoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9u
dFJlZmVyZW5jZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKKyAg
ICAgICAgaWYgKCFmb250UmVmZXJlbmNlKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
CisgICAgcmV0dXJuIG5ldyBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKGZvbnRSZWZlcmVuY2UsIGZv
bnROYW1lKTsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTs7CisgICAgcmV0dXJuIDA7Cisj
ZW5kaWYKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4yZjFhNTk3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTAsMCArMSw3
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBDb21wdXRlciwgSW5jLgorICog
Q29weXJpZ2h0IChjKSAyMDA3LCAyMDA4LCAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
IAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgRm9udEN1c3RvbVBsYXRmb3JtRGF0YV9oCisjZGVmaW5lIEZvbnRDdXN0
b21QbGF0Zm9ybURhdGFfaAorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKKyNpZiBQ
TEFURk9STShXSU5fT1MpCisjaW5jbHVkZSAiRm9udFJlbmRlcmluZ01vZGUuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZvbnRQbGF0Zm9ybURhdGE7CitjbGFzcyBTaGFyZWRC
dWZmZXI7CisKK3N0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhIDogTm9uY29weWFibGUgewor
I2lmIFBMQVRGT1JNKFdJTl9PUykKKyAgICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEhBTkRMRSBm
b250UmVmZXJlbmNlLCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgICAgIDogbV9mb250UmVmZXJl
bmNlKGZvbnRSZWZlcmVuY2UpCisgICAgICAgICwgbV9uYW1lKG5hbWUpCisgICAge30KKyNlbmRp
ZgorCisgICAgfkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKTsKKworICAgIEZvbnRQbGF0Zm9ybURh
dGEgZm9udFBsYXRmb3JtRGF0YShpbnQgc2l6ZSwgYm9vbCBib2xkLCBib29sIGl0YWxpYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9udFJlbmRlcmluZ01vZGUgPSBO
b3JtYWxSZW5kZXJpbmdNb2RlKTsKKworI2lmIFBMQVRGT1JNKFdJTl9PUykKKyAgICBIQU5ETEUg
bV9mb250UmVmZXJlbmNlOworICAgIFN0cmluZyBtX25hbWU7CisjZW5kaWYKK307CisKK0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVm
ZmVyKik7Cit9CisKKyNlbmRpZiAvLyBGb250Q3VzdG9tUGxhdGZvcm1EYXRhX2gKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udExpbnV4LmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udExpbnV4LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTNlNjE0Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250TGludXguY3BwCkBAIC0wLDAgKzEs
MTExIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA4LCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGb250LmgiCisK
KyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgorI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgi
CisKKyNpbmNsdWRlICJTa0NhbnZhcy5oIgorI2luY2x1ZGUgIlNrUGFpbnQuaCIKKyNpbmNsdWRl
ICJTa1RlbXBsYXRlcy5oIgorI2luY2x1ZGUgIlNrVHlwZWZhY2UuaCIKKyNpbmNsdWRlICJTa1V0
aWxzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBGb250OjpkcmF3R2x5cGhzKEdy
YXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LAorICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgIGludCBmcm9tLCBp
bnQgbnVtR2x5cGhzLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50KSBjb25zdCB7CisgICAgU2tDYW52YXMqIGNhbnZhcyA9IGdjLT5wbGF0Zm9ybUNvbnRleHQo
KS0+Y2FudmFzKCk7CisgICAgU2tQYWludCBwYWludDsKKworICAgIGdjLT5wbGF0Zm9ybUNvbnRl
eHQoKS0+c2V0dXBQYWludENvbW1vbigmcGFpbnQpOworICAgIGZvbnQtPnBsYXRmb3JtRGF0YSgp
LnNldHVwUGFpbnQoJnBhaW50KTsKKyAgICBwYWludC5zZXRUZXh0RW5jb2RpbmcoU2tQYWludDo6
a0dseXBoSURfVGV4dEVuY29kaW5nKTsKKyAgICBwYWludC5zZXRDb2xvcihnYy0+ZmlsbENvbG9y
KCkucmdiKCkpOworCisgICAgU2tBU1NFUlQoc2l6ZW9mKEdseXBoQnVmZmVyR2x5cGgpID09IHNp
emVvZih1aW50MTZfdCkpOyAgLy8gY29tcGlsZS10aW1lIGFzc2VydAorCisgICAgY29uc3QgR2x5
cGhCdWZmZXJHbHlwaCogZ2x5cGhzID0gZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pOworICAgIFNr
U2NhbGFyIHggPSBTa0Zsb2F0VG9TY2FsYXIocG9pbnQueCgpKTsKKyAgICBTa1NjYWxhciB5ID0g
U2tGbG9hdFRvU2NhbGFyKHBvaW50LnkoKSk7CisKKyAgICAvLyBGSVhNRTogdGV4dCByZW5kZXJp
bmcgc3BlZWQ6CisgICAgLy8gQW5kcm9pZCBoYXMgY29kZSBpbiB0aGVpciBXZWJDb3JlIGZvcmsg
dG8gc3BlY2lhbCBjYXNlIHdoZW4gdGhlCisgICAgLy8gR2x5cGhCdWZmZXIgaGFzIG5vIGFkdmFu
Y2VzIG90aGVyIHRoYW4gdGhlIGRlZmF1bHRzLiBJbiB0aGF0IGNhc2UgdGhlCisgICAgLy8gdGV4
dCBkcmF3aW5nIGNhbiBwcm9jZWVkIGZhc3Rlci4gSG93ZXZlciwgaXQncyB1bmNsZWFyIHdoZW4g
dGhvc2UKKyAgICAvLyBwYXRjaGVzIG1heSBiZSB1cHN0cmVhbWVkIHRvIFdlYktpdCBzbyB3ZSBh
bHdheXMgdXNlIHRoZSBzbG93ZXIgcGF0aAorICAgIC8vIGhlcmUuCisgICAgY29uc3QgR2x5cGhC
dWZmZXJBZHZhbmNlKiBhZHYgPSBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKTsKKyAgICBTa0F1
dG9TVE1hbGxvYzwzMiwgU2tQb2ludD4gc3RvcmFnZShudW1HbHlwaHMpOworICAgIFNrUG9pbnQq
IHBvcyA9IHN0b3JhZ2UuZ2V0KCk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUdseXBo
czsgaSsrKSB7CisgICAgICAgIHBvc1tpXS5zZXQoeCwgeSk7CisgICAgICAgIHggKz0gU2tGbG9h
dFRvU2NhbGFyKGFkdltpXS53aWR0aCgpKTsKKyAgICAgICAgeSArPSBTa0Zsb2F0VG9TY2FsYXIo
YWR2W2ldLmhlaWdodCgpKTsKKyAgICB9CisgICAgY2FudmFzLT5kcmF3UG9zVGV4dChnbHlwaHMs
IG51bUdseXBocyA8PCAxLCBwb3MsIHBhaW50KTsKK30KKwordm9pZCBGb250OjpkcmF3Q29tcGxl
eFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20s
IGludCB0bykgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitmbG9hdCBGb250
OjpmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuKSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBGb250OjpvZmZz
ZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgaW50IHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGluY2x1ZGVQYXJ0
aWFsR2x5cGhzKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7
Cit9CisKK0Zsb2F0UmVjdCBGb250OjpzZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQoY29uc3Qg
VGV4dFJ1biYgcnVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBJbnRQb2ludCYgcG9pbnQsIGludCBoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEZsb2F0UmVjdCgpOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Gb250UGxhdGZvcm1EYXRhLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ZvbnRQbGF0Zm9ybURhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
OWJmZGEyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAwNywgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEZvbnRQbGF0Zm9ybURhdGFfaAorI2RlZmluZSBGb250UGxhdGZvcm1EYXRhX2gKKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImJ1aWxkL2J1aWxkX2NvbmZpZy5oIgorCisjaWYgZGVm
aW5lZChPU19XSU4pCisjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YUNocm9taXVtV2luLmgiCisj
ZWxpZiBkZWZpbmVkKE9TX0xJTlVYKQorI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGFMaW51eC5o
IgorI2VuZGlmCisKKyNlbmRpZiAgLy8gRm9udFBsYXRmb3JtRGF0YV9oCg==
</data>
<flag name="review"
          id="12702"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>