<?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>52582</bug_id>
          
          <creation_ts>2011-01-17 08:37:49 -0800</creation_ts>
          <short_desc>WebView should paint directly into a GraphicsLayer when in accelerated compositing mode</short_desc>
          <delta_ts>2011-01-17 17:52:40 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Adam Roben (:aroben)">aroben</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>335347</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-17 08:37:49 -0800</bug_when>
    <thetext>WebView should paint directly into a GraphicsLayer when in accelerated compositing mode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335348</commentid>
    <comment_count>1</comment_count>
      <attachid>79179</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-17 08:42:54 -0800</bug_when>
    <thetext>Created attachment 79179
Paint directly into a GraphicsLayer when using accelerated compositing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335403</commentid>
    <comment_count>2</comment_count>
      <attachid>79179</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-17 10:56:50 -0800</bug_when>
    <thetext>Comment on attachment 79179
Paint directly into a GraphicsLayer when using accelerated compositing

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        Remove special-cased support for providing content for the root layer
&gt; +
&gt; +        Clients will just have to provide content through the normal
&gt; +        GraphicsLayer channels now!
&gt; +
&gt; +        Support for &lt;http://webkit.org/b/52582&gt; WebView should paint directly
&gt; +        into a GraphicsLayer when in accelerated compositing mode
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).

The order of these paragraphs is backwards.

&gt; WebKit/win/ChangeLog:23
&gt; +        Paint directly into a GraphicsLayer when using accelerated compositing
&gt; +
&gt; +        Before this patch, we were painting into our normal backing store
&gt; +        HBITMAP, wrapping it in a CGImage, and handing it off to Core
&gt; +        Animation. This had at least two disadvantages:
&gt; +           1) The bitmap could be modified while Core Animation was using it.
&gt; +           2) It introduced extra complexity.
&gt; +
&gt; +        When entering accelerated compositing mode, WebView now creates a
&gt; +        GraphicsLayer to draw into. This GraphicsLayer sits between the root
&gt; +        layer (owned by WKCACFLayerRenderer) and the RenderView&apos;s layer. When
&gt; +        WebView invalidates, it just calls setNeedsDisplayInRect on its
&gt; +        GraphicsLayer. When WebView paints, it just tells its
&gt; +        WKCACFLayerRenderer to paint, which will call back to WebView to draw
&gt; +        into the GraphicsLayer if it has a dirty region. This is very similar
&gt; +        to the current implementation of LayerBackedDrawingArea in WebKit2.
&gt; +
&gt; +        Fixes &lt;http://webkit.org/b/52582&gt; WebView should paint directly into a
&gt; +        GraphicsLayer when in accelerated compositing mode
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).

Backwards paragraphs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335611</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-17 17:52:40 -0800</bug_when>
    <thetext>Committed r75987: &lt;http://trac.webkit.org/changeset/75987&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79179</attachid>
            <date>2011-01-17 08:42:54 -0800</date>
            <delta_ts>2011-01-17 10:56:49 -0800</delta_ts>
            <desc>Paint directly into a GraphicsLayer when using accelerated compositing</desc>
            <filename>bug-52582-20110117114305.patch</filename>
            <type>text/plain</type>
            <size>26228</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2OTU4YTQyYmIxNmQ5ZmY2MWE5OWNhNjE0M2NlODA4OWUyMzY4Y2EyLi41
Y2Q0OGI3NzU2OGJiNzRmMGZlMzcxMTFjMGZiYmJhZjdiYTdmMzU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMzUgQEAKIDIwMTEtMDEtMTcgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgog
CisgICAgICAgIFJlbW92ZSBzcGVjaWFsLWNhc2VkIHN1cHBvcnQgZm9yIHByb3ZpZGluZyBjb250
ZW50IGZvciB0aGUgcm9vdCBsYXllcgorCisgICAgICAgIENsaWVudHMgd2lsbCBqdXN0IGhhdmUg
dG8gcHJvdmlkZSBjb250ZW50IHRocm91Z2ggdGhlIG5vcm1hbAorICAgICAgICBHcmFwaGljc0xh
eWVyIGNoYW5uZWxzIG5vdyEKKworICAgICAgICBTdXBwb3J0IGZvciA8aHR0cDovL3dlYmtpdC5v
cmcvYi81MjU4Mj4gV2ViVmlldyBzaG91bGQgcGFpbnQgZGlyZWN0bHkKKyAgICAgICAgaW50byBh
IEdyYXBoaWNzTGF5ZXIgd2hlbiBpbiBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBtb2RlCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vV0tDQUNGTGF5ZXJSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
S0NBQ0ZMYXllclJlbmRlcmVyOjpXS0NBQ0ZMYXllclJlbmRlcmVyKTogUmVtb3ZlZAorICAgICAg
ICBpbml0aWFsaXphdGlvbiBvZiBtX2JhY2tpbmdTdG9yZURpcnR5LCB3aGljaCBoYXMgaXRzZWxm
IGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OldLQ0FDRkxheWVyUmVuZGVyZXI6OnNl
dE5lZWRzRGlzcGxheSk6IE1vdmVkIGNvZGUgdG8gc2NoZWR1bGUKKyAgICAgICAgYSBzeW5jIGZy
b20gaGVyZSB0byBzeW5jQ29tcG9zaXRpbmdTdGF0ZVNvb24uIFdlIG9ubHkgbmVlZCB0byBjYWxs
CisgICAgICAgIHJlbmRlclNvb24gaWYgd2UgZG9uJ3QgY2FsbCBzeW5jQ29tcG9zaXRpbmdTdGF0
ZVNvb247IHRoZSBsYXR0ZXIKKyAgICAgICAgZnVuY3Rpb24gY2FsbHMgdGhlIGZvcm1lci4KKyAg
ICAgICAgKFdlYkNvcmU6OldLQ0FDRkxheWVyUmVuZGVyZXI6OnBhaW50KTogUmVtb3ZlZCBjb2Rl
IHRvIGhhbmRsZQorICAgICAgICBtX2JhY2tpbmdTdG9yZURpcnR5LiBXZSBkb24ndCB3YW50IHRv
IGtub3cgYW55dGhpbmcgYWJvdXQgY2xpZW50cycKKyAgICAgICAgYmFja2luZyBzdG9yZXMuCisg
ICAgICAgIChXZWJDb3JlOjpXS0NBQ0ZMYXllclJlbmRlcmVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0
ZVNvb24pOiBBZGRlZC4gQ29kZQorICAgICAgICBjYW1lIGZyb20gc2V0TmVlZHNEaXNwbGF5Lgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyUmVuZGVyZXIuaDoK
KyAgICAgICAgUmVtb3ZlZCBzZXRSb290Q29udGVudHNbQW5kRGlzcGxheV0sIHNldEJhY2tpbmdT
dG9yZURpcnR5LCBhbmQKKyAgICAgICAgbV9iYWNraW5nU3RvcmVEaXJ0eS4gTWFkZSBwYWludCgp
IHB1YmxpYyBzbyB0aGF0IGNsaWVudHMgY2FuIGZvcmNlIGEKKyAgICAgICAgc3luY2hyb25vdXMg
cmVuZGVyIChlLmcuLCB3aGVuIGhhbmRsaW5nIFdNX1BBSU5UKS4KKworMjAxMS0wMS0xNyAgQWRh
bSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CisKICAgICAgICAgUmVtb3ZlIGNvbnRleHRzIGZy
b20gV0tDQUNGQ29udGV4dEZsdXNoZXIgYmVmb3JlIGRlc3Ryb3lpbmcgdGhlbQogCiAgICAgICAg
IFdlIGFyZW4ndCByZWFsbHkgdXNpbmcgV0tDQUNGQ29udGV4dEZsdXNoZXIgZm9yIGFueXRoaW5n
IHVzZWZ1bCBhdCB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9XS0NBQ0ZMYXllclJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllclJlbmRlcmVyLmNwcAppbmRleCA0ZDc3ZmJkZWFhY2Zl
ZTRlM2Y3NTVjMGI5ZTY2NWYwNDRlYTkzNGYzLi5kN2U3ZTEzNTc0ZmU3NjM0Njc4NTBmMWU2MGI2
ZWQ1MTllZDQxNTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vV0tDQUNGTGF5ZXJSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVyUmVuZGVyZXIuY3BwCkBAIC0xODcsNyArMTg3LDYg
QEAgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6V0tDQUNGTGF5ZXJSZW5kZXJlcihXS0NBQ0ZMYXllclJl
bmRlcmVyQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2NvbnRleHQod2tDQUNGQ29udGV4dENyZWF0
ZSgpKQogICAgICwgbV9ob3N0V2luZG93KDApCiAgICAgLCBtX3JlbmRlclRpbWVyKHRoaXMsICZX
S0NBQ0ZMYXllclJlbmRlcmVyOjpyZW5kZXJUaW1lckZpcmVkKQotICAgICwgbV9iYWNraW5nU3Rv
cmVEaXJ0eShmYWxzZSkKICAgICAsIG1fbXVzdFJlc2V0TG9zdERldmljZUJlZm9yZVJlbmRlcmlu
ZyhmYWxzZSkKICAgICAsIG1fc3luY0xheWVyQ2hhbmdlcyhmYWxzZSkKIHsKQEAgLTIzOSwyMCAr
MjM4LDYgQEAgdm9pZCBXS0NBQ0ZMYXllclJlbmRlcmVyOjphZGRQZW5kaW5nQW5pbWF0ZWRMYXll
cihQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbGEKICAgICBtX3BlbmRpbmdBbmltYXRlZExh
eWVycy5hZGQobGF5ZXIpOwogfQogCi12b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnNldFJvb3RD
b250ZW50cyhDR0ltYWdlUmVmIGltYWdlKQotewotICAgIEFTU0VSVChtX3Jvb3RMYXllcik7Ci0g
ICAgbV9yb290TGF5ZXItPnNldENvbnRlbnRzKGltYWdlKTsKLSAgICByZW5kZXJTb29uKCk7Ci19
Ci0KLXZvaWQgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6c2V0Um9vdENvbnRlbnRzQW5kRGlzcGxheShD
R0ltYWdlUmVmIGltYWdlKQotewotICAgIEFTU0VSVChtX3Jvb3RMYXllcik7Ci0gICAgbV9yb290
TGF5ZXItPnNldENvbnRlbnRzKGltYWdlKTsKLSAgICBwYWludCgpOwotfQotCiB2b2lkIFdLQ0FD
RkxheWVyUmVuZGVyZXI6OnNldFJvb3RDaGlsZExheWVyKFBsYXRmb3JtQ0FMYXllciogbGF5ZXIp
CiB7CiAgICAgbV9yb290TGF5ZXItPnJlbW92ZUFsbFN1YmxheWVycygpOwpAQCAtMjY5LDEyICsy
NTQsMTMgQEAgdm9pZCBXS0NBQ0ZMYXllclJlbmRlcmVyOjpsYXllclRyZWVEaWRDaGFuZ2UoKQog
CiB2b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6OnNldE5lZWRzRGlzcGxheShib29sIHN5bmMpCiB7
Ci0gICAgaWYgKCFtX3N5bmNMYXllckNoYW5nZXMgJiYgc3luYykKLSAgICAgICAgbV9zeW5jTGF5
ZXJDaGFuZ2VzID0gdHJ1ZTsKLQogICAgIEFTU0VSVChtX3Jvb3RMYXllcik7CiAgICAgbV9yb290
TGF5ZXItPnNldE5lZWRzRGlzcGxheSgwKTsKLSAgICByZW5kZXJTb29uKCk7CisKKyAgICBpZiAo
c3luYykKKyAgICAgICAgc3luY0NvbXBvc2l0aW5nU3RhdGVTb29uKCk7CisgICAgZWxzZQorICAg
ICAgICByZW5kZXJTb29uKCk7CiB9CiAKIGJvb2wgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6Y3JlYXRl
UmVuZGVyZXIoKQpAQCAtNDIzLDE1ICs0MDksNiBAQCB2b2lkIFdLQ0FDRkxheWVyUmVuZGVyZXI6
OnBhaW50KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtX2JhY2tpbmdTdG9y
ZURpcnR5KSB7Ci0gICAgICAgIC8vIElmIHRoZSBiYWNraW5nIHN0b3JlIGlzIHN0aWxsIGRpcnR5
IHdoZW4gd2UgYXJlIGFib3V0IHRvIGRyYXcgdGhlCi0gICAgICAgIC8vIGNvbXBvc2l0ZWQgY29u
dGVudCwgd2UgbmVlZCB0byBmb3JjZSB0aGUgd2luZG93IHRvIHBhaW50IGludG8gdGhlCi0gICAg
ICAgIC8vIGJhY2tpbmcgc3RvcmUuIFRoZSBwYWludCB3aWxsIG9ubHkgcGFpbnQgdGhlIGRpcnR5
IHJlZ2lvbiB0aGF0Ci0gICAgICAgIC8vIGlmIGJlaW5nIHRyYWNrZWQgaW4gV2ViVmlldy4KLSAg
ICAgICAgVXBkYXRlV2luZG93KG1faG9zdFdpbmRvdyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KICAgICBWZWN0b3I8Q0dSZWN0PiBkaXJ0eVJlY3RzOwogICAgIGdldERpcnR5UmVjdHMobV9o
b3N0V2luZG93LCBkaXJ0eVJlY3RzKTsKICAgICByZW5kZXIoZGlydHlSZWN0cyk7CkBAIC01NDYs
NiArNTIzLDEyIEBAIHZvaWQgV0tDQUNGTGF5ZXJSZW5kZXJlcjo6cmVuZGVyU29vbigpCiAgICAg
ICAgIG1fcmVuZGVyVGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCit2b2lkIFdLQ0FDRkxheWVy
UmVuZGVyZXI6OnN5bmNDb21wb3NpdGluZ1N0YXRlU29vbigpCit7CisgICAgbV9zeW5jTGF5ZXJD
aGFuZ2VzID0gdHJ1ZTsKKyAgICByZW5kZXJTb29uKCk7Cit9CisKIENHUmVjdCBXS0NBQ0ZMYXll
clJlbmRlcmVyOjpib3VuZHMoKSBjb25zdAogewogICAgIFJFQ1QgY2xpZW50UmVjdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllclJl
bmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUNGTGF5
ZXJSZW5kZXJlci5oCmluZGV4IGFmZjFmODMzYjdiOWI0MWNiZjFkNWZiMGEzZDExNDBiYTk5YTEw
ZWUuLjJkYTZhYzVhYThhNGRlMGU3MmMxNTNmMThmOTBjNTk0NjJhOTU2MGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBQ0ZMYXllclJlbmRlcmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FDRkxheWVy
UmVuZGVyZXIuaApAQCAtNzAsMTcgKzcwLDE2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29s
IGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKTsKIAotICAgIHZvaWQgc2V0Um9vdENv
bnRlbnRzKENHSW1hZ2VSZWYpOwotICAgIHZvaWQgc2V0Um9vdENvbnRlbnRzQW5kRGlzcGxheShD
R0ltYWdlUmVmKTsKICAgICB2b2lkIHNldFJvb3RDaGlsZExheWVyKFBsYXRmb3JtQ0FMYXllciop
OwogICAgIHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdlKCk7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3Bs
YXkoYm9vbCBzeW5jID0gZmFsc2UpOwogICAgIHZvaWQgc2V0SG9zdFdpbmRvdyhIV05EIHdpbmRv
dykgeyBtX2hvc3RXaW5kb3cgPSB3aW5kb3c7IH0KLSAgICB2b2lkIHNldEJhY2tpbmdTdG9yZURp
cnR5KGJvb2wgZGlydHkpIHsgbV9iYWNraW5nU3RvcmVEaXJ0eSA9IGRpcnR5OyB9CiAgICAgYm9v
bCBjcmVhdGVSZW5kZXJlcigpOwogICAgIHZvaWQgZGVzdHJveVJlbmRlcmVyKCk7CisgICAgdm9p
ZCBwYWludCgpOwogICAgIHZvaWQgcmVzaXplKCk7CiAgICAgdm9pZCByZW5kZXJTb29uKCk7Cisg
ICAgdm9pZCBzeW5jQ29tcG9zaXRpbmdTdGF0ZVNvb24oKTsKIAogcHJvdGVjdGVkOgogICAgIFBs
YXRmb3JtQ0FMYXllciogcm9vdExheWVyKCkgY29uc3Q7CkBAIC0xMDIsNyArMTAxLDYgQEAgcHJp
dmF0ZToKICAgICBib29sIHJlc2V0RGV2aWNlKFJlc2V0UmVhc29uKTsKIAogICAgIHZvaWQgcmVu
ZGVyKGNvbnN0IFZlY3RvcjxDR1JlY3Q+JiBkaXJ0eVJlY3RzID0gVmVjdG9yPENHUmVjdD4oKSk7
Ci0gICAgdm9pZCBwYWludCgpOwogCiAgICAgV0tDQUNGTGF5ZXJSZW5kZXJlckNsaWVudCogbV9j
bGllbnQ7CiAgICAgYm9vbCBtX21pZ2h0QmVBYmxlVG9DcmVhdGVEZXZpY2VMYXRlcjsKQEAgLTEx
Miw3ICsxMTAsNiBAQCBwcml2YXRlOgogICAgIFdLQ0FDRkNvbnRleHQqIG1fY29udGV4dDsKICAg
ICBIV05EIG1faG9zdFdpbmRvdzsKICAgICBUaW1lcjxXS0NBQ0ZMYXllclJlbmRlcmVyPiBtX3Jl
bmRlclRpbWVyOwotICAgIGJvb2wgbV9iYWNraW5nU3RvcmVEaXJ0eTsKICAgICBib29sIG1fbXVz
dFJlc2V0TG9zdERldmljZUJlZm9yZVJlbmRlcmluZzsKICAgICBib29sIG1fc3luY0xheWVyQ2hh
bmdlczsKICAgICBIYXNoU2V0PFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+ID4gbV9wZW5kaW5nQW5p
bWF0ZWRMYXllcnM7CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93
aW4vQ2hhbmdlTG9nCmluZGV4IGM4MGYwOTExYzM1OTc5ZGQwZjM1M2JkOGZlMDBjZTY1OWExODc2
NWQuLjMyZjY5YTViOTg4ZDIzMTA5MDRkNjRiNDI4MjU1MGZlZTgyMTA2OGMgMTAwNjQ0Ci0tLSBh
L1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODYgQEAKKzIwMTEtMDEtMTcgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFBhaW50IGRpcmVjdGx5IGludG8gYSBHcmFwaGljc0xheWVyIHdoZW4gdXNpbmcgYWNj
ZWxlcmF0ZWQgY29tcG9zaXRpbmcKKworICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwgd2Ugd2Vy
ZSBwYWludGluZyBpbnRvIG91ciBub3JtYWwgYmFja2luZyBzdG9yZQorICAgICAgICBIQklUTUFQ
LCB3cmFwcGluZyBpdCBpbiBhIENHSW1hZ2UsIGFuZCBoYW5kaW5nIGl0IG9mZiB0byBDb3JlCisg
ICAgICAgIEFuaW1hdGlvbi4gVGhpcyBoYWQgYXQgbGVhc3QgdHdvIGRpc2FkdmFudGFnZXM6Cisg
ICAgICAgICAgIDEpIFRoZSBiaXRtYXAgY291bGQgYmUgbW9kaWZpZWQgd2hpbGUgQ29yZSBBbmlt
YXRpb24gd2FzIHVzaW5nIGl0LgorICAgICAgICAgICAyKSBJdCBpbnRyb2R1Y2VkIGV4dHJhIGNv
bXBsZXhpdHkuCisKKyAgICAgICAgV2hlbiBlbnRlcmluZyBhY2NlbGVyYXRlZCBjb21wb3NpdGlu
ZyBtb2RlLCBXZWJWaWV3IG5vdyBjcmVhdGVzIGEKKyAgICAgICAgR3JhcGhpY3NMYXllciB0byBk
cmF3IGludG8uIFRoaXMgR3JhcGhpY3NMYXllciBzaXRzIGJldHdlZW4gdGhlIHJvb3QKKyAgICAg
ICAgbGF5ZXIgKG93bmVkIGJ5IFdLQ0FDRkxheWVyUmVuZGVyZXIpIGFuZCB0aGUgUmVuZGVyVmll
dydzIGxheWVyLiBXaGVuCisgICAgICAgIFdlYlZpZXcgaW52YWxpZGF0ZXMsIGl0IGp1c3QgY2Fs
bHMgc2V0TmVlZHNEaXNwbGF5SW5SZWN0IG9uIGl0cworICAgICAgICBHcmFwaGljc0xheWVyLiBX
aGVuIFdlYlZpZXcgcGFpbnRzLCBpdCBqdXN0IHRlbGxzIGl0cworICAgICAgICBXS0NBQ0ZMYXll
clJlbmRlcmVyIHRvIHBhaW50LCB3aGljaCB3aWxsIGNhbGwgYmFjayB0byBXZWJWaWV3IHRvIGRy
YXcKKyAgICAgICAgaW50byB0aGUgR3JhcGhpY3NMYXllciBpZiBpdCBoYXMgYSBkaXJ0eSByZWdp
b24uIFRoaXMgaXMgdmVyeSBzaW1pbGFyCisgICAgICAgIHRvIHRoZSBjdXJyZW50IGltcGxlbWVu
dGF0aW9uIG9mIExheWVyQmFja2VkRHJhd2luZ0FyZWEgaW4gV2ViS2l0Mi4KKworICAgICAgICBG
aXhlcyA8aHR0cDovL3dlYmtpdC5vcmcvYi81MjU4Mj4gV2ViVmlldyBzaG91bGQgcGFpbnQgZGly
ZWN0bHkgaW50byBhCisgICAgICAgIEdyYXBoaWNzTGF5ZXIgd2hlbiBpbiBhY2NlbGVyYXRlZCBj
b21wb3NpdGluZyBtb2RlCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAo
V2ViQ2hyb21lQ2xpZW50OjphdHRhY2hSb290R3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJD
aHJvbWVDbGllbnQ6OnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclN5bmMpOgorICAgICAgICBVcGRh
dGVkIGZvciBXZWJWaWV3IGNoYW5nZXMuCisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYlZpZXc6OnJlcGFpbnQpOiBXaGVuIHVzaW5nIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5n
LCBqdXN0IGludmFsaWRhdGUKKyAgICAgICAgb3VyIGJhY2tpbmcgbGF5ZXIuIFRoaXMgbWF0Y2hl
cyB0aGUgYmVoYXZpb3Igb2YgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYS4KKyAgICAgICAgKFdlYlZp
ZXc6OmRlbGV0ZUJhY2tpbmdTdG9yZSk6IFJlbW92ZWQgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcg
Y29kZS4KKyAgICAgICAgVGhlIFdLQ0FDRkxheWVyUmVuZGVyZXIgZG9lc24ndCBuZWVkIHRvIGtu
b3cgYWJvdXQgb3VyIGJhY2tpbmcgc3RvcmUKKyAgICAgICAgYW55bW9yZTsgd2UgZG9uJ3QgdXNl
IGl0IGF0IGFsbCB3aGVuIGluIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIG1vZGUuCisgICAgICAg
IChXZWJWaWV3OjphZGRUb0RpcnR5UmVnaW9uKTogV2hlbiB1c2luZyBhY2NlbGVyYXRlZCBjb21w
b3NpdGluZywganVzdAorICAgICAgICBpbnZhbGlkYXRlIG91ciBiYWNraW5nIGxheWVyLgorICAg
ICAgICAoV2ViVmlldzo6c2Nyb2xsQmFja2luZ1N0b3JlKTogQWRkZWQgYW4gYXNzZXJ0aW9uIHRo
YXQgdGhpcyBpc24ndAorICAgICAgICBjYWxsZWQgaW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcg
bW9kZS4KKyAgICAgICAgKFdlYlZpZXc6OnNpemVDaGFuZ2VkKTogVXBkYXRlIG91ciBiYWNraW5n
IGxheWVyJ3Mgc2l6ZSwgdG9vLCBhbmQKKyAgICAgICAgaW52YWxpZGF0ZSBpdC4KKyAgICAgICAg
KFdlYlZpZXc6OnVwZGF0ZUJhY2tpbmdTdG9yZSk6IEFkZGVkIGFuIGFzc2VydGlvbiB0aGF0IHRo
aXMgaXNuJ3QKKyAgICAgICAgY2FsbGVkIGluIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIG1vZGUu
CisgICAgICAgIChXZWJWaWV3OjpwYWludCk6IElmIHdlJ3JlIGluIGFjY2VsZXJhdGVkIGNvbXBv
c2l0aW5nIG1vZGUsIHN5bmMgb3VyCisgICAgICAgIGNvbXBvc2l0aW5nIHN0YXRlLiBJZiB3ZSdy
ZSAqc3RpbGwqIGluIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIG1vZGUsCisgICAgICAgIGp1c3Qg
dGVsbCBvdXIgV0tDQUNGTGF5ZXJSZW5kZXJlciB0byBwYWludCBhbmQgY2xlYXIgb3VyIGRpcnR5
IHJlZ2lvbi4KKyAgICAgICAgKFRoZSBsYXRlciBjaGFuZ2VzIGluIHRoaXMgZnVuY3Rpb24gYXJl
IGp1c3QgdW4taW5kZW50aW5nIGNvZGUgdGhhdAorICAgICAgICB1c2VkIHRvIGJlIGluc2lkZSBh
biBpZi4pCisKKyAgICAgICAgKFdlYlZpZXc6OnBhaW50SW50b0JhY2tpbmdTdG9yZSk6CisgICAg
ICAgIChXZWJWaWV3OjpwYWludEludG9XaW5kb3cpOgorICAgICAgICBBZGRlZCBhc3NlcnRpb25z
IHRoYXQgdGhlc2UgYXJlbid0IGNhbGxlZCBpbiBhY2NlbGVyYXRlZCBjb21wb3NpdGluZworICAg
ICAgICBtb2RlLgorCisgICAgICAgIChXZWJWaWV3OjpXZWJWaWV3V25kUHJvYyk6IFVwZGF0ZWQg
V01fWFBfVEhFTUVDSEFOR0VEIGhhbmRsaW5nIGZvcgorICAgICAgICByZW1vdmFsIG9mIHNldFJv
b3RMYXllck5lZWRzRGlzcGxheS4KKyAgICAgICAgKFdlYlZpZXc6OnNldFJvb3RDaGlsZExheWVy
KTogQ2hhbmdlZCB0byB0YWtlIGEgR3JhcGhpY3NMYXllci4gV2Ugbm93CisgICAgICAgIHNldCB0
aGUgbGF5ZXIgYXMgYSBjaGlsZCBvZiBvdXIgb3duIGJhY2tpbmcgbGF5ZXIuCisgICAgICAgIChX
ZWJWaWV3OjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKTogSnVzdCBjYWxsIHRocm91Z2gg
dG8KKyAgICAgICAgV0tDQUNGTGF5ZXJSZW5kZXJlci4KKyAgICAgICAgKFdlYlZpZXc6OnNldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmcpOiBDcmVhdGUgb3VyIGJhY2tpbmcgbGF5ZXIgYW5kIHNldAor
ICAgICAgICBpdCBhcyB0aGUgY2hpbGQgb2YgV0tDQUNGTGF5ZXJSZW5kZXJlcidzIHJvb3QgbGF5
ZXIuCisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlBbmltYXRpb25TdGFydGVkKTogQWRkZWQuIFdl
IG5ldmVyIGV4cGVjdCB0aGlzCisgICAgICAgIEdyYXBoaWNzTGF5ZXJDbGllbnQgb3ZlcnJpZGUg
dG8gYmUgY2FsbGVkLCBhcyB3ZSBkb24ndCB1c2UgYW5pbWF0aW9ucworICAgICAgICBvbiBvdXIg
YmFja2luZyBsYXllci4KKyAgICAgICAgKFdlYlZpZXc6Om5vdGlmeVN5bmNSZXF1aXJlZCk6IEFk
ZGVkLiBKdXN0IHNjaGVkdWxlIGEgc3luYy4KKyAgICAgICAgKFdlYlZpZXc6OnBhaW50Q29udGVu
dHMpOiBBZGRlZC4gSnVzdCBjbGlwIGFuZCBwYWludCEKKworICAgICAgICAoV2ViVmlldzo6c2hv
d0RlYnVnQm9yZGVycyk6CisgICAgICAgIChXZWJWaWV3OjpzaG93UmVwYWludENvdW50ZXIpOgor
ICAgICAgICBBZGRlZC4gVGhlc2UganVzdCBjYWxsIHRocm91Z2ggdG8gU2V0dGluZ3MuCisKKyAg
ICAgICAgKFdlYlZpZXc6OnN5bmNDb21wb3NpdGluZ1N0YXRlKTogQ2hhbmdlZCB0byBmaXJzdCB1
cGRhdGUgbGF5b3V0LCB0aGVuCisgICAgICAgIHN5bmMgc3RhdGUgZm9yIG91ciBiYWNraW5nIGxh
eWVyLCB0aGVuIHN5bmMgV2ViQ29yZSdzIHN0YXRlLiBUaGlzCisgICAgICAgIG1hdGNoZXMgTGF5
ZXJCYWNrZWREcmF3aW5nQXJlYS4KKworICAgICAgICAqIFdlYlZpZXcuaDogV2ViVmlldyBub3cg
aW1wbGVtZW50cyB0aGUgR3JhcGhpY3NMYXllckNsaWVudCBpbnRlcmZhY2UuCisgICAgICAgIFJl
bW92ZWQgc2V0Um9vdExheWVyTmVlZHNEaXNwbGF5OyBpdCdzIGJlZW4gcmVwbGFjZWQgYnkgY2Fs
bGluZworICAgICAgICBzZXROZWVkc0Rpc3BsYXkgb24gb3VyIGJhY2tpbmcgbGF5ZXIgYW5kIGNh
bGxpbmcKKyAgICAgICAgc3luY0NvbXBvc2l0aW5nU3RhdGVTb29uIG9uIFdLQ0FDRkxheWVyUmVu
ZGVyZXIgYXMgbmVlZGVkLiBSZW1vdmVkCisgICAgICAgIHVwZGF0ZVJvb3RMYXllckNvbnRlbnRz
OyB0aGF0IGZ1bmN0aW9uIHdhcyB1c2VkIHRvIHBhc3Mgb3VyIGJhY2tpbmcKKyAgICAgICAgc3Rv
cmUgdG8gQ29yZSBBbmltYXRpb24sIHdoaWNoIHdlIG5vIGxvbmdlciBkby4gQWRkZWQgbV9iYWNr
aW5nTGF5ZXIuCisKIDIwMTEtMDEtMTAgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNv
bT4KIAogICAgICAgICBUcnkgdG8gZml4IFdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQgYS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggM2U3M2M2MjZlM2Y4Y2MwNzU0
Y2Y5M2YxMmFiOWU0YTgyMzYwYTYxZi4uNjQ2MGI0YWQwMjkxM2E4NWRkZTY5ZmY1OGEwNTRhYjYw
OTY2MzRiYiAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcApAQCAtODIxLDEyICs4MjEsMTIgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldExhc3RT
ZXRDdXJzb3JUb0N1cnJlbnRDdXJzb3IoKQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjphdHRhY2hSb290R3JhcGhpY3NMYXllcihGcmFtZSog
ZnJhbWUsIEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCiB7Ci0gICAgbV93ZWJWaWV3LT5z
ZXRSb290Q2hpbGRMYXllcihncmFwaGljc0xheWVyID8gUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9y
bUNBTGF5ZXIoZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpKSA6IDApOworICAgIG1fd2Vi
Vmlldy0+c2V0Um9vdENoaWxkTGF5ZXIoZ3JhcGhpY3NMYXllcik7CiB9CiAKIHZvaWQgV2ViQ2hy
b21lQ2xpZW50OjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKCkKIHsKLSAgICBtX3dlYlZp
ZXctPnNldFJvb3RMYXllck5lZWRzRGlzcGxheSh0cnVlKTsKKyAgICBtX3dlYlZpZXctPnNjaGVk
dWxlQ29tcG9zaXRpbmdMYXllclN5bmMoKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJL
aXQvd2luL1dlYlZpZXcuY3BwIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCBmMGQ1MDRl
ZjljYjQ5ZDEwNWVkZTBhMzE4NDNjOTZkYTQ5ZGEwNjNmLi43Y2YzNmQ5ZWNjM2Y1NWY3NjZhYWZh
ZTE3ZmYyMWU4YmRmZjUwNzllIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisr
KyBiL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTcyMiw4ICs3MjIsMTIgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjbG9zZSgpCiB2b2lkIFdlYlZpZXc6OnJlcGFpbnQo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgd2luZG93UmVjdCwgYm9vbCBjb250ZW50Q2hhbmdlZCwg
Ym9vbCBpbW1lZGlhdGUsIGJvb2wgcmVwYWludENvbnRlbnRPbmx5KQogewogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKLSAgICBpZiAoaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkp
Ci0gICAgICAgIHNldFJvb3RMYXllck5lZWRzRGlzcGxheSgpOworICAgIGlmIChpc0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmcoKSkgeworICAgICAgICAvLyBUaGUgY29udGVudENoYW5nZWQsIGltbWVk
aWF0ZSwgYW5kIHJlcGFpbnRDb250ZW50T25seSBwYXJhbWV0ZXJzIGFyZSBhbGwgYmFzZWQgb24g
YSBub24tCisgICAgICAgIC8vIGNvbXBvc2l0aW5nIHBhaW50aW5nL3Njcm9sbGluZyBtb2RlbC4K
KyAgICAgICAgYWRkVG9EaXJ0eVJlZ2lvbih3aW5kb3dSZWN0KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KICNlbmRpZgogCiAgICAgaWYgKCFyZXBhaW50Q29udGVudE9ubHkpIHsKQEAgLTc1MCwx
MSArNzU0LDYgQEAgdm9pZCBXZWJWaWV3OjpkZWxldGVCYWNraW5nU3RvcmUoKQogICAgIH0KICAg
ICBtX2JhY2tpbmdTdG9yZUJpdG1hcC5jbGVhcigpOwogICAgIG1fYmFja2luZ1N0b3JlRGlydHlS
ZWdpb24uY2xlYXIoKTsKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYg
KG1fbGF5ZXJSZW5kZXJlcikKLSAgICAgICAgbV9sYXllclJlbmRlcmVyLT5zZXRCYWNraW5nU3Rv
cmVEaXJ0eShmYWxzZSk7Ci0jZW5kaWYKLQogICAgIG1fYmFja2luZ1N0b3JlU2l6ZS5jeCA9IG1f
YmFja2luZ1N0b3JlU2l6ZS5jeSA9IDA7CiB9CiAKQEAgLTc4NSw2ICs3ODQsMTMgQEAgdm9pZCBX
ZWJWaWV3OjphZGRUb0RpcnR5UmVnaW9uKGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKICAgICAv
LyBidXQgaXQgd2FzIGJlaW5nIGhpdCBkdXJpbmcgb3VyIGxheW91dCB0ZXN0cywgYW5kIGlzIGJl
aW5nIGludmVzdGlnYXRlZCBpbgogICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvMjkzNTAuCiAK
KyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKGlzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZygpKSB7CisgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXROZWVkc0Rpc3BsYXlJ
blJlY3QoZGlydHlSZWN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAg
SFJHTiBuZXdSZWdpb24gPSA6OkNyZWF0ZVJlY3RSZ24oZGlydHlSZWN0LngoKSwgZGlydHlSZWN0
LnkoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJ0eVJlY3Qucmln
aHQoKSwgZGlydHlSZWN0LmJvdHRvbSgpKTsKICAgICBhZGRUb0RpcnR5UmVnaW9uKG5ld1JlZ2lv
bik7CkBAIC03OTIsNiArNzk4LDEwIEBAIHZvaWQgV2ViVmlldzo6YWRkVG9EaXJ0eVJlZ2lvbihj
b25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiAKIHZvaWQgV2ViVmlldzo6YWRkVG9EaXJ0eVJlZ2lv
bihIUkdOIG5ld1JlZ2lvbikKIHsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisg
ICAgQVNTRVJUKCFpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSk7CisjZW5kaWYKKwogICAgIExP
Q0FMX0dESV9DT1VOVEVSKDAsIF9fRlVOQ1RJT05fXyk7CiAKICAgICBpZiAobV9iYWNraW5nU3Rv
cmVEaXJ0eVJlZ2lvbikgewpAQCAtODAyLDE3ICs4MTIsMTYgQEAgdm9pZCBXZWJWaWV3OjphZGRU
b0RpcnR5UmVnaW9uKEhSR04gbmV3UmVnaW9uKQogICAgIH0gZWxzZQogICAgICAgICBtX2JhY2tp
bmdTdG9yZURpcnR5UmVnaW9uID0gUmVmQ291bnRlZEhSR046OmNyZWF0ZShuZXdSZWdpb24pOwog
Ci0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmIChtX2xheWVyUmVuZGVy
ZXIpCi0gICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0QmFja2luZ1N0b3JlRGlydHkodHJ1ZSk7
Ci0jZW5kaWYKLQogICAgIGlmIChtX3VpRGVsZWdhdGVQcml2YXRlKQogICAgICAgICBtX3VpRGVs
ZWdhdGVQcml2YXRlLT53ZWJWaWV3RGlkSW52YWxpZGF0ZSh0aGlzKTsKIH0KIAogdm9pZCBXZWJW
aWV3OjpzY3JvbGxCYWNraW5nU3RvcmUoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIGludCBkeCwgaW50
IGR5LCBjb25zdCBJbnRSZWN0JiBzY3JvbGxWaWV3UmVjdCwgY29uc3QgSW50UmVjdCYgY2xpcFJl
Y3QpCiB7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIEFTU0VSVCghaXNB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpOworI2VuZGlmCisKICAgICBMT0NBTF9HRElfQ09VTlRF
UigwLCBfX0ZVTkNUSU9OX18pOwogCiAgICAgLy8gSWYgdGhlcmUncyBubyBiYWNraW5nIHN0b3Jl
IHdlIGRvbid0IG5lZWQgdG8gdXBkYXRlIGl0CkBAIC04NjYsNiArODc1LDEwIEBAIHZvaWQgV2Vi
Vmlldzo6c2l6ZUNoYW5nZWQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKG1fbGF5ZXJSZW5kZXJlcikKICAgICAgICAgbV9s
YXllclJlbmRlcmVyLT5yZXNpemUoKTsKKyAgICBpZiAobV9iYWNraW5nTGF5ZXIpIHsKKyAgICAg
ICAgbV9iYWNraW5nTGF5ZXItPnNldFNpemUobmV3U2l6ZSk7CisgICAgICAgIG1fYmFja2luZ0xh
eWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICB9CiAjZW5kaWYKIH0KIApAQCAtOTEzLDYgKzky
NiwxMCBAQCBzdGF0aWMgdm9pZCBnZXRVcGRhdGVSZWN0cyhIUkdOIHJlZ2lvbiwgY29uc3QgSW50
UmVjdCYgZGlydHlSZWN0LCBWZWN0b3I8SW50UmVjdAogCiB2b2lkIFdlYlZpZXc6OnVwZGF0ZUJh
Y2tpbmdTdG9yZShGcmFtZVZpZXcqIGZyYW1lVmlldywgSERDIGRjLCBib29sIGJhY2tpbmdTdG9y
ZUNvbXBsZXRlbHlEaXJ0eSwgV2luZG93c1RvUGFpbnQgd2luZG93c1RvUGFpbnQpCiB7CisjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIEFTU0VSVCghaXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nKCkpOworI2VuZGlmCisKICAgICBMT0NBTF9HRElfQ09VTlRFUigwLCBfX0ZVTkNU
SU9OX18pOwogCiAgICAgSERDIHdpbmRvd0RDID0gMDsKQEAgLTk0NywxMCArOTY0LDYgQEAgdm9p
ZCBXZWJWaWV3Ojp1cGRhdGVCYWNraW5nU3RvcmUoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIEhEQyBk
YywgYm9vbCBiYWNraW5nU3RvcmUKICAgICAgICAgICAgIG1fdWlEZWxlZ2F0ZVByaXZhdGUtPndl
YlZpZXdQYWludGVkKHRoaXMpOwogCiAgICAgICAgIG1fYmFja2luZ1N0b3JlRGlydHlSZWdpb24u
Y2xlYXIoKTsKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgICAgIGlmICht
X2xheWVyUmVuZGVyZXIpCi0gICAgICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldEJhY2tpbmdT
dG9yZURpcnR5KGZhbHNlKTsKLSNlbmRpZgogICAgIH0KIAogICAgIGlmICghZGMpIHsKQEAgLTk2
NSw2ICs5NzgsMTkgQEAgdm9pZCBXZWJWaWV3OjpwYWludChIREMgZGMsIExQQVJBTSBvcHRpb25z
KQogewogICAgIExPQ0FMX0dESV9DT1VOVEVSKDAsIF9fRlVOQ1RJT05fXyk7CiAKKyNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
ZygpKSB7CisgICAgICAgIHN5bmNDb21wb3NpdGluZ1N0YXRlKCk7CisgICAgICAgIC8vIFN5bmNp
bmcgbWlnaHQgaGF2ZSB0YWtlbiB1cyBvdXQgb2YgY29tcG9zaXRpbmcgbW9kZS4KKyAgICAgICAg
aWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTog
V2UgbmVlZCB0byBwYWludCBpbnRvIGRjIChpZiBwcm92aWRlZCkuIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzUyNTc4PgorICAgICAgICAgICAgbV9sYXllclJlbmRlcmVyLT5wYWludCgpOworICAgICAg
ICAgICAgOjpWYWxpZGF0ZVJlY3QobV92aWV3V2luZG93LCAwKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNv
cmUobV9tYWluRnJhbWUpOwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm47CkBA
IC0xMDA5LDI1ICsxMDM1LDE4IEBAIHZvaWQgV2ViVmlldzo6cGFpbnQoSERDIGRjLCBMUEFSQU0g
b3B0aW9ucykKICAgICAvLyBVcGRhdGUgb3VyIGJhY2tpbmcgc3RvcmUgaWYgbmVlZGVkLgogICAg
IHVwZGF0ZUJhY2tpbmdTdG9yZShmcmFtZVZpZXcsIGJpdG1hcERDLCBiYWNraW5nU3RvcmVDb21w
bGV0ZWx5RGlydHksIHdpbmRvd3NUb1BhaW50KTsKIAotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKLSAgICBpZiAoIWlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKSB7Ci0jZW5kaWYK
LSAgICAgICAgLy8gTm93IHdlIGJsaXQgdGhlIHVwZGF0ZWQgYmFja2luZyBzdG9yZQotICAgICAg
ICBJbnRSZWN0IHdpbmRvd0RpcnR5UmVjdCA9IHJjUGFpbnQ7Ci0gICAgICAgIAotICAgICAgICAv
LyBBcHBseSB0aGUgc2FtZSBoZXVyaXN0aWMgZm9yIHRoaXMgdXBkYXRlIHJlZ2lvbiB0b28uCi0g
ICAgICAgIFZlY3RvcjxJbnRSZWN0PiBibGl0UmVjdHM7Ci0gICAgICAgIGlmIChyZWdpb24gJiYg
cmVnaW9uVHlwZSA9PSBDT01QTEVYUkVHSU9OKQotICAgICAgICAgICAgZ2V0VXBkYXRlUmVjdHMo
cmVnaW9uLmdldCgpLCB3aW5kb3dEaXJ0eVJlY3QsIGJsaXRSZWN0cyk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGJsaXRSZWN0cy5hcHBlbmQod2luZG93RGlydHlSZWN0KTsKKyAgICAvLyBO
b3cgd2UgYmxpdCB0aGUgdXBkYXRlZCBiYWNraW5nIHN0b3JlCisgICAgSW50UmVjdCB3aW5kb3dE
aXJ0eVJlY3QgPSByY1BhaW50OworICAgIAorICAgIC8vIEFwcGx5IHRoZSBzYW1lIGhldXJpc3Rp
YyBmb3IgdGhpcyB1cGRhdGUgcmVnaW9uIHRvby4KKyAgICBWZWN0b3I8SW50UmVjdD4gYmxpdFJl
Y3RzOworICAgIGlmIChyZWdpb24gJiYgcmVnaW9uVHlwZSA9PSBDT01QTEVYUkVHSU9OKQorICAg
ICAgICBnZXRVcGRhdGVSZWN0cyhyZWdpb24uZ2V0KCksIHdpbmRvd0RpcnR5UmVjdCwgYmxpdFJl
Y3RzKTsKKyAgICBlbHNlCisgICAgICAgIGJsaXRSZWN0cy5hcHBlbmQod2luZG93RGlydHlSZWN0
KTsKIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxpdFJlY3RzLnNpemUoKTsg
KytpKQotICAgICAgICAgICAgcGFpbnRJbnRvV2luZG93KGJpdG1hcERDLCBoZGMsIGJsaXRSZWN0
c1tpXSk7Ci0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIH0gZWxzZQotICAg
ICAgICB1cGRhdGVSb290TGF5ZXJDb250ZW50cygpOwotI2VuZGlmCisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGJsaXRSZWN0cy5zaXplKCk7ICsraSkKKyAgICAgICAgcGFpbnRJbnRvV2lu
ZG93KGJpdG1hcERDLCBoZGMsIGJsaXRSZWN0c1tpXSk7CiAKICAgICA6OlNlbGVjdE9iamVjdChi
aXRtYXBEQywgb2xkQml0bWFwKTsKICAgICA6OkRlbGV0ZURDKGJpdG1hcERDKTsKQEAgLTEwNDUs
NiArMTA2NCwxMCBAQCB2b2lkIFdlYlZpZXc6OnBhaW50KEhEQyBkYywgTFBBUkFNIG9wdGlvbnMp
CiAKIHZvaWQgV2ViVmlldzo6cGFpbnRJbnRvQmFja2luZ1N0b3JlKEZyYW1lVmlldyogZnJhbWVW
aWV3LCBIREMgYml0bWFwREMsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgV2luZG93c1RvUGFp
bnQgd2luZG93c1RvUGFpbnQpCiB7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
ICAgIEFTU0VSVCghaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpOworI2VuZGlmCisKICAgICBM
T0NBTF9HRElfQ09VTlRFUigwLCBfX0ZVTkNUSU9OX18pOwogCiAgICAgLy8gRklYTUU6IFdlIHdh
bnQgYW4gYXNzZXJ0IGhlcmUgc2F5aW5nIHRoYXQgdGhlIGRpcnR5UmVjdCBpcyBpbnNpZGUgdGhl
IGNsaWVuUmVjdCwKQEAgLTEwODQsNiArMTEwNywxMCBAQCB2b2lkIFdlYlZpZXc6OnBhaW50SW50
b0JhY2tpbmdTdG9yZShGcmFtZVZpZXcqIGZyYW1lVmlldywgSERDIGJpdG1hcERDLCBjb25zdCBJ
bgogCiB2b2lkIFdlYlZpZXc6OnBhaW50SW50b1dpbmRvdyhIREMgYml0bWFwREMsIEhEQyB3aW5k
b3dEQywgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogeworI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKKyAgICBBU1NFUlQoIWlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKTsKKyNl
bmRpZgorCiAgICAgTE9DQUxfR0RJX0NPVU5URVIoMCwgX19GVU5DVElPTl9fKTsKICNpZiBGTEFT
SF9XSU5ET1dfUkVEUkFXCiAgICAgT3duUHRyPEhCUlVTSD4gZ3JlZW5CcnVzaCA9IENyZWF0ZVNv
bGlkQnJ1c2goUkdCKDAsIDI1NSwgMCkpOwpAQCAtMjIwMSw3ICsyMjI4LDcgQEAgTFJFU1VMVCBD
QUxMQkFDSyBXZWJWaWV3OjpXZWJWaWV3V25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwg
V1BBUkFNIHdQYXJhbSwKICAgICAgICAgICAgICAgICA6OkludmFsaWRhdGVSZWN0KGhXbmQsICZ3
aW5kb3dSZWN0LCBmYWxzZSk7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAg
ICAgICAgICAgICAgIGlmICh3ZWJWaWV3LT5pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkKLSAg
ICAgICAgICAgICAgICAgICAgd2ViVmlldy0+c2V0Um9vdExheWVyTmVlZHNEaXNwbGF5KCk7Cisg
ICAgICAgICAgICAgICAgICAgIHdlYlZpZXctPm1fYmFja2luZ0xheWVyLT5zZXROZWVkc0Rpc3Bs
YXkoKTsKICNlbmRpZgogICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTYyMzEs
MTEgKzYyNTgsMTkgQEAgdm9pZCBXZWJWaWV3Ojpkb3dubG9hZFVSTChjb25zdCBLVVJMJiB1cmwp
CiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi12b2lkIFdlYlZpZXc6OnNl
dFJvb3RDaGlsZExheWVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCit2b2lkIFdl
YlZpZXc6OnNldFJvb3RDaGlsZExheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogewogICAgIHNl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcobGF5ZXIgPyB0cnVlIDogZmFsc2UpOwotICAgIGlmICht
X2xheWVyUmVuZGVyZXIpCi0gICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0Um9vdENoaWxkTGF5
ZXIobGF5ZXIpOworICAgIGlmICghbV9iYWNraW5nTGF5ZXIpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX2JhY2tpbmdMYXllci0+YWRkQ2hpbGQobGF5ZXIpOworfQorCit2b2lkIFdlYlZpZXc6OnNj
aGVkdWxlQ29tcG9zaXRpbmdMYXllclN5bmMoKQoreworICAgIGlmICghbV9sYXllclJlbmRlcmVy
KQorICAgICAgICByZXR1cm47CisgICAgbV9sYXllclJlbmRlcmVyLT5zeW5jQ29tcG9zaXRpbmdT
dGF0ZVNvb24oKTsKIH0KIAogdm9pZCBXZWJWaWV3OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
KGJvb2wgYWNjZWxlcmF0ZWQpCkBAIC02MjUyLDU1ICs2Mjg3LDI5IEBAIHZvaWQgV2ViVmlldzo6
c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhib29sIGFjY2VsZXJhdGVkKQogICAgICAgICAgICAg
QVNTRVJUKG1fdmlld1dpbmRvdyk7CiAgICAgICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldEhv
c3RXaW5kb3cobV92aWV3V2luZG93KTsKICAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+Y3Jl
YXRlUmVuZGVyZXIoKTsKKworICAgICAgICAgICAgbV9iYWNraW5nTGF5ZXIgPSBHcmFwaGljc0xh
eWVyOjpjcmVhdGUodGhpcyk7CisgICAgICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0RHJhd3ND
b250ZW50KHRydWUpOworICAgICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldENvbnRlbnRzT3Bh
cXVlKHRydWUpOworICAgICAgICAgICAgUkVDVCBjbGllbnRSZWN0OworICAgICAgICAgICAgOjpH
ZXRDbGllbnRSZWN0KG1fdmlld1dpbmRvdywgJmNsaWVudFJlY3QpOworICAgICAgICAgICAgbV9i
YWNraW5nTGF5ZXItPnNldFNpemUoSW50UmVjdChjbGllbnRSZWN0KS5zaXplKCkpOworICAgICAg
ICAgICAgbV9iYWNraW5nTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOworCisgICAgICAgICAgICBt
X2xheWVyUmVuZGVyZXItPnNldFJvb3RDaGlsZExheWVyKFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZv
cm1DQUxheWVyKG1fYmFja2luZ0xheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKworICAgICAgICAg
ICAgLy8gV2UgYXJlbid0IGdvaW5nIHRvIGJlIHVzaW5nIG91ciBiYWNraW5nIHN0b3JlIHdoaWxl
IHdlJ3JlIGluIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nCisgICAgICAgICAgICAvLyBtb2RlLiBC
dXQgZG9uJ3QgZGVsZXRlIGl0IGltbWVkaWF0ZWx5LCBpbiBjYXNlIHdlIHN3aXRjaCBvdXQgb2Yg
YWNjZWxlcmF0ZWQKKyAgICAgICAgICAgIC8vIGNvbXBvc2l0aW5nIG1vZGUgc29vbiAoZS5nLiwg
aWYgd2UncmUgb25seSBjb21wb3NpdGluZyBmb3IgYSA6aG92ZXIgYW5pbWF0aW9uKS4KKyAgICAg
ICAgICAgIGRlbGV0ZUJhY2tpbmdTdG9yZVNvb24oKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7
CiAgICAgICAgIG1fbGF5ZXJSZW5kZXJlciA9IDA7CisgICAgICAgIG1fYmFja2luZ0xheWVyID0g
MDsKICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBmYWxzZTsKICAgICB9CiB9
CiAKLXZvaWQgcmVsZWFzZUJhY2tpbmdTdG9yZUNhbGxiYWNrKHZvaWQqIGluZm8sIGNvbnN0IHZv
aWQqIGRhdGEsIHNpemVfdCBzaXplKQotewotICAgIC8vIFJlbGVhc2UgdGhlIGJhY2tpbmcgc3Rv
cmUgYml0bWFwIHByZXZpb3VzbHkgcmV0YWluZWQgYnkgdXBkYXRlUm9vdExheWVyQ29udGVudHMo
KS4KLSAgICBBU1NFUlQoaW5mbyk7Ci0gICAgaWYgKGluZm8pCi0gICAgICAgIHN0YXRpY19jYXN0
PFJlZkNvdW50ZWRIQklUTUFQKj4oaW5mbyktPmRlcmVmKCk7Ci19Ci0KLXZvaWQgV2ViVmlldzo6
dXBkYXRlUm9vdExheWVyQ29udGVudHMoKQotewotICAgIGlmICghbV9iYWNraW5nU3RvcmVCaXRt
YXAgfHwgIW1fbGF5ZXJSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gR2V0IHRo
ZSBiYWNraW5nIHN0b3JlIGludG8gYSBDR0ltYWdlCi0gICAgQklUTUFQIGJpdG1hcDsKLSAgICBH
ZXRPYmplY3QobV9iYWNraW5nU3RvcmVCaXRtYXAtPmhhbmRsZSgpLCBzaXplb2YoYml0bWFwKSwg
JmJpdG1hcCk7Ci0gICAgc2l6ZV90IGJtU2l6ZSA9IGJpdG1hcC5ibVdpZHRoQnl0ZXMgKiBiaXRt
YXAuYm1IZWlnaHQ7Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBjZ0RhdGEoQWRv
cHRDRiwKLSAgICAgICAgQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YShzdGF0aWNfY2FzdDx2
b2lkKj4obV9iYWNraW5nU3RvcmVCaXRtYXAuZ2V0KCkpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRtYXAuYm1CaXRzLCBibVNpemUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlbGVhc2VCYWNraW5nU3RvcmVDYWxsYmFjaykpOwotICAgIFJldGFpblB0cjxDR0NvbG9yU3Bh
Y2VSZWY+IHNwYWNlKEFkb3B0Q0YsIENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpKTsKLSAg
ICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gYmFja2luZ1N0b3JlSW1hZ2UoQWRvcHRDRiwgQ0dJbWFn
ZUNyZWF0ZShiaXRtYXAuYm1XaWR0aCwgYml0bWFwLmJtSGVpZ2h0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDgsIGJpdG1hcC5ibUJpdHNQaXhlbCwgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0bWFwLmJtV2lkdGhCeXRlcywgc3BhY2UuZ2V0
KCksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDR0JpdG1hcEJ5dGVP
cmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2dEYXRhLmdldCgpLCAwLCBmYWxzZSwgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkp
OwotCi0gICAgLy8gUmV0YWluIHRoZSBiYWNraW5nIHN0b3JlIGJpdG1hcCBzbyB0aGF0IGl0IGlz
IG5vdCBkZWxldGVkIGJ5IGRlbGV0ZUJhY2tpbmdTdG9yZSgpCi0gICAgLy8gd2hpbGUgc3RpbGwg
aW4gdXNlIHdpdGhpbiBDQS4gV2hlbiBDQSBpcyBkb25lIHdpdGggdGhlIGJpdG1hcCwgaXQgd2ls
bAotICAgIC8vIGNhbGwgcmVsZWFzZUJhY2tpbmdTdG9yZUNhbGxiYWNrKCksIHdoaWNoIHdpbGwg
cmVsZWFzZSB0aGUgYmFja2luZyBzdG9yZSBiaXRtYXAuCi0gICAgbV9iYWNraW5nU3RvcmVCaXRt
YXAtPnJlZigpOwotCi0gICAgLy8gSGFuZCB0aGUgQ0dJbWFnZSB0byBDQUNGIGZvciBjb21wb3Np
dGluZwotICAgIGlmIChtX25leHREaXNwbGF5SXNTeW5jaHJvbm91cykgewotICAgICAgICBtX2xh
eWVyUmVuZGVyZXItPnNldFJvb3RDb250ZW50c0FuZERpc3BsYXkoYmFja2luZ1N0b3JlSW1hZ2Uu
Z2V0KCkpOwotICAgICAgICBtX25leHREaXNwbGF5SXNTeW5jaHJvbm91cyA9IGZhbHNlOwotICAg
IH0gZWxzZQotICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldFJvb3RDb250ZW50cyhiYWNraW5n
U3RvcmVJbWFnZS5nZXQoKSk7Ci19Ci0KIHZvaWQgV2ViVmlldzo6bGF5ZXJSZW5kZXJlckJlY2Ft
ZVZpc2libGUoKQogewogICAgIG1fbGF5ZXJSZW5kZXJlci0+Y3JlYXRlUmVuZGVyZXIoKTsKQEAg
LTY0NTgsNiArNjQ2NywzOSBAQCBIUkVTVUxUIFdlYlZpZXc6Om5leHREaXNwbGF5SXNTeW5jaHJv
bm91cygpCiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCit2b2lkIFdlYlZp
ZXc6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgR3JhcGhpY3NMYXllciosIGRvdWJsZSkK
K3sKKyAgICAvLyBXZSBuZXZlciBzZXQgYW55IGFuaW1hdGlvbnMgb24gb3VyIGJhY2tpbmcgbGF5
ZXIuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgV2ViVmlldzo6bm90aWZ5
U3luY1JlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKQoreworICAgIHNjaGVkdWxlQ29tcG9z
aXRpbmdMYXllclN5bmMoKTsKK30KKwordm9pZCBXZWJWaWV3OjpwYWludENvbnRlbnRzKGNvbnN0
IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBoaWNzTGF5ZXJQ
YWludGluZ1BoYXNlLCBjb25zdCBJbnRSZWN0JiBpbkNsaXApCit7CisgICAgRnJhbWUqIGZyYW1l
ID0gY29yZShtX21haW5GcmFtZSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5jbGlwKGluQ2xpcCk7CisgICAgZnJh
bWUtPnZpZXcoKS0+cGFpbnQoJmNvbnRleHQsIGluQ2xpcCk7CisgICAgY29udGV4dC5yZXN0b3Jl
KCk7Cit9CisKK2Jvb2wgV2ViVmlldzo6c2hvd0RlYnVnQm9yZGVycygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2hvd0RlYnVnQm9yZGVycygpOworfQorCitib29s
IFdlYlZpZXc6OnNob3dSZXBhaW50Q291bnRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFn
ZS0+c2V0dGluZ3MoKS0+c2hvd1JlcGFpbnRDb3VudGVyKCk7Cit9CisKIGJvb2wgV2ViVmlldzo6
c2hvdWxkUmVuZGVyKCkgY29uc3QKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX21h
aW5GcmFtZSk7CkBAIC02NDc5LDggKzY1MjEsMjEgQEAgdm9pZCBXZWJWaWV3OjphbmltYXRpb25z
U3RhcnRlZChDRlRpbWVJbnRlcnZhbCB0KQogdm9pZCBXZWJWaWV3OjpzeW5jQ29tcG9zaXRpbmdT
dGF0ZSgpCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUobV9tYWluRnJhbWUpOwotICAg
IGlmIChjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT52aWV3KCkpCi0gICAgICAgIGNvcmVGcmFtZS0+
dmlldygpLT5zeW5jQ29tcG9zaXRpbmdTdGF0ZVJlY3Vyc2l2ZSgpOworICAgIGlmICghY29yZUZy
YW1lKQorICAgICAgICByZXR1cm47CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gY29yZUZyYW1lLT52
aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2JhY2tp
bmdMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgdmlldy0+dXBkYXRlTGF5b3V0QW5kU3R5
bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOworCisgICAgLy8gVXBkYXRpbmcgbGF5b3V0IG1pZ2h0IGhh
dmUgdGFrZW4gdXMgb3V0IG9mIGNvbXBvc2l0aW5nIG1vZGUuCisgICAgaWYgKG1fYmFja2luZ0xh
eWVyKQorICAgICAgICBtX2JhY2tpbmdMYXllci0+c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlz
TGF5ZXJPbmx5KCk7CisKKyAgICB2aWV3LT5zeW5jQ29tcG9zaXRpbmdTdGF0ZVJlY3Vyc2l2ZSgp
OwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViVmlldy5oIGIvV2ViS2l0
L3dpbi9XZWJWaWV3LmgKaW5kZXggMTkyYzA1Y2JhYzI4NDc1YWRlNjA3MzBkZDM5MzliMDE2NTcy
MmIxYi4uM2JkMjZmMGJiZGM2MmY5MDkzMjJlNmVlNTE2OTUxMzQzODAzOTg1YSAxMDA2NDQKLS0t
IGEvV2ViS2l0L3dpbi9XZWJWaWV3LmgKKysrIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmgKQEAgLTcw
LDYgKzcwLDcgQEAgY2xhc3MgV2ViVmlldwogICAgICwgcHVibGljIElEcm9wVGFyZ2V0CiAgICAg
LCBXZWJDb3JlOjpXaW5kb3dNZXNzYWdlTGlzdGVuZXIKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCisgICAgLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50CiAgICAgLCBXZWJD
b3JlOjpXS0NBQ0ZMYXllclJlbmRlcmVyQ2xpZW50CiAjZW5kaWYKIHsKQEAgLTkwNCwxMiArOTA1
LDggQEAgcHVibGljOgogICAgIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYp
OwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIHZvaWQgc2V0Um9vdExh
eWVyTmVlZHNEaXNwbGF5KGJvb2wgc3luYyA9IGZhbHNlKQotICAgIHsKLSAgICAgICAgaWYgKG1f
bGF5ZXJSZW5kZXJlcikKLSAgICAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0TmVlZHNEaXNw
bGF5KHN5bmMpOwotICAgIH0KLSAgICB2b2lkIHNldFJvb3RDaGlsZExheWVyKFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllciopOworICAgIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYygp
OworICAgIHZvaWQgc2V0Um9vdENoaWxkTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOwog
I2VuZGlmCiAKICAgICB2b2lkIGVudGVyRnVsbHNjcmVlbkZvck5vZGUoV2ViQ29yZTo6Tm9kZSop
OwpAQCAtOTQzLDYgKzk0MCwxMyBAQCBwcml2YXRlOgogICAgIERXT1JEIG1fbGFzdERyb3BFZmZl
Y3Q7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgLy8gR3JhcGhpY3NM
YXllckNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBkb3VibGUgdGltZSk7CisgICAgdmlydHVhbCB2b2lk
IG5vdGlmeVN5bmNSZXF1aXJlZChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CisgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllcios
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGlu
Z1BoYXNlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbkNsaXApOworICAgIHZpcnR1YWwgYm9v
bCBzaG93RGVidWdCb3JkZXJzKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNob3dSZXBhaW50
Q291bnRlcigpIGNvbnN0OworCiAgICAgLy8gV0tDQUNGTGF5ZXJSZW5kZXJlckNsaWVudAogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRSZW5kZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgYW5p
bWF0aW9uc1N0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2YWwpOwpAQCAtMTA1MiwxMCArMTA1NiwxMCBAQCBw
cm90ZWN0ZWQ6CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGJvb2wgaXNB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmc7IH0KICAgICB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoYm9vbCk7Ci0g
ICAgdm9pZCB1cGRhdGVSb290TGF5ZXJDb250ZW50cygpOwogICAgIHZvaWQgbGF5ZXJSZW5kZXJl
ckJlY2FtZVZpc2libGUoKTsKIAogICAgIE93blB0cjxXZWJDb3JlOjpXS0NBQ0ZMYXllclJlbmRl
cmVyPiBtX2xheWVyUmVuZGVyZXI7CisgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+
IG1fYmFja2luZ0xheWVyOwogICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmc7CiAj
ZW5kaWYKIAo=
</data>
<flag name="review"
          id="70556"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>