<?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>44937</bug_id>
          
          <creation_ts>2010-08-31 02:37:23 -0700</creation_ts>
          <short_desc>Part 2: Unfork Chromium&apos;s FontPlatformDataMac.mm</short_desc>
          <delta_ts>2010-08-31 21:50:02 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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>
          <dependson>41148</dependson>
    
    <dependson>41398</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Moskovich">playmobil</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>271993</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2010-08-31 02:37:23 -0700</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=41148 forks FontPlatformDataMac.mm for the Chromium port to enable cross-process font loading.

This bug tracks unforking the file, https://bugs.webkit.org/show_bug.cgi?id=41398 was the first part of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272022</commentid>
    <comment_count>1</comment_count>
      <attachid>66027</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2010-08-31 03:50:49 -0700</bug_when>
    <thetext>Created attachment 66027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272446</commentid>
    <comment_count>2</comment_count>
      <attachid>66027</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-08-31 15:41:44 -0700</bug_when>
    <thetext>Comment on attachment 66027
Patch

looks good. I wonder if we can somehow create a FontLoadingManager abstraction that allows having two different implementations of the same declaration? This would allow us to avoid ifdefs altogether. Not sure how at first glance, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272630</commentid>
    <comment_count>3</comment_count>
      <attachid>66027</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-31 21:49:57 -0700</bug_when>
    <thetext>Comment on attachment 66027
Patch

Clearing flags on attachment: 66027

Committed r66574: &lt;http://trac.webkit.org/changeset/66574&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272631</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-31 21:50:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66027</attachid>
            <date>2010-08-31 03:50:49 -0700</date>
            <delta_ts>2010-08-31 21:49:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>unfork.patch</filename>
            <type>text/plain</type>
            <size>39801</size>
            <attacher name="Jeremy Moskovich">playmobil</attacher>
            
              <data encoding="base64">Y29tbWl0IDAzY2JjYTRhODMzNzQ3OWQwNmQ4NTg0OGM4ODQzYzY5NDE0MjRjNzYKQXV0aG9yOiBK
ZXJlbXkgTW9za292aWNoIDxqZXJlbXlAY2hyb21pdW0ub3JnPgpEYXRlOiAgIFR1ZSBBdWcgMzEg
MDk6NDI6NTcgMjAxMCArMDMwMAoKICAgIFVuZm9yayBDaHJvbWl1bSdzIEZvbnRQbGF0Zm9ybURh
dGFDaHJvbWl1bU1hYy5tbS4KCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGYxZGM0MjMuLmNjY2ZmODAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAt
MDgtMzEgIEplcmVteSBNb3Nrb3ZpY2ggIDxqZXJlbXlAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuZm9yayBDaHJvbWl1bSdz
IEZvbnRQbGF0Zm9ybURhdGFDaHJvbWl1bU1hYy5tbS4KKworICAgICAgICBNb2RpZmllZCBGb250
UGxhdGZvcm1EYXRhQ29jb2EgdG8gcHJvdmlkZSBob29rcyBuZWVkZWQgYnkgQ2hyb21pdW0uCisg
ICAgICAgIE1vdmVkIENocm9taXVtJ3MgbWVjaGFuaWNzIGZvciBPT1AgZm9udCBsb2FkaW5nIHRv
IENyb3NzUHJvY2Vzc0ZvbnRMb2FkaW5nLm1tLgorICAgICAgICBBZGRlZCA6OmNyZWF0ZSgpIGZ1
bmN0aW9uIHRvIE1lbW9yeUFjdGl2YXRlZEZvbnQgdG8gbWF0Y2ggbmV3IGd1aWRlbGluZXMgZm9y
CisgICAgICAgIFJlZkNvdW50ZWQ8PiBjbGFzc2VzLgorCisgICAgICAgIE5vdCBwb3NzaWJsZSB0
byB0ZXN0IGR1ZSB0byBzYW5kYm94IGludGVyYWN0aW9uLgorCisgICAgICAgICogV2ViQ29yZS5n
eXBpOiBVcGRhdGUgZmlsZXMgZm9yIGNocm9taXVtIGJ1aWxkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0Nyb3NzUHJvY2Vzc0ZvbnRMb2FkaW5nLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TWVtb3J5QWN0aXZhdGVkRm9udDo6Y2dGb250KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeUFjdGl2YXRlZEZvbnQ6OmF0c0ZvbnRSZWYpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nyb3NzUHJvY2Vzc0ZvbnRMb2FkaW5nLm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUFjdGl2YXRlZEZvbnQ6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZW1vcnlBY3RpdmF0ZWRGb250OjpNZW1vcnlBY3RpdmF0ZWRGb250KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lbW9yeUFjdGl2YXRlZEZvbnQ6On5NZW1vcnlBY3RpdmF0ZWRGb250
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OmxvYWRGb250KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhQ2hyb21pdW1N
YWMubW06IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0
Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Omxv
YWRGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9y
bURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlcmF0b3I9KToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnNldEZvbnQpOgorCiAyMDEwLTA4
LTI3ICBKb2huIEdyZWdnICA8am9obm55Z0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCBlYTdlMDMyLi5lYjk0NjBkIDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjI0Niw2ICsy
MjQ2LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNM
YXllckNocm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NvbnRlbnRMYXllckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ3Jvc3NQcm9jZXNzRm9udExvYWRpbmcuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ3Jvc3NQcm9jZXNzRm9udExvYWRpbmcu
bW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUNo
cm9taXVtV2luLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Rm9udENhY2hlTGludXguY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwJywKQEAgLTIyNTMsNyArMjI1NSw2IEBACiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250TGludXguY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1E
YXRhLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRQbGF0
Zm9ybURhdGFDaHJvbWl1bU1hYy5tbScsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUNocm9taXVtV2luLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUNocm9taXVtV2luLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRQbGF0Zm9ybURh
dGFMaW51eC5jcHAnLApAQCAtMjI5MCw2ICsyMjkxLDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YS5oJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2Eu
bW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwJywK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ3Jvc3NQcm9j
ZXNzRm9udExvYWRpbmcuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ3Jv
c3NQcm9jZXNzRm9udExvYWRpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5lMWZiNzQwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Dcm9zc1Byb2Nlc3NGb250TG9hZGluZy5oCkBAIC0wLDAgKzEsMTAwIEBACisvKgor
ICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBDcm9zc1Byb2Nlc3NGb250TG9hZGluZ19oCisjZGVmaW5lIENyb3NzUHJvY2Vzc0ZvbnRM
b2FkaW5nX2gKKworI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KKwordHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBDR0ZvbnRSZWY7Cit0eXBlZGVmIFVJ
bnQzMiBBVFNGb250Q29udGFpbmVyUmVmOwordHlwZWRlZiBVSW50MzIgQVRTRm9udFJlZjsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBNZW1vcnlBY3RpdmF0ZWRGb250IGVuY2Fwc3VsYXRl
cyBhIGZvbnQgbG9hZGVkIGZyb20gYW5vdGhlciBwcm9jZXNzIGFuZAorLy8gYWN0aXZhdGVkIGZy
b20gbWVtb3J5LgorLy8KKy8vIFJlc3BvbnNpYmlsaXRpZXM6CisvLyAqIEhvbGRlciBmb3IgdGhl
IENHRm9udFJlZiAmIEFUU0ZvbnRSZWYgYmVsb25naW5nIHRvIHRoZSBhY3RpdmF0ZWQgZm9udC4K
Ky8vICogUmVzcG9uc2libGUgZm9yIHVubG9hZGluZyB0aGUgZm9udCBjb250YWluZXIgd2hlbiBk
b25lLgorLy8KKy8vIE1lbW9yeSBNYW5hZ2VtZW50OgorLy8gVGhlIGNsYXNzIGlzIHJlZmVyZW5j
ZSBjb3VudGVkLCB3aXRoIGVhY2ggaW5zdGFuY2Ugb2YgRm9udFBsYXRmb3JtRGF0YSB0aGF0Cisv
LyB1c2VzIHRoaXMgY2xhc3MgaG9sZGluZyBhIHJlZmVyZW5jZSB0byBpdC4KKy8vIEVudHJpZXMg
YXJlIGtlcHQgdHJhY2sgb2YgaW50ZXJuYWxseSBpbiBhIGhhc2ggdG8gYWxsb3cgcXVpY2sgbG9v
a3VwCisvLyBvZiBleGlzdGluZyBpbnN0YW5jZXMgZm9yIHJldXNlOgorLy8gLSBmb250Q2FjaGVC
eVNyY0ZvbnRDb250YWluZXJSZWYoKSAtIGtleSBpcyB0aGUgQVRTRm9udENvbnRhaW5lclJlZgor
Ly8gICBjb3JyZXNwb25kaW5nIHRvIHRoZSAqb3JpZ2luYWwgaW4tcHJvY2VzcyBOU0ZvbnQqIHdo
b3NlIGxvYWRpbmcgd2FzIGJsb2NrZWQKKy8vICAgYnkgdGhlIHNhbmRib3guCisvLyAgIFRoaXMg
aXMgbmVlZGVkIHRvIGFsbG93IGxvb2t1cCBvZiBhIHByZS1leGlzdGluZyBNZW1vcnlBY3RpdmF0
ZWRGb250IHdoZW4KKy8vICAgY3JlYXRpbmcgYSBuZXcgRm9udFBsYXRmb3JtRGF0YSBvYmplY3Qu
CisvLworLy8gQXNzdW1wdGlvbnM6CisvLyBUaGlzIGNvZGUgYXNzdW1lcyB0aGF0IGFuIEFUU0Zv
bnRSZWYgaXMgYSB1bmlxdWUgaWRlbnRpZmllciB0aWVkIHRvIGFuCisvLyBhY3RpdmF0ZWQgZm9u
dC4gIGkuZS4gQWZ0ZXIgd2UgYWN0aXZhdGUgYSBmb250LCBpdHMgQVRTRm9udFJlZiBkb2Vzbid0
CisvLyBjaGFuZ2UuCisvLyBJdCBhbHNvIGFzc3VtZXMgdGhhdCB0aGUgQVRTRm9uY29udGFpbmVy
UmVmIGZvciB0d28gaW4tbWVtb3J5IE5TRm9udHMgdGhhdAorLy8gY29ycmVzcG9uZCB0byB0aGUg
c2FtZSBvbi1kaXNrIGZvbnQgZmlsZSBhcmUgYWx3YXlzIHRoZSBzYW1lIGFuZCBkb24ndCBjaGFu
Z2UKKy8vIHdpdGggdGltZS4KKy8vCisvLyBGbHVzaGluZyBjYWNoZXM6CisvLyBXaGVuIHRoZSBz
eXN0ZW0gbm90aWZpZXMgdXMgb2YgYSBzeXN0ZW0gZm9udCBjYWNoZSBmbHVzaCwgYWxsIEZvbnRE
YXRhQ2FjaGUKKy8vIG9iamVjdHMgYXJlIGRlc3Ryb3llZC4gIFRoaXMgc2hvdWxkIGluIHR1cm4g
ZGVyZWZlcmVuY2UgYWxsCisvLyBNZW1vcnlBY3RpdmF0ZWRGb250cyBhbmQgdGh1cyB1bmxvYWQg
YWxsIGluLW1lbW9yeSBmb250cy4KK2NsYXNzIE1lbW9yeUFjdGl2YXRlZEZvbnQgOiBwdWJsaWMg
UmVmQ291bnRlZDxNZW1vcnlBY3RpdmF0ZWRGb250PiB7CitwdWJsaWM6CisgICAgLy8gVXNlIHRv
IGNyZWF0ZSBhIG5ldyBvYmplY3QsIHNlZSBkb2NzIG9uIGNvbnN0cnVjdG9yIGJlbG93LgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1lbW9yeUFjdGl2YXRlZEZvbnQ+IGNyZWF0ZShBVFNGb250Q29u
dGFpbmVyUmVmIHNyY0ZvbnRDb250YWluZXJSZWYsIEFUU0ZvbnRDb250YWluZXJSZWYgY29udGFp
bmVyKTsKKyAgICB+TWVtb3J5QWN0aXZhdGVkRm9udCgpOworICAgIAorICAgIC8vIEdldCBjYWNo
ZWQgQ0dGb250UmVmIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGluLW1lbW9yeSBmb250LgorICAgIENH
Rm9udFJlZiBjZ0ZvbnQoKSB7IHJldHVybiBtX2NnRm9udC5nZXQoKTsgfQorICAgIAorICAgIC8v
IEdldCBjYWNoZWQgQVRTRm9udFJlZiBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbi1tZW1vcnkgZm9u
dC4KKyAgICBBVFNGb250UmVmIGF0c0ZvbnRSZWYoKSB7IHJldHVybiBtX2F0c0ZvbnRSZWY7IH0K
KworcHJpdmF0ZToKKyAgICAvLyBzcmNGb250UmVmIC0gQVRTRm9udFJlZiBiZWxvbmdpbmcgdG8g
dGhlIE5TRm9udCBvYmplY3QgdGhhdCBmYWlsZWQgdG8KKyAgICAvLyBsb2FkIGluLXByb2Nlc3Mu
CisgICAgLy8gY29udGFpbmVyIC0gYSBmb250IGNvbnRhaW5lciBjb3JyZXNwb25kaW5nIHRvIGFu
IGlkZW50aWNhbCBmb250IHRoYXQKKyAgICAvLyB3ZSBsb2FkZWQgY3Jvc3MtcHJvY2Vzcy4KKyAg
ICBNZW1vcnlBY3RpdmF0ZWRGb250KEFUU0ZvbnRDb250YWluZXJSZWYgc3JjRm9udENvbnRhaW5l
clJlZiwgQVRTRm9udENvbnRhaW5lclJlZiBjb250YWluZXIpOworCisgICAgQVRTRm9udENvbnRh
aW5lclJlZiBtX2ZvbnRDb250YWluZXI7CisgICAgV1RGOjpSZXRhaW5QdHI8Q0dGb250UmVmPiBt
X2NnRm9udDsKKyAgICBBVFNGb250UmVmIG1fYXRzRm9udFJlZjsKKyAgICBBVFNGb250Q29udGFp
bmVyUmVmIG1fc3JjRm9udENvbnRhaW5lclJlZjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIENyb3NzUHJvY2Vzc0ZvbnRMb2FkaW5nX2gKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ3Jvc3NQcm9jZXNzRm9udExvYWRpbmcu
bW0gYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nyb3NzUHJvY2Vzc0ZvbnRM
b2FkaW5nLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZWMwM2EKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nyb3Nz
UHJvY2Vzc0ZvbnRMb2FkaW5nLm1tCkBAIC0wLDAgKzEsMjE3IEBACisvKgorICogVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIGludGVybmFsIGZvbnQgaW1wbGVtZW50YXRpb24uCisgKgorICogQ29w
eXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisvLyBU
aGlzIGZpbGUgcHJvdmlkZXMgYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5IHRvIHRoZSBNYWMgRm9u
dFBsYXRmb3JtRGF0YSBjbGFzcworLy8gZGVmaW5lZCBpbiBXZWJDb3JlL3BsYXRmb3JtL2NvY29h
L0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSAuCisvLyBCZWNhdXNlIHdlIHdhbnQgdG8gc3VwcG9y
dCBsb2FkaW5nIGZvbnRzIGJldHdlZW4gcHJvY2Vzc2VzIGluIHRoZSBmYWNlIG9mCisvLyBmb250
IGxvYWRpbmcgYmVpbmcgYmxvY2tlZCBieSB0aGUgc2FuZGJveCwgd2UgbmVlZCBhIG1lY2huYXNp
bSB0byBib3RoCisvLyBkbyB0aGUgbG9hZGluZyBvZiBpbi1tZW1vcnkgZm9udHMgYW5kIGtlZXAg
dHJhY2sgb2YgdGhlbS4KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJDcm9zc1Byb2Nl
c3NGb250TG9hZGluZy5oIgorCisjaW1wb3J0ICIuLi9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZv
cm1EYXRhLmgiCisjaW1wb3J0ICJDaHJvbWl1bUJyaWRnZS5oIgorI2ltcG9ydCA8QXBwS2l0L05T
Rm9udC5oPgorI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CituYW1lc3BhY2UgeworCit0eXBlZGVmIEhhc2hNYXA8QVRTRm9udENvbnRhaW5lclJlZiwgTWVt
b3J5QWN0aXZhdGVkRm9udCo+IEZvbnRDb250YWluZXJSZWZNZW1vcnlGb250SGFzaDsKKworLy8g
T24gMTAuNSwgZm9udCBsb2FkaW5nIGlzIG5vdCBibG9ja2VkIGJ5IHRoZSBzYW5kYm94IGFuZCB0
aHVzIHRoZXJlIGlzIG5vCisvLyBuZWVkIGZvciB0aGUgY3Jvc3MtcHJvY2VzcyBmb250IGxvYWRp
bmcgbWVjaGFuaW0uCisvLyBPbiBzeXN0ZW0gdmVyc2lvbnMgPj0xMC42IGNyb3NzLXByb2Nlc3Mg
Zm9udCBsb2FkaW5nIGlzIHJlcXVpcmVkLgorYm9vbCBPdXRPZlByb2Nlc3NGb250TG9hZGluZ0Vu
YWJsZWQoKQoreworICAgIHN0YXRpYyBTSW50MzIgc3lzdGVtVmVyc2lvbiA9IDA7CisgICAgaWYg
KCFzeXN0ZW1WZXJzaW9uKSB7CisgICAgICAgIGlmIChHZXN0YWx0KGdlc3RhbHRTeXN0ZW1WZXJz
aW9uLCAmc3lzdGVtVmVyc2lvbikgIT0gbm9FcnIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgcmV0dXJuIHN5c3RlbVZlcnNpb24gPj0gMHgxMDYwOworfQorCitGb250
Q29udGFpbmVyUmVmTWVtb3J5Rm9udEhhc2gmIGZvbnRDYWNoZUJ5U3JjRm9udENvbnRhaW5lclJl
ZigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChGb250Q29udGFpbmVyUmVmTWVtb3J5Rm9u
dEhhc2gsIHNyY0ZvbnRSZWZDYWNoZSwgKCkpOworICAgIHJldHVybiBzcmNGb250UmVmQ2FjaGU7
Cit9CisKK0FUU0ZvbnRDb250YWluZXJSZWYgZm9udENvbnRhaW5lclJlZkZyb21OU0ZvbnQoTlNG
b250KiBzcmNGb250KQoreworICAgIEFUU0ZvbnRSZWYgZm9udFJlZiA9IENURm9udEdldFBsYXRm
b3JtRm9udCh0b0NURm9udFJlZihzcmNGb250KSwgMCk7CisgICAgaWYgKCFmb250UmVmKQorICAg
ICAgICByZXR1cm4ga0FUU0ZvbnRDb250YWluZXJSZWZVbnNwZWNpZmllZDsKKyAgICBBVFNGb250
Q29udGFpbmVyUmVmIGZvbnRDb250YWluZXIgPSBrQVRTRm9udENvbnRhaW5lclJlZlVuc3BlY2lm
aWVkOworICAgIGlmIChBVFNGb250R2V0Q29udGFpbmVyKGZvbnRSZWYsIDAsICZmb250Q29udGFp
bmVyKSAhPSBub0VycikKKyAgICAgICAgcmV0dXJuIGtBVFNGb250Q29udGFpbmVyUmVmVW5zcGVj
aWZpZWQ7CisgICAgcmV0dXJuIGZvbnRDb250YWluZXI7Cit9CisKKy8vIFRoZSBvbmx5IHdheSB3
ZSBjYW4gdGVsbCB0aGF0IGFuIGluLXByb2Nlc3MgZm9udCBoYXMgZmFpbGVkIHRvIGxvYWQKKy8v
IGlzIGlmIENURm9udENvcHlHcmFwaGljc0ZvbnQoKSByZXR1cm5zIHRoZSBMYXN0UmVzb3J0IGZv
bnQuCitib29sIGlzTGFzdFJlc29ydEZvbnQoQ0dGb250UmVmIGNnRm9udCkKK3sKKyAgICBOU1N0
cmluZyogZm9udE5hbWUgPSAoTlNTdHJpbmcqKUNHRm9udENvcHlQb3N0U2NyaXB0TmFtZShjZ0Zv
bnQpOworICAgIHJldHVybiBbZm9udE5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiTGFzdFJlc29ydCJd
OworfQorCisvLyBHaXZlbiBhbiBpbi1wcm9jZXNzIGZvbnQgd2hpY2ggaGFzIGZhaWxlZCB0byBs
b2FkLCByZXR1cm4gYQorLy8gTWVtb3J5QWN0aXZhdGVkRm9udCogY29ycmVzcG9uZGluZyB0byBh
biBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24gb2YgdGhlCisvLyBzYW1lIGZvbnQgbG9hZGVkIGZy
b20gdGhlIGJyb3dzZXIgcHJvY2Vzcy4KKy8vIE9uIGZhaWx1cmUgdGhpcyBmdW5jdGlvbiByZXR1
cm5zIGEgUGFzc1JlZlB0ciBwb2ludGluZyB0byAwLgorUGFzc1JlZlB0cjxNZW1vcnlBY3RpdmF0
ZWRGb250PiBsb2FkRm9udEZyb21Ccm93c2VyUHJvY2VzcyhOU0ZvbnQqIG5zRm9udCkKK3sKKyAg
ICBBVFNGb250Q29udGFpbmVyUmVmIGNvbnRhaW5lcjsKKyAgICAvLyBTZW5kIGNyb3NzLXByb2Nl
c3MgcmVxdWVzdCB0byBsb2FkIGZvbnQuCisgICAgaWYgKCFDaHJvbWl1bUJyaWRnZTo6bG9hZEZv
bnQobnNGb250LCAmY29udGFpbmVyKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgQVRT
Rm9udENvbnRhaW5lclJlZiBzcmNGb250Q29udGFpbmVyUmVmID0gZm9udENvbnRhaW5lclJlZkZy
b21OU0ZvbnQobnNGb250KTsKKyAgICBpZiAoIXNyY0ZvbnRDb250YWluZXJSZWYpIHsKKyAgICAg
ICAgQVRTRm9udERlYWN0aXZhdGUoY29udGFpbmVyLCAwLCBrQVRTT3B0aW9uRmxhZ3NEZWZhdWx0
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIAorICAgIFBhc3NSZWZQdHI8TWVtb3J5
QWN0aXZhdGVkRm9udD4gZm9udCA9IGFkb3B0UmVmKGZvbnRDYWNoZUJ5U3JjRm9udENvbnRhaW5l
clJlZigpLmdldChzcmNGb250Q29udGFpbmVyUmVmKSk7CisgICAgaWYgKGZvbnQuZ2V0KCkpCisg
ICAgICAgIHJldHVybiBmb250OworCisgICAgcmV0dXJuIE1lbW9yeUFjdGl2YXRlZEZvbnQ6OmNy
ZWF0ZShzcmNGb250Q29udGFpbmVyUmVmLCBjb250YWluZXIpOworfQorCit9IC8vIG5hbWVzcGFj
ZQorCitQYXNzUmVmUHRyPE1lbW9yeUFjdGl2YXRlZEZvbnQ+IE1lbW9yeUFjdGl2YXRlZEZvbnQ6
OmNyZWF0ZShBVFNGb250Q29udGFpbmVyUmVmIHNyY0ZvbnRDb250YWluZXJSZWYsIEFUU0ZvbnRD
b250YWluZXJSZWYgY29udGFpbmVyKQoreworICBNZW1vcnlBY3RpdmF0ZWRGb250KiBmb250ID0g
bmV3IE1lbW9yeUFjdGl2YXRlZEZvbnQoc3JjRm9udENvbnRhaW5lclJlZiwgY29udGFpbmVyKTsK
KyAgaWYgKCFmb250LT5jZ0ZvbnQoKSkgIC8vIE9iamVjdCBjb25zdHJ1Y3Rpb24gZmFpbGVkLgor
ICB7CisgICAgICBkZWxldGUgZm9udDsKKyAgICAgIHJldHVybiAwOworICB9CisgIHJldHVybiBh
ZG9wdFJlZihmb250KTsKK30KKworTWVtb3J5QWN0aXZhdGVkRm9udDo6TWVtb3J5QWN0aXZhdGVk
Rm9udChBVFNGb250Q29udGFpbmVyUmVmIHNyY0ZvbnRDb250YWluZXJSZWYsIEFUU0ZvbnRDb250
YWluZXJSZWYgY29udGFpbmVyKQorICAgIDogbV9mb250Q29udGFpbmVyKGNvbnRhaW5lcikKKyAg
ICAsIG1fYXRzRm9udFJlZihrQVRTRm9udFJlZlVuc3BlY2lmaWVkKQorICAgICwgbV9zcmNGb250
Q29udGFpbmVyUmVmKHNyY0ZvbnRDb250YWluZXJSZWYpCit7CisgICAgaWYgKCFjb250YWluZXIp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICAvLyBDb3VudCB0aGUgbnVtYmVyIG9mIGZvbnRz
IGluIHRoZSBjb250YWluZXIuCisgICAgSXRlbUNvdW50IGZvbnRDb3VudCA9IDA7CisgICAgT1NT
dGF0dXMgZXJyID0gQVRTRm9udEZpbmRGcm9tQ29udGFpbmVyKGNvbnRhaW5lciwga0FUU09wdGlv
bkZsYWdzRGVmYXVsdCwgMCwgMCwgJmZvbnRDb3VudCk7CisgICAgaWYgKGVyciAhPSBub0VyciB8
fCBmb250Q291bnQgPCAxKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGb3Igbm93IGFsd2F5
cyBhc3N1bWUgdGhhdCB3ZSB3YW50IHRoZSBmaXJzdCBmb250IGluIHRoZSBjb250YWluZXIuCisg
ICAgQVRTRm9udEZpbmRGcm9tQ29udGFpbmVyKGNvbnRhaW5lciwga0FUU09wdGlvbkZsYWdzRGVm
YXVsdCwgMSwgJm1fYXRzRm9udFJlZiwgMCk7CisKKyAgICBpZiAoIW1fYXRzRm9udFJlZikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gQ2FjaGUgQ0dGb250IHJlcHJlc2VudGF0aW9uIG9mIHRo
ZSBmb250LgorICAgIG1fY2dGb250LmFkb3B0Q0YoQ0dGb250Q3JlYXRlV2l0aFBsYXRmb3JtRm9u
dCgmbV9hdHNGb250UmVmKSk7CisgICAgCisgICAgaWYgKCFtX2NnRm9udC5nZXQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIC8vIEFkZCBvdXJzZWx2ZXMgdG8gY2FjaGUuCisgICAgZm9u
dENhY2hlQnlTcmNGb250Q29udGFpbmVyUmVmKCkuYWRkKG1fc3JjRm9udENvbnRhaW5lclJlZiwg
dGhpcyk7Cit9CisKKy8vIERlc3RydWN0b3IgLSBVbmxvYWQgZm9udCBjb250YWluZXIgZnJvbSBt
ZW1vcnkgYW5kIHJlbW92ZSBvdXJzZWx2ZXMKKy8vIGZyb20gY2FjaGUuCitNZW1vcnlBY3RpdmF0
ZWRGb250Ojp+TWVtb3J5QWN0aXZhdGVkRm9udCgpCit7CisgICAgaWYgKG1fY2dGb250LmdldCgp
KSB7CisgICAgICAgIC8vIEZpcnN0IHJlbW92ZSBvdXJzZWx2ZXMgZnJvbSB0aGUgY2FjaGVzLgor
ICAgICAgICBBU1NFUlQoZm9udENhY2hlQnlTcmNGb250Q29udGFpbmVyUmVmKCkuY29udGFpbnMo
bV9zcmNGb250Q29udGFpbmVyUmVmKSk7CisgICAgICAgIAorICAgICAgICBmb250Q2FjaGVCeVNy
Y0ZvbnRDb250YWluZXJSZWYoKS5yZW1vdmUobV9zcmNGb250Q29udGFpbmVyUmVmKTsKKyAgICAg
ICAgCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgQ0dGb250IGlzIGRlc3Ryb3llZCBiZWZvcmUg
aXRzIGZvbnQgY29udGFpbmVyLgorICAgICAgICBtX2NnRm9udC5yZWxlYXNlUmVmKCk7CisgICAg
fQorICAgIAorICAgIGlmIChtX2ZvbnRDb250YWluZXIgIT0ga0FUU0ZvbnRDb250YWluZXJSZWZV
bnNwZWNpZmllZCkKKyAgICAgICAgQVRTRm9udERlYWN0aXZhdGUobV9mb250Q29udGFpbmVyLCAw
LCBrQVRTT3B0aW9uRmxhZ3NEZWZhdWx0KTsKK30KKworLy8gR2l2ZW4gYW4gTlNGb250LCB0cnkg
dG8gbG9hZCBhIHJlcHJlc2VudGF0aW9uIG9mIHRoYXQgZm9udCBpbnRvIHRoZSBjZ0ZvbnQKKy8v
IHBhcmFtZXRlci4gIElmIGxvYWRpbmcgaXMgYmxvY2tlZCBieSB0aGUgc2FuZGJveCwgdGhlIGZv
bnQgbWF5IGJlIGxvYWRlZAorLy8gY3Jvc3MtcHJvY2Vzcy4KKy8vIElmIHNhbmRib3ggbG9hZGlu
ZyBhbHNvIGZhaWxzLCBhIGZhbGxiYWNrIGZvbnQgaXMgbG9hZGVkLgorLy8KKy8vIENvbnNpZGVy
YXRpb25zOgorLy8gKiBjZ0ZvbnQgbXVzdCBiZSBDRlJlbGVhc2UoKWVkIGJ5IHRoZSBjYWxsZXIg
d2hlbiBkb25lLgorLy8gCisvLyBQYXJhbWV0ZXJzOgorLy8gKiBuc0ZvbnQgLSBUaGUgZm9udCB3
ZSB3aXNoIHRvIGxvYWQuCisvLyAqIGZvbnRTaXplIC0gcG9pbnQgc2l6ZSBvZiB0aGUgZm9udCB3
ZSB3aXNoIHRvIGxvYWQuCisvLyAqIG91dE5TRm9udCAtIFRoZSBmb250IHRoYXQgd2FzIGFjdHVh
bGx5IGxvYWRlZCwgbWF5IGJlIGRpZmZlcmVudCBmcm9tIG5zRm9udAorLy8gICBpZiBhIGZhbGxi
YWNrIGZvbnQgd2FzIHVzZWQuCisvLyAqIGNnRm9udCAtIG9uIG91dHB1dCB0aGlzIGNvbnRhaW5z
IHRoZSBDR0ZvbnRSZWYgY29ycmVzcG9uZGluZyB0byB0aGUgTlNGb250CisvLyAgIHRoYXQgd2Fz
IHBpY2tlZCBpbiB0aGUgZW5kLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGlu
ZworLy8gICBDRlJlbGVhc2UoKSBvbiB0aGlzIHBhcmFtZXRlciB3aGVuIGRvbmUgd2l0aCBpdC4K
Ky8vICogZm9udElEIC0gb24gb3V0cHV0LCB0aGUgSUQgY29ycmVzcG9uZGluZyB0byBuc0ZvbnQu
Cit2b2lkIEZvbnRQbGF0Zm9ybURhdGE6OmxvYWRGb250KE5TRm9udCogbnNGb250LCBmbG9hdCBm
b250U2l6ZSwgTlNGb250KiYgb3V0TlNGb250LCBDR0ZvbnRSZWYmIGNnRm9udCwgQVRTVUZvbnRJ
RCYgZm9udElEKQoreworICAgIG91dE5TRm9udCA9IG5zRm9udDsKKyAgICBjZ0ZvbnQgPSBDVEZv
bnRDb3B5R3JhcGhpY3NGb250KHRvQ1RGb250UmVmKG91dE5TRm9udCksIDApOworICAgIE1lbW9y
eUFjdGl2YXRlZEZvbnQqIG1lbUZvbnQgPSAwOworICAgIGlmIChPdXRPZlByb2Nlc3NGb250TG9h
ZGluZ0VuYWJsZWQoKSAmJiBvdXROU0ZvbnQgJiYgY2dGb250ICYmIGlzTGFzdFJlc29ydEZvbnQo
Y2dGb250KSkgeworICAgICAgICAvLyBSZWxlYXNlIG9sZCBDR0ZvbnRSZWYgc2luY2UgaXQgcG9p
bnRzIGF0IHRoZSBMYXN0UmVzb3J0IGZvbnQgd2hpY2ggd2UgZG9uJ3Qgd2FudC4KKyAgICAgICAg
Q0ZSZWxlYXNlKGNnRm9udCk7CisgICAgICAgIGNnRm9udCA9IDA7CisgICAgICAgIAorICAgICAg
ICAvLyBGb250IGxvYWRpbmcgd2FzIGJsb2NrZWQgYnkgdGhlIFNhbmRib3guCisgICAgICAgIG1f
aW5NZW1vcnlGb250ID0gbG9hZEZvbnRGcm9tQnJvd3NlclByb2Nlc3Mob3V0TlNGb250KTsKKyAg
ICAgICAgaWYgKG1faW5NZW1vcnlGb250LmdldCgpKSB7CisgICAgICAgICAgICBjZ0ZvbnQgPSBt
X2luTWVtb3J5Rm9udC0+Y2dGb250KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIE5l
ZWQgdG8gYWRkIGFuIGV4dHJhIHJldGFpbiBzbyBvdXRwdXQgc2VtYW50aWNzIG9mIHRoaXMgZnVu
Y3Rpb24KKyAgICAgICAgICAgIC8vIGFyZSBjb25zaXN0ZW50LgorICAgICAgICAgICAgQ0ZSZXRh
aW4oY2dGb250KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIElmIHdlIHN0aWxs
IGNhbid0IGxvYWQgdGhlIGZvbnQsIHRoZW4gcmV0dXJuIFRpbWVzLAorICAgICAgICAgICAgLy8g
cmF0aGVyIHRoYW4gdGhlIExhc3RSZXNvcnQgZm9udC4KKyAgICAgICAgICAgIG91dE5TRm9udCA9
IFtOU0ZvbnQgZm9udFdpdGhOYW1lOkAiVGltZXMiIHNpemU6Zm9udFNpemVdOworICAgICAgICAg
ICAgY2dGb250ID0gQ1RGb250Q29weUdyYXBoaWNzRm9udCh0b0NURm9udFJlZihvdXROU0ZvbnQp
LCAwKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpZiAobWVtRm9udCkgeworICAgICAg
ICBmb250SUQgPSBtX2luTWVtb3J5Rm9udC0+YXRzRm9udFJlZigpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGZvbnRJRCA9IENURm9udEdldFBsYXRmb3JtRm9udCh0b0NURm9udFJlZihvdXROU0Zv
bnQpLCAwKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFBsYXRmb3JtRGF0YUNocm9t
aXVtTWFjLm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZv
cm1EYXRhQ2hyb21pdW1NYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwMzEw
OWUuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250
UGxhdGZvcm1EYXRhQ2hyb21pdW1NYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw0NTggKzAsMCBA
QAotLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBpbnRlcm5hbCBmb250IGltcGxlbWVu
dGF0aW9uLgotICoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLS8vIFRoaXMgZmlsZSBpcyBhIGNs
b25lIG9mIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250UGxhdGZvcm1EYXRhTWFjLm1tLgotLy8g
QmVjYXVzZSB3ZSB3YW50IHRvIHN1cHBvcnQgbG9hZGluZyBmb250cyBiZXR3ZWVuIHByb2Nlc3Nl
cyBpbiB0aGUgZmFjZSBvZgotLy8gZm9udCBsb2FkaW5nIGJlaW5nIGJsb2NrZWQgYnkgdGhlIHNh
bmRib3gsIHdlIG11c3QgbWFpbnRhaW4gYSBmb3JrLgotLy8gUGxlYXNlIG1haW50YWluIHRoaXMg
ZmlsZSBieSBwZXJmb3JtaW5nIHBhcmFsbGVsIGNoYW5nZXMgdG8gaXQuCi0vLwotLy8gVGhlIG9u
bHkgY2hhbmdlcyBmcm9tIEZvbnRQbGF0Zm9ybURhdGFNYWMgc2hvdWxkIGJlOgotLy8gLSBUaGUg
ZnVuY3Rpb25zIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlIGZvciBsb2FkaW5nIGFuZCBjYWNoaW5n
IGZvbnRzCi0vLyAgIGNyb3NzLXByb2Nlc3MuCi0vLyAtIENoYW5nZXMgdG8gRm9udFBsYXRmb3Jt
RGF0YTo6Rm9udFBsYXRmb3JtRGF0YShOU0ZvbnQsYm9vbCxib29sKQotLy8gLSBDaGFuZ2VzIHRv
IEZvbnRQbGF0Zm9ybURhdGE6OnNldEZvbnQoKQotLy8gLSBDaGFuZ2VzIHRvIEZvbnRQbGF0Zm9y
bURhdGE6On5Gb250UGxhdGZvcm1EYXRhKCkKLS8vIC0gQ2FsbHMgdG8gcmVmTWVtb3J5Rm9udCgp
IGluIEZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9yPSBhbmQgY29weQotLy8gY29uc3RydWN0b3Iu
Ci0vLwotLy8gQWxsIGNoYW5nZXMgYXJlIG1hcmtlZCB3aXRoICJTdGFydC9FbmQgQ2hyb21pdW0g
Q2hhbmdlIgotLy8KLS8vIEZvciBhbGwgb3RoZXIgZGlmZmVyZW5jZXMsIGlmIGl0IHdhcyBpbnRy
b2R1Y2VkIGluIHRoaXMgZmlsZSwgdGhlbiB0aGUKLS8vIG1haW50YWluZXIgZm9yZ290IHRvIGlu
Y2x1ZGUgaXQgaW4gdGhlIGxpc3Q7IG90aGVyd2lzZSBpdCBpcyBhbiB1cGRhdGUgdGhhdAotLy8g
c2hvdWxkIGhhdmUgYmVlbiBhcHBsaWVkIHRvIHRoaXMgZmlsZSBidXQgd2FzIG5vdC4KLQotCi0v
LyBTdGFydCBDaHJvbWl1bSBDaGFuZ2UKLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiLi4v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YS5oIgotCi0jaW1wb3J0ICJDaHJvbWl1bUJy
aWRnZS5oIgotI2ltcG9ydCAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbXBvcnQgIldlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UuaCIKLSNpbXBvcnQgPEFwcEtpdC9OU0ZvbnQuaD4KLSNpbXBvcnQgPHd0Zi9I
YXNoTWFwLmg+Ci0jaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgotI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LW5hbWVzcGFjZSB7Ci0KLWNsYXNzIE1lbW9yeUFjdGl2YXRlZEZvbnQ7Ci10eXBlZGVmIEhhc2hN
YXA8QVRTRm9udFJlZiwgTWVtb3J5QWN0aXZhdGVkRm9udCo+IEZvbnRSZWZNZW1vcnlGb250SGFz
aDsKLXR5cGVkZWYgSGFzaE1hcDxBVFNGb250Q29udGFpbmVyUmVmLCBNZW1vcnlBY3RpdmF0ZWRG
b250Kj4gRm9udENvbnRhaW5lclJlZk1lbW9yeUZvbnRIYXNoOwotCi0vLyBPbiAxMC41LCBmb250
IGxvYWRpbmcgaXMgbm90IGJsb2NrZWQgYnkgdGhlIHNhbmRib3ggYW5kIHRodXMgdGhlcmUgaXMg
bm8KLS8vIG5lZWQgZm9yIHRoZSBjcm9zcy1wcm9jZXNzIGZvbnQgbG9hZGluZyBtZWNoYW5pbS4K
LS8vIE9uIHN5c3RlbSB2ZXJzaW9ucyA+PTEwLjYgY3Jvc3MtcHJvY2VzcyBmb250IGxvYWRpbmcg
aXMgcmVxdWlyZWQuCi1ib29sIE91dE9mUHJvY2Vzc0ZvbnRMb2FkaW5nRW5hYmxlZCgpCi17Ci0g
ICAgc3RhdGljIFNJbnQzMiBzeXN0ZW1WZXJzaW9uID0gMDsKLSAgICBpZiAoIXN5c3RlbVZlcnNp
b24pIHsKLSAgICAgICAgaWYgKEdlc3RhbHQoZ2VzdGFsdFN5c3RlbVZlcnNpb24sICZzeXN0ZW1W
ZXJzaW9uKSAhPSBub0VycikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gc3lzdGVtVmVyc2lvbiA+PSAweDEwNjA7Ci19Ci0KLUZvbnRDb250YWluZXJSZWZN
ZW1vcnlGb250SGFzaCYgZm9udENhY2hlQnlTcmNGb250Q29udGFpbmVyUmVmKCkKLXsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEZvbnRDb250YWluZXJSZWZNZW1vcnlGb250SGFzaCwgc3JjRm9u
dFJlZkNhY2hlLCAoKSk7Ci0gICAgcmV0dXJuIHNyY0ZvbnRSZWZDYWNoZTsKLX0KLQotRm9udFJl
Zk1lbW9yeUZvbnRIYXNoJiBmb250Q2FjaGVCeUFjdHVhbEZvbnRSZWYoKQotewotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoRm9udFJlZk1lbW9yeUZvbnRIYXNoLCByZWFsRm9udFJlZkNhY2hlLCAo
KSk7Ci0gICAgcmV0dXJuIHJlYWxGb250UmVmQ2FjaGU7Ci19Ci0KLUFUU0ZvbnRDb250YWluZXJS
ZWYgZm9udENvbnRhaW5lclJlZkZyb21OU0ZvbnQoTlNGb250KiBzcmNGb250KQotewotICAgIEFU
U0ZvbnRSZWYgZm9udFJlZiA9IENURm9udEdldFBsYXRmb3JtRm9udCh0b0NURm9udFJlZihzcmNG
b250KSwgMCk7Ci0gICAgaWYgKCFmb250UmVmKQotICAgICAgICByZXR1cm4ga0FUU0ZvbnRDb250
YWluZXJSZWZVbnNwZWNpZmllZDsKLSAgICBBVFNGb250Q29udGFpbmVyUmVmIGZvbnRDb250YWlu
ZXIgPSBrQVRTRm9udENvbnRhaW5lclJlZlVuc3BlY2lmaWVkOwotICAgIGlmIChBVFNGb250R2V0
Q29udGFpbmVyKGZvbnRSZWYsIDAsICZmb250Q29udGFpbmVyKSAhPSBub0VycikKLSAgICAgICAg
cmV0dXJuIGtBVFNGb250Q29udGFpbmVyUmVmVW5zcGVjaWZpZWQ7Ci0gICAgcmV0dXJuIGZvbnRD
b250YWluZXI7Ci19Ci0KLS8vIE1lbW9yeUFjdGl2YXRlZEZvbnQgZW5jYXBzdWxhdGVzIGEgZm9u
dCBsb2FkZWQgZnJvbSBhbm90aGVyIHByb2Nlc3MgYW5kCi0vLyBhY3RpdmF0ZWQgZnJvbSBtZW1v
cnkuCi0vLwotLy8gUmVzcG9uc2liaWxpdGllczoKLS8vICogSG9sZGVyIGZvciB0aGUgQ0dGb250
UmVmICYgQVRTRm9udFJlZiBiZWxvbmdpbmcgdG8gdGhlIGFjdGl2YXRlZCBmb250LgotLy8gKiBS
ZXNwb25zaWJsZSBmb3IgdW5sb2FkaW5nIHRoZSBmb250IGNvbnRhaW5lciB3aGVuIGRvbmUuCi0v
LwotLy8gTWVtb3J5IE1hbmFnZW1lbnQ6Ci0vLyBUaGUgY2xhc3MgaXMgcmVmZXJlbmNlIGNvdW50
ZWQsIHdpdGggZWFjaCBpbnN0YW5jZSBvZiBGb250UGxhdGZvcm1EYXRhIHRoYXQKLS8vIHVzZXMg
dGhpcyBjbGFzcyBob2xkaW5nIGEgcmVmZXJlbmNlIHRvIGl0LgotLy8gRW50cmllcyBpbiAyIGhh
c2hlcyBhcmUgbWFpbnRhaW5lZCBpbnRlcm5hbGx5IHRvIGFsbG93IHF1aWNrIGxvb2t1cAotLy8g
b2YgZXhpc3RpbmcgaW5zdGFuY2VzIGZvciByZXVzZToKLS8vIC0gZm9udENhY2hlQnlTcmNGb250
Q29udGFpbmVyUmVmKCkgLSBrZXkgaXMgdGhlIEFUU0ZvbnRDb250YWluZXJSZWYKLS8vICAgY29y
cmVzcG9uZGluZyB0byB0aGUgKm9yaWdpbmFsIGluLXByb2Nlc3MgTlNGb250KiB3aG9zZSBsb2Fk
aW5nIHdhcyBibG9ja2VkCi0vLyAgIGJ5IHRoZSBzYW5kYm94LgotLy8gICBUaGlzIGlzIG5lZWRl
ZCB0byBhbGxvdyBsb29rdXAgb2YgYSBwcmUtZXhpc3RpbmcgTWVtb3J5QWN0aXZhdGVkRm9udCB3
aGVuCi0vLyAgIGNyZWF0aW5nIGEgbmV3IEZvbnRQbGF0Zm9ybURhdGEgb2JqZWN0LgotLy8gLSBm
b250Q2FjaGVCeUFjdHVhbEZvbnRSZWYoKSAtIGtleSBpcyB0aGUgQVRTRm9udFJlZiBjb3JyZXNw
b25kaW5nIHRvIHRoZQotLy8gICAqbmV3IGluLW1lbW9yeSBmb250KiB0aGF0IHdlIGdvdCBmcm9t
IHRoZSBicm93c2VyIHByb2Nlc3MuCi0vLyAgIFRoaXMgaXMgbmVlZGVkIHNvIHRoYXQgYSBGb250
UGxhdGZvcm1EYXRhIG9iamVjdCBjYW4gcmVmZXIgYmFjayB0byB0aGUKLS8vICAgTWVtb3J5QWN0
aXZhdGVkRm9udCBpdCdzIHVzaW5nLiBDdXJyZW50bHkgdGhpcyBpcyBvbmx5IG5lZWRlZCB0byBy
ZWxlYXNlCi0vLyAgIHRoZSBmb250IG9uIEZvbnRQbGF0Zm9ybURhdGEgZGVzdHJ1Y3Rpb24uCi0v
LwotLy8gQXNzdW1wdGlvbnM6Ci0vLyBUaGlzIGNvZGUgYXNzdW1lcyB0aGF0IGFuIEFUU0ZvbnRS
ZWYgaXMgYSB1bmlxdWUgaWRlbnRpZmllciB0aWVkIHRvIGFuCi0vLyBhY3RpdmF0ZWQgZm9udC4g
IGkuZS4gQWZ0ZXIgd2UgYWN0aXZhdGUgYSBmb250LCBpdHMgQVRTRm9udFJlZiBkb2Vzbid0Ci0v
LyBjaGFuZ2UuCi0vLyBJdCBhbHNvIGFzc3VtZXMgdGhhdCB0aGUgQVRTRm9uY29udGFpbmVyUmVm
IGZvciB0d28gaW4tbWVtb3J5IE5TRm9udHMgdGhhdAotLy8gY29ycmVzcG9uZCB0byB0aGUgc2Ft
ZSBvbi1kaXNrIGZvbnQgZmlsZSBhcmUgYWx3YXlzIHRoZSBzYW1lIGFuZCBkb24ndCBjaGFuZ2UK
LS8vIHdpdGggdGltZS4KLS8vCi0vLyBGbHVzaGluZyBjYWNoZXM6Ci0vLyBXaGVuIHRoZSBzeXN0
ZW0gbm90aWZpZXMgdXMgb2YgYSBzeXN0ZW0gZm9udCBjYWNoZSBmbHVzaCwgYWxsIEZvbnREYXRh
Q2FjaGUKLS8vIG9iamVjdHMgYXJlIGRlc3Ryb3llZC4gIFRoaXMgc2hvdWxkIGluIHR1cm4gZGVy
ZWZlcmVuY2UgYWxsCi0vLyBNZW1vcnlBY3RpdmF0ZWRGb250cyBhbmQgdGh1cyB1bmxvYWQgYWxs
IGluLW1lbW9yeSBmb250cy4KLWNsYXNzIE1lbW9yeUFjdGl2YXRlZEZvbnQgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZW1vcnlBY3RpdmF0ZWRGb250PiB7Ci1wdWJsaWM6Ci0gICAgLy8gc3JjRm9udFJl
ZiAtIEFUU0ZvbnRSZWYgYmVsb25naW5nIHRvIHRoZSBOU0ZvbnQgb2JqZWN0IHRoYXQgZmFpbGVk
IHRvCi0gICAgLy8gbG9hZCBpbi1wcm9jZXNzLgotICAgIC8vIGNvbnRhaW5lciAtIGEgZm9udCBj
b250YWluZXIgY29ycmVzcG9uZGluZyB0byBhbiBpZGVudGljYWwgZm9udCB0aGF0Ci0gICAgLy8g
d2UgbG9hZGVkIGNyb3NzLXByb2Nlc3MuCi0gICAgTWVtb3J5QWN0aXZhdGVkRm9udChBVFNGb250
Q29udGFpbmVyUmVmIHNyY0ZvbnRDb250YWluZXJSZWYsIEFUU0ZvbnRDb250YWluZXJSZWYgY29u
dGFpbmVyKQotICAgICAgICA6IG1fZm9udENvbnRhaW5lcihjb250YWluZXIpCi0gICAgICAgICwg
bV9hdHNGb250UmVmKGtBVFNGb250UmVmVW5zcGVjaWZpZWQpCi0gICAgICAgICwgbV9zcmNGb250
Q29udGFpbmVyUmVmKHNyY0ZvbnRDb250YWluZXJSZWYpCi0gICAgewotICAgICAgICBpZiAoIWNv
bnRhaW5lcikKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIC8vIENvdW50
IHRoZSBudW1iZXIgb2YgZm9udHMgaW4gdGhlIGNvbnRhaW5lci4KLSAgICAgICAgSXRlbUNvdW50
IGZvbnRDb3VudCA9IDA7Ci0gICAgICAgIE9TU3RhdHVzIGVyciA9IEFUU0ZvbnRGaW5kRnJvbUNv
bnRhaW5lcihjb250YWluZXIsIGtBVFNPcHRpb25GbGFnc0RlZmF1bHQsIDAsIDAsICZmb250Q291
bnQpOwotICAgICAgICBpZiAoZXJyICE9IG5vRXJyIHx8IGZvbnRDb3VudCA8IDEpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gRm9yIG5vdyBhbHdheXMgYXNzdW1lIHRoYXQgd2Ug
d2FudCB0aGUgZmlyc3QgZm9udCBpbiB0aGUgY29udGFpbmVyLgotICAgICAgICBBVFNGb250Rmlu
ZEZyb21Db250YWluZXIoY29udGFpbmVyLCBrQVRTT3B0aW9uRmxhZ3NEZWZhdWx0LCAxLCAmbV9h
dHNGb250UmVmLCAwKTsKLQotICAgICAgICBpZiAoIW1fYXRzRm9udFJlZikKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICAvLyBDYWNoZSBDR0ZvbnQgcmVwcmVzZW50YXRpb24gb2YgdGhl
IGZvbnQuCi0gICAgICAgIG1fY2dGb250LmFkb3B0Q0YoQ0dGb250Q3JlYXRlV2l0aFBsYXRmb3Jt
Rm9udCgmbV9hdHNGb250UmVmKSk7Ci0gICAgICAgIAotICAgICAgICBpZiAoIW1fY2dGb250Lmdl
dCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgLy8gQWRkIG91cnNl
bHZlcyB0byBjYWNoZXMuCi0gICAgICAgIGZvbnRDYWNoZUJ5U3JjRm9udENvbnRhaW5lclJlZigp
LmFkZChtX3NyY0ZvbnRDb250YWluZXJSZWYsIHRoaXMpOwotICAgICAgICBmb250Q2FjaGVCeUFj
dHVhbEZvbnRSZWYoKS5hZGQobV9hdHNGb250UmVmLCB0aGlzKTsKLSAgICB9Ci0gICAgCi0gICAg
Ly8gR2V0IGNhY2hlZCBDR0ZvbnRSZWYgY29ycmVzcG9uZGluZyB0byB0aGUgaW4tbWVtb3J5IGZv
bnQuCi0gICAgQ0dGb250UmVmIGNnRm9udCgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9jZ0Zv
bnQuZ2V0KCk7Ci0gICAgfQotICAgIAotICAgIC8vIEdldCBjYWNoZWQgQVRTRm9udFJlZiBjb3Jy
ZXNwb25kaW5nIHRvIHRoZSBpbi1tZW1vcnkgZm9udC4KLSAgICBBVFNGb250UmVmIGF0c0ZvbnRS
ZWYoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYXRzRm9udFJlZjsKLSAgICB9Ci0gICAgCi0g
ICAgLy8gRGVzdHJ1Y3RvciAtIFVubG9hZCBmb250IGNvbnRhaW5lciBmcm9tIG1lbW9yeSBhbmQg
cmVtb3ZlIG91cnNlbHZlcwotICAgIC8vIGZyb20gaGFzaGVzLgotICAgIH5NZW1vcnlBY3RpdmF0
ZWRGb250KCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2NnRm9udC5nZXQoKSkgeyAgLy8gT2JqZWN0
IGNvbnN0cnVjdGlvbiBzdWNjZWVkZWQuCi0gICAgICAgICAgICAvLyBGaXJzdCByZW1vdmUgb3Vy
c2VsdmVzIGZyb20gdGhlIGNhY2hlcy4KLSAgICAgICAgICAgIEFTU0VSVChmb250Q2FjaGVCeVNy
Y0ZvbnRDb250YWluZXJSZWYoKS5jb250YWlucyhtX3NyY0ZvbnRDb250YWluZXJSZWYpKTsKLSAg
ICAgICAgICAgIEFTU0VSVChmb250Q2FjaGVCeUFjdHVhbEZvbnRSZWYoKS5jb250YWlucyhtX2F0
c0ZvbnRSZWYpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZm9udENhY2hlQnlTcmNGb250
Q29udGFpbmVyUmVmKCkucmVtb3ZlKG1fc3JjRm9udENvbnRhaW5lclJlZik7Ci0gICAgICAgICAg
ICBmb250Q2FjaGVCeUFjdHVhbEZvbnRSZWYoKS5yZW1vdmUobV9hdHNGb250UmVmKTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBDR0ZvbnQgaXMgZGVzdHJveWVk
IGJlZm9yZSBpdHMgZm9udCBjb250YWluZXIuCi0gICAgICAgICAgICBtX2NnRm9udC5yZWxlYXNl
UmVmKCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChtX2ZvbnRDb250YWluZXIg
IT0ga0FUU0ZvbnRDb250YWluZXJSZWZVbnNwZWNpZmllZCkKLSAgICAgICAgICAgIEFUU0ZvbnRE
ZWFjdGl2YXRlKG1fZm9udENvbnRhaW5lciwgMCwga0FUU09wdGlvbkZsYWdzRGVmYXVsdCk7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIEFUU0ZvbnRDb250YWluZXJSZWYgbV9mb250Q29udGFpbmVy
OwotICAgIFdURjo6UmV0YWluUHRyPENHRm9udFJlZj4gbV9jZ0ZvbnQ7Ci0gICAgQVRTRm9udFJl
ZiBtX2F0c0ZvbnRSZWY7Ci0gICAgQVRTRm9udENvbnRhaW5lclJlZiBtX3NyY0ZvbnRDb250YWlu
ZXJSZWY7Ci19OwotCi0vLyBUaGUgb25seSB3YXkgd2UgY2FuIHRlbGwgdGhhdCBhbiBpbi1wcm9j
ZXNzIGZvbnQgaGFzIGZhaWxlZCB0byBsb2FkCi0vLyBpcyBpZiBDVEZvbnRDb3B5R3JhcGhpY3NG
b250KCkgcmV0dXJucyB0aGUgTGFzdFJlc29ydCBmb250LgotYm9vbCBpc0xhc3RSZXNvcnRGb250
KENHRm9udFJlZiBjZ0ZvbnQpCi17Ci0gICAgTlNTdHJpbmcqIGZvbnROYW1lID0gKE5TU3RyaW5n
KilDR0ZvbnRDb3B5UG9zdFNjcmlwdE5hbWUoY2dGb250KTsKLSAgICByZXR1cm4gW2ZvbnROYW1l
IGlzRXF1YWxUb1N0cmluZzpAIkxhc3RSZXNvcnQiXTsKLX0KLQotLy8gR2l2ZW4gYW4gaW4tcHJv
Y2VzcyBmb250IHdoaWNoIGhhcyBmYWlsZWQgdG8gbG9hZCwgcmV0dXJuIGEKLS8vIE1lbW9yeUFj
dGl2YXRlZEZvbnQqIGNvcnJlc3BvbmRpbmcgdG8gYW4gaW4tbWVtb3J5IHJlcHJlc2VudGF0aW9u
IG9mIHRoZQotLy8gc2FtZSBmb250IGxvYWRlZCBmcm9tIHRoZSBicm93c2VyIHByb2Nlc3MuCi0v
LyBUaGUgY2FsbGVyIGlzIHJlc3BvbnNiaWxlIGZvciBjYWxsaW5nIGRlcmVmTWVtb3J5Rm9udCgp
IG9uIHRoZSBBVFNGb250UmVmCi0vLyBvZiB0aGUgcmV0dXJuZWQgZm9udC4KLS8vIE9uIGZhaWx1
cmUgdGhpcyBmdW5jdGlvbiByZXR1cm5zIDAsIGluIHdoaWNoIGNhc2UgdGhlIGNhbGxlciBkb2Vz
bid0IG5lZWQKLS8vIHRvIHBlcmZvcm0gYW55IGFkZGl0aW9uYWwgY2xlYW51cC4KLU1lbW9yeUFj
dGl2YXRlZEZvbnQqIGxvYWRGb250RnJvbUJyb3dzZXJQcm9jZXNzKE5TRm9udCogbnNGb250KQot
ewotICAgIEFUU0ZvbnRDb250YWluZXJSZWYgY29udGFpbmVyOwotICAgIC8vIFNlbmQgY3Jvc3Mt
cHJvY2VzcyByZXF1ZXN0IHRvIGxvYWQgZm9udC4KLSAgICBpZiAoIUNocm9taXVtQnJpZGdlOjps
b2FkRm9udChuc0ZvbnQsICZjb250YWluZXIpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAg
ICBBVFNGb250Q29udGFpbmVyUmVmIHNyY0ZvbnRDb250YWluZXJSZWYgPSBmb250Q29udGFpbmVy
UmVmRnJvbU5TRm9udChuc0ZvbnQpOwotICAgIGlmICghc3JjRm9udENvbnRhaW5lclJlZikgewot
ICAgICAgICBBVFNGb250RGVhY3RpdmF0ZShjb250YWluZXIsIDAsIGtBVFNPcHRpb25GbGFnc0Rl
ZmF1bHQpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgICAKLSAgICBNZW1vcnlBY3Rp
dmF0ZWRGb250KiBmb250ID0gZm9udENhY2hlQnlTcmNGb250Q29udGFpbmVyUmVmKCkuZ2V0KHNy
Y0ZvbnRDb250YWluZXJSZWYpOwotICAgIGlmICghZm9udCkgewotICAgICAgICBmb250ID0gbmV3
IE1lbW9yeUFjdGl2YXRlZEZvbnQoc3JjRm9udENvbnRhaW5lclJlZiwgY29udGFpbmVyKTsKLSAg
ICAgICAgaWYgKCFmb250LT5jZ0ZvbnQoKSkgewotICAgICAgICAgICAgZGVsZXRlIGZvbnQ7Ci0g
ICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZv
bnQtPnJlZigpOwotICAgIH0KLQotICAgIHJldHVybiBmb250OwotfQotCi0vLyBkZXJlZigpIHRo
ZSBNZW1vcnlBY3RpdmF0ZWRGb250IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIEFUU0ZvbnRS
ZWYuICBJZiBubwotLy8gY29ycmVzcG9uZGluZyBNZW1vcnlBY3RpdmF0ZWRGb250IG9iamVjdCBl
eGlzdHMsIG5vIGFjdGlvbiBpcyBwZXJmb3JtZWQuCi12b2lkIGRlcmVmTWVtb3J5Rm9udChBVFNG
b250UmVmIGZvbnRSZWYpCi17Ci0gICAgaWYgKGZvbnRSZWYgPT0ga0FUU0ZvbnRSZWZVbnNwZWNp
ZmllZCkKLSAgICAgICAgcmV0dXJuOwotICAgIE1lbW9yeUFjdGl2YXRlZEZvbnQqIGZvbnQgPSBm
b250Q2FjaGVCeUFjdHVhbEZvbnRSZWYoKS5nZXQoZm9udFJlZik7Ci0gICAgaWYgKGZvbnQpCi0g
ICAgICAgIGZvbnQtPmRlcmVmKCk7Ci19Ci0KLS8vIHJlZigpIHRoZSBNZW1vcnlBY3RpdmF0ZWRG
b250IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIEFUU0ZvbnRSZWYuICBJZiBubwotLy8gY29y
cmVzcG9uZGluZyBNZW1vcnlBY3RpdmF0ZWRGb250IG9iamVjdCBleGlzdHMsIG5vIGFjdGlvbiBp
cyBwZXJmb3JtZWQuCi12b2lkIHJlZk1lbW9yeUZvbnQoQVRTRm9udFJlZiBmb250UmVmKQotewot
ICAgIGlmIChmb250UmVmID09IGtBVFNGb250UmVmVW5zcGVjaWZpZWQpCi0gICAgICAgIHJldHVy
bjsKLSAgICBNZW1vcnlBY3RpdmF0ZWRGb250KiBmb250ID0gZm9udENhY2hlQnlBY3R1YWxGb250
UmVmKCkuZ2V0KGZvbnRSZWYpOwotICAgIGlmIChmb250KQotICAgICAgICBmb250LT5yZWYoKTsK
LX0KLQotLy8gR2l2ZW4gYW4gTlNGb250LCB0cnkgdG8gbG9hZCBhIHJlcHJlc2VudGF0aW9uIG9m
IHRoYXQgZm9udCBpbnRvIHRoZSBjZ0ZvbnQKLS8vIHBhcmFtZXRlci4gIElmIGxvYWRpbmcgaXMg
YmxvY2tlZCBieSB0aGUgc2FuZGJveCwgdGhlIGZvbnQgbWF5IGJlIGxvYWRlZAotLy8gY3Jvc3Mt
cHJvY2Vzcy4KLS8vIElmIHNhbmRib3ggbG9hZGluZyBhbHNvIGZhaWxzLCBhIGZhbGxiYWNrIGZv
bnQgaXMgbG9hZGVkLgotLy8KLS8vIENvbnNpZGVyYXRpb25zOgotLy8gKiBjZ0ZvbnQgbXVzdCBi
ZSBDRlJlbGVhcygpZWQgYnkgdGhlIGNhbGxlciB3aGVuIGRvbmUuCi0vLyAKLS8vIFBhcmFtZXRl
cnM6Ci0vLyAqIG5zRm9udCAtIFRoZSBmb250IHdlIHdpc2ggdG8gbG9hZC4KLS8vICogZm9udFNp
emUgLSBwb2ludCBzaXplIG9mIHRoZSBmb250IHdlIHdpc2ggdG8gbG9hZC4KLS8vICogb3V0TlNG
b250IC0gVGhlIGZvbnQgdGhhdCB3YXMgYWN0dWFsbHkgbG9hZGVkLCBtYXkgYmUgZGlmZmVyZW50
IGZyb20gbnNGb250Ci0vLyAgIGlmIGEgZmFsbGJhY2sgZm9udCB3YXMgdXNlZC4KLS8vICogY2dG
b250IC0gb24gb3V0cHV0IHRoaXMgY29udGFpbnMgdGhlIENHRm9udFJlZiBjb3JyZXNwb25kaW5n
IHRvIHRoZSBOU0ZvbnQKLS8vICAgdGhhdCB3YXMgcGlja2VkIGluIHRoZSBlbmQuICBUaGUgY2Fs
bGVyIGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nCi0vLyAgIENGUmVsZWFzZSgpIG9uIHRoaXMg
cGFyYW1ldGVyIHdoZW4gZG9uZSB3aXRoIGl0LgotLy8gKiBmb250SUQgLSBvbiBvdXRwdXQsIHRo
ZSBJRCBjb3JyZXNwb25kaW5nIHRvIG5zRm9udC4KLXZvaWQgbG9hZEZvbnQoTlNGb250KiBuc0Zv
bnQsIGZsb2F0IGZvbnRTaXplLCBOU0ZvbnQqJiBvdXROU0ZvbnQsIENHRm9udFJlZiYgY2dGb250
LCBBVFNVRm9udElEJiBmb250SUQpCi17Ci0gICAgb3V0TlNGb250ID0gbnNGb250OwotICAgIGNn
Rm9udCA9IENURm9udENvcHlHcmFwaGljc0ZvbnQodG9DVEZvbnRSZWYob3V0TlNGb250KSwgMCk7
Ci0gICAgTWVtb3J5QWN0aXZhdGVkRm9udCogbWVtRm9udCA9IDA7Ci0gICAgaWYgKE91dE9mUHJv
Y2Vzc0ZvbnRMb2FkaW5nRW5hYmxlZCgpICYmIG91dE5TRm9udCAmJiBjZ0ZvbnQgJiYgaXNMYXN0
UmVzb3J0Rm9udChjZ0ZvbnQpKSB7Ci0gICAgICAgIC8vIFJlbGVhc2Ugb2xkIENHRm9udFJlZiBz
aW5jZSBpdCBwb2ludHMgYXQgdGhlIExhc3RSZXNvcnQgZm9udCB3aGljaCB3ZSBkb24ndCB3YW50
LgotICAgICAgICBDRlJlbGVhc2UoY2dGb250KTsKLSAgICAgICAgY2dGb250ID0gMDsKLSAgICAg
ICAgCi0gICAgICAgIC8vIEZvbnQgbG9hZGluZyB3YXMgYmxvY2tlZCBieSB0aGUgU2FuZGJveC4K
LSAgICAgICAgbWVtRm9udCA9IGxvYWRGb250RnJvbUJyb3dzZXJQcm9jZXNzKG91dE5TRm9udCk7
Ci0gICAgICAgIGlmIChtZW1Gb250KSB7Ci0gICAgICAgICAgICBjZ0ZvbnQgPSBtZW1Gb250LT5j
Z0ZvbnQoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gTmVlZCB0byBhZGQgYW4gZXh0
cmEgcmV0YWluIHNvIG91dHB1dCBzZW1hbnRpY3Mgb2YgdGhpcyBmdW5jdGlvbgotICAgICAgICAg
ICAgLy8gYXJlIGNvbnNpc3RlbnQuCi0gICAgICAgICAgICBDRlJldGFpbihjZ0ZvbnQpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gSWYgd2Ugc3RpbGwgY2FuJ3QgbG9hZCB0aGUg
Zm9udCwgdGhlbiByZXR1cm4gVGltZXMsCi0gICAgICAgICAgICAvLyByYXRoZXIgdGhhbiB0aGUg
TGFzdFJlc29ydCBmb250LgotICAgICAgICAgICAgb3V0TlNGb250ID0gW05TRm9udCBmb250V2l0
aE5hbWU6QCJUaW1lcyIgc2l6ZTpmb250U2l6ZV07Ci0gICAgICAgICAgICBjZ0ZvbnQgPSBDVEZv
bnRDb3B5R3JhcGhpY3NGb250KHRvQ1RGb250UmVmKG91dE5TRm9udCksIDApOwotICAgICAgICB9
Ci0gICAgfQotICAgIAotICAgIGlmIChtZW1Gb250KSB7Ci0gICAgICAgIGZvbnRJRCA9IG1lbUZv
bnQtPmF0c0ZvbnRSZWYoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBmb250SUQgPSBDVEZvbnRH
ZXRQbGF0Zm9ybUZvbnQodG9DVEZvbnRSZWYob3V0TlNGb250KSwgMCk7Ci0gICAgfQotfQotCi19
IC8vIG5hbWVzcGFjZQotLy8gRW5kIENocm9taXVtIENoYW5nZQotCi1Gb250UGxhdGZvcm1EYXRh
OjpGb250UGxhdGZvcm1EYXRhKE5TRm9udCAqbnNGb250LCBib29sIHN5bnRoZXRpY0JvbGQsIGJv
b2wgc3ludGhldGljT2JsaXF1ZSkKLSAgICA6IG1fc3ludGhldGljQm9sZChzeW50aGV0aWNCb2xk
KQotICAgICwgbV9zeW50aGV0aWNPYmxpcXVlKHN5bnRoZXRpY09ibGlxdWUpCi0gICAgLCBtX2Zv
bnQobnNGb250KQotI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
Ci0gICAgLCBtX2lzQ29sb3JCaXRtYXBGb250KENURm9udEdldFN5bWJvbGljVHJhaXRzKHRvQ1RG
b250UmVmKG5zRm9udCkpICYga0NURm9udENvbG9yR2x5cGhzVHJhaXQpCi0jZWxzZQotICAgICwg
bV9pc0NvbG9yQml0bWFwRm9udChmYWxzZSkKLSNlbmRpZgotewotLy8gU3RhcnQgQ2hyb21pdW0g
Q2hhbmdlCi0gICAgbV9zaXplID0gbnNGb250ID8gW25zRm9udCBwb2ludFNpemVdIDogMC4wZjsK
LSAgICBDR0ZvbnRSZWYgY2dGb250ID0gMDsKLSAgICBOU0ZvbnQqIGxvYWRlZEZvbnQgPSAwOwot
ICAgIGxvYWRGb250KG5zRm9udCwgbV9zaXplLCBsb2FkZWRGb250LCBjZ0ZvbnQsIG1fYXRzdUZv
bnRJRCk7Ci0gICAgbV9mb250ID0gbG9hZGVkRm9udDsKLSAgICBpZiAobV9mb250KQotICAgICAg
ICBDRlJldGFpbihtX2ZvbnQpOwotICAgIG1fY2dGb250LmFkb3B0Q0YoY2dGb250KTsKLS8vIEVu
ZCBDaHJvbWl1bSBDaGFuZ2UKLX0KLQotRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0
YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBmKQotewotICAgIG1fZm9udCA9IGYubV9mb250ICYm
IGYubV9mb250ICE9IHJlaW50ZXJwcmV0X2Nhc3Q8TlNGb250ICo+KC0xKSA/IGNvbnN0X2Nhc3Q8
TlNGb250ICo+KHN0YXRpY19jYXN0PGNvbnN0IE5TRm9udCAqPihDRlJldGFpbihmLm1fZm9udCkp
KSA6IGYubV9mb250OwotCi0gICAgbV9zeW50aGV0aWNCb2xkID0gZi5tX3N5bnRoZXRpY0JvbGQ7
Ci0gICAgbV9zeW50aGV0aWNPYmxpcXVlID0gZi5tX3N5bnRoZXRpY09ibGlxdWU7Ci0gICAgbV9z
aXplID0gZi5tX3NpemU7Ci0gICAgbV9jZ0ZvbnQgPSBmLm1fY2dGb250OwotICAgIG1fYXRzdUZv
bnRJRCA9IGYubV9hdHN1Rm9udElEOwotICAgIG1faXNDb2xvckJpdG1hcEZvbnQgPSBmLm1faXND
b2xvckJpdG1hcEZvbnQ7Ci0gICAgLy8gU3RhcnQgQ2hyb21pdW0gQ2hhbmdlCi0gICAgcmVmTWVt
b3J5Rm9udChtX2F0c3VGb250SUQpOwotICAgIC8vIEVuZCBDaHJvbWl1bSBDaGFuZ2UKLX0KLQot
Rm9udFBsYXRmb3JtRGF0YTo6fkZvbnRQbGF0Zm9ybURhdGEoKQotewotICAgIGlmIChtX2ZvbnQg
JiYgbV9mb250ICE9IHJlaW50ZXJwcmV0X2Nhc3Q8TlNGb250ICo+KC0xKSkKLSAgICAgICAgQ0ZS
ZWxlYXNlKG1fZm9udCk7Ci0KLSAgICAvLyBTdGFydCBDaHJvbWl1bSBDaGFuZ2UKLSAgICBkZXJl
Zk1lbW9yeUZvbnQobV9hdHN1Rm9udElEKTsKLSAgICAvLyBFbmQgQ2hyb21pdW0gQ2hhbmdlCi19
Ci0KLWNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIEZvbnRQbGF0Zm9ybURhdGE6Om9wZXJhdG9yPShj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBmKQotewotICAgIG1fc3ludGhldGljQm9sZCA9IGYubV9z
eW50aGV0aWNCb2xkOwotICAgIG1fc3ludGhldGljT2JsaXF1ZSA9IGYubV9zeW50aGV0aWNPYmxp
cXVlOwotICAgIG1fc2l6ZSA9IGYubV9zaXplOwotICAgIG1fY2dGb250ID0gZi5tX2NnRm9udDsK
LSAgICBtX2F0c3VGb250SUQgPSBmLm1fYXRzdUZvbnRJRDsKLSAgICBpZiAobV9mb250ID09IGYu
bV9mb250KQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgaWYgKGYubV9mb250ICYmIGYubV9m
b250ICE9IHJlaW50ZXJwcmV0X2Nhc3Q8TlNGb250ICo+KC0xKSkKLSAgICAgICAgQ0ZSZXRhaW4o
Zi5tX2ZvbnQpOwotICAgIGlmIChtX2ZvbnQgJiYgbV9mb250ICE9IHJlaW50ZXJwcmV0X2Nhc3Q8
TlNGb250ICo+KC0xKSkKLSAgICAgICAgQ0ZSZWxlYXNlKG1fZm9udCk7Ci0gICAgbV9mb250ID0g
Zi5tX2ZvbnQ7Ci0gICAgbV9pc0NvbG9yQml0bWFwRm9udCA9IGYubV9pc0NvbG9yQml0bWFwRm9u
dDsKLSAgICAvLyBTdGFydCBDaHJvbWl1bSBDaGFuZ2UKLSAgICByZWZNZW1vcnlGb250KG1fYXRz
dUZvbnRJRCk7Ci0gICAgLy8gRW5kIENocm9taXVtIENoYW5nZQotICAgIHJldHVybiAqdGhpczsK
LX0KLQotdm9pZCBGb250UGxhdGZvcm1EYXRhOjpzZXRGb250KE5TRm9udCAqZm9udCkKLXsKLSAg
ICBpZiAobV9mb250ID09IGZvbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoZm9udCkKLSAg
ICAgICAgQ0ZSZXRhaW4oZm9udCk7Ci0gICAgaWYgKG1fZm9udCAmJiBtX2ZvbnQgIT0gcmVpbnRl
cnByZXRfY2FzdDxOU0ZvbnQgKj4oLTEpKQotICAgICAgICBDRlJlbGVhc2UobV9mb250KTsKLSAg
ICBtX2ZvbnQgPSBmb250OwotICAgIG1fc2l6ZSA9IGZvbnQgPyBbZm9udCBwb2ludFNpemVdIDog
MC4wZjsKLSAgICAKLSAgICAvLyBTdGFydCBDaHJvbWl1bSBDaGFuZ2UKLSAgICBDR0ZvbnRSZWYg
Y2dGb250ID0gMDsKLSAgICBOU0ZvbnQqIGxvYWRlZEZvbnQgPSAwOwotICAgIGxvYWRGb250KG1f
Zm9udCwgbV9zaXplLCBsb2FkZWRGb250LCBjZ0ZvbnQsIG1fYXRzdUZvbnRJRCk7Ci0gICAgCi0g
ICAgLy8gSWYgbG9hZEZvbnQgcmVwbGFjZWQgbV9mb250IHdpdGggYSBmYWxsYmFjayBmb250LCB0
aGVuIHJlbGVhc2UgdGhlCi0gICAgLy8gcHJldmlvdXMgZm9udCB0byBjb3VudGVyIHRoZSByZXRh
aW4gYWJvdmUuIFRoZW4gcmV0YWluIHRoZSBuZXcgZm9udC4KLSAgICBpZiAobG9hZGVkRm9udCAh
PSBtX2ZvbnQpIHsKLSAgICAgICAgQ0ZSZWxlYXNlKG1fZm9udCk7Ci0gICAgICAgIG1fZm9udCA9
IGxvYWRlZEZvbnQ7Ci0gICAgICAgIENGUmV0YWluKG1fZm9udCk7Ci0gICAgfQotICAgIG1fY2dG
b250LmFkb3B0Q0YoY2dGb250KTsKLSNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05P
V19MRU9QQVJEKQotICAgIG1faXNDb2xvckJpdG1hcEZvbnQgPSBDVEZvbnRHZXRTeW1ib2xpY1Ry
YWl0cyh0b0NURm9udFJlZihtX2ZvbnQpKSAmIGtDVEZvbnRDb2xvckdseXBoc1RyYWl0OwotI2Vu
ZGlmCi0gICAgLy8gRW5kIENocm9taXVtIENoYW5nZQotfQotCi1ib29sIEZvbnRQbGF0Zm9ybURh
dGE6OnJvdW5kc0dseXBoQWR2YW5jZXMoKSBjb25zdAotewotICAgIHJldHVybiBbbV9mb250IHJl
bmRlcmluZ01vZGVdID09IE5TRm9udEFudGlhbGlhc2VkSW50ZWdlckFkdmFuY2VtZW50c1JlbmRl
cmluZ01vZGU7Ci19Ci0KLWJvb2wgRm9udFBsYXRmb3JtRGF0YTo6YWxsb3dzTGlnYXR1cmVzKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gIVtbbV9mb250IGNvdmVyZWRDaGFyYWN0ZXJTZXRdIGNoYXJh
Y3RlcklzTWVtYmVyOidhJ107Ci19Ci0KLSNpZiBVU0UoQ09SRV9URVhUKQotQ1RGb250UmVmIEZv
bnRQbGF0Zm9ybURhdGE6OmN0Rm9udCgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fZm9udCkKLSAgICAg
ICAgcmV0dXJuIHRvQ1RGb250UmVmKG1fZm9udCk7Ci0gICAgaWYgKCFtX0NURm9udCkKLSAgICAg
ICAgbV9DVEZvbnQuYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoR3JhcGhpY3NGb250KG1fY2dGb250
LmdldCgpLCBtX3NpemUsIDAsIDApKTsKLSAgICByZXR1cm4gbV9DVEZvbnQuZ2V0KCk7Ci19Ci0j
ZW5kaWYgLy8gVVNFKENPUkVfVEVYVCkKLQotI2lmbmRlZiBOREVCVUcKLVN0cmluZyBGb250UGxh
dGZvcm1EYXRhOjpkZXNjcmlwdGlvbigpIGNvbnN0Ci17Ci0gICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBjZ0ZvbnREZXNjcmlwdGlvbihBZG9wdENGLCBDRkNvcHlEZXNjcmlwdGlvbihjZ0ZvbnQo
KSkpOwotICAgIHJldHVybiBTdHJpbmcoY2dGb250RGVzY3JpcHRpb24uZ2V0KCkpICsgIiAiICsg
U3RyaW5nOjpudW1iZXIobV9zaXplKSArIChtX3N5bnRoZXRpY0JvbGQgPyAiIHN5bnRoZXRpYyBi
b2xkIiA6ICIiKSArIChtX3N5bnRoZXRpY09ibGlxdWUgPyAiIHN5bnRoZXRpYyBvYmxpcXVlIiA6
ICIiKTsKLX0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YS5oCmluZGV4IGRjODc2
YTguLjAzNGUyM2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udFBsYXRmb3JtRGF0YS5oCkBAIC00Miw3ICs0MiwxMyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBfX0NURm9udCogQ1RGb250UmVmOwogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJ
TikKKyNpbmNsdWRlICJDcm9zc1Byb2Nlc3NGb250TG9hZGluZy5oIiAgCisjZW5kaWYKKworCiB0
eXBlZGVmIFVJbnQzMiBBVFNVRm9udElEOwordHlwZWRlZiBVSW50MzIgQVRTRm9udFJlZjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzMsNiArMTM5LDE1IEBAIGNsYXNzIEZvbnRQbGF0
Zm9ybURhdGEgewogCiBwcml2YXRlOgogICAgIHN0YXRpYyBOU0ZvbnQgKmhhc2hUYWJsZURlbGV0
ZWRGb250VmFsdWUoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PE5TRm9udCAqPigtMSk7IH0K
KyAgICAKKyAgICAvLyBMb2FkIHZhcmlvdXMgZGF0YSBhYm91dCB0aGUgZm9udCBzcGVjaWZpZWQg
YnkgfG5zRm9udHwgd2l0aCB0aGUgc2l6ZSBmb250U2l6ZSBpbnRvIHRoZSBmb2xsb3dpbmcgb3V0
cHV0IHBhcmFtdGVyczoKKyAgICAvLyBOb3RlOiBDYWxsZXJzIHNob3VsZCBhbHdheXMgdGFrZSBp
bnRvIGFjY291bnQgdGhhdCBmb3IgdGhlIENocm9taXVtIHBvcnQsIHxvdXROU0ZvbnR8IGlzbid0
IG5lY2Vzc2FyaWx5IHRoZSBzYW1lCisgICAgLy8gZm9udCBhcyB8bnNGb250fC4gIFRoaXMgYmVj
YXVzZSB0aGUgc2FuZGJveCBtYXkgYmxvY2sgbG9hZGluZyBvZiB0aGUgb3JpZ2luYWwgZm9udC4K
KyAgICAvLyAqIG91dE5TRm9udCAtIFRoZSBmb250IHRoYXQgd2FzIGFjdHVhbGx5IGxvYWRlZCwg
Zm9yIHRoZSBDaHJvbWl1bSBwb3J0IHRoaXMgbWF5IGJlIGRpZmZlcmVudCB0aGFuIG5zRm9udC4K
KyAgICAvLyBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIENGUmVsZWFzZSgp
IG9uIHRoaXMgcGFyYW1ldGVyIHdoZW4gZG9uZSB3aXRoIGl0LgorICAgIC8vICogY2dGb250IC0g
Q0dGb250UmVmIHJlcHJlc2VudGluZyB0aGUgaW5wdXQgZm9udCBhdCB0aGUgc3BlY2lmaWVkIHBv
aW50IHNpemUuCisgICAgLy8gKiBmb250SUQgLSBJRCBvZiBsb2FkZWQgZm9udC4KKyAgICB2b2lk
IGxvYWRGb250KE5TRm9udCogbnNGb250LCBmbG9hdCBmb250U2l6ZSwgTlNGb250KiYgb3V0TlNG
b250LCBDR0ZvbnRSZWYmIGNnRm9udCwgQVRTVUZvbnRJRCYgZm9udElEKTsKIAogICAgIE5TRm9u
dCAqbV9mb250OwogCkBAIC0xNDcsOCArMTYyLDEyIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAg
IGJvb2wgbV9pc0NvbG9yQml0bWFwRm9udDsKKyAgICAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkg
JiYgT1MoREFSV0lOKQorICAgIFJlZlB0cjxNZW1vcnlBY3RpdmF0ZWRGb250PiBtX2luTWVtb3J5
Rm9udDsKKyNlbmRpZgogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3Jt
RGF0YUNvY29hLm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZv
cm1EYXRhQ29jb2EubW0KaW5kZXggZDkwNWI2Mi4uYmQ0OWRjYyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0K
QEAgLTIsNiArMiw3IEBACiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgaW50ZXJuYWwgZm9u
dCBpbXBsZW1lbnRhdGlvbi4KICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTI5LDExICszMCwyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBQ
TEFURk9STShNQUMpCit2b2lkIEZvbnRQbGF0Zm9ybURhdGE6OmxvYWRGb250KE5TRm9udCogbnNG
b250LCBmbG9hdCwgTlNGb250KiYgb3V0TlNGb250LCBDR0ZvbnRSZWYmIGNnRm9udCwgQVRTVUZv
bnRJRCYgZm9udElEKQoreworICAgIG91dE5TRm9udCA9IG5zRm9udDsKKyNpZm5kZWYgQlVJTERJ
TkdfT05fVElHRVIKKyAgICBjZ0ZvbnQgPSBDVEZvbnRDb3B5R3JhcGhpY3NGb250KHRvQ1RGb250
UmVmKG5zRm9udCksIDApOworICAgIGZvbnRJRCA9IENURm9udEdldFBsYXRmb3JtRm9udCh0b0NU
Rm9udFJlZihuc0ZvbnQpLCAwKTsKKyNlbHNlCisgICAgY2dGb250ID0gd2tHZXRDR0ZvbnRGcm9t
TlNGb250KG5zRm9udCk7CisgICAgZm9udElEID0gd2tHZXROU0ZvbnRBVFNVRm9udElkKG5zRm9u
dCk7CisjZW5kaWYKK30KKyNlbmRpZiAgLy8gUExBVEZPUk0oTUFDKQorCiBGb250UGxhdGZvcm1E
YXRhOjpGb250UGxhdGZvcm1EYXRhKE5TRm9udCAqbnNGb250LCBib29sIHN5bnRoZXRpY0JvbGQs
IGJvb2wgc3ludGhldGljT2JsaXF1ZSkKICAgICA6IG1fc3ludGhldGljQm9sZChzeW50aGV0aWNC
b2xkKQogICAgICwgbV9zeW50aGV0aWNPYmxpcXVlKHN5bnRoZXRpY09ibGlxdWUpCiAgICAgLCBt
X2ZvbnQobnNGb250KQogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BB
UkQpCisgICAgLy8gRklYTUU6IENocm9taXVtOiBUaGUgZm9sbG93aW5nIGNvZGUgaXNuJ3QgY29y
cmVjdCBmb3IgdGhlIENocm9taXVtIHBvcnQgc2luY2UgdGhlIHNhbmRib3ggbWlnaHQKKyAgICAv
LyBoYXZlIGJsb2NrZWQgZm9udCBsb2FkaW5nLCBpbiB3aGljaCBjYXNlIHdlJ2xsIG9ubHkgaGF2
ZSB0aGUgcmVhbCBsb2FkZWQgZm9udCBmaWxlIGFmdGVyIHRoZSBjYWxsIHRvIGxvYWRGb250KCku
CiAgICAgLCBtX2lzQ29sb3JCaXRtYXBGb250KENURm9udEdldFN5bWJvbGljVHJhaXRzKHRvQ1RG
b250UmVmKG5zRm9udCkpICYga0NURm9udENvbG9yR2x5cGhzVHJhaXQpCiAjZWxzZQogICAgICwg
bV9pc0NvbG9yQml0bWFwRm9udChmYWxzZSkKQEAgLTQxLDE0ICs1OCwxOCBAQCBGb250UGxhdGZv
cm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKE5TRm9udCAqbnNGb250LCBib29sIHN5bnRoZXRpY0Jv
bGQsIGJvb2wgc3ludAogewogICAgIEFTU0VSVF9BUkcobnNGb250LCBuc0ZvbnQpOwogCi0gICAg
Q0ZSZXRhaW4obnNGb250KTsKICAgICBtX3NpemUgPSBbbnNGb250IHBvaW50U2l6ZV07CisgICAg
CisgICAgQ0dGb250UmVmIGNnRm9udCA9IDA7CisgICAgbG9hZEZvbnQobnNGb250LCBtX3NpemUs
IG1fZm9udCwgY2dGb250LCBtX2F0c3VGb250SUQpOworICAgIAorICAgIGlmIChtX2ZvbnQpCisg
ICAgICAgIENGUmV0YWluKG1fZm9udCk7CisKICNpZm5kZWYgQlVJTERJTkdfT05fVElHRVIKLSAg
ICBtX2NnRm9udC5hZG9wdENGKENURm9udENvcHlHcmFwaGljc0ZvbnQodG9DVEZvbnRSZWYobnNG
b250KSwgMCkpOwotICAgIG1fYXRzdUZvbnRJRCA9IENURm9udEdldFBsYXRmb3JtRm9udCh0b0NU
Rm9udFJlZihuc0ZvbnQpLCAwKTsKKyAgICBtX2NnRm9udC5hZG9wdENGKGNnRm9udCk7CiAjZWxz
ZQotICAgIG1fY2dGb250ID0gd2tHZXRDR0ZvbnRGcm9tTlNGb250KG5zRm9udCk7Ci0gICAgbV9h
dHN1Rm9udElEID0gd2tHZXROU0ZvbnRBVFNVRm9udElkKG5zRm9udCk7CisgICAgbV9jZ0ZvbnQg
PSBjZ0ZvbnQ7CiAjZW5kaWYKIH0KIApAQCAtNjUsNiArODYsOSBAQCBGb250UGxhdGZvcm1EYXRh
OjpGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIGYpCiAjaWYgVVNFKENP
UkVfVEVYVCkKICAgICBtX0NURm9udCA9IGYubV9DVEZvbnQ7CiAjZW5kaWYKKyNpZiBQTEFURk9S
TShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKQorICAgIG1faW5NZW1vcnlGb250ID0gZi5tX2luTWVt
b3J5Rm9udDsKKyNlbmRpZgogfQogCiBGb250UGxhdGZvcm1EYXRhOjogfkZvbnRQbGF0Zm9ybURh
dGEoKQpAQCAtOTEsNiArMTE1LDkgQEAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgRm9udFBsYXRm
b3JtRGF0YTo6b3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIGYpCiAjaWYgVVNFKENP
UkVfVEVYVCkKICAgICBtX0NURm9udCA9IGYubV9DVEZvbnQ7CiAjZW5kaWYKKyNpZiBQTEFURk9S
TShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKQorICAgIG1faW5NZW1vcnlGb250ID0gZi5tX2luTWVt
b3J5Rm9udDsKKyNlbmRpZgogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAtMTA3LDE1ICsxMzQs
MjggQEAgdm9pZCBGb250UGxhdGZvcm1EYXRhOjpzZXRGb250KE5TRm9udCAqZm9udCkKICAgICAg
ICAgQ0ZSZWxlYXNlKG1fZm9udCk7CiAgICAgbV9mb250ID0gZm9udDsKICAgICBtX3NpemUgPSBb
Zm9udCBwb2ludFNpemVdOworICAgIAorICAgIENHRm9udFJlZiBjZ0ZvbnQgPSAwOworICAgIE5T
Rm9udCogbG9hZGVkRm9udCA9IDA7CisgICAgbG9hZEZvbnQobV9mb250LCBtX3NpemUsIGxvYWRl
ZEZvbnQsIGNnRm9udCwgbV9hdHN1Rm9udElEKTsKKyAgICAKKyNpZiBQTEFURk9STShDSFJPTUlV
TSkgJiYgT1MoREFSV0lOKQorICAgIC8vIElmIGxvYWRGb250IHJlcGxhY2VkIG1fZm9udCB3aXRo
IGEgZmFsbGJhY2sgZm9udCwgdGhlbiByZWxlYXNlIHRoZQorICAgIC8vIHByZXZpb3VzIGZvbnQg
dG8gY291bnRlciB0aGUgcmV0YWluIGFib3ZlLiBUaGVuIHJldGFpbiB0aGUgbmV3IGZvbnQuCisg
ICAgaWYgKGxvYWRlZEZvbnQgIT0gbV9mb250KSB7CisgICAgICAgIENGUmVsZWFzZShtX2ZvbnQp
OworICAgICAgICBDRlJldGFpbihsb2FkZWRGb250KTsKKyAgICAgICAgbV9mb250ID0gbG9hZGVk
Rm9udDsKKyAgICB9CisjZW5kaWYKKyAgICAKICNpZm5kZWYgQlVJTERJTkdfT05fVElHRVIKLSAg
ICBtX2NnRm9udC5hZG9wdENGKENURm9udENvcHlHcmFwaGljc0ZvbnQodG9DVEZvbnRSZWYoZm9u
dCksIDApKTsKLSAgICBtX2F0c3VGb250SUQgPSBDVEZvbnRHZXRQbGF0Zm9ybUZvbnQodG9DVEZv
bnRSZWYoZm9udCksIDApOworICAgIG1fY2dGb250LmFkb3B0Q0YoY2dGb250KTsKICNlbHNlCi0g
ICAgbV9jZ0ZvbnQgPSB3a0dldENHRm9udEZyb21OU0ZvbnQoZm9udCk7Ci0gICAgbV9hdHN1Rm9u
dElEID0gd2tHZXROU0ZvbnRBVFNVRm9udElkKGZvbnQpOworICAgIG1fY2dGb250ID0gY2dGb250
OwogI2VuZGlmCiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkK
LSAgICBtX2lzQ29sb3JCaXRtYXBGb250ID0gQ1RGb250R2V0U3ltYm9saWNUcmFpdHModG9DVEZv
bnRSZWYoZm9udCkpICYga0NURm9udENvbG9yR2x5cGhzVHJhaXQ7CisgICAgbV9pc0NvbG9yQml0
bWFwRm9udCA9IENURm9udEdldFN5bWJvbGljVHJhaXRzKHRvQ1RGb250UmVmKG1fZm9udCkpICYg
a0NURm9udENvbG9yR2x5cGhzVHJhaXQ7CiAjZW5kaWYKICNpZiBVU0UoQ09SRV9URVhUKQogICAg
IG1fQ1RGb250ID0gMDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>