<?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>36217</bug_id>
          
          <creation_ts>2010-03-17 06:52:52 -0700</creation_ts>
          <short_desc>Web Inspector: Inspector tests sometimes fail due to full paths being printed instead of relative paths</short_desc>
          <delta_ts>2010-04-23 09:18:56 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, LayoutTestFailure, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>33305</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>aroben</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>200734</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-03-17 06:52:52 -0700</bug_when>
    <thetext>inspector ...
inspector/console-dirxml.html -&gt; failed
....
inspector/console-tests.html -&gt; failed
.......
inspector/elements-panel-xhtml-structure.xhtml -&gt; failed
.................

For some reason inspector is not being enabled now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200735</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-03-17 06:54:15 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; inspector ...
&gt; inspector/console-dirxml.html -&gt; failed
&gt; ....
&gt; inspector/console-tests.html -&gt; failed
&gt; .......
&gt; inspector/elements-panel-xhtml-structure.xhtml -&gt; failed
&gt; .................
&gt; 
&gt; For some reason inspector is not being enabled now.

It doesn&apos;t seem that it isn&apos;t enabled. It seems that it&apos;s not stripping the URLs correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200737</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-03-17 06:55:46 -0700</bug_when>
    <thetext>I think r56095 is a red herring. Before that revision, so many tests were failing that the Windows bots were aborting the tests early. I think it&apos;s far more likely that these tests were failing before r56095, but they just weren&apos;t being run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200739</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-03-17 07:00:48 -0700</bug_when>
    <thetext>Clarification: the reason console messages have short urls is that there is a
resource entry with matching url. We trim long ones and use friendly shortcuts
in case there is matching resource entry. In this case, corresponding resource
entry is likely to be missing. Either resource tracking is disabled or resource
is not being reported as processed to the loader clients.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200743</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-03-17 07:03:03 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Clarification: the reason console messages have short urls is that there is a
&gt; resource entry with matching url. We trim long ones and use friendly shortcuts
&gt; in case there is matching resource entry. In this case, corresponding resource
&gt; entry is likely to be missing. Either resource tracking is disabled or resource
&gt; is not being reported as processed to the loader clients.

Another possibility is that the URLs of the messages and the URLs of the resources differ in some way. E.g., maybe one is canonicalized and the other isn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200745</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-03-17 07:06:43 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Another possibility is that the URLs of the messages and the URLs of the
&gt; resources differ in some way. E.g., maybe one is canonicalized and the other
&gt; isn&apos;t.

A little debugging shows that this doesn&apos;t seem to be the issue. I see the console-dirxml.html resource being added, and the console messages seem to have the same URL that the resource had.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208501</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-04-05 08:54:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/7827667&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209103</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-04-06 10:41:25 -0700</bug_when>
    <thetext>Ilya is looking into this. Our current theory is that, in Release builds, developer extras aren&apos;t getting enabled until after the main resource has already loaded, meaning that the main resources isn&apos;t in the Inspector&apos;s resource map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210197</commentid>
    <comment_count>8</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-04-08 08:07:00 -0700</bug_when>
    <thetext>I&apos;ve made additional round of investigation:
Usually inspector tests are failing under stress conditions generated by CPU and Disk I/O intensive tasks.

In normal situation the sequence of test events is pretty clear.
1) WebInspector: loaded
2) new resource: file:///E:/chromium/src/third_party/WebKit/LayoutTests/inspector/console-dirxml.html
3) Request for display name of url: file:///E:/chromium/src/third_party/WebKit/LayoutTests/inspector/console-dirxml.html

When some test is failed then typical sequence looks like the next one:
1) WebInspector: loaded
2) new resource: file:///E:/chromium/src/third_party/WebKit/LayoutTests/inspector/console-dirxml.html
3) new resource: file:///E:/chromium/src/third_party/WebKit/LayoutTests/inspector/console-format-collections.html
4) WebInspector: reset 
5) new resource: undefined 
6) Request for url: file:///E:/chromium/src/third_party/WebKit/LayoutTests/inspector/console-format-collections.html

WebInspector is closing asynchronously and that is the reason. 
Under stress conditions the next can accidentally use WebInspector of previous test.
I&apos;ll try to fix that today/tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210241</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-04-08 09:23:26 -0700</bug_when>
    <thetext>Thanks for the analysis, Ilya!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211138</commentid>
    <comment_count>10</comment_count>
      <attachid>53039</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-04-10 05:25:28 -0700</bug_when>
    <thetext>Created attachment 53039
[patch] Just first version of patch to check it on the try bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211145</commentid>
    <comment_count>11</comment_count>
      <attachid>53039</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-04-10 07:51:28 -0700</bug_when>
    <thetext>Comment on attachment 53039
[patch] Just first version of patch to check it on the try bots.

&gt; -void InspectorController::disconnectFrontend()
&gt; +void InspectorController::disconnectFrontend(InspectorFrontend* frontend)
&gt;  {
&gt; -    if (!m_frontend)
&gt; +    if (m_frontend != frontend)
&gt;          return;

I think we should cut this control flow earlier. I.e. when connection is terminated upon backend request, there should be no further disconnect calls re-entering backend from within front-end. I think we&apos;ve discussed it. Leaving it your way would make design less clean and make socket implementation tough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211168</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-10 11:59:03 -0700</bug_when>
    <thetext>Attachment 53039 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1590418</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211344</commentid>
    <comment_count>13</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-04-11 02:50:23 -0700</bug_when>
    <thetext>pfeldman: we have four different ways to close inspector.
1) by LayoutTestController;
2) by navigation to other domain;
3) by close button of inspector when it is in attached state;
4) by native window button when it is in detached state;

We have problem with async close only in the first case.
and we should be able to do that when disconnect is initiated by inspector itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211345</commentid>
    <comment_count>14</comment_count>
      <attachid>53083</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-04-11 02:54:51 -0700</bug_when>
    <thetext>Created attachment 53083
[patch] second iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211594</commentid>
    <comment_count>15</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-04-12 06:59:31 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; pfeldman: we have four different ways to close inspector.
&gt; 1) by LayoutTestController;
&gt; 2) by navigation to other domain;
&gt; 3) by close button of inspector when it is in attached state;
&gt; 4) by native window button when it is in detached state;
&gt; 
&gt; We have problem with async close only in the first case.
&gt; and we should be able to do that when disconnect is initiated by inspector
&gt; itself.

I&apos;d like to see more clarity in the code still. We have two parties (inspector on one side and front-end on another side) with serialized asynchronous connection in between. We need to have a proper connection handshake / termination routines. This connection can be terminated by either of the parties. I&apos;d like to see clear methods for closing the connection initiated by inspector and the front-end. And once connection has been terminated, I don&apos;t expect echo methods to be called upon closed connection. In you code I see:

Inspector initiates disconnect -&gt; sends message to frontend and cuts the pipe -&gt; front-end initiates disconnect. And the reason you don&apos;t re-enter code on front-end is that the pipe is already cut. This sounds confusing. Front-end should only initiate disconnect when its host or close button or whatever on its side initiates disconnect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211595</commentid>
    <comment_count>16</comment_count>
      <attachid>53083</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-04-12 07:00:24 -0700</bug_when>
    <thetext>Comment on attachment 53083
[patch] second iteration.

(I don&apos;t see how my comments are addressed in this patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211600</commentid>
    <comment_count>17</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-12 07:29:01 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Front-end
&gt; should only initiate disconnect when its host or close button or whatever on
&gt; its side initiates disconnect.
If WebInspector.close is asynchronous, there is another possible scenario:
1. The IC-&gt;FE pointer is cleared
2. WebInspector.close is called 
3. FE window close is handled and IC-&gt;disconnectFE is called.
At the third step it&apos;s possible that IC has already open another FE. This means that every FE client should track whether it was closed from the IC or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211602</commentid>
    <comment_count>18</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-04-12 07:32:57 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #15)
&gt; &gt; Front-end
&gt; &gt; should only initiate disconnect when its host or close button or whatever on
&gt; &gt; its side initiates disconnect.
&gt; If WebInspector.close is asynchronous, there is another possible scenario:
&gt; 1. The IC-&gt;FE pointer is cleared

At this point we should also clear the pointer from the transport implementation to inspector controller on the inspector page side, so that no more incoming messages are coming down this pipe.

&gt; 2. WebInspector.close is called 
&gt; 3. FE window close is handled and IC-&gt;disconnectFE is called.
&gt; At the third step it&apos;s possible that IC has already open another FE. This means
&gt; that every FE client should track whether it was closed from the IC or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211603</commentid>
    <comment_count>19</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-04-12 07:37:39 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; (In reply to comment #15)
&gt; &gt; &gt; Front-end
&gt; &gt; &gt; should only initiate disconnect when its host or close button or whatever on
&gt; &gt; &gt; its side initiates disconnect.
&gt; &gt; If WebInspector.close is asynchronous, there is another possible scenario:
&gt; &gt; 1. The IC-&gt;FE pointer is cleared
&gt; 
&gt; At this point we should also clear the pointer from the transport
&gt; implementation to inspector controller on the inspector page side, so that no
&gt; more incoming messages are coming down this pipe.
&gt; 
We can easily do this with remote frontend but in case of in-process FE we need FE client to handle this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212497</commentid>
    <comment_count>20</comment_count>
      <attachid>53352</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-04-14 12:34:49 -0700</bug_when>
    <thetext>Created attachment 53352
[patch] next iteration

WebInspector.updateResource wants to have url in the each update payload because that property will be used if resource map has no such request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212503</commentid>
    <comment_count>21</comment_count>
      <attachid>53352</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-04-14 12:42:58 -0700</bug_when>
    <thetext>Comment on attachment 53352
[patch] next iteration

Hm. How do we end up in a state where we have resource with given id in the front-end, but it has lost its url? This should not be possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212565</commentid>
    <comment_count>22</comment_count>
      <attachid>53367</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-04-14 14:13:58 -0700</bug_when>
    <thetext>Created attachment 53367
[patch] just fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213274</commentid>
    <comment_count>23</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-04-16 09:21:29 -0700</bug_when>
    <thetext>User scenario

0) run release webkit on windows
1) open inspector
2) enable resource tracking
3) close inspector
4) print yahoo.com into address bar
5) press enter and then immediately open inspector by Ctrl-Shift-I

Expected: resource pane should have a list of loaded resources with their names etc.
Actual: the first resource has no name, content and other attributes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215281</commentid>
    <comment_count>24</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-04-21 06:38:02 -0700</bug_when>
    <thetext>*** Bug 36946 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215282</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-04-21 06:38:36 -0700</bug_when>
    <thetext>Dupe bug 36946 says that this affects Tiger as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215820</commentid>
    <comment_count>26</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-22 04:19:11 -0700</bug_when>
    <thetext>This is one of the more common failures these days.  Hit it again just now:
http://build.webkit.org/results/Tiger%20Intel%20Release/r58084%20(11119)/inspector/console-log-before-inspector-open-pretty-diff.html

Glad to see we have a fix posted.  Any chance of review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215821</commentid>
    <comment_count>27</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-22 04:19:42 -0700</bug_when>
    <thetext>I know next-to-nothing about the inspector or I would be happy to review it myself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215887</commentid>
    <comment_count>28</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-04-22 08:36:50 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; This is one of the more common failures these days.  Hit it again just now:
&gt; http://build.webkit.org/results/Tiger%20Intel%20Release/r58084%20(11119)/inspector/console-log-before-inspector-open-pretty-diff.html
&gt; 
&gt; Glad to see we have a fix posted.  Any chance of review?

Last I heard, Pavel doesn&apos;t think this fix will work. I&apos;m not sure why he hasn&apos;t r-ed it yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216353</commentid>
    <comment_count>29</comment_count>
      <attachid>53367</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-23 02:51:42 -0700</bug_when>
    <thetext>Comment on attachment 53367
[patch] just fix.

Clearing flags on attachment: 53367

Committed r58162: &lt;http://trac.webkit.org/changeset/58162&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216354</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-23 02:51:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216377</commentid>
    <comment_count>31</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-04-23 05:16:22 -0700</bug_when>
    <thetext>Pavel, can you comment on whether you think attachment 53367 (landed in r58162) was the right fix for this issue? Last I heard, you had issues with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216438</commentid>
    <comment_count>32</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-04-23 09:18:56 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; Pavel, can you comment on whether you think attachment 53367 (landed in r58162)
&gt; was the right fix for this issue? Last I heard, you had issues with it.

Pavel said on IRC:

&quot;I was wrong about the patch. loislo did the right fix. I was too sure async close was to blame. We should still fix it, bug it gets lower priority.&quot;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53039</attachid>
            <date>2010-04-10 05:25:28 -0700</date>
            <delta_ts>2010-04-11 02:54:51 -0700</delta_ts>
            <desc>[patch] Just first version of patch to check it on the try bots.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>23236</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODE5ZmRkYy4uMDc2ZTI2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMC0wNC0xMCAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yIHRlc3RzIHNvbWV0
aW1lcyBmYWlsIG9uIFdpbiBSZWxlYXNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzYyMTcKKworICAgICAgICAqIFdlYkNvcmUuSW5zcGVjdG9yLmV4
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckJhY2tlbmQ6Omluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OnNldEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpwb3B1bGF0ZVNjcmlwdE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6cHJ1bmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDb250cm9sbGVyOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Om1haW5SZXNvdXJjZUZp
cmVkRE9NQ29udGVudEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6Om1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0
cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c2NyaXB0
SW1wb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c3RhcnRU
aW1lbGluZVByb2ZpbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmRpZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjpkaWRVc2VET01TdG9yYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmZy
b250ZW5kTG9hZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWwuaDoKKwogMjAxMC0wNC0wOSAgWGFuIExvcGV6ICA8eGxvcGV6
QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLkluc3BlY3Rvci5leHAgYi9XZWJDb3JlL1dlYkNvcmUu
SW5zcGVjdG9yLmV4cAppbmRleCA1Y2RhODkzLi43ZjgzMmJkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L1dlYkNvcmUuSW5zcGVjdG9yLmV4cAorKysgYi9XZWJDb3JlL1dlYkNvcmUuSW5zcGVjdG9yLmV4
cApAQCAtMyw3ICszLDYgQEAgX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTRlbmFi
bGVEZWJ1Z2dlckV2CiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxNGVuYWJsZVBy
b2ZpbGVyRWJiCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxNWRpc2FibGVEZWJ1
Z2dlckViCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxNWRpc2FibGVQcm9maWxl
ckViCi1fX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOGRpc2Nvbm5lY3RGcm9udGVu
ZEV2CiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNnNldEluc3BlY3RvckZyb250
ZW5kQ2xpZW50RU4zV1RGMTBQYXNzT3duUHRySU5TXzIzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRF
RUUKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI2c3RvcFVzZXJJbml0aWF0ZWRQ
cm9maWxpbmdFdgogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjdzdGFydFVzZXJJ
bml0aWF0ZWRQcm9maWxpbmdFUE5TXzVUaW1lcklTMF9FRQpAQCAtMjYsNSArMjUsNiBAQCBfX1pO
N1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwxMm1vdmVXaW5kb3dCeUVmZgog
X19aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsMTVjYW5BdHRhY2hXaW5k
b3dFdgogX19aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsMTdzZXRBdHRh
Y2hlZFdpbmRvd0ViCiBfX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwy
NmNoYW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0RWoKK19fWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbDE4ZGlzY29ubmVjdEZyb250ZW5kRXYKIF9fWk43V2ViQ29yZTI4SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDE5cmVxdWVzdERldGFjaFdpbmRvd0V2CiBfX1pON1dl
YkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwxOXJlcXVlc3RBdHRhY2hXaW5kb3dF
dgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggYzU4MDczZC4u
ZDJiOGY4MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0
LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC0x
OTIsNyArMTkyLDcgQEAgSW5zcGVjdG9yRnJvbnRlbmQqIEluamVjdGVkU2NyaXB0SG9zdDo6aW5z
cGVjdG9yRnJvbnRlbmQoKQogewogICAgIGlmICghbV9pbnNwZWN0b3JDb250cm9sbGVyKQogICAg
ICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5tX2Zyb250
ZW5kLmdldCgpOworICAgIHJldHVybiBtX2luc3BlY3RvckNvbnRyb2xsZXItPm1fZnJvbnRlbmQ7
CiB9CiAKIHBhaXI8bG9uZywgU2NyaXB0T2JqZWN0PiBJbmplY3RlZFNjcmlwdEhvc3Q6OmluamVj
dFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcAppbmRleCBhZWQ4ZjJiLi4xOWJhNzE4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcAorKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcApAQCAtNDg2LDcgKzQ4Niw3
IEBAIEluc3BlY3RvckZyb250ZW5kKiBJbnNwZWN0b3JCYWNrZW5kOjppbnNwZWN0b3JGcm9udGVu
ZCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckNvbnRyb2xsZXIpCiAgICAgICAgIHJldHVybiAw
OwotICAgIHJldHVybiBtX2luc3BlY3RvckNvbnRyb2xsZXItPm1fZnJvbnRlbmQuZ2V0KCk7Cisg
ICAgcmV0dXJuIG1faW5zcGVjdG9yQ29udHJvbGxlci0+bV9mcm9udGVuZDsKIH0KIAogTm9kZSog
SW5zcGVjdG9yQmFja2VuZDo6bm9kZUZvcklkKGxvbmcgbm9kZUlkKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCAzZjA0OWY1Li41YWQyNjExIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTQ0LDYgKzE0NCw3IEBA
IEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5z
cGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2luc3BlY3RlZFBhZ2UocGFnZSkKICAgICAs
IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fb3BlbmluZ0Zyb250ZW5kKGZhbHNlKQorICAgICwg
bV9mcm9udGVuZCgwKQogICAgICwgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCgwKQogICAg
ICwgbV9zaG93QWZ0ZXJWaXNpYmxlKEN1cnJlbnRQYW5lbCkKICAgICAsIG1fZ3JvdXBMZXZlbCgw
KQpAQCAtMzA0LDEyICszMDUsMTIgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRDb25z
b2xlTWVzc2FnZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIENvbnNvbGVNZXMKICAgICAgICAg
bV9wcmV2aW91c01lc3NhZ2UtPmluY3JlbWVudENvdW50KCk7CiAgICAgICAgIGRlbGV0ZSBjb25z
b2xlTWVzc2FnZTsKICAgICAgICAgaWYgKG1fZnJvbnRlbmQpCi0gICAgICAgICAgICBtX3ByZXZp
b3VzTWVzc2FnZS0+dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUobV9mcm9udGVuZC5nZXQoKSk7
CisgICAgICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZS0+dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNv
bGUobV9mcm9udGVuZCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2Ug
PSBjb25zb2xlTWVzc2FnZTsKICAgICAgICAgbV9jb25zb2xlTWVzc2FnZXMuYXBwZW5kKGNvbnNv
bGVNZXNzYWdlKTsKICAgICAgICAgaWYgKG1fZnJvbnRlbmQpCi0gICAgICAgICAgICBtX3ByZXZp
b3VzTWVzc2FnZS0+YWRkVG9Gcm9udGVuZChtX2Zyb250ZW5kLmdldCgpLCBtX2luamVjdGVkU2Ny
aXB0SG9zdC5nZXQoKSk7CisgICAgICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZS0+YWRkVG9Gcm9u
dGVuZChtX2Zyb250ZW5kLCBtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKSk7CiAgICAgfQogCiAg
ICAgaWYgKCFtX2Zyb250ZW5kICYmIG1fY29uc29sZU1lc3NhZ2VzLnNpemUoKSA+PSBtYXhpbXVt
Q29uc29sZU1lc3NhZ2VzKSB7CkBAIC00MjEsMTUgKzQyMiwxNSBAQCB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OnNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKQogICAgIH0KIH0KIAot
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRGcm9udGVuZChQYXNzT3duUHRyPEluc3BlY3Rv
ckZyb250ZW5kPiBmcm9udGVuZCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0RnJvbnRl
bmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogewogICAgIEFTU0VSVChmcm9udGVuZCk7
CiAgICAgbV9vcGVuaW5nRnJvbnRlbmQgPSBmYWxzZTsKICAgICBtX2Zyb250ZW5kID0gZnJvbnRl
bmQ7CiAgICAgcmVsZWFzZURPTUFnZW50KCk7Ci0gICAgbV9kb21BZ2VudCA9IEluc3BlY3RvckRP
TUFnZW50OjpjcmVhdGUobV9mcm9udGVuZC5nZXQoKSk7CisgICAgbV9kb21BZ2VudCA9IEluc3Bl
Y3RvckRPTUFnZW50OjpjcmVhdGUobV9mcm9udGVuZCk7CiAgICAgaWYgKG1fdGltZWxpbmVBZ2Vu
dCkKLSAgICAgICAgbV90aW1lbGluZUFnZW50LT5yZXNldEZyb250ZW5kUHJveHlPYmplY3QobV9m
cm9udGVuZC5nZXQoKSk7CisgICAgICAgIG1fdGltZWxpbmVBZ2VudC0+cmVzZXRGcm9udGVuZFBy
b3h5T2JqZWN0KG1fZnJvbnRlbmQpOwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAm
JiBVU0UoSlNDKQogICAgIFN0cmluZyBkZWJ1Z2dlckVuYWJsZWQgPSBzZXR0aW5nKGRlYnVnZ2Vy
RW5hYmxlZFNldHRpbmdOYW1lKTsKICAgICBpZiAoZGVidWdnZXJFbmFibGVkID09ICJ0cnVlIikK
QEAgLTQ5NywxMyArNDk4LDE1IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xvc2UoKQog
ICAgIGlmICghbV9mcm9udGVuZCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fZnJvbnRlbmQtPmNs
b3NlKCk7CisgICAgZGlzY29ubmVjdEZyb250ZW5kKG1fZnJvbnRlbmQpOwogfQogCi12b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCgpCit2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQp
CiB7Ci0gICAgaWYgKCFtX2Zyb250ZW5kKQorICAgIGlmIChtX2Zyb250ZW5kICE9IGZyb250ZW5k
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9mcm9udGVuZC5jbGVhcigpOworICAgIC8vIFRoZSBm
cm9udGVuZCBpcyBvd25lZCBieSBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLgorICAgIG1f
ZnJvbnRlbmQgPSAwOwogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgLy8g
SWYgdGhlIHdpbmRvdyBpcyBiZWluZyBjbG9zZWQgd2l0aCB0aGUgZGVidWdnZXIgZW5hYmxlZCwK
QEAgLTU2Miw3ICs1NjUsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnBvcHVsYXRlU2Ny
aXB0T2JqZWN0cygpCiAKICAgICBSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIHJlc291cmNlc0VuZCA9
IG1fcmVzb3VyY2VzLmVuZCgpOwogICAgIGZvciAoUmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9
IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IHJlc291cmNlc0VuZDsgKytpdCkKLSAgICAgICAg
aXQtPnNlY29uZC0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOworICAgICAg
ICBpdC0+c2Vjb25kLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZCk7CiAKICAgICBtX2Rv
bUFnZW50LT5zZXREb2N1bWVudChtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVu
dCgpKTsKIApAQCAtNTcwLDcgKzU3Myw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cG9w
dWxhdGVTY3JpcHRPYmplY3RzKCkKICAgICAgICAgbV9mcm9udGVuZC0+dXBkYXRlQ29uc29sZU1l
c3NhZ2VFeHBpcmVkQ291bnQobV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCk7CiAgICAgdW5z
aWduZWQgbWVzc2FnZUNvdW50ID0gbV9jb25zb2xlTWVzc2FnZXMuc2l6ZSgpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtZXNzYWdlQ291bnQ7ICsraSkKLSAgICAgICAgbV9jb25zb2xl
TWVzc2FnZXNbaV0tPmFkZFRvRnJvbnRlbmQobV9mcm9udGVuZC5nZXQoKSwgbV9pbmplY3RlZFNj
cmlwdEhvc3QuZ2V0KCkpOworICAgICAgICBtX2NvbnNvbGVNZXNzYWdlc1tpXS0+YWRkVG9Gcm9u
dGVuZChtX2Zyb250ZW5kLCBtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKSk7CiAKICNpZiBFTkFC
TEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICBpZiAobV9kZWJ1Z2dlckVuYWJsZWQpCkBAIC01
NzksMTIgKzU4MiwxMiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnBvcHVsYXRlU2NyaXB0
T2JqZWN0cygpCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgIERhdGFiYXNlUmVzb3VyY2VzTWFw
OjppdGVyYXRvciBkYXRhYmFzZXNFbmQgPSBtX2RhdGFiYXNlUmVzb3VyY2VzLmVuZCgpOwogICAg
IGZvciAoRGF0YWJhc2VSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZVJlc291
cmNlcy5iZWdpbigpOyBpdCAhPSBkYXRhYmFzZXNFbmQ7ICsraXQpCi0gICAgICAgIGl0LT5zZWNv
bmQtPmJpbmQobV9mcm9udGVuZC5nZXQoKSk7CisgICAgICAgIGl0LT5zZWNvbmQtPmJpbmQobV9m
cm9udGVuZCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgRE9NU3RvcmFn
ZVJlc291cmNlc01hcDo6aXRlcmF0b3IgZG9tU3RvcmFnZUVuZCA9IG1fZG9tU3RvcmFnZVJlc291
cmNlcy5lbmQoKTsKICAgICBmb3IgKERPTVN0b3JhZ2VSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9kb21TdG9yYWdlUmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGRvbVN0b3JhZ2VFbmQ7ICsr
aXQpCi0gICAgICAgIGl0LT5zZWNvbmQtPmJpbmQobV9mcm9udGVuZC5nZXQoKSk7CisgICAgICAg
IGl0LT5zZWNvbmQtPmJpbmQobV9mcm9udGVuZCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoV09SS0VS
UykKICAgICBXb3JrZXJzTWFwOjppdGVyYXRvciB3b3JrZXJzRW5kID0gbV93b3JrZXJzLmVuZCgp
OwpAQCAtNjM0LDcgKzYzNyw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cHJ1bmVSZXNv
dXJjZXMoUmVzb3VyY2VzTWFwKiByZXNvdXJjZU1hcCwgRG9jdW1lbnRMb2FkCiAgICAgICAgIGlm
ICghbG9hZGVyVG9LZWVwIHx8ICFyZXNvdXJjZS0+aXNTYW1lTG9hZGVyKGxvYWRlclRvS2VlcCkp
IHsKICAgICAgICAgICAgIHJlbW92ZVJlc291cmNlKHJlc291cmNlKTsKICAgICAgICAgICAgIGlm
IChtX2Zyb250ZW5kKQotICAgICAgICAgICAgICAgIHJlc291cmNlLT5yZWxlYXNlU2NyaXB0T2Jq
ZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOworICAgICAgICAgICAgICAgIHJlc291cmNlLT5yZWxlYXNl
U2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNjg1LDcg
KzY4OCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZChEb2N1bWVu
dExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGFkZCB0aGUgbWFp
biByZXNvdXJjZSB1bnRpbCBpdHMgbG9hZCBpcyBjb21taXR0ZWQuIFRoaXMgaXMKICAgICAgICAg
ICAgICAgICAvLyBuZWVkZWQgdG8ga2VlcCB0aGUgbG9hZCBmb3IgYSB1c2VyLWVudGVyZWQgVVJM
IGZyb20gc2hvd2luZyB1cCBpbiB0aGUKICAgICAgICAgICAgICAgICAvLyBsaXN0IG9mIHJlc291
cmNlcyBmb3IgdGhlIHBhZ2UgdGhleSBhcmUgbmF2aWdhdGluZyBhd2F5IGZyb20uCi0gICAgICAg
ICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICBtX21haW5SZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0
KG1fZnJvbnRlbmQpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBQ
YWdlcyBsb2FkZWQgZnJvbSB0aGUgcGFnZSBjYWNoZSBhcmUgY29tbWl0dGVkIGJlZm9yZQogICAg
ICAgICAgICAgICAgIC8vIG1fbWFpblJlc291cmNlIGlzIHRoZSByaWdodCByZXNvdXJjZSBmb3Ig
dGhpcyBsb2FkLCBzbyB3ZQpAQCAtNzk2LDcgKzc5OSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsCiAgICAgYWRkUmVzb3VyY2UocmVzb3VyY2UuZ2V0KCkpOwogCiAgICAgaWYgKG1fZnJvbnRl
bmQpCi0gICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQo
KSk7CisgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZCk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtODIwLDcgKzgyMyw3IEBAIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwKICAgICBhZGRSZXNvdXJjZShyZXNvdXJjZS5nZXQoKSk7CiAKICAgICBpZiAo
bV9mcm9udGVuZCAmJiBsb2FkZXItPmZyYW1lTG9hZGVyKCktPmlzTG9hZGluZ0Zyb21DYWNoZWRQ
YWdlKCkgJiYgcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpCi0gICAgICAgIHJlc291cmNlLT51
cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSk7CisgICAgICAgIHJlc291cmNlLT51
cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6bWFpblJlc291cmNlRmlyZWRET01Db250ZW50RXZlbnQoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgY29uc3QgS1VSTCYgdXJsKQpAQCAtODMzLDcgKzgzNiw3IEBAIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6bWFpblJlc291cmNlRmlyZWRET01Db250ZW50RXZlbnQoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlCiAgICAgICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCiAgICAgICAgICAgICBtX3Rp
bWVsaW5lQWdlbnQtPmRpZE1hcmtET01Db250ZW50RXZlbnQoKTsKICAgICAgICAgaWYgKG1fZnJv
bnRlbmQpCi0gICAgICAgICAgICBtX21haW5SZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1f
ZnJvbnRlbmQuZ2V0KCkpOworICAgICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnVwZGF0ZVNjcmlw
dE9iamVjdChtX2Zyb250ZW5kKTsKICAgICB9CiB9CiAKQEAgLTg0Nyw3ICs4NTAsNyBAQCB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6Om1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50KERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIGNvbgogICAgICAgICBpZiAobV90aW1lbGluZUFnZW50KQogICAgICAg
ICAgICAgbV90aW1lbGluZUFnZW50LT5kaWRNYXJrTG9hZEV2ZW50KCk7CiAgICAgICAgIGlmICht
X2Zyb250ZW5kKQotICAgICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVj
dChtX2Zyb250ZW5kLmdldCgpKTsKKyAgICAgICAgICAgIG1fbWFpblJlc291cmNlLT51cGRhdGVT
Y3JpcHRPYmplY3QobV9mcm9udGVuZCk7CiAgICAgfQogfQogCkBAIC04ODcsNyArODkwLDcgQEAg
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXIKICAgICByZXNvdXJjZS0+dXBkYXRlUmVxdWVzdChyZXF1
ZXN0KTsKIAogICAgIGlmIChyZXNvdXJjZSAhPSBtX21haW5SZXNvdXJjZSAmJiBtX2Zyb250ZW5k
KQotICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkp
OworICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQpOwogfQog
CiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtOTAw
LDcgKzkwMyw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzCiAgICAgcmVzb3VyY2UtPm1hcmtS
ZXNwb25zZVJlY2VpdmVkVGltZSgpOwogCiAgICAgaWYgKHJlc291cmNlICE9IG1fbWFpblJlc291
cmNlICYmIG1fZnJvbnRlbmQpCi0gICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3Qo
bV9mcm9udGVuZC5nZXQoKSk7CisgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3Qo
bV9mcm9udGVuZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZUNv
bnRlbnRMZW5ndGgodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoUmVjZWl2ZWQp
CkBAIC05MTIsNyArOTE1LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZl
Q29udGVudExlbmd0aCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludAogICAgIHJlc291cmNl
LT5hZGRMZW5ndGgobGVuZ3RoUmVjZWl2ZWQpOwogCiAgICAgaWYgKHJlc291cmNlICE9IG1fbWFp
blJlc291cmNlICYmIG1fZnJvbnRlbmQpCi0gICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRP
YmplY3QobV9mcm9udGVuZC5nZXQoKSk7CisgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRP
YmplY3QobV9mcm9udGVuZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmlu
aXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCkBAIC05MjgsNyArOTMxLDcgQEAg
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllcikKIAogICAgIC8vIE5vIG5lZWQgdG8gbXV0ZSB0aGlzIGV2ZW50IGZvciBtYWlu
IHJlc291cmNlIHNpbmNlIGl0IGhhcHBlbnMgYWZ0ZXIgZGlkIGNvbW1pdCBsb2FkLgogICAgIGlm
IChtX2Zyb250ZW5kKQotICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJv
bnRlbmQuZ2V0KCkpOworICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJv
bnRlbmQpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEZhaWxMb2FkaW5nKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgLyplcnJvciovKQpA
QCAtOTQ1LDcgKzk0OCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmFpbExvYWRp
bmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjCiAKICAgICAvLyBObyBu
ZWVkIHRvIG11dGUgdGhpcyBldmVudCBmb3IgbWFpbiByZXNvdXJjZSBzaW5jZSBpdCBoYXBwZW5z
IGFmdGVyIGRpZCBjb21taXQgbG9hZC4KICAgICBpZiAobV9mcm9udGVuZCkKLSAgICAgICAgcmVz
b3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kLmdldCgpKTsKKyAgICAgICAgcmVz
b3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZykKQEAgLTk2
MCw3ICs5NjMsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc291cmNlUmV0cmlldmVk
QnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aQogICAgIHJlc291cmNlLT5zZXRP
dmVycmlkZUNvbnRlbnQoc291cmNlU3RyaW5nLCBJbnNwZWN0b3JSZXNvdXJjZTo6WEhSKTsKIAog
ICAgIGlmIChtX2Zyb250ZW5kKQotICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0
KG1fZnJvbnRlbmQuZ2V0KCkpOworICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0
KG1fZnJvbnRlbmQpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNjcmlwdEltcG9y
dGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcp
CkBAIC05NzUsNyArOTc4LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzY3JpcHRJbXBv
cnRlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYKICAgICByZXNvdXJj
ZS0+c2V0T3ZlcnJpZGVDb250ZW50KFNjcmlwdFN0cmluZyhzb3VyY2VTdHJpbmcpLCBJbnNwZWN0
b3JSZXNvdXJjZTo6U2NyaXB0KTsKIAogICAgIGlmIChtX2Zyb250ZW5kKQotICAgICAgICByZXNv
dXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOworICAgICAgICByZXNv
dXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmVuYWJsZVJlc291cmNlVHJhY2tpbmcoYm9vbCBhbHdheXMsIGJvb2wgcmVs
b2FkKQpAQCAtMTAzMSw3ICsxMDM0LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFy
dFRpbWVsaW5lUHJvZmlsZXIoKQogICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fdGltZWxpbmVBZ2VudCA9IG5ldyBJbnNwZWN0b3JUaW1lbGluZUFnZW50
KG1fZnJvbnRlbmQuZ2V0KCkpOworICAgIG1fdGltZWxpbmVBZ2VudCA9IG5ldyBJbnNwZWN0b3JU
aW1lbGluZUFnZW50KG1fZnJvbnRlbmQpOwogICAgIGlmIChtX2Zyb250ZW5kKQogICAgICAgICBt
X2Zyb250ZW5kLT50aW1lbGluZVByb2ZpbGVyV2FzU3RhcnRlZCgpOwogfQpAQCAtMTE0Nyw3ICsx
MTUwLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRPcGVuRGF0YWJhc2UoRGF0YWJh
c2UqIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIGRvbWEKIAogICAgIC8vIFJlc291cmNlcyBhcmUg
b25seSBib3VuZCB3aGlsZSB2aXNpYmxlLgogICAgIGlmIChtX2Zyb250ZW5kKQotICAgICAgICBy
ZXNvdXJjZS0+YmluZChtX2Zyb250ZW5kLmdldCgpKTsKKyAgICAgICAgcmVzb3VyY2UtPmJpbmQo
bV9mcm9udGVuZCk7CiB9CiAjZW5kaWYKIApAQCAtMTI0MCw3ICsxMjQzLDcgQEAgdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaWRVc2VET01TdG9yYWdlKFN0b3JhZ2VBcmVhKiBzdG9yYWdlQXJl
YSwgYm9vbCBpc0xvY2EKIAogICAgIC8vIFJlc291cmNlcyBhcmUgb25seSBib3VuZCB3aGlsZSB2
aXNpYmxlLgogICAgIGlmIChtX2Zyb250ZW5kKQotICAgICAgICByZXNvdXJjZS0+YmluZChtX2Zy
b250ZW5kLmdldCgpKTsKKyAgICAgICAgcmVzb3VyY2UtPmJpbmQobV9mcm9udGVuZCk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2VsZWN0RE9NU3RvcmFnZShTdG9yYWdlKiBzdG9y
YWdlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGY0N2MwNDQu
LjNhZmU3MmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTEz
NCw3ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93KCk7CiAgICAgdm9pZCBzaG93UGFu
ZWwoU3BlY2lhbFBhbmVscyk7CiAgICAgdm9pZCBjbG9zZSgpOwotICAgIHZvaWQgZGlzY29ubmVj
dEZyb250ZW5kKCk7CisgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRl
bmQqKTsKIAogICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNz
YWdlVHlwZSwgTWVzc2FnZUxldmVsLCBTY3JpcHRDYWxsU3RhY2sqKTsKICAgICB2b2lkIGFkZE1l
c3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZUlEKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnNwZWN0
ZWRXaW5kb3dTY3JpcHRPYmplY3RDbGVhcmVkKEZyYW1lKik7CiAKICAgICBib29sIHdpbmRvd1Zp
c2libGUoKTsKLSAgICB2b2lkIHNldEZyb250ZW5kKFBhc3NPd25QdHI8SW5zcGVjdG9yRnJvbnRl
bmQ+KTsKKyAgICB2b2lkIHNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKik7CiAKICAgICB2
b2lkIGRpZENvbW1pdExvYWQoRG9jdW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIGZyYW1lRGV0YWNo
ZWRGcm9tUGFyZW50KEZyYW1lKik7CkBAIC0zMTcsNyArMzE3LDcgQEAgcHJpdmF0ZToKICAgICBJ
bnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZENs
aWVudD4gbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudDsKICAgICBib29sIG1fb3BlbmluZ0Zyb250
ZW5kOwotICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZD4gbV9mcm9udGVuZDsKKyAgICBJbnNw
ZWN0b3JGcm9udGVuZCogbV9mcm9udGVuZDsKICAgICBSZWZQdHI8SW5zcGVjdG9yRE9NQWdlbnQ+
IG1fZG9tQWdlbnQ7CiAgICAgT3duUHRyPEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+IG1fdGltZWxp
bmVBZ2VudDsKICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlVG9Gb2N1czsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggMThjNTJk
YS4uMTY0N2NmYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5jcHAKQEAgLTg5LDcgKzg5LDE2IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbDo6ZnJvbnRlbmRMb2FkZWQoKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2luc3BlY3RvckNvbnRyb2xsZXIt
PnNldEZyb250ZW5kKG5ldyBJbnNwZWN0b3JGcm9udGVuZCh3ZWJJbnNwZWN0b3JPYmopKTsKKyAg
ICBtX2Zyb250ZW5kID0gbmV3IEluc3BlY3RvckZyb250ZW5kKHdlYkluc3BlY3Rvck9iaik7Cisg
ICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5zZXRGcm9udGVuZChtX2Zyb250ZW5kLmdldCgpKTsK
K30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpkaXNjb25uZWN0RnJvbnRl
bmQoKQoreworICAgIGlmIChtX2Zyb250ZW5kKSB7CisgICAgICAgIG1faW5zcGVjdG9yQ29udHJv
bGxlci0+ZGlzY29ubmVjdEZyb250ZW5kKG1fZnJvbnRlbmQuZ2V0KCkpOworICAgICAgICBtX2Zy
b250ZW5kLmNsZWFyKCk7CisgICAgfQogfQogCiB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6OnJlcXVlc3RBdHRhY2hXaW5kb3coKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCmluZGV4IGNlNjYxZmUuLmZkNTEwYWMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKQEAg
LTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zcGVjdG9yQ29u
dHJvbGxlcjsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRl
bmRIb3N0OwogY2xhc3MgUGFnZTsKIApAQCAtNTgsNiArNTksNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGF0dGFjaFdpbmRvdygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoV2lu
ZG93KCkgPSAwOwogICAgIGJvb2wgY2FuQXR0YWNoV2luZG93KCk7CisgICAgdm9pZCBkaXNjb25u
ZWN0RnJvbnRlbmQoKTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBdHRhY2hl
ZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkgPSAwOwpAQCAtNjksNiArNzEsNyBAQCBwcml2YXRlOgog
CiAgICAgZnJpZW5kIGNsYXNzIEZyb250ZW5kTWVudVByb3ZpZGVyOwogICAgIEluc3BlY3RvckNv
bnRyb2xsZXIqIG1faW5zcGVjdG9yQ29udHJvbGxlcjsKKyAgICBPd25QdHI8SW5zcGVjdG9yRnJv
bnRlbmQ+IG1fZnJvbnRlbmQ7CiAgICAgUGFnZSogbV9mcm9udGVuZFBhZ2U7CiAgICAgU2NyaXB0
U3RhdGUqIG1fZnJvbnRlbmRTY3JpcHRTdGF0ZTsKICAgICAvLyBUT0RPKHl1cnlzKTogdGhpcyBy
ZWYgc2hvdWxkbid0IGJlIG5lZWRlZC4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9n
IGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMzNhZTVmYS4uZWMzNGFkNCAxMDA2NDQKLS0t
IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMC0wNC0xMCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogSW5zcGVjdG9yIHRlc3RzIHNvbWV0aW1lcyBmYWlsIG9uIFdpbiBSZWxl
YXNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYy
MTcKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkZXN0cm95SW5zcGVjdG9y
V2luZG93KToKKwogMjAxMC0wNC0wNyAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQg
YS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAgYi9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKaW5kZXggMzE3YTA1
OC4uYmE1OTAwOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50R3RrLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OmRlc3Ryb3lJbnNwZWN0b3JXaW5kb3coKQogICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rp
c2Nvbm5lY3RfYnlfZnVuYyhtX2luc3BlY3RvcldlYlZpZXcsIChncG9pbnRlcilub3RpZnlXZWJW
aWV3RGVzdHJveWVkLCAoZ3BvaW50ZXIpdGhpcyk7CiAgICAgbV9pbnNwZWN0b3JXZWJWaWV3ID0g
MDsKIAotICAgIGNvcmUobV9pbnNwZWN0ZWRXZWJWaWV3KS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LT5kaXNjb25uZWN0RnJvbnRlbmQoKTsKKyAgICBkaXNjb25uZWN0RnJvbnRlbmQoKTsKIAogICAg
IGdib29sZWFuIGhhbmRsZWQgPSBGQUxTRTsKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2Vi
SW5zcGVjdG9yLCAiY2xvc2Utd2luZG93IiwgJmhhbmRsZWQpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0
L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBkYzhiZWFjLi44OGJh
ZmVjIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA0LTEwICBJbHlhIFRpa2hvbm92c2t5ICA8
bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnNwZWN0b3IgdGVzdHMgc29tZXRpbWVzIGZh
aWwgb24gV2luIFJlbGVhc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNjIxNworCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Lm1tOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIGRlc3Ry
b3lJbnNwZWN0b3JWaWV3XSk6CisKIDIwMTAtMDQtMDggIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCAwMGM1MWE5Li5j
NTlkM2MyIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5tbQorKysgYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5tbQpAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OnVwZGF0ZVdpbmRvd1RpdGxlKCkgY29uc3QKICAgICBpZiAoX2F0dGFjaGVkVG9JbnNwZWN0
ZWRXZWJWaWV3KQogICAgICAgICBbc2VsZiBjbG9zZV07CiAgICAgX3Zpc2libGUgPSBOTzsKLSAg
ICBbX2luc3BlY3RlZFdlYlZpZXcgcGFnZV0tPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzY29u
bmVjdEZyb250ZW5kKCk7CisgICAgX2Zyb250ZW5kQ2xpZW50LT5kaXNjb25uZWN0RnJvbnRlbmQo
KTsKICAgICBbX3dlYlZpZXcgY2xvc2VdOwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hh
bmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA4YTJlZjBkLi40MDdhMGYxIDEwMDY0
NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxMC0wNC0xMCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yIHRlc3RzIHNvbWV0aW1lcyBmYWlsIG9uIFdpbiBS
ZWxlYXNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzYyMTcKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmNsb3NlV2luZG93
KToKKwogMjAxMC0wNC0wOSAgVGFzdWt1IFN1enVraSAgPHRhc3VrdS5zdXp1a2lAbm9raWEuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAKaW5kZXggN2ZhYmJkYS4uNDViZDM4
MSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0
LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3Bw
CkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjpjbG9z
ZVdpbmRvdygpCiAgICAgLy8gQ2xlYXIgcmVmZXJlbmNlIGZyb20gUVdlYkluc3BlY3RvciB0byB0
aGUgZnJvbnRlbmQgdmlldy4KICAgICBtX2luc3BlY3RlZFdlYlBhZ2UtPmQtPmdldE9yQ3JlYXRl
SW5zcGVjdG9yKCktPmQtPnNldEZyb250ZW5kKDApOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0g
ICAgbV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpc2Nvbm5l
Y3RGcm9udGVuZCgpOworICAgIGRpc2Nvbm5lY3RGcm9udGVuZCgpOwogI2VuZGlmCiAgICAgLy8g
Q2xlYXIgcG9pbnRlciBiZWZvcmUgZGVsZXRpbmcgV2ViVmlldyB0byBhdm9pZCByZWN1cnNpdmUg
Y2FsbHMgdG8gaXRzIGRlc3RydWN0b3IuCiAgICAgZGVsZXRlIG1faW5zcGVjdG9yVmlldy5yZWxl
YXNlKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hh
bmdlTG9nCmluZGV4IGFmZTlkZWEuLmNmZjQwN2YgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAt
MDQtMTAgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IElu
c3BlY3RvciB0ZXN0cyBzb21ldGltZXMgZmFpbCBvbiBXaW4gUmVsZWFzZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MjE3CisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ryb3lJbnNwZWN0b3JWaWV3KToKKwogMjAxMC0wNC0wOSAg
QWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2luZG93cyBEZWJ1Zy9S
ZWxlYXNlIGJ1aWxkIGZpeCBhZnRlciByNTcyNDQKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCAxNmFkMTcyLi4xMGRhYWQ3IDEwMDY0
NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAK
KysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBA
IC0zOTYsNyArMzk2LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGVzdHJv
eUluc3BlY3RvclZpZXcoKQogICAgICAgICByZXR1cm47CiAgICAgbV9kZXN0cm95aW5nSW5zcGVj
dG9yVmlldyA9IHRydWU7CiAKLSAgICBtX2luc3BlY3RlZFdlYlZpZXctPnBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5kaXNjb25uZWN0RnJvbnRlbmQoKTsKKyAgICBkaXNjb25uZWN0RnJv
bnRlbmQoKTsKIAogICAgIGNsb3NlV2luZG93V2l0aG91dE5vdGlmaWNhdGlvbnMoKTsKICAgICBt
X2luc3BlY3RvckNsaWVudC0+ZnJvbnRlbmRDbG9zaW5nKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53083</attachid>
            <date>2010-04-11 02:54:51 -0700</date>
            <delta_ts>2010-04-14 12:34:49 -0700</delta_ts>
            <desc>[patch] second iteration.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25124</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODE5ZmRkYy4uMDc2ZTI2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMC0wNC0xMCAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yIHRlc3RzIHNvbWV0
aW1lcyBmYWlsIG9uIFdpbiBSZWxlYXNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzYyMTcKKworICAgICAgICAqIFdlYkNvcmUuSW5zcGVjdG9yLmV4
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckJhY2tlbmQ6Omluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OnNldEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpwb3B1bGF0ZVNjcmlwdE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6cHJ1bmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDb250cm9sbGVyOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Om1haW5SZXNvdXJjZUZp
cmVkRE9NQ29udGVudEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6Om1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0
cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c2NyaXB0
SW1wb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c3RhcnRU
aW1lbGluZVByb2ZpbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmRpZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjpkaWRVc2VET01TdG9yYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmZy
b250ZW5kTG9hZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWwuaDoKKwogMjAxMC0wNC0wOSAgWGFuIExvcGV6ICA8eGxvcGV6
QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLkluc3BlY3Rvci5leHAgYi9XZWJDb3JlL1dlYkNvcmUu
SW5zcGVjdG9yLmV4cAppbmRleCA1Y2RhODkzLi43ZjgzMmJkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L1dlYkNvcmUuSW5zcGVjdG9yLmV4cAorKysgYi9XZWJDb3JlL1dlYkNvcmUuSW5zcGVjdG9yLmV4
cApAQCAtMyw3ICszLDYgQEAgX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTRlbmFi
bGVEZWJ1Z2dlckV2CiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxNGVuYWJsZVBy
b2ZpbGVyRWJiCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxNWRpc2FibGVEZWJ1
Z2dlckViCiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxNWRpc2FibGVQcm9maWxl
ckViCi1fX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIxOGRpc2Nvbm5lY3RGcm9udGVu
ZEV2CiBfX1pON1dlYkNvcmUxOUluc3BlY3RvckNvbnRyb2xsZXIyNnNldEluc3BlY3RvckZyb250
ZW5kQ2xpZW50RU4zV1RGMTBQYXNzT3duUHRySU5TXzIzSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRF
RUUKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI2c3RvcFVzZXJJbml0aWF0ZWRQ
cm9maWxpbmdFdgogX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjdzdGFydFVzZXJJ
bml0aWF0ZWRQcm9maWxpbmdFUE5TXzVUaW1lcklTMF9FRQpAQCAtMjYsNSArMjUsNiBAQCBfX1pO
N1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwxMm1vdmVXaW5kb3dCeUVmZgog
X19aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsMTVjYW5BdHRhY2hXaW5k
b3dFdgogX19aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsMTdzZXRBdHRh
Y2hlZFdpbmRvd0ViCiBfX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwy
NmNoYW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0RWoKK19fWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbDE4ZGlzY29ubmVjdEZyb250ZW5kRXYKIF9fWk43V2ViQ29yZTI4SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDE5cmVxdWVzdERldGFjaFdpbmRvd0V2CiBfX1pON1dl
YkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwxOXJlcXVlc3RBdHRhY2hXaW5kb3dF
dgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggYzU4MDczZC4u
ZDJiOGY4MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0
LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC0x
OTIsNyArMTkyLDcgQEAgSW5zcGVjdG9yRnJvbnRlbmQqIEluamVjdGVkU2NyaXB0SG9zdDo6aW5z
cGVjdG9yRnJvbnRlbmQoKQogewogICAgIGlmICghbV9pbnNwZWN0b3JDb250cm9sbGVyKQogICAg
ICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5tX2Zyb250
ZW5kLmdldCgpOworICAgIHJldHVybiBtX2luc3BlY3RvckNvbnRyb2xsZXItPm1fZnJvbnRlbmQ7
CiB9CiAKIHBhaXI8bG9uZywgU2NyaXB0T2JqZWN0PiBJbmplY3RlZFNjcmlwdEhvc3Q6OmluamVj
dFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcAppbmRleCBhZWQ4ZjJiLi4xOWJhNzE4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcAorKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcApAQCAtNDg2LDcgKzQ4Niw3
IEBAIEluc3BlY3RvckZyb250ZW5kKiBJbnNwZWN0b3JCYWNrZW5kOjppbnNwZWN0b3JGcm9udGVu
ZCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckNvbnRyb2xsZXIpCiAgICAgICAgIHJldHVybiAw
OwotICAgIHJldHVybiBtX2luc3BlY3RvckNvbnRyb2xsZXItPm1fZnJvbnRlbmQuZ2V0KCk7Cisg
ICAgcmV0dXJuIG1faW5zcGVjdG9yQ29udHJvbGxlci0+bV9mcm9udGVuZDsKIH0KIAogTm9kZSog
SW5zcGVjdG9yQmFja2VuZDo6bm9kZUZvcklkKGxvbmcgbm9kZUlkKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCAzZjA0OWY1Li41YWQyNjExIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTQ0LDYgKzE0NCw3IEBA
IEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5z
cGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2luc3BlY3RlZFBhZ2UocGFnZSkKICAgICAs
IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fb3BlbmluZ0Zyb250ZW5kKGZhbHNlKQorICAgICwg
bV9mcm9udGVuZCgwKQogICAgICwgbV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCgwKQogICAg
ICwgbV9zaG93QWZ0ZXJWaXNpYmxlKEN1cnJlbnRQYW5lbCkKICAgICAsIG1fZ3JvdXBMZXZlbCgw
KQpAQCAtMzA0LDEyICszMDUsMTIgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRDb25z
b2xlTWVzc2FnZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIENvbnNvbGVNZXMKICAgICAgICAg
bV9wcmV2aW91c01lc3NhZ2UtPmluY3JlbWVudENvdW50KCk7CiAgICAgICAgIGRlbGV0ZSBjb25z
b2xlTWVzc2FnZTsKICAgICAgICAgaWYgKG1fZnJvbnRlbmQpCi0gICAgICAgICAgICBtX3ByZXZp
b3VzTWVzc2FnZS0+dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUobV9mcm9udGVuZC5nZXQoKSk7
CisgICAgICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZS0+dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNv
bGUobV9mcm9udGVuZCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2Ug
PSBjb25zb2xlTWVzc2FnZTsKICAgICAgICAgbV9jb25zb2xlTWVzc2FnZXMuYXBwZW5kKGNvbnNv
bGVNZXNzYWdlKTsKICAgICAgICAgaWYgKG1fZnJvbnRlbmQpCi0gICAgICAgICAgICBtX3ByZXZp
b3VzTWVzc2FnZS0+YWRkVG9Gcm9udGVuZChtX2Zyb250ZW5kLmdldCgpLCBtX2luamVjdGVkU2Ny
aXB0SG9zdC5nZXQoKSk7CisgICAgICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZS0+YWRkVG9Gcm9u
dGVuZChtX2Zyb250ZW5kLCBtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKSk7CiAgICAgfQogCiAg
ICAgaWYgKCFtX2Zyb250ZW5kICYmIG1fY29uc29sZU1lc3NhZ2VzLnNpemUoKSA+PSBtYXhpbXVt
Q29uc29sZU1lc3NhZ2VzKSB7CkBAIC00MjEsMTUgKzQyMiwxNSBAQCB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OnNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKQogICAgIH0KIH0KIAot
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRGcm9udGVuZChQYXNzT3duUHRyPEluc3BlY3Rv
ckZyb250ZW5kPiBmcm9udGVuZCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0RnJvbnRl
bmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogewogICAgIEFTU0VSVChmcm9udGVuZCk7
CiAgICAgbV9vcGVuaW5nRnJvbnRlbmQgPSBmYWxzZTsKICAgICBtX2Zyb250ZW5kID0gZnJvbnRl
bmQ7CiAgICAgcmVsZWFzZURPTUFnZW50KCk7Ci0gICAgbV9kb21BZ2VudCA9IEluc3BlY3RvckRP
TUFnZW50OjpjcmVhdGUobV9mcm9udGVuZC5nZXQoKSk7CisgICAgbV9kb21BZ2VudCA9IEluc3Bl
Y3RvckRPTUFnZW50OjpjcmVhdGUobV9mcm9udGVuZCk7CiAgICAgaWYgKG1fdGltZWxpbmVBZ2Vu
dCkKLSAgICAgICAgbV90aW1lbGluZUFnZW50LT5yZXNldEZyb250ZW5kUHJveHlPYmplY3QobV9m
cm9udGVuZC5nZXQoKSk7CisgICAgICAgIG1fdGltZWxpbmVBZ2VudC0+cmVzZXRGcm9udGVuZFBy
b3h5T2JqZWN0KG1fZnJvbnRlbmQpOwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAm
JiBVU0UoSlNDKQogICAgIFN0cmluZyBkZWJ1Z2dlckVuYWJsZWQgPSBzZXR0aW5nKGRlYnVnZ2Vy
RW5hYmxlZFNldHRpbmdOYW1lKTsKICAgICBpZiAoZGVidWdnZXJFbmFibGVkID09ICJ0cnVlIikK
QEAgLTQ5NywxMyArNDk4LDE1IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xvc2UoKQog
ICAgIGlmICghbV9mcm9udGVuZCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fZnJvbnRlbmQtPmNs
b3NlKCk7CisgICAgZGlzY29ubmVjdEZyb250ZW5kKG1fZnJvbnRlbmQpOwogfQogCi12b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCgpCit2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQp
CiB7Ci0gICAgaWYgKCFtX2Zyb250ZW5kKQorICAgIGlmIChtX2Zyb250ZW5kICE9IGZyb250ZW5k
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9mcm9udGVuZC5jbGVhcigpOworICAgIC8vIFRoZSBm
cm9udGVuZCBpcyBvd25lZCBieSBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLgorICAgIG1f
ZnJvbnRlbmQgPSAwOwogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgLy8g
SWYgdGhlIHdpbmRvdyBpcyBiZWluZyBjbG9zZWQgd2l0aCB0aGUgZGVidWdnZXIgZW5hYmxlZCwK
QEAgLTU2Miw3ICs1NjUsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnBvcHVsYXRlU2Ny
aXB0T2JqZWN0cygpCiAKICAgICBSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIHJlc291cmNlc0VuZCA9
IG1fcmVzb3VyY2VzLmVuZCgpOwogICAgIGZvciAoUmVzb3VyY2VzTWFwOjppdGVyYXRvciBpdCA9
IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IHJlc291cmNlc0VuZDsgKytpdCkKLSAgICAgICAg
aXQtPnNlY29uZC0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOworICAgICAg
ICBpdC0+c2Vjb25kLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZCk7CiAKICAgICBtX2Rv
bUFnZW50LT5zZXREb2N1bWVudChtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVu
dCgpKTsKIApAQCAtNTcwLDcgKzU3Myw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cG9w
dWxhdGVTY3JpcHRPYmplY3RzKCkKICAgICAgICAgbV9mcm9udGVuZC0+dXBkYXRlQ29uc29sZU1l
c3NhZ2VFeHBpcmVkQ291bnQobV9leHBpcmVkQ29uc29sZU1lc3NhZ2VDb3VudCk7CiAgICAgdW5z
aWduZWQgbWVzc2FnZUNvdW50ID0gbV9jb25zb2xlTWVzc2FnZXMuc2l6ZSgpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtZXNzYWdlQ291bnQ7ICsraSkKLSAgICAgICAgbV9jb25zb2xl
TWVzc2FnZXNbaV0tPmFkZFRvRnJvbnRlbmQobV9mcm9udGVuZC5nZXQoKSwgbV9pbmplY3RlZFNj
cmlwdEhvc3QuZ2V0KCkpOworICAgICAgICBtX2NvbnNvbGVNZXNzYWdlc1tpXS0+YWRkVG9Gcm9u
dGVuZChtX2Zyb250ZW5kLCBtX2luamVjdGVkU2NyaXB0SG9zdC5nZXQoKSk7CiAKICNpZiBFTkFC
TEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICBpZiAobV9kZWJ1Z2dlckVuYWJsZWQpCkBAIC01
NzksMTIgKzU4MiwxMiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnBvcHVsYXRlU2NyaXB0
T2JqZWN0cygpCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgIERhdGFiYXNlUmVzb3VyY2VzTWFw
OjppdGVyYXRvciBkYXRhYmFzZXNFbmQgPSBtX2RhdGFiYXNlUmVzb3VyY2VzLmVuZCgpOwogICAg
IGZvciAoRGF0YWJhc2VSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kYXRhYmFzZVJlc291
cmNlcy5iZWdpbigpOyBpdCAhPSBkYXRhYmFzZXNFbmQ7ICsraXQpCi0gICAgICAgIGl0LT5zZWNv
bmQtPmJpbmQobV9mcm9udGVuZC5nZXQoKSk7CisgICAgICAgIGl0LT5zZWNvbmQtPmJpbmQobV9m
cm9udGVuZCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgRE9NU3RvcmFn
ZVJlc291cmNlc01hcDo6aXRlcmF0b3IgZG9tU3RvcmFnZUVuZCA9IG1fZG9tU3RvcmFnZVJlc291
cmNlcy5lbmQoKTsKICAgICBmb3IgKERPTVN0b3JhZ2VSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9kb21TdG9yYWdlUmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGRvbVN0b3JhZ2VFbmQ7ICsr
aXQpCi0gICAgICAgIGl0LT5zZWNvbmQtPmJpbmQobV9mcm9udGVuZC5nZXQoKSk7CisgICAgICAg
IGl0LT5zZWNvbmQtPmJpbmQobV9mcm9udGVuZCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoV09SS0VS
UykKICAgICBXb3JrZXJzTWFwOjppdGVyYXRvciB3b3JrZXJzRW5kID0gbV93b3JrZXJzLmVuZCgp
OwpAQCAtNjM0LDcgKzYzNyw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cHJ1bmVSZXNv
dXJjZXMoUmVzb3VyY2VzTWFwKiByZXNvdXJjZU1hcCwgRG9jdW1lbnRMb2FkCiAgICAgICAgIGlm
ICghbG9hZGVyVG9LZWVwIHx8ICFyZXNvdXJjZS0+aXNTYW1lTG9hZGVyKGxvYWRlclRvS2VlcCkp
IHsKICAgICAgICAgICAgIHJlbW92ZVJlc291cmNlKHJlc291cmNlKTsKICAgICAgICAgICAgIGlm
IChtX2Zyb250ZW5kKQotICAgICAgICAgICAgICAgIHJlc291cmNlLT5yZWxlYXNlU2NyaXB0T2Jq
ZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOworICAgICAgICAgICAgICAgIHJlc291cmNlLT5yZWxlYXNl
U2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNjg1LDcg
KzY4OCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZChEb2N1bWVu
dExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGFkZCB0aGUgbWFp
biByZXNvdXJjZSB1bnRpbCBpdHMgbG9hZCBpcyBjb21taXR0ZWQuIFRoaXMgaXMKICAgICAgICAg
ICAgICAgICAvLyBuZWVkZWQgdG8ga2VlcCB0aGUgbG9hZCBmb3IgYSB1c2VyLWVudGVyZWQgVVJM
IGZyb20gc2hvd2luZyB1cCBpbiB0aGUKICAgICAgICAgICAgICAgICAvLyBsaXN0IG9mIHJlc291
cmNlcyBmb3IgdGhlIHBhZ2UgdGhleSBhcmUgbmF2aWdhdGluZyBhd2F5IGZyb20uCi0gICAgICAg
ICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICBtX21haW5SZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0
KG1fZnJvbnRlbmQpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBQ
YWdlcyBsb2FkZWQgZnJvbSB0aGUgcGFnZSBjYWNoZSBhcmUgY29tbWl0dGVkIGJlZm9yZQogICAg
ICAgICAgICAgICAgIC8vIG1fbWFpblJlc291cmNlIGlzIHRoZSByaWdodCByZXNvdXJjZSBmb3Ig
dGhpcyBsb2FkLCBzbyB3ZQpAQCAtNzk2LDcgKzc5OSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsCiAgICAgYWRkUmVzb3VyY2UocmVzb3VyY2UuZ2V0KCkpOwogCiAgICAgaWYgKG1fZnJvbnRl
bmQpCi0gICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQo
KSk7CisgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZCk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtODIwLDcgKzgyMyw3IEBAIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwKICAgICBhZGRSZXNvdXJjZShyZXNvdXJjZS5nZXQoKSk7CiAKICAgICBpZiAo
bV9mcm9udGVuZCAmJiBsb2FkZXItPmZyYW1lTG9hZGVyKCktPmlzTG9hZGluZ0Zyb21DYWNoZWRQ
YWdlKCkgJiYgcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpCi0gICAgICAgIHJlc291cmNlLT51
cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSk7CisgICAgICAgIHJlc291cmNlLT51
cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6bWFpblJlc291cmNlRmlyZWRET01Db250ZW50RXZlbnQoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgY29uc3QgS1VSTCYgdXJsKQpAQCAtODMzLDcgKzgzNiw3IEBAIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6bWFpblJlc291cmNlRmlyZWRET01Db250ZW50RXZlbnQoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlCiAgICAgICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCiAgICAgICAgICAgICBtX3Rp
bWVsaW5lQWdlbnQtPmRpZE1hcmtET01Db250ZW50RXZlbnQoKTsKICAgICAgICAgaWYgKG1fZnJv
bnRlbmQpCi0gICAgICAgICAgICBtX21haW5SZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1f
ZnJvbnRlbmQuZ2V0KCkpOworICAgICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnVwZGF0ZVNjcmlw
dE9iamVjdChtX2Zyb250ZW5kKTsKICAgICB9CiB9CiAKQEAgLTg0Nyw3ICs4NTAsNyBAQCB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6Om1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50KERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIGNvbgogICAgICAgICBpZiAobV90aW1lbGluZUFnZW50KQogICAgICAg
ICAgICAgbV90aW1lbGluZUFnZW50LT5kaWRNYXJrTG9hZEV2ZW50KCk7CiAgICAgICAgIGlmICht
X2Zyb250ZW5kKQotICAgICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVj
dChtX2Zyb250ZW5kLmdldCgpKTsKKyAgICAgICAgICAgIG1fbWFpblJlc291cmNlLT51cGRhdGVT
Y3JpcHRPYmplY3QobV9mcm9udGVuZCk7CiAgICAgfQogfQogCkBAIC04ODcsNyArODkwLDcgQEAg
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXIKICAgICByZXNvdXJjZS0+dXBkYXRlUmVxdWVzdChyZXF1
ZXN0KTsKIAogICAgIGlmIChyZXNvdXJjZSAhPSBtX21haW5SZXNvdXJjZSAmJiBtX2Zyb250ZW5k
KQotICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkp
OworICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQpOwogfQog
CiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtOTAw
LDcgKzkwMyw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzCiAgICAgcmVzb3VyY2UtPm1hcmtS
ZXNwb25zZVJlY2VpdmVkVGltZSgpOwogCiAgICAgaWYgKHJlc291cmNlICE9IG1fbWFpblJlc291
cmNlICYmIG1fZnJvbnRlbmQpCi0gICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3Qo
bV9mcm9udGVuZC5nZXQoKSk7CisgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3Qo
bV9mcm9udGVuZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZUNv
bnRlbnRMZW5ndGgodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoUmVjZWl2ZWQp
CkBAIC05MTIsNyArOTE1LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZl
Q29udGVudExlbmd0aCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludAogICAgIHJlc291cmNl
LT5hZGRMZW5ndGgobGVuZ3RoUmVjZWl2ZWQpOwogCiAgICAgaWYgKHJlc291cmNlICE9IG1fbWFp
blJlc291cmNlICYmIG1fZnJvbnRlbmQpCi0gICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRP
YmplY3QobV9mcm9udGVuZC5nZXQoKSk7CisgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRP
YmplY3QobV9mcm9udGVuZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmlu
aXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCkBAIC05MjgsNyArOTMxLDcgQEAg
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllcikKIAogICAgIC8vIE5vIG5lZWQgdG8gbXV0ZSB0aGlzIGV2ZW50IGZvciBtYWlu
IHJlc291cmNlIHNpbmNlIGl0IGhhcHBlbnMgYWZ0ZXIgZGlkIGNvbW1pdCBsb2FkLgogICAgIGlm
IChtX2Zyb250ZW5kKQotICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJv
bnRlbmQuZ2V0KCkpOworICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJv
bnRlbmQpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEZhaWxMb2FkaW5nKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgLyplcnJvciovKQpA
QCAtOTQ1LDcgKzk0OCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmFpbExvYWRp
bmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjCiAKICAgICAvLyBObyBu
ZWVkIHRvIG11dGUgdGhpcyBldmVudCBmb3IgbWFpbiByZXNvdXJjZSBzaW5jZSBpdCBoYXBwZW5z
IGFmdGVyIGRpZCBjb21taXQgbG9hZC4KICAgICBpZiAobV9mcm9udGVuZCkKLSAgICAgICAgcmVz
b3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kLmdldCgpKTsKKyAgICAgICAgcmVz
b3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBTY3JpcHRTdHJpbmcmIHNvdXJjZVN0cmluZykKQEAgLTk2
MCw3ICs5NjMsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc291cmNlUmV0cmlldmVk
QnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aQogICAgIHJlc291cmNlLT5zZXRP
dmVycmlkZUNvbnRlbnQoc291cmNlU3RyaW5nLCBJbnNwZWN0b3JSZXNvdXJjZTo6WEhSKTsKIAog
ICAgIGlmIChtX2Zyb250ZW5kKQotICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0
KG1fZnJvbnRlbmQuZ2V0KCkpOworICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0
KG1fZnJvbnRlbmQpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNjcmlwdEltcG9y
dGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcp
CkBAIC05NzUsNyArOTc4LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzY3JpcHRJbXBv
cnRlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYKICAgICByZXNvdXJj
ZS0+c2V0T3ZlcnJpZGVDb250ZW50KFNjcmlwdFN0cmluZyhzb3VyY2VTdHJpbmcpLCBJbnNwZWN0
b3JSZXNvdXJjZTo6U2NyaXB0KTsKIAogICAgIGlmIChtX2Zyb250ZW5kKQotICAgICAgICByZXNv
dXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOworICAgICAgICByZXNv
dXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmVuYWJsZVJlc291cmNlVHJhY2tpbmcoYm9vbCBhbHdheXMsIGJvb2wgcmVs
b2FkKQpAQCAtMTAzMSw3ICsxMDM0LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFy
dFRpbWVsaW5lUHJvZmlsZXIoKQogICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fdGltZWxpbmVBZ2VudCA9IG5ldyBJbnNwZWN0b3JUaW1lbGluZUFnZW50
KG1fZnJvbnRlbmQuZ2V0KCkpOworICAgIG1fdGltZWxpbmVBZ2VudCA9IG5ldyBJbnNwZWN0b3JU
aW1lbGluZUFnZW50KG1fZnJvbnRlbmQpOwogICAgIGlmIChtX2Zyb250ZW5kKQogICAgICAgICBt
X2Zyb250ZW5kLT50aW1lbGluZVByb2ZpbGVyV2FzU3RhcnRlZCgpOwogfQpAQCAtMTE0Nyw3ICsx
MTUwLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRPcGVuRGF0YWJhc2UoRGF0YWJh
c2UqIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIGRvbWEKIAogICAgIC8vIFJlc291cmNlcyBhcmUg
b25seSBib3VuZCB3aGlsZSB2aXNpYmxlLgogICAgIGlmIChtX2Zyb250ZW5kKQotICAgICAgICBy
ZXNvdXJjZS0+YmluZChtX2Zyb250ZW5kLmdldCgpKTsKKyAgICAgICAgcmVzb3VyY2UtPmJpbmQo
bV9mcm9udGVuZCk7CiB9CiAjZW5kaWYKIApAQCAtMTI0MCw3ICsxMjQzLDcgQEAgdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaWRVc2VET01TdG9yYWdlKFN0b3JhZ2VBcmVhKiBzdG9yYWdlQXJl
YSwgYm9vbCBpc0xvY2EKIAogICAgIC8vIFJlc291cmNlcyBhcmUgb25seSBib3VuZCB3aGlsZSB2
aXNpYmxlLgogICAgIGlmIChtX2Zyb250ZW5kKQotICAgICAgICByZXNvdXJjZS0+YmluZChtX2Zy
b250ZW5kLmdldCgpKTsKKyAgICAgICAgcmVzb3VyY2UtPmJpbmQobV9mcm9udGVuZCk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2VsZWN0RE9NU3RvcmFnZShTdG9yYWdlKiBzdG9y
YWdlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGY0N2MwNDQu
LjNhZmU3MmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTEz
NCw3ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93KCk7CiAgICAgdm9pZCBzaG93UGFu
ZWwoU3BlY2lhbFBhbmVscyk7CiAgICAgdm9pZCBjbG9zZSgpOwotICAgIHZvaWQgZGlzY29ubmVj
dEZyb250ZW5kKCk7CisgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRl
bmQqKTsKIAogICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNz
YWdlVHlwZSwgTWVzc2FnZUxldmVsLCBTY3JpcHRDYWxsU3RhY2sqKTsKICAgICB2b2lkIGFkZE1l
c3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZUlEKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnNwZWN0
ZWRXaW5kb3dTY3JpcHRPYmplY3RDbGVhcmVkKEZyYW1lKik7CiAKICAgICBib29sIHdpbmRvd1Zp
c2libGUoKTsKLSAgICB2b2lkIHNldEZyb250ZW5kKFBhc3NPd25QdHI8SW5zcGVjdG9yRnJvbnRl
bmQ+KTsKKyAgICB2b2lkIHNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKik7CiAKICAgICB2
b2lkIGRpZENvbW1pdExvYWQoRG9jdW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIGZyYW1lRGV0YWNo
ZWRGcm9tUGFyZW50KEZyYW1lKik7CkBAIC0zMTcsNyArMzE3LDcgQEAgcHJpdmF0ZToKICAgICBJ
bnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZENs
aWVudD4gbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudDsKICAgICBib29sIG1fb3BlbmluZ0Zyb250
ZW5kOwotICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZD4gbV9mcm9udGVuZDsKKyAgICBJbnNw
ZWN0b3JGcm9udGVuZCogbV9mcm9udGVuZDsKICAgICBSZWZQdHI8SW5zcGVjdG9yRE9NQWdlbnQ+
IG1fZG9tQWdlbnQ7CiAgICAgT3duUHRyPEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+IG1fdGltZWxp
bmVBZ2VudDsKICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlVG9Gb2N1czsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggMThjNTJk
YS4uMTY0N2NmYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5jcHAKQEAgLTg5LDcgKzg5LDE2IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbDo6ZnJvbnRlbmRMb2FkZWQoKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2luc3BlY3RvckNvbnRyb2xsZXIt
PnNldEZyb250ZW5kKG5ldyBJbnNwZWN0b3JGcm9udGVuZCh3ZWJJbnNwZWN0b3JPYmopKTsKKyAg
ICBtX2Zyb250ZW5kID0gbmV3IEluc3BlY3RvckZyb250ZW5kKHdlYkluc3BlY3Rvck9iaik7Cisg
ICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5zZXRGcm9udGVuZChtX2Zyb250ZW5kLmdldCgpKTsK
K30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpkaXNjb25uZWN0RnJvbnRl
bmQoKQoreworICAgIGlmIChtX2Zyb250ZW5kKSB7CisgICAgICAgIG1faW5zcGVjdG9yQ29udHJv
bGxlci0+ZGlzY29ubmVjdEZyb250ZW5kKG1fZnJvbnRlbmQuZ2V0KCkpOworICAgICAgICBtX2Zy
b250ZW5kLmNsZWFyKCk7CisgICAgfQogfQogCiB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6OnJlcXVlc3RBdHRhY2hXaW5kb3coKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCmluZGV4IGNlNjYxZmUuLmZkNTEwYWMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKQEAg
LTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zcGVjdG9yQ29u
dHJvbGxlcjsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRl
bmRIb3N0OwogY2xhc3MgUGFnZTsKIApAQCAtNTgsNiArNTksNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGF0dGFjaFdpbmRvdygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoV2lu
ZG93KCkgPSAwOwogICAgIGJvb2wgY2FuQXR0YWNoV2luZG93KCk7CisgICAgdm9pZCBkaXNjb25u
ZWN0RnJvbnRlbmQoKTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBdHRhY2hl
ZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkgPSAwOwpAQCAtNjksNiArNzEsNyBAQCBwcml2YXRlOgog
CiAgICAgZnJpZW5kIGNsYXNzIEZyb250ZW5kTWVudVByb3ZpZGVyOwogICAgIEluc3BlY3RvckNv
bnRyb2xsZXIqIG1faW5zcGVjdG9yQ29udHJvbGxlcjsKKyAgICBPd25QdHI8SW5zcGVjdG9yRnJv
bnRlbmQ+IG1fZnJvbnRlbmQ7CiAgICAgUGFnZSogbV9mcm9udGVuZFBhZ2U7CiAgICAgU2NyaXB0
U3RhdGUqIG1fZnJvbnRlbmRTY3JpcHRTdGF0ZTsKICAgICAvLyBUT0RPKHl1cnlzKTogdGhpcyBy
ZWYgc2hvdWxkbid0IGJlIG5lZWRlZC4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29s
c0FnZW50SW1wbC5jcHAKaW5kZXggMDk2OWQzNy4uMjRhZDI2YiAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKQEAgLTE5Miw3ICsxOTIsOCBAQCB2b2lk
IFdlYkRldlRvb2xzQWdlbnRJbXBsOjpkZXRhY2goKQogewogICAgIC8vIFByZXZlbnQgY29udHJv
bGxlciBmcm9tIHNlbmRpbmcgbWVzc2FnZXMgdG8gdGhlIGZyb250ZW5kLgogICAgIEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGljID0gbV93ZWJWaWV3SW1wbC0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCk7Ci0gICAgaWMtPmRpc2Nvbm5lY3RGcm9udGVuZCgpOworICAgIGljLT5kaXNjb25uZWN0
RnJvbnRlbmQobV9mcm9udGVuZC5nZXQoKSk7CisgICAgbV9mcm9udGVuZC5jbGVhcigpOwogICAg
IGljLT5oaWRlSGlnaGxpZ2h0KCk7CiAgICAgaWMtPmNsb3NlKCk7CiAgICAgZGlzcG9zZVV0aWxp
dHlDb250ZXh0KCk7CkBAIC0zNzAsOCArMzcxLDggQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50SW1w
bDo6c2V0SW5zcGVjdG9yRnJvbnRlbmRQcm94eVRvSW5zcGVjdG9yQ29udHJvbGxlcigpCiAgICAg
U2NyaXB0U3RhdGUqIHN0YXRlID0gU2NyaXB0U3RhdGU6OmZvckNvbnRleHQoCiAgICAgICAgIHY4
OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhtX3V0aWxpdHlDb250ZXh0KSk7CiAgICAgSW5zcGVj
dG9yQ29udHJvbGxlciogaWMgPSBpbnNwZWN0b3JDb250cm9sbGVyKCk7Ci0gICAgaWMtPnNldEZy
b250ZW5kKG5ldyBJbnNwZWN0b3JGcm9udGVuZCgKLSAgICAgICAgU2NyaXB0T2JqZWN0KHN0YXRl
LCBtX3V0aWxpdHlDb250ZXh0LT5HbG9iYWwoKSkpKTsKKyAgICBtX2Zyb250ZW5kID0gbmV3IElu
c3BlY3RvckZyb250ZW5kKFNjcmlwdE9iamVjdChzdGF0ZSwgbV91dGlsaXR5Q29udGV4dC0+R2xv
YmFsKCkpKTsKKyAgICBpYy0+c2V0RnJvbnRlbmQobV9mcm9udGVuZC5nZXQoKSk7CiB9CiAKIHZv
aWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OnNldEFwdUFnZW50RW5hYmxlZChib29sIGVuYWJsZWQp
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKaW5kZXggNDU1ZGNl
Zi4uOWVhMThlNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0Fn
ZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwu
aApAQCAtNDIsNiArNDIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7
CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBj
bGFzcyBOb2RlOwogY2xhc3MgU3RyaW5nOwogfQpAQCAtMTI4LDYgKzEyOSw3IEBAIHByaXZhdGU6
CiAgICAgT3duUHRyPFRvb2xzQWdlbnREZWxlZ2F0ZVN0dWI+IG1fdG9vbHNBZ2VudERlbGVnYXRl
U3R1YjsKICAgICBPd25QdHI8RGVidWdnZXJBZ2VudEltcGw+IG1fZGVidWdnZXJBZ2VudEltcGw7
CiAgICAgT3duUHRyPEFwdUFnZW50RGVsZWdhdGVTdHViPiBtX2FwdUFnZW50RGVsZWdhdGVTdHVi
OworICAgIE93blB0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZD4gbV9mcm9udGVuZDsKICAg
ICBib29sIG1fYXB1QWdlbnRFbmFibGVkOwogICAgIGJvb2wgbV9yZXNvdXJjZVRyYWNraW5nV2Fz
RW5hYmxlZDsKICAgICBib29sIG1fYXR0YWNoZWQ7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0No
YW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDMzYWU1ZmEuLmVjMzRhZDQgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDQtMTAgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEluc3BlY3RvciB0ZXN0cyBzb21ldGltZXMgZmFpbCBvbiBX
aW4gUmVsZWFzZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM2MjE3CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGVzdHJveUlu
c3BlY3RvcldpbmRvdyk6CisKIDIwMTAtMDQtMDcgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3Bw
IGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCmluZGV4
IDMxN2EwNTguLmJhNTkwMDkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEd0ay5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIEluc3BlY3RvckZy
b250ZW5kQ2xpZW50OjpkZXN0cm95SW5zcGVjdG9yV2luZG93KCkKICAgICBnX3NpZ25hbF9oYW5k
bGVyc19kaXNjb25uZWN0X2J5X2Z1bmMobV9pbnNwZWN0b3JXZWJWaWV3LCAoZ3BvaW50ZXIpbm90
aWZ5V2ViVmlld0Rlc3Ryb3llZCwgKGdwb2ludGVyKXRoaXMpOwogICAgIG1faW5zcGVjdG9yV2Vi
VmlldyA9IDA7CiAKLSAgICBjb3JlKG1faW5zcGVjdGVkV2ViVmlldyktPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+ZGlzY29ubmVjdEZyb250ZW5kKCk7CisgICAgZGlzY29ubmVjdEZyb250ZW5kKCk7
CiAKICAgICBnYm9vbGVhbiBoYW5kbGVkID0gRkFMU0U7CiAgICAgZ19zaWduYWxfZW1pdF9ieV9u
YW1lKHdlYkluc3BlY3RvciwgImNsb3NlLXdpbmRvdyIsICZoYW5kbGVkKTsKZGlmZiAtLWdpdCBh
L1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZGM4YmVh
Yy4uODhiYWZlYyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNC0xMCAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yIHRlc3RzIHNvbWV0
aW1lcyBmYWlsIG9uIFdpbiBSZWxlYXNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzYyMTcKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5tbToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxl
ciBkZXN0cm95SW5zcGVjdG9yVmlld10pOgorCiAyMDEwLTA0LTA4ICBNYXJrIFJvd2UgIDxtcm93
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSm9obiBTdWxsaXZhbi4KZGlmZiAt
LWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggMDBj
NTFhOS4uYzU5ZDNjMiAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW0KKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0KQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50Ojp1cGRhdGVXaW5kb3dUaXRsZSgpIGNvbnN0CiAgICAgaWYgKF9hdHRhY2hlZFRv
SW5zcGVjdGVkV2ViVmlldykKICAgICAgICAgW3NlbGYgY2xvc2VdOwogICAgIF92aXNpYmxlID0g
Tk87Ci0gICAgW19pbnNwZWN0ZWRXZWJWaWV3IHBhZ2VdLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
PmRpc2Nvbm5lY3RGcm9udGVuZCgpOworICAgIF9mcm9udGVuZENsaWVudC0+ZGlzY29ubmVjdEZy
b250ZW5kKCk7CiAgICAgW193ZWJWaWV3IGNsb3NlXTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0
L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggOGEyZWYwZC4uNDA3YTBm
MSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDQtMTAgIElseWEgVGlraG9ub3Zza3kgIDxsb2lz
bG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEluc3BlY3RvciB0ZXN0cyBzb21ldGltZXMgZmFpbCBv
biBXaW4gUmVsZWFzZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM2MjE3CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjpjbG9z
ZVdpbmRvdyk6CisKIDIwMTAtMDQtMDkgIFRhc3VrdSBTdXp1a2kgIDx0YXN1a3Uuc3V6dWtpQG5v
a2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdp
dCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAgYi9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwCmluZGV4IDdmYWJiZGEu
LjQ1YmQzODEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRRdC5jcHAKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dFF0LmNwcApAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRR
dDo6Y2xvc2VXaW5kb3coKQogICAgIC8vIENsZWFyIHJlZmVyZW5jZSBmcm9tIFFXZWJJbnNwZWN0
b3IgdG8gdGhlIGZyb250ZW5kIHZpZXcuCiAgICAgbV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5nZXRP
ckNyZWF0ZUluc3BlY3RvcigpLT5kLT5zZXRGcm9udGVuZCgwKTsKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotICAgIG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5k
aXNjb25uZWN0RnJvbnRlbmQoKTsKKyAgICBkaXNjb25uZWN0RnJvbnRlbmQoKTsKICNlbmRpZgog
ICAgIC8vIENsZWFyIHBvaW50ZXIgYmVmb3JlIGRlbGV0aW5nIFdlYlZpZXcgdG8gYXZvaWQgcmVj
dXJzaXZlIGNhbGxzIHRvIGl0cyBkZXN0cnVjdG9yLgogICAgIGRlbGV0ZSBtX2luc3BlY3RvclZp
ZXcucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQv
d2luL0NoYW5nZUxvZwppbmRleCBhZmU5ZGVhLi5jZmY0MDdmIDEwMDY0NAotLS0gYS9XZWJLaXQv
d2luL0NoYW5nZUxvZworKysgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEwLTA0LTEwICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBJbnNwZWN0b3IgdGVzdHMgc29tZXRpbWVzIGZhaWwgb24gV2luIFJlbGVhc2UuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjIxNworCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkZXN0cm95SW5zcGVjdG9yVmlldyk6CisKIDIwMTAt
MDQtMDkgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdpbmRvd3Mg
RGVidWcvUmVsZWFzZSBidWlsZCBmaXggYWZ0ZXIgcjU3MjQ0CmRpZmYgLS1naXQgYS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggMTZhZDE3Mi4uMTBkYWFk
NyAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcApAQCAtMzk2LDcgKzM5Niw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OmRlc3Ryb3lJbnNwZWN0b3JWaWV3KCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fZGVzdHJveWlu
Z0luc3BlY3RvclZpZXcgPSB0cnVlOwogCi0gICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCkt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlzY29ubmVjdEZyb250ZW5kKCk7CisgICAgZGlzY29u
bmVjdEZyb250ZW5kKCk7CiAKICAgICBjbG9zZVdpbmRvd1dpdGhvdXROb3RpZmljYXRpb25zKCk7
CiAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmZyb250ZW5kQ2xvc2luZygpOwo=
</data>
<flag name="review"
          id="36735"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53352</attachid>
            <date>2010-04-14 12:34:49 -0700</date>
            <delta_ts>2010-04-14 14:13:58 -0700</delta_ts>
            <desc>[patch] next iteration</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>1333</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmZmYTc2OC4uNjQxZTU4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wNC0xNCAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBGbGFreSBpbnNwZWN0b3IgdGVzdHMg
Zml4LgorICAgICAgICBJbnNwZWN0b3IgdGVzdHMgc29tZXRpbWVzIGZhaWwgb24gV2luIFJlbGVh
c2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjIx
NworCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QpOgorCiAyMDEw
LTA0LTExICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNTc0NjguCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZS5jcHAKaW5kZXggNTFlZDI5MC4uMTc2MWJkMyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlLmNwcApAQCAtMTQ2LDggKzE0Niw4IEBAIHZvaWQgSW5zcGVj
dG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRl
bmQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFNjcmlwdE9iamVjdCBqc29uT2JqZWN0ID0gZnJv
bnRlbmQtPm5ld1NjcmlwdE9iamVjdCgpOworICAgIGpzb25PYmplY3Quc2V0KCJ1cmwiLCBtX3Jl
cXVlc3RVUkwuc3RyaW5nKCkpOwogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdlKFJlcXVlc3RD
aGFuZ2UpKSB7Ci0gICAgICAgIGpzb25PYmplY3Quc2V0KCJ1cmwiLCBtX3JlcXVlc3RVUkwuc3Ry
aW5nKCkpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgiZG9jdW1lbnRVUkwiLCBtX2ZyYW1lLT5k
b2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJob3N0
IiwgbV9yZXF1ZXN0VVJMLmhvc3QoKSk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJwYXRoIiwg
bV9yZXF1ZXN0VVJMLnBhdGgoKSk7Cg==
</data>
<flag name="review"
          id="37062"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53367</attachid>
            <date>2010-04-14 14:13:58 -0700</date>
            <delta_ts>2010-04-23 02:51:42 -0700</delta_ts>
            <desc>[patch] just fix.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>1331</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmZmYTc2OC4uMTMyOGYxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNC0xNCAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBGbGFreSBJbnNwZWN0b3IgdGVzdHMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjIxNwor
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZCk6CisKIDIwMTAtMDQt
MTEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI1NzQ2OC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKaW5kZXggM2YwNDlmNS4uYjVmZTM5NiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTY2Myw4ICs2NjMsMTAgQEAgdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaWRDb21taXRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
CiAgICAgICAgIG1fY3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTnVtYmVyID0gMTsKICAgICAg
ICAgbV9uZXh0VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXIgPSAxOwogI2VuZGlmCi0gICAgICAg
IC8vIHJlc2V0U2NyaXB0T2JqZWN0cyBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZSBkYXRhYmFzZSBh
bmQgRE9NIHN0b3JhZ2UKKyAgICAgICAgLy8gdW5iaW5kQWxsUmVzb3VyY2VzIHNob3VsZCBiZSBj
YWxsZWQgYmVmb3JlIGRhdGFiYXNlIGFuZCBET00gc3RvcmFnZQogICAgICAgICAvLyByZXNvdXJj
ZXMgYXJlIGNsZWFyZWQgc28gdGhhdCBpdCBoYXMgYSBjaGFuY2UgdG8gdW5iaW5kIHRoZW0uCisg
ICAgICAgIHVuYmluZEFsbFJlc291cmNlcygpOworICAgICAgICAKICAgICAgICAgaWYgKG1fZnJv
bnRlbmQpIHsKICAgICAgICAgICAgIG1fZnJvbnRlbmQtPnJlc2V0KCk7CiAgICAgICAgICAgICBt
X2RvbUFnZW50LT5yZXNldCgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>