<?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>184720</bug_id>
          
          <creation_ts>2018-04-17 17:27:50 -0700</creation_ts>
          <short_desc>Improve the performance of FontCascadeDescription&apos;s effectiveFamilies</short_desc>
          <delta_ts>2018-04-30 17:23:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1415383</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-04-17 17:27:50 -0700</bug_when>
    <thetext>Improve the performance of FontCascadeDescription&apos;s effectiveFamilies</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415384</commentid>
    <comment_count>1</comment_count>
      <attachid>338168</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-04-17 17:28:31 -0700</bug_when>
    <thetext>Created attachment 338168
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415385</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-04-17 17:29:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/38970927&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415515</commentid>
    <comment_count>3</comment_count>
      <attachid>338208</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-04-18 03:40:53 -0700</bug_when>
    <thetext>Created attachment 338208
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419159</commentid>
    <comment_count>4</comment_count>
      <attachid>339159</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-04-30 16:20:45 -0700</bug_when>
    <thetext>Created attachment 339159
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419166</commentid>
    <comment_count>5</comment_count>
      <attachid>339159</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-04-30 16:30:06 -0700</bug_when>
    <thetext>Comment on attachment 339159
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=339159&amp;action=review

&gt; Source/WebCore/ChangeLog:4
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=184720

Radar number.

&gt; Source/WebCore/ChangeLog:9
&gt; +        with roughly few number of individual fonts. It turns out we were calling into the system-ui

&quot;with roughly few number&quot; ?

&gt; Source/WebCore/ChangeLog:11
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=175845). These data URLS are never for the system font,

are never what?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419189</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-04-30 17:23:30 -0700</bug_when>
    <thetext>Committed r231187: &lt;https://trac.webkit.org/changeset/231187&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338168</attachid>
            <date>2018-04-17 17:28:31 -0700</date>
            <delta_ts>2018-04-18 03:40:52 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-184720-20180417172830.patch</filename>
            <type>text/plain</type>
            <size>11385</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQ5NTEyZTMyNjUyZDNj
YzA4NzhiYTM2YTczYmY3ODk3ZjRmZjMwNy4uMjE1NDJjM2Y2ZDYzY2UxNzA5YTQ3ZTIyYmIzOGUx
M2VlOGFkMGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4LTA0LTE3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wcm92ZSB0
aGUgcGVyZm9ybWFuY2Ugb2YgRm9udENhc2NhZGVEZXNjcmlwdGlvbidzIGVmZmVjdGl2ZUZhbWls
aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ3
MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNj
cmlwdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGVEZXNjcmlwdGlvbjo6c2V0
T25lRmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlRGVzY3JpcHRpb246OnNl
dEZhbWlsaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlRGVzY3JpcHRpb246Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRE
ZXNjcmlwdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFz
ZTo6Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFy
YW1ldGVyczo6aGFzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJh
c2U6OnN5c3RlbUZvbnRDYXNjYWRlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpzeXN0ZW1Gb250
UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZURlc2NyaXB0aW9uOjpl
bnN1cmVFZmZlY3RpdmVGYW1pbGllcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uOjplZmZlY3RpdmVGYW1pbHlDb3VudCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGb250Q2FzY2FkZURlc2NyaXB0aW9uOjplZmZlY3RpdmVGYW1pbHlBdCBjb25zdCk6
CisKIDIwMTgtMDQtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBSRUdSRVNTSU9OIChyMjI5ODMxKTogQ01ELWNsaWNraW5nIGFuIGlDbG91ZCB3ZWIgYXBwIGxp
bmsgdW5leHBlY3RlZGx5IG9wZW5zIHRoYXQgbGluayBpbiBhIG5ldyB0YWIgYW5kIHRoZSBjdXJy
ZW50IHRhYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dERlc2NyaXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVz
Y3JpcHRpb24uaAppbmRleCA5NmUyODZlMjcxYTAxMTUwMDJlYjJjNGY2ZTc1YmU4ODA2NjMzMGZk
Li4yNWU4MmJiMTE4NDg4NWRlZjA0ZDM0OGZjOWIwOGM2YjAyZjczOTY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaApAQCAtMjY0
LDkgKzI2NCwzMSBAQCBwdWJsaWM6CiAgICAgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290aGlu
ZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEZvbnRTbW9vdGhpbmdNb2RlPihtX2ZvbnRT
bW9vdGhpbmcpOyB9CiAgICAgYm9vbCBpc1NwZWNpZmllZEZvbnQoKSBjb25zdCB7IHJldHVybiBt
X2lzU3BlY2lmaWVkRm9udDsgfQogCi0gICAgdm9pZCBzZXRPbmVGYW1pbHkoY29uc3QgQXRvbWlj
U3RyaW5nJiBmYW1pbHkpIHsgQVNTRVJUKG1fZmFtaWxpZXMuc2l6ZSgpID09IDEpOyBtX2ZhbWls
aWVzWzBdID0gZmFtaWx5OyB9Ci0gICAgdm9pZCBzZXRGYW1pbGllcyhjb25zdCBWZWN0b3I8QXRv
bWljU3RyaW5nPiYgZmFtaWxpZXMpIHsgbV9mYW1pbGllcyA9IFJlZkNvdW50ZWRBcnJheTxBdG9t
aWNTdHJpbmc+KGZhbWlsaWVzKTsgfQotICAgIHZvaWQgc2V0RmFtaWxpZXMoY29uc3QgUmVmQ291
bnRlZEFycmF5PEF0b21pY1N0cmluZz4mIGZhbWlsaWVzKSB7IG1fZmFtaWxpZXMgPSBmYW1pbGll
czsgfQorICAgIHZvaWQgc2V0T25lRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZmFtaWxpZXMuc2l6ZSgpID09IDEpOworICAgICAgICBt
X2ZhbWlsaWVzWzBdID0gZmFtaWx5OworI2lmIFVTRV9QTEFURk9STV9TWVNURU1fRkFMTEJBQ0tf
TElTVAorICAgICAgICBtX2VmZmVjdGl2ZUZhbWlsaWVzLmNsZWFyKCk7CisjZW5kaWYKKyAgICB9
CisKKyAgICB2b2lkIHNldEZhbWlsaWVzKGNvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+JiBmYW1p
bGllcykKKyAgICB7CisgICAgICAgIG1fZmFtaWxpZXMgPSBSZWZDb3VudGVkQXJyYXk8QXRvbWlj
U3RyaW5nPihmYW1pbGllcyk7CisjaWYgVVNFX1BMQVRGT1JNX1NZU1RFTV9GQUxMQkFDS19MSVNU
CisgICAgICAgIG1fZWZmZWN0aXZlRmFtaWxpZXMuY2xlYXIoKTsKKyNlbmRpZgorICAgIH0KKwor
ICAgIHZvaWQgc2V0RmFtaWxpZXMoY29uc3QgUmVmQ291bnRlZEFycmF5PEF0b21pY1N0cmluZz4m
IGZhbWlsaWVzKQorICAgIHsKKyAgICAgICAgbV9mYW1pbGllcyA9IGZhbWlsaWVzOworI2lmIFVT
RV9QTEFURk9STV9TWVNURU1fRkFMTEJBQ0tfTElTVAorICAgICAgICBtX2VmZmVjdGl2ZUZhbWls
aWVzLmNsZWFyKCk7CisjZW5kaWYKKyAgICB9CisKICAgICB2b2lkIHNldFNwZWNpZmllZFNpemUo
ZmxvYXQgcykgeyBtX3NwZWNpZmllZFNpemUgPSBjbGFtcFRvRmxvYXQocyk7IH0KICAgICB2b2lk
IHNldElzQWJzb2x1dGVTaXplKGJvb2wgcykgeyBtX2lzQWJzb2x1dGVTaXplID0gczsgfQogICAg
IHZvaWQgc2V0S2VybmluZyhLZXJuaW5nIGtlcm5pbmcpIHsgbV9rZXJuaW5nID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGtlcm5pbmcpOyB9CkBAIC0zMTQsNyArMzM2LDEyIEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFsTG9jYWxlKCkgeyByZXR1cm4gbnVs
bEF0b20oKTsgfQogCiBwcml2YXRlOgorICAgIHZvaWQgZW5zdXJlRWZmZWN0aXZlRmFtaWxpZXMo
KSBjb25zdDsKKwogICAgIFJlZkNvdW50ZWRBcnJheTxBdG9taWNTdHJpbmc+IG1fZmFtaWxpZXMg
eyAxIH07CisjaWYgVVNFX1BMQVRGT1JNX1NZU1RFTV9GQUxMQkFDS19MSVNUCisgICAgbXV0YWJs
ZSBWZWN0b3I8Rm9udEZhbWlseVNwZWNpZmljYXRpb24+IG1fZWZmZWN0aXZlRmFtaWxpZXM7Cisj
ZW5kaWYKIAogICAgIGZsb2F0IG1fc3BlY2lmaWVkU2l6ZSB7IDAgfTsgICAvLyBTcGVjaWZpZWQg
Q1NTIHZhbHVlLiBJbmRlcGVuZGVudCBvZiByZW5kZXJpbmcgaXNzdWVzIHN1Y2ggYXMgaW50ZWdl
cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3VuZGluZywgbWluaW11bSBmb250
IHNpemVzLCBhbmQgem9vbWluZy4KQEAgLTM0MCw2ICszNjcsNyBAQCBpbmxpbmUgYm9vbCBGb250
Q2FzY2FkZURlc2NyaXB0aW9uOjpvcGVyYXRvcj09KGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24mIG90aAogICAgICAgICAmJiBtX2tleXdvcmRTaXplID09IG90aGVyLm1fa2V5d29yZFNpemUK
ICAgICAgICAgJiYgbV9mb250U21vb3RoaW5nID09IG90aGVyLm1fZm9udFNtb290aGluZwogICAg
ICAgICAmJiBtX2lzU3BlY2lmaWVkRm9udCA9PSBvdGhlci5tX2lzU3BlY2lmaWVkRm9udDsKKyAg
ICAvLyBEb24ndCBpbmNsdWRlIG1fZWZmZWN0aXZlRmFtaWxpZXMgYmVjYXVzZSBpdCBpcyBkZXJp
dmVkIGRhdGEuCiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAppbmRleCA0MmFm
YTQ4YzU1Y2VjOTFiZWMyOWRhMTYyNWI2M2NiMTQyNWQ0NGYzLi5jMmMwN2I4NjUyY2YxZjhjMTI1
YTMxNTk4NGZhYjFiNWIyNDI5YjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCkBA
IC02NCw3ICs2NCw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBmb250TmFtZSA9PSBv
dGhlci5mb250TmFtZQogICAgICAgICAgICAgICAgICYmIGxvY2FsZSA9PSBvdGhlci5sb2NhbGUK
ICAgICAgICAgICAgICAgICAmJiB3ZWlnaHQgPT0gb3RoZXIud2VpZ2h0Ci0gICAgICAgICAgICAg
ICAgJiYgc2l6ZSA9PSBvdGhlci5zaXplCiAgICAgICAgICAgICAgICAgJiYgYWxsb3dVc2VySW5z
dGFsbGVkRm9udHMgPT0gb3RoZXIuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMKICAgICAgICAgICAg
ICAgICAmJiBpdGFsaWMgPT0gb3RoZXIuaXRhbGljOwogICAgICAgICB9CkBAIC03Niw3ICs3NSw2
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGhhc2hlci5hZGQobG9jYWxlLmV4aXN0aW5nSGFzaCgp
KTsKICAgICAgICAgICAgIGhhc2hlci5hZGQobG9jYWxlLmlzTnVsbCgpID8gMCA6IGxvY2FsZS5l
eGlzdGluZ0hhc2goKSk7CiAgICAgICAgICAgICBoYXNoZXIuYWRkKHdlaWdodCk7Ci0gICAgICAg
ICAgICBoYXNoZXIuYWRkKHNpemUpOwogICAgICAgICAgICAgaGFzaGVyLmFkZChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpKTsKICAgICAgICAgICAgIGhhc2hl
ci5hZGQoaXRhbGljKTsKICAgICAgICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOwpAQCAtOTcs
NyArOTUsNiBAQCBwdWJsaWM6CiAgICAgICAgIEF0b21pY1N0cmluZyBmb250TmFtZTsKICAgICAg
ICAgQXRvbWljU3RyaW5nIGxvY2FsZTsKICAgICAgICAgQ0dGbG9hdCB3ZWlnaHQgeyAwIH07Ci0g
ICAgICAgIGZsb2F0IHNpemUgeyAwIH07CiAgICAgICAgIEFsbG93VXNlckluc3RhbGxlZEZvbnRz
IGFsbG93VXNlckluc3RhbGxlZEZvbnRzIHsgQWxsb3dVc2VySW5zdGFsbGVkRm9udHM6Ok5vIH07
CiAgICAgICAgIGJvb2wgaXRhbGljIHsgZmFsc2UgfTsKICAgICB9OwpAQCAtMTE2LDExICsxMTMs
MTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zeXN0ZW1Gb250Q2FjaGUuZW5zdXJlKHBh
cmFtZXRlcnMsIFsmXSB7CiAgICAgICAgICAgICBhdXRvIGxvY2FsZVN0cmluZyA9IHBhcmFtZXRl
cnMubG9jYWxlLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAgICAgICBSZXRhaW5Q
dHI8Q1RGb250UmVmPiBzeXN0ZW1Gb250OworICAgICAgICAgICAgLy8gV2UgY2FuIHBhc3MgYSBi
b2d1cyBzaXplIGJlY2F1c2UgaXQgd2lsbCBhbHdheXMgYmUgb3ZlcnJpZGRlbiBieSBGb250RmFt
aWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Ojpmb250UmFuZ2VzKCkuCisgICAgICAgICAgICAvLyBN
YWtpbmcgdGhlIGNhY2hlIGluc2Vuc2l0aXZlIHRvIGZvbnQgc2l6ZSBtZWFucyB3ZSBjYW4gZ2V0
IGEgaGlnaGVyIGhpdCByYXRlLgorICAgICAgICAgICAgZmxvYXQgc2l6ZSA9IDA7CiAgICAgICAg
ICAgICBpZiAoY2xpZW50VXNlID09IENsaWVudFVzZTo6Rm9yU3lzdGVtVUkpIHsKLSAgICAgICAg
ICAgICAgICBzeXN0ZW1Gb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVVSUZvbnRGb3JMYW5ndWFn
ZShrQ1RGb250VUlGb250U3lzdGVtLCBwYXJhbWV0ZXJzLnNpemUsIGxvY2FsZVN0cmluZy5nZXQo
KSkpOworICAgICAgICAgICAgICAgIHN5c3RlbUZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVVJ
Rm9udEZvckxhbmd1YWdlKGtDVEZvbnRVSUZvbnRTeXN0ZW0sIDAsIGxvY2FsZVN0cmluZy5nZXQo
KSkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChzeXN0ZW1Gb250KTsKICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogVXNlIGFwcGx5V2VpZ2h0SXRhbGljc0FuZEZhbGxiYWNrQmVoYXZpb3IoKSBp
biBib3RoIGNhc2VzIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMzMDQ2MDQxPiBpcyBmaXhlZC4KLSAg
ICAgICAgICAgICAgICBzeXN0ZW1Gb250ID0gYXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tC
ZWhhdmlvcihzeXN0ZW1Gb250LmdldCgpLCBwYXJhbWV0ZXJzLndlaWdodCwgcGFyYW1ldGVycy5p
dGFsaWMsIHBhcmFtZXRlcnMuc2l6ZSwgcGFyYW1ldGVycy5hbGxvd1VzZXJJbnN0YWxsZWRGb250
cyk7CisgICAgICAgICAgICAgICAgc3lzdGVtRm9udCA9IGFwcGx5V2VpZ2h0SXRhbGljc0FuZEZh
bGxiYWNrQmVoYXZpb3Ioc3lzdGVtRm9udC5nZXQoKSwgcGFyYW1ldGVycy53ZWlnaHQsIHBhcmFt
ZXRlcnMuaXRhbGljLCBzaXplLCBwYXJhbWV0ZXJzLmFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgICAgICAgICAgICAg
IEFTU0VSVChjbGllbnRVc2UgPT0gQ2xpZW50VXNlOjpGb3JUZXh0U3R5bGUpOwpAQCAtMTI4LDcg
KzEyOCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBDVEZvbnRTeW1ib2xpY1RyYWl0cyB0
cmFpdHMgPSAocGFyYW1ldGVycy53ZWlnaHQgPj0ga0NURm9udFdlaWdodFNlbWlib2xkID8ga0NU
Rm9udFRyYWl0Qm9sZCA6IDApIHwgKHBhcmFtZXRlcnMuaXRhbGljID8ga0NURm9udFRyYWl0SXRh
bGljIDogMCk7CiAgICAgICAgICAgICAgICAgaWYgKHRyYWl0cykKICAgICAgICAgICAgICAgICAg
ICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0
aFN5bWJvbGljVHJhaXRzKGZvbnREZXNjcmlwdG9yLmdldCgpLCB0cmFpdHMsIHRyYWl0cykpOwot
ICAgICAgICAgICAgICAgIHN5c3RlbUZvbnQgPSBjcmVhdGVGb250Rm9ySW5zdGFsbGVkRm9udHMo
Zm9udERlc2NyaXB0b3IuZ2V0KCksIHBhcmFtZXRlcnMuc2l6ZSwgcGFyYW1ldGVycy5hbGxvd1Vz
ZXJJbnN0YWxsZWRGb250cyk7CisgICAgICAgICAgICAgICAgc3lzdGVtRm9udCA9IGNyZWF0ZUZv
bnRGb3JJbnN0YWxsZWRGb250cyhmb250RGVzY3JpcHRvci5nZXQoKSwgc2l6ZSwgcGFyYW1ldGVy
cy5hbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7CiAjZWxzZQogICAgICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCkBAIC0yNDgsNyArMjQ4LDYgQEAgc3RhdGljIGlubGlu
ZSBTeXN0ZW1Gb250RGF0YWJhc2U6OkNvcmVUZXh0Q2FzY2FkZUxpc3RQYXJhbWV0ZXJzIHN5c3Rl
bUZvbnRQYXJhbWUKIHsKICAgICBTeXN0ZW1Gb250RGF0YWJhc2U6OkNvcmVUZXh0Q2FzY2FkZUxp
c3RQYXJhbWV0ZXJzIHJlc3VsdDsKICAgICByZXN1bHQubG9jYWxlID0gZGVzY3JpcHRpb24ubG9j
YWxlKCk7Ci0gICAgcmVzdWx0LnNpemUgPSBkZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKTsKICAg
ICByZXN1bHQuaXRhbGljID0gaXNJdGFsaWMoZGVzY3JpcHRpb24uaXRhbGljKCkpOwogCiAgICAg
YXV0byB3ZWlnaHQgPSBkZXNjcmlwdGlvbi53ZWlnaHQoKTsKQEAgLTI5NywyNiArMjk2LDEyIEBA
IHN0YXRpYyBpbmxpbmUgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gc3lz
dGVtRm9udENhc2NhZGVMaXN0KGNvbnN0CiAgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZTo6
c2luZ2xldG9uKCkuc3lzdGVtRm9udENhc2NhZGVMaXN0KHN5c3RlbUZvbnRQYXJhbWV0ZXJzKGRl
c2NyaXB0aW9uLCBjc3NGYW1pbHksIGNsaWVudFVzZSwgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMp
LCBjbGllbnRVc2UpOwogfQogCi11bnNpZ25lZCBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjplZmZl
Y3RpdmVGYW1pbHlDb3VudCgpIGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVu
c3VyZUVmZmVjdGl2ZUZhbWlsaWVzKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogTW92ZSBhbGwg
dGhlIG90aGVyIHN5c3RlbSBmb250IGtleXdvcmRzIGZyb20gcGxhdGZvcm1Gb250V2l0aEZhbWls
eVNwZWNpYWxDYXNlKCkgdG8gaGVyZS4KLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBmYW1pbHlDb3VudCgpOyArK2kpIHsKLSAgICAgICAgY29u
c3QgYXV0byYgY3NzRmFtaWx5ID0gZmFtaWx5QXQoaSk7Ci0gICAgICAgIGlmIChpc1N5c3RlbUZv
bnRTdHJpbmcoY3NzRmFtaWx5KSkKLSAgICAgICAgICAgIHJlc3VsdCArPSBzeXN0ZW1Gb250Q2Fz
Y2FkZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwgU3lzdGVtRm9udERhdGFiYXNlOjpDbGllbnRVc2U6
OkZvclN5c3RlbVVJLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKS5zaXplKCk7Ci0j
aWYgUExBVEZPUk0oSU9TKQotICAgICAgICBlbHNlIGlmIChpc1VJRm9udFRleHRTdHlsZShjc3NG
YW1pbHkpKQotICAgICAgICAgICAgcmVzdWx0ICs9IHN5c3RlbUZvbnRDYXNjYWRlTGlzdCgqdGhp
cywgY3NzRmFtaWx5LCBTeXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVzZTo6Rm9yVGV4dFN0eWxl
LCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKS5zaXplKCk7Ci0jZW5kaWYKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgKytyZXN1bHQ7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7
Ci19CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoIW1fZWZmZWN0aXZlRmFt
aWxpZXMuZW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwogCi1Gb250RmFtaWx5U3BlY2lmaWNhdGlv
biBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjplZmZlY3RpdmVGYW1pbHlBdCh1bnNpZ25lZCBpbmRl
eCkgY29uc3QKLXsKICAgICAvLyBUaGUgc3BlY2lhbCBjYXNlcyBpbiB0aGlzIGZ1bmN0aW9uIG5l
ZWQgdG8gbWF0Y2ggdGhlIGJlaGF2aW9yIGluIEZvbnRDYWNoZUlPUy5tbSBhbmQgRm9udENhY2hl
TWFjLm1tLiBPbiBzeXN0ZW1zCiAgICAgLy8gd2hlcmUgVVNFX1BMQVRGT1JNX1NZU1RFTV9GQUxM
QkFDS19MSVNUIGlzIHNldCB0byB0cnVlLCB0aGlzIGNvZGUgaXMgdXNlZCBmb3IgcmVndWxhciAo
ZWxlbWVudCBzdHlsZSkgbG9va3VwcywKICAgICAvLyBhbmQgdGhlIGNvZGUgaW4gRm9udERlc2Ny
aXB0aW9uQ29jb2EuY3BwIGlzIHVzZWQgd2hlbiBzcmM6bG9jYWwoc3BlY2lhbC1jYXNlZC1uYW1l
KSBpcyBzcGVjaWZpZWQgaW5zaWRlIGFuCkBAIC0zMjcsMjYgKzMxMiwzMSBAQCBGb250RmFtaWx5
U3BlY2lmaWNhdGlvbiBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjplZmZlY3RpdmVGYW1pbHlBdCh1
bnNpZ25lZCBpbmRleAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmYW1pbHlDb3VudCgp
OyArK2kpIHsKICAgICAgICAgY29uc3QgYXV0byYgY3NzRmFtaWx5ID0gZmFtaWx5QXQoaSk7CiAg
ICAgICAgIGlmIChpc1N5c3RlbUZvbnRTdHJpbmcoY3NzRmFtaWx5KSkgewotICAgICAgICAgICAg
YXV0byBjYXNjYWRlTGlzdCA9IHN5c3RlbUZvbnRDYXNjYWRlTGlzdCgqdGhpcywgY3NzRmFtaWx5
LCBTeXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVzZTo6Rm9yU3lzdGVtVUksIHNob3VsZEFsbG93
VXNlckluc3RhbGxlZEZvbnRzKCkpOwotICAgICAgICAgICAgaWYgKGluZGV4IDwgY2FzY2FkZUxp
c3Quc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBGb250RmFtaWx5U3BlY2lmaWNhdGlv
bihjYXNjYWRlTGlzdFtpbmRleF0uZ2V0KCkpOwotICAgICAgICAgICAgaW5kZXggLT0gY2FzY2Fk
ZUxpc3Quc2l6ZSgpOworICAgICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogc3lzdGVtRm9udENh
c2NhZGVMaXN0KCp0aGlzLCBjc3NGYW1pbHksIFN5c3RlbUZvbnREYXRhYmFzZTo6Q2xpZW50VXNl
OjpGb3JTeXN0ZW1VSSwgc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSkpCisgICAgICAg
ICAgICAgICAgbV9lZmZlY3RpdmVGYW1pbGllcy5hcHBlbmQoV1RGTW92ZShpdGVtKSk7CisgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAg
ZWxzZSBpZiAoaXNVSUZvbnRUZXh0U3R5bGUoY3NzRmFtaWx5KSkgewotICAgICAgICAgICAgYXV0
byBjYXNjYWRlTGlzdCA9IHN5c3RlbUZvbnRDYXNjYWRlTGlzdCgqdGhpcywgY3NzRmFtaWx5LCBT
eXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVzZTo6Rm9yVGV4dFN0eWxlLCBzaG91bGRBbGxvd1Vz
ZXJJbnN0YWxsZWRGb250cygpKTsKLSAgICAgICAgICAgIGlmIChpbmRleCA8IGNhc2NhZGVMaXN0
LnNpemUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gRm9udEZhbWlseVNwZWNpZmljYXRpb24o
Y2FzY2FkZUxpc3RbaW5kZXhdLmdldCgpKTsKLSAgICAgICAgICAgIGluZGV4IC09IGNhc2NhZGVM
aXN0LnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgaXRlbSA6IHN5c3RlbUZvbnRDYXNj
YWRlTGlzdCgqdGhpcywgY3NzRmFtaWx5LCBTeXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVzZTo6
Rm9yVGV4dFN0eWxlLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKSkKKyAgICAgICAg
ICAgICAgICBtX2VmZmVjdGl2ZUZhbWlsaWVzLmFwcGVuZChXVEZNb3ZlKGl0ZW0pKTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgZWxzZSBpZiAoIWlu
ZGV4KQotICAgICAgICAgICAgcmV0dXJuIGNzc0ZhbWlseTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgLS1pbmRleDsKKyAgICAgICAgbV9lZmZlY3RpdmVGYW1pbGllcy5hcHBlbmQoY3NzRmFt
aWx5KTsKICAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51bGxB
dG9tKCk7Cit9CisKK3Vuc2lnbmVkIEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZh
bWlseUNvdW50KCkgY29uc3QKK3sKKyAgICBlbnN1cmVFZmZlY3RpdmVGYW1pbGllcygpOworICAg
IHJldHVybiBtX2VmZmVjdGl2ZUZhbWlsaWVzLnNpemUoKTsKK30KKworRm9udEZhbWlseVNwZWNp
ZmljYXRpb24gRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6ZWZmZWN0aXZlRmFtaWx5QXQodW5zaWdu
ZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgZW5zdXJlRWZmZWN0aXZlRmFtaWxpZXMoKTsKKyAgICBy
ZXR1cm4gbV9lZmZlY3RpdmVGYW1pbGllc1tpbmRleF07CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338208</attachid>
            <date>2018-04-18 03:40:53 -0700</date>
            <delta_ts>2018-04-30 16:20:43 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-184720-20180418034052.patch</filename>
            <type>text/plain</type>
            <size>12346</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQ5NTEyZTMyNjUyZDNj
YzA4NzhiYTM2YTczYmY3ODk3ZjRmZjMwNy4uMjE1NDJjM2Y2ZDYzY2UxNzA5YTQ3ZTIyYmIzOGUx
M2VlOGFkMGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE4LTA0LTE3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wcm92ZSB0
aGUgcGVyZm9ybWFuY2Ugb2YgRm9udENhc2NhZGVEZXNjcmlwdGlvbidzIGVmZmVjdGl2ZUZhbWls
aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ3
MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNj
cmlwdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGVEZXNjcmlwdGlvbjo6c2V0
T25lRmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlRGVzY3JpcHRpb246OnNl
dEZhbWlsaWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlRGVzY3JpcHRpb246Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRE
ZXNjcmlwdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZvbnREYXRhYmFz
ZTo6Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnM6Om9wZXJhdG9yPT0gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U3lzdGVtRm9udERhdGFiYXNlOjpDb3JlVGV4dENhc2NhZGVMaXN0UGFy
YW1ldGVyczo6aGFzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTeXN0ZW1Gb250RGF0YWJh
c2U6OnN5c3RlbUZvbnRDYXNjYWRlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpzeXN0ZW1Gb250
UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZURlc2NyaXB0aW9uOjpl
bnN1cmVFZmZlY3RpdmVGYW1pbGllcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uOjplZmZlY3RpdmVGYW1pbHlDb3VudCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGb250Q2FzY2FkZURlc2NyaXB0aW9uOjplZmZlY3RpdmVGYW1pbHlBdCBjb25zdCk6
CisKIDIwMTgtMDQtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBSRUdSRVNTSU9OIChyMjI5ODMxKTogQ01ELWNsaWNraW5nIGFuIGlDbG91ZCB3ZWIgYXBwIGxp
bmsgdW5leHBlY3RlZGx5IG9wZW5zIHRoYXQgbGluayBpbiBhIG5ldyB0YWIgYW5kIHRoZSBjdXJy
ZW50IHRhYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dERlc2NyaXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRE
ZXNjcmlwdGlvbi5jcHAKaW5kZXggM2Q1ZGQzNTcxNDYwNzdiMjhhZTUyM2UzYTMzZTI3YmZkMjQ1
NjlhYy4uYTE4MDZkZjAyMjdiMmFmMDc1ZGQ2Nzk1ZGM0MzQxMzkyN2Q2ZGY5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3Bw
CkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBTYW1lU2l6ZUFzRm9udENhc2NhZGVEZXNjcmlwdGlv
biB7CiAgICAgdW5zaWduZWQgYml0ZmllbGRzMyA6IDEwOwogfTsKIAotQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKEZvbnRDYXNjYWRlRGVzY3JpcHRpb24pID09IHNpemVvZihTYW1lU2l6ZUFzRm9udENh
c2NhZGVEZXNjcmlwdGlvbiksIEZvbnRDYXNjYWRlRGVzY3JpcHRpb25fc2hvdWxkX3N0YXlfc21h
bGwpOworLy9DT01QSUxFX0FTU0VSVChzaXplb2YoRm9udENhc2NhZGVEZXNjcmlwdGlvbikgPT0g
c2l6ZW9mKFNhbWVTaXplQXNGb250Q2FzY2FkZURlc2NyaXB0aW9uKSwgRm9udENhc2NhZGVEZXNj
cmlwdGlvbl9zaG91bGRfc3RheV9zbWFsbCk7CiAKIEZvbnREZXNjcmlwdGlvbjo6Rm9udERlc2Ny
aXB0aW9uKCkKICAgICA6IG1fZm9udFNlbGVjdGlvblJlcXVlc3QgeyBGb250Q2FzY2FkZURlc2Ny
aXB0aW9uOjppbml0aWFsV2VpZ2h0KCksIEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmluaXRpYWxT
dHJldGNoKCksIEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmluaXRpYWxJdGFsaWMoKSB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCmlu
ZGV4IDk2ZTI4NmUyNzFhMDExNTAwMmViMmM0ZjZlNzViZTg4MDY2MzMwZmQuLjI1ZTgyYmIxMTg0
ODg1ZGVmMDRkMzQ4ZmM5YjA4YzZiMDJmNzM5NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCkBAIC0yNjQsOSArMjY0LDMxIEBA
IHB1YmxpYzoKICAgICBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Rm9udFNtb290aGluZ01vZGU+KG1fZm9udFNtb290aGluZyk7IH0K
ICAgICBib29sIGlzU3BlY2lmaWVkRm9udCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTcGVjaWZpZWRG
b250OyB9CiAKLSAgICB2b2lkIHNldE9uZUZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWls
eSkgeyBBU1NFUlQobV9mYW1pbGllcy5zaXplKCkgPT0gMSk7IG1fZmFtaWxpZXNbMF0gPSBmYW1p
bHk7IH0KLSAgICB2b2lkIHNldEZhbWlsaWVzKGNvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+JiBm
YW1pbGllcykgeyBtX2ZhbWlsaWVzID0gUmVmQ291bnRlZEFycmF5PEF0b21pY1N0cmluZz4oZmFt
aWxpZXMpOyB9Ci0gICAgdm9pZCBzZXRGYW1pbGllcyhjb25zdCBSZWZDb3VudGVkQXJyYXk8QXRv
bWljU3RyaW5nPiYgZmFtaWxpZXMpIHsgbV9mYW1pbGllcyA9IGZhbWlsaWVzOyB9CisgICAgdm9p
ZCBzZXRPbmVGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCisgICAgeworICAgICAg
ICBBU1NFUlQobV9mYW1pbGllcy5zaXplKCkgPT0gMSk7CisgICAgICAgIG1fZmFtaWxpZXNbMF0g
PSBmYW1pbHk7CisjaWYgVVNFX1BMQVRGT1JNX1NZU1RFTV9GQUxMQkFDS19MSVNUCisgICAgICAg
IG1fZWZmZWN0aXZlRmFtaWxpZXMuY2xlYXIoKTsKKyNlbmRpZgorICAgIH0KKworICAgIHZvaWQg
c2V0RmFtaWxpZXMoY29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4mIGZhbWlsaWVzKQorICAgIHsK
KyAgICAgICAgbV9mYW1pbGllcyA9IFJlZkNvdW50ZWRBcnJheTxBdG9taWNTdHJpbmc+KGZhbWls
aWVzKTsKKyNpZiBVU0VfUExBVEZPUk1fU1lTVEVNX0ZBTExCQUNLX0xJU1QKKyAgICAgICAgbV9l
ZmZlY3RpdmVGYW1pbGllcy5jbGVhcigpOworI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBzZXRG
YW1pbGllcyhjb25zdCBSZWZDb3VudGVkQXJyYXk8QXRvbWljU3RyaW5nPiYgZmFtaWxpZXMpCisg
ICAgeworICAgICAgICBtX2ZhbWlsaWVzID0gZmFtaWxpZXM7CisjaWYgVVNFX1BMQVRGT1JNX1NZ
U1RFTV9GQUxMQkFDS19MSVNUCisgICAgICAgIG1fZWZmZWN0aXZlRmFtaWxpZXMuY2xlYXIoKTsK
KyNlbmRpZgorICAgIH0KKwogICAgIHZvaWQgc2V0U3BlY2lmaWVkU2l6ZShmbG9hdCBzKSB7IG1f
c3BlY2lmaWVkU2l6ZSA9IGNsYW1wVG9GbG9hdChzKTsgfQogICAgIHZvaWQgc2V0SXNBYnNvbHV0
ZVNpemUoYm9vbCBzKSB7IG1faXNBYnNvbHV0ZVNpemUgPSBzOyB9CiAgICAgdm9pZCBzZXRLZXJu
aW5nKEtlcm5pbmcga2VybmluZykgeyBtX2tlcm5pbmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
a2VybmluZyk7IH0KQEAgLTMxNCw3ICszMzYsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIGluaXRpYWxMb2NhbGUoKSB7IHJldHVybiBudWxsQXRvbSgpOyB9CiAK
IHByaXZhdGU6CisgICAgdm9pZCBlbnN1cmVFZmZlY3RpdmVGYW1pbGllcygpIGNvbnN0OworCiAg
ICAgUmVmQ291bnRlZEFycmF5PEF0b21pY1N0cmluZz4gbV9mYW1pbGllcyB7IDEgfTsKKyNpZiBV
U0VfUExBVEZPUk1fU1lTVEVNX0ZBTExCQUNLX0xJU1QKKyAgICBtdXRhYmxlIFZlY3RvcjxGb250
RmFtaWx5U3BlY2lmaWNhdGlvbj4gbV9lZmZlY3RpdmVGYW1pbGllczsKKyNlbmRpZgogCiAgICAg
ZmxvYXQgbV9zcGVjaWZpZWRTaXplIHsgMCB9OyAgIC8vIFNwZWNpZmllZCBDU1MgdmFsdWUuIElu
ZGVwZW5kZW50IG9mIHJlbmRlcmluZyBpc3N1ZXMgc3VjaCBhcyBpbnRlZ2VyCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHJvdW5kaW5nLCBtaW5pbXVtIGZvbnQgc2l6ZXMsIGFuZCB6
b29taW5nLgpAQCAtMzQwLDYgKzM2Nyw3IEBAIGlubGluZSBib29sIEZvbnRDYXNjYWRlRGVzY3Jp
cHRpb246Om9wZXJhdG9yPT0oY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgb3RoCiAgICAg
ICAgICYmIG1fa2V5d29yZFNpemUgPT0gb3RoZXIubV9rZXl3b3JkU2l6ZQogICAgICAgICAmJiBt
X2ZvbnRTbW9vdGhpbmcgPT0gb3RoZXIubV9mb250U21vb3RoaW5nCiAgICAgICAgICYmIG1faXNT
cGVjaWZpZWRGb250ID09IG90aGVyLm1faXNTcGVjaWZpZWRGb250OworICAgIC8vIERvbid0IGlu
Y2x1ZGUgbV9lZmZlY3RpdmVGYW1pbGllcyBiZWNhdXNlIGl0IGlzIGRlcml2ZWQgZGF0YS4KIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udERlc2NyaXB0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCmluZGV4IDQyYWZhNDhjNTVjZWM5MWJl
YzI5ZGExNjI1YjYzY2IxNDI1ZDQ0ZjMuLjk2MTc2MTJmYjQxZjI3ODU1NDcwZThmZGY1ZTNkZmYw
ZTFmZmE0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAKQEAgLTY0LDcgKzY0LDYg
QEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZvbnROYW1lID09IG90aGVyLmZvbnROYW1l
CiAgICAgICAgICAgICAgICAgJiYgbG9jYWxlID09IG90aGVyLmxvY2FsZQogICAgICAgICAgICAg
ICAgICYmIHdlaWdodCA9PSBvdGhlci53ZWlnaHQKLSAgICAgICAgICAgICAgICAmJiBzaXplID09
IG90aGVyLnNpemUKICAgICAgICAgICAgICAgICAmJiBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyA9
PSBvdGhlci5hbGxvd1VzZXJJbnN0YWxsZWRGb250cwogICAgICAgICAgICAgICAgICYmIGl0YWxp
YyA9PSBvdGhlci5pdGFsaWM7CiAgICAgICAgIH0KQEAgLTc2LDcgKzc1LDYgQEAgcHVibGljOgog
ICAgICAgICAgICAgaGFzaGVyLmFkZChsb2NhbGUuZXhpc3RpbmdIYXNoKCkpOwogICAgICAgICAg
ICAgaGFzaGVyLmFkZChsb2NhbGUuaXNOdWxsKCkgPyAwIDogbG9jYWxlLmV4aXN0aW5nSGFzaCgp
KTsKICAgICAgICAgICAgIGhhc2hlci5hZGQod2VpZ2h0KTsKLSAgICAgICAgICAgIGhhc2hlci5h
ZGQoc2l6ZSk7CiAgICAgICAgICAgICBoYXNoZXIuYWRkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihh
bGxvd1VzZXJJbnN0YWxsZWRGb250cykpOwogICAgICAgICAgICAgaGFzaGVyLmFkZChpdGFsaWMp
OwogICAgICAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7CkBAIC05Nyw3ICs5NSw2IEBAIHB1
YmxpYzoKICAgICAgICAgQXRvbWljU3RyaW5nIGZvbnROYW1lOwogICAgICAgICBBdG9taWNTdHJp
bmcgbG9jYWxlOwogICAgICAgICBDR0Zsb2F0IHdlaWdodCB7IDAgfTsKLSAgICAgICAgZmxvYXQg
c2l6ZSB7IDAgfTsKICAgICAgICAgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5z
dGFsbGVkRm9udHMgeyBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6Tm8gfTsKICAgICAgICAgYm9v
bCBpdGFsaWMgeyBmYWxzZSB9OwogICAgIH07CkBAIC0xMTYsMTEgKzExMywxNCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBtX3N5c3RlbUZvbnRDYWNoZS5lbnN1cmUocGFyYW1ldGVycywgWyZd
IHsKICAgICAgICAgICAgIGF1dG8gbG9jYWxlU3RyaW5nID0gcGFyYW1ldGVycy5sb2NhbGUuc3Ry
aW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICAgICAgICAgIFJldGFpblB0cjxDVEZvbnRSZWY+
IHN5c3RlbUZvbnQ7CisgICAgICAgICAgICAvLyBXZSBjYW4gcGFzcyBhIGJvZ3VzIHNpemUgYmVj
YXVzZSBpdCB3aWxsIGFsd2F5cyBiZSBvdmVycmlkZGVuIGJ5IEZvbnRGYW1pbHlTcGVjaWZpY2F0
aW9uQ29yZVRleHQ6OmZvbnRSYW5nZXMoKS4KKyAgICAgICAgICAgIC8vIE1ha2luZyB0aGUgY2Fj
aGUgaW5zZW5zaXRpdmUgdG8gZm9udCBzaXplIG1lYW5zIHdlIGNhbiBnZXQgYSBoaWdoZXIgaGl0
IHJhdGUuCisgICAgICAgICAgICBmbG9hdCBzaXplID0gMDsKICAgICAgICAgICAgIGlmIChjbGll
bnRVc2UgPT0gQ2xpZW50VXNlOjpGb3JTeXN0ZW1VSSkgewotICAgICAgICAgICAgICAgIHN5c3Rl
bUZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVVJRm9udEZvckxhbmd1YWdlKGtDVEZvbnRVSUZv
bnRTeXN0ZW0sIHBhcmFtZXRlcnMuc2l6ZSwgbG9jYWxlU3RyaW5nLmdldCgpKSk7CisgICAgICAg
ICAgICAgICAgc3lzdGVtRm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlVUlGb250Rm9yTGFuZ3Vh
Z2Uoa0NURm9udFVJRm9udFN5c3RlbSwgMCwgbG9jYWxlU3RyaW5nLmdldCgpKSk7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKHN5c3RlbUZvbnQpOwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBV
c2UgYXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhhdmlvcigpIGluIGJvdGggY2FzZXMg
b25jZSA8cmRhcjovL3Byb2JsZW0vMzMwNDYwNDE+IGlzIGZpeGVkLgotICAgICAgICAgICAgICAg
IHN5c3RlbUZvbnQgPSBhcHBseVdlaWdodEl0YWxpY3NBbmRGYWxsYmFja0JlaGF2aW9yKHN5c3Rl
bUZvbnQuZ2V0KCksIHBhcmFtZXRlcnMud2VpZ2h0LCBwYXJhbWV0ZXJzLml0YWxpYywgcGFyYW1l
dGVycy5zaXplLCBwYXJhbWV0ZXJzLmFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKKyAgICAgICAg
ICAgICAgICBzeXN0ZW1Gb250ID0gYXBwbHlXZWlnaHRJdGFsaWNzQW5kRmFsbGJhY2tCZWhhdmlv
cihzeXN0ZW1Gb250LmdldCgpLCBwYXJhbWV0ZXJzLndlaWdodCwgcGFyYW1ldGVycy5pdGFsaWMs
IHNpemUsIHBhcmFtZXRlcnMuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOwogICAgICAgICAgICAg
fSBlbHNlIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgICAgICAgICAgQVNTRVJUKGNsaWVu
dFVzZSA9PSBDbGllbnRVc2U6OkZvclRleHRTdHlsZSk7CkBAIC0xMjgsNyArMTI4LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIENURm9udFN5bWJvbGljVHJhaXRzIHRyYWl0cyA9IChwYXJh
bWV0ZXJzLndlaWdodCA+PSBrQ1RGb250V2VpZ2h0U2VtaWJvbGQgPyBrQ1RGb250VHJhaXRCb2xk
IDogMCkgfCAocGFyYW1ldGVycy5pdGFsaWMgPyBrQ1RGb250VHJhaXRJdGFsaWMgOiAwKTsKICAg
ICAgICAgICAgICAgICBpZiAodHJhaXRzKQogICAgICAgICAgICAgICAgICAgICBmb250RGVzY3Jp
cHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUNvcHlXaXRoU3ltYm9saWNUcmFp
dHMoZm9udERlc2NyaXB0b3IuZ2V0KCksIHRyYWl0cywgdHJhaXRzKSk7Ci0gICAgICAgICAgICAg
ICAgc3lzdGVtRm9udCA9IGNyZWF0ZUZvbnRGb3JJbnN0YWxsZWRGb250cyhmb250RGVzY3JpcHRv
ci5nZXQoKSwgcGFyYW1ldGVycy5zaXplLCBwYXJhbWV0ZXJzLmFsbG93VXNlckluc3RhbGxlZEZv
bnRzKTsKKyAgICAgICAgICAgICAgICBzeXN0ZW1Gb250ID0gY3JlYXRlRm9udEZvckluc3RhbGxl
ZEZvbnRzKGZvbnREZXNjcmlwdG9yLmdldCgpLCBzaXplLCBwYXJhbWV0ZXJzLmFsbG93VXNlcklu
c3RhbGxlZEZvbnRzKTsKICNlbHNlCiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAjZW5kaWYKQEAgLTI0OCw3ICsyNDgsNiBAQCBzdGF0aWMgaW5saW5lIFN5c3RlbUZvbnRE
YXRhYmFzZTo6Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnMgc3lzdGVtRm9udFBhcmFtZQog
ewogICAgIFN5c3RlbUZvbnREYXRhYmFzZTo6Q29yZVRleHRDYXNjYWRlTGlzdFBhcmFtZXRlcnMg
cmVzdWx0OwogICAgIHJlc3VsdC5sb2NhbGUgPSBkZXNjcmlwdGlvbi5sb2NhbGUoKTsKLSAgICBy
ZXN1bHQuc2l6ZSA9IGRlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpOwogICAgIHJlc3VsdC5pdGFs
aWMgPSBpc0l0YWxpYyhkZXNjcmlwdGlvbi5pdGFsaWMoKSk7CiAKICAgICBhdXRvIHdlaWdodCA9
IGRlc2NyaXB0aW9uLndlaWdodCgpOwpAQCAtMjk3LDI2ICsyOTYsMTIgQEAgc3RhdGljIGlubGlu
ZSBWZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiBzeXN0ZW1Gb250Q2FzY2Fk
ZUxpc3QoY29uc3QKICAgICByZXR1cm4gU3lzdGVtRm9udERhdGFiYXNlOjpzaW5nbGV0b24oKS5z
eXN0ZW1Gb250Q2FzY2FkZUxpc3Qoc3lzdGVtRm9udFBhcmFtZXRlcnMoZGVzY3JpcHRpb24sIGNz
c0ZhbWlseSwgY2xpZW50VXNlLCBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyksIGNsaWVudFVzZSk7
CiB9CiAKLXVuc2lnbmVkIEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUNv
dW50KCkgY29uc3QKK3ZvaWQgRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6ZW5zdXJlRWZmZWN0aXZl
RmFtaWxpZXMoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBNb3ZlIGFsbCB0aGUgb3RoZXIgc3lz
dGVtIGZvbnQga2V5d29yZHMgZnJvbSBwbGF0Zm9ybUZvbnRXaXRoRmFtaWx5U3BlY2lhbENhc2Uo
KSB0byBoZXJlLgotICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGZhbWlseUNvdW50KCk7ICsraSkgewotICAgICAgICBjb25zdCBhdXRvJiBjc3NG
YW1pbHkgPSBmYW1pbHlBdChpKTsKLSAgICAgICAgaWYgKGlzU3lzdGVtRm9udFN0cmluZyhjc3NG
YW1pbHkpKQotICAgICAgICAgICAgcmVzdWx0ICs9IHN5c3RlbUZvbnRDYXNjYWRlTGlzdCgqdGhp
cywgY3NzRmFtaWx5LCBTeXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVzZTo6Rm9yU3lzdGVtVUks
IHNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpLnNpemUoKTsKLSNpZiBQTEFURk9STShJ
T1MpCi0gICAgICAgIGVsc2UgaWYgKGlzVUlGb250VGV4dFN0eWxlKGNzc0ZhbWlseSkpCi0gICAg
ICAgICAgICByZXN1bHQgKz0gc3lzdGVtRm9udENhc2NhZGVMaXN0KCp0aGlzLCBjc3NGYW1pbHks
IFN5c3RlbUZvbnREYXRhYmFzZTo6Q2xpZW50VXNlOjpGb3JUZXh0U3R5bGUsIHNob3VsZEFsbG93
VXNlckluc3RhbGxlZEZvbnRzKCkpLnNpemUoKTsKLSNlbmRpZgotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICArK3Jlc3VsdDsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmICghbV9lZmZlY3RpdmVGYW1pbGllcy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKIAotRm9udEZhbWlseVNwZWNpZmljYXRpb24gRm9udENhc2Nh
ZGVEZXNjcmlwdGlvbjo6ZWZmZWN0aXZlRmFtaWx5QXQodW5zaWduZWQgaW5kZXgpIGNvbnN0Ci17
CiAgICAgLy8gVGhlIHNwZWNpYWwgY2FzZXMgaW4gdGhpcyBmdW5jdGlvbiBuZWVkIHRvIG1hdGNo
IHRoZSBiZWhhdmlvciBpbiBGb250Q2FjaGVJT1MubW0gYW5kIEZvbnRDYWNoZU1hYy5tbS4gT24g
c3lzdGVtcwogICAgIC8vIHdoZXJlIFVTRV9QTEFURk9STV9TWVNURU1fRkFMTEJBQ0tfTElTVCBp
cyBzZXQgdG8gdHJ1ZSwgdGhpcyBjb2RlIGlzIHVzZWQgZm9yIHJlZ3VsYXIgKGVsZW1lbnQgc3R5
bGUpIGxvb2t1cHMsCiAgICAgLy8gYW5kIHRoZSBjb2RlIGluIEZvbnREZXNjcmlwdGlvbkNvY29h
LmNwcCBpcyB1c2VkIHdoZW4gc3JjOmxvY2FsKHNwZWNpYWwtY2FzZWQtbmFtZSkgaXMgc3BlY2lm
aWVkIGluc2lkZSBhbgpAQCAtMzI3LDI2ICszMTIsMzEgQEAgRm9udEZhbWlseVNwZWNpZmljYXRp
b24gRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6ZWZmZWN0aXZlRmFtaWx5QXQodW5zaWduZWQgaW5k
ZXgKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmFtaWx5Q291bnQoKTsgKytpKSB7CiAg
ICAgICAgIGNvbnN0IGF1dG8mIGNzc0ZhbWlseSA9IGZhbWlseUF0KGkpOwogICAgICAgICBpZiAo
aXNTeXN0ZW1Gb250U3RyaW5nKGNzc0ZhbWlseSkpIHsKLSAgICAgICAgICAgIGF1dG8gY2FzY2Fk
ZUxpc3QgPSBzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwgU3lzdGVtRm9u
dERhdGFiYXNlOjpDbGllbnRVc2U6OkZvclN5c3RlbVVJLCBzaG91bGRBbGxvd1VzZXJJbnN0YWxs
ZWRGb250cygpKTsKLSAgICAgICAgICAgIGlmIChpbmRleCA8IGNhc2NhZGVMaXN0LnNpemUoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gRm9udEZhbWlseVNwZWNpZmljYXRpb24oY2FzY2FkZUxp
c3RbaW5kZXhdLmdldCgpKTsKLSAgICAgICAgICAgIGluZGV4IC09IGNhc2NhZGVMaXN0LnNpemUo
KTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgaXRlbSA6IHN5c3RlbUZvbnRDYXNjYWRlTGlzdCgq
dGhpcywgY3NzRmFtaWx5LCBTeXN0ZW1Gb250RGF0YWJhc2U6OkNsaWVudFVzZTo6Rm9yU3lzdGVt
VUksIHNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpKQorICAgICAgICAgICAgICAgIG1f
ZWZmZWN0aXZlRmFtaWxpZXMuYXBwZW5kKEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQo
aXRlbS5nZXQoKSkpOworICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICNpZiBQTEFU
Rk9STShJT1MpCiAgICAgICAgIGVsc2UgaWYgKGlzVUlGb250VGV4dFN0eWxlKGNzc0ZhbWlseSkp
IHsKLSAgICAgICAgICAgIGF1dG8gY2FzY2FkZUxpc3QgPSBzeXN0ZW1Gb250Q2FzY2FkZUxpc3Qo
KnRoaXMsIGNzc0ZhbWlseSwgU3lzdGVtRm9udERhdGFiYXNlOjpDbGllbnRVc2U6OkZvclRleHRT
dHlsZSwgc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSk7Ci0gICAgICAgICAgICBpZiAo
aW5kZXggPCBjYXNjYWRlTGlzdC5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZvbnRG
YW1pbHlTcGVjaWZpY2F0aW9uKGNhc2NhZGVMaXN0W2luZGV4XS5nZXQoKSk7Ci0gICAgICAgICAg
ICBpbmRleCAtPSBjYXNjYWRlTGlzdC5zaXplKCk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGl0
ZW0gOiBzeXN0ZW1Gb250Q2FzY2FkZUxpc3QoKnRoaXMsIGNzc0ZhbWlseSwgU3lzdGVtRm9udERh
dGFiYXNlOjpDbGllbnRVc2U6OkZvclRleHRTdHlsZSwgc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVk
Rm9udHMoKSkpCisgICAgICAgICAgICAgICAgbV9lZmZlY3RpdmVGYW1pbGllcy5hcHBlbmQoRm9u
dEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dChpdGVtLmdldCgpKSk7CisgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIGVsc2UgaWYgKCFpbmRleCkKLSAg
ICAgICAgICAgIHJldHVybiBjc3NGYW1pbHk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIC0t
aW5kZXg7CisgICAgICAgIG1fZWZmZWN0aXZlRmFtaWxpZXMuYXBwZW5kKGNzc0ZhbWlseSk7CiAg
ICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxsQXRvbSgpOwor
fQorCit1bnNpZ25lZCBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjplZmZlY3RpdmVGYW1pbHlDb3Vu
dCgpIGNvbnN0Cit7CisgICAgZW5zdXJlRWZmZWN0aXZlRmFtaWxpZXMoKTsKKyAgICByZXR1cm4g
bV9lZmZlY3RpdmVGYW1pbGllcy5zaXplKCk7Cit9CisKK0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9u
IEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUF0KHVuc2lnbmVkIGluZGV4
KSBjb25zdAoreworICAgIGVuc3VyZUVmZmVjdGl2ZUZhbWlsaWVzKCk7CisgICAgcmV0dXJuIG1f
ZWZmZWN0aXZlRmFtaWxpZXNbaW5kZXhdOwogfQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339159</attachid>
            <date>2018-04-30 16:20:45 -0700</date>
            <delta_ts>2018-04-30 16:30:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184720-20180430162044.patch</filename>
            <type>text/plain</type>
            <size>4830</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxMTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDA1ZWUxZTBkOTdlOTFm
YTcxMTllYjFkNWJmMGJiZTZjYWMyMTNkNi4uNDBkZjg0NDJmN2I3ZjQwYzM2Mzg4OWQzZTVhNTVj
MzY1ZjRmZTgzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE4LTA0LTMwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wcm92ZSB0
aGUgcGVyZm9ybWFuY2Ugb2YgRm9udENhc2NhZGVEZXNjcmlwdGlvbidzIGVmZmVjdGl2ZUZhbWls
aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ3
MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUg
cGFnZSB0aGF0IGhhZCB0aGUgcGVyZm9ybWFuY2UgcHJvYmxlbSByZW5kZXJzIG1hbnkgZGlmZmVy
ZW50IENoaW5lc2UgY2hhcmFjdGVycyBpbiBzeXN0ZW0tdWkKKyAgICAgICAgd2l0aCByb3VnaGx5
IGZldyBudW1iZXIgb2YgaW5kaXZpZHVhbCBmb250cy4gSXQgdHVybnMgb3V0IHdlIHdlcmUgY2Fs
bGluZyBpbnRvIHRoZSBzeXN0ZW0tdWkKKyAgICAgICAgbWFjaGluZXJ5IGZvciBlYWNoIGNoYXJh
Y3RlciBpbiBvcmRlciB0byBvcHBvcnR1bmlzdGljYWxseSBzdGFydCBsb2FkaW5nIGRhdGEgVVJM
cyAoc2VlIGFsc286CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzU4NDUpLiBUaGVzZSBkYXRhIFVSTFMgYXJlIG5ldmVyIGZvciB0aGUgc3lzdGVtIGZv
bnQsCisgICAgICAgIHNvIHdlIGRvbid0IG5lZWQgdG8gaW52b2tlIHRoZSBzeXN0ZW0tdWkgbWFj
aGluZXJ5IGF0IGFsbC4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIGEgOTJ4IHBlcmZvcm1h
bmNlIGltcHJvdmVtZW50IG9uIHRoZSBhc3NvY2lhdGVkIHBlcmZvcm1hbmNlIHRlc3QuIFRoaXMg
dGVzdCBpcworICAgICAgICBkZXNpZ25lZCB0byB0ZXN0IENoaW5lc2UgdGV4dCByZW5kZXJlZCB3
aXRoIHN5c3RlbS11aS4KKworICAgICAgICBQZXJmb3JtYW5jZSB0ZXN0OiBMYXlvdXQvc3lzdGVt
LXVpLmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6b3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJM
TG9hZGluZyk6CisKIDIwMTgtMDQtMjcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGNvbG9yLWZpbHRlciBmb3IgdGV4dCBzdHJva2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
Rm9udHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVG
b250cy5jcHAKaW5kZXggY2YwY2Y3ODBmZGZmNTlkNzFlYmUyOTQ5OTU3MmI3ZTQ5MzRkZjc2OS4u
NWRjY2MxOTQ0NWM0ZjBlOWRhM2I3ZWNjYzRlZjYzODNjMTFmNjE1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKQEAg
LTM4OSwxNCArMzg5LDggQEAgc3RhdGljIHZvaWQgb3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnRE
YXRhVVJMTG9hZGluZyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW8KICAgICAvLyBhc3luY2hy
b25vdXMsIGFuZCB0aGlzIGNvZGUgZG9lc24ndCBhY3R1YWxseSBmaXggdGhlIHJhY2UgLSBpdCBq
dXN0IG1ha2VzIGl0IG1vcmUgbGlrZWx5IGZvciB0aGUgdHdvIGZvbnRzIHRvIHRpZSBpbiB0aGUg
cmFjZS4KICAgICBpZiAoIWZvbnRTZWxlY3RvcikKICAgICAgICAgcmV0dXJuOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBkZXNjcmlwdGlvbi5lZmZlY3RpdmVGYW1pbHlDb3VudCgpOyAr
K2kpIHsKLSAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3Qg
QXRvbWljU3RyaW5nJiBmYW1pbHkpIHsKLSAgICAgICAgICAgIGZvbnRTZWxlY3Rvci0+b3Bwb3J0
dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhkZXNjcmlwdGlvbiwgZmFtaWx5KTsK
LSAgICAgICAgfSwgWyZdKGNvbnN0IEZvbnRGYW1pbHlQbGF0Zm9ybVNwZWNpZmljYXRpb24mKSB7
Ci0gICAgICAgIH0pOwotICAgICAgICBjb25zdCBhdXRvJiBjdXJyZW50RmFtaWx5ID0gZGVzY3Jp
cHRpb24uZWZmZWN0aXZlRmFtaWx5QXQoaSk7Ci0gICAgICAgIFdURjo6dmlzaXQodmlzaXRvciwg
Y3VycmVudEZhbWlseSk7Ci0gICAgfQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZXNj
cmlwdGlvbi5mYW1pbHlDb3VudCgpOyArK2kpCisgICAgICAgIGZvbnRTZWxlY3Rvci0+b3Bwb3J0
dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhkZXNjcmlwdGlvbiwgZGVzY3JpcHRp
b24uZmFtaWx5QXQoaSkpOwogfQogCiBHbHlwaERhdGEgRm9udENhc2NhZGVGb250czo6Z2x5cGhE
YXRhRm9yVmFyaWFudChVQ2hhcjMyIGNoYXJhY3RlciwgY29uc3QgRm9udENhc2NhZGVEZXNjcmlw
dGlvbiYgZGVzY3JpcHRpb24sIEZvbnRWYXJpYW50IHZhcmlhbnQsIHVuc2lnbmVkIGZhbGxiYWNr
SW5kZXgpCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY4OGQ3OTZjMDUzZDJmZTU2OGMxMjkyY2Q3MTExZTZl
NzM1ZWUwNWMuLmY2ZjQ1NGU4MWRlNjFjMzhhMTFhZGMyOTkyZTliZTZhZGUyMzA1NmEgMTAwNjQ0
Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMDQtMzAgIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbXByb3ZlIHRoZSBwZXJmb3JtYW5j
ZSBvZiBGb250Q2FzY2FkZURlc2NyaXB0aW9uJ3MgZWZmZWN0aXZlRmFtaWxpZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDcyMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGVyZm9ybWFuY2Ug
dGVzdCBjYWxscyBTeXN0ZW1Gb250RGF0YWJhc2U6OnN5c3RlbUZvbnRDYXNjYWRlTGlzdCgpIGFy
b3VuZCAyLDAwMCwwMDAgdGltZXMgKGJlZm9yZQorICAgICAgICB0aGlzIHBhdGNoIGlzIGFwcGxp
ZWQpLCB3aGljaCBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gdGhlIHBhZ2Ugd2UgZm91bmQgdGhl
IHBlcmZvcm1hbmNlIHByb2JsZW0gb24uCisgICAgICAgIFRoZSBjYWxsaW5nIHBhdHRlcm4gaXMg
cm91Z2hseSBlcXVpdmFsZW50IGluIHRoaXMgdGVzdC4KKworICAgICAgICAqIExheW91dC9zeXN0
ZW0tdWkuaHRtbDogQWRkZWQuCisKIDIwMTgtMDMtMDggIEFudHRpIEtvaXZpc3RvICA8YW50dGlA
YXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBTdHlsZUJlbmNoIHZlcnNpb24gbnVtYmVyIGlu
IHBhZ2UgdGl0bGUgdG8gMC4zCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0xheW91dC9z
eXN0ZW0tdWkuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvTGF5b3V0L3N5c3RlbS11aS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmI1MmY0MDQwZjE3ODdkNTI3YmYzNDFmNzM4NThkZDc1MDIxNjg0NGQKLS0tIC9k
ZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0xheW91dC9zeXN0ZW0tdWkuaHRtbApAQCAt
MCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3J1bm5lci5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InRhcmdldCIgc3R5bGU9IndpZHRoOiAzMDBw
eDsgZGlzcGxheTogbm9uZTsgZm9udDogNDJweCAnc3lzdGVtLXVpJywgJy1hcHBsZS1zeXN0ZW0n
OyIgbGFuZz0iemgtQ04iPjwvZGl2PgorPHNjcmlwdD4KK3ZhciB0YXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7Cit2YXIgc3R5bGUgPSB0YXJnZXQuc3R5bGU7CisKK3Zh
ciBzID0gIiI7Cit2YXIgbGVuZ3RoID0gMTAwMDA7Cit2YXIgc3RhcnRDb2RlID0gMHg0RTAwOwor
Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgIHMgPSBzICsgU3RyaW5nLmZy
b21DaGFyQ29kZShpICsgc3RhcnRDb2RlKTsKK30KKworCitmdW5jdGlvbiB0ZXN0KCkgeworICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLmludmFsaWRh
dGVGb250Q2FjaGUoKTsKKworICAgIHN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOworICAgIHRhcmdl
dC5vZmZzZXRMZWZ0OworICAgIHRhcmdldC50ZXh0Q29udGVudCA9IHM7CisgICAgdGFyZ2V0Lm9m
ZnNldExlZnQ7CisgICAgdGFyZ2V0LnRleHRDb250ZW50ID0gIiI7CisgICAgc3R5bGUuZGlzcGxh
eSA9ICJub25lIjsKK30KKworUGVyZlRlc3RSdW5uZXIubWVhc3VyZVJ1bnNQZXJTZWNvbmQoeyBy
dW46IHRlc3QgfSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="357410"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>