<?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>62706</bug_id>
          
          <creation_ts>2011-06-15 01:42:09 -0700</creation_ts>
          <short_desc>Remove ScriptController::setAllowPopupsFromPlugin</short_desc>
          <delta_ts>2011-06-16 00:09:55 -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>Plug-ins</component>
          <version>528+ (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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>aestes</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jnd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>421120</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 01:42:09 -0700</bug_when>
    <thetext>Remove ScriptController::setAllowPopupsFromPlugin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421122</commentid>
    <comment_count>1</comment_count>
      <attachid>97254</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 01:43:11 -0700</bug_when>
    <thetext>Created attachment 97254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421133</commentid>
    <comment_count>2</comment_count>
      <attachid>97254</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-15 01:54:42 -0700</bug_when>
    <thetext>Comment on attachment 97254
Patch

Attachment 97254 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8837895</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421138</commentid>
    <comment_count>3</comment_count>
      <attachid>97262</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 02:04:08 -0700</bug_when>
    <thetext>Created attachment 97262
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421142</commentid>
    <comment_count>4</comment_count>
      <attachid>97262</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-15 02:19:35 -0700</bug_when>
    <thetext>Comment on attachment 97262
Patch

Attachment 97262 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8837913</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421163</commentid>
    <comment_count>5</comment_count>
      <attachid>97262</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-15 03:33:14 -0700</bug_when>
    <thetext>Comment on attachment 97262
Patch

Attachment 97262 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/8835929</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421532</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-15 13:17:37 -0700</bug_when>
    <thetext>+        This API is just a poor man&apos;s UserGestureIndicator.  We should use the
+        real deal.

That&apos;s not necessarily accurate. The reason why this code was added was a specific issue with full screen plug-ins. Please talk to Anders about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421570</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 14:19:16 -0700</bug_when>
    <thetext>&gt; That&apos;s not necessarily accurate. The reason why this code was added was a specific issue with full screen plug-ins. Please talk to Anders about it.

Ok, but I suspect that this code only exists because the modern way of handling user gestures didn&apos;t yet exist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421573</commentid>
    <comment_count>8</comment_count>
      <attachid>97363</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 14:26:49 -0700</bug_when>
    <thetext>Created attachment 97363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421737</commentid>
    <comment_count>9</comment_count>
      <attachid>97363</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-15 20:42:39 -0700</bug_when>
    <thetext>Comment on attachment 97363
Patch

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

OK.

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:786
&gt; +        UserGestureIndicator gestureIndicator(request-&gt;allowPopups() ? DefinitelyProcessingUserGesture : PossiblyProcessingUserGesture);
&gt; +        result = frame-&gt;script()-&gt;executeScript(jsString);

Better to keep passing the bool here for now, and do all of these in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421740</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 20:46:01 -0700</bug_when>
    <thetext>Alexey asked me to test whether this patch had a bad interaction with fullscreen videos on Hulu, but I wasn&apos;t able to test that because WebKit TOT doesn&apos;t seem to work correctly with the publicly released version of Safari when viewing Hulu videos.  I&apos;m pretty sure this patch is ok, but someone internal to Apple might want to double-check with whatever internal builds of Safari exist that might work properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421746</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 21:10:41 -0700</bug_when>
    <thetext>Committed r89001: &lt;http://trac.webkit.org/changeset/89001&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421776</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-15 22:31:47 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Alexey asked me to test whether this patch had a bad interaction with fullscreen videos on Hulu, but I wasn&apos;t able to test that because WebKit TOT doesn&apos;t seem to work correctly with the publicly released version of Safari when viewing Hulu videos. 

What didn&apos;t work for you? Safari 5.0.5 + nightly r88920 seem to work perfectly fine when viewing Hulu videos full screen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421801</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 23:40:35 -0700</bug_when>
    <thetext>&gt; What didn&apos;t work for you? Safari 5.0.5 + nightly r88920 seem to work perfectly fine when viewing Hulu videos full screen.

Noel tells me I need to build the 32 bit version of WebKit, which I&apos;m doing now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421803</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 23:41:51 -0700</bug_when>
    <thetext>&gt; What didn&apos;t work for you? Safari 5.0.5 + nightly r88920 seem to work perfectly fine when viewing Hulu videos full screen.

The symptoms are that Safari beachballs waiting for some sort of mach channel.  I can reproduce and get the stack if you like, but I&apos;m halfway through this 32 bit build at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421811</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 23:57:40 -0700</bug_when>
    <thetext>&gt; Alexey asked me to test whether this patch had a bad interaction with fullscreen videos on Hulu

Seem to work fine.  The popup is created as expected.  The full-screen video stays open instead of closing, but that seems unrelated to this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421815</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-16 00:04:24 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt; Alexey asked me to test whether this patch had a bad interaction with fullscreen videos on Hulu
&gt; 
&gt; Seem to work fine.  The popup is created as expected.  The full-screen video stays open instead of closing, but that seems unrelated to this bug.

Confirmed.  The behavior is the same in the WebKit nightly built before this patch landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421817</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-16 00:09:55 -0700</bug_when>
    <thetext>Cool, thanks for testing. And Firefox has the same behavior.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97254</attachid>
            <date>2011-06-15 01:43:11 -0700</date>
            <delta_ts>2011-06-15 02:04:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62706-20110615014310.patch</filename>
            <type>text/plain</type>
            <size>16190</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4OTE0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDYtMTUgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW1vdmUgU2NyaXB0Q29udHJvbGxlcjo6c2V0QWxsb3dQb3B1cHNG
cm9tUGx1Z2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MjcwNgorCisgICAgICAgIFRoaXMgQVBJIGlzIGp1c3QgYSBwb29yIG1hbidzIFVzZXJHZXN0
dXJlSW5kaWNhdG9yLiAgV2Ugc2hvdWxkIHVzZSB0aGUKKyAgICAgICAgcmVhbCBkZWFsLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L05Q
VjhPYmplY3QuY3BwOgorICAgICAgICAoX05QTl9FdmFsdWF0ZUhlbHBlcik6CisgICAgICAgICog
YmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5oOgorCiAyMDExLTA2LTE1ICBOaWtvbGFzIFppbW1lcm1hbm4g
IDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0
LgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAJKHJldmlzaW9uIDg4OTA5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDYgQEAgU2NyaXB0
Q29udHJvbGxlcjo6U2NyaXB0Q29udHJvbGxlcihGcmFtZQogICAgICwgbV9pbkV4ZWN1dGVTY3Jp
cHQoZmFsc2UpCiAgICAgLCBtX3Byb2Nlc3NpbmdUaW1lckNhbGxiYWNrKGZhbHNlKQogICAgICwg
bV9wYXVzZWQoZmFsc2UpCi0gICAgLCBtX2FsbG93UG9wdXBzRnJvbVBsdWdpbihmYWxzZSkKICNp
ZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAsIG1fd2luZG93U2NyaXB0TlBPYmpl
Y3QoMCkKICNlbmRpZgpAQCAtMjUyLDE3ICsyNTEsMTMgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVy
Ojpwcm9jZXNzaW5nVXNlckdlcwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBVc2Vy
R2VzdHVyZUluZGljYXRvcjo6Z2V0VXNlckdlc3R1cmVTdGF0ZSgpICE9IERlZmluaXRlbHlOb3RQ
cm9jZXNzaW5nVXNlckdlc3R1cmU7CiAKLSAgICAvLyBGSVhNRTogV2UgY2hlY2sgdGhlIHBsdWdp
biBwb3B1cCBmbGFnIGFuZCBqYXZhc2NyaXB0IGFuY2hvciBuYXZpZ2F0aW9uCi0gICAgLy8gZnJv
bSB0aGUgZHluYW1pYyBmcmFtZSBiZWN1YXNlIHRoZXkgc2hvdWxkIG9ubHkgYmUgaW5pdGlhdGVk
IG9uIHRoZQotICAgIC8vIGR5bmFtaWMgZnJhbWUgaW4gd2hpY2ggZXhlY3V0aW9uIGJlZ2FuIGlm
IHRoZXkgZG8gaGFwcGVuLgotICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIg
PSBmcmFtZS0+c2NyaXB0KCk7Ci0gICAgQVNTRVJUKHNjcmlwdENvbnRyb2xsZXIpOwotICAgIGlm
IChzY3JpcHRDb250cm9sbGVyLT5hbGxvd1BvcHVwc0Zyb21QbHVnaW4oKSB8fCBzY3JpcHRDb250
cm9sbGVyLT5pc0phdmFTY3JpcHRBbmNob3JOYXZpZ2F0aW9uKCkpCisgICAgLy8gRklYTUU6IFJl
bW92ZSB0aGUgaXNKYXZhU2NyaXB0QW5jaG9yTmF2aWdhdGlvbiBjaGVjayBvbmNlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjcwMiBpcyBmaXhlZC4KKyAgICBpZiAo
ZnJhbWUtPnNjcmlwdCgpLT5pc0phdmFTY3JpcHRBbmNob3JOYXZpZ2F0aW9uKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgLy8gSWYgYSBET00gZXZlbnQgaXMgYmVpbmcgcHJvY2Vzc2Vk
LCBjaGVjayB0aGF0IGl0IHdhcyBpbml0aWF0ZWQgYnkgdGhlIHVzZXIKICAgICAvLyBhbmQgdGhh
dCBpdCBpcyBpbiB0aGUgd2hpdGVsaXN0IG9mIGV2ZW50IHR5cGVzIGFsbG93ZWQgdG8gZ2VuZXJh
dGUgcG9wLXVwcy4KLSAgICBpZiAoSlNET01XaW5kb3dTaGVsbCogc2hlbGwgPSBzY3JpcHRDb250
cm9sbGVyLT5leGlzdGluZ1dpbmRvd1NoZWxsKGN1cnJlbnRXb3JsZChleGVjKSkpCisgICAgaWYg
KEpTRE9NV2luZG93U2hlbGwqIHNoZWxsID0gZnJhbWUtPnNjcmlwdCgpLT5leGlzdGluZ1dpbmRv
d1NoZWxsKGN1cnJlbnRXb3JsZChleGVjKSkpCiAgICAgICAgIGlmIChFdmVudCogZXZlbnQgPSBz
aGVsbC0+d2luZG93KCktPmN1cnJlbnRFdmVudCgpKQogICAgICAgICAgICAgcmV0dXJuIGV2ZW50
LT5mcm9tVXNlckdlc3R1cmUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuaAkocmV2aXNpb24gODg5MDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw5
ICsxMjEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYXVzZWQoYm9vbCBiKSB7IG1fcGF1c2Vk
ID0gYjsgfQogICAgIGJvb2wgaXNQYXVzZWQoKSBjb25zdCB7IHJldHVybiBtX3BhdXNlZDsgfQog
Ci0gICAgdm9pZCBzZXRBbGxvd1BvcHVwc0Zyb21QbHVnaW4oYm9vbCBhbGxvd1BvcHVwc0Zyb21Q
bHVnaW4pIHsgbV9hbGxvd1BvcHVwc0Zyb21QbHVnaW4gPSBhbGxvd1BvcHVwc0Zyb21QbHVnaW47
IH0KLSAgICBib29sIGFsbG93UG9wdXBzRnJvbVBsdWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxs
b3dQb3B1cHNGcm9tUGx1Z2luOyB9Ci0gICAgCiAgICAgY29uc3QgU3RyaW5nKiBzb3VyY2VVUkwo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVVSTDsgfSAvLyAwIGlmIHdlIGFyZSBub3QgZXZhbHVh
dGluZyBhbnkgc2NyaXB0CiAKICAgICB2b2lkIGNsZWFyV2luZG93U2hlbGwoYm9vbCBnb2luZ0lu
dG9QYWdlQ2FjaGUgPSBmYWxzZSk7CkBAIC0xODIsNyArMTc5LDYgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgbV9wcm9jZXNzaW5nVGltZXJDYWxsYmFjazsKICAgICBib29sIG1fcGF1c2VkOwotICAg
IGJvb2wgbV9hbGxvd1BvcHVwc0Zyb21QbHVnaW47CiAKICAgICAvLyBUaGUgcm9vdCBvYmplY3Qg
dXNlZCBmb3Igb2JqZWN0cyBib3VuZCBvdXRzaWRlIHRoZSBjb250ZXh0IG9mIGEgcGx1Z2luLCBz
dWNoCiAgICAgLy8gYXMgTlBBUEkgcGx1Z2lucy4gVGhlIHBsdWdpbnMgdXNpbmcgdGhlc2Ugb2Jq
ZWN0cyBwcmV2ZW50IGEgcGFnZSBmcm9tIGJlaW5nIGNhY2hlZCBzbyB0aGV5CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAkocmV2aXNpb24gODg5MDkpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk93bkFycmF5UHRyLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCisjaW5jbHVk
ZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJWOEdDQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIlY4SGVscGVycy5oIgogI2luY2x1ZGUgIlY4TlBVdGlscy5oIgpAQCAtMzEwLDEz
ICszMTEsMTEgQEAgYm9vbCBfTlBOX0V2YWx1YXRlSGVscGVyKE5QUCBucHAsIGJvb2wgcAogICAg
IC8vIHJpZ2h0IGdlc3R1cmUgc3RhdHVzIGZvciBwb3B1cHMgaW5pdGlhdGVkIGZyb20gcGx1Z2lu
cy4KICAgICBGcmFtZSogZnJhbWUgPSBwcm94eS0+ZnJhbWUoKTsKICAgICBBU1NFUlQoZnJhbWUp
OwotICAgIGJvb2wgb2xkQWxsb3dQb3B1cHMgPSBmcmFtZS0+c2NyaXB0KCktPmFsbG93UG9wdXBz
RnJvbVBsdWdpbigpOwotICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0QWxsb3dQb3B1cHNGcm9tUGx1
Z2luKHBvcHVwc0FsbG93ZWQpOwogCiAgICAgU3RyaW5nIHNjcmlwdCA9IFN0cmluZzo6ZnJvbVVU
RjgobnBTY3JpcHQtPlVURjhDaGFyYWN0ZXJzLCBucFNjcmlwdC0+VVRGOExlbmd0aCk7CisKKyAg
ICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNz
aW5nVXNlckdlc3R1cmUpOwogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4cmVzdWx0ID0gcHJv
eHktPmV2YWx1YXRlKFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LCBLVVJMKFBhcnNlZFVSTFN0cmlu
ZywgZmlsZW5hbWUpKSwgMCk7Ci0gICAgLy8gUmVzdG9yZSB0aGUgb2xkIGZsYWcuCi0gICAgZnJh
bWUtPnNjcmlwdCgpLT5zZXRBbGxvd1BvcHVwc0Zyb21QbHVnaW4ob2xkQWxsb3dQb3B1cHMpOwog
CiAgICAgaWYgKHY4cmVzdWx0LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDg4OTA5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNiBAQCBTY3JpcHRDb250
cm9sbGVyOjpTY3JpcHRDb250cm9sbGVyKEZyYW1lCiAgICAgLCBtX2luRXhlY3V0ZVNjcmlwdChm
YWxzZSkKICAgICAsIG1fcHJvY2Vzc2luZ1RpbWVyQ2FsbGJhY2soZmFsc2UpCiAgICAgLCBtX3Bh
dXNlZChmYWxzZSkKLSAgICAsIG1fYWxsb3dQb3B1cHNGcm9tUGx1Z2luKGZhbHNlKQogICAgICwg
bV9wcm94eShhZG9wdFB0cihuZXcgVjhQcm94eShmcmFtZSkpKQogI2lmIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQogICAgICwgbV93aW5kb3dTY3JpcHROUE9iamVjdCgwKQpAQCAtMTU1LDQ3
ICsxNTQsMjcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjp1cGRhdGVQbGF0Zm9ybVNjcgogCiBi
b29sIFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpCiB7Ci0gICAgRnJh
bWUqIGFjdGl2ZUZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0
KCk7Ci0gICAgLy8gTm8gc2NyaXB0IGlzIHJ1bm5pbmcsIHNvIGl0IGlzIHVzZXItaW5pdGlhdGVk
IHVubGVzcyB0aGUgZ2VzdHVyZSBzdGFjawotICAgIC8vIGV4cGxpY2l0bHkgc2F5cyBpdCBpcyBu
b3QuCisgICAgRnJhbWUqIGZpcnN0RnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yRW50
ZXJlZENvbnRleHQoKTsKICAgICBpZiAoIWFjdGl2ZUZyYW1lKQogICAgICAgICByZXR1cm4gVXNl
ckdlc3R1cmVJbmRpY2F0b3I6OmdldFVzZXJHZXN0dXJlU3RhdGUoKSAhPSBEZWZpbml0ZWx5Tm90
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlOwogCi0gICAgVjhQcm94eSogYWN0aXZlUHJveHkgPSBhY3Rp
dmVGcmFtZS0+c2NyaXB0KCktPnByb3h5KCk7Ci0KICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxl
U2NvcGU7Ci0gICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gVjhQcm94eTo6
bWFpbldvcmxkQ29udGV4dChhY3RpdmVGcmFtZSk7Ci0gICAgLy8gRklYTUU6IGZpbmQgYWxsIGNh
c2VzIGNvbnRleHQgY2FuIGJlIGVtcHR5OgotICAgIC8vICAxKSBKUyBpcyBkaXNhYmxlZDsKLSAg
ICAvLyAgMikgcGFnZSBpcyBOVUxMOworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29u
dGV4dCA9IFY4UHJveHk6Om1haW5Xb3JsZENvbnRleHQoZmlyc3RGcmFtZSk7CiAgICAgaWYgKHY4
Q29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotCiAgICAgdjg6OkNvbnRl
eHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4dCk7Ci0KICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGdsb2JhbCA9IHY4Q29udGV4dC0+R2xvYmFsKCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5n
PiBldmVudFN5bWJvbCA9IFY4SGlkZGVuUHJvcGVydHlOYW1lOjpldmVudCgpOwogICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBqc0V2ZW50ID0gZ2xvYmFsLT5HZXRIaWRkZW5WYWx1ZShldmVudFN5
bWJvbCk7CiAgICAgRXZlbnQqIGV2ZW50ID0gVjhET01XcmFwcGVyOjppc1ZhbGlkRE9NT2JqZWN0
KGpzRXZlbnQpID8gVjhFdmVudDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dChqc0V2ZW50KSkgOiAwOwotCi0gICAgLy8gQmFzZWQgb24gY29kZSBmcm9tIEpTQydzIFNjcmlw
dENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZS4KLSAgICAvLyBOb3RlOiBUaGlzIGlz
IG1vcmUgbGliZXJhbCB0aGFuIEZpcmVmb3gncyBpbXBsZW1lbnRhdGlvbi4KLSAgICBpZiAoZXZl
bnQpIHsKLSAgICAgICAgLy8gRXZlbnQ6OmZyb21Vc2VyR2VzdHVyZSB3aWxsIHJldHVybiBmYWxz
ZSB3aGVuIFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSByZXR1
cm5zIGZhbHNlLgorICAgIGlmIChldmVudCkKICAgICAgICAgcmV0dXJuIGV2ZW50LT5mcm9tVXNl
ckdlc3R1cmUoKTsKLSAgICB9Ci0gICAgLy8gRklYTUU6IFdlIGNoZWNrIHRoZSBqYXZhc2NyaXB0
IGFuY2hvciBuYXZpZ2F0aW9uIGZyb20gdGhlIGxhc3QgZW50ZXJlZAotICAgIC8vIGZyYW1lIGJl
Y3Vhc2UgaXQgc2hvdWxkIG9ubHkgYmUgaW5pdGlhdGVkIG9uIHRoZSBsYXN0IGVudGVyZWQgZnJh
bWUgaW4KLSAgICAvLyB3aGljaCBleGVjdXRpb24gYmVnYW4gaWYgaXQgZG9lcyBoYXBwZW4uICAg
IAotICAgIGNvbnN0IFN0cmluZyogc291cmNlVVJMID0gYWN0aXZlRnJhbWUtPnNjcmlwdCgpLT5z
b3VyY2VVUkwoKTsKLSAgICBpZiAoc291cmNlVVJMICYmIHNvdXJjZVVSTC0+aXNOdWxsKCkgJiYg
IWFjdGl2ZVByb3h5LT50aW1lckNhbGxiYWNrKCkpIHsKLSAgICAgICAgLy8gVGhpcyBpcyB0aGUg
PGEgaHJlZj0iamF2YXNjcmlwdDp3aW5kb3cub3BlbignLi4uJyk+IGNhc2UgLT4gd2UgbGV0IGl0
IHRocm91Z2guCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAoYWN0aXZlRnJh
bWUtPnNjcmlwdCgpLT5hbGxvd1BvcHVwc0Zyb21QbHVnaW4oKSkKKworICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyBjaGVjayBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MjcwMiBpcyBmaXhlZC4KKyAgICBjb25zdCBTdHJpbmcqIHNvdXJjZVVSTCA9IGZpcnN0
RnJhbWUtPnNjcmlwdCgpLT5zb3VyY2VVUkwoKTsKKyAgICBpZiAoc291cmNlVVJMICYmIHNvdXJj
ZVVSTC0+aXNOdWxsKCkgJiYgIWZpcnN0RnJhbWUtPnNjcmlwdCgpLT5wcm94eSgpLT50aW1lckNh
bGxiYWNrKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIC8vIFRoaXMgaXMgdGhlIDxzY3Jp
cHQ+d2luZG93Lm9wZW4oLi4uKTwvc2NyaXB0PiBjYXNlIG9yIGEgdGltZXIgY2FsbGJhY2sgLT4g
YmxvY2sgaXQuCi0gICAgLy8gQmFzZWQgb24gSlNDIHZlcnNpb24sIHVzZSByZXR1cm5lZCB2YWx1
ZSBvZiBVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlIGZvciBhbGwg
b3RoZXIgc2l0dWF0aW9ucy4gCisKICAgICByZXR1cm4gVXNlckdlc3R1cmVJbmRpY2F0b3I6OnBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCShyZXZpc2lvbiA4ODkwOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTg5LDkgKzE4OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGV2YWx1YXRlSW5Xb3JsZChjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiwgRE9NV3JhcHBlcldvcmxkKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0
QWxsV29ybGRzKFZlY3RvcjxET01XcmFwcGVyV29ybGQqPiYgd29ybGRzKTsKIAotICAgIHZvaWQg
c2V0QWxsb3dQb3B1cHNGcm9tUGx1Z2luKGJvb2wgYWxsb3dQb3B1cHNGcm9tUGx1Z2luKSB7IG1f
YWxsb3dQb3B1cHNGcm9tUGx1Z2luID0gYWxsb3dQb3B1cHNGcm9tUGx1Z2luOyB9Ci0gICAgYm9v
bCBhbGxvd1BvcHVwc0Zyb21QbHVnaW4oKSBjb25zdCB7IHJldHVybiBtX2FsbG93UG9wdXBzRnJv
bVBsdWdpbjsgfQotCiBwcml2YXRlOgogICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgIGNvbnN0IFN0
cmluZyogbV9zb3VyY2VVUkw7CkBAIC0yMDAsNyArMTk3LDYgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgbV9wcm9jZXNzaW5nVGltZXJDYWxsYmFjazsKICAgICBib29sIG1fcGF1c2VkOwotICAgIGJv
b2wgbV9hbGxvd1BvcHVwc0Zyb21QbHVnaW47CiAKICAgICBPd25QdHI8VjhQcm94eT4gbV9wcm94
eTsKICAgICB0eXBlZGVmIEhhc2hNYXA8V2lkZ2V0KiwgTlBPYmplY3QqPiBQbHVnaW5PYmplY3RN
YXA7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA4ODkxNCkKKysrIFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTA2LTE1ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIFNjcmlwdENvbnRyb2xsZXI6OnNldEFsbG93UG9w
dXBzRnJvbVBsdWdpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjI3MDYKKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6ZXZhbHVhdGUpOgorCiAyMDExLTA2
LTE0ICBFdW5taSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNpb24gODg5MDkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TY3JvbGxWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNzc5LDEyICs3ODAsMTEgQEAg
dm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtSmF2YVNjcmlwdFVSTFJlcQogICAgIC8vIGdyYWIgcmVm
ZXJlbmNlcyB0byB0aGUgcGx1Zy1pbiBoZXJlLgogICAgIFJlZlB0cjxQbHVnaW4+IHBsdWdpbiA9
IG1fcGx1Z2luOwogCi0gICAgYm9vbCBvbGRBbGxvd1BvcHVwcyA9IGZyYW1lLT5zY3JpcHQoKS0+
YWxsb3dQb3B1cHNGcm9tUGx1Z2luKCk7Ci0gICAgZnJhbWUtPnNjcmlwdCgpLT5zZXRBbGxvd1Bv
cHVwc0Zyb21QbHVnaW4ocmVxdWVzdC0+YWxsb3dQb3B1cHMoKSk7Ci0gICAgCi0gICAgU2NyaXB0
VmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KGpzU3RyaW5nKTsK
LQotICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0QWxsb3dQb3B1cHNGcm9tUGx1Z2luKG9sZEFsbG93
UG9wdXBzKTsKKyAgICBTY3JpcHRWYWx1ZSByZXN1bHQ7CisgICAgeworICAgICAgICBVc2VyR2Vz
dHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHJlcXVlc3QtPmFsbG93UG9wdXBzKCkgPyBE
ZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogUG9zc2libHlQcm9jZXNzaW5nVXNlckdl
c3R1cmUpOworICAgICAgICByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQo
anNTdHJpbmcpOworICAgIH0KIAogICAgIC8vIENoZWNrIGlmIGV2YWx1YXRpbmcgdGhlIEphdmFT
Y3JpcHQgZGVzdHJveWVkIHRoZSBwbHVnLWluLgogICAgIGlmICghcGx1Z2luLT5jb250cm9sbGVy
KCkpCkBAIC05NzksMjIgKzk3OSwxNiBAQCBOUE9iamVjdCogUGx1Z2luVmlldzo6cGx1Z2luRWxl
bWVudE5QT2JqCiAKIGJvb2wgUGx1Z2luVmlldzo6ZXZhbHVhdGUoTlBPYmplY3QqIG5wT2JqZWN0
LCBjb25zdCBTdHJpbmcmIHNjcmlwdFN0cmluZywgTlBWYXJpYW50KiByZXN1bHQsIGJvb2wgYWxs
b3dQb3B1cHMpCiB7Ci0gICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fcGx1Z2luRWxlbWVudC0+
ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQorICAgIC8vIEZJWE1FOiBJcyB0
aGlzIGNoZWNrIG5lY2Vzc2FyeT8KKyAgICBpZiAoIW1fcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQo
KS0+ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYm9vbCBvbGRBbGxvd1Bv
cHVwcyA9IGZyYW1lLT5zY3JpcHQoKS0+YWxsb3dQb3B1cHNGcm9tUGx1Z2luKCk7Ci0gICAgZnJh
bWUtPnNjcmlwdCgpLT5zZXRBbGxvd1BvcHVwc0Zyb21QbHVnaW4oYWxsb3dQb3B1cHMpOwotCiAg
ICAgLy8gQ2FsbGluZyBldmFsdWF0ZSB3aWxsIHJ1biBKYXZhU2NyaXB0IHRoYXQgY2FuIHBvdGVu
dGlhbGx5IHJlbW92ZSB0aGUgcGx1Zy1pbiBlbGVtZW50LCBzbyB3ZSBuZWVkIHRvCiAgICAgLy8g
cHJvdGVjdCB0aGUgcGx1Zy1pbiB2aWV3IGZyb20gZGVzdHJ1Y3Rpb24uCiAgICAgTlBSdW50aW1l
T2JqZWN0TWFwOjpQbHVnaW5Qcm90ZWN0b3IgcGx1Z2luUHJvdGVjdG9yKCZtX25wUnVudGltZU9i
amVjdE1hcCk7CiAKLSAgICBib29sIHJldHVyblZhbHVlID0gbV9ucFJ1bnRpbWVPYmplY3RNYXAu
ZXZhbHVhdGUobnBPYmplY3QsIHNjcmlwdFN0cmluZywgcmVzdWx0KTsKLQotICAgIGZyYW1lLT5z
Y3JpcHQoKS0+c2V0QWxsb3dQb3B1cHNGcm9tUGx1Z2luKG9sZEFsbG93UG9wdXBzKTsKLQotICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5k
aWNhdG9yKGFsbG93UG9wdXBzID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IFBv
c3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKKyAgICByZXR1cm4gbV9ucFJ1bnRpbWVPYmpl
Y3RNYXAuZXZhbHVhdGUobnBPYmplY3QsIHNjcmlwdFN0cmluZywgcmVzdWx0KTsKIH0KIAogYm9v
bCBQbHVnaW5WaWV3Ojp0cnlUb1Nob3J0Q2lyY3VpdEludm9rZShOUE9iamVjdCosIE5QSWRlbnRp
ZmllciBtZXRob2ROYW1lLCBjb25zdCBOUFZhcmlhbnQqIGFyZ3VtZW50cywgdWludDMyX3QgYXJn
dW1lbnRDb3VudCwgYm9vbCYgcmV0dXJuVmFsdWUsIE5QVmFyaWFudCYgcmVzdWx0KQpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkocmV2aXNpb24gODg5MTQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wNi0xNSAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbW92ZSBTY3JpcHRDb250cm9sbGVyOjpzZXRBbGxvd1BvcHVw
c0Zyb21QbHVnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYyNzA2CisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eTo6ZXZhbHVhdGUpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1t
OgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc2VuZEV2ZW50OmlzRHJhd1JlY3Q6
XSk6CisKIDIwMTEtMDYtMTQgIFN0ZXBoYW5pZSBMZXdpcyAgPHNsZXdpc0BhcHBsZS5jb20+CiAK
ICAgICAgICAgUnViYmVyIHN0YW1wZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQkocmV2aXNp
b24gODg5MDkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9TY3JpcHRDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+IAorI2ltcG9ydCA8V2ViQ29yZS9Vc2Vy
R2VzdHVyZUluZGljYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVVJMUmVzcG9uc2UuaD4KICNpbXBvcnQgPFdlYkNv
cmUvbnBydW50aW1lX2ltcGwuaD4KQEAgLTY2NSwxNiArNjY2LDEzIEBAIC0gKEJPT0wpc2VuZEV2
ZW50Oih2b2lkKilldmVudCBpc0RyYXdSZWMKICAgICBbc2VsZiB3aWxsQ2FsbFBsdWdJbkZ1bmN0
aW9uXTsKICAgICAvLyBTZXQgdGhlIHBsdWdpbkFsbG93UG9wdXAgZmxhZy4KICAgICBBU1NFUlQo
X2V2ZW50SGFuZGxlcik7Ci0gICAgYm9vbCBvbGRBbGxvd1BvcHVwcyA9IGZyYW1lLT5zY3JpcHQo
KS0+YWxsb3dQb3B1cHNGcm9tUGx1Z2luKCk7Ci0gICAgZnJhbWUtPnNjcmlwdCgpLT5zZXRBbGxv
d1BvcHVwc0Zyb21QbHVnaW4oX2V2ZW50SGFuZGxlci0+Y3VycmVudEV2ZW50SXNVc2VyR2VzdHVy
ZSgpKTsgICAgCiAgICAgewogICAgICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BB
bGxMb2NrcyhKU0M6OlNpbGVuY2VBc3NlcnRpb25zT25seSk7CisgICAgICAgIFVzZXJHZXN0dXJl
SW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoX2V2ZW50SGFuZGxlci0+Y3VycmVudEV2ZW50SXNV
c2VyR2VzdHVyZSgpID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IFBvc3NpYmx5
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICAgICAgYWNjZXB0ZWRFdmVudCA9IFtfcGx1Z2lu
UGFja2FnZS5nZXQoKSBwbHVnaW5GdW5jc10tPmV2ZW50KHBsdWdpbiwgZXZlbnQpOwogICAgIH0K
LSAgICAvLyBSZXN0b3JlIHRoZSBvbGQgcGx1Z2luQWxsb3dQb3B1cCBmbGFnLgotICAgIGZyYW1l
LT5zY3JpcHQoKS0+c2V0QWxsb3dQb3B1cHNGcm9tUGx1Z2luKG9sZEFsbG93UG9wdXBzKTsgICAg
IAogICAgIFtzZWxmIGRpZENhbGxQbHVnSW5GdW5jdGlvbl07Ci0gICAgICAgIAorCiAgICAgaWYg
KHBvcnRTdGF0ZSkgewogICAgICAgICBpZiAoW3NlbGYgY3VycmVudFdpbmRvd10pCiAgICAgICAg
ICAgICBbc2VsZiByZXN0b3JlUG9ydFN0YXRlOnBvcnRTdGF0ZV07CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5Lm1tCShyZXZpc2lvbiA4ODkwOSkKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQkod29ya2luZyBj
b3B5KQpAQCAtNTUsNiArNTUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVy
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdFZhbHVlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0
cmluZ1NvdXJjZVByb3ZpZGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNh
dG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL25wcnVudGltZV9pbXBsLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL3J1bnRpbWVfb2JqZWN0Lmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4K
QEAgLTg2OSwxNiArODcwLDE0IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpl
dmFsdWEKICAgICBTdHJvbmc8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCgqcGx1Z2luV29y
bGQoKS0+Z2xvYmFsRGF0YSgpLCBmcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdChwbHVnaW5X
b3JsZCgpKSk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCk7CiAKLSAgICBib29sIG9sZEFsbG93UG9wdXBzID0gZnJhbWUtPnNjcmlwdCgpLT5hbGxvd1Bv
cHVwc0Zyb21QbHVnaW4oKTsKLSAgICBmcmFtZS0+c2NyaXB0KCktPnNldEFsbG93UG9wdXBzRnJv
bVBsdWdpbihhbGxvd1BvcHVwcyk7Ci0gICAgCiAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRh
KCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKKworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdl
c3R1cmVJbmRpY2F0b3IoYWxsb3dQb3B1cHMgPyBEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0
dXJlIDogUG9zc2libHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogICAgIENvbXBsZXRpb24gY29t
cGxldGlvbiA9IEpTQzo6ZXZhbHVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNo
YWluKCksIG1ha2VTb3VyY2Uoc2NyaXB0KSk7CisKICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERh
dGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAgICAgQ29tcGxUeXBlIHR5cGUgPSBjb21wbGV0
aW9uLmNvbXBsVHlwZSgpOwogCi0gICAgZnJhbWUtPnNjcmlwdCgpLT5zZXRBbGxvd1BvcHVwc0Zy
b21QbHVnaW4ob2xkQWxsb3dQb3B1cHMpOwotICAgIAogICAgIEpTVmFsdWUgcmVzdWx0OwogICAg
IGlmICh0eXBlID09IE5vcm1hbCkKICAgICAgICAgcmVzdWx0ID0gY29tcGxldGlvbi52YWx1ZSgp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97262</attachid>
            <date>2011-06-15 02:04:08 -0700</date>
            <delta_ts>2011-06-15 14:26:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62706-20110615020407.patch</filename>
            <type>text/plain</type>
            <size>16572</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4OTE0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDYtMTUgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW1vdmUgU2NyaXB0Q29udHJvbGxlcjo6c2V0QWxsb3dQb3B1cHNG
cm9tUGx1Z2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MjcwNgorCisgICAgICAgIFRoaXMgQVBJIGlzIGp1c3QgYSBwb29yIG1hbidzIFVzZXJHZXN0
dXJlSW5kaWNhdG9yLiAgV2Ugc2hvdWxkIHVzZSB0aGUKKyAgICAgICAgcmVhbCBkZWFsLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L05Q
VjhPYmplY3QuY3BwOgorICAgICAgICAoX05QTl9FdmFsdWF0ZUhlbHBlcik6CisgICAgICAgICog
YmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5oOgorCiAyMDExLTA2LTE1ICBOaWtvbGFzIFppbW1lcm1hbm4g
IDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0
LgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAJKHJldmlzaW9uIDg4OTE0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDYgQEAgU2NyaXB0
Q29udHJvbGxlcjo6U2NyaXB0Q29udHJvbGxlcihGcmFtZQogICAgICwgbV9pbkV4ZWN1dGVTY3Jp
cHQoZmFsc2UpCiAgICAgLCBtX3Byb2Nlc3NpbmdUaW1lckNhbGxiYWNrKGZhbHNlKQogICAgICwg
bV9wYXVzZWQoZmFsc2UpCi0gICAgLCBtX2FsbG93UG9wdXBzRnJvbVBsdWdpbihmYWxzZSkKICNp
ZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAsIG1fd2luZG93U2NyaXB0TlBPYmpl
Y3QoMCkKICNlbmRpZgpAQCAtMjUyLDE3ICsyNTEsMTMgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVy
Ojpwcm9jZXNzaW5nVXNlckdlcwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBVc2Vy
R2VzdHVyZUluZGljYXRvcjo6Z2V0VXNlckdlc3R1cmVTdGF0ZSgpICE9IERlZmluaXRlbHlOb3RQ
cm9jZXNzaW5nVXNlckdlc3R1cmU7CiAKLSAgICAvLyBGSVhNRTogV2UgY2hlY2sgdGhlIHBsdWdp
biBwb3B1cCBmbGFnIGFuZCBqYXZhc2NyaXB0IGFuY2hvciBuYXZpZ2F0aW9uCi0gICAgLy8gZnJv
bSB0aGUgZHluYW1pYyBmcmFtZSBiZWN1YXNlIHRoZXkgc2hvdWxkIG9ubHkgYmUgaW5pdGlhdGVk
IG9uIHRoZQotICAgIC8vIGR5bmFtaWMgZnJhbWUgaW4gd2hpY2ggZXhlY3V0aW9uIGJlZ2FuIGlm
IHRoZXkgZG8gaGFwcGVuLgotICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIg
PSBmcmFtZS0+c2NyaXB0KCk7Ci0gICAgQVNTRVJUKHNjcmlwdENvbnRyb2xsZXIpOwotICAgIGlm
IChzY3JpcHRDb250cm9sbGVyLT5hbGxvd1BvcHVwc0Zyb21QbHVnaW4oKSB8fCBzY3JpcHRDb250
cm9sbGVyLT5pc0phdmFTY3JpcHRBbmNob3JOYXZpZ2F0aW9uKCkpCisgICAgLy8gRklYTUU6IFJl
bW92ZSB0aGUgaXNKYXZhU2NyaXB0QW5jaG9yTmF2aWdhdGlvbiBjaGVjayBvbmNlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjcwMiBpcyBmaXhlZC4KKyAgICBpZiAo
ZnJhbWUtPnNjcmlwdCgpLT5pc0phdmFTY3JpcHRBbmNob3JOYXZpZ2F0aW9uKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgLy8gSWYgYSBET00gZXZlbnQgaXMgYmVpbmcgcHJvY2Vzc2Vk
LCBjaGVjayB0aGF0IGl0IHdhcyBpbml0aWF0ZWQgYnkgdGhlIHVzZXIKICAgICAvLyBhbmQgdGhh
dCBpdCBpcyBpbiB0aGUgd2hpdGVsaXN0IG9mIGV2ZW50IHR5cGVzIGFsbG93ZWQgdG8gZ2VuZXJh
dGUgcG9wLXVwcy4KLSAgICBpZiAoSlNET01XaW5kb3dTaGVsbCogc2hlbGwgPSBzY3JpcHRDb250
cm9sbGVyLT5leGlzdGluZ1dpbmRvd1NoZWxsKGN1cnJlbnRXb3JsZChleGVjKSkpCisgICAgaWYg
KEpTRE9NV2luZG93U2hlbGwqIHNoZWxsID0gZnJhbWUtPnNjcmlwdCgpLT5leGlzdGluZ1dpbmRv
d1NoZWxsKGN1cnJlbnRXb3JsZChleGVjKSkpCiAgICAgICAgIGlmIChFdmVudCogZXZlbnQgPSBz
aGVsbC0+d2luZG93KCktPmN1cnJlbnRFdmVudCgpKQogICAgICAgICAgICAgcmV0dXJuIGV2ZW50
LT5mcm9tVXNlckdlc3R1cmUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuaAkocmV2aXNpb24gODg5MTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw5
ICsxMjEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYXVzZWQoYm9vbCBiKSB7IG1fcGF1c2Vk
ID0gYjsgfQogICAgIGJvb2wgaXNQYXVzZWQoKSBjb25zdCB7IHJldHVybiBtX3BhdXNlZDsgfQog
Ci0gICAgdm9pZCBzZXRBbGxvd1BvcHVwc0Zyb21QbHVnaW4oYm9vbCBhbGxvd1BvcHVwc0Zyb21Q
bHVnaW4pIHsgbV9hbGxvd1BvcHVwc0Zyb21QbHVnaW4gPSBhbGxvd1BvcHVwc0Zyb21QbHVnaW47
IH0KLSAgICBib29sIGFsbG93UG9wdXBzRnJvbVBsdWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxs
b3dQb3B1cHNGcm9tUGx1Z2luOyB9Ci0gICAgCiAgICAgY29uc3QgU3RyaW5nKiBzb3VyY2VVUkwo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVVSTDsgfSAvLyAwIGlmIHdlIGFyZSBub3QgZXZhbHVh
dGluZyBhbnkgc2NyaXB0CiAKICAgICB2b2lkIGNsZWFyV2luZG93U2hlbGwoYm9vbCBnb2luZ0lu
dG9QYWdlQ2FjaGUgPSBmYWxzZSk7CkBAIC0xODIsNyArMTc5LDYgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgbV9wcm9jZXNzaW5nVGltZXJDYWxsYmFjazsKICAgICBib29sIG1fcGF1c2VkOwotICAg
IGJvb2wgbV9hbGxvd1BvcHVwc0Zyb21QbHVnaW47CiAKICAgICAvLyBUaGUgcm9vdCBvYmplY3Qg
dXNlZCBmb3Igb2JqZWN0cyBib3VuZCBvdXRzaWRlIHRoZSBjb250ZXh0IG9mIGEgcGx1Z2luLCBz
dWNoCiAgICAgLy8gYXMgTlBBUEkgcGx1Z2lucy4gVGhlIHBsdWdpbnMgdXNpbmcgdGhlc2Ugb2Jq
ZWN0cyBwcmV2ZW50IGEgcGFnZSBmcm9tIGJlaW5nIGNhY2hlZCBzbyB0aGV5CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAkocmV2aXNpb24gODg5MTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk93bkFycmF5UHRyLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCisjaW5jbHVk
ZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJWOEdDQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIlY4SGVscGVycy5oIgogI2luY2x1ZGUgIlY4TlBVdGlscy5oIgpAQCAtMzAyLDIx
ICszMDMsMTUgQEAgYm9vbCBfTlBOX0V2YWx1YXRlSGVscGVyKE5QUCBucHAsIGJvb2wgcAogICAg
IHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShjb250ZXh0KTsKICAgICBFeGNlcHRpb25DYXRjaGVy
IGV4Y2VwdGlvbkNhdGNoZXI7CiAKKyAgICAvLyBGSVhNRTogSXMgdGhpcyBicmFuY2ggc3RpbGwg
bmVlZGVkIGFmdGVyIHN3aXRjaGluZyB0byB1c2luZyBVc2VyR2VzdHVyZUluZGljYXRvcj8KICAg
ICBTdHJpbmcgZmlsZW5hbWU7CiAgICAgaWYgKCFwb3B1cHNBbGxvd2VkKQogICAgICAgICBmaWxl
bmFtZSA9ICJucHNjcmlwdCI7CiAKLSAgICAvLyBTZXQgcG9wdXBzQWxsb3dlZCBmbGFnIHRvIHRo
ZSBjdXJyZW50IGV4ZWN1dGlvbiBmcmFtZSwgc28gV2ViS2l0IGNhbiBnZXQKLSAgICAvLyByaWdo
dCBnZXN0dXJlIHN0YXR1cyBmb3IgcG9wdXBzIGluaXRpYXRlZCBmcm9tIHBsdWdpbnMuCi0gICAg
RnJhbWUqIGZyYW1lID0gcHJveHktPmZyYW1lKCk7Ci0gICAgQVNTRVJUKGZyYW1lKTsKLSAgICBi
b29sIG9sZEFsbG93UG9wdXBzID0gZnJhbWUtPnNjcmlwdCgpLT5hbGxvd1BvcHVwc0Zyb21QbHVn
aW4oKTsKLSAgICBmcmFtZS0+c2NyaXB0KCktPnNldEFsbG93UG9wdXBzRnJvbVBsdWdpbihwb3B1
cHNBbGxvd2VkKTsKLQogICAgIFN0cmluZyBzY3JpcHQgPSBTdHJpbmc6OmZyb21VVEY4KG5wU2Ny
aXB0LT5VVEY4Q2hhcmFjdGVycywgbnBTY3JpcHQtPlVURjhMZW5ndGgpOworCisgICAgVXNlckdl
c3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihwb3B1cHNBbGxvd2VkID8gRGVmaW5pdGVs
eVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IFBvc3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsK
ICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OHJlc3VsdCA9IHByb3h5LT5ldmFsdWF0ZShTY3Jp
cHRTb3VyY2VDb2RlKHNjcmlwdCwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIGZpbGVuYW1lKSksIDAp
OwotICAgIC8vIFJlc3RvcmUgdGhlIG9sZCBmbGFnLgotICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0
QWxsb3dQb3B1cHNGcm9tUGx1Z2luKG9sZEFsbG93UG9wdXBzKTsKIAogICAgIGlmICh2OHJlc3Vs
dC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA4ODkxNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDYgQEAgU2NyaXB0Q29udHJvbGxlcjo6U2NyaXB0Q29u
dHJvbGxlcihGcmFtZQogICAgICwgbV9pbkV4ZWN1dGVTY3JpcHQoZmFsc2UpCiAgICAgLCBtX3By
b2Nlc3NpbmdUaW1lckNhbGxiYWNrKGZhbHNlKQogICAgICwgbV9wYXVzZWQoZmFsc2UpCi0gICAg
LCBtX2FsbG93UG9wdXBzRnJvbVBsdWdpbihmYWxzZSkKICAgICAsIG1fcHJveHkoYWRvcHRQdHIo
bmV3IFY4UHJveHkoZnJhbWUpKSkKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAg
ICAsIG1fd2luZG93U2NyaXB0TlBPYmplY3QoMCkKQEAgLTE1NSw0NyArMTU0LDI3IEBAIHZvaWQg
U2NyaXB0Q29udHJvbGxlcjo6dXBkYXRlUGxhdGZvcm1TY3IKIAogYm9vbCBTY3JpcHRDb250cm9s
bGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKQogewotICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9
IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JFbnRlcmVkQ29udGV4dCgpOwotICAgIC8vIE5vIHNj
cmlwdCBpcyBydW5uaW5nLCBzbyBpdCBpcyB1c2VyLWluaXRpYXRlZCB1bmxlc3MgdGhlIGdlc3R1
cmUgc3RhY2sKLSAgICAvLyBleHBsaWNpdGx5IHNheXMgaXQgaXMgbm90LgorICAgIEZyYW1lKiBm
aXJzdEZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCk7CiAg
ICAgaWYgKCFhY3RpdmVGcmFtZSkKICAgICAgICAgcmV0dXJuIFVzZXJHZXN0dXJlSW5kaWNhdG9y
OjpnZXRVc2VyR2VzdHVyZVN0YXRlKCkgIT0gRGVmaW5pdGVseU5vdFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZTsKIAotICAgIFY4UHJveHkqIGFjdGl2ZVByb3h5ID0gYWN0aXZlRnJhbWUtPnNjcmlwdCgp
LT5wcm94eSgpOwotCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpI
YW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IFY4UHJveHk6Om1haW5Xb3JsZENvbnRleHQo
YWN0aXZlRnJhbWUpOwotICAgIC8vIEZJWE1FOiBmaW5kIGFsbCBjYXNlcyBjb250ZXh0IGNhbiBi
ZSBlbXB0eToKLSAgICAvLyAgMSkgSlMgaXMgZGlzYWJsZWQ7Ci0gICAgLy8gIDIpIHBhZ2UgaXMg
TlVMTDsKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSBWOFByb3h5Ojpt
YWluV29ybGRDb250ZXh0KGZpcnN0RnJhbWUpOwogICAgIGlmICh2OENvbnRleHQuSXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZSh2
OENvbnRleHQpOwotCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWwgPSB2OENvbnRl
eHQtPkdsb2JhbCgpOwogICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gZXZlbnRTeW1ib2wgPSBW
OEhpZGRlblByb3BlcnR5TmFtZTo6ZXZlbnQoKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
anNFdmVudCA9IGdsb2JhbC0+R2V0SGlkZGVuVmFsdWUoZXZlbnRTeW1ib2wpOwogICAgIEV2ZW50
KiBldmVudCA9IFY4RE9NV3JhcHBlcjo6aXNWYWxpZERPTU9iamVjdChqc0V2ZW50KSA/IFY4RXZl
bnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoanNFdmVudCkpIDogMDsK
LQotICAgIC8vIEJhc2VkIG9uIGNvZGUgZnJvbSBKU0MncyBTY3JpcHRDb250cm9sbGVyOjpwcm9j
ZXNzaW5nVXNlckdlc3R1cmUuCi0gICAgLy8gTm90ZTogVGhpcyBpcyBtb3JlIGxpYmVyYWwgdGhh
biBGaXJlZm94J3MgaW1wbGVtZW50YXRpb24uCi0gICAgaWYgKGV2ZW50KSB7Ci0gICAgICAgIC8v
IEV2ZW50Ojpmcm9tVXNlckdlc3R1cmUgd2lsbCByZXR1cm4gZmFsc2Ugd2hlbiBVc2VyR2VzdHVy
ZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkgcmV0dXJucyBmYWxzZS4KKyAgICBp
ZiAoZXZlbnQpCiAgICAgICAgIHJldHVybiBldmVudC0+ZnJvbVVzZXJHZXN0dXJlKCk7Ci0gICAg
fQotICAgIC8vIEZJWE1FOiBXZSBjaGVjayB0aGUgamF2YXNjcmlwdCBhbmNob3IgbmF2aWdhdGlv
biBmcm9tIHRoZSBsYXN0IGVudGVyZWQKLSAgICAvLyBmcmFtZSBiZWN1YXNlIGl0IHNob3VsZCBv
bmx5IGJlIGluaXRpYXRlZCBvbiB0aGUgbGFzdCBlbnRlcmVkIGZyYW1lIGluCi0gICAgLy8gd2hp
Y2ggZXhlY3V0aW9uIGJlZ2FuIGlmIGl0IGRvZXMgaGFwcGVuLiAgICAKLSAgICBjb25zdCBTdHJp
bmcqIHNvdXJjZVVSTCA9IGFjdGl2ZUZyYW1lLT5zY3JpcHQoKS0+c291cmNlVVJMKCk7Ci0gICAg
aWYgKHNvdXJjZVVSTCAmJiBzb3VyY2VVUkwtPmlzTnVsbCgpICYmICFhY3RpdmVQcm94eS0+dGlt
ZXJDYWxsYmFjaygpKSB7Ci0gICAgICAgIC8vIFRoaXMgaXMgdGhlIDxhIGhyZWY9ImphdmFzY3Jp
cHQ6d2luZG93Lm9wZW4oJy4uLicpPiBjYXNlIC0+IHdlIGxldCBpdCB0aHJvdWdoLgotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKGFjdGl2ZUZyYW1lLT5zY3JpcHQoKS0+YWxs
b3dQb3B1cHNGcm9tUGx1Z2luKCkpCisKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY2hlY2sg
b25jZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI3MDIgaXMgZml4
ZWQuCisgICAgY29uc3QgU3RyaW5nKiBzb3VyY2VVUkwgPSBmaXJzdEZyYW1lLT5zY3JpcHQoKS0+
c291cmNlVVJMKCk7CisgICAgaWYgKHNvdXJjZVVSTCAmJiBzb3VyY2VVUkwtPmlzTnVsbCgpICYm
ICFmaXJzdEZyYW1lLT5zY3JpcHQoKS0+cHJveHkoKS0+dGltZXJDYWxsYmFjaygpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAvLyBUaGlzIGlzIHRoZSA8c2NyaXB0PndpbmRvdy5vcGVuKC4u
Lik8L3NjcmlwdD4gY2FzZSBvciBhIHRpbWVyIGNhbGxiYWNrIC0+IGJsb2NrIGl0LgotICAgIC8v
IEJhc2VkIG9uIEpTQyB2ZXJzaW9uLCB1c2UgcmV0dXJuZWQgdmFsdWUgb2YgVXNlckdlc3R1cmVJ
bmRpY2F0b3I6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSBmb3IgYWxsIG90aGVyIHNpdHVhdGlvbnMu
IAorCiAgICAgcmV0dXJuIFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1
cmUoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJv
bGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENv
bnRyb2xsZXIuaAkocmV2aXNpb24gODg5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw5ICsxODksNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBldmFsdWF0ZUluV29ybGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYs
IERPTVdyYXBwZXJXb3JsZCopOwogICAgIHN0YXRpYyB2b2lkIGdldEFsbFdvcmxkcyhWZWN0b3I8
RE9NV3JhcHBlcldvcmxkKj4mIHdvcmxkcyk7CiAKLSAgICB2b2lkIHNldEFsbG93UG9wdXBzRnJv
bVBsdWdpbihib29sIGFsbG93UG9wdXBzRnJvbVBsdWdpbikgeyBtX2FsbG93UG9wdXBzRnJvbVBs
dWdpbiA9IGFsbG93UG9wdXBzRnJvbVBsdWdpbjsgfQotICAgIGJvb2wgYWxsb3dQb3B1cHNGcm9t
UGx1Z2luKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd1BvcHVwc0Zyb21QbHVnaW47IH0KLQogcHJp
dmF0ZToKICAgICBGcmFtZSogbV9mcmFtZTsKICAgICBjb25zdCBTdHJpbmcqIG1fc291cmNlVVJM
OwpAQCAtMjAwLDcgKzE5Nyw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fcHJvY2Vzc2luZ1Rp
bWVyQ2FsbGJhY2s7CiAgICAgYm9vbCBtX3BhdXNlZDsKLSAgICBib29sIG1fYWxsb3dQb3B1cHNG
cm9tUGx1Z2luOwogCiAgICAgT3duUHRyPFY4UHJveHk+IG1fcHJveHk7CiAgICAgdHlwZWRlZiBI
YXNoTWFwPFdpZGdldCosIE5QT2JqZWN0Kj4gUGx1Z2luT2JqZWN0TWFwOwpJbmRleDogU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwkocmV2aXNpb24gODg5MTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0wNi0xNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZSBTY3JpcHRDb250cm9sbGVyOjpzZXRBbGxvd1BvcHVwc0Zyb21QbHVnaW4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzA2CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblZpZXc6OnBlcmZvcm1KYXZhU2NyaXB0VVJMUmVxdWVzdCk6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblZpZXc6OmV2YWx1YXRlKToKKwogMjAxMS0wNi0xNCAgRXVubWkgTGVlICA8
ZXVubWkxNS5sZWVAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5p
Zy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAJKHJldmlzaW9uIDg4OTE0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xs
Vmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKQEAgLTc3OSwxMiArNzgwLDExIEBAIHZvaWQgUGx1Z2luVmlldzo6
cGVyZm9ybUphdmFTY3JpcHRVUkxSZXEKICAgICAvLyBncmFiIHJlZmVyZW5jZXMgdG8gdGhlIHBs
dWctaW4gaGVyZS4KICAgICBSZWZQdHI8UGx1Z2luPiBwbHVnaW4gPSBtX3BsdWdpbjsKIAotICAg
IGJvb2wgb2xkQWxsb3dQb3B1cHMgPSBmcmFtZS0+c2NyaXB0KCktPmFsbG93UG9wdXBzRnJvbVBs
dWdpbigpOwotICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0QWxsb3dQb3B1cHNGcm9tUGx1Z2luKHJl
cXVlc3QtPmFsbG93UG9wdXBzKCkpOwotICAgIAotICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IGZy
YW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChqc1N0cmluZyk7Ci0KLSAgICBmcmFtZS0+c2Ny
aXB0KCktPnNldEFsbG93UG9wdXBzRnJvbVBsdWdpbihvbGRBbGxvd1BvcHVwcyk7CisgICAgU2Ny
aXB0VmFsdWUgcmVzdWx0OworICAgIHsKKyAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2Vz
dHVyZUluZGljYXRvcihyZXF1ZXN0LT5hbGxvd1BvcHVwcygpID8gRGVmaW5pdGVseVByb2Nlc3Np
bmdVc2VyR2VzdHVyZSA6IFBvc3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKKyAgICAgICAg
cmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KGpzU3RyaW5nKTsKKyAgICB9
CiAKICAgICAvLyBDaGVjayBpZiBldmFsdWF0aW5nIHRoZSBKYXZhU2NyaXB0IGRlc3Ryb3llZCB0
aGUgcGx1Zy1pbi4KICAgICBpZiAoIXBsdWdpbi0+Y29udHJvbGxlcigpKQpAQCAtOTc5LDIyICs5
NzksMTYgQEAgTlBPYmplY3QqIFBsdWdpblZpZXc6OnBsdWdpbkVsZW1lbnROUE9iagogCiBib29s
IFBsdWdpblZpZXc6OmV2YWx1YXRlKE5QT2JqZWN0KiBucE9iamVjdCwgY29uc3QgU3RyaW5nJiBz
Y3JpcHRTdHJpbmcsIE5QVmFyaWFudCogcmVzdWx0LCBib29sIGFsbG93UG9wdXBzKQogewotICAg
IFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBtX3BsdWdpbkVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1l
KCk7Ci0gICAgaWYgKCFmcmFtZSkKKyAgICAvLyBGSVhNRTogSXMgdGhpcyBjaGVjayBuZWNlc3Nh
cnk/CisgICAgaWYgKCFtX3BsdWdpbkVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgb2xkQWxsb3dQb3B1cHMgPSBmcmFtZS0+c2Ny
aXB0KCktPmFsbG93UG9wdXBzRnJvbVBsdWdpbigpOwotICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0
QWxsb3dQb3B1cHNGcm9tUGx1Z2luKGFsbG93UG9wdXBzKTsKLQogICAgIC8vIENhbGxpbmcgZXZh
bHVhdGUgd2lsbCBydW4gSmF2YVNjcmlwdCB0aGF0IGNhbiBwb3RlbnRpYWxseSByZW1vdmUgdGhl
IHBsdWctaW4gZWxlbWVudCwgc28gd2UgbmVlZCB0bwogICAgIC8vIHByb3RlY3QgdGhlIHBsdWct
aW4gdmlldyBmcm9tIGRlc3RydWN0aW9uLgogICAgIE5QUnVudGltZU9iamVjdE1hcDo6UGx1Z2lu
UHJvdGVjdG9yIHBsdWdpblByb3RlY3RvcigmbV9ucFJ1bnRpbWVPYmplY3RNYXApOwogCi0gICAg
Ym9vbCByZXR1cm5WYWx1ZSA9IG1fbnBSdW50aW1lT2JqZWN0TWFwLmV2YWx1YXRlKG5wT2JqZWN0
LCBzY3JpcHRTdHJpbmcsIHJlc3VsdCk7Ci0KLSAgICBmcmFtZS0+c2NyaXB0KCktPnNldEFsbG93
UG9wdXBzRnJvbVBsdWdpbihvbGRBbGxvd1BvcHVwcyk7Ci0KLSAgICByZXR1cm4gcmV0dXJuVmFs
dWU7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihhbGxvd1BvcHVw
cyA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVByb2Nlc3NpbmdV
c2VyR2VzdHVyZSk7CisgICAgcmV0dXJuIG1fbnBSdW50aW1lT2JqZWN0TWFwLmV2YWx1YXRlKG5w
T2JqZWN0LCBzY3JpcHRTdHJpbmcsIHJlc3VsdCk7CiB9CiAKIGJvb2wgUGx1Z2luVmlldzo6dHJ5
VG9TaG9ydENpcmN1aXRJbnZva2UoTlBPYmplY3QqLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSwg
Y29uc3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbnQzMl90IGFyZ3VtZW50Q291bnQsIGJvb2wm
IHJldHVyblZhbHVlLCBOUFZhcmlhbnQmIHJlc3VsdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg4OTE0KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDYtMTUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZW1vdmUgU2NyaXB0Q29udHJvbGxlcjo6c2V0QWxsb3dQb3B1cHNGcm9tUGx1Z2luCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjcwNgorCisgICAg
ICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmV2YWx1YXRlKToKKyAg
ICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2Vi
TmV0c2NhcGVQbHVnaW5WaWV3IHNlbmRFdmVudDppc0RyYXdSZWN0Ol0pOgorCiAyMDExLTA2LTE0
ICBTdGVwaGFuaWUgTGV3aXMgIDxzbGV3aXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJ1YmJlciBz
dGFtcGVkIGJ5IE9saXZlciBIdW50LgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0JKHJldmlzaW9uIDg4OTE0KQorKysgU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDYgKzcwLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxl
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Tb2Z0TGlua2luZy5oPiAKKyNpbXBvcnQgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3Iu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZVVSTFJlc3BvbnNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL25wcnVudGltZV9pbXBs
Lmg+CkBAIC02NjUsMTYgKzY2NiwxMyBAQCAtIChCT09MKXNlbmRFdmVudDoodm9pZCopZXZlbnQg
aXNEcmF3UmVjCiAgICAgW3NlbGYgd2lsbENhbGxQbHVnSW5GdW5jdGlvbl07CiAgICAgLy8gU2V0
IHRoZSBwbHVnaW5BbGxvd1BvcHVwIGZsYWcuCiAgICAgQVNTRVJUKF9ldmVudEhhbmRsZXIpOwot
ICAgIGJvb2wgb2xkQWxsb3dQb3B1cHMgPSBmcmFtZS0+c2NyaXB0KCktPmFsbG93UG9wdXBzRnJv
bVBsdWdpbigpOwotICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0QWxsb3dQb3B1cHNGcm9tUGx1Z2lu
KF9ldmVudEhhbmRsZXItPmN1cnJlbnRFdmVudElzVXNlckdlc3R1cmUoKSk7ICAgIAogICAgIHsK
ICAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNDOjpTaWxl
bmNlQXNzZXJ0aW9uc09ubHkpOworICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJl
SW5kaWNhdG9yKF9ldmVudEhhbmRsZXItPmN1cnJlbnRFdmVudElzVXNlckdlc3R1cmUoKSA/IERl
ZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSk7CiAgICAgICAgIGFjY2VwdGVkRXZlbnQgPSBbX3BsdWdpblBhY2thZ2UuZ2V0KCkgcGx1
Z2luRnVuY3NdLT5ldmVudChwbHVnaW4sIGV2ZW50KTsKICAgICB9Ci0gICAgLy8gUmVzdG9yZSB0
aGUgb2xkIHBsdWdpbkFsbG93UG9wdXAgZmxhZy4KLSAgICBmcmFtZS0+c2NyaXB0KCktPnNldEFs
bG93UG9wdXBzRnJvbVBsdWdpbihvbGRBbGxvd1BvcHVwcyk7ICAgICAKICAgICBbc2VsZiBkaWRD
YWxsUGx1Z0luRnVuY3Rpb25dOwotICAgICAgICAKKwogICAgIGlmIChwb3J0U3RhdGUpIHsKICAg
ICAgICAgaWYgKFtzZWxmIGN1cnJlbnRXaW5kb3ddKQogICAgICAgICAgICAgW3NlbGYgcmVzdG9y
ZVBvcnRTdGF0ZTpwb3J0U3RhdGVdOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5t
bQkocmV2aXNpb24gODg5MTQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TY3JpcHRWYWx1ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHJpbmdTb3VyY2VQcm92aWRl
ci5oPgorI2ltcG9ydCA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9ucHJ1bnRpbWVfaW1wbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9ydW50aW1lX29iamVj
dC5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CkBAIC04NjksMTYgKzg3MCwx
NCBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhCiAgICAgU3Ryb25n
PEpTR2xvYmFsT2JqZWN0PiBnbG9iYWxPYmplY3QoKnBsdWdpbldvcmxkKCktPmdsb2JhbERhdGEo
KSwgZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSkpOwogICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogCi0gICAgYm9vbCBv
bGRBbGxvd1BvcHVwcyA9IGZyYW1lLT5zY3JpcHQoKS0+YWxsb3dQb3B1cHNGcm9tUGx1Z2luKCk7
Ci0gICAgZnJhbWUtPnNjcmlwdCgpLT5zZXRBbGxvd1BvcHVwc0Zyb21QbHVnaW4oYWxsb3dQb3B1
cHMpOwotICAgIAogICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2Vy
LnN0YXJ0KCk7CisKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGFs
bG93UG9wdXBzID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IFBvc3NpYmx5UHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICBDb21wbGV0aW9uIGNvbXBsZXRpb24gPSBKU0M6OmV2
YWx1YXRlKGV4ZWMsIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBtYWtlU291cmNl
KHNjcmlwdCkpOworCiAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNr
ZXIuc3RvcCgpOwogICAgIENvbXBsVHlwZSB0eXBlID0gY29tcGxldGlvbi5jb21wbFR5cGUoKTsK
IAotICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0QWxsb3dQb3B1cHNGcm9tUGx1Z2luKG9sZEFsbG93
UG9wdXBzKTsKLSAgICAKICAgICBKU1ZhbHVlIHJlc3VsdDsKICAgICBpZiAodHlwZSA9PSBOb3Jt
YWwpCiAgICAgICAgIHJlc3VsdCA9IGNvbXBsZXRpb24udmFsdWUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97363</attachid>
            <date>2011-06-15 14:26:49 -0700</date>
            <delta_ts>2011-06-15 20:42:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62706-20110615142647.patch</filename>
            <type>text/plain</type>
            <size>16647</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4OTcyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDYtMTUgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW1vdmUgU2NyaXB0Q29udHJvbGxlcjo6c2V0QWxsb3dQb3B1cHNG
cm9tUGx1Z2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MjcwNgorCisgICAgICAgIFRoaXMgQVBJIGlzIGp1c3QgYSBwb29yIG1hbidzIFVzZXJHZXN0
dXJlSW5kaWNhdG9yLiAgV2Ugc2hvdWxkIHVzZSB0aGUKKyAgICAgICAgcmVhbCBkZWFsLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L05Q
VjhPYmplY3QuY3BwOgorICAgICAgICAoX05QTl9FdmFsdWF0ZUhlbHBlcik6CisgICAgICAgICog
YmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRDb250cm9sbGVyOjpTY3JpcHRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvU2NyaXB0Q29udHJvbGxlci5oOgorCiAyMDExLTA2LTE1ICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3Vy
eWFrb3YuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gODg5NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNiBAQCBT
Y3JpcHRDb250cm9sbGVyOjpTY3JpcHRDb250cm9sbGVyKEZyYW1lCiAgICAgLCBtX2luRXhlY3V0
ZVNjcmlwdChmYWxzZSkKICAgICAsIG1fcHJvY2Vzc2luZ1RpbWVyQ2FsbGJhY2soZmFsc2UpCiAg
ICAgLCBtX3BhdXNlZChmYWxzZSkKLSAgICAsIG1fYWxsb3dQb3B1cHNGcm9tUGx1Z2luKGZhbHNl
KQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgICwgbV93aW5kb3dTY3JpcHRO
UE9iamVjdCgwKQogI2VuZGlmCkBAIC0yNTIsMTcgKzI1MSwxMyBAQCBib29sIFNjcmlwdENvbnRy
b2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
IFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpnZXRVc2VyR2VzdHVyZVN0YXRlKCkgIT0gRGVmaW5pdGVs
eU5vdFByb2Nlc3NpbmdVc2VyR2VzdHVyZTsKIAotICAgIC8vIEZJWE1FOiBXZSBjaGVjayB0aGUg
cGx1Z2luIHBvcHVwIGZsYWcgYW5kIGphdmFzY3JpcHQgYW5jaG9yIG5hdmlnYXRpb24KLSAgICAv
LyBmcm9tIHRoZSBkeW5hbWljIGZyYW1lIGJlY3Vhc2UgdGhleSBzaG91bGQgb25seSBiZSBpbml0
aWF0ZWQgb24gdGhlCi0gICAgLy8gZHluYW1pYyBmcmFtZSBpbiB3aGljaCBleGVjdXRpb24gYmVn
YW4gaWYgdGhleSBkbyBoYXBwZW4uCi0gICAgU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJv
bGxlciA9IGZyYW1lLT5zY3JpcHQoKTsKLSAgICBBU1NFUlQoc2NyaXB0Q29udHJvbGxlcik7Ci0g
ICAgaWYgKHNjcmlwdENvbnRyb2xsZXItPmFsbG93UG9wdXBzRnJvbVBsdWdpbigpIHx8IHNjcmlw
dENvbnRyb2xsZXItPmlzSmF2YVNjcmlwdEFuY2hvck5hdmlnYXRpb24oKSkKKyAgICAvLyBGSVhN
RTogUmVtb3ZlIHRoZSBpc0phdmFTY3JpcHRBbmNob3JOYXZpZ2F0aW9uIGNoZWNrIG9uY2UgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzAyIGlzIGZpeGVkLgorICAg
IGlmIChmcmFtZS0+c2NyaXB0KCktPmlzSmF2YVNjcmlwdEFuY2hvck5hdmlnYXRpb24oKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBJZiBhIERPTSBldmVudCBpcyBiZWluZyBwcm9j
ZXNzZWQsIGNoZWNrIHRoYXQgaXQgd2FzIGluaXRpYXRlZCBieSB0aGUgdXNlcgogICAgIC8vIGFu
ZCB0aGF0IGl0IGlzIGluIHRoZSB3aGl0ZWxpc3Qgb2YgZXZlbnQgdHlwZXMgYWxsb3dlZCB0byBn
ZW5lcmF0ZSBwb3AtdXBzLgotICAgIGlmIChKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCA9IHNjcmlw
dENvbnRyb2xsZXItPmV4aXN0aW5nV2luZG93U2hlbGwoY3VycmVudFdvcmxkKGV4ZWMpKSkKKyAg
ICBpZiAoSlNET01XaW5kb3dTaGVsbCogc2hlbGwgPSBmcmFtZS0+c2NyaXB0KCktPmV4aXN0aW5n
V2luZG93U2hlbGwoY3VycmVudFdvcmxkKGV4ZWMpKSkKICAgICAgICAgaWYgKEV2ZW50KiBldmVu
dCA9IHNoZWxsLT53aW5kb3coKS0+Y3VycmVudEV2ZW50KCkpCiAgICAgICAgICAgICByZXR1cm4g
ZXZlbnQtPmZyb21Vc2VyR2VzdHVyZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCShyZXZpc2lvbiA4ODk3MikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTIxLDkgKzEyMSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhdXNlZChib29sIGIpIHsgbV9w
YXVzZWQgPSBiOyB9CiAgICAgYm9vbCBpc1BhdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF1c2Vk
OyB9CiAKLSAgICB2b2lkIHNldEFsbG93UG9wdXBzRnJvbVBsdWdpbihib29sIGFsbG93UG9wdXBz
RnJvbVBsdWdpbikgeyBtX2FsbG93UG9wdXBzRnJvbVBsdWdpbiA9IGFsbG93UG9wdXBzRnJvbVBs
dWdpbjsgfQotICAgIGJvb2wgYWxsb3dQb3B1cHNGcm9tUGx1Z2luKCkgY29uc3QgeyByZXR1cm4g
bV9hbGxvd1BvcHVwc0Zyb21QbHVnaW47IH0KLSAgICAKICAgICBjb25zdCBTdHJpbmcqIHNvdXJj
ZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlVVJMOyB9IC8vIDAgaWYgd2UgYXJlIG5vdCBl
dmFsdWF0aW5nIGFueSBzY3JpcHQKIAogICAgIHZvaWQgY2xlYXJXaW5kb3dTaGVsbChib29sIGdv
aW5nSW50b1BhZ2VDYWNoZSA9IGZhbHNlKTsKQEAgLTE4Miw3ICsxNzksNiBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBtX3Byb2Nlc3NpbmdUaW1lckNhbGxiYWNrOwogICAgIGJvb2wgbV9wYXVzZWQ7
Ci0gICAgYm9vbCBtX2FsbG93UG9wdXBzRnJvbVBsdWdpbjsKIAogICAgIC8vIFRoZSByb290IG9i
amVjdCB1c2VkIGZvciBvYmplY3RzIGJvdW5kIG91dHNpZGUgdGhlIGNvbnRleHQgb2YgYSBwbHVn
aW4sIHN1Y2gKICAgICAvLyBhcyBOUEFQSSBwbHVnaW5zLiBUaGUgcGx1Z2lucyB1c2luZyB0aGVz
ZSBvYmplY3RzIHByZXZlbnQgYSBwYWdlIGZyb20gYmVpbmcgY2FjaGVkIHNvIHRoZXkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCShyZXZpc2lvbiA4ODk3
MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiT3duQXJyYXlQdHIuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKyNp
bmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIlY4R0NDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiVjhIZWxwZXJzLmgiCiAjaW5jbHVkZSAiVjhOUFV0aWxzLmgiCkBAIC0z
MDIsMjEgKzMwMywxNSBAQCBib29sIF9OUE5fRXZhbHVhdGVIZWxwZXIoTlBQIG5wcCwgYm9vbCBw
CiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKGNvbnRleHQpOwogICAgIEV4Y2VwdGlvbkNh
dGNoZXIgZXhjZXB0aW9uQ2F0Y2hlcjsKIAorICAgIC8vIEZJWE1FOiBJcyB0aGlzIGJyYW5jaCBz
dGlsbCBuZWVkZWQgYWZ0ZXIgc3dpdGNoaW5nIHRvIHVzaW5nIFVzZXJHZXN0dXJlSW5kaWNhdG9y
PwogICAgIFN0cmluZyBmaWxlbmFtZTsKICAgICBpZiAoIXBvcHVwc0FsbG93ZWQpCiAgICAgICAg
IGZpbGVuYW1lID0gIm5wc2NyaXB0IjsKIAotICAgIC8vIFNldCBwb3B1cHNBbGxvd2VkIGZsYWcg
dG8gdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGZyYW1lLCBzbyBXZWJLaXQgY2FuIGdldAotICAgIC8v
IHJpZ2h0IGdlc3R1cmUgc3RhdHVzIGZvciBwb3B1cHMgaW5pdGlhdGVkIGZyb20gcGx1Z2lucy4K
LSAgICBGcmFtZSogZnJhbWUgPSBwcm94eS0+ZnJhbWUoKTsKLSAgICBBU1NFUlQoZnJhbWUpOwot
ICAgIGJvb2wgb2xkQWxsb3dQb3B1cHMgPSBmcmFtZS0+c2NyaXB0KCktPmFsbG93UG9wdXBzRnJv
bVBsdWdpbigpOwotICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0QWxsb3dQb3B1cHNGcm9tUGx1Z2lu
KHBvcHVwc0FsbG93ZWQpOwotCiAgICAgU3RyaW5nIHNjcmlwdCA9IFN0cmluZzo6ZnJvbVVURjgo
bnBTY3JpcHQtPlVURjhDaGFyYWN0ZXJzLCBucFNjcmlwdC0+VVRGOExlbmd0aCk7CisKKyAgICBV
c2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHBvcHVwc0FsbG93ZWQgPyBEZWZp
bml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogUG9zc2libHlQcm9jZXNzaW5nVXNlckdlc3R1
cmUpOwogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4cmVzdWx0ID0gcHJveHktPmV2YWx1YXRl
KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LCBLVVJMKFBhcnNlZFVSTFN0cmluZywgZmlsZW5hbWUp
KSwgMCk7Ci0gICAgLy8gUmVzdG9yZSB0aGUgb2xkIGZsYWcuCi0gICAgZnJhbWUtPnNjcmlwdCgp
LT5zZXRBbGxvd1BvcHVwc0Zyb21QbHVnaW4ob2xkQWxsb3dQb3B1cHMpOwogCiAgICAgaWYgKHY4
cmVzdWx0LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDg4
OTcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNiBAQCBTY3JpcHRDb250cm9sbGVyOjpTY3Jp
cHRDb250cm9sbGVyKEZyYW1lCiAgICAgLCBtX2luRXhlY3V0ZVNjcmlwdChmYWxzZSkKICAgICAs
IG1fcHJvY2Vzc2luZ1RpbWVyQ2FsbGJhY2soZmFsc2UpCiAgICAgLCBtX3BhdXNlZChmYWxzZSkK
LSAgICAsIG1fYWxsb3dQb3B1cHNGcm9tUGx1Z2luKGZhbHNlKQogICAgICwgbV9wcm94eShhZG9w
dFB0cihuZXcgVjhQcm94eShmcmFtZSkpKQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogICAgICwgbV93aW5kb3dTY3JpcHROUE9iamVjdCgwKQpAQCAtMTU1LDQ3ICsxNTQsMjcgQEAg
dm9pZCBTY3JpcHRDb250cm9sbGVyOjp1cGRhdGVQbGF0Zm9ybVNjcgogCiBib29sIFNjcmlwdENv
bnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpCiB7Ci0gICAgRnJhbWUqIGFjdGl2ZUZy
YW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCk7Ci0gICAgLy8g
Tm8gc2NyaXB0IGlzIHJ1bm5pbmcsIHNvIGl0IGlzIHVzZXItaW5pdGlhdGVkIHVubGVzcyB0aGUg
Z2VzdHVyZSBzdGFjawotICAgIC8vIGV4cGxpY2l0bHkgc2F5cyBpdCBpcyBub3QuCi0gICAgaWYg
KCFhY3RpdmVGcmFtZSkKKyAgICBGcmFtZSogZmlyc3RGcmFtZSA9IFY4UHJveHk6OnJldHJpZXZl
RnJhbWVGb3JFbnRlcmVkQ29udGV4dCgpOworICAgIGlmICghZmlyc3RGcmFtZSkKICAgICAgICAg
cmV0dXJuIFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpnZXRVc2VyR2VzdHVyZVN0YXRlKCkgIT0gRGVm
aW5pdGVseU5vdFByb2Nlc3NpbmdVc2VyR2VzdHVyZTsKIAotICAgIFY4UHJveHkqIGFjdGl2ZVBy
b3h5ID0gYWN0aXZlRnJhbWUtPnNjcmlwdCgpLT5wcm94eSgpOwotCiAgICAgdjg6OkhhbmRsZVNj
b3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9
IFY4UHJveHk6Om1haW5Xb3JsZENvbnRleHQoYWN0aXZlRnJhbWUpOwotICAgIC8vIEZJWE1FOiBm
aW5kIGFsbCBjYXNlcyBjb250ZXh0IGNhbiBiZSBlbXB0eToKLSAgICAvLyAgMSkgSlMgaXMgZGlz
YWJsZWQ7Ci0gICAgLy8gIDIpIHBhZ2UgaXMgTlVMTDsKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250
ZXh0PiB2OENvbnRleHQgPSBWOFByb3h5OjptYWluV29ybGRDb250ZXh0KGZpcnN0RnJhbWUpOwog
ICAgIGlmICh2OENvbnRleHQuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAg
IHY4OjpDb250ZXh0OjpTY29wZSBzY29wZSh2OENvbnRleHQpOwotCiAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBnbG9iYWwgPSB2OENvbnRleHQtPkdsb2JhbCgpOwogICAgIHY4OjpIYW5kbGU8
djg6OlN0cmluZz4gZXZlbnRTeW1ib2wgPSBWOEhpZGRlblByb3BlcnR5TmFtZTo6ZXZlbnQoKTsK
ICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4ganNFdmVudCA9IGdsb2JhbC0+R2V0SGlkZGVuVmFs
dWUoZXZlbnRTeW1ib2wpOwogICAgIEV2ZW50KiBldmVudCA9IFY4RE9NV3JhcHBlcjo6aXNWYWxp
ZERPTU9iamVjdChqc0V2ZW50KSA/IFY4RXZlbnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD46OkNhc3QoanNFdmVudCkpIDogMDsKLQotICAgIC8vIEJhc2VkIG9uIGNvZGUgZnJvbSBK
U0MncyBTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUuCi0gICAgLy8gTm90
ZTogVGhpcyBpcyBtb3JlIGxpYmVyYWwgdGhhbiBGaXJlZm94J3MgaW1wbGVtZW50YXRpb24uCi0g
ICAgaWYgKGV2ZW50KSB7Ci0gICAgICAgIC8vIEV2ZW50Ojpmcm9tVXNlckdlc3R1cmUgd2lsbCBy
ZXR1cm4gZmFsc2Ugd2hlbiBVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0
dXJlKCkgcmV0dXJucyBmYWxzZS4KKyAgICBpZiAoZXZlbnQpCiAgICAgICAgIHJldHVybiBldmVu
dC0+ZnJvbVVzZXJHZXN0dXJlKCk7Ci0gICAgfQotICAgIC8vIEZJWE1FOiBXZSBjaGVjayB0aGUg
amF2YXNjcmlwdCBhbmNob3IgbmF2aWdhdGlvbiBmcm9tIHRoZSBsYXN0IGVudGVyZWQKLSAgICAv
LyBmcmFtZSBiZWN1YXNlIGl0IHNob3VsZCBvbmx5IGJlIGluaXRpYXRlZCBvbiB0aGUgbGFzdCBl
bnRlcmVkIGZyYW1lIGluCi0gICAgLy8gd2hpY2ggZXhlY3V0aW9uIGJlZ2FuIGlmIGl0IGRvZXMg
aGFwcGVuLiAgICAKLSAgICBjb25zdCBTdHJpbmcqIHNvdXJjZVVSTCA9IGFjdGl2ZUZyYW1lLT5z
Y3JpcHQoKS0+c291cmNlVVJMKCk7Ci0gICAgaWYgKHNvdXJjZVVSTCAmJiBzb3VyY2VVUkwtPmlz
TnVsbCgpICYmICFhY3RpdmVQcm94eS0+dGltZXJDYWxsYmFjaygpKSB7Ci0gICAgICAgIC8vIFRo
aXMgaXMgdGhlIDxhIGhyZWY9ImphdmFzY3JpcHQ6d2luZG93Lm9wZW4oJy4uLicpPiBjYXNlIC0+
IHdlIGxldCBpdCB0aHJvdWdoLgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgaWYg
KGFjdGl2ZUZyYW1lLT5zY3JpcHQoKS0+YWxsb3dQb3B1cHNGcm9tUGx1Z2luKCkpCisKKyAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoaXMgY2hlY2sgb25jZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjI3MDIgaXMgZml4ZWQuCisgICAgY29uc3QgU3RyaW5nKiBzb3VyY2VV
UkwgPSBmaXJzdEZyYW1lLT5zY3JpcHQoKS0+c291cmNlVVJMKCk7CisgICAgaWYgKHNvdXJjZVVS
TCAmJiBzb3VyY2VVUkwtPmlzTnVsbCgpICYmICFmaXJzdEZyYW1lLT5zY3JpcHQoKS0+cHJveHko
KS0+dGltZXJDYWxsYmFjaygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAvLyBUaGlzIGlz
IHRoZSA8c2NyaXB0PndpbmRvdy5vcGVuKC4uLik8L3NjcmlwdD4gY2FzZSBvciBhIHRpbWVyIGNh
bGxiYWNrIC0+IGJsb2NrIGl0LgotICAgIC8vIEJhc2VkIG9uIEpTQyB2ZXJzaW9uLCB1c2UgcmV0
dXJuZWQgdmFsdWUgb2YgVXNlckdlc3R1cmVJbmRpY2F0b3I6OnByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSBmb3IgYWxsIG90aGVyIHNpdHVhdGlvbnMuIAorCiAgICAgcmV0dXJuIFVzZXJHZXN0dXJlSW5k
aWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAkocmV2aXNpb24gODg5NzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE4OSw5ICsxODksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBldmFsdWF0ZUluV29y
bGQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCopOwogICAgIHN0YXRp
YyB2b2lkIGdldEFsbFdvcmxkcyhWZWN0b3I8RE9NV3JhcHBlcldvcmxkKj4mIHdvcmxkcyk7CiAK
LSAgICB2b2lkIHNldEFsbG93UG9wdXBzRnJvbVBsdWdpbihib29sIGFsbG93UG9wdXBzRnJvbVBs
dWdpbikgeyBtX2FsbG93UG9wdXBzRnJvbVBsdWdpbiA9IGFsbG93UG9wdXBzRnJvbVBsdWdpbjsg
fQotICAgIGJvb2wgYWxsb3dQb3B1cHNGcm9tUGx1Z2luKCkgY29uc3QgeyByZXR1cm4gbV9hbGxv
d1BvcHVwc0Zyb21QbHVnaW47IH0KLQogcHJpdmF0ZToKICAgICBGcmFtZSogbV9mcmFtZTsKICAg
ICBjb25zdCBTdHJpbmcqIG1fc291cmNlVVJMOwpAQCAtMjAwLDcgKzE5Nyw2IEBAIHByaXZhdGU6
CiAKICAgICBib29sIG1fcHJvY2Vzc2luZ1RpbWVyQ2FsbGJhY2s7CiAgICAgYm9vbCBtX3BhdXNl
ZDsKLSAgICBib29sIG1fYWxsb3dQb3B1cHNGcm9tUGx1Z2luOwogCiAgICAgT3duUHRyPFY4UHJv
eHk+IG1fcHJveHk7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFdpZGdldCosIE5QT2JqZWN0Kj4gUGx1
Z2luT2JqZWN0TWFwOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gODg5NzIpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0w
Ni0xNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBTY3JpcHRDb250cm9sbGVyOjpz
ZXRBbGxvd1BvcHVwc0Zyb21QbHVnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYyNzA2CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBlcmZvcm1KYXZhU2Ny
aXB0VVJMUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmV2YWx1YXRlKToK
KwogMjAxMS0wNi0xNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNpb24gODg5NzIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFZhbHVl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZXR0aW5ncy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNzc5LDEy
ICs3ODAsMTEgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtSmF2YVNjcmlwdFVSTFJlcQogICAg
IC8vIGdyYWIgcmVmZXJlbmNlcyB0byB0aGUgcGx1Zy1pbiBoZXJlLgogICAgIFJlZlB0cjxQbHVn
aW4+IHBsdWdpbiA9IG1fcGx1Z2luOwogCi0gICAgYm9vbCBvbGRBbGxvd1BvcHVwcyA9IGZyYW1l
LT5zY3JpcHQoKS0+YWxsb3dQb3B1cHNGcm9tUGx1Z2luKCk7Ci0gICAgZnJhbWUtPnNjcmlwdCgp
LT5zZXRBbGxvd1BvcHVwc0Zyb21QbHVnaW4ocmVxdWVzdC0+YWxsb3dQb3B1cHMoKSk7Ci0gICAg
Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0ID0gZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0
KGpzU3RyaW5nKTsKLQotICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0QWxsb3dQb3B1cHNGcm9tUGx1
Z2luKG9sZEFsbG93UG9wdXBzKTsKKyAgICBTY3JpcHRWYWx1ZSByZXN1bHQ7CisgICAgeworICAg
ICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHJlcXVlc3QtPmFsbG93
UG9wdXBzKCkgPyBEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogUG9zc2libHlQcm9j
ZXNzaW5nVXNlckdlc3R1cmUpOworICAgICAgICByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCktPmV4
ZWN1dGVTY3JpcHQoanNTdHJpbmcpOworICAgIH0KIAogICAgIC8vIENoZWNrIGlmIGV2YWx1YXRp
bmcgdGhlIEphdmFTY3JpcHQgZGVzdHJveWVkIHRoZSBwbHVnLWluLgogICAgIGlmICghcGx1Z2lu
LT5jb250cm9sbGVyKCkpCkBAIC05NzksMjIgKzk3OSwxNiBAQCBOUE9iamVjdCogUGx1Z2luVmll
dzo6cGx1Z2luRWxlbWVudE5QT2JqCiAKIGJvb2wgUGx1Z2luVmlldzo6ZXZhbHVhdGUoTlBPYmpl
Y3QqIG5wT2JqZWN0LCBjb25zdCBTdHJpbmcmIHNjcmlwdFN0cmluZywgTlBWYXJpYW50KiByZXN1
bHQsIGJvb2wgYWxsb3dQb3B1cHMpCiB7Ci0gICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fcGx1
Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQorICAgIC8v
IEZJWE1FOiBJcyB0aGlzIGNoZWNrIG5lY2Vzc2FyeT8KKyAgICBpZiAoIW1fcGx1Z2luRWxlbWVu
dC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYm9v
bCBvbGRBbGxvd1BvcHVwcyA9IGZyYW1lLT5zY3JpcHQoKS0+YWxsb3dQb3B1cHNGcm9tUGx1Z2lu
KCk7Ci0gICAgZnJhbWUtPnNjcmlwdCgpLT5zZXRBbGxvd1BvcHVwc0Zyb21QbHVnaW4oYWxsb3dQ
b3B1cHMpOwotCiAgICAgLy8gQ2FsbGluZyBldmFsdWF0ZSB3aWxsIHJ1biBKYXZhU2NyaXB0IHRo
YXQgY2FuIHBvdGVudGlhbGx5IHJlbW92ZSB0aGUgcGx1Zy1pbiBlbGVtZW50LCBzbyB3ZSBuZWVk
IHRvCiAgICAgLy8gcHJvdGVjdCB0aGUgcGx1Zy1pbiB2aWV3IGZyb20gZGVzdHJ1Y3Rpb24uCiAg
ICAgTlBSdW50aW1lT2JqZWN0TWFwOjpQbHVnaW5Qcm90ZWN0b3IgcGx1Z2luUHJvdGVjdG9yKCZt
X25wUnVudGltZU9iamVjdE1hcCk7CiAKLSAgICBib29sIHJldHVyblZhbHVlID0gbV9ucFJ1bnRp
bWVPYmplY3RNYXAuZXZhbHVhdGUobnBPYmplY3QsIHNjcmlwdFN0cmluZywgcmVzdWx0KTsKLQot
ICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0QWxsb3dQb3B1cHNGcm9tUGx1Z2luKG9sZEFsbG93UG9w
dXBzKTsKLQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRv
ciBnZXN0dXJlSW5kaWNhdG9yKGFsbG93UG9wdXBzID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2Vy
R2VzdHVyZSA6IFBvc3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKKyAgICByZXR1cm4gbV9u
cFJ1bnRpbWVPYmplY3RNYXAuZXZhbHVhdGUobnBPYmplY3QsIHNjcmlwdFN0cmluZywgcmVzdWx0
KTsKIH0KIAogYm9vbCBQbHVnaW5WaWV3Ojp0cnlUb1Nob3J0Q2lyY3VpdEludm9rZShOUE9iamVj
dCosIE5QSWRlbnRpZmllciBtZXRob2ROYW1lLCBjb25zdCBOUFZhcmlhbnQqIGFyZ3VtZW50cywg
dWludDMyX3QgYXJndW1lbnRDb3VudCwgYm9vbCYgcmV0dXJuVmFsdWUsIE5QVmFyaWFudCYgcmVz
dWx0KQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gODg5NzIpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0w
Ni0xNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBTY3JpcHRDb250cm9sbGVyOjpz
ZXRBbGxvd1BvcHVwc0Zyb21QbHVnaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYyNzA2CisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eTo6ZXZhbHVhdGUpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc2VuZEV2ZW50
OmlzRHJhd1JlY3Q6XSk6CisKIDIwMTEtMDYtMTUgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFw
cGxlLmNvbT4KIAogICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi82Mjc0NT4gQ29udmVydCBX
ZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm0gdG8gT2JqZWN0aXZlLUMrKwpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0JKHJldmlz
aW9uIDg4OTcyKQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdp
blZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDcgQEAKICNpbXBvcnQgPFdlYkNv
cmUvU2NyaXB0Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPiAKKyNpbXBvcnQgPFdlYkNvcmUvVXNl
ckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVVSTFJlc3BvbnNlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL25wcnVudGltZV9pbXBsLmg+CkBAIC02NjUsMTYgKzY2NiwxMyBAQCAtIChCT09MKXNlbmRF
dmVudDoodm9pZCopZXZlbnQgaXNEcmF3UmVjCiAgICAgW3NlbGYgd2lsbENhbGxQbHVnSW5GdW5j
dGlvbl07CiAgICAgLy8gU2V0IHRoZSBwbHVnaW5BbGxvd1BvcHVwIGZsYWcuCiAgICAgQVNTRVJU
KF9ldmVudEhhbmRsZXIpOwotICAgIGJvb2wgb2xkQWxsb3dQb3B1cHMgPSBmcmFtZS0+c2NyaXB0
KCktPmFsbG93UG9wdXBzRnJvbVBsdWdpbigpOwotICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0QWxs
b3dQb3B1cHNGcm9tUGx1Z2luKF9ldmVudEhhbmRsZXItPmN1cnJlbnRFdmVudElzVXNlckdlc3R1
cmUoKSk7ICAgIAogICAgIHsKICAgICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9w
QWxsTG9ja3MoSlNDOjpTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAgICAgICBVc2VyR2VzdHVy
ZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKF9ldmVudEhhbmRsZXItPmN1cnJlbnRFdmVudElz
VXNlckdlc3R1cmUoKSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJs
eVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgICAgIGFjY2VwdGVkRXZlbnQgPSBbX3BsdWdp
blBhY2thZ2UuZ2V0KCkgcGx1Z2luRnVuY3NdLT5ldmVudChwbHVnaW4sIGV2ZW50KTsKICAgICB9
Ci0gICAgLy8gUmVzdG9yZSB0aGUgb2xkIHBsdWdpbkFsbG93UG9wdXAgZmxhZy4KLSAgICBmcmFt
ZS0+c2NyaXB0KCktPnNldEFsbG93UG9wdXBzRnJvbVBsdWdpbihvbGRBbGxvd1BvcHVwcyk7ICAg
ICAKICAgICBbc2VsZiBkaWRDYWxsUGx1Z0luRnVuY3Rpb25dOwotICAgICAgICAKKwogICAgIGlm
IChwb3J0U3RhdGUpIHsKICAgICAgICAgaWYgKFtzZWxmIGN1cnJlbnRXaW5kb3ddKQogICAgICAg
ICAgICAgW3NlbGYgcmVzdG9yZVBvcnRTdGF0ZTpwb3J0U3RhdGVdOwpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5tbQkocmV2aXNpb24gODg5NzIpCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTU1LDYgKzU1LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxl
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
dHJpbmdTb3VyY2VQcm92aWRlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGlj
YXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9ucHJ1bnRpbWVfaW1wbC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9ydW50aW1lX29iamVjdC5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+
CkBAIC04NjksMTYgKzg3MCwxNCBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
ZXZhbHVhCiAgICAgU3Ryb25nPEpTR2xvYmFsT2JqZWN0PiBnbG9iYWxPYmplY3QoKnBsdWdpbldv
cmxkKCktPmdsb2JhbERhdGEoKSwgZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QocGx1Z2lu
V29ybGQoKSkpOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpOwogCi0gICAgYm9vbCBvbGRBbGxvd1BvcHVwcyA9IGZyYW1lLT5zY3JpcHQoKS0+YWxsb3dQ
b3B1cHNGcm9tUGx1Z2luKCk7Ci0gICAgZnJhbWUtPnNjcmlwdCgpLT5zZXRBbGxvd1BvcHVwc0Zy
b21QbHVnaW4oYWxsb3dQb3B1cHMpOwotICAgIAogICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0
YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBn
ZXN0dXJlSW5kaWNhdG9yKGFsbG93UG9wdXBzID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSA6IFBvc3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICBDb21wbGV0aW9uIGNv
bXBsZXRpb24gPSBKU0M6OmV2YWx1YXRlKGV4ZWMsIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVD
aGFpbigpLCBtYWtlU291cmNlKHNjcmlwdCkpOworCiAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOwogICAgIENvbXBsVHlwZSB0eXBlID0gY29tcGxl
dGlvbi5jb21wbFR5cGUoKTsKIAotICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0QWxsb3dQb3B1cHNG
cm9tUGx1Z2luKG9sZEFsbG93UG9wdXBzKTsKLSAgICAKICAgICBKU1ZhbHVlIHJlc3VsdDsKICAg
ICBpZiAodHlwZSA9PSBOb3JtYWwpCiAgICAgICAgIHJlc3VsdCA9IGNvbXBsZXRpb24udmFsdWUo
KTsK
</data>
<flag name="review"
          id="91291"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="91292"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>