<?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>140293</bug_id>
          
          <creation_ts>2015-01-09 09:42:26 -0800</creation_ts>
          <short_desc>FontCache should only deal with SimpleFontData</short_desc>
          <delta_ts>2015-01-09 11:48:17 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mmaxfield</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1060152</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-01-09 09:42:26 -0800</bug_when>
    <thetext>Move FontCache::fontForFamilyAtIndex functionality to FontGlyphs to improve layering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060166</commentid>
    <comment_count>1</comment_count>
      <attachid>244347</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-01-09 10:12:27 -0800</bug_when>
    <thetext>Created attachment 244347
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060182</commentid>
    <comment_count>2</comment_count>
      <attachid>244347</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-01-09 10:58:48 -0800</bug_when>
    <thetext>Comment on attachment 244347
patch

r=me
I wonder what&apos;s up with that fast/text failure on WK1. Let&apos;s hope it&apos;s just EWS being wonky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060202</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-01-09 11:34:38 -0800</bug_when>
    <thetext>https://trac.webkit.org/r178180</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060208</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-01-09 11:48:17 -0800</bug_when>
    <thetext>&gt; I wonder what&apos;s up with that fast/text failure on WK1. Let&apos;s hope it&apos;s just
&gt; EWS being wonky.

That was unrelated</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244347</attachid>
            <date>2015-01-09 10:12:27 -0800</date>
            <delta_ts>2015-01-09 10:58:48 -0800</delta_ts>
            <desc>patch</desc>
            <filename>font-realize-refactor.patch</filename>
            <type>text/plain</type>
            <size>20912</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3ODE3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE1LTAxLTA5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGb250Q2FjaGUgc2hvdWxkIG9u
bHkgZGVhbCB3aXRoIFNpbXBsZUZvbnREYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDAyOTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGb250Q2FjaGU6OmZvbnRGb3JGYW1pbHlBdEluZGV4IGhhbmRz
IG91dCBGb250RGF0YSBvYmplY3RzIGFuZCBjYWxscyB0byBGb250U2VsZWN0b3IuIFRoYXQgc29y
dAorICAgICAgICBvZiBjb2RlIGRvZXMgbm90IGJlbG9uZyB0byB0aGUgY2FjaGUgbGF5ZXIuIE1v
dmUgdGhlIGZ1bmN0aW9uYWxpdHkgdXAgdG8gRm9udEdseXBocy4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6b3BlcmF0b3I9
PSk6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3VGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250OjpkcmF3RW1waGFzaXNNYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Ojppc0xv
YWRpbmdDdXN0b21Gb250cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udDo6bG9hZGluZ0N1c3RvbUZvbnRzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhY2hlOjpzaW1pbGFyRm9udFBsYXRmb3JtRGF0YSk6CisKKyAgICAgICAgICAgIEdl
bmVyaWMgbnVsbCBpbXBsZW1lbnRhdGlvbiB0byByZWR1Y2UgI2lmcy4KKworICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhY2hlOjpmb250Rm9yRmFtaWx5QXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmg6CisKKyAgICAgICAgICAgIFVuZnJpZW5k
IEZvbnRHbHlwaHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHbHlwaHM6OkZvbnRHbHlwaHMpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udEdseXBoczo6aXNMb2FkaW5nQ3VzdG9tRm9udHMpOgorCisgICAgICAgICAg
ICBXZSBjYW4gZmlndXJlIHRodXMgb3V0IGNoZWFwbHkgd2l0aG91dCBjYWNoaW5nIGEgYml0Lgor
CisgICAgICAgIChXZWJDb3JlOjpyZWFsaXplTmV4dEZhbWlseSk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250R2x5cGhzOjpyZWFsaXplRm9udERhdGFBdCk6CisKKyAgICAgICAgICAgIFJlb3JnYW5p
emUgYSBiaXQgdG8gbWFrZSB0aGUgbG9naWMgY2xlYXJlci4KKyAgICAgICAgICAgIEdldCByaWQg
b2YgdGhlIHN0cmFuZ2UgY0FsbEZhbWlsaWVzU2Nhbm5lZCBjb25zdGFudC4KKworICAgICAgICAo
V2ViQ29yZTo6Rm9udEdseXBoczo6Z2x5cGhEYXRhRm9yVmFyaWFudCk6CisgICAgICAgIChXZWJD
b3JlOjpGb250R2x5cGhzOjpnbHlwaERhdGFGb3JOb3JtYWxWYXJpYW50KToKKworICAgICAgICAg
ICAgTG9vcCB1bnRpbCBudWxsLCB0aGF0IGFsd2F5cyB3b3Jrcy4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHbHlwaHM6
OmxvYWRpbmdDdXN0b21Gb250cyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvaW9zL0ZvbnRDYWNoZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6c2lt
aWxhckZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q2FjaGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnNpbWlsYXJGb250
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udE1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRhc2hlc0ZvckludGVyc2VjdGlvbnNXaXRoUmVj
dCk6CisKIDIwMTUtMDEtMDkgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNzgxNTQsIHIxNzgxNjMsIGFu
ZCByMTc4MTY0LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHAJKHJldmlzaW9uIDE3ODE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsOSArMTgyLDcgQEAgRm9udCYgRm9udDo6
b3BlcmF0b3I9KGNvbnN0IEZvbnQmIG90aGVyKQogCiBib29sIEZvbnQ6Om9wZXJhdG9yPT0oY29u
c3QgRm9udCYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgLy8gT3VyIEZvbnREYXRhIGRvbid0IGhhdmUg
dG8gYmUgY2hlY2tlZCwgc2luY2UgY2hlY2tpbmcgdGhlIGZvbnQgZGVzY3JpcHRpb24gd2lsbCBi
ZSBmaW5lLgotICAgIC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IHdvcmsgaWYgdGhlIGZvbnQgd2Fz
IG1hZGUgd2l0aCB0aGUgRm9udFBsYXRmb3JtRGF0YSBjb25zdHJ1Y3Rvci4KLSAgICBpZiAobG9h
ZGluZ0N1c3RvbUZvbnRzKCkgfHwgb3RoZXIubG9hZGluZ0N1c3RvbUZvbnRzKCkpCisgICAgaWYg
KGlzTG9hZGluZ0N1c3RvbUZvbnRzKCkgfHwgb3RoZXIuaXNMb2FkaW5nQ3VzdG9tRm9udHMoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG1fZm9udERlc2NyaXB0aW9uICE9IG90
aGVyLm1fZm9udERlc2NyaXB0aW9uIHx8IG1fbGV0dGVyU3BhY2luZyAhPSBvdGhlci5tX2xldHRl
clNwYWNpbmcgfHwgbV93b3JkU3BhY2luZyAhPSBvdGhlci5tX3dvcmRTcGFjaW5nKQpAQCAtMzM3
LDcgKzMzNSw3IEBAIGZsb2F0IEZvbnQ6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCogY28KICAg
ICAvLyBEb24ndCBkcmF3IGFueXRoaW5nIHdoaWxlIHdlIGFyZSB1c2luZyBjdXN0b20gZm9udHMg
dGhhdCBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgbG9hZGluZywKICAgICAvLyBleGNlcHQgaWYgdGhl
ICdmb3JjZScgYXJndW1lbnQgaXMgc2V0IHRvIHRydWUgKGluIHdoaWNoIGNhc2UgaXQgd2lsbCB1
c2UgYSBmYWxsYmFjawogICAgIC8vIGZvbnQpLgotICAgIGlmIChsb2FkaW5nQ3VzdG9tRm9udHMo
KSAmJiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPT0gRG9Ob3RQYWludElmRm9udE5vdFJlYWR5
KQorICAgIGlmIChpc0xvYWRpbmdDdXN0b21Gb250cygpICYmIGN1c3RvbUZvbnROb3RSZWFkeUFj
dGlvbiA9PSBEb05vdFBhaW50SWZGb250Tm90UmVhZHkpCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgdG8gPSAodG8gPT0gLTEgPyBydW4ubGVuZ3RoKCkgOiB0byk7CkBAIC0zNTUsNyArMzUzLDcg
QEAgZmxvYXQgRm9udDo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0KiBjbwogCiB2b2lkIEZvbnQ6
OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1
biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAogewotICAgIGlmIChsb2FkaW5nQ3VzdG9tRm9udHMo
KSkKKyAgICBpZiAoaXNMb2FkaW5nQ3VzdG9tRm9udHMoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKHRvIDwgMCkKQEAgLTEwODMsNiArMTA4MSwxMSBAQCBib29sIEZvbnQ6OmNhblJlY2Vp
dmVUZXh0RW1waGFzaXMoVUNoYXIzCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KKworYm9vbCBGb250
Ojppc0xvYWRpbmdDdXN0b21Gb250cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ2x5cGhzICYm
IG1fZ2x5cGhzLT5pc0xvYWRpbmdDdXN0b21Gb250cygpOworfQogICAgIAogR2x5cGhUb1BhdGhU
cmFuc2xhdG9yOjpHbHlwaFVuZGVybGluZVR5cGUgY29tcHV0ZVVuZGVybGluZVR5cGUoY29uc3Qg
VGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBpbnQgaW5k
ZXgpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCShyZXZp
c2lvbiAxNzgxNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4OSwxMCArMjg5LDcgQEAgcHVibGljOgogICAgIEZvbnRHbHlw
aHMqIGdseXBocygpIGNvbnN0IHsgcmV0dXJuIG1fZ2x5cGhzLmdldCgpOyB9CiAKIHByaXZhdGU6
Ci0gICAgYm9vbCBsb2FkaW5nQ3VzdG9tRm9udHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fZ2x5cGhzICYmIG1fZ2x5cGhzLT5sb2FkaW5nQ3VzdG9tRm9udHMoKTsKLSAgICB9Cisg
ICAgYm9vbCBpc0xvYWRpbmdDdXN0b21Gb250cygpIGNvbnN0OwogCiAgICAgVHlwZXNldHRpbmdG
ZWF0dXJlcyBjb21wdXRlVHlwZXNldHRpbmdGZWF0dXJlcygpIGNvbnN0CiAgICAgewpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCShyZXZp
c2lvbiAxNzgxNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTAsNDggKzQ5MCw2IEBAIHNpemVfdCBGb250Q2Fj
aGU6OmluYWN0aXZlRm9udERhdGFDb3VudCgKICAgICByZXR1cm4gY291bnQ7CiB9CiAKLVJlZlB0
cjxGb250RGF0YT4gRm9udENhY2hlOjpmb250Rm9yRmFtaWx5QXRJbmRleChjb25zdCBGb250RGVz
Y3JpcHRpb24mIGRlc2NyaXB0aW9uLCBpbnQmIGZhbWlseUluZGV4LCBGb250U2VsZWN0b3IqIGZv
bnRTZWxlY3RvcikKLXsKLSAgICBBU1NFUlQoZmFtaWx5SW5kZXggIT0gY0FsbEZhbWlsaWVzU2Nh
bm5lZCk7Ci0gICAgUmVmUHRyPEZvbnREYXRhPiByZXN1bHQ7Ci0KLSAgICBib29sIGlzRmlyc3Qg
PSAhZmFtaWx5SW5kZXg7Ci0gICAgaW50IGZhbWlseUNvdW50ID0gZGVzY3JpcHRpb24uZmFtaWx5
Q291bnQoKTsKLSAgICBmb3IgKDtmYW1pbHlJbmRleCA8IGZhbWlseUNvdW50ICYmICFyZXN1bHQ7
ICsrZmFtaWx5SW5kZXgpIHsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkgPSBk
ZXNjcmlwdGlvbi5mYW1pbHlBdChmYW1pbHlJbmRleCk7Ci0gICAgICAgIGlmIChmYW1pbHkuaXNF
bXB0eSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChmb250U2VsZWN0b3Ip
Ci0gICAgICAgICAgICByZXN1bHQgPSBmb250U2VsZWN0b3ItPmdldEZvbnREYXRhKGRlc2NyaXB0
aW9uLCBmYW1pbHkpOwotICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHJlc3VsdCA9
IGZvbnRGb3JGYW1pbHkoZGVzY3JpcHRpb24sIGZhbWlseSk7Ci0gICAgfQotICAgIGlmIChmYW1p
bHlJbmRleCA9PSBmYW1pbHlDb3VudCkKLSAgICAgICAgZmFtaWx5SW5kZXggPSBjQWxsRmFtaWxp
ZXNTY2FubmVkOwotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYgKCFyZXN1bHQpIHsKLSAg
ICAgICAgLy8gV2UgZGlkbid0IGZpbmQgYSBmb250LiBUcnkgdG8gZmluZCBhIHNpbWlsYXIgZm9u
dCB1c2luZyBvdXIgb3duIHNwZWNpZmljIGtub3dsZWRnZSBhYm91dCBvdXIgcGxhdGZvcm0uCi0g
ICAgICAgIC8vIEZvciBleGFtcGxlIG9uIE9TIFgsIHdlIGtub3cgdG8gbWFwIGFueSBmYW1pbGll
cyBjb250YWluaW5nIHRoZSB3b3JkcyBBcmFiaWMsIFBhc2h0bywgb3IgVXJkdSB0byB0aGUKLSAg
ICAgICAgLy8gR2VlemEgUHJvIGZvbnQuCi0gICAgICAgIHJlc3VsdCA9IHNpbWlsYXJGb250UGxh
dGZvcm1EYXRhKGRlc2NyaXB0aW9uKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmICghcmVzdWx0
ICYmIGlzRmlyc3QpIHsKLSAgICAgICAgLy8gSWYgaXQncyB0aGUgcHJpbWFyeSBmb250IHRoYXQg
d2UgY291bGRuJ3QgZmluZCwgd2UgdHJ5IHRoZSBmb2xsb3dpbmcuIEluIGFsbCBvdGhlciBjYXNl
cywgd2Ugd2lsbAotICAgICAgICAvLyBqdXN0IHVzZSBwZXItY2hhcmFjdGVyIHN5c3RlbSBmYWxs
YmFjay4KLSAgICAgICAgaWYgKGZvbnRTZWxlY3RvcikgewotICAgICAgICAgICAgLy8gVHJ5IHRo
ZSB1c2VyJ3MgcHJlZmVycmVkIHN0YW5kYXJkIGZvbnQuCi0gICAgICAgICAgICBpZiAoUmVmUHRy
PEZvbnREYXRhPiBkYXRhID0gZm9udFNlbGVjdG9yLT5nZXRGb250RGF0YShkZXNjcmlwdGlvbiwg
c3RhbmRhcmRGYW1pbHkpKQotICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLnJlbGVhc2UoKTsK
LSAgICAgICAgfQotICAgICAgICAvLyBTdGlsbCBubyByZXN1bHQuICBIYW5kIGJhY2sgb3VyIGxh
c3QgcmVzb3J0IGZhbGxiYWNrIGZvbnQuCi0gICAgICAgIHJlc3VsdCA9IGxhc3RSZXNvcnRGYWxs
YmFja0ZvbnQoZGVzY3JpcHRpb24pOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2Uo
KTsKLX0KLQogc3RhdGljIEhhc2hTZXQ8Rm9udFNlbGVjdG9yKj4qIGdDbGllbnRzOwogCiB2b2lk
IEZvbnRDYWNoZTo6YWRkQ2xpZW50KEZvbnRTZWxlY3RvciogY2xpZW50KQpAQCAtNTgxLDQgKzUz
OSwxMSBAQCB2b2lkIEZvbnRDYWNoZTo6aW52YWxpZGF0ZSgpCiAgICAgcHVyZ2VJbmFjdGl2ZUZv
bnREYXRhKCk7CiB9CiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitSZWZQdHI8U2ltcGxlRm9udERh
dGE+IEZvbnRDYWNoZTo6c2ltaWxhckZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0
aW9uJikKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FjaGUuaAkocmV2aXNpb24gMTc4MTY1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250OwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKLWNs
YXNzIEZvbnREYXRhOwogY2xhc3MgRm9udFNlbGVjdG9yOwogY2xhc3MgT3BlblR5cGVWZXJ0aWNh
bERhdGE7CiBjbGFzcyBTaW1wbGVGb250RGF0YTsKQEAgLTExMSw4ICsxMTAsNiBAQCBjbGFzcyBG
b250Q2FjaGUgewogcHVibGljOgogICAgIGZyaWVuZCBGb250Q2FjaGUmIGZvbnRDYWNoZSgpOwog
Ci0gICAgUmVmUHRyPEZvbnREYXRhPiBmb250Rm9yRmFtaWx5QXRJbmRleChjb25zdCBGb250RGVz
Y3JpcHRpb24mLCBpbnQmIGZhbWlseUluZGV4LCBGb250U2VsZWN0b3IqKTsKLQogICAgIC8vIFRo
aXMgbWV0aG9kIGlzIGltcGxlbWVudGVkIGJ5IHRoZSBwbGF0Zm9ybS4KICAgICBSZWZQdHI8U2lt
cGxlRm9udERhdGE+IHN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVycyhjb25zdCBGb250RGVzY3Jp
cHRpb24mLCBjb25zdCBTaW1wbGVGb250RGF0YSogb3JpZ2luYWxGb250RGF0YSwgYm9vbCBpc1Bs
YXRmb3JtRm9udCwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgpOwogCkBAIC0x
MzMsNiArMTMwLDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNpbXBs
ZUZvbnREYXRhPiBmb250Rm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0
b21pY1N0cmluZyYsIGJvb2wgY2hlY2tpbmdBbHRlcm5hdGVOYW1lID0gZmFsc2UpOwogICAgIFdF
QkNPUkVfRVhQT1JUIFJlZjxTaW1wbGVGb250RGF0YT4gbGFzdFJlc29ydEZhbGxiYWNrRm9udChj
b25zdCBGb250RGVzY3JpcHRpb24mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2ltcGxlRm9u
dERhdGE+IGZvbnRGb3JQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOworICAg
IFJlZlB0cjxTaW1wbGVGb250RGF0YT4gc2ltaWxhckZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9u
dERlc2NyaXB0aW9uJik7CiAKICAgICB2b2lkIGFkZENsaWVudChGb250U2VsZWN0b3IqKTsKICAg
ICB2b2lkIHJlbW92ZUNsaWVudChGb250U2VsZWN0b3IqKTsKQEAgLTE4MywxMSArMTgyLDYgQEAg
cHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBnZXRTeXN0ZW1Gb250RmFs
bGJhY2tGb3JDaGFyYWN0ZXJzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IFNpbXBsZUZv
bnREYXRhKiwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgpOwogI2VuZGlmCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRQbGF0Zm9ybURh
dGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpOwot
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IHNpbWls
YXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYpOwotI2VuZGlmCi0KLSAg
ICBXRUJDT1JFX0VYUE9SVCBSZWY8U2ltcGxlRm9udERhdGE+IGZvbnRGb3JQbGF0Zm9ybURhdGEo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogCiAgICAgLy8gRG9uJ3QgcHVyZ2UgaWYgdGhpcyBj
b3VudCBpcyA+IDA7CiAgICAgaW50IG1fcHVyZ2VQcmV2ZW50Q291bnQ7CkBAIC0xOTYsNyArMTkw
LDYgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29tcGxleFRleHRDb250cm9sbGVyOwog
I2VuZGlmCiAgICAgZnJpZW5kIGNsYXNzIFNpbXBsZUZvbnREYXRhOwotICAgIGZyaWVuZCBjbGFz
cyBGb250R2x5cGhzOwogfTsKIAogLy8gR2V0IHRoZSBnbG9iYWwgZm9udENhY2hlLgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEdseXBocy5jcHAJKHJl
dmlzaW9uIDE3ODE2NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRH
bHlwaHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMSArNDEsNyBAQCBGb250R2x5cGhzOjpG
b250R2x5cGhzKFBhc3NSZWZQdHI8Rm9udFNlCiAgICAgOiBtX2NhY2hlZFByaW1hcnlTaW1wbGVG
b250RGF0YSgwKQogICAgICwgbV9mb250U2VsZWN0b3IoZm9udFNlbGVjdG9yKQogICAgICwgbV9m
b250U2VsZWN0b3JWZXJzaW9uKG1fZm9udFNlbGVjdG9yID8gbV9mb250U2VsZWN0b3ItPnZlcnNp
b24oKSA6IDApCi0gICAgLCBtX2ZhbWlseUluZGV4KDApCiAgICAgLCBtX2dlbmVyYXRpb24oZm9u
dENhY2hlKCkuZ2VuZXJhdGlvbigpKQotICAgICwgbV9waXRjaChVbmtub3duUGl0Y2gpCi0gICAg
LCBtX2xvYWRpbmdDdXN0b21Gb250cyhmYWxzZSkKLSAgICAsIG1faXNGb3JQbGF0Zm9ybUZvbnQo
ZmFsc2UpCiB7CiB9CiAKQEAgLTUzLDEwICs0OSw3IEBAIEZvbnRHbHlwaHM6OkZvbnRHbHlwaHMo
Y29uc3QgRm9udFBsYXRmb3IKICAgICA6IG1fY2FjaGVkUHJpbWFyeVNpbXBsZUZvbnREYXRhKDAp
CiAgICAgLCBtX2ZvbnRTZWxlY3RvcigwKQogICAgICwgbV9mb250U2VsZWN0b3JWZXJzaW9uKDAp
Ci0gICAgLCBtX2ZhbWlseUluZGV4KGNBbGxGYW1pbGllc1NjYW5uZWQpCiAgICAgLCBtX2dlbmVy
YXRpb24oZm9udENhY2hlKCkuZ2VuZXJhdGlvbigpKQotICAgICwgbV9waXRjaChVbmtub3duUGl0
Y2gpCi0gICAgLCBtX2xvYWRpbmdDdXN0b21Gb250cyhmYWxzZSkKICAgICAsIG1faXNGb3JQbGF0
Zm9ybUZvbnQodHJ1ZSkKIHsKICAgICBtX3JlYWxpemVkRm9udERhdGEuYXBwZW5kKGZvbnRDYWNo
ZSgpLmZvbnRGb3JQbGF0Zm9ybURhdGEocGxhdGZvcm1EYXRhKSk7CkBAIC04MSw0MCArNzQsNzIg
QEAgdm9pZCBGb250R2x5cGhzOjpkZXRlcm1pbmVQaXRjaChjb25zdCBGbwogICAgIH0KIH0KIAot
Y29uc3QgRm9udERhdGEqIEZvbnRHbHlwaHM6OnJlYWxpemVGb250RGF0YUF0KGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHVuc2lnbmVkIHJlYWxpemVkRm9udEluZGV4KQorYm9v
bCBGb250R2x5cGhzOjppc0xvYWRpbmdDdXN0b21Gb250cygpIGNvbnN0CiB7Ci0gICAgaWYgKHJl
YWxpemVkRm9udEluZGV4IDwgbV9yZWFsaXplZEZvbnREYXRhLnNpemUoKSkKLSAgICAgICAgcmV0
dXJuIG1fcmVhbGl6ZWRGb250RGF0YVtyZWFsaXplZEZvbnRJbmRleF0uZ2V0KCk7IC8vIFRoaXMg
ZmFsbGJhY2sgZm9udCBpcyBhbHJlYWR5IGluIG91ciBsaXN0LgorICAgIGZvciAoYXV0byYgZm9u
dCA6IG1fcmVhbGl6ZWRGb250RGF0YSkgeworICAgICAgICBpZiAoZm9udC0+aXNMb2FkaW5nKCkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQog
Ci0gICAgLy8gTWFrZSBzdXJlIHdlJ3JlIG5vdCBwYXNzaW5nIGluIHNvbWUgY3JhenkgdmFsdWUg
aGVyZS4KLSAgICBBU1NFUlQocmVhbGl6ZWRGb250SW5kZXggPT0gbV9yZWFsaXplZEZvbnREYXRh
LnNpemUoKSk7CitzdGF0aWMgUmVmUHRyPEZvbnREYXRhPiByZWFsaXplTmV4dEZhbWlseShjb25z
dCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1bnNpZ25lZCYgaW5kZXgsIEZvbnRTZWxl
Y3RvciogZm9udFNlbGVjdG9yKQoreworICAgIEFTU0VSVChpbmRleCA8IGRlc2NyaXB0aW9uLmZh
bWlseUNvdW50KCkpOwogCi0gICAgaWYgKG1fZmFtaWx5SW5kZXggPD0gY0FsbEZhbWlsaWVzU2Nh
bm5lZCkgewotICAgICAgICBpZiAoIW1fZm9udFNlbGVjdG9yKQotICAgICAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICAgICAgc2l6ZV90IGluZGV4ID0gY0FsbEZhbWlsaWVzU2Nhbm5lZCAtIG1fZmFt
aWx5SW5kZXg7Ci0gICAgICAgIGlmIChpbmRleCA9PSBtX2ZvbnRTZWxlY3Rvci0+ZmFsbGJhY2tG
b250RGF0YUNvdW50KCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICBtX2ZhbWls
eUluZGV4LS07Ci0gICAgICAgIFJlZlB0cjxGb250RGF0YT4gZmFsbGJhY2sgPSBtX2ZvbnRTZWxl
Y3Rvci0+Z2V0RmFsbGJhY2tGb250RGF0YShkZXNjcmlwdGlvbiwgaW5kZXgpOwotICAgICAgICBp
ZiAoZmFsbGJhY2spCi0gICAgICAgICAgICBtX3JlYWxpemVkRm9udERhdGEuYXBwZW5kKGZhbGxi
YWNrKTsKLSAgICAgICAgcmV0dXJuIGZhbGxiYWNrLmdldCgpOworICAgIHdoaWxlIChpbmRleCA8
IGRlc2NyaXB0aW9uLmZhbWlseUNvdW50KCkpIHsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBmYW1pbHkgPSBkZXNjcmlwdGlvbi5mYW1pbHlBdChpbmRleCsrKTsKKyAgICAgICAgaWYgKGZh
bWlseS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGZvbnRT
ZWxlY3RvcikgeworICAgICAgICAgICAgaWYgKGF1dG8gZm9udCA9IGZvbnRTZWxlY3Rvci0+Z2V0
Rm9udERhdGEoZGVzY3JpcHRpb24sIGZhbWlseSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZv
bnQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGF1dG8gZm9udCA9IGZvbnRDYWNoZSgpLmZvbnRG
b3JGYW1pbHkoZGVzY3JpcHRpb24sIGZhbWlseSkpCisgICAgICAgICAgICByZXR1cm4gZm9udDsK
ICAgICB9CisgICAgLy8gV2UgZGlkbid0IGZpbmQgYSBmb250LiBUcnkgdG8gZmluZCBhIHNpbWls
YXIgZm9udCB1c2luZyBvdXIgb3duIHNwZWNpZmljIGtub3dsZWRnZSBhYm91dCBvdXIgcGxhdGZv
cm0uCisgICAgLy8gRm9yIGV4YW1wbGUgb24gT1MgWCwgd2Uga25vdyB0byBtYXAgYW55IGZhbWls
aWVzIGNvbnRhaW5pbmcgdGhlIHdvcmRzIEFyYWJpYywgUGFzaHRvLCBvciBVcmR1IHRvIHRoZQor
ICAgIC8vIEdlZXphIFBybyBmb250LgorICAgIHJldHVybiBmb250Q2FjaGUoKS5zaW1pbGFyRm9u
dFBsYXRmb3JtRGF0YShkZXNjcmlwdGlvbik7Cit9CiAKLSAgICAvLyBBc2sgdGhlIGZvbnQgY2Fj
aGUgZm9yIHRoZSBmb250IGRhdGEuCi0gICAgLy8gV2UgYXJlIG9idGFpbmluZyB0aGlzIGZvbnQg
Zm9yIHRoZSBmaXJzdCB0aW1lLiBXZSBrZWVwIHRyYWNrIG9mIHRoZSBmYW1pbGllcyB3ZSd2ZSBs
b29rZWQgYXQgYmVmb3JlCi0gICAgLy8gaW4gfG1fZmFtaWx5SW5kZXh8LCBzbyB0aGF0IHdlIG5l
dmVyIHNjYW4gdGhlIHNhbWUgc3BvdCBpbiB0aGUgbGlzdCB0d2ljZS4gZm9udEZvckZhbWlseUF0
SW5kZXggd2lsbCBhZGp1c3Qgb3VyCi0gICAgLy8gfG1fZmFtaWx5SW5kZXh8IGFzIGl0IHNjYW5z
IGZvciB0aGUgcmlnaHQgZm9udCB0byBtYWtlLgorY29uc3QgRm9udERhdGEqIEZvbnRHbHlwaHM6
OnJlYWxpemVGb250RGF0YUF0KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHVu
c2lnbmVkIGluZGV4KQoreworICAgIGlmIChpbmRleCA8IG1fcmVhbGl6ZWRGb250RGF0YS5zaXpl
KCkpCisgICAgICAgIHJldHVybiAmbV9yZWFsaXplZEZvbnREYXRhW2luZGV4XS5nZXQoKTsKKwor
ICAgIEFTU0VSVChpbmRleCA9PSBtX3JlYWxpemVkRm9udERhdGEuc2l6ZSgpKTsKICAgICBBU1NF
UlQoZm9udENhY2hlKCkuZ2VuZXJhdGlvbigpID09IG1fZ2VuZXJhdGlvbik7Ci0gICAgUmVmUHRy
PEZvbnREYXRhPiByZXN1bHQgPSBmb250Q2FjaGUoKS5mb250Rm9yRmFtaWx5QXRJbmRleChkZXNj
cmlwdGlvbiwgbV9mYW1pbHlJbmRleCwgbV9mb250U2VsZWN0b3IuZ2V0KCkpOwotICAgIGlmIChy
ZXN1bHQpIHsKLSAgICAgICAgbV9yZWFsaXplZEZvbnREYXRhLmFwcGVuZChyZXN1bHQpOwotICAg
ICAgICBpZiAocmVzdWx0LT5pc0xvYWRpbmcoKSkKLSAgICAgICAgICAgIG1fbG9hZGluZ0N1c3Rv
bUZvbnRzID0gdHJ1ZTsKKworICAgIGlmICghaW5kZXgpIHsKKyAgICAgICAgUmVmUHRyPEZvbnRE
YXRhPiByZXN1bHQgPSByZWFsaXplTmV4dEZhbWlseShkZXNjcmlwdGlvbiwgbV9sYXN0UmVhbGl6
ZWRGYW1pbHlJbmRleCwgbV9mb250U2VsZWN0b3IuZ2V0KCkpOworICAgICAgICBpZiAoIXJlc3Vs
dCAmJiBtX2ZvbnRTZWxlY3RvcikKKyAgICAgICAgICAgIHJlc3VsdCA9IG1fZm9udFNlbGVjdG9y
LT5nZXRGb250RGF0YShkZXNjcmlwdGlvbiwgc3RhbmRhcmRGYW1pbHkpOworICAgICAgICBpZiAo
IXJlc3VsdCkKKyAgICAgICAgICAgIHJlc3VsdCA9IGZvbnRDYWNoZSgpLmxhc3RSZXNvcnRGYWxs
YmFja0ZvbnQoZGVzY3JpcHRpb24pOworCisgICAgICAgIG1fcmVhbGl6ZWRGb250RGF0YS5hcHBl
bmQoKnJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1bHQuZ2V0KCk7CiAgICAgfQorCisgICAg
UmVmUHRyPEZvbnREYXRhPiByZXN1bHQ7CisgICAgaWYgKG1fbGFzdFJlYWxpemVkRmFtaWx5SW5k
ZXggPCBkZXNjcmlwdGlvbi5mYW1pbHlDb3VudCgpKQorICAgICAgICByZXN1bHQgPSByZWFsaXpl
TmV4dEZhbWlseShkZXNjcmlwdGlvbiwgbV9sYXN0UmVhbGl6ZWRGYW1pbHlJbmRleCwgbV9mb250
U2VsZWN0b3IuZ2V0KCkpOworCisgICAgaWYgKCFyZXN1bHQgJiYgbV9mb250U2VsZWN0b3IpIHsK
KyAgICAgICAgQVNTRVJUKG1fbGFzdFJlYWxpemVkRmFtaWx5SW5kZXggPj0gZGVzY3JpcHRpb24u
ZmFtaWx5Q291bnQoKSk7CisKKyAgICAgICAgdW5zaWduZWQgZm9udFNlbGVjdG9yRmFsbGJhY2tJ
bmRleCA9IG1fbGFzdFJlYWxpemVkRmFtaWx5SW5kZXggLSBkZXNjcmlwdGlvbi5mYW1pbHlDb3Vu
dCgpOworICAgICAgICBpZiAoZm9udFNlbGVjdG9yRmFsbGJhY2tJbmRleCA9PSBtX2ZvbnRTZWxl
Y3Rvci0+ZmFsbGJhY2tGb250RGF0YUNvdW50KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgKyttX2xhc3RSZWFsaXplZEZhbWlseUluZGV4OworICAgICAgICByZXN1bHQg
PSBtX2ZvbnRTZWxlY3Rvci0+Z2V0RmFsbGJhY2tGb250RGF0YShkZXNjcmlwdGlvbiwgZm9udFNl
bGVjdG9yRmFsbGJhY2tJbmRleCk7CisgICAgfQorICAgIGlmICghcmVzdWx0KQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIG1fcmVhbGl6ZWRGb250RGF0YS5hcHBlbmQoKnJlc3VsdCk7
CiAgICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsKIH0KIApAQCAtMjY4LDEzICsyOTMsOSBAQCBHbHlw
aERhdGEgRm9udEdseXBoczo6Z2x5cGhEYXRhRm9yU3lzdGVtCiAgICAgcmV0dXJuIGZhbGxiYWNr
R2x5cGhEYXRhOwogfQogCi1HbHlwaERhdGEgRm9udEdseXBoczo6Z2x5cGhEYXRhRm9yVmFyaWFu
dChVQ2hhcjMyIGMsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIEZvbnREYXRh
VmFyaWFudCB2YXJpYW50LCB1bnNpZ25lZCBmYWxsYmFja0xldmVsKQorR2x5cGhEYXRhIEZvbnRH
bHlwaHM6OmdseXBoRGF0YUZvclZhcmlhbnQoVUNoYXIzMiBjLCBjb25zdCBGb250RGVzY3JpcHRp
b24mIGRlc2NyaXB0aW9uLCBGb250RGF0YVZhcmlhbnQgdmFyaWFudCwgdW5zaWduZWQgZmFsbGJh
Y2tJbmRleCkKIHsKLSAgICBmb3IgKDsgZmFsbGJhY2tMZXZlbCA8PSBkZXNjcmlwdGlvbi5mYW1p
bHlDb3VudCgpOyArK2ZhbGxiYWNrTGV2ZWwpIHsKLSAgICAgICAgYXV0byogZm9udERhdGEgPSBy
ZWFsaXplRm9udERhdGFBdChkZXNjcmlwdGlvbiwgZmFsbGJhY2tMZXZlbCk7Ci0gICAgICAgIGlm
ICghZm9udERhdGEpCi0gICAgICAgICAgICBicmVhazsKLQorICAgIHdoaWxlIChhdXRvKiBmb250
RGF0YSA9IHJlYWxpemVGb250RGF0YUF0KGRlc2NyaXB0aW9uLCBmYWxsYmFja0luZGV4KyspKSB7
CiAgICAgICAgIGF1dG8qIHNpbXBsZUZvbnREYXRhID0gZm9udERhdGEtPnNpbXBsZUZvbnREYXRh
Rm9yQ2hhcmFjdGVyKGMpOwogICAgICAgICBHbHlwaERhdGEgZGF0YSA9IHNpbXBsZUZvbnREYXRh
ID8gc2ltcGxlRm9udERhdGEtPmdseXBoRGF0YUZvckNoYXJhY3RlcihjKSA6IEdseXBoRGF0YSgp
OwogICAgICAgICBpZiAoZGF0YS5mb250RGF0YSkgewpAQCAtMjk1LDEwICszMTYsNyBAQCBHbHlw
aERhdGEgRm9udEdseXBoczo6Z2x5cGhEYXRhRm9yTm9ybWFsCiB7CiAgICAgY29uc3QgdW5zaWdu
ZWQgcGFnZU51bWJlciA9IGMgLyBHbHlwaFBhZ2U6OnNpemU7CiAKLSAgICBmb3IgKHVuc2lnbmVk
IGZhbGxiYWNrTGV2ZWwgPSAwOyBmYWxsYmFja0xldmVsIDw9IGRlc2NyaXB0aW9uLmZhbWlseUNv
dW50KCk7ICsrZmFsbGJhY2tMZXZlbCkgewotICAgICAgICBhdXRvKiBmb250RGF0YSA9IHJlYWxp
emVGb250RGF0YUF0KGRlc2NyaXB0aW9uLCBmYWxsYmFja0xldmVsKTsKLSAgICAgICAgaWYgKCFm
b250RGF0YSkKLSAgICAgICAgICAgIGJyZWFrOworICAgIGZvciAodW5zaWduZWQgZmFsbGJhY2tJ
bmRleCA9IDA7IGF1dG8qIGZvbnREYXRhID0gcmVhbGl6ZUZvbnREYXRhQXQoZGVzY3JpcHRpb24s
IGZhbGxiYWNrSW5kZXgpOyArK2ZhbGxiYWNrSW5kZXgpIHsKICAgICAgICAgYXV0byogc2ltcGxl
Rm9udERhdGEgPSBmb250RGF0YS0+c2ltcGxlRm9udERhdGFGb3JDaGFyYWN0ZXIoYyk7CiAgICAg
ICAgIGF1dG8qIHBhZ2UgPSBzaW1wbGVGb250RGF0YSA/IHNpbXBsZUZvbnREYXRhLT5nbHlwaFBh
Z2UocGFnZU51bWJlcikgOiBudWxscHRyOwogICAgICAgICBpZiAoIXBhZ2UpCkBAIC0zMTIsNyAr
MzMwLDcgQEAgR2x5cGhEYXRhIEZvbnRHbHlwaHM6OmdseXBoRGF0YUZvck5vcm1hbAogICAgICAg
ICAgICAgICAgIGlmICghZGF0YS5mb250RGF0YS0+aGFzVmVydGljYWxHbHlwaHMoKSkgewogICAg
ICAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIGJyb2tlbiBpZGVvZ3JhcGggZm9udCBkYXRhLiBU
aGUgYnJva2VuIGlkZW9ncmFwaCBmb250IHdpbGwgdXNlIHRoZSBob3Jpem9udGFsIHdpZHRoIG9m
IGdseXBocwogICAgICAgICAgICAgICAgICAgICAvLyB0byBtYWtlIHN1cmUgeW91IGdldCBhIHNx
dWFyZSAoZXZlbiBmb3IgYnJva2VuIGdseXBocyBsaWtlIHN5bWJvbHMgdXNlZCBmb3IgcHVuY3R1
YXRpb24pLgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2x5cGhEYXRhRm9yVmFyaWFudChj
LCBkZXNjcmlwdGlvbiwgQnJva2VuSWRlb2dyYXBoVmFyaWFudCwgZmFsbGJhY2tMZXZlbCk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBnbHlwaERhdGFGb3JWYXJpYW50KGMsIGRlc2NyaXB0
aW9uLCBCcm9rZW5JZGVvZ3JhcGhWYXJpYW50LCBmYWxsYmFja0luZGV4KTsKICAgICAgICAgICAg
ICAgICB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZm9u
dERhdGEtPnBsYXRmb3JtRGF0YSgpLnN5bnRoZXRpY09ibGlxdWUoKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhzLmgJKHJldmlzaW9uIDE3ODE2
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsOCArNDAsNiBAQCBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFz
cyBGb250UGxhdGZvcm1EYXRhOwogY2xhc3MgRm9udFNlbGVjdG9yOwogCi1jb25zdCBpbnQgY0Fs
bEZhbWlsaWVzU2Nhbm5lZCA9IC0xOwotCiBjbGFzcyBGb250R2x5cGhzIDogcHVibGljIFJlZkNv
dW50ZWQ8Rm9udEdseXBocz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRHbHlwaHMp
OwogcHVibGljOgpAQCAtNTcsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0ZpeGVkUGl0
Y2goY29uc3QgRm9udERlc2NyaXB0aW9uJik7CiAgICAgdm9pZCBkZXRlcm1pbmVQaXRjaChjb25z
dCBGb250RGVzY3JpcHRpb24mKTsKIAotICAgIGJvb2wgbG9hZGluZ0N1c3RvbUZvbnRzKCkgY29u
c3QgeyByZXR1cm4gbV9sb2FkaW5nQ3VzdG9tRm9udHM7IH0KKyAgICBib29sIGlzTG9hZGluZ0N1
c3RvbUZvbnRzKCkgY29uc3Q7CiAKICAgICBGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcigpIHsg
cmV0dXJuIG1fZm9udFNlbGVjdG9yLmdldCgpOyB9CiAgICAgLy8gRklYTUU6IEl0IHNob3VsZCBi
ZSBwb3NzaWJsZSB0byBjb21iaW5lIGZvbnRTZWxlY3RvclZlcnNpb24gYW5kIGdlbmVyYXRpb24u
CkBAIC03Niw5ICs3NCw5IEBAIHByaXZhdGU6CiAKICAgICBHbHlwaERhdGEgZ2x5cGhEYXRhRm9y
U3lzdGVtRmFsbGJhY2soVUNoYXIzMiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgRm9udERhdGFW
YXJpYW50KTsKICAgICBHbHlwaERhdGEgZ2x5cGhEYXRhRm9yTm9ybWFsVmFyaWFudChVQ2hhcjMy
LCBjb25zdCBGb250RGVzY3JpcHRpb24mKTsKLSAgICBHbHlwaERhdGEgZ2x5cGhEYXRhRm9yVmFy
aWFudChVQ2hhcjMyLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBGb250RGF0YVZhcmlhbnQsIHVu
c2lnbmVkIGZhbGxiYWNrTGV2ZWwpOwotICAgIAotICAgIFZlY3RvcjxSZWZQdHI8Rm9udERhdGE+
LCAxPiBtX3JlYWxpemVkRm9udERhdGE7CisgICAgR2x5cGhEYXRhIGdseXBoRGF0YUZvclZhcmlh
bnQoVUNoYXIzMiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgRm9udERhdGFWYXJpYW50LCB1bnNp
Z25lZCBmYWxsYmFja0luZGV4KTsKKworICAgIFZlY3RvcjxSZWY8Rm9udERhdGE+LCAxPiBtX3Jl
YWxpemVkRm9udERhdGE7CiAKICAgICBSZWZQdHI8R2x5cGhQYWdlPiBtX2NhY2hlZFBhZ2VaZXJv
OwogICAgIEhhc2hNYXA8aW50LCBSZWZQdHI8R2x5cGhQYWdlPj4gbV9jYWNoZWRQYWdlczsKQEAg
LTg5LDExICs4NywxMCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxGb250U2VsZWN0b3I+IG1fZm9u
dFNlbGVjdG9yOwogICAgIFdpZHRoQ2FjaGUgbV93aWR0aENhY2hlOwogICAgIHVuc2lnbmVkIG1f
Zm9udFNlbGVjdG9yVmVyc2lvbjsKLSAgICBpbnQgbV9mYW1pbHlJbmRleDsKICAgICB1bnNpZ25l
ZCBzaG9ydCBtX2dlbmVyYXRpb247Ci0gICAgdW5zaWduZWQgbV9waXRjaCA6IDM7IC8vIFBpdGNo
Ci0gICAgdW5zaWduZWQgbV9sb2FkaW5nQ3VzdG9tRm9udHMgOiAxOwotICAgIHVuc2lnbmVkIG1f
aXNGb3JQbGF0Zm9ybUZvbnQgOiAxOworICAgIHVuc2lnbmVkIG1fbGFzdFJlYWxpemVkRmFtaWx5
SW5kZXggeyAwIH07CisgICAgUGl0Y2ggbV9waXRjaCB7IFVua25vd25QaXRjaCB9OworICAgIGJv
b2wgbV9pc0ZvclBsYXRmb3JtRm9udCB7IGZhbHNlIH07CiB9OwogCiBpbmxpbmUgYm9vbCBGb250
R2x5cGhzOjppc0ZpeGVkUGl0Y2goY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9Gb250Q2FjaGVJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Zv
bnRDYWNoZUlPUy5tbQkocmV2aXNpb24gMTc4MTY1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaW9zL0ZvbnRDYWNoZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDQ2LDcg
KzQ0Niw3IEBAIFJlZlB0cjxTaW1wbGVGb250RGF0YT4gRm9udENhY2hlOjpzeXN0ZW0KICAgICBy
ZXR1cm4gbGFzdFJlc29ydEZhbGxiYWNrRm9udChkZXNjcmlwdGlvbik7CiB9CiAKLVBhc3NSZWZQ
dHI8U2ltcGxlRm9udERhdGE+IEZvbnRDYWNoZTo6c2ltaWxhckZvbnRQbGF0Zm9ybURhdGEoY29u
c3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKK1JlZlB0cjxTaW1wbGVGb250RGF0YT4g
Rm9udENhY2hlOjpzaW1pbGFyRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uKQogewogICAgIC8vIEF0dGVtcHQgdG8gZmluZCBhbiBhcHByb3ByaWF0ZSBm
b250IHVzaW5nIGEgbWF0Y2ggYmFzZWQgb24gdGhlIHByZXNlbmNlIG9mIGtleXdvcmRzIGluCiAg
ICAgLy8gdGhlIHJlcXVlc3RlZCBuYW1lcy4gRm9yIGV4YW1wbGUsIHdlJ2xsIG1hdGNoIGFueSBu
YW1lIHRoYXQgY29udGFpbnMgIkFyYWJpYyIgdG8gR2VlemEgUHJvLgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCShy
ZXZpc2lvbiAxNzgxNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udENhY2hlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MDUsNyArNDA1LDcgQEAgUmVmUHRy
PFNpbXBsZUZvbnREYXRhPiBGb250Q2FjaGU6OnN5c3RlbQogICAgIHJldHVybiBmb250Rm9yUGxh
dGZvcm1EYXRhKGFsdGVybmF0ZUZvbnQpOwogfQogCi1QYXNzUmVmUHRyPFNpbXBsZUZvbnREYXRh
PiBGb250Q2FjaGU6OnNpbWlsYXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlv
biYgZGVzY3JpcHRpb24pCitSZWZQdHI8U2ltcGxlRm9udERhdGE+IEZvbnRDYWNoZTo6c2ltaWxh
ckZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKIHsK
ICAgICAvLyBBdHRlbXB0IHRvIGZpbmQgYW4gYXBwcm9wcmlhdGUgZm9udCB1c2luZyBhIG1hdGNo
IGJhc2VkIG9uIAogICAgIC8vIHRoZSBwcmVzZW5jZSBvZiBrZXl3b3JkcyBpbiB0aGUgdGhlIHJl
cXVlc3RlZCBuYW1lcy4gIEZvciBleGFtcGxlLCB3ZSdsbApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRNYWMubW0JKHJldmlzaW9uIDE3ODE2NSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250TWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MjgsNyArNTI4LDcgQEAgdm9pZCBNYWNHbHlwaFRvUGF0aFRyYW5zbGF0
b3I6OmFkdmFuY2UoKQogCiBEYXNoQXJyYXkgRm9udDo6ZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dp
dGhSZWN0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwg
Y29uc3QgRmxvYXRSZWN0JiBsaW5lRXh0ZW50cykgY29uc3QKIHsKLSAgICBpZiAobG9hZGluZ0N1
c3RvbUZvbnRzKCkpCisgICAgaWYgKGlzTG9hZGluZ0N1c3RvbUZvbnRzKCkpCiAgICAgICAgIHJl
dHVybiBEYXNoQXJyYXkoKTsKIAogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwo=
</data>
<flag name="review"
          id="269271"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>