<?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>103496</bug_id>
          
          <creation_ts>2012-11-28 02:18:34 -0800</creation_ts>
          <short_desc>[mac] Dictionary lookup bubble loses intrarange formatting</short_desc>
          <delta_ts>2012-11-28 16:21:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>103568</dependson>
          <blocked>103389</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>ap</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>777661</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-11-28 02:18:34 -0800</bug_when>
    <thetext>Currently, the UIProcess is handed a String and a font descriptor to create an attributed string to pass to the dictionary popup. Consequently, it loses all intrarange formatting. Instead, we should pass an attributed string with all of the formatting back to the UIProcess to hand over.

I have a patch.

&lt;rdar://problem/12762172&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777662</commentid>
    <comment_count>1</comment_count>
      <attachid>176433</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-11-28 02:21:26 -0800</bug_when>
    <thetext>Created attachment 176433
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777664</commentid>
    <comment_count>2</comment_count>
      <attachid>176435</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-11-28 02:26:31 -0800</bug_when>
    <thetext>Created attachment 176435
patch (+remove pageScaleFactor argument from PageClient::didPerformDictionaryLookup)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777940</commentid>
    <comment_count>3</comment_count>
      <attachid>176435</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-11-28 08:42:09 -0800</bug_when>
    <thetext>Comment on attachment 176435
patch (+remove pageScaleFactor argument from PageClient::didPerformDictionaryLookup)

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

Looks great!

&gt; Source/WebKit2/ChangeLog:11
&gt; +        when showing dictionary popups, so that we preserve all formatting in the yellow dictionary
&gt; +        highlight. Also, remove the fontInfo member from DictionaryPopupInfo, since we don&apos;t need it anymore.

&quot;All&quot; is a strong word - there are things that cannot be preserved, such as web fonts that are only enabled in WebProcess.

&gt; Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:-557
&gt; -    // We won&apos;t be able to get an NSFont in the case that a Web Font is being used, so use
&gt; -    // the default system font at the same size instead.

How did you test that nothing bad happens because of losing this logic here? I assume WebHTMLConverter does the same thing, but explicit testing would be useful anyway.

&gt; Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:568
&gt; +    RetainPtr&lt;NSAttributedString&gt; nsAttributedString = [WebHTMLConverter editingAttributedStringFromRange:range];

Why retain it? I think that this should be a plain pointer.

&gt; Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:580
&gt; +            font = [fontManager convertFont:font toSize:[font pointSize] * pageScaleFactor()];
&gt; +            [scaledAttributes setObject:font forKey:NSFontAttributeName];

Does this work correctly with all scaling/zooming styles (Cmd+&apos;+&apos; as well as pinch to zoom, and Retina displays with a default scale factor)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778126</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-11-28 11:42:42 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 176435 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176435&amp;action=review
&gt; 
&gt; Looks great!
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:11
&gt; &gt; +        when showing dictionary popups, so that we preserve all formatting in the yellow dictionary
&gt; &gt; +        highlight. Also, remove the fontInfo member from DictionaryPopupInfo, since we don&apos;t need it anymore.
&gt; 
&gt; &quot;All&quot; is a strong word - there are things that cannot be preserved, such as web fonts that are only enabled in WebProcess.

Sure.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:-557
&gt; &gt; -    // We won&apos;t be able to get an NSFont in the case that a Web Font is being used, so use
&gt; &gt; -    // the default system font at the same size instead.
&gt; 
&gt; How did you test that nothing bad happens because of losing this logic here? I assume WebHTMLConverter does the same thing, but explicit testing would be useful anyway.

Hmm, actually, apparently it doesn&apos;t. It falls back to the system font, but not at the right size... is it reasonable to fix that in WebHTMLConverter?

&gt; &gt; Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:568
&gt; &gt; +    RetainPtr&lt;NSAttributedString&gt; nsAttributedString = [WebHTMLConverter editingAttributedStringFromRange:range];
&gt; 
&gt; Why retain it? I think that this should be a plain pointer.

Sure.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:580
&gt; &gt; +            font = [fontManager convertFont:font toSize:[font pointSize] * pageScaleFactor()];
&gt; &gt; +            [scaledAttributes setObject:font forKey:NSFontAttributeName];
&gt; 
&gt; Does this work correctly with all scaling/zooming styles (Cmd+&apos;+&apos; as well as pinch to zoom, and Retina displays with a default scale factor)?

Pinch-to-zoom: yes.
Cmd-+ &quot;full page&quot;: yes.
Cmd-+ &quot;text only&quot;: yes.
Non-1 deviceScaleFactor (Retina): yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778342</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-11-28 14:25:49 -0800</bug_when>
    <thetext>&gt; Hmm, actually, apparently it doesn&apos;t. It falls back to the system font, but not at the right size... is it reasonable to fix that in WebHTMLConverter?

I&apos;m not sure that this should be part of this patch. Perhaps it&apos;s best to reinstate this logic here, and add a FIXME about pushing it down.

We&apos;d need to test what happens with web fonts and HTML editing today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778384</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-11-28 14:53:29 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; Hmm, actually, apparently it doesn&apos;t. It falls back to the system font, but not at the right size... is it reasonable to fix that in WebHTMLConverter?
&gt; 
&gt; I&apos;m not sure that this should be part of this patch. Perhaps it&apos;s best to reinstate this logic here, and add a FIXME about pushing it down.

I&apos;m not sure how to reinstate that logic here, because - for example - what happens if you switch to a web font in the middle of your range?

&gt; We&apos;d need to test what happens with web fonts and HTML editing today.

I&apos;ll file another bug for that. It&apos;s very easy to fix, and Dan thinks it&apos;s safe. I&apos;m having some trouble with TestWebKitAPI, but I&apos;ll make a test too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778467</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-11-28 16:21:37 -0800</bug_when>
    <thetext>Thanks, Alexey!

http://trac.webkit.org/changeset/136075</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176433</attachid>
            <date>2012-11-28 02:21:26 -0800</date>
            <delta_ts>2012-11-28 02:26:31 -0800</delta_ts>
            <desc>patch</desc>
            <filename>lookup-bubble.diff</filename>
            <type>text/plain</type>
            <size>13154</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2OTQxNzNlLi4wODgyNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTItMTEtMjggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW21hY10gRGljdGlvbmFyeSBsb29rdXAgYnViYmxlIGxvc2VzIGludHJhcmFuZ2Ug
Zm9ybWF0dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAzNDk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjc2MjE3Mj4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIGFuIE5TQXR0cmlidXRl
ZFN0cmluZyAobWFkZSB2aWEgV2ViSFRNTENvbnZlcnRlciBvbiB0aGUgV2ViUHJvY2VzcyBzaWRl
KSB0aHJvdWdoCisgICAgICAgIHdoZW4gc2hvd2luZyBkaWN0aW9uYXJ5IHBvcHVwcywgc28gdGhh
dCB3ZSBwcmVzZXJ2ZSBhbGwgZm9ybWF0dGluZyBpbiB0aGUgeWVsbG93IGRpY3Rpb25hcnkKKyAg
ICAgICAgaGlnaGxpZ2h0LiBBbHNvLCByZW1vdmUgdGhlIGZvbnRJbmZvIG1lbWJlciBmcm9tIERp
Y3Rpb25hcnlQb3B1cEluZm8sIHNpbmNlIHdlIGRvbid0IG5lZWQgaXQgYW55bW9yZS4KKworICAg
ICAgICAqIFNoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RGljdGlvbmFyeVBvcHVwSW5mbzo6ZW5jb2RlKTogRG9uJ3QgZW5jb2RlIHRoZSBub3ctcmVtb3Zl
ZCBmb250SW5mbyBtZW1iZXIuCisgICAgICAgIChXZWJLaXQ6OkRpY3Rpb25hcnlQb3B1cEluZm86
OmRlY29kZSk6IERvbid0IGRlY29kZSB0aGUgbm93LXJlbW92ZWQgZm9udEluZm8gbWVtYmVyLgor
ICAgICAgICAqIFNoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmg6IFJlbW92ZSB0aGUgZm9udElu
Zm8gbWVtYmVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmg6
CisgICAgICAgIChQYWdlQ2xpZW50SW1wbCk6IGRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwIHNo
b3VsZCB0YWtlIGFuIEF0dHJpYnV0ZWRTdHJpbmcgaW5zdGVhZCBvZiBhIHBsYWluIFN0cmluZy4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKTogVXNl
IHRoZSBBdHRyaWJ1dGVkU3RyaW5nIHdlJ3JlIGhhbmRlZCBmcm9tIHRoZSBXZWJQcm9jZXNzCisg
ICAgICAgIGluc3RlYWQgb2YgY29uc3RydWN0aW5nIG9uZSBvdXJzZWx2ZXM7IHRoaXMgd2F5LCB3
ZSBoYXZlIGFsbCB0aGUgYXR0cmlidXRlcyBpbnN0ZWFkIG9mIGp1c3QgYSBzaW5nbGUgZm9udC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAoUGFnZUNsaWVudCk6
IGRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwIHNob3VsZCB0YWtlIGFuIEF0dHJpYnV0ZWRTdHJp
bmcgaW5zdGVhZCBvZiBhIHBsYWluIFN0cmluZy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgIChXZWJQYWdlUHJveHkpOiBkaWRQZXJmb3JtRGljdGlvbmFyeUxv
b2t1cCBzaG91bGQgdGFrZSBhbiBBdHRyaWJ1dGVkU3RyaW5nIGluc3RlYWQgb2YgYSBwbGFpbiBT
dHJpbmcuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjogRGlk
UGVyZm9ybURpY3Rpb25hcnlMb29rdXAgc2hvdWxkIHRha2UgYW4gQXR0cmlidXRlZFN0cmluZyBp
bnN0ZWFkIG9mIGEgcGxhaW4gU3RyaW5nLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwKTogZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAgc2hvdWxkIHRha2Ug
YW4gQXR0cmlidXRlZFN0cmluZyBpbnN0ZWFkIG9mIGEgcGxhaW4gU3RyaW5nLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBGb3JSYW5nZSk6IHBlcmZvcm1EaWN0aW9u
YXJ5TG9va3VwRm9yUmFuZ2Ugc2hvdWxkIGhhbmQgV2ViUGFnZVByb3h5IGFuIEF0dHJpYnV0ZWRT
dHJpbmcKKyAgICAgICAgY29uc3RydWN0ZWQgdmlhIFdlYkhUTUxDb252ZXJ0ZXIgaW5zdGVhZCBv
ZiBhIHBsYWluIHRleHQgc3RyaW5nIHBhaXJlZCB3aXRoIGEgc2luZ2xlIGZvbnQgZGVzY3JpcHRv
ci4KKyAgICAgICAgQWxzbywgc2NhbGUgdGhlIHNpemUgb2YgZXZlcnkgZm9udCBhdHRyaWJ1dGUg
YnkgdGhlIGN1cnJlbnQgcGFnZVNjYWxlRmFjdG9yLgorCiAyMDEyLTExLTI3ICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFBERlBsdWdpbjogUGFnZSBz
Y2FsZSBmYWN0b3Igc2hvdWxkIGFmZmVjdCBzdWJmcmFtZSBQREZzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5jcHAKaW5kZXggZjE0ZWVhMy4uMjM3NmNiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcApAQCAt
MzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHZvaWQgRGljdGlvbmFyeVBvcHVwSW5m
bzo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAg
ICBlbmNvZGVyIDw8IG9yaWdpbjsKLSAgICBlbmNvZGVyIDw8IGZvbnRJbmZvOwogICAgIGVuY29k
ZXIuZW5jb2RlRW51bSh0eXBlKTsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCkBAIC01Miw4ICs1MSw2IEBAIGJvb2wgRGljdGlv
bmFyeVBvcHVwSW5mbzo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2Rlciwg
RGljdGlvbmFyeVBvCiB7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0Lm9yaWdpbikp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQu
Zm9udEluZm8pKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNv
ZGVFbnVtKHJlc3VsdC50eXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2lmIFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uaAppbmRleCAyN2ViNmRiLi5hZjky
MWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5m
by5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmgKQEAg
LTI2LDcgKzI2LDYgQEAKICNpZm5kZWYgRGljdGlvbmFyeVBvcHVwSW5mb19oCiAjZGVmaW5lIERp
Y3Rpb25hcnlQb3B1cEluZm9faAogCi0jaW5jbHVkZSAiRm9udEluZm8uaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0Zsb2F0UG9pbnQuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTUwLDcgKzQ5LDYg
QEAgc3RydWN0IERpY3Rpb25hcnlQb3B1cEluZm8gewogICAgIH07CiAKICAgICBXZWJDb3JlOjpG
bG9hdFBvaW50IG9yaWdpbjsKLSAgICBGb250SW5mbyBmb250SW5mbzsKICAgICBUeXBlIHR5cGU7
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNzAKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBvcHRpb25zOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggYjAx
OWM2OC4uNjczOWM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9QYWdlQ2xpZW50SW1wbC5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgdm9pZCBmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkludFJlY3Q+JiB1cGRhdGVSZWN0cyk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybURp
Y3Rpb25hcnlMb29rdXAoY29uc3QgU3RyaW5nJiwgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25zdCBE
aWN0aW9uYXJ5UG9wdXBJbmZvJik7CisgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1EaWN0aW9u
YXJ5TG9va3VwKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBkb3VibGUgc2NhbGVGYWN0b3IsIGNv
bnN0IERpY3Rpb25hcnlQb3B1cEluZm8mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0RpY3Rp
b25hcnlMb29rdXBQYW5lbCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFu
ZWwoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IDZiZGMxYjkuLmVmNzdm
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGll
bnRJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGll
bnRJbXBsLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElW
RVMpCiAjaW1wb3J0IDxBcHBLaXQvTlNUZXh0QWx0ZXJuYXRpdmVzLmg+CiAjZW5kaWYKKyNpbXBv
cnQgIkF0dHJpYnV0ZWRTdHJpbmcuaCIKICNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1w
b3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJEaWN0aW9uYXJ5UG9wdXBJbmZvLmgiCkBA
IC00NzEsMTQgKzQ3Miw5IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmZsYXNoQmFja2luZ1N0b3Jl
VXBkYXRlcyhjb25zdCBWZWN0b3I8SW50UmVjdD4mKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0
IFN0cmluZyYgdGV4dCwgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25zdCBEaWN0aW9uYXJ5UG9wdXBJ
bmZvJiBkaWN0aW9uYXJ5UG9wdXBJbmZvKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUGVyZm9y
bURpY3Rpb25hcnlMb29rdXAoY29uc3QgQXR0cmlidXRlZFN0cmluZyYgdGV4dCwgZG91YmxlIHNj
YWxlRmFjdG9yLCBjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJiBkaWN0aW9uYXJ5UG9wdXBJbmZv
KQogewotICAgIE5TRm9udERlc2NyaXB0b3IgKmZvbnREZXNjcmlwdG9yID0gW05TRm9udERlc2Ny
aXB0b3IgZm9udERlc2NyaXB0b3JXaXRoRm9udEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWRp
Y3Rpb25hcnlQb3B1cEluZm8uZm9udEluZm8uZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkuZ2V0KCld
OwotICAgIE5TRm9udCAqZm9udCA9IFtOU0ZvbnQgZm9udFdpdGhEZXNjcmlwdG9yOmZvbnREZXNj
cmlwdG9yIHNpemU6KChzY2FsZUZhY3RvciAhPSAxKSA/IFtmb250RGVzY3JpcHRvciBwb2ludFNp
emVdICogc2NhbGVGYWN0b3IgOiAwKV07Ci0KLSAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXR0cmli
dXRlZFN0cmluZz4gYXR0cmlidXRlZFN0cmluZyhBZG9wdE5TLCBbW05TTXV0YWJsZUF0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOm5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmco
dGV4dCldKTsKLSAgICBbYXR0cmlidXRlZFN0cmluZy5nZXQoKSBhZGRBdHRyaWJ1dGU6TlNGb250
QXR0cmlidXRlTmFtZSB2YWx1ZTpmb250IHJhbmdlOk5TTWFrZVJhbmdlKDAsIFthdHRyaWJ1dGVk
U3RyaW5nLmdldCgpIGxlbmd0aF0pXTsKLQorICAgIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJp
bmc+IGF0dHJpYnV0ZWRTdHJpbmcgPSB0ZXh0LnN0cmluZzsKICAgICBOU1BvaW50IHRleHRCYXNl
bGluZU9yaWdpbiA9IGRpY3Rpb25hcnlQb3B1cEluZm8ub3JpZ2luOwogCiAjaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAppbmRleCAwYzdiODkwLi41MTQ1MTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgKQEAgLTIxMSw3ICsyMTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHBsdWdpbkZvY3VzT3JXaW5kb3dGb2N1c0NoYW5nZWQodWludDY0X3QgcGx1Z2luQ29tcGxleFRl
eHRJbnB1dElkZW50aWZpZXIsIGJvb2wgcGx1Z2luSGFzRm9jdXNBbmRXaW5kb3dIYXNGb2N1cykg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUodWlu
dDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIFBsdWdpbkNvbXBsZXhUZXh0
SW5wdXRTdGF0ZSkgPSAwOwogICAgIHZpcnR1YWwgQ0dDb250ZXh0UmVmIGNvbnRhaW5pbmdXaW5k
b3dHcmFwaGljc0NvbnRleHQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1EaWN0
aW9uYXJ5TG9va3VwKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBzY2FsZUZhY3RvciwgY29uc3QgRGlj
dGlvbmFyeVBvcHVwSW5mbyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybURpY3Rp
b25hcnlMb29rdXAoY29uc3QgQXR0cmlidXRlZFN0cmluZyYsIGRvdWJsZSBzY2FsZUZhY3Rvciwg
Y29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlz
c0RpY3Rpb25hcnlMb29rdXBQYW5lbCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJl
Y3Rpb25QYW5lbChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBs
YWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2lu
Z0FsdGVybmF0aXZlVGV4dCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDk4ZmE4YTQuLmVmNDU2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTk0OSw3ICs5NDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VhcmNo
V2l0aFNwb3RsaWdodChjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIERpY3Rpb25hcnkuCi0gICAg
dm9pZCBkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBTdHJpbmcmLCBjb25zdCBEaWN0
aW9uYXJ5UG9wdXBJbmZvJik7CisgICAgdm9pZCBkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChj
b25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYpOwogI2Vu
ZGlmCiAKICAgICAvLyBTcGVsbGluZyBhbmQgZ3JhbW1hci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDcxNThkODEuLmY4OGVk
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgpAQCAtMjcxLDcgKzI3MSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgIyBEaWN0aW9uYXJ5IHN1cHBvcnQuCi0gICAgRGlkUGVy
Zm9ybURpY3Rpb25hcnlMb29rdXAoV1RGOjpTdHJpbmcgdGV4dCwgV2ViS2l0OjpEaWN0aW9uYXJ5
UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm8pCisgICAgRGlkUGVyZm9ybURpY3Rpb25hcnlM
b29rdXAoV2ViS2l0OjpBdHRyaWJ1dGVkU3RyaW5nIHRleHQsIFdlYktpdDo6RGljdGlvbmFyeVBv
cHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZvKQogCiAgICAgIyBLZXlib2FyZCBpbnB1dCBzdXBw
b3J0IG1lc3NhZ2VzCiAgICAgSW50ZXJwcmV0UXVldWVkS2V5RXZlbnQoV2ViS2l0OjpFZGl0b3JT
dGF0ZSBzdGF0ZSkgLT4gKGJvb2wgaGFuZGxlZCwgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29t
bWFuZD4gc2F2ZWRDb21tYW5kcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KaW5kZXggNmYwOTU2ZS4uMzc0MjJlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTQwMCw3ICs0MDAs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJvb2wg
aXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQpCiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoaXNTbWFydEluc2VydERlbGV0
ZUVuYWJsZWQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3Jt
RGljdGlvbmFyeUxvb2t1cChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IERpY3Rpb25hcnlQb3B1
cEluZm8mIGRpY3Rpb25hcnlQb3B1cEluZm8pCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9y
bURpY3Rpb25hcnlMb29rdXAoY29uc3QgQXR0cmlidXRlZFN0cmluZyYgdGV4dCwgY29uc3QgRGlj
dGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbmFyeVBvcHVwSW5mbykKIHsKICAgICBtX3BhZ2VDbGll
bnQtPmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKHRleHQsIG1fcGFnZVNjYWxlRmFjdG9yLCBk
aWN0aW9uYXJ5UG9wdXBJbmZvKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA1ZjA5ZDc1Li44Mjc0YzcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCkBAIC01NDUsMzkgKzU0NSw0OCBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwRm9yU2VsZWN0aW9uKERpY3Rpb25hcnlQb3B1cEluZm86OlR5cGUgdHlwZQogCiB2b2lk
IFdlYlBhZ2U6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwRm9yUmFuZ2UoRGljdGlvbmFyeVBvcHVw
SW5mbzo6VHlwZSB0eXBlLCBGcmFtZSogZnJhbWUsIFJhbmdlKiByYW5nZSwgTlNEaWN0aW9uYXJ5
ICpvcHRpb25zKQogewotICAgIFN0cmluZyByYW5nZVRleHQgPSByYW5nZS0+dGV4dCgpOwotICAg
IGlmIChyYW5nZVRleHQuc3RyaXBXaGl0ZVNwYWNlKCkuaXNFbXB0eSgpKQorICAgIGlmIChyYW5n
ZS0+dGV4dCgpLnN0cmlwV2hpdGVTcGFjZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSByYW5nZS0+c3RhcnRDb250YWluZXIo
KS0+cmVuZGVyZXIoKTsKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlci0+c3R5bGUo
KTsKLSAgICBOU0ZvbnQgKmZvbnQgPSBzdHlsZS0+Zm9udCgpLnByaW1hcnlGb250KCktPmdldE5T
Rm9udCgpOwotICAgIAotICAgIC8vIFdlIHdvbid0IGJlIGFibGUgdG8gZ2V0IGFuIE5TRm9udCBp
biB0aGUgY2FzZSB0aGF0IGEgV2ViIEZvbnQgaXMgYmVpbmcgdXNlZCwgc28gdXNlCi0gICAgLy8g
dGhlIGRlZmF1bHQgc3lzdGVtIGZvbnQgYXQgdGhlIHNhbWUgc2l6ZSBpbnN0ZWFkLgotICAgIGlm
ICghZm9udCkKLSAgICAgICAgZm9udCA9IFtOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZTpzdHlsZS0+
Zm9udCgpLnByaW1hcnlGb250KCktPnBsYXRmb3JtRGF0YSgpLnNpemUoKV07Ci0KLSAgICBDRkRp
Y3Rpb25hcnlSZWYgZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzID0gKENGRGljdGlvbmFyeVJlZilb
W2ZvbnQgZm9udERlc2NyaXB0b3JdIGZvbnRBdHRyaWJ1dGVzXTsKLSAgICBpZiAoIWZvbnREZXNj
cmlwdG9yQXR0cmlidXRlcykKLSAgICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9yPEZsb2F0UXVh
ZD4gcXVhZHM7CiAgICAgcmFuZ2UtPnRleHRRdWFkcyhxdWFkcyk7CiAgICAgaWYgKHF1YWRzLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgSW50UmVjdCByYW5nZVJlY3Qg
PSBmcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KHF1YWRzWzBdLmVuY2xvc2luZ0JvdW5k
aW5nQm94KCkpOwogICAgIAogICAgIERpY3Rpb25hcnlQb3B1cEluZm8gZGljdGlvbmFyeVBvcHVw
SW5mbzsKICAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLnR5cGUgPSB0eXBlOwogICAgIGRpY3Rpb25h
cnlQb3B1cEluZm8ub3JpZ2luID0gRmxvYXRQb2ludChyYW5nZVJlY3QueCgpLCByYW5nZVJlY3Qu
eSgpICsgKHN0eWxlLT5mb250TWV0cmljcygpLmFzY2VudCgpICogcGFnZVNjYWxlRmFjdG9yKCkp
KTsKLSAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLmZvbnRJbmZvLmZvbnRBdHRyaWJ1dGVEaWN0aW9u
YXJ5ID0gZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzOwogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA3MAogICAgIGRpY3Rpb25hcnlQb3B1cEluZm8ub3B0aW9ucyA9IChD
RkRpY3Rpb25hcnlSZWYpb3B0aW9uczsKICNlbmRpZgogCi0gICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChyYW5nZVRleHQsIGRpY3Rpb25h
cnlQb3B1cEluZm8pKTsKKyAgICBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBuc0F0dHJp
YnV0ZWRTdHJpbmcgPSBbV2ViSFRNTENvbnZlcnRlciBlZGl0aW5nQXR0cmlidXRlZFN0cmluZ0Zy
b21SYW5nZTpyYW5nZV07CisKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXR0cmlidXRlZFN0cmlu
Zz4gc2NhbGVkTlNBdHRyaWJ1dGVkU3RyaW5nKEFkb3B0TlMsIFtbTlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6W25zQXR0cmlidXRlZFN0cmluZyBzdHJpbmdd
XSk7CisKKyAgICBOU0ZvbnRNYW5hZ2VyICpmb250TWFuYWdlciA9IFtOU0ZvbnRNYW5hZ2VyIHNo
YXJlZEZvbnRNYW5hZ2VyXTsKKworICAgIFtuc0F0dHJpYnV0ZWRTdHJpbmcgZW51bWVyYXRlQXR0
cmlidXRlc0luUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW25zQXR0cmlidXRlZFN0cmluZyBsZW5ndGhd
KSBvcHRpb25zOjAgdXNpbmdCbG9jazpeKE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcywgTlNSYW5n
ZSByYW5nZSwgQk9PTCAqc3RvcCkgeworICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlv
bmFyeT4gc2NhbGVkQXR0cmlidXRlcyhBZG9wdE5TLCBbYXR0cmlidXRlcyBtdXRhYmxlQ29weV0p
OworCisgICAgICAgIE5TRm9udCAqZm9udCA9IFtzY2FsZWRBdHRyaWJ1dGVzIG9iamVjdEZvcktl
eTpOU0ZvbnRBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgaWYgKGZvbnQpIHsKKyAgICAgICAgICAg
IGZvbnQgPSBbZm9udE1hbmFnZXIgY29udmVydEZvbnQ6Zm9udCB0b1NpemU6W2ZvbnQgcG9pbnRT
aXplXSAqIHBhZ2VTY2FsZUZhY3RvcigpXTsKKyAgICAgICAgICAgIFtzY2FsZWRBdHRyaWJ1dGVz
IHNldE9iamVjdDpmb250IGZvcktleTpOU0ZvbnRBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgfQor
CisgICAgICAgIFtzY2FsZWROU0F0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkgYWRkQXR0cmlidXRlczpz
Y2FsZWRBdHRyaWJ1dGVzLmdldCgpIHJhbmdlOnJhbmdlXTsKKyAgICB9XTsKKworICAgIEF0dHJp
YnV0ZWRTdHJpbmcgYXR0cmlidXRlZFN0cmluZzsKKyAgICBhdHRyaWJ1dGVkU3RyaW5nLnN0cmlu
ZyA9IHNjYWxlZE5TQXR0cmlidXRlZFN0cmluZzsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoYXR0cmlidXRlZFN0cmluZywgZGlj
dGlvbmFyeVBvcHVwSW5mbykpOwogfQogCiBib29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5n
QmVoYXZpb3JGb3JTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176435</attachid>
            <date>2012-11-28 02:26:31 -0800</date>
            <delta_ts>2012-11-28 08:42:09 -0800</delta_ts>
            <desc>patch (+remove pageScaleFactor argument from PageClient::didPerformDictionaryLookup)</desc>
            <filename>define.diff</filename>
            <type>text/plain</type>
            <size>13327</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2OTQxNzNlLi4wNTRkMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTItMTEtMjggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW21hY10gRGljdGlvbmFyeSBsb29rdXAgYnViYmxlIGxvc2VzIGludHJhcmFuZ2Ug
Zm9ybWF0dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAzNDk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjc2MjE3Mj4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIGFuIE5TQXR0cmlidXRl
ZFN0cmluZyAobWFkZSB2aWEgV2ViSFRNTENvbnZlcnRlciBvbiB0aGUgV2ViUHJvY2VzcyBzaWRl
KSB0aHJvdWdoCisgICAgICAgIHdoZW4gc2hvd2luZyBkaWN0aW9uYXJ5IHBvcHVwcywgc28gdGhh
dCB3ZSBwcmVzZXJ2ZSBhbGwgZm9ybWF0dGluZyBpbiB0aGUgeWVsbG93IGRpY3Rpb25hcnkKKyAg
ICAgICAgaGlnaGxpZ2h0LiBBbHNvLCByZW1vdmUgdGhlIGZvbnRJbmZvIG1lbWJlciBmcm9tIERp
Y3Rpb25hcnlQb3B1cEluZm8sIHNpbmNlIHdlIGRvbid0IG5lZWQgaXQgYW55bW9yZS4KKworICAg
ICAgICAqIFNoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RGljdGlvbmFyeVBvcHVwSW5mbzo6ZW5jb2RlKTogRG9uJ3QgZW5jb2RlIHRoZSBub3ctcmVtb3Zl
ZCBmb250SW5mbyBtZW1iZXIuCisgICAgICAgIChXZWJLaXQ6OkRpY3Rpb25hcnlQb3B1cEluZm86
OmRlY29kZSk6IERvbid0IGRlY29kZSB0aGUgbm93LXJlbW92ZWQgZm9udEluZm8gbWVtYmVyLgor
ICAgICAgICAqIFNoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmg6IFJlbW92ZSB0aGUgZm9udElu
Zm8gbWVtYmVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmg6
CisgICAgICAgIChQYWdlQ2xpZW50SW1wbCk6IGRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwIHNo
b3VsZCB0YWtlIGFuIEF0dHJpYnV0ZWRTdHJpbmcgaW5zdGVhZCBvZiBhIHBsYWluIFN0cmluZywg
YW5kCisgICAgICAgIG5vIGxvbmdlciBuZWVkcyB0byB0YWtlIHRoZSBwYWdlIHNjYWxlIGZhY3Rv
ci4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKTog
VXNlIHRoZSBBdHRyaWJ1dGVkU3RyaW5nIHdlJ3JlIGhhbmRlZCBmcm9tIHRoZSBXZWJQcm9jZXNz
CisgICAgICAgIGluc3RlYWQgb2YgY29uc3RydWN0aW5nIG9uZSBvdXJzZWx2ZXM7IHRoaXMgd2F5
LCB3ZSBoYXZlIGFsbCB0aGUgYXR0cmlidXRlcyBpbnN0ZWFkIG9mIGp1c3QgYSBzaW5nbGUgZm9u
dC4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAoUGFnZUNsaWVu
dCk6IGRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwIHNob3VsZCB0YWtlIGFuIEF0dHJpYnV0ZWRT
dHJpbmcgaW5zdGVhZCBvZiBhIHBsYWluIFN0cmluZy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJQYWdlUHJveHkpOiBkaWRQZXJmb3JtRGljdGlvbmFy
eUxvb2t1cCBzaG91bGQgdGFrZSBhbiBBdHRyaWJ1dGVkU3RyaW5nIGluc3RlYWQgb2YgYSBwbGFp
biBTdHJpbmcuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjog
RGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAgc2hvdWxkIHRha2UgYW4gQXR0cmlidXRlZFN0cmlu
ZyBpbnN0ZWFkIG9mIGEgcGxhaW4gU3RyaW5nLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFBlcmZv
cm1EaWN0aW9uYXJ5TG9va3VwKTogZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAgc2hvdWxkIHRh
a2UgYW4gQXR0cmlidXRlZFN0cmluZyBpbnN0ZWFkIG9mIGEgcGxhaW4gU3RyaW5nLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBGb3JSYW5nZSk6IHBlcmZvcm1EaWN0
aW9uYXJ5TG9va3VwRm9yUmFuZ2Ugc2hvdWxkIGhhbmQgV2ViUGFnZVByb3h5IGFuIEF0dHJpYnV0
ZWRTdHJpbmcKKyAgICAgICAgY29uc3RydWN0ZWQgdmlhIFdlYkhUTUxDb252ZXJ0ZXIgaW5zdGVh
ZCBvZiBhIHBsYWluIHRleHQgc3RyaW5nIHBhaXJlZCB3aXRoIGEgc2luZ2xlIGZvbnQgZGVzY3Jp
cHRvci4KKyAgICAgICAgQWxzbywgc2NhbGUgdGhlIHNpemUgb2YgZXZlcnkgZm9udCBhdHRyaWJ1
dGUgYnkgdGhlIGN1cnJlbnQgcGFnZVNjYWxlRmFjdG9yLgorCiAyMDEyLTExLTI3ICBUaW0gSG9y
dG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFBERlBsdWdpbjogUGFn
ZSBzY2FsZSBmYWN0b3Igc2hvdWxkIGFmZmVjdCBzdWJmcmFtZSBQREZzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5jcHAKaW5kZXggZjE0ZWVhMy4uMjM3NmNi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0RpY3Rpb25hcnlQb3B1cEluZm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcApA
QCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHZvaWQgRGljdGlvbmFyeVBvcHVw
SW5mbzo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsK
ICAgICBlbmNvZGVyIDw8IG9yaWdpbjsKLSAgICBlbmNvZGVyIDw8IGZvbnRJbmZvOwogICAgIGVu
Y29kZXIuZW5jb2RlRW51bSh0eXBlKTsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCkBAIC01Miw4ICs1MSw2IEBAIGJvb2wgRGlj
dGlvbmFyeVBvcHVwSW5mbzo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2Rl
ciwgRGljdGlvbmFyeVBvCiB7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0Lm9yaWdp
bikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1
bHQuZm9udEluZm8pKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGVFbnVtKHJlc3VsdC50eXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2lmIFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uaAppbmRleCAyN2ViNmRiLi5h
ZjkyMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVw
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmgK
QEAgLTI2LDcgKzI2LDYgQEAKICNpZm5kZWYgRGljdGlvbmFyeVBvcHVwSW5mb19oCiAjZGVmaW5l
IERpY3Rpb25hcnlQb3B1cEluZm9faAogCi0jaW5jbHVkZSAiRm9udEluZm8uaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTUwLDcgKzQ5
LDYgQEAgc3RydWN0IERpY3Rpb25hcnlQb3B1cEluZm8gewogICAgIH07CiAKICAgICBXZWJDb3Jl
OjpGbG9hdFBvaW50IG9yaWdpbjsKLSAgICBGb250SW5mbyBmb250SW5mbzsKICAgICBUeXBlIHR5
cGU7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwNzAKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBvcHRpb25zOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXgg
YjAxOWM2OC4uODc2OGZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9QYWdlQ2xpZW50SW1wbC5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZpcnR1YWwgdm9pZCBmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+JiB1cGRhdGVSZWN0cyk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9y
bURpY3Rpb25hcnlMb29rdXAoY29uc3QgU3RyaW5nJiwgZG91YmxlIHNjYWxlRmFjdG9yLCBjb25z
dCBEaWN0aW9uYXJ5UG9wdXBJbmZvJik7CisgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1EaWN0
aW9uYXJ5TG9va3VwKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBEaWN0aW9uYXJ5UG9w
dXBJbmZvJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NEaWN0aW9uYXJ5TG9va3VwUGFuZWwo
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkFsdGVy
bmF0aXZlVGV4dFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJl
cGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBs
YWNlbWVudFN0cmluZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9QYWdlQ2xpZW50SW1wbC5tbQppbmRleCA2YmRjMWI5Li45ZWQ3ZmVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQpAQCAtMjks
NiArMjksNyBAQAogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQogI2ltcG9ydCA8QXBw
S2l0L05TVGV4dEFsdGVybmF0aXZlcy5oPgogI2VuZGlmCisjaW1wb3J0ICJBdHRyaWJ1dGVkU3Ry
aW5nLmgiCiAjaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5j
ZS5oIgogI2ltcG9ydCAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgpAQCAtNDcxLDE0ICs0NzIsOSBA
QCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVj
dG9yPEludFJlY3Q+JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFBhZ2VDbGll
bnRJbXBsOjpkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBTdHJpbmcmIHRleHQsIGRv
dWJsZSBzY2FsZUZhY3RvciwgY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbmFyeVBv
cHVwSW5mbykKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3Vw
KGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmIHRleHQsIGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8m
IGRpY3Rpb25hcnlQb3B1cEluZm8pCiB7Ci0gICAgTlNGb250RGVzY3JpcHRvciAqZm9udERlc2Ny
aXB0b3IgPSBbTlNGb250RGVzY3JpcHRvciBmb250RGVzY3JpcHRvcldpdGhGb250QXR0cmlidXRl
czooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeVBvcHVwSW5mby5mb250SW5mby5mb250QXR0cmli
dXRlRGljdGlvbmFyeS5nZXQoKV07Ci0gICAgTlNGb250ICpmb250ID0gW05TRm9udCBmb250V2l0
aERlc2NyaXB0b3I6Zm9udERlc2NyaXB0b3Igc2l6ZTooKHNjYWxlRmFjdG9yICE9IDEpID8gW2Zv
bnREZXNjcmlwdG9yIHBvaW50U2l6ZV0gKiBzY2FsZUZhY3RvciA6IDApXTsKLQotICAgIFJldGFp
blB0cjxOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5nKEFkb3B0TlMs
IFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6bnNTdHJp
bmdGcm9tV2ViQ29yZVN0cmluZyh0ZXh0KV0pOwotICAgIFthdHRyaWJ1dGVkU3RyaW5nLmdldCgp
IGFkZEF0dHJpYnV0ZTpOU0ZvbnRBdHRyaWJ1dGVOYW1lIHZhbHVlOmZvbnQgcmFuZ2U6TlNNYWtl
UmFuZ2UoMCwgW2F0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkgbGVuZ3RoXSldOwotCisgICAgUmV0YWlu
UHRyPE5TQXR0cmlidXRlZFN0cmluZz4gYXR0cmlidXRlZFN0cmluZyA9IHRleHQuc3RyaW5nOwog
ICAgIE5TUG9pbnQgdGV4dEJhc2VsaW5lT3JpZ2luID0gZGljdGlvbmFyeVBvcHVwSW5mby5vcmln
aW47CiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDBjN2I4OTAuLmRkMGNkNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMjExLDcgKzIxMSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcGx1Z2luRm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdlZCh1aW50
NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgYm9vbCBwbHVnaW5IYXNGb2N1
c0FuZFdpbmRvd0hhc0ZvY3VzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFBsdWdpbkNvbXBs
ZXhUZXh0SW5wdXRTdGF0ZSh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmll
ciwgUGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKSA9IDA7CiAgICAgdmlydHVhbCBDR0NvbnRl
eHRSZWYgY29udGFpbmluZ1dpbmRvd0dyYXBoaWNzQ29udGV4dCgpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgU3RyaW5nJiwgZG91YmxlIHNj
YWxlRmFjdG9yLCBjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwg
Y29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlz
c0RpY3Rpb25hcnlMb29rdXBQYW5lbCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJl
Y3Rpb25QYW5lbChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBs
YWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2lu
Z0FsdGVybmF0aXZlVGV4dCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDk4ZmE4YTQuLmVmNDU2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTk0OSw3ICs5NDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VhcmNo
V2l0aFNwb3RsaWdodChjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIERpY3Rpb25hcnkuCi0gICAg
dm9pZCBkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBTdHJpbmcmLCBjb25zdCBEaWN0
aW9uYXJ5UG9wdXBJbmZvJik7CisgICAgdm9pZCBkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChj
b25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYpOwogI2Vu
ZGlmCiAKICAgICAvLyBTcGVsbGluZyBhbmQgZ3JhbW1hci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDcxNThkODEuLmY4OGVk
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgpAQCAtMjcxLDcgKzI3MSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgIyBEaWN0aW9uYXJ5IHN1cHBvcnQuCi0gICAgRGlkUGVy
Zm9ybURpY3Rpb25hcnlMb29rdXAoV1RGOjpTdHJpbmcgdGV4dCwgV2ViS2l0OjpEaWN0aW9uYXJ5
UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm8pCisgICAgRGlkUGVyZm9ybURpY3Rpb25hcnlM
b29rdXAoV2ViS2l0OjpBdHRyaWJ1dGVkU3RyaW5nIHRleHQsIFdlYktpdDo6RGljdGlvbmFyeVBv
cHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZvKQogCiAgICAgIyBLZXlib2FyZCBpbnB1dCBzdXBw
b3J0IG1lc3NhZ2VzCiAgICAgSW50ZXJwcmV0UXVldWVkS2V5RXZlbnQoV2ViS2l0OjpFZGl0b3JT
dGF0ZSBzdGF0ZSkgLT4gKGJvb2wgaGFuZGxlZCwgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29t
bWFuZD4gc2F2ZWRDb21tYW5kcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KaW5kZXggNmYwOTU2ZS4uMTM3YzIyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTQwMCw5ICs0MDAs
OSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJvb2wg
aXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQpCiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoaXNTbWFydEluc2VydERlbGV0
ZUVuYWJsZWQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3Jt
RGljdGlvbmFyeUxvb2t1cChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IERpY3Rpb25hcnlQb3B1
cEluZm8mIGRpY3Rpb25hcnlQb3B1cEluZm8pCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9y
bURpY3Rpb25hcnlMb29rdXAoY29uc3QgQXR0cmlidXRlZFN0cmluZyYgdGV4dCwgY29uc3QgRGlj
dGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbmFyeVBvcHVwSW5mbykKIHsKLSAgICBtX3BhZ2VDbGll
bnQtPmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKHRleHQsIG1fcGFnZVNjYWxlRmFjdG9yLCBk
aWN0aW9uYXJ5UG9wdXBJbmZvKTsKKyAgICBtX3BhZ2VDbGllbnQtPmRpZFBlcmZvcm1EaWN0aW9u
YXJ5TG9va3VwKHRleHQsIGRpY3Rpb25hcnlQb3B1cEluZm8pOwogfQogICAgIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihjb25zdCBDb3Jl
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDVmMDlkNzUuLjgyNzRjNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0KQEAgLTU0NSwzOSArNTQ1LDQ4IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURpY3Rpb25h
cnlMb29rdXBGb3JTZWxlY3Rpb24oRGljdGlvbmFyeVBvcHVwSW5mbzo6VHlwZSB0eXBlCiAKIHZv
aWQgV2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBGb3JSYW5nZShEaWN0aW9uYXJ5UG9w
dXBJbmZvOjpUeXBlIHR5cGUsIEZyYW1lKiBmcmFtZSwgUmFuZ2UqIHJhbmdlLCBOU0RpY3Rpb25h
cnkgKm9wdGlvbnMpCiB7Ci0gICAgU3RyaW5nIHJhbmdlVGV4dCA9IHJhbmdlLT50ZXh0KCk7Ci0g
ICAgaWYgKHJhbmdlVGV4dC5zdHJpcFdoaXRlU3BhY2UoKS5pc0VtcHR5KCkpCisgICAgaWYgKHJh
bmdlLT50ZXh0KCkuc3RyaXBXaGl0ZVNwYWNlKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAgICAgCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHJhbmdlLT5zdGFydENvbnRhaW5l
cigpLT5yZW5kZXJlcigpOwogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyLT5zdHls
ZSgpOwotICAgIE5TRm9udCAqZm9udCA9IHN0eWxlLT5mb250KCkucHJpbWFyeUZvbnQoKS0+Z2V0
TlNGb250KCk7Ci0gICAgCi0gICAgLy8gV2Ugd29uJ3QgYmUgYWJsZSB0byBnZXQgYW4gTlNGb250
IGluIHRoZSBjYXNlIHRoYXQgYSBXZWIgRm9udCBpcyBiZWluZyB1c2VkLCBzbyB1c2UKLSAgICAv
LyB0aGUgZGVmYXVsdCBzeXN0ZW0gZm9udCBhdCB0aGUgc2FtZSBzaXplIGluc3RlYWQuCi0gICAg
aWYgKCFmb250KQotICAgICAgICBmb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOnN0eWxl
LT5mb250KCkucHJpbWFyeUZvbnQoKS0+cGxhdGZvcm1EYXRhKCkuc2l6ZSgpXTsKLQotICAgIENG
RGljdGlvbmFyeVJlZiBmb250RGVzY3JpcHRvckF0dHJpYnV0ZXMgPSAoQ0ZEaWN0aW9uYXJ5UmVm
KVtbZm9udCBmb250RGVzY3JpcHRvcl0gZm9udEF0dHJpYnV0ZXNdOwotICAgIGlmICghZm9udERl
c2NyaXB0b3JBdHRyaWJ1dGVzKQotICAgICAgICByZXR1cm47CiAKICAgICBWZWN0b3I8RmxvYXRR
dWFkPiBxdWFkczsKICAgICByYW5nZS0+dGV4dFF1YWRzKHF1YWRzKTsKICAgICBpZiAocXVhZHMu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBJbnRSZWN0IHJhbmdlUmVj
dCA9IGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3cocXVhZHNbMF0uZW5jbG9zaW5nQm91
bmRpbmdCb3goKSk7CiAgICAgCiAgICAgRGljdGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9w
dXBJbmZvOwogICAgIGRpY3Rpb25hcnlQb3B1cEluZm8udHlwZSA9IHR5cGU7CiAgICAgZGljdGlv
bmFyeVBvcHVwSW5mby5vcmlnaW4gPSBGbG9hdFBvaW50KHJhbmdlUmVjdC54KCksIHJhbmdlUmVj
dC55KCkgKyAoc3R5bGUtPmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgKiBwYWdlU2NhbGVGYWN0b3Io
KSkpOwotICAgIGRpY3Rpb25hcnlQb3B1cEluZm8uZm9udEluZm8uZm9udEF0dHJpYnV0ZURpY3Rp
b25hcnkgPSBmb250RGVzY3JpcHRvckF0dHJpYnV0ZXM7CiAjaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDcwCiAgICAgZGljdGlvbmFyeVBvcHVwSW5mby5vcHRpb25zID0g
KENGRGljdGlvbmFyeVJlZilvcHRpb25zOwogI2VuZGlmCiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKHJhbmdlVGV4dCwgZGljdGlv
bmFyeVBvcHVwSW5mbykpOworICAgIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IG5zQXR0
cmlidXRlZFN0cmluZyA9IFtXZWJIVE1MQ29udmVydGVyIGVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5n
RnJvbVJhbmdlOnJhbmdlXTsKKworICAgIFJldGFpblB0cjxOU011dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nPiBzY2FsZWROU0F0dHJpYnV0ZWRTdHJpbmcoQWRvcHROUywgW1tOU011dGFibGVBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpbbnNBdHRyaWJ1dGVkU3RyaW5nIHN0cmlu
Z11dKTsKKworICAgIE5TRm9udE1hbmFnZXIgKmZvbnRNYW5hZ2VyID0gW05TRm9udE1hbmFnZXIg
c2hhcmVkRm9udE1hbmFnZXJdOworCisgICAgW25zQXR0cmlidXRlZFN0cmluZyBlbnVtZXJhdGVB
dHRyaWJ1dGVzSW5SYW5nZTpOU01ha2VSYW5nZSgwLCBbbnNBdHRyaWJ1dGVkU3RyaW5nIGxlbmd0
aF0pIG9wdGlvbnM6MCB1c2luZ0Jsb2NrOl4oTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzLCBOU1Jh
bmdlIHJhbmdlLCBCT09MICpzdG9wKSB7CisgICAgICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0
aW9uYXJ5PiBzY2FsZWRBdHRyaWJ1dGVzKEFkb3B0TlMsIFthdHRyaWJ1dGVzIG11dGFibGVDb3B5
XSk7CisKKyAgICAgICAgTlNGb250ICpmb250ID0gW3NjYWxlZEF0dHJpYnV0ZXMgb2JqZWN0Rm9y
S2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOworICAgICAgICBpZiAoZm9udCkgeworICAgICAgICAg
ICAgZm9udCA9IFtmb250TWFuYWdlciBjb252ZXJ0Rm9udDpmb250IHRvU2l6ZTpbZm9udCBwb2lu
dFNpemVdICogcGFnZVNjYWxlRmFjdG9yKCldOworICAgICAgICAgICAgW3NjYWxlZEF0dHJpYnV0
ZXMgc2V0T2JqZWN0OmZvbnQgZm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOworICAgICAgICB9
CisKKyAgICAgICAgW3NjYWxlZE5TQXR0cmlidXRlZFN0cmluZy5nZXQoKSBhZGRBdHRyaWJ1dGVz
OnNjYWxlZEF0dHJpYnV0ZXMuZ2V0KCkgcmFuZ2U6cmFuZ2VdOworICAgIH1dOworCisgICAgQXR0
cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3RyaW5nOworICAgIGF0dHJpYnV0ZWRTdHJpbmcuc3Ry
aW5nID0gc2NhbGVkTlNBdHRyaWJ1dGVkU3RyaW5nOworCisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChhdHRyaWJ1dGVkU3RyaW5nLCBk
aWN0aW9uYXJ5UG9wdXBJbmZvKSk7CiB9CiAKIGJvb2wgV2ViUGFnZTo6cGVyZm9ybU5vbkVkaXRp
bmdCZWhhdmlvckZvclNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpCg==
</data>
<flag name="review"
          id="192216"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>