<?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>139584</bug_id>
          
          <creation_ts>2014-12-12 07:18:26 -0800</creation_ts>
          <short_desc>FontGlyphs::glyphDataAndPageForCharacter cleanups</short_desc>
          <delta_ts>2014-12-12 12:31:22 -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>kling</cc>
    
    <cc>mitz</cc>
    
    <cc>mmaxfield</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1054830</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-12-12 07:18:26 -0800</bug_when>
    <thetext>Split it up and use helper functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054867</commentid>
    <comment_count>1</comment_count>
      <attachid>243208</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-12-12 11:21:19 -0800</bug_when>
    <thetext>Created attachment 243208
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054871</commentid>
    <comment_count>2</comment_count>
      <attachid>243208</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-12-12 11:41:20 -0800</bug_when>
    <thetext>Comment on attachment 243208
patch

Nice. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054887</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-12-12 12:31:22 -0800</bug_when>
    <thetext>https://trac.webkit.org/r177229</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243208</attachid>
            <date>2014-12-12 11:21:19 -0800</date>
            <delta_ts>2014-12-12 11:41:20 -0800</delta_ts>
            <desc>patch</desc>
            <filename>fontglyphs-glyphdata-cleanup.patch</filename>
            <type>text/plain</type>
            <size>19104</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NzIyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE0LTEyLTEyICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGb250R2x5cGhzOjpnbHlwaERh
dGFBbmRQYWdlRm9yQ2hhcmFjdGVyIGNsZWFudXBzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk1ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCBpdCB1cCBhbmQgdXNlIGhlbHBlciBmdW5jdGlv
bnMuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250R2x5cGhzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHbHlwaHM6OmRldGVy
bWluZVBpdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHbHlwaHM6OnJlYWxpemVGb250RGF0
YUF0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRHbHlwaHM6OmdseXBoRGF0YUFuZFBhZ2VGb3JT
eXN0ZW1GYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2x5cGhzOjpnbHlwaERhdGFB
bmRQYWdlRm9yVmFyaWFudCk6CisKKyAgICAgICAgICAgIEFkZCBwcml2YXRlIGhlbHBlcnMuCisK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRHbHlwaHM6OmdseXBoRGF0YUFuZFBhZ2VGb3JDaGFyYWN0
ZXIpOgorCisgICAgICAgICAgICBEbyB0aGUgbV9wYWdlcyBjYWNoZSBsb29rdXAgb25seSBvbmNl
IGFuZCB1c2UgdGhlIHBvaW50ZXIgcmVmZXJlbmNlIGFmdGVyd2FyZHMuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhzLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250R2x5
cGhzOjpmb250U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEdseXBoczo6d2lkdGhD
YWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250R2x5cGhzOjpwcmltYXJ5Rm9udERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udEdseXBoczo6aXNGaXhlZFBpdGNoKToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRHbHlwaHM6OnByaW1hcnlTaW1wbGVGb250RGF0YSk6CisKKyAgICAgICAgICAg
IEFsc28gcmVtb3ZlZCB0aGUgbXV0YWJsZSBhdHRyaWJ1dGUgZnJvbSB0aGUgZmllbGRzIChhbG1v
c3QgZXZlcnl0aGluZyB3YXMgbWFya2VkIG11dGFibGUpIGFuZCBtYWRlIHRoZSBpbnRlZmFjZQor
ICAgICAgICAgICAgbm9uLWNvbnN0LiBUaGUgRm9udEdseXBocyBtZW1iZXIgb2YgRm9udCBpcyBh
bHJlYWR5IG11dGFibGUgc28gdGhpcyBpcyBub3QgbmVlZGVkLgorCiAyMDE0LTEyLTEyICBSYWR1
IFN0YXZpbGEgIDxzdGF2aWxhQGFkb2JlLmNvbT4KIAogICAgICAgICBbU1ZHIE1hc2tpbmddIEVu
YWJsZSB0aGUgdXNlIG9mIDxtYXNrPiBlbGVtZW50cyBmb3IgLXdlYmtpdC1tYXNrLWltYWdlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTc3MjIzKQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAgX19aTjdX
ZWJDb3JlMTBDcmVkZW50aWFsQzFFUDE1TlNVUkxDcmVkZQogX19aTjdXZWJDb3JlMTBGbG9hdFBv
aW50QzFFUks3Q0dQb2ludAogX19aTjdXZWJDb3JlMTBGbG9hdFBvaW50QzFFUktOU184SW50UG9p
bnRFCiBfX1pON1dlYkNvcmUxMEZvbnRHbHlwaHMxNXJlbGVhc2VGb250RGF0YUV2CitfX1pON1dl
YkNvcmUxMEZvbnRHbHlwaHMxN3JlYWxpemVGb250RGF0YUF0RVJLTlNfMTVGb250RGVzY3JpcHRp
b25FagogX19aTjdXZWJDb3JlMTBKU0RvY3VtZW50NnNfaW5mb0UKIF9fWk43V2ViQ29yZTEwSlNE
b2N1bWVudDl0b1dyYXBwZWRFTjNKU0M3SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTEwTGF5b3V0UmVj
dDVzY2FsZUVmCkBAIC0xNTgzLDcgKzE1ODQsNiBAQCBfX1pOSzNXVEY2U3RyaW5nMTRjcmVhdGVD
RlN0cmluZ0V2CiBfX1pOSzdXZWJDb3JlMTBDcmVkZW50aWFsMTJuc0NyZWRlbnRpYWxFdgogX19a
Tks3V2ViQ29yZTEwQ3JlZGVudGlhbDdpc0VtcHR5RXYKIF9fWk5LN1dlYkNvcmUxMEZsb2F0UG9p
bnRjdjdDR1BvaW50RXYKLV9fWk5LN1dlYkNvcmUxMEZvbnRHbHlwaHMxN3JlYWxpemVGb250RGF0
YUF0RVJLTlNfMTVGb250RGVzY3JpcHRpb25FagogX19aTks3V2ViQ29yZTEwTGF5b3V0UmVjdDhj
b250YWluc0VSS1MwXwogX19aTks3V2ViQ29yZTEwUGx1Z2luRGF0YTE2c3VwcG9ydHNNaW1lVHlw
ZUVSS04zV1RGNlN0cmluZ0VOUzBfMThBbGxvd2VkUGx1Z2luVHlwZXNFCiBfX1pOSzdXZWJDb3Jl
MTBSZW5kZXJUZXh0MTZmaXJzdFJ1bkxvY2F0aW9uRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRHbHlwaHMuY3BwCShyZXZpc2lvbiAxNzcyMjMpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIEZvbnRHbHlwaHM6OnJlbGVhc2VGb250RGF0
YSgpCiAgICAgfQogfQogCi12b2lkIEZvbnRHbHlwaHM6OmRldGVybWluZVBpdGNoKGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pIGNvbnN0Cit2b2lkIEZvbnRHbHlwaHM6OmRldGVy
bWluZVBpdGNoKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCiB7CiAgICAgY29u
c3QgRm9udERhdGEqIGZvbnREYXRhID0gcHJpbWFyeUZvbnREYXRhKGRlc2NyaXB0aW9uKTsKICAg
ICBpZiAoaXM8U2ltcGxlRm9udERhdGE+KCpmb250RGF0YSkpCkBAIC04OSw3ICs4OSw3IEBAIHZv
aWQgRm9udEdseXBoczo6ZGV0ZXJtaW5lUGl0Y2goY29uc3QgRm8KICAgICB9CiB9CiAKLWNvbnN0
IEZvbnREYXRhKiBGb250R2x5cGhzOjpyZWFsaXplRm9udERhdGFBdChjb25zdCBGb250RGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uLCB1bnNpZ25lZCByZWFsaXplZEZvbnRJbmRleCkgY29uc3QKK2Nv
bnN0IEZvbnREYXRhKiBGb250R2x5cGhzOjpyZWFsaXplRm9udERhdGFBdChjb25zdCBGb250RGVz
Y3JpcHRpb24mIGRlc2NyaXB0aW9uLCB1bnNpZ25lZCByZWFsaXplZEZvbnRJbmRleCkKIHsKICAg
ICBpZiAocmVhbGl6ZWRGb250SW5kZXggPCBtX3JlYWxpemVkRm9udERhdGEuc2l6ZSgpKQogICAg
ICAgICByZXR1cm4gbV9yZWFsaXplZEZvbnREYXRhW3JlYWxpemVkRm9udEluZGV4XS5nZXQoKTsg
Ly8gVGhpcyBmYWxsYmFjayBmb250IGlzIGFscmVhZHkgaW4gb3VyIGxpc3QuCkBAIC0yNTYsMTE1
ICsyNTYsMTAgQEAgc3RhdGljIGlubGluZSBzdGQ6OnBhaXI8R2x5cGhEYXRhLCBHbHlwaAogICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihkYXRhLCBwYWdlKTsKIH0KIAotc3RkOjpwYWlyPEdseXBo
RGF0YSwgR2x5cGhQYWdlKj4gRm9udEdseXBoczo6Z2x5cGhEYXRhQW5kUGFnZUZvckNoYXJhY3Rl
cihjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBVQ2hhcjMyIGMsIGJvb2wgbWly
cm9yLCBGb250RGF0YVZhcmlhbnQgdmFyaWFudCkgY29uc3QKK3N0ZDo6cGFpcjxHbHlwaERhdGEs
IEdseXBoUGFnZSo+IEZvbnRHbHlwaHM6OmdseXBoRGF0YUFuZFBhZ2VGb3JTeXN0ZW1GYWxsYmFj
ayhVQ2hhcjMyIGMsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIEZvbnREYXRh
VmFyaWFudCB2YXJpYW50LCB1bnNpZ25lZCBwYWdlTnVtYmVyLCBHbHlwaFBhZ2VUcmVlTm9kZSYg
bm9kZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgaWYgKHZhcmlhbnQg
PT0gQXV0b1ZhcmlhbnQpIHsKLSAgICAgICAgaWYgKGRlc2NyaXB0aW9uLnNtYWxsQ2FwcygpICYm
ICFwcmltYXJ5U2ltcGxlRm9udERhdGEoZGVzY3JpcHRpb24pLT5pc1NWR0ZvbnQoKSkgewotICAg
ICAgICAgICAgVUNoYXIzMiB1cHBlckMgPSB1X3RvdXBwZXIoYyk7Ci0gICAgICAgICAgICBpZiAo
dXBwZXJDICE9IGMpIHsKLSAgICAgICAgICAgICAgICBjID0gdXBwZXJDOwotICAgICAgICAgICAg
ICAgIHZhcmlhbnQgPSBTbWFsbENhcHNWYXJpYW50OwotICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgdmFyaWFudCA9IE5vcm1hbFZhcmlhbnQ7Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgdmFyaWFudCA9IE5vcm1hbFZhcmlhbnQ7Ci0gICAgfQotCi0gICAgaWYgKG1pcnJv
cikKLSAgICAgICAgYyA9IHVfY2hhck1pcnJvcihjKTsKLQotICAgIHVuc2lnbmVkIHBhZ2VOdW1i
ZXIgPSAoYyAvIEdseXBoUGFnZTo6c2l6ZSk7Ci0KLSAgICBHbHlwaFBhZ2VUcmVlTm9kZSogbm9k
ZSA9IHBhZ2VOdW1iZXIgPyBtX3BhZ2VzLmdldChwYWdlTnVtYmVyKSA6IG1fcGFnZVplcm87Ci0g
ICAgaWYgKCFub2RlKSB7Ci0gICAgICAgIG5vZGUgPSBHbHlwaFBhZ2VUcmVlTm9kZTo6Z2V0Um9v
dENoaWxkKHJlYWxpemVGb250RGF0YUF0KGRlc2NyaXB0aW9uLCAwKSwgcGFnZU51bWJlcik7Ci0g
ICAgICAgIGlmIChwYWdlTnVtYmVyKQotICAgICAgICAgICAgbV9wYWdlcy5zZXQocGFnZU51bWJl
ciwgbm9kZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcGFnZVplcm8gPSBub2RlOwot
ICAgIH0KLQotICAgIEdseXBoUGFnZSogcGFnZSA9IDA7Ci0gICAgaWYgKHZhcmlhbnQgPT0gTm9y
bWFsVmFyaWFudCkgewotICAgICAgICAvLyBGYXN0ZXN0IGxvb3AsIGZvciB0aGUgY29tbW9uIGNh
c2UgKG5vcm1hbCB2YXJpYW50KS4KLSAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAg
IHBhZ2UgPSBub2RlLT5wYWdlKCk7Ci0gICAgICAgICAgICBpZiAocGFnZSkgewotICAgICAgICAg
ICAgICAgIEdseXBoRGF0YSBkYXRhID0gcGFnZS0+Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGMpOwot
ICAgICAgICAgICAgICAgIGlmIChkYXRhLmZvbnREYXRhICYmIChkYXRhLmZvbnREYXRhLT5wbGF0
Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpID09IEhvcml6b250YWwgfHwgZGF0YS5mb250RGF0YS0+
aXNUZXh0T3JpZW50YXRpb25GYWxsYmFjaygpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV9wYWlyKGRhdGEsIHBhZ2UpOwotCi0gICAgICAgICAgICAgICAgaWYgKGRhdGEu
Zm9udERhdGEpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKEZvbnQ6OmlzQ0pLSWRlb2dyYXBo
T3JTeW1ib2woYykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGF0YS5mb250RGF0
YS0+aGFzVmVydGljYWxHbHlwaHMoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFVzZSB0aGUgYnJva2VuIGlkZW9ncmFwaCBmb250IGRhdGEuIFRoZSBicm9rZW4gaWRlb2dyYXBo
IGZvbnQgd2lsbCB1c2UgdGhlIGhvcml6b250YWwgd2lkdGggb2YgZ2x5cGhzCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gdG8gbWFrZSBzdXJlIHlvdSBnZXQgYSBzcXVhcmUgKGV2ZW4g
Zm9yIGJyb2tlbiBnbHlwaHMgbGlrZSBzeW1ib2xzIHVzZWQgZm9yIHB1bmN0dWF0aW9uKS4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50ID0gQnJva2VuSWRlb2dyYXBoVmFyaWFu
dDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGRhdGEuZm9udERhdGEtPnBsYXRmb3JtRGF0YSgpLnN5bnRoZXRpY09ibGlxdWUoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2x5cGhEYXRhQW5kUGFnZUZvckNK
S0NoYXJhY3RlcldpdGhvdXRTeW50aGV0aWNJdGFsaWMoYywgZGF0YSwgcGFnZSwgcGFnZU51bWJl
cik7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZ2x5cGhEYXRhQW5kUGFnZUZvck5vbkNKS0NoYXJhY3RlcldpdGhHbHlw
aE9yaWVudGF0aW9uKGMsIGRlc2NyaXB0aW9uLm5vbkNKS0dseXBoT3JpZW50YXRpb24oKSwgZGF0
YSwgcGFnZSwgcGFnZU51bWJlcik7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV9wYWlyKGRhdGEsIHBhZ2UpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5pc1N5c3RlbUZhbGxiYWNrKCkpCi0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBub2RlID0gbm9kZS0+Z2V0Q2hpbGQo
cmVhbGl6ZUZvbnREYXRhQXQoZGVzY3JpcHRpb24sIG5vZGUtPmxldmVsKCkpLCBwYWdlTnVtYmVy
KTsKLSAgICAgICAgICAgIGlmIChwYWdlTnVtYmVyKQotICAgICAgICAgICAgICAgIG1fcGFnZXMu
c2V0KHBhZ2VOdW1iZXIsIG5vZGUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IG1fcGFnZVplcm8gPSBub2RlOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmICh2YXJpYW50ICE9
IE5vcm1hbFZhcmlhbnQpIHsKLSAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIHBh
Z2UgPSBub2RlLT5wYWdlKCk7Ci0gICAgICAgICAgICBpZiAocGFnZSkgewotICAgICAgICAgICAg
ICAgIEdseXBoRGF0YSBkYXRhID0gcGFnZS0+Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGMpOwotICAg
ICAgICAgICAgICAgIGlmIChkYXRhLmZvbnREYXRhKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8v
IFRoZSB2YXJpYW50Rm9udERhdGEgZnVuY3Rpb24gc2hvdWxkIG5vdCBub3JtYWxseSByZXR1cm4g
MC4KLSAgICAgICAgICAgICAgICAgICAgLy8gQnV0IGlmIGl0IGRvZXMsIHdlIHdpbGwganVzdCBy
ZW5kZXIgdGhlIGNhcGl0YWwgbGV0dGVyIGJpZy4KLSAgICAgICAgICAgICAgICAgICAgUmVmUHRy
PFNpbXBsZUZvbnREYXRhPiB2YXJpYW50Rm9udERhdGEgPSBkYXRhLmZvbnREYXRhLT52YXJpYW50
Rm9udERhdGEoZGVzY3JpcHRpb24sIHZhcmlhbnQpOwotICAgICAgICAgICAgICAgICAgICBpZiAo
IXZhcmlhbnRGb250RGF0YSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfcGFpcihkYXRhLCBwYWdlKTsKLQotICAgICAgICAgICAgICAgICAgICBHbHlwaFBhZ2VUcmVl
Tm9kZSogdmFyaWFudE5vZGUgPSBHbHlwaFBhZ2VUcmVlTm9kZTo6Z2V0Um9vdENoaWxkKHZhcmlh
bnRGb250RGF0YS5nZXQoKSwgcGFnZU51bWJlcik7Ci0gICAgICAgICAgICAgICAgICAgIEdseXBo
UGFnZSogdmFyaWFudFBhZ2UgPSB2YXJpYW50Tm9kZS0+cGFnZSgpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAodmFyaWFudFBhZ2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEdseXBoRGF0
YSBkYXRhID0gdmFyaWFudFBhZ2UtPmdseXBoRGF0YUZvckNoYXJhY3RlcihjKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChkYXRhLmZvbnREYXRhKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihkYXRhLCB2YXJpYW50UGFnZSk7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAvLyBEbyBub3QgYXR0ZW1wdCBz
eXN0ZW0gZmFsbGJhY2sgb2ZmIHRoZSB2YXJpYW50Rm9udERhdGEuIFRoaXMgaXMgdGhlIHZlcnkg
dW5saWtlbHkgY2FzZSB0aGF0Ci0gICAgICAgICAgICAgICAgICAgIC8vIGEgZm9udCBoYXMgdGhl
IGxvd2VyY2FzZSBjaGFyYWN0ZXIgYnV0IHRoZSBzbWFsbCBjYXBzIGZvbnQgZG9lcyBub3QgaGF2
ZSBpdHMgdXBwZXJjYXNlIHZlcnNpb24uCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfcGFpcih2YXJpYW50Rm9udERhdGEtPm1pc3NpbmdHbHlwaERhdGEoKSwgcGFnZSk7Ci0g
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmlzU3lzdGVtRmFs
bGJhY2soKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIG5vZGUgPSBub2RlLT5nZXRDaGlsZChyZWFsaXplRm9udERhdGFBdChkZXNjcmlw
dGlvbiwgbm9kZS0+bGV2ZWwoKSksIHBhZ2VOdW1iZXIpOwotICAgICAgICAgICAgaWYgKHBhZ2VO
dW1iZXIpCi0gICAgICAgICAgICAgICAgbV9wYWdlcy5zZXQocGFnZU51bWJlciwgbm9kZSk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9wYWdlWmVybyA9IG5vZGU7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBBU1NFUlQocGFnZSk7Ci0gICAgQVNTRVJUKG5vZGUtPmlzU3lz
dGVtRmFsbGJhY2soKSk7Ci0KKyAgICBBU1NFUlQobm9kZS5wYWdlKCkpOworICAgIEFTU0VSVChu
b2RlLmlzU3lzdGVtRmFsbGJhY2soKSk7CiAgICAgLy8gU3lzdGVtIGZhbGxiYWNrIGlzIGNoYXJh
Y3Rlci1kZXBlbmRlbnQuIFdoZW4gd2UgZ2V0IGhlcmUsIHdlCiAgICAgLy8ga25vdyB0aGF0IHRo
ZSBjaGFyYWN0ZXIgaW4gcXVlc3Rpb24gaXNuJ3QgaW4gdGhlIHN5c3RlbSBmYWxsYmFjawogICAg
IC8vIGZvbnQncyBnbHlwaCBwYWdlLiBUcnkgdG8gbGF6aWx5IGNyZWF0ZSBpdCBoZXJlLgpAQCAt
MzkyLDIzICsyODcsMTEyIEBAIHN0ZDo6cGFpcjxHbHlwaERhdGEsIEdseXBoUGFnZSo+IEZvbnRH
bHkKICAgICAgICAgR2x5cGhEYXRhIGRhdGEgPSBmYWxsYmFja1BhZ2UgJiYgZmFsbGJhY2tQYWdl
LT5mb250RGF0YUZvckNoYXJhY3RlcihjKSA/IGZhbGxiYWNrUGFnZS0+Z2x5cGhEYXRhRm9yQ2hh
cmFjdGVyKGMpIDogY2hhcmFjdGVyRm9udERhdGEtPm1pc3NpbmdHbHlwaERhdGEoKTsKICAgICAg
ICAgLy8gQ2FjaGUgaXQgc28gd2UgZG9uJ3QgaGF2ZSB0byBkbyBzeXN0ZW0gZmFsbGJhY2sgYWdh
aW4gbmV4dCB0aW1lLgogICAgICAgICBpZiAodmFyaWFudCA9PSBOb3JtYWxWYXJpYW50KSB7Ci0g
ICAgICAgICAgICBwYWdlLT5zZXRHbHlwaERhdGFGb3JDaGFyYWN0ZXIoYywgZGF0YS5nbHlwaCwg
ZGF0YS5mb250RGF0YSk7Ci0gICAgICAgICAgICBkYXRhLmZvbnREYXRhLT5zZXRNYXhHbHlwaFBh
Z2VUcmVlTGV2ZWwoc3RkOjptYXgoZGF0YS5mb250RGF0YS0+bWF4R2x5cGhQYWdlVHJlZUxldmVs
KCksIG5vZGUtPmxldmVsKCkpKTsKKyAgICAgICAgICAgIG5vZGUucGFnZSgpLT5zZXRHbHlwaERh
dGFGb3JDaGFyYWN0ZXIoYywgZGF0YS5nbHlwaCwgZGF0YS5mb250RGF0YSk7CisgICAgICAgICAg
ICBkYXRhLmZvbnREYXRhLT5zZXRNYXhHbHlwaFBhZ2VUcmVlTGV2ZWwoc3RkOjptYXgoZGF0YS5m
b250RGF0YS0+bWF4R2x5cGhQYWdlVHJlZUxldmVsKCksIG5vZGUubGV2ZWwoKSkpOwogICAgICAg
ICAgICAgaWYgKCFGb250Ojppc0NKS0lkZW9ncmFwaE9yU3ltYm9sKGMpICYmIGRhdGEuZm9udERh
dGEtPnBsYXRmb3JtRGF0YSgpLm9yaWVudGF0aW9uKCkgIT0gSG9yaXpvbnRhbCAmJiAhZGF0YS5m
b250RGF0YS0+aXNUZXh0T3JpZW50YXRpb25GYWxsYmFjaygpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBnbHlwaERhdGFBbmRQYWdlRm9yTm9uQ0pLQ2hhcmFjdGVyV2l0aEdseXBoT3JpZW50YXRp
b24oYywgZGVzY3JpcHRpb24ubm9uQ0pLR2x5cGhPcmllbnRhdGlvbigpLCBkYXRhLCBmYWxsYmFj
a1BhZ2UsIHBhZ2VOdW1iZXIpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihkYXRhLCBwYWdlKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGRhdGEsIG5v
ZGUucGFnZSgpKTsKICAgICB9CiAKICAgICAvLyBFdmVuIHN5c3RlbSBmYWxsYmFjayBjYW4gZmFp
bDsgdXNlIHRoZSBtaXNzaW5nIGdseXBoIGluIHRoYXQgY2FzZS4KICAgICAvLyBGSVhNRTogSXQg
d291bGQgYmUgbmljZXIgdG8gdXNlIHRoZSBtaXNzaW5nIGdseXBoIGZyb20gdGhlIGxhc3QgcmVz
b3J0IGZvbnQgaW5zdGVhZC4KICAgICBHbHlwaERhdGEgZGF0YSA9IHByaW1hcnlTaW1wbGVGb250
RGF0YShkZXNjcmlwdGlvbiktPm1pc3NpbmdHbHlwaERhdGEoKTsKICAgICBpZiAodmFyaWFudCA9
PSBOb3JtYWxWYXJpYW50KSB7Ci0gICAgICAgIHBhZ2UtPnNldEdseXBoRGF0YUZvckNoYXJhY3Rl
cihjLCBkYXRhLmdseXBoLCBkYXRhLmZvbnREYXRhKTsKLSAgICAgICAgZGF0YS5mb250RGF0YS0+
c2V0TWF4R2x5cGhQYWdlVHJlZUxldmVsKHN0ZDo6bWF4KGRhdGEuZm9udERhdGEtPm1heEdseXBo
UGFnZVRyZWVMZXZlbCgpLCBub2RlLT5sZXZlbCgpKSk7CisgICAgICAgIG5vZGUucGFnZSgpLT5z
ZXRHbHlwaERhdGFGb3JDaGFyYWN0ZXIoYywgZGF0YS5nbHlwaCwgZGF0YS5mb250RGF0YSk7Cisg
ICAgICAgIGRhdGEuZm9udERhdGEtPnNldE1heEdseXBoUGFnZVRyZWVMZXZlbChzdGQ6Om1heChk
YXRhLmZvbnREYXRhLT5tYXhHbHlwaFBhZ2VUcmVlTGV2ZWwoKSwgbm9kZS5sZXZlbCgpKSk7CiAg
ICAgfQotICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihkYXRhLCBwYWdlKTsKKyAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIoZGF0YSwgbm9kZS5wYWdlKCkpOwogfQogCitzdGQ6OnBhaXI8R2x5cGhE
YXRhLCBHbHlwaFBhZ2UqPiBGb250R2x5cGhzOjpnbHlwaERhdGFBbmRQYWdlRm9yVmFyaWFudChV
Q2hhcjMyIGMsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIEZvbnREYXRhVmFy
aWFudCB2YXJpYW50LCB1bnNpZ25lZCBwYWdlTnVtYmVyLCBHbHlwaFBhZ2VUcmVlTm9kZSomIG5v
ZGUpCit7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKEdseXBoUGFnZSogcGFnZSA9
IG5vZGUtPnBhZ2UoKSkgeworICAgICAgICAgICAgR2x5cGhEYXRhIGRhdGEgPSBwYWdlLT5nbHlw
aERhdGFGb3JDaGFyYWN0ZXIoYyk7CisgICAgICAgICAgICBpZiAoZGF0YS5mb250RGF0YSkgewor
ICAgICAgICAgICAgICAgIC8vIFRoZSB2YXJpYW50Rm9udERhdGEgZnVuY3Rpb24gc2hvdWxkIG5v
dCBub3JtYWxseSByZXR1cm4gMC4KKyAgICAgICAgICAgICAgICAvLyBCdXQgaWYgaXQgZG9lcywg
d2Ugd2lsbCBqdXN0IHJlbmRlciB0aGUgY2FwaXRhbCBsZXR0ZXIgYmlnLgorICAgICAgICAgICAg
ICAgIFJlZlB0cjxTaW1wbGVGb250RGF0YT4gdmFyaWFudEZvbnREYXRhID0gZGF0YS5mb250RGF0
YS0+dmFyaWFudEZvbnREYXRhKGRlc2NyaXB0aW9uLCB2YXJpYW50KTsKKyAgICAgICAgICAgICAg
ICBpZiAoIXZhcmlhbnRGb250RGF0YSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV9wYWlyKGRhdGEsIHBhZ2UpOworCisgICAgICAgICAgICAgICAgR2x5cGhQYWdlVHJlZU5v
ZGUqIHZhcmlhbnROb2RlID0gR2x5cGhQYWdlVHJlZU5vZGU6OmdldFJvb3RDaGlsZCh2YXJpYW50
Rm9udERhdGEuZ2V0KCksIHBhZ2VOdW1iZXIpOworICAgICAgICAgICAgICAgIEdseXBoUGFnZSog
dmFyaWFudFBhZ2UgPSB2YXJpYW50Tm9kZS0+cGFnZSgpOworICAgICAgICAgICAgICAgIGlmICh2
YXJpYW50UGFnZSkgeworICAgICAgICAgICAgICAgICAgICBHbHlwaERhdGEgZGF0YSA9IHZhcmlh
bnRQYWdlLT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIoYyk7CisgICAgICAgICAgICAgICAgICAgIGlm
IChkYXRhLmZvbnREYXRhKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKGRhdGEsIHZhcmlhbnRQYWdlKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICAvLyBEbyBub3QgYXR0ZW1wdCBzeXN0ZW0gZmFsbGJhY2sgb2ZmIHRoZSB2YXJpYW50
Rm9udERhdGEuIFRoaXMgaXMgdGhlIHZlcnkgdW5saWtlbHkgY2FzZSB0aGF0CisgICAgICAgICAg
ICAgICAgLy8gYSBmb250IGhhcyB0aGUgbG93ZXJjYXNlIGNoYXJhY3RlciBidXQgdGhlIHNtYWxs
IGNhcHMgZm9udCBkb2VzIG5vdCBoYXZlIGl0cyB1cHBlcmNhc2UgdmVyc2lvbi4KKyAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIodmFyaWFudEZvbnREYXRhLT5taXNzaW5nR2x5
cGhEYXRhKCksIHBhZ2UpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobm9kZS0+
aXNTeXN0ZW1GYWxsYmFjaygpKQorICAgICAgICAgICAgICAgIHJldHVybiBnbHlwaERhdGFBbmRQ
YWdlRm9yU3lzdGVtRmFsbGJhY2soYywgZGVzY3JpcHRpb24sIHZhcmlhbnQsIHBhZ2VOdW1iZXIs
ICpub2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIG5vZGUgPSBub2RlLT5nZXRDaGlsZChyZWFs
aXplRm9udERhdGFBdChkZXNjcmlwdGlvbiwgbm9kZS0+bGV2ZWwoKSksIHBhZ2VOdW1iZXIpOwor
ICAgIH0KK30KKworc3RkOjpwYWlyPEdseXBoRGF0YSwgR2x5cGhQYWdlKj4gRm9udEdseXBoczo6
Z2x5cGhEYXRhQW5kUGFnZUZvckNoYXJhY3Rlcihjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2Ny
aXB0aW9uLCBVQ2hhcjMyIGMsIGJvb2wgbWlycm9yLCBGb250RGF0YVZhcmlhbnQgdmFyaWFudCkK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKHZhcmlhbnQgPT0gQXV0
b1ZhcmlhbnQpIHsKKyAgICAgICAgaWYgKGRlc2NyaXB0aW9uLnNtYWxsQ2FwcygpICYmICFwcmlt
YXJ5U2ltcGxlRm9udERhdGEoZGVzY3JpcHRpb24pLT5pc1NWR0ZvbnQoKSkgeworICAgICAgICAg
ICAgVUNoYXIzMiB1cHBlckMgPSB1X3RvdXBwZXIoYyk7CisgICAgICAgICAgICBpZiAodXBwZXJD
ICE9IGMpIHsKKyAgICAgICAgICAgICAgICBjID0gdXBwZXJDOworICAgICAgICAgICAgICAgIHZh
cmlhbnQgPSBTbWFsbENhcHNWYXJpYW50OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgdmFyaWFudCA9IE5vcm1hbFZhcmlhbnQ7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgdmFyaWFudCA9IE5vcm1hbFZhcmlhbnQ7CisgICAgfQorCisgICAgaWYgKG1pcnJvcikKKyAg
ICAgICAgYyA9IHVfY2hhck1pcnJvcihjKTsKKworICAgIGNvbnN0IHVuc2lnbmVkIHBhZ2VOdW1i
ZXIgPSAoYyAvIEdseXBoUGFnZTo6c2l6ZSk7CisKKyAgICBHbHlwaFBhZ2VUcmVlTm9kZSomIG5v
ZGUgPSBwYWdlTnVtYmVyID8gbV9wYWdlcy5hZGQocGFnZU51bWJlciwgbnVsbHB0cikuaXRlcmF0
b3ItPnZhbHVlIDogbV9wYWdlWmVybzsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIG5vZGUgPSBH
bHlwaFBhZ2VUcmVlTm9kZTo6Z2V0Um9vdENoaWxkKHJlYWxpemVGb250RGF0YUF0KGRlc2NyaXB0
aW9uLCAwKSwgcGFnZU51bWJlcik7CisKKyAgICBpZiAodmFyaWFudCAhPSBOb3JtYWxWYXJpYW50
KQorICAgICAgICByZXR1cm4gZ2x5cGhEYXRhQW5kUGFnZUZvclZhcmlhbnQoYywgZGVzY3JpcHRp
b24sIHZhcmlhbnQsIHBhZ2VOdW1iZXIsIG5vZGUpOworCisgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgaWYgKEdseXBoUGFnZSogcGFnZSA9IG5vZGUtPnBhZ2UoKSkgeworICAgICAgICAgICAg
R2x5cGhEYXRhIGRhdGEgPSBwYWdlLT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIoYyk7CisgICAgICAg
ICAgICBpZiAoZGF0YS5mb250RGF0YSkgeworICAgICAgICAgICAgICAgIGlmIChkYXRhLmZvbnRE
YXRhLT5wbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpID09IEhvcml6b250YWwgfHwgZGF0YS5m
b250RGF0YS0+aXNUZXh0T3JpZW50YXRpb25GYWxsYmFjaygpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3BhaXIoZGF0YSwgcGFnZSk7CisgICAgICAgICAgICAgICAgaWYg
KEZvbnQ6OmlzQ0pLSWRlb2dyYXBoT3JTeW1ib2woYykpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFkYXRhLmZvbnREYXRhLT5oYXNWZXJ0aWNhbEdseXBocygpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBVc2UgdGhlIGJyb2tlbiBpZGVvZ3JhcGggZm9udCBkYXRhLiBUaGUgYnJv
a2VuIGlkZW9ncmFwaCBmb250IHdpbGwgdXNlIHRoZSBob3Jpem9udGFsIHdpZHRoIG9mIGdseXBo
cworICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gbWFrZSBzdXJlIHlvdSBnZXQgYSBzcXVh
cmUgKGV2ZW4gZm9yIGJyb2tlbiBnbHlwaHMgbGlrZSBzeW1ib2xzIHVzZWQgZm9yIHB1bmN0dWF0
aW9uKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbHlwaERhdGFBbmRQYWdlRm9y
VmFyaWFudChjLCBkZXNjcmlwdGlvbiwgQnJva2VuSWRlb2dyYXBoVmFyaWFudCwgcGFnZU51bWJl
ciwgbm9kZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZm9udERhdGEtPnBsYXRmb3JtRGF0YSgpLnN5bnRo
ZXRpY09ibGlxdWUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbHlwaERhdGFB
bmRQYWdlRm9yQ0pLQ2hhcmFjdGVyV2l0aG91dFN5bnRoZXRpY0l0YWxpYyhjLCBkYXRhLCBwYWdl
LCBwYWdlTnVtYmVyKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3BhaXIoZGF0YSwgcGFnZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHJldHVybiBnbHlwaERhdGFBbmRQYWdlRm9yTm9uQ0pLQ2hhcmFjdGVyV2l0aEdseXBoT3JpZW50
YXRpb24oYywgZGVzY3JpcHRpb24ubm9uQ0pLR2x5cGhPcmllbnRhdGlvbigpLCBkYXRhLCBwYWdl
LCBwYWdlTnVtYmVyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG5vZGUtPmlz
U3lzdGVtRmFsbGJhY2soKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2x5cGhEYXRhQW5kUGFn
ZUZvclN5c3RlbUZhbGxiYWNrKGMsIGRlc2NyaXB0aW9uLCB2YXJpYW50LCBwYWdlTnVtYmVyLCAq
bm9kZSk7CisgICAgICAgIH0KKworICAgICAgICBub2RlID0gbm9kZS0+Z2V0Q2hpbGQocmVhbGl6
ZUZvbnREYXRhQXQoZGVzY3JpcHRpb24sIG5vZGUtPmxldmVsKCkpLCBwYWdlTnVtYmVyKTsKKyAg
ICB9Cit9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRH
bHlwaHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250R2x5cGhzLmgJKHJldmlzaW9uIDE3NzIyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRHbHlwaHMuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNTIgKzc1LDU2IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgaXNGb3JQbGF0Zm9ybUZvbnQoKSBjb25zdCB7IHJldHVybiBt
X2lzRm9yUGxhdGZvcm1Gb250OyB9CiAKLSAgICBzdGQ6OnBhaXI8R2x5cGhEYXRhLCBHbHlwaFBh
Z2UqPiBnbHlwaERhdGFBbmRQYWdlRm9yQ2hhcmFjdGVyKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYs
IFVDaGFyMzIsIGJvb2wgbWlycm9yLCBGb250RGF0YVZhcmlhbnQpIGNvbnN0OwotICAgIAotICAg
IGJvb2wgaXNGaXhlZFBpdGNoKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYpIGNvbnN0OwotICAgIHZv
aWQgZGV0ZXJtaW5lUGl0Y2goY29uc3QgRm9udERlc2NyaXB0aW9uJikgY29uc3Q7CisgICAgc3Rk
OjpwYWlyPEdseXBoRGF0YSwgR2x5cGhQYWdlKj4gZ2x5cGhEYXRhQW5kUGFnZUZvckNoYXJhY3Rl
cihjb25zdCBGb250RGVzY3JpcHRpb24mLCBVQ2hhcjMyLCBib29sIG1pcnJvciwgRm9udERhdGFW
YXJpYW50KTsKKworICAgIGJvb2wgaXNGaXhlZFBpdGNoKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYp
OworICAgIHZvaWQgZGV0ZXJtaW5lUGl0Y2goY29uc3QgRm9udERlc2NyaXB0aW9uJik7CiAKICAg
ICBib29sIGxvYWRpbmdDdXN0b21Gb250cygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGluZ0N1c3Rv
bUZvbnRzOyB9CiAKLSAgICBGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1fZm9udFNlbGVjdG9yLmdldCgpOyB9CisgICAgRm9udFNlbGVjdG9yKiBmb250U2VsZWN0
b3IoKSB7IHJldHVybiBtX2ZvbnRTZWxlY3Rvci5nZXQoKTsgfQogICAgIC8vIEZJWE1FOiBJdCBz
aG91bGQgYmUgcG9zc2libGUgdG8gY29tYmluZSBmb250U2VsZWN0b3JWZXJzaW9uIGFuZCBnZW5l
cmF0aW9uLgogICAgIHVuc2lnbmVkIGZvbnRTZWxlY3RvclZlcnNpb24oKSBjb25zdCB7IHJldHVy
biBtX2ZvbnRTZWxlY3RvclZlcnNpb247IH0KICAgICB1bnNpZ25lZCBnZW5lcmF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9nZW5lcmF0aW9uOyB9CiAKLSAgICBXaWR0aENhY2hlJiB3aWR0aENhY2hl
KCkgY29uc3QgeyByZXR1cm4gbV93aWR0aENhY2hlOyB9CisgICAgV2lkdGhDYWNoZSYgd2lkdGhD
YWNoZSgpIHsgcmV0dXJuIG1fd2lkdGhDYWNoZTsgfQorICAgIGNvbnN0IFdpZHRoQ2FjaGUmIHdp
ZHRoQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoQ2FjaGU7IH0KIAotICAgIGNvbnN0IFNp
bXBsZUZvbnREYXRhKiBwcmltYXJ5U2ltcGxlRm9udERhdGEoY29uc3QgRm9udERlc2NyaXB0aW9u
JikgY29uc3Q7Ci0gICAgY29uc3QgRm9udERhdGEqIHByaW1hcnlGb250RGF0YShjb25zdCBGb250
RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKSBjb25zdCB7IHJldHVybiByZWFsaXplRm9udERhdGFB
dChkZXNjcmlwdGlvbiwgMCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250RGF0YSog
cmVhbGl6ZUZvbnREYXRhQXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgdW5zaWduZWQgaW5kZXgp
IGNvbnN0OworICAgIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBwcmltYXJ5U2ltcGxlRm9udERhdGEo
Y29uc3QgRm9udERlc2NyaXB0aW9uJik7CisgICAgY29uc3QgRm9udERhdGEqIHByaW1hcnlGb250
RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKSB7IHJldHVybiByZWFsaXpl
Rm9udERhdGFBdChkZXNjcmlwdGlvbiwgMCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBG
b250RGF0YSogcmVhbGl6ZUZvbnREYXRhQXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgdW5zaWdu
ZWQgaW5kZXgpOwogCiBwcml2YXRlOgogICAgIEZvbnRHbHlwaHMoUGFzc1JlZlB0cjxGb250U2Vs
ZWN0b3I+KTsKICAgICBGb250R2x5cGhzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKIAorICAg
IHN0ZDo6cGFpcjxHbHlwaERhdGEsIEdseXBoUGFnZSo+IGdseXBoRGF0YUFuZFBhZ2VGb3JTeXN0
ZW1GYWxsYmFjayhVQ2hhcjMyLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBGb250RGF0YVZhcmlh
bnQsIHVuc2lnbmVkIHBhZ2VOdW1iZXIsIEdseXBoUGFnZVRyZWVOb2RlJik7CisgICAgc3RkOjpw
YWlyPEdseXBoRGF0YSwgR2x5cGhQYWdlKj4gZ2x5cGhEYXRhQW5kUGFnZUZvclZhcmlhbnQoVUNo
YXIzMiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgRm9udERhdGFWYXJpYW50LCB1bnNpZ25lZCBw
YWdlTnVtYmVyLCBHbHlwaFBhZ2VUcmVlTm9kZSomKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVsZWFzZUZvbnREYXRhKCk7CiAgICAgCi0gICAgbXV0YWJsZSBWZWN0b3I8UmVmUHRyPEZv
bnREYXRhPiwgMT4gbV9yZWFsaXplZEZvbnREYXRhOwotICAgIG11dGFibGUgR2x5cGhQYWdlcyBt
X3BhZ2VzOwotICAgIG11dGFibGUgR2x5cGhQYWdlVHJlZU5vZGUqIG1fcGFnZVplcm87Ci0gICAg
bXV0YWJsZSBjb25zdCBTaW1wbGVGb250RGF0YSogbV9jYWNoZWRQcmltYXJ5U2ltcGxlRm9udERh
dGE7CisgICAgVmVjdG9yPFJlZlB0cjxGb250RGF0YT4sIDE+IG1fcmVhbGl6ZWRGb250RGF0YTsK
KyAgICBHbHlwaFBhZ2VzIG1fcGFnZXM7CisgICAgR2x5cGhQYWdlVHJlZU5vZGUqIG1fcGFnZVpl
cm87CisgICAgY29uc3QgU2ltcGxlRm9udERhdGEqIG1fY2FjaGVkUHJpbWFyeVNpbXBsZUZvbnRE
YXRhOwogICAgIFJlZlB0cjxGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOwotICAgIG11dGFi
bGUgV2lkdGhDYWNoZSBtX3dpZHRoQ2FjaGU7CisgICAgV2lkdGhDYWNoZSBtX3dpZHRoQ2FjaGU7
CiAgICAgdW5zaWduZWQgbV9mb250U2VsZWN0b3JWZXJzaW9uOwotICAgIG11dGFibGUgaW50IG1f
ZmFtaWx5SW5kZXg7CisgICAgaW50IG1fZmFtaWx5SW5kZXg7CiAgICAgdW5zaWduZWQgc2hvcnQg
bV9nZW5lcmF0aW9uOwotICAgIG11dGFibGUgdW5zaWduZWQgbV9waXRjaCA6IDM7IC8vIFBpdGNo
Ci0gICAgbXV0YWJsZSBib29sIG1fbG9hZGluZ0N1c3RvbUZvbnRzIDogMTsKLSAgICBib29sIG1f
aXNGb3JQbGF0Zm9ybUZvbnQgOiAxOworICAgIHVuc2lnbmVkIG1fcGl0Y2ggOiAzOyAvLyBQaXRj
aAorICAgIHVuc2lnbmVkIG1fbG9hZGluZ0N1c3RvbUZvbnRzIDogMTsKKyAgICB1bnNpZ25lZCBt
X2lzRm9yUGxhdGZvcm1Gb250IDogMTsKIH07CiAKLWlubGluZSBib29sIEZvbnRHbHlwaHM6Omlz
Rml4ZWRQaXRjaChjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKSBjb25zdAoraW5s
aW5lIGJvb2wgRm9udEdseXBoczo6aXNGaXhlZFBpdGNoKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYg
ZGVzY3JpcHRpb24pCiB7CiAgICAgaWYgKG1fcGl0Y2ggPT0gVW5rbm93blBpdGNoKQogICAgICAg
ICBkZXRlcm1pbmVQaXRjaChkZXNjcmlwdGlvbik7CiAgICAgcmV0dXJuIG1fcGl0Y2ggPT0gRml4
ZWRQaXRjaDsKIH07CiAKLWlubGluZSBjb25zdCBTaW1wbGVGb250RGF0YSogRm9udEdseXBoczo6
cHJpbWFyeVNpbXBsZUZvbnREYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24p
IGNvbnN0CitpbmxpbmUgY29uc3QgU2ltcGxlRm9udERhdGEqIEZvbnRHbHlwaHM6OnByaW1hcnlT
aW1wbGVGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKCFtX2NhY2hlZFByaW1hcnlTaW1wbGVG
b250RGF0YSkK
</data>
<flag name="review"
          id="268063"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>