<?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>62702</bug_id>
          
          <creation_ts>2011-06-15 01:13:11 -0700</creation_ts>
          <short_desc>Remove forceUserGesture bool in favor of UserGestureIndicator</short_desc>
          <delta_ts>2011-06-15 20:43:17 -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>New Bugs</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>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>jnd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>421099</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 01:13:11 -0700</bug_when>
    <thetext>Remove forceUserGesture bool in favor of UserGestureIndicator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421100</commentid>
    <comment_count>1</comment_count>
      <attachid>97250</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 01:15:08 -0700</bug_when>
    <thetext>Created attachment 97250
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421103</commentid>
    <comment_count>2</comment_count>
      <attachid>97250</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-15 01:21:40 -0700</bug_when>
    <thetext>Comment on attachment 97250
Patch

Attachment 97250 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8844407</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421129</commentid>
    <comment_count>3</comment_count>
      <attachid>97258</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 01:52:05 -0700</bug_when>
    <thetext>Created attachment 97258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421151</commentid>
    <comment_count>4</comment_count>
      <attachid>97258</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-15 03:06:04 -0700</bug_when>
    <thetext>Comment on attachment 97258
Patch

Attachment 97258 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8865008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421224</commentid>
    <comment_count>5</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-06-15 06:26:39 -0700</bug_when>
    <thetext>How about keeping the forceUserGesture bool for ScriptController::executeScript and set right gesture indicator inside the function. The benefits to do that are
(1) need not to write code to set UserGestureIndicator in all places where people call ScriptController::executeScript
(2) ScriptController::executeScript has explicit semantics to run script with explicit gesture expectation.

It&apos;s my immature idea for your reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421244</commentid>
    <comment_count>6</comment_count>
      <attachid>97250</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-15 07:13:21 -0700</bug_when>
    <thetext>Comment on attachment 97250
Patch

Seems reasonable.  It&apos;s a bit odd that &quot;allowPopups&quot; seems to imply definitelyProcessingUserGesture.  It&apos;s not immediately clear to me what user gesture controls.  If it controls more that popups, I wonder what side-effects that has.   R+ once the ews bots pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421432</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 10:34:58 -0700</bug_when>
    <thetext>&gt; How about keeping the forceUserGesture bool for ScriptController::executeScript and set right gesture indicator inside the function.

Yeah, that&apos;s a tempting solution.  My thought was that we should get rid of all these &quot;is user gesture&quot; boolean parameters.  We&apos;ll need to keep the one in NPAPI, of course, but we can get rid of all the internal ones.

&gt; Seems reasonable.  It&apos;s a bit odd that &quot;allowPopups&quot; seems to imply definitelyProcessingUserGesture.

Yeah.  &quot;allowPopups&quot; is NPAPI code for &quot;user gesture.&quot;

&gt; It&apos;s not immediately clear to me what user gesture controls.  If it controls more that popups, I wonder what side-effects that has.

It controls some esoteric things, like whether you can create a download automatically.  They&apos;re all things that make sense if, for example, the user gesture originates from Flash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421560</commentid>
    <comment_count>8</comment_count>
      <attachid>97360</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 13:57:16 -0700</bug_when>
    <thetext>Created attachment 97360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421602</commentid>
    <comment_count>9</comment_count>
      <attachid>97360</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-15 15:07:24 -0700</bug_when>
    <thetext>Comment on attachment 97360
Patch

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

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1420
&gt; +    UserGestureIndicator gestureIndicator(DefinitelyProcessingUserGesture);

Is it a problem that this bleeds over into the send() call?  I assume send() doesn&apos;t ever cause JS to execute as a side-effect...

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:2358
&gt; +        UserGestureIndicator gestureIndicator(DefinitelyProcessingUserGesture);
&gt; +        result = m_frame-&gt;script()-&gt;executeScript(script);

I think this is kinda odd that we have to encapsulate these so.  Why not just pass the enum to executeScript?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421605</commentid>
    <comment_count>10</comment_count>
      <attachid>97360</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 15:11:23 -0700</bug_when>
    <thetext>Comment on attachment 97360
Patch

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

&gt;&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1420
&gt;&gt; +    UserGestureIndicator gestureIndicator(DefinitelyProcessingUserGesture);
&gt; 
&gt; Is it a problem that this bleeds over into the send() call?  I assume send() doesn&apos;t ever cause JS to execute as a side-effect...

I believe send just queues the message and returns.

&gt;&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:2358
&gt;&gt; +        result = m_frame-&gt;script()-&gt;executeScript(script);
&gt; 
&gt; I think this is kinda odd that we have to encapsulate these so.  Why not just pass the enum to executeScript?

We want to get away from passing around the user gesture state in booleans.  That&apos;s a path that leads to madness.  This path leads to sanity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421611</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-15 15:16:46 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 97360 [details])
&gt; &gt;&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:2358
&gt; &gt;&gt; +        result = m_frame-&gt;script()-&gt;executeScript(script);
&gt; &gt; 
&gt; &gt; I think this is kinda odd that we have to encapsulate these so.  Why not just pass the enum to executeScript?
&gt; 
&gt; We want to get away from passing around the user gesture state in booleans.  That&apos;s a path that leads to madness.  This path leads to sanity.

I&apos;m not sure I believe you. :)  But you do know this code better than I.

I&apos;m suggesting the enum, not the boolean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421612</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-15 15:18:09 -0700</bug_when>
    <thetext>Then again, I&apos;m not sure what the default value for the enum should be.  Possibly may be wrong (or may lose a possible ASSERT?).  DefinitelyYES is definitely wrong. :)  DefinitelyNO might work, donno.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421614</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 15:19:42 -0700</bug_when>
    <thetext>We used to pass around booleans (or enums, whatever) all over the place and it was a collosal nightmare of ugly, wrong code.  We&apos;re almost done getting rid of all the buggy junk.  Now isn&apos;t the time to reverse course.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421615</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-15 15:21:06 -0700</bug_when>
    <thetext>I suspect you have more convincing arguments than the sunk cost fallacy. :)  But I&apos;ll just wait and let someone else review this or you explain the historical context to me in person. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421616</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 15:22:59 -0700</bug_when>
    <thetext>&gt; I suspect you have more convincing arguments than the sunk cost fallacy. :)

It&apos;s not sunk costs.  It&apos;s implementation experience that passing around the user gesture state in booleans leads to buggy, messy code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421622</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 15:47:43 -0700</bug_when>
    <thetext>I think the problem is that locally, each instance of using a one-off bool looks reasonable, which is how we ended up having them spider all over the codebase.  It&apos;s only when you look globally at how the user gesture system works that you see the insanity that it causes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421624</commentid>
    <comment_count>17</comment_count>
      <attachid>97371</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 15:50:26 -0700</bug_when>
    <thetext>Created attachment 97371
Patch that keeps the bool but still removes the URL hack</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421693</commentid>
    <comment_count>18</comment_count>
      <attachid>97371</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-15 18:49:42 -0700</bug_when>
    <thetext>Comment on attachment 97371
Patch that keeps the bool but still removes the URL hack

LGTM with a ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421698</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 18:57:32 -0700</bug_when>
    <thetext>&gt; LGTM with a ChangeLog.

Ok.  I think we&apos;ll want to do the fully change eventually, but we can take it in smaller steps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421726</commentid>
    <comment_count>20</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-06-15 20:24:22 -0700</bug_when>
    <thetext>I just noticed that the patch set different gesture indicator when gesture hint said no gesture. For example
in  void PluginView::performRequest, it set PossiblyProcessingUserGesture when request-&gt;shouldAllowPopups said no gesture
but in void WebPluginContainerImpl::loadFrameReuest, it set DefinitelyNotProcessingUserGesture when request.hasUserGesture said no gesture

I think we should make it consistent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421732</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 20:34:35 -0700</bug_when>
    <thetext>&gt; I think we should make it consistent?

Yeah, I didn&apos;t change the one in WebPluginContainerImpl because it was already there, but&apos;s not correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421738</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-15 20:43:17 -0700</bug_when>
    <thetext>Committed r88998: &lt;http://trac.webkit.org/changeset/88998&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97250</attachid>
            <date>2011-06-15 01:15:08 -0700</date>
            <delta_ts>2011-06-15 07:13:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62702-20110615011507.patch</filename>
            <type>text/plain</type>
            <size>27576</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4OTEzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDYtMTUgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW1vdmUgZm9yY2VVc2VyR2VzdHVyZSBib29sIGluIGZhdm9yIG9m
IFVzZXJHZXN0dXJlSW5kaWNhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02MjcwMgorCisgICAgICAgIFBhc3NpbmcgdGhlIHVzZXIgZ2VzdHVyZSBz
dGF0ZSBhcm91bmQgaW4gQm9vbGVhbiBwYXJhbWV0ZXIgaXMKKyAgICAgICAgb2xkLXNhdWNlLiAg
SW5zdGVhZCwgY2FsbGVycyBzaG91bGQganVzdCBzZXQgdGhlIHVzZXIgZ2VzdHVyZQorICAgICAg
ICBpbmRpY2F0b3IgYXBwcm9wcmlhdGVseS4KKworICAgICAgICBUaGlzIHBhdGNoIHByb2JhYmx5
IG1ha2VzIHNvbWUgb2Ygb3VyIHVzZXIgZ2VzdHVyZSBkZXRlY3Rpb24gaGFja3MKKyAgICAgICAg
dW5uZWNlc3NhcnksIGJ1dCBJJ2xsIHJlbW92ZSB0aG9zZSBpbiBhIHN1YnNlcXVlbnQgcGF0Y2gu
CisKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KToKKwogMjAxMS0w
Ni0xNSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXZpZCBIeWF0dC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHAJKHJldmlzaW9uIDg4OTA5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MiwxMSArNTIsOSBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVT
Y3JpcHRzCiAgICAgcmV0dXJuIGFsbG93ZWQ7CiB9CiAKLVNjcmlwdFZhbHVlIFNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2Vy
R2VzdHVyZSkKK1NjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29u
c3QgU3RyaW5nJiBzY3JpcHQpCiB7Ci0gICAgLy8gRklYTUU6IFdoeSBkb2VzIHRoZSBVUkwgb2Yg
dGhlIHNjcmlwdCBkZXBlbmQgb24gZm9yY2VVc2VyR2VzdHVyZT8KLSAgICAvLyBUaGlzIGxvb2tz
IHN1c3BpY2lvdXNseSBsaWtlIGFuIG9sZCB1c2VyLWdlc3R1cmUgYmFjay1jaGFubmVsLgotICAg
IHJldHVybiBleGVjdXRlU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LCBmb3JjZVVzZXJH
ZXN0dXJlID8gS1VSTCgpIDogbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpKTsKKyAgICByZXR1
cm4gZXhlY3V0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdCwgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCkpKTsKIH0KIAogU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDg4OTA5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MCw2ICsyNzAsNyBAQCBib29sIFNjcmlwdENvbnRyb2xs
ZXI6OnByb2Nlc3NpbmdVc2VyR2VzCiB9CiAKIC8vIEZJWE1FOiBUaGlzIHNlZW1zIGxpa2UgYW4g
aW5zdWZmaWNpZW50IGNoZWNrIHRvIHZlcmlmeSBhIGNsaWNrIG9uIGEgamF2YXNjcmlwdDogYW5j
aG9yLgorLy8gRklYTUU6IFRoZXNlIG1fc291cmNlVVJMIGhhY2tzIHByb2JhYmx5IGFyZW4ndCBu
ZWVkZWQgYW55bW9yZS4KIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6aXNKYXZhU2NyaXB0QW5jaG9y
TmF2aWdhdGlvbigpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBpcyB0aGUgPGEgaHJlZj0iamF2YXNj
cmlwdDp3aW5kb3cub3BlbignLi4uJyk+IGNhc2UgLT4gd2UgbGV0IGl0IHRocm91Z2gKQEAgLTQ2
Niw5ICs0NjcsOSBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyU2NyaXB0T2JqZWN0CiAj
ZW5kaWYKIH0KIAotU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElu
V29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSkKK1NjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVT
Y3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0
KQogewotICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShzY3JpcHQsIGZvcmNlVXNlckdl
c3R1cmUgPyBLVVJMKCkgOiBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSk7CisgICAgU2NyaXB0
U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkp
OwogCiAgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkgfHwg
aXNQYXVzZWQoKSkKICAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCShyZXZpc2lvbiA4ODkw
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtOTEsOCArOTEsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZ2V0
QWxsV29ybGRzKFZlY3RvcjxET01XcmFwcGVyV29ybGQqPiYpOwogCiAgICAgU2NyaXB0VmFsdWUg
ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7Ci0gICAgU2NyaXB0VmFsdWUg
ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
ID0gZmFsc2UpOwotICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBw
ZXJXb3JsZCosIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBm
YWxzZSk7CisgICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlw
dCk7CisgICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxk
KiwgY29uc3QgU3RyaW5nJiBzY3JpcHQpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGFyZ3Vt
ZW50IGlzIGEgSmF2YVNjcmlwdCBVUkwuCiAgICAgYm9vbCBleGVjdXRlSWZKYXZhU2NyaXB0VVJM
KGNvbnN0IEtVUkwmLCBTaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxk
UmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMID0gUmVwbGFjZURvY3VtZW50SWZKYXZhU2Ny
aXB0VVJMKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNp
b24gODg5MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVk
ZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgog
I2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAKQEAgLTQ2OSw3ICs0NzAsMTIgQEAgdm9pZCBQ
bHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdChQbHVnaW5SZQogICAgIAogICAgIC8vIEV4ZWN1dGlu
ZyBhIHNjcmlwdCBjYW4gY2F1c2UgdGhlIHBsdWdpbiB2aWV3IHRvIGJlIGRlc3Ryb3llZCwgc28g
d2Uga2VlcCBhIHJlZmVyZW5jZSB0byBpdC4KICAgICBSZWZQdHI8UGx1Z2luVmlldz4gcHJvdGVj
dG9yKHRoaXMpOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IG1fcGFyZW50RnJhbWUtPnNjcmlw
dCgpLT5leGVjdXRlU2NyaXB0KGpzU3RyaW5nLCByZXF1ZXN0LT5zaG91bGRBbGxvd1BvcHVwcygp
KTsKKworICAgIFNjcmlwdFZhbHVlIHJlc3VsdDsKKyAgICB7CisgICAgICAgIFVzZXJHZXN0dXJl
SW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocmVxdWVzdC0+c2hvdWxkQWxsb3dQb3B1cHMoKSA/
IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVByb2Nlc3NpbmdVc2Vy
R2VzdHVyZSk7CisgICAgICAgIHJlc3VsdCA9IG1fcGFyZW50RnJhbWUtPnNjcmlwdCgpLT5leGVj
dXRlU2NyaXB0KGpzU3RyaW5nKTsKKyAgICB9CiAKICAgICBpZiAodGFyZ2V0RnJhbWVOYW1lLmlz
TnVsbCgpKSB7CiAgICAgICAgIFN0cmluZyByZXN1bHRTdHJpbmc7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA4ODkxMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTA2LTE1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlIGZvcmNlVXNlckdlc3R1cmUgYm9vbCBpbiBmYXZvciBvZiBVc2VyR2VzdHVyZUluZGlj
YXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI3
MDIKKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRVUkxSZXF1ZXN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisKIDIwMTEtMDYtMTQgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNh
bSBXZWluaWcuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiA4ODkwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgwLDggKzc4
MCw5IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybUphdmFTY3JpcHRVUkxSZXEKICAgICBSZWZQ
dHI8UGx1Z2luPiBwbHVnaW4gPSBtX3BsdWdpbjsKIAogICAgIGJvb2wgb2xkQWxsb3dQb3B1cHMg
PSBmcmFtZS0+c2NyaXB0KCktPmFsbG93UG9wdXBzRnJvbVBsdWdpbigpOwotICAgIGZyYW1lLT5z
Y3JpcHQoKS0+c2V0QWxsb3dQb3B1cHNGcm9tUGx1Z2luKHJlcXVlc3QtPmFsbG93UG9wdXBzKCkp
OwotICAgIAorICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0QWxsb3dQb3B1cHNGcm9tUGx1Z2luKCk7
CisKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgdXNlIFVzZXJHZXN0dXJlSW5k
aWNhdG9yLiBUaGF0J3Mgd2hhdCBvdGhlciBwb3J0cyBkby4KICAgICBTY3JpcHRWYWx1ZSByZXN1
bHQgPSBmcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoanNTdHJpbmcpOwogCiAgICAgZnJh
bWUtPnNjcmlwdCgpLT5zZXRBbGxvd1BvcHVwc0Zyb21QbHVnaW4ob2xkQWxsb3dQb3B1cHMpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
cmV2aXNpb24gODg5MDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdWJzdGl0dXRlRGF0YS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9V
c2VyR2VzdHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvbWFya3VwLmg+CiAjaW5j
bHVkZSA8cnVudGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KQEAg
LTE0MTUsNyArMTQxNiw5IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KGMKICAgICBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CiAKICAgICBKU0xv
Y2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotICAgIGlmIChKU1ZhbHVlIHJlc3VsdFZh
bHVlID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChz
Y3JpcHQsIHRydWUpLmpzVmFsdWUoKSkgeworCisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2Vz
dHVyZUluZGljYXRvcihEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKKyAgICBpZiAo
SlNWYWx1ZSByZXN1bHRWYWx1ZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkt
PmV4ZWN1dGVTY3JpcHQoc2NyaXB0KS5qc1ZhbHVlKCkpIHsKICAgICAgICAgaWYgKChzZXJpYWxp
emVkUmVzdWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShtX21haW5GcmFt
ZS0+anNDb250ZXh0KCksIHRvUmVmKG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkt
Pmdsb2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPmdsb2JhbEV4ZWMoKSwgcmVz
dWx0VmFsdWUpLCAwKSkpCiAgICAgICAgICAgICBkYXRhUmVmZXJlbmNlID0gc2VyaWFsaXplZFJl
c3VsdFZhbHVlLT5kYXRhKCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDg4OTEzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNi0xNSAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlbW92ZSBmb3JjZVVzZXJHZXN0dXJlIGJvb2wgaW4gZmF2b3Igb2YgVXNlckdl
c3R1cmVJbmRpY2F0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTYyNzAyCisKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVJbXBsOjpsb2FkSmF2YVNjcmlwdFVSTCk6CisgICAgICAgICogc3Jj
L1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5D
b250YWluZXJJbXBsOjpleGVjdXRlU2NyaXB0VVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1
Z2luQ29udGFpbmVySW1wbDo6bG9hZEZyYW1lUmVxdWVzdCk6CisKIDIwMTEtMDYtMTQgIEVyaWMg
VWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBGaXNoZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5jcHAJKHJldmlzaW9uIDg4OTA5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiw3IEBACiAjaW5jbHVk
ZSAiU3Vic3RpdHV0ZURhdGEuaCIKICNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKICNpbmNsdWRl
ICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2lu
Y2x1ZGUgIldlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmgiCiAjaW5jbHVkZSAiV2ViQ29uc29s
ZU1lc3NhZ2UuaCIKICNpbmNsdWRlICJXZWJEYXRhU291cmNlSW1wbC5oIgpAQCAtMjM0MywxMiAr
MjM0NCwxOSBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6bG9hZEphdmFTY3JpcHRVUkwoY29uCiAgICAg
Ly8gZnJvbSBldmFsdWF0aW5nIHRoZSBKUyBVUkwgaWYgZXhlY3V0aW5nIHRoZSBKUyBVUkwgcmVz
dWx0ZWQgaW4gYQogICAgIC8vIGxvY2F0aW9uIGNoYW5nZS4gIFdlIGFsc28gYWxsb3cgYSBKUyBV
UkwgdG8gYmUgbG9hZGVkIGV2ZW4gaWYgc2NyaXB0cyBvbgogICAgIC8vIHRoZSBwYWdlIGFyZSBv
dGhlcndpc2UgZGlzYWJsZWQuCisgICAgLy8gRklYTUU6IFlvdSBrbm93IHlvdSBjYW4gY2hhbmdl
IFNjcmlwdENvbnRyb2xsZXIuaCwgcmlnaHQ/CiAKKyAgICAvLyBGSVhNRTogbV9mcmFtZS0+ZG9j
dW1lbnQoKSBjYW4gbmV2ZXIgYmUgMC4KICAgICBpZiAoIW1fZnJhbWUtPmRvY3VtZW50KCkgfHwg
IW1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIHNjcmlwdCA9
IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKHN0cmxlbigi
amF2YXNjcmlwdDoiKSkpOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IG1fZnJhbWUtPnNjcmlw
dCgpLT5leGVjdXRlU2NyaXB0KHNjcmlwdCwgdHJ1ZSk7CisKKyAgICBTY3JpcHRWYWx1ZSByZXN1
bHQ7CisgICAgeworICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9y
KERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOworICAgICAgICByZXN1bHQgPSBtX2Zy
YW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQpOworICAgIH0KIAogICAgIFN0cmlu
ZyBzY3JpcHRSZXN1bHQ7CiAgICAgaWYgKCFyZXN1bHQuZ2V0U3RyaW5nKHNjcmlwdFJlc3VsdCkp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5D
b250YWluZXJJbXBsLmNwcAkocmV2aXNpb24gODg5MDkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU0
LDEwICszNTQsMTAgQEAgV2ViU3RyaW5nIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OmV4ZWN1dAog
ICAgIGNvbnN0IEtVUkwmIGt1cmwgPSB1cmw7CiAgICAgQVNTRVJUKGt1cmwucHJvdG9jb2xJcygi
amF2YXNjcmlwdCIpKTsKIAotICAgIFN0cmluZyBzY3JpcHQgPSBkZWNvZGVVUkxFc2NhcGVTZXF1
ZW5jZXMoCi0gICAgICAgIGt1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKHN0cmxlbigiamF2YXNjcmlw
dDoiKSkpOworICAgIFN0cmluZyBzY3JpcHQgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoa3Vy
bC5zdHJpbmcoKS5zdWJzdHJpbmcoc3RybGVuKCJqYXZhc2NyaXB0OiIpKSk7CiAKLSAgICBTY3Jp
cHRWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoc2NyaXB0LCBw
b3B1cHNBbGxvd2VkKTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9y
KHBvcHVwc0FsbG93ZWQgPyBEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogUG9zc2li
bHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOworICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IGZyYW1l
LT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQpOwogCiAgICAgLy8gRmFpbHVyZSBpcyBy
ZXBvcnRlZCBhcyBhIG51bGwgc3RyaW5nLgogICAgIFN0cmluZyByZXN1bHRTdHI7CkBAIC0zODIs
MTkgKzM4MiwxMCBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OmxvYWRGcmFtZVJlCiAg
ICAgICAgIFdlYkRhdGFTb3VyY2VJbXBsOjpzZXROZXh0UGx1Z2luTG9hZE9ic2VydmVyKG9ic2Vy
dmVyLnJlbGVhc2UoKSk7CiAgICAgfQogCi0gICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZVJlcXVl
c3QoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksCi0gICAgICAgIHJlcXVlc3Qu
dG9SZXNvdXJjZVJlcXVlc3QoKSwgdGFyZ2V0KTsKKyAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1l
UmVxdWVzdChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC50b1Jl
c291cmNlUmVxdWVzdCgpLCB0YXJnZXQpOwogCi0gICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2Vz
dHVyZUluZGljYXRvcihyZXF1ZXN0Lmhhc1VzZXJHZXN0dXJlKCkgPwotICAgICAgICBEZWZpbml0
ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogRGVmaW5pdGVseU5vdFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSk7Ci0KLSAgICBmcmFtZS0+bG9hZGVyKCktPmxvYWRGcmFtZVJlcXVlc3QoCi0gICAgICAg
IGZyYW1lUmVxdWVzdCwKLSAgICAgICAgZmFsc2UsICAvLyBsb2NrIGhpc3RvcnkKLSAgICAgICAg
ZmFsc2UsICAvLyBsb2NrIGJhY2sgZm9yd2FyZCBsaXN0Ci0gICAgICAgIDAsICAgICAgLy8gZXZl
bnQKLSAgICAgICAgMCwgICAgIC8vIGZvcm0gc3RhdGUKLSAgICAgICAgU2VuZFJlZmVycmVyKTsK
KyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHJlcXVlc3QuaGFzVXNl
ckdlc3R1cmUoKSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBEZWZpbml0ZWx5
Tm90UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKKyAgICBmcmFtZS0+bG9hZGVyKCktPmxvYWRGcmFt
ZVJlcXVlc3QoZnJhbWVSZXF1ZXN0LCBmYWxzZSwgZmFsc2UsIDAsIDAsIFNlbmRSZWZlcnJlcik7
CiB9CiAKIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6em9vbUxldmVsQ2hhbmdlZChkb3Vi
bGUgem9vbUxldmVsKQpJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gODg5MTMpCisrKyBT
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAxMS0wNi0xNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBmb3JjZVVzZXJH
ZXN0dXJlIGJvb2wgaW4gZmF2b3Igb2YgVXNlckdlc3R1cmVJbmRpY2F0b3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzAyCisKKyAgICAgICAgKiBl
d2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFtZV9zY3JpcHRfZXhlY3V0ZSk6CisK
IDIwMTEtMDYtMTMgIE1pY2hhbCBQYWt1bGEgdmVsIFJ1dGthICA8bS5wYWt1bGFAc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcAkocmV2aXNpb24gODg5MDkpCisrKyBTb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2lu
Y2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiU3Vic3RpdHV0ZURhdGEuaCIKKyNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgog
I2luY2x1ZGUgIldpbmRvd3NLZXlib2FyZENvZGVzLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUu
aCIKIApAQCAtNjAyLDcgKzYwMyw5IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfc2NyaXB0X2V4ZWN1
dGUoRXZhc18KICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxT
RSk7CiAgICAgRUlOQV9TQUZFVFlfT05fRkFMU0VfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFf
RkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzY3JpcHQsIEVJTkFf
RkFMU0UpOwotICAgIHNkLT5mcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoV1RGOjpTdHJp
bmc6OmZyb21VVEY4KHNjcmlwdCksIHRydWUpOworCisgICAgV2ViQ29yZTo6VXNlckdlc3R1cmVJ
bmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihXZWJDb3JlOjpEZWZpbml0ZWx5UHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKTsKKyAgICBzZC0+ZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KFdURjo6
U3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpKTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA4ODkxMykKKysrIFNvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTA2LTE1ICBB
ZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGZvcmNlVXNlckdlc3R1cmUgYm9vbCBpbiBm
YXZvciBvZiBVc2VyR2VzdHVyZUluZGljYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI3MDIKKworICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19leGVjdXRlX3NjcmlwdCk6CisKIDIw
MTEtMDYtMTQgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDg4OTA5KQorKysgU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3IEBA
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIK
ICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NRG9jdW1lbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAi
d2Via2l0ZG93bmxvYWQuaCIKICNpbmNsdWRlICJ3ZWJraXRkb3dubG9hZHByaXZhdGUuaCIKQEAg
LTQwODUsNyArNDA4Niw4IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfc2NyaXB0KFdl
YksKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAg
ICAgZ19yZXR1cm5faWZfZmFpbChzY3JpcHQpOwogCi0gICAgY29yZSh3ZWJWaWV3KS0+bWFpbkZy
YW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwg
dHJ1ZSk7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihEZWZpbml0
ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKKyAgICBjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUo
KS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpKTsKIH0K
IAogLyoqCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4ODkxMykKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEx
LTA2LTE1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGZvcmNlVXNlckdlc3R1cmUg
Ym9vbCBpbiBmYXZvciBvZiBVc2VyR2VzdHVyZUluZGljYXRvcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI3MDIKKworICAgICAgICAqIFdlYlZpZXcv
V2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9zdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0dXJlOl0pOgorICAgICAgICAoLVtXZWJGcmFt
ZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6d2l0aEdsb2JhbE9iamVj
dDppblNjcmlwdFdvcmxkOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViVmlldyBhZURlc2NCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpdKToK
KwogMjAxMS0wNi0xNCAgU3RlcGhhbmllIExld2lzICA8c2xld2lzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSdWJiZXIgc3RhbXBlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gODg5MDkpCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRD
aGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9UeXBpbmdDb21tYW5kLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL2h0bWxlZGl0aW5n
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL21hcmt1cC5oPgogI2ltcG9ydCA8V2ViQ29yZS92aXNpYmxl
X3VuaXRzLmg+CkBAIC02MDgsOCArNjA5LDkgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcgogLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dEZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGZvcmNlVXNlckdlc3R1cmU6KEJPT0wpZm9y
Y2VVc2VyR2VzdHVyZQogewogICAgIEFTU0VSVChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVu
dCgpKTsKLSAgICAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNj
cmlwdCgpLT5leGVjdXRlU2NyaXB0KHN0cmluZywgZm9yY2VVc2VyR2VzdHVyZSkuanNWYWx1ZSgp
OworCisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihmb3JjZVVzZXJH
ZXN0dXJlID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IFBvc3NpYmx5UHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IF9wcml2YXRlLT5jb3JlRnJh
bWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KHN0cmluZykuanNWYWx1ZSgpOwogCiAgICAgaWYg
KCFfcHJpdmF0ZS0+Y29yZUZyYW1lKSAvLyBJbiBjYXNlIHRoZSBzY3JpcHQgcmVtb3ZlZCBvdXIg
ZnJhbWUgZnJvbSB0aGUgcGFnZS4KICAgICAgICAgcmV0dXJuIEAiIjsKQEAgLTEyMDQsOCArMTIw
NiwxMSBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyCiAgICAgLy8g
R2V0IHRoZSBmcmFtZSBmcm9tZSB0aGUgZ2xvYmFsIG9iamVjdCB3ZSd2ZSBzZXR0bGVkIG9uLgog
ICAgIEZyYW1lKiBmcmFtZSA9IGFueVdvcmxkR2xvYmFsT2JqZWN0LT5pbXBsKCktPmZyYW1lKCk7
CiAgICAgQVNTRVJUKGZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGZy
YW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdEluV29ybGQoY29yZSh3b3JsZCksIHN0cmluZywg
dHJ1ZSkuanNWYWx1ZSgpOwogCisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGlj
YXRvcihEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdEluV29ybGQoY29yZSh3b3JsZCksIHN0
cmluZykuanNWYWx1ZSgpOworCisgICAgLy8gRklYTUU6IGZyYW1lIGlzIGp1c3QgYSBsb2NhbCB2
YXJpYmxlLiAgVGVzdGluZyBpdCBmb3IgbnVsbCBkb2Vzbid0IGRvIGFueXRoaW5nLgogICAgIGlm
ICghZnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1vdmVkIG91ciBmcmFtZSBmcm9tIHRo
ZSBwYWdlLgogICAgICAgICByZXR1cm4gQCIiOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA4ODkwOSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRSZXNvdXJjZURlY29k
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KKyNpbXBvcnQgPFdlYkNvcmUv
VXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRy
YXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2lkZ2V0Lmg+CkBAIC00NzE2LDcgKzQ3MTcsMTAgQEAgLSAoTlNBcHBsZUV2ZW50RGVzY3JpcHRv
ciAqKWFlRGVzY0J5RXZhbAogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmICghY29yZUZyYW1l
LT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIEpTVmFsdWUgcmVzdWx0ID0g
Y29yZUZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQsIHRydWUpLmpzVmFsdWUo
KTsKKworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2Vy
R2VzdHVyZSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVByb2Nl
c3NpbmdVc2VyR2VzdHVyZSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBjb3JlRnJhbWUtPnNjcmlw
dCgpLT5leGVjdXRlU2NyaXB0KHNjcmlwdCkuanNWYWx1ZSgpOworCiAgICAgaWYgKCFyZXN1bHQp
IC8vIEZJWE1FOiBwYXNzIGVycm9ycwogICAgICAgICByZXR1cm4gMDsKICAgICBKU0xvY2sgbG9j
ayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4
OTEzKQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNSBAQAorMjAxMS0wNi0xNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBm
b3JjZVVzZXJHZXN0dXJlIGJvb2wgaW4gZmF2b3Igb2YgVXNlckdlc3R1cmVJbmRpY2F0b3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzAyCisKKyAg
ICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6ZXZhbHVhdGVK
YXZhU2NyaXB0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZXZhbHVhdGVTY3Jp
cHRJbklzb2xhdGVkV29ybGQpOgorCiAyMDExLTA2LTE0ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVp
cmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kcmVhcyBLbGluZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFt
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAko
cmV2aXNpb24gODg5MDkpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTg1LDYgKzE1ODUsNyBAQCBRVmFyaWFudCBRV2ViRnJhbWU6OmV2
YWx1YXRlSmF2YVNjcmlwdChjCiAgICAgaWYgKHByb3h5KSB7CiAjaWYgVVNFKEpTQykKICAgICAg
ICAgaW50IGRpc3RhbmNlID0gMDsKKyAgICAgICAgLy8gRklYTUU6IERvIHdlIHdhbnQgdG8gc2V0
IHRoZSB1c2VyIGdlc3R1cmUgaW5kaWNhdG9yIGhlcmU/IE1vc3Qgb3RoZXIgcG9ydHMgZG8uCiAg
ICAgICAgIEpTQzo6SlNWYWx1ZSB2ID0gZC0+ZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0
KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0U291cmNlKSkuanNWYWx1ZSgpOwogCiAgICAgICAgIHJj
ID0gSlNDOjpCaW5kaW5nczo6Y29udmVydFZhbHVlVG9RVmFyaWFudChwcm94eS0+Z2xvYmFsT2Jq
ZWN0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+Z2xvYmFsRXhlYygpLCB2LCBRTWV0YVR5cGU6
OlZvaWQsICZkaXN0YW5jZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkocmV2aXNpb24g
ODg5MDkpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsNyBAQAogI2luY2x1ZGUg
IlNWR1NNSUxFbGVtZW50LmgiCiAjZW5kaWYKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKKyNp
bmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIldlYkNvcmVUZXN0U3Vw
cG9ydC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgpAQCAtOTI5LDE3ICs5MzAsMTQgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6ZXZhbHVhdGVTYwogCiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSA9IFFXZWJGcmFt
ZVByaXZhdGU6OmNvcmUoZnJhbWUpOwogCi0gICAgU2NyaXB0Q29udHJvbGxlciogcHJveHkgPSBj
b3JlRnJhbWUtPnNjcmlwdCgpOwotCi0gICAgaWYgKCFwcm94eSkKLSAgICAgICAgcmV0dXJuOwor
ICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoRGVmaW5pdGVseVByb2Nl
c3NpbmdVc2VyR2VzdHVyZSk7CiAjaWYgVVNFKEpTQykKLSAgICBwcm94eS0+ZXhlY3V0ZVNjcmlw
dEluV29ybGQoc2NyaXB0V29ybGQtPndvcmxkKCksIHNjcmlwdCwgdHJ1ZSk7CisgICAgY29yZUZy
YW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdEluV29ybGQoc2NyaXB0V29ybGQtPndvcmxkKCks
IHNjcmlwdCk7CiAjZWxpZiBVU0UoVjgpCiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2Uoc2Ny
aXB0KTsKICAgICBWZWN0b3I8U2NyaXB0U291cmNlQ29kZT4gc291cmNlczsKICAgICBzb3VyY2Vz
LmFwcGVuZChzb3VyY2UpOwotICAgIHByb3h5LT5ldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCgwLCBz
b3VyY2VzLCB0cnVlKTsKKyAgICBjb3JlRnJhbWUtPnNjcmlwdCgpLT5ldmFsdWF0ZUluSXNvbGF0
ZWRXb3JsZCgwLCBzb3VyY2VzKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShy
ZXZpc2lvbiA4ODkxMykKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTA2LTE1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVtb3ZlIGZvcmNlVXNlckdlc3R1cmUgYm9vbCBpbiBmYXZvciBvZiBVc2VyR2VzdHVyZUlu
ZGljYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjI3MDIKKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0SW5TY3JpcHRXb3JsZCk6CisgICAgICAgICogV2ViVmll
dy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJv
bVN0cmluZyk6CisKIDIwMTEtMDYtMTMgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpJbmRleDogU291
cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gODg5MDkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDYgQEAKICNpbmNsdWRlICJX
ZWJWaWV3LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9DT01QdHIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oPgpAQCAtNzMsMTMg
KzcyLDE1IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0hpc3RvcnlJdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MQXBwbGV0RWxl
bWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZvcm1FbGVtZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9IVE1M
Rm9ybUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxJbnB1dEVsZW1lbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFBsdWdJ
bkVsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NQmluZGluZy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSlNET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZlbnQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
b3VzZVJlbGF0ZWRFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KQEAgLTg4LDE4ICs4OSwxOCBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvUGx1Z2luRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpblZpZXcu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaW50Q29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UmVuZGVyVHJlZUFzVGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvUmVuZGVyVHJlZUFzVGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29u
dHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TVkdTTUlMRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9KU0RPTUJpbmRpbmcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Nj
cmlwdENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFZhbHVlLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdl
c3R1cmVJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNPYmplY3QuaD4KQEAgLTI1NzQsOCArMjU3NSwxMSBAQCBIUkVTVUxUIFdlYkZyYW1lOjpz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhCiAgICAgLy8gR2V0IHRoZSBmcmFtZSBmcm9tZSB0aGUgZ2xv
YmFsIG9iamVjdCB3ZSd2ZSBzZXR0bGVkIG9uLgogICAgIEZyYW1lKiBmcmFtZSA9IGFueVdvcmxk
R2xvYmFsT2JqZWN0LT5pbXBsKCktPmZyYW1lKCk7CiAgICAgQVNTRVJUKGZyYW1lLT5kb2N1bWVu
dCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlw
dEluV29ybGQod29ybGQtPndvcmxkKCksIHN0cmluZywgdHJ1ZSkuanNWYWx1ZSgpOwogCisgICAg
VXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihEZWZpbml0ZWx5UHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS0+ZXhl
Y3V0ZVNjcmlwdEluV29ybGQod29ybGQtPndvcmxkKCksIHN0cmluZykuanNWYWx1ZSgpOworCisg
ICAgLy8gRklYTUU6IGZyYW1lIGlzIGp1c3QgYSBsb2NhbCB2YXJhYmxlLiBUZXN0aW5nIGl0IGZv
ciBudWxsIGRvZXNuJ3QgZG8gYW55dGhpbmcuCiAgICAgaWYgKCFmcmFtZSkgLy8gSW4gY2FzZSB0
aGUgc2NyaXB0IHJlbW92ZWQgb3VyIGZyYW1lIGZyb20gdGhlIHBhZ2UuCiAgICAgICAgIHJldHVy
biBTX09LOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gODg5MDkpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDYgKzEz
Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TaW1wbGVGb250RGF0YS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU3lzdGVtSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVHlwaW5nQ29tbWFuZC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93
c1RvdWNoLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtMzE2MSw3ICszMTYyLDkg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzdHJpbgogICAgIGlmICghY29y
ZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgSlNDOjpKU1ZhbHVlIHNjcmlw
dEV4ZWN1dGlvblJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoV1RG
OjpTdHJpbmcoc2NyaXB0KSwgdHJ1ZSkuanNWYWx1ZSgpOworICAgIFVzZXJHZXN0dXJlSW5kaWNh
dG9yIGdlc3R1cmVJbmRpY2F0b3IoRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Cisg
ICAgSlNDOjpKU1ZhbHVlIHNjcmlwdEV4ZWN1dGlvblJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0
KCktPmV4ZWN1dGVTY3JpcHQoV1RGOjpTdHJpbmcoc2NyaXB0KSkuanNWYWx1ZSgpOworCiAgICAg
aWYgKCFzY3JpcHRFeGVjdXRpb25SZXN1bHQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAg
ZWxzZSBpZiAoc2NyaXB0RXhlY3V0aW9uUmVzdWx0LmlzU3RyaW5nKCkpIHsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvQ2hh
bmdlTG9nCShyZXZpc2lvbiA4ODkxMykKKysrIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDYtMTUgIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZW1vdmUgZm9yY2VVc2VyR2VzdHVyZSBib29sIGluIGZhdm9yIG9mIFVzZXJH
ZXN0dXJlSW5kaWNhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02MjcwMgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAod3hXZWJG
cmFtZTo6UnVuU2NyaXB0KToKKwogMjAxMS0wNi0xMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3d4L1dlYkZyYW1lLmNwcAkocmV2aXNpb24gODg5MDkpCisrKyBTb3VyY2UvV2ViS2l0L3d4
L1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUg
IlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU3Vic3RpdHV0ZURhdGEuaCIKICNpbmNsdWRlICJU
ZXh0RW5jb2RpbmcuaCIKKyNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogCiAjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CkBAIC0z
MzAsNyArMzMxLDggQEAgd3hTdHJpbmcgd3hXZWJGcmFtZTo6UnVuU2NyaXB0KGNvbnN0IHd4Uwog
ICAgICAgICAgICAgYm9vbCBqc0VuYWJsZWQgPSBjb250cm9sbGVyLT5jYW5FeGVjdXRlU2NyaXB0
cyhXZWJDb3JlOjpBYm91dFRvRXhlY3V0ZVNjcmlwdCk7IAogICAgICAgICAgICAgd3hBU1NFUlRf
TVNHKGpzRW5hYmxlZCwgd3hUKCJSdW5TY3JpcHQgcmVxdWlyZXMgSmF2YVNjcmlwdCB0byBiZSBl
bmFibGVkLiIpKTsKICAgICAgICAgICAgIGlmIChqc0VuYWJsZWQpIHsKLSAgICAgICAgICAgICAg
ICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gY29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChqYXZhc2Ny
aXB0LCB0cnVlKS5qc1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgV2ViQ29yZTo6VXNlckdlc3R1
cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihXZWJDb3JlOjpEZWZpbml0ZWx5UHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKTsKKyAgICAgICAgICAgICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gY29u
dHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChqYXZhc2NyaXB0KS5qc1ZhbHVlKCk7CiAgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB3eFN0
cmluZyhyZXN1bHQudG9TdHJpbmcobV9pbXBsLT5mcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVj
dChXZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPmdsb2JhbEV4ZWMoKSkudXRmOCgp
LmRhdGEoKSwgd3hDb252VVRGOCk7ICAgICAgICAKICAgICAgICAgICAgIH0K
</data>
<flag name="commit-queue"
          id="91139"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97258</attachid>
            <date>2011-06-15 01:52:05 -0700</date>
            <delta_ts>2011-06-15 13:57:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62702-20110615015203.patch</filename>
            <type>text/plain</type>
            <size>27921</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4OTE0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDYtMTUgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW1vdmUgZm9yY2VVc2VyR2VzdHVyZSBib29sIGluIGZhdm9yIG9m
IFVzZXJHZXN0dXJlSW5kaWNhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02MjcwMgorCisgICAgICAgIFBhc3NpbmcgdGhlIHVzZXIgZ2VzdHVyZSBz
dGF0ZSBhcm91bmQgaW4gQm9vbGVhbiBwYXJhbWV0ZXIgaXMKKyAgICAgICAgb2xkLXNhdWNlLiAg
SW5zdGVhZCwgY2FsbGVycyBzaG91bGQganVzdCBzZXQgdGhlIHVzZXIgZ2VzdHVyZQorICAgICAg
ICBpbmRpY2F0b3IgYXBwcm9wcmlhdGVseS4KKworICAgICAgICBUaGlzIHBhdGNoIHByb2JhYmx5
IG1ha2VzIHNvbWUgb2Ygb3VyIHVzZXIgZ2VzdHVyZSBkZXRlY3Rpb24gaGFja3MKKyAgICAgICAg
dW5uZWNlc3NhcnksIGJ1dCBJJ2xsIHJlbW92ZSB0aG9zZSBpbiBhIHN1YnNlcXVlbnQgcGF0Y2gu
CisKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KToKKwogMjAxMS0w
Ni0xNSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXZpZCBIeWF0dC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHAJKHJldmlzaW9uIDg4OTE0KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MiwxMSArNTIsOSBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVT
Y3JpcHRzCiAgICAgcmV0dXJuIGFsbG93ZWQ7CiB9CiAKLVNjcmlwdFZhbHVlIFNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2Vy
R2VzdHVyZSkKK1NjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29u
c3QgU3RyaW5nJiBzY3JpcHQpCiB7Ci0gICAgLy8gRklYTUU6IFdoeSBkb2VzIHRoZSBVUkwgb2Yg
dGhlIHNjcmlwdCBkZXBlbmQgb24gZm9yY2VVc2VyR2VzdHVyZT8KLSAgICAvLyBUaGlzIGxvb2tz
IHN1c3BpY2lvdXNseSBsaWtlIGFuIG9sZCB1c2VyLWdlc3R1cmUgYmFjay1jaGFubmVsLgotICAg
IHJldHVybiBleGVjdXRlU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LCBmb3JjZVVzZXJH
ZXN0dXJlID8gS1VSTCgpIDogbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpKTsKKyAgICByZXR1
cm4gZXhlY3V0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdCwgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCkpKTsKIH0KIAogU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQpAQCAtOTUsNyArOTMs
NyBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpCiAgICAgY29uc3Qg
aW50IGphdmFzY3JpcHRTY2hlbWVMZW5ndGggPSBzaXplb2YoImphdmFzY3JpcHQ6IikgLSAxOwog
CiAgICAgU3RyaW5nIGRlY29kZWRVUkwgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnN0
cmluZygpKTsKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHQgPSBleGVjdXRlU2NyaXB0KGRlY29kZWRV
Ukwuc3Vic3RyaW5nKGphdmFzY3JpcHRTY2hlbWVMZW5ndGgpLCBmYWxzZSk7CisgICAgU2NyaXB0
VmFsdWUgcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdChkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2Ny
aXB0U2NoZW1lTGVuZ3RoKSk7CiAKICAgICAvLyBJZiBleGVjdXRpbmcgc2NyaXB0IGNhdXNlZCB0
aGlzIGZyYW1lIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgcGFnZSwgd2UKICAgICAvLyBkb24ndCB3
YW50IHRvIHRyeSB0byByZXBsYWNlIGl0cyBkb2N1bWVudCEKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA4ODkxNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzAsNiArMjcwLDcgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVyOjpwcm9j
ZXNzaW5nVXNlckdlcwogfQogCiAvLyBGSVhNRTogVGhpcyBzZWVtcyBsaWtlIGFuIGluc3VmZmlj
aWVudCBjaGVjayB0byB2ZXJpZnkgYSBjbGljayBvbiBhIGphdmFzY3JpcHQ6IGFuY2hvci4KKy8v
IEZJWE1FOiBUaGVzZSBtX3NvdXJjZVVSTCBoYWNrcyBwcm9iYWJseSBhcmVuJ3QgbmVlZGVkIGFu
eW1vcmUuCiBib29sIFNjcmlwdENvbnRyb2xsZXI6OmlzSmF2YVNjcmlwdEFuY2hvck5hdmlnYXRp
b24oKSBjb25zdAogewogICAgIC8vIFRoaXMgaXMgdGhlIDxhIGhyZWY9ImphdmFzY3JpcHQ6d2lu
ZG93Lm9wZW4oJy4uLicpPiBjYXNlIC0+IHdlIGxldCBpdCB0aHJvdWdoCkBAIC00NjYsOSArNDY3
LDkgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhclNjcmlwdE9iamVjdAogI2VuZGlmCiB9
CiAKLVNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERP
TVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNl
ckdlc3R1cmUpCitTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5X
b3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHsKLSAg
ICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlID8g
S1VSTCgpIDogbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpOworICAgIFNjcmlwdFNvdXJjZUNv
ZGUgc291cmNlQ29kZShzY3JpcHQsIG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKTsKIAogICAg
IGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IGlzUGF1c2Vk
KCkpCiAgICAgICAgIHJldHVybiBTY3JpcHRWYWx1ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAkocmV2aXNpb24gODg5MTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTkxLDggKzkxLDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGdldEFsbFdvcmxk
cyhWZWN0b3I8RE9NV3JhcHBlcldvcmxkKj4mKTsKIAogICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVT
Y3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwotICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVT
Y3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNl
KTsKLSAgICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQq
LCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwor
ICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQpOworICAg
IFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0
IFN0cmluZyYgc2NyaXB0KTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhcmd1bWVudCBpcyBh
IEphdmFTY3JpcHQgVVJMLgogICAgIGJvb2wgZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBL
VVJMJiwgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMIHNob3VsZFJlcGxhY2VE
b2N1bWVudElmSmF2YVNjcmlwdFVSTCA9IFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5o
CShyZXZpc2lvbiA4ODkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENv
bnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAg
VjhQcm94eSogcHJveHkoKSB7IHJldHVybiBtX3Byb3h5LmdldCgpOyB9CiAKICAgICBTY3JpcHRW
YWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKLSAgICBTY3JpcHRW
YWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUgPSBmYWxzZSk7CisgICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJp
bmcmKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhcmd1bWVudCBpcyBhIEphdmFTY3JpcHQg
VVJMLgogICAgIGJvb2wgZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBLVVJMJiwgU2hvdWxk
UmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMIHNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2
YVNjcmlwdFVSTCA9IFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHJldmlzaW9uIDg4OTE0KQorKysgU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiAr
NjIsNyBAQAogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNh
dG9yLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlD
VHlwZS5oPgogCkBAIC00NjksNyArNDcwLDEyIEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJl
cXVlc3QoUGx1Z2luUmUKICAgICAKICAgICAvLyBFeGVjdXRpbmcgYSBzY3JpcHQgY2FuIGNhdXNl
IHRoZSBwbHVnaW4gdmlldyB0byBiZSBkZXN0cm95ZWQsIHNvIHdlIGtlZXAgYSByZWZlcmVuY2Ug
dG8gaXQuCiAgICAgUmVmUHRyPFBsdWdpblZpZXc+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBTY3Jp
cHRWYWx1ZSByZXN1bHQgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChq
c1N0cmluZywgcmVxdWVzdC0+c2hvdWxkQWxsb3dQb3B1cHMoKSk7CisKKyAgICBTY3JpcHRWYWx1
ZSByZXN1bHQ7CisgICAgeworICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5k
aWNhdG9yKHJlcXVlc3QtPnNob3VsZEFsbG93UG9wdXBzKCkgPyBEZWZpbml0ZWx5UHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlIDogUG9zc2libHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOworICAgICAgICBy
ZXN1bHQgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChqc1N0cmluZyk7
CisgICAgfQogCiAgICAgaWYgKHRhcmdldEZyYW1lTmFtZS5pc051bGwoKSkgewogICAgICAgICBT
dHJpbmcgcmVzdWx0U3RyaW5nOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gODg5MTQpCisrKyBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAxMS0wNi0xNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBmb3JjZVVzZXJHZXN0
dXJlIGJvb2wgaW4gZmF2b3Igb2YgVXNlckdlc3R1cmVJbmRpY2F0b3IKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzAyCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisKIDIwMTEtMDYtMTQgIEV1bm1pIExlZSAgPGV1bm1p
MTUubGVlQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShy
ZXZpc2lvbiA4ODkxNCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1YnN0aXR1dGVEYXRhLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Vz
ZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9tYXJrdXAuaD4KICNpbmNs
dWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgpAQCAt
MTQxNSw3ICsxNDE2LDkgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUo
YwogICAgIENvcmVJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKIAogICAgIEpTTG9j
ayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgaWYgKEpTVmFsdWUgcmVzdWx0VmFs
dWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KHNj
cmlwdCwgdHJ1ZSkuanNWYWx1ZSgpKSB7CisKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0
dXJlSW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOworICAgIGlmIChK
U1ZhbHVlIHJlc3VsdFZhbHVlID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS0+
ZXhlY3V0ZVNjcmlwdChzY3JpcHQpLmpzVmFsdWUoKSkgewogICAgICAgICBpZiAoKHNlcmlhbGl6
ZWRSZXN1bHRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG1fbWFpbkZyYW1l
LT5qc0NvbnRleHQoKSwgdG9SZWYobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS0+
Z2xvYmFsT2JqZWN0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+Z2xvYmFsRXhlYygpLCByZXN1
bHRWYWx1ZSksIDApKSkKICAgICAgICAgICAgIGRhdGFSZWZlcmVuY2UgPSBzZXJpYWxpemVkUmVz
dWx0VmFsdWUtPmRhdGEoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
cmV2aXNpb24gODg5MTQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA2LTE1ICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVtb3ZlIGZvcmNlVXNlckdlc3R1cmUgYm9vbCBpbiBmYXZvciBvZiBVc2VyR2Vz
dHVyZUluZGljYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjI3MDIKKworICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUltcGw6OmxvYWRKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKiBzcmMv
V2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNv
bnRhaW5lckltcGw6OmV4ZWN1dGVTY3JpcHRVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVn
aW5Db250YWluZXJJbXBsOjpsb2FkRnJhbWVSZXF1ZXN0KToKKwogMjAxMS0wNi0xMCAgWXVyeSBT
ZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
bWl0cnkgVGl0b3YuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUlt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1l
SW1wbC5jcHAJKHJldmlzaW9uIDg4OTE0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiw3IEBACiAjaW5j
bHVkZSAiU3Vic3RpdHV0ZURhdGEuaCIKICNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKICNpbmNs
dWRlICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgog
I2luY2x1ZGUgIldlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmgiCiAjaW5jbHVkZSAiV2ViQ29u
c29sZU1lc3NhZ2UuaCIKICNpbmNsdWRlICJXZWJEYXRhU291cmNlSW1wbC5oIgpAQCAtMjM0Mywx
MiArMjM0NCwxOSBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6bG9hZEphdmFTY3JpcHRVUkwoY29uCiAg
ICAgLy8gZnJvbSBldmFsdWF0aW5nIHRoZSBKUyBVUkwgaWYgZXhlY3V0aW5nIHRoZSBKUyBVUkwg
cmVzdWx0ZWQgaW4gYQogICAgIC8vIGxvY2F0aW9uIGNoYW5nZS4gIFdlIGFsc28gYWxsb3cgYSBK
UyBVUkwgdG8gYmUgbG9hZGVkIGV2ZW4gaWYgc2NyaXB0cyBvbgogICAgIC8vIHRoZSBwYWdlIGFy
ZSBvdGhlcndpc2UgZGlzYWJsZWQuCisgICAgLy8gRklYTUU6IFlvdSBrbm93IHlvdSBjYW4gY2hh
bmdlIFNjcmlwdENvbnRyb2xsZXIuaCwgcmlnaHQ/CiAKKyAgICAvLyBGSVhNRTogbV9mcmFtZS0+
ZG9jdW1lbnQoKSBjYW4gbmV2ZXIgYmUgMC4KICAgICBpZiAoIW1fZnJhbWUtPmRvY3VtZW50KCkg
fHwgIW1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIHNjcmlw
dCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKHN0cmxl
bigiamF2YXNjcmlwdDoiKSkpOwotICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IG1fZnJhbWUtPnNj
cmlwdCgpLT5leGVjdXRlU2NyaXB0KHNjcmlwdCwgdHJ1ZSk7CisKKyAgICBTY3JpcHRWYWx1ZSBy
ZXN1bHQ7CisgICAgeworICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNh
dG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOworICAgICAgICByZXN1bHQgPSBt
X2ZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQpOworICAgIH0KIAogICAgIFN0
cmluZyBzY3JpcHRSZXN1bHQ7CiAgICAgaWYgKCFyZXN1bHQuZ2V0U3RyaW5nKHNjcmlwdFJlc3Vs
dCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJ
bXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVn
aW5Db250YWluZXJJbXBsLmNwcAkocmV2aXNpb24gODg5MTQpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzU0LDEwICszNTQsMTAgQEAgV2ViU3RyaW5nIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OmV4ZWN1
dAogICAgIGNvbnN0IEtVUkwmIGt1cmwgPSB1cmw7CiAgICAgQVNTRVJUKGt1cmwucHJvdG9jb2xJ
cygiamF2YXNjcmlwdCIpKTsKIAotICAgIFN0cmluZyBzY3JpcHQgPSBkZWNvZGVVUkxFc2NhcGVT
ZXF1ZW5jZXMoCi0gICAgICAgIGt1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKHN0cmxlbigiamF2YXNj
cmlwdDoiKSkpOworICAgIFN0cmluZyBzY3JpcHQgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMo
a3VybC5zdHJpbmcoKS5zdWJzdHJpbmcoc3RybGVuKCJqYXZhc2NyaXB0OiIpKSk7CiAKLSAgICBT
Y3JpcHRWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoc2NyaXB0
LCBwb3B1cHNBbGxvd2VkKTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNh
dG9yKHBvcHVwc0FsbG93ZWQgPyBEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogUG9z
c2libHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOworICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IGZy
YW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQpOwogCiAgICAgLy8gRmFpbHVyZSBp
cyByZXBvcnRlZCBhcyBhIG51bGwgc3RyaW5nLgogICAgIFN0cmluZyByZXN1bHRTdHI7CkBAIC0z
ODIsMTkgKzM4MiwxMCBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OmxvYWRGcmFtZVJl
CiAgICAgICAgIFdlYkRhdGFTb3VyY2VJbXBsOjpzZXROZXh0UGx1Z2luTG9hZE9ic2VydmVyKG9i
c2VydmVyLnJlbGVhc2UoKSk7CiAgICAgfQogCi0gICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZVJl
cXVlc3QoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksCi0gICAgICAgIHJlcXVl
c3QudG9SZXNvdXJjZVJlcXVlc3QoKSwgdGFyZ2V0KTsKKyAgICBGcmFtZUxvYWRSZXF1ZXN0IGZy
YW1lUmVxdWVzdChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC50
b1Jlc291cmNlUmVxdWVzdCgpLCB0YXJnZXQpOwogCi0gICAgVXNlckdlc3R1cmVJbmRpY2F0b3Ig
Z2VzdHVyZUluZGljYXRvcihyZXF1ZXN0Lmhhc1VzZXJHZXN0dXJlKCkgPwotICAgICAgICBEZWZp
bml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogRGVmaW5pdGVseU5vdFByb2Nlc3NpbmdVc2Vy
R2VzdHVyZSk7Ci0KLSAgICBmcmFtZS0+bG9hZGVyKCktPmxvYWRGcmFtZVJlcXVlc3QoCi0gICAg
ICAgIGZyYW1lUmVxdWVzdCwKLSAgICAgICAgZmFsc2UsICAvLyBsb2NrIGhpc3RvcnkKLSAgICAg
ICAgZmFsc2UsICAvLyBsb2NrIGJhY2sgZm9yd2FyZCBsaXN0Ci0gICAgICAgIDAsICAgICAgLy8g
ZXZlbnQKLSAgICAgICAgMCwgICAgIC8vIGZvcm0gc3RhdGUKLSAgICAgICAgU2VuZFJlZmVycmVy
KTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHJlcXVlc3QuaGFz
VXNlckdlc3R1cmUoKSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBEZWZpbml0
ZWx5Tm90UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKKyAgICBmcmFtZS0+bG9hZGVyKCktPmxvYWRG
cmFtZVJlcXVlc3QoZnJhbWVSZXF1ZXN0LCBmYWxzZSwgZmFsc2UsIDAsIDAsIFNlbmRSZWZlcnJl
cik7CiB9CiAKIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6em9vbUxldmVsQ2hhbmdlZChk
b3VibGUgem9vbUxldmVsKQpJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gODg5MTQpCisr
KyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAxMS0wNi0xNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBmb3JjZVVz
ZXJHZXN0dXJlIGJvb2wgaW4gZmF2b3Igb2YgVXNlckdlc3R1cmVJbmRpY2F0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzAyCisKKyAgICAgICAg
KiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFtZV9zY3JpcHRfZXhlY3V0ZSk6
CisKIDIwMTEtMDYtMTMgIE1pY2hhbCBQYWt1bGEgdmVsIFJ1dGthICA8bS5wYWt1bGFAc2Ftc3Vu
Zy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAkocmV2aXNpb24gODg5MTQpCisrKyBTb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAog
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSAiU3Vic3RpdHV0ZURhdGEuaCIKKyNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5o
IgogI2luY2x1ZGUgIldpbmRvd3NLZXlib2FyZENvZGVzLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZh
dGUuaCIKIApAQCAtNjAyLDcgKzYwMyw5IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfc2NyaXB0X2V4
ZWN1dGUoRXZhc18KICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9G
QUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fRkFMU0VfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJ
TkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzY3JpcHQsIEVJ
TkFfRkFMU0UpOwotICAgIHNkLT5mcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoV1RGOjpT
dHJpbmc6OmZyb21VVEY4KHNjcmlwdCksIHRydWUpOworCisgICAgV2ViQ29yZTo6VXNlckdlc3R1
cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihXZWJDb3JlOjpEZWZpbml0ZWx5UHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKTsKKyAgICBzZC0+ZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KFdU
Rjo6U3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpKTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA4ODkxNCkKKysrIFNvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTA2LTE1
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGZvcmNlVXNlckdlc3R1cmUgYm9vbCBp
biBmYXZvciBvZiBVc2VyR2VzdHVyZUluZGljYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI3MDIKKworICAgICAgICAqIHdlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19leGVjdXRlX3NjcmlwdCk6CisK
IDIwMTEtMDYtMTQgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDg4OTE0KQorKysgU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3
IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3Iu
aCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NRG9jdW1lbnRQcml2YXRlLmgiCiAjaW5jbHVk
ZSAid2Via2l0ZG93bmxvYWQuaCIKICNpbmNsdWRlICJ3ZWJraXRkb3dubG9hZHByaXZhdGUuaCIK
QEAgLTQwODUsNyArNDA4Niw4IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfc2NyaXB0
KFdlYksKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7
CiAgICAgZ19yZXR1cm5faWZfZmFpbChzY3JpcHQpOwogCi0gICAgY29yZSh3ZWJWaWV3KS0+bWFp
bkZyYW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0
KSwgdHJ1ZSk7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihEZWZp
bml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKKyAgICBjb3JlKHdlYlZpZXcpLT5tYWluRnJh
bWUoKS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpKTsK
IH0KIAogLyoqCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4ODkxNCkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisy
MDExLTA2LTE1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGZvcmNlVXNlckdlc3R1
cmUgYm9vbCBpbiBmYXZvciBvZiBVc2VyR2VzdHVyZUluZGljYXRvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI3MDIKKworICAgICAgICAqIFdlYlZp
ZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9zdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0dXJlOl0pOgorICAgICAgICAoLVtXZWJG
cmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6d2l0aEdsb2JhbE9i
amVjdDppblNjcmlwdFdvcmxkOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV2ViVmlldyBhZURlc2NCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpd
KToKKwogMjAxMS0wNi0xNCAgU3RlcGhhbmllIExld2lzICA8c2xld2lzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSdWJiZXIgc3RhbXBlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gODg5MTQpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJl
YWRDaGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9UeXBpbmdDb21tYW5kLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL2h0bWxlZGl0
aW5nLmg+CiAjaW1wb3J0IDxXZWJDb3JlL21hcmt1cC5oPgogI2ltcG9ydCA8V2ViQ29yZS92aXNp
YmxlX3VuaXRzLmg+CkBAIC02MDgsOCArNjA5LDkgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcgogLSAoTlNTdHJpbmcgKilfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGZvcmNlVXNlckdlc3R1cmU6KEJPT0wp
Zm9yY2VVc2VyR2VzdHVyZQogewogICAgIEFTU0VSVChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1
bWVudCgpKTsKLSAgICAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IF9wcml2YXRlLT5jb3JlRnJhbWUt
PnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KHN0cmluZywgZm9yY2VVc2VyR2VzdHVyZSkuanNWYWx1
ZSgpOworCisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihmb3JjZVVz
ZXJHZXN0dXJlID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IFBvc3NpYmx5UHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IF9wcml2YXRlLT5jb3Jl
RnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KHN0cmluZykuanNWYWx1ZSgpOwogCiAgICAg
aWYgKCFfcHJpdmF0ZS0+Y29yZUZyYW1lKSAvLyBJbiBjYXNlIHRoZSBzY3JpcHQgcmVtb3ZlZCBv
dXIgZnJhbWUgZnJvbSB0aGUgcGFnZS4KICAgICAgICAgcmV0dXJuIEAiIjsKQEAgLTEyMDQsOCAr
MTIwNiwxMSBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyCiAgICAg
Ly8gR2V0IHRoZSBmcmFtZSBmcm9tZSB0aGUgZ2xvYmFsIG9iamVjdCB3ZSd2ZSBzZXR0bGVkIG9u
LgogICAgIEZyYW1lKiBmcmFtZSA9IGFueVdvcmxkR2xvYmFsT2JqZWN0LT5pbXBsKCktPmZyYW1l
KCk7CiAgICAgQVNTRVJUKGZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9
IGZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdEluV29ybGQoY29yZSh3b3JsZCksIHN0cmlu
ZywgdHJ1ZSkuanNWYWx1ZSgpOwogCisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUlu
ZGljYXRvcihEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IGZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdEluV29ybGQoY29yZSh3b3JsZCks
IHN0cmluZykuanNWYWx1ZSgpOworCisgICAgLy8gRklYTUU6IGZyYW1lIGlzIGp1c3QgYSBsb2Nh
bCB2YXJpYmxlLiAgVGVzdGluZyBpdCBmb3IgbnVsbCBkb2Vzbid0IGRvIGFueXRoaW5nLgogICAg
IGlmICghZnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1vdmVkIG91ciBmcmFtZSBmcm9t
IHRoZSBwYWdlLgogICAgICAgICByZXR1cm4gQCIiOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA4ODkxNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSw3IEBACiAjaW1w
b3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRSZXNvdXJjZURl
Y29kZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KKyNpbXBvcnQgPFdlYkNv
cmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNF
eHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2lkZ2V0Lmg+CkBAIC00NzE2LDcgKzQ3MTcsMTAgQEAgLSAoTlNBcHBsZUV2ZW50RGVzY3Jp
cHRvciAqKWFlRGVzY0J5RXZhbAogICAgICAgICByZXR1cm4gbmlsOwogICAgIGlmICghY29yZUZy
YW1lLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIEpTVmFsdWUgcmVzdWx0
ID0gY29yZUZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQsIHRydWUpLmpzVmFs
dWUoKTsKKworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VV
c2VyR2VzdHVyZSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBjb3JlRnJhbWUtPnNj
cmlwdCgpLT5leGVjdXRlU2NyaXB0KHNjcmlwdCkuanNWYWx1ZSgpOworCiAgICAgaWYgKCFyZXN1
bHQpIC8vIEZJWE1FOiBwYXNzIGVycm9ycwogICAgICAgICByZXR1cm4gMDsKICAgICBKU0xvY2sg
bG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9u
IDg4OTE0KQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNSBAQAorMjAxMS0wNi0xNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92
ZSBmb3JjZVVzZXJHZXN0dXJlIGJvb2wgaW4gZmF2b3Igb2YgVXNlckdlc3R1cmVJbmRpY2F0b3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNzAyCisK
KyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6ZXZhbHVh
dGVKYXZhU2NyaXB0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZXZhbHVhdGVT
Y3JpcHRJbklzb2xhdGVkV29ybGQpOgorCiAyMDExLTA2LTE0ICBDYWlvIE1hcmNlbG8gZGUgT2xp
dmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJm
cmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNw
cAkocmV2aXNpb24gODg5MTQpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTg1LDYgKzE1ODUsNyBAQCBRVmFyaWFudCBRV2ViRnJhbWU6
OmV2YWx1YXRlSmF2YVNjcmlwdChjCiAgICAgaWYgKHByb3h5KSB7CiAjaWYgVVNFKEpTQykKICAg
ICAgICAgaW50IGRpc3RhbmNlID0gMDsKKyAgICAgICAgLy8gRklYTUU6IERvIHdlIHdhbnQgdG8g
c2V0IHRoZSB1c2VyIGdlc3R1cmUgaW5kaWNhdG9yIGhlcmU/IE1vc3Qgb3RoZXIgcG9ydHMgZG8u
CiAgICAgICAgIEpTQzo6SlNWYWx1ZSB2ID0gZC0+ZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2Ny
aXB0KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0U291cmNlKSkuanNWYWx1ZSgpOwogCiAgICAgICAg
IHJjID0gSlNDOjpCaW5kaW5nczo6Y29udmVydFZhbHVlVG9RVmFyaWFudChwcm94eS0+Z2xvYmFs
T2JqZWN0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+Z2xvYmFsRXhlYygpLCB2LCBRTWV0YVR5
cGU6OlZvaWQsICZkaXN0YW5jZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkocmV2aXNp
b24gODg5MTQpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsNyBAQAogI2luY2x1
ZGUgIlNWR1NNSUxFbGVtZW50LmgiCiAjZW5kaWYKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIK
KyNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIldlYkNvcmVUZXN0
U3VwcG9ydC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgpAQCAtOTI5LDE3ICs5MzAsMTQgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6ZXZhbHVhdGVTYwogCiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSA9IFFXZWJG
cmFtZVByaXZhdGU6OmNvcmUoZnJhbWUpOwogCi0gICAgU2NyaXB0Q29udHJvbGxlciogcHJveHkg
PSBjb3JlRnJhbWUtPnNjcmlwdCgpOwotCi0gICAgaWYgKCFwcm94eSkKLSAgICAgICAgcmV0dXJu
OworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoRGVmaW5pdGVseVBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAjaWYgVVNFKEpTQykKLSAgICBwcm94eS0+ZXhlY3V0ZVNj
cmlwdEluV29ybGQoc2NyaXB0V29ybGQtPndvcmxkKCksIHNjcmlwdCwgdHJ1ZSk7CisgICAgY29y
ZUZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdEluV29ybGQoc2NyaXB0V29ybGQtPndvcmxk
KCksIHNjcmlwdCk7CiAjZWxpZiBVU0UoVjgpCiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2Uo
c2NyaXB0KTsKICAgICBWZWN0b3I8U2NyaXB0U291cmNlQ29kZT4gc291cmNlczsKICAgICBzb3Vy
Y2VzLmFwcGVuZChzb3VyY2UpOwotICAgIHByb3h5LT5ldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCgw
LCBzb3VyY2VzLCB0cnVlKTsKKyAgICBjb3JlRnJhbWUtPnNjcmlwdCgpLT5ldmFsdWF0ZUluSXNv
bGF0ZWRXb3JsZCgwLCBzb3VyY2VzKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CShyZXZpc2lvbiA4ODkxNCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTA2LTE1ICBBZGFtIEJhcnRoICA8YWJhcnRo
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVtb3ZlIGZvcmNlVXNlckdlc3R1cmUgYm9vbCBpbiBmYXZvciBvZiBVc2VyR2VzdHVy
ZUluZGljYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjI3MDIKKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0SW5TY3JpcHRXb3JsZCk6CisgICAgICAgICogV2Vi
Vmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
RnJvbVN0cmluZyk6CisKIDIwMTEtMDYtMTMgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpJbmRleDog
U291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gODg5MTQpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDYgQEAKICNpbmNsdWRl
ICJXZWJWaWV3LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9DT01QdHIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oPgpAQCAtNzMs
MTMgKzcyLDE1IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0hpc3RvcnlJdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MQXBwbGV0
RWxlbWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZvcm1FbGVtZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9I
VE1MRm9ybUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxJbnB1dEVsZW1lbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTFBs
dWdJbkVsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NQmluZGluZy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tleWJvYXJkRXZl
bnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Nb3VzZVJlbGF0ZWRFdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KQEAgLTg4LDE4ICs4OSwxOCBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpblZp
ZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaW50Q29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUmVuZGVyVHJlZUFzVGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlUmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyVmlldy5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvUmVuZGVyVHJlZUFzVGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0
Q29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TVkdTTUlMRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEl0ZXJhdG9y
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9KU0RPTUJpbmRpbmcuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1NjcmlwdENvbnRyb2xsZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFZhbHVlLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVXNl
ckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNPYmplY3QuaD4KQEAgLTI1NzQsOCArMjU3NSwxMSBAQCBIUkVTVUxUIFdlYkZyYW1l
OjpzdHJpbmdCeUV2YWx1YXRpbmdKYXZhCiAgICAgLy8gR2V0IHRoZSBmcmFtZSBmcm9tZSB0aGUg
Z2xvYmFsIG9iamVjdCB3ZSd2ZSBzZXR0bGVkIG9uLgogICAgIEZyYW1lKiBmcmFtZSA9IGFueVdv
cmxkR2xvYmFsT2JqZWN0LT5pbXBsKCktPmZyYW1lKCk7CiAgICAgQVNTRVJUKGZyYW1lLT5kb2N1
bWVudCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNj
cmlwdEluV29ybGQod29ybGQtPndvcmxkKCksIHN0cmluZywgdHJ1ZSkuanNWYWx1ZSgpOwogCisg
ICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihEZWZpbml0ZWx5UHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS0+
ZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQtPndvcmxkKCksIHN0cmluZykuanNWYWx1ZSgpOwor
CisgICAgLy8gRklYTUU6IGZyYW1lIGlzIGp1c3QgYSBsb2NhbCB2YXJhYmxlLiBUZXN0aW5nIGl0
IGZvciBudWxsIGRvZXNuJ3QgZG8gYW55dGhpbmcuCiAgICAgaWYgKCFmcmFtZSkgLy8gSW4gY2Fz
ZSB0aGUgc2NyaXB0IHJlbW92ZWQgb3VyIGZyYW1lIGZyb20gdGhlIHBhZ2UuCiAgICAgICAgIHJl
dHVybiBTX09LOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gODg5MTQpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDYg
KzEzMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TaW1wbGVGb250RGF0YS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU3lzdGVtSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVHlwaW5nQ29tbWFuZC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2lu
ZG93c1RvdWNoLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtMzE2MSw3ICszMTYy
LDkgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzdHJpbgogICAgIGlmICgh
Y29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgSlNDOjpKU1ZhbHVlIHNj
cmlwdEV4ZWN1dGlvblJlc3VsdCA9IGNvcmVGcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQo
V1RGOjpTdHJpbmcoc2NyaXB0KSwgdHJ1ZSkuanNWYWx1ZSgpOworICAgIFVzZXJHZXN0dXJlSW5k
aWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7
CisgICAgSlNDOjpKU1ZhbHVlIHNjcmlwdEV4ZWN1dGlvblJlc3VsdCA9IGNvcmVGcmFtZS0+c2Ny
aXB0KCktPmV4ZWN1dGVTY3JpcHQoV1RGOjpTdHJpbmcoc2NyaXB0KSkuanNWYWx1ZSgpOworCiAg
ICAgaWYgKCFzY3JpcHRFeGVjdXRpb25SZXN1bHQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAg
ICAgZWxzZSBpZiAoc2NyaXB0RXhlY3V0aW9uUmVzdWx0LmlzU3RyaW5nKCkpIHsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gv
Q2hhbmdlTG9nCShyZXZpc2lvbiA4ODkxNCkKKysrIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDYtMTUgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgZm9yY2VVc2VyR2VzdHVyZSBib29sIGluIGZhdm9yIG9mIFVz
ZXJHZXN0dXJlSW5kaWNhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MjcwMgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAod3hX
ZWJGcmFtZTo6UnVuU2NyaXB0KToKKwogMjAxMS0wNi0xMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3d4L1dlYkZyYW1lLmNwcAkocmV2aXNpb24gODg5MTQpCisrKyBTb3VyY2UvV2ViS2l0
L3d4L1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1
ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU3Vic3RpdHV0ZURhdGEuaCIKICNpbmNsdWRl
ICJUZXh0RW5jb2RpbmcuaCIKKyNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogCiAj
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CkBA
IC0zMzAsNyArMzMxLDggQEAgd3hTdHJpbmcgd3hXZWJGcmFtZTo6UnVuU2NyaXB0KGNvbnN0IHd4
UwogICAgICAgICAgICAgYm9vbCBqc0VuYWJsZWQgPSBjb250cm9sbGVyLT5jYW5FeGVjdXRlU2Ny
aXB0cyhXZWJDb3JlOjpBYm91dFRvRXhlY3V0ZVNjcmlwdCk7IAogICAgICAgICAgICAgd3hBU1NF
UlRfTVNHKGpzRW5hYmxlZCwgd3hUKCJSdW5TY3JpcHQgcmVxdWlyZXMgSmF2YVNjcmlwdCB0byBi
ZSBlbmFibGVkLiIpKTsKICAgICAgICAgICAgIGlmIChqc0VuYWJsZWQpIHsKLSAgICAgICAgICAg
ICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gY29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChqYXZh
c2NyaXB0LCB0cnVlKS5qc1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgV2ViQ29yZTo6VXNlckdl
c3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihXZWJDb3JlOjpEZWZpbml0ZWx5UHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKTsKKyAgICAgICAgICAgICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0g
Y29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChqYXZhc2NyaXB0KS5qc1ZhbHVlKCk7CiAgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB3
eFN0cmluZyhyZXN1bHQudG9TdHJpbmcobV9pbXBsLT5mcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9i
amVjdChXZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPmdsb2JhbEV4ZWMoKSkudXRm
OCgpLmRhdGEoKSwgd3hDb252VVRGOCk7ICAgICAgICAKICAgICAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97360</attachid>
            <date>2011-06-15 13:57:16 -0700</date>
            <delta_ts>2011-06-15 18:57:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62702-20110615135715.patch</filename>
            <type>text/plain</type>
            <size>28963</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4OTYzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDYtMTUgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW1vdmUgZm9yY2VVc2VyR2VzdHVyZSBib29sIGluIGZhdm9yIG9m
IFVzZXJHZXN0dXJlSW5kaWNhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02MjcwMgorCisgICAgICAgIFBhc3NpbmcgdGhlIHVzZXIgZ2VzdHVyZSBz
dGF0ZSBhcm91bmQgaW4gQm9vbGVhbiBwYXJhbWV0ZXIgaXMKKyAgICAgICAgb2xkLXNhdWNlLiAg
SW5zdGVhZCwgY2FsbGVycyBzaG91bGQganVzdCBzZXQgdGhlIHVzZXIgZ2VzdHVyZQorICAgICAg
ICBpbmRpY2F0b3IgYXBwcm9wcmlhdGVseS4KKworICAgICAgICBUaGlzIHBhdGNoIHByb2JhYmx5
IG1ha2VzIHNvbWUgb2Ygb3VyIHVzZXIgZ2VzdHVyZSBkZXRlY3Rpb24gaGFja3MKKyAgICAgICAg
dW5uZWNlc3NhcnksIGJ1dCBJJ2xsIHJlbW92ZSB0aG9zZSBpbiBhIHN1YnNlcXVlbnQgcGF0Y2gu
CisKKyAgICAgICAgKiBiaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KToKKwogMjAxMS0w
Ni0xNSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4J
KHJldmlzaW9uIDg4OTYzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTQ2OSwxMCArNDY5LDEwIEBAIF9fWk43V2ViQ29yZTE2TmF2aWdhdGlvbkFj
dGlvbkMxRVJLTlNfNEsKIF9fWk43V2ViQ29yZTE2TmF2aWdhdGlvbkFjdGlvbkMxRXYKIF9fWk43
V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjEwaW5pdFNjcmlwdEVQTlNfMTVET01XcmFwcGVyV29y
bGRFCiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIxMWNyZWF0ZVdvcmxkRXYKLV9fWk43
V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjEzZXhlY3V0ZVNjcmlwdEVSS04zV1RGNlN0cmluZ0Vi
CitfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIxM2V4ZWN1dGVTY3JpcHRFUktOM1dURjZT
dHJpbmdFCiBfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIxN2NhbkV4ZWN1dGVTY3JpcHRz
RU5TXzMzUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRzRQogX19aTjdXZWJDb3JlMTZT
Y3JpcHRDb250cm9sbGVyMTh3aW5kb3dTY3JpcHRPYmplY3RFdgotX19aTjdXZWJDb3JlMTZTY3Jp
cHRDb250cm9sbGVyMjBleGVjdXRlU2NyaXB0SW5Xb3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRF
UktOM1dURjZTdHJpbmdFYgorX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMjBleGVjdXRl
U2NyaXB0SW5Xb3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRFUktOM1dURjZTdHJpbmdFCiBfX1pO
N1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIyMXByb2Nlc3NpbmdVc2VyR2VzdHVyZUV2CiBfX1pO
N1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIyNGpzT2JqZWN0Rm9yUGx1Z2luRWxlbWVudEVQTlNf
MTdIVE1MUGx1Z0luRWxlbWVudEUKIF9fWk43V2ViQ29yZTE2VGhyZWFkR2xvYmFsRGF0YTEwc3Rh
dGljRGF0YUUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJC
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9TY3JpcHRDb250
cm9sbGVyQmFzZS5jcHAJKHJldmlzaW9uIDg4OTYzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxMSArNTIs
OSBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVTY3JpcHRzCiAgICAgcmV0dXJu
IGFsbG93ZWQ7CiB9CiAKLVNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3Jp
cHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKK1NjcmlwdFZh
bHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQp
CiB7Ci0gICAgLy8gRklYTUU6IFdoeSBkb2VzIHRoZSBVUkwgb2YgdGhlIHNjcmlwdCBkZXBlbmQg
b24gZm9yY2VVc2VyR2VzdHVyZT8KLSAgICAvLyBUaGlzIGxvb2tzIHN1c3BpY2lvdXNseSBsaWtl
IGFuIG9sZCB1c2VyLWdlc3R1cmUgYmFjay1jaGFubmVsLgotICAgIHJldHVybiBleGVjdXRlU2Ny
aXB0KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlID8gS1VSTCgpIDog
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpKTsKKyAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdChT
Y3JpcHRTb3VyY2VDb2RlKHNjcmlwdCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpKTsKIH0K
IAogU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQpAQCAtOTUsNyArOTMsNyBAQCBib29sIFNjcmlwdENv
bnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpCiAgICAgY29uc3QgaW50IGphdmFzY3JpcHRTY2hl
bWVMZW5ndGggPSBzaXplb2YoImphdmFzY3JpcHQ6IikgLSAxOwogCiAgICAgU3RyaW5nIGRlY29k
ZWRVUkwgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnN0cmluZygpKTsKLSAgICBTY3Jp
cHRWYWx1ZSByZXN1bHQgPSBleGVjdXRlU2NyaXB0KGRlY29kZWRVUkwuc3Vic3RyaW5nKGphdmFz
Y3JpcHRTY2hlbWVMZW5ndGgpLCBmYWxzZSk7CisgICAgU2NyaXB0VmFsdWUgcmVzdWx0ID0gZXhl
Y3V0ZVNjcmlwdChkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoKSk7
CiAKICAgICAvLyBJZiBleGVjdXRpbmcgc2NyaXB0IGNhdXNlZCB0aGlzIGZyYW1lIHRvIGJlIHJl
bW92ZWQgZnJvbSB0aGUgcGFnZSwgd2UKICAgICAvLyBkb24ndCB3YW50IHRvIHRyeSB0byByZXBs
YWNlIGl0cyBkb2N1bWVudCEKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA4ODk2MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzAs
NiArMjcwLDcgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlcwogfQog
CiAvLyBGSVhNRTogVGhpcyBzZWVtcyBsaWtlIGFuIGluc3VmZmljaWVudCBjaGVjayB0byB2ZXJp
ZnkgYSBjbGljayBvbiBhIGphdmFzY3JpcHQ6IGFuY2hvci4KKy8vIEZJWE1FOiBUaGVzZSBtX3Nv
dXJjZVVSTCBoYWNrcyBwcm9iYWJseSBhcmVuJ3QgbmVlZGVkIGFueW1vcmUuCiBib29sIFNjcmlw
dENvbnRyb2xsZXI6OmlzSmF2YVNjcmlwdEFuY2hvck5hdmlnYXRpb24oKSBjb25zdAogewogICAg
IC8vIFRoaXMgaXMgdGhlIDxhIGhyZWY9ImphdmFzY3JpcHQ6d2luZG93Lm9wZW4oJy4uLicpPiBj
YXNlIC0+IHdlIGxldCBpdCB0aHJvdWdoCkBAIC00NjYsOSArNDY3LDkgQEAgdm9pZCBTY3JpcHRD
b250cm9sbGVyOjpjbGVhclNjcmlwdE9iamVjdAogI2VuZGlmCiB9CiAKLVNjcmlwdFZhbHVlIFNj
cmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCogd29y
bGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCitTY3JpcHRW
YWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29y
bGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHsKLSAgICBTY3JpcHRTb3VyY2VDb2Rl
IHNvdXJjZUNvZGUoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlID8gS1VSTCgpIDogbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCkpOworICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShzY3Jp
cHQsIG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKTsKIAogICAgIGlmICghY2FuRXhlY3V0ZVNj
cmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IGlzUGF1c2VkKCkpCiAgICAgICAgIHJldHVy
biBTY3JpcHRWYWx1ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuaAkocmV2aXNpb24gODg5NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDggKzkxLDgg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGdldEFsbFdvcmxkcyhWZWN0b3I8RE9NV3JhcHBl
cldvcmxkKj4mKTsKIAogICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0
U291cmNlQ29kZSYpOwotICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKLSAgICBTY3JpcHRWYWx1
ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqLCBjb25zdCBTdHJpbmcmIHNj
cmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOworICAgIFNjcmlwdFZhbHVlIGV4
ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQpOworICAgIFNjcmlwdFZhbHVlIGV4ZWN1
dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFN0cmluZyYgc2NyaXB0KTsK
IAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhcmd1bWVudCBpcyBhIEphdmFTY3JpcHQgVVJMLgog
ICAgIGJvb2wgZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBLVVJMJiwgU2hvdWxkUmVwbGFj
ZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMIHNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlw
dFVSTCA9IFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCShyZXZpc2lvbiA4ODk2MykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgVjhQcm94eSogcHJveHkoKSB7
IHJldHVybiBtX3Byb3h5LmdldCgpOyB9CiAKICAgICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKLSAgICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0
KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7Cisg
ICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiBhcmd1bWVudCBpcyBhIEphdmFTY3JpcHQgVVJMLgogICAgIGJvb2wgZXhl
Y3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBLVVJMJiwgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZK
YXZhU2NyaXB0VVJMIHNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCA9IFJlcGxh
Y2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luVmlldy5jcHAJKHJldmlzaW9uIDg4OTYzKQorKysgU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUg
IlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgorI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAi
bnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogCkBAIC00Njks
NyArNDcwLDEyIEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmUKICAg
ICAKICAgICAvLyBFeGVjdXRpbmcgYSBzY3JpcHQgY2FuIGNhdXNlIHRoZSBwbHVnaW4gdmlldyB0
byBiZSBkZXN0cm95ZWQsIHNvIHdlIGtlZXAgYSByZWZlcmVuY2UgdG8gaXQuCiAgICAgUmVmUHRy
PFBsdWdpblZpZXc+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHQgPSBt
X3BhcmVudEZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChqc1N0cmluZywgcmVxdWVzdC0+
c2hvdWxkQWxsb3dQb3B1cHMoKSk7CisKKyAgICBTY3JpcHRWYWx1ZSByZXN1bHQ7CisgICAgewor
ICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHJlcXVlc3QtPnNo
b3VsZEFsbG93UG9wdXBzKCkgPyBEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogUG9z
c2libHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOworICAgICAgICByZXN1bHQgPSBtX3BhcmVudEZy
YW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChqc1N0cmluZyk7CisgICAgfQogCiAgICAgaWYg
KHRhcmdldEZyYW1lTmFtZS5pc051bGwoKSkgewogICAgICAgICBTdHJpbmcgcmVzdWx0U3RyaW5n
OwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gODg5NjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNi0xNSAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbW92ZSBmb3JjZVVzZXJHZXN0dXJlIGJvb2wgaW4gZmF2b3Ig
b2YgVXNlckdlc3R1cmVJbmRpY2F0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYyNzAyCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZSk6CisKIDIwMTEtMDYtMTUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24g
ODg5NjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2hh
cmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdWJzdGl0dXRlRGF0YS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2VzdHVy
ZUluZGljYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvbWFya3VwLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KQEAgLTE0MTUsNyAr
MTQxNiw5IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGMKICAgICBD
b3JlSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CiAKICAgICBKU0xvY2sgbG9jayhT
aWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotICAgIGlmIChKU1ZhbHVlIHJlc3VsdFZhbHVlID0gbV9t
YWluRnJhbWUtPmNvcmVGcmFtZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQsIHRy
dWUpLmpzVmFsdWUoKSkgeworCisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGlj
YXRvcihEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKKyAgICBpZiAoSlNWYWx1ZSBy
ZXN1bHRWYWx1ZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCktPmV4ZWN1dGVT
Y3JpcHQoc2NyaXB0KS5qc1ZhbHVlKCkpIHsKICAgICAgICAgaWYgKChzZXJpYWxpemVkUmVzdWx0
VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShtX21haW5GcmFtZS0+anNDb250
ZXh0KCksIHRvUmVmKG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCktPmdsb2JhbE9i
amVjdChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPmdsb2JhbEV4ZWMoKSwgcmVzdWx0VmFsdWUp
LCAwKSkpCiAgICAgICAgICAgICBkYXRhUmVmZXJlbmNlID0gc2VyaWFsaXplZFJlc3VsdFZhbHVl
LT5kYXRhKCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDg4OTYzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNi0xNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSBmb3JjZVVzZXJHZXN0dXJlIGJvb2wgaW4gZmF2b3Igb2YgVXNlckdlc3R1cmVJbmRp
Y2F0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYy
NzAyCisKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVJbXBsOjpsb2FkSmF2YVNjcmlwdFVSTCk6CisgICAgICAgICogc3JjL1dlYlBsdWdp
bkNvbnRhaW5lckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJ
bXBsOjpleGVjdXRlU2NyaXB0VVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFp
bmVySW1wbDo6bG9hZEZyYW1lUmVxdWVzdCk6CisKIDIwMTEtMDYtMTUgIEFuZHJleSBLb3N5YWtv
diAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgIFVucmV2aWV3ZWQsIHJvbGxlZCBvdXQg
cjg4OTM3IChicm9rZSBidWlsZCBvbiBtYWMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDg4OTYzKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYg
KzEzMiw3IEBACiAjaW5jbHVkZSAiU3Vic3RpdHV0ZURhdGEuaCIKICNpbmNsdWRlICJUZXh0QWZm
aW5pdHkuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJVc2VyR2VzdHVy
ZUluZGljYXRvci5oIgogI2luY2x1ZGUgIldlYkFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsLmgiCiAj
aW5jbHVkZSAiV2ViQ29uc29sZU1lc3NhZ2UuaCIKICNpbmNsdWRlICJXZWJEYXRhU291cmNlSW1w
bC5oIgpAQCAtMjM0MywxMiArMjM0NCwxOSBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6bG9hZEphdmFT
Y3JpcHRVUkwoY29uCiAgICAgLy8gZnJvbSBldmFsdWF0aW5nIHRoZSBKUyBVUkwgaWYgZXhlY3V0
aW5nIHRoZSBKUyBVUkwgcmVzdWx0ZWQgaW4gYQogICAgIC8vIGxvY2F0aW9uIGNoYW5nZS4gIFdl
IGFsc28gYWxsb3cgYSBKUyBVUkwgdG8gYmUgbG9hZGVkIGV2ZW4gaWYgc2NyaXB0cyBvbgogICAg
IC8vIHRoZSBwYWdlIGFyZSBvdGhlcndpc2UgZGlzYWJsZWQuCisgICAgLy8gRklYTUU6IFlvdSBr
bm93IHlvdSBjYW4gY2hhbmdlIFNjcmlwdENvbnRyb2xsZXIuaCwgcmlnaHQ/CiAKKyAgICAvLyBG
SVhNRTogbV9mcmFtZS0+ZG9jdW1lbnQoKSBjYW4gbmV2ZXIgYmUgMC4KICAgICBpZiAoIW1fZnJh
bWUtPmRvY3VtZW50KCkgfHwgIW1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgU3RyaW5nIHNjcmlwdCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCku
c3Vic3RyaW5nKHN0cmxlbigiamF2YXNjcmlwdDoiKSkpOwotICAgIFNjcmlwdFZhbHVlIHJlc3Vs
dCA9IG1fZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KHNjcmlwdCwgdHJ1ZSk7CisKKyAg
ICBTY3JpcHRWYWx1ZSByZXN1bHQ7CisgICAgeworICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRv
ciBnZXN0dXJlSW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOworICAg
ICAgICByZXN1bHQgPSBtX2ZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQpOwor
ICAgIH0KIAogICAgIFN0cmluZyBzY3JpcHRSZXN1bHQ7CiAgICAgaWYgKCFyZXN1bHQuZ2V0U3Ry
aW5nKHNjcmlwdFJlc3VsdCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQ
bHVnaW5Db250YWluZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAkocmV2aXNpb24gODg5NjMpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzU0LDEwICszNTQsMTAgQEAgV2ViU3RyaW5nIFdlYlBsdWdpbkNvbnRh
aW5lckltcGw6OmV4ZWN1dAogICAgIGNvbnN0IEtVUkwmIGt1cmwgPSB1cmw7CiAgICAgQVNTRVJU
KGt1cmwucHJvdG9jb2xJcygiamF2YXNjcmlwdCIpKTsKIAotICAgIFN0cmluZyBzY3JpcHQgPSBk
ZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoCi0gICAgICAgIGt1cmwuc3RyaW5nKCkuc3Vic3RyaW5n
KHN0cmxlbigiamF2YXNjcmlwdDoiKSkpOworICAgIFN0cmluZyBzY3JpcHQgPSBkZWNvZGVVUkxF
c2NhcGVTZXF1ZW5jZXMoa3VybC5zdHJpbmcoKS5zdWJzdHJpbmcoc3RybGVuKCJqYXZhc2NyaXB0
OiIpKSk7CiAKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2NyaXB0KCktPmV4ZWN1
dGVTY3JpcHQoc2NyaXB0LCBwb3B1cHNBbGxvd2VkKTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRv
ciBnZXN0dXJlSW5kaWNhdG9yKHBvcHVwc0FsbG93ZWQgPyBEZWZpbml0ZWx5UHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlIDogUG9zc2libHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOworICAgIFNjcmlwdFZh
bHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChzY3JpcHQpOwogCiAg
ICAgLy8gRmFpbHVyZSBpcyByZXBvcnRlZCBhcyBhIG51bGwgc3RyaW5nLgogICAgIFN0cmluZyBy
ZXN1bHRTdHI7CkBAIC0zODIsMTkgKzM4MiwxMCBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lcklt
cGw6OmxvYWRGcmFtZVJlCiAgICAgICAgIFdlYkRhdGFTb3VyY2VJbXBsOjpzZXROZXh0UGx1Z2lu
TG9hZE9ic2VydmVyKG9ic2VydmVyLnJlbGVhc2UoKSk7CiAgICAgfQogCi0gICAgRnJhbWVMb2Fk
UmVxdWVzdCBmcmFtZVJlcXVlc3QoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCks
Ci0gICAgICAgIHJlcXVlc3QudG9SZXNvdXJjZVJlcXVlc3QoKSwgdGFyZ2V0KTsKKyAgICBGcmFt
ZUxvYWRSZXF1ZXN0IGZyYW1lUmVxdWVzdChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKSwgcmVxdWVzdC50b1Jlc291cmNlUmVxdWVzdCgpLCB0YXJnZXQpOwogCi0gICAgVXNlckdl
c3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihyZXF1ZXN0Lmhhc1VzZXJHZXN0dXJlKCkg
PwotICAgICAgICBEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogRGVmaW5pdGVseU5v
dFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Ci0KLSAgICBmcmFtZS0+bG9hZGVyKCktPmxvYWRGcmFt
ZVJlcXVlc3QoCi0gICAgICAgIGZyYW1lUmVxdWVzdCwKLSAgICAgICAgZmFsc2UsICAvLyBsb2Nr
IGhpc3RvcnkKLSAgICAgICAgZmFsc2UsICAvLyBsb2NrIGJhY2sgZm9yd2FyZCBsaXN0Ci0gICAg
ICAgIDAsICAgICAgLy8gZXZlbnQKLSAgICAgICAgMCwgICAgIC8vIGZvcm0gc3RhdGUKLSAgICAg
ICAgU2VuZFJlZmVycmVyKTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNh
dG9yKHJlcXVlc3QuaGFzVXNlckdlc3R1cmUoKSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdl
c3R1cmUgOiBEZWZpbml0ZWx5Tm90UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKKyAgICBmcmFtZS0+
bG9hZGVyKCktPmxvYWRGcmFtZVJlcXVlc3QoZnJhbWVSZXF1ZXN0LCBmYWxzZSwgZmFsc2UsIDAs
IDAsIFNlbmRSZWZlcnJlcik7CiB9CiAKIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6em9v
bUxldmVsQ2hhbmdlZChkb3VibGUgem9vbUxldmVsKQpJbmRleDogU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2
aXNpb24gODg5NjMpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNi0xNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSBmb3JjZVVzZXJHZXN0dXJlIGJvb2wgaW4gZmF2b3Igb2YgVXNlckdlc3R1cmVJbmRp
Y2F0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYy
NzAyCisKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFtZV9z
Y3JpcHRfZXhlY3V0ZSk6CisKIDIwMTEtMDYtMTUgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6
YWprb3dza2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21l
cy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCShyZXZpc2lvbiA4ODk2MykK
KysrIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTdWJzdGl0dXRlRGF0YS5oIgorI2luY2x1ZGUgIlVzZXJH
ZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKICNp
bmNsdWRlICJld2tfcHJpdmF0ZS5oIgogCkBAIC02MDEsNyArNjAyLDkgQEAgRWluYV9Cb29sIGV3
a19mcmFtZV9zY3JpcHRfZXhlY3V0ZShFdmFzXwogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVU
VVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9GQUxTRV9SRVRVUk5f
VkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNjcmlwdCwgRUlOQV9GQUxTRSk7Ci0gICAgc2QtPmZyYW1lLT5zY3JpcHQoKS0+ZXhl
Y3V0ZVNjcmlwdChXVEY6OlN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSk7CisKKyAgICBX
ZWJDb3JlOjpVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKFdlYkNvcmU6OkRl
ZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOworICAgIHNkLT5mcmFtZS0+c2NyaXB0KCkt
PmV4ZWN1dGVTY3JpcHQoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHNjcmlwdCkpOwogICAgIHJldHVy
biBFSU5BX1RSVUU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4OTYzKQor
KysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTEtMDYtMTUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgZm9yY2VV
c2VyR2VzdHVyZSBib29sIGluIGZhdm9yIG9mIFVzZXJHZXN0dXJlSW5kaWNhdG9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjcwMgorCisgICAgICAg
ICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2V4
ZWN1dGVfc2NyaXB0KToKKwogMjAxMS0wNi0xNSAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRy
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDg4OTYz
KQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03OCw2ICs3OCw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNp
bmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAi
VXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NRG9jdW1l
bnRQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0ZG93bmxvYWQuaCIKICNpbmNsdWRlICJ3ZWJr
aXRkb3dubG9hZHByaXZhdGUuaCIKQEAgLTQwODUsNyArNDA4Niw4IEBAIHZvaWQgd2Via2l0X3dl
Yl92aWV3X2V4ZWN1dGVfc2NyaXB0KFdlYksKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfVklFVyh3ZWJWaWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzY3JpcHQpOwogCi0g
ICAgY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KFN0
cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSk7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3Ig
Z2VzdHVyZUluZGljYXRvcihEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKKyAgICBj
b3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoU3RyaW5n
Ojpmcm9tVVRGOChzY3JpcHQpKTsKIH0KIAogLyoqCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA4ODk2MykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA2LTE1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlIGZvcmNlVXNlckdlc3R1cmUgYm9vbCBpbiBmYXZvciBvZiBVc2VyR2VzdHVyZUluZGlj
YXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI3
MDIKKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1l
IF9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpmb3JjZVVzZXJHZXN0dXJl
Ol0pOgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZy
b21TdHJpbmc6d2l0aEdsb2JhbE9iamVjdDppblNjcmlwdFdvcmxkOl0pOgorICAgICAgICAqIFdl
YlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBhZURlc2NCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0RnJvbVN0cmluZzpdKToKKwogMjAxMS0wNi0xNCAgU3RlcGhhbmllIExld2lzICA8
c2xld2lzQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXIgc3RhbXBlZCBieSBPbGl2ZXIgSHVu
dC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gODg5
NjMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC05MSw2ICs5MSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgogI2ltcG9ydCA8V2ViQ29yZS9UeXBpbmdD
b21tYW5kLmg+CisjaW1wb3J0IDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL2h0bWxlZGl0aW5nLmg+CiAjaW1wb3J0IDxXZWJDb3JlL21hcmt1cC5oPgog
I2ltcG9ydCA8V2ViQ29yZS92aXNpYmxlX3VuaXRzLmg+CkBAIC02MDgsOCArNjA5LDkgQEAgLSAo
TlNTdHJpbmcgKilfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcgogLSAoTlNTdHJpbmcgKilfc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGZv
cmNlVXNlckdlc3R1cmU6KEJPT0wpZm9yY2VVc2VyR2VzdHVyZQogewogICAgIEFTU0VSVChfcHJp
dmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9
IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KHN0cmluZywgZm9y
Y2VVc2VyR2VzdHVyZSkuanNWYWx1ZSgpOworCisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2Vz
dHVyZUluZGljYXRvcihmb3JjZVVzZXJHZXN0dXJlID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2Vy
R2VzdHVyZSA6IFBvc3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KHN0cmlu
ZykuanNWYWx1ZSgpOwogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZUZyYW1lKSAvLyBJbiBjYXNl
IHRoZSBzY3JpcHQgcmVtb3ZlZCBvdXIgZnJhbWUgZnJvbSB0aGUgcGFnZS4KICAgICAgICAgcmV0
dXJuIEAiIjsKQEAgLTEyMDQsOCArMTIwNiwxMSBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyCiAgICAgLy8gR2V0IHRoZSBmcmFtZSBmcm9tZSB0aGUgZ2xvYmFsIG9i
amVjdCB3ZSd2ZSBzZXR0bGVkIG9uLgogICAgIEZyYW1lKiBmcmFtZSA9IGFueVdvcmxkR2xvYmFs
T2JqZWN0LT5pbXBsKCktPmZyYW1lKCk7CiAgICAgQVNTRVJUKGZyYW1lLT5kb2N1bWVudCgpKTsK
LSAgICBKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdEluV29y
bGQoY29yZSh3b3JsZCksIHN0cmluZywgdHJ1ZSkuanNWYWx1ZSgpOwogCisgICAgVXNlckdlc3R1
cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0
dXJlKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlw
dEluV29ybGQoY29yZSh3b3JsZCksIHN0cmluZykuanNWYWx1ZSgpOworCisgICAgLy8gRklYTUU6
IGZyYW1lIGlzIGp1c3QgYSBsb2NhbCB2YXJpYmxlLiAgVGVzdGluZyBpdCBmb3IgbnVsbCBkb2Vz
bid0IGRvIGFueXRoaW5nLgogICAgIGlmICghZnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCBy
ZW1vdmVkIG91ciBmcmFtZSBmcm9tIHRoZSBwYWdlLgogICAgICAgICByZXR1cm4gQCIiOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA4ODk2MykKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTU5LDYgKzE1OSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1RleHRSZXNvdXJjZURlY29kZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hl
Y2suaD4KKyNpbXBvcnQgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVZp
ZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2lkZ2V0Lmg+CkBAIC00NzE2LDcgKzQ3MTcsMTAgQEAg
LSAoTlNBcHBsZUV2ZW50RGVzY3JpcHRvciAqKWFlRGVzY0J5RXZhbAogICAgICAgICByZXR1cm4g
bmlsOwogICAgIGlmICghY29yZUZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gbmls
OwotICAgIEpTVmFsdWUgcmVzdWx0ID0gY29yZUZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlw
dChzY3JpcHQsIHRydWUpLmpzVmFsdWUoKTsKKworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdl
c3R1cmVJbmRpY2F0b3IoRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBjb3JlRnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KHNjcmlwdCku
anNWYWx1ZSgpOworCiAgICAgaWYgKCFyZXN1bHQpIC8vIEZJWE1FOiBwYXNzIGVycm9ycwogICAg
ICAgICByZXR1cm4gMDsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwpJ
bmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4OTYzKQorKysgU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wNi0xNSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBmb3JjZVVzZXJHZXN0dXJlIGJvb2wgaW4gZmF2
b3Igb2YgVXNlckdlc3R1cmVJbmRpY2F0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYyNzAyCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoK
KyAgICAgICAgKFFXZWJGcmFtZTo6ZXZhbHVhdGVKYXZhU2NyaXB0KToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQpOgorCiAyMDEx
LTA2LTE1ICBEaWVnbyBHb256YWxleiAgPGRpZWdvaGNnQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJmcmFtZS5jcHAJKHJldmlzaW9uIDg4OTYzKQorKysgU291cmNlL1dlYktpdC9xdC9B
cGkvcXdlYmZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU4NSw2ICsxNTg1LDcgQEAgUVZh
cmlhbnQgUVdlYkZyYW1lOjpldmFsdWF0ZUphdmFTY3JpcHQoYwogICAgIGlmIChwcm94eSkgewog
I2lmIFVTRShKU0MpCiAgICAgICAgIGludCBkaXN0YW5jZSA9IDA7CisgICAgICAgIC8vIEZJWE1F
OiBEbyB3ZSB3YW50IHRvIHNldCB0aGUgdXNlciBnZXN0dXJlIGluZGljYXRvciBoZXJlPyBNb3N0
IG90aGVyIHBvcnRzIGRvLgogICAgICAgICBKU0M6OkpTVmFsdWUgdiA9IGQtPmZyYW1lLT5zY3Jp
cHQoKS0+ZXhlY3V0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdFNvdXJjZSkpLmpzVmFs
dWUoKTsKIAogICAgICAgICByYyA9IEpTQzo6QmluZGluZ3M6OmNvbnZlcnRWYWx1ZVRvUVZhcmlh
bnQocHJveHktPmdsb2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPmdsb2JhbEV4
ZWMoKSwgdiwgUU1ldGFUeXBlOjpWb2lkLCAmZGlzdGFuY2UpOwpJbmRleDogU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5jcHAJKHJldmlzaW9uIDg4OTYzKQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYg
Kzc3LDcgQEAKICNpbmNsdWRlICJTVkdTTUlMRWxlbWVudC5oIgogI2VuZGlmCiAjaW5jbHVkZSAi
VGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNs
dWRlICJXZWJDb3JlVGVzdFN1cHBvcnQuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTkyOSwxNyArOTMwLDE0IEBAIHZvaWQgRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OmV2YWx1YXRlU2MKIAogICAgIFdlYkNvcmU6OkZyYW1lKiBj
b3JlRnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKGZyYW1lKTsKIAotICAgIFNjcmlwdENv
bnRyb2xsZXIqIHByb3h5ID0gY29yZUZyYW1lLT5zY3JpcHQoKTsKLQotICAgIGlmICghcHJveHkp
Ci0gICAgICAgIHJldHVybjsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNh
dG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogI2lmIFVTRShKU0MpCi0gICAg
cHJveHktPmV4ZWN1dGVTY3JpcHRJbldvcmxkKHNjcmlwdFdvcmxkLT53b3JsZCgpLCBzY3JpcHQs
IHRydWUpOworICAgIGNvcmVGcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHRJbldvcmxkKHNj
cmlwdFdvcmxkLT53b3JsZCgpLCBzY3JpcHQpOwogI2VsaWYgVVNFKFY4KQogICAgIFNjcmlwdFNv
dXJjZUNvZGUgc291cmNlKHNjcmlwdCk7CiAgICAgVmVjdG9yPFNjcmlwdFNvdXJjZUNvZGU+IHNv
dXJjZXM7CiAgICAgc291cmNlcy5hcHBlbmQoc291cmNlKTsKLSAgICBwcm94eS0+ZXZhbHVhdGVJ
bklzb2xhdGVkV29ybGQoMCwgc291cmNlcywgdHJ1ZSk7CisgICAgY29yZUZyYW1lLT5zY3JpcHQo
KS0+ZXZhbHVhdGVJbklzb2xhdGVkV29ybGQoMCwgc291cmNlcyk7CiAjZW5kaWYKIH0KIApJbmRl
eDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gODg5NjMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wNi0xNSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBmb3JjZVVzZXJHZXN0dXJlIGJvb2wgaW4gZmF2
b3Igb2YgVXNlckdlc3R1cmVJbmRpY2F0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYyNzAyCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAg
ICAgIChXZWJGcmFtZTo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEluU2NyaXB0V29ybGQp
OgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6c3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmcpOgorCiAyMDExLTA2LTEzICBLZW50YXJvIEhhcmEg
IDxoYXJha2VuQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3Nr
dXJ5YWtvdi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDg4OTYzKQorKysg
U291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1
NCw2IEBACiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9NZW1vcnlD
YWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RvY3VtZW50TG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuaD4KQEAgLTczLDEzICs3MiwxNSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSFRNTEFwcGxldEVsZW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxGb3JtRWxl
bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvSFRNTEZvcm1FbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1M
SW5wdXRFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0hUTUxQbHVnSW5FbGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9KU0RPTUJp
bmRpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NV2luZG93Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9LZXlib2FyZEV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZW1vcnlDYWNoZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTW91c2VSZWxhdGVkRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CkBAIC04OCwxOCAr
ODksMTggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGFiYXNlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QbHVnaW5WaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QcmludENvbnRleHQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclRyZWVBc1RleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1JlbmRlclZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlbmRl
clZpZXcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclRyZWVBc1RleHQuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFZh
bHVlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NWR0RvY3VtZW50RXh0ZW5zaW9u
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1ZHU01JTEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1RleHRJdGVyYXRvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSlNET01CaW5kaW5nLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9T
Y3JpcHRWYWx1ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0Lmg+CkBAIC0yNTc0LDggKzI1NzUsMTEgQEAg
SFJFU1VMVCBXZWJGcmFtZTo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YQogICAgIC8vIEdldCB0aGUg
ZnJhbWUgZnJvbWUgdGhlIGdsb2JhbCBvYmplY3Qgd2UndmUgc2V0dGxlZCBvbi4KICAgICBGcmFt
ZSogZnJhbWUgPSBhbnlXb3JsZEdsb2JhbE9iamVjdC0+aW1wbCgpLT5mcmFtZSgpOwogICAgIEFT
U0VSVChmcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBmcmFtZS0+c2Ny
aXB0KCktPmV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLT53b3JsZCgpLCBzdHJpbmcsIHRydWUp
LmpzVmFsdWUoKTsKIAorICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3Io
RGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBm
cmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLT53b3JsZCgpLCBzdHJp
bmcpLmpzVmFsdWUoKTsKKworICAgIC8vIEZJWE1FOiBmcmFtZSBpcyBqdXN0IGEgbG9jYWwgdmFy
YWJsZS4gVGVzdGluZyBpdCBmb3IgbnVsbCBkb2Vzbid0IGRvIGFueXRoaW5nLgogICAgIGlmICgh
ZnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1vdmVkIG91ciBmcmFtZSBmcm9tIHRoZSBw
YWdlLgogICAgICAgICByZXR1cm4gU19PSzsKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2Vi
Vmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJl
dmlzaW9uIDg4OTYzKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMyw2ICsxMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2ltcGxlRm9udERh
dGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N5c3RlbUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1R5cGluZ0NvbW1hbmQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9y
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1dpbmRvd3NUb3VjaC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
QEAgLTMxNjEsNyArMzE2Miw5IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6
c3RyaW4KICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAg
IEpTQzo6SlNWYWx1ZSBzY3JpcHRFeGVjdXRpb25SZXN1bHQgPSBjb3JlRnJhbWUtPnNjcmlwdCgp
LT5leGVjdXRlU2NyaXB0KFdURjo6U3RyaW5nKHNjcmlwdCksIHRydWUpLmpzVmFsdWUoKTsKKyAg
ICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNz
aW5nVXNlckdlc3R1cmUpOworICAgIEpTQzo6SlNWYWx1ZSBzY3JpcHRFeGVjdXRpb25SZXN1bHQg
PSBjb3JlRnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KFdURjo6U3RyaW5nKHNjcmlwdCkp
LmpzVmFsdWUoKTsKKwogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uUmVzdWx0KQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogICAgIGVsc2UgaWYgKHNjcmlwdEV4ZWN1dGlvblJlc3VsdC5pc1N0cmlu
ZygpKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gODg5NjMpCisrKyBTb3VyY2UvV2Vi
S2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTA2
LTE1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGZvcmNlVXNlckdlc3R1cmUgYm9v
bCBpbiBmYXZvciBvZiBVc2VyR2VzdHVyZUluZGljYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI3MDIKKworICAgICAgICAqIFdlYkZyYW1lLmNw
cDoKKyAgICAgICAgKHd4V2ViRnJhbWU6OlJ1blNjcmlwdCk6CisKIDIwMTEtMDYtMTIgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkg
UHJvc2t1cnlha292LgpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJGcmFtZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDg4OTYzKQor
KysgU291cmNlL1dlYktpdC93eC9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYg
KzQ4LDcgQEAKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlN1YnN0aXR1dGVE
YXRhLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVkZSAiVXNlckdlc3R1cmVJ
bmRpY2F0b3IuaCIKIAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgPHJ1bnRp
bWUvSlNWYWx1ZS5oPgpAQCAtMzMwLDcgKzMzMSw4IEBAIHd4U3RyaW5nIHd4V2ViRnJhbWU6OlJ1
blNjcmlwdChjb25zdCB3eFMKICAgICAgICAgICAgIGJvb2wganNFbmFibGVkID0gY29udHJvbGxl
ci0+Y2FuRXhlY3V0ZVNjcmlwdHMoV2ViQ29yZTo6QWJvdXRUb0V4ZWN1dGVTY3JpcHQpOyAKICAg
ICAgICAgICAgIHd4QVNTRVJUX01TRyhqc0VuYWJsZWQsIHd4VCgiUnVuU2NyaXB0IHJlcXVpcmVz
IEphdmFTY3JpcHQgdG8gYmUgZW5hYmxlZC4iKSk7CiAgICAgICAgICAgICBpZiAoanNFbmFibGVk
KSB7Ci0gICAgICAgICAgICAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGNvbnRyb2xsZXItPmV4
ZWN1dGVTY3JpcHQoamF2YXNjcmlwdCwgdHJ1ZSkuanNWYWx1ZSgpOworICAgICAgICAgICAgICAg
IFdlYkNvcmU6OlVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoV2ViQ29yZTo6
RGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CisgICAgICAgICAgICAgICAgSlNDOjpK
U1ZhbHVlIHJlc3VsdCA9IGNvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHQoamF2YXNjcmlwdCkuanNW
YWx1ZSgpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVyblZhbHVlID0gd3hTdHJpbmcocmVzdWx0LnRvU3RyaW5nKG1faW1wbC0+ZnJhbWUtPnNj
cmlwdCgpLT5nbG9iYWxPYmplY3QoV2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5n
bG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCksIHd4Q29udlVURjgpOyAgICAgICAgCiAgICAgICAg
ICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97371</attachid>
            <date>2011-06-15 15:50:26 -0700</date>
            <delta_ts>2011-06-15 18:49:42 -0700</delta_ts>
            <desc>Patch that keeps the bool but still removes the URL hack</desc>
            <filename>bug-62702-20110615155025.patch</filename>
            <type>text/plain</type>
            <size>2466</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFz
ZS5jcHAJKHJldmlzaW9uIDg4OTcyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvU2NyaXB0
Q29udHJvbGxlckJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCw5ICs1NSw4IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxl
cjo6Y2FuRXhlY3V0ZVNjcmlwdHMKIAogU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQog
ewotICAgIC8vIEZJWE1FOiBXaHkgZG9lcyB0aGUgVVJMIG9mIHRoZSBzY3JpcHQgZGVwZW5kIG9u
IGZvcmNlVXNlckdlc3R1cmU/Ci0gICAgLy8gVGhpcyBsb29rcyBzdXNwaWNpb3VzbHkgbGlrZSBh
biBvbGQgdXNlci1nZXN0dXJlIGJhY2stY2hhbm5lbC4KLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlw
dChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSA/IEtVUkwoKSA6IG1f
ZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSk7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2Vz
dHVyZUluZGljYXRvcihmb3JjZVVzZXJHZXN0dXJlID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2Vy
R2VzdHVyZSA6IFBvc3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKKyAgICByZXR1cm4gZXhl
Y3V0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCkpKTsKIH0KIAogU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlw
dChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQpAQCAtOTUsNyArOTUsNyBAQCBi
b29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpCiAgICAgY29uc3QgaW50IGph
dmFzY3JpcHRTY2hlbWVMZW5ndGggPSBzaXplb2YoImphdmFzY3JpcHQ6IikgLSAxOwogCiAgICAg
U3RyaW5nIGRlY29kZWRVUkwgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnN0cmluZygp
KTsKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHQgPSBleGVjdXRlU2NyaXB0KGRlY29kZWRVUkwuc3Vi
c3RyaW5nKGphdmFzY3JpcHRTY2hlbWVMZW5ndGgpLCBmYWxzZSk7CisgICAgU2NyaXB0VmFsdWUg
cmVzdWx0ID0gZXhlY3V0ZVNjcmlwdChkZWNvZGVkVVJMLnN1YnN0cmluZyhqYXZhc2NyaXB0U2No
ZW1lTGVuZ3RoKSk7CiAKICAgICAvLyBJZiBleGVjdXRpbmcgc2NyaXB0IGNhdXNlZCB0aGlzIGZy
YW1lIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgcGFnZSwgd2UKICAgICAvLyBkb24ndCB3YW50IHRv
IHRyeSB0byByZXBsYWNlIGl0cyBkb2N1bWVudCEKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA4ODk3MikKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NjgsNyArNDY4LDggQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhclNjcmlw
dE9iamVjdAogCiBTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5X
b3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlKQogewotICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShzY3Jp
cHQsIGZvcmNlVXNlckdlc3R1cmUgPyBLVVJMKCkgOiBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KSk7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihmb3JjZVVzZXJH
ZXN0dXJlID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IFBvc3NpYmx5UHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKTsKKyAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0
LCBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSk7CiAKICAgICBpZiAoIWNhbkV4ZWN1dGVTY3Jp
cHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAgICAgICByZXR1cm4g
U2NyaXB0VmFsdWUoKTsK
</data>
<flag name="review"
          id="91316"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>