<?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>9475</bug_id>
          
          <creation_ts>2006-06-16 15:25:55 -0700</creation_ts>
          <short_desc>CSS3: Add support for font-effect: outline.</short_desc>
          <delta_ts>2022-07-06 14:21:17 -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>CSS</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>MOVED</resolution>
          
          
          <bug_file_loc>http://web.nickshanks.com/browsers/safari/outline</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nicholas Shanks">nickshanks</reporter>
          <assigned_to name="Nicholas Shanks">nickshanks</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>emacemac7</cc>
    
    <cc>ian</cc>
    
    <cc>Justin</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit</cc>
    
    <cc>zearin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>45994</commentid>
    <comment_count>0</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2006-06-16 15:25:55 -0700</bug_when>
    <thetext>This patch is a first pass at adding support for text-effect: outline; from the css3-fonts module. It does not support emboss or engrave effects yet.

Potentially there will be the ability to choose an outline typeface from the same family, and for this reasonn the outline style bit is accompanied by a synthetic bit, but at the moment all outlines are synthetic, and the synthetic bit is never set, so only the style bit is checked.

This first-pass patch also only modifies the CG path, and not ATSUI.

I have been considering adding support for three new properties related to this:
-webkit-font-outline-weight;
-webkit-font-outline-fill-color; and
-webkit-font-outline-fill-opacity:

which would take the same parameters as weight, color and opacity respectivly. I should probably prefix this property with -webkit- too, but that&apos;s not done at present. Test page at URL given.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45995</commentid>
    <comment_count>1</comment_count>
      <attachid>8870</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2006-06-16 15:29:39 -0700</bug_when>
    <thetext>Created attachment 8870
Patch version 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45998</commentid>
    <comment_count>2</comment_count>
      <attachid>8870</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-06-16 16:06:12 -0700</bug_when>
    <thetext>Comment on attachment 8870
Patch version 1

(1) It&apos;s highly unlikely that this property will keep the same name if/when this spec is ever revived.  It&apos;s really more of a text-effect than a font-effect.  Your property should therefore be

-webkit-font-effect

and not just font-effect.  I think we should suggest that the property be renamed to text-effect though, because to me this is more like text shadow than it is like other font options.

(2) This is just a way you draw.  It has no effect on metrics.  Therefore this should not be part of the actual font information but just held separately in the style.  It should not be included as one of the properties that have to be checked first either, since it really isn&apos;t a font property.

(3) You should go ahead and fully parse the property, even if embossed/engraved don&apos;t do anything yet.

(4) There&apos;s some crazy indentation in the patch (in cssstyleselector.cpp).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46000</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-06-16 16:12:50 -0700</bug_when>
    <thetext>I think you should consider sending a message to www-style@w3.org or w3c-css-wg@w3.org to kick off some kind of discussion, since I think the current name (font-effect) is pretty terrible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46001</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-06-16 16:17:43 -0700</bug_when>
    <thetext>I sent mail to the CSS WG about this property.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46030</commentid>
    <comment_count>5</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2006-06-17 02:23:40 -0700</bug_when>
    <thetext>1) I agree completely, I just hadn&apos;t got around to changing it yet.
2) I spent a day pulling my hair out trying to figure out why I couldn&apos;t get the effect to show up, before maciej pointed out I had used &quot;text-effect&quot; in the page I was using to test it! I also just noticed that I have done the same in this bug&apos;s summary!

HOWEVER: You are wrong to suggest that this effect would not change the metrics. Although not yet coded, preferably this feature would select a font&apos;s associated Outline style, and only simulate it when none can be found. A suitable font would have bit 3 of the fsSelection field in it&apos;s OS/2 table set; bit 3 of the QuickDraw FOND style field set; or be an AAT font with an Outline feature and possibly a variations axis controlling the outline thickness. Either of the first two would be a different font, and the last would likely change the metrics too.

3) I thought I was. Am I missing something?
4) Yeah, I didn&apos;t bother converting tabs as there was no intention to have this patch accepted.


And lastly a point of my own I request that you put to w3-css-wg (I tried to subscribe but emails bounced): This property has an &quot;engrave&quot; option, which is not what most fonts mean, nor what I would expect, when they describe themselves as Engraved (see Academy Engraved LET, supplied with AppleWorks, for example). There should be an engrave option which looks like Academy Engraved, and another option (possibly &apos;embed&apos;) to describe the effect currently called &apos;engrave&apos;. These would be mutually exclusive, so should be on the same property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46074</commentid>
    <comment_count>6</comment_count>
      <attachid>8879</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2006-06-17 04:09:44 -0700</bug_when>
    <thetext>Created attachment 8879
Same patch but using -webkit-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57487</commentid>
    <comment_count>7</comment_count>
      <attachid>8879</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-09-30 12:45:35 -0700</bug_when>
    <thetext>Comment on attachment 8879
Same patch but using -webkit-

I second darin&apos;s comments.  The patch should be updated to parse fully.  Also, there are a lot of &quot;unrelated&quot; changes in this patch, which make it harder to review/land, particularly since trunk and feature-branch have changed so much recently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1881112</commentid>
    <comment_count>8</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-07-06 14:21:17 -0700</bug_when>
    <thetext>This idea was subsumed by  https://www.w3.org/TR/fill-stroke-3/, which is ongoing work in WebKit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8870</attachid>
            <date>2006-06-16 15:29:39 -0700</date>
            <delta_ts>2006-06-17 04:09:44 -0700</delta_ts>
            <desc>Patch version 1</desc>
            <filename>patch-4.diff</filename>
            <type>text/plain</type>
            <size>20578</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2
aXNpb24gMTQ4ODkpCisrKyBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsOCBAQAogICogQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcAogICoKICAqIENvcHlyaWdodCAoQykgMjAwNCBaYWNrIFJ1c2luIDx6YWNr
QGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0
ZXIsIEluYy4KKyAqICAgICAgICAgICAoQykgMjAwNiBOaWNob2xhcyBTaGFua3MgKHdlYmtpdEBu
aWNrc2hhbmtzLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENvbXB1dGVy
LCBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtODgsNiArODksNyBAQCBzdGF0aWMgY29uc3Qg
aW50IGNvbXB1dGVkUHJvcGVydGllc1tdID0gCiAgICAgQ1NTX1BST1BfRElTUExBWSwKICAgICBD
U1NfUFJPUF9FTVBUWV9DRUxMUywKICAgICBDU1NfUFJPUF9GTE9BVCwKKyAgICBDU1NfUFJPUF9G
T05UX0VGRkVDVCwKICAgICBDU1NfUFJPUF9GT05UX0ZBTUlMWSwKICAgICBDU1NfUFJPUF9GT05U
X1NJWkUsCiAgICAgQ1NTX1BST1BfRk9OVF9TVFlMRSwKQEAgLTY2NSw2ICs2NjcsMTQgQEAgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogICAgICAgICB9CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKKyAgICBjYXNlIENTU19Q
Uk9QX0ZPTlRfRUZGRUNUOgorICAgIHsKKyAgICAgICAgY29uc3QgRm9udERlc2NyaXB0aW9uJiBk
ZXNjID0gc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBpZiAoZGVzYy5vdXRsaW5l
KCkpCisgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfT1VU
TElORSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoQ1NTX1ZBTF9OT05FKTsKKyAgICB9CiAgICAgY2FzZSBDU1NfUFJPUF9GT05UX0ZBTUlM
WToKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG9ubHkgcmV0dXJucyB0aGUgZmlyc3Qg
ZmFtaWx5LgpAQCAtMTI5OSw2ICsxMzA5LDcgQEAgY29uc3QgaW50IGluaGVyaXRhYmxlUHJvcGVy
dGllc1tdID0gewogICAgIENTU19QUk9QX0JPUkRFUl9DT0xMQVBTRSwKICAgICBDU1NfUFJPUF9C
T1JERVJfU1BBQ0lORywKICAgICBDU1NfUFJPUF9DT0xPUiwKKyAgICBDU1NfUFJPUF9GT05UX0VG
RkVDVCwKICAgICBDU1NfUFJPUF9GT05UX0ZBTUlMWSwKICAgICBDU1NfUFJPUF9GT05UX1NJWkUs
CiAgICAgQ1NTX1BST1BfRk9OVF9TVFlMRSwKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDE0ODg5KQorKysgV2ViQ29yZS9jc3MvQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOSBA
QAogLyoqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRE9NIGltcGxlbWVudGF0aW9uIGZv
ciBLREUuCiAgKgotICogKEMpIDE5OTktMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQot
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisg
KiBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICog
ICAgICAgICAgIChDKSAyMDA2IE5pY2hvbGFzIFNoYW5rcyAod2Via2l0QG5pY2tzaGFua3MuY29t
KQorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtNDE0LDYgKzQxNSw3IEBAIGNvbnN0IGludCBpbmhlcml0YWJsZVBy
b3BlcnRpZXNbXSA9IHsKICAgICBDU1NfUFJPUF9CT1JERVJfQ09MTEFQU0UsCiAgICAgQ1NTX1BS
T1BfQk9SREVSX1NQQUNJTkcsCiAgICAgQ1NTX1BST1BfQ09MT1IsCisgICAgQ1NTX1BST1BfRk9O
VF9FRkZFQ1QsCiAgICAgQ1NTX1BST1BfRk9OVF9GQU1JTFksCiAgICAgQ1NTX1BST1BfRk9OVF9T
SVpFLAogICAgIENTU19QUk9QX0ZPTlRfU1RZTEUsCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0eU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMu
aW4JKHJldmlzaW9uIDE0ODg5KQorKysgV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQCBkaXJlY3Rpb24KIGRpc3BsYXkKIGVtcHR5
LWNlbGxzCiBmbG9hdAorZm9udC1lZmZlY3QKIGZvbnQtZmFtaWx5CiBmb250LXNpemUKIC13ZWJr
aXQtZm9udC1zaXplLWRlbHRhCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHJldmlzaW9u
IDE0ODg5KQorKysgV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtMzIyLDM0ICszMjIsNDYgQEAgdW5kZXJsaW5lCiAtd2Via2l0LW5vd3JhcAogCiAjIENT
UzMgVmFsdWVzCisKKyMKICMgQ1NTX1BST1BfQk9YX0FMSUdOCisjCiBzdHJldGNoCiBzdGFydAog
ZW5kCiAjY2VudGVyCiAjYmFzZWxpbmUKLQorIwogIyBDU1NfUFJPUF9CT1hfRElSRUNUSU9OCisj
CiAjIG5vcm1hbAogcmV2ZXJzZQogCisjCiAjIENTU19QUk9QX0JPWF9PUklFTlQKKyMKIGhvcml6
b250YWwKIHZlcnRpY2FsCiBpbmxpbmUtYXhpcwogYmxvY2stYXhpcwogCisjCiAjIENTU19QUk9Q
X0JPWF9QQUNLCisjCiAjIHN0YXJ0CiAjIGVuZAogIyBjZW50ZXIKICMganVzdGlmeQogCisjCiAj
IENTU19QUk9QX0JPWF9MSU5FUworIwogc2luZ2xlCiBtdWx0aXBsZQogCisjCiAjIENTU19QUk9Q
X01BUlFVRUVfRElSRUNUSU9OCisjCiBmb3J3YXJkcwogYmFja3dhcmRzCiBhaGVhZApAQCAtMzYw
LDE1ICszNzIsMjEgQEAgdXAKIGRvd24KICMgYXV0bwogCisjCiAjIENTU19QUk9QX01BUlFVRUVf
U1BFRUQKKyMKIHNsb3cKICMgbm9ybWFsCiBmYXN0CiAKKyMKICMgQ1NTX1BST1BfTUFSUVVFRV9S
RVBFVElUSU9OCisjCiBpbmZpbml0ZQogCisjCiAjIENTU19QUk9QX01BUlFVRUVfU1RZTEUKKyMK
ICMgbm9uZQogc2xpZGUKICMgc2Nyb2xsCkBAIC00NzQsMjkgKzQ5MiwzMiBAQCBzZWFyY2hmaWVs
ZC1yZXN1bHRzCiBzZWFyY2hmaWVsZC1jbG9zZQogdGV4dGZpZWxkCiB0ZXh0YXJlYQotCiAjCiAj
IENTU19QUk9QX0JPUkRFUl9JTUFHRQogIwogIyBzdHJldGNoCiAjIHJlcGVhdAogcm91bmQKLQog
IwogIyBDU1NfUFJPUF9CQUNLR1JPVU5EX0NMSVAvT1JJR0lOCiAjCiBib3JkZXIKIGNvbnRlbnQK
IHBhZGRpbmcKLQogIwogIyBDU1NfUFJPUF9CT1hfU0laSU5HCiAjCiBib3JkZXItYm94CiBjb250
ZW50LWJveAotCiAjCiAjIENTU19QUk9QX19LSFRNTF9SVExfT1JERVJJTkcKICMKIGxvZ2ljYWwK
IHZpc3VhbAorIworIyBDU1NfUFJPUF9GT05UX0VGRkVDVDoKKyMKKyNub25lCitlbmdyYXZlCitl
bWJvc3MKK291dGxpbmUKSW5kZXg6IFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmNwcAkocmV2aXNpb24gMTQ4ODkpCisrKyBXZWJD
b3JlL2Nzcy9jc3NwYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOSBAQAogICog
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgogICoK
ICAqIENvcHlyaWdodCAoQykgMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogQ29w
eXJpZ2h0IChDKSAyMDA1IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkK
LSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgor
ICogICAgICAgICAgIChDKSAyMDA1IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xm
LmNvbSkKKyAqICAgICAgICAgICAoQykgMjAwNiBOaWNob2xhcyBTaGFua3MgKHdlYmtpdEBuaWNr
c2hhbmtzLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENvbXB1dGVyLCBJ
bmMuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTgxMSw2ICs4MTIsMTIgQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYgogICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZl
ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIENTU19QUk9QX0ZPTlRfRUZGRUNU
OiAgICAgICAgIC8vIG5vbmUgfCBlbWJvc3MgfCBlbmdyYXZlIHwgb3V0bGluZSB8IGluaGVyaXQK
KyAgICAgICAgLy8gRklYTUU6IGVtYm9zcyBhbmQgZW5ncmF2ZSBhcmUgcHJlc2VudGx5IHVuc3Vw
cG9ydGVkCisgICAgICAgIGlmIChpZCA9PSBDU1NfVkFMX05PTkUgfHwgaWQgPT0gQ1NTX1ZBTF9P
VVRMSU5FKQorICAgICAgICAgICAgdmFsaWRfcHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgYnJl
YWs7CisKICAgICBjYXNlIENTU19QUk9QX1ZFUlRJQ0FMX0FMSUdOOgogICAgICAgICAvLyBiYXNl
bGluZSB8IHN1YiB8IHN1cGVyIHwgdG9wIHwgdGV4dC10b3AgfCBtaWRkbGUgfCBib3R0b20gfCB0
ZXh0LWJvdHRvbSB8CiAgICAgICAgIC8vIDxwZXJjZW50YWdlPiB8IDxsZW5ndGg+IHwgaW5oZXJp
dApJbmRleDogV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJKHJldmlzaW9uIDE0ODg5KQorKysgV2Vi
Q29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MjIsNiAr
MTcyMiw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlEZWNsYXJhdGlvbnMKICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBDU1NfUFJPUF9GT05UX1dFSUdIVDoKICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBDU1NfUFJPUF9fV0VCS0lUX1RFWFRfU0laRV9BREpVU1Q6CiAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgQ1NTX1BST1BfRk9OVF9WQVJJQU5UOgorICAgICAgICAgICAgICAgICAg
ICBjYXNlIENTU19QUk9QX0ZPTlRfRUZGRUNUOgogICAgICAgICAgICAgICAgICAgICAgICAgLy8g
dGhlc2UgaGF2ZSB0byBiZSBhcHBsaWVkIGZpcnN0LCBiZWNhdXNlIG90aGVyIHByb3BlcnRpZXMg
dXNlIHRoZSBjb21wdXRlZAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWVzIG9mIHRo
ZXNlIHBvcnBlcnRpZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IHRydWU7CkBA
IC0xOTcyLDYgKzE5NzMsMzQgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5
KGludAogICAgICAgICBicmVhazsgICAgICAgIAogICAgIH0KIAorICAgIGNhc2UgQ1NTX1BST1Bf
Rk9OVF9FRkZFQ1Q6CisgICAgeworICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0
aW9uID0gc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBpZiAoaXNJbmhlcml0KSAK
KyAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPdXRsaW5lKHBhcmVudFN0eWxlLT5mb250
RGVzY3JpcHRpb24oKS5vdXRsaW5lKCkpOworICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCisg
ICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0T3V0bGluZSh0cnVlKTsKKyAgICAgICAgZWxz
ZSB7CisJCQlpZiAoIXByaW1pdGl2ZVZhbHVlKSByZXR1cm47CisgICAgICAgICAgICBpbnQgaWQg
PSBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKTsKKyAgICAgICAgICAgIHN3aXRjaCAoaWQpIHsK
KwkJCQljYXNlIENTU19WQUxfT1VUTElORToKKwkJCQkJZm9udERlc2NyaXB0aW9uLnNldE91dGxp
bmUodHJ1ZSk7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgQ1NTX1ZBTF9FTkdSQVZFOgorCQkJCWNh
c2UgQ1NTX1ZBTF9FTUJPU1M6CisJCQkJY2FzZSBDU1NfVkFMX05PTkU6CisJCQkJCWZvbnREZXNj
cmlwdGlvbi5zZXRPdXRsaW5lKGZhbHNlKTsKKwkJCQkJYnJlYWs7CisJCQkJZGVmYXVsdDoKKwkJ
CQkJcmV0dXJuOworCQkJfQorICAgICAgICB9CisgICAgICAgIGlmIChzdHlsZS0+c2V0Rm9udERl
c2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAgICAgICAgICBmb250RGlydHkgPSB0cnVl
OworICAgICAgICBicmVhazsgICAgICAgIAorICAgIH0KKwogICAgIGNhc2UgQ1NTX1BST1BfRk9O
VF9XRUlHSFQ6CiAgICAgewogICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9u
ID0gc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9Gb250
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9Gb250LmgJKHJldmlzaW9uIDE0ODg5
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9Gb250LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MCw5ICsx
NjAsMTAgQEAgcHVibGljOgogICAgIEZvbnRGYW1pbHkmIGZpcnN0RmFtaWx5KCkgeyByZXR1cm4g
bV9mb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKTsgfQogICAgIGNvbnN0IEZvbnRGYW1pbHkm
IGZhbWlseSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2NyaXB0aW9uLmZhbWlseSgpOyB9CiAK
KyAgICBib29sIGJvbGQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnREZXNjcmlwdGlvbi5ib2xkKCk7
IH0KICAgICBib29sIGl0YWxpYygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2NyaXB0aW9uLml0
YWxpYygpOyB9CisgICAgYm9vbCBvdXRsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9mb250RGVzY3Jp
cHRpb24ub3V0bGluZSgpOyB9CiAgICAgdW5zaWduZWQgd2VpZ2h0KCkgY29uc3QgeyByZXR1cm4g
bV9mb250RGVzY3JpcHRpb24ud2VpZ2h0KCk7IH0KLSAgICBib29sIGJvbGQoKSBjb25zdCB7IHJl
dHVybiBtX2ZvbnREZXNjcmlwdGlvbi5ib2xkKCk7IH0KIAogI2lmIF9fQVBQTEVfXwogICAgIE5T
Rm9udCogZ2V0TlNGb250KCkgY29uc3QgeyByZXR1cm4gcHJpbWFyeUZvbnQoKS0+Z2V0TlNGb250
KCk7IH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vRm9udENhY2hlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL0ZvbnRDYWNoZS5jcHAJKHJldmlzaW9uIDE0ODg5KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9Gb250Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxOSArMzks
MjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogc3RydWN0IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtl
eQogewotICAgIEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleShjb25zdCBBdG9taWNTdHJpbmcmIGZh
bWlseSA9IEF0b21pY1N0cmluZygpLCB1bnNpZ25lZCBzaXplID0gMCwgYm9vbCBib2xkID0gZmFs
c2UsIGJvb2wgaXRhbGljID0gZmFsc2UpCi0gICAgOm1fZmFtaWx5KGZhbWlseSksIG1fc2l6ZShz
aXplKSwgbV9ib2xkKGJvbGQpLCBtX2l0YWxpYyhpdGFsaWMpCisgICAgRm9udFBsYXRmb3JtRGF0
YUNhY2hlS2V5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5ID0gQXRvbWljU3RyaW5nKCksIHVu
c2lnbmVkIHNpemUgPSAwLCBib29sIGJvbGQgPSBmYWxzZSwgYm9vbCBpdGFsaWMgPSBmYWxzZSwg
Ym9vbCBvdXRsaW5lID0gZmFsc2UpCisgICAgOm1fZmFtaWx5KGZhbWlseSksIG1fc2l6ZShzaXpl
KSwgbV9ib2xkKGJvbGQpLCBtX2l0YWxpYyhpdGFsaWMpLCBtX291dGxpbmUob3V0bGluZSkKICAg
ICB7fQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtl
eSYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2Uo
bV9mYW1pbHksIG90aGVyLm1fZmFtaWx5KSAmJiBtX3NpemUgPT0gb3RoZXIubV9zaXplICYmIG1f
Ym9sZCA9PSBvdGhlci5tX2JvbGQgJiYgbV9pdGFsaWMgPT0gb3RoZXIubV9pdGFsaWM7CisgICAg
ICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShtX2ZhbWlseSwgb3RoZXIubV9mYW1pbHkpICYm
IG1fc2l6ZSA9PSBvdGhlci5tX3NpemUgJiYgbV9ib2xkID09IG90aGVyLm1fYm9sZCAmJiBtX2l0
YWxpYyA9PSBvdGhlci5tX2l0YWxpYyAmJiBtX291dGxpbmUgPT0gb3RoZXIubV9vdXRsaW5lOwog
ICAgIH0KICAgICAKICAgICBBdG9taWNTdHJpbmcgbV9mYW1pbHk7CiAgICAgdW5zaWduZWQgbV9z
aXplOwotICAgIGJvb2wgbV9ib2xkOwotICAgIGJvb2wgbV9pdGFsaWM7CisgICAgYm9vbCBtX2Jv
bGQgICAgOiAxOworICAgIGJvb2wgbV9pdGFsaWMgIDogMTsKKyAgICBib29sIG1fb3V0bGluZSA6
IDE7CiB9OwogCiBpbmxpbmUgdW5zaWduZWQgY29tcHV0ZUhhc2goY29uc3QgRm9udFBsYXRmb3Jt
RGF0YUNhY2hlS2V5JiBmb250S2V5KQpAQCAtNTksNyArNjAsNyBAQCBpbmxpbmUgdW5zaWduZWQg
Y29tcHV0ZUhhc2goY29uc3QgRm9udFBsCiAgICAgdW5zaWduZWQgaGFzaENvZGVzWzNdID0gewog
ICAgICAgICBDYXNlSW5zZW5zaXRpdmVIYXNoOjpoYXNoKGZvbnRLZXkubV9mYW1pbHkuaW1wbCgp
KSwKICAgICAgICAgZm9udEtleS5tX3NpemUsCi0gICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVk
Pihmb250S2V5Lm1fYm9sZCkgPDwgMSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihmb250S2V5Lm1f
aXRhbGljKQorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZm9udEtleS5tX2JvbGQpIDw8
IDIgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZm9udEtleS5tX2l0YWxpYykgPDwgMSB8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihmb250S2V5Lm1fb3V0bGluZSkKICAgICB9OwogICAgIHJldHVybiBT
dHJpbmdJbXBsOjpjb21wdXRlSGFzaChyZWludGVycHJldF9jYXN0PFVDaGFyKj4oaGFzaENvZGVz
KSwgMyAqIHNpemVvZih1bnNpZ25lZCkgLyBzaXplb2YoVUNoYXIpKTsKIH0KQEAgLTgxLDEyICs4
MiwxMiBAQCBzdHJ1Y3QgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5VHJhaXRzIDogCiAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25z
dCBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkmIGRlbGV0ZWRWYWx1ZSgpCiAgICAgewotICAgICAg
ICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5IGtleShudWxsQXRvbSwgMHhGRkZGRkZG
RlUsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhQ2FjaGVL
ZXkga2V5KG51bGxBdG9tLCAweEZGRkZGRkZGVSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CiAgICAg
ICAgIHJldHVybiBrZXk7CiAgICAgfQogICAgIHN0YXRpYyBjb25zdCBGb250UGxhdGZvcm1EYXRh
Q2FjaGVLZXkmIGVtcHR5VmFsdWUoKQogICAgIHsKLSAgICAgICAgc3RhdGljIEZvbnRQbGF0Zm9y
bURhdGFDYWNoZUtleSBrZXkobnVsbEF0b20sIDAsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIHN0
YXRpYyBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkga2V5KG51bGxBdG9tLCAwLCBmYWxzZSwgZmFs
c2UsIGZhbHNlKTsKICAgICAgICAgcmV0dXJuIGtleTsKICAgICB9CiB9OwpAQCAtMTMwLDcgKzEz
MSw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm8KICAgICAgICAg
cGxhdGZvcm1Jbml0KCk7CiAgICAgfQogCi0gICAgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5IGtl
eShmYW1pbHlOYW1lLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgZm9udERl
c2NyaXB0aW9uLmJvbGQoKSwgZm9udERlc2NyaXB0aW9uLml0YWxpYygpKTsKKyAgICBGb250UGxh
dGZvcm1EYXRhQ2FjaGVLZXkga2V5KGZhbWlseU5hbWUsIGZvbnREZXNjcmlwdGlvbi5jb21wdXRl
ZFBpeGVsU2l6ZSgpLCBmb250RGVzY3JpcHRpb24uYm9sZCgpLCBmb250RGVzY3JpcHRpb24uaXRh
bGljKCksIGZvbnREZXNjcmlwdGlvbi5vdXRsaW5lKCkpOwogICAgIEZvbnRQbGF0Zm9ybURhdGEq
IHJlc3VsdCA9IDA7CiAgICAgYm9vbCBmb3VuZFJlc3VsdDsKICAgICBGb250UGxhdGZvcm1EYXRh
Q2FjaGU6Oml0ZXJhdG9yIGl0ID0gZ0ZvbnRQbGF0Zm9ybURhdGFDYWNoZS0+ZmluZChrZXkpOwpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9Gb250RGVzY3JpcHRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL0ZvbnREZXNjcmlwdGlvbi5oCShyZXZpc2lvbiAxNDg4OSkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vRm9udERlc2NyaXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIsNyAr
Miw4IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAq
IENvcHlyaWdodCAoQykgMjAwMy02IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiAgICAgICAgICAg
KEMpIDIwMDYgTmljaG9sYXMgU2hhbmtzICh3ZWJraXRAbmlja3NoYW5rcy5jb20pCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDMtMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0zNywxMCArMzgsMTYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNb25vc3BhY2VGYW1pbHksIEN1cnNpdmVGYW1pbHksIEZhbnRhc3lGYW1pbHkgfTsKIAog
ICAgIEZvbnREZXNjcmlwdGlvbigpCi0gICAgICAgIDogbV9zcGVjaWZpZWRTaXplKDApLCBtX2Nv
bXB1dGVkU2l6ZSgwKSwgCi0gICAgICAgICAgbV9pdGFsaWMoZmFsc2UpLCBtX3NtYWxsQ2Fwcyhm
YWxzZSksIG1faXNBYnNvbHV0ZVNpemUoZmFsc2UpLCBtX3dlaWdodChjTm9ybWFsV2VpZ2h0KSwg
Ci0gICAgICAgICAgbV9nZW5lcmljRmFtaWx5KE5vRmFtaWx5KSwgbV91c2VQcmludGVyRm9udChm
YWxzZSkKLSAgICAgICAgICB7fQorICAgICAgICA6IG1fc3BlY2lmaWVkU2l6ZSgwKQorICAgICAg
ICAsIG1fY29tcHV0ZWRTaXplKDApCisgICAgICAgICwgbV9pdGFsaWMoZmFsc2UpCisgICAgICAg
ICwgbV9vdXRsaW5lKGZhbHNlKQorICAgICAgICAsIG1fc21hbGxDYXBzKGZhbHNlKQorICAgICAg
ICAsIG1faXNBYnNvbHV0ZVNpemUoZmFsc2UpCisgICAgICAgICwgbV93ZWlnaHQoY05vcm1hbFdl
aWdodCkKKyAgICAgICAgLCBtX2dlbmVyaWNGYW1pbHkoTm9GYW1pbHkpCisgICAgICAgICwgbV91
c2VQcmludGVyRm9udChmYWxzZSkKKyAgICAgICAge30KICAgICAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgRm9udERlc2NyaXB0aW9uJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOyB9CkBAIC00OSwxMSArNTYsMTIgQEAgcHVibGljOgogICAgIEZvbnRGYW1pbHkmIGZpcnN0
RmFtaWx5KCkgeyByZXR1cm4gbV9mYW1pbHlMaXN0OyB9CiAgICAgZmxvYXQgc3BlY2lmaWVkU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY2lmaWVkU2l6ZTsgfQogICAgIGZsb2F0IGNvbXB1dGVk
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0ZWRTaXplOyB9Ci0gICAgYm9vbCBpdGFsaWMo
KSBjb25zdCB7IHJldHVybiBtX2l0YWxpYzsgfQogICAgIGJvb2wgYm9sZCgpIGNvbnN0IHsgcmV0
dXJuIHdlaWdodCgpID09IGNCb2xkV2VpZ2h0OyB9Ci0gICAgaW50IGNvbXB1dGVkUGl4ZWxTaXpl
KCkgY29uc3QgeyByZXR1cm4gaW50KG1fY29tcHV0ZWRTaXplICsgMC41Zik7IH0KKyAgICBib29s
IGl0YWxpYygpIGNvbnN0IHsgcmV0dXJuIG1faXRhbGljOyB9CisgICAgYm9vbCBvdXRsaW5lKCkg
Y29uc3QgeyByZXR1cm4gbV9vdXRsaW5lOyB9CiAgICAgYm9vbCBzbWFsbENhcHMoKSBjb25zdCB7
IHJldHVybiBtX3NtYWxsQ2FwczsgfQogICAgIGJvb2wgaXNBYnNvbHV0ZVNpemUoKSBjb25zdCB7
IHJldHVybiBtX2lzQWJzb2x1dGVTaXplOyB9CisgICAgaW50IGNvbXB1dGVkUGl4ZWxTaXplKCkg
Y29uc3QgeyByZXR1cm4gaW50KG1fY29tcHV0ZWRTaXplICsgMC41Zik7IH0KICAgICB1bnNpZ25l
ZCB3ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3dlaWdodDsgfQogICAgIEdlbmVyaWNGYW1pbHlU
eXBlIGdlbmVyaWNGYW1pbHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmljRmFt
aWx5VHlwZT4obV9nZW5lcmljRmFtaWx5KTsgfQogICAgIGJvb2wgdXNlUHJpbnRlckZvbnQoKSBj
b25zdCB7IHJldHVybiBtX3VzZVByaW50ZXJGb250OyB9CkBAIC02Miw2ICs3MCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldENvbXB1dGVkU2l6ZShmbG9hdCBzKSB7IG1fY29tcHV0ZWRTaXplID0g
czsgfQogICAgIHZvaWQgc2V0U3BlY2lmaWVkU2l6ZShmbG9hdCBzKSB7IG1fc3BlY2lmaWVkU2l6
ZSA9IHM7IH0KICAgICB2b2lkIHNldEl0YWxpYyhib29sIGkpIHsgbV9pdGFsaWMgPSBpOyB9Cisg
ICAgdm9pZCBzZXRPdXRsaW5lKGJvb2wgb2wpIHsgbV9vdXRsaW5lID0gb2w7IH0KICAgICB2b2lk
IHNldFNtYWxsQ2Fwcyhib29sIGMpIHsgbV9zbWFsbENhcHMgPSBjOyB9CiAgICAgdm9pZCBzZXRJ
c0Fic29sdXRlU2l6ZShib29sIHMpIHsgbV9pc0Fic29sdXRlU2l6ZSA9IHM7IH0KICAgICB2b2lk
IHNldFdlaWdodCh1bnNpZ25lZCB3KSB7IG1fd2VpZ2h0ID0gdzsgfQpAQCAtNzYsNiArODUsNyBA
QCBwcml2YXRlOgogICAgIGZsb2F0IG1fY29tcHV0ZWRTaXplOyAgICAvLyBDb21wdXRlZCBzaXpl
IGFkanVzdGVkIGZvciB0aGUgbWluaW11bSBmb250IHNpemUgYW5kIHRoZSB6b29tIGZhY3Rvci4g
IAogCiAgICAgYm9vbCBtX2l0YWxpYyA6IDE7CisgICAgYm9vbCBtX291dGxpbmUgOiAxOwogICAg
IGJvb2wgbV9zbWFsbENhcHMgOiAxOwogICAgIGJvb2wgbV9pc0Fic29sdXRlU2l6ZSA6IDE7ICAg
Ly8gV2hldGhlciBvciBub3QgQ1NTIHNwZWNpZmllZCBhbiBleHBsaWNpdCBzaXplCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAobG9naWNhbCBzaXplcyBsaWtlICJtZWRpdW0i
IGRvbid0IGNvdW50KS4KQEAgLTkwLDYgKzEwMCw3IEBAIGlubGluZSBib29sIEZvbnREZXNjcmlw
dGlvbjo6b3BlcmF0b3I9PSgKICAgICAgICAgJiYgbV9zcGVjaWZpZWRTaXplID09IG90aGVyLm1f
c3BlY2lmaWVkU2l6ZQogICAgICAgICAmJiBtX2NvbXB1dGVkU2l6ZSA9PSBvdGhlci5tX2NvbXB1
dGVkU2l6ZQogICAgICAgICAmJiBtX2l0YWxpYyA9PSBvdGhlci5tX2l0YWxpYworICAgICAgICAm
JiBtX291dGxpbmUgPT0gb3RoZXIubV9vdXRsaW5lCiAgICAgICAgICYmIG1fc21hbGxDYXBzID09
IG90aGVyLm1fc21hbGxDYXBzCiAgICAgICAgICYmIG1faXNBYnNvbHV0ZVNpemUgPT0gb3RoZXIu
bV9pc0Fic29sdXRlU2l6ZQogICAgICAgICAmJiBtX3dlaWdodCA9PSBvdGhlci5tX3dlaWdodApJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRm9udENhY2hlTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0ZvbnRDYWNoZU1hYy5tbQkocmV2aXNpb24gMTQ4ODkpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL21hYy9Gb250Q2FjaGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTE1MCw3ICsxNTAsNyBAQCBjb25zdCBGb250RGF0YSogRm9udENhY2hlOjpnZXRGb250RGF0YUZv
CiAgICAgICAgIE5TRm9udFRyYWl0TWFzayBhY3R1YWxUcmFpdHMgPSBbbWFuYWdlciB0cmFpdHNP
ZkZvbnQ6c3Vic3RpdHV0ZUZvbnRdOwogICAgICAgICBGb250UGxhdGZvcm1EYXRhIGFsdGVybmF0
ZUZvbnQoc3Vic3RpdHV0ZUZvbnQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHRyYWl0cyAmIE5TQm9sZEZvbnRNYXNrKSAmJiAhKGFjdHVhbFRyYWl0cyAmIE5TQm9s
ZEZvbnRNYXNrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFp
dHMgJiBOU0l0YWxpY0ZvbnRNYXNrKSAmJiAhKGFjdHVhbFRyYWl0cyAmIE5TSXRhbGljRm9udE1h
c2spKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFpdHMgJiBO
U0l0YWxpY0ZvbnRNYXNrKSAmJiAhKGFjdHVhbFRyYWl0cyAmIE5TSXRhbGljRm9udE1hc2spLCBm
b250LmZvbnREZXNjcmlwdGlvbigpLm91dGxpbmUoKSk7CiAgICAgICAgIHJldHVybiBnZXRDYWNo
ZWRGb250RGF0YSgmYWx0ZXJuYXRlRm9udCk7CiAgICAgfQogCkBAIC0yMTksNiArMjE5LDcgQEAg
Rm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpjcmVhdGVGb250UAogICAgIHJlc3VsdC0+Zm9u
dCA9IGZvbnREZXNjcmlwdGlvbi51c2VQcmludGVyRm9udCgpID8gW25zRm9udCBwcmludGVyRm9u
dF0gOiBbbnNGb250IHNjcmVlbkZvbnRdOwogICAgIHJlc3VsdC0+c3ludGhldGljQm9sZCA9ICh0
cmFpdHMgJiBOU0JvbGRGb250TWFzaykgJiYgIShhY3R1YWxUcmFpdHMgJiBOU0JvbGRGb250TWFz
ayk7CiAgICAgcmVzdWx0LT5zeW50aGV0aWNPYmxpcXVlID0gKHRyYWl0cyAmIE5TSXRhbGljRm9u
dE1hc2spICYmICEoYWN0dWFsVHJhaXRzICYgTlNJdGFsaWNGb250TWFzayk7CisJcmVzdWx0LT5z
eW50aGV0aWNPdXRsaW5lID0gZm9udERlc2NyaXB0aW9uLm91dGxpbmUoKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9Gb250RGF0YU1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9Gb250RGF0YU1hYy5tbQkocmV2aXNp
b24gMTQ4ODkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9Gb250RGF0YU1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ1LDYgKzI0NSw3IEBAIEZvbnREYXRhKiBGb250RGF0YTo6c21hbGxDYXBz
Rm9udERhdGEoY28KICAgICAgICAgICAgICAgICBOU0ZvbnRUcmFpdE1hc2sgc21hbGxDYXBzRm9u
dFRyYWl0cyA9IFtmb250TWFuYWdlciB0cmFpdHNPZkZvbnQ6c21hbGxDYXBzRm9udC5mb250XTsK
ICAgICAgICAgICAgICAgICBzbWFsbENhcHNGb250LnN5bnRoZXRpY0JvbGQgPSAoZm9udFRyYWl0
cyAmIE5TQm9sZEZvbnRNYXNrKSAmJiAhKHNtYWxsQ2Fwc0ZvbnRUcmFpdHMgJiBOU0JvbGRGb250
TWFzayk7CiAgICAgICAgICAgICAgICAgc21hbGxDYXBzRm9udC5zeW50aGV0aWNPYmxpcXVlID0g
KGZvbnRUcmFpdHMgJiBOU0l0YWxpY0ZvbnRNYXNrKSAmJiAhKHNtYWxsQ2Fwc0ZvbnRUcmFpdHMg
JiBOU0l0YWxpY0ZvbnRNYXNrKTsKKwkJCQlzbWFsbENhcHNGb250LnN5bnRoZXRpY091dGxpbmUg
PSBtX2ZvbnQuc3ludGhldGljT3V0bGluZTsKIAogICAgICAgICAgICAgICAgIG1fc21hbGxDYXBz
Rm9udERhdGEgPSBGb250Q2FjaGU6OmdldENhY2hlZEZvbnREYXRhKCZzbWFsbENhcHNGb250KTsK
ICAgICAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0ZvbnRNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRm9udE1hYy5tbQkocmV2aXNpb24gMTQ4
ODkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9Gb250TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC00LDYgKzQsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5v
cmcpCisgKiAgICAgICAgICAgKEMpIDIwMDYgTmljaG9sYXMgU2hhbmtzICh3ZWJraXRAbmlja3No
YW5rcy5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCkBAIC01NTUsOCArNTU2LDcgQEAgaW50IEZvbnQ6Om9mZnNldEZvclBv
c2l0aW9uRm9yQ29tcGxleFRleAogCiB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBGb250RGF0YSogZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGds
eXBoQnVmZmVyLCBpbnQgZnJvbSwgaW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IEdyYWIgdGhlIENHQ29udGV4dCBmcm9tIHRoZSBH
cmFwaGljc0NvbnRleHQgZXZlbnR1YWxseSwgd2hlbiB3ZSBoYXZlIG1hZGUgc3VyZSB0byBzaGll
bGQgYWdhaW5zdCBmbGlwcGluZyBjYXVzZWQgYnkgY2FsbHMgaW50byB1cwotICAgIC8vIGZyb20g
U2FmYXJpLgorICAgIC8vIEZJWE1FOiBHcmFiIHRoZSBDR0NvbnRleHQgZnJvbSB0aGUgR3JhcGhp
Y3NDb250ZXh0IGV2ZW50dWFsbHksIHdoZW4gd2UgaGF2ZSBtYWRlIHN1cmUgdG8gc2hpZWxkIGFn
YWluc3QgZmxpcHBpbmcgY2F1c2VkIGJ5IGNhbGxzIGludG8gdXMgZnJvbSBTYWZhcmkuCiAgICAg
TlNHcmFwaGljc0NvbnRleHQgKmdDb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRD
b250ZXh0XTsKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gKENHQ29udGV4dFJlZilbZ0Nv
bnRleHQgZ3JhcGhpY3NQb3J0XTsKIApAQCAtNTg5LDYgKzU4OSwxMiBAQCB2b2lkIEZvbnQ6OmRy
YXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjCiAgICAgaWYgKHBsYXRmb3JtRGF0YS5zeW50aGV0
aWNPYmxpcXVlKQogICAgICAgICBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybUNvbmNhdChtYXRy
aXgsIENHQWZmaW5lVHJhbnNmb3JtTWFrZSgxLCAwLCAtdGFuZihTWU5USEVUSUNfT0JMSVFVRV9B
TkdMRSAqIGFjb3NmKDApIC8gOTApLCAxLCAwLCAwKSk7IAogICAgIENHQ29udGV4dFNldFRleHRN
YXRyaXgoY2dDb250ZXh0LCBtYXRyaXgpOworICAgIAorICAgIC8vIEZJWE1FOiBzaG91bGQgY2hl
Y2sgcGxhdGZvcm1EYXRhLnN5bnRoZXRpY091dGxpbmUsIGJ1dCB3ZSBhcmVuJ3QgdXNpbmcgcmVh
bCBvdXRsaW5lIGZhY2VzIHlldCBhbnl3YXkKKyAgICBpZiAob3V0bGluZSgpKQorCSAgICBDR0Nv
bnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY2dDb250ZXh0LCBrQ0dUZXh0U3Ryb2tlKTsKKwllbHNl
CisJICAgIENHQ29udGV4dFNldFRleHREcmF3aW5nTW9kZShjZ0NvbnRleHQsIGtDR1RleHRGaWxs
KTsKIAogICAgIHdrU2V0Q0dGb250UmVuZGVyaW5nTW9kZShjZ0NvbnRleHQsIGRyYXdGb250KTsK
ICAgICBDR0NvbnRleHRTZXRGb250U2l6ZShjZ0NvbnRleHQsIDEuMGYpOwpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvRm9udFBsYXRmb3JtRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vbWFjL0ZvbnRQbGF0Zm9ybURhdGEuaAkocmV2aXNpb24gMTQ4ODkpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL21hYy9Gb250UGxhdGZvcm1EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTIs
NiArMiw3IEBACiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgaW50ZXJuYWwgZm9udCBpbXBs
ZW1lbnRhdGlvbi4gIEl0IHNob3VsZCBub3QgYmUgaW5jbHVkZWQgYnkgYW55b25lIG90aGVyIHRo
YW4KICAqIEZvbnRNYWMuY3BwLCBGb250V2luLmNwcCBhbmQgRm9udC5jcHAuCiAgKgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IE5pY2hvbGFzIFNoYW5rcyAod2Via2l0QG5pY2tzaGFua3MuY29tKQog
ICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpA
QCAtMzgsMjYgKzM5LDI3IEBAIHN0cnVjdCBGb250UGxhdGZvcm1EYXRhIHsKICAgICBjbGFzcyBE
ZWxldGVkIHt9OwogCiAgICAgRm9udFBsYXRmb3JtRGF0YShEZWxldGVkKQotICAgIDogZm9udCgo
TlNGb250KiktMSksIHN5bnRoZXRpY0JvbGQoZmFsc2UpLCBzeW50aGV0aWNPYmxpcXVlKGZhbHNl
KQorICAgIDogZm9udCgoTlNGb250KiktMSksIHN5bnRoZXRpY0JvbGQoZmFsc2UpLCBzeW50aGV0
aWNPYmxpcXVlKGZhbHNlKSwgc3ludGhldGljT3V0bGluZShmYWxzZSkKICAgICB7fQogCi0gICAg
Rm9udFBsYXRmb3JtRGF0YShOU0ZvbnQqIGYgPSAwLCBib29sIGIgPSBmYWxzZSwgYm9vbCBvID0g
ZmFsc2UpCi0gICAgOiBmb250KGYpLCBzeW50aGV0aWNCb2xkKGIpLCBzeW50aGV0aWNPYmxpcXVl
KG8pCisgICAgRm9udFBsYXRmb3JtRGF0YShOU0ZvbnQqIGYgPSAwLCBib29sIGIgPSBmYWxzZSwg
Ym9vbCBvID0gZmFsc2UsIGJvb2wgb2wgPSBmYWxzZSkKKyAgICA6IGZvbnQoZiksIHN5bnRoZXRp
Y0JvbGQoYiksIHN5bnRoZXRpY09ibGlxdWUobyksIHN5bnRoZXRpY091dGxpbmUob2wpCiAgICAg
e30KIAogICAgIE5TRm9udCAqZm9udDsKLSAgICBib29sIHN5bnRoZXRpY0JvbGQ7Ci0gICAgYm9v
bCBzeW50aGV0aWNPYmxpcXVlOworICAgIGJvb2wgc3ludGhldGljQm9sZCAgICA6IDE7CisgICAg
Ym9vbCBzeW50aGV0aWNPYmxpcXVlIDogMTsKKyAgICBib29sIHN5bnRoZXRpY091dGxpbmUgOiAx
OwogCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgeyAKLSAgICAgICAgdWludHB0cl90
IGhhc2hDb2Rlc1syXSA9IHsgKHVpbnRwdHJfdClmb250LCBzeW50aGV0aWNCb2xkIDw8IDEgfCBz
eW50aGV0aWNPYmxpcXVlIH07CisgICAgICAgIHVpbnRwdHJfdCBoYXNoQ29kZXNbMl0gPSB7ICh1
aW50cHRyX3QpZm9udCwgc3ludGhldGljQm9sZCA8PCAyIHwgc3ludGhldGljT2JsaXF1ZSA8PCAx
IHwgc3ludGhldGljT3V0bGluZSB9OwogICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y29tcHV0
ZUhhc2gocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGhhc2hDb2RlcyksIHNpemVvZihoYXNoQ29k
ZXMpIC8gc2l6ZW9mKFVDaGFyKSk7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgIHsgCi0gICAgICAgIHJldHVybiBm
b250ID09IG90aGVyLmZvbnQgJiYgc3ludGhldGljQm9sZCA9PSBvdGhlci5zeW50aGV0aWNCb2xk
ICYmIHN5bnRoZXRpY09ibGlxdWUgPT0gb3RoZXIuc3ludGhldGljT2JsaXF1ZTsKKyAgICAgICAg
cmV0dXJuIGZvbnQgPT0gb3RoZXIuZm9udCAmJiBzeW50aGV0aWNCb2xkID09IG90aGVyLnN5bnRo
ZXRpY0JvbGQgJiYgc3ludGhldGljT2JsaXF1ZSA9PSBvdGhlci5zeW50aGV0aWNPYmxpcXVlICYm
IHN5bnRoZXRpY091dGxpbmUgPT0gb3RoZXIuc3ludGhldGljT3V0bGluZTsKICAgICB9CiB9Owog
Cg==
</data>
<flag name="review"
          id="2587"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8879</attachid>
            <date>2006-06-17 04:09:44 -0700</date>
            <delta_ts>2010-06-10 21:00:28 -0700</delta_ts>
            <desc>Same patch but using -webkit-</desc>
            <filename>patch-5.diff</filename>
            <type>text/plain</type>
            <size>21883</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCAgICAo
cmV2aXNpb24gMTQ4ODkpCisrKyBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwICAgICh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsOCBAQAogICogQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcAogICoKICAqIENvcHlyaWdodCAoQykgMjAwNCBaYWNrIFJ1c2lu
IDx6YWNrQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUg
Q29tcHV0ZXIsIEluYy4KKyAqICAgICAgICAgICAoQykgMjAwNiBOaWNob2xhcyBTaGFua3MgKHdl
YmtpdEBuaWNrc2hhbmtzLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENv
bXB1dGVyLCBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtODgsNiArODksNyBAQCBzdGF0aWMg
Y29uc3QgaW50IGNvbXB1dGVkUHJvcGVydGllc1tdID0gCiAgICAgQ1NTX1BST1BfRElTUExBWSwK
ICAgICBDU1NfUFJPUF9FTVBUWV9DRUxMUywKICAgICBDU1NfUFJPUF9GTE9BVCwKKyAgICBDU1Nf
UFJPUF9fV0VCS0lUX0ZPTlRfRUZGRUNULAogICAgIENTU19QUk9QX0ZPTlRfRkFNSUxZLAogICAg
IENTU19QUk9QX0ZPTlRfU0laRSwKICAgICBDU1NfUFJPUF9GT05UX1NUWUxFLApAQCAtNjY1LDYg
KzY2NywxNSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAg
ICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwor
ICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9GT05UX0VGRkVDVDoKKyAgICB7CisgICAgICAgIC8v
IEZJWE1FOiBoYW5kbGUgZW1ib3NzIGFuZCBlbmdyYXZlCisgICAgICAgIGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYgZGVzYyA9IHN0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICAgICAgaWYgKGRl
c2Mub3V0bGluZSgpKQorICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShD
U1NfVkFMX09VVExJTkUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gbmV3IENT
U1ByaW1pdGl2ZVZhbHVlKENTU19WQUxfTk9ORSk7CisgICAgfQogICAgIGNhc2UgQ1NTX1BST1Bf
Rk9OVF9GQU1JTFk6CiAgICAgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBvbmx5IHJldHVybnMg
dGhlIGZpcnN0IGZhbWlseS4KQEAgLTEyOTksNiArMTMxMCw3IEBAIGNvbnN0IGludCBpbmhlcml0
YWJsZVByb3BlcnRpZXNbXSA9IHsKICAgICBDU1NfUFJPUF9CT1JERVJfQ09MTEFQU0UsCiAgICAg
Q1NTX1BST1BfQk9SREVSX1NQQUNJTkcsCiAgICAgQ1NTX1BST1BfQ09MT1IsCisgICAgQ1NTX1BS
T1BfX1dFQktJVF9GT05UX0VGRkVDVCwKICAgICBDU1NfUFJPUF9GT05UX0ZBTUlMWSwKICAgICBD
U1NfUFJPUF9GT05UX1NJWkUsCiAgICAgQ1NTX1BST1BfRk9OVF9TVFlMRSwKSW5kZXg6IFdlYkNv
cmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAgICAgKHJldmlzaW9uIDE0ODg5
KQorKysgV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwICAgICh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDggKzEsOSBAQAogLyoqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgRE9NIGltcGxlbWVudGF0aW9uIGZvciBLREUuCiAgKgotICogKEMpIDE5OTktMjAwMyBMYXJz
IEtub2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMyBMYXJzIEtu
b2xsIChrbm9sbEBrZGUub3JnKQorICogICAgICAgICAgIChDKSAyMDA2IE5pY2hvbGFzIFNoYW5r
cyAod2Via2l0QG5pY2tzaGFua3MuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMDYgQXBw
bGUgQ29tcHV0ZXIsIEluYy4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDE0LDYgKzQxNSw3IEBA
IGNvbnN0IGludCBpbmhlcml0YWJsZVByb3BlcnRpZXNbXSA9IHsKICAgICBDU1NfUFJPUF9CT1JE
RVJfQ09MTEFQU0UsCiAgICAgQ1NTX1BST1BfQk9SREVSX1NQQUNJTkcsCiAgICAgQ1NTX1BST1Bf
Q09MT1IsCisgICAgQ1NTX1BST1BfX1dFQktJVF9GT05UX0VGRkVDVCwKICAgICBDU1NfUFJPUF9G
T05UX0ZBTUlMWSwKICAgICBDU1NfUFJPUF9GT05UX1NJWkUsCiAgICAgQ1NTX1BST1BfRk9OVF9T
VFlMRSwKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbiAgICAocmV2aXNpb24gMTQ4ODkpCisr
KyBXZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluICAgICh3b3JraW5nIGNvcHkpCkBAIC02
Myw2ICs2Myw3IEBAIGRpcmVjdGlvbgogZGlzcGxheQogZW1wdHktY2VsbHMKIGZsb2F0Cistd2Vi
a2l0LWZvbnQtZWZmZWN0CiBmb250LWZhbWlseQogZm9udC1zaXplCiAtd2Via2l0LWZvbnQtc2l6
ZS1kZWx0YQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluICAgIChyZXZpc2lvbiAxNDg4OSkK
KysrIFdlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gICAgKHdvcmtpbmcgY29weSkKQEAg
LTMyMiwzNCArMzIyLDQ2IEBAIHVuZGVybGluZQogLXdlYmtpdC1ub3dyYXAKIAogIyBDU1MzIFZh
bHVlcworCisjCiAjIENTU19QUk9QX0JPWF9BTElHTgorIwogc3RyZXRjaAogc3RhcnQKIGVuZAog
I2NlbnRlcgogI2Jhc2VsaW5lCi0KKyMKICMgQ1NTX1BST1BfQk9YX0RJUkVDVElPTgorIwogIyBu
b3JtYWwKIHJldmVyc2UKIAorIwogIyBDU1NfUFJPUF9CT1hfT1JJRU5UCisjCiBob3Jpem9udGFs
CiB2ZXJ0aWNhbAogaW5saW5lLWF4aXMKIGJsb2NrLWF4aXMKIAorIwogIyBDU1NfUFJPUF9CT1hf
UEFDSworIwogIyBzdGFydAogIyBlbmQKICMgY2VudGVyCiAjIGp1c3RpZnkKIAorIwogIyBDU1Nf
UFJPUF9CT1hfTElORVMKKyMKIHNpbmdsZQogbXVsdGlwbGUKIAorIwogIyBDU1NfUFJPUF9NQVJR
VUVFX0RJUkVDVElPTgorIwogZm9yd2FyZHMKIGJhY2t3YXJkcwogYWhlYWQKQEAgLTM2MCwxNSAr
MzcyLDIxIEBAIHVwCiBkb3duCiAjIGF1dG8KIAorIwogIyBDU1NfUFJPUF9NQVJRVUVFX1NQRUVE
CisjCiBzbG93CiAjIG5vcm1hbAogZmFzdAogCisjCiAjIENTU19QUk9QX01BUlFVRUVfUkVQRVRJ
VElPTgorIwogaW5maW5pdGUKIAorIwogIyBDU1NfUFJPUF9NQVJRVUVFX1NUWUxFCisjCiAjIG5v
bmUKIHNsaWRlCiAjIHNjcm9sbApAQCAtNDc0LDI5ICs0OTIsMzIgQEAgc2VhcmNoZmllbGQtcmVz
dWx0cwogc2VhcmNoZmllbGQtY2xvc2UKIHRleHRmaWVsZAogdGV4dGFyZWEKLQogIwogIyBDU1Nf
UFJPUF9CT1JERVJfSU1BR0UKICMKICMgc3RyZXRjaAogIyByZXBlYXQKIHJvdW5kCi0KICMKICMg
Q1NTX1BST1BfQkFDS0dST1VORF9DTElQL09SSUdJTgogIwogYm9yZGVyCiBjb250ZW50CiBwYWRk
aW5nCi0KICMKICMgQ1NTX1BST1BfQk9YX1NJWklORwogIwogYm9yZGVyLWJveAogY29udGVudC1i
b3gKLQogIwogIyBDU1NfUFJPUF9fS0hUTUxfUlRMX09SREVSSU5HCiAjCiBsb2dpY2FsCiB2aXN1
YWwKKyMKKyMgQ1NTX1BST1BfX1dFQktJVF9GT05UX0VGRkVDVDoKKyMKKyNub25lCitlbmdyYXZl
CitlbWJvc3MKK291dGxpbmUKSW5kZXg6IFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmNwcCAgICAocmV2aXNpb24gMTQ4ODkpCisr
KyBXZWJDb3JlL2Nzcy9jc3NwYXJzZXIuY3BwICAgICh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIs
OSBAQAogICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3Ig
S0RFLgogICoKICAqIENvcHlyaWdodCAoQykgMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3Jn
KQotICogQ29weXJpZ2h0IChDKSAyMDA1IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3
b2xmLmNvbSkKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRl
ciwgSW5jLgorICogICAgICAgICAgIChDKSAyMDA1IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAoa2Rl
QGNhcmV3b2xmLmNvbSkKKyAqICAgICAgICAgICAoQykgMjAwNiBOaWNob2xhcyBTaGFua3MgKHdl
YmtpdEBuaWNrc2hhbmtzLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDA2IEFwcGxlIENv
bXB1dGVyLCBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTgxMSw2ICs4MTIsMTIgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYgogICAgICAgICAgICAgdmFsaWRf
cHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIENTU19QUk9QX19X
RUJLSVRfRk9OVF9FRkZFQ1Q6ICAvLyBub25lIHwgZW1ib3NzIHwgZW5ncmF2ZSB8IG91dGxpbmUg
fCBpbmhlcml0CisgICAgICAgIC8vIEZJWE1FOiBlbWJvc3MgYW5kIGVuZ3JhdmUgYXJlIHByZXNl
bnRseSB1bnN1cHBvcnRlZAorICAgICAgICBpZiAoaWQgPT0gQ1NTX1ZBTF9OT05FIHx8IGlkID09
IENTU19WQUxfT1VUTElORSkKKyAgICAgICAgICAgIHZhbGlkX3ByaW1pdGl2ZSA9IHRydWU7Cisg
ICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBDU1NfUFJPUF9WRVJUSUNBTF9BTElHTjoKICAgICAg
ICAgLy8gYmFzZWxpbmUgfCBzdWIgfCBzdXBlciB8IHRvcCB8IHRleHQtdG9wIHwgbWlkZGxlIHwg
Ym90dG9tIHwgdGV4dC1ib3R0b20gfAogICAgICAgICAvLyA8cGVyY2VudGFnZT4gfCA8bGVuZ3Ro
PiB8IGluaGVyaXQKSW5kZXg6IFdlYkNvcmUvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwICAgIChyZXZpc2lvbiAx
NDg4OSkKKysrIFdlYkNvcmUvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwICAgICh3b3JraW5nIGNv
cHkpCkBAIC0xNzEwLDcgKzE3MTAsNiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5RGVj
bGFyYXRpb25zCiAgICAgICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eSYgY3VycmVudCA9ICppdDsK
ICAgICAgICAgICAgIC8vIGdpdmUgc3BlY2lhbCBwcmlvcml0eSB0byBmb250LXh4eCwgY29sb3Ig
cHJvcGVydGllcwogICAgICAgICAgICAgaWYgKGlzSW1wb3J0YW50ID09IGN1cnJlbnQuaXNJbXBv
cnRhbnQoKSkgewotICAgICAgICAgICAgICAgIGJvb2wgZmlyc3Q7CiAgICAgICAgICAgICAgICAg
c3dpdGNoKGN1cnJlbnQuaWQoKSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIENTU19QUk9Q
X0NPTE9SOgogICAgICAgICAgICAgICAgICAgICBjYXNlIENTU19QUk9QX0RJUkVDVElPTjoKQEAg
LTE3MjIsMTcgKzE3MjEsMTcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseURlY2xhcmF0
aW9ucwogICAgICAgICAgICAgICAgICAgICBjYXNlIENTU19QUk9QX0ZPTlRfV0VJR0hUOgogICAg
ICAgICAgICAgICAgICAgICBjYXNlIENTU19QUk9QX19XRUJLSVRfVEVYVF9TSVpFX0FESlVTVDoK
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NfUFJPUF9GT05UX1ZBUklBTlQ6CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgQ1NTX1BST1BfX1dFQktJVF9GT05UX0VGRkVDVDoKICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHRoZXNlIGhhdmUgdG8gYmUgYXBwbGllZCBmaXJzdCwgYmVjYXVz
ZSBvdGhlciBwcm9wZXJ0aWVzIHVzZSB0aGUgY29tcHV0ZWQKICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHZhbHVlcyBvZiB0aGVzZSBwb3JwZXJ0aWVzLgotICAgICAgICAgICAgICAgICAgICAg
ICAgZmlyc3QgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcGx5Rmlyc3Qp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShjdXJyZW50LmlkKCks
IGN1cnJlbnQudmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0ID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFwcGx5Rmlyc3QpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShjdXJyZW50LmlkKCksIGN1cnJlbnQu
dmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKGZpcnN0ID09IGFwcGx5
Rmlyc3QpCi0gICAgICAgICAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoY3VycmVudC5pZCgpLCBj
dXJyZW50LnZhbHVlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTk3
Miw2ICsxOTcxLDM0IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQK
ICAgICAgICAgYnJlYWs7ICAgICAgICAKICAgICB9CiAKKyAgICBjYXNlIENTU19QUk9QX19XRUJL
SVRfRk9OVF9FRkZFQ1Q6CisgICAgeworICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2Ny
aXB0aW9uID0gc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBpZiAoaXNJbmhlcml0
KSAKKyAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPdXRsaW5lKHBhcmVudFN0eWxlLT5m
b250RGVzY3JpcHRpb24oKS5vdXRsaW5lKCkpOworICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwp
CisgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0T3V0bGluZSh0cnVlKTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKSByZXR1cm47CisgICAgICAg
ICAgICBpbnQgaWQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKTsKKyAgICAgICAgICAgIHN3
aXRjaCAoaWQpIHsKKyAgICAgICAgICAgICAgICBjYXNlIENTU19WQUxfT1VUTElORToKKyAgICAg
ICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldE91dGxpbmUodHJ1ZSk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9FTkdSQVZF
OgorICAgICAgICAgICAgICAgIGNhc2UgQ1NTX1ZBTF9FTUJPU1M6CisgICAgICAgICAgICAgICAg
Y2FzZSBDU1NfVkFMX05PTkU6CisgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRPdXRsaW5lKGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGlmIChzdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnRE
ZXNjcmlwdGlvbikpCisgICAgICAgICAgICBmb250RGlydHkgPSB0cnVlOworICAgICAgICBicmVh
azsgICAgICAgIAorICAgIH0KKwogICAgIGNhc2UgQ1NTX1BST1BfRk9OVF9XRUlHSFQ6CiAgICAg
ewogICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc3R5bGUtPmZvbnRE
ZXNjcmlwdGlvbigpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9Gb250LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9Gb250LmggICAgKHJldmlzaW9uIDE0ODg5KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9Gb250LmggICAgKHdvcmtpbmcgY29weSkKQEAgLTE2MCw5ICsxNjAsMTAgQEAg
cHVibGljOgogICAgIEZvbnRGYW1pbHkmIGZpcnN0RmFtaWx5KCkgeyByZXR1cm4gbV9mb250RGVz
Y3JpcHRpb24uZmlyc3RGYW1pbHkoKTsgfQogICAgIGNvbnN0IEZvbnRGYW1pbHkmIGZhbWlseSgp
IGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2NyaXB0aW9uLmZhbWlseSgpOyB9CiAKKyAgICBib29s
IGJvbGQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnREZXNjcmlwdGlvbi5ib2xkKCk7IH0KICAgICBi
b29sIGl0YWxpYygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2NyaXB0aW9uLml0YWxpYygpOyB9
CisgICAgYm9vbCBvdXRsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9mb250RGVzY3JpcHRpb24ub3V0
bGluZSgpOyB9CiAgICAgdW5zaWduZWQgd2VpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9mb250RGVz
Y3JpcHRpb24ud2VpZ2h0KCk7IH0KLSAgICBib29sIGJvbGQoKSBjb25zdCB7IHJldHVybiBtX2Zv
bnREZXNjcmlwdGlvbi5ib2xkKCk7IH0KIAogI2lmIF9fQVBQTEVfXwogICAgIE5TRm9udCogZ2V0
TlNGb250KCkgY29uc3QgeyByZXR1cm4gcHJpbWFyeUZvbnQoKS0+Z2V0TlNGb250KCk7IH0KSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vRm9udENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL0ZvbnRDYWNoZS5jcHAgICAgKHJldmlzaW9uIDE0ODg5KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9Gb250Q2FjaGUuY3BwICAgICh3b3JraW5nIGNvcHkpCkBAIC0zOSwxOSArMzksMjAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogc3RydWN0IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleQog
ewotICAgIEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWls
eSA9IEF0b21pY1N0cmluZygpLCB1bnNpZ25lZCBzaXplID0gMCwgYm9vbCBib2xkID0gZmFsc2Us
IGJvb2wgaXRhbGljID0gZmFsc2UpCi0gICAgOm1fZmFtaWx5KGZhbWlseSksIG1fc2l6ZShzaXpl
KSwgbV9ib2xkKGJvbGQpLCBtX2l0YWxpYyhpdGFsaWMpCisgICAgRm9udFBsYXRmb3JtRGF0YUNh
Y2hlS2V5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5ID0gQXRvbWljU3RyaW5nKCksIHVuc2ln
bmVkIHNpemUgPSAwLCBib29sIGJvbGQgPSBmYWxzZSwgYm9vbCBpdGFsaWMgPSBmYWxzZSwgYm9v
bCBvdXRsaW5lID0gZmFsc2UpCisgICAgOm1fZmFtaWx5KGZhbWlseSksIG1fc2l6ZShzaXplKSwg
bV9ib2xkKGJvbGQpLCBtX2l0YWxpYyhpdGFsaWMpLCBtX291dGxpbmUob3V0bGluZSkKICAgICB7
fQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleSYg
b3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UobV9m
YW1pbHksIG90aGVyLm1fZmFtaWx5KSAmJiBtX3NpemUgPT0gb3RoZXIubV9zaXplICYmIG1fYm9s
ZCA9PSBvdGhlci5tX2JvbGQgJiYgbV9pdGFsaWMgPT0gb3RoZXIubV9pdGFsaWM7CisgICAgICAg
IHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShtX2ZhbWlseSwgb3RoZXIubV9mYW1pbHkpICYmIG1f
c2l6ZSA9PSBvdGhlci5tX3NpemUgJiYgbV9ib2xkID09IG90aGVyLm1fYm9sZCAmJiBtX2l0YWxp
YyA9PSBvdGhlci5tX2l0YWxpYyAmJiBtX291dGxpbmUgPT0gb3RoZXIubV9vdXRsaW5lOwogICAg
IH0KICAgICAKICAgICBBdG9taWNTdHJpbmcgbV9mYW1pbHk7CiAgICAgdW5zaWduZWQgbV9zaXpl
OwotICAgIGJvb2wgbV9ib2xkOwotICAgIGJvb2wgbV9pdGFsaWM7CisgICAgYm9vbCBtX2JvbGQg
ICAgOiAxOworICAgIGJvb2wgbV9pdGFsaWMgIDogMTsKKyAgICBib29sIG1fb3V0bGluZSA6IDE7
CiB9OwogCiBpbmxpbmUgdW5zaWduZWQgY29tcHV0ZUhhc2goY29uc3QgRm9udFBsYXRmb3JtRGF0
YUNhY2hlS2V5JiBmb250S2V5KQpAQCAtNTksNyArNjAsNyBAQCBpbmxpbmUgdW5zaWduZWQgY29t
cHV0ZUhhc2goY29uc3QgRm9udFBsCiAgICAgdW5zaWduZWQgaGFzaENvZGVzWzNdID0gewogICAg
ICAgICBDYXNlSW5zZW5zaXRpdmVIYXNoOjpoYXNoKGZvbnRLZXkubV9mYW1pbHkuaW1wbCgpKSwK
ICAgICAgICAgZm9udEtleS5tX3NpemUsCi0gICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihm
b250S2V5Lm1fYm9sZCkgPDwgMSB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihmb250S2V5Lm1faXRh
bGljKQorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZm9udEtleS5tX2JvbGQpIDw8IDIg
fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZm9udEtleS5tX2l0YWxpYykgPDwgMSB8IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihmb250S2V5Lm1fb3V0bGluZSkKICAgICB9OwogICAgIHJldHVybiBTdHJp
bmdJbXBsOjpjb21wdXRlSGFzaChyZWludGVycHJldF9jYXN0PFVDaGFyKj4oaGFzaENvZGVzKSwg
MyAqIHNpemVvZih1bnNpZ25lZCkgLyBzaXplb2YoVUNoYXIpKTsKIH0KQEAgLTgxLDEyICs4Miwx
MiBAQCBzdHJ1Y3QgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5VHJhaXRzIDogCiAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdCBG
b250UGxhdGZvcm1EYXRhQ2FjaGVLZXkmIGRlbGV0ZWRWYWx1ZSgpCiAgICAgewotICAgICAgICBz
dGF0aWMgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5IGtleShudWxsQXRvbSwgMHhGRkZGRkZGRlUs
IGZhbHNlLCBmYWxzZSk7CisgICAgICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkg
a2V5KG51bGxBdG9tLCAweEZGRkZGRkZGVSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAg
IHJldHVybiBrZXk7CiAgICAgfQogICAgIHN0YXRpYyBjb25zdCBGb250UGxhdGZvcm1EYXRhQ2Fj
aGVLZXkmIGVtcHR5VmFsdWUoKQogICAgIHsKLSAgICAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURh
dGFDYWNoZUtleSBrZXkobnVsbEF0b20sIDAsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIHN0YXRp
YyBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkga2V5KG51bGxBdG9tLCAwLCBmYWxzZSwgZmFsc2Us
IGZhbHNlKTsKICAgICAgICAgcmV0dXJuIGtleTsKICAgICB9CiB9OwpAQCAtMTMwLDcgKzEzMSw3
IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm8KICAgICAgICAgcGxh
dGZvcm1Jbml0KCk7CiAgICAgfQogCi0gICAgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5IGtleShm
YW1pbHlOYW1lLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgZm9udERlc2Ny
aXB0aW9uLmJvbGQoKSwgZm9udERlc2NyaXB0aW9uLml0YWxpYygpKTsKKyAgICBGb250UGxhdGZv
cm1EYXRhQ2FjaGVLZXkga2V5KGZhbWlseU5hbWUsIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBp
eGVsU2l6ZSgpLCBmb250RGVzY3JpcHRpb24uYm9sZCgpLCBmb250RGVzY3JpcHRpb24uaXRhbGlj
KCksIGZvbnREZXNjcmlwdGlvbi5vdXRsaW5lKCkpOwogICAgIEZvbnRQbGF0Zm9ybURhdGEqIHJl
c3VsdCA9IDA7CiAgICAgYm9vbCBmb3VuZFJlc3VsdDsKICAgICBGb250UGxhdGZvcm1EYXRhQ2Fj
aGU6Oml0ZXJhdG9yIGl0ID0gZ0ZvbnRQbGF0Zm9ybURhdGFDYWNoZS0+ZmluZChrZXkpOwpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9Gb250RGVzY3JpcHRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL0ZvbnREZXNjcmlwdGlvbi5oICAgIChyZXZpc2lvbiAxNDg4OSkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vRm9udERlc2NyaXB0aW9uLmggICAgKHdvcmtpbmcgY29weSkKQEAgLTIs
NyArMiw4IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9y
ZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykK
LSAqIENvcHlyaWdodCAoQykgMjAwMy02IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiAgICAgICAg
ICAgKEMpIDIwMDYgTmljaG9sYXMgU2hhbmtzICh3ZWJraXRAbmlja3NoYW5rcy5jb20pCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDMtMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0zNywxMCArMzgsMTYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBNb25vc3BhY2VGYW1pbHksIEN1cnNpdmVGYW1pbHksIEZhbnRhc3lGYW1pbHkgfTsK
IAogICAgIEZvbnREZXNjcmlwdGlvbigpCi0gICAgICAgIDogbV9zcGVjaWZpZWRTaXplKDApLCBt
X2NvbXB1dGVkU2l6ZSgwKSwgCi0gICAgICAgICAgbV9pdGFsaWMoZmFsc2UpLCBtX3NtYWxsQ2Fw
cyhmYWxzZSksIG1faXNBYnNvbHV0ZVNpemUoZmFsc2UpLCBtX3dlaWdodChjTm9ybWFsV2VpZ2h0
KSwgCi0gICAgICAgICAgbV9nZW5lcmljRmFtaWx5KE5vRmFtaWx5KSwgbV91c2VQcmludGVyRm9u
dChmYWxzZSkKLSAgICAgICAgICB7fQorICAgICAgICA6IG1fc3BlY2lmaWVkU2l6ZSgwKQorICAg
ICAgICAsIG1fY29tcHV0ZWRTaXplKDApCisgICAgICAgICwgbV9pdGFsaWMoZmFsc2UpCisgICAg
ICAgICwgbV9vdXRsaW5lKGZhbHNlKQorICAgICAgICAsIG1fc21hbGxDYXBzKGZhbHNlKQorICAg
ICAgICAsIG1faXNBYnNvbHV0ZVNpemUoZmFsc2UpCisgICAgICAgICwgbV93ZWlnaHQoY05vcm1h
bFdlaWdodCkKKyAgICAgICAgLCBtX2dlbmVyaWNGYW1pbHkoTm9GYW1pbHkpCisgICAgICAgICwg
bV91c2VQcmludGVyRm9udChmYWxzZSkKKyAgICAgICAge30KICAgICAKICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgRm9udERlc2NyaXB0aW9uJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOyB9CkBAIC00OSwxMSArNTYsMTIgQEAgcHVibGljOgogICAgIEZvbnRGYW1pbHkmIGZp
cnN0RmFtaWx5KCkgeyByZXR1cm4gbV9mYW1pbHlMaXN0OyB9CiAgICAgZmxvYXQgc3BlY2lmaWVk
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY2lmaWVkU2l6ZTsgfQogICAgIGZsb2F0IGNvbXB1
dGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0ZWRTaXplOyB9Ci0gICAgYm9vbCBpdGFs
aWMoKSBjb25zdCB7IHJldHVybiBtX2l0YWxpYzsgfQogICAgIGJvb2wgYm9sZCgpIGNvbnN0IHsg
cmV0dXJuIHdlaWdodCgpID09IGNCb2xkV2VpZ2h0OyB9Ci0gICAgaW50IGNvbXB1dGVkUGl4ZWxT
aXplKCkgY29uc3QgeyByZXR1cm4gaW50KG1fY29tcHV0ZWRTaXplICsgMC41Zik7IH0KKyAgICBi
b29sIGl0YWxpYygpIGNvbnN0IHsgcmV0dXJuIG1faXRhbGljOyB9CisgICAgYm9vbCBvdXRsaW5l
KCkgY29uc3QgeyByZXR1cm4gbV9vdXRsaW5lOyB9CiAgICAgYm9vbCBzbWFsbENhcHMoKSBjb25z
dCB7IHJldHVybiBtX3NtYWxsQ2FwczsgfQogICAgIGJvb2wgaXNBYnNvbHV0ZVNpemUoKSBjb25z
dCB7IHJldHVybiBtX2lzQWJzb2x1dGVTaXplOyB9CisgICAgaW50IGNvbXB1dGVkUGl4ZWxTaXpl
KCkgY29uc3QgeyByZXR1cm4gaW50KG1fY29tcHV0ZWRTaXplICsgMC41Zik7IH0KICAgICB1bnNp
Z25lZCB3ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3dlaWdodDsgfQogICAgIEdlbmVyaWNGYW1p
bHlUeXBlIGdlbmVyaWNGYW1pbHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmlj
RmFtaWx5VHlwZT4obV9nZW5lcmljRmFtaWx5KTsgfQogICAgIGJvb2wgdXNlUHJpbnRlckZvbnQo
KSBjb25zdCB7IHJldHVybiBtX3VzZVByaW50ZXJGb250OyB9CkBAIC02Miw2ICs3MCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldENvbXB1dGVkU2l6ZShmbG9hdCBzKSB7IG1fY29tcHV0ZWRTaXpl
ID0gczsgfQogICAgIHZvaWQgc2V0U3BlY2lmaWVkU2l6ZShmbG9hdCBzKSB7IG1fc3BlY2lmaWVk
U2l6ZSA9IHM7IH0KICAgICB2b2lkIHNldEl0YWxpYyhib29sIGkpIHsgbV9pdGFsaWMgPSBpOyB9
CisgICAgdm9pZCBzZXRPdXRsaW5lKGJvb2wgb2wpIHsgbV9vdXRsaW5lID0gb2w7IH0KICAgICB2
b2lkIHNldFNtYWxsQ2Fwcyhib29sIGMpIHsgbV9zbWFsbENhcHMgPSBjOyB9CiAgICAgdm9pZCBz
ZXRJc0Fic29sdXRlU2l6ZShib29sIHMpIHsgbV9pc0Fic29sdXRlU2l6ZSA9IHM7IH0KICAgICB2
b2lkIHNldFdlaWdodCh1bnNpZ25lZCB3KSB7IG1fd2VpZ2h0ID0gdzsgfQpAQCAtNzYsNiArODUs
NyBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fY29tcHV0ZWRTaXplOyAgICAvLyBDb21wdXRlZCBz
aXplIGFkanVzdGVkIGZvciB0aGUgbWluaW11bSBmb250IHNpemUgYW5kIHRoZSB6b29tIGZhY3Rv
ci4gIAogCiAgICAgYm9vbCBtX2l0YWxpYyA6IDE7CisgICAgYm9vbCBtX291dGxpbmUgOiAxOwog
ICAgIGJvb2wgbV9zbWFsbENhcHMgOiAxOwogICAgIGJvb2wgbV9pc0Fic29sdXRlU2l6ZSA6IDE7
ICAgLy8gV2hldGhlciBvciBub3QgQ1NTIHNwZWNpZmllZCBhbiBleHBsaWNpdCBzaXplCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAobG9naWNhbCBzaXplcyBsaWtlICJtZWRp
dW0iIGRvbid0IGNvdW50KS4KQEAgLTkwLDYgKzEwMCw3IEBAIGlubGluZSBib29sIEZvbnREZXNj
cmlwdGlvbjo6b3BlcmF0b3I9PSgKICAgICAgICAgJiYgbV9zcGVjaWZpZWRTaXplID09IG90aGVy
Lm1fc3BlY2lmaWVkU2l6ZQogICAgICAgICAmJiBtX2NvbXB1dGVkU2l6ZSA9PSBvdGhlci5tX2Nv
bXB1dGVkU2l6ZQogICAgICAgICAmJiBtX2l0YWxpYyA9PSBvdGhlci5tX2l0YWxpYworICAgICAg
ICAmJiBtX291dGxpbmUgPT0gb3RoZXIubV9vdXRsaW5lCiAgICAgICAgICYmIG1fc21hbGxDYXBz
ID09IG90aGVyLm1fc21hbGxDYXBzCiAgICAgICAgICYmIG1faXNBYnNvbHV0ZVNpemUgPT0gb3Ro
ZXIubV9pc0Fic29sdXRlU2l6ZQogICAgICAgICAmJiBtX3dlaWdodCA9PSBvdGhlci5tX3dlaWdo
dApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRm9udENhY2hlTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0ZvbnRDYWNoZU1hYy5tbSAgICAocmV2aXNpb24gMTQ4
ODkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9Gb250Q2FjaGVNYWMubW0gICAgKHdvcmtpbmcg
Y29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBjb25zdCBGb250RGF0YSogRm9udENhY2hlOjpnZXRG
b250RGF0YUZvCiAgICAgICAgIE5TRm9udFRyYWl0TWFzayBhY3R1YWxUcmFpdHMgPSBbbWFuYWdl
ciB0cmFpdHNPZkZvbnQ6c3Vic3RpdHV0ZUZvbnRdOwogICAgICAgICBGb250UGxhdGZvcm1EYXRh
IGFsdGVybmF0ZUZvbnQoc3Vic3RpdHV0ZUZvbnQsIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHRyYWl0cyAmIE5TQm9sZEZvbnRNYXNrKSAmJiAhKGFjdHVhbFRyYWl0
cyAmIE5TQm9sZEZvbnRNYXNrKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICh0cmFpdHMgJiBOU0l0YWxpY0ZvbnRNYXNrKSAmJiAhKGFjdHVhbFRyYWl0cyAmIE5TSXRh
bGljRm9udE1hc2spKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0
cmFpdHMgJiBOU0l0YWxpY0ZvbnRNYXNrKSAmJiAhKGFjdHVhbFRyYWl0cyAmIE5TSXRhbGljRm9u
dE1hc2spLCBmb250LmZvbnREZXNjcmlwdGlvbigpLm91dGxpbmUoKSk7CiAgICAgICAgIHJldHVy
biBnZXRDYWNoZWRGb250RGF0YSgmYWx0ZXJuYXRlRm9udCk7CiAgICAgfQogCkBAIC0yMTksNiAr
MjE5LDcgQEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpjcmVhdGVGb250UAogICAgIHJl
c3VsdC0+Zm9udCA9IGZvbnREZXNjcmlwdGlvbi51c2VQcmludGVyRm9udCgpID8gW25zRm9udCBw
cmludGVyRm9udF0gOiBbbnNGb250IHNjcmVlbkZvbnRdOwogICAgIHJlc3VsdC0+c3ludGhldGlj
Qm9sZCA9ICh0cmFpdHMgJiBOU0JvbGRGb250TWFzaykgJiYgIShhY3R1YWxUcmFpdHMgJiBOU0Jv
bGRGb250TWFzayk7CiAgICAgcmVzdWx0LT5zeW50aGV0aWNPYmxpcXVlID0gKHRyYWl0cyAmIE5T
SXRhbGljRm9udE1hc2spICYmICEoYWN0dWFsVHJhaXRzICYgTlNJdGFsaWNGb250TWFzayk7Cisg
ICAgcmVzdWx0LT5zeW50aGV0aWNPdXRsaW5lID0gZm9udERlc2NyaXB0aW9uLm91dGxpbmUoKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9Gb250
RGF0YU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9Gb250RGF0YU1h
Yy5tbSAgICAocmV2aXNpb24gMTQ4ODkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9Gb250RGF0
YU1hYy5tbSAgICAod29ya2luZyBjb3B5KQpAQCAtMjQ1LDYgKzI0NSw3IEBAIEZvbnREYXRhKiBG
b250RGF0YTo6c21hbGxDYXBzRm9udERhdGEoY28KICAgICAgICAgICAgICAgICBOU0ZvbnRUcmFp
dE1hc2sgc21hbGxDYXBzRm9udFRyYWl0cyA9IFtmb250TWFuYWdlciB0cmFpdHNPZkZvbnQ6c21h
bGxDYXBzRm9udC5mb250XTsKICAgICAgICAgICAgICAgICBzbWFsbENhcHNGb250LnN5bnRoZXRp
Y0JvbGQgPSAoZm9udFRyYWl0cyAmIE5TQm9sZEZvbnRNYXNrKSAmJiAhKHNtYWxsQ2Fwc0ZvbnRU
cmFpdHMgJiBOU0JvbGRGb250TWFzayk7CiAgICAgICAgICAgICAgICAgc21hbGxDYXBzRm9udC5z
eW50aGV0aWNPYmxpcXVlID0gKGZvbnRUcmFpdHMgJiBOU0l0YWxpY0ZvbnRNYXNrKSAmJiAhKHNt
YWxsQ2Fwc0ZvbnRUcmFpdHMgJiBOU0l0YWxpY0ZvbnRNYXNrKTsKKyAgICAgICAgICAgICAgICBz
bWFsbENhcHNGb250LnN5bnRoZXRpY091dGxpbmUgPSBtX2ZvbnQuc3ludGhldGljT3V0bGluZTsK
IAogICAgICAgICAgICAgICAgIG1fc21hbGxDYXBzRm9udERhdGEgPSBGb250Q2FjaGU6OmdldENh
Y2hlZEZvbnREYXRhKCZzbWFsbENhcHNGb250KTsKICAgICAgICAgICAgIH0KSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vbWFjL0ZvbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvRm9udE1hYy5tbSAgICAocmV2aXNpb24gMTQ4ODkpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L21hYy9Gb250TWFjLm1tICAgICh3b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsNyBAQAogICogQ29w
eXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAg
KEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAg
KEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMp
IDIwMDYgTmljaG9sYXMgU2hhbmtzICh3ZWJraXRAbmlja3NoYW5rcy5jb20pCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC01
NTUsOCArNTU2LDcgQEAgaW50IEZvbnQ6Om9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleAog
CiB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBG
b250RGF0YSogZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBpbnQgZnJvbSwg
aW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7Ci0gICAgLy8g
RklYTUU6IEdyYWIgdGhlIENHQ29udGV4dCBmcm9tIHRoZSBHcmFwaGljc0NvbnRleHQgZXZlbnR1
YWxseSwgd2hlbiB3ZSBoYXZlIG1hZGUgc3VyZSB0byBzaGllbGQgYWdhaW5zdCBmbGlwcGluZyBj
YXVzZWQgYnkgY2FsbHMgaW50byB1cwotICAgIC8vIGZyb20gU2FmYXJpLgorICAgIC8vIEZJWE1F
OiBHcmFiIHRoZSBDR0NvbnRleHQgZnJvbSB0aGUgR3JhcGhpY3NDb250ZXh0IGV2ZW50dWFsbHks
IHdoZW4gd2UgaGF2ZSBtYWRlIHN1cmUgdG8gc2hpZWxkIGFnYWluc3QgZmxpcHBpbmcgY2F1c2Vk
IGJ5IGNhbGxzIGludG8gdXMgZnJvbSBTYWZhcmkuCiAgICAgTlNHcmFwaGljc0NvbnRleHQgKmdD
b250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XTsKICAgICBDR0NvbnRl
eHRSZWYgY2dDb250ZXh0ID0gKENHQ29udGV4dFJlZilbZ0NvbnRleHQgZ3JhcGhpY3NQb3J0XTsK
IApAQCAtNTg5LDYgKzU4OSwxMiBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250
ZXh0KiBjCiAgICAgaWYgKHBsYXRmb3JtRGF0YS5zeW50aGV0aWNPYmxpcXVlKQogICAgICAgICBt
YXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybUNvbmNhdChtYXRyaXgsIENHQWZmaW5lVHJhbnNmb3Jt
TWFrZSgxLCAwLCAtdGFuZihTWU5USEVUSUNfT0JMSVFVRV9BTkdMRSAqIGFjb3NmKDApIC8gOTAp
LCAxLCAwLCAwKSk7IAogICAgIENHQ29udGV4dFNldFRleHRNYXRyaXgoY2dDb250ZXh0LCBtYXRy
aXgpOworICAgIAorICAgIC8vIEZJWE1FOiBzaG91bGQgY2hlY2sgcGxhdGZvcm1EYXRhLnN5bnRo
ZXRpY091dGxpbmUsIGJ1dCB3ZSBhcmVuJ3QgdXNpbmcgcmVhbCBvdXRsaW5lIGZhY2VzIHlldCBh
bnl3YXkKKyAgICBpZiAob3V0bGluZSgpKQorICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2lu
Z01vZGUoY2dDb250ZXh0LCBrQ0dUZXh0U3Ryb2tlKTsKKyAgICBlbHNlCisgICAgICAgIENHQ29u
dGV4dFNldFRleHREcmF3aW5nTW9kZShjZ0NvbnRleHQsIGtDR1RleHRGaWxsKTsKIAogICAgIHdr
U2V0Q0dGb250UmVuZGVyaW5nTW9kZShjZ0NvbnRleHQsIGRyYXdGb250KTsKICAgICBDR0NvbnRl
eHRTZXRGb250U2l6ZShjZ0NvbnRleHQsIDEuMGYpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvRm9udFBsYXRmb3JtRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFj
L0ZvbnRQbGF0Zm9ybURhdGEuaCAgICAocmV2aXNpb24gMTQ4ODkpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL21hYy9Gb250UGxhdGZvcm1EYXRhLmggICAgKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw3
IEBACiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgaW50ZXJuYWwgZm9udCBpbXBsZW1lbnRh
dGlvbi4gIEl0IHNob3VsZCBub3QgYmUgaW5jbHVkZWQgYnkgYW55b25lIG90aGVyIHRoYW4KICAq
IEZvbnRNYWMuY3BwLCBGb250V2luLmNwcCBhbmQgRm9udC5jcHAuCiAgKgorICogQ29weXJpZ2h0
IChDKSAyMDA2IE5pY2hvbGFzIFNoYW5rcyAod2Via2l0QG5pY2tzaGFua3MuY29tKQogICogQ29w
eXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMzgs
MjYgKzM5LDI3IEBAIHN0cnVjdCBGb250UGxhdGZvcm1EYXRhIHsKICAgICBjbGFzcyBEZWxldGVk
IHt9OwogCiAgICAgRm9udFBsYXRmb3JtRGF0YShEZWxldGVkKQotICAgIDogZm9udCgoTlNGb250
KiktMSksIHN5bnRoZXRpY0JvbGQoZmFsc2UpLCBzeW50aGV0aWNPYmxpcXVlKGZhbHNlKQorICAg
IDogZm9udCgoTlNGb250KiktMSksIHN5bnRoZXRpY0JvbGQoZmFsc2UpLCBzeW50aGV0aWNPYmxp
cXVlKGZhbHNlKSwgc3ludGhldGljT3V0bGluZShmYWxzZSkKICAgICB7fQogCi0gICAgRm9udFBs
YXRmb3JtRGF0YShOU0ZvbnQqIGYgPSAwLCBib29sIGIgPSBmYWxzZSwgYm9vbCBvID0gZmFsc2Up
Ci0gICAgOiBmb250KGYpLCBzeW50aGV0aWNCb2xkKGIpLCBzeW50aGV0aWNPYmxpcXVlKG8pCisg
ICAgRm9udFBsYXRmb3JtRGF0YShOU0ZvbnQqIGYgPSAwLCBib29sIGIgPSBmYWxzZSwgYm9vbCBv
ID0gZmFsc2UsIGJvb2wgb2wgPSBmYWxzZSkKKyAgICA6IGZvbnQoZiksIHN5bnRoZXRpY0JvbGQo
YiksIHN5bnRoZXRpY09ibGlxdWUobyksIHN5bnRoZXRpY091dGxpbmUob2wpCiAgICAge30KIAog
ICAgIE5TRm9udCAqZm9udDsKLSAgICBib29sIHN5bnRoZXRpY0JvbGQ7Ci0gICAgYm9vbCBzeW50
aGV0aWNPYmxpcXVlOworICAgIGJvb2wgc3ludGhldGljQm9sZCAgICA6IDE7CisgICAgYm9vbCBz
eW50aGV0aWNPYmxpcXVlIDogMTsKKyAgICBib29sIHN5bnRoZXRpY091dGxpbmUgOiAxOwogCiAg
ICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgeyAKLSAgICAgICAgdWludHB0cl90IGhhc2hD
b2Rlc1syXSA9IHsgKHVpbnRwdHJfdClmb250LCBzeW50aGV0aWNCb2xkIDw8IDEgfCBzeW50aGV0
aWNPYmxpcXVlIH07CisgICAgICAgIHVpbnRwdHJfdCBoYXNoQ29kZXNbMl0gPSB7ICh1aW50cHRy
X3QpZm9udCwgc3ludGhldGljQm9sZCA8PCAyIHwgc3ludGhldGljT2JsaXF1ZSA8PCAxIHwgc3lu
dGhldGljT3V0bGluZSB9OwogICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y29tcHV0ZUhhc2go
cmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGhhc2hDb2RlcyksIHNpemVvZihoYXNoQ29kZXMpIC8g
c2l6ZW9mKFVDaGFyKSk7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgIHsgCi0gICAgICAgIHJldHVybiBmb250ID09
IG90aGVyLmZvbnQgJiYgc3ludGhldGljQm9sZCA9PSBvdGhlci5zeW50aGV0aWNCb2xkICYmIHN5
bnRoZXRpY09ibGlxdWUgPT0gb3RoZXIuc3ludGhldGljT2JsaXF1ZTsKKyAgICAgICAgcmV0dXJu
IGZvbnQgPT0gb3RoZXIuZm9udCAmJiBzeW50aGV0aWNCb2xkID09IG90aGVyLnN5bnRoZXRpY0Jv
bGQgJiYgc3ludGhldGljT2JsaXF1ZSA9PSBvdGhlci5zeW50aGV0aWNPYmxpcXVlICYmIHN5bnRo
ZXRpY091dGxpbmUgPT0gb3RoZXIuc3ludGhldGljT3V0bGluZTsKICAgICB9CiB9OwogCg==
</data>
<flag name="review"
          id="6939"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>