<?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>162924</bug_id>
          
          <creation_ts>2016-10-04 11:08:04 -0700</creation_ts>
          <short_desc>[Win][Direct2D] Connect WebCore/WebKit Drawing</short_desc>
          <delta_ts>2016-10-05 10:24:23 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>161817</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>pvollan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1236268</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-04 11:08:04 -0700</bug_when>
    <thetext>This patch updates the Windows WebKit layer to use Direct2D for drawing. It also touches a number of WebCore implementation files to supply Direct2D-compatible drawing logic, as well as stubbing out some routines that are not yet supported in this new drawing mode.

This patch simply adds the new files. It does not incorporate them into the build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236484</commentid>
    <comment_count>1</comment_count>
      <attachid>290675</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-04 17:43:09 -0700</bug_when>
    <thetext>Created attachment 290675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236486</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-04 17:45:46 -0700</bug_when>
    <thetext>Attachment 290675 did not pass style-queue:


ERROR: Source/WebKit/win/WebView.cpp:1146:  Use the class HWndDC instead of calling GetDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236487</commentid>
    <comment_count>3</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-04 17:49:26 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 290675 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WebKit/win/WebView.cpp:1146:  Use the class HWndDC instead of
&gt; calling GetDC to avoid potential memory leaks.  [runtime/leaky_pattern] [5]
&gt; Total errors found: 1 in 6 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

This is an error in the style checker. The &apos;GetDC&apos; function here is a conversion routine from Direct2D. It has nothing to do with the HWndDC class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236560</commentid>
    <comment_count>4</comment_count>
      <attachid>290675</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-05 00:19:38 -0700</bug_when>
    <thetext>Comment on attachment 290675
Patch

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

&gt; Source/WebKit/win/WebView.cpp:1246
&gt; +    m_renderTarget-&gt;SetTags(2, __LINE__);

Why?

&gt; Source/WebKit/win/WebView.cpp:1276
&gt; +    (void)hr;

Just don&apos;t name hr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236694</commentid>
    <comment_count>5</comment_count>
      <attachid>290675</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-05 10:24:08 -0700</bug_when>
    <thetext>Comment on attachment 290675
Patch

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

&gt;&gt; Source/WebKit/win/WebView.cpp:1246
&gt;&gt; +    m_renderTarget-&gt;SetTags(2, __LINE__);
&gt; 
&gt; Why?

This is a debugging function. I&apos;ll add a macro for the first argument. When Flush or EndDraw has an error, it outputs these two numbers, which can be used to identify which drawing logic was executing at the time of a failure.

&gt;&gt; Source/WebKit/win/WebView.cpp:1276
&gt;&gt; +    (void)hr;
&gt; 
&gt; Just don&apos;t name hr.

I&apos;ll use UNUSED_PARAM, since I want access to &apos;hr&apos; when debugging so I can see what the error was.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236695</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-05 10:24:23 -0700</bug_when>
    <thetext>Committed r206816: &lt;http://trac.webkit.org/changeset/206816&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290675</attachid>
            <date>2016-10-04 17:43:09 -0700</date>
            <delta_ts>2016-10-05 00:19:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162924-20161004173958.patch</filename>
            <type>text/plain</type>
            <size>17034</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjc3OCkKKysrIFNvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE2LTEwLTA0
ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dW0Rp
cmVjdDJEXSBDb25uZWN0IFdlYkNvcmUvV2ViS2l0IERyYXdpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjkyNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0aGUgV2luZG93cyBXZWJLaXQg
bGF5ZXIgdG8gb3B0aW9uYWxseSB1c2UgdGhlIERpcmVjdDJECisgICAgICAgIGJhY2tlbmQuCisK
KyAgICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcDogRGlzYWJsZSBzb21lIENv
cmVBbmltYXRpb24tYmFzZWQKKyAgICAgICAgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgbG9naWMu
CisgICAgICAgICogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYkZy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpzcG9vbFBhZ2VzKTogRGlzYWJsZSBpbiBEaXJl
Y3QyRC4KKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmVuc3VyZUJh
Y2tpbmdTdG9yZSk6IEFkZCBEaXJlY3QyRCBsb2dpYy4KKyAgICAgICAgKFdlYlZpZXc6OnNjcm9s
bEJhY2tpbmdTdG9yZSk6IERpdHRvLgorICAgICAgICAoV2ViVmlldzo6c2l6ZUNoYW5nZWQpOiBE
aXR0by4KKyAgICAgICAgKFdlYlZpZXc6OnBhaW50V2l0aERpcmVjdDJEKTogQWRkZWQuCisgICAg
ICAgIChXZWJWaWV3OjpXZWJWaWV3V25kUHJvYyk6IENhbGwgRGlyZWN0MkQgcGFpbnQgcm91dGlu
ZS4KKyAgICAgICAgKiBXZWJWaWV3Lmg6CisKIDIwMTYtMTAtMDIgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBFeGNlcHRpb25Db2RlLWJhc2VkIGV4Y2Vw
dGlvbiBoYW5kbGluZyB0byAibGVnYWN5IgpJbmRleDogU291cmNlL1dlYktpdC93aW4vRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4v
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIwNjc3OCkKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw4ICszOSwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9IV25kREMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4K
KyNpZiBVU0UoQ0EpCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllcldpbi5oPgorI2VuZGlmCiAjaW5jbHVk
ZSA8V2ViQ29yZS9UZXh0UnVuLmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dl
YktpdFN5c3RlbUludGVyZmFjZS5oPgogI2luY2x1ZGUgPHdpbmRvd3N4Lmg+CkBAIC0xNzMsNiAr
MTc1LDcgQEAgdm9pZCBIVURTbGlkZXI6OmRyYWcoY29uc3QgSW50UG9pbnQmIHBvaQogICAgIG1f
YnV0dG9uUG9zaXRpb24gPSBtYXgoMCwgbWluKG1fcmVjdC53aWR0aCgpIC0gbV9idXR0b25TaXpl
LCBwb2ludC54KCkgLSBtX2RyYWdTdGFydE9mZnNldCkpOwogfQogCisjaWYgVVNFKENBKQogY2xh
c3MgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBMYXllckNsaWVudChGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyKiBwYXJlbnQpIDogbV9wYXJlbnQocGFyZW50KSB7IH0KQEAg
LTIyOCw2ICsyMzEsNyBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheWVyQ2xp
CiAgICAgdmlkZW9MYXllci0+c2V0UG9zaXRpb24odmlkZW9PcmlnaW4pOwogICAgIHZpZGVvTGF5
ZXItPnNldEJvdW5kcyhGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCB2aWRlb1NpemUpKTsKIH0KKyNl
bmRpZgogCiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyKCkKICAgICA6IG1faHVkV2luZG93KDApCkBAIC0yNDIsMTUgKzI0NiwxOSBAQCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkCiAgICAgLCBtX2hpdFdpZGdldCgwKQog
ICAgICwgbV9tb3ZpbmdXaW5kb3coZmFsc2UpCiAgICAgLCBtX3RpbWVyKCp0aGlzLCAmRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcjo6dGltZXJGaXJlZCkKKyNpZiBVU0UoQ0EpCiAgICAgLCBtX2xh
eWVyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpKQogICAgICwgbV9y
b290Q2hpbGQoUGxhdGZvcm1DQUxheWVyV2luOjpjcmVhdGUoUGxhdGZvcm1DQUxheWVyOjpMYXll
clR5cGVMYXllciwgbV9sYXllckNsaWVudC5nZXQoKSkpCisjZW5kaWYKICAgICAsIG1fZnVsbHNj
cmVlbldpbmRvdyhzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5X
aW5kb3c+KHN0YXRpY19jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQqPih0
aGlzKSkpCiB7CiB9CiAKIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6On5GdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyKCkKIHsKKyNpZiBVU0UoQ0EpCiAgICAgbV9yb290Q2hpbGQtPnNldE93bmVy
KDApOworI2VuZGlmCiB9CiAKIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6c2V0Vmlk
ZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWxlbWVudCkKQEAgLTI3NSw2ICsyODMs
OCBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsCiAKICAgICBtX2Z1
bGxzY3JlZW5XaW5kb3ctPmNyZWF0ZVdpbmRvdyhwYXJlbnRId25kKTsKICAgICA6OlNob3dXaW5k
b3cobV9mdWxsc2NyZWVuV2luZG93LT5od25kKCksIFNXX1NIT1cpOworCisjaWYgVVNFKENBKQog
ICAgIG1fZnVsbHNjcmVlbldpbmRvdy0+c2V0Um9vdENoaWxkTGF5ZXIobV9yb290Q2hpbGQpOwog
CiAgICAgUGxhdGZvcm1DQUxheWVyKiB2aWRlb0xheWVyID0gUGxhdGZvcm1DQUxheWVyOjpwbGF0
Zm9ybUNBTGF5ZXIobV92aWRlb0VsZW1lbnQtPnBsYXRmb3JtTGF5ZXIoKSk7CkBAIC0yODIsNiAr
MjkyLDcgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjplbnRlckZ1bAogICAgIG1f
cm9vdENoaWxkLT5hcHBlbmRTdWJsYXllcigqdmlkZW9MYXllcik7CiAgICAgbV9yb290Q2hpbGQt
PnNldE5lZWRzTGF5b3V0KCk7CiAgICAgbV9yb290Q2hpbGQtPnNldEdlb21ldHJ5RmxpcHBlZCgx
KTsKKyNlbmRpZgogCiAgICAgUkVDVCB3aW5kb3dSZWN0OwogICAgIEdldENsaWVudFJlY3QobV9m
dWxsc2NyZWVuV2luZG93LT5od25kKCksICZ3aW5kb3dSZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgJKHJldmlzaW9uIDIwNjc3OCkK
KysrIFNvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU3LDEwICsxNTcsMTIgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnRQ
b2ludCBtX2h1ZFBvc2l0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PiBtX2Z1bGxzY3JlZW5XaW5kb3c7CiAKKyNpZiBV
U0UoQ0EpCiAgICAgY2xhc3MgTGF5ZXJDbGllbnQ7CiAgICAgZnJpZW5kIGNsYXNzIExheWVyQ2xp
ZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckNsaWVudD4gbV9sYXllckNsaWVudDsKICAg
ICBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyPiBtX3Jvb3RDaGlsZDsKKyNlbmRpZgog
CiAgICAgSFVEQnV0dG9uIG1fcGxheVBhdXNlQnV0dG9uOwogICAgIEhVREJ1dHRvbiBtX3RpbWVT
bGlkZXJCdXR0b247CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCShyZXZpc2lvbiAyMDY3Nzgp
CisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4
MzgsMTEgKzE4MzgsMTMgQEAgSFJFU1VMVCBXZWJGcmFtZTo6c3Bvb2xQYWdlcyhIREMgcHJpbnRE
QwogCiAgICAgZmxvYXQgaGVhZGVySGVpZ2h0ID0gMCwgZm9vdGVySGVpZ2h0ID0gMDsKICAgICBo
ZWFkZXJBbmRGb290ZXJIZWlnaHRzKCZoZWFkZXJIZWlnaHQsICZmb290ZXJIZWlnaHQpOworI2lm
IFVTRShDRykgfHwgVVNFKENBSVJPKQogICAgIEdyYXBoaWNzQ29udGV4dCBzcG9vbEN0eChwY3R4
KTsKICAgICBzcG9vbEN0eC5zZXRTaG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzKHRydWUpOwogCiAg
ICAgZm9yIChVSU5UIGlpID0gc3RhcnRQYWdlOyBpaSA8IGVuZFBhZ2U7IGlpKyspCiAgICAgICAg
IHNwb29sUGFnZShwY3R4LCBzcG9vbEN0eCwgcHJpbnREQywgdWkuZ2V0KCksIGhlYWRlckhlaWdo
dCwgZm9vdGVySGVpZ2h0LCBpaSwgcGFnZUNvdW50KTsKKyNlbmRpZgogCiAjaWYgVVNFKENBSVJP
KQogICAgIGNhaXJvX3N1cmZhY2VfZmluaXNoKHByaW50U3VyZmFjZSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcAkocmV2aXNpb24gMjA2Nzc4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NSw2ICsxNjUsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvV2luZG93TWVzc2FnZUJyb2FkY2FzdGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dz
VG91Y2guaD4KICNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPGQy
ZDEuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXpl
Lmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgpAQCAtODMyLDYgKzgzMywxMSBAQCB2b2lk
IFdlYlZpZXc6OmRlbGV0ZUJhY2tpbmdTdG9yZSgpCiAgICAgICAgIG1fZGVsZXRlQmFja2luZ1N0
b3JlVGltZXJBY3RpdmUgPSBmYWxzZTsKICAgICB9CiAgICAgbV9iYWNraW5nU3RvcmVCaXRtYXAg
PSBudWxscHRyOworI2lmIFVTRShESVJFQ1QyRCkKKyAgICBtX2JhY2tpbmdTdG9yZUQyREJpdG1h
cCA9IG51bGxwdHI7CisgICAgbV9iYWNraW5nU3RvcmVHZGlJbnRlcm9wID0gbnVsbHB0cjsKKyAg
ICBtX2JhY2tpbmdTdG9yZVJlbmRlclRhcmdldCA9IG51bGxwdHI7CisjZW5kaWYKICAgICBtX2Jh
Y2tpbmdTdG9yZURpcnR5UmVnaW9uID0gbnVsbHB0cjsKICAgICBtX2JhY2tpbmdTdG9yZVNpemUu
Y3ggPSBtX2JhY2tpbmdTdG9yZVNpemUuY3kgPSAwOwogfQpAQCAtODQ1LDEyICs4NTEsNTAgQEAg
Ym9vbCBXZWJWaWV3OjplbnN1cmVCYWNraW5nU3RvcmUoKQogICAgIGlmICh3aWR0aCA+IDAgJiYg
aGVpZ2h0ID4gMCAmJiAod2lkdGggIT0gbV9iYWNraW5nU3RvcmVTaXplLmN4IHx8IGhlaWdodCAh
PSBtX2JhY2tpbmdTdG9yZVNpemUuY3kpKSB7CiAgICAgICAgIGRlbGV0ZUJhY2tpbmdTdG9yZSgp
OwogCisjaWYgVVNFKERJUkVDVDJEKQorICAgICAgICBhdXRvIGJpdG1hcFNpemUgPSBEMkQxOjpT
aXplRih3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgYXV0byBwaXhlbFNpemUgPSBEMkQxOjpTaXpl
VSh3aWR0aCwgaGVpZ2h0KTsKKworICAgICAgICBpZiAoIW1fcmVuZGVyVGFyZ2V0KSB7CisgICAg
ICAgICAgICAvLyBDcmVhdGUgYSBEaXJlY3QyRCByZW5kZXIgdGFyZ2V0LgorICAgICAgICAgICAg
YXV0byByZW5kZXJUYXJnZXRQcm9wZXJ0aWVzID0gRDJEMTo6UmVuZGVyVGFyZ2V0UHJvcGVydGll
cygpOworICAgICAgICAgICAgcmVuZGVyVGFyZ2V0UHJvcGVydGllcy51c2FnZSA9IEQyRDFfUkVO
REVSX1RBUkdFVF9VU0FHRV9HRElfQ09NUEFUSUJMRTsKKyAgICAgICAgICAgIGF1dG8gaHduZFJl
bmRlclRhcmdldFByb3BlcnRpZXMgPSBEMkQxOjpId25kUmVuZGVyVGFyZ2V0UHJvcGVydGllcyht
X3ZpZXdXaW5kb3csIHBpeGVsU2l6ZSk7CisgICAgICAgICAgICBIUkVTVUxUIGhyID0gR3JhcGhp
Y3NDb250ZXh0OjpzeXN0ZW1GYWN0b3J5KCktPkNyZWF0ZUh3bmRSZW5kZXJUYXJnZXQoJnJlbmRl
clRhcmdldFByb3BlcnRpZXMsICZod25kUmVuZGVyVGFyZ2V0UHJvcGVydGllcywgJm1fcmVuZGVy
VGFyZ2V0KTsKKyAgICAgICAgICAgIGlmICghU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBDT01QdHI8SUQyRDFTb2xpZENv
bG9yQnJ1c2g+IGJydXNoOworICAgICAgICBtX3JlbmRlclRhcmdldC0+Q3JlYXRlU29saWRDb2xv
ckJydXNoKEQyRDE6OkNvbG9yRihEMkQxOjpDb2xvckY6OkJsdWVWaW9sZXQpLCAmYnJ1c2gpOwor
CisgICAgICAgIG1fcmVuZGVyVGFyZ2V0LT5CZWdpbkRyYXcoKTsKKyAgICAgICAgbV9yZW5kZXJU
YXJnZXQtPkZpbGxSb3VuZGVkUmVjdGFuZ2xlKEQyRDE6OlJvdW5kZWRSZWN0KEQyRDE6OlJlY3RG
KDEwMC4wZiwgMTAwLjBmLCAzMDAuMGYsIDIwMC4wZiksIDIwLjBmLCAyMC4wZiksIGJydXNoLmdl
dCgpKTsKKyAgICAgICAgbV9yZW5kZXJUYXJnZXQtPkVuZERyYXcoKTsKKyNlbmRpZgogICAgICAg
ICBtX2JhY2tpbmdTdG9yZVNpemUuY3ggPSB3aWR0aDsKICAgICAgICAgbV9iYWNraW5nU3RvcmVT
aXplLmN5ID0gaGVpZ2h0OwogICAgICAgICBCaXRtYXBJbmZvIGJpdG1hcEluZm8gPSBCaXRtYXBJ
bmZvOjpjcmVhdGVCb3R0b21VcChJbnRTaXplKG1fYmFja2luZ1N0b3JlU2l6ZSkpOwogCiAgICAg
ICAgIHZvaWQqIHBpeGVscyA9IE5VTEw7CiAgICAgICAgIG1fYmFja2luZ1N0b3JlQml0bWFwID0g
U2hhcmVkR0RJT2JqZWN0PEhCSVRNQVA+OjpjcmVhdGUoYWRvcHRHRElPYmplY3QoOjpDcmVhdGVE
SUJTZWN0aW9uKDAsICZiaXRtYXBJbmZvLCBESUJfUkdCX0NPTE9SUywgJnBpeGVscywgMCwgMCkp
KTsKKworI2lmIFVTRShESVJFQ1QyRCkKKyAgICAgICAgSFJFU1VMVCBociA9IG1fcmVuZGVyVGFy
Z2V0LT5DcmVhdGVDb21wYXRpYmxlUmVuZGVyVGFyZ2V0KCZiaXRtYXBTaXplLCAmcGl4ZWxTaXpl
LCBudWxscHRyLCBEMkQxX0NPTVBBVElCTEVfUkVOREVSX1RBUkdFVF9PUFRJT05TX0dESV9DT01Q
QVRJQkxFLCAmbV9iYWNraW5nU3RvcmVSZW5kZXJUYXJnZXQpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChTVUNDRUVERUQoaHIpKTsKKworICAgICAgICBociA9IG1fYmFja2luZ1N0b3JlUmVuZGVy
VGFyZ2V0LT5HZXRCaXRtYXAoJm1fYmFja2luZ1N0b3JlRDJEQml0bWFwKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoU1VDQ0VFREVEKGhyKSk7CisKKyAgICAgICAgaHIgPSBtX2JhY2tpbmdTdG9y
ZVJlbmRlclRhcmdldC0+UXVlcnlJbnRlcmZhY2UoX191dWlkb2YoSUQyRDFHZGlJbnRlcm9wUmVu
ZGVyVGFyZ2V0KSwgKHZvaWQqKikmbV9iYWNraW5nU3RvcmVHZGlJbnRlcm9wKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoU1VDQ0VFREVEKGhyKSk7CisKKyAgICAgICAgQ09NUHRyPElEMkQxU29s
aWRDb2xvckJydXNoPiBicnVzaDI7CisgICAgICAgIG1fYmFja2luZ1N0b3JlUmVuZGVyVGFyZ2V0
LT5DcmVhdGVTb2xpZENvbG9yQnJ1c2goRDJEMTo6Q29sb3JGKEQyRDE6OkNvbG9yRjo6U2VhR3Jl
ZW4pLCAmYnJ1c2gyKTsKKyAgICAgICAgbV9iYWNraW5nU3RvcmVSZW5kZXJUYXJnZXQtPkJlZ2lu
RHJhdygpOworICAgICAgICBtX3JlbmRlclRhcmdldC0+RmlsbFJvdW5kZWRSZWN0YW5nbGUoRDJE
MTo6Um91bmRlZFJlY3QoRDJEMTo6UmVjdEYoMTAwLjBmLCAxMDAuMGYsIDMwMC4wZiwgMjAwLjBm
KSwgMjAuMGYsIDIwLjBmKSwgYnJ1c2gyLmdldCgpKTsKKyAgICAgICAgbV9yZW5kZXJUYXJnZXQt
PkVuZERyYXcoKTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTkx
Miw2ICs5NTYsMTYgQEAgdm9pZCBXZWJWaWV3OjpzY3JvbGxCYWNraW5nU3RvcmUoRnJhbWVWaQog
ICAgIEZsb2F0UmVjdCBjbGlwUmVjdChsb2dpY2FsQ2xpcFJlY3QpOwogICAgIGNsaXBSZWN0LnNj
YWxlKHNjYWxlRmFjdG9yKTsKIAorI2lmIFVTRShESVJFQ1QyRCkKKyAgICBSRUNUIHNjcm9sbFJl
Y3RXaW4oc2Nyb2xsVmlld1JlY3QpOworICAgIFJFQ1QgY2xpcFJlY3RXaW4oZW5jbG9zaW5nSW50
UmVjdChjbGlwUmVjdCkpOworICAgIFJFQ1QgdXBkYXRlUmVjdDsKKyAgICA6OlNjcm9sbFdpbmRv
d0V4KG1fdmlld1dpbmRvdywgZHgsIGR5LCAmc2Nyb2xsUmVjdFdpbiwgJmNsaXBSZWN0V2luLCBu
dWxscHRyLCAmdXBkYXRlUmVjdCwgMCk7CisgICAgOjpJbnZhbGlkYXRlUmVjdChtX3ZpZXdXaW5k
b3csICZ1cGRhdGVSZWN0LCBGQUxTRSk7CisKKyAgICBpZiAobV91aURlbGVnYXRlUHJpdmF0ZSkK
KyAgICAgICAgbV91aURlbGVnYXRlUHJpdmF0ZS0+d2ViVmlld1Njcm9sbGVkKHRoaXMpOworI2Vs
c2UKICAgICBpZiAoaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpIHsKICAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBiZSBkb2luZyBzb21ldGhpbmcgc21hcnRlciBoZXJlLCBsaWtlIG1vdmlu
ZyB0aWxlcyBhcm91bmQgYW5kIHBhaW50aW5nCiAgICAgICAgIC8vIGFueSBuZXdseS1leHBvc2Vk
IHRpbGVzLiA8aHR0cDovL3dlYmtpdC5vcmcvYi81MjcxND4KQEAgLTk3MSw2ICsxMDI1LDcgQEAg
dm9pZCBXZWJWaWV3OjpzY3JvbGxCYWNraW5nU3RvcmUoRnJhbWVWaQogCiAgICAgLy8gQ2xlYW4g
dXAuCiAgICAgOjpTZWxlY3RPYmplY3QoYml0bWFwREMuZ2V0KCksIG9sZEJpdG1hcCk7CisjZW5k
aWYgLy8gVVNFKERJUkVDVDJEKQogfQogCiB2b2lkIFdlYlZpZXc6OnNpemVDaGFuZ2VkKGNvbnN0
IEludFNpemUmIG5ld1NpemUpCkBAIC05OTcsNiArMTA1MiwyMCBAQCB2b2lkIFdlYlZpZXc6OnNp
emVDaGFuZ2VkKGNvbnN0IEludFNpemUmCiAgICAgaWYgKG1fYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQpCiAgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnJlc2l6
ZVJvb3RMYXllcihuZXdTaXplKTsKICNlbmRpZgorCisjaWYgVVNFKERJUkVDVDJEKQorICAgIGlm
IChtX3JlbmRlclRhcmdldCkgeworICAgICAgICBtX3JlbmRlclRhcmdldC0+UmVzaXplKG5ld1Np
emUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQ3JlYXRlIGEgRGlyZWN0MkQg
cmVuZGVyIHRhcmdldC4KKyAgICBhdXRvIHJlbmRlclRhcmdldFByb3BlcnRpZXMgPSBEMkQxOjpS
ZW5kZXJUYXJnZXRQcm9wZXJ0aWVzKCk7CisgICAgcmVuZGVyVGFyZ2V0UHJvcGVydGllcy51c2Fn
ZSA9IEQyRDFfUkVOREVSX1RBUkdFVF9VU0FHRV9HRElfQ09NUEFUSUJMRTsKKyAgICBhdXRvIGh3
bmRSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzID0gRDJEMTo6SHduZFJlbmRlclRhcmdldFByb3BlcnRp
ZXMobV92aWV3V2luZG93LCBuZXdTaXplKTsKKyAgICBIUkVTVUxUIGhyID0gR3JhcGhpY3NDb250
ZXh0OjpzeXN0ZW1GYWN0b3J5KCktPkNyZWF0ZUh3bmRSZW5kZXJUYXJnZXQoJnJlbmRlclRhcmdl
dFByb3BlcnRpZXMsICZod25kUmVuZGVyVGFyZ2V0UHJvcGVydGllcywgJm1fcmVuZGVyVGFyZ2V0
KTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKGhyKSk7CisjZW5kaWYKIH0KIAogYm9vbCBXZWJWaWV3
OjpkcGlDaGFuZ2VkKGZsb2F0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKQpAQCAt
MTA1Nyw2ICsxMTI2LDEzIEBAIHZvaWQgV2ViVmlldzo6dXBkYXRlQmFja2luZ1N0b3JlKEZyYW1l
VmkKIAogICAgIExPQ0FMX0dESV9DT1VOVEVSKDAsIF9fRlVOQ1RJT05fXyk7CiAKKyNpZiBVU0Uo
RElSRUNUMkQpCisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZUdkaUludGVyb3ApIHsKKyAgICAgICAg
SFJFU1VMVCBociA9IG1fYmFja2luZ1N0b3JlUmVuZGVyVGFyZ2V0LT5RdWVyeUludGVyZmFjZShf
X3V1aWRvZihJRDJEMUdkaUludGVyb3BSZW5kZXJUYXJnZXQpLCAodm9pZCoqKSZtX2JhY2tpbmdT
dG9yZUdkaUludGVyb3ApOworICAgICAgICBSRUxFQVNFX0FTU0VSVChTVUNDRUVERUQoaHIpKTsK
KyAgICB9CisjZW5kaWYKKwogICAgIEdESU9iamVjdDxIREM+IGJpdG1hcERDT2JqZWN0OwogCiAg
ICAgSERDIGJpdG1hcERDID0gZGM7CkBAIC0xMDY2LDYgKzExNDIsMTAgQEAgdm9pZCBXZWJWaWV3
Ojp1cGRhdGVCYWNraW5nU3RvcmUoRnJhbWVWaQogICAgICAgICBiaXRtYXBEQ09iamVjdCA9IGFk
b3B0R0RJT2JqZWN0KDo6Q3JlYXRlQ29tcGF0aWJsZURDKHdpbmRvd0RDKSk7CiAgICAgICAgIGJp
dG1hcERDID0gYml0bWFwRENPYmplY3QuZ2V0KCk7CiAgICAgICAgIG9sZEJpdG1hcCA9IDo6U2Vs
ZWN0T2JqZWN0KGJpdG1hcERDLCBtX2JhY2tpbmdTdG9yZUJpdG1hcC0+Z2V0KCkpOworI2lmIFVT
RShESVJFQ1QyRCkKKyAgICAgICAgSFJFU1VMVCBociA9IG1fYmFja2luZ1N0b3JlR2RpSW50ZXJv
cC0+R2V0REMoRDJEMV9EQ19JTklUSUFMSVpFX01PREVfQ09QWSwgJmJpdG1hcERDKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoU1VDQ0VFREVEKGhyKSk7CisjZW5kaWYKICAgICB9CiAKICAgICBp
ZiAobV9iYWNraW5nU3RvcmVCaXRtYXAgJiYgKG1fYmFja2luZ1N0b3JlRGlydHlSZWdpb24gfHwg
YmFja2luZ1N0b3JlQ29tcGxldGVseURpcnR5KSkgewpAQCAtMTA5NCw4ICsxMTc0LDEyIEBAIHZv
aWQgV2ViVmlldzo6dXBkYXRlQmFja2luZ1N0b3JlKEZyYW1lVmkKICAgICAgICAgbV9iYWNraW5n
U3RvcmVEaXJ0eVJlZ2lvbiA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgaWYgKCFkYykKKyAgICBp
ZiAoIWRjKSB7CiAgICAgICAgIDo6U2VsZWN0T2JqZWN0KGJpdG1hcERDLCBvbGRCaXRtYXApOwor
I2lmIFVTRShESVJFQ1QyRCkKKyAgICAgICAgbV9iYWNraW5nU3RvcmVHZGlJbnRlcm9wLT5SZWxl
YXNlREMobnVsbHB0cik7CisjZW5kaWYKKyAgICB9CiAKICAgICBHZGlGbHVzaCgpOwogCkBAIC0x
MTMwLDYgKzEyMTQsNzMgQEAgdm9pZCBXZWJWaWV3OjpwZXJmb3JtTGF5ZXJlZFdpbmRvd1VwZGF0
ZQogICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7CiB9CiAKK3ZvaWQgV2ViVmlldzo6cGFpbnRX
aXRoRGlyZWN0MkQoKQoreworI2lmIFVTRShESVJFQ1QyRCkKKyAgICBGcmFtZSogY29yZUZyYW1l
ID0gY29yZShtX21haW5GcmFtZSk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVy
bjsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGNvcmVGcmFtZS0+dmlldygpOworICAgIGZy
YW1lVmlldy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOworCisgICAg
aWYgKCFtX3JlbmRlclRhcmdldCkgeworICAgICAgICAvLyBDcmVhdGUgYSBEaXJlY3QyRCByZW5k
ZXIgdGFyZ2V0LgorICAgICAgICBhdXRvIHJlbmRlclRhcmdldFByb3BlcnRpZXMgPSBEMkQxOjpS
ZW5kZXJUYXJnZXRQcm9wZXJ0aWVzKCk7CisgICAgICAgIHJlbmRlclRhcmdldFByb3BlcnRpZXMu
dXNhZ2UgPSBEMkQxX1JFTkRFUl9UQVJHRVRfVVNBR0VfR0RJX0NPTVBBVElCTEU7CisKKyAgICAg
ICAgUkVDVCByZWN0OworICAgICAgICA6OkdldENsaWVudFJlY3QobV92aWV3V2luZG93LCAmcmVj
dCk7CisKKyAgICAgICAgSW50UmVjdCBjbGllbnRSZWN0KHJlY3QpOworCisgICAgICAgIGF1dG8g
cGl4ZWxTaXplID0gRDJEMTo6U2l6ZVUoY2xpZW50UmVjdC53aWR0aCgpLCBjbGllbnRSZWN0Lmhl
aWdodCgpKTsKKworICAgICAgICBhdXRvIGh3bmRSZW5kZXJUYXJnZXRQcm9wZXJ0aWVzID0gRDJE
MTo6SHduZFJlbmRlclRhcmdldFByb3BlcnRpZXMobV92aWV3V2luZG93LCBwaXhlbFNpemUpOwor
ICAgICAgICBIUkVTVUxUIGhyID0gR3JhcGhpY3NDb250ZXh0OjpzeXN0ZW1GYWN0b3J5KCktPkNy
ZWF0ZUh3bmRSZW5kZXJUYXJnZXQoJnJlbmRlclRhcmdldFByb3BlcnRpZXMsICZod25kUmVuZGVy
VGFyZ2V0UHJvcGVydGllcywgJm1fcmVuZGVyVGFyZ2V0KTsKKyAgICAgICAgaWYgKCFTVUNDRUVE
RUQoaHIpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcmVuZGVyVGFyZ2V0
LT5CZWdpbkRyYXcoKTsKKworICAgIG1fcmVuZGVyVGFyZ2V0LT5TZXRUYWdzKDIsIF9fTElORV9f
KTsKKyAgICBtX3JlbmRlclRhcmdldC0+Q2xlYXIoKTsKKworICAgIC8vIERpcmVjdDJEIGhvbm9y
cyB0aGUgc2NhbGUgZmFjdG9yIG5hdGl2ZWx5LgorICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gMS4w
ZjsKKyAgICBmbG9hdCBpbnZlcnNlU2NhbGVGYWN0b3IgPSAxLjBmIC8gc2NhbGVGYWN0b3I7CisK
KyAgICBSRUNUIGNsaWVudFJlY3Q7CisgICAgR2V0Q2xpZW50UmVjdChtX3ZpZXdXaW5kb3csICZj
bGllbnRSZWN0KTsKKworICAgIEludFJlY3QgZGlydHlSZWN0UGl4ZWxzKDAsIDAsIGNsaWVudFJl
Y3QucmlnaHQsIGNsaWVudFJlY3QuYm90dG9tKTsKKyAgICBGbG9hdFJlY3QgbG9naWNhbERpcnR5
UmVjdEZsb2F0ID0gZGlydHlSZWN0UGl4ZWxzOworICAgIGxvZ2ljYWxEaXJ0eVJlY3RGbG9hdC5z
Y2FsZShpbnZlcnNlU2NhbGVGYWN0b3IpOworICAgIEludFJlY3QgbG9naWNhbERpcnR5UmVjdChl
bmNsb3NpbmdJbnRSZWN0KGxvZ2ljYWxEaXJ0eVJlY3RGbG9hdCkpOworCisgICAgR3JhcGhpY3ND
b250ZXh0IGdjKG1fcmVuZGVyVGFyZ2V0LmdldCgpKTsKKyAgICBnYy5zZXREaWRCZWdpbkRyYXco
dHJ1ZSk7CisKKyAgICBpZiAoZnJhbWVWaWV3ICYmIGZyYW1lVmlldy0+ZnJhbWUoKS5jb250ZW50
UmVuZGVyZXIoKSkgeworICAgICAgICBnYy5zYXZlKCk7CisgICAgICAgIGdjLnNjYWxlKEZsb2F0
U2l6ZShzY2FsZUZhY3Rvciwgc2NhbGVGYWN0b3IpKTsKKyAgICAgICAgZ2MuY2xpcChsb2dpY2Fs
RGlydHlSZWN0KTsKKyAgICAgICAgZnJhbWVWaWV3LT5wYWludChnYywgbG9naWNhbERpcnR5UmVj
dCk7CisgICAgICAgIGdjLnJlc3RvcmUoKTsKKyAgICAgICAgaWYgKG1fc2hvdWxkSW52ZXJ0Q29s
b3JzKQorICAgICAgICAgICAgZ2MuZmlsbFJlY3QobG9naWNhbERpcnR5UmVjdCwgQ29sb3I6Ondo
aXRlLCBDb21wb3NpdGVEaWZmZXJlbmNlKTsKKyAgICB9CisKKyAgICBIUkVTVUxUIGhyID0gbV9y
ZW5kZXJUYXJnZXQtPkVuZERyYXcoKTsKKyAgICAvLyBGSVhNRTogUmVjb2duaXplIGFuZCByZWNv
dmVyIGZyb20gZXJyb3Igc3RhdGU6CisgICAgKHZvaWQpaHI7CisKKyAgICA6OlZhbGlkYXRlUmVj
dChtX3ZpZXdXaW5kb3csICZjbGllbnRSZWN0KTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJWaWV3OjpwYWludChIREMgZGMsIExQQVJBTSBv
cHRpb25zKQogewogICAgIExPQ0FMX0dESV9DT1VOVEVSKDAsIF9fRlVOQ1RJT05fXyk7CkBAIC0x
MTk4LDggKzEzNDksMTggQEAgdm9pZCBXZWJWaWV3OjpwYWludChIREMgZGMsIExQQVJBTSBvcHRp
bwogCiAgICAgOjpTZWxlY3RPYmplY3QoYml0bWFwREMuZ2V0KCksIG9sZEJpdG1hcCk7CiAKLSAg
ICBpZiAoIWRjKQorICAgIGlmICghZGMpIHsKICAgICAgICAgRW5kUGFpbnQobV92aWV3V2luZG93
LCAmcHMpOworI2lmIFVTRShESVJFQ1QyRCkKKyAgICAgICAgSFJFU1VMVCBociA9IG1fYmFja2lu
Z1N0b3JlUmVuZGVyVGFyZ2V0LT5FbmREcmF3KCk7CisgICAgICAgIC8vIEZJWE1FOiBSZWNvZ25p
emUgYW5kIHJlY292ZXIgZnJvbSBlcnJvciBzdGF0ZToKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
U1VDQ0VFREVEKGhyKSk7CisjZW5kaWYKKyAgICB9CisKKyNpZiBVU0UoRElSRUNUMkQpCisgICAg
bV9iYWNraW5nU3RvcmVHZGlJbnRlcm9wLT5SZWxlYXNlREMobnVsbHB0cik7CisjZW5kaWYKIAog
ICAgIG1fcGFpbnRDb3VudC0tOwogCkBAIC0xMjQxLDYgKzE0MDIsMTAgQEAgdm9pZCBXZWJWaWV3
OjpwYWludEludG9CYWNraW5nU3RvcmUoRnJhbQogICAgIGxvZ2ljYWxEaXJ0eVJlY3RGbG9hdC5z
Y2FsZShpbnZlcnNlU2NhbGVGYWN0b3IpOyAgICAKICAgICBJbnRSZWN0IGxvZ2ljYWxEaXJ0eVJl
Y3QoZW5jbG9zaW5nSW50UmVjdChsb2dpY2FsRGlydHlSZWN0RmxvYXQpKTsKIAorI2lmIFVTRShE
SVJFQ1QyRCkKKyAgICBtX2JhY2tpbmdTdG9yZVJlbmRlclRhcmdldCA9IG51bGxwdHI7CisjZW5k
aWYKKwogICAgIEdyYXBoaWNzQ29udGV4dCBnYyhiaXRtYXBEQywgbV90cmFuc3BhcmVudCk7CiAg
ICAgZ2Muc2V0U2hvdWxkSW5jbHVkZUNoaWxkV2luZG93cyh3aW5kb3dzVG9QYWludCA9PSBQYWlu
dFdlYlZpZXdBbmRDaGlsZHJlbik7CiAgICAgZ2Muc2F2ZSgpOwpAQCAtMjQwMCw3ICsyNTY1LDEx
IEBAIExSRVNVTFQgQ0FMTEJBQ0sgV2ViVmlldzo6V2ViVmlld1duZFByb2MKIAogICAgIHN3aXRj
aCAobWVzc2FnZSkgewogICAgICAgICBjYXNlIFdNX1BBSU5UOiB7CisjaWYgVVNFKERJUkVDVDJE
KQorICAgICAgICAgICAgd2ViVmlldy0+cGFpbnRXaXRoRGlyZWN0MkQoKTsKKyNlbHNlCiAgICAg
ICAgICAgICB3ZWJWaWV3LT5wYWludCgwLCAwKTsKKyNlbmRpZgogICAgICAgICAgICAgaWYgKHdl
YlZpZXctPnVzZXNMYXllcmVkV2luZG93KCkpCiAgICAgICAgICAgICAgICAgd2ViVmlldy0+cGVy
Zm9ybUxheWVyZWRXaW5kb3dVcGRhdGUoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTI3MCw2
ICs1NDM5LDkgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZQogI2lm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkKICAgICBzdGF0aWMgYm9vbCBhY2NlbGVyYXRlZENvbXBv
c2l0aW5nQXZhaWxhYmxlID0gQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKTsKICAgICBlbmFibGVkID0gZW5hYmxlZCAmJiBhY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlOworI2VsaWYgVVNFKERJUkVDVDJEKQorICAgIC8v
IERpc2FibGUgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgZm9yIG5vdy4KKyAgICBlbmFibGVkID0g
ZmFsc2U7CiAjZW5kaWYKICAgICBzZXR0aW5ncy5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5h
YmxlZChlbmFibGVkKTsKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAkocmV2aXNpb24gMjA2Nzc4KQor
KysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3
NywxMyBAQCBXZWJWaWV3KiBraXQoV2ViQ29yZTo6UGFnZSopOwogV2ViQ29yZTo6UGFnZSogY29y
ZShJV2ViVmlldyopOwogCiBpbnRlcmZhY2UgSURyb3BUYXJnZXRIZWxwZXI7CisjaWYgVVNFKERJ
UkVDVDJEKQoraW50ZXJmYWNlIElEMkQxQml0bWFwOworaW50ZXJmYWNlIElEMkQxQml0bWFwUmVu
ZGVyVGFyZ2V0OworaW50ZXJmYWNlIElEMkQxR2RpSW50ZXJvcFJlbmRlclRhcmdldDsKK2ludGVy
ZmFjZSBJRDJEMUh3bmRSZW5kZXJUYXJnZXQ7CitpbnRlcmZhY2UgSUQyRDFSZW5kZXJUYXJnZXQ7
CisjZW5kaWYKIAogY2xhc3MgV2ViVmlldyAKICAgICA6IHB1YmxpYyBJV2ViVmlldwpAQCAtNDE0
LDYgKzQyMSw3IEBAIHB1YmxpYzoKICAgICBib29sIGtleURvd24oV1BBUkFNLCBMUEFSQU0sIGJv
b2wgc3lzdGVtS2V5RG93biA9IGZhbHNlKTsKICAgICBib29sIGtleVVwKFdQQVJBTSwgTFBBUkFN
LCBib29sIHN5c3RlbUtleURvd24gPSBmYWxzZSk7CiAgICAgYm9vbCBrZXlQcmVzcyhXUEFSQU0s
IExQQVJBTSwgYm9vbCBzeXN0ZW1LZXlEb3duID0gZmFsc2UpOworICAgIHZvaWQgcGFpbnRXaXRo
RGlyZWN0MkQoKTsKICAgICB2b2lkIHBhaW50KEhEQywgTFBBUkFNKTsKICAgICB2b2lkIHBhaW50
SW50b1dpbmRvdyhIREMgYml0bWFwREMsIEhEQyB3aW5kb3dEQywgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgZGlydHlSZWN0KTsKICAgICBib29sIGVuc3VyZUJhY2tpbmdTdG9yZSgpOwpAQCAtNjE2
LDYgKzYyNCwxMiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBITUVOVSBtX2N1cnJlbnRDb250ZXh0TWVu
dSB7IG51bGxwdHIgfTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkR0RJT2JqZWN0PEhCSVRN
QVA+PiBtX2JhY2tpbmdTdG9yZUJpdG1hcDsKKyNpZiBVU0UoRElSRUNUMkQpCisgICAgQ09NUHRy
PElEMkQxSHduZFJlbmRlclRhcmdldD4gbV9yZW5kZXJUYXJnZXQ7CisgICAgQ09NUHRyPElEMkQx
Qml0bWFwPiBtX2JhY2tpbmdTdG9yZUQyREJpdG1hcDsKKyAgICBDT01QdHI8SUQyRDFCaXRtYXBS
ZW5kZXJUYXJnZXQ+IG1fYmFja2luZ1N0b3JlUmVuZGVyVGFyZ2V0OworICAgIENPTVB0cjxJRDJE
MUdkaUludGVyb3BSZW5kZXJUYXJnZXQ+IG1fYmFja2luZ1N0b3JlR2RpSW50ZXJvcDsKKyNlbmRp
ZgogICAgIFNJWkUgbV9iYWNraW5nU3RvcmVTaXplOwogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRHRElPYmplY3Q8SFJHTj4+IG1fYmFja2luZ1N0b3JlRGlydHlSZWdpb247CiAK
</data>
<flag name="review"
          id="313842"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>