<?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>36548</bug_id>
          
          <creation_ts>2010-03-24 11:54:38 -0700</creation_ts>
          <short_desc>[GTK] Wrong font instantiated from an unknown font family</short_desc>
          <delta_ts>2010-10-12 09:39:08 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>46038</dependson>
          <blocked>33299</blocked>
    
    <blocked>42052</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Olivier Tilloy">olivier</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>alex</cc>
    
    <cc>eric</cc>
    
    <cc>evan</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>olivier</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zecke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>203524</commentid>
    <comment_count>0</comment_count>
      <attachid>51532</attachid>
    <who name="Olivier Tilloy">olivier</who>
    <bug_when>2010-03-24 11:54:38 -0700</bug_when>
    <thetext>Created attachment 51532
layout test case

According to the CSS fonts specification (http://www.w3.org/TR/css3-fonts/#font-family-the-font-family-property), &quot;[the
font-family property] specifies a prioritized list of font family names or generic family names&quot;, and &quot;authors are encouraged to append a generic font family as a last alternative for improved robustness&quot;.

If a font family in the list doesn&apos;t match any known font on the system, the next family in the list should be used. The current implementation in WebKitGTK seems to always find a match for the first family in the list (falling back to the generic font family if necessary), whether it matches an actual existing font or not. Consequently, other families in the list are never given a chance to render the text as intended.

Consider the attached layout test case: it can reasonably be assumed that &quot;UnknownFontFamily&quot; doesn&apos;t match any known font on the system, therefore the text should be rendered using the second family in the list, Courier, which is a monospace font. Instead it is rendered using the generic family, serif.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203525</commentid>
    <comment_count>1</comment_count>
    <who name="Olivier Tilloy">olivier</who>
    <bug_when>2010-03-24 11:58:59 -0700</bug_when>
    <thetext>Note that the attached layout test case can easily be turned into an automatic test for the test suite by making the two &lt;p&gt; elements display inline and comparing their rendered width for equality using some javascript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203541</commentid>
    <comment_count>2</comment_count>
      <attachid>51534</attachid>
    <who name="Olivier Tilloy">olivier</who>
    <bug_when>2010-03-24 12:40:34 -0700</bug_when>
    <thetext>Created attachment 51534
Automatic layout test case

The expected output of this test case is &quot;PASS&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203573</commentid>
    <comment_count>3</comment_count>
    <who name="Olivier Tilloy">olivier</who>
    <bug_when>2010-03-24 14:10:23 -0700</bug_when>
    <thetext>It looks like the same problem also exists in the Qt port: the layout test fails in konqueror 4.2. However it passes in safari 4.0 on windows as well as in chrome on linux. All gecko-based browsers tested behave as expected (the test passes).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281298</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-19 12:18:59 -0700</bug_when>
    <thetext>Thanks for filing this bug and including a nice automated test case. I should have a patch up shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281299</commentid>
    <comment_count>5</comment_count>
      <attachid>68032</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-19 12:31:32 -0700</bug_when>
    <thetext>Created attachment 68032
Patch for this issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281300</commentid>
    <comment_count>6</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-19 12:38:13 -0700</bug_when>
    <thetext>This will likely need to be landed along with the patch in https://bugs.webkit.org/show_bug.cgi?id=46038 with new baselines, as both of these issues have conspired to create many incorrect DRT dumps. If they are landed separately, we will need to make new baselines twice.

Here&apos;s an example of what&apos;s happening for fast/borders/border-image-border-radius.html without fixing fonts.conf:

WebCore requests font family: Times
    family name after config: Times (no alias for Times)
    family name after matching: Nimbus Roman No9 L (fallback for Times -- rejected)

WebCore requests font family:Times New Roman (WebCore CSS fallback)
    family name after config:Times New Roman
    family name after matching:Ahem (fallback for Times New Roman -- rejected)

family name:serif (last fallback)
    family name after config:serif
    family name after matching:Ahem (accepted, because &quot;serif&quot; allows falling back)

The correct trace, with a fixed fonts.conf, would look like:
WebCore requests font family: Times
    family name after config: Liberation Serif (aliased to Times)
    family name after matching: Liberation Serif (matched! success!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281403</commentid>
    <comment_count>7</comment_count>
    <who name="Olivier Tilloy">olivier</who>
    <bug_when>2010-09-19 23:44:38 -0700</bug_when>
    <thetext>Nice Martin!
I haven’t tested the patch yet, but I went through it very quickly and there is a typo in LayoutTests/platform/gtk/fonts/font-family-fallback.html: s/dimenions/dimensions/. Other than that I’m definitely not competent to validate the correctness of the patch but I’ll test it functionally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281549</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-20 08:02:42 -0700</bug_when>
    <thetext>(In reply to comment #7)

&gt; I haven’t tested the patch yet, but I went through it very quickly and there is a typo in LayoutTests/platform/gtk/fonts/font-family-fallback.html: s/dimenions/dimensions/. 

Thanks! I&apos;ll make sure to fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282553</commentid>
    <comment_count>9</comment_count>
      <attachid>68290</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-21 14:11:47 -0700</bug_when>
    <thetext>Created attachment 68290
Updated patch with small fix for bold fonts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284519</commentid>
    <comment_count>10</comment_count>
      <attachid>68290</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-24 10:42:00 -0700</bug_when>
    <thetext>Comment on attachment 68290
Updated patch with small fix for bold fonts

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

&gt; WebCore/platform/graphics/cairo/SimpleFontDataCairo.cpp:86
&gt; +    // FIXME(mrobinson): I think we want to ask FontConfig for the right font again.

I will change this to just say FIXME.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284542</commentid>
    <comment_count>11</comment_count>
      <attachid>68290</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-09-24 10:58:48 -0700</bug_when>
    <thetext>Comment on attachment 68290
Updated patch with small fix for bold fonts

Very good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285582</commentid>
    <comment_count>12</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-27 11:01:37 -0700</bug_when>
    <thetext>Committed r68406: &lt;http://trac.webkit.org/changeset/68406&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285659</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-27 12:04:24 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/68406 might have broken GTK Linux 64-bit Debug
The following changes are on the blame list:
http://trac.webkit.org/changeset/68403
http://trac.webkit.org/changeset/68404
http://trac.webkit.org/changeset/68405
http://trac.webkit.org/changeset/68406</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292374</commentid>
    <comment_count>14</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2010-10-10 13:29:46 -0700</bug_when>
    <thetext>Hmm the google code and yours look really similiar. Are you sure it is not copyrighted by Google? The problem is that AFAIK Apachae License is not compatible with LGPL, is it compatible with LGPL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292683</commentid>
    <comment_count>15</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-11 15:03:19 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Hmm the google code and yours look really similiar. Are you sure it is not copyrighted by Google? The problem is that AFAIK Apachae License is not compatible with LGPL, is it compatible with LGPL?

Thank you for bringing this to my attention. I believe I have removed the big block comment and the similar code here: http://trac.webkit.org/changeset/69528</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292724</commentid>
    <comment_count>16</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-11 15:47:48 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Hmm the google code and yours look really similiar. Are you sure it is not copyrighted by Google? The problem is that AFAIK Apachae License is not compatible with LGPL, is it compatible with LGPL?

Out of curiosity, what code are you referring to that is under the Apache License?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292754</commentid>
    <comment_count>17</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-11 16:30:50 -0700</bug_when>
    <thetext>The large block comment was originally from SkFontHost_fontconfig.cpp and Holger felt that some other bits of code were too similiar to the Skia implementation. In a recently-landed cleanup patch I removed the comment and rewrote the other code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292815</commentid>
    <comment_count>18</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-11 18:31:28 -0700</bug_when>
    <thetext>If there is still a problem with this section of code, I think it should be removed now and rewritten by someone who has not seen the original Skia code. Otherwise, if it was possible for someone at Google to relicense it under a compatible license, that would be very kind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292942</commentid>
    <comment_count>19</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2010-10-12 07:24:56 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #14)
&gt; &gt; Hmm the google code and yours look really similiar. Are you sure it is not copyrighted by Google? The problem is that AFAIK Apachae License is not compatible with LGPL, is it compatible with LGPL?
&gt; 
&gt; Out of curiosity, what code are you referring to that is under the Apache License?

The code had a pointer to the url below. I agree that the actual matching (Font Config calls) can not be really different, and I am not sure that one can copyright the comment and on top of that I am not sure if LGPL2.x is compatible with the Apache License, I know that GPL is not compatible though.

http://code.google.com/p/skia/source/browse/trunk/src/ports/SkFontHost_fontconfig.cpp?r=587

BTW: thanks for cleaning it up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292970</commentid>
    <comment_count>20</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2010-10-12 09:39:08 -0700</bug_when>
    <thetext>I&apos;ll ask about relicensing.  I don&apos;t think it&apos;ll be an issue, just wanna double-check.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>51532</attachid>
            <date>2010-03-24 11:54:38 -0700</date>
            <delta_ts>2010-03-24 11:54:38 -0700</delta_ts>
            <desc>layout test case</desc>
            <filename>font-selection-skips-unknown-font.html</filename>
            <type>text/html</type>
            <size>241</size>
            <attacher name="Olivier Tilloy">olivier</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8IS0tIEJvdGggcGFyYWdyYXBocyBzaG91bGQgYmUgcmVuZGVyZWQgd2l0
aCB0aGUgc2FtZSBmb250IC0tPgo8cCBzdHlsZT0iZm9udC1zaXplOiAzMDsgZm9udC1mYW1pbHk6
IFVua25vd25Gb250RmFtaWx5LCBDb3VyaWVyLCBzZXJpZjsiPm1tbW1tbW1sPC9wPgo8cCBzdHls
ZT0iZm9udC1zaXplOiAzMDsgZm9udC1mYW1pbHk6IENvdXJpZXI7Ij5tbW1tbW1tbDwvcD4KPC9i
b2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>51534</attachid>
            <date>2010-03-24 12:40:34 -0700</date>
            <delta_ts>2010-03-24 12:40:34 -0700</delta_ts>
            <desc>Automatic layout test case</desc>
            <filename>font-selection-skips-unknown-font.html</filename>
            <type>text/html</type>
            <size>651</size>
            <attacher name="Olivier Tilloy">olivier</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgppZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwp9CgpmdW5jdGlvbiB0ZXN0KCkgewogIHZhciB3MSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwMSIpLm9mZnNldFdpZHRoOwogIHZhciB3MiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJwMiIpLm9mZnNldFdpZHRoOwogIGRvY3VtZW50LmJvZHku
aW5uZXJIVE1MID0gKHcxID09IHcyKSA/ICJQQVNTIiA6ICJGQUlMIjsKfQo8L3NjcmlwdD4KPC9o
ZWFkPgo8Ym9keSBvbmxvYWQ9InRlc3QoKSI+CjwhLS0gQm90aCBwYXJhZ3JhcGhzIHNob3VsZCBi
ZSByZW5kZXJlZCB3aXRoIHRoZSBzYW1lIGZvbnQgLS0+CjxwIGlkPSJwMSIgc3R5bGU9ImRpc3Bs
YXk6IGlubGluZTsgZm9udC1zaXplOiA3MnB4OyBmb250LWZhbWlseTogVW5rbm93bkZvbnRGYW1p
bHksIENvdXJpZXIsIHNlcmlmOyI+bW1tbW1tbWw8L3A+CjxwIGlkPSJwMiIgc3R5bGU9ImRpc3Bs
YXk6IGlubGluZTsgZm9udC1zaXplOiA3MnB4OyBmb250LWZhbWlseTogQ291cmllcjsiPm1tbW1t
bW1sPC9wPgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68032</attachid>
            <date>2010-09-19 12:31:32 -0700</date>
            <delta_ts>2010-09-21 14:11:44 -0700</delta_ts>
            <desc>Patch for this issue</desc>
            <filename>bug-36548-20100919123132.patch</filename>
            <type>text/plain</type>
            <size>25805</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZGVkYjNmOGRmNWNhZTI0NDBjZjQzMmIzOWY3Mzg3NDgxZDhkZGFhLi45YTJiMGM0
MjcxNTA0ZDJmOWQ1ZjI5NjA3OTQ0Y2ViNGViMThhMTQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDktMTkgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFdyb25n
IGZvbnQgaW5zdGFudGlhdGVkIGZyb20gYW4gdW5rbm93biBmb250IGZhbWlseQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1NDgKKworICAgICAgICAq
IHBsYXRmb3JtL2d0ay9mb250cy9mb250LWZhbWlseS1mYWxsYmFjay1leHBlY3RlZC50eHQ6IENv
cGllZCBmcm9tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uLzUxMzY2OTYtZXhwZWN0ZWQu
dHh0LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9mb250cy9mb250LWZhbWlseS1mYWxsYmFjay5o
dG1sOiBBZGRlZC4KKwogMjAxMC0wOS0xNyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgTGFuZCBuZXcgV2luZG93cyByZXN1bHRzIGZvciBmYXN0L2Zvcm1zL2ZpbGUt
aW5wdXQtZGlzYWJsZWQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L2ZvbnRzL2ZvbnQtZmFtaWx5LWZhbGxiYWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9mb250cy9mb250LWZhbWlseS1mYWxsYmFjay1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2VmMjJlOWE0MzFhZDAyNzI3MTNiNzFmZGM4Nzk0MDE2YzhlZjEyZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mb250cy9mb250LWZhbWlseS1mYWxs
YmFjay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2ZvbnRzL2ZvbnQtZmFtaWx5LWZhbGxiYWNrLmh0bWwgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvZm9udHMvZm9udC1mYW1pbHktZmFsbGJhY2suaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40MmJiNWVmZmUwMjczM2ViOWIzNmI3NzJiODUwMzU5YmJiMmUyNTc5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ZvbnRzL2ZvbnQtZmFtaWx5LWZh
bGxiYWNrLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgbGFu
Z3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgdmFyIHJlYWxXaWR0aCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjb3VyaWVyIikub2Zmc2V0V2lkdGg7CisgIHZhciByZWFsSGVpZ2h0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvdXJpZXIiKS5vZmZzZXRIZWlnaHQ7CisgIHZhciB1
bmtub3duV2lkdGggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidW5rbm93biIpLm9mZnNldFdp
ZHRoOworICB2YXIgdW5rbm93bkhlaWdodCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1bmtu
b3duIikub2Zmc2V0SGVpZ2h0OworICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9IChyZWFsV2lk
dGggPT0gdW5rbm93bldpZHRoKSAmJiAocmVhbEhlaWdodCAmJiB1bmtub3duSGVpZ2h0KSA/ICJQ
QVNTIiA6ICJGQUlMLiBQYXJhZ3JhcGggZGltZW5pb25zIGRpZCBub3QgbWF0Y2guIjsKK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorCis8IS0tIEJvdGggcGFy
YWdyYXBocyBzaG91bGQgYmUgcmVuZGVyZWQgd2l0aCB0aGUgc2FtZSBmb250IC0tPgorPHAgaWQ9
ImNvdXJpZXIiIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmU7IGZvbnQtc2l6ZTogNzJweDsgZm9udC1m
YW1pbHk6IENvdXJpZXI7Ij4KKyZuYnNwOyAhICIgIyAkICUgJmFtcDsgJyAoICkgKiArICwgLSAu
IC8gMCAxIDIgMyA0IDUgNiA3IDggOSA6IDsgJmx0OyA9CismZ3Q7ID8gQCBBIEIgQyBEIEUgRiBH
IEggSSBKIEsgTCBNIE4gTyBQIFEgUiBTIFQgVSBWIFcgWCBZIFogWyBcIF0gXiBfIGAgYQorYiBj
IGQgZSBmIGcgaCBpIGogayBsIG0gbiBvIHAgcSByIHMgdCB1IHYgdyB4IHkgeiB7IHwgfSA+Cis8
L3A+Cis8cCBpZD0idW5rbm93biIgc3R5bGU9ImRpc3BsYXk6IGlubGluZTsgZm9udC1zaXplOiA3
MnB4OyBmb250LWZhbWlseTogVW5rbm93bkZvbnRGYW1pbHksIENvdXJpZXIsIHNlcmlmOyI+Cism
bmJzcDsgISAiICMgJCAlICZhbXA7ICcgKCApICogKyAsIC0gLiAvIDAgMSAyIDMgNCA1IDYgNyA4
IDkgOiA7ICZsdDsgPQorJmd0OyA/IEAgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBR
IFIgUyBUIFUgViBXIFggWSBaIFsgXCBdIF4gXyBgIGEKK2IgYyBkIGUgZiBnIGggaSBqIGsgbCBt
IG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IHogeyB8IH0gPgorPC9wPgorCis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDJjZGI0NjcwYmNjYzA1OTU1NDAwY2Q5MTdkOTA1N2MwYWVmMGFlOTcuLjYyYjI3ZTU3Yjhi
Yzg2N2RmMzM3ZjU0MzBmYjhlNDVlZjIzZjU3YjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTAtMDktMTkg
IE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFdyb25nIGZvbnQgaW5zdGFu
dGlhdGVkIGZyb20gYW4gdW5rbm93biBmb250IGZhbWlseQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1NDgKKworICAgICAgICBXaGVuIEZvbnRDb25m
aWcgcmV0dXJucyBhIG1hdGNoIGZvciBhIHBhcnRpY3VsYXIgZmFtaWx5IG5hbWUsIGVuc3VyZSB0
aGF0CisgICAgICAgIHRoZSBmYW1pbHkgbmFtZSBtYXRjaGVzIHRoZSBjb25maWd1cmVkIGFsaWFz
IGZvciB0aGUgb3JpZ2luYWwgcGF0dGVybi4gVGhpcworICAgICAgICBzaG91bGQgcHJldmVudCBz
ZWxlY3RpbmcgRm9udENvbmZpZyBmYWxsYmFja3MgaW4gc2l0dWF0aW9ucyB3aGVyZSB0aGUgbmV4
dAorICAgICAgICBmb250IG9uIHRoZSBDU1MgZmFsbGJhY2sgbGlzdCBzaG91bGQgYmUgdXNlZC4g
VGhpcyByZXF1aXJlcyBtb3ZpbmcgYWxsIEZvbnRDb25maWcKKyAgICAgICAgbWF0Y2hpbmcgbG9n
aWMgaW50byBGb250Q2FjaGVGcmVlVHlwZSBhbmQgb3V0IG9mIEZvbnRQbGF0Zm9ybURhdGFGcmVl
VHlwZS4KKyAgICAgICAgSXQgc2hvdWxkIGJlIHRoZXJlIGFueXdheS4KKworICAgICAgICBUZXN0
OiBwbGF0Zm9ybS9ndGsvZm9udHMvZm9udC1mYW1pbHktZmFsbGJhY2suaHRtbAorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhY2hlRnJlZVR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhY2hlOjpwbGF0Zm9ybUluaXQpOiBTaW1wbHkgY2FsbCBGY0luaXQg
aGVyZSBpbnN0ZWFkIG9mCisgICAgICAgIGRlZmVycmluZyB0byBGb250UGxhdGZvcm1EYXRhLgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KTog
VGhlIGxhc3QgcmVzb3J0IGZvbnQgc2hvdWxkCisgICAgICAgIGJlIGEgZmFsbGJhY2sgZm9udCBv
ciBlbHNlIHRoZSBuZXcgRm9udENvbmZpZyBsb2dpYyBtYXkgcmVzdWx0IGluIG51bGwgZm9udCBk
YXRhCisgICAgICAgIGlmIGl0IGNhbm5vdCBmaW5kIGFuIGFwcHJvcHJpYXRlIG1hdGNoLgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0RmFtaWx5TmFtZVN0cmluZ0Zyb21Gb250RGVzY3JpcHRpb25BbmRG
YW1pbHkpOiBBZGRlZC4gSGVscGVyIGZ1bmN0aW9uCisgICAgICAgIHdoaWNoIGNvbnZlcnRzIFdl
YkNvcmUgZmFsbGJhY2sgbmFtZXMgaW50byBvbmVzIHRoYXQgRm9udENvbmZpZyB1bmRlcnN0YW5k
cy4KKyAgICAgICAgKFdlYkNvcmU6OmlzRmFsbGJhY2tGb250QWxsb3dlZCk6IEFkZGVkLiBIZWxw
ZXIgZnVuY3Rpb24gdGhhdCBhbGxvd3MgRm9udENvbmZpZworICAgICAgICBmYWxsYmFja3MgdG8g
YmUgdXNlZCB3aGVuIGdlbmVyaWMgZmFtaWx5IG5hbWVzIGFyZSBzcGVjaWZpZWQuCisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEpOiBNb3ZlIGFsbCBG
b250Q29uZmlnIG1hdGNoaW5nIGxvZ2ljIGhlcmUKKyAgICAgICAgYW5kIHByZXZlbnQgYWdhaW5z
dCB0aGUgc2l0dWF0aW9uIHdoZXJlIEZvbnRDb25maWcgcmV0dXJucyBhIGRpZmZlcmVudCBmYW1p
bHkgbmFtZQorICAgICAgICB0aGFuIHdlIGFza2VkIGZvci4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDogVXBkYXRlZCBGb250UGxh
dGZvcm1EYXRhIGNvbnN0cnVjdG9yLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6IFVwZGF0ZSB0aGUgY29uc3RydWN0b3IgdG8K
KyAgICAgICAgdGFrZSB0aGUgRmNQYXR0ZXJuIHJldHVybmVkIGFuZCB0aGUgb3JpZ2luYWwgRm9u
dERlc2NyaXB0aW9uLiBXZSBubyBsb25nZXIgbmVlZCB0aGUgb3RoZXIKKyAgICAgICAgYXJndW1l
bnRzLCBiZWNhdXNlIHRoZSBzZWxlY3Rpb24gaXMgbm93IGRvbmUgYnkgRm9udENhY2hlRnJlZVR5
cGUuCisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRh
KTogUmVtb3ZlIHRoZSBGb250Q29uZmlnIHNlbGVjdGlvbiBsb2dpYyBmcm9tCisgICAgICAgIHRo
aXMgY29kZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250UGxhdGZvcm1E
YXRhRnJlZVR5cGUuaDogVXBkYXRlZCBtZXRob2QgZGVmaW5pdGlvbnMuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR2x5cGhQYWdlVHJlZU5vZGVDYWlyby5jcHA6IEZpeGVkIGlu
Y2x1ZGVzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtUmVmUHRy
Q2Fpcm8uY3BwOiBBZGRlZCBhIFBsYXRmb3JtUmVmUHRyIHNwZWNpYWxpemF0aW9uCisgICAgICAg
IGZvciBjYWlyb19mb250X2ZhY2VfdC4KKyAgICAgICAgKFdURjo6cmVmUGxhdGZvcm1QdHIpOiBB
ZGRlZC4KKyAgICAgICAgKFdURjo6ZGVyZWZQbGF0Zm9ybVB0cik6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtUmVmUHRyQ2Fpcm8uaDogVXBkYXRlZCBt
ZXRob2QgZGVmaW5pdG9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9TaW1w
bGVGb250RGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhOjpz
bWFsbENhcHNGb250RGF0YSk6IEZpeGVkIEZvbnRQbGF0Zm9ybURhdGEgY29uc3RydWN0b3IuCisK
IDIwMTAtMDktMTcgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhY2hlRnJlZVR5cGUuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKaW5kZXggYzA5ZGQ0OWRjZTIx
ZWZiYzc1MjVhZmVjYTRlM2Q2MTFjYjIwMmUzZC4uMjg4MTJlOTViZDkwZGI2NjdhZDEyNzI2ODM5
NDEyYWZkNWIwMzYxYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgSWdhbGlhIFMuTC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjYsMTMgKzI3LDE3IEBA
CiAjaW5jbHVkZSAiT3duUHRyQ2Fpcm8uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVJlZlB0ckNhaXJv
LmgiCiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKKyNpbmNsdWRlIDxjYWlyby1mdC5oPgor
I2luY2x1ZGUgPGNhaXJvLmg+CisjaW5jbHVkZSA8Zm9udGNvbmZpZy9mY2ZyZWV0eXBlLmg+CiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lk
IEZvbnRDYWNoZTo6cGxhdGZvcm1Jbml0KCkKIHsKLSAgICBpZiAoIUZvbnRQbGF0Zm9ybURhdGE6
OmluaXQoKSkKKyAgICAvLyBJdCdzIGZpbmUgdG8gY2FsbCBGY0luaXQgbXVsdGlwbGUgdGltZXMg
cGVyIHRoZSBkb2N1bWVudGF0aW9uLgorICAgIGlmICghRmNJbml0KCkpCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCkBAIC03Miw5ICs3Nyw5IEBAIFNpbXBsZUZvbnREYXRhKiBG
b250Q2FjaGU6OmdldFNpbWlsYXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnQmIGZvbnQpCiAK
IFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29u
c3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pCiB7Ci0gICAgLy8gRklYTUU6IFdv
dWxkIGJlIGV2ZW4gYmV0dGVyIHRvIHNvbWVob3cgZ2V0IHRoZSB1c2VyJ3MgZGVmYXVsdCBmb250
IGhlcmUuCi0gICAgLy8gRm9yIG5vdyB3ZSdsbCBwaWNrIHRoZSBkZWZhdWx0IHRoYXQgdGhlIHVz
ZXIgd291bGQgZ2V0IHdpdGhvdXQgY2hhbmdpbmcgYW55IHByZWZzLgotICAgIHN0YXRpYyBBdG9t
aWNTdHJpbmcgdGltZXNTdHIoIlRpbWVzIE5ldyBSb21hbiIpOworICAgIC8vIFdlIHdhbnQgdG8g
cmV0dXJuIGEgZmFsbGJhY2sgZm9udCBoZXJlLCBvdGhlcndpc2UgdGhlIGxvZ2ljIHByZXZlbnRp
bmcgRm9udENvbmZpZworICAgIC8vIG1hdGNoZXMgZm9yIG5vbi1mYWxsYmFjayBmb250cyBtaWdo
dCByZXR1cm4gMC4gU2VlIGlzRmFsbGJhY2tGb250QWxsb3dlZC4KKyAgICBzdGF0aWMgQXRvbWlj
U3RyaW5nIHRpbWVzU3RyKCJzZXJpZiIpOwogICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YShm
b250RGVzY3JpcHRpb24sIHRpbWVzU3RyKTsKIH0KIApAQCAtODIsNTQgKzg3LDEwNiBAQCB2b2lk
IEZvbnRDYWNoZTo6Z2V0VHJhaXRzSW5GYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlO
YW1lLCBWZWN0b3I8dW5zaWduZQogewogfQogCi1zdGF0aWMgYm9vbCBpc1dlbGxLbm93bkZvbnRO
YW1lKGNvbnN0IEF0b21pY1N0cmluZyBmYW1pbHkpCitzdGF0aWMgQ1N0cmluZyBnZXRGYW1pbHlO
YW1lU3RyaW5nRnJvbUZvbnREZXNjcmlwdGlvbkFuZEZhbWlseShjb25zdCBGb250RGVzY3JpcHRp
b24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiB7Ci0gICAg
Ly8gRm9udHMgdGhhdCBhcmUgdXNlZCBieSBsYXlvdXQgdGVzdHMgaW5jbHVkZWQuIFRoZSBmYWN0
IHRoYXQKLSAgICAvLyB0aGV5IGFyZSB1c2VkIGluIExheW91dCBUZXN0cyBpbmRpY2F0ZSB3ZWIg
Y29tcGF0aWJpbGl0eSBpc3N1ZXMKLSAgICAvLyBpZiB3ZSBkbyBub3QgaGFuZGxlIHRoZW0gY29y
cmVjdGx5LgotICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHksICJzYW5zLXNlcmlmIikg
fHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5LCAic2FucyIpCi0gICAgICAgIHx8IGVxdWFsSWdu
b3JpbmdDYXNlKGZhbWlseSwgInNlcmlmIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5LCAi
bW9ubyIpCi0gICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseSwgIm1vbm9zcGFjZSIp
IHx8IGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseSwgImN1cnNpdmUiKQotICAgICAgICB8fCBlcXVh
bElnbm9yaW5nQ2FzZShmYW1pbHksICJmYW50YXN5IikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFt
aWx5LCAiVGltZXMiKQotICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHksICJDb3Vy
aWVyIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5LCAiSGVsdmV0aWNhIikKLSAgICAgICAg
fHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5LCAiQXJpYWwiKSB8fCBlcXVhbElnbm9yaW5nQ2Fz
ZShmYW1pbHksICJMdWNpZGEgR3JhbmRlIikKLSAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2Uo
ZmFtaWx5LCAiQWhlbSIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseSwgIkdlb3JnaWEiKQot
ICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHksICJUaW1lcyBOZXcgUm9tYW4iKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gSWYgd2Un
cmUgY3JlYXRpbmcgYSBmYWxsYmFjayBmb250IChlLmcuICItd2Via2l0LW1vbm9zcGFjZSIpLCBj
b252ZXJ0IHRoZSBuYW1lIGludG8KKyAgICAvLyB0aGUgZmFsbGJhY2sgbmFtZSAobGlrZSAibW9u
b3NwYWNlIikgdGhhdCBmb250Y29uZmlnIHVuZGVyc3RhbmRzLgorICAgIGlmIChmYW1pbHkubGVu
Z3RoKCkgJiYgIWZhbWlseS5zdGFydHNXaXRoKCItd2Via2l0LSIpKQorICAgICAgICByZXR1cm4g
ZmFtaWx5LnN0cmluZygpLnV0ZjgoKTsKKworICAgIHN3aXRjaCAoZm9udERlc2NyaXB0aW9uLmdl
bmVyaWNGYW1pbHkoKSkgeworICAgIGNhc2UgRm9udERlc2NyaXB0aW9uOjpTdGFuZGFyZEZhbWls
eToKKyAgICBjYXNlIEZvbnREZXNjcmlwdGlvbjo6U2VyaWZGYW1pbHk6CisgICAgICAgIHJldHVy
biAic2VyaWYiOworICAgIGNhc2UgRm9udERlc2NyaXB0aW9uOjpTYW5zU2VyaWZGYW1pbHk6Cisg
ICAgICAgIHJldHVybiAic2Fucy1zZXJpZiI7CisgICAgY2FzZSBGb250RGVzY3JpcHRpb246Ok1v
bm9zcGFjZUZhbWlseToKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiOworICAgIGNhc2UgRm9u
dERlc2NyaXB0aW9uOjpDdXJzaXZlRmFtaWx5OgorICAgICAgICByZXR1cm4gImN1cnNpdmUiOwor
ICAgIGNhc2UgRm9udERlc2NyaXB0aW9uOjpGYW50YXN5RmFtaWx5OgorICAgICAgICByZXR1cm4g
ImZhbnRhc3kiOworICAgIGNhc2UgRm9udERlc2NyaXB0aW9uOjpOb0ZhbWlseToKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gIiI7CisgICAgfQogfQogCi1Gb250UGxhdGZvcm1EYXRhKiBG
b250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBm
b250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQotewotICAgIC8vIEhh
bmRsZSBnZW5lcmljIGZhbWlseSB0eXBlcyBzcGVjaWFsbHksIGJlY2F1c2UgZm9udGNvbmZpZyBk
b2VzIG5vdCBrbm93IHRoZW0sIGJ1dCB3ZSBoYXZlCi0gICAgLy8gY29kZSB0byBmYWxsYmFjayBj
b3JyZWN0bHkgaW4gb3VyIHBsYXRmb3JtIGRhdGEgaW1wbGVtZW50YXRpb24uCi0gICAgaWYgKCFm
YW1pbHkubGVuZ3RoKCkgfHwgZmFtaWx5LnN0YXJ0c1dpdGgoIi13ZWJraXQtIikKLSAgICAgICAg
fHwgKGZvbnREZXNjcmlwdGlvbi5nZW5lcmljRmFtaWx5KCkgIT0gRm9udERlc2NyaXB0aW9uOjpO
b0ZhbWlseSkKLSAgICAgICAgfHwgaXNXZWxsS25vd25Gb250TmFtZShmYW1pbHkpKQotICAgICAg
ICByZXR1cm4gbmV3IEZvbnRQbGF0Zm9ybURhdGEoZm9udERlc2NyaXB0aW9uLCBmYW1pbHkpOwog
Ci0gICAgLy8gRmlyc3QgY2hlY2sgdGhlIGZvbnQgZXhpc3RzLgotICAgIENTdHJpbmcgZmFtaWx5
TmFtZVN0cmluZyA9IGZhbWlseS5zdHJpbmcoKS51dGY4KCk7Ci0gICAgY29uc3QgY2hhciogZmNm
YW1pbHkgPSBmYW1pbHlOYW1lU3RyaW5nLmRhdGEoKTsKK3N0YXRpYyBib29sIGlzRmFsbGJhY2tG
b250QWxsb3dlZChjb25zdCBDU3RyaW5nJiBmYW1pbHlOYW1lKQoreworICAgIHJldHVybiAhc3Ry
Y2FzZWNtcChmYW1pbHlOYW1lLmRhdGEoKSwgInNhbnMiKQorICAgICAgICAgICB8fCAhc3RyY2Fz
ZWNtcChmYW1pbHlOYW1lLmRhdGEoKSwgInNhbnMtc2VyaWYiKQorICAgICAgICAgICB8fCAhc3Ry
Y2FzZWNtcChmYW1pbHlOYW1lLmRhdGEoKSwgInNlcmlmIikKKyAgICAgICAgICAgfHwgIXN0cmNh
c2VjbXAoZmFtaWx5TmFtZS5kYXRhKCksICJtb25vc3BhY2UiKTsKK30KIAorRm9udFBsYXRmb3Jt
RGF0YSogRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKK3sKKyAg
ICAvLyBUaGUgQ1NTIGZvbnQgbWF0Y2hpbmcgYWxnb3JpdGhtIChodHRwOi8vd3d3LnczLm9yZy9U
Ui9jc3MzLWZvbnRzLyNmb250LW1hdGNoaW5nLWFsZ29yaXRobSkKKyAgICAvLyBzYXlzIHRoYXQg
d2UgbXVzdCBmaW5kIGFuIGV4YWN0IG1hdGNoIGZvciBmb250IGZhbWlseSwgc2xhbnQgKGl0YWxp
YyBvciBvYmxpcXVlIGNhbiBiZSB1c2VkKQorICAgIC8vIGFuZCBmb250IHdlaWdodCAod2Ugb25s
eSBtYXRjaCBib2xkL25vbi1ib2xkIGhlcmUpLgogICAgIFBsYXRmb3JtUmVmUHRyPEZjUGF0dGVy
bj4gcGF0dGVybiA9IGFkb3B0UGxhdGZvcm1SZWYoRmNQYXR0ZXJuQ3JlYXRlKCkpOwotICAgIGlm
ICghRmNQYXR0ZXJuQWRkU3RyaW5nKHBhdHRlcm4uZ2V0KCksIEZDX0ZBTUlMWSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBGY0NoYXI4Kj4oZmNmYW1pbHkpKSkKKyAgICBDU3RyaW5nIGZhbWlseU5h
bWVTdHJpbmcgPSBnZXRGYW1pbHlOYW1lU3RyaW5nRnJvbUZvbnREZXNjcmlwdGlvbkFuZEZhbWls
eShmb250RGVzY3JpcHRpb24sIGZhbWlseSk7CisgICAgaWYgKCFGY1BhdHRlcm5BZGRTdHJpbmco
cGF0dGVybi5nZXQoKSwgRkNfRkFNSUxZLCByZWludGVycHJldF9jYXN0PGNvbnN0IEZjQ2hhcjgq
PihmYW1pbHlOYW1lU3RyaW5nLmRhdGEoKSkpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIE93
blB0cjxGY09iamVjdFNldD4gb2JqZWN0U2V0KEZjT2JqZWN0U2V0Q3JlYXRlKCkpOwotICAgIGlm
ICghRmNPYmplY3RTZXRBZGQob2JqZWN0U2V0LmdldCgpLCBGQ19GQU1JTFkpKQorICAgIGJvb2wg
aXRhbGljID0gZm9udERlc2NyaXB0aW9uLml0YWxpYygpOworICAgIGlmICghRmNQYXR0ZXJuQWRk
SW50ZWdlcihwYXR0ZXJuLmdldCgpLCBGQ19TTEFOVCwgaXRhbGljID8gRkNfU0xBTlRfSVRBTElD
IDogRkNfU0xBTlRfUk9NQU4pKQorICAgICAgICByZXR1cm4gMDsKKyAgICBib29sIGJvbGQgPSBm
b250RGVzY3JpcHRpb24ud2VpZ2h0KCkgPiBGb250V2VpZ2h0Qm9sZDsKKyAgICBpZiAoIUZjUGF0
dGVybkFkZEludGVnZXIocGF0dGVybi5nZXQoKSwgRkNfV0VJR0hULCBib2xkID8gRkNfV0VJR0hU
X0JPTEQgOiBGQ19XRUlHSFRfTk9STUFMKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFG
Y1BhdHRlcm5BZGREb3VibGUocGF0dGVybi5nZXQoKSwgRkNfUElYRUxfU0laRSwgZm9udERlc2Ny
aXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIE93
blB0cjxGY0ZvbnRTZXQ+IGZvbnRTZXQoRmNGb250TGlzdCgwLCBwYXR0ZXJuLmdldCgpLCBvYmpl
Y3RTZXQuZ2V0KCkpKTsKLQotICAgIGlmICghZm9udFNldCkKKyAgICAvLyBUaGUgZm9sbG93aW5n
IGNvbW1lbnQgYW5kIHN0cmF0ZWd5IGFyZSBvcmlnaW5hbGx5IGZyb20gU2tpYSAoc3JjL3BvcnRz
L1NrRm9udEhvc3RfZm9udGNvbmZpZy5jcHApOgorICAgIC8vIEZvbnQgbWF0Y2hpbmc6CisgICAg
Ly8gQ1NTIG9mdGVuIHNwZWNpZmllcyBhIGZhbGxiYWNrIGxpc3Qgb2YgZmFtaWxpZXM6CisgICAg
Ly8gICAgZm9udC1mYW1pbHk6IGEsIGIsIGMsIHNlcmlmOworICAgIC8vIEhvd2V2ZXIsIGZvbnRj
b25maWcgd2lsbCBhbHdheXMgZG8gaXRzIGJlc3QgdG8gZmluZCAqYSogZm9udCB3aGVuIGFza2Vk
CisgICAgLy8gZm9yIHNvbWV0aGluZyBzbyB3ZSBuZWVkIGEgd2F5IHRvIHRlbGwgaWYgdGhlIG1h
dGNoIHdoaWNoIGl0IGhhcyBmb3VuZCBpcworICAgIC8vICJnb29kIGVub3VnaCIgZm9yIHVzLiBP
dGhlcndpc2UsIHdlIGNhbiByZXR1cm4gbnVsbCB3aGljaCBnZXRzIHBpcGVkIHVwCisgICAgLy8g
YW5kIGxldHMgV2ViS2l0IGtub3cgdG8gdHJ5IHRoZSBuZXh0IENTUyBmYW1pbHkgbmFtZS4gSG93
ZXZlciwgZm9udGNvbmZpZworICAgIC8vIGNvbmZpZ3MgYWxsb3cgc3Vic3RpdHV0aW9ucyAobWFw
cGluZyAiQXJpYWwgLT4gSGVsdmV0aWNhIiBldGMpIGFuZCB3ZQorICAgIC8vIHdpc2ggdG8gc3Vw
cG9ydCB0aGF0LgorICAgIC8vCisgICAgLy8gVGh1cywgaWYgYSBzcGVjaWZpYyBmYW1pbHkgaXMg
cmVxdWVzdGVkIHdlIHNldCBAZmFtaWx5X3JlcXVlc3RlZC4gVGhlbiB3ZQorICAgIC8vIHJlY29y
ZCB0d28gc3RyaW5nczogdGhlIGZhbWlseSBuYW1lIGFmdGVyIGNvbmZpZyBwcm9jZXNzaW5nIGFu
ZCB0aGUKKyAgICAvLyBmYW1pbHkgbmFtZSBhZnRlciByZXNvbHZpbmcuIElmIHRoZSB0d28gYXJl
IGVxdWFsLCBpdCdzIGEgZ29vZCBtYXRjaC4KKyAgICAvLworICAgIC8vIFNvIGNvbnNpZGVyIHRo
ZSBjYXNlIHdoZXJlIGEgdXNlciBoYXMgbWFwcGVkIEFyaWFsIHRvIEhlbHZldGljYSBpbiB0aGVp
cgorICAgIC8vIGNvbmZpZy4KKyAgICAvLyAgICByZXF1ZXN0ZWQgZmFtaWx5OiAiQXJpYWwiCisg
ICAgLy8gICAgcG9zdF9jb25maWdfZmFtaWx5OiAiSGVsdmV0aWNhIgorICAgIC8vICAgIHBvc3Rf
bWF0Y2hfZmFtaWx5OiAiSGVsdmV0aWNhIgorICAgIC8vICAgICAgLT4gZ29vZCBtYXRjaAorICAg
IC8vCisgICAgLy8gYW5kIGZvciBhIG1pc3NpbmcgZm9udDoKKyAgICAvLyAgICByZXF1ZXN0ZWQg
ZmFtaWx5OiAiTW9uYWNvIgorICAgIC8vICAgIHBvc3RfY29uZmlnX2ZhbWlseTogIk1vbmFjbyIK
KyAgICAvLyAgICBwb3N0X21hdGNoX2ZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIKKyAgICAvLyAg
ICAgIC0+IEJBRCBtYXRjaAorICAgIC8vCisgICAgRmNDb25maWdTdWJzdGl0dXRlKDAsIHBhdHRl
cm4uZ2V0KCksIEZjTWF0Y2hQYXR0ZXJuKTsKKyAgICBGY0RlZmF1bHRTdWJzdGl0dXRlKHBhdHRl
cm4uZ2V0KCkpOworCisgICAgRmNDaGFyOCogZmFtaWx5TmFtZUFmdGVyQ29uZmlndXJhdGlvbjsK
KyAgICBGY1BhdHRlcm5HZXRTdHJpbmcocGF0dGVybi5nZXQoKSwgRkNfRkFNSUxZLCAwLCAmZmFt
aWx5TmFtZUFmdGVyQ29uZmlndXJhdGlvbik7CisKKyAgICBGY1Jlc3VsdCBmb250Q29uZmlnUmVz
dWx0OworICAgIFBsYXRmb3JtUmVmUHRyPEZjUGF0dGVybj4gcmVzdWx0UGF0dGVybiA9IGFkb3B0
UGxhdGZvcm1SZWYoRmNGb250TWF0Y2goMCwgcGF0dGVybi5nZXQoKSwgJmZvbnRDb25maWdSZXN1
bHQpKTsKKyAgICBpZiAoIXJlc3VsdFBhdHRlcm4pIC8vIE5vIG1hdGNoLgogICAgICAgICByZXR1
cm4gMDsKIAotICAgIGlmICghZm9udFNldC0+Zm9udHMpCisgICAgLy8gUHJvcGVybHkgaGFuZGxl
IHRoZSBzaXR1YXRpb24gd2hlcmUgRm9udGNvbmZpZyBnaXZlcyB1cyBhIGZvbnQgdGhhdCBoYXMg
YSBkaWZmZXJlbnQgZmFtaWx5IHRoYW4gd2UgcmVxdWVzdGVkLgorICAgIEZjQ2hhcjgqIGZhbWls
eU5hbWVBZnRlck1hdGNoaW5nOworICAgIEZjUGF0dGVybkdldFN0cmluZyhyZXN1bHRQYXR0ZXJu
LmdldCgpLCBGQ19GQU1JTFksIDAsICZmYW1pbHlOYW1lQWZ0ZXJNYXRjaGluZyk7CisgICAgaWYg
KHN0cmNhc2VjbXAocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZmFtaWx5TmFtZUFmdGVyQ29uZmln
dXJhdGlvbiksCisgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNoYXIqPihmYW1pbHlOYW1l
QWZ0ZXJNYXRjaGluZykpICYmICFpc0ZhbGxiYWNrRm9udEFsbG93ZWQoZmFtaWx5TmFtZVN0cmlu
ZykpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIG5ldyBGb250UGxhdGZvcm1EYXRh
KGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5KTsKKyAgICByZXR1cm4gbmV3IEZvbnRQbGF0Zm9ybURh
dGEocmVzdWx0UGF0dGVybi5nZXQoKSwgZm9udERlc2NyaXB0aW9uKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHAKaW5kZXggNmI3NmMyYWQ0MjU1ZGU5ZmMyMjNiMzgzNzNlYTE1NzM0YTdkYmRh
OC4uZDE1OWY1NjgzNjliOTMxZjBiNjYyODE4MzVjMmQwYWI2ZWZjMGJlZCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwCkBAIC0yMyw2ICsyMyw4IEBACiAKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRh
LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8Y2Fpcm8tZnQuaD4KKyNp
bmNsdWRlIDxjYWlyby5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udFBsYXRmb3JtRGF0YUZyZWVU
eXBlLmNwcAppbmRleCA3OTY4OTY2NzE0ZmUyNDVhYWNlMmE2ZGNhZTU0ZmE2Y2NiMTEyMDlkLi43
NDg4ZGExODMyOGJlNmNiMzUzMWM1ZTRhNTIyMzZkMDQzZGFlMGQ1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250UGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwCkBAIC0zLDcgKzMsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwg
RW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBB
bHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBI
YW5zIFBldGVyIEZyZXl0aGVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgSWdhbGlhIFMuTC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBJZ2FsaWEgUy5MLgogICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yNywxMDAgKzI3LDQyIEBACiAKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KLQogI2luY2x1ZGUgPGNhaXJvLWZ0Lmg+CiAjaW5jbHVkZSA8Y2Fp
cm8uaD4KICNpbmNsdWRlIDxmb250Y29uZmlnL2ZjZnJlZXR5cGUuaD4KKwogI2lmICFQTEFURk9S
TShFRkwpIHx8IEVOQUJMRShHTElCX1NVUFBPUlQpCiAjaW5jbHVkZSA8Z2RrL2dkay5oPgogI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRm
b3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRv
bWljU3RyaW5nJiBmYW1pbHlOYW1lKQotICAgIDogbV9mYWxsYmFja3MoMCkKK0ZvbnRQbGF0Zm9y
bURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoRmNQYXR0ZXJuKiBwYXR0ZXJuLCBjb25zdCBGb250RGVz
Y3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikKKyAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQorICAg
ICwgbV9mYWxsYmFja3MoMCkKICAgICAsIG1fc2l6ZShmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQ
aXhlbFNpemUoKSkKICAgICAsIG1fc3ludGhldGljQm9sZChmYWxzZSkKICAgICAsIG1fc3ludGhl
dGljT2JsaXF1ZShmYWxzZSkKIHsKLSAgICBGb250UGxhdGZvcm1EYXRhOjppbml0KCk7Ci0KLSAg
ICBDU3RyaW5nIGZhbWlseU5hbWVTdHJpbmcgPSBmYW1pbHlOYW1lLnN0cmluZygpLnV0ZjgoKTsK
LSAgICBjb25zdCBjaGFyKiBmY2ZhbWlseSA9IGZhbWlseU5hbWVTdHJpbmcuZGF0YSgpOwotICAg
IGludCBmY3NsYW50ID0gRkNfU0xBTlRfUk9NQU47Ci0gICAgLy8gRklYTUU6IE1hcCBhbGwgRm9u
dFdlaWdodCB2YWx1ZXMgdG8gZm9udGNvbmZpZyB3ZWlnaHRzLgotICAgIGludCBmY3dlaWdodCA9
IEZDX1dFSUdIVF9OT1JNQUw7Ci0gICAgZG91YmxlIGZjc2l6ZSA9IGZvbnREZXNjcmlwdGlvbi5j
b21wdXRlZFBpeGVsU2l6ZSgpOwotICAgIGlmIChmb250RGVzY3JpcHRpb24uaXRhbGljKCkpCi0g
ICAgICAgIGZjc2xhbnQgPSBGQ19TTEFOVF9JVEFMSUM7Ci0gICAgaWYgKGZvbnREZXNjcmlwdGlv
bi53ZWlnaHQoKSA+PSBGb250V2VpZ2h0NjAwKQotICAgICAgICBmY3dlaWdodCA9IEZDX1dFSUdI
VF9CT0xEOwotCi0gICAgaW50IHR5cGUgPSBmb250RGVzY3JpcHRpb24uZ2VuZXJpY0ZhbWlseSgp
OwotCi0gICAgUGxhdGZvcm1SZWZQdHI8RmNQYXR0ZXJuPiBwYXR0ZXJuID0gYWRvcHRQbGF0Zm9y
bVJlZihGY1BhdHRlcm5DcmVhdGUoKSk7Ci0gICAgY2Fpcm9fZm9udF9mYWNlX3QqIGZvbnRGYWNl
OworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgZ2V0dGluZyB0aGVzZSBvcHRpb25zIGZyb20g
Rm9udENvbmZpZy4KICAgICBzdGF0aWMgY29uc3QgY2Fpcm9fZm9udF9vcHRpb25zX3QqIGRlZmF1
bHRPcHRpb25zID0gY2Fpcm9fZm9udF9vcHRpb25zX2NyZWF0ZSgpOwotICAgIGNvbnN0IGNhaXJv
X2ZvbnRfb3B0aW9uc190KiBvcHRpb25zID0gTlVMTDsKLSAgICBjYWlyb19tYXRyaXhfdCBmb250
TWF0cml4OwotCi0gICAgaWYgKCFGY1BhdHRlcm5BZGRTdHJpbmcocGF0dGVybi5nZXQoKSwgRkNf
RkFNSUxZLCByZWludGVycHJldF9jYXN0PGNvbnN0IEZjQ2hhcjgqPihmY2ZhbWlseSkpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEZvbnREZXNjcmlw
dGlvbjo6U2VyaWZGYW1pbHk6Ci0gICAgICAgIGZjZmFtaWx5ID0gInNlcmlmIjsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBGb250RGVzY3JpcHRpb246OlNhbnNTZXJpZkZhbWlseToKLSAgICAg
ICAgZmNmYW1pbHkgPSAic2Fucy1zZXJpZiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9u
dERlc2NyaXB0aW9uOjpNb25vc3BhY2VGYW1pbHk6Ci0gICAgICAgIGZjZmFtaWx5ID0gIm1vbm9z
cGFjZSI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9udERlc2NyaXB0aW9uOjpTdGFuZGFy
ZEZhbWlseToKLSAgICAgICAgZmNmYW1pbHkgPSAic2Fucy1zZXJpZiI7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgRm9udERlc2NyaXB0aW9uOjpOb0ZhbWlseToKLSAgICBkZWZhdWx0OgotICAg
ICAgICBmY2ZhbWlseSA9IE5VTEw7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmIChm
Y2ZhbWlseSAmJiAhRmNQYXR0ZXJuQWRkU3RyaW5nKHBhdHRlcm4uZ2V0KCksIEZDX0ZBTUlMWSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBGY0NoYXI4Kj4oZmNmYW1pbHkpKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGlmICghRmNQYXR0ZXJuQWRkSW50ZWdlcihwYXR0ZXJuLmdldCgpLCBGQ19XRUlH
SFQsIGZjd2VpZ2h0KSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghRmNQYXR0ZXJuQWRkSW50
ZWdlcihwYXR0ZXJuLmdldCgpLCBGQ19TTEFOVCwgZmNzbGFudCkpCi0gICAgICAgIHJldHVybjsK
LSAgICBpZiAoIUZjUGF0dGVybkFkZERvdWJsZShwYXR0ZXJuLmdldCgpLCBGQ19QSVhFTF9TSVpF
LCBmY3NpemUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBGY0NvbmZpZ1N1YnN0aXR1dGUoMCwg
cGF0dGVybi5nZXQoKSwgRmNNYXRjaFBhdHRlcm4pOwotICAgIEZjRGVmYXVsdFN1YnN0aXR1dGUo
cGF0dGVybi5nZXQoKSk7Ci0KLSAgICBGY1Jlc3VsdCBmY3Jlc3VsdDsKLSAgICBtX3BhdHRlcm4g
PSBhZG9wdFBsYXRmb3JtUmVmKEZjRm9udE1hdGNoKDAsIHBhdHRlcm4uZ2V0KCksICZmY3Jlc3Vs
dCkpOwotICAgIC8vIEZJWE1FOiBzaG91bGQgd2Ugc2V0IHNvbWUgZGVmYXVsdCBmb250PwotICAg
IGlmICghbV9wYXR0ZXJuKQotICAgICAgICByZXR1cm47Ci0gICAgZm9udEZhY2UgPSBjYWlyb19m
dF9mb250X2ZhY2VfY3JlYXRlX2Zvcl9wYXR0ZXJuKG1fcGF0dGVybi5nZXQoKSk7Ci0gICAgY2Fp
cm9fbWF0cml4X3QgY3RtOwotICAgIGNhaXJvX21hdHJpeF9pbml0X3NjYWxlKCZmb250TWF0cml4
LCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgZm9udERlc2NyaXB0aW9uLmNv
bXB1dGVkUGl4ZWxTaXplKCkpOwotICAgIGNhaXJvX21hdHJpeF9pbml0X2lkZW50aXR5KCZjdG0p
OwotCisgICAgY29uc3QgY2Fpcm9fZm9udF9vcHRpb25zX3QqIG9wdGlvbnMgPSAwOwogI2lmICFQ
TEFURk9STShFRkwpIHx8IEVOQUJMRShHTElCX1NVUFBPUlQpCiAgICAgaWYgKEdka1NjcmVlbiog
c2NyZWVuID0gZ2RrX3NjcmVlbl9nZXRfZGVmYXVsdCgpKQotZ2RrX3NjcmVlbl9nZXRfZm9udF9v
cHRpb25zKHNjcmVlbik7CisgICAgICAgIG9wdGlvbnMgPSBnZGtfc2NyZWVuX2dldF9mb250X29w
dGlvbnMoc2NyZWVuKTsKICNlbmRpZgotCi0gICAgLy8gZ2RrX3NjcmVlbl9nZXRfZm9udF9vcHRp
b25zKCkgcmV0dXJucyBOVUxMIGlmIG5vIGRlZmF1bHQgb3B0aW9ucyBhcmUKKyAgICAvLyBnZGtf
c2NyZWVuX2dldF9mb250X29wdGlvbnMoKSByZXR1cm5zIG51bGwgaWYgbm8gZGVmYXVsdCBvcHRp
b25zIGFyZQogICAgIC8vIHNldCwgc28gd2UgYWx3YXlzIGhhdmUgdG8gY2hlY2suCiAgICAgaWYg
KCFvcHRpb25zKQogICAgICAgICBvcHRpb25zID0gZGVmYXVsdE9wdGlvbnM7CiAKLSAgICBtX3Nj
YWxlZEZvbnQgPSBhZG9wdFBsYXRmb3JtUmVmKGNhaXJvX3NjYWxlZF9mb250X2NyZWF0ZShmb250
RmFjZSwgJmZvbnRNYXRyaXgsICZjdG0sIG9wdGlvbnMpKTsKLSAgICBjYWlyb19mb250X2ZhY2Vf
ZGVzdHJveShmb250RmFjZSk7CisgICAgY2Fpcm9fbWF0cml4X3QgZm9udE1hdHJpeDsKKyAgICBj
YWlyb19tYXRyaXhfaW5pdF9zY2FsZSgmZm9udE1hdHJpeCwgbV9zaXplLCBtX3NpemUpOworICAg
IGNhaXJvX21hdHJpeF90IGN0bTsKKyAgICBjYWlyb19tYXRyaXhfaW5pdF9pZGVudGl0eSgmY3Rt
KTsKKworICAgIFBsYXRmb3JtUmVmUHRyPGNhaXJvX2ZvbnRfZmFjZV90PiBmb250RmFjZSA9IGFk
b3B0UGxhdGZvcm1SZWYoY2Fpcm9fZnRfZm9udF9mYWNlX2NyZWF0ZV9mb3JfcGF0dGVybihtX3Bh
dHRlcm4uZ2V0KCkpKTsKKyAgICBtX3NjYWxlZEZvbnQgPSBhZG9wdFBsYXRmb3JtUmVmKGNhaXJv
X3NjYWxlZF9mb250X2NyZWF0ZShmb250RmFjZS5nZXQoKSwgJmZvbnRNYXRyaXgsICZjdG0sIG9w
dGlvbnMpKTsKIH0KIAogRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShmbG9hdCBz
aXplLCBib29sIGJvbGQsIGJvb2wgaXRhbGljKQpAQCAtMTg0LDE5ICsxMjYsNiBAQCBGb250UGxh
dGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVy
KQogICAgICp0aGlzID0gb3RoZXI7CiB9CiAKLWJvb2wgRm9udFBsYXRmb3JtRGF0YTo6aW5pdCgp
Ci17Ci0gICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKLSAgICBpZiAoaW5pdGlh
bGl6ZWQpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmICghRmNJbml0KCkpIHsKLSAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJDYW4ndCBpbml0IGZvbnQgY29uZmlnIGxpYnJhcnlcbiIpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQogRm9udFBsYXRmb3JtRGF0YTo6fkZvbnRQbGF0Zm9ybURhdGEo
KQogewogICAgIGlmIChtX2ZhbGxiYWNrcykgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmgKaW5kZXggOTg3
YTY4NDEyMmY0NGY4YTU2MzkxNzE3NmFjYzMyMjdmMDcwNjk0MC4uZjM0ODhlZjAyMjg1ZDc1ODIy
NGM0M2JjMDI4MGNiYTM2ZjA2ZmY5NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuaAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5oCkBAIC0zLDYgKzMs
NyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFp
bC5jb20KICAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgog
ICogQ29weXJpZ2h0IChDKSAyMDA3IFBpb25lZXIgUmVzZWFyY2ggQ2VudGVyIFVTQSwgSW5jLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKQEAgLTI5LDExICszMCwxMCBAQAogI2luY2x1ZGUgIkdseXBoQnVmZmVy
LmgiCiAjaW5jbHVkZSAiSGFzaEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtUmVmUHRy
Q2Fpcm8uaCIKLSNpbmNsdWRlIDxjYWlyby1mdC5oPgotI2luY2x1ZGUgPGNhaXJvLmg+Ci0jaW5j
bHVkZSA8Zm9udGNvbmZpZy9mY2ZyZWV0eXBlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IAordHlwZWRlZiBzdHJ1Y3QgX0ZjRm9udFNldCBGY0ZvbnRTZXQ7CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CkBAIC01MywxNCArNTMsMTMgQEAgcHVi
bGljOgogICAgICAgICAsIG1fc3ludGhldGljT2JsaXF1ZShmYWxzZSkKICAgICAgICAgeyB9CiAK
LSAgICBGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZmFtaWx5KTsKKyAgICBGb250UGxhdGZvcm1EYXRhKEZjUGF0dGVybiosIGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYpOwogICAgIEZvbnRQbGF0Zm9ybURhdGEoY2Fpcm9fZm9udF9mYWNl
X3QqIGZvbnRGYWNlLCBmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wgaXRhbGljKTsKICAgICBG
b250UGxhdGZvcm1EYXRhKGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMpOwogICAg
IEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogCiAgICAgfkZvbnRQ
bGF0Zm9ybURhdGEoKTsKIAotICAgIHN0YXRpYyBib29sIGluaXQoKTsKICAgICBib29sIGlzRml4
ZWRQaXRjaCgpOwogICAgIGZsb2F0IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAg
ICB2b2lkIHNldFNpemUoZmxvYXQgc2l6ZSkgeyBtX3NpemUgPSBzaXplOyB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dseXBoUGFnZVRyZWVOb2RlQ2Fpcm8u
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HbHlwaFBhZ2VUcmVlTm9kZUNh
aXJvLmNwcAppbmRleCAyNmRhNjhkOWZkZTJmMzA1ODE1NDJlYWU4NzdiMmM2NTUxZmY1YTljLi42
NmU5YzE2OTJiNjlhNzBmNWUwMzlhMjZmMzNmMTI4OGY1MDk1ZTEwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dseXBoUGFnZVRyZWVOb2RlQ2Fpcm8uY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR2x5cGhQYWdlVHJlZU5vZGVDYWly
by5jcHAKQEAgLTMyLDYgKzMyLDkgQEAKICNpbmNsdWRlICJHbHlwaFBhZ2VUcmVlTm9kZS5oIgog
CiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKKyNpbmNsdWRlIDxjYWlyby1mdC5oPgorI2lu
Y2x1ZGUgPGNhaXJvLmg+CisjaW5jbHVkZSA8Zm9udGNvbmZpZy9mY2ZyZWV0eXBlLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QbGF0Zm9ybVJlZlB0ckNhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGxhdGZvcm1SZWZQdHJDYWlyby5jcHAKaW5kZXggYWE0NjZmOTk0YjIyOGUwNDFj
NmY1NDczOTUyNDNhZWJhNDc1MjY1ZS4uZDI4OTU4NWQ4OWEzYmIwOTgxNzRhOWQ4OWJiMzc5NGJk
YTJjMTc0OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0
Zm9ybVJlZlB0ckNhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1BsYXRmb3JtUmVmUHRyQ2Fpcm8uY3BwCkBAIC01NCw2ICs1NCwxOSBAQCB0ZW1wbGF0ZSA8PiB2
b2lkIGRlcmVmUGxhdGZvcm1QdHIoY2Fpcm9fc3VyZmFjZV90KiBwdHIpCiAgICAgICAgIGNhaXJv
X3N1cmZhY2VfZGVzdHJveShwdHIpOwogfQogCit0ZW1wbGF0ZSA8PiBjYWlyb19mb250X2ZhY2Vf
dCogcmVmUGxhdGZvcm1QdHIoY2Fpcm9fZm9udF9mYWNlX3QqIHB0cikKK3sKKyAgICBpZiAocHRy
KQorICAgICAgICBjYWlyb19mb250X2ZhY2VfcmVmZXJlbmNlKHB0cik7CisgICAgcmV0dXJuIHB0
cjsKK30KKwordGVtcGxhdGUgPD4gdm9pZCBkZXJlZlBsYXRmb3JtUHRyKGNhaXJvX2ZvbnRfZmFj
ZV90KiBwdHIpCit7CisgICAgaWYgKHB0cikKKyAgICAgICAgY2Fpcm9fZm9udF9mYWNlX2Rlc3Ry
b3kocHRyKTsKK30KKwogdGVtcGxhdGUgPD4gY2Fpcm9fc2NhbGVkX2ZvbnRfdCogcmVmUGxhdGZv
cm1QdHIoY2Fpcm9fc2NhbGVkX2ZvbnRfdCogcHRyKQogewogICAgIGlmIChwdHIpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtUmVmUHRyQ2Fpcm8u
aCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1SZWZQdHJDYWlyby5o
CmluZGV4IDRiNDVjMWJjZjE2ZDQ3ZTRlYjRmMWU5ZjE1YzUxMDkwMWQ1NzBlMDIuLjNiNzIwYzYy
MTg1NGIxMjUyZGY1YWEwYjAxZjdiMDU3MzIzMDFiZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1SZWZQdHJDYWlyby5oCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1SZWZQdHJDYWlyby5oCkBAIC0yNCw2ICsy
NCw3IEBACiAKIHR5cGVkZWYgc3RydWN0IF9jYWlybyBjYWlyb190OwogdHlwZWRlZiBzdHJ1Y3Qg
X2NhaXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFjZV90OwordHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX2Zv
bnRfZmFjZSBjYWlyb19mb250X2ZhY2VfdDsKIHR5cGVkZWYgc3RydWN0IF9jYWlyb19zY2FsZWRf
Zm9udCBjYWlyb19zY2FsZWRfZm9udF90OwogCiAjaWYgZGVmaW5lZChVU0VfRlJFRVRZUEUpCkBA
IC0zOCw2ICszOSw5IEBAIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZQbGF0Zm9ybVB0cihjYWlyb190
KiBwdHIpOwogdGVtcGxhdGUgPD4gY2Fpcm9fc3VyZmFjZV90KiByZWZQbGF0Zm9ybVB0cihjYWly
b19zdXJmYWNlX3QqIHB0cik7CiB0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmUGxhdGZvcm1QdHIoY2Fp
cm9fc3VyZmFjZV90KiBwdHIpOwogCit0ZW1wbGF0ZSA8PiBjYWlyb19mb250X2ZhY2VfdCogcmVm
UGxhdGZvcm1QdHIoY2Fpcm9fZm9udF9mYWNlX3QqKTsKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZQ
bGF0Zm9ybVB0cihjYWlyb19mb250X2ZhY2VfdCopOworCiB0ZW1wbGF0ZSA8PiBjYWlyb19zY2Fs
ZWRfZm9udF90KiByZWZQbGF0Zm9ybVB0cihjYWlyb19zY2FsZWRfZm9udF90Kik7CiB0ZW1wbGF0
ZSA8PiB2b2lkIGRlcmVmUGxhdGZvcm1QdHIoY2Fpcm9fc2NhbGVkX2ZvbnRfdCopOwogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1NpbXBsZUZvbnREYXRhQ2Fp
cm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9TaW1wbGVGb250RGF0YUNh
aXJvLmNwcAppbmRleCBmZDg1ZDZmNDU5OGU1ODM5NGQ4MmNjOWVkYjllMTQ4OTg2ZDEwYjUxLi4z
YjNjZjAwNTJiM2ZhZmIyMDEzNzBiMWVjODk1ZWNjN2U3ZGJjY2JjIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1NpbXBsZUZvbnREYXRhQ2Fpcm8uY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vU2ltcGxlRm9udERhdGFDYWlyby5jcHAK
QEAgLTM4LDcgKzM4LDkgQEAKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGb250
RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgorI2luY2x1ZGUgPGNhaXJv
LWZ0Lmg+CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNsdWRlIDxmb250Y29uZmlnL2ZjZnJlZXR5
cGUuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC04MSwxMiArODMsMTIgQEAgdm9pZCBTaW1wbGVGb250RGF0YTo6cGxhdGZvcm1EZXN0cm95
KCkKIAogU2ltcGxlRm9udERhdGEqIFNpbXBsZUZvbnREYXRhOjpzbWFsbENhcHNGb250RGF0YShj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikgY29uc3QKIHsKLSAgICBpZiAo
IW1fc21hbGxDYXBzRm9udERhdGEpIHsKLSAgICAgICAgRm9udERlc2NyaXB0aW9uIGRlc2MgPSBG
b250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKLSAgICAgICAgZGVzYy5zZXRDb21wdXRl
ZFNpemUoMC43MGYgKiBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRTaXplKCkpOwotICAgICAgICBG
b250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YShkZXNjLCBkZXNjLmZhbWlseSgpLmZhbWlseSgp
KTsKLSAgICAgICAgbV9zbWFsbENhcHNGb250RGF0YSA9IG5ldyBTaW1wbGVGb250RGF0YShwbGF0
Zm9ybURhdGEpOwotICAgIH0KKyAgICAvLyBGSVhNRShtcm9iaW5zb24pOiBJIHRoaW5rIHdlIHdh
bnQgdG8gYXNrIEZvbnRDb25maWcgZm9yIHRoZSByaWdodCBmb250IGFnYWluLgorICAgIGlmICgh
bV9zbWFsbENhcHNGb250RGF0YSkKKyAgICAgICAgbV9zbWFsbENhcHNGb250RGF0YSA9IG5ldyBT
aW1wbGVGb250RGF0YSgKKyAgICAgICAgICAgIEZvbnRQbGF0Zm9ybURhdGEoY2Fpcm9fc2NhbGVk
X2ZvbnRfZ2V0X2ZvbnRfZmFjZShtX3BsYXRmb3JtRGF0YS5zY2FsZWRGb250KCkpLAorICAgICAg
ICAgICAgMC43MGYgKiBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRTaXplKCksIG1fcGxhdGZvcm1E
YXRhLnN5bnRoZXRpY0JvbGQoKSwgbV9wbGF0Zm9ybURhdGEuc3ludGhldGljT2JsaXF1ZSgpKSk7
CisKICAgICByZXR1cm4gbV9zbWFsbENhcHNGb250RGF0YTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68290</attachid>
            <date>2010-09-21 14:11:47 -0700</date>
            <delta_ts>2010-10-04 15:13:20 -0700</delta_ts>
            <desc>Updated patch with small fix for bold fonts</desc>
            <filename>bug-36548-20100921141146.patch</filename>
            <type>text/plain</type>
            <size>26006</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZGVkYjNmOGRmNWNhZTI0NDBjZjQzMmIzOWY3Mzg3NDgxZDhkZGFhLi45YTJiMGM0
MjcxNTA0ZDJmOWQ1ZjI5NjA3OTQ0Y2ViNGViMThhMTQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDktMTkgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFdyb25n
IGZvbnQgaW5zdGFudGlhdGVkIGZyb20gYW4gdW5rbm93biBmb250IGZhbWlseQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY1NDgKKworICAgICAgICAq
IHBsYXRmb3JtL2d0ay9mb250cy9mb250LWZhbWlseS1mYWxsYmFjay1leHBlY3RlZC50eHQ6IENv
cGllZCBmcm9tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uLzUxMzY2OTYtZXhwZWN0ZWQu
dHh0LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9mb250cy9mb250LWZhbWlseS1mYWxsYmFjay5o
dG1sOiBBZGRlZC4KKwogMjAxMC0wOS0xNyAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgTGFuZCBuZXcgV2luZG93cyByZXN1bHRzIGZvciBmYXN0L2Zvcm1zL2ZpbGUt
aW5wdXQtZGlzYWJsZWQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L2ZvbnRzL2ZvbnQtZmFtaWx5LWZhbGxiYWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9mb250cy9mb250LWZhbWlseS1mYWxsYmFjay1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2VmMjJlOWE0MzFhZDAyNzI3MTNiNzFmZGM4Nzk0MDE2YzhlZjEyZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mb250cy9mb250LWZhbWlseS1mYWxs
YmFjay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL2ZvbnRzL2ZvbnQtZmFtaWx5LWZhbGxiYWNrLmh0bWwgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvZm9udHMvZm9udC1mYW1pbHktZmFsbGJhY2suaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43Y2U1MTEwMGJhYTA2OTI0NTUwNGU5NmExNjFhMTMwNWMyMjJkMDA1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ZvbnRzL2ZvbnQtZmFtaWx5LWZh
bGxiYWNrLmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgPHNj
cmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgewor
ICAgICAgICAgICAgdmFyIHJlYWxXaWR0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb3Vy
aWVyIikub2Zmc2V0V2lkdGg7CisgICAgICAgICAgICB2YXIgcmVhbEhlaWdodCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb3VyaWVyIikub2Zmc2V0SGVpZ2h0OworICAgICAgICAgICAgdmFy
IHVua25vd25XaWR0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1bmtub3duIikub2Zmc2V0
V2lkdGg7CisgICAgICAgICAgICB2YXIgdW5rbm93bkhlaWdodCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ1bmtub3duIikub2Zmc2V0SGVpZ2h0OworICAgICAgICAgICAgZG9jdW1lbnQuYm9k
eS5pbm5lckhUTUwgPSAocmVhbFdpZHRoID09IHVua25vd25XaWR0aCkgJiYgKHJlYWxIZWlnaHQg
JiYgdW5rbm93bkhlaWdodCkgPyAKKyAgICAgICAgICAgICAgIlBBU1MiIDogIkZBSUwuIFBhcmFn
cmFwaCBkaW1lbnNpb25zIGRpZCBub3QgbWF0Y2guIjsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InRlc3QoKSI+CisgICAgICAgIDwhLS0g
Qm90aCBwYXJhZ3JhcGhzIHNob3VsZCBiZSByZW5kZXJlZCB3aXRoIHRoZSBzYW1lIGZvbnQgLS0+
CisgICAgICAgIDxwIGlkPSJjb3VyaWVyIiBzdHlsZT0iZGlzcGxheTogaW5saW5lOyBmb250LXNp
emU6IDcycHg7IGZvbnQtZmFtaWx5OiBDb3VyaWVyOyI+CisgICAgICAgICZuYnNwOyAhICIgIyAk
ICUgJmFtcDsgJyAoICkgKiArICwgLSAuIC8gMCAxIDIgMyA0IDUgNiA3IDggOSA6IDsgJmx0OyA9
CisgICAgICAgICZndDsgPyBAIEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMg
VCBVIFYgVyBYIFkgWiBbIFwgXSBeIF8gYCBhCisgICAgICAgIGIgYyBkIGUgZiBnIGggaSBqIGsg
bCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IHogeyB8IH0KKyAgICAgICAgPC9wPgorICAgICAg
ICA8cCBpZD0idW5rbm93biIgc3R5bGU9ImRpc3BsYXk6IGlubGluZTsgZm9udC1zaXplOiA3MnB4
OyBmb250LWZhbWlseTogVW5rbm93bkZvbnRGYW1pbHksIENvdXJpZXIsIHNlcmlmOyI+CisgICAg
ICAgICZuYnNwOyAhICIgIyAkICUgJmFtcDsgJyAoICkgKiArICwgLSAuIC8gMCAxIDIgMyA0IDUg
NiA3IDggOSA6IDsgJmx0OyA9CisgICAgICAgICZndDsgPyBAIEEgQiBDIEQgRSBGIEcgSCBJIEog
SyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFkgWiBbIFwgXSBeIF8gYCBhCisgICAgICAgIGIg
YyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IHogeyB8IH0KKyAg
ICAgICAgPC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNkYjQ2NzBiY2NjMDU5NTU0MDBjZDkx
N2Q5MDU3YzBhZWYwYWU5Ny4uNjJiMjdlNTdiOGJjODY3ZGYzMzdmNTQzMGZiOGU0NWVmMjNmNTdi
OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0OCBAQAorMjAxMC0wOS0xOSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29u
QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW0dUS10gV3JvbmcgZm9udCBpbnN0YW50aWF0ZWQgZnJvbSBhbiB1bmtub3duIGZvbnQg
ZmFtaWx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NjU0OAorCisgICAgICAgIFdoZW4gRm9udENvbmZpZyByZXR1cm5zIGEgbWF0Y2ggZm9yIGEgcGFy
dGljdWxhciBmYW1pbHkgbmFtZSwgZW5zdXJlIHRoYXQKKyAgICAgICAgdGhlIGZhbWlseSBuYW1l
IG1hdGNoZXMgdGhlIGNvbmZpZ3VyZWQgYWxpYXMgZm9yIHRoZSBvcmlnaW5hbCBwYXR0ZXJuLiBU
aGlzCisgICAgICAgIHNob3VsZCBwcmV2ZW50IHNlbGVjdGluZyBGb250Q29uZmlnIGZhbGxiYWNr
cyBpbiBzaXR1YXRpb25zIHdoZXJlIHRoZSBuZXh0CisgICAgICAgIGZvbnQgb24gdGhlIENTUyBm
YWxsYmFjayBsaXN0IHNob3VsZCBiZSB1c2VkLiBUaGlzIHJlcXVpcmVzIG1vdmluZyBhbGwgRm9u
dENvbmZpZworICAgICAgICBtYXRjaGluZyBsb2dpYyBpbnRvIEZvbnRDYWNoZUZyZWVUeXBlIGFu
ZCBvdXQgb2YgRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLgorICAgICAgICBJdCBzaG91bGQgYmUg
dGhlcmUgYW55d2F5LgorCisgICAgICAgIFRlc3Q6IHBsYXRmb3JtL2d0ay9mb250cy9mb250LWZh
bWlseS1mYWxsYmFjay5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2FjaGVGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnBsYXRm
b3JtSW5pdCk6IFNpbXBseSBjYWxsIEZjSW5pdCBoZXJlIGluc3RlYWQgb2YKKyAgICAgICAgZGVm
ZXJyaW5nIHRvIEZvbnRQbGF0Zm9ybURhdGEuCisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6
OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQpOiBUaGUgbGFzdCByZXNvcnQgZm9udCBzaG91bGQK
KyAgICAgICAgYmUgYSBmYWxsYmFjayBmb250IG9yIGVsc2UgdGhlIG5ldyBGb250Q29uZmlnIGxv
Z2ljIG1heSByZXN1bHQgaW4gbnVsbCBmb250IGRhdGEKKyAgICAgICAgaWYgaXQgY2Fubm90IGZp
bmQgYW4gYXBwcm9wcmlhdGUgbWF0Y2guCisgICAgICAgIChXZWJDb3JlOjpnZXRGYW1pbHlOYW1l
U3RyaW5nRnJvbUZvbnREZXNjcmlwdGlvbkFuZEZhbWlseSk6IEFkZGVkLiBIZWxwZXIgZnVuY3Rp
b24KKyAgICAgICAgd2hpY2ggY29udmVydHMgV2ViQ29yZSBmYWxsYmFjayBuYW1lcyBpbnRvIG9u
ZXMgdGhhdCBGb250Q29uZmlnIHVuZGVyc3RhbmRzLgorICAgICAgICAoV2ViQ29yZTo6aXNGYWxs
YmFja0ZvbnRBbGxvd2VkKTogQWRkZWQuIEhlbHBlciBmdW5jdGlvbiB0aGF0IGFsbG93cyBGb250
Q29uZmlnCisgICAgICAgIGZhbGxiYWNrcyB0byBiZSB1c2VkIHdoZW4gZ2VuZXJpYyBmYW1pbHkg
bmFtZXMgYXJlIHNwZWNpZmllZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Y3JlYXRl
Rm9udFBsYXRmb3JtRGF0YSk6IE1vdmUgYWxsIEZvbnRDb25maWcgbWF0Y2hpbmcgbG9naWMgaGVy
ZQorICAgICAgICBhbmQgcHJldmVudCBhZ2FpbnN0IHRoZSBzaXR1YXRpb24gd2hlcmUgRm9udENv
bmZpZyByZXR1cm5zIGEgZGlmZmVyZW50IGZhbWlseSBuYW1lCisgICAgICAgIHRoYW4gd2UgYXNr
ZWQgZm9yLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwOiBVcGRhdGVkIEZvbnRQbGF0Zm9ybURhdGEgY29uc3RydWN0b3IuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNw
cDogVXBkYXRlIHRoZSBjb25zdHJ1Y3RvciB0bworICAgICAgICB0YWtlIHRoZSBGY1BhdHRlcm4g
cmV0dXJuZWQgYW5kIHRoZSBvcmlnaW5hbCBGb250RGVzY3JpcHRpb24uIFdlIG5vIGxvbmdlciBu
ZWVkIHRoZSBvdGhlcgorICAgICAgICBhcmd1bWVudHMsIGJlY2F1c2UgdGhlIHNlbGVjdGlvbiBp
cyBub3cgZG9uZSBieSBGb250Q2FjaGVGcmVlVHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQ
bGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEpOiBSZW1vdmUgdGhlIEZvbnRDb25maWcgc2Vs
ZWN0aW9uIGxvZ2ljIGZyb20KKyAgICAgICAgdGhpcyBjb2RlLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5oOiBVcGRhdGVkIG1ldGhv
ZCBkZWZpbml0aW9ucy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HbHlwaFBh
Z2VUcmVlTm9kZUNhaXJvLmNwcDogRml4ZWQgaW5jbHVkZXMuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1SZWZQdHJDYWlyby5jcHA6IEFkZGVkIGEgUGxhdGZvcm1S
ZWZQdHIgc3BlY2lhbGl6YXRpb24KKyAgICAgICAgZm9yIGNhaXJvX2ZvbnRfZmFjZV90LgorICAg
ICAgICAoV1RGOjpyZWZQbGF0Zm9ybVB0cik6IEFkZGVkLgorICAgICAgICAoV1RGOjpkZXJlZlBs
YXRmb3JtUHRyKTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxh
dGZvcm1SZWZQdHJDYWlyby5oOiBVcGRhdGVkIG1ldGhvZCBkZWZpbml0b25zLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1NpbXBsZUZvbnREYXRhQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OnNtYWxsQ2Fwc0ZvbnREYXRhKTogRml4ZWQgRm9u
dFBsYXRmb3JtRGF0YSBjb25zdHJ1Y3Rvci4KKwogMjAxMC0wOS0xNyAgTWFydGluIFJvYmluc29u
ICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2FjaGVG
cmVlVHlwZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWNoZUZy
ZWVUeXBlLmNwcAppbmRleCBjMDlkZDQ5ZGNlMjFlZmJjNzUyNWFmZWNhNGUzZDYxMWNiMjAyZTNk
Li5mZWJhZDEyMGYyMTQxYWQzZjgxODdiMjlkNThjYzEzMzQ2YWIxN2VmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQWxwIFRva2VyIDxhbHBA
YXRva2VyLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC0yNiwxMyArMjcsMTcgQEAKICNpbmNsdWRlICJPd25QdHJDYWlyby5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtUmVmUHRyQ2Fpcm8uaCIKICNpbmNsdWRlICJTaW1wbGVGb250RGF0
YS5oIgorI2luY2x1ZGUgPGNhaXJvLWZ0Lmg+CisjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNsdWRl
IDxmb250Y29uZmlnL2ZjZnJlZXR5cGUuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgRm9udENhY2hlOjpwbGF0Zm9ybUluaXQoKQog
ewotICAgIGlmICghRm9udFBsYXRmb3JtRGF0YTo6aW5pdCgpKQorICAgIC8vIEl0J3MgZmluZSB0
byBjYWxsIEZjSW5pdCBtdWx0aXBsZSB0aW1lcyBwZXIgdGhlIGRvY3VtZW50YXRpb24uCisgICAg
aWYgKCFGY0luaXQoKSkKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKQEAgLTcy
LDkgKzc3LDkgQEAgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0U2ltaWxhckZvbnRQbGF0
Zm9ybURhdGEoY29uc3QgRm9udCYgZm9udCkKIAogU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6
Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNj
cmlwdGlvbikKIHsKLSAgICAvLyBGSVhNRTogV291bGQgYmUgZXZlbiBiZXR0ZXIgdG8gc29tZWhv
dyBnZXQgdGhlIHVzZXIncyBkZWZhdWx0IGZvbnQgaGVyZS4KLSAgICAvLyBGb3Igbm93IHdlJ2xs
IHBpY2sgdGhlIGRlZmF1bHQgdGhhdCB0aGUgdXNlciB3b3VsZCBnZXQgd2l0aG91dCBjaGFuZ2lu
ZyBhbnkgcHJlZnMuCi0gICAgc3RhdGljIEF0b21pY1N0cmluZyB0aW1lc1N0cigiVGltZXMgTmV3
IFJvbWFuIik7CisgICAgLy8gV2Ugd2FudCB0byByZXR1cm4gYSBmYWxsYmFjayBmb250IGhlcmUs
IG90aGVyd2lzZSB0aGUgbG9naWMgcHJldmVudGluZyBGb250Q29uZmlnCisgICAgLy8gbWF0Y2hl
cyBmb3Igbm9uLWZhbGxiYWNrIGZvbnRzIG1pZ2h0IHJldHVybiAwLiBTZWUgaXNGYWxsYmFja0Zv
bnRBbGxvd2VkLgorICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgdGltZXNTdHIoInNlcmlmIik7CiAg
ICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRhKGZvbnREZXNjcmlwdGlvbiwgdGltZXNTdHIpOwog
fQogCkBAIC04Miw1NCArODcsMTA2IEBAIHZvaWQgRm9udENhY2hlOjpnZXRUcmFpdHNJbkZhbWls
eShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUsIFZlY3Rvcjx1bnNpZ25lCiB7CiB9CiAK
LXN0YXRpYyBib29sIGlzV2VsbEtub3duRm9udE5hbWUoY29uc3QgQXRvbWljU3RyaW5nIGZhbWls
eSkKK3N0YXRpYyBDU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRm9udERlc2NyaXB0aW9u
QW5kRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBB
dG9taWNTdHJpbmcmIGZhbWlseSkKIHsKLSAgICAvLyBGb250cyB0aGF0IGFyZSB1c2VkIGJ5IGxh
eW91dCB0ZXN0cyBpbmNsdWRlZC4gVGhlIGZhY3QgdGhhdAotICAgIC8vIHRoZXkgYXJlIHVzZWQg
aW4gTGF5b3V0IFRlc3RzIGluZGljYXRlIHdlYiBjb21wYXRpYmlsaXR5IGlzc3VlcwotICAgIC8v
IGlmIHdlIGRvIG5vdCBoYW5kbGUgdGhlbSBjb3JyZWN0bHkuCi0gICAgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGZhbWlseSwgInNhbnMtc2VyaWYiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHks
ICJzYW5zIikKLSAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5LCAic2VyaWYiKSB8
fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHksICJtb25vIikKLSAgICAgICAgfHwgZXF1YWxJZ25v
cmluZ0Nhc2UoZmFtaWx5LCAibW9ub3NwYWNlIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5
LCAiY3Vyc2l2ZSIpCi0gICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseSwgImZhbnRh
c3kiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHksICJUaW1lcyIpCi0gICAgICAgIHx8IGVx
dWFsSWdub3JpbmdDYXNlKGZhbWlseSwgIkNvdXJpZXIiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShm
YW1pbHksICJIZWx2ZXRpY2EiKQotICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHks
ICJBcmlhbCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseSwgIkx1Y2lkYSBHcmFuZGUiKQot
ICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHksICJBaGVtIikgfHwgZXF1YWxJZ25v
cmluZ0Nhc2UoZmFtaWx5LCAiR2VvcmdpYSIpCi0gICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNl
KGZhbWlseSwgIlRpbWVzIE5ldyBSb21hbiIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IHJldHVybiBmYWxzZTsKKyAgICAvLyBJZiB3ZSdyZSBjcmVhdGluZyBhIGZhbGxiYWNrIGZvbnQg
KGUuZy4gIi13ZWJraXQtbW9ub3NwYWNlIiksIGNvbnZlcnQgdGhlIG5hbWUgaW50bworICAgIC8v
IHRoZSBmYWxsYmFjayBuYW1lIChsaWtlICJtb25vc3BhY2UiKSB0aGF0IGZvbnRjb25maWcgdW5k
ZXJzdGFuZHMuCisgICAgaWYgKGZhbWlseS5sZW5ndGgoKSAmJiAhZmFtaWx5LnN0YXJ0c1dpdGgo
Ii13ZWJraXQtIikpCisgICAgICAgIHJldHVybiBmYW1pbHkuc3RyaW5nKCkudXRmOCgpOworCisg
ICAgc3dpdGNoIChmb250RGVzY3JpcHRpb24uZ2VuZXJpY0ZhbWlseSgpKSB7CisgICAgY2FzZSBG
b250RGVzY3JpcHRpb246OlN0YW5kYXJkRmFtaWx5OgorICAgIGNhc2UgRm9udERlc2NyaXB0aW9u
OjpTZXJpZkZhbWlseToKKyAgICAgICAgcmV0dXJuICJzZXJpZiI7CisgICAgY2FzZSBGb250RGVz
Y3JpcHRpb246OlNhbnNTZXJpZkZhbWlseToKKyAgICAgICAgcmV0dXJuICJzYW5zLXNlcmlmIjsK
KyAgICBjYXNlIEZvbnREZXNjcmlwdGlvbjo6TW9ub3NwYWNlRmFtaWx5OgorICAgICAgICByZXR1
cm4gIm1vbm9zcGFjZSI7CisgICAgY2FzZSBGb250RGVzY3JpcHRpb246OkN1cnNpdmVGYW1pbHk6
CisgICAgICAgIHJldHVybiAiY3Vyc2l2ZSI7CisgICAgY2FzZSBGb250RGVzY3JpcHRpb246OkZh
bnRhc3lGYW1pbHk6CisgICAgICAgIHJldHVybiAiZmFudGFzeSI7CisgICAgY2FzZSBGb250RGVz
Y3JpcHRpb246Ok5vRmFtaWx5OgorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAiIjsKKyAg
ICB9CiB9CiAKLUZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3Jt
RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWlj
U3RyaW5nJiBmYW1pbHkpCi17Ci0gICAgLy8gSGFuZGxlIGdlbmVyaWMgZmFtaWx5IHR5cGVzIHNw
ZWNpYWxseSwgYmVjYXVzZSBmb250Y29uZmlnIGRvZXMgbm90IGtub3cgdGhlbSwgYnV0IHdlIGhh
dmUKLSAgICAvLyBjb2RlIHRvIGZhbGxiYWNrIGNvcnJlY3RseSBpbiBvdXIgcGxhdGZvcm0gZGF0
YSBpbXBsZW1lbnRhdGlvbi4KLSAgICBpZiAoIWZhbWlseS5sZW5ndGgoKSB8fCBmYW1pbHkuc3Rh
cnRzV2l0aCgiLXdlYmtpdC0iKQotICAgICAgICB8fCAoZm9udERlc2NyaXB0aW9uLmdlbmVyaWNG
YW1pbHkoKSAhPSBGb250RGVzY3JpcHRpb246Ok5vRmFtaWx5KQotICAgICAgICB8fCBpc1dlbGxL
bm93bkZvbnROYW1lKGZhbWlseSkpCi0gICAgICAgIHJldHVybiBuZXcgRm9udFBsYXRmb3JtRGF0
YShmb250RGVzY3JpcHRpb24sIGZhbWlseSk7CiAKLSAgICAvLyBGaXJzdCBjaGVjayB0aGUgZm9u
dCBleGlzdHMuCi0gICAgQ1N0cmluZyBmYW1pbHlOYW1lU3RyaW5nID0gZmFtaWx5LnN0cmluZygp
LnV0ZjgoKTsKLSAgICBjb25zdCBjaGFyKiBmY2ZhbWlseSA9IGZhbWlseU5hbWVTdHJpbmcuZGF0
YSgpOworc3RhdGljIGJvb2wgaXNGYWxsYmFja0ZvbnRBbGxvd2VkKGNvbnN0IENTdHJpbmcmIGZh
bWlseU5hbWUpCit7CisgICAgcmV0dXJuICFzdHJjYXNlY21wKGZhbWlseU5hbWUuZGF0YSgpLCAi
c2FucyIpCisgICAgICAgICAgIHx8ICFzdHJjYXNlY21wKGZhbWlseU5hbWUuZGF0YSgpLCAic2Fu
cy1zZXJpZiIpCisgICAgICAgICAgIHx8ICFzdHJjYXNlY21wKGZhbWlseU5hbWUuZGF0YSgpLCAi
c2VyaWYiKQorICAgICAgICAgICB8fCAhc3RyY2FzZWNtcChmYW1pbHlOYW1lLmRhdGEoKSwgIm1v
bm9zcGFjZSIpOworfQogCitGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQ
bGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0
IEF0b21pY1N0cmluZyYgZmFtaWx5KQoreworICAgIC8vIFRoZSBDU1MgZm9udCBtYXRjaGluZyBh
bGdvcml0aG0gKGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtZm9udHMvI2ZvbnQtbWF0Y2hpbmct
YWxnb3JpdGhtKQorICAgIC8vIHNheXMgdGhhdCB3ZSBtdXN0IGZpbmQgYW4gZXhhY3QgbWF0Y2gg
Zm9yIGZvbnQgZmFtaWx5LCBzbGFudCAoaXRhbGljIG9yIG9ibGlxdWUgY2FuIGJlIHVzZWQpCisg
ICAgLy8gYW5kIGZvbnQgd2VpZ2h0ICh3ZSBvbmx5IG1hdGNoIGJvbGQvbm9uLWJvbGQgaGVyZSku
CiAgICAgUGxhdGZvcm1SZWZQdHI8RmNQYXR0ZXJuPiBwYXR0ZXJuID0gYWRvcHRQbGF0Zm9ybVJl
ZihGY1BhdHRlcm5DcmVhdGUoKSk7Ci0gICAgaWYgKCFGY1BhdHRlcm5BZGRTdHJpbmcocGF0dGVy
bi5nZXQoKSwgRkNfRkFNSUxZLCByZWludGVycHJldF9jYXN0PGNvbnN0IEZjQ2hhcjgqPihmY2Zh
bWlseSkpKQorICAgIENTdHJpbmcgZmFtaWx5TmFtZVN0cmluZyA9IGdldEZhbWlseU5hbWVTdHJp
bmdGcm9tRm9udERlc2NyaXB0aW9uQW5kRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5KTsK
KyAgICBpZiAoIUZjUGF0dGVybkFkZFN0cmluZyhwYXR0ZXJuLmdldCgpLCBGQ19GQU1JTFksIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFyOCo+KGZhbWlseU5hbWVTdHJpbmcuZGF0YSgpKSkp
CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgT3duUHRyPEZjT2JqZWN0U2V0PiBvYmplY3RTZXQo
RmNPYmplY3RTZXRDcmVhdGUoKSk7Ci0gICAgaWYgKCFGY09iamVjdFNldEFkZChvYmplY3RTZXQu
Z2V0KCksIEZDX0ZBTUlMWSkpCisgICAgYm9vbCBpdGFsaWMgPSBmb250RGVzY3JpcHRpb24uaXRh
bGljKCk7CisgICAgaWYgKCFGY1BhdHRlcm5BZGRJbnRlZ2VyKHBhdHRlcm4uZ2V0KCksIEZDX1NM
QU5ULCBpdGFsaWMgPyBGQ19TTEFOVF9JVEFMSUMgOiBGQ19TTEFOVF9ST01BTikpCisgICAgICAg
IHJldHVybiAwOworICAgIGJvb2wgYm9sZCA9IGZvbnREZXNjcmlwdGlvbi53ZWlnaHQoKSA+PSBG
b250V2VpZ2h0Qm9sZDsKKyAgICBpZiAoIUZjUGF0dGVybkFkZEludGVnZXIocGF0dGVybi5nZXQo
KSwgRkNfV0VJR0hULCBib2xkID8gRkNfV0VJR0hUX0JPTEQgOiBGQ19XRUlHSFRfTk9STUFMKSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFGY1BhdHRlcm5BZGREb3VibGUocGF0dGVybi5n
ZXQoKSwgRkNfUElYRUxfU0laRSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkp
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIE93blB0cjxGY0ZvbnRTZXQ+IGZvbnRTZXQoRmNG
b250TGlzdCgwLCBwYXR0ZXJuLmdldCgpLCBvYmplY3RTZXQuZ2V0KCkpKTsKLQotICAgIGlmICgh
Zm9udFNldCkKKyAgICAvLyBUaGUgZm9sbG93aW5nIGNvbW1lbnQgYW5kIHN0cmF0ZWd5IGFyZSBv
cmlnaW5hbGx5IGZyb20gU2tpYSAoc3JjL3BvcnRzL1NrRm9udEhvc3RfZm9udGNvbmZpZy5jcHAp
OgorICAgIC8vIEZvbnQgbWF0Y2hpbmc6CisgICAgLy8gQ1NTIG9mdGVuIHNwZWNpZmllcyBhIGZh
bGxiYWNrIGxpc3Qgb2YgZmFtaWxpZXM6CisgICAgLy8gICAgZm9udC1mYW1pbHk6IGEsIGIsIGMs
IHNlcmlmOworICAgIC8vIEhvd2V2ZXIsIGZvbnRjb25maWcgd2lsbCBhbHdheXMgZG8gaXRzIGJl
c3QgdG8gZmluZCAqYSogZm9udCB3aGVuIGFza2VkCisgICAgLy8gZm9yIHNvbWV0aGluZyBzbyB3
ZSBuZWVkIGEgd2F5IHRvIHRlbGwgaWYgdGhlIG1hdGNoIHdoaWNoIGl0IGhhcyBmb3VuZCBpcwor
ICAgIC8vICJnb29kIGVub3VnaCIgZm9yIHVzLiBPdGhlcndpc2UsIHdlIGNhbiByZXR1cm4gbnVs
bCB3aGljaCBnZXRzIHBpcGVkIHVwCisgICAgLy8gYW5kIGxldHMgV2ViS2l0IGtub3cgdG8gdHJ5
IHRoZSBuZXh0IENTUyBmYW1pbHkgbmFtZS4gSG93ZXZlciwgZm9udGNvbmZpZworICAgIC8vIGNv
bmZpZ3MgYWxsb3cgc3Vic3RpdHV0aW9ucyAobWFwcGluZyAiQXJpYWwgLT4gSGVsdmV0aWNhIiBl
dGMpIGFuZCB3ZQorICAgIC8vIHdpc2ggdG8gc3VwcG9ydCB0aGF0LgorICAgIC8vCisgICAgLy8g
VGh1cywgaWYgYSBzcGVjaWZpYyBmYW1pbHkgaXMgcmVxdWVzdGVkIHdlIHNldCBAZmFtaWx5X3Jl
cXVlc3RlZC4gVGhlbiB3ZQorICAgIC8vIHJlY29yZCB0d28gc3RyaW5nczogdGhlIGZhbWlseSBu
YW1lIGFmdGVyIGNvbmZpZyBwcm9jZXNzaW5nIGFuZCB0aGUKKyAgICAvLyBmYW1pbHkgbmFtZSBh
ZnRlciByZXNvbHZpbmcuIElmIHRoZSB0d28gYXJlIGVxdWFsLCBpdCdzIGEgZ29vZCBtYXRjaC4K
KyAgICAvLworICAgIC8vIFNvIGNvbnNpZGVyIHRoZSBjYXNlIHdoZXJlIGEgdXNlciBoYXMgbWFw
cGVkIEFyaWFsIHRvIEhlbHZldGljYSBpbiB0aGVpcgorICAgIC8vIGNvbmZpZy4KKyAgICAvLyAg
ICByZXF1ZXN0ZWQgZmFtaWx5OiAiQXJpYWwiCisgICAgLy8gICAgcG9zdF9jb25maWdfZmFtaWx5
OiAiSGVsdmV0aWNhIgorICAgIC8vICAgIHBvc3RfbWF0Y2hfZmFtaWx5OiAiSGVsdmV0aWNhIgor
ICAgIC8vICAgICAgLT4gZ29vZCBtYXRjaAorICAgIC8vCisgICAgLy8gYW5kIGZvciBhIG1pc3Np
bmcgZm9udDoKKyAgICAvLyAgICByZXF1ZXN0ZWQgZmFtaWx5OiAiTW9uYWNvIgorICAgIC8vICAg
IHBvc3RfY29uZmlnX2ZhbWlseTogIk1vbmFjbyIKKyAgICAvLyAgICBwb3N0X21hdGNoX2ZhbWls
eTogIlRpbWVzIE5ldyBSb21hbiIKKyAgICAvLyAgICAgIC0+IEJBRCBtYXRjaAorICAgIC8vCisg
ICAgRmNDb25maWdTdWJzdGl0dXRlKDAsIHBhdHRlcm4uZ2V0KCksIEZjTWF0Y2hQYXR0ZXJuKTsK
KyAgICBGY0RlZmF1bHRTdWJzdGl0dXRlKHBhdHRlcm4uZ2V0KCkpOworCisgICAgRmNDaGFyOCog
ZmFtaWx5TmFtZUFmdGVyQ29uZmlndXJhdGlvbjsKKyAgICBGY1BhdHRlcm5HZXRTdHJpbmcocGF0
dGVybi5nZXQoKSwgRkNfRkFNSUxZLCAwLCAmZmFtaWx5TmFtZUFmdGVyQ29uZmlndXJhdGlvbik7
CisKKyAgICBGY1Jlc3VsdCBmb250Q29uZmlnUmVzdWx0OworICAgIFBsYXRmb3JtUmVmUHRyPEZj
UGF0dGVybj4gcmVzdWx0UGF0dGVybiA9IGFkb3B0UGxhdGZvcm1SZWYoRmNGb250TWF0Y2goMCwg
cGF0dGVybi5nZXQoKSwgJmZvbnRDb25maWdSZXN1bHQpKTsKKyAgICBpZiAoIXJlc3VsdFBhdHRl
cm4pIC8vIE5vIG1hdGNoLgogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmICghZm9udFNldC0+
Zm9udHMpCisgICAgLy8gUHJvcGVybHkgaGFuZGxlIHRoZSBzaXR1YXRpb24gd2hlcmUgRm9udGNv
bmZpZyBnaXZlcyB1cyBhIGZvbnQgdGhhdCBoYXMgYSBkaWZmZXJlbnQgZmFtaWx5IHRoYW4gd2Ug
cmVxdWVzdGVkLgorICAgIEZjQ2hhcjgqIGZhbWlseU5hbWVBZnRlck1hdGNoaW5nOworICAgIEZj
UGF0dGVybkdldFN0cmluZyhyZXN1bHRQYXR0ZXJuLmdldCgpLCBGQ19GQU1JTFksIDAsICZmYW1p
bHlOYW1lQWZ0ZXJNYXRjaGluZyk7CisgICAgaWYgKHN0cmNhc2VjbXAocmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oZmFtaWx5TmFtZUFmdGVyQ29uZmlndXJhdGlvbiksCisgICAgICAgICAgICByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihmYW1pbHlOYW1lQWZ0ZXJNYXRjaGluZykpICYmICFpc0ZhbGxi
YWNrRm9udEFsbG93ZWQoZmFtaWx5TmFtZVN0cmluZykpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgcmV0dXJuIG5ldyBGb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5KTsK
KyAgICByZXR1cm4gbmV3IEZvbnRQbGF0Zm9ybURhdGEocmVzdWx0UGF0dGVybi5nZXQoKSwgZm9u
dERlc2NyaXB0aW9uKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggNmI3NmMyYWQ0
MjU1ZGU5ZmMyMjNiMzgzNzNlYTE1NzM0YTdkYmRhOC4uZDE1OWY1NjgzNjliOTMxZjBiNjYyODE4
MzVjMmQwYWI2ZWZjMGJlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0yMyw2ICsyMyw4IEBA
CiAKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCisjaW5jbHVkZSA8Y2Fpcm8tZnQuaD4KKyNpbmNsdWRlIDxjYWlyby5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA3OTY4OTY2NzE0ZmUy
NDVhYWNlMmE2ZGNhZTU0ZmE2Y2NiMTEyMDlkLi43NDg4ZGExODMyOGJlNmNiMzUzMWM1ZTRhNTIy
MzZkMDQzZGFlMGQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0zLDcgKzMsNyBAQAog
ICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20K
ICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgog
ICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDkgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBJ
Z2FsaWEgUy5MLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yNywx
MDAgKzI3LDQyIEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIkZv
bnREZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQogI2luY2x1
ZGUgPGNhaXJvLWZ0Lmg+CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KICNpbmNsdWRlIDxmb250Y29uZmln
L2ZjZnJlZXR5cGUuaD4KKwogI2lmICFQTEFURk9STShFRkwpIHx8IEVOQUJMRShHTElCX1NVUFBP
UlQpCiAjaW5jbHVkZSA8Z2RrL2dkay5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRp
b24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lKQotICAg
IDogbV9mYWxsYmFja3MoMCkKK0ZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoRmNQ
YXR0ZXJuKiBwYXR0ZXJuLCBjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikK
KyAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQorICAgICwgbV9mYWxsYmFja3MoMCkKICAgICAsIG1f
c2l6ZShmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSkKICAgICAsIG1fc3ludGhl
dGljQm9sZChmYWxzZSkKICAgICAsIG1fc3ludGhldGljT2JsaXF1ZShmYWxzZSkKIHsKLSAgICBG
b250UGxhdGZvcm1EYXRhOjppbml0KCk7Ci0KLSAgICBDU3RyaW5nIGZhbWlseU5hbWVTdHJpbmcg
PSBmYW1pbHlOYW1lLnN0cmluZygpLnV0ZjgoKTsKLSAgICBjb25zdCBjaGFyKiBmY2ZhbWlseSA9
IGZhbWlseU5hbWVTdHJpbmcuZGF0YSgpOwotICAgIGludCBmY3NsYW50ID0gRkNfU0xBTlRfUk9N
QU47Ci0gICAgLy8gRklYTUU6IE1hcCBhbGwgRm9udFdlaWdodCB2YWx1ZXMgdG8gZm9udGNvbmZp
ZyB3ZWlnaHRzLgotICAgIGludCBmY3dlaWdodCA9IEZDX1dFSUdIVF9OT1JNQUw7Ci0gICAgZG91
YmxlIGZjc2l6ZSA9IGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpOwotICAgIGlm
IChmb250RGVzY3JpcHRpb24uaXRhbGljKCkpCi0gICAgICAgIGZjc2xhbnQgPSBGQ19TTEFOVF9J
VEFMSUM7Ci0gICAgaWYgKGZvbnREZXNjcmlwdGlvbi53ZWlnaHQoKSA+PSBGb250V2VpZ2h0NjAw
KQotICAgICAgICBmY3dlaWdodCA9IEZDX1dFSUdIVF9CT0xEOwotCi0gICAgaW50IHR5cGUgPSBm
b250RGVzY3JpcHRpb24uZ2VuZXJpY0ZhbWlseSgpOwotCi0gICAgUGxhdGZvcm1SZWZQdHI8RmNQ
YXR0ZXJuPiBwYXR0ZXJuID0gYWRvcHRQbGF0Zm9ybVJlZihGY1BhdHRlcm5DcmVhdGUoKSk7Ci0g
ICAgY2Fpcm9fZm9udF9mYWNlX3QqIGZvbnRGYWNlOworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
YmUgZ2V0dGluZyB0aGVzZSBvcHRpb25zIGZyb20gRm9udENvbmZpZy4KICAgICBzdGF0aWMgY29u
c3QgY2Fpcm9fZm9udF9vcHRpb25zX3QqIGRlZmF1bHRPcHRpb25zID0gY2Fpcm9fZm9udF9vcHRp
b25zX2NyZWF0ZSgpOwotICAgIGNvbnN0IGNhaXJvX2ZvbnRfb3B0aW9uc190KiBvcHRpb25zID0g
TlVMTDsKLSAgICBjYWlyb19tYXRyaXhfdCBmb250TWF0cml4OwotCi0gICAgaWYgKCFGY1BhdHRl
cm5BZGRTdHJpbmcocGF0dGVybi5nZXQoKSwgRkNfRkFNSUxZLCByZWludGVycHJldF9jYXN0PGNv
bnN0IEZjQ2hhcjgqPihmY2ZhbWlseSkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzd2l0Y2gg
KHR5cGUpIHsKLSAgICBjYXNlIEZvbnREZXNjcmlwdGlvbjo6U2VyaWZGYW1pbHk6Ci0gICAgICAg
IGZjZmFtaWx5ID0gInNlcmlmIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGb250RGVzY3Jp
cHRpb246OlNhbnNTZXJpZkZhbWlseToKLSAgICAgICAgZmNmYW1pbHkgPSAic2Fucy1zZXJpZiI7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9udERlc2NyaXB0aW9uOjpNb25vc3BhY2VGYW1p
bHk6Ci0gICAgICAgIGZjZmFtaWx5ID0gIm1vbm9zcGFjZSI7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRm9udERlc2NyaXB0aW9uOjpTdGFuZGFyZEZhbWlseToKLSAgICAgICAgZmNmYW1pbHkg
PSAic2Fucy1zZXJpZiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRm9udERlc2NyaXB0aW9u
OjpOb0ZhbWlseToKLSAgICBkZWZhdWx0OgotICAgICAgICBmY2ZhbWlseSA9IE5VTEw7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmIChmY2ZhbWlseSAmJiAhRmNQYXR0ZXJuQWRkU3Ry
aW5nKHBhdHRlcm4uZ2V0KCksIEZDX0ZBTUlMWSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBGY0No
YXI4Kj4oZmNmYW1pbHkpKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghRmNQYXR0ZXJuQWRk
SW50ZWdlcihwYXR0ZXJuLmdldCgpLCBGQ19XRUlHSFQsIGZjd2VpZ2h0KSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGlmICghRmNQYXR0ZXJuQWRkSW50ZWdlcihwYXR0ZXJuLmdldCgpLCBGQ19TTEFO
VCwgZmNzbGFudCkpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoIUZjUGF0dGVybkFkZERvdWJs
ZShwYXR0ZXJuLmdldCgpLCBGQ19QSVhFTF9TSVpFLCBmY3NpemUpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBGY0NvbmZpZ1N1YnN0aXR1dGUoMCwgcGF0dGVybi5nZXQoKSwgRmNNYXRjaFBhdHRl
cm4pOwotICAgIEZjRGVmYXVsdFN1YnN0aXR1dGUocGF0dGVybi5nZXQoKSk7Ci0KLSAgICBGY1Jl
c3VsdCBmY3Jlc3VsdDsKLSAgICBtX3BhdHRlcm4gPSBhZG9wdFBsYXRmb3JtUmVmKEZjRm9udE1h
dGNoKDAsIHBhdHRlcm4uZ2V0KCksICZmY3Jlc3VsdCkpOwotICAgIC8vIEZJWE1FOiBzaG91bGQg
d2Ugc2V0IHNvbWUgZGVmYXVsdCBmb250PwotICAgIGlmICghbV9wYXR0ZXJuKQotICAgICAgICBy
ZXR1cm47Ci0gICAgZm9udEZhY2UgPSBjYWlyb19mdF9mb250X2ZhY2VfY3JlYXRlX2Zvcl9wYXR0
ZXJuKG1fcGF0dGVybi5nZXQoKSk7Ci0gICAgY2Fpcm9fbWF0cml4X3QgY3RtOwotICAgIGNhaXJv
X21hdHJpeF9pbml0X3NjYWxlKCZmb250TWF0cml4LCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQ
aXhlbFNpemUoKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkpOwotICAgIGNh
aXJvX21hdHJpeF9pbml0X2lkZW50aXR5KCZjdG0pOwotCisgICAgY29uc3QgY2Fpcm9fZm9udF9v
cHRpb25zX3QqIG9wdGlvbnMgPSAwOwogI2lmICFQTEFURk9STShFRkwpIHx8IEVOQUJMRShHTElC
X1NVUFBPUlQpCiAgICAgaWYgKEdka1NjcmVlbiogc2NyZWVuID0gZ2RrX3NjcmVlbl9nZXRfZGVm
YXVsdCgpKQotZ2RrX3NjcmVlbl9nZXRfZm9udF9vcHRpb25zKHNjcmVlbik7CisgICAgICAgIG9w
dGlvbnMgPSBnZGtfc2NyZWVuX2dldF9mb250X29wdGlvbnMoc2NyZWVuKTsKICNlbmRpZgotCi0g
ICAgLy8gZ2RrX3NjcmVlbl9nZXRfZm9udF9vcHRpb25zKCkgcmV0dXJucyBOVUxMIGlmIG5vIGRl
ZmF1bHQgb3B0aW9ucyBhcmUKKyAgICAvLyBnZGtfc2NyZWVuX2dldF9mb250X29wdGlvbnMoKSBy
ZXR1cm5zIG51bGwgaWYgbm8gZGVmYXVsdCBvcHRpb25zIGFyZQogICAgIC8vIHNldCwgc28gd2Ug
YWx3YXlzIGhhdmUgdG8gY2hlY2suCiAgICAgaWYgKCFvcHRpb25zKQogICAgICAgICBvcHRpb25z
ID0gZGVmYXVsdE9wdGlvbnM7CiAKLSAgICBtX3NjYWxlZEZvbnQgPSBhZG9wdFBsYXRmb3JtUmVm
KGNhaXJvX3NjYWxlZF9mb250X2NyZWF0ZShmb250RmFjZSwgJmZvbnRNYXRyaXgsICZjdG0sIG9w
dGlvbnMpKTsKLSAgICBjYWlyb19mb250X2ZhY2VfZGVzdHJveShmb250RmFjZSk7CisgICAgY2Fp
cm9fbWF0cml4X3QgZm9udE1hdHJpeDsKKyAgICBjYWlyb19tYXRyaXhfaW5pdF9zY2FsZSgmZm9u
dE1hdHJpeCwgbV9zaXplLCBtX3NpemUpOworICAgIGNhaXJvX21hdHJpeF90IGN0bTsKKyAgICBj
YWlyb19tYXRyaXhfaW5pdF9pZGVudGl0eSgmY3RtKTsKKworICAgIFBsYXRmb3JtUmVmUHRyPGNh
aXJvX2ZvbnRfZmFjZV90PiBmb250RmFjZSA9IGFkb3B0UGxhdGZvcm1SZWYoY2Fpcm9fZnRfZm9u
dF9mYWNlX2NyZWF0ZV9mb3JfcGF0dGVybihtX3BhdHRlcm4uZ2V0KCkpKTsKKyAgICBtX3NjYWxl
ZEZvbnQgPSBhZG9wdFBsYXRmb3JtUmVmKGNhaXJvX3NjYWxlZF9mb250X2NyZWF0ZShmb250RmFj
ZS5nZXQoKSwgJmZvbnRNYXRyaXgsICZjdG0sIG9wdGlvbnMpKTsKIH0KIAogRm9udFBsYXRmb3Jt
RGF0YTo6Rm9udFBsYXRmb3JtRGF0YShmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wgaXRhbGlj
KQpAQCAtMTg0LDE5ICsxMjYsNiBAQCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRh
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKQogICAgICp0aGlzID0gb3RoZXI7CiB9CiAK
LWJvb2wgRm9udFBsYXRmb3JtRGF0YTo6aW5pdCgpCi17Ci0gICAgc3RhdGljIGJvb2wgaW5pdGlh
bGl6ZWQgPSBmYWxzZTsKLSAgICBpZiAoaW5pdGlhbGl6ZWQpCi0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIGlmICghRmNJbml0KCkpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJDYW4ndCBp
bml0IGZvbnQgY29uZmlnIGxpYnJhcnlcbiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogRm9udFBs
YXRmb3JtRGF0YTo6fkZvbnRQbGF0Zm9ybURhdGEoKQogewogICAgIGlmIChtX2ZhbGxiYWNrcykg
ewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250UGxhdGZv
cm1EYXRhRnJlZVR5cGUuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udFBs
YXRmb3JtRGF0YUZyZWVUeXBlLmgKaW5kZXggOTg3YTY4NDEyMmY0NGY4YTU2MzkxNzE3NmFjYzMy
MjdmMDcwNjk0MC4uZjM0ODhlZjAyMjg1ZDc1ODIyNGM0M2JjMDI4MGNiYTM2ZjA2ZmY5NyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250UGxhdGZvcm1EYXRh
RnJlZVR5cGUuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRQbGF0
Zm9ybURhdGFGcmVlVHlwZS5oCkBAIC0zLDYgKzMsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA2
IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KICAqIENvcHlyaWdodCAoQykgMjAw
NyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICogQ29weXJpZ2h0IChDKSAyMDA3IFBpb25l
ZXIgUmVzZWFyY2ggQ2VudGVyIFVTQSwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxp
YSBTLkwuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI5LDExICsz
MCwxMCBAQAogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCiAjaW5jbHVkZSAiSGFzaEZ1bmN0aW9u
cy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtUmVmUHRyQ2Fpcm8uaCIKLSNpbmNsdWRlIDxjYWlyby1m
dC5oPgotI2luY2x1ZGUgPGNhaXJvLmg+Ci0jaW5jbHVkZSA8Zm9udGNvbmZpZy9mY2ZyZWV0eXBl
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAordHlwZWRlZiBzdHJ1Y3QgX0ZjRm9udFNl
dCBGY0ZvbnRTZXQ7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udFBsYXRmb3Jt
RGF0YSB7CkBAIC01MywxNCArNTMsMTMgQEAgcHVibGljOgogICAgICAgICAsIG1fc3ludGhldGlj
T2JsaXF1ZShmYWxzZSkKICAgICAgICAgeyB9CiAKLSAgICBGb250UGxhdGZvcm1EYXRhKGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KTsKKyAgICBGb250
UGxhdGZvcm1EYXRhKEZjUGF0dGVybiosIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYpOwogICAgIEZv
bnRQbGF0Zm9ybURhdGEoY2Fpcm9fZm9udF9mYWNlX3QqIGZvbnRGYWNlLCBmbG9hdCBzaXplLCBi
b29sIGJvbGQsIGJvb2wgaXRhbGljKTsKICAgICBGb250UGxhdGZvcm1EYXRhKGZsb2F0IHNpemUs
IGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMpOwogICAgIEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYpOwogCiAgICAgfkZvbnRQbGF0Zm9ybURhdGEoKTsKIAotICAgIHN0YXRp
YyBib29sIGluaXQoKTsKICAgICBib29sIGlzRml4ZWRQaXRjaCgpOwogICAgIGZsb2F0IHNpemUo
KSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICB2b2lkIHNldFNpemUoZmxvYXQgc2l6ZSkg
eyBtX3NpemUgPSBzaXplOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dseXBoUGFnZVRyZWVOb2RlQ2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvLmNwcAppbmRleCAyNmRhNjhkOWZkZTJm
MzA1ODE1NDJlYWU4NzdiMmM2NTUxZmY1YTljLi42NmU5YzE2OTJiNjlhNzBmNWUwMzlhMjZmMzNm
MTI4OGY1MDk1ZTEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dseXBoUGFnZVRyZWVOb2RlQ2Fpcm8uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR2x5cGhQYWdlVHJlZU5vZGVDYWlyby5jcHAKQEAgLTMyLDYgKzMyLDkgQEAKICNp
bmNsdWRlICJHbHlwaFBhZ2VUcmVlTm9kZS5oIgogCiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEu
aCIKKyNpbmNsdWRlIDxjYWlyby1mdC5oPgorI2luY2x1ZGUgPGNhaXJvLmg+CisjaW5jbHVkZSA8
Zm9udGNvbmZpZy9mY2ZyZWV0eXBlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybVJlZlB0ckNhaXJv
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1SZWZQdHJDYWly
by5jcHAKaW5kZXggYWE0NjZmOTk0YjIyOGUwNDFjNmY1NDczOTUyNDNhZWJhNDc1MjY1ZS4uZDI4
OTU4NWQ4OWEzYmIwOTgxNzRhOWQ4OWJiMzc5NGJkYTJjMTc0OSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybVJlZlB0ckNhaXJvLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtUmVmUHRyQ2Fpcm8uY3BwCkBA
IC01NCw2ICs1NCwxOSBAQCB0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmUGxhdGZvcm1QdHIoY2Fpcm9f
c3VyZmFjZV90KiBwdHIpCiAgICAgICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShwdHIpOwogfQog
Cit0ZW1wbGF0ZSA8PiBjYWlyb19mb250X2ZhY2VfdCogcmVmUGxhdGZvcm1QdHIoY2Fpcm9fZm9u
dF9mYWNlX3QqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICBjYWlyb19mb250X2ZhY2Vf
cmVmZXJlbmNlKHB0cik7CisgICAgcmV0dXJuIHB0cjsKK30KKwordGVtcGxhdGUgPD4gdm9pZCBk
ZXJlZlBsYXRmb3JtUHRyKGNhaXJvX2ZvbnRfZmFjZV90KiBwdHIpCit7CisgICAgaWYgKHB0cikK
KyAgICAgICAgY2Fpcm9fZm9udF9mYWNlX2Rlc3Ryb3kocHRyKTsKK30KKwogdGVtcGxhdGUgPD4g
Y2Fpcm9fc2NhbGVkX2ZvbnRfdCogcmVmUGxhdGZvcm1QdHIoY2Fpcm9fc2NhbGVkX2ZvbnRfdCog
cHRyKQogewogICAgIGlmIChwdHIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1BsYXRmb3JtUmVmUHRyQ2Fpcm8uaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGxhdGZvcm1SZWZQdHJDYWlyby5oCmluZGV4IDRiNDVjMWJjZjE2ZDQ3ZTRlYjRm
MWU5ZjE1YzUxMDkwMWQ1NzBlMDIuLjNiNzIwYzYyMTg1NGIxMjUyZGY1YWEwYjAxZjdiMDU3MzIz
MDFiZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZv
cm1SZWZQdHJDYWlyby5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxh
dGZvcm1SZWZQdHJDYWlyby5oCkBAIC0yNCw2ICsyNCw3IEBACiAKIHR5cGVkZWYgc3RydWN0IF9j
YWlybyBjYWlyb190OwogdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFj
ZV90OwordHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX2ZvbnRfZmFjZSBjYWlyb19mb250X2ZhY2VfdDsK
IHR5cGVkZWYgc3RydWN0IF9jYWlyb19zY2FsZWRfZm9udCBjYWlyb19zY2FsZWRfZm9udF90Owog
CiAjaWYgZGVmaW5lZChVU0VfRlJFRVRZUEUpCkBAIC0zOCw2ICszOSw5IEBAIHRlbXBsYXRlIDw+
IHZvaWQgZGVyZWZQbGF0Zm9ybVB0cihjYWlyb190KiBwdHIpOwogdGVtcGxhdGUgPD4gY2Fpcm9f
c3VyZmFjZV90KiByZWZQbGF0Zm9ybVB0cihjYWlyb19zdXJmYWNlX3QqIHB0cik7CiB0ZW1wbGF0
ZSA8PiB2b2lkIGRlcmVmUGxhdGZvcm1QdHIoY2Fpcm9fc3VyZmFjZV90KiBwdHIpOwogCit0ZW1w
bGF0ZSA8PiBjYWlyb19mb250X2ZhY2VfdCogcmVmUGxhdGZvcm1QdHIoY2Fpcm9fZm9udF9mYWNl
X3QqKTsKK3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZQbGF0Zm9ybVB0cihjYWlyb19mb250X2ZhY2Vf
dCopOworCiB0ZW1wbGF0ZSA8PiBjYWlyb19zY2FsZWRfZm9udF90KiByZWZQbGF0Zm9ybVB0cihj
YWlyb19zY2FsZWRfZm9udF90Kik7CiB0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmUGxhdGZvcm1QdHIo
Y2Fpcm9fc2NhbGVkX2ZvbnRfdCopOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL1NpbXBsZUZvbnREYXRhQ2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9TaW1wbGVGb250RGF0YUNhaXJvLmNwcAppbmRleCBmZDg1ZDZmNDU5OGU1
ODM5NGQ4MmNjOWVkYjllMTQ4OTg2ZDEwYjUxLi4zYjNjZjAwNTJiM2ZhZmIyMDEzNzBiMWVjODk1
ZWNjN2U3ZGJjY2JjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1NpbXBsZUZvbnREYXRhQ2Fpcm8uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vU2ltcGxlRm9udERhdGFDYWlyby5jcHAKQEAgLTM4LDcgKzM4LDkgQEAKICNpbmNsdWRl
ICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJH
bHlwaEJ1ZmZlci5oIgorI2luY2x1ZGUgPGNhaXJvLWZ0Lmg+CiAjaW5jbHVkZSA8Y2Fpcm8uaD4K
KyNpbmNsdWRlIDxmb250Y29uZmlnL2ZjZnJlZXR5cGUuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04MSwxMiArODMsMTIgQEAgdm9pZCBT
aW1wbGVGb250RGF0YTo6cGxhdGZvcm1EZXN0cm95KCkKIAogU2ltcGxlRm9udERhdGEqIFNpbXBs
ZUZvbnREYXRhOjpzbWFsbENhcHNGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRE
ZXNjcmlwdGlvbikgY29uc3QKIHsKLSAgICBpZiAoIW1fc21hbGxDYXBzRm9udERhdGEpIHsKLSAg
ICAgICAgRm9udERlc2NyaXB0aW9uIGRlc2MgPSBGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0
aW9uKTsKLSAgICAgICAgZGVzYy5zZXRDb21wdXRlZFNpemUoMC43MGYgKiBmb250RGVzY3JpcHRp
b24uY29tcHV0ZWRTaXplKCkpOwotICAgICAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0
YShkZXNjLCBkZXNjLmZhbWlseSgpLmZhbWlseSgpKTsKLSAgICAgICAgbV9zbWFsbENhcHNGb250
RGF0YSA9IG5ldyBTaW1wbGVGb250RGF0YShwbGF0Zm9ybURhdGEpOwotICAgIH0KKyAgICAvLyBG
SVhNRShtcm9iaW5zb24pOiBJIHRoaW5rIHdlIHdhbnQgdG8gYXNrIEZvbnRDb25maWcgZm9yIHRo
ZSByaWdodCBmb250IGFnYWluLgorICAgIGlmICghbV9zbWFsbENhcHNGb250RGF0YSkKKyAgICAg
ICAgbV9zbWFsbENhcHNGb250RGF0YSA9IG5ldyBTaW1wbGVGb250RGF0YSgKKyAgICAgICAgICAg
IEZvbnRQbGF0Zm9ybURhdGEoY2Fpcm9fc2NhbGVkX2ZvbnRfZ2V0X2ZvbnRfZmFjZShtX3BsYXRm
b3JtRGF0YS5zY2FsZWRGb250KCkpLAorICAgICAgICAgICAgMC43MGYgKiBmb250RGVzY3JpcHRp
b24uY29tcHV0ZWRTaXplKCksIG1fcGxhdGZvcm1EYXRhLnN5bnRoZXRpY0JvbGQoKSwgbV9wbGF0
Zm9ybURhdGEuc3ludGhldGljT2JsaXF1ZSgpKSk7CisKICAgICByZXR1cm4gbV9zbWFsbENhcHNG
b250RGF0YTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>