<?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>169869</bug_id>
          
          <creation_ts>2017-03-19 17:43:23 -0700</creation_ts>
          <short_desc>Teach TextIndicator to estimate the background color of the given Range</short_desc>
          <delta_ts>2017-03-21 15:04:57 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1289421</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-19 17:43:23 -0700</bug_when>
    <thetext>Teach TextIndicator to give a best guess at the background color of the Range being snapshotted, falling back to a default (e.g. the document color) if the background is an image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289422</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-19 17:44:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/31127272&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289425</commentid>
    <comment_count>2</comment_count>
      <attachid>304909</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-19 18:10:17 -0700</bug_when>
    <thetext>Created attachment 304909
Patch

`wekbit-patch upload` is failing for me; attempting to upload manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289561</commentid>
    <comment_count>3</comment_count>
      <attachid>304946</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-20 13:49:46 -0700</bug_when>
    <thetext>Created attachment 304946
Rebased on master

Rebased on master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289828</commentid>
    <comment_count>4</comment_count>
      <attachid>304946</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-03-21 13:52:03 -0700</bug_when>
    <thetext>Comment on attachment 304946
Rebased on master

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

&gt; Source/WebCore/page/TextIndicator.cpp:232
&gt; +    auto boundingRectForRange = IntRect(range.absoluteBoundingRect());

Maybe you want enclosingIntRect()?

&gt; Source/WebCore/page/TextIndicator.cpp:244
&gt; +        if (style.hasBackground() &amp;&amp; style.backgroundColor() != Color::transparent)
&gt; +            parentRendererBackgroundColors.append(style.backgroundColor());

Should this logic use visitedDependentColor to avoid leaking history state?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289833</commentid>
    <comment_count>5</comment_count>
      <attachid>304946</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-21 14:02:17 -0700</bug_when>
    <thetext>Comment on attachment 304946
Rebased on master

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

&gt;&gt; Source/WebCore/page/TextIndicator.cpp:232
&gt;&gt; +    auto boundingRectForRange = IntRect(range.absoluteBoundingRect());
&gt; 
&gt; Maybe you want enclosingIntRect()?

Oh, yes, that&apos;s right. On closer inspection, simply flooring the values (by using the IntRect constructor) is wrong here.

&gt;&gt; Source/WebCore/page/TextIndicator.cpp:244
&gt;&gt; +            parentRendererBackgroundColors.append(style.backgroundColor());
&gt; 
&gt; Should this logic use visitedDependentColor to avoid leaking history state?

Good catch! Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289855</commentid>
    <comment_count>6</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-21 15:04:57 -0700</bug_when>
    <thetext>Landed in &lt;https://trac.webkit.org/changeset/214231&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304909</attachid>
            <date>2017-03-19 18:10:17 -0700</date>
            <delta_ts>2017-03-20 13:49:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>v1.patch</filename>
            <type>text/plain</type>
            <size>15296</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">RnJvbSBmNDdiN2UxNGU5Njk0MmM3ZTIyMmEyZTFmZjcyYjQ5OWE5MWU2MTJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBXZW5zb24gSHNpZWggPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CkRhdGU6IFN1biwgMTkgTWFyIDIwMTcgMTg6MDQ6MzcgLTA3MDAKU3ViamVjdDogW1BBVENIXSBU
ZWFjaCBUZXh0SW5kaWNhdG9yIHRvIGVzdGltYXRlIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRo
ZQogZ2l2ZW4gUmFuZ2UgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
OTg2OQogPHJkYXI6Ly9wcm9ibGVtLzMxMTI3MjcyPgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCgpTb3VyY2UvV2ViQ29yZToKCkludHJvZHVjZXMgYSBzaW1wbGUgaGV1cmlzdGljIHRvIGNv
bXB1dGUgYSBiYWNrZ3JvdW5kIGNvbG9yIHRoYXQgaXMgYXBwcm9wcmlhdGUgdG8gdXNlIGFzIGEg
Ym9yZGVyIHN1cnJvdW5kaW5nCnRoZSBzbmFwc2hvdCBvZiB0aGUgZ2l2ZW4gUmFuZ2UuIFRoaXMg
d29yayBpcyBvbmx5IGNhcnJpZWQgb3V0IGlmIFRleHRJbmRpY2F0b3JPcHRpb25Db21wdXRlRXN0
aW1hdGVkQmFja2dyb3VuZENvbG9yCmlzIHNwZWNpZmllZC4gVGhlIGRldGFpbHMgb2YgaG93IHRo
aXMgYmFja2dyb3VuZCBjb2xvciBpcyBlc3RpbWF0ZWQgKGFzIHdlbGwgYXMgd2hlbiB0byBmYWxs
IGJhY2spIGNhbiBiZSBpbXByb3ZlZAppbiBzZXZlcmFsIHdheXMgKG9uZSBpZGVhIGlzIHRvIHNh
bXBsZSBjb2xvcnMgYWxvbmcgdGhlIGVkZ2Ugb2YgdGhlIHNuYXBzaG90KS4gRm9yIHRoZSB0aW1l
IGJlaW5nLCB0aGlzIHBhdGNoCm5haXZlbHkgd2Fsa3MgdXAgdGhlIHJlbmRlciB0cmVlIGluIHNl
YXJjaCBvZiBlbmNsb3NpbmcgcGFyZW50IHJlbmRlcmVycyB0aGF0IGhhdmUgYmFja2dyb3VuZCBj
b2xvcnMuIElmIGFueQpyZW5kZXJlcnMgaGF2ZSBhIHN0eWxlIHRoYXQgaXMgZGVlbWVkIHRvbyBj
b21wbGV4IHRvIGNhcHR1cmUgaW4gYSBzaW5nbGUgYmFja2dyb3VuZCBjb2xvciwgdGhlbiBmYWxs
IGJhY2sgdG8gdGhlCmJhc2UgZG9jdW1lbnQgYmFja2dyb3VuZCBjb2xvcjsgb3RoZXJ3aXNlLCB0
aGUgZXN0aW1hdGVkIGJhY2tncm91bmQgY29sb3IgaXMgdGhlIHJlc3VsdCBvZiBibGVuZGluZyB0
aGVzZQpiYWNrZ3JvdW5kIGNvbG9ycyB0b2dldGhlci4KCiogcGFnZS9UZXh0SW5kaWNhdG9yLmNw
cDoKKFdlYkNvcmU6OnN0eWxlQ29udGFpbnNDb21wbGV4QmFja2dyb3VuZCk6CgpCYWlsIG91dCBv
ZiB0aGUgYmFja2dyb3VuZCBjb2xvciBjb2RlcGF0aCBpZiB0aGUgcmVuZGVyZXIgaGFzIGJhY2tk
cm9wIGZpbHRlcnMsIGhhcyBhIGJhY2tncm91bmQgaW1hZ2UsIG9yIHVzZXMKYSBub24tbm9ybWFs
IGJsZW5kIG1vZGUuCgooV2ViQ29yZTo6ZmFsbGJhY2tCYWNrZ3JvdW5kQ29sb3JGb3JUZXh0U2Vs
ZWN0aW9uKToKKFdlYkNvcmU6OmVzdGltYXRlZEJhY2tncm91bmRDb2xvckZvclJhbmdlKToKKFdl
YkNvcmU6OmluaXRpYWxpemVJbmRpY2F0b3IpOgoqIHBhZ2UvVGV4dEluZGljYXRvci5oOgoKU291
cmNlL1dlYktpdC9tYWM6CgpQbHVtYiB0aGUgZXN0aW1hdGVkIGJhY2tncm91bmQgY29sb3IgZm9y
IFdlYktpdDEgY2xpZW50cyB0aHJvdWdoIGEgbmV3IHByb3BlcnR5IGluIFdlYlVJVGV4dEluZGlj
YXRvckRhdGEuCgoqIFdlYlZpZXcvV2ViVmlldy5tbToKKC1bV2ViVUlUZXh0SW5kaWNhdG9yRGF0
YSBpbml0V2l0aEltYWdlOnRleHRJbmRpY2F0b3JEYXRhOnNjYWxlOl0pOgooLVtXZWJVSVRleHRJ
bmRpY2F0b3JEYXRhIGRlYWxsb2NdKToKKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CgpTb3Vy
Y2UvV2ViS2l0MjoKClNlbmQgdGhlIGVzdGltYXRlZCBiYWNrZ3JvdW5kIGNvbG9yIG92ZXIgWFBD
LCBhbmQgYWRvcHQgVGV4dEluZGljYXRvck9wdGlvbkNvbXB1dGVFc3RpbWF0ZWRCYWNrZ3JvdW5k
Q29sb3Igd2hlbgpzbmFwc2hvdHRpbmcgYWZ0ZXIgcGVyZm9ybWluZyBhbiBlZGl0IGRhdGEgaW50
ZXJhY3Rpb24uCgoqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgooSVBDOjpBcmd1
bWVudENvZGVyPFRleHRJbmRpY2F0b3JEYXRhPjo6ZW5jb2RlKToKKElQQzo6QXJndW1lbnRDb2Rl
cjxUZXh0SW5kaWNhdG9yRGF0YT46OmRlY29kZSk6CiogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tOgooV2ViS2l0OjpXZWJQYWdlOjpkaWRDb25jbHVkZUVkaXREYXRhSW50ZXJh
Y3Rpb24pOgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgMjggKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0
b3IuY3BwICAgICAgICAgICAgICB8IDUzICsrKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5oICAgICAgICAgICAgICAgIHwgIDUgKysKIFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgIHwgMTUgKysrKysr
CiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gICAgICAgICAgICAgICB8ICA1
ICsrCiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggICAgICAgICB8
ICAyICsKIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgMTcgKysrKysrKwogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAgICAgfCAgNCArKwogLi4uL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tICAgfCAgNCArLQogOSBmaWxlcyBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9ucygrKSwg
MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE3ZjgxYjZkMDcuLmFlMzgxNzA1OTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTctMDMtMTkgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgVGVhY2ggVGV4dEluZGljYXRvciB0byBl
c3RpbWF0ZSB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgZ2l2ZW4gUmFuZ2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTg2OQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzExMjcyNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlcyBhIHNpbXBsZSBoZXVyaXN0aWMgdG8gY29tcHV0
ZSBhIGJhY2tncm91bmQgY29sb3IgdGhhdCBpcyBhcHByb3ByaWF0ZSB0byB1c2UgYXMgYSBib3Jk
ZXIgc3Vycm91bmRpbmcKKyAgICAgICAgdGhlIHNuYXBzaG90IG9mIHRoZSBnaXZlbiBSYW5nZS4g
VGhpcyB3b3JrIGlzIG9ubHkgY2FycmllZCBvdXQgaWYgVGV4dEluZGljYXRvck9wdGlvbkNvbXB1
dGVFc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IKKyAgICAgICAgaXMgc3BlY2lmaWVkLiBUaGUgZGV0
YWlscyBvZiBob3cgdGhpcyBiYWNrZ3JvdW5kIGNvbG9yIGlzIGVzdGltYXRlZCAoYXMgd2VsbCBh
cyB3aGVuIHRvIGZhbGwgYmFjaykgY2FuIGJlIGltcHJvdmVkCisgICAgICAgIGluIHNldmVyYWwg
d2F5cyAob25lIGlkZWEgaXMgdG8gc2FtcGxlIGNvbG9ycyBhbG9uZyB0aGUgZWRnZSBvZiB0aGUg
c25hcHNob3QpLiBGb3IgdGhlIHRpbWUgYmVpbmcsIHRoaXMgcGF0Y2gKKyAgICAgICAgbmFpdmVs
eSB3YWxrcyB1cCB0aGUgcmVuZGVyIHRyZWUgaW4gc2VhcmNoIG9mIGVuY2xvc2luZyBwYXJlbnQg
cmVuZGVyZXJzIHRoYXQgaGF2ZSBiYWNrZ3JvdW5kIGNvbG9ycy4gSWYgYW55CisgICAgICAgIHJl
bmRlcmVycyBoYXZlIGEgc3R5bGUgdGhhdCBpcyBkZWVtZWQgdG9vIGNvbXBsZXggdG8gY2FwdHVy
ZSBpbiBhIHNpbmdsZSBiYWNrZ3JvdW5kIGNvbG9yLCB0aGVuIGZhbGwgYmFjayB0byB0aGUKKyAg
ICAgICAgYmFzZSBkb2N1bWVudCBiYWNrZ3JvdW5kIGNvbG9yOyBvdGhlcndpc2UsIHRoZSBlc3Rp
bWF0ZWQgYmFja2dyb3VuZCBjb2xvciBpcyB0aGUgcmVzdWx0IG9mIGJsZW5kaW5nIHRoZXNlCisg
ICAgICAgIGJhY2tncm91bmQgY29sb3JzIHRvZ2V0aGVyLgorCisgICAgICAgICogcGFnZS9UZXh0
SW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlQ29udGFpbnNDb21wbGV4QmFj
a2dyb3VuZCk6CisKKyAgICAgICAgQmFpbCBvdXQgb2YgdGhlIGJhY2tncm91bmQgY29sb3IgY29k
ZXBhdGggaWYgdGhlIHJlbmRlcmVyIGhhcyBiYWNrZHJvcCBmaWx0ZXJzLCBoYXMgYSBiYWNrZ3Jv
dW5kIGltYWdlLCBvciB1c2VzCisgICAgICAgIGEgbm9uLW5vcm1hbCBibGVuZCBtb2RlLgorCisg
ICAgICAgIChXZWJDb3JlOjpmYWxsYmFja0JhY2tncm91bmRDb2xvckZvclRleHRTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6ZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yRm9yUmFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUluZGljYXRvcik6CisgICAgICAgICogcGFnZS9U
ZXh0SW5kaWNhdG9yLmg6CisKIDIwMTctMDMtMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CiAKICAgICAgICAgVGV4dEluZGljYXRvciBzaG91bGQgc3VwcG9ydCBhIG1v
ZGUgd2hlcmUgc2VsZWN0aW9uIHJlY3RzIGFyZSB1c2VkIHRvIHNpemUgdGhlIHNuYXBzaG90CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAppbmRleCBkNTdiNjhkZWEyMi4uNDM5NmEz
ZDM0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcApAQCAtMzksNiArMzks
NyBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAj
aW5jbHVkZSAiUmFuZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
UmVuZGVyT2JqZWN0LmgiCiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0yMDAsOCArMjAxLDYwIEBA
IHN0YXRpYyB2b2lkIGdldFNlbGVjdGlvblJlY3RzRm9yUmFuZ2UoVmVjdG9yPEZsb2F0UmVjdD4m
IHJlc3VsdGluZ1JlY3RzLCBjb25zdCBSCiAKICNlbmRpZgogCitzdGF0aWMgYm9vbCBzdHlsZUNv
bnRhaW5zQ29tcGxleEJhY2tncm91bmQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAg
IGlmIChzdHlsZS5oYXNCbGVuZE1vZGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBp
ZiAoc3R5bGUuaGFzQmFja2dyb3VuZEltYWdlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgaWYgKHN0eWxlLmhhc0JhY2tkcm9wRmlsdGVyKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgQ29sb3IgZXN0aW1hdGVkQmFja2dyb3Vu
ZENvbG9yRm9yUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlLCBjb25zdCBGcmFtZSYgZnJhbWUpCit7
CisgICAgYXV0byBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IgPSBmcmFtZS52aWV3KCkgPyBmcmFt
ZS52aWV3KCktPmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCkgOiBDb2xvcjo6dHJhbnNwYXJlbnQ7
CisKKyAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IG51bGxwdHI7CisgICAgYXV0byBjb21t
b25BbmNlc3RvciA9IHJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKCk7CisgICAgd2hpbGUg
KGNvbW1vbkFuY2VzdG9yKSB7CisgICAgICAgIGlmIChpczxSZW5kZXJFbGVtZW50Pihjb21tb25B
bmNlc3Rvci0+cmVuZGVyZXIoKSkpIHsKKyAgICAgICAgICAgIHJlbmRlcmVyID0gZG93bmNhc3Q8
UmVuZGVyRWxlbWVudD4oY29tbW9uQW5jZXN0b3ItPnJlbmRlcmVyKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY29tbW9uQW5jZXN0b3IgPSBjb21tb25BbmNlc3Rv
ci0+cGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpOworICAgIH0KKworICAgIGF1dG8gYm91bmRp
bmdSZWN0Rm9yUmFuZ2UgPSBJbnRSZWN0KHJhbmdlLmFic29sdXRlQm91bmRpbmdSZWN0KCkpOwor
ICAgIFZlY3RvcjxDb2xvcj4gcGFyZW50UmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3JzOworICAgIGZv
ciAoOyAhIXJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKSkgeworICAgICAg
ICBhdXRvIGFic29sdXRlQm91bmRpbmdCb3ggPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoKTsKKyAgICAgICAgaWYgKCFhYnNvbHV0ZUJvdW5kaW5nQm94LmNvbnRhaW5zKGJvdW5k
aW5nUmVjdEZvclJhbmdlKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8m
IHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CisgICAgICAgIGlmIChzdHlsZUNvbnRhaW5zQ29t
cGxleEJhY2tncm91bmQoc3R5bGUpKQorICAgICAgICAgICAgcmV0dXJuIGVzdGltYXRlZEJhY2tn
cm91bmRDb2xvcjsKKworICAgICAgICBpZiAoc3R5bGUuaGFzQmFja2dyb3VuZCgpICYmIHN0eWxl
LmJhY2tncm91bmRDb2xvcigpICE9IENvbG9yOjp0cmFuc3BhcmVudCkKKyAgICAgICAgICAgIHBh
cmVudFJlbmRlcmVyQmFja2dyb3VuZENvbG9ycy5hcHBlbmQoc3R5bGUuYmFja2dyb3VuZENvbG9y
KCkpOworICAgIH0KKyAgICBwYXJlbnRSZW5kZXJlckJhY2tncm91bmRDb2xvcnMucmV2ZXJzZSgp
OworICAgIGZvciAoYXV0byBiYWNrZ3JvdW5kQ29sb3IgOiBwYXJlbnRSZW5kZXJlckJhY2tncm91
bmRDb2xvcnMpCisgICAgICAgIGVzdGltYXRlZEJhY2tncm91bmRDb2xvciA9IGVzdGltYXRlZEJh
Y2tncm91bmRDb2xvci5ibGVuZChiYWNrZ3JvdW5kQ29sb3IpOworCisgICAgcmV0dXJuIGVzdGlt
YXRlZEJhY2tncm91bmRDb2xvcjsKK30KKwogc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUluZGljYXRv
cihUZXh0SW5kaWNhdG9yRGF0YSYgZGF0YSwgRnJhbWUmIGZyYW1lLCBjb25zdCBSYW5nZSYgcmFu
Z2UsIEZsb2F0U2l6ZSBtYXJnaW4sIGJvb2wgaW5kaWNhdGVzQ3VycmVudFNlbGVjdGlvbikKIHsK
KyAgICBpZiAoZGF0YS5vcHRpb25zICYgVGV4dEluZGljYXRvck9wdGlvbkNvbXB1dGVFc3RpbWF0
ZWRCYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgIGRhdGEuZXN0aW1hdGVkQmFja2dyb3VuZENvbG9y
ID0gZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yRm9yUmFuZ2UocmFuZ2UsIGZyYW1lKTsKKwogICAg
IFZlY3RvcjxGbG9hdFJlY3Q+IHRleHRSZWN0czsKIAogICAgIC8vIEZJWE1FICgxMzg4ODgpOiBJ
ZGVhbGx5IHdlIHdvdWxkbid0IHJlbW92ZSB0aGUgbWFyZ2luIGluIHRoaXMgY2FzZSwgYnV0IHdl
IG5lZWQgdG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmgKaW5kZXggMjViYTVjMzQyYWIu
LmE0ZmExNjhhMGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuaApAQCAtODgsNiAr
ODgsMTAgQEAgZW51bSBUZXh0SW5kaWNhdG9yT3B0aW9uIDogdWludDE2X3QgewogICAgIC8vIHNl
bGVjdGlvbiByZWN0cyB0aGF0IHdvdWxkIGVuY2xvc2UgdGhlIGdpdmVuIFJhbmdlIGluc3RlYWQu
CiAgICAgLy8gQ3VycmVudGx5LCB0aGlzIGlzIG9ubHkgc3VwcG9ydGVkIG9uIGlPUy4KICAgICBU
ZXh0SW5kaWNhdG9yT3B0aW9uVXNlU2VsZWN0aW9uUmVjdEZvclNpemluZyA9IDEgPDwgOSwKKwor
ICAgIC8vIENvbXB1dGUgYSBiYWNrZ3JvdW5kIGNvbG9yIHRvIHVzZSB3aGVuIHJlbmRlcmluZyBh
IHBsYXR0ZXIgYXJvdW5kIHRoZSBjb250ZW50IGltYWdlLCBmYWxsaW5nIGJhY2sgdG8gYSBkZWZh
dWx0IGlmIHRoZQorICAgIC8vIGNvbnRlbnQncyBiYWNrZ3JvdW5kIGlzIHRvbyBjb21wbGV4IHRv
IGJlIGNhcHR1cmVkIGJ5IGEgc2luZ2xlIGNvbG9yLgorICAgIFRleHRJbmRpY2F0b3JPcHRpb25D
b21wdXRlRXN0aW1hdGVkQmFja2dyb3VuZENvbG9yID0gMSA8PCAxMCwKIH07CiB0eXBlZGVmIHVp
bnQxNl90IFRleHRJbmRpY2F0b3JPcHRpb25zOwogCkBAIC0xMDAsNiArMTA0LDcgQEAgc3RydWN0
IFRleHRJbmRpY2F0b3JEYXRhIHsKICAgICBSZWZQdHI8SW1hZ2U+IGNvbnRlbnRJbWFnZVdpdGhI
aWdobGlnaHQ7CiAgICAgUmVmUHRyPEltYWdlPiBjb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9u
OwogICAgIFJlZlB0cjxJbWFnZT4gY29udGVudEltYWdlOworICAgIENvbG9yIGVzdGltYXRlZEJh
Y2tncm91bmRDb2xvcjsKICAgICBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbiBw
cmVzZW50YXRpb25UcmFuc2l0aW9uOwogICAgIFRleHRJbmRpY2F0b3JPcHRpb25zIG9wdGlvbnM7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDU5ODhlZDFmNDAxLi41YTY5MDIyOTQ2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTAzLTE5ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFRlYWNoIFRleHRJbmRpY2F0b3IgdG8g
ZXN0aW1hdGUgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIGdpdmVuIFJhbmdlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk4NjkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzMxMTI3MjcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBsdW1iIHRoZSBlc3RpbWF0ZWQgYmFja2dyb3VuZCBjb2xvciBm
b3IgV2ViS2l0MSBjbGllbnRzIHRocm91Z2ggYSBuZXcgcHJvcGVydHkgaW4gV2ViVUlUZXh0SW5k
aWNhdG9yRGF0YS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V2ViVUlUZXh0SW5kaWNhdG9yRGF0YSBpbml0V2l0aEltYWdlOnRleHRJbmRpY2F0b3JEYXRhOnNj
YWxlOl0pOgorICAgICAgICAoLVtXZWJVSVRleHRJbmRpY2F0b3JEYXRhIGRlYWxsb2NdKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTctMDMtMTcgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIHJlbG9hZCBwb2xpY3kg
d2hlcmUgb25seSBleHBpcmVkIHN1YnJlc291cmNlcyBhcmUgcmV2YWxpZGF0ZWQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBkYWI4MGU3MWUxMy4uZWFiZTUzYjY4ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTYzOCw2ICs2MzgsNyBAQCBwcml2
YXRlOgogQHN5bnRoZXNpemUgY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbj1fY29udGVudElt
YWdlV2l0aG91dFNlbGVjdGlvbjsKIEBzeW50aGVzaXplIGNvbnRlbnRJbWFnZVdpdGhvdXRTZWxl
Y3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzPV9jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0
aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlczsKIEBzeW50aGVzaXplIGNvbnRlbnRJbWFnZT1f
Y29udGVudEltYWdlOworQHN5bnRoZXNpemUgZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yPV9lc3Rp
bWF0ZWRCYWNrZ3JvdW5kQ29sb3I7CiAKIEBlbmQKIApAQCAtNjcwLDYgKzY3MSw5IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoaW5kaWNhdG9yRGF0YS5vcHRpb25zICYg
VGV4dEluZGljYXRvck9wdGlvbkNvbXB1dGVFc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IpCisgICAg
ICAgIF9lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IgPSBbW1tnZXRVSUNvbG9yQ2xhc3MoKSBhbGxv
Y10gaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoaW5kaWNhdG9yRGF0YS5lc3RpbWF0ZWRC
YWNrZ3JvdW5kQ29sb3IpXSByZXRhaW5dOworCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTY5
MCw2ICs2OTQsNyBAQCBwcml2YXRlOgogICAgIFtfY29udGVudEltYWdlV2l0aEhpZ2hsaWdodCBy
ZWxlYXNlXTsKICAgICBbX2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24gcmVsZWFzZV07CiAg
ICAgW19jb250ZW50SW1hZ2UgcmVsZWFzZV07CisgICAgW19lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29s
b3IgcmVsZWFzZV07CiAgICAgCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDQwMTJlZjE2YWVjLi41M2M4NjQ5
YTQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaApAQCAt
NTcsNiArNTcsNyBAQAogCiAjZGVmaW5lIFdFQktJVF9ESV9CTE9DSyAxCiAKK0BjbGFzcyBVSUNv
bG9yOwogQGNsYXNzIFVJSW1hZ2U7CiBAY2xhc3MgTlNFcnJvcjsKIEBjbGFzcyBXZWJGcmFtZTsK
QEAgLTE5Myw2ICsxOTQsNyBAQCB0eXBlZGVmIGVudW0gewogQHByb3BlcnR5IChub25hdG9taWMs
IHJldGFpbikgVUlJbWFnZSAqY29udGVudEltYWdlOwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
dGFpbikgVUlJbWFnZSAqY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbjsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBhc3NpZ24pIENHUmVjdCBjb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVj
dEluUm9vdFZpZXdDb29yZGluYXRlczsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFVJ
Q29sb3IgKmVzdGltYXRlZEJhY2tncm91bmRDb2xvcjsKIEBlbmQKIAogI2lmICFUQVJHRVRfT1Nf
SVBIT05FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDg0MjMzOWYxMDUuLjQzMTVhYWMyNWRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMDMtMTkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CisKKyAgICAgICAgVGVhY2ggVGV4dEluZGljYXRvciB0byBlc3RpbWF0ZSB0
aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgZ2l2ZW4gUmFuZ2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTg2OQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMzExMjcyNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2VuZCB0aGUgZXN0aW1hdGVkIGJhY2tncm91bmQgY29sb3Igb3ZlciBYUEMsIGFu
ZCBhZG9wdCBUZXh0SW5kaWNhdG9yT3B0aW9uQ29tcHV0ZUVzdGltYXRlZEJhY2tncm91bmRDb2xv
ciB3aGVuCisgICAgICAgIHNuYXBzaG90dGluZyBhZnRlciBwZXJmb3JtaW5nIGFuIGVkaXQgZGF0
YSBpbnRlcmFjdGlvbi4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFRleHRJbmRpY2F0b3JEYXRhPjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxUZXh0SW5kaWNhdG9yRGF0YT46OmRl
Y29kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDb25jbHVkZUVkaXREYXRhSW50ZXJhY3Rpb24p
OgorCiAyMDE3LTAzLTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFRleHRJbmRpY2F0b3Igc2hvdWxkIHN1cHBvcnQgYSBtb2RlIHdoZXJlIHNlbGVj
dGlvbiByZWN0cyBhcmUgdXNlZCB0byBzaXplIHRoZSBzbmFwc2hvdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA4ODQ4YzBmMDJjYS4u
YjQ5M2M1ZjU0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCkBAIC0yMDQ4LDYgKzIwNDgsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8VGV4
dEluZGljYXRvckRhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVGV4dEluZGlj
YQogICAgIGVuY29kZXIgPDwgdGV4dEluZGljYXRvckRhdGEudGV4dFJlY3RzSW5Cb3VuZGluZ1Jl
Y3RDb29yZGluYXRlczsKICAgICBlbmNvZGVyIDw8IHRleHRJbmRpY2F0b3JEYXRhLmNvbnRlbnRJ
bWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAgIGVuY29k
ZXIgPDwgdGV4dEluZGljYXRvckRhdGEuY29udGVudEltYWdlU2NhbGVGYWN0b3I7CisgICAgZW5j
b2RlciA8PCB0ZXh0SW5kaWNhdG9yRGF0YS5lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3I7CiAgICAg
ZW5jb2Rlci5lbmNvZGVFbnVtKHRleHRJbmRpY2F0b3JEYXRhLnByZXNlbnRhdGlvblRyYW5zaXRp
b24pOwogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRleHRJbmRpY2F0b3JE
YXRhLm9wdGlvbnMpOwogCkBAIC0yMDczLDYgKzIwNzQsOSBAQCBib29sIEFyZ3VtZW50Q29kZXI8
VGV4dEluZGljYXRvckRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVGV4dEluZGljYXRv
ckRhdAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGV4dEluZGljYXRvckRhdGEuY29udGVudElt
YWdlU2NhbGVGYWN0b3IpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHRleHRJbmRpY2F0b3JEYXRhLmVzdGltYXRlZEJhY2tncm91bmRDb2xvcikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHRleHRJ
bmRpY2F0b3JEYXRhLnByZXNlbnRhdGlvblRyYW5zaXRpb24pKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQppbmRleCBlMDg2MTJkNmM4MS4uZDZjMzJlMDRlYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTYz
MSwxMCArNjMxLDEwIEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29uY2x1ZGVFZGl0RGF0YUludGVyYWN0
aW9uKCkKIHsKICAgICBzdGQ6Om9wdGlvbmFsPFRleHRJbmRpY2F0b3JEYXRhPiB0ZXh0SW5kaWNh
dG9yRGF0YTsKIAotICAgIHN0YXRpYyBhdXRvIGRlZmF1bHRFZGl0RHJhZ1RleHRJbmRpY2F0b3JP
cHRpb25zID0gVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVTbmFwc2hvdE9mQWxsVmlzaWJsZUNv
bnRlbnRXaXRob3V0U2VsZWN0aW9uIHwgVGV4dEluZGljYXRvck9wdGlvbkRvTm90Q2xpcFRvVmlz
aWJsZVJlY3QgfCBUZXh0SW5kaWNhdG9yT3B0aW9uUGFpbnRBbGxDb250ZW50IHwgVGV4dEluZGlj
YXRvck9wdGlvbkluY2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiB8IFRleHRJbmRp
Y2F0b3JPcHRpb25QYWludEJhY2tncm91bmRzIHwgVGV4dEluZGljYXRvck9wdGlvblVzZVNlbGVj
dGlvblJlY3RGb3JTaXppbmcgfCBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVkZVNuYXBzaG90V2l0
aFNlbGVjdGlvbkhpZ2hsaWdodDsKKyAgICBzdGF0aWMgYXV0byBkZWZhdWx0RWRpdERhdGFJbnRl
cmFjdGlvblRleHRJbmRpY2F0b3JPcHRpb25zID0gVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVT
bmFwc2hvdE9mQWxsVmlzaWJsZUNvbnRlbnRXaXRob3V0U2VsZWN0aW9uIHwgVGV4dEluZGljYXRv
ck9wdGlvbkRvTm90Q2xpcFRvVmlzaWJsZVJlY3QgfCBUZXh0SW5kaWNhdG9yT3B0aW9uUGFpbnRB
bGxDb250ZW50IHwgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hl
c1NlbGVjdGlvbiB8IFRleHRJbmRpY2F0b3JPcHRpb25QYWludEJhY2tncm91bmRzIHwgVGV4dElu
ZGljYXRvck9wdGlvbkNvbXB1dGVFc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3J8IFRleHRJbmRpY2F0
b3JPcHRpb25Vc2VTZWxlY3Rpb25SZWN0Rm9yU2l6aW5nIHwgVGV4dEluZGljYXRvck9wdGlvbklu
Y2x1ZGVTbmFwc2hvdFdpdGhTZWxlY3Rpb25IaWdobGlnaHQ7CiAgICAgYXV0byYgZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIGlmIChh
dXRvIHJhbmdlID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFu
Z2UoKSkgewotICAgICAgICBpZiAoYXV0byB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6
Y3JlYXRlV2l0aFJhbmdlKCpyYW5nZSwgZGVmYXVsdEVkaXREcmFnVGV4dEluZGljYXRvck9wdGlv
bnMsIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lKSkKKyAgICAgICAg
aWYgKGF1dG8gdGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZSgq
cmFuZ2UsIGRlZmF1bHRFZGl0RGF0YUludGVyYWN0aW9uVGV4dEluZGljYXRvck9wdGlvbnMsIFRl
eHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lKSkKICAgICAgICAgICAgIHRl
eHRJbmRpY2F0b3JEYXRhID0gdGV4dEluZGljYXRvci0+ZGF0YSgpOwogICAgIH0KIAotLSAKMi4x
MS4wIChBcHBsZSBHaXQtODApCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304946</attachid>
            <date>2017-03-20 13:49:46 -0700</date>
            <delta_ts>2017-03-21 13:47:05 -0700</delta_ts>
            <desc>Rebased on master</desc>
            <filename>0001-Teach-TextIndicator-to-estimate-the-background-color.patch</filename>
            <type>text/plain</type>
            <size>15277</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">RnJvbSA0ZjgxZTExM2Q4MTdiYTlhM2JkMTFmYTM1ZTQyZTZkNDY4ZDA2OWRkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBXZW5zb24gSHNpZWggPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CkRhdGU6IFN1biwgMTkgTWFyIDIwMTcgMTg6MDQ6MzcgLTA3MDAKU3ViamVjdDogW1BBVENIXSBU
ZWFjaCBUZXh0SW5kaWNhdG9yIHRvIGVzdGltYXRlIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRo
ZQogZ2l2ZW4gUmFuZ2UgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
OTg2OQogPHJkYXI6Ly9wcm9ibGVtLzMxMTI3MjcyPgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCgpTb3VyY2UvV2ViQ29yZToKCkludHJvZHVjZXMgYSBzaW1wbGUgaGV1cmlzdGljIHRvIGNv
bXB1dGUgYSBiYWNrZ3JvdW5kIGNvbG9yIHRoYXQgaXMgYXBwcm9wcmlhdGUgdG8gdXNlIGFzIGEg
Ym9yZGVyIHN1cnJvdW5kaW5nCnRoZSBzbmFwc2hvdCBvZiB0aGUgZ2l2ZW4gUmFuZ2UuIFRoaXMg
d29yayBpcyBvbmx5IGNhcnJpZWQgb3V0IGlmIFRleHRJbmRpY2F0b3JPcHRpb25Db21wdXRlRXN0
aW1hdGVkQmFja2dyb3VuZENvbG9yCmlzIHNwZWNpZmllZC4gVGhlIGRldGFpbHMgb2YgaG93IHRo
aXMgYmFja2dyb3VuZCBjb2xvciBpcyBlc3RpbWF0ZWQgKGFzIHdlbGwgYXMgd2hlbiB0byBmYWxs
IGJhY2spIGNhbiBiZSBpbXByb3ZlZAppbiBzZXZlcmFsIHdheXMgKG9uZSBpZGVhIGlzIHRvIHNh
bXBsZSBjb2xvcnMgYWxvbmcgdGhlIGVkZ2Ugb2YgdGhlIHNuYXBzaG90KS4gRm9yIHRoZSB0aW1l
IGJlaW5nLCB0aGlzIHBhdGNoCm5haXZlbHkgd2Fsa3MgdXAgdGhlIHJlbmRlciB0cmVlIGluIHNl
YXJjaCBvZiBlbmNsb3NpbmcgcGFyZW50IHJlbmRlcmVycyB0aGF0IGhhdmUgYmFja2dyb3VuZCBj
b2xvcnMuIElmIGFueQpyZW5kZXJlcnMgaGF2ZSBhIHN0eWxlIHRoYXQgaXMgZGVlbWVkIHRvbyBj
b21wbGV4IHRvIGNhcHR1cmUgaW4gYSBzaW5nbGUgYmFja2dyb3VuZCBjb2xvciwgdGhlbiBmYWxs
IGJhY2sgdG8gdGhlCmJhc2UgZG9jdW1lbnQgYmFja2dyb3VuZCBjb2xvcjsgb3RoZXJ3aXNlLCB0
aGUgZXN0aW1hdGVkIGJhY2tncm91bmQgY29sb3IgaXMgdGhlIHJlc3VsdCBvZiBibGVuZGluZyB0
aGVzZQpiYWNrZ3JvdW5kIGNvbG9ycyB0b2dldGhlci4KCiogcGFnZS9UZXh0SW5kaWNhdG9yLmNw
cDoKKFdlYkNvcmU6OnN0eWxlQ29udGFpbnNDb21wbGV4QmFja2dyb3VuZCk6CgpCYWlsIG91dCBv
ZiB0aGUgYmFja2dyb3VuZCBjb2xvciBjb2RlcGF0aCBpZiB0aGUgcmVuZGVyZXIgaGFzIGJhY2tk
cm9wIGZpbHRlcnMsIGhhcyBhIGJhY2tncm91bmQgaW1hZ2UsIG9yIHVzZXMKYSBub24tbm9ybWFs
IGJsZW5kIG1vZGUuCgooV2ViQ29yZTo6ZmFsbGJhY2tCYWNrZ3JvdW5kQ29sb3JGb3JUZXh0U2Vs
ZWN0aW9uKToKKFdlYkNvcmU6OmVzdGltYXRlZEJhY2tncm91bmRDb2xvckZvclJhbmdlKToKKFdl
YkNvcmU6OmluaXRpYWxpemVJbmRpY2F0b3IpOgoqIHBhZ2UvVGV4dEluZGljYXRvci5oOgoKU291
cmNlL1dlYktpdC9tYWM6CgpQbHVtYiB0aGUgZXN0aW1hdGVkIGJhY2tncm91bmQgY29sb3IgZm9y
IFdlYktpdDEgY2xpZW50cyB0aHJvdWdoIGEgbmV3IHByb3BlcnR5IGluIFdlYlVJVGV4dEluZGlj
YXRvckRhdGEuCgoqIFdlYlZpZXcvV2ViVmlldy5tbToKKC1bV2ViVUlUZXh0SW5kaWNhdG9yRGF0
YSBpbml0V2l0aEltYWdlOnRleHRJbmRpY2F0b3JEYXRhOnNjYWxlOl0pOgooLVtXZWJVSVRleHRJ
bmRpY2F0b3JEYXRhIGRlYWxsb2NdKToKKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CgpTb3Vy
Y2UvV2ViS2l0MjoKClNlbmQgdGhlIGVzdGltYXRlZCBiYWNrZ3JvdW5kIGNvbG9yIG92ZXIgWFBD
LCBhbmQgYWRvcHQgVGV4dEluZGljYXRvck9wdGlvbkNvbXB1dGVFc3RpbWF0ZWRCYWNrZ3JvdW5k
Q29sb3Igd2hlbgpzbmFwc2hvdHRpbmcgYWZ0ZXIgcGVyZm9ybWluZyBhbiBlZGl0IGRhdGEgaW50
ZXJhY3Rpb24uCgoqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgooSVBDOjpBcmd1
bWVudENvZGVyPFRleHRJbmRpY2F0b3JEYXRhPjo6ZW5jb2RlKToKKElQQzo6QXJndW1lbnRDb2Rl
cjxUZXh0SW5kaWNhdG9yRGF0YT46OmRlY29kZSk6CiogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tOgooV2ViS2l0OjpXZWJQYWdlOjpkaWRDb25jbHVkZUVkaXREYXRhSW50ZXJh
Y3Rpb24pOgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgMjggKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0
b3IuY3BwICAgICAgICAgICAgICB8IDUzICsrKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5oICAgICAgICAgICAgICAgIHwgIDUgKysKIFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgIHwgMTUgKysrKysr
CiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gICAgICAgICAgICAgICB8ICA1
ICsrCiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggICAgICAgICB8
ICAyICsKIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgMTcgKysrKysrKwogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAgICAgfCAgNCArKwogLi4uL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tICAgfCAgNCArLQogOSBmaWxlcyBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9ucygrKSwg
MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjU5MTRkYWZlMWIuLjYzN2Q5NjMxYzZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTctMDMtMTkgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgVGVhY2ggVGV4dEluZGljYXRvciB0byBl
c3RpbWF0ZSB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgZ2l2ZW4gUmFuZ2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTg2OQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzExMjcyNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlcyBhIHNpbXBsZSBoZXVyaXN0aWMgdG8gY29tcHV0
ZSBhIGJhY2tncm91bmQgY29sb3IgdGhhdCBpcyBhcHByb3ByaWF0ZSB0byB1c2UgYXMgYSBib3Jk
ZXIgc3Vycm91bmRpbmcKKyAgICAgICAgdGhlIHNuYXBzaG90IG9mIHRoZSBnaXZlbiBSYW5nZS4g
VGhpcyB3b3JrIGlzIG9ubHkgY2FycmllZCBvdXQgaWYgVGV4dEluZGljYXRvck9wdGlvbkNvbXB1
dGVFc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IKKyAgICAgICAgaXMgc3BlY2lmaWVkLiBUaGUgZGV0
YWlscyBvZiBob3cgdGhpcyBiYWNrZ3JvdW5kIGNvbG9yIGlzIGVzdGltYXRlZCAoYXMgd2VsbCBh
cyB3aGVuIHRvIGZhbGwgYmFjaykgY2FuIGJlIGltcHJvdmVkCisgICAgICAgIGluIHNldmVyYWwg
d2F5cyAob25lIGlkZWEgaXMgdG8gc2FtcGxlIGNvbG9ycyBhbG9uZyB0aGUgZWRnZSBvZiB0aGUg
c25hcHNob3QpLiBGb3IgdGhlIHRpbWUgYmVpbmcsIHRoaXMgcGF0Y2gKKyAgICAgICAgbmFpdmVs
eSB3YWxrcyB1cCB0aGUgcmVuZGVyIHRyZWUgaW4gc2VhcmNoIG9mIGVuY2xvc2luZyBwYXJlbnQg
cmVuZGVyZXJzIHRoYXQgaGF2ZSBiYWNrZ3JvdW5kIGNvbG9ycy4gSWYgYW55CisgICAgICAgIHJl
bmRlcmVycyBoYXZlIGEgc3R5bGUgdGhhdCBpcyBkZWVtZWQgdG9vIGNvbXBsZXggdG8gY2FwdHVy
ZSBpbiBhIHNpbmdsZSBiYWNrZ3JvdW5kIGNvbG9yLCB0aGVuIGZhbGwgYmFjayB0byB0aGUKKyAg
ICAgICAgYmFzZSBkb2N1bWVudCBiYWNrZ3JvdW5kIGNvbG9yOyBvdGhlcndpc2UsIHRoZSBlc3Rp
bWF0ZWQgYmFja2dyb3VuZCBjb2xvciBpcyB0aGUgcmVzdWx0IG9mIGJsZW5kaW5nIHRoZXNlCisg
ICAgICAgIGJhY2tncm91bmQgY29sb3JzIHRvZ2V0aGVyLgorCisgICAgICAgICogcGFnZS9UZXh0
SW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlQ29udGFpbnNDb21wbGV4QmFj
a2dyb3VuZCk6CisKKyAgICAgICAgQmFpbCBvdXQgb2YgdGhlIGJhY2tncm91bmQgY29sb3IgY29k
ZXBhdGggaWYgdGhlIHJlbmRlcmVyIGhhcyBiYWNrZHJvcCBmaWx0ZXJzLCBoYXMgYSBiYWNrZ3Jv
dW5kIGltYWdlLCBvciB1c2VzCisgICAgICAgIGEgbm9uLW5vcm1hbCBibGVuZCBtb2RlLgorCisg
ICAgICAgIChXZWJDb3JlOjpmYWxsYmFja0JhY2tncm91bmRDb2xvckZvclRleHRTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6ZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yRm9yUmFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUluZGljYXRvcik6CisgICAgICAgICogcGFnZS9U
ZXh0SW5kaWNhdG9yLmg6CisKIDIwMTctMDMtMjAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQcmVwYXJlIFNvY2tldFN0cmVhbUhhbmRsZSBm
b3IgYmVpbmcgY3JlYXRlZCBmcm9tIFdLMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9UZXh0SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5j
cHAKaW5kZXggZDU3YjY4ZGVhMjIuLjQzOTZhM2QzNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4
dEluZGljYXRvci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAj
aW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAi
UmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogCiAjaWYgUExBVEZP
Uk0oSU9TKQpAQCAtMjAwLDggKzIwMSw2MCBAQCBzdGF0aWMgdm9pZCBnZXRTZWxlY3Rpb25SZWN0
c0ZvclJhbmdlKFZlY3RvcjxGbG9hdFJlY3Q+JiByZXN1bHRpbmdSZWN0cywgY29uc3QgUgogCiAj
ZW5kaWYKIAorc3RhdGljIGJvb2wgc3R5bGVDb250YWluc0NvbXBsZXhCYWNrZ3JvdW5kKGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkKK3sKKyAgICBpZiAoc3R5bGUuaGFzQmxlbmRNb2RlKCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKHN0eWxlLmhhc0JhY2tncm91bmRJbWFnZSgp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChzdHlsZS5oYXNCYWNrZHJvcEZpbHRl
cigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworc3Rh
dGljIENvbG9yIGVzdGltYXRlZEJhY2tncm91bmRDb2xvckZvclJhbmdlKGNvbnN0IFJhbmdlJiBy
YW5nZSwgY29uc3QgRnJhbWUmIGZyYW1lKQoreworICAgIGF1dG8gZXN0aW1hdGVkQmFja2dyb3Vu
ZENvbG9yID0gZnJhbWUudmlldygpID8gZnJhbWUudmlldygpLT5kb2N1bWVudEJhY2tncm91bmRD
b2xvcigpIDogQ29sb3I6OnRyYW5zcGFyZW50OworCisgICAgUmVuZGVyRWxlbWVudCogcmVuZGVy
ZXIgPSBudWxscHRyOworICAgIGF1dG8gY29tbW9uQW5jZXN0b3IgPSByYW5nZS5jb21tb25BbmNl
c3RvckNvbnRhaW5lcigpOworICAgIHdoaWxlIChjb21tb25BbmNlc3RvcikgeworICAgICAgICBp
ZiAoaXM8UmVuZGVyRWxlbWVudD4oY29tbW9uQW5jZXN0b3ItPnJlbmRlcmVyKCkpKSB7CisgICAg
ICAgICAgICByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGNvbW1vbkFuY2VzdG9y
LT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNv
bW1vbkFuY2VzdG9yID0gY29tbW9uQW5jZXN0b3ItPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQo
KTsKKyAgICB9CisKKyAgICBhdXRvIGJvdW5kaW5nUmVjdEZvclJhbmdlID0gSW50UmVjdChyYW5n
ZS5hYnNvbHV0ZUJvdW5kaW5nUmVjdCgpKTsKKyAgICBWZWN0b3I8Q29sb3I+IHBhcmVudFJlbmRl
cmVyQmFja2dyb3VuZENvbG9yczsKKyAgICBmb3IgKDsgISFyZW5kZXJlcjsgcmVuZGVyZXIgPSBy
ZW5kZXJlci0+cGFyZW50KCkpIHsKKyAgICAgICAgYXV0byBhYnNvbHV0ZUJvdW5kaW5nQm94ID0g
cmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgICAgIGlmICghYWJzb2x1
dGVCb3VuZGluZ0JveC5jb250YWlucyhib3VuZGluZ1JlY3RGb3JSYW5nZSkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwor
ICAgICAgICBpZiAoc3R5bGVDb250YWluc0NvbXBsZXhCYWNrZ3JvdW5kKHN0eWxlKSkKKyAgICAg
ICAgICAgIHJldHVybiBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3I7CisKKyAgICAgICAgaWYgKHN0
eWxlLmhhc0JhY2tncm91bmQoKSAmJiBzdHlsZS5iYWNrZ3JvdW5kQ29sb3IoKSAhPSBDb2xvcjo6
dHJhbnNwYXJlbnQpCisgICAgICAgICAgICBwYXJlbnRSZW5kZXJlckJhY2tncm91bmRDb2xvcnMu
YXBwZW5kKHN0eWxlLmJhY2tncm91bmRDb2xvcigpKTsKKyAgICB9CisgICAgcGFyZW50UmVuZGVy
ZXJCYWNrZ3JvdW5kQ29sb3JzLnJldmVyc2UoKTsKKyAgICBmb3IgKGF1dG8gYmFja2dyb3VuZENv
bG9yIDogcGFyZW50UmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3JzKQorICAgICAgICBlc3RpbWF0ZWRC
YWNrZ3JvdW5kQ29sb3IgPSBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IuYmxlbmQoYmFja2dyb3Vu
ZENvbG9yKTsKKworICAgIHJldHVybiBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3I7Cit9CisKIHN0
YXRpYyBib29sIGluaXRpYWxpemVJbmRpY2F0b3IoVGV4dEluZGljYXRvckRhdGEmIGRhdGEsIEZy
YW1lJiBmcmFtZSwgY29uc3QgUmFuZ2UmIHJhbmdlLCBGbG9hdFNpemUgbWFyZ2luLCBib29sIGlu
ZGljYXRlc0N1cnJlbnRTZWxlY3Rpb24pCiB7CisgICAgaWYgKGRhdGEub3B0aW9ucyAmIFRleHRJ
bmRpY2F0b3JPcHRpb25Db21wdXRlRXN0aW1hdGVkQmFja2dyb3VuZENvbG9yKQorICAgICAgICBk
YXRhLmVzdGltYXRlZEJhY2tncm91bmRDb2xvciA9IGVzdGltYXRlZEJhY2tncm91bmRDb2xvckZv
clJhbmdlKHJhbmdlLCBmcmFtZSk7CisKICAgICBWZWN0b3I8RmxvYXRSZWN0PiB0ZXh0UmVjdHM7
CiAKICAgICAvLyBGSVhNRSAoMTM4ODg4KTogSWRlYWxseSB3ZSB3b3VsZG4ndCByZW1vdmUgdGhl
IG1hcmdpbiBpbiB0aGlzIGNhc2UsIGJ1dCB3ZSBuZWVkIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dElu
ZGljYXRvci5oCmluZGV4IDI1YmE1YzM0MmFiLi5hNGZhMTY4YTBiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9UZXh0SW5kaWNhdG9yLmgKQEAgLTg4LDYgKzg4LDEwIEBAIGVudW0gVGV4dEluZGljYXRvck9w
dGlvbiA6IHVpbnQxNl90IHsKICAgICAvLyBzZWxlY3Rpb24gcmVjdHMgdGhhdCB3b3VsZCBlbmNs
b3NlIHRoZSBnaXZlbiBSYW5nZSBpbnN0ZWFkLgogICAgIC8vIEN1cnJlbnRseSwgdGhpcyBpcyBv
bmx5IHN1cHBvcnRlZCBvbiBpT1MuCiAgICAgVGV4dEluZGljYXRvck9wdGlvblVzZVNlbGVjdGlv
blJlY3RGb3JTaXppbmcgPSAxIDw8IDksCisKKyAgICAvLyBDb21wdXRlIGEgYmFja2dyb3VuZCBj
b2xvciB0byB1c2Ugd2hlbiByZW5kZXJpbmcgYSBwbGF0dGVyIGFyb3VuZCB0aGUgY29udGVudCBp
bWFnZSwgZmFsbGluZyBiYWNrIHRvIGEgZGVmYXVsdCBpZiB0aGUKKyAgICAvLyBjb250ZW50J3Mg
YmFja2dyb3VuZCBpcyB0b28gY29tcGxleCB0byBiZSBjYXB0dXJlZCBieSBhIHNpbmdsZSBjb2xv
ci4KKyAgICBUZXh0SW5kaWNhdG9yT3B0aW9uQ29tcHV0ZUVzdGltYXRlZEJhY2tncm91bmRDb2xv
ciA9IDEgPDwgMTAsCiB9OwogdHlwZWRlZiB1aW50MTZfdCBUZXh0SW5kaWNhdG9yT3B0aW9uczsK
IApAQCAtMTAwLDYgKzEwNCw3IEBAIHN0cnVjdCBUZXh0SW5kaWNhdG9yRGF0YSB7CiAgICAgUmVm
UHRyPEltYWdlPiBjb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0OwogICAgIFJlZlB0cjxJbWFnZT4g
Y29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbjsKICAgICBSZWZQdHI8SW1hZ2U+IGNvbnRlbnRJ
bWFnZTsKKyAgICBDb2xvciBlc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3I7CiAgICAgVGV4dEluZGlj
YXRvclByZXNlbnRhdGlvblRyYW5zaXRpb24gcHJlc2VudGF0aW9uVHJhbnNpdGlvbjsKICAgICBU
ZXh0SW5kaWNhdG9yT3B0aW9ucyBvcHRpb25zOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA4Njlh
ZjY4YzE1OS4uYzE2OTBmODlhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAor
MjAxNy0wMy0xOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAg
ICAgICBUZWFjaCBUZXh0SW5kaWNhdG9yIHRvIGVzdGltYXRlIHRoZSBiYWNrZ3JvdW5kIGNvbG9y
IG9mIHRoZSBnaXZlbiBSYW5nZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY5ODY5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMTEyNzI3Mj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQbHVtYiB0aGUg
ZXN0aW1hdGVkIGJhY2tncm91bmQgY29sb3IgZm9yIFdlYktpdDEgY2xpZW50cyB0aHJvdWdoIGEg
bmV3IHByb3BlcnR5IGluIFdlYlVJVGV4dEluZGljYXRvckRhdGEuCisKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlVJVGV4dEluZGljYXRvckRhdGEgaW5pdFdp
dGhJbWFnZTp0ZXh0SW5kaWNhdG9yRGF0YTpzY2FsZTpdKToKKyAgICAgICAgKC1bV2ViVUlUZXh0
SW5kaWNhdG9yRGF0YSBkZWFsbG9jXSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oOgorCiAyMDE3LTAzLTIwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1hjb2RlXSBJbmNyZW1lbnRhbCBidWlsZHMgb2YgV2ViS2l0TGVnYWN5IGFyZSBzbG93
IGJlY2F1c2Ugb2YgdGhlIFBvc3Rwcm9jZXNzIEhlYWRlcnMgcGhhc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQppbmRleCBkYWI4MGU3MWUxMy4uZWFiZTUzYjY4ZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTYzOCw2ICs2MzgsNyBAQCBwcml2YXRlOgog
QHN5bnRoZXNpemUgY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbj1fY29udGVudEltYWdlV2l0
aG91dFNlbGVjdGlvbjsKIEBzeW50aGVzaXplIGNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25S
ZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzPV9jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVj
dEluUm9vdFZpZXdDb29yZGluYXRlczsKIEBzeW50aGVzaXplIGNvbnRlbnRJbWFnZT1fY29udGVu
dEltYWdlOworQHN5bnRoZXNpemUgZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yPV9lc3RpbWF0ZWRC
YWNrZ3JvdW5kQ29sb3I7CiAKIEBlbmQKIApAQCAtNjcwLDYgKzY3MSw5IEBAIHByaXZhdGU6CiAg
ICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoaW5kaWNhdG9yRGF0YS5vcHRpb25zICYgVGV4dElu
ZGljYXRvck9wdGlvbkNvbXB1dGVFc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgIF9l
c3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IgPSBbW1tnZXRVSUNvbG9yQ2xhc3MoKSBhbGxvY10gaW5p
dFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoaW5kaWNhdG9yRGF0YS5lc3RpbWF0ZWRCYWNrZ3Jv
dW5kQ29sb3IpXSByZXRhaW5dOworCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTY5MCw2ICs2
OTQsNyBAQCBwcml2YXRlOgogICAgIFtfY29udGVudEltYWdlV2l0aEhpZ2hsaWdodCByZWxlYXNl
XTsKICAgICBbX2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24gcmVsZWFzZV07CiAgICAgW19j
b250ZW50SW1hZ2UgcmVsZWFzZV07CisgICAgW19lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IgcmVs
ZWFzZV07CiAgICAgCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDQwMTJlZjE2YWVjLi41M2M4NjQ5YTQyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaApAQCAtNTcsNiAr
NTcsNyBAQAogCiAjZGVmaW5lIFdFQktJVF9ESV9CTE9DSyAxCiAKK0BjbGFzcyBVSUNvbG9yOwog
QGNsYXNzIFVJSW1hZ2U7CiBAY2xhc3MgTlNFcnJvcjsKIEBjbGFzcyBXZWJGcmFtZTsKQEAgLTE5
Myw2ICsxOTQsNyBAQCB0eXBlZGVmIGVudW0gewogQHByb3BlcnR5IChub25hdG9taWMsIHJldGFp
bikgVUlJbWFnZSAqY29udGVudEltYWdlOwogQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikg
VUlJbWFnZSAqY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbjsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBhc3NpZ24pIENHUmVjdCBjb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9v
dFZpZXdDb29yZGluYXRlczsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFVJQ29sb3Ig
KmVzdGltYXRlZEJhY2tncm91bmRDb2xvcjsKIEBlbmQKIAogI2lmICFUQVJHRVRfT1NfSVBIT05F
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggMjkxNjg3MmU3NTcuLjQxZmIyOTg4YWMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTctMDMtMTkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CisKKyAgICAgICAgVGVhY2ggVGV4dEluZGljYXRvciB0byBlc3RpbWF0ZSB0aGUgYmFj
a2dyb3VuZCBjb2xvciBvZiB0aGUgZ2l2ZW4gUmFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTg2OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzExMjcyNzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2VuZCB0aGUgZXN0aW1hdGVkIGJhY2tncm91bmQgY29sb3Igb3ZlciBYUEMsIGFuZCBhZG9w
dCBUZXh0SW5kaWNhdG9yT3B0aW9uQ29tcHV0ZUVzdGltYXRlZEJhY2tncm91bmRDb2xvciB3aGVu
CisgICAgICAgIHNuYXBzaG90dGluZyBhZnRlciBwZXJmb3JtaW5nIGFuIGVkaXQgZGF0YSBpbnRl
cmFjdGlvbi4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFRleHRJbmRpY2F0b3JEYXRhPjo6ZW5jb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxUZXh0SW5kaWNhdG9yRGF0YT46OmRlY29kZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDb25jbHVkZUVkaXREYXRhSW50ZXJhY3Rpb24pOgorCiAy
MDE3LTAzLTIwICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAg
ICAgRml4IGEgcGFzdGUtbyBpbiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1D
b21wbGV0ZVBheW1lbnRTZXNzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDg4NDhjMGYwMmNhLi5iNDkzYzVmNTRiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTIw
NDgsNiArMjA0OCw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxUZXh0SW5kaWNhdG9yRGF0YT46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBUZXh0SW5kaWNhCiAgICAgZW5jb2RlciA8PCB0
ZXh0SW5kaWNhdG9yRGF0YS50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzOwogICAg
IGVuY29kZXIgPDwgdGV4dEluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlv
blJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXM7CiAgICAgZW5jb2RlciA8PCB0ZXh0SW5kaWNhdG9y
RGF0YS5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcjsKKyAgICBlbmNvZGVyIDw8IHRleHRJbmRpY2F0
b3JEYXRhLmVzdGltYXRlZEJhY2tncm91bmRDb2xvcjsKICAgICBlbmNvZGVyLmVuY29kZUVudW0o
dGV4dEluZGljYXRvckRhdGEucHJlc2VudGF0aW9uVHJhbnNpdGlvbik7CiAgICAgZW5jb2RlciA8
PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odGV4dEluZGljYXRvckRhdGEub3B0aW9ucyk7CiAKQEAg
LTIwNzMsNiArMjA3NCw5IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxUZXh0SW5kaWNhdG9yRGF0YT46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBUZXh0SW5kaWNhdG9yRGF0CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSh0ZXh0SW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGV4dEluZGlj
YXRvckRhdGEuZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0odGV4dEluZGljYXRvckRhdGEucHJlc2Vu
dGF0aW9uVHJhbnNpdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGUw
ODYxMmQ2YzgxLi5kNmMzMmUwNGVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNjMxLDEwICs2MzEsMTAgQEAgdm9p
ZCBXZWJQYWdlOjpkaWRDb25jbHVkZUVkaXREYXRhSW50ZXJhY3Rpb24oKQogewogICAgIHN0ZDo6
b3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IHRleHRJbmRpY2F0b3JEYXRhOwogCi0gICAgc3Rh
dGljIGF1dG8gZGVmYXVsdEVkaXREcmFnVGV4dEluZGljYXRvck9wdGlvbnMgPSBUZXh0SW5kaWNh
dG9yT3B0aW9uSW5jbHVkZVNuYXBzaG90T2ZBbGxWaXNpYmxlQ29udGVudFdpdGhvdXRTZWxlY3Rp
b24gfCBUZXh0SW5kaWNhdG9yT3B0aW9uRG9Ob3RDbGlwVG9WaXNpYmxlUmVjdCB8IFRleHRJbmRp
Y2F0b3JPcHRpb25QYWludEFsbENvbnRlbnQgfCBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVkZU1h
cmdpbklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9uIHwgVGV4dEluZGljYXRvck9wdGlvblBhaW50QmFj
a2dyb3VuZHMgfCBUZXh0SW5kaWNhdG9yT3B0aW9uVXNlU2VsZWN0aW9uUmVjdEZvclNpemluZyB8
IFRleHRJbmRpY2F0b3JPcHRpb25JbmNsdWRlU25hcHNob3RXaXRoU2VsZWN0aW9uSGlnaGxpZ2h0
OworICAgIHN0YXRpYyBhdXRvIGRlZmF1bHRFZGl0RGF0YUludGVyYWN0aW9uVGV4dEluZGljYXRv
ck9wdGlvbnMgPSBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVkZVNuYXBzaG90T2ZBbGxWaXNpYmxl
Q29udGVudFdpdGhvdXRTZWxlY3Rpb24gfCBUZXh0SW5kaWNhdG9yT3B0aW9uRG9Ob3RDbGlwVG9W
aXNpYmxlUmVjdCB8IFRleHRJbmRpY2F0b3JPcHRpb25QYWludEFsbENvbnRlbnQgfCBUZXh0SW5k
aWNhdG9yT3B0aW9uSW5jbHVkZU1hcmdpbklmUmFuZ2VNYXRjaGVzU2VsZWN0aW9uIHwgVGV4dElu
ZGljYXRvck9wdGlvblBhaW50QmFja2dyb3VuZHMgfCBUZXh0SW5kaWNhdG9yT3B0aW9uQ29tcHV0
ZUVzdGltYXRlZEJhY2tncm91bmRDb2xvcnwgVGV4dEluZGljYXRvck9wdGlvblVzZVNlbGVjdGlv
blJlY3RGb3JTaXppbmcgfCBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVkZVNuYXBzaG90V2l0aFNl
bGVjdGlvbkhpZ2hsaWdodDsKICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKGF1dG8gcmFuZ2UgPSBmcmFtZS5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpKSB7Ci0gICAgICAgIGlm
IChhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UoKnJh
bmdlLCBkZWZhdWx0RWRpdERyYWdUZXh0SW5kaWNhdG9yT3B0aW9ucywgVGV4dEluZGljYXRvclBy
ZXNlbnRhdGlvblRyYW5zaXRpb246Ok5vbmUpKQorICAgICAgICBpZiAoYXV0byB0ZXh0SW5kaWNh
dG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCpyYW5nZSwgZGVmYXVsdEVkaXRE
YXRhSW50ZXJhY3Rpb25UZXh0SW5kaWNhdG9yT3B0aW9ucywgVGV4dEluZGljYXRvclByZXNlbnRh
dGlvblRyYW5zaXRpb246Ok5vbmUpKQogICAgICAgICAgICAgdGV4dEluZGljYXRvckRhdGEgPSB0
ZXh0SW5kaWNhdG9yLT5kYXRhKCk7CiAgICAgfQogCi0tIAoyLjExLjAgKEFwcGxlIEdpdC04MCkK
Cg==
</data>
<flag name="review"
          id="326428"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>