<?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>35531</bug_id>
          
          <creation_ts>2010-03-01 09:01:34 -0800</creation_ts>
          <short_desc>New port: EFL; adding files to WebCore/graphics/efl (patch 1 of 4)</short_desc>
          <delta_ts>2010-03-04 08:51:37 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Leandro Pereira">leandro</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barbieri</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>194716</commentid>
    <comment_count>0</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-03-01 09:01:34 -0800</bug_when>
    <thetext>+++ This bug was initially created as a clone of Bug #35087 +++</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194779</commentid>
    <comment_count>1</comment_count>
      <attachid>49741</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-03-01 12:56:00 -0800</bug_when>
    <thetext>Created attachment 49741
Add files to WebCore/platform/graphics/efl (patch 1/4)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194780</commentid>
    <comment_count>2</comment_count>
      <attachid>49741</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-03-01 12:57:31 -0800</bug_when>
    <thetext>Comment on attachment 49741
Add files to WebCore/platform/graphics/efl (patch 1/4)

Shouldn&apos;t that GStreamer code be shared across Gtk+/EFL ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195094</commentid>
    <comment_count>3</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-03-02 10:25:10 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 49741 [details])
&gt; Shouldn&apos;t that GStreamer code be shared across Gtk+/EFL ?

Yes, you&apos;re right. I&apos;ll remove the GStreamer code until we&apos;re able to use a shared implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195136</commentid>
    <comment_count>4</comment_count>
      <attachid>49823</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-03-02 11:33:53 -0800</bug_when>
    <thetext>Created attachment 49823
Add EFL port files in WebCore/platform/graphics/efl (patch 1/2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195149</commentid>
    <comment_count>5</comment_count>
      <attachid>49823</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-03-02 11:58:58 -0800</bug_when>
    <thetext>Comment on attachment 49823
Add EFL port files in WebCore/platform/graphics/efl (patch 1/2)

Better grouped :-) How does this code relate to the GTK+ code? Is it very different? similar? or is it even copied? Could the code be shared?

What do you think, Gustavo Noronha?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196095</commentid>
    <comment_count>6</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2010-03-04 08:51:37 -0800</bug_when>
    <thetext>This was fixed by bug #35539.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49741</attachid>
            <date>2010-03-01 12:56:00 -0800</date>
            <delta_ts>2010-03-02 11:16:52 -0800</delta_ts>
            <desc>Add files to WebCore/platform/graphics/efl (patch 1/4)</desc>
            <filename>webcore_platform_graphics_efl-1.diff</filename>
            <type>text/plain</type>
            <size>21957</size>
            <attacher name="Leandro Pereira">leandro</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSAvZGV2L251bGwKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWZsL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMCwwICsxLDUxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmln
aHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICogQ29weXJpZ2h0
IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBGb250Q3VzdG9t
UGxhdGZvcm1EYXRhX2gKKyNkZWZpbmUgRm9udEN1c3RvbVBsYXRmb3JtRGF0YV9oCisKKyNpbmNs
dWRlICJGb250UmVuZGVyaW5nTW9kZS5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
Cit0eXBlZGVmIHN0cnVjdCBfY2Fpcm9fZm9udF9mYWNlIGNhaXJvX2ZvbnRfZmFjZV90OyAvLyBO
T0xJTlQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGb250UGxhdGZvcm1EYXRhOwor
Y2xhc3MgU2hhcmVkQnVmZmVyOworCitzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA6IE5v
bmNvcHlhYmxlIHsKKyAgICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKGNhaXJvX2ZvbnRfZmFjZV90
KiBmb250RmFjZSkKKyAgICA6IG1fZm9udEZhY2UoZm9udEZhY2UpCisgICAge30KKworICAgIH5G
b250Q3VzdG9tUGxhdGZvcm1EYXRhKCk7CisKKyAgICBGb250UGxhdGZvcm1EYXRhIGZvbnRQbGF0
Zm9ybURhdGEoaW50IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIEZvbnRSZW5kZXJpbmdN
b2RlID0gTm9ybWFsUmVuZGVyaW5nTW9kZSk7CisKKyAgICBjYWlyb19mb250X2ZhY2VfdCogbV9m
b250RmFjZTsKK307CisKK0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpOworfQorCisjZW5kaWYgLy8gRm9udEN1
c3RvbVBsYXRmb3JtRGF0YV9oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSAvZGV2L251bGwKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5oCkBAIC0wLDAgKzEsMTQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQ29s
bGFib3JhIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBB
bHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJv
RlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1
bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaWZuZGVmIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcl9oCisjZGVm
aW5lIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcl9oCisKKyNpZiBFTkFCTEUoVklERU8pCisK
KyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorCisj
aW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNsdWRlIDxnbGliLmg+CisKK3R5cGVkZWYgc3RydWN0IF9H
c3RFbGVtZW50IEdzdEVsZW1lbnQ7Cit0eXBlZGVmIHN0cnVjdCBfR3N0TWVzc2FnZSBHc3RNZXNz
YWdlOwordHlwZWRlZiBzdHJ1Y3QgX0dzdEJ1cyBHc3RCdXM7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgSW50U2l6ZTsKK2NsYXNzIEludFJl
Y3Q7CitjbGFzcyBTdHJpbmc7CisKK2dib29sZWFuIG1lZGlhUGxheWVyUHJpdmF0ZUVycm9yQ2Fs
bGJhY2soR3N0QnVzKiBidXMsIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdwb2ludGVyIGRhdGEpOwor
Z2Jvb2xlYW4gbWVkaWFQbGF5ZXJQcml2YXRlRU9TQ2FsbGJhY2soR3N0QnVzKiBidXMsIEdzdE1l
c3NhZ2UqIG1lc3NhZ2UsIGdwb2ludGVyIGRhdGEpOworZ2Jvb2xlYW4gbWVkaWFQbGF5ZXJQcml2
YXRlU3RhdGVDYWxsYmFjayhHc3RCdXMqIGJ1cywgR3N0TWVzc2FnZSogbWVzc2FnZSwgZ3BvaW50
ZXIgZGF0YSk7CisKK2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZSA6IHB1YmxpYyBNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2UgeworICAgIGZyaWVuZCBnYm9vbGVhbiBtZWRpYVBsYXllclByaXZh
dGVFcnJvckNhbGxiYWNrKEdzdEJ1cyogYnVzLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBncG9pbnRl
ciBkYXRhKTsKKyAgICBmcmllbmQgZ2Jvb2xlYW4gbWVkaWFQbGF5ZXJQcml2YXRlRU9TQ2FsbGJh
Y2soR3N0QnVzKiBidXMsIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdwb2ludGVyIGRhdGEpOworICAg
IGZyaWVuZCBnYm9vbGVhbiBtZWRpYVBsYXllclByaXZhdGVTdGF0ZUNhbGxiYWNrKEdzdEJ1cyog
YnVzLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBncG9pbnRlciBkYXRhKTsKKworICAgIHB1YmxpYzoK
KyAgICAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lz
dHJhcik7CisgICAgICAgIH5NZWRpYVBsYXllclByaXZhdGUoKTsKKworICAgICAgICBJbnRTaXpl
IG5hdHVyYWxTaXplKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdDsKKwor
ICAgICAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nICZ1cmwpOworICAgICAgICB2b2lkIGNhbmNl
bExvYWQoKTsKKworICAgICAgICB2b2lkIHBsYXkoKTsKKyAgICAgICAgdm9pZCBwYXVzZSgpOwor
CisgICAgICAgIGJvb2wgcGF1c2VkKCkgY29uc3Q7CisgICAgICAgIGJvb2wgc2Vla2luZygpIGNv
bnN0OworCisgICAgICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7CisgICAgICAgIGZsb2F0IGN1
cnJlbnRUaW1lKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2VlayhmbG9hdCk7CisgICAgICAgIHZv
aWQgc2V0RW5kVGltZShmbG9hdCk7CisKKyAgICAgICAgdm9pZCBzZXRSYXRlKGZsb2F0KTsKKyAg
ICAgICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQpOworICAgICAgICB2b2lkIHNldE11dGVkKGJvb2wp
OworCisgICAgICAgIGludCBkYXRhUmF0ZSgpIGNvbnN0OworCisgICAgICAgIE1lZGlhUGxheWVy
OjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3Q7CisgICAgICAgIE1lZGlhUGxheWVy
OjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKKworICAgICAgICBmbG9hdCBtYXhUaW1l
QnVmZmVyZWQoKSBjb25zdDsKKyAgICAgICAgZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3Q7
CisgICAgICAgIHVuc2lnbmVkIGJ5dGVzTG9hZGVkKCkgY29uc3Q7CisgICAgICAgIGJvb2wgdG90
YWxCeXRlc0tub3duKCkgY29uc3Q7CisgICAgICAgIHVuc2lnbmVkIHRvdGFsQnl0ZXMoKSBjb25z
dDsKKworICAgICAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7CisgICAgICAgIHZvaWQgc2V0U2l6
ZShjb25zdCBJbnRTaXplJik7CisKKyAgICAgICAgdm9pZCBsb2FkU3RhdGVDaGFuZ2VkKCk7Cisg
ICAgICAgIHZvaWQgcmF0ZUNoYW5nZWQoKTsKKyAgICAgICAgdm9pZCBzaXplQ2hhbmdlZCgpOwor
ICAgICAgICB2b2lkIHRpbWVDaGFuZ2VkKCk7CisgICAgICAgIHZvaWQgdm9sdW1lQ2hhbmdlZCgp
OworICAgICAgICB2b2lkIGRpZEVuZCgpOworICAgICAgICB2b2lkIGxvYWRpbmdGYWlsZWQoKTsK
KworICAgICAgICB2b2lkIHJlcGFpbnQoKTsKKyAgICAgICAgdm9pZCBwYWludChHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBNZWRpYVBs
YXllclByaXZhdGUoTWVkaWFQbGF5ZXIqKTsKKyAgICAgICAgc3RhdGljIE1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmFjZSogY3JlYXRlKE1lZGlhUGxheWVyKiBwbGF5ZXIpOworCisgICAgICAgIHN0
YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYpOworICAgICAgICBz
dGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcyk7CisgICAgICAgIHN0YXRpYyBib29sIGlzQXZh
aWxhYmxlKCkgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgICAgIHZvaWQgdXBkYXRlU3RhdGVzKCk7
CisgICAgICAgIHZvaWQgY2FuY2VsU2VlaygpOworICAgICAgICB2b2lkIGVuZFBvaW50VGltZXJG
aXJlZChUaW1lcjxNZWRpYVBsYXllclByaXZhdGU+Kik7CisgICAgICAgIGZsb2F0IG1heFRpbWVM
b2FkZWQoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzdGFydEVuZFBvaW50VGltZXJJZk5lZWRlZCgp
OworCisgICAgICAgIHZvaWQgY3JlYXRlR1NUUGxheUJpbihTdHJpbmcgdXJsKTsKKworICAgIHBy
aXZhdGU6CisgICAgICAgIE1lZGlhUGxheWVyKiBtX3BsYXllcjsKKyAgICAgICAgR3N0RWxlbWVu
dCogbV9wbGF5QmluOworICAgICAgICBHc3RFbGVtZW50KiBtX3ZpZGVvU2luazsKKyAgICAgICAg
R3N0RWxlbWVudCogbV9zb3VyY2U7CisgICAgICAgIGZsb2F0IG1fcmF0ZTsKKyAgICAgICAgZmxv
YXQgbV9lbmRUaW1lOworICAgICAgICBib29sIG1faXNFbmRSZWFjaGVkOworICAgICAgICBkb3Vi
bGUgbV92b2x1bWU7CisgICAgICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbV9uZXR3b3Jr
U3RhdGU7CisgICAgICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKKyAg
ICAgICAgYm9vbCBtX3N0YXJ0ZWRQbGF5aW5nOworICAgICAgICBtdXRhYmxlIGJvb2wgbV9pc1N0
cmVhbWluZzsKKyAgICAgICAgSW50U2l6ZSBtX3NpemU7CisgICAgICAgIGJvb2wgbV92aXNpYmxl
OworICAgICAgICBjYWlyb19zdXJmYWNlX3QqIG1fc3VyZmFjZTsKK307Cit9CisKKyNlbmRpZgor
I2VuZGlmIC8vIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcl9oCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VmbC9WaWRlb1NpbmtHU3RyZWFtZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSAv
ZGV2L251bGwKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL1ZpZGVvU2lua0dTdHJl
YW1lci5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3IE9wZW5l
ZEhhbmQKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwor
ICogIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg
IDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgVmlkZW9TaW5rR1N0cmVhbWVyX2gKKyNk
ZWZpbmUgVmlkZW9TaW5rR1N0cmVhbWVyX2gKKworI2luY2x1ZGUgPGNhaXJvLmg+CisjaW5jbHVk
ZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDxnc3QvYmFzZS9nc3RiYXNlc2luay5oPgorCitH
X0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfVklERU9fU0lOSyB3ZWJraXRfdmlk
ZW9fc2lua19nZXRfdHlwZSgpCisKKyNkZWZpbmUgV0VCS0lUX1ZJREVPX1NJTksob2JqKSBcCisg
ICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBcCisgICAgV0VCS0lUX1RZUEVf
VklERU9fU0lOSywgV2ViS2l0VmlkZW9TaW5rKSkKKworI2RlZmluZSBXRUJLSVRfVklERU9fU0lO
S19DTEFTUyhrbGFzcykgXAorICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCBc
CisgICAgV0VCS0lUX1RZUEVfVklERU9fU0lOSywgV2ViS2l0VmlkZW9TaW5rQ2xhc3MpKQorCisj
ZGVmaW5lIFdFQktJVF9JU19WSURFT19TSU5LKG9iaikgXAorICAgIChHX1RZUEVfQ0hFQ0tfSU5T
VEFOQ0VfVFlQRSgob2JqKSwgXAorICAgIFdFQktJVF9UWVBFX1ZJREVPX1NJTkspKQorCisjZGVm
aW5lIFdFQktJVF9JU19WSURFT19TSU5LX0NMQVNTKGtsYXNzKSBcCisgICAgKEdfVFlQRV9DSEVD
S19DTEFTU19UWVBFKChrbGFzcyksIFwKKyAgICBXRUJLSVRfVFlQRV9WSURFT19TSU5LKSkKKwor
I2RlZmluZSBXRUJLSVRfVklERU9fU0lOS19HRVRfQ0xBU1Mob2JqKSBcCisgICAgKEdfVFlQRV9J
TlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksIFwKKyAgICBXRUJLSVRfVFlQRV9WSURFT19TSU5LLCBX
ZWJLaXRWaWRlb1NpbmtDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRWaWRlb1Npbmsg
ICAgICAgIFdlYktpdFZpZGVvU2luazsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRWaWRlb1NpbmtD
bGFzcyAgIFdlYktpdFZpZGVvU2lua0NsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFZpZGVv
U2lua1ByaXZhdGUgV2ViS2l0VmlkZW9TaW5rUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRWaWRl
b1NpbmsgeworICAgIC8qPCBwcml2YXRlID4qLworICAgIEdzdEJhc2VTaW5rIHBhcmVudDsKKyAg
ICBXZWJLaXRWaWRlb1NpbmtQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRWaWRl
b1NpbmtDbGFzcyB7CisgICAgLyo8IHByaXZhdGUgPiovCisgICAgR3N0QmFzZVNpbmtDbGFzcyBw
YXJlbnRfY2xhc3M7IC8vIE5PTElOVAorCisgICAgLyogRnV0dXJlIHBhZGRpbmcgKi8KKyAgICB2
b2lkICgqIF93ZWJraXRfcmVzZXJ2ZWQxKSh2b2lkKTsKKyAgICB2b2lkICgqIF93ZWJraXRfcmVz
ZXJ2ZWQyKSh2b2lkKTsKKyAgICB2b2lkICgqIF93ZWJraXRfcmVzZXJ2ZWQzKSh2b2lkKTsKKyAg
ICB2b2lkICgqIF93ZWJraXRfcmVzZXJ2ZWQ0KSh2b2lkKTsKKyAgICB2b2lkICgqIF93ZWJraXRf
cmVzZXJ2ZWQ1KSh2b2lkKTsKKyAgICB2b2lkICgqIF93ZWJraXRfcmVzZXJ2ZWQ2KSh2b2lkKTsK
K307CisKK0dUeXBlICAgICAgIHdlYmtpdF92aWRlb19zaW5rX2dldF90eXBlKHZvaWQpIEdfR05V
Q19DT05TVDsgLy8gTk9MSU5UCitHc3RFbGVtZW50ICp3ZWJraXRfdmlkZW9fc2lua19uZXcoY2Fp
cm9fc3VyZmFjZV90ICpzdXJmYWNlKTsgLy8gTk9MSU5UCisKK3ZvaWQgd2Via2l0X3ZpZGVvX3Np
bmtfc2V0X3N1cmZhY2UoV2ViS2l0VmlkZW9TaW5rICpzaW5rLCBjYWlyb19zdXJmYWNlX3QgKnN1
cmZhY2UpOyAvLyBOT0xJTlQKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8vIFZpZGVvU2lua0dT
dHJlYW1lcl9oCisKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ZvbnRQbGF0
Zm9ybURhdGFFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIC9kZXYvbnVsbAorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZmwvRm9udFBsYXRmb3JtRGF0YUVmbC5jcHAKQEAgLTAsMCArMSwyMTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENv
cHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqIENv
cHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0
IChDKSAyMDA4IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICogQ29weXJpZ2h0IChDKSAyMDA5
LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKKworI2luY2x1ZGUg
IkNTdHJpbmcuaCIKKyNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorCisjaW5jbHVkZSA8Y2Fpcm8tZnQuaD4KKyNpbmNsdWRlIDxjYWlyby5o
PgorI2luY2x1ZGUgPGZvbnRjb25maWcvZmNmcmVldHlwZS5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0ZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2Ny
aXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5TmFtZSkK
KyAgICA6IG1fcGF0dGVybigwKQorICAgICwgbV9zaXplKGZvbnREZXNjcmlwdGlvbi5jb21wdXRl
ZFNpemUoKSkKKyAgICAsIG1fc3ludGhldGljQm9sZChmYWxzZSkKKyAgICAsIG1fc3ludGhldGlj
T2JsaXF1ZShmYWxzZSkKKyAgICAsIG1fc2NhbGVkRm9udCgwKQoreworICAgIEZvbnRQbGF0Zm9y
bURhdGE6OmluaXQoKTsKKworICAgIENTdHJpbmcgZmFtaWx5TmFtZVN0cmluZyA9IGZhbWlseU5h
bWUuc3RyaW5nKCkudXRmOCgpOworICAgIGNvbnN0IGNoYXIqIGZjZmFtaWx5ID0gZmFtaWx5TmFt
ZVN0cmluZy5kYXRhKCk7CisgICAgaW50IGZjc2xhbnQgPSBGQ19TTEFOVF9ST01BTjsKKyAgICAv
LyBGSVhNRTogTWFwIGFsbCBGb250V2VpZ2h0IHZhbHVlcyB0byBmb250Y29uZmlnIHdlaWdodHMu
CisgICAgaW50IGZjd2VpZ2h0ID0gRkNfV0VJR0hUX05PUk1BTDsKKyAgICBmbG9hdCBmY3NpemUg
PSBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRTaXplKCk7CisgICAgaWYgKGZvbnREZXNjcmlwdGlv
bi5pdGFsaWMoKSkKKyAgICAgICAgZmNzbGFudCA9IEZDX1NMQU5UX0lUQUxJQzsKKyAgICBpZiAo
Zm9udERlc2NyaXB0aW9uLndlaWdodCgpID49IEZvbnRXZWlnaHQ2MDApCisgICAgICAgIGZjd2Vp
Z2h0ID0gRkNfV0VJR0hUX0JPTEQ7CisKKyAgICBpbnQgdHlwZSA9IGZvbnREZXNjcmlwdGlvbi5n
ZW5lcmljRmFtaWx5KCk7CisKKyAgICBGY1BhdHRlcm4qIHBhdHRlcm4gPSBGY1BhdHRlcm5DcmVh
dGUoKTsKKyAgICBjYWlyb19mb250X2ZhY2VfdCogZm9udEZhY2U7CisgICAgc3RhdGljIGNvbnN0
IGNhaXJvX2ZvbnRfb3B0aW9uc190KiBkZWZhdWx0T3B0aW9ucyA9IGNhaXJvX2ZvbnRfb3B0aW9u
c19jcmVhdGUoKTsKKyAgICBjb25zdCBjYWlyb19mb250X29wdGlvbnNfdCogb3B0aW9ucyA9IDA7
CisgICAgY2Fpcm9fbWF0cml4X3QgZm9udE1hdHJpeDsKKworICAgIGlmICghRmNQYXR0ZXJuQWRk
U3RyaW5nKHBhdHRlcm4sIEZDX0ZBTUlMWSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBGY0NoYXI4
Kj4oZmNmYW1pbHkpKSkKKyAgICAgICAgZ290byBmcmVlUGF0dGVybjsKKworICAgIHN3aXRjaCAo
dHlwZSkgeworICAgIGNhc2UgRm9udERlc2NyaXB0aW9uOjpTZXJpZkZhbWlseToKKyAgICAgICAg
ZmNmYW1pbHkgPSAic2VyaWYiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvbnREZXNjcmlw
dGlvbjo6U2Fuc1NlcmlmRmFtaWx5OgorICAgICAgICBmY2ZhbWlseSA9ICJzYW5zLXNlcmlmIjsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250RGVzY3JpcHRpb246Ok1vbm9zcGFjZUZhbWls
eToKKyAgICAgICAgZmNmYW1pbHkgPSAibW9ub3NwYWNlIjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBGb250RGVzY3JpcHRpb246Ok5vRmFtaWx5OgorICAgIGNhc2UgRm9udERlc2NyaXB0aW9u
OjpTdGFuZGFyZEZhbWlseToKKyAgICBkZWZhdWx0OgorICAgICAgICBmY2ZhbWlseSA9ICJzYW5z
LXNlcmlmIjsKKyAgICB9CisKKyAgICBpZiAoIUZjUGF0dGVybkFkZFN0cmluZyhwYXR0ZXJuLCBG
Q19GQU1JTFksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFyOCo+KGZjZmFtaWx5KSkpCisg
ICAgICAgIGdvdG8gZnJlZVBhdHRlcm47CisgICAgaWYgKCFGY1BhdHRlcm5BZGRJbnRlZ2VyKHBh
dHRlcm4sIEZDX1NMQU5ULCBmY3NsYW50KSkKKyAgICAgICAgZ290byBmcmVlUGF0dGVybjsKKyAg
ICBpZiAoIUZjUGF0dGVybkFkZEludGVnZXIocGF0dGVybiwgRkNfV0VJR0hULCBmY3dlaWdodCkp
CisgICAgICAgIGdvdG8gZnJlZVBhdHRlcm47CisgICAgaWYgKCFGY1BhdHRlcm5BZGREb3VibGUo
cGF0dGVybiwgRkNfUElYRUxfU0laRSwgZmNzaXplKSkKKyAgICAgICAgZ290byBmcmVlUGF0dGVy
bjsKKworICAgIEZjQ29uZmlnU3Vic3RpdHV0ZSgwLCBwYXR0ZXJuLCBGY01hdGNoUGF0dGVybik7
CisgICAgRmNEZWZhdWx0U3Vic3RpdHV0ZShwYXR0ZXJuKTsKKworICAgIEZjUmVzdWx0IGZjcmVz
dWx0OworICAgIG1fcGF0dGVybiA9IEZjRm9udE1hdGNoKDAsIHBhdHRlcm4sICZmY3Jlc3VsdCk7
CisgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBzZXQgc29tZSBkZWZhdWx0IGZvbnQ/CisgICAgaWYg
KCFtX3BhdHRlcm4pCisgICAgICAgIGdvdG8gZnJlZVBhdHRlcm47CisgICAgZm9udEZhY2UgPSBj
YWlyb19mdF9mb250X2ZhY2VfY3JlYXRlX2Zvcl9wYXR0ZXJuKG1fcGF0dGVybik7CisgICAgY2Fp
cm9fbWF0cml4X3QgY3RtOworICAgIGNhaXJvX21hdHJpeF9pbml0X3NjYWxlKCZmb250TWF0cml4
LCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRTaXplKCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRl
ZFNpemUoKSk7CisgICAgY2Fpcm9fbWF0cml4X2luaXRfaWRlbnRpdHkoJmN0bSk7CisKKyAgICBp
ZiAoIW9wdGlvbnMpCisgICAgICAgIG9wdGlvbnMgPSBkZWZhdWx0T3B0aW9uczsKKworICAgIG1f
c2NhbGVkRm9udCA9IGNhaXJvX3NjYWxlZF9mb250X2NyZWF0ZShmb250RmFjZSwgJmZvbnRNYXRy
aXgsICZjdG0sIG9wdGlvbnMpOworICAgIGNhaXJvX2ZvbnRfZmFjZV9kZXN0cm95KGZvbnRGYWNl
KTsKKworZnJlZVBhdHRlcm46CisgICAgRmNQYXR0ZXJuRGVzdHJveShwYXR0ZXJuKTsKK30KKwor
Rm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShmbG9hdCBzaXplLCBib29sIGJvbGQs
IGJvb2wgaXRhbGljKQorICAgIDogbV9wYXR0ZXJuKDApCisgICAgLCBtX3NpemUoc2l6ZSkKKyAg
ICAsIG1fc3ludGhldGljQm9sZChib2xkKQorICAgICwgbV9zeW50aGV0aWNPYmxpcXVlKGl0YWxp
YykKKyAgICAsIG1fc2NhbGVkRm9udCgwKQoreworfQorCitGb250UGxhdGZvcm1EYXRhOjpGb250
UGxhdGZvcm1EYXRhKGNhaXJvX2ZvbnRfZmFjZV90KiBmb250RmFjZSwgaW50IHNpemUsIGJvb2wg
Ym9sZCwgYm9vbCBpdGFsaWMpCisgICAgOiBtX3BhdHRlcm4oMCkKKyAgICAsIG1fc2l6ZShzaXpl
KQorICAgICwgbV9zeW50aGV0aWNCb2xkKGJvbGQpCisgICAgLCBtX3N5bnRoZXRpY09ibGlxdWUo
aXRhbGljKQorICAgICwgbV9zY2FsZWRGb250KDApCit7CisgICAgY2Fpcm9fbWF0cml4X3QgZm9u
dE1hdHJpeDsKKyAgICBjYWlyb19tYXRyaXhfaW5pdF9zY2FsZSgmZm9udE1hdHJpeCwgc2l6ZSwg
c2l6ZSk7CisgICAgY2Fpcm9fbWF0cml4X3QgY3RtOworICAgIGNhaXJvX21hdHJpeF9pbml0X2lk
ZW50aXR5KCZjdG0pOworICAgIGNhaXJvX2ZvbnRfb3B0aW9uc190KiBvcHRpb25zID0gY2Fpcm9f
Zm9udF9vcHRpb25zX2NyZWF0ZSgpOworCisgICAgLy8gV2UgZm9yY2UgYW50aWFsaWFzaW5nIGFu
ZCBkaXNhYmxlIGhpbnRpbmcgdG8gcHJvdmlkZSBjb25zaXN0ZW50CisgICAgLy8gdHlwb2dyYXBo
aWMgcXVhbGl0aWVzIGZvciBjdXN0b20gZm9udHMgb24gYWxsIHBsYXRmb3Jtcy4KKyAgICBjYWly
b19mb250X29wdGlvbnNfc2V0X2hpbnRfc3R5bGUob3B0aW9ucywgQ0FJUk9fSElOVF9TVFlMRV9O
T05FKTsKKyAgICBjYWlyb19mb250X29wdGlvbnNfc2V0X2FudGlhbGlhcyhvcHRpb25zLCBDQUlS
T19BTlRJQUxJQVNfR1JBWSk7CisKKyAgICBtX3NjYWxlZEZvbnQgPSBjYWlyb19zY2FsZWRfZm9u
dF9jcmVhdGUoZm9udEZhY2UsICZmb250TWF0cml4LCAmY3RtLCBvcHRpb25zKTsKKyAgICBjYWly
b19mb250X29wdGlvbnNfZGVzdHJveShvcHRpb25zKTsKK30KKworYm9vbCBGb250UGxhdGZvcm1E
YXRhOjppbml0aWFsaXplZCA9IGZhbHNlOworCitib29sIEZvbnRQbGF0Zm9ybURhdGE6OmluaXQo
KQoreworICAgIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKGluaXRpYWxpemVkKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIUZjSW5pdCgpKSB7CisgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiQ2FuJ3QgaW5pdCBmb250IGNvbmZpZyBsaWJyYXJ5XG4iKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICBpbml0aWFsaXplZCA9IHRydWU7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgRm9udFBsYXRmb3JtRGF0YTo6ZmluaSgpCit7CisgICAgaWYgKCFpbml0
aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworICAgIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAg
Ly8gRklYTUU6IG91dC1jb21tZW50IHRoZSBsaW5lIGJlbG93IGR1ZSB0byB0aGlzIGNyYXNoOgor
ICAgIC8vIEZjQ2FjaGVGaW5pOiBBc3NlcnRpb24gJ2ZjQ2FjaGVDaGFpbnNbaV0gPT0oKHZvaWQq
KTApJworICAgIC8vIFdlIGFyZSBhbHJlYWR5IGNsZWFuaW5nIHRoZSBGb250Q2FjaGUgYnV0IHdl
IG1pZ2h0IHN0aWxsIGhhdmUKKyAgICAvLyByZWZlcmVuY2UgZnJvbSB0aGUgZnJhbWUncyBub2Rl
cyAoQ1NTKS4gVGhlIENyYXNoIGlzIGVhc2lseQorICAgIC8vIHJlcHJvZHVjYWJsZSBieSBmdWxs
eSBsb2FkaW5nIGh0dHA6Ly9wb2wuZGsKKyAgICAvLyBGY0ZpbmkoKTsKK30KKworCitGb250UGxh
dGZvcm1EYXRhOjp+Rm9udFBsYXRmb3JtRGF0YSgpCit7CisgICAgLy8gTk9URTogdGhlIGRlc3Ry
b3lpbmcgb2YgbV9zY2FsZWRGb250IGFuZCBtX3BhdHRlcm4gaXMKKyAgICAvLyBiZWluZyBoYW5k
bGVkIGJ5IFNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybURlc3Ryb3koKQorfQorCitib29sIEZvbnRQ
bGF0Zm9ybURhdGE6OmlzRml4ZWRQaXRjaCgpCit7CisgICAgLy8gVE9ETzogU3VwcG9ydCBpc0Zp
eGVkUGl0Y2goKSBmb3IgY3VzdG9tIGZvbnRzLgorICAgIGlmICghbV9wYXR0ZXJuKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQgc3BhY2luZzsKKyAgICBpZiAoRmNQYXR0ZXJuR2V0
SW50ZWdlcihtX3BhdHRlcm4sIEZDX1NQQUNJTkcsIDAsICZzcGFjaW5nKSA9PSBGY1Jlc3VsdE1h
dGNoKQorICAgICAgICByZXR1cm4gc3BhY2luZyA9PSBGQ19NT05POworICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBGb250UGxhdGZvcm1EYXRhOjpvcGVyYXRvcj09KGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIG90aGVyKSBjb25zdAoreworICAgIGlmIChtX3BhdHRlcm4gPT0gb3RoZXIubV9w
YXR0ZXJuKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIW1fcGF0dGVybiB8fCBtX3Bh
dHRlcm4gPT0gcmVpbnRlcnByZXRfY2FzdDxGY1BhdHRlcm4qPigtMSkKKyAgICAgICAgfHwgIW90
aGVyLm1fcGF0dGVybiB8fCBvdGhlci5tX3BhdHRlcm4gPT0gcmVpbnRlcnByZXRfY2FzdDxGY1Bh
dHRlcm4qPigtMSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gRmNQYXR0ZXJu
RXF1YWwobV9wYXR0ZXJuLCBvdGhlci5tX3BhdHRlcm4pOworfQorCisjaWZuZGVmIE5ERUJVRwor
U3RyaW5nIEZvbnRQbGF0Zm9ybURhdGE6OmRlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gU3RyaW5nKCk7Cit9CisjZW5kaWYKKworfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZmwvSW1hZ2VFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIC9kZXYvbnVsbAorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VFZmwuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJv
RlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1
bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1h
Z2UuaCIKKworI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCisKKyNpbmNsdWRlIDxjYWlyby5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgQml0bWFwSW1hZ2U6OmluaXRQbGF0Zm9ybURh
dGEoKQoreworfQorCit2b2lkIEJpdG1hcEltYWdlOjppbnZhbGlkYXRlUGxhdGZvcm1EYXRhKCkK
K3sKK30KKworc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VTaGFy
ZWRCdWZmZXJGYWxsYmFjaygpCit7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
IC8vIFRPRE86IGZhbGxiYWNrIGltYWdlPworfQorCitzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IGxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQoreworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKFN0cmluZzo6Zm9ybWF0KERBVEFfRElSICIvd2Via2l0LTEuMC9pbWFnZXMv
JXMucG5nIiwgbmFtZSkpOworICAgIGlmIChidWZmZXIpCisgICAgICAgIHJldHVybiBidWZmZXIu
cmVsZWFzZSgpOworICAgIHJldHVybiBsb2FkUmVzb3VyY2VTaGFyZWRCdWZmZXJGYWxsYmFjaygp
OworfQorCitQYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29u
c3QgY2hhciogbmFtZSkKK3sKKyAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IGltZyA9IEJpdG1hcElt
YWdlOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkUmVz
b3VyY2VTaGFyZWRCdWZmZXIobmFtZSk7CisgICAgaW1nLT5zZXREYXRhKGJ1ZmZlci5yZWxlYXNl
KCksIHRydWUpOworICAgIHJldHVybiBpbWcucmVsZWFzZSgpOworfQorCit9CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9GbG9hdFJlY3RFZmwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IC9kZXYvbnVsbAorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvRmxvYXRSZWN0RWZs
LmNwcApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tl
ciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggSU5kVCAtIEluc3RpdHV0
byBOb2tpYSBkZSBUZWNub2xvZ2lhCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJ
T04gZW1iZWRkZWQgc3lzdGVtcworICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBF
bGVjdHJvbmljcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworRmxvYXRSZWN0OjpGbG9hdFJlY3QoY29uc3QgRWluYV9S
ZWN0YW5nbGUmIHIpCisgICAgOiBtX2xvY2F0aW9uKEZsb2F0UG9pbnQoci54LCByLnkpKQorICAg
ICwgbV9zaXplKHIudywgci5oKQoreworfQorCitGbG9hdFJlY3Q6Om9wZXJhdG9yIEVpbmFfUmVj
dGFuZ2xlKCkgY29uc3QgLy8gTk9MSU5UCit7CisgICAgRWluYV9SZWN0YW5nbGUgciA9IHsoaW50
KSByb3VuZCh4KCkpLCAoaW50KSByb3VuZCh5KCkpLCAoaW50KSByb3VuZCh3aWR0aCgpKSwgKGlu
dCkgcm91bmQoaGVpZ2h0KCkpfTsKKyAgICByZXR1cm4gcjsKK30KKworfQorCkluZGV4OiBXZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZworKysgV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wMy0wMSAgTGVhbmRybyBQZXJlaXJh
ICA8bGVhbmRyb0Bwcm9mdXNpb24ubW9iaT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgRUZMIHBvcnQgZmlsZXMgdG8gcGxhdGZvcm0vZ3Jh
cGhpY3MvZWZsLgorICAgICAgICBodHRwOi8vd2Via2l0Lm9yZy9iLzM1NTMxCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9WaWRlb1NpbmtH
U3RyZWFtZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ZvbnRQ
bGF0Zm9ybURhdGFFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9l
ZmwvSW1hZ2VFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwv
RmxvYXRSZWN0RWZsLmNwcDogQWRkZWQuCisKIDIwMTAtMDItMjYgIEFsZXggTWlsb3dza2kgIDxh
bGV4QG1pbG93c2tpLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENo
cmlzdGlhbnNlbi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49823</attachid>
            <date>2010-03-02 11:33:53 -0800</date>
            <delta_ts>2010-03-04 06:28:37 -0800</delta_ts>
            <desc>Add EFL port files in WebCore/platform/graphics/efl (patch 1/2)</desc>
            <filename>webkit-efl-webcore_platform_graphics_efl-1.diff</filename>
            <type>text/plain</type>
            <size>28044</size>
            <attacher name="Leandro Pereira">leandro</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL1NpbXBsZUZvbnREYXRhRWZsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSAvZGV2L251bGwKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWZsL1NpbXBsZUZvbnREYXRhRWZsLmNwcApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29t
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4K
KyAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAqIENvcHly
aWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCisK
KyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGb250LmgiCisjaW5jbHVkZSAiRm9u
dENhY2hlLmgiCisjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiR2x5cGhC
dWZmZXIuaCIKKyNpbmNsdWRlIDxjYWlyby5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdWNoYXIuaD4K
KyNpbmNsdWRlIDx1bmljb2RlL3Vub3JtLmg+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybUlu
aXQoKQoreworICAgIGNhaXJvX2ZvbnRfZXh0ZW50c190IGZvbnRFeHRlbnRzOworICAgIGNhaXJv
X3RleHRfZXh0ZW50c190IHRleHRFeHRlbnRzOworICAgIGNhaXJvX3NjYWxlZF9mb250X2V4dGVu
dHMobV9wbGF0Zm9ybURhdGEubV9zY2FsZWRGb250LCAmZm9udEV4dGVudHMpOworICAgIG1fYXNj
ZW50ID0gc3RhdGljX2Nhc3Q8aW50Pihmb250RXh0ZW50cy5hc2NlbnQpOworICAgIG1fZGVzY2Vu
dCA9IHN0YXRpY19jYXN0PGludD4oZm9udEV4dGVudHMuZGVzY2VudCk7CisgICAgbV9saW5lU3Bh
Y2luZyA9IHN0YXRpY19jYXN0PGludD4oZm9udEV4dGVudHMuaGVpZ2h0KTsKKyAgICAvLyBUaGVy
ZSBzZWVtcyB0byBiZSBzb21lIHJvdW5kaW5nIGVycm9yIGluIGNhaXJvIChvciBpbiBob3cgd2UK
KyAgICAvLyB1c2UgY2Fpcm8pIHdpdGggc29tZSBmb250cywgbGlrZSBEZWphVnUgU2FucyBNb25v
LCB3aGljaCBtYWtlcworICAgIC8vIGNhaXJvIHJlcG9ydCBhIGhlaWdodCBzbWFsbGVyIHRoYW4g
YXNjZW50ICsgZGVzY2VudCwgd2hpY2ggaXMKKyAgICAvLyB3cm9uZyBhbmQgY29uZnVzZXMgV2Vi
Q29yZSdzIGxheW91dCBzeXN0ZW0uIFdvcmthcm91bmQgdGhpcworICAgIC8vIHdoaWxlIHdlIGZp
Z3VyZSBvdXQgd2hhdCdzIGdvaW5nIG9uLgorICAgIGlmIChtX2xpbmVTcGFjaW5nIDwgbV9hc2Nl
bnQgKyBtX2Rlc2NlbnQpCisgICAgICAgIG1fbGluZVNwYWNpbmcgPSBtX2FzY2VudCArIG1fZGVz
Y2VudDsKKyAgICBjYWlyb19zY2FsZWRfZm9udF90ZXh0X2V4dGVudHMobV9wbGF0Zm9ybURhdGEu
bV9zY2FsZWRGb250LCAieCIsICZ0ZXh0RXh0ZW50cyk7CisgICAgbV94SGVpZ2h0ID0gdGV4dEV4
dGVudHMuaGVpZ2h0OworICAgIGNhaXJvX3NjYWxlZF9mb250X3RleHRfZXh0ZW50cyhtX3BsYXRm
b3JtRGF0YS5tX3NjYWxlZEZvbnQsICIgIiwgJnRleHRFeHRlbnRzKTsKKyAgICBtX3NwYWNlV2lk
dGggPSAgc3RhdGljX2Nhc3Q8aW50Pih0ZXh0RXh0ZW50cy54X2FkdmFuY2UpOworICAgIG1fbGlu
ZUdhcCA9IG1fbGluZVNwYWNpbmcgLSBtX2FzY2VudCAtIG1fZGVzY2VudDsKKyAgICBtX3N5bnRo
ZXRpY0JvbGRPZmZzZXQgPSBtX3BsYXRmb3JtRGF0YS5zeW50aGV0aWNCb2xkKCkgPyAxLjBmIDog
MC5mOworfQorCit2b2lkIFNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybURlc3Ryb3koKQoreworICAg
IGlmICghaXNDdXN0b21Gb250KCkpIHsKKyAgICAgICAgaWYgKG1fcGxhdGZvcm1EYXRhLm1fcGF0
dGVybiAmJiAoKEZjUGF0dGVybiopLTEgIT0gbV9wbGF0Zm9ybURhdGEubV9wYXR0ZXJuKSkgewor
ICAgICAgICAgICAgRmNQYXR0ZXJuRGVzdHJveShtX3BsYXRmb3JtRGF0YS5tX3BhdHRlcm4pOwor
ICAgICAgICAgICAgbV9wbGF0Zm9ybURhdGEubV9wYXR0ZXJuID0gMDsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChtX3BsYXRmb3JtRGF0YS5tX3NjYWxlZEZvbnQpIHsKKyAgICAgICAgICAgIGNh
aXJvX3NjYWxlZF9mb250X2Rlc3Ryb3kobV9wbGF0Zm9ybURhdGEubV9zY2FsZWRGb250KTsKKyAg
ICAgICAgICAgIG1fcGxhdGZvcm1EYXRhLm1fc2NhbGVkRm9udCA9IDA7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBkZWxldGUgbV9zbWFsbENhcHNGb250RGF0YTsKK30KKworU2ltcGxlRm9udERh
dGEqIFNpbXBsZUZvbnREYXRhOjpzbWFsbENhcHNGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRp
b24mIGZvbnREZXNjcmlwdGlvbikgY29uc3QKK3sKKyAgICBpZiAoIW1fc21hbGxDYXBzRm9udERh
dGEpIHsKKyAgICAgICAgRm9udERlc2NyaXB0aW9uIGRlc2MgPSBGb250RGVzY3JpcHRpb24oZm9u
dERlc2NyaXB0aW9uKTsKKyAgICAgICAgZGVzYy5zZXRTcGVjaWZpZWRTaXplKDAuNzBmKmZvbnRE
ZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSk7CisgICAgICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEqIHBkYXRhID0gbmV3IEZvbnRQbGF0Zm9ybURhdGEoZGVzYywgZGVzYy5mYW1pbHkoKS5mYW1p
bHkoKSk7CisgICAgICAgIG1fc21hbGxDYXBzRm9udERhdGEgPSBuZXcgU2ltcGxlRm9udERhdGEo
KnBkYXRhKTsKKyAgICB9CisgICAgcmV0dXJuIG1fc21hbGxDYXBzRm9udERhdGE7Cit9CisKK2Jv
b2wgU2ltcGxlRm9udERhdGE6OmNvbnRhaW5zQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFj
dGVycywgaW50IGxlbmd0aCkgY29uc3QKK3sKKyAgICBGVF9GYWNlIGZhY2UgPSBjYWlyb19mdF9z
Y2FsZWRfZm9udF9sb2NrX2ZhY2UobV9wbGF0Zm9ybURhdGEubV9zY2FsZWRGb250KTsKKworICAg
IGlmICghZmFjZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIUZjRnJlZVR5cGVDaGFySW5kZXgoZmFj
ZSwgY2hhcmFjdGVyc1tpXSkpIHsKKyAgICAgICAgICAgIGNhaXJvX2Z0X3NjYWxlZF9mb250X3Vu
bG9ja19mYWNlKG1fcGxhdGZvcm1EYXRhLm1fc2NhbGVkRm9udCk7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjYWlyb19mdF9zY2FsZWRfZm9udF91
bmxvY2tfZmFjZShtX3BsYXRmb3JtRGF0YS5tX3NjYWxlZEZvbnQpOworCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgU2ltcGxlRm9udERhdGE6OmRldGVybWluZVBpdGNoKCkKK3sKKyAgICBt
X3RyZWF0QXNGaXhlZFBpdGNoID0gbV9wbGF0Zm9ybURhdGEuaXNGaXhlZFBpdGNoKCk7Cit9CisK
K2Zsb2F0IFNpbXBsZUZvbnREYXRhOjpwbGF0Zm9ybVdpZHRoRm9yR2x5cGgoR2x5cGggZ2x5cGgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKG1fcGxhdGZvcm1EYXRhLm1fc2NhbGVkRm9udCk7CisKKyAg
ICBjYWlyb19nbHlwaF90IGNnbHlwaCA9IHsgZ2x5cGgsIDAsIDAgfTsKKyAgICBjYWlyb190ZXh0
X2V4dGVudHNfdCBleHRlbnRzOworICAgIGNhaXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMo
bV9wbGF0Zm9ybURhdGEubV9zY2FsZWRGb250LCAmY2dseXBoLCAxLCAmZXh0ZW50cyk7CisKKyAg
ICBmbG9hdCB3ID0gKGZsb2F0KW1fc3BhY2VXaWR0aDsKKyAgICBpZiAoY2Fpcm9fc2NhbGVkX2Zv
bnRfc3RhdHVzKG1fcGxhdGZvcm1EYXRhLm1fc2NhbGVkRm9udCkgPT0gQ0FJUk9fU1RBVFVTX1NV
Q0NFU1MgJiYgZXh0ZW50cy54X2FkdmFuY2UpCisgICAgICAgIHcgPSAoZmxvYXQpZXh0ZW50cy54
X2FkdmFuY2U7CisgICAgcmV0dXJuIHc7Cit9CisKK3ZvaWQgU2ltcGxlRm9udERhdGE6OnBsYXRm
b3JtQ2hhcldpZHRoSW5pdCgpCit7CisgICAgbV9hdmdDaGFyV2lkdGggPSAwLmY7CisgICAgbV9t
YXhDaGFyV2lkdGggPSAwLmY7CisgICAgaW5pdENoYXJXaWR0aHMoKTsKK30KKworfQpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udENhY2hlRWZsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSAvZGV2L251bGwKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ZvbnRDYWNo
ZUVmbC5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRm9udENhY2hlLmgiCisKKyNpbmNsdWRlICJGb250
LmgiCisjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgRm9udENhY2hlOjpwbGF0Zm9ybUlu
aXQoKQoreworICAgIGlmICghRm9udFBsYXRmb3JtRGF0YTo6aW5pdCgpKQorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKworY29uc3QgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6
Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzLCBpbnQgbGVuZ3RoKQoreworICAgIHJldHVybiBuZXcgU2ltcGxlRm9udERhdGEo
Rm9udFBsYXRmb3JtRGF0YShmb250LmZvbnREZXNjcmlwdGlvbigpLCBmb250LmZhbWlseSgpLmZh
bWlseSgpKSk7Cit9CisKK1NpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldFNpbWlsYXJGb250
UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnQmIGZvbnQpCit7CisgICAgcmV0dXJuIG5ldyBTaW1wbGVG
b250RGF0YShGb250UGxhdGZvcm1EYXRhKGZvbnQuZm9udERlc2NyaXB0aW9uKCksIGZvbnQuZmFt
aWx5KCkuZmFtaWx5KCkpKTsKK30KKworU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFz
dFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlv
bikKK3sKKyAgICAvLyBGSVhNRTogV291bGQgYmUgZXZlbiBiZXR0ZXIgdG8gc29tZWhvdyBnZXQg
dGhlIHVzZXIncyBkZWZhdWx0IGZvbnQgaGVyZS4KKyAgICAvLyBGb3Igbm93IHdlJ2xsIHBpY2sg
dGhlIGRlZmF1bHQgdGhhdCB0aGUgdXNlciB3b3VsZCBnZXQgd2l0aG91dCBjaGFuZ2luZyBhbnkg
cHJlZnMuCisgICAgc3RhdGljIEF0b21pY1N0cmluZyB0aW1lc1N0cigiVGltZXMgTmV3IFJvbWFu
Iik7CisgICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRhKGZvbnREZXNjcmlwdGlvbiwgdGltZXNT
dHIpOworfQorCit2b2lkIEZvbnRDYWNoZTo6Z2V0VHJhaXRzSW5GYW1pbHkoY29uc3QgQXRvbWlj
U3RyaW5nJiBmYW1pbHlOYW1lLCBWZWN0b3I8dW5zaWduZWQ+JiB0cmFpdHNNYXNrcykKK3sKK30K
KworRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcm
IGZhbWlseSkKK3sKKyAgICByZXR1cm4gbmV3IEZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0
aW9uLCBmYW1pbHkpOworfQorCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vm
bC9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSAvZGV2L251bGwKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
CkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQWxwIFRva2VyIDxh
bHBAYXRva2VyLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJl
ZGRlZCBzeXN0ZW1zCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9u
aWNzCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJGb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmgiCisKKyNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCisjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YTo6fkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKQoreworICAgIGNhaXJvX2ZvbnRfZmFjZV9k
ZXN0cm95KG1fZm9udEZhY2UpOworfQorCitGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoaW50IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFs
aWMsIEZvbnRSZW5kZXJpbmdNb2RlKQoreworICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKG1f
Zm9udEZhY2UsIHNpemUsIGJvbGQsIGl0YWxpYyk7Cit9CisKK3N0YXRpYyB2b2lkIHJlbGVhc2VE
YXRhKHZvaWQqIGRhdGEpCit7CisgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSkt
PmRlcmVmKCk7Cit9CisKK0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpCit7CisgICAgQVNTRVJUX0FSRyhidWZm
ZXIsIGJ1ZmZlcik7CisKKyAgICBpbnQgZXJyb3I7CisKKyAgICBzdGF0aWMgRlRfTGlicmFyeSBs
aWJyYXJ5ID0gMDsKKyAgICBpZiAoIWxpYnJhcnkpIHsKKyAgICAgICAgZXJyb3IgPSBGVF9Jbml0
X0ZyZWVUeXBlKCZsaWJyYXJ5KTsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBs
aWJyYXJ5ID0gMDsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisg
ICAgRlRfRmFjZSBmYWNlOworICAgIGVycm9yID0gRlRfTmV3X01lbW9yeV9GYWNlKGxpYnJhcnks
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRlRfQnl0ZSo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVy
LT5zaXplKCksIDAsICZmYWNlKTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgYnVmZmVyLT5yZWYoKTsKKyAgICBjYWlyb19mb250X2ZhY2VfdCogZm9udEZhY2UgPSBj
YWlyb19mdF9mb250X2ZhY2VfY3JlYXRlX2Zvcl9mdF9mYWNlKGZhY2UsIDApOworCisgICAgc3Rh
dGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBidWZmZXJLZXk7CisgICAgY2Fpcm9fZm9udF9mYWNl
X3NldF91c2VyX2RhdGEoZm9udEZhY2UsICZidWZmZXJLZXksIGJ1ZmZlciwgcmVsZWFzZURhdGEp
OworCisgICAgcmV0dXJuIG5ldyBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKGZvbnRGYWNlKTsKK30K
KworfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIC9kZXYvbnVsbAorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZmwvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0wLDAgKzEsNTEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIEZvbnRD
dXN0b21QbGF0Zm9ybURhdGFfaAorI2RlZmluZSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhX2gKKwor
I2luY2x1ZGUgIkZvbnRSZW5kZXJpbmdNb2RlLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisKK3R5cGVkZWYgc3RydWN0IF9jYWlyb19mb250X2ZhY2UgY2Fpcm9fZm9udF9mYWNlX3Q7
IC8vIE5PTElOVAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZvbnRQbGF0Zm9ybURh
dGE7CitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK3N0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRh
IDogTm9uY29weWFibGUgeworICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoY2Fpcm9fZm9udF9m
YWNlX3QqIGZvbnRGYWNlKQorICAgIDogbV9mb250RmFjZShmb250RmFjZSkKKyAgICB7fQorCisg
ICAgfkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKTsKKworICAgIEZvbnRQbGF0Zm9ybURhdGEgZm9u
dFBsYXRmb3JtRGF0YShpbnQgc2l6ZSwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgRm9udFJlbmRl
cmluZ01vZGUgPSBOb3JtYWxSZW5kZXJpbmdNb2RlKTsKKworICAgIGNhaXJvX2ZvbnRfZmFjZV90
KiBtX2ZvbnRGYWNlOworfTsKKworRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcik7Cit9CisKKyNlbmRpZiAvLyBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhX2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWZsL0ZvbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIC9kZXYvbnVsbAorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZmwvRm9udEVmbC5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogQ29weXJpZ2h0
IChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQorICogQ29weXJpZ2h0
IChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQorICogQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBJTmRUIC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKKyAqIENvcHly
aWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisgKiBDb3B5cmln
aHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRm9udC5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgor
CisjaW5jbHVkZSA8Y2Fpcm8uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEZvbnQ6
OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBUZXh0UnVuJiwgY29uc3Qg
RmxvYXRQb2ludCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKworYm9vbCBGb250OjpjYW5SZXR1cm5GYWxsYmFja0ZvbnRzRm9yQ29tcGxleFRl
eHQoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworZmxvYXQgRm9udDo6ZmxvYXRXaWR0aEZv
ckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRh
Kj4qKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDAuMGY7Cit9
CisKK2ludCBGb250OjpvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRS
dW4mLCBpbnQsIGJvb2wpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gMDsKK30KKworRmxvYXRSZWN0IEZvbnQ6OnNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChj
b25zdCBUZXh0UnVuJiwgY29uc3QgSW50UG9pbnQmLCBpbnQsIGludCwgaW50KSBjb25zdAorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEZsb2F0UmVjdCgpOworfQorCit9Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9Gb250UGxhdGZvcm1EYXRhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gL2Rldi9udWxsCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9G
b250UGxhdGZvcm1EYXRhLmgKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgaW50ZXJuYWwgZm9udCBpbXBsZW1lbnRhdGlvbi4KKyAqIEl0IHNob3VsZCBu
b3QgYmUgaW5jbHVkZWQgYnkgYW55b25lIG90aGVyIHRoYW4gRm9udE1hYy5jcHAsCisgKiBGb250
V2luLmNwcCBhbmQgRm9udC5jcHAuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENv
bXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVt
bWVsQGdtYWlsLmNvbQorICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZy
ZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUGlvbmVlciBSZXNlYXJjaCBDZW50ZXIgVVNB
LCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lz
dGVtcworICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgRm9udFBsYXRmb3JtRGF0YV9oCisjZGVm
aW5lIEZvbnRQbGF0Zm9ybURhdGFfaAorCisjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCisj
aW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKKyNpbmNsdWRlIDxjYWlyby5oPgorI2lmIGRlZmluZWQo
VVNFX0ZSRUVUWVBFKQorI2luY2x1ZGUgPGNhaXJvLWZ0Lmg+CisjaW5jbHVkZSA8Zm9udGNvbmZp
Zy9mY2ZyZWV0eXBlLmg+CisjZWxpZiBkZWZpbmVkKFVTRV9QQU5HTykKKyNpbmNsdWRlIDxwYW5n
by9wYW5nb2NhaXJvLmg+CisjZWxzZQorI2Vycm9yICJNdXN0IGRlZmluZWQgYSBmb250IGJhY2tl
bmQiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGb250UGxhdGZvcm1E
YXRhIHsKK3B1YmxpYzoKKyAgICBGb250UGxhdGZvcm1EYXRhKFdURjo6SGFzaFRhYmxlRGVsZXRl
ZFZhbHVlVHlwZSkKKyNpZiBkZWZpbmVkKFVTRV9GUkVFVFlQRSkKKyAgICAgICAgOiBtX3BhdHRl
cm4oaGFzaFRhYmxlRGVsZXRlZEZvbnRWYWx1ZSgpKQorI2VsaWYgZGVmaW5lZChVU0VfUEFOR08p
CisgICAgICAgIDogbV9jb250ZXh0KDApCisgICAgICAgICwgbV9mb250KGhhc2hUYWJsZURlbGV0
ZWRGb250VmFsdWUoKSkKKyNlbHNlCisjZXJyb3IgIk11c3QgZGVmaW5lZCBhIGZvbnQgYmFja2Vu
ZCIKKyNlbmRpZgorICAgICAgICAsIG1fc2NhbGVkRm9udCgwKQorICAgICAgICB7IH0KKworICAg
IEZvbnRQbGF0Zm9ybURhdGEoKQorI2lmIGRlZmluZWQoVVNFX0ZSRUVUWVBFKQorICAgICAgICA6
IG1fcGF0dGVybigwKQorI2VsaWYgZGVmaW5lZChVU0VfUEFOR08pCisgICAgICAgIDogbV9jb250
ZXh0KDApCisgICAgICAgICwgbV9mb250KDApCisjZWxzZQorI2Vycm9yICJNdXN0IGRlZmluZWQg
YSBmb250IGJhY2tlbmQiCisjZW5kaWYKKyAgICAgICAgLCBtX3NjYWxlZEZvbnQoMCkKKyAgICAg
ICAgeyB9CisKKyAgICBGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNv
bnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KTsKKworICAgIEZvbnRQbGF0Zm9ybURhdGEoZmxvYXQg
c2l6ZSwgYm9vbCBib2xkLCBib29sIGl0YWxpYyk7CisgICAgRm9udFBsYXRmb3JtRGF0YShjYWly
b19mb250X2ZhY2VfdCogZm9udEZhY2UsIGludCBzaXplLCBib29sIGJvbGQsIGJvb2wgaXRhbGlj
KTsKKworICAgIH5Gb250UGxhdGZvcm1EYXRhKCk7CisKKyAgICBzdGF0aWMgYm9vbCBpbml0KCk7
CisgICAgc3RhdGljIHZvaWQgZmluaSgpOworCisgICAgYm9vbCBpc0ZpeGVkUGl0Y2goKTsKKyAg
ICBmbG9hdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgYm9vbCBzeW50aGV0
aWNCb2xkKCkgY29uc3QgeyByZXR1cm4gbV9zeW50aGV0aWNCb2xkOyB9CisgICAgYm9vbCBzeW50
aGV0aWNPYmxpcXVlKCkgY29uc3QgeyByZXR1cm4gbV9zeW50aGV0aWNPYmxpcXVlOyB9CisKKyAg
ICBjYWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb250KCkgY29uc3QgeyByZXR1cm4gbV9zY2Fs
ZWRGb250OyB9CisKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHVp
bnRwdHJfdCBoYXNoQ29kZXNbMV0gPSB7IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX3Nj
YWxlZEZvbnQpIH07CisgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpjb21wdXRlSGFzaChyZWlu
dGVycHJldF9jYXN0PFVDaGFyKj4oaGFzaENvZGVzKSwgc2l6ZW9mKGhhc2hDb2RlcykgLyBzaXpl
b2YoVUNoYXIpKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYpIGNvbnN0OworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25z
dAorICAgIHsKKyNpZiBkZWZpbmVkKFVTRV9GUkVFVFlQRSkKKyAgICAgICAgcmV0dXJuIG1fcGF0
dGVybiA9PSBoYXNoVGFibGVEZWxldGVkRm9udFZhbHVlKCk7CisjZWxpZiBkZWZpbmVkKFVTRV9Q
QU5HTykKKyAgICAgICAgcmV0dXJuIG1fZm9udCA9PSBoYXNoVGFibGVEZWxldGVkRm9udFZhbHVl
KCk7CisjZW5kaWYKKyAgICB9OworCisjaWZuZGVmIE5ERUJVRworICAgIFN0cmluZyBkZXNjcmlw
dGlvbigpIGNvbnN0OworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFVTRV9GUkVFVFlQRSkKKyAgICBG
Y1BhdHRlcm4qIG1fcGF0dGVybjsKKyNlbGlmIGRlZmluZWQoVVNFX1BBTkdPKQorICAgIHN0YXRp
YyBQYW5nb0ZvbnRNYXAqIG1fZm9udE1hcDsKKyAgICBzdGF0aWMgR0hhc2hUYWJsZSogbV9oYXNo
VGFibGU7CisKKyAgICBQYW5nb0NvbnRleHQqIG1fY29udGV4dDsKKyAgICBQYW5nb0ZvbnQqIG1f
Zm9udDsKKyNlbHNlCisjZXJyb3IgIk11c3QgZGVmaW5lZCBhIGZvbnQgYmFja2VuZCIKKyNlbmRp
ZgorICAgIGZsb2F0IG1fc2l6ZTsKKyAgICBib29sIG1fc3ludGhldGljQm9sZDsKKyAgICBib29s
IG1fc3ludGhldGljT2JsaXF1ZTsKKyAgICBjYWlyb19zY2FsZWRfZm9udF90KiBtX3NjYWxlZEZv
bnQ7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7CisKK3ByaXZhdGU6CisjaWYgZGVmaW5l
ZChVU0VfRlJFRVRZUEUpCisgICAgc3RhdGljIEZjUGF0dGVybiAqaGFzaFRhYmxlRGVsZXRlZEZv
bnRWYWx1ZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RmNQYXR0ZXJuKj4oLTEpOyB9Cisj
ZWxpZiBkZWZpbmVkKFVTRV9QQU5HTykKKyAgICBzdGF0aWMgUGFuZ29Gb250ICpoYXNoVGFibGVE
ZWxldGVkRm9udFZhbHVlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQYW5nb0ZvbnQqPigt
MSk7IH0KKyNlbmRpZgorfTsKK30KKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VmbC9Gb250UGxhdGZvcm1EYXRhRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSAvZGV2L251
bGwKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ZvbnRQbGF0Zm9ybURhdGFFZmwu
Y3BwCkBAIC0wLDAgKzEsMjE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENv
bXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVt
bWVsQGdtYWlsLmNvbQorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFscCBUb2tlciA8YWxw
QGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJl
eXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwOCBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbgor
ICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKKyAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGb250UGxhdGZvcm1E
YXRhLmgiCisKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9u
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworI2luY2x1ZGUgPGNhaXJvLWZ0Lmg+
CisjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNsdWRlIDxmb250Y29uZmlnL2ZjZnJlZXR5cGUuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1E
YXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNT
dHJpbmcmIGZhbWlseU5hbWUpCisgICAgOiBtX3BhdHRlcm4oMCkKKyAgICAsIG1fc2l6ZShmb250
RGVzY3JpcHRpb24uY29tcHV0ZWRTaXplKCkpCisgICAgLCBtX3N5bnRoZXRpY0JvbGQoZmFsc2Up
CisgICAgLCBtX3N5bnRoZXRpY09ibGlxdWUoZmFsc2UpCisgICAgLCBtX3NjYWxlZEZvbnQoMCkK
K3sKKyAgICBGb250UGxhdGZvcm1EYXRhOjppbml0KCk7CisKKyAgICBDU3RyaW5nIGZhbWlseU5h
bWVTdHJpbmcgPSBmYW1pbHlOYW1lLnN0cmluZygpLnV0ZjgoKTsKKyAgICBjb25zdCBjaGFyKiBm
Y2ZhbWlseSA9IGZhbWlseU5hbWVTdHJpbmcuZGF0YSgpOworICAgIGludCBmY3NsYW50ID0gRkNf
U0xBTlRfUk9NQU47CisgICAgLy8gRklYTUU6IE1hcCBhbGwgRm9udFdlaWdodCB2YWx1ZXMgdG8g
Zm9udGNvbmZpZyB3ZWlnaHRzLgorICAgIGludCBmY3dlaWdodCA9IEZDX1dFSUdIVF9OT1JNQUw7
CisgICAgZmxvYXQgZmNzaXplID0gZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpOworICAg
IGlmIChmb250RGVzY3JpcHRpb24uaXRhbGljKCkpCisgICAgICAgIGZjc2xhbnQgPSBGQ19TTEFO
VF9JVEFMSUM7CisgICAgaWYgKGZvbnREZXNjcmlwdGlvbi53ZWlnaHQoKSA+PSBGb250V2VpZ2h0
NjAwKQorICAgICAgICBmY3dlaWdodCA9IEZDX1dFSUdIVF9CT0xEOworCisgICAgaW50IHR5cGUg
PSBmb250RGVzY3JpcHRpb24uZ2VuZXJpY0ZhbWlseSgpOworCisgICAgRmNQYXR0ZXJuKiBwYXR0
ZXJuID0gRmNQYXR0ZXJuQ3JlYXRlKCk7CisgICAgY2Fpcm9fZm9udF9mYWNlX3QqIGZvbnRGYWNl
OworICAgIHN0YXRpYyBjb25zdCBjYWlyb19mb250X29wdGlvbnNfdCogZGVmYXVsdE9wdGlvbnMg
PSBjYWlyb19mb250X29wdGlvbnNfY3JlYXRlKCk7CisgICAgY29uc3QgY2Fpcm9fZm9udF9vcHRp
b25zX3QqIG9wdGlvbnMgPSAwOworICAgIGNhaXJvX21hdHJpeF90IGZvbnRNYXRyaXg7CisKKyAg
ICBpZiAoIUZjUGF0dGVybkFkZFN0cmluZyhwYXR0ZXJuLCBGQ19GQU1JTFksIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgRmNDaGFyOCo+KGZjZmFtaWx5KSkpCisgICAgICAgIGdvdG8gZnJlZVBhdHRl
cm47CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEZvbnREZXNjcmlwdGlvbjo6U2Vy
aWZGYW1pbHk6CisgICAgICAgIGZjZmFtaWx5ID0gInNlcmlmIjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBGb250RGVzY3JpcHRpb246OlNhbnNTZXJpZkZhbWlseToKKyAgICAgICAgZmNmYW1p
bHkgPSAic2Fucy1zZXJpZiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9udERlc2NyaXB0
aW9uOjpNb25vc3BhY2VGYW1pbHk6CisgICAgICAgIGZjZmFtaWx5ID0gIm1vbm9zcGFjZSI7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9udERlc2NyaXB0aW9uOjpOb0ZhbWlseToKKyAgICBj
YXNlIEZvbnREZXNjcmlwdGlvbjo6U3RhbmRhcmRGYW1pbHk6CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgZmNmYW1pbHkgPSAic2Fucy1zZXJpZiI7CisgICAgfQorCisgICAgaWYgKCFGY1BhdHRlcm5B
ZGRTdHJpbmcocGF0dGVybiwgRkNfRkFNSUxZLCByZWludGVycHJldF9jYXN0PGNvbnN0IEZjQ2hh
cjgqPihmY2ZhbWlseSkpKQorICAgICAgICBnb3RvIGZyZWVQYXR0ZXJuOworICAgIGlmICghRmNQ
YXR0ZXJuQWRkSW50ZWdlcihwYXR0ZXJuLCBGQ19TTEFOVCwgZmNzbGFudCkpCisgICAgICAgIGdv
dG8gZnJlZVBhdHRlcm47CisgICAgaWYgKCFGY1BhdHRlcm5BZGRJbnRlZ2VyKHBhdHRlcm4sIEZD
X1dFSUdIVCwgZmN3ZWlnaHQpKQorICAgICAgICBnb3RvIGZyZWVQYXR0ZXJuOworICAgIGlmICgh
RmNQYXR0ZXJuQWRkRG91YmxlKHBhdHRlcm4sIEZDX1BJWEVMX1NJWkUsIGZjc2l6ZSkpCisgICAg
ICAgIGdvdG8gZnJlZVBhdHRlcm47CisKKyAgICBGY0NvbmZpZ1N1YnN0aXR1dGUoMCwgcGF0dGVy
biwgRmNNYXRjaFBhdHRlcm4pOworICAgIEZjRGVmYXVsdFN1YnN0aXR1dGUocGF0dGVybik7CisK
KyAgICBGY1Jlc3VsdCBmY3Jlc3VsdDsKKyAgICBtX3BhdHRlcm4gPSBGY0ZvbnRNYXRjaCgwLCBw
YXR0ZXJuLCAmZmNyZXN1bHQpOworICAgIC8vIEZJWE1FOiBzaG91bGQgd2Ugc2V0IHNvbWUgZGVm
YXVsdCBmb250PworICAgIGlmICghbV9wYXR0ZXJuKQorICAgICAgICBnb3RvIGZyZWVQYXR0ZXJu
OworICAgIGZvbnRGYWNlID0gY2Fpcm9fZnRfZm9udF9mYWNlX2NyZWF0ZV9mb3JfcGF0dGVybiht
X3BhdHRlcm4pOworICAgIGNhaXJvX21hdHJpeF90IGN0bTsKKyAgICBjYWlyb19tYXRyaXhfaW5p
dF9zY2FsZSgmZm9udE1hdHJpeCwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpLCBmb250
RGVzY3JpcHRpb24uY29tcHV0ZWRTaXplKCkpOworICAgIGNhaXJvX21hdHJpeF9pbml0X2lkZW50
aXR5KCZjdG0pOworCisgICAgaWYgKCFvcHRpb25zKQorICAgICAgICBvcHRpb25zID0gZGVmYXVs
dE9wdGlvbnM7CisKKyAgICBtX3NjYWxlZEZvbnQgPSBjYWlyb19zY2FsZWRfZm9udF9jcmVhdGUo
Zm9udEZhY2UsICZmb250TWF0cml4LCAmY3RtLCBvcHRpb25zKTsKKyAgICBjYWlyb19mb250X2Zh
Y2VfZGVzdHJveShmb250RmFjZSk7CisKK2ZyZWVQYXR0ZXJuOgorICAgIEZjUGF0dGVybkRlc3Ry
b3kocGF0dGVybik7Cit9CisKK0ZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoZmxv
YXQgc2l6ZSwgYm9vbCBib2xkLCBib29sIGl0YWxpYykKKyAgICA6IG1fcGF0dGVybigwKQorICAg
ICwgbV9zaXplKHNpemUpCisgICAgLCBtX3N5bnRoZXRpY0JvbGQoYm9sZCkKKyAgICAsIG1fc3lu
dGhldGljT2JsaXF1ZShpdGFsaWMpCisgICAgLCBtX3NjYWxlZEZvbnQoMCkKK3sKK30KKworRm9u
dFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShjYWlyb19mb250X2ZhY2VfdCogZm9udEZh
Y2UsIGludCBzaXplLCBib29sIGJvbGQsIGJvb2wgaXRhbGljKQorICAgIDogbV9wYXR0ZXJuKDAp
CisgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAsIG1fc3ludGhldGljQm9sZChib2xkKQorICAgICwg
bV9zeW50aGV0aWNPYmxpcXVlKGl0YWxpYykKKyAgICAsIG1fc2NhbGVkRm9udCgwKQoreworICAg
IGNhaXJvX21hdHJpeF90IGZvbnRNYXRyaXg7CisgICAgY2Fpcm9fbWF0cml4X2luaXRfc2NhbGUo
JmZvbnRNYXRyaXgsIHNpemUsIHNpemUpOworICAgIGNhaXJvX21hdHJpeF90IGN0bTsKKyAgICBj
YWlyb19tYXRyaXhfaW5pdF9pZGVudGl0eSgmY3RtKTsKKyAgICBjYWlyb19mb250X29wdGlvbnNf
dCogb3B0aW9ucyA9IGNhaXJvX2ZvbnRfb3B0aW9uc19jcmVhdGUoKTsKKworICAgIC8vIFdlIGZv
cmNlIGFudGlhbGlhc2luZyBhbmQgZGlzYWJsZSBoaW50aW5nIHRvIHByb3ZpZGUgY29uc2lzdGVu
dAorICAgIC8vIHR5cG9ncmFwaGljIHF1YWxpdGllcyBmb3IgY3VzdG9tIGZvbnRzIG9uIGFsbCBw
bGF0Zm9ybXMuCisgICAgY2Fpcm9fZm9udF9vcHRpb25zX3NldF9oaW50X3N0eWxlKG9wdGlvbnMs
IENBSVJPX0hJTlRfU1RZTEVfTk9ORSk7CisgICAgY2Fpcm9fZm9udF9vcHRpb25zX3NldF9hbnRp
YWxpYXMob3B0aW9ucywgQ0FJUk9fQU5USUFMSUFTX0dSQVkpOworCisgICAgbV9zY2FsZWRGb250
ID0gY2Fpcm9fc2NhbGVkX2ZvbnRfY3JlYXRlKGZvbnRGYWNlLCAmZm9udE1hdHJpeCwgJmN0bSwg
b3B0aW9ucyk7CisgICAgY2Fpcm9fZm9udF9vcHRpb25zX2Rlc3Ryb3kob3B0aW9ucyk7Cit9CisK
K2Jvb2wgRm9udFBsYXRmb3JtRGF0YTo6aW5pdGlhbGl6ZWQgPSBmYWxzZTsKKworYm9vbCBGb250
UGxhdGZvcm1EYXRhOjppbml0KCkKK3sKKyAgICBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlm
IChpbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFGY0luaXQoKSkg
eworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNhbid0IGluaXQgZm9udCBjb25maWcgbGlicmFy
eVxuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaW5pdGlhbGl6ZWQgPSB0
cnVlOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEZvbnRQbGF0Zm9ybURhdGE6OmZpbmko
KQoreworICAgIGlmICghaW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBpbml0aWFs
aXplZCA9IGZhbHNlOworICAgIC8vIEZJWE1FOiBvdXQtY29tbWVudCB0aGUgbGluZSBiZWxvdyBk
dWUgdG8gdGhpcyBjcmFzaDoKKyAgICAvLyBGY0NhY2hlRmluaTogQXNzZXJ0aW9uICdmY0NhY2hl
Q2hhaW5zW2ldID09KCh2b2lkKikwKScKKyAgICAvLyBXZSBhcmUgYWxyZWFkeSBjbGVhbmluZyB0
aGUgRm9udENhY2hlIGJ1dCB3ZSBtaWdodCBzdGlsbCBoYXZlCisgICAgLy8gcmVmZXJlbmNlIGZy
b20gdGhlIGZyYW1lJ3Mgbm9kZXMgKENTUykuIFRoZSBDcmFzaCBpcyBlYXNpbHkKKyAgICAvLyBy
ZXByb2R1Y2FibGUgYnkgZnVsbHkgbG9hZGluZyBodHRwOi8vcG9sLmRrCisgICAgLy8gRmNGaW5p
KCk7Cit9CisKKworRm9udFBsYXRmb3JtRGF0YTo6fkZvbnRQbGF0Zm9ybURhdGEoKQoreworICAg
IC8vIE5PVEU6IHRoZSBkZXN0cm95aW5nIG9mIG1fc2NhbGVkRm9udCBhbmQgbV9wYXR0ZXJuIGlz
CisgICAgLy8gYmVpbmcgaGFuZGxlZCBieSBTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1EZXN0cm95
KCkKK30KKworYm9vbCBGb250UGxhdGZvcm1EYXRhOjppc0ZpeGVkUGl0Y2goKQoreworICAgIC8v
IFRPRE86IFN1cHBvcnQgaXNGaXhlZFBpdGNoKCkgZm9yIGN1c3RvbSBmb250cy4KKyAgICBpZiAo
IW1fcGF0dGVybikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50IHNwYWNpbmc7Cisg
ICAgaWYgKEZjUGF0dGVybkdldEludGVnZXIobV9wYXR0ZXJuLCBGQ19TUEFDSU5HLCAwLCAmc3Bh
Y2luZykgPT0gRmNSZXN1bHRNYXRjaCkKKyAgICAgICAgcmV0dXJuIHNwYWNpbmcgPT0gRkNfTU9O
TzsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9udFBsYXRmb3JtRGF0YTo6b3BlcmF0
b3I9PShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAobV9w
YXR0ZXJuID09IG90aGVyLm1fcGF0dGVybikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYg
KCFtX3BhdHRlcm4gfHwgbV9wYXR0ZXJuID09IHJlaW50ZXJwcmV0X2Nhc3Q8RmNQYXR0ZXJuKj4o
LTEpCisgICAgICAgIHx8ICFvdGhlci5tX3BhdHRlcm4gfHwgb3RoZXIubV9wYXR0ZXJuID09IHJl
aW50ZXJwcmV0X2Nhc3Q8RmNQYXR0ZXJuKj4oLTEpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIEZjUGF0dGVybkVxdWFsKG1fcGF0dGVybiwgb3RoZXIubV9wYXR0ZXJuKTsKK30K
KworI2lmbmRlZiBOREVCVUcKK1N0cmluZyBGb250UGxhdGZvcm1EYXRhOjpkZXNjcmlwdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorI2VuZGlmCisKK30KSW5kZXg6IFdl
YkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCisrKyBXZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEwLTAzLTAyICBMZWFuZHJvIFBlcmVp
cmEgIDxsZWFuZHJvQHByb2Z1c2lvbi5tb2JpPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBFRkwgcG9ydCBmaWxlcyB0byBwbGF0Zm9ybS9ncmFw
aGljcy9lZmwuCisgICAgICAgIGh0dHA6Ly93ZWJraXQub3JnL2IvMzU1MzEKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9Gb250Q2FjaGVFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9Gb250RWZsLmNwcDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ZvbnRQbGF0Zm9ybURhdGEu
aDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ZvbnRQbGF0Zm9ybURh
dGFFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvU2ltcGxl
Rm9udERhdGFFZmwuY3BwOiBBZGRlZC4KKwogMjAxMC0wMy0wMSAgSmFrb2IgUGV0c292aXRzICA8
anBldHNvdml0c0ByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4K
</data>

          </attachment>
      

    </bug>

</bugzilla>