<?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>60059</bug_id>
          
          <creation_ts>2011-05-03 13:40:40 -0700</creation_ts>
          <short_desc>AssociatedURLLoader reports some errors synchronously</short_desc>
          <delta_ts>2011-06-16 16:53:41 -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>Platform</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Bill Budge">bbudge</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>japhet</cc>
    
    <cc>koz</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>397330</commentid>
    <comment_count>0</comment_count>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-05-03 13:40:40 -0700</bug_when>
    <thetext>AssociatedURLLoader uses DocumentThreadableLoader internally, which reports some same-origin violation errors synchronously. Use a Timer to defer those error callbacks until after control has returned to the caller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397340</commentid>
    <comment_count>1</comment_count>
      <attachid>92120</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-05-03 13:46:16 -0700</bug_when>
    <thetext>Created attachment 92120
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397357</commentid>
    <comment_count>2</comment_count>
      <attachid>92123</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-05-03 13:54:30 -0700</bug_when>
    <thetext>Created attachment 92123
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397393</commentid>
    <comment_count>3</comment_count>
      <attachid>92131</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-05-03 14:29:53 -0700</bug_when>
    <thetext>Created attachment 92131
Proposed Patch

WebError.reason is not a reliable test for whether something is a true error, so use an m_didFail flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397400</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-05-03 14:41:23 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=92131) [details]
&gt; Proposed Patch
&gt; 
&gt; WebError.reason is not a reliable test for whether something is a true error, so use an m_didFail flag.

so you see AssociatedURLLoader::ClientAdapter::didFail being called with a non-error?  that seems indicative of another bug.  surely, didFail should only be reporting errors :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397443</commentid>
    <comment_count>5</comment_count>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-05-03 15:20:05 -0700</bug_when>
    <thetext>I didn&apos;t make that very clear. The m_error field is initialized with the default constructor and reason is 0. But didFail can get an error that also has reason 0. So it can&apos;t reliably decide (in enableErrorNotifications) whether or not didFail got called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397456</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-05-03 15:28:07 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I didn&apos;t make that very clear. The m_error field is initialized with the default constructor and reason is 0. But didFail can get an error that also has reason 0. So it can&apos;t reliably decide (in enableErrorNotifications) whether or not didFail got called.

That&apos;s what I understood.  It seems buggy for didFail to get an error that has reason == 0.  It should have a non-zero reason value if there was an error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397462</commentid>
    <comment_count>7</comment_count>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-05-03 15:35:56 -0700</bug_when>
    <thetext>I can see the ResourceError constructor call in DocumentThreadableLoader::create. I also see you have a TODO to provide more detailed error information in ppb_url_loader_impl.cc in Webkit::plugins. Should I put together a patch to add better error messages in WebCore before we do this one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414295</commentid>
    <comment_count>8</comment_count>
      <attachid>92131</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-02 11:22:51 -0700</bug_when>
    <thetext>Comment on attachment 92131
Proposed Patch

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

&gt; Source/WebKit/chromium/src/AssociatedURLLoader.cpp:185
&gt; +        m_errorTimer = new Timer&lt;ClientAdapter&gt;(this, &amp;ClientAdapter::notifyError);

WebKit frowns upon &quot;naked new&quot;, meaning calls to new should immediately be followed by either adoptPtr or adoptRef, as appropriate.  In any case, we just normally make these Timer objects be regular members, not pointers.  Actually, I&apos;m surprised this patch even compiles.  There must be something wrong somwhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414304</commentid>
    <comment_count>9</comment_count>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-06-02 11:35:29 -0700</bug_when>
    <thetext>Hi Adam, thanks for looking at this. I&apos;m planning on adding error codes to the ResourceErrors returned from WebCore, so we can return better error codes. Then I&apos;ll return to this patch and fix the problem you found. What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414318</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-02 11:51:27 -0700</bug_when>
    <thetext>&gt; What do you think?

Sure.  I was just going through my inbox and took a look at the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414370</commentid>
    <comment_count>11</comment_count>
      <attachid>95791</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-06-02 13:00:03 -0700</bug_when>
    <thetext>Created attachment 95791
Proposed Patch

Adam, on second thought, we need this to fix some things in Chrome and I can add the error codes later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414994</commentid>
    <comment_count>12</comment_count>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-06-03 10:43:43 -0700</bug_when>
    <thetext>For this to compile, LOOSE_OWN_PTR must be defined. I used adoptPtr, since the constructor for timer needs &apos;this&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414995</commentid>
    <comment_count>13</comment_count>
      <attachid>95791</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-03 10:45:45 -0700</bug_when>
    <thetext>Comment on attachment 95791
Proposed Patch

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

&gt; Source/WebKit/chromium/src/AssociatedURLLoader.cpp:89
&gt; +    OwnPtr&lt;Timer&lt;ClientAdapter&gt; &gt; m_errorTimer;

This should just be a regular member, not an OwnPtr.

&gt; Source/WebKit/chromium/src/AssociatedURLLoader.cpp:190
&gt; +void AssociatedURLLoader::ClientAdapter::notifyError(Timer&lt;ClientAdapter&gt;* timer)

You should assert that |timer| has the value you expect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415013</commentid>
    <comment_count>14</comment_count>
      <attachid>95931</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-06-03 11:14:58 -0700</bug_when>
    <thetext>Created attachment 95931
Proposed Patch

Made m_errorTimer a direct member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415016</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-03 11:17:34 -0700</bug_when>
    <thetext>Attachment 95931 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Sourc...&quot; exit_code: 1

Source/WebKit/chromium/src/AssociatedURLLoader.cpp:187:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415018</commentid>
    <comment_count>16</comment_count>
      <attachid>95931</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-03 11:21:45 -0700</bug_when>
    <thetext>Comment on attachment 95931
Proposed Patch

Attachment 95931 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8765128</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415020</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-03 11:23:33 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; For this to compile, LOOSE_OWN_PTR must be defined.

You&apos;re not allowed to define LOOSE_OWN_PTR.  That&apos;s code we&apos;re deleting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415039</commentid>
    <comment_count>18</comment_count>
      <attachid>95934</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-06-03 11:44:42 -0700</bug_when>
    <thetext>Created attachment 95934
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415058</commentid>
    <comment_count>19</comment_count>
      <attachid>95934</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-03 11:55:04 -0700</bug_when>
    <thetext>Comment on attachment 95934
Proposed Patch

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

This is starting to look good, but we&apos;re still lacking a test.

&gt; Source/WebKit/chromium/src/AssociatedURLLoader.cpp:190
&gt; +{

Please add the ASSERT I asked for in the previous review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415127</commentid>
    <comment_count>20</comment_count>
      <attachid>95955</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-06-03 13:24:37 -0700</bug_when>
    <thetext>Created attachment 95955
Proposed Patch

Added ASSERT in notifyError.

I can&apos;t find any obvious tests of AssociatedURLLoader specifically. Also, I&apos;m having trouble running LayoutTests (DumpRenderTree build is failing on command line).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415130</commentid>
    <comment_count>21</comment_count>
      <attachid>95955</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-03 13:26:46 -0700</bug_when>
    <thetext>Comment on attachment 95955
Proposed Patch

Thanks for the ASSERT, but we need tests for each change.  We certainly don&apos;t want entire files with zero test coverage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417712</commentid>
    <comment_count>22</comment_count>
      <attachid>96514</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-06-08 17:33:28 -0700</bug_when>
    <thetext>Created attachment 96514
Proposed Patch

Added unit tests for successful loading (same- and cross-origin) and asynchronous return of access errors. Further unit tests will require a rewrite of unit testing infrastructure (mock URL loaders), and should probably be targeted at DocumentThreadableLoader and lower level loaders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417718</commentid>
    <comment_count>23</comment_count>
      <attachid>96517</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-06-08 17:48:41 -0700</bug_when>
    <thetext>Created attachment 96517
Proposed Patch

Bad patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417853</commentid>
    <comment_count>24</comment_count>
      <attachid>96517</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-08 23:37:31 -0700</bug_when>
    <thetext>Comment on attachment 96517
Proposed Patch

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

Thanks for writing the test.  I appreciate it.  One nit below and this looks good to go.

&gt; Source/WebKit/chromium/src/AssociatedURLLoader.cpp:191
&gt; +    ASSERT(timer);

Normally, we do the following:

ASSERT_UNUSED(timer == &amp;m_errorTimer, timer);

Some configurations of WebKit generate compile errors for unused variables.  In your patch |timer| is unused in release builds.  Also, the ASSERT above is more precise because it makes sure |timer| points to the object we expect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417959</commentid>
    <comment_count>25</comment_count>
      <attachid>96574</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-06-09 05:40:12 -0700</bug_when>
    <thetext>Created attachment 96574
Proposed Patch

Let&apos;s discuss bringing more of the URL loader machinery (and WebKit in general) under test at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417962</commentid>
    <comment_count>26</comment_count>
      <attachid>96574</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-09 05:44:33 -0700</bug_when>
    <thetext>Comment on attachment 96574
Proposed Patch

Attachment 96574 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8822317</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418074</commentid>
    <comment_count>27</comment_count>
      <attachid>96599</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-06-09 09:54:12 -0700</bug_when>
    <thetext>Created attachment 96599
Proposed Patch

ASSERT_UNUSED didn&apos;t compile for me:

    ASSERT_UNUSED(timer == &amp;m_errorTimer, timer);


Source/WebKit/chromium/src/AssociatedURLLoader.cpp: In member function &apos;void WebKit::AssociatedURLLoader::ClientAdapter::notifyError(WebCore::Timer&lt;WebKit::AssociatedURLLoader::ClientAdapter&gt;*)&apos;:
Source/WebKit/chromium/src/AssociatedURLLoader.cpp:191: error: void value not ignored as it ought to be
make: *** [out/Release/obj.target/webkit/Source/WebKit/chromium/src/AssociatedURLLoader.o] Error 1

I grepped for other usages and didn&apos;t find any in Source/WebKit/chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418078</commentid>
    <comment_count>28</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-09 10:05:17 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; ASSERT_UNUSED didn&apos;t compile for me:
&gt; 
&gt;     ASSERT_UNUSED(timer == &amp;m_errorTimer, timer);

That’s because Adam’s example had the arguments backwards. Instead do this:

    ASSERT_UNUSED(timer, timer == &amp;m_errorTimer);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418095</commentid>
    <comment_count>29</comment_count>
      <attachid>96599</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-09 10:39:14 -0700</bug_when>
    <thetext>Comment on attachment 96599
Proposed Patch

What Darin said.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418100</commentid>
    <comment_count>30</comment_count>
      <attachid>96603</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-06-09 10:47:38 -0700</bug_when>
    <thetext>Created attachment 96603
Proposed Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418126</commentid>
    <comment_count>31</comment_count>
      <attachid>96603</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-09 11:22:02 -0700</bug_when>
    <thetext>Comment on attachment 96603
Proposed Patch

Clearing flags on attachment: 96603

Committed r88466: &lt;http://trac.webkit.org/changeset/88466&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418127</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-09 11:22:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418528</commentid>
    <comment_count>33</comment_count>
    <who name="James Kozianski">koz</who>
    <bug_when>2011-06-09 23:16:42 -0700</bug_when>
    <thetext>Reverted r88466 for reason:

Broke PPAPITest.URLLoader test on the chromium bots

Committed r88523: &lt;http://trac.webkit.org/changeset/88523&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422310</commentid>
    <comment_count>34</comment_count>
      <attachid>96603</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-16 16:13:27 -0700</bug_when>
    <thetext>Comment on attachment 96603
Proposed Patch

Lets try this again!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422325</commentid>
    <comment_count>35</comment_count>
      <attachid>96603</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-16 16:53:34 -0700</bug_when>
    <thetext>Comment on attachment 96603
Proposed Patch

Clearing flags on attachment: 96603

Committed r89089: &lt;http://trac.webkit.org/changeset/89089&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422326</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-16 16:53:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92120</attachid>
            <date>2011-05-03 13:46:16 -0700</date>
            <delta_ts>2011-05-03 13:54:30 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>cors.txt</filename>
            <type>text/plain</type>
            <size>5451</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTY1MCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTEtMDUtMDMgIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFzc29jaWF0ZWRVUkxM
b2FkZXIgdXNlcyBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIgaW50ZXJuYWxseSwgd2hpY2ggcmVw
b3J0cyBzb21lIHNhbWUtb3JpZ2luIHZpb2xhdGlvbiBlcnJvcnMgc3luY2hyb25vdXNseS4gVXNl
IGEgVGltZXIgdG8gZGVmZXIgdGhvc2UgZXJyb3IgY2FsbGJhY2tzIHVudGlsIGFmdGVyIGNvbnRy
b2wgaGFzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDA1OQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gRXhw
b3NlcyBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHNyYy9Bc3NvY2lhdGVkVVJM
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50
QWRhcHRlcjo6Q2xpZW50QWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxM
b2FkZXI6OkNsaWVudEFkYXB0ZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpkaWRGYWlsKToKKyAgICAgICAg
KFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6ZW5hYmxlRXJyb3JO
b3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xp
ZW50QWRhcHRlcjo6bm90aWZ5RXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJM
TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorCiAyMDExLTA1LTAzICBKdWxpZW4gQ2hhZmZy
YWl4ICA8amNoYWZmcmFpeEBjb2RlYXVyb3JhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
aW1pdHJpIEdsYXprb3YuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NvY2lh
dGVkVVJMTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Bc3NvY2lhdGVkVVJMTG9hZGVyLmNwcAkocmV2aXNpb24gODU2MjYpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3NvY2lhdGVkVVJMTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIgog
I2luY2x1ZGUgIkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlN1
YnJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJXZWJBcHBs
aWNhdGlvbkNhY2hlSG9zdC5oIgogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2UuaCIKICNpbmNsdWRl
ICJXZWJGcmFtZUltcGwuaCIKQEAgLTU0LDYgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAv
LyBUaGlzIGNsYXNzIGJyaWRnZXMgdGhlIGludGVyZmFjZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIFdl
YkNvcmUgYW5kIFdlYktpdCBsb2FkZXIgY2xpZW50cy4KIC8vIEl0IGZvcndhcmRzIGl0cyBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50IG5vdGlmaWNhdGlvbnMgdG8gYSBXZWJVUkxMb2FkZXJDbGllbnQu
CiBjbGFzcyBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyIDogcHVibGljIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2xp
ZW50QWRhcHRlcik7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q2xpZW50QWRhcHRl
cj4gY3JlYXRlKEFzc29jaWF0ZWRVUkxMb2FkZXIqLCBXZWJVUkxMb2FkZXJDbGllbnQqLCBib29s
IC8qZG93bmxvYWRUb0ZpbGUqLyk7CiAKQEAgLTY4LDE2ICs3MCwyNiBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNEb2N1bWVudFRocmVhZGFibGVMb2FkZXJDbGllbnQoKSB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICAvLyBUaGlzIG1ldGhvZCBzdG9wcyBsb2FkaW5nIGFuZCByZWxlYXNl
cyB0aGUgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyIGFzIGVhcmx5IGFzIHBvc3NpYmxlLgorICAg
IC8vIEVuYWJsZXMgZm9yd2FyZGluZyBvZiBlcnJvciBub3RpZmljYXRpb25zIHRvIHRoZSBXZWJV
UkxMb2FkZXJDbGllbnQuIFRoZXNlIG11c3QgYmUKKyAgICAvLyBkZWZlcnJlZCB1bnRpbCBhZnRl
ciB0aGUgY2FsbCB0byBBc3NvY2lhdGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoKSBj
b21wbGV0ZXMuCisgICAgdm9pZCBlbmFibGVFcnJvck5vdGlmaWNhdGlvbnMoKTsKKworICAgIC8v
IFN0b3BzIGxvYWRpbmcgYW5kIHJlbGVhc2VzIHRoZSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIg
YXMgZWFybHkgYXMgcG9zc2libGUuCiAgICAgdm9pZCBjbGVhckNsaWVudCgpIHsgbV9jbGllbnQg
PSAwOyB9CiAKIHByaXZhdGU6CiAgICAgQ2xpZW50QWRhcHRlcihBc3NvY2lhdGVkVVJMTG9hZGVy
KiwgV2ViVVJMTG9hZGVyQ2xpZW50KiwgYm9vbCAvKmRvd25sb2FkVG9GaWxlKi8pOwogCisgICAg
dm9pZCBub3RpZnlFcnJvcihUaW1lcjxDbGllbnRBZGFwdGVyPiopOworCiAgICAgQXNzb2NpYXRl
ZFVSTExvYWRlciogbV9sb2FkZXI7CiAgICAgV2ViVVJMTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsK
KyAgICBXZWJVUkxFcnJvciBtX2Vycm9yOworCisgICAgT3duUHRyPFRpbWVyPENsaWVudEFkYXB0
ZXI+ID4gbV9lcnJvclRpbWVyOwogICAgIHVuc2lnbmVkIGxvbmcgbV9kb3dubG9hZExlbmd0aDsK
ICAgICBib29sIG1fZG93bmxvYWRUb0ZpbGU7CisgICAgYm9vbCBtX2VuYWJsZUVycm9yTm90aWZp
Y2F0aW9uczsKIH07CiAKIFBhc3NPd25QdHI8QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRh
cHRlcj4gQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6Y3JlYXRlKEFzc29jaWF0
ZWRVUkxMb2FkZXIqIGxvYWRlciwgV2ViVVJMTG9hZGVyQ2xpZW50KiBjbGllbnQsIGJvb2wgZG93
bmxvYWRUb0ZpbGUpCkBAIC05MCw2ICsxMDIsNyBAQCBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGll
bnRBZGFwdGVyOjpDbGllCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2Rvd25sb2Fk
TGVuZ3RoKDApCiAgICAgLCBtX2Rvd25sb2FkVG9GaWxlKGRvd25sb2FkVG9GaWxlKQorICAgICwg
bV9lbmFibGVFcnJvck5vdGlmaWNhdGlvbnMoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fbG9hZGVy
KTsKICAgICBBU1NFUlQobV9jbGllbnQpOwpAQCAtMTQ0LDcgKzE1Nyw3IEBAIHZvaWQgQXNzb2Np
YXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjoKICAgICBpZiAobV9kb3dubG9hZFRvRmlsZSkg
ewogICAgICAgICBpbnQgZG93bmxvYWRMZW5ndGggPSBtX2Rvd25sb2FkTGVuZ3RoIDw9IElOVF9N
QVggPyBtX2Rvd25sb2FkTGVuZ3RoIDogSU5UX01BWDsKICAgICAgICAgbV9jbGllbnQtPmRpZERv
d25sb2FkRGF0YShtX2xvYWRlciwgZG93bmxvYWRMZW5ndGgpOwotICAgICAgICAvLyBXaGlsZSB0
aGUgY2xpZW50IGNvdWxkIGhhdmUgY2FuY2VsbGVkLCBjb250aW51ZSwgc2luY2UgdGhlIGxvYWQg
ZmluaXNoZWQuIAorICAgICAgICAvLyBXaGlsZSB0aGUgY2xpZW50IGNvdWxkIGhhdmUgY2FuY2Vs
ZWQsIGNvbnRpbnVlLCBzaW5jZSB0aGUgbG9hZCBmaW5pc2hlZC4KICAgICB9CiAKICAgICBtX2Ns
aWVudC0+ZGlkRmluaXNoTG9hZGluZyhtX2xvYWRlciwgZmluaXNoVGltZSk7CkBAIC0xNTUsOCAr
MTY4LDI1IEBAIHZvaWQgQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjoKICAgICBp
ZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJVUkxFcnJvciB3ZWJFcnJv
cihlcnJvcik7Ci0gICAgbV9jbGllbnQtPmRpZEZhaWwobV9sb2FkZXIsIHdlYkVycm9yKTsKKyAg
ICBtX2Vycm9yID0gV2ViVVJMRXJyb3IoZXJyb3IpOworICAgIGlmIChtX2VuYWJsZUVycm9yTm90
aWZpY2F0aW9ucykKKyAgICAgICAgbm90aWZ5RXJyb3IobV9lcnJvclRpbWVyLmdldCgpKTsKK30K
Kwordm9pZCBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjplbmFibGVFcnJvck5v
dGlmaWNhdGlvbnMoKQoreworICAgIG1fZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zID0gdHJ1ZTsK
KyAgICAvLyBJZiBhbiBlcnJvciB3YXMgcmVjZWl2ZWQgYnkgdGhlIGFkYXB0ZXIsIHNldCB1cCB0
aGUgdGltZXIgdG8gcmVwb3J0IGl0IHRvIHRoZQorICAgIC8vIGNsaWVudCBhZnRlciB3ZSBoYXZl
IHJldHVybmVkLgorICAgIGlmIChtX2Vycm9yLnJlYXNvbikgeworICAgICAgICBtX2Vycm9yVGlt
ZXIgPSBuZXcgVGltZXI8Q2xpZW50QWRhcHRlcj4odGhpcywgJkNsaWVudEFkYXB0ZXI6Om5vdGlm
eUVycm9yKTsKKyAgICAgICAgbV9lcnJvclRpbWVyLmdldCgpLT5zdGFydE9uZVNob3QoMCk7Cisg
ICAgfQorfQorCit2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6Om5vdGlm
eUVycm9yKFRpbWVyPENsaWVudEFkYXB0ZXI+KiB0aW1lcikKK3sKKyAgICBtX2NsaWVudC0+ZGlk
RmFpbChtX2xvYWRlciwgbV9lcnJvcik7CiB9CiAKIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkFzc29j
aWF0ZWRVUkxMb2FkZXIoUGFzc1JlZlB0cjxXZWJGcmFtZUltcGw+IGZyYW1lSW1wbCkKQEAgLTIx
NCw4ICsyNDQsOCBAQCB2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OmxvYWRBc3luY2hyb25vCiAg
ICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiB3ZWJjb3JlUmVxdWVzdCA9IHJlcXVlc3QudG9SZXNv
dXJjZVJlcXVlc3QoKTsKICAgICBEb2N1bWVudCogd2ViY29yZURvY3VtZW50ID0gbV9mcmFtZUlt
cGwtPmZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgbV9jbGllbnRBZGFwdGVyID0gQ2xpZW50QWRh
cHRlcjo6Y3JlYXRlKHRoaXMsIG1fY2xpZW50LCByZXF1ZXN0LmRvd25sb2FkVG9GaWxlKCkpOwot
CiAgICAgbV9sb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3ZWJjb3Jl
RG9jdW1lbnQsIG1fY2xpZW50QWRhcHRlci5nZXQoKSwgd2ViY29yZVJlcXVlc3QsIG9wdGlvbnMp
OworICAgIG1fY2xpZW50QWRhcHRlci0+ZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKCk7CiB9CiAK
IHZvaWQgQXNzb2NpYXRlZFVSTExvYWRlcjo6Y2FuY2VsKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92123</attachid>
            <date>2011-05-03 13:54:30 -0700</date>
            <delta_ts>2011-05-03 14:29:53 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>cors.txt</filename>
            <type>text/plain</type>
            <size>5496</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTY1MCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTEtMDUtMDMgIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFzc29jaWF0ZWRVUkxM
b2FkZXIgdXNlcyBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIgaW50ZXJuYWxseSwgd2hpY2ggcmVw
b3J0cyBzb21lIHNhbWUtb3JpZ2luIHZpb2xhdGlvbiBlcnJvcnMgc3luY2hyb25vdXNseS4gVXNl
IGEgVGltZXIgdG8gZGVmZXIgdGhvc2UgZXJyb3IgY2FsbGJhY2tzIHVudGlsIGFmdGVyIGNvbnRy
b2wgaGFzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDA1OQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gRXhw
b3NlcyBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHNyYy9Bc3NvY2lhdGVkVVJM
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50
QWRhcHRlcjo6Q2xpZW50QWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxM
b2FkZXI6OkNsaWVudEFkYXB0ZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpkaWRGYWlsKToKKyAgICAgICAg
KFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6ZW5hYmxlRXJyb3JO
b3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xp
ZW50QWRhcHRlcjo6bm90aWZ5RXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJM
TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorCiAyMDExLTA1LTAzICBKdWxpZW4gQ2hhZmZy
YWl4ICA8amNoYWZmcmFpeEBjb2RlYXVyb3JhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
aW1pdHJpIEdsYXprb3YuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NvY2lh
dGVkVVJMTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Bc3NvY2lhdGVkVVJMTG9hZGVyLmNwcAkocmV2aXNpb24gODU2MjYpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3NvY2lhdGVkVVJMTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIgog
I2luY2x1ZGUgIkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlN1
YnJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJXZWJBcHBs
aWNhdGlvbkNhY2hlSG9zdC5oIgogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2UuaCIKICNpbmNsdWRl
ICJXZWJGcmFtZUltcGwuaCIKQEAgLTU0LDYgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAv
LyBUaGlzIGNsYXNzIGJyaWRnZXMgdGhlIGludGVyZmFjZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIFdl
YkNvcmUgYW5kIFdlYktpdCBsb2FkZXIgY2xpZW50cy4KIC8vIEl0IGZvcndhcmRzIGl0cyBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50IG5vdGlmaWNhdGlvbnMgdG8gYSBXZWJVUkxMb2FkZXJDbGllbnQu
CiBjbGFzcyBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyIDogcHVibGljIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2xp
ZW50QWRhcHRlcik7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q2xpZW50QWRhcHRl
cj4gY3JlYXRlKEFzc29jaWF0ZWRVUkxMb2FkZXIqLCBXZWJVUkxMb2FkZXJDbGllbnQqLCBib29s
IC8qZG93bmxvYWRUb0ZpbGUqLyk7CiAKQEAgLTY4LDE2ICs3MCwyNiBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNEb2N1bWVudFRocmVhZGFibGVMb2FkZXJDbGllbnQoKSB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICAvLyBUaGlzIG1ldGhvZCBzdG9wcyBsb2FkaW5nIGFuZCByZWxlYXNl
cyB0aGUgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyIGFzIGVhcmx5IGFzIHBvc3NpYmxlLgorICAg
IC8vIEVuYWJsZXMgZm9yd2FyZGluZyBvZiBlcnJvciBub3RpZmljYXRpb25zIHRvIHRoZSBXZWJV
UkxMb2FkZXJDbGllbnQuIFRoZXNlIG11c3QgYmUKKyAgICAvLyBkZWZlcnJlZCB1bnRpbCBhZnRl
ciB0aGUgY2FsbCB0byBBc3NvY2lhdGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoKSBj
b21wbGV0ZXMuCisgICAgdm9pZCBlbmFibGVFcnJvck5vdGlmaWNhdGlvbnMoKTsKKworICAgIC8v
IFN0b3BzIGxvYWRpbmcgYW5kIHJlbGVhc2VzIHRoZSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIg
YXMgZWFybHkgYXMgcG9zc2libGUuCiAgICAgdm9pZCBjbGVhckNsaWVudCgpIHsgbV9jbGllbnQg
PSAwOyB9CiAKIHByaXZhdGU6CiAgICAgQ2xpZW50QWRhcHRlcihBc3NvY2lhdGVkVVJMTG9hZGVy
KiwgV2ViVVJMTG9hZGVyQ2xpZW50KiwgYm9vbCAvKmRvd25sb2FkVG9GaWxlKi8pOwogCisgICAg
dm9pZCBub3RpZnlFcnJvcihUaW1lcjxDbGllbnRBZGFwdGVyPiopOworCiAgICAgQXNzb2NpYXRl
ZFVSTExvYWRlciogbV9sb2FkZXI7CiAgICAgV2ViVVJMTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsK
KyAgICBXZWJVUkxFcnJvciBtX2Vycm9yOworCisgICAgT3duUHRyPFRpbWVyPENsaWVudEFkYXB0
ZXI+ID4gbV9lcnJvclRpbWVyOwogICAgIHVuc2lnbmVkIGxvbmcgbV9kb3dubG9hZExlbmd0aDsK
ICAgICBib29sIG1fZG93bmxvYWRUb0ZpbGU7CisgICAgYm9vbCBtX2VuYWJsZUVycm9yTm90aWZp
Y2F0aW9uczsKIH07CiAKIFBhc3NPd25QdHI8QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRh
cHRlcj4gQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6Y3JlYXRlKEFzc29jaWF0
ZWRVUkxMb2FkZXIqIGxvYWRlciwgV2ViVVJMTG9hZGVyQ2xpZW50KiBjbGllbnQsIGJvb2wgZG93
bmxvYWRUb0ZpbGUpCkBAIC05MCw2ICsxMDIsNyBAQCBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGll
bnRBZGFwdGVyOjpDbGllCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2Rvd25sb2Fk
TGVuZ3RoKDApCiAgICAgLCBtX2Rvd25sb2FkVG9GaWxlKGRvd25sb2FkVG9GaWxlKQorICAgICwg
bV9lbmFibGVFcnJvck5vdGlmaWNhdGlvbnMoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fbG9hZGVy
KTsKICAgICBBU1NFUlQobV9jbGllbnQpOwpAQCAtMTQ0LDcgKzE1Nyw3IEBAIHZvaWQgQXNzb2Np
YXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjoKICAgICBpZiAobV9kb3dubG9hZFRvRmlsZSkg
ewogICAgICAgICBpbnQgZG93bmxvYWRMZW5ndGggPSBtX2Rvd25sb2FkTGVuZ3RoIDw9IElOVF9N
QVggPyBtX2Rvd25sb2FkTGVuZ3RoIDogSU5UX01BWDsKICAgICAgICAgbV9jbGllbnQtPmRpZERv
d25sb2FkRGF0YShtX2xvYWRlciwgZG93bmxvYWRMZW5ndGgpOwotICAgICAgICAvLyBXaGlsZSB0
aGUgY2xpZW50IGNvdWxkIGhhdmUgY2FuY2VsbGVkLCBjb250aW51ZSwgc2luY2UgdGhlIGxvYWQg
ZmluaXNoZWQuIAorICAgICAgICAvLyBXaGlsZSB0aGUgY2xpZW50IGNvdWxkIGhhdmUgY2FuY2Vs
ZWQsIGNvbnRpbnVlLCBzaW5jZSB0aGUgbG9hZCBmaW5pc2hlZC4KICAgICB9CiAKICAgICBtX2Ns
aWVudC0+ZGlkRmluaXNoTG9hZGluZyhtX2xvYWRlciwgZmluaXNoVGltZSk7CkBAIC0xNTUsOCAr
MTY4LDI1IEBAIHZvaWQgQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjoKICAgICBp
ZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJVUkxFcnJvciB3ZWJFcnJv
cihlcnJvcik7Ci0gICAgbV9jbGllbnQtPmRpZEZhaWwobV9sb2FkZXIsIHdlYkVycm9yKTsKKyAg
ICBtX2Vycm9yID0gV2ViVVJMRXJyb3IoZXJyb3IpOworICAgIGlmIChtX2VuYWJsZUVycm9yTm90
aWZpY2F0aW9ucykKKyAgICAgICAgbm90aWZ5RXJyb3IobV9lcnJvclRpbWVyLmdldCgpKTsKK30K
Kwordm9pZCBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjplbmFibGVFcnJvck5v
dGlmaWNhdGlvbnMoKQoreworICAgIG1fZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zID0gdHJ1ZTsK
KyAgICAvLyBJZiBhbiBlcnJvciBoYXMgYWxyZWFkeSBiZWVuIHJlY2VpdmVkLCBzdGFydCBhIHRp
bWVyIHRvIHJlcG9ydCBpdCB0byB0aGUgY2xpZW50CisgICAgLy8gYWZ0ZXIgQXNzb2NpYXRlZFVS
TExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5IGhhcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLgor
ICAgIGlmIChtX2Vycm9yLnJlYXNvbikgeworICAgICAgICBtX2Vycm9yVGltZXIgPSBuZXcgVGlt
ZXI8Q2xpZW50QWRhcHRlcj4odGhpcywgJkNsaWVudEFkYXB0ZXI6Om5vdGlmeUVycm9yKTsKKyAg
ICAgICAgbV9lcnJvclRpbWVyLmdldCgpLT5zdGFydE9uZVNob3QoMCk7CisgICAgfQorfQorCit2
b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6Om5vdGlmeUVycm9yKFRpbWVy
PENsaWVudEFkYXB0ZXI+KiB0aW1lcikKK3sKKyAgICBtX2NsaWVudC0+ZGlkRmFpbChtX2xvYWRl
ciwgbV9lcnJvcik7CiB9CiAKIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkFzc29jaWF0ZWRVUkxMb2Fk
ZXIoUGFzc1JlZlB0cjxXZWJGcmFtZUltcGw+IGZyYW1lSW1wbCkKQEAgLTIxNCw4ICsyNDQsOCBA
QCB2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OmxvYWRBc3luY2hyb25vCiAgICAgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiB3ZWJjb3JlUmVxdWVzdCA9IHJlcXVlc3QudG9SZXNvdXJjZVJlcXVlc3Qo
KTsKICAgICBEb2N1bWVudCogd2ViY29yZURvY3VtZW50ID0gbV9mcmFtZUltcGwtPmZyYW1lKCkt
PmRvY3VtZW50KCk7CiAgICAgbV9jbGllbnRBZGFwdGVyID0gQ2xpZW50QWRhcHRlcjo6Y3JlYXRl
KHRoaXMsIG1fY2xpZW50LCByZXF1ZXN0LmRvd25sb2FkVG9GaWxlKCkpOwotCiAgICAgbV9sb2Fk
ZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3ZWJjb3JlRG9jdW1lbnQsIG1f
Y2xpZW50QWRhcHRlci5nZXQoKSwgd2ViY29yZVJlcXVlc3QsIG9wdGlvbnMpOworICAgIG1fY2xp
ZW50QWRhcHRlci0+ZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKCk7CiB9CiAKIHZvaWQgQXNzb2Np
YXRlZFVSTExvYWRlcjo6Y2FuY2VsKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92131</attachid>
            <date>2011-05-03 14:29:53 -0700</date>
            <delta_ts>2011-06-02 13:00:03 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>cors.txt</filename>
            <type>text/plain</type>
            <size>5559</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NTY1MCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTEtMDUtMDMgIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFzc29jaWF0ZWRVUkxM
b2FkZXIgdXNlcyBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIgaW50ZXJuYWxseSwgd2hpY2ggcmVw
b3J0cyBzb21lIHNhbWUtb3JpZ2luIHZpb2xhdGlvbiBlcnJvcnMgc3luY2hyb25vdXNseS4gVXNl
IGEgVGltZXIgdG8gZGVmZXIgdGhvc2UgZXJyb3IgY2FsbGJhY2tzIHVudGlsIGFmdGVyIGNvbnRy
b2wgaGFzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDA1OQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gRXhw
b3NlcyBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHNyYy9Bc3NvY2lhdGVkVVJM
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50
QWRhcHRlcjo6Q2xpZW50QWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxM
b2FkZXI6OkNsaWVudEFkYXB0ZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpkaWRGYWlsKToKKyAgICAgICAg
KFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6ZW5hYmxlRXJyb3JO
b3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xp
ZW50QWRhcHRlcjo6bm90aWZ5RXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJM
TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorCiAyMDExLTA1LTAzICBKdWxpZW4gQ2hhZmZy
YWl4ICA8amNoYWZmcmFpeEBjb2RlYXVyb3JhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
aW1pdHJpIEdsYXprb3YuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NvY2lh
dGVkVVJMTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Bc3NvY2lhdGVkVVJMTG9hZGVyLmNwcAkocmV2aXNpb24gODU2MjYpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3NvY2lhdGVkVVJMTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIgog
I2luY2x1ZGUgIkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlN1
YnJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJXZWJBcHBs
aWNhdGlvbkNhY2hlSG9zdC5oIgogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2UuaCIKICNpbmNsdWRl
ICJXZWJGcmFtZUltcGwuaCIKQEAgLTU0LDYgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAv
LyBUaGlzIGNsYXNzIGJyaWRnZXMgdGhlIGludGVyZmFjZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIFdl
YkNvcmUgYW5kIFdlYktpdCBsb2FkZXIgY2xpZW50cy4KIC8vIEl0IGZvcndhcmRzIGl0cyBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50IG5vdGlmaWNhdGlvbnMgdG8gYSBXZWJVUkxMb2FkZXJDbGllbnQu
CiBjbGFzcyBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyIDogcHVibGljIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2xp
ZW50QWRhcHRlcik7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q2xpZW50QWRhcHRl
cj4gY3JlYXRlKEFzc29jaWF0ZWRVUkxMb2FkZXIqLCBXZWJVUkxMb2FkZXJDbGllbnQqLCBib29s
IC8qZG93bmxvYWRUb0ZpbGUqLyk7CiAKQEAgLTY4LDE2ICs3MCwyNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNEb2N1bWVudFRocmVhZGFibGVMb2FkZXJDbGllbnQoKSB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICAvLyBUaGlzIG1ldGhvZCBzdG9wcyBsb2FkaW5nIGFuZCByZWxlYXNl
cyB0aGUgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyIGFzIGVhcmx5IGFzIHBvc3NpYmxlLgorICAg
IC8vIEVuYWJsZXMgZm9yd2FyZGluZyBvZiBlcnJvciBub3RpZmljYXRpb25zIHRvIHRoZSBXZWJV
UkxMb2FkZXJDbGllbnQuIFRoZXNlIG11c3QgYmUKKyAgICAvLyBkZWZlcnJlZCB1bnRpbCBhZnRl
ciB0aGUgY2FsbCB0byBBc3NvY2lhdGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoKSBj
b21wbGV0ZXMuCisgICAgdm9pZCBlbmFibGVFcnJvck5vdGlmaWNhdGlvbnMoKTsKKworICAgIC8v
IFN0b3BzIGxvYWRpbmcgYW5kIHJlbGVhc2VzIHRoZSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIg
YXMgZWFybHkgYXMgcG9zc2libGUuCiAgICAgdm9pZCBjbGVhckNsaWVudCgpIHsgbV9jbGllbnQg
PSAwOyB9CiAKIHByaXZhdGU6CiAgICAgQ2xpZW50QWRhcHRlcihBc3NvY2lhdGVkVVJMTG9hZGVy
KiwgV2ViVVJMTG9hZGVyQ2xpZW50KiwgYm9vbCAvKmRvd25sb2FkVG9GaWxlKi8pOwogCisgICAg
dm9pZCBub3RpZnlFcnJvcihUaW1lcjxDbGllbnRBZGFwdGVyPiopOworCiAgICAgQXNzb2NpYXRl
ZFVSTExvYWRlciogbV9sb2FkZXI7CiAgICAgV2ViVVJMTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsK
KyAgICBXZWJVUkxFcnJvciBtX2Vycm9yOworCisgICAgT3duUHRyPFRpbWVyPENsaWVudEFkYXB0
ZXI+ID4gbV9lcnJvclRpbWVyOwogICAgIHVuc2lnbmVkIGxvbmcgbV9kb3dubG9hZExlbmd0aDsK
ICAgICBib29sIG1fZG93bmxvYWRUb0ZpbGU7CisgICAgYm9vbCBtX2VuYWJsZUVycm9yTm90aWZp
Y2F0aW9uczsKKyAgICBib29sIG1fZGlkRmFpbDsKIH07CiAKIFBhc3NPd25QdHI8QXNzb2NpYXRl
ZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcj4gQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRh
cHRlcjo6Y3JlYXRlKEFzc29jaWF0ZWRVUkxMb2FkZXIqIGxvYWRlciwgV2ViVVJMTG9hZGVyQ2xp
ZW50KiBjbGllbnQsIGJvb2wgZG93bmxvYWRUb0ZpbGUpCkBAIC05MCw2ICsxMDMsOCBAQCBBc3Nv
Y2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpDbGllCiAgICAgLCBtX2NsaWVudChjbGll
bnQpCiAgICAgLCBtX2Rvd25sb2FkTGVuZ3RoKDApCiAgICAgLCBtX2Rvd25sb2FkVG9GaWxlKGRv
d25sb2FkVG9GaWxlKQorICAgICwgbV9lbmFibGVFcnJvck5vdGlmaWNhdGlvbnMoZmFsc2UpCisg
ICAgLCBtX2RpZEZhaWwoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fbG9hZGVyKTsKICAgICBBU1NF
UlQobV9jbGllbnQpOwpAQCAtMTQ0LDcgKzE1OSw3IEBAIHZvaWQgQXNzb2NpYXRlZFVSTExvYWRl
cjo6Q2xpZW50QWRhcHRlcjoKICAgICBpZiAobV9kb3dubG9hZFRvRmlsZSkgewogICAgICAgICBp
bnQgZG93bmxvYWRMZW5ndGggPSBtX2Rvd25sb2FkTGVuZ3RoIDw9IElOVF9NQVggPyBtX2Rvd25s
b2FkTGVuZ3RoIDogSU5UX01BWDsKICAgICAgICAgbV9jbGllbnQtPmRpZERvd25sb2FkRGF0YSht
X2xvYWRlciwgZG93bmxvYWRMZW5ndGgpOwotICAgICAgICAvLyBXaGlsZSB0aGUgY2xpZW50IGNv
dWxkIGhhdmUgY2FuY2VsbGVkLCBjb250aW51ZSwgc2luY2UgdGhlIGxvYWQgZmluaXNoZWQuIAor
ICAgICAgICAvLyBXaGlsZSB0aGUgY2xpZW50IGNvdWxkIGhhdmUgY2FuY2VsZWQsIGNvbnRpbnVl
LCBzaW5jZSB0aGUgbG9hZCBmaW5pc2hlZC4KICAgICB9CiAKICAgICBtX2NsaWVudC0+ZGlkRmlu
aXNoTG9hZGluZyhtX2xvYWRlciwgZmluaXNoVGltZSk7CkBAIC0xNTUsOCArMTcwLDI2IEBAIHZv
aWQgQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjoKICAgICBpZiAoIW1fY2xpZW50
KQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJVUkxFcnJvciB3ZWJFcnJvcihlcnJvcik7Ci0g
ICAgbV9jbGllbnQtPmRpZEZhaWwobV9sb2FkZXIsIHdlYkVycm9yKTsKKyAgICBtX2RpZEZhaWwg
PSB0cnVlOworICAgIG1fZXJyb3IgPSBXZWJVUkxFcnJvcihlcnJvcik7CisgICAgaWYgKG1fZW5h
YmxlRXJyb3JOb3RpZmljYXRpb25zKQorICAgICAgICBub3RpZnlFcnJvcihtX2Vycm9yVGltZXIu
Z2V0KCkpOworfQorCit2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6OmVu
YWJsZUVycm9yTm90aWZpY2F0aW9ucygpCit7CisgICAgbV9lbmFibGVFcnJvck5vdGlmaWNhdGlv
bnMgPSB0cnVlOworICAgIC8vIElmIGFuIGVycm9yIGhhcyBhbHJlYWR5IGJlZW4gcmVjZWl2ZWQs
IHN0YXJ0IGEgdGltZXIgdG8gcmVwb3J0IGl0IHRvIHRoZSBjbGllbnQKKyAgICAvLyBhZnRlciBB
c3NvY2lhdGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkgaGFzIHJldHVybmVkIHRvIHRo
ZSBjYWxsZXIuCisgICAgaWYgKG1fZGlkRmFpbCkgeworICAgICAgICBtX2Vycm9yVGltZXIgPSBu
ZXcgVGltZXI8Q2xpZW50QWRhcHRlcj4odGhpcywgJkNsaWVudEFkYXB0ZXI6Om5vdGlmeUVycm9y
KTsKKyAgICAgICAgbV9lcnJvclRpbWVyLmdldCgpLT5zdGFydE9uZVNob3QoMCk7CisgICAgfQor
fQorCit2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6Om5vdGlmeUVycm9y
KFRpbWVyPENsaWVudEFkYXB0ZXI+KiB0aW1lcikKK3sKKyAgICBtX2NsaWVudC0+ZGlkRmFpbCht
X2xvYWRlciwgbV9lcnJvcik7CiB9CiAKIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkFzc29jaWF0ZWRV
UkxMb2FkZXIoUGFzc1JlZlB0cjxXZWJGcmFtZUltcGw+IGZyYW1lSW1wbCkKQEAgLTIxNCw4ICsy
NDcsOCBAQCB2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OmxvYWRBc3luY2hyb25vCiAgICAgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiB3ZWJjb3JlUmVxdWVzdCA9IHJlcXVlc3QudG9SZXNvdXJjZVJl
cXVlc3QoKTsKICAgICBEb2N1bWVudCogd2ViY29yZURvY3VtZW50ID0gbV9mcmFtZUltcGwtPmZy
YW1lKCktPmRvY3VtZW50KCk7CiAgICAgbV9jbGllbnRBZGFwdGVyID0gQ2xpZW50QWRhcHRlcjo6
Y3JlYXRlKHRoaXMsIG1fY2xpZW50LCByZXF1ZXN0LmRvd25sb2FkVG9GaWxlKCkpOwotCiAgICAg
bV9sb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3ZWJjb3JlRG9jdW1l
bnQsIG1fY2xpZW50QWRhcHRlci5nZXQoKSwgd2ViY29yZVJlcXVlc3QsIG9wdGlvbnMpOworICAg
IG1fY2xpZW50QWRhcHRlci0+ZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKCk7CiB9CiAKIHZvaWQg
QXNzb2NpYXRlZFVSTExvYWRlcjo6Y2FuY2VsKCkK
</data>
<flag name="review"
          id="85070"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95791</attachid>
            <date>2011-06-02 13:00:03 -0700</date>
            <delta_ts>2011-06-03 11:14:58 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>aul.txt</filename>
            <type>text/plain</type>
            <size>5612</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4Nzk0MikKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTEtMDYtMDIgIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFzc29jaWF0ZWRVUkxM
b2FkZXIgdXNlcyBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIgaW50ZXJuYWxseSwgd2hpY2ggcmVw
b3J0cyBzb21lIHNhbWUtb3JpZ2luIHZpb2xhdGlvbiBlcnJvcnMgc3luY2hyb25vdXNseS4gVXNl
IGEgVGltZXIgdG8gZGVmZXIgdGhvc2UgZXJyb3IgY2FsbGJhY2tzIHVudGlsIGFmdGVyIGNvbnRy
b2wgaGFzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDA1OQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gRXhw
b3NlcyBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHNyYy9Bc3NvY2lhdGVkVVJM
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50
QWRhcHRlcjo6Q2xpZW50QWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxM
b2FkZXI6OkNsaWVudEFkYXB0ZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpkaWRGYWlsKToKKyAgICAgICAg
KFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6ZW5hYmxlRXJyb3JO
b3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xp
ZW50QWRhcHRlcjo6bm90aWZ5RXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJM
TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorCiAyMDExLTA2LTAyICBTaGVyaWZmIEJvdCAg
PHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByODc5MjAuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NvY2lh
dGVkVVJMTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Bc3NvY2lhdGVkVVJMTG9hZGVyLmNwcAkocmV2aXNpb24gODc5NDIpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3NvY2lhdGVkVVJMTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIgog
I2luY2x1ZGUgIkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlN1
YnJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJXZWJBcHBs
aWNhdGlvbkNhY2hlSG9zdC5oIgogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2UuaCIKICNpbmNsdWRl
ICJXZWJGcmFtZUltcGwuaCIKQEAgLTU0LDYgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAv
LyBUaGlzIGNsYXNzIGJyaWRnZXMgdGhlIGludGVyZmFjZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIFdl
YkNvcmUgYW5kIFdlYktpdCBsb2FkZXIgY2xpZW50cy4KIC8vIEl0IGZvcndhcmRzIGl0cyBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50IG5vdGlmaWNhdGlvbnMgdG8gYSBXZWJVUkxMb2FkZXJDbGllbnQu
CiBjbGFzcyBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyIDogcHVibGljIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2xp
ZW50QWRhcHRlcik7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q2xpZW50QWRhcHRl
cj4gY3JlYXRlKEFzc29jaWF0ZWRVUkxMb2FkZXIqLCBXZWJVUkxMb2FkZXJDbGllbnQqLCBib29s
IC8qZG93bmxvYWRUb0ZpbGUqLyk7CiAKQEAgLTY4LDE2ICs3MCwyNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNEb2N1bWVudFRocmVhZGFibGVMb2FkZXJDbGllbnQoKSB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICAvLyBUaGlzIG1ldGhvZCBzdG9wcyBsb2FkaW5nIGFuZCByZWxlYXNl
cyB0aGUgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyIGFzIGVhcmx5IGFzIHBvc3NpYmxlLgotICAg
IHZvaWQgY2xlYXJDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfQorICAgIC8vIEVuYWJsZXMgZm9y
d2FyZGluZyBvZiBlcnJvciBub3RpZmljYXRpb25zIHRvIHRoZSBXZWJVUkxMb2FkZXJDbGllbnQu
IFRoZXNlIG11c3QgYmUKKyAgICAvLyBkZWZlcnJlZCB1bnRpbCBhZnRlciB0aGUgY2FsbCB0byBB
c3NvY2lhdGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoKSBjb21wbGV0ZXMuCisgICAg
dm9pZCBlbmFibGVFcnJvck5vdGlmaWNhdGlvbnMoKTsKKworICAgIC8vIFN0b3BzIGxvYWRpbmcg
YW5kIHJlbGVhc2VzIHRoZSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIgYXMgZWFybHkgYXMgcG9z
c2libGUuCisgICAgdm9pZCBjbGVhckNsaWVudCgpIHsgbV9jbGllbnQgPSAwOyB9IAogCiBwcml2
YXRlOgogICAgIENsaWVudEFkYXB0ZXIoQXNzb2NpYXRlZFVSTExvYWRlciosIFdlYlVSTExvYWRl
ckNsaWVudCosIGJvb2wgLypkb3dubG9hZFRvRmlsZSovKTsKIAorICAgIHZvaWQgbm90aWZ5RXJy
b3IoVGltZXI8Q2xpZW50QWRhcHRlcj4qKTsKKwogICAgIEFzc29jaWF0ZWRVUkxMb2FkZXIqIG1f
bG9hZGVyOwogICAgIFdlYlVSTExvYWRlckNsaWVudCogbV9jbGllbnQ7CisgICAgV2ViVVJMRXJy
b3IgbV9lcnJvcjsKKworICAgIE93blB0cjxUaW1lcjxDbGllbnRBZGFwdGVyPiA+IG1fZXJyb3JU
aW1lcjsKICAgICB1bnNpZ25lZCBsb25nIG1fZG93bmxvYWRMZW5ndGg7CiAgICAgYm9vbCBtX2Rv
d25sb2FkVG9GaWxlOworICAgIGJvb2wgbV9lbmFibGVFcnJvck5vdGlmaWNhdGlvbnM7CisgICAg
Ym9vbCBtX2RpZEZhaWw7CiB9OwogCiBQYXNzT3duUHRyPEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNs
aWVudEFkYXB0ZXI+IEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6OmNyZWF0ZShB
c3NvY2lhdGVkVVJMTG9hZGVyKiBsb2FkZXIsIFdlYlVSTExvYWRlckNsaWVudCogY2xpZW50LCBi
b29sIGRvd25sb2FkVG9GaWxlKQpAQCAtOTAsNiArMTAzLDggQEAgQXNzb2NpYXRlZFVSTExvYWRl
cjo6Q2xpZW50QWRhcHRlcjo6Q2xpZQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9k
b3dubG9hZExlbmd0aCgwKQogICAgICwgbV9kb3dubG9hZFRvRmlsZShkb3dubG9hZFRvRmlsZSkK
KyAgICAsIG1fZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKGZhbHNlKQorICAgICwgbV9kaWRGYWls
KGZhbHNlKQogewogICAgIEFTU0VSVChtX2xvYWRlcik7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsK
QEAgLTE0NCw3ICsxNTksNyBAQCB2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0
ZXI6CiAgICAgaWYgKG1fZG93bmxvYWRUb0ZpbGUpIHsKICAgICAgICAgaW50IGRvd25sb2FkTGVu
Z3RoID0gbV9kb3dubG9hZExlbmd0aCA8PSBJTlRfTUFYID8gbV9kb3dubG9hZExlbmd0aCA6IElO
VF9NQVg7CiAgICAgICAgIG1fY2xpZW50LT5kaWREb3dubG9hZERhdGEobV9sb2FkZXIsIGRvd25s
b2FkTGVuZ3RoKTsKLSAgICAgICAgLy8gV2hpbGUgdGhlIGNsaWVudCBjb3VsZCBoYXZlIGNhbmNl
bGxlZCwgY29udGludWUsIHNpbmNlIHRoZSBsb2FkIGZpbmlzaGVkLiAKKyAgICAgICAgLy8gV2hp
bGUgdGhlIGNsaWVudCBjb3VsZCBoYXZlIGNhbmNlbGVkLCBjb250aW51ZSwgc2luY2UgdGhlIGxv
YWQgZmluaXNoZWQuCiAgICAgfQogCiAgICAgbV9jbGllbnQtPmRpZEZpbmlzaExvYWRpbmcobV9s
b2FkZXIsIGZpbmlzaFRpbWUpOwpAQCAtMTU1LDggKzE3MCwyNiBAQCB2b2lkIEFzc29jaWF0ZWRV
UkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6CiAgICAgaWYgKCFtX2NsaWVudCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgV2ViVVJMRXJyb3Igd2ViRXJyb3IoZXJyb3IpOwotICAgIG1fY2xpZW50LT5k
aWRGYWlsKG1fbG9hZGVyLCB3ZWJFcnJvcik7CisgICAgbV9kaWRGYWlsID0gdHJ1ZTsKKyAgICBt
X2Vycm9yID0gV2ViVVJMRXJyb3IoZXJyb3IpOworICAgIGlmIChtX2VuYWJsZUVycm9yTm90aWZp
Y2F0aW9ucykKKyAgICAgICAgbm90aWZ5RXJyb3IobV9lcnJvclRpbWVyLmdldCgpKTsKK30KKwor
dm9pZCBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjplbmFibGVFcnJvck5vdGlm
aWNhdGlvbnMoKQoreworICAgIG1fZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zID0gdHJ1ZTsKKyAg
ICAvLyBJZiBhbiBlcnJvciBoYXMgYWxyZWFkeSBiZWVuIHJlY2VpdmVkLCBzdGFydCBhIHRpbWVy
IHRvIHJlcG9ydCBpdCB0byB0aGUgY2xpZW50CisgICAgLy8gYWZ0ZXIgQXNzb2NpYXRlZFVSTExv
YWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5IGhhcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLgorICAg
IGlmIChtX2RpZEZhaWwpIHsKKyAgICAgICAgbV9lcnJvclRpbWVyID0gYWRvcHRQdHIobmV3IFRp
bWVyPENsaWVudEFkYXB0ZXI+KHRoaXMsICZDbGllbnRBZGFwdGVyOjpub3RpZnlFcnJvcikpOwor
ICAgICAgICBtX2Vycm9yVGltZXIuZ2V0KCktPnN0YXJ0T25lU2hvdCgwKTsKKyAgICB9Cit9CisK
K3ZvaWQgQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6bm90aWZ5RXJyb3IoVGlt
ZXI8Q2xpZW50QWRhcHRlcj4qIHRpbWVyKQoreworICAgIG1fY2xpZW50LT5kaWRGYWlsKG1fbG9h
ZGVyLCBtX2Vycm9yKTsKIH0KIAogQXNzb2NpYXRlZFVSTExvYWRlcjo6QXNzb2NpYXRlZFVSTExv
YWRlcihQYXNzUmVmUHRyPFdlYkZyYW1lSW1wbD4gZnJhbWVJbXBsKQpAQCAtMjE1LDggKzI0OCw4
IEBAIHZvaWQgQXNzb2NpYXRlZFVSTExvYWRlcjo6bG9hZEFzeW5jaHJvbm8KICAgICBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHdlYmNvcmVSZXF1ZXN0ID0gcmVxdWVzdC50b1Jlc291cmNlUmVxdWVz
dCgpOwogICAgIERvY3VtZW50KiB3ZWJjb3JlRG9jdW1lbnQgPSBtX2ZyYW1lSW1wbC0+ZnJhbWUo
KS0+ZG9jdW1lbnQoKTsKICAgICBtX2NsaWVudEFkYXB0ZXIgPSBDbGllbnRBZGFwdGVyOjpjcmVh
dGUodGhpcywgbV9jbGllbnQsIHJlcXVlc3QuZG93bmxvYWRUb0ZpbGUoKSk7Ci0KICAgICBtX2xv
YWRlciA9IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHdlYmNvcmVEb2N1bWVudCwg
bV9jbGllbnRBZGFwdGVyLmdldCgpLCB3ZWJjb3JlUmVxdWVzdCwgb3B0aW9ucyk7CisgICAgbV9j
bGllbnRBZGFwdGVyLT5lbmFibGVFcnJvck5vdGlmaWNhdGlvbnMoKTsKIH0KIAogdm9pZCBBc3Nv
Y2lhdGVkVVJMTG9hZGVyOjpjYW5jZWwoKQo=
</data>
<flag name="review"
          id="89356"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95931</attachid>
            <date>2011-06-03 11:14:58 -0700</date>
            <delta_ts>2011-06-03 11:44:42 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>aul.txt</filename>
            <type>text/plain</type>
            <size>5551</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4Nzk0MikKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTEtMDYtMDIgIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFzc29jaWF0ZWRVUkxM
b2FkZXIgdXNlcyBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIgaW50ZXJuYWxseSwgd2hpY2ggcmVw
b3J0cyBzb21lIHNhbWUtb3JpZ2luIHZpb2xhdGlvbiBlcnJvcnMgc3luY2hyb25vdXNseS4gVXNl
IGEgVGltZXIgdG8gZGVmZXIgdGhvc2UgZXJyb3IgY2FsbGJhY2tzIHVudGlsIGFmdGVyIGNvbnRy
b2wgaGFzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDA1OQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gRXhw
b3NlcyBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHNyYy9Bc3NvY2lhdGVkVVJM
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50
QWRhcHRlcjo6Q2xpZW50QWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxM
b2FkZXI6OkNsaWVudEFkYXB0ZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpkaWRGYWlsKToKKyAgICAgICAg
KFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6ZW5hYmxlRXJyb3JO
b3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xp
ZW50QWRhcHRlcjo6bm90aWZ5RXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJM
TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorCiAyMDExLTA2LTAyICBTaGVyaWZmIEJvdCAg
PHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByODc5MjAuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NvY2lh
dGVkVVJMTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Bc3NvY2lhdGVkVVJMTG9hZGVyLmNwcAkocmV2aXNpb24gODc5NDIpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3NvY2lhdGVkVVJMTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIgog
I2luY2x1ZGUgIkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlN1
YnJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJXZWJBcHBs
aWNhdGlvbkNhY2hlSG9zdC5oIgogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2UuaCIKICNpbmNsdWRl
ICJXZWJGcmFtZUltcGwuaCIKQEAgLTU0LDYgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAv
LyBUaGlzIGNsYXNzIGJyaWRnZXMgdGhlIGludGVyZmFjZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIFdl
YkNvcmUgYW5kIFdlYktpdCBsb2FkZXIgY2xpZW50cy4KIC8vIEl0IGZvcndhcmRzIGl0cyBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50IG5vdGlmaWNhdGlvbnMgdG8gYSBXZWJVUkxMb2FkZXJDbGllbnQu
CiBjbGFzcyBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyIDogcHVibGljIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2xp
ZW50QWRhcHRlcik7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q2xpZW50QWRhcHRl
cj4gY3JlYXRlKEFzc29jaWF0ZWRVUkxMb2FkZXIqLCBXZWJVUkxMb2FkZXJDbGllbnQqLCBib29s
IC8qZG93bmxvYWRUb0ZpbGUqLyk7CiAKQEAgLTY4LDE2ICs3MCwyNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNEb2N1bWVudFRocmVhZGFibGVMb2FkZXJDbGllbnQoKSB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICAvLyBUaGlzIG1ldGhvZCBzdG9wcyBsb2FkaW5nIGFuZCByZWxlYXNl
cyB0aGUgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyIGFzIGVhcmx5IGFzIHBvc3NpYmxlLgotICAg
IHZvaWQgY2xlYXJDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfQorICAgIC8vIEVuYWJsZXMgZm9y
d2FyZGluZyBvZiBlcnJvciBub3RpZmljYXRpb25zIHRvIHRoZSBXZWJVUkxMb2FkZXJDbGllbnQu
IFRoZXNlIG11c3QgYmUKKyAgICAvLyBkZWZlcnJlZCB1bnRpbCBhZnRlciB0aGUgY2FsbCB0byBB
c3NvY2lhdGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoKSBjb21wbGV0ZXMuCisgICAg
dm9pZCBlbmFibGVFcnJvck5vdGlmaWNhdGlvbnMoKTsKKworICAgIC8vIFN0b3BzIGxvYWRpbmcg
YW5kIHJlbGVhc2VzIHRoZSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIgYXMgZWFybHkgYXMgcG9z
c2libGUuCisgICAgdm9pZCBjbGVhckNsaWVudCgpIHsgbV9jbGllbnQgPSAwOyB9IAogCiBwcml2
YXRlOgogICAgIENsaWVudEFkYXB0ZXIoQXNzb2NpYXRlZFVSTExvYWRlciosIFdlYlVSTExvYWRl
ckNsaWVudCosIGJvb2wgLypkb3dubG9hZFRvRmlsZSovKTsKIAorICAgIHZvaWQgbm90aWZ5RXJy
b3IoVGltZXI8Q2xpZW50QWRhcHRlcj4qKTsKKwogICAgIEFzc29jaWF0ZWRVUkxMb2FkZXIqIG1f
bG9hZGVyOwogICAgIFdlYlVSTExvYWRlckNsaWVudCogbV9jbGllbnQ7CisgICAgV2ViVVJMRXJy
b3IgbV9lcnJvcjsKKworICAgIFRpbWVyPENsaWVudEFkYXB0ZXI+IG1fZXJyb3JUaW1lcjsKICAg
ICB1bnNpZ25lZCBsb25nIG1fZG93bmxvYWRMZW5ndGg7CiAgICAgYm9vbCBtX2Rvd25sb2FkVG9G
aWxlOworICAgIGJvb2wgbV9lbmFibGVFcnJvck5vdGlmaWNhdGlvbnM7CisgICAgYm9vbCBtX2Rp
ZEZhaWw7CiB9OwogCiBQYXNzT3duUHRyPEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0
ZXI+IEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6OmNyZWF0ZShBc3NvY2lhdGVk
VVJMTG9hZGVyKiBsb2FkZXIsIFdlYlVSTExvYWRlckNsaWVudCogY2xpZW50LCBib29sIGRvd25s
b2FkVG9GaWxlKQpAQCAtOTAsNiArMTAzLDkgQEAgQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50
QWRhcHRlcjo6Q2xpZQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9kb3dubG9hZExl
bmd0aCgwKQogICAgICwgbV9kb3dubG9hZFRvRmlsZShkb3dubG9hZFRvRmlsZSkKKyAgICAsIG1f
ZXJyb3JUaW1lcih0aGlzLCAmQ2xpZW50QWRhcHRlcjo6bm90aWZ5RXJyb3IpCisgICAgLCBtX2Vu
YWJsZUVycm9yTm90aWZpY2F0aW9ucyhmYWxzZSkKKyAgICAsIG1fZGlkRmFpbChmYWxzZSkKIHsK
ICAgICBBU1NFUlQobV9sb2FkZXIpOwogICAgIEFTU0VSVChtX2NsaWVudCk7CkBAIC0xNDQsNyAr
MTYwLDcgQEAgdm9pZCBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOgogICAgIGlm
IChtX2Rvd25sb2FkVG9GaWxlKSB7CiAgICAgICAgIGludCBkb3dubG9hZExlbmd0aCA9IG1fZG93
bmxvYWRMZW5ndGggPD0gSU5UX01BWCA/IG1fZG93bmxvYWRMZW5ndGggOiBJTlRfTUFYOwogICAg
ICAgICBtX2NsaWVudC0+ZGlkRG93bmxvYWREYXRhKG1fbG9hZGVyLCBkb3dubG9hZExlbmd0aCk7
Ci0gICAgICAgIC8vIFdoaWxlIHRoZSBjbGllbnQgY291bGQgaGF2ZSBjYW5jZWxsZWQsIGNvbnRp
bnVlLCBzaW5jZSB0aGUgbG9hZCBmaW5pc2hlZC4gCisgICAgICAgIC8vIFdoaWxlIHRoZSBjbGll
bnQgY291bGQgaGF2ZSBjYW5jZWxlZCwgY29udGludWUsIHNpbmNlIHRoZSBsb2FkIGZpbmlzaGVk
LgogICAgIH0KIAogICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKG1fbG9hZGVyLCBmaW5p
c2hUaW1lKTsKQEAgLTE1NSw4ICsxNzEsMjUgQEAgdm9pZCBBc3NvY2lhdGVkVVJMTG9hZGVyOjpD
bGllbnRBZGFwdGVyOgogICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFdlYlVSTEVycm9yIHdlYkVycm9yKGVycm9yKTsKLSAgICBtX2NsaWVudC0+ZGlkRmFpbChtX2xv
YWRlciwgd2ViRXJyb3IpOworICAgIG1fZGlkRmFpbCA9IHRydWU7CisgICAgbV9lcnJvciA9IFdl
YlVSTEVycm9yKGVycm9yKTsKKyAgICBpZiAobV9lbmFibGVFcnJvck5vdGlmaWNhdGlvbnMpCisg
ICAgICAgIG5vdGlmeUVycm9yKCZtX2Vycm9yVGltZXIpOworfQorCit2b2lkIEFzc29jaWF0ZWRV
UkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6OmVuYWJsZUVycm9yTm90aWZpY2F0aW9ucygpCit7Cisg
ICAgbV9lbmFibGVFcnJvck5vdGlmaWNhdGlvbnMgPSB0cnVlOworICAgIC8vIElmIGFuIGVycm9y
IGhhcyBhbHJlYWR5IGJlZW4gcmVjZWl2ZWQsIHN0YXJ0IGEgdGltZXIgdG8gcmVwb3J0IGl0IHRv
IHRoZSBjbGllbnQKKyAgICAvLyBhZnRlciBBc3NvY2lhdGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNo
cm9ub3VzbHkgaGFzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuCisgICAgaWYgKG1fZGlkRmFpbCkg
eworICAgICAgICBtX2Vycm9yVGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIH0KK30KKwordm9p
ZCBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpub3RpZnlFcnJvcihUaW1lcjxD
bGllbnRBZGFwdGVyPiogdGltZXIpCit7CisgICAgbV9jbGllbnQtPmRpZEZhaWwobV9sb2FkZXIs
IG1fZXJyb3IpOwogfQogCiBBc3NvY2lhdGVkVVJMTG9hZGVyOjpBc3NvY2lhdGVkVVJMTG9hZGVy
KFBhc3NSZWZQdHI8V2ViRnJhbWVJbXBsPiBmcmFtZUltcGwpCkBAIC0yMTUsOCArMjQ4LDggQEAg
dm9pZCBBc3NvY2lhdGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNocm9ubwogICAgIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgd2ViY29yZVJlcXVlc3QgPSByZXF1ZXN0LnRvUmVzb3VyY2VSZXF1ZXN0KCk7
CiAgICAgRG9jdW1lbnQqIHdlYmNvcmVEb2N1bWVudCA9IG1fZnJhbWVJbXBsLT5mcmFtZSgpLT5k
b2N1bWVudCgpOwogICAgIG1fY2xpZW50QWRhcHRlciA9IENsaWVudEFkYXB0ZXI6OmNyZWF0ZSh0
aGlzLCBtX2NsaWVudCwgcmVxdWVzdC5kb3dubG9hZFRvRmlsZSgpKTsKLQogICAgIG1fbG9hZGVy
ID0gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUod2ViY29yZURvY3VtZW50LCBtX2Ns
aWVudEFkYXB0ZXIuZ2V0KCksIHdlYmNvcmVSZXF1ZXN0LCBvcHRpb25zKTsKKyAgICBtX2NsaWVu
dEFkYXB0ZXItPmVuYWJsZUVycm9yTm90aWZpY2F0aW9ucygpOwogfQogCiB2b2lkIEFzc29jaWF0
ZWRVUkxMb2FkZXI6OmNhbmNlbCgpCg==
</data>
<flag name="commit-queue"
          id="89528"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95934</attachid>
            <date>2011-06-03 11:44:42 -0700</date>
            <delta_ts>2011-06-03 13:24:37 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>aul.txt</filename>
            <type>text/plain</type>
            <size>5701</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4ODAzMCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTEtMDYtMDMgIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFzc29jaWF0ZWRVUkxM
b2FkZXIgdXNlcyBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIgaW50ZXJuYWxseSwgd2hpY2ggcmVw
b3J0cyBzb21lIHNhbWUtb3JpZ2luIHZpb2xhdGlvbiBlcnJvcnMgc3luY2hyb25vdXNseS4gVXNl
IGEgVGltZXIgdG8gZGVmZXIgdGhvc2UgZXJyb3IgY2FsbGJhY2tzIHVudGlsIGFmdGVyIGNvbnRy
b2wgaGFzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDA1OQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gRXhw
b3NlcyBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHNyYy9Bc3NvY2lhdGVkVVJM
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50
QWRhcHRlcjo6Q2xpZW50QWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxM
b2FkZXI6OkNsaWVudEFkYXB0ZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpkaWRGYWlsKToKKyAgICAgICAg
KFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6ZW5hYmxlRXJyb3JO
b3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xp
ZW50QWRhcHRlcjo6bm90aWZ5RXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJM
TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorCiAyMDExLTA2LTAzICBQaGlsaXBwZSBCZWF1
Y2hhbXAgIDxwaGlsaXBwZS5iZWF1Y2hhbXBAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fz
c29jaWF0ZWRVUkxMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0Fzc29jaWF0ZWRVUkxMb2FkZXIuY3BwCShyZXZpc2lvbiA4ODAzMCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc29jaWF0ZWRVUkxMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIldl
YkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZS5oIgogI2lu
Y2x1ZGUgIldlYkZyYW1lSW1wbC5oIgpAQCAtNTQsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIC8vIFRoaXMgY2xhc3MgYnJpZGdlcyB0aGUgaW50ZXJmYWNlIGRpZmZlcmVuY2VzIGJldHdl
ZW4gV2ViQ29yZSBhbmQgV2ViS2l0IGxvYWRlciBjbGllbnRzLgogLy8gSXQgZm9yd2FyZHMgaXRz
IFRocmVhZGFibGVMb2FkZXJDbGllbnQgbm90aWZpY2F0aW9ucyB0byBhIFdlYlVSTExvYWRlckNs
aWVudC4KIGNsYXNzIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXIgOiBwdWJsaWMg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShDbGllbnRBZGFwdGVyKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDbGllbnRB
ZGFwdGVyPiBjcmVhdGUoQXNzb2NpYXRlZFVSTExvYWRlciosIFdlYlVSTExvYWRlckNsaWVudCos
IGJvb2wgLypkb3dubG9hZFRvRmlsZSovKTsKIApAQCAtNjgsMTYgKzcwLDI3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgYm9vbCBpc0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlckNsaWVudCgpIHsg
cmV0dXJuIHRydWU7IH0KIAotICAgIC8vIFRoaXMgbWV0aG9kIHN0b3BzIGxvYWRpbmcgYW5kIHJl
bGVhc2VzIHRoZSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIgYXMgZWFybHkgYXMgcG9zc2libGUu
Ci0gICAgdm9pZCBjbGVhckNsaWVudCgpIHsgbV9jbGllbnQgPSAwOyB9CisgICAgLy8gRW5hYmxl
cyBmb3J3YXJkaW5nIG9mIGVycm9yIG5vdGlmaWNhdGlvbnMgdG8gdGhlIFdlYlVSTExvYWRlckNs
aWVudC4gVGhlc2UgbXVzdCBiZQorICAgIC8vIGRlZmVycmVkIHVudGlsIGFmdGVyIHRoZSBjYWxs
IHRvIEFzc29jaWF0ZWRVUkxMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseSgpIGNvbXBsZXRlcy4K
KyAgICB2b2lkIGVuYWJsZUVycm9yTm90aWZpY2F0aW9ucygpOworCisgICAgLy8gU3RvcHMgbG9h
ZGluZyBhbmQgcmVsZWFzZXMgdGhlIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciBhcyBlYXJseSBh
cyBwb3NzaWJsZS4KKyAgICB2b2lkIGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0gCiAK
IHByaXZhdGU6CiAgICAgQ2xpZW50QWRhcHRlcihBc3NvY2lhdGVkVVJMTG9hZGVyKiwgV2ViVVJM
TG9hZGVyQ2xpZW50KiwgYm9vbCAvKmRvd25sb2FkVG9GaWxlKi8pOwogCisgICAgdm9pZCBub3Rp
ZnlFcnJvcihUaW1lcjxDbGllbnRBZGFwdGVyPiopOworCiAgICAgQXNzb2NpYXRlZFVSTExvYWRl
ciogbV9sb2FkZXI7CiAgICAgV2ViVVJMTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWJV
UkxFcnJvciBtX2Vycm9yOworCisgICAgVGltZXI8Q2xpZW50QWRhcHRlcj4gbV9lcnJvclRpbWVy
OwogICAgIHVuc2lnbmVkIGxvbmcgbV9kb3dubG9hZExlbmd0aDsKICAgICBib29sIG1fZG93bmxv
YWRUb0ZpbGU7CisgICAgYm9vbCBtX2VuYWJsZUVycm9yTm90aWZpY2F0aW9uczsKKyAgICBib29s
IG1fZGlkRmFpbDsKIH07CiAKIFBhc3NPd25QdHI8QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50
QWRhcHRlcj4gQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6Y3JlYXRlKEFzc29j
aWF0ZWRVUkxMb2FkZXIqIGxvYWRlciwgV2ViVVJMTG9hZGVyQ2xpZW50KiBjbGllbnQsIGJvb2wg
ZG93bmxvYWRUb0ZpbGUpCkBAIC04OCw4ICsxMDEsMTEgQEAgUGFzc093blB0cjxBc3NvY2lhdGVk
VVJMTG9hZGVyOjpDbGllbnRBZAogQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6
Q2xpZW50QWRhcHRlcihBc3NvY2lhdGVkVVJMTG9hZGVyKiBsb2FkZXIsIFdlYlVSTExvYWRlckNs
aWVudCogY2xpZW50LCBib29sIGRvd25sb2FkVG9GaWxlKQogICAgIDogbV9sb2FkZXIobG9hZGVy
KQogICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9lcnJvclRpbWVyKHRoaXMsICZDbGll
bnRBZGFwdGVyOjpub3RpZnlFcnJvcikKICAgICAsIG1fZG93bmxvYWRMZW5ndGgoMCkKICAgICAs
IG1fZG93bmxvYWRUb0ZpbGUoZG93bmxvYWRUb0ZpbGUpCisgICAgLCBtX2VuYWJsZUVycm9yTm90
aWZpY2F0aW9ucyhmYWxzZSkKKyAgICAsIG1fZGlkRmFpbChmYWxzZSkKIHsKICAgICBBU1NFUlQo
bV9sb2FkZXIpOwogICAgIEFTU0VSVChtX2NsaWVudCk7CkBAIC0xNDQsNyArMTYwLDcgQEAgdm9p
ZCBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOgogICAgIGlmIChtX2Rvd25sb2Fk
VG9GaWxlKSB7CiAgICAgICAgIGludCBkb3dubG9hZExlbmd0aCA9IG1fZG93bmxvYWRMZW5ndGgg
PD0gSU5UX01BWCA/IG1fZG93bmxvYWRMZW5ndGggOiBJTlRfTUFYOwogICAgICAgICBtX2NsaWVu
dC0+ZGlkRG93bmxvYWREYXRhKG1fbG9hZGVyLCBkb3dubG9hZExlbmd0aCk7Ci0gICAgICAgIC8v
IFdoaWxlIHRoZSBjbGllbnQgY291bGQgaGF2ZSBjYW5jZWxsZWQsIGNvbnRpbnVlLCBzaW5jZSB0
aGUgbG9hZCBmaW5pc2hlZC4gCisgICAgICAgIC8vIFdoaWxlIHRoZSBjbGllbnQgY291bGQgaGF2
ZSBjYW5jZWxlZCwgY29udGludWUsIHNpbmNlIHRoZSBsb2FkIGZpbmlzaGVkLgogICAgIH0KIAog
ICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKG1fbG9hZGVyLCBmaW5pc2hUaW1lKTsKQEAg
LTE1NSw4ICsxNzEsMjQgQEAgdm9pZCBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVy
OgogICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYlVSTEVycm9y
IHdlYkVycm9yKGVycm9yKTsKLSAgICBtX2NsaWVudC0+ZGlkRmFpbChtX2xvYWRlciwgd2ViRXJy
b3IpOworICAgIG1fZGlkRmFpbCA9IHRydWU7CisgICAgbV9lcnJvciA9IFdlYlVSTEVycm9yKGVy
cm9yKTsKKyAgICBpZiAobV9lbmFibGVFcnJvck5vdGlmaWNhdGlvbnMpCisgICAgICAgIG5vdGlm
eUVycm9yKCZtX2Vycm9yVGltZXIpOworfQorCit2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNs
aWVudEFkYXB0ZXI6OmVuYWJsZUVycm9yTm90aWZpY2F0aW9ucygpCit7CisgICAgbV9lbmFibGVF
cnJvck5vdGlmaWNhdGlvbnMgPSB0cnVlOworICAgIC8vIElmIGFuIGVycm9yIGhhcyBhbHJlYWR5
IGJlZW4gcmVjZWl2ZWQsIHN0YXJ0IGEgdGltZXIgdG8gcmVwb3J0IGl0IHRvIHRoZSBjbGllbnQK
KyAgICAvLyBhZnRlciBBc3NvY2lhdGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkgaGFz
IHJldHVybmVkIHRvIHRoZSBjYWxsZXIuCisgICAgaWYgKG1fZGlkRmFpbCkKKyAgICAgICAgbV9l
cnJvclRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBBc3NvY2lhdGVkVVJMTG9hZGVy
OjpDbGllbnRBZGFwdGVyOjpub3RpZnlFcnJvcihUaW1lcjxDbGllbnRBZGFwdGVyPiogdGltZXIp
Cit7CisgICAgbV9jbGllbnQtPmRpZEZhaWwobV9sb2FkZXIsIG1fZXJyb3IpOwogfQogCiBBc3Nv
Y2lhdGVkVVJMTG9hZGVyOjpBc3NvY2lhdGVkVVJMTG9hZGVyKFBhc3NSZWZQdHI8V2ViRnJhbWVJ
bXBsPiBmcmFtZUltcGwpCkBAIC0yMTUsOCArMjQ3LDggQEAgdm9pZCBBc3NvY2lhdGVkVVJMTG9h
ZGVyOjpsb2FkQXN5bmNocm9ubwogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgd2ViY29yZVJl
cXVlc3QgPSByZXF1ZXN0LnRvUmVzb3VyY2VSZXF1ZXN0KCk7CiAgICAgRG9jdW1lbnQqIHdlYmNv
cmVEb2N1bWVudCA9IG1fZnJhbWVJbXBsLT5mcmFtZSgpLT5kb2N1bWVudCgpOwogICAgIG1fY2xp
ZW50QWRhcHRlciA9IENsaWVudEFkYXB0ZXI6OmNyZWF0ZSh0aGlzLCBtX2NsaWVudCwgcmVxdWVz
dC5kb3dubG9hZFRvRmlsZSgpKTsKLQogICAgIG1fbG9hZGVyID0gRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpjcmVhdGUod2ViY29yZURvY3VtZW50LCBtX2NsaWVudEFkYXB0ZXIuZ2V0KCksIHdl
YmNvcmVSZXF1ZXN0LCBvcHRpb25zKTsKKyAgICBtX2NsaWVudEFkYXB0ZXItPmVuYWJsZUVycm9y
Tm90aWZpY2F0aW9ucygpOwogfQogCiB2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OmNhbmNlbCgp
Cg==
</data>
<flag name="review"
          id="89531"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95955</attachid>
            <date>2011-06-03 13:24:37 -0700</date>
            <delta_ts>2011-06-08 17:33:28 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>aul.txt</filename>
            <type>text/plain</type>
            <size>5723</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4ODAzMCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTEtMDYtMDMgIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFzc29jaWF0ZWRVUkxM
b2FkZXIgdXNlcyBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIgaW50ZXJuYWxseSwgd2hpY2ggcmVw
b3J0cyBzb21lIHNhbWUtb3JpZ2luIHZpb2xhdGlvbiBlcnJvcnMgc3luY2hyb25vdXNseS4gVXNl
IGEgVGltZXIgdG8gZGVmZXIgdGhvc2UgZXJyb3IgY2FsbGJhY2tzIHVudGlsIGFmdGVyIGNvbnRy
b2wgaGFzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDA1OQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gRXhw
b3NlcyBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHNyYy9Bc3NvY2lhdGVkVVJM
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50
QWRhcHRlcjo6Q2xpZW50QWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxM
b2FkZXI6OkNsaWVudEFkYXB0ZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpkaWRGYWlsKToKKyAgICAgICAg
KFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6ZW5hYmxlRXJyb3JO
b3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xp
ZW50QWRhcHRlcjo6bm90aWZ5RXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJM
TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorCiAyMDExLTA2LTAzICBQaGlsaXBwZSBCZWF1
Y2hhbXAgIDxwaGlsaXBwZS5iZWF1Y2hhbXBAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fz
c29jaWF0ZWRVUkxMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0Fzc29jaWF0ZWRVUkxMb2FkZXIuY3BwCShyZXZpc2lvbiA4ODAzMCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc29jaWF0ZWRVUkxMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIldl
YkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZS5oIgogI2lu
Y2x1ZGUgIldlYkZyYW1lSW1wbC5oIgpAQCAtNTQsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIC8vIFRoaXMgY2xhc3MgYnJpZGdlcyB0aGUgaW50ZXJmYWNlIGRpZmZlcmVuY2VzIGJldHdl
ZW4gV2ViQ29yZSBhbmQgV2ViS2l0IGxvYWRlciBjbGllbnRzLgogLy8gSXQgZm9yd2FyZHMgaXRz
IFRocmVhZGFibGVMb2FkZXJDbGllbnQgbm90aWZpY2F0aW9ucyB0byBhIFdlYlVSTExvYWRlckNs
aWVudC4KIGNsYXNzIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXIgOiBwdWJsaWMg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShDbGllbnRBZGFwdGVyKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDbGllbnRB
ZGFwdGVyPiBjcmVhdGUoQXNzb2NpYXRlZFVSTExvYWRlciosIFdlYlVSTExvYWRlckNsaWVudCos
IGJvb2wgLypkb3dubG9hZFRvRmlsZSovKTsKIApAQCAtNjgsMTYgKzcwLDI3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgYm9vbCBpc0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlckNsaWVudCgpIHsg
cmV0dXJuIHRydWU7IH0KIAotICAgIC8vIFRoaXMgbWV0aG9kIHN0b3BzIGxvYWRpbmcgYW5kIHJl
bGVhc2VzIHRoZSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIgYXMgZWFybHkgYXMgcG9zc2libGUu
Ci0gICAgdm9pZCBjbGVhckNsaWVudCgpIHsgbV9jbGllbnQgPSAwOyB9CisgICAgLy8gRW5hYmxl
cyBmb3J3YXJkaW5nIG9mIGVycm9yIG5vdGlmaWNhdGlvbnMgdG8gdGhlIFdlYlVSTExvYWRlckNs
aWVudC4gVGhlc2UgbXVzdCBiZQorICAgIC8vIGRlZmVycmVkIHVudGlsIGFmdGVyIHRoZSBjYWxs
IHRvIEFzc29jaWF0ZWRVUkxMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseSgpIGNvbXBsZXRlcy4K
KyAgICB2b2lkIGVuYWJsZUVycm9yTm90aWZpY2F0aW9ucygpOworCisgICAgLy8gU3RvcHMgbG9h
ZGluZyBhbmQgcmVsZWFzZXMgdGhlIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciBhcyBlYXJseSBh
cyBwb3NzaWJsZS4KKyAgICB2b2lkIGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0gCiAK
IHByaXZhdGU6CiAgICAgQ2xpZW50QWRhcHRlcihBc3NvY2lhdGVkVVJMTG9hZGVyKiwgV2ViVVJM
TG9hZGVyQ2xpZW50KiwgYm9vbCAvKmRvd25sb2FkVG9GaWxlKi8pOwogCisgICAgdm9pZCBub3Rp
ZnlFcnJvcihUaW1lcjxDbGllbnRBZGFwdGVyPiopOworCiAgICAgQXNzb2NpYXRlZFVSTExvYWRl
ciogbV9sb2FkZXI7CiAgICAgV2ViVVJMTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWJV
UkxFcnJvciBtX2Vycm9yOworCisgICAgVGltZXI8Q2xpZW50QWRhcHRlcj4gbV9lcnJvclRpbWVy
OwogICAgIHVuc2lnbmVkIGxvbmcgbV9kb3dubG9hZExlbmd0aDsKICAgICBib29sIG1fZG93bmxv
YWRUb0ZpbGU7CisgICAgYm9vbCBtX2VuYWJsZUVycm9yTm90aWZpY2F0aW9uczsKKyAgICBib29s
IG1fZGlkRmFpbDsKIH07CiAKIFBhc3NPd25QdHI8QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50
QWRhcHRlcj4gQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6Y3JlYXRlKEFzc29j
aWF0ZWRVUkxMb2FkZXIqIGxvYWRlciwgV2ViVVJMTG9hZGVyQ2xpZW50KiBjbGllbnQsIGJvb2wg
ZG93bmxvYWRUb0ZpbGUpCkBAIC04OCw4ICsxMDEsMTEgQEAgUGFzc093blB0cjxBc3NvY2lhdGVk
VVJMTG9hZGVyOjpDbGllbnRBZAogQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6
Q2xpZW50QWRhcHRlcihBc3NvY2lhdGVkVVJMTG9hZGVyKiBsb2FkZXIsIFdlYlVSTExvYWRlckNs
aWVudCogY2xpZW50LCBib29sIGRvd25sb2FkVG9GaWxlKQogICAgIDogbV9sb2FkZXIobG9hZGVy
KQogICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9lcnJvclRpbWVyKHRoaXMsICZDbGll
bnRBZGFwdGVyOjpub3RpZnlFcnJvcikKICAgICAsIG1fZG93bmxvYWRMZW5ndGgoMCkKICAgICAs
IG1fZG93bmxvYWRUb0ZpbGUoZG93bmxvYWRUb0ZpbGUpCisgICAgLCBtX2VuYWJsZUVycm9yTm90
aWZpY2F0aW9ucyhmYWxzZSkKKyAgICAsIG1fZGlkRmFpbChmYWxzZSkKIHsKICAgICBBU1NFUlQo
bV9sb2FkZXIpOwogICAgIEFTU0VSVChtX2NsaWVudCk7CkBAIC0xNDQsNyArMTYwLDcgQEAgdm9p
ZCBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOgogICAgIGlmIChtX2Rvd25sb2Fk
VG9GaWxlKSB7CiAgICAgICAgIGludCBkb3dubG9hZExlbmd0aCA9IG1fZG93bmxvYWRMZW5ndGgg
PD0gSU5UX01BWCA/IG1fZG93bmxvYWRMZW5ndGggOiBJTlRfTUFYOwogICAgICAgICBtX2NsaWVu
dC0+ZGlkRG93bmxvYWREYXRhKG1fbG9hZGVyLCBkb3dubG9hZExlbmd0aCk7Ci0gICAgICAgIC8v
IFdoaWxlIHRoZSBjbGllbnQgY291bGQgaGF2ZSBjYW5jZWxsZWQsIGNvbnRpbnVlLCBzaW5jZSB0
aGUgbG9hZCBmaW5pc2hlZC4gCisgICAgICAgIC8vIFdoaWxlIHRoZSBjbGllbnQgY291bGQgaGF2
ZSBjYW5jZWxlZCwgY29udGludWUsIHNpbmNlIHRoZSBsb2FkIGZpbmlzaGVkLgogICAgIH0KIAog
ICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKG1fbG9hZGVyLCBmaW5pc2hUaW1lKTsKQEAg
LTE1NSw4ICsxNzEsMjYgQEAgdm9pZCBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVy
OgogICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYlVSTEVycm9y
IHdlYkVycm9yKGVycm9yKTsKLSAgICBtX2NsaWVudC0+ZGlkRmFpbChtX2xvYWRlciwgd2ViRXJy
b3IpOworICAgIG1fZGlkRmFpbCA9IHRydWU7CisgICAgbV9lcnJvciA9IFdlYlVSTEVycm9yKGVy
cm9yKTsKKyAgICBpZiAobV9lbmFibGVFcnJvck5vdGlmaWNhdGlvbnMpCisgICAgICAgIG5vdGlm
eUVycm9yKCZtX2Vycm9yVGltZXIpOworfQorCit2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNs
aWVudEFkYXB0ZXI6OmVuYWJsZUVycm9yTm90aWZpY2F0aW9ucygpCit7CisgICAgbV9lbmFibGVF
cnJvck5vdGlmaWNhdGlvbnMgPSB0cnVlOworICAgIC8vIElmIGFuIGVycm9yIGhhcyBhbHJlYWR5
IGJlZW4gcmVjZWl2ZWQsIHN0YXJ0IGEgdGltZXIgdG8gcmVwb3J0IGl0IHRvIHRoZSBjbGllbnQK
KyAgICAvLyBhZnRlciBBc3NvY2lhdGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkgaGFz
IHJldHVybmVkIHRvIHRoZSBjYWxsZXIuCisgICAgaWYgKG1fZGlkRmFpbCkKKyAgICAgICAgbV9l
cnJvclRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBBc3NvY2lhdGVkVVJMTG9hZGVy
OjpDbGllbnRBZGFwdGVyOjpub3RpZnlFcnJvcihUaW1lcjxDbGllbnRBZGFwdGVyPiogdGltZXIp
Cit7CisgICAgQVNTRVJUKHRpbWVyKTsKKworICAgIG1fY2xpZW50LT5kaWRGYWlsKG1fbG9hZGVy
LCBtX2Vycm9yKTsKIH0KIAogQXNzb2NpYXRlZFVSTExvYWRlcjo6QXNzb2NpYXRlZFVSTExvYWRl
cihQYXNzUmVmUHRyPFdlYkZyYW1lSW1wbD4gZnJhbWVJbXBsKQpAQCAtMjE1LDggKzI0OSw4IEBA
IHZvaWQgQXNzb2NpYXRlZFVSTExvYWRlcjo6bG9hZEFzeW5jaHJvbm8KICAgICBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHdlYmNvcmVSZXF1ZXN0ID0gcmVxdWVzdC50b1Jlc291cmNlUmVxdWVzdCgp
OwogICAgIERvY3VtZW50KiB3ZWJjb3JlRG9jdW1lbnQgPSBtX2ZyYW1lSW1wbC0+ZnJhbWUoKS0+
ZG9jdW1lbnQoKTsKICAgICBtX2NsaWVudEFkYXB0ZXIgPSBDbGllbnRBZGFwdGVyOjpjcmVhdGUo
dGhpcywgbV9jbGllbnQsIHJlcXVlc3QuZG93bmxvYWRUb0ZpbGUoKSk7Ci0KICAgICBtX2xvYWRl
ciA9IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHdlYmNvcmVEb2N1bWVudCwgbV9j
bGllbnRBZGFwdGVyLmdldCgpLCB3ZWJjb3JlUmVxdWVzdCwgb3B0aW9ucyk7CisgICAgbV9jbGll
bnRBZGFwdGVyLT5lbmFibGVFcnJvck5vdGlmaWNhdGlvbnMoKTsKIH0KIAogdm9pZCBBc3NvY2lh
dGVkVVJMTG9hZGVyOjpjYW5jZWwoKQo=
</data>
<flag name="review"
          id="89556"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96514</attachid>
            <date>2011-06-08 17:33:28 -0700</date>
            <delta_ts>2011-06-08 17:48:41 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>aul.txt</filename>
            <type>text/plain</type>
            <size>17491</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4ODE5NCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTEtMDYtMDggIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBBc3NvY2lhdGVk
VVJMTG9hZGVyIHJldHVybnMgVVJMIGFjY2VzcyBlcnJvcnMgc3luY2hyb25vdXNseS4gVXNlIGEg
dGltZXIgdG8gcmV0dXJuIHN1Y2ggZXJyb3JzIGFzeW5jaHJvbm91c2x5LiBBbHNvIGFkZCB1bml0
IHRlc3RzIGZvciBzdWNjZXNzZnVsIGxvYWRzLCBzYW1lLW9yaWdpbiByZXN0cmljdGlvbiBieSBk
ZWZhdWx0LCBhbmQgc3VjY2Vzc2Z1bCBjcm9zcy1vcmlnaW4gbG9hZHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDA1OQorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBzcmMvQXNzb2NpYXRl
ZFVSTExvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXI6OkNs
aWVudEFkYXB0ZXI6OmNsZWFyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVS
TExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6Q2xpZW50QWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6
OkFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6OmRpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpkaWRG
YWlsKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRl
cjo6ZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRl
ZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6bm90aWZ5RXJyb3IpOgorICAgICAgICAoV2ViS2l0
OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHRl
c3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlRlc3RXZWJGcmFtZUNsaWVudDo6Y2FuY2VsbGVkRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpB
c3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6QXNzb2NpYXRlZFVSTExvYWRlclRlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6U2V0VXApOgorICAgICAgICAoV2Vi
S2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6VGVhckRvd24pOgorICAgICAgICAoV2ViS2l0
OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6c2VydmVSZXF1ZXN0cyk6CisgICAgICAgIChXZWJL
aXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0OjpjcmVhdGVBc3NvY2lhdGVkVVJMTG9hZGVyKToK
KyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlclRlc3Q6OndpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0OjpkaWRTZW5kRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0OjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6ZGlk
RG93bmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlclRlc3Q6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlclRl
c3Q6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0
ZWRVUkxMb2FkZXJUZXN0OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6QXNz
b2NpYXRlZFVSTExvYWRlclRlc3Q6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0Yp
OgorCiAyMDExLTA2LTA2ICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCShyZXZpc2lvbiA4ODE5NCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtNjQ0LDYgKzY0NCw3IEBACiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd0ZXN0cy9DQ1RocmVhZFRlc3QuY3BwJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIyBUaGVzZSB0ZXN0cyBkZXBlbmQgb24gd2Via2l0X3N1cHBvcnQg
YW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZnVuY3Rpb25zIGRlZmluZWQg
b25seSBpbiAhV0VCS0lUX0lNUExFTUVOVEFUSU9OLgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAndGVzdHMvQXNzb2NpYXRlZFVSTExvYWRlclRlc3QuY3BwJywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZU5ld1NlcmlhbGl6ZXJUZXN0LmNw
cCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlU2VyaWFs
aXplclRlc3QuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQkocmV2aXNp
b24gODgxOTQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw2ICs1Myw3IEBACiAgICAgICAgIF0sCiAgICAgICAgICd3ZWJraXRfdW5p
dHRlc3RfZmlsZXMnOiBbCiAgICAgICAgICAgICAndGVzdHMvQXJlbmFUZXN0SGVscGVycy5oJywK
KyAgICAgICAgICAgICd0ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAnLAogICAgICAg
ICAgICAgJ3Rlc3RzL0NDVGhyZWFkVGFza1Rlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9D
Q1RocmVhZFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9JREJCaW5kaW5nVXRpbGl0aWVz
VGVzdC5jcHAnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzb2NpYXRlZFVS
TExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNz
b2NpYXRlZFVSTExvYWRlci5jcHAJKHJldmlzaW9uIDg4MTk0KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvQXNzb2NpYXRlZFVSTExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNs
dWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJTdWJyZXNv
dXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiV2ViQXBwbGljYXRp
b25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJXZWJEYXRhU291cmNlLmgiCiAjaW5jbHVkZSAiV2Vi
RnJhbWVJbXBsLmgiCkBAIC01NCw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLy8gVGhp
cyBjbGFzcyBicmlkZ2VzIHRoZSBpbnRlcmZhY2UgZGlmZmVyZW5jZXMgYmV0d2VlbiBXZWJDb3Jl
IGFuZCBXZWJLaXQgbG9hZGVyIGNsaWVudHMuCiAvLyBJdCBmb3J3YXJkcyBpdHMgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCBub3RpZmljYXRpb25zIHRvIGEgV2ViVVJMTG9hZGVyQ2xpZW50LgogY2xh
c3MgQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlciA6IHB1YmxpYyBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXJDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENsaWVudEFk
YXB0ZXIpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENsaWVudEFkYXB0ZXI+IGNy
ZWF0ZShBc3NvY2lhdGVkVVJMTG9hZGVyKiwgV2ViVVJMTG9hZGVyQ2xpZW50KiwgYm9vbCAvKmRv
d25sb2FkVG9GaWxlKi8pOwogCkBAIC02OCwxNiArNzAsMjcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBib29sIGlzRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KCkgeyByZXR1cm4gdHJ1
ZTsgfQogCi0gICAgLy8gVGhpcyBtZXRob2Qgc3RvcHMgbG9hZGluZyBhbmQgcmVsZWFzZXMgdGhl
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciBhcyBlYXJseSBhcyBwb3NzaWJsZS4KLSAgICB2b2lk
IGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KKyAgICAvLyBFbmFibGVzIGZvcndhcmRp
bmcgb2YgZXJyb3Igbm90aWZpY2F0aW9ucyB0byB0aGUgV2ViVVJMTG9hZGVyQ2xpZW50LiBUaGVz
ZSBtdXN0IGJlCisgICAgLy8gZGVmZXJyZWQgdW50aWwgYWZ0ZXIgdGhlIGNhbGwgdG8gQXNzb2Np
YXRlZFVSTExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KCkgY29tcGxldGVzLgorICAgIHZvaWQg
ZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKCk7CisKKyAgICAvLyBTdG9wcyBsb2FkaW5nIGFuZCBy
ZWxlYXNlcyB0aGUgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyIGFzIGVhcmx5IGFzIHBvc3NpYmxl
LgorICAgIHZvaWQgY2xlYXJDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfSAKIAogcHJpdmF0ZToK
ICAgICBDbGllbnRBZGFwdGVyKEFzc29jaWF0ZWRVUkxMb2FkZXIqLCBXZWJVUkxMb2FkZXJDbGll
bnQqLCBib29sIC8qZG93bmxvYWRUb0ZpbGUqLyk7CiAKKyAgICB2b2lkIG5vdGlmeUVycm9yKFRp
bWVyPENsaWVudEFkYXB0ZXI+Kik7CisKICAgICBBc3NvY2lhdGVkVVJMTG9hZGVyKiBtX2xvYWRl
cjsKICAgICBXZWJVUkxMb2FkZXJDbGllbnQqIG1fY2xpZW50OworICAgIFdlYlVSTEVycm9yIG1f
ZXJyb3I7CisKKyAgICBUaW1lcjxDbGllbnRBZGFwdGVyPiBtX2Vycm9yVGltZXI7CiAgICAgdW5z
aWduZWQgbG9uZyBtX2Rvd25sb2FkTGVuZ3RoOwogICAgIGJvb2wgbV9kb3dubG9hZFRvRmlsZTsK
KyAgICBib29sIG1fZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zOworICAgIGJvb2wgbV9kaWRGYWls
OwogfTsKIAogUGFzc093blB0cjxBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyPiBB
c3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpjcmVhdGUoQXNzb2NpYXRlZFVSTExv
YWRlciogbG9hZGVyLCBXZWJVUkxMb2FkZXJDbGllbnQqIGNsaWVudCwgYm9vbCBkb3dubG9hZFRv
RmlsZSkKQEAgLTg4LDggKzEwMSwxMSBAQCBQYXNzT3duUHRyPEFzc29jaWF0ZWRVUkxMb2FkZXI6
OkNsaWVudEFkCiBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpDbGllbnRBZGFw
dGVyKEFzc29jaWF0ZWRVUkxMb2FkZXIqIGxvYWRlciwgV2ViVVJMTG9hZGVyQ2xpZW50KiBjbGll
bnQsIGJvb2wgZG93bmxvYWRUb0ZpbGUpCiAgICAgOiBtX2xvYWRlcihsb2FkZXIpCiAgICAgLCBt
X2NsaWVudChjbGllbnQpCisgICAgLCBtX2Vycm9yVGltZXIodGhpcywgJkNsaWVudEFkYXB0ZXI6
Om5vdGlmeUVycm9yKQogICAgICwgbV9kb3dubG9hZExlbmd0aCgwKQogICAgICwgbV9kb3dubG9h
ZFRvRmlsZShkb3dubG9hZFRvRmlsZSkKKyAgICAsIG1fZW5hYmxlRXJyb3JOb3RpZmljYXRpb25z
KGZhbHNlKQorICAgICwgbV9kaWRGYWlsKGZhbHNlKQogewogICAgIEFTU0VSVChtX2xvYWRlcik7
CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKQEAgLTE0NCw3ICsxNjAsNyBAQCB2b2lkIEFzc29jaWF0
ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6CiAgICAgaWYgKG1fZG93bmxvYWRUb0ZpbGUpIHsK
ICAgICAgICAgaW50IGRvd25sb2FkTGVuZ3RoID0gbV9kb3dubG9hZExlbmd0aCA8PSBJTlRfTUFY
ID8gbV9kb3dubG9hZExlbmd0aCA6IElOVF9NQVg7CiAgICAgICAgIG1fY2xpZW50LT5kaWREb3du
bG9hZERhdGEobV9sb2FkZXIsIGRvd25sb2FkTGVuZ3RoKTsKLSAgICAgICAgLy8gV2hpbGUgdGhl
IGNsaWVudCBjb3VsZCBoYXZlIGNhbmNlbGxlZCwgY29udGludWUsIHNpbmNlIHRoZSBsb2FkIGZp
bmlzaGVkLiAKKyAgICAgICAgLy8gV2hpbGUgdGhlIGNsaWVudCBjb3VsZCBoYXZlIGNhbmNlbGVk
LCBjb250aW51ZSwgc2luY2UgdGhlIGxvYWQgZmluaXNoZWQuCiAgICAgfQogCiAgICAgbV9jbGll
bnQtPmRpZEZpbmlzaExvYWRpbmcobV9sb2FkZXIsIGZpbmlzaFRpbWUpOwpAQCAtMTU1LDggKzE3
MSwyNiBAQCB2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6CiAgICAgaWYg
KCFtX2NsaWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViVVJMRXJyb3Igd2ViRXJyb3Io
ZXJyb3IpOwotICAgIG1fY2xpZW50LT5kaWRGYWlsKG1fbG9hZGVyLCB3ZWJFcnJvcik7CisgICAg
bV9kaWRGYWlsID0gdHJ1ZTsKKyAgICBtX2Vycm9yID0gV2ViVVJMRXJyb3IoZXJyb3IpOworICAg
IGlmIChtX2VuYWJsZUVycm9yTm90aWZpY2F0aW9ucykKKyAgICAgICAgbm90aWZ5RXJyb3IoJm1f
ZXJyb3JUaW1lcik7Cit9CisKK3ZvaWQgQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRl
cjo6ZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKCkKK3sKKyAgICBtX2VuYWJsZUVycm9yTm90aWZp
Y2F0aW9ucyA9IHRydWU7CisgICAgLy8gSWYgYW4gZXJyb3IgaGFzIGFscmVhZHkgYmVlbiByZWNl
aXZlZCwgc3RhcnQgYSB0aW1lciB0byByZXBvcnQgaXQgdG8gdGhlIGNsaWVudAorICAgIC8vIGFm
dGVyIEFzc29jaWF0ZWRVUkxMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseSBoYXMgcmV0dXJuZWQg
dG8gdGhlIGNhbGxlci4KKyAgICBpZiAobV9kaWRGYWlsKQorICAgICAgICBtX2Vycm9yVGltZXIu
c3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFk
YXB0ZXI6Om5vdGlmeUVycm9yKFRpbWVyPENsaWVudEFkYXB0ZXI+KiB0aW1lcikKK3sKKyAgICBB
U1NFUlQodGltZXIpOworCisgICAgbV9jbGllbnQtPmRpZEZhaWwobV9sb2FkZXIsIG1fZXJyb3Ip
OwogfQogCiBBc3NvY2lhdGVkVVJMTG9hZGVyOjpBc3NvY2lhdGVkVVJMTG9hZGVyKFBhc3NSZWZQ
dHI8V2ViRnJhbWVJbXBsPiBmcmFtZUltcGwpCkBAIC0yMTUsOCArMjQ5LDggQEAgdm9pZCBBc3Nv
Y2lhdGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNocm9ubwogICAgIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgd2ViY29yZVJlcXVlc3QgPSByZXF1ZXN0LnRvUmVzb3VyY2VSZXF1ZXN0KCk7CiAgICAgRG9j
dW1lbnQqIHdlYmNvcmVEb2N1bWVudCA9IG1fZnJhbWVJbXBsLT5mcmFtZSgpLT5kb2N1bWVudCgp
OwogICAgIG1fY2xpZW50QWRhcHRlciA9IENsaWVudEFkYXB0ZXI6OmNyZWF0ZSh0aGlzLCBtX2Ns
aWVudCwgcmVxdWVzdC5kb3dubG9hZFRvRmlsZSgpKTsKLQogICAgIG1fbG9hZGVyID0gRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUod2ViY29yZURvY3VtZW50LCBtX2NsaWVudEFkYXB0
ZXIuZ2V0KCksIHdlYmNvcmVSZXF1ZXN0LCBvcHRpb25zKTsKKyAgICBtX2NsaWVudEFkYXB0ZXIt
PmVuYWJsZUVycm9yTm90aWZpY2F0aW9ucygpOwogfQogCiB2b2lkIEFzc29jaWF0ZWRVUkxMb2Fk
ZXI6OmNhbmNlbCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Fzc29jaWF0
ZWRVUkxMb2FkZXJUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQXNzb2NpYXRlZFVSTExvYWRlclRlc3QuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDI2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
IldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJT
dHJpbmcuaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKyNpbmNsdWRlICJXZWJVUkxMb2FkZXIuaCIK
KyNpbmNsdWRlICJXZWJVUkxMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJVUkxMb2FkZXJP
cHRpb25zLmgiCisjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYlVSTFJl
c3BvbnNlLmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgorCisjaW5jbHVkZSA8Z29vZ2xldXJsL3Ny
Yy9ndXJsLmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvc3Vw
cG9ydC93ZWJraXRfc3VwcG9ydC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCituYW1l
c3BhY2UgeworCitjbGFzcyBUZXN0V2ViRnJhbWVDbGllbnQgOiBwdWJsaWMgV2ViRnJhbWVDbGll
bnQgeworICAgIC8vIFJldHVybiBhIG5vbi1udWxsIGNhbmNlbGxhdGlvbiBlcnJvciBzbyB0aGUg
V2ViRnJhbWUgbG9hZGVycyBjYW4gc2h1dCBkb3duIHdpdGhvdXQgYXNzZXJ0aW5nLgorICAgIC8v
IE1ha2UgJ3JlYXNvbicgbm9uLXplcm8gc28gV2ViVVJMRXJyb3IgaXNuJ3QgY29uc2lkZXJlZCBu
dWxsLgorICAgIFdlYlVSTEVycm9yIGNhbmNlbGxlZEVycm9yKFdlYkZyYW1lKiwgY29uc3QgV2Vi
VVJMUmVxdWVzdCYgcmVxdWVzdCkKKyAgICB7CisgICAgICAgIFdlYlVSTEVycm9yIGVycm9yOwor
ICAgICAgICBlcnJvci5yZWFzb24gPSAxOworICAgICAgICBlcnJvci51bnJlYWNoYWJsZVVSTCA9
IHJlcXVlc3QudXJsKCk7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9Cit9OworCitjbGFz
cyBBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2ViVVJMTG9hZGVyQ2xpZW50IHsKK3B1
YmxpYzoKKyAgICBBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCgpCisgICAgICAgIDogIG1fd2lsbFNl
bmRSZXF1ZXN0KGZhbHNlKQorICAgICAgICAsICBtX2RpZFNlbmREYXRhKGZhbHNlKQorICAgICAg
ICAsICBtX2RpZFJlY2VpdmVSZXNwb25zZShmYWxzZSkKKyAgICAgICAgLCAgbV9kaWRSZWNlaXZl
RGF0YShmYWxzZSkKKyAgICAgICAgLCAgbV9kaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoZmFsc2Up
CisgICAgICAgICwgIG1fZGlkRmluaXNoTG9hZGluZyhmYWxzZSkKKyAgICAgICAgLCAgbV9kaWRG
YWlsKGZhbHNlKQorICAgIHsKKyAgICAgICAgLy8gUmV1c2Ugb25lIG9mIHRoZSB0ZXN0IGZpbGVz
IGZyb20gV2ViRnJhbWVUZXN0LgorICAgICAgICBzdGQ6OnN0cmluZyBmaWxlUGF0aCA9IHdlYmtp
dF9zdXBwb3J0OjpHZXRXZWJLaXRSb290RGlyKCkudXRmOCgpOworICAgICAgICBmaWxlUGF0aCAr
PSAiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9pZnJhbWVzX3Rlc3QuaHRtbCI7
CisgICAgICAgIG1fZnJhbWVGaWxlUGF0aCA9IFdlYlN0cmluZzo6ZnJvbVVURjgoZmlsZVBhdGgp
OworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKQorICAgIHsKKyAgICAgICAgbV93ZWJWaWV3ID0g
V2ViVmlldzo6Y3JlYXRlKDApOworICAgICAgICBtX3dlYlZpZXctPmluaXRpYWxpemVNYWluRnJh
bWUoJm1fd2ViRnJhbWVDbGllbnQpOworCisgICAgICAgIC8vIExvYWQgdGhlIGZyYW1lIGJlZm9y
ZSB0cnlpbmcgdG8gbG9hZCByZXNvdXJjZXMuCisgICAgICAgIEdVUkwgdXJsID0gR1VSTCgiaHR0
cDovL3d3dy50ZXN0LmNvbS9pZnJhbWVzX3Rlc3QuaHRtbCIpOworICAgICAgICBXZWJVUkxSZXNw
b25zZSByZXNwb25zZTsKKyAgICAgICAgcmVzcG9uc2UuaW5pdGlhbGl6ZSgpOworICAgICAgICBy
ZXNwb25zZS5zZXRNSU1FVHlwZSgidGV4dC9odG1sIik7CisgICAgICAgIHdlYmtpdF9zdXBwb3J0
OjpSZWdpc3Rlck1vY2tlZFVSTCh1cmwsIHJlc3BvbnNlLCBtX2ZyYW1lRmlsZVBhdGgpOworCisg
ICAgICAgIFdlYlVSTFJlcXVlc3QgcmVxdWVzdDsKKyAgICAgICAgcmVxdWVzdC5pbml0aWFsaXpl
KCk7CisgICAgICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CisgICAgICAgIG1fd2ViVmlldy0+bWFp
bkZyYW1lKCktPmxvYWRSZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICBzZXJ2ZVJlcXVlc3RzKCk7
CisKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJNb2NrZWRVUkwodXJsKTsKKyAg
ICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkKKyAgICB7CisgICAgICAgIHdlYmtpdF9zdXBwb3J0
OjpVbnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpOworICAgICAgICBtX3dlYlZpZXctPmNsb3NlKCk7
CisgICAgfQorCisgICAgdm9pZCBzZXJ2ZVJlcXVlc3RzKCkKKyAgICB7CisgICAgICAgIHdlYmtp
dF9zdXBwb3J0OjpTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgfQorCisg
ICAgV2ViVVJMTG9hZGVyKiBjcmVhdGVBc3NvY2lhdGVkVVJMTG9hZGVyKGNvbnN0IFdlYlVSTExv
YWRlck9wdGlvbnMgb3B0aW9ucyA9IFdlYlVSTExvYWRlck9wdGlvbnMoKSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX3dlYlZpZXctPm1haW5GcmFtZSgpLT5jcmVhdGVBc3NvY2lhdGVkVVJMTG9h
ZGVyKG9wdGlvbnMpOworICAgIH0KKworICAgIC8vIFdlYlVSTExvYWRlckNsaWVudCBpbXBsZW1l
bnRhdGlvbi4KKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJVUkxMb2FkZXIqIGxvYWRlciwg
V2ViVVJMUmVxdWVzdCYgbmV3UmVxdWVzdCwgY29uc3QgV2ViVVJMUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UpCisgICAgeworICAgICAgICBtX3dpbGxTZW5kUmVxdWVzdCA9IHRydWU7CisgICAg
ICAgIEVYUEVDVF9FUShtX2V4cGVjdGVkTG9hZGVyLCBsb2FkZXIpOworICAgICAgICBFWFBFQ1Rf
RVEobV9leHBlY3RlZE5ld1JlcXVlc3QudXJsKCksIG5ld1JlcXVlc3QudXJsKCkpOworICAgICAg
ICBFWFBFQ1RfRVEobV9leHBlY3RlZFJlZGlyZWN0UmVzcG9uc2UudXJsKCksIHJlZGlyZWN0UmVz
cG9uc2UudXJsKCkpOworICAgICAgICBFWFBFQ1RfRVEobV9leHBlY3RlZFJlZGlyZWN0UmVzcG9u
c2UubWltZVR5cGUoKSwgcmVkaXJlY3RSZXNwb25zZS5taW1lVHlwZSgpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKG1fZXhwZWN0ZWRSZWRpcmVjdFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlZGly
ZWN0UmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CisgICAgfQorCisgICAgdm9pZCBkaWRTZW5k
RGF0YShXZWJVUkxMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKKyAgICB7CisgICAgICAgIG1f
ZGlkU2VuZERhdGEgPSB0cnVlOworICAgICAgICBFWFBFQ1RfRVEobV9leHBlY3RlZExvYWRlciwg
bG9hZGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJVUkxMb2Fk
ZXIqIGxvYWRlciwgY29uc3QgV2ViVVJMUmVzcG9uc2UmIHJlc3BvbnNlKQorICAgIHsKKyAgICAg
ICAgbV9kaWRSZWNlaXZlUmVzcG9uc2UgPSB0cnVlOworICAgICAgICBFWFBFQ1RfRVEobV9leHBl
Y3RlZExvYWRlciwgbG9hZGVyKTsKKyAgICAgICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWRSZXNwb25z
ZS51cmwoKSwgcmVzcG9uc2UudXJsKCkpOworICAgICAgICBFWFBFQ1RfRVEobV9leHBlY3RlZFJl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOworICAg
IH0KKworICAgIHZvaWQgZGlkRG93bmxvYWREYXRhKFdlYlVSTExvYWRlciogbG9hZGVyLCBpbnQg
ZGF0YUxlbmd0aCkKKyAgICB7CisgICAgICAgIG1fZGlkRG93bmxvYWREYXRhID0gdHJ1ZTsKKyAg
ICAgICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWRMb2FkZXIsIGxvYWRlcik7CisgICAgfQorCisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShXZWJVUkxMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0
YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKKyAgICB7CisgICAgICAg
IG1fZGlkUmVjZWl2ZURhdGEgPSB0cnVlOworICAgICAgICBFWFBFQ1RfRVEobV9leHBlY3RlZExv
YWRlciwgbG9hZGVyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZGF0YSk7CisgICAgICAgIEVYUEVD
VF9HVChkYXRhTGVuZ3RoLCAwKTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVDYWNoZWRN
ZXRhZGF0YShXZWJVUkxMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpCisgICAgeworICAgICAgICBtX2RpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSA9IHRydWU7
CisgICAgICAgIEVYUEVDVF9FUShtX2V4cGVjdGVkTG9hZGVyLCBsb2FkZXIpOworICAgIH0KKwor
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJVUkxMb2FkZXIqIGxvYWRlciwgZG91YmxlIGZp
bmlzaFRpbWUpCisgICAgeworICAgICAgICBtX2RpZEZpbmlzaExvYWRpbmcgPSB0cnVlOworICAg
ICAgICBFWFBFQ1RfRVEobV9leHBlY3RlZExvYWRlciwgbG9hZGVyKTsKKyAgICB9CisKKyAgICB2
b2lkIGRpZEZhaWwoV2ViVVJMTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFdlYlVSTEVycm9yJiBlcnJv
cikKKyAgICB7CisgICAgICAgIG1fZGlkRmFpbCA9IHRydWU7CisgICAgICAgIEVYUEVDVF9FUSht
X2V4cGVjdGVkTG9hZGVyLCBsb2FkZXIpOworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UXVpdE1l
c3NhZ2VMb29wKCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgV2ViU3RyaW5nIG1fZnJhbWVG
aWxlUGF0aDsKKyAgICBUZXN0V2ViRnJhbWVDbGllbnQgbV93ZWJGcmFtZUNsaWVudDsKKyAgICBX
ZWJWaWV3KiBtX3dlYlZpZXc7CisKKyAgICBXZWJVUkxMb2FkZXIqIG1fZXhwZWN0ZWRMb2FkZXI7
CisgICAgV2ViVVJMUmVzcG9uc2UgbV9leHBlY3RlZFJlc3BvbnNlOworICAgIFdlYlVSTFJlcXVl
c3QgbV9leHBlY3RlZE5ld1JlcXVlc3Q7CisgICAgV2ViVVJMUmVzcG9uc2UgbV9leHBlY3RlZFJl
ZGlyZWN0UmVzcG9uc2U7CisgICAgYm9vbCBtX3dpbGxTZW5kUmVxdWVzdDsKKyAgICBib29sIG1f
ZGlkU2VuZERhdGE7CisgICAgYm9vbCBtX2RpZFJlY2VpdmVSZXNwb25zZTsKKyAgICBib29sIG1f
ZGlkRG93bmxvYWREYXRhOworICAgIGJvb2wgbV9kaWRSZWNlaXZlRGF0YTsKKyAgICBib29sIG1f
ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhOworICAgIGJvb2wgbV9kaWRGaW5pc2hMb2FkaW5nOwor
ICAgIGJvb2wgbV9kaWRGYWlsOworfTsKKworLy8gVGVzdCBhIHN1Y2Nlc3NmdWwgVVJMIGxvYWQu
CitURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIFN1Y2Nlc3MpCit7CisgICAgR1VSTCB1
cmwgPSBHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL3N1Y2Nlc3MuaHRtbCIpOworICAgIFdlYlVS
TFJlcXVlc3QgcmVxdWVzdDsKKyAgICByZXF1ZXN0LmluaXRpYWxpemUoKTsKKyAgICByZXF1ZXN0
LnNldFVSTCh1cmwpOworCisgICAgbV9leHBlY3RlZFJlc3BvbnNlID0gV2ViVVJMUmVzcG9uc2Uo
KTsKKyAgICBtX2V4cGVjdGVkUmVzcG9uc2UuaW5pdGlhbGl6ZSgpOworICAgIG1fZXhwZWN0ZWRS
ZXNwb25zZS5zZXRNSU1FVHlwZSgidGV4dC9odG1sIik7CisgICAgd2Via2l0X3N1cHBvcnQ6OlJl
Z2lzdGVyTW9ja2VkVVJMKHVybCwgbV9leHBlY3RlZFJlc3BvbnNlLCBtX2ZyYW1lRmlsZVBhdGgp
OworCisgICAgbV9leHBlY3RlZExvYWRlciA9IGNyZWF0ZUFzc29jaWF0ZWRVUkxMb2FkZXIoKTsK
KyAgICBFWFBFQ1RfVFJVRShtX2V4cGVjdGVkTG9hZGVyKTsKKyAgICBtX2V4cGVjdGVkTG9hZGVy
LT5sb2FkQXN5bmNocm9ub3VzbHkocmVxdWVzdCwgdGhpcyk7CisgICAgc2VydmVSZXF1ZXN0cygp
OworICAgIEVYUEVDVF9UUlVFKG1fZGlkUmVjZWl2ZVJlc3BvbnNlKTsKKyAgICBFWFBFQ1RfVFJV
RShtX2RpZFJlY2VpdmVEYXRhKTsKKyAgICBFWFBFQ1RfVFJVRShtX2RpZEZpbmlzaExvYWRpbmcp
OworfQorCisvLyBUZXN0IHRoYXQgdGhlIHNhbWUtb3JpZ2luIHJlc3RyaWN0aW9uIGlzIHRoZSBk
ZWZhdWx0LgorVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBTYW1lT3JpZ2luUmVzdHJp
Y3Rpb24pCit7CisgICAgLy8gVGhpcyBpcyBjcm9zcy1vcmlnaW4gc2luY2UgdGhlIGZyYW1lIHdh
cyBsb2FkZWQgZnJvbSB3d3cudGVzdC5jb20uCisgICAgR1VSTCB1cmwgPSBHVVJMKCJodHRwOi8v
d3d3Lm90aGVyLmNvbS9mYWlsdXJlLmh0bWwiKTsKKyAgICBXZWJVUkxSZXF1ZXN0IHJlcXVlc3Q7
CisgICAgcmVxdWVzdC5pbml0aWFsaXplKCk7CisgICAgcmVxdWVzdC5zZXRVUkwodXJsKTsKKwor
ICAgIG1fZXhwZWN0ZWRMb2FkZXIgPSBjcmVhdGVBc3NvY2lhdGVkVVJMTG9hZGVyKCk7CisgICAg
RVhQRUNUX1RSVUUobV9leHBlY3RlZExvYWRlcik7CisgICAgbV9leHBlY3RlZExvYWRlci0+bG9h
ZEFzeW5jaHJvbm91c2x5KHJlcXVlc3QsIHRoaXMpOworICAgIC8vIEZhaWx1cmUgc2hvdWxkIG5v
dCBiZSByZXBvcnRlZCBzeW5jaHJvbm91c2x5LgorICAgIEVYUEVDVF9GQUxTRShtX2RpZEZhaWwp
OworICAgIC8vIEFsbG93IHRoZSBsb2FkZXIgdG8gcmV0dXJuIHRoZSBlcnJvci4KKyAgICB3ZWJr
aXRfc3VwcG9ydDo6UnVuTWVzc2FnZUxvb3AoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2RpZEZhaWwp
OworfQorCisvLyBUZXN0IGEgc3VjY2Vzc2Z1bCBjcm9zcy1vcmlnaW4gbG9hZC4KK1RFU1RfRihB
c3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgQ3Jvc3NPcmlnaW5TdWNjZXNzKQoreworICAgIC8vIFRo
aXMgaXMgY3Jvc3Mtb3JpZ2luIHNpbmNlIHRoZSBmcmFtZSB3YXMgbG9hZGVkIGZyb20gd3d3LnRl
c3QuY29tLgorICAgIEdVUkwgdXJsID0gR1VSTCgiaHR0cDovL3d3dy5vdGhlci5jb20vc3VjY2Vz
cy5odG1sIik7CisgICAgV2ViVVJMUmVxdWVzdCByZXF1ZXN0OworICAgIHJlcXVlc3QuaW5pdGlh
bGl6ZSgpOworICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CisKKyAgICBtX2V4cGVjdGVkUmVzcG9u
c2UgPSBXZWJVUkxSZXNwb25zZSgpOworICAgIG1fZXhwZWN0ZWRSZXNwb25zZS5pbml0aWFsaXpl
KCk7CisgICAgbV9leHBlY3RlZFJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKKyAg
ICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCBtX2V4cGVjdGVkUmVzcG9u
c2UsIG1fZnJhbWVGaWxlUGF0aCk7CisKKyAgICBXZWJVUkxMb2FkZXJPcHRpb25zIG9wdGlvbnM7
CisgICAgb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPSBXZWJVUkxMb2FkZXJPcHRp
b25zOjpDcm9zc09yaWdpblJlcXVlc3RQb2xpY3lBbGxvdzsKKyAgICBtX2V4cGVjdGVkTG9hZGVy
ID0gY3JlYXRlQXNzb2NpYXRlZFVSTExvYWRlcihvcHRpb25zKTsKKyAgICBFWFBFQ1RfVFJVRSht
X2V4cGVjdGVkTG9hZGVyKTsKKyAgICBtX2V4cGVjdGVkTG9hZGVyLT5sb2FkQXN5bmNocm9ub3Vz
bHkocmVxdWVzdCwgdGhpcyk7CisgICAgc2VydmVSZXF1ZXN0cygpOworICAgIEVYUEVDVF9UUlVF
KG1fZGlkUmVjZWl2ZVJlc3BvbnNlKTsKKyAgICBFWFBFQ1RfVFJVRShtX2RpZFJlY2VpdmVEYXRh
KTsKKyAgICBFWFBFQ1RfVFJVRShtX2RpZEZpbmlzaExvYWRpbmcpOworfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96517</attachid>
            <date>2011-06-08 17:48:41 -0700</date>
            <delta_ts>2011-06-09 05:40:12 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>aul.txt</filename>
            <type>text/plain</type>
            <size>17491</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4ODQxMSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTEtMDYtMDggIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBBc3NvY2lhdGVk
VVJMTG9hZGVyIHJldHVybnMgVVJMIGFjY2VzcyBlcnJvcnMgc3luY2hyb25vdXNseS4gVXNlIGEg
dGltZXIgdG8gcmV0dXJuIHN1Y2ggZXJyb3JzIGFzeW5jaHJvbm91c2x5LiBBbHNvIGFkZCB1bml0
IHRlc3RzIGZvciBzdWNjZXNzZnVsIGxvYWRzLCBzYW1lLW9yaWdpbiByZXN0cmljdGlvbiBieSBk
ZWZhdWx0LCBhbmQgc3VjY2Vzc2Z1bCBjcm9zcy1vcmlnaW4gbG9hZHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDA1OQorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBzcmMvQXNzb2NpYXRl
ZFVSTExvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXI6OkNs
aWVudEFkYXB0ZXI6OmNsZWFyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVS
TExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6Q2xpZW50QWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6
OkFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6OmRpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpkaWRG
YWlsKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRl
cjo6ZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRl
ZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6bm90aWZ5RXJyb3IpOgorICAgICAgICAoV2ViS2l0
OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHRl
c3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlRlc3RXZWJGcmFtZUNsaWVudDo6Y2FuY2VsbGVkRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpB
c3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6QXNzb2NpYXRlZFVSTExvYWRlclRlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6U2V0VXApOgorICAgICAgICAoV2Vi
S2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6VGVhckRvd24pOgorICAgICAgICAoV2ViS2l0
OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6c2VydmVSZXF1ZXN0cyk6CisgICAgICAgIChXZWJL
aXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0OjpjcmVhdGVBc3NvY2lhdGVkVVJMTG9hZGVyKToK
KyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlclRlc3Q6OndpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0OjpkaWRTZW5kRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0OjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6ZGlk
RG93bmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlclRlc3Q6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlclRl
c3Q6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0
ZWRVUkxMb2FkZXJUZXN0OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6QXNz
b2NpYXRlZFVSTExvYWRlclRlc3Q6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0Yp
OgorCiAyMDExLTA2LTA4ICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCShyZXZpc2lvbiA4ODQxMSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cAkod29ya2luZyBjb3B5KQpAQCAtNjQ0LDYgKzY0NCw3IEBACiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICd0ZXN0cy9DQ1RocmVhZFRlc3QuY3BwJywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIyBUaGVzZSB0ZXN0cyBkZXBlbmQgb24gd2Via2l0X3N1cHBvcnQgYW5k
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZnVuY3Rpb25zIGRlZmluZWQgb25s
eSBpbiAhV0VCS0lUX0lNUExFTUVOVEFUSU9OLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAndGVzdHMvQXNzb2NpYXRlZFVSTExvYWRlclRlc3QuY3BwJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZU5ld1NlcmlhbGl6ZXJUZXN0LmNwcCcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlU2VyaWFsaXpl
clRlc3QuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQkocmV2aXNpb24g
ODg0MTEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw2ICs1Myw3IEBACiAgICAgICAgIF0sCiAgICAgICAgICd3ZWJraXRfdW5pdHRl
c3RfZmlsZXMnOiBbCiAgICAgICAgICAgICAndGVzdHMvQXJlbmFUZXN0SGVscGVycy5oJywKKyAg
ICAgICAgICAgICd0ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAnLAogICAgICAgICAg
ICAgJ3Rlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAn
dGVzdHMvQ0NUaHJlYWRUYXNrVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDVGhyZWFk
VGVzdC5jcHAnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzb2NpYXRlZFVS
TExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNz
b2NpYXRlZFVSTExvYWRlci5jcHAJKHJldmlzaW9uIDg4NDExKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvQXNzb2NpYXRlZFVSTExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNs
dWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJTdWJyZXNv
dXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiV2ViQXBwbGljYXRp
b25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJXZWJEYXRhU291cmNlLmgiCiAjaW5jbHVkZSAiV2Vi
RnJhbWVJbXBsLmgiCkBAIC01NCw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLy8gVGhp
cyBjbGFzcyBicmlkZ2VzIHRoZSBpbnRlcmZhY2UgZGlmZmVyZW5jZXMgYmV0d2VlbiBXZWJDb3Jl
IGFuZCBXZWJLaXQgbG9hZGVyIGNsaWVudHMuCiAvLyBJdCBmb3J3YXJkcyBpdHMgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCBub3RpZmljYXRpb25zIHRvIGEgV2ViVVJMTG9hZGVyQ2xpZW50LgogY2xh
c3MgQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlciA6IHB1YmxpYyBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXJDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENsaWVudEFk
YXB0ZXIpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENsaWVudEFkYXB0ZXI+IGNy
ZWF0ZShBc3NvY2lhdGVkVVJMTG9hZGVyKiwgV2ViVVJMTG9hZGVyQ2xpZW50KiwgYm9vbCAvKmRv
d25sb2FkVG9GaWxlKi8pOwogCkBAIC02OCwxNiArNzAsMjcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBib29sIGlzRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KCkgeyByZXR1cm4gdHJ1
ZTsgfQogCi0gICAgLy8gVGhpcyBtZXRob2Qgc3RvcHMgbG9hZGluZyBhbmQgcmVsZWFzZXMgdGhl
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciBhcyBlYXJseSBhcyBwb3NzaWJsZS4KLSAgICB2b2lk
IGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KKyAgICAvLyBFbmFibGVzIGZvcndhcmRp
bmcgb2YgZXJyb3Igbm90aWZpY2F0aW9ucyB0byB0aGUgV2ViVVJMTG9hZGVyQ2xpZW50LiBUaGVz
ZSBtdXN0IGJlCisgICAgLy8gZGVmZXJyZWQgdW50aWwgYWZ0ZXIgdGhlIGNhbGwgdG8gQXNzb2Np
YXRlZFVSTExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KCkgY29tcGxldGVzLgorICAgIHZvaWQg
ZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKCk7CisKKyAgICAvLyBTdG9wcyBsb2FkaW5nIGFuZCBy
ZWxlYXNlcyB0aGUgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyIGFzIGVhcmx5IGFzIHBvc3NpYmxl
LgorICAgIHZvaWQgY2xlYXJDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfSAKIAogcHJpdmF0ZToK
ICAgICBDbGllbnRBZGFwdGVyKEFzc29jaWF0ZWRVUkxMb2FkZXIqLCBXZWJVUkxMb2FkZXJDbGll
bnQqLCBib29sIC8qZG93bmxvYWRUb0ZpbGUqLyk7CiAKKyAgICB2b2lkIG5vdGlmeUVycm9yKFRp
bWVyPENsaWVudEFkYXB0ZXI+Kik7CisKICAgICBBc3NvY2lhdGVkVVJMTG9hZGVyKiBtX2xvYWRl
cjsKICAgICBXZWJVUkxMb2FkZXJDbGllbnQqIG1fY2xpZW50OworICAgIFdlYlVSTEVycm9yIG1f
ZXJyb3I7CisKKyAgICBUaW1lcjxDbGllbnRBZGFwdGVyPiBtX2Vycm9yVGltZXI7CiAgICAgdW5z
aWduZWQgbG9uZyBtX2Rvd25sb2FkTGVuZ3RoOwogICAgIGJvb2wgbV9kb3dubG9hZFRvRmlsZTsK
KyAgICBib29sIG1fZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zOworICAgIGJvb2wgbV9kaWRGYWls
OwogfTsKIAogUGFzc093blB0cjxBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyPiBB
c3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpjcmVhdGUoQXNzb2NpYXRlZFVSTExv
YWRlciogbG9hZGVyLCBXZWJVUkxMb2FkZXJDbGllbnQqIGNsaWVudCwgYm9vbCBkb3dubG9hZFRv
RmlsZSkKQEAgLTg4LDggKzEwMSwxMSBAQCBQYXNzT3duUHRyPEFzc29jaWF0ZWRVUkxMb2FkZXI6
OkNsaWVudEFkCiBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpDbGllbnRBZGFw
dGVyKEFzc29jaWF0ZWRVUkxMb2FkZXIqIGxvYWRlciwgV2ViVVJMTG9hZGVyQ2xpZW50KiBjbGll
bnQsIGJvb2wgZG93bmxvYWRUb0ZpbGUpCiAgICAgOiBtX2xvYWRlcihsb2FkZXIpCiAgICAgLCBt
X2NsaWVudChjbGllbnQpCisgICAgLCBtX2Vycm9yVGltZXIodGhpcywgJkNsaWVudEFkYXB0ZXI6
Om5vdGlmeUVycm9yKQogICAgICwgbV9kb3dubG9hZExlbmd0aCgwKQogICAgICwgbV9kb3dubG9h
ZFRvRmlsZShkb3dubG9hZFRvRmlsZSkKKyAgICAsIG1fZW5hYmxlRXJyb3JOb3RpZmljYXRpb25z
KGZhbHNlKQorICAgICwgbV9kaWRGYWlsKGZhbHNlKQogewogICAgIEFTU0VSVChtX2xvYWRlcik7
CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKQEAgLTE0NCw3ICsxNjAsNyBAQCB2b2lkIEFzc29jaWF0
ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6CiAgICAgaWYgKG1fZG93bmxvYWRUb0ZpbGUpIHsK
ICAgICAgICAgaW50IGRvd25sb2FkTGVuZ3RoID0gbV9kb3dubG9hZExlbmd0aCA8PSBJTlRfTUFY
ID8gbV9kb3dubG9hZExlbmd0aCA6IElOVF9NQVg7CiAgICAgICAgIG1fY2xpZW50LT5kaWREb3du
bG9hZERhdGEobV9sb2FkZXIsIGRvd25sb2FkTGVuZ3RoKTsKLSAgICAgICAgLy8gV2hpbGUgdGhl
IGNsaWVudCBjb3VsZCBoYXZlIGNhbmNlbGxlZCwgY29udGludWUsIHNpbmNlIHRoZSBsb2FkIGZp
bmlzaGVkLiAKKyAgICAgICAgLy8gV2hpbGUgdGhlIGNsaWVudCBjb3VsZCBoYXZlIGNhbmNlbGVk
LCBjb250aW51ZSwgc2luY2UgdGhlIGxvYWQgZmluaXNoZWQuCiAgICAgfQogCiAgICAgbV9jbGll
bnQtPmRpZEZpbmlzaExvYWRpbmcobV9sb2FkZXIsIGZpbmlzaFRpbWUpOwpAQCAtMTU1LDggKzE3
MSwyNiBAQCB2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6CiAgICAgaWYg
KCFtX2NsaWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViVVJMRXJyb3Igd2ViRXJyb3Io
ZXJyb3IpOwotICAgIG1fY2xpZW50LT5kaWRGYWlsKG1fbG9hZGVyLCB3ZWJFcnJvcik7CisgICAg
bV9kaWRGYWlsID0gdHJ1ZTsKKyAgICBtX2Vycm9yID0gV2ViVVJMRXJyb3IoZXJyb3IpOworICAg
IGlmIChtX2VuYWJsZUVycm9yTm90aWZpY2F0aW9ucykKKyAgICAgICAgbm90aWZ5RXJyb3IoJm1f
ZXJyb3JUaW1lcik7Cit9CisKK3ZvaWQgQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRl
cjo6ZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKCkKK3sKKyAgICBtX2VuYWJsZUVycm9yTm90aWZp
Y2F0aW9ucyA9IHRydWU7CisgICAgLy8gSWYgYW4gZXJyb3IgaGFzIGFscmVhZHkgYmVlbiByZWNl
aXZlZCwgc3RhcnQgYSB0aW1lciB0byByZXBvcnQgaXQgdG8gdGhlIGNsaWVudAorICAgIC8vIGFm
dGVyIEFzc29jaWF0ZWRVUkxMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseSBoYXMgcmV0dXJuZWQg
dG8gdGhlIGNhbGxlci4KKyAgICBpZiAobV9kaWRGYWlsKQorICAgICAgICBtX2Vycm9yVGltZXIu
c3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFk
YXB0ZXI6Om5vdGlmeUVycm9yKFRpbWVyPENsaWVudEFkYXB0ZXI+KiB0aW1lcikKK3sKKyAgICBB
U1NFUlQodGltZXIpOworCisgICAgbV9jbGllbnQtPmRpZEZhaWwobV9sb2FkZXIsIG1fZXJyb3Ip
OwogfQogCiBBc3NvY2lhdGVkVVJMTG9hZGVyOjpBc3NvY2lhdGVkVVJMTG9hZGVyKFBhc3NSZWZQ
dHI8V2ViRnJhbWVJbXBsPiBmcmFtZUltcGwpCkBAIC0yMTUsOCArMjQ5LDggQEAgdm9pZCBBc3Nv
Y2lhdGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNocm9ubwogICAgIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgd2ViY29yZVJlcXVlc3QgPSByZXF1ZXN0LnRvUmVzb3VyY2VSZXF1ZXN0KCk7CiAgICAgRG9j
dW1lbnQqIHdlYmNvcmVEb2N1bWVudCA9IG1fZnJhbWVJbXBsLT5mcmFtZSgpLT5kb2N1bWVudCgp
OwogICAgIG1fY2xpZW50QWRhcHRlciA9IENsaWVudEFkYXB0ZXI6OmNyZWF0ZSh0aGlzLCBtX2Ns
aWVudCwgcmVxdWVzdC5kb3dubG9hZFRvRmlsZSgpKTsKLQogICAgIG1fbG9hZGVyID0gRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUod2ViY29yZURvY3VtZW50LCBtX2NsaWVudEFkYXB0
ZXIuZ2V0KCksIHdlYmNvcmVSZXF1ZXN0LCBvcHRpb25zKTsKKyAgICBtX2NsaWVudEFkYXB0ZXIt
PmVuYWJsZUVycm9yTm90aWZpY2F0aW9ucygpOwogfQogCiB2b2lkIEFzc29jaWF0ZWRVUkxMb2Fk
ZXI6OmNhbmNlbCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Fzc29jaWF0
ZWRVUkxMb2FkZXJUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQXNzb2NpYXRlZFVSTExvYWRlclRlc3QuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDI2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
IldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJT
dHJpbmcuaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKyNpbmNsdWRlICJXZWJVUkxMb2FkZXIuaCIK
KyNpbmNsdWRlICJXZWJVUkxMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJVUkxMb2FkZXJP
cHRpb25zLmgiCisjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYlVSTFJl
c3BvbnNlLmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgorCisjaW5jbHVkZSA8Z29vZ2xldXJsL3Ny
Yy9ndXJsLmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvc3Vw
cG9ydC93ZWJraXRfc3VwcG9ydC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCituYW1l
c3BhY2UgeworCitjbGFzcyBUZXN0V2ViRnJhbWVDbGllbnQgOiBwdWJsaWMgV2ViRnJhbWVDbGll
bnQgeworICAgIC8vIFJldHVybiBhIG5vbi1udWxsIGNhbmNlbGxhdGlvbiBlcnJvciBzbyB0aGUg
V2ViRnJhbWUgbG9hZGVycyBjYW4gc2h1dCBkb3duIHdpdGhvdXQgYXNzZXJ0aW5nLgorICAgIC8v
IE1ha2UgJ3JlYXNvbicgbm9uLXplcm8gc28gV2ViVVJMRXJyb3IgaXNuJ3QgY29uc2lkZXJlZCBu
dWxsLgorICAgIFdlYlVSTEVycm9yIGNhbmNlbGxlZEVycm9yKFdlYkZyYW1lKiwgY29uc3QgV2Vi
VVJMUmVxdWVzdCYgcmVxdWVzdCkKKyAgICB7CisgICAgICAgIFdlYlVSTEVycm9yIGVycm9yOwor
ICAgICAgICBlcnJvci5yZWFzb24gPSAxOworICAgICAgICBlcnJvci51bnJlYWNoYWJsZVVSTCA9
IHJlcXVlc3QudXJsKCk7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9Cit9OworCitjbGFz
cyBBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2ViVVJMTG9hZGVyQ2xpZW50IHsKK3B1
YmxpYzoKKyAgICBBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCgpCisgICAgICAgIDogIG1fd2lsbFNl
bmRSZXF1ZXN0KGZhbHNlKQorICAgICAgICAsICBtX2RpZFNlbmREYXRhKGZhbHNlKQorICAgICAg
ICAsICBtX2RpZFJlY2VpdmVSZXNwb25zZShmYWxzZSkKKyAgICAgICAgLCAgbV9kaWRSZWNlaXZl
RGF0YShmYWxzZSkKKyAgICAgICAgLCAgbV9kaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoZmFsc2Up
CisgICAgICAgICwgIG1fZGlkRmluaXNoTG9hZGluZyhmYWxzZSkKKyAgICAgICAgLCAgbV9kaWRG
YWlsKGZhbHNlKQorICAgIHsKKyAgICAgICAgLy8gUmV1c2Ugb25lIG9mIHRoZSB0ZXN0IGZpbGVz
IGZyb20gV2ViRnJhbWVUZXN0LgorICAgICAgICBzdGQ6OnN0cmluZyBmaWxlUGF0aCA9IHdlYmtp
dF9zdXBwb3J0OjpHZXRXZWJLaXRSb290RGlyKCkudXRmOCgpOworICAgICAgICBmaWxlUGF0aCAr
PSAiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9pZnJhbWVzX3Rlc3QuaHRtbCI7
CisgICAgICAgIG1fZnJhbWVGaWxlUGF0aCA9IFdlYlN0cmluZzo6ZnJvbVVURjgoZmlsZVBhdGgp
OworICAgIH0KKworICAgIHZvaWQgU2V0VXAoKQorICAgIHsKKyAgICAgICAgbV93ZWJWaWV3ID0g
V2ViVmlldzo6Y3JlYXRlKDApOworICAgICAgICBtX3dlYlZpZXctPmluaXRpYWxpemVNYWluRnJh
bWUoJm1fd2ViRnJhbWVDbGllbnQpOworCisgICAgICAgIC8vIExvYWQgdGhlIGZyYW1lIGJlZm9y
ZSB0cnlpbmcgdG8gbG9hZCByZXNvdXJjZXMuCisgICAgICAgIEdVUkwgdXJsID0gR1VSTCgiaHR0
cDovL3d3dy50ZXN0LmNvbS9pZnJhbWVzX3Rlc3QuaHRtbCIpOworICAgICAgICBXZWJVUkxSZXNw
b25zZSByZXNwb25zZTsKKyAgICAgICAgcmVzcG9uc2UuaW5pdGlhbGl6ZSgpOworICAgICAgICBy
ZXNwb25zZS5zZXRNSU1FVHlwZSgidGV4dC9odG1sIik7CisgICAgICAgIHdlYmtpdF9zdXBwb3J0
OjpSZWdpc3Rlck1vY2tlZFVSTCh1cmwsIHJlc3BvbnNlLCBtX2ZyYW1lRmlsZVBhdGgpOworCisg
ICAgICAgIFdlYlVSTFJlcXVlc3QgcmVxdWVzdDsKKyAgICAgICAgcmVxdWVzdC5pbml0aWFsaXpl
KCk7CisgICAgICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CisgICAgICAgIG1fd2ViVmlldy0+bWFp
bkZyYW1lKCktPmxvYWRSZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICBzZXJ2ZVJlcXVlc3RzKCk7
CisKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJNb2NrZWRVUkwodXJsKTsKKyAg
ICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkKKyAgICB7CisgICAgICAgIHdlYmtpdF9zdXBwb3J0
OjpVbnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpOworICAgICAgICBtX3dlYlZpZXctPmNsb3NlKCk7
CisgICAgfQorCisgICAgdm9pZCBzZXJ2ZVJlcXVlc3RzKCkKKyAgICB7CisgICAgICAgIHdlYmtp
dF9zdXBwb3J0OjpTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgfQorCisg
ICAgV2ViVVJMTG9hZGVyKiBjcmVhdGVBc3NvY2lhdGVkVVJMTG9hZGVyKGNvbnN0IFdlYlVSTExv
YWRlck9wdGlvbnMgb3B0aW9ucyA9IFdlYlVSTExvYWRlck9wdGlvbnMoKSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX3dlYlZpZXctPm1haW5GcmFtZSgpLT5jcmVhdGVBc3NvY2lhdGVkVVJMTG9h
ZGVyKG9wdGlvbnMpOworICAgIH0KKworICAgIC8vIFdlYlVSTExvYWRlckNsaWVudCBpbXBsZW1l
bnRhdGlvbi4KKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJVUkxMb2FkZXIqIGxvYWRlciwg
V2ViVVJMUmVxdWVzdCYgbmV3UmVxdWVzdCwgY29uc3QgV2ViVVJMUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UpCisgICAgeworICAgICAgICBtX3dpbGxTZW5kUmVxdWVzdCA9IHRydWU7CisgICAg
ICAgIEVYUEVDVF9FUShtX2V4cGVjdGVkTG9hZGVyLCBsb2FkZXIpOworICAgICAgICBFWFBFQ1Rf
RVEobV9leHBlY3RlZE5ld1JlcXVlc3QudXJsKCksIG5ld1JlcXVlc3QudXJsKCkpOworICAgICAg
ICBFWFBFQ1RfRVEobV9leHBlY3RlZFJlZGlyZWN0UmVzcG9uc2UudXJsKCksIHJlZGlyZWN0UmVz
cG9uc2UudXJsKCkpOworICAgICAgICBFWFBFQ1RfRVEobV9leHBlY3RlZFJlZGlyZWN0UmVzcG9u
c2UubWltZVR5cGUoKSwgcmVkaXJlY3RSZXNwb25zZS5taW1lVHlwZSgpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKG1fZXhwZWN0ZWRSZWRpcmVjdFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlZGly
ZWN0UmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CisgICAgfQorCisgICAgdm9pZCBkaWRTZW5k
RGF0YShXZWJVUkxMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKKyAgICB7CisgICAgICAgIG1f
ZGlkU2VuZERhdGEgPSB0cnVlOworICAgICAgICBFWFBFQ1RfRVEobV9leHBlY3RlZExvYWRlciwg
bG9hZGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJVUkxMb2Fk
ZXIqIGxvYWRlciwgY29uc3QgV2ViVVJMUmVzcG9uc2UmIHJlc3BvbnNlKQorICAgIHsKKyAgICAg
ICAgbV9kaWRSZWNlaXZlUmVzcG9uc2UgPSB0cnVlOworICAgICAgICBFWFBFQ1RfRVEobV9leHBl
Y3RlZExvYWRlciwgbG9hZGVyKTsKKyAgICAgICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWRSZXNwb25z
ZS51cmwoKSwgcmVzcG9uc2UudXJsKCkpOworICAgICAgICBFWFBFQ1RfRVEobV9leHBlY3RlZFJl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOworICAg
IH0KKworICAgIHZvaWQgZGlkRG93bmxvYWREYXRhKFdlYlVSTExvYWRlciogbG9hZGVyLCBpbnQg
ZGF0YUxlbmd0aCkKKyAgICB7CisgICAgICAgIG1fZGlkRG93bmxvYWREYXRhID0gdHJ1ZTsKKyAg
ICAgICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWRMb2FkZXIsIGxvYWRlcik7CisgICAgfQorCisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShXZWJVUkxMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0
YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKKyAgICB7CisgICAgICAg
IG1fZGlkUmVjZWl2ZURhdGEgPSB0cnVlOworICAgICAgICBFWFBFQ1RfRVEobV9leHBlY3RlZExv
YWRlciwgbG9hZGVyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZGF0YSk7CisgICAgICAgIEVYUEVD
VF9HVChkYXRhTGVuZ3RoLCAwKTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVDYWNoZWRN
ZXRhZGF0YShXZWJVUkxMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpCisgICAgeworICAgICAgICBtX2RpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSA9IHRydWU7
CisgICAgICAgIEVYUEVDVF9FUShtX2V4cGVjdGVkTG9hZGVyLCBsb2FkZXIpOworICAgIH0KKwor
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJVUkxMb2FkZXIqIGxvYWRlciwgZG91YmxlIGZp
bmlzaFRpbWUpCisgICAgeworICAgICAgICBtX2RpZEZpbmlzaExvYWRpbmcgPSB0cnVlOworICAg
ICAgICBFWFBFQ1RfRVEobV9leHBlY3RlZExvYWRlciwgbG9hZGVyKTsKKyAgICB9CisKKyAgICB2
b2lkIGRpZEZhaWwoV2ViVVJMTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFdlYlVSTEVycm9yJiBlcnJv
cikKKyAgICB7CisgICAgICAgIG1fZGlkRmFpbCA9IHRydWU7CisgICAgICAgIEVYUEVDVF9FUSht
X2V4cGVjdGVkTG9hZGVyLCBsb2FkZXIpOworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UXVpdE1l
c3NhZ2VMb29wKCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgV2ViU3RyaW5nIG1fZnJhbWVG
aWxlUGF0aDsKKyAgICBUZXN0V2ViRnJhbWVDbGllbnQgbV93ZWJGcmFtZUNsaWVudDsKKyAgICBX
ZWJWaWV3KiBtX3dlYlZpZXc7CisKKyAgICBXZWJVUkxMb2FkZXIqIG1fZXhwZWN0ZWRMb2FkZXI7
CisgICAgV2ViVVJMUmVzcG9uc2UgbV9leHBlY3RlZFJlc3BvbnNlOworICAgIFdlYlVSTFJlcXVl
c3QgbV9leHBlY3RlZE5ld1JlcXVlc3Q7CisgICAgV2ViVVJMUmVzcG9uc2UgbV9leHBlY3RlZFJl
ZGlyZWN0UmVzcG9uc2U7CisgICAgYm9vbCBtX3dpbGxTZW5kUmVxdWVzdDsKKyAgICBib29sIG1f
ZGlkU2VuZERhdGE7CisgICAgYm9vbCBtX2RpZFJlY2VpdmVSZXNwb25zZTsKKyAgICBib29sIG1f
ZGlkRG93bmxvYWREYXRhOworICAgIGJvb2wgbV9kaWRSZWNlaXZlRGF0YTsKKyAgICBib29sIG1f
ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhOworICAgIGJvb2wgbV9kaWRGaW5pc2hMb2FkaW5nOwor
ICAgIGJvb2wgbV9kaWRGYWlsOworfTsKKworLy8gVGVzdCBhIHN1Y2Nlc3NmdWwgVVJMIGxvYWQu
CitURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIFN1Y2Nlc3MpCit7CisgICAgR1VSTCB1
cmwgPSBHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL3N1Y2Nlc3MuaHRtbCIpOworICAgIFdlYlVS
TFJlcXVlc3QgcmVxdWVzdDsKKyAgICByZXF1ZXN0LmluaXRpYWxpemUoKTsKKyAgICByZXF1ZXN0
LnNldFVSTCh1cmwpOworCisgICAgbV9leHBlY3RlZFJlc3BvbnNlID0gV2ViVVJMUmVzcG9uc2Uo
KTsKKyAgICBtX2V4cGVjdGVkUmVzcG9uc2UuaW5pdGlhbGl6ZSgpOworICAgIG1fZXhwZWN0ZWRS
ZXNwb25zZS5zZXRNSU1FVHlwZSgidGV4dC9odG1sIik7CisgICAgd2Via2l0X3N1cHBvcnQ6OlJl
Z2lzdGVyTW9ja2VkVVJMKHVybCwgbV9leHBlY3RlZFJlc3BvbnNlLCBtX2ZyYW1lRmlsZVBhdGgp
OworCisgICAgbV9leHBlY3RlZExvYWRlciA9IGNyZWF0ZUFzc29jaWF0ZWRVUkxMb2FkZXIoKTsK
KyAgICBFWFBFQ1RfVFJVRShtX2V4cGVjdGVkTG9hZGVyKTsKKyAgICBtX2V4cGVjdGVkTG9hZGVy
LT5sb2FkQXN5bmNocm9ub3VzbHkocmVxdWVzdCwgdGhpcyk7CisgICAgc2VydmVSZXF1ZXN0cygp
OworICAgIEVYUEVDVF9UUlVFKG1fZGlkUmVjZWl2ZVJlc3BvbnNlKTsKKyAgICBFWFBFQ1RfVFJV
RShtX2RpZFJlY2VpdmVEYXRhKTsKKyAgICBFWFBFQ1RfVFJVRShtX2RpZEZpbmlzaExvYWRpbmcp
OworfQorCisvLyBUZXN0IHRoYXQgdGhlIHNhbWUtb3JpZ2luIHJlc3RyaWN0aW9uIGlzIHRoZSBk
ZWZhdWx0LgorVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBTYW1lT3JpZ2luUmVzdHJp
Y3Rpb24pCit7CisgICAgLy8gVGhpcyBpcyBjcm9zcy1vcmlnaW4gc2luY2UgdGhlIGZyYW1lIHdh
cyBsb2FkZWQgZnJvbSB3d3cudGVzdC5jb20uCisgICAgR1VSTCB1cmwgPSBHVVJMKCJodHRwOi8v
d3d3Lm90aGVyLmNvbS9mYWlsdXJlLmh0bWwiKTsKKyAgICBXZWJVUkxSZXF1ZXN0IHJlcXVlc3Q7
CisgICAgcmVxdWVzdC5pbml0aWFsaXplKCk7CisgICAgcmVxdWVzdC5zZXRVUkwodXJsKTsKKwor
ICAgIG1fZXhwZWN0ZWRMb2FkZXIgPSBjcmVhdGVBc3NvY2lhdGVkVVJMTG9hZGVyKCk7CisgICAg
RVhQRUNUX1RSVUUobV9leHBlY3RlZExvYWRlcik7CisgICAgbV9leHBlY3RlZExvYWRlci0+bG9h
ZEFzeW5jaHJvbm91c2x5KHJlcXVlc3QsIHRoaXMpOworICAgIC8vIEZhaWx1cmUgc2hvdWxkIG5v
dCBiZSByZXBvcnRlZCBzeW5jaHJvbm91c2x5LgorICAgIEVYUEVDVF9GQUxTRShtX2RpZEZhaWwp
OworICAgIC8vIEFsbG93IHRoZSBsb2FkZXIgdG8gcmV0dXJuIHRoZSBlcnJvci4KKyAgICB3ZWJr
aXRfc3VwcG9ydDo6UnVuTWVzc2FnZUxvb3AoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2RpZEZhaWwp
OworfQorCisvLyBUZXN0IGEgc3VjY2Vzc2Z1bCBjcm9zcy1vcmlnaW4gbG9hZC4KK1RFU1RfRihB
c3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgQ3Jvc3NPcmlnaW5TdWNjZXNzKQoreworICAgIC8vIFRo
aXMgaXMgY3Jvc3Mtb3JpZ2luIHNpbmNlIHRoZSBmcmFtZSB3YXMgbG9hZGVkIGZyb20gd3d3LnRl
c3QuY29tLgorICAgIEdVUkwgdXJsID0gR1VSTCgiaHR0cDovL3d3dy5vdGhlci5jb20vc3VjY2Vz
cy5odG1sIik7CisgICAgV2ViVVJMUmVxdWVzdCByZXF1ZXN0OworICAgIHJlcXVlc3QuaW5pdGlh
bGl6ZSgpOworICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CisKKyAgICBtX2V4cGVjdGVkUmVzcG9u
c2UgPSBXZWJVUkxSZXNwb25zZSgpOworICAgIG1fZXhwZWN0ZWRSZXNwb25zZS5pbml0aWFsaXpl
KCk7CisgICAgbV9leHBlY3RlZFJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKKyAg
ICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCBtX2V4cGVjdGVkUmVzcG9u
c2UsIG1fZnJhbWVGaWxlUGF0aCk7CisKKyAgICBXZWJVUkxMb2FkZXJPcHRpb25zIG9wdGlvbnM7
CisgICAgb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPSBXZWJVUkxMb2FkZXJPcHRp
b25zOjpDcm9zc09yaWdpblJlcXVlc3RQb2xpY3lBbGxvdzsKKyAgICBtX2V4cGVjdGVkTG9hZGVy
ID0gY3JlYXRlQXNzb2NpYXRlZFVSTExvYWRlcihvcHRpb25zKTsKKyAgICBFWFBFQ1RfVFJVRSht
X2V4cGVjdGVkTG9hZGVyKTsKKyAgICBtX2V4cGVjdGVkTG9hZGVyLT5sb2FkQXN5bmNocm9ub3Vz
bHkocmVxdWVzdCwgdGhpcyk7CisgICAgc2VydmVSZXF1ZXN0cygpOworICAgIEVYUEVDVF9UUlVF
KG1fZGlkUmVjZWl2ZVJlc3BvbnNlKTsKKyAgICBFWFBFQ1RfVFJVRShtX2RpZFJlY2VpdmVEYXRh
KTsKKyAgICBFWFBFQ1RfVFJVRShtX2RpZEZpbmlzaExvYWRpbmcpOworfQorCit9Cg==
</data>
<flag name="review"
          id="90226"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="90227"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96574</attachid>
            <date>2011-06-09 05:40:12 -0700</date>
            <delta_ts>2011-06-09 09:54:12 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>aul.txt</filename>
            <type>text/plain</type>
            <size>17522</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4ODQxNCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTEtMDYtMDggIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBBc3NvY2lhdGVk
VVJMTG9hZGVyIHJldHVybnMgVVJMIGFjY2VzcyBlcnJvcnMgc3luY2hyb25vdXNseS4gVXNlIGEg
dGltZXIgdG8gcmV0dXJuIHN1Y2ggZXJyb3JzIGFzeW5jaHJvbm91c2x5LiBBbHNvIGFkZCB1bml0
IHRlc3RzIGZvciBzdWNjZXNzZnVsIGxvYWRzLCBzYW1lLW9yaWdpbiByZXN0cmljdGlvbiBieSBk
ZWZhdWx0LCBhbmQgc3VjY2Vzc2Z1bCBjcm9zcy1vcmlnaW4gbG9hZHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDA1OQorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBzcmMvQXNzb2NpYXRl
ZFVSTExvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXI6OkNs
aWVudEFkYXB0ZXI6OmNsZWFyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVS
TExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6Q2xpZW50QWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6
OkFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6OmRpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpkaWRG
YWlsKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRl
cjo6ZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRl
ZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6bm90aWZ5RXJyb3IpOgorICAgICAgICAoV2ViS2l0
OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHRl
c3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlRlc3RXZWJGcmFtZUNsaWVudDo6Y2FuY2VsbGVkRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpB
c3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6QXNzb2NpYXRlZFVSTExvYWRlclRlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6U2V0VXApOgorICAgICAgICAoV2Vi
S2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6VGVhckRvd24pOgorICAgICAgICAoV2ViS2l0
OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6c2VydmVSZXF1ZXN0cyk6CisgICAgICAgIChXZWJL
aXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0OjpjcmVhdGVBc3NvY2lhdGVkVVJMTG9hZGVyKToK
KyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlclRlc3Q6OndpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0OjpkaWRTZW5kRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0OjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6ZGlk
RG93bmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlclRlc3Q6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlclRl
c3Q6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0
ZWRVUkxMb2FkZXJUZXN0OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6QXNz
b2NpYXRlZFVSTExvYWRlclRlc3Q6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0Yp
OgorCiAyMDExLTA2LTA4ICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCShyZXZpc2lvbiA4ODQxNCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cAkod29ya2luZyBjb3B5KQpAQCAtNjQ0LDYgKzY0NCw3IEBACiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICd0ZXN0cy9DQ1RocmVhZFRlc3QuY3BwJywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIyBUaGVzZSB0ZXN0cyBkZXBlbmQgb24gd2Via2l0X3N1cHBvcnQgYW5k
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZnVuY3Rpb25zIGRlZmluZWQgb25s
eSBpbiAhV0VCS0lUX0lNUExFTUVOVEFUSU9OLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAndGVzdHMvQXNzb2NpYXRlZFVSTExvYWRlclRlc3QuY3BwJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZU5ld1NlcmlhbGl6ZXJUZXN0LmNwcCcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlU2VyaWFsaXpl
clRlc3QuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQkocmV2aXNpb24g
ODg0MTQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw2ICs1Myw3IEBACiAgICAgICAgIF0sCiAgICAgICAgICd3ZWJraXRfdW5pdHRl
c3RfZmlsZXMnOiBbCiAgICAgICAgICAgICAndGVzdHMvQXJlbmFUZXN0SGVscGVycy5oJywKKyAg
ICAgICAgICAgICd0ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAnLAogICAgICAgICAg
ICAgJ3Rlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAn
dGVzdHMvQ0NUaHJlYWRUYXNrVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDVGhyZWFk
VGVzdC5jcHAnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzb2NpYXRlZFVS
TExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNz
b2NpYXRlZFVSTExvYWRlci5jcHAJKHJldmlzaW9uIDg4NDE0KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvQXNzb2NpYXRlZFVSTExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNs
dWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJTdWJyZXNv
dXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiV2ViQXBwbGljYXRp
b25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJXZWJEYXRhU291cmNlLmgiCiAjaW5jbHVkZSAiV2Vi
RnJhbWVJbXBsLmgiCkBAIC01NCw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLy8gVGhp
cyBjbGFzcyBicmlkZ2VzIHRoZSBpbnRlcmZhY2UgZGlmZmVyZW5jZXMgYmV0d2VlbiBXZWJDb3Jl
IGFuZCBXZWJLaXQgbG9hZGVyIGNsaWVudHMuCiAvLyBJdCBmb3J3YXJkcyBpdHMgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCBub3RpZmljYXRpb25zIHRvIGEgV2ViVVJMTG9hZGVyQ2xpZW50LgogY2xh
c3MgQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlciA6IHB1YmxpYyBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXJDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENsaWVudEFk
YXB0ZXIpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENsaWVudEFkYXB0ZXI+IGNy
ZWF0ZShBc3NvY2lhdGVkVVJMTG9hZGVyKiwgV2ViVVJMTG9hZGVyQ2xpZW50KiwgYm9vbCAvKmRv
d25sb2FkVG9GaWxlKi8pOwogCkBAIC02OCwxNiArNzAsMjcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBib29sIGlzRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KCkgeyByZXR1cm4gdHJ1
ZTsgfQogCi0gICAgLy8gVGhpcyBtZXRob2Qgc3RvcHMgbG9hZGluZyBhbmQgcmVsZWFzZXMgdGhl
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciBhcyBlYXJseSBhcyBwb3NzaWJsZS4KLSAgICB2b2lk
IGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KKyAgICAvLyBFbmFibGVzIGZvcndhcmRp
bmcgb2YgZXJyb3Igbm90aWZpY2F0aW9ucyB0byB0aGUgV2ViVVJMTG9hZGVyQ2xpZW50LiBUaGVz
ZSBtdXN0IGJlCisgICAgLy8gZGVmZXJyZWQgdW50aWwgYWZ0ZXIgdGhlIGNhbGwgdG8gQXNzb2Np
YXRlZFVSTExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KCkgY29tcGxldGVzLgorICAgIHZvaWQg
ZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKCk7CisKKyAgICAvLyBTdG9wcyBsb2FkaW5nIGFuZCBy
ZWxlYXNlcyB0aGUgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyIGFzIGVhcmx5IGFzIHBvc3NpYmxl
LgorICAgIHZvaWQgY2xlYXJDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfSAKIAogcHJpdmF0ZToK
ICAgICBDbGllbnRBZGFwdGVyKEFzc29jaWF0ZWRVUkxMb2FkZXIqLCBXZWJVUkxMb2FkZXJDbGll
bnQqLCBib29sIC8qZG93bmxvYWRUb0ZpbGUqLyk7CiAKKyAgICB2b2lkIG5vdGlmeUVycm9yKFRp
bWVyPENsaWVudEFkYXB0ZXI+Kik7CisKICAgICBBc3NvY2lhdGVkVVJMTG9hZGVyKiBtX2xvYWRl
cjsKICAgICBXZWJVUkxMb2FkZXJDbGllbnQqIG1fY2xpZW50OworICAgIFdlYlVSTEVycm9yIG1f
ZXJyb3I7CisKKyAgICBUaW1lcjxDbGllbnRBZGFwdGVyPiBtX2Vycm9yVGltZXI7CiAgICAgdW5z
aWduZWQgbG9uZyBtX2Rvd25sb2FkTGVuZ3RoOwogICAgIGJvb2wgbV9kb3dubG9hZFRvRmlsZTsK
KyAgICBib29sIG1fZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zOworICAgIGJvb2wgbV9kaWRGYWls
OwogfTsKIAogUGFzc093blB0cjxBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyPiBB
c3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpjcmVhdGUoQXNzb2NpYXRlZFVSTExv
YWRlciogbG9hZGVyLCBXZWJVUkxMb2FkZXJDbGllbnQqIGNsaWVudCwgYm9vbCBkb3dubG9hZFRv
RmlsZSkKQEAgLTg4LDggKzEwMSwxMSBAQCBQYXNzT3duUHRyPEFzc29jaWF0ZWRVUkxMb2FkZXI6
OkNsaWVudEFkCiBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpDbGllbnRBZGFw
dGVyKEFzc29jaWF0ZWRVUkxMb2FkZXIqIGxvYWRlciwgV2ViVVJMTG9hZGVyQ2xpZW50KiBjbGll
bnQsIGJvb2wgZG93bmxvYWRUb0ZpbGUpCiAgICAgOiBtX2xvYWRlcihsb2FkZXIpCiAgICAgLCBt
X2NsaWVudChjbGllbnQpCisgICAgLCBtX2Vycm9yVGltZXIodGhpcywgJkNsaWVudEFkYXB0ZXI6
Om5vdGlmeUVycm9yKQogICAgICwgbV9kb3dubG9hZExlbmd0aCgwKQogICAgICwgbV9kb3dubG9h
ZFRvRmlsZShkb3dubG9hZFRvRmlsZSkKKyAgICAsIG1fZW5hYmxlRXJyb3JOb3RpZmljYXRpb25z
KGZhbHNlKQorICAgICwgbV9kaWRGYWlsKGZhbHNlKQogewogICAgIEFTU0VSVChtX2xvYWRlcik7
CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKQEAgLTE0NCw3ICsxNjAsNyBAQCB2b2lkIEFzc29jaWF0
ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6CiAgICAgaWYgKG1fZG93bmxvYWRUb0ZpbGUpIHsK
ICAgICAgICAgaW50IGRvd25sb2FkTGVuZ3RoID0gbV9kb3dubG9hZExlbmd0aCA8PSBJTlRfTUFY
ID8gbV9kb3dubG9hZExlbmd0aCA6IElOVF9NQVg7CiAgICAgICAgIG1fY2xpZW50LT5kaWREb3du
bG9hZERhdGEobV9sb2FkZXIsIGRvd25sb2FkTGVuZ3RoKTsKLSAgICAgICAgLy8gV2hpbGUgdGhl
IGNsaWVudCBjb3VsZCBoYXZlIGNhbmNlbGxlZCwgY29udGludWUsIHNpbmNlIHRoZSBsb2FkIGZp
bmlzaGVkLiAKKyAgICAgICAgLy8gV2hpbGUgdGhlIGNsaWVudCBjb3VsZCBoYXZlIGNhbmNlbGVk
LCBjb250aW51ZSwgc2luY2UgdGhlIGxvYWQgZmluaXNoZWQuCiAgICAgfQogCiAgICAgbV9jbGll
bnQtPmRpZEZpbmlzaExvYWRpbmcobV9sb2FkZXIsIGZpbmlzaFRpbWUpOwpAQCAtMTU1LDggKzE3
MSwyNiBAQCB2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6CiAgICAgaWYg
KCFtX2NsaWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViVVJMRXJyb3Igd2ViRXJyb3Io
ZXJyb3IpOwotICAgIG1fY2xpZW50LT5kaWRGYWlsKG1fbG9hZGVyLCB3ZWJFcnJvcik7CisgICAg
bV9kaWRGYWlsID0gdHJ1ZTsKKyAgICBtX2Vycm9yID0gV2ViVVJMRXJyb3IoZXJyb3IpOworICAg
IGlmIChtX2VuYWJsZUVycm9yTm90aWZpY2F0aW9ucykKKyAgICAgICAgbm90aWZ5RXJyb3IoJm1f
ZXJyb3JUaW1lcik7Cit9CisKK3ZvaWQgQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRl
cjo6ZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKCkKK3sKKyAgICBtX2VuYWJsZUVycm9yTm90aWZp
Y2F0aW9ucyA9IHRydWU7CisgICAgLy8gSWYgYW4gZXJyb3IgaGFzIGFscmVhZHkgYmVlbiByZWNl
aXZlZCwgc3RhcnQgYSB0aW1lciB0byByZXBvcnQgaXQgdG8gdGhlIGNsaWVudAorICAgIC8vIGFm
dGVyIEFzc29jaWF0ZWRVUkxMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseSBoYXMgcmV0dXJuZWQg
dG8gdGhlIGNhbGxlci4KKyAgICBpZiAobV9kaWRGYWlsKQorICAgICAgICBtX2Vycm9yVGltZXIu
c3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFk
YXB0ZXI6Om5vdGlmeUVycm9yKFRpbWVyPENsaWVudEFkYXB0ZXI+KiB0aW1lcikKK3sKKyAgICBB
U1NFUlRfVU5VU0VEKHRpbWVyID09ICZtX2Vycm9yVGltZXIsIHRpbWVyKTsKKworICAgIG1fY2xp
ZW50LT5kaWRGYWlsKG1fbG9hZGVyLCBtX2Vycm9yKTsKIH0KIAogQXNzb2NpYXRlZFVSTExvYWRl
cjo6QXNzb2NpYXRlZFVSTExvYWRlcihQYXNzUmVmUHRyPFdlYkZyYW1lSW1wbD4gZnJhbWVJbXBs
KQpAQCAtMjE1LDggKzI0OSw4IEBAIHZvaWQgQXNzb2NpYXRlZFVSTExvYWRlcjo6bG9hZEFzeW5j
aHJvbm8KICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHdlYmNvcmVSZXF1ZXN0ID0gcmVxdWVz
dC50b1Jlc291cmNlUmVxdWVzdCgpOwogICAgIERvY3VtZW50KiB3ZWJjb3JlRG9jdW1lbnQgPSBt
X2ZyYW1lSW1wbC0+ZnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICBtX2NsaWVudEFkYXB0ZXIgPSBD
bGllbnRBZGFwdGVyOjpjcmVhdGUodGhpcywgbV9jbGllbnQsIHJlcXVlc3QuZG93bmxvYWRUb0Zp
bGUoKSk7Ci0KICAgICBtX2xvYWRlciA9IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRl
KHdlYmNvcmVEb2N1bWVudCwgbV9jbGllbnRBZGFwdGVyLmdldCgpLCB3ZWJjb3JlUmVxdWVzdCwg
b3B0aW9ucyk7CisgICAgbV9jbGllbnRBZGFwdGVyLT5lbmFibGVFcnJvck5vdGlmaWNhdGlvbnMo
KTsKIH0KIAogdm9pZCBBc3NvY2lhdGVkVVJMTG9hZGVyOjpjYW5jZWwoKQpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVy
VGVzdC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Fz
c29jaWF0ZWRVUkxMb2FkZXJUZXN0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNjIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgIldl
YkZyYW1lQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVVJM
LmgiCisjaW5jbHVkZSAiV2ViVVJMTG9hZGVyLmgiCisjaW5jbHVkZSAiV2ViVVJMTG9hZGVyQ2xp
ZW50LmgiCisjaW5jbHVkZSAiV2ViVVJMTG9hZGVyT3B0aW9ucy5oIgorI2luY2x1ZGUgIldlYlVS
TFJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJVUkxSZXNwb25zZS5oIgorI2luY2x1ZGUgIldlYlZp
ZXcuaCIKKworI2luY2x1ZGUgPGdvb2dsZXVybC9zcmMvZ3VybC5oPgorI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgVGVzdFdlYkZy
YW1lQ2xpZW50IDogcHVibGljIFdlYkZyYW1lQ2xpZW50IHsKKyAgICAvLyBSZXR1cm4gYSBub24t
bnVsbCBjYW5jZWxsYXRpb24gZXJyb3Igc28gdGhlIFdlYkZyYW1lIGxvYWRlcnMgY2FuIHNodXQg
ZG93biB3aXRob3V0IGFzc2VydGluZy4KKyAgICAvLyBNYWtlICdyZWFzb24nIG5vbi16ZXJvIHNv
IFdlYlVSTEVycm9yIGlzbid0IGNvbnNpZGVyZWQgbnVsbC4KKyAgICBXZWJVUkxFcnJvciBjYW5j
ZWxsZWRFcnJvcihXZWJGcmFtZSosIGNvbnN0IFdlYlVSTFJlcXVlc3QmIHJlcXVlc3QpCisgICAg
eworICAgICAgICBXZWJVUkxFcnJvciBlcnJvcjsKKyAgICAgICAgZXJyb3IucmVhc29uID0gMTsK
KyAgICAgICAgZXJyb3IudW5yZWFjaGFibGVVUkwgPSByZXF1ZXN0LnVybCgpOworICAgICAgICBy
ZXR1cm4gZXJyb3I7CisgICAgfQorfTsKKworY2xhc3MgQXNzb2NpYXRlZFVSTExvYWRlclRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIFdlYlVSTExvYWRlckNsaWVudCB7CitwdWJsaWM6CisgICAgQXNzb2NpYXRlZFVSTExv
YWRlclRlc3QoKQorICAgICAgICA6ICBtX3dpbGxTZW5kUmVxdWVzdChmYWxzZSkKKyAgICAgICAg
LCAgbV9kaWRTZW5kRGF0YShmYWxzZSkKKyAgICAgICAgLCAgbV9kaWRSZWNlaXZlUmVzcG9uc2Uo
ZmFsc2UpCisgICAgICAgICwgIG1fZGlkUmVjZWl2ZURhdGEoZmFsc2UpCisgICAgICAgICwgIG1f
ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKGZhbHNlKQorICAgICAgICAsICBtX2RpZEZpbmlzaExv
YWRpbmcoZmFsc2UpCisgICAgICAgICwgIG1fZGlkRmFpbChmYWxzZSkKKyAgICB7CisgICAgICAg
IC8vIFJldXNlIG9uZSBvZiB0aGUgdGVzdCBmaWxlcyBmcm9tIFdlYkZyYW1lVGVzdC4KKyAgICAg
ICAgc3RkOjpzdHJpbmcgZmlsZVBhdGggPSB3ZWJraXRfc3VwcG9ydDo6R2V0V2ViS2l0Um9vdERp
cigpLnV0ZjgoKTsKKyAgICAgICAgZmlsZVBhdGggKz0gIi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL2RhdGEvaWZyYW1lc190ZXN0Lmh0bWwiOworICAgICAgICBtX2ZyYW1lRmlsZVBhdGgg
PSBXZWJTdHJpbmc6OmZyb21VVEY4KGZpbGVQYXRoKTsKKyAgICB9CisKKyAgICB2b2lkIFNldFVw
KCkKKyAgICB7CisgICAgICAgIG1fd2ViVmlldyA9IFdlYlZpZXc6OmNyZWF0ZSgwKTsKKyAgICAg
ICAgbV93ZWJWaWV3LT5pbml0aWFsaXplTWFpbkZyYW1lKCZtX3dlYkZyYW1lQ2xpZW50KTsKKwor
ICAgICAgICAvLyBMb2FkIHRoZSBmcmFtZSBiZWZvcmUgdHJ5aW5nIHRvIGxvYWQgcmVzb3VyY2Vz
LgorICAgICAgICBHVVJMIHVybCA9IEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vaWZyYW1lc190
ZXN0Lmh0bWwiKTsKKyAgICAgICAgV2ViVVJMUmVzcG9uc2UgcmVzcG9uc2U7CisgICAgICAgIHJl
c3BvbnNlLmluaXRpYWxpemUoKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0TUlNRVR5cGUoInRleHQv
aHRtbCIpOworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCBy
ZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsKKworICAgICAgICBXZWJVUkxSZXF1ZXN0IHJlcXVl
c3Q7CisgICAgICAgIHJlcXVlc3QuaW5pdGlhbGl6ZSgpOworICAgICAgICByZXF1ZXN0LnNldFVS
TCh1cmwpOworICAgICAgICBtX3dlYlZpZXctPm1haW5GcmFtZSgpLT5sb2FkUmVxdWVzdChyZXF1
ZXN0KTsKKyAgICAgICAgc2VydmVSZXF1ZXN0cygpOworCisgICAgICAgIHdlYmtpdF9zdXBwb3J0
OjpVbnJlZ2lzdGVyTW9ja2VkVVJMKHVybCk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigp
CisgICAgeworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6VW5yZWdpc3RlckFsbE1vY2tlZFVSTHMo
KTsKKyAgICAgICAgbV93ZWJWaWV3LT5jbG9zZSgpOworICAgIH0KKworICAgIHZvaWQgc2VydmVS
ZXF1ZXN0cygpCisgICAgeworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6U2VydmVBc3luY2hyb25v
dXNNb2NrZWRSZXF1ZXN0cygpOworICAgIH0KKworICAgIFdlYlVSTExvYWRlciogY3JlYXRlQXNz
b2NpYXRlZFVSTExvYWRlcihjb25zdCBXZWJVUkxMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBXZWJV
UkxMb2FkZXJPcHRpb25zKCkpCisgICAgeworICAgICAgICByZXR1cm4gbV93ZWJWaWV3LT5tYWlu
RnJhbWUoKS0+Y3JlYXRlQXNzb2NpYXRlZFVSTExvYWRlcihvcHRpb25zKTsKKyAgICB9CisKKyAg
ICAvLyBXZWJVUkxMb2FkZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCisgICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoV2ViVVJMTG9hZGVyKiBsb2FkZXIsIFdlYlVSTFJlcXVlc3QmIG5ld1JlcXVlc3Qs
IGNvbnN0IFdlYlVSTFJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQorICAgIHsKKyAgICAgICAg
bV93aWxsU2VuZFJlcXVlc3QgPSB0cnVlOworICAgICAgICBFWFBFQ1RfRVEobV9leHBlY3RlZExv
YWRlciwgbG9hZGVyKTsKKyAgICAgICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWROZXdSZXF1ZXN0LnVy
bCgpLCBuZXdSZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWRSZWRp
cmVjdFJlc3BvbnNlLnVybCgpLCByZWRpcmVjdFJlc3BvbnNlLnVybCgpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKG1fZXhwZWN0ZWRSZWRpcmVjdFJlc3BvbnNlLm1pbWVUeXBlKCksIHJlZGlyZWN0UmVz
cG9uc2UubWltZVR5cGUoKSk7CisgICAgICAgIEVYUEVDVF9FUShtX2V4cGVjdGVkUmVkaXJlY3RS
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZWRpcmVjdFJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkpOworICAgIH0KKworICAgIHZvaWQgZGlkU2VuZERhdGEoV2ViVVJMTG9hZGVyKiBsb2FkZXIs
IHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5
dGVzVG9CZVNlbnQpCisgICAgeworICAgICAgICBtX2RpZFNlbmREYXRhID0gdHJ1ZTsKKyAgICAg
ICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWRMb2FkZXIsIGxvYWRlcik7CisgICAgfQorCisgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViVVJMTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFdlYlVSTFJl
c3BvbnNlJiByZXNwb25zZSkKKyAgICB7CisgICAgICAgIG1fZGlkUmVjZWl2ZVJlc3BvbnNlID0g
dHJ1ZTsKKyAgICAgICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWRMb2FkZXIsIGxvYWRlcik7CisgICAg
ICAgIEVYUEVDVF9FUShtX2V4cGVjdGVkUmVzcG9uc2UudXJsKCksIHJlc3BvbnNlLnVybCgpKTsK
KyAgICAgICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWRSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCBy
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGRpZERvd25sb2Fk
RGF0YShXZWJVUkxMb2FkZXIqIGxvYWRlciwgaW50IGRhdGFMZW5ndGgpCisgICAgeworICAgICAg
ICBtX2RpZERvd25sb2FkRGF0YSA9IHRydWU7CisgICAgICAgIEVYUEVDVF9FUShtX2V4cGVjdGVk
TG9hZGVyLCBsb2FkZXIpOworICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViVVJM
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpCisgICAgeworICAgICAgICBtX2RpZFJlY2VpdmVEYXRhID0gdHJ1ZTsK
KyAgICAgICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWRMb2FkZXIsIGxvYWRlcik7CisgICAgICAgIEVY
UEVDVF9UUlVFKGRhdGEpOworICAgICAgICBFWFBFQ1RfR1QoZGF0YUxlbmd0aCwgMCk7CisgICAg
fQorCisgICAgdm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoV2ViVVJMTG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQorICAgIHsKKyAgICAgICAgbV9k
aWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEgPSB0cnVlOworICAgICAgICBFWFBFQ1RfRVEobV9leHBl
Y3RlZExvYWRlciwgbG9hZGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmco
V2ViVVJMTG9hZGVyKiBsb2FkZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQorICAgIHsKKyAgICAgICAg
bV9kaWRGaW5pc2hMb2FkaW5nID0gdHJ1ZTsKKyAgICAgICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWRM
b2FkZXIsIGxvYWRlcik7CisgICAgfQorCisgICAgdm9pZCBkaWRGYWlsKFdlYlVSTExvYWRlciog
bG9hZGVyLCBjb25zdCBXZWJVUkxFcnJvciYgZXJyb3IpCisgICAgeworICAgICAgICBtX2RpZEZh
aWwgPSB0cnVlOworICAgICAgICBFWFBFQ1RfRVEobV9leHBlY3RlZExvYWRlciwgbG9hZGVyKTsK
KyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlF1aXRNZXNzYWdlTG9vcCgpOworICAgIH0KKworcHJv
dGVjdGVkOgorICAgIFdlYlN0cmluZyBtX2ZyYW1lRmlsZVBhdGg7CisgICAgVGVzdFdlYkZyYW1l
Q2xpZW50IG1fd2ViRnJhbWVDbGllbnQ7CisgICAgV2ViVmlldyogbV93ZWJWaWV3OworCisgICAg
V2ViVVJMTG9hZGVyKiBtX2V4cGVjdGVkTG9hZGVyOworICAgIFdlYlVSTFJlc3BvbnNlIG1fZXhw
ZWN0ZWRSZXNwb25zZTsKKyAgICBXZWJVUkxSZXF1ZXN0IG1fZXhwZWN0ZWROZXdSZXF1ZXN0Owor
ICAgIFdlYlVSTFJlc3BvbnNlIG1fZXhwZWN0ZWRSZWRpcmVjdFJlc3BvbnNlOworICAgIGJvb2wg
bV93aWxsU2VuZFJlcXVlc3Q7CisgICAgYm9vbCBtX2RpZFNlbmREYXRhOworICAgIGJvb2wgbV9k
aWRSZWNlaXZlUmVzcG9uc2U7CisgICAgYm9vbCBtX2RpZERvd25sb2FkRGF0YTsKKyAgICBib29s
IG1fZGlkUmVjZWl2ZURhdGE7CisgICAgYm9vbCBtX2RpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YTsK
KyAgICBib29sIG1fZGlkRmluaXNoTG9hZGluZzsKKyAgICBib29sIG1fZGlkRmFpbDsKK307CisK
Ky8vIFRlc3QgYSBzdWNjZXNzZnVsIFVSTCBsb2FkLgorVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2Fk
ZXJUZXN0LCBTdWNjZXNzKQoreworICAgIEdVUkwgdXJsID0gR1VSTCgiaHR0cDovL3d3dy50ZXN0
LmNvbS9zdWNjZXNzLmh0bWwiKTsKKyAgICBXZWJVUkxSZXF1ZXN0IHJlcXVlc3Q7CisgICAgcmVx
dWVzdC5pbml0aWFsaXplKCk7CisgICAgcmVxdWVzdC5zZXRVUkwodXJsKTsKKworICAgIG1fZXhw
ZWN0ZWRSZXNwb25zZSA9IFdlYlVSTFJlc3BvbnNlKCk7CisgICAgbV9leHBlY3RlZFJlc3BvbnNl
LmluaXRpYWxpemUoKTsKKyAgICBtX2V4cGVjdGVkUmVzcG9uc2Uuc2V0TUlNRVR5cGUoInRleHQv
aHRtbCIpOworICAgIHdlYmtpdF9zdXBwb3J0OjpSZWdpc3Rlck1vY2tlZFVSTCh1cmwsIG1fZXhw
ZWN0ZWRSZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsKKworICAgIG1fZXhwZWN0ZWRMb2FkZXIg
PSBjcmVhdGVBc3NvY2lhdGVkVVJMTG9hZGVyKCk7CisgICAgRVhQRUNUX1RSVUUobV9leHBlY3Rl
ZExvYWRlcik7CisgICAgbV9leHBlY3RlZExvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KHJlcXVl
c3QsIHRoaXMpOworICAgIHNlcnZlUmVxdWVzdHMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2RpZFJl
Y2VpdmVSZXNwb25zZSk7CisgICAgRVhQRUNUX1RSVUUobV9kaWRSZWNlaXZlRGF0YSk7CisgICAg
RVhQRUNUX1RSVUUobV9kaWRGaW5pc2hMb2FkaW5nKTsKK30KKworLy8gVGVzdCB0aGF0IHRoZSBz
YW1lLW9yaWdpbiByZXN0cmljdGlvbiBpcyB0aGUgZGVmYXVsdC4KK1RFU1RfRihBc3NvY2lhdGVk
VVJMTG9hZGVyVGVzdCwgU2FtZU9yaWdpblJlc3RyaWN0aW9uKQoreworICAgIC8vIFRoaXMgaXMg
Y3Jvc3Mtb3JpZ2luIHNpbmNlIHRoZSBmcmFtZSB3YXMgbG9hZGVkIGZyb20gd3d3LnRlc3QuY29t
LgorICAgIEdVUkwgdXJsID0gR1VSTCgiaHR0cDovL3d3dy5vdGhlci5jb20vZmFpbHVyZS5odG1s
Iik7CisgICAgV2ViVVJMUmVxdWVzdCByZXF1ZXN0OworICAgIHJlcXVlc3QuaW5pdGlhbGl6ZSgp
OworICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CisKKyAgICBtX2V4cGVjdGVkTG9hZGVyID0gY3Jl
YXRlQXNzb2NpYXRlZFVSTExvYWRlcigpOworICAgIEVYUEVDVF9UUlVFKG1fZXhwZWN0ZWRMb2Fk
ZXIpOworICAgIG1fZXhwZWN0ZWRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseShyZXF1ZXN0LCB0
aGlzKTsKKyAgICAvLyBGYWlsdXJlIHNob3VsZCBub3QgYmUgcmVwb3J0ZWQgc3luY2hyb25vdXNs
eS4KKyAgICBFWFBFQ1RfRkFMU0UobV9kaWRGYWlsKTsKKyAgICAvLyBBbGxvdyB0aGUgbG9hZGVy
IHRvIHJldHVybiB0aGUgZXJyb3IuCisgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bk1lc3NhZ2VMb29w
KCk7CisgICAgRVhQRUNUX1RSVUUobV9kaWRGYWlsKTsKK30KKworLy8gVGVzdCBhIHN1Y2Nlc3Nm
dWwgY3Jvc3Mtb3JpZ2luIGxvYWQuCitURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIENy
b3NzT3JpZ2luU3VjY2VzcykKK3sKKyAgICAvLyBUaGlzIGlzIGNyb3NzLW9yaWdpbiBzaW5jZSB0
aGUgZnJhbWUgd2FzIGxvYWRlZCBmcm9tIHd3dy50ZXN0LmNvbS4KKyAgICBHVVJMIHVybCA9IEdV
UkwoImh0dHA6Ly93d3cub3RoZXIuY29tL3N1Y2Nlc3MuaHRtbCIpOworICAgIFdlYlVSTFJlcXVl
c3QgcmVxdWVzdDsKKyAgICByZXF1ZXN0LmluaXRpYWxpemUoKTsKKyAgICByZXF1ZXN0LnNldFVS
TCh1cmwpOworCisgICAgbV9leHBlY3RlZFJlc3BvbnNlID0gV2ViVVJMUmVzcG9uc2UoKTsKKyAg
ICBtX2V4cGVjdGVkUmVzcG9uc2UuaW5pdGlhbGl6ZSgpOworICAgIG1fZXhwZWN0ZWRSZXNwb25z
ZS5zZXRNSU1FVHlwZSgidGV4dC9odG1sIik7CisgICAgd2Via2l0X3N1cHBvcnQ6OlJlZ2lzdGVy
TW9ja2VkVVJMKHVybCwgbV9leHBlY3RlZFJlc3BvbnNlLCBtX2ZyYW1lRmlsZVBhdGgpOworCisg
ICAgV2ViVVJMTG9hZGVyT3B0aW9ucyBvcHRpb25zOworICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5S
ZXF1ZXN0UG9saWN5ID0gV2ViVVJMTG9hZGVyT3B0aW9uczo6Q3Jvc3NPcmlnaW5SZXF1ZXN0UG9s
aWN5QWxsb3c7CisgICAgbV9leHBlY3RlZExvYWRlciA9IGNyZWF0ZUFzc29jaWF0ZWRVUkxMb2Fk
ZXIob3B0aW9ucyk7CisgICAgRVhQRUNUX1RSVUUobV9leHBlY3RlZExvYWRlcik7CisgICAgbV9l
eHBlY3RlZExvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KHJlcXVlc3QsIHRoaXMpOworICAgIHNl
cnZlUmVxdWVzdHMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2RpZFJlY2VpdmVSZXNwb25zZSk7Cisg
ICAgRVhQRUNUX1RSVUUobV9kaWRSZWNlaXZlRGF0YSk7CisgICAgRVhQRUNUX1RSVUUobV9kaWRG
aW5pc2hMb2FkaW5nKTsKK30KKworfQo=
</data>
<flag name="commit-queue"
          id="90298"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96599</attachid>
            <date>2011-06-09 09:54:12 -0700</date>
            <delta_ts>2011-06-09 10:47:38 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>aul.txt</filename>
            <type>text/plain</type>
            <size>17508</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4ODQxNCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTEtMDYtMDggIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBBc3NvY2lhdGVk
VVJMTG9hZGVyIHJldHVybnMgVVJMIGFjY2VzcyBlcnJvcnMgc3luY2hyb25vdXNseS4gVXNlIGEg
dGltZXIgdG8gcmV0dXJuIHN1Y2ggZXJyb3JzIGFzeW5jaHJvbm91c2x5LiBBbHNvIGFkZCB1bml0
IHRlc3RzIGZvciBzdWNjZXNzZnVsIGxvYWRzLCBzYW1lLW9yaWdpbiByZXN0cmljdGlvbiBieSBk
ZWZhdWx0LCBhbmQgc3VjY2Vzc2Z1bCBjcm9zcy1vcmlnaW4gbG9hZHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDA1OQorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBzcmMvQXNzb2NpYXRl
ZFVSTExvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXI6OkNs
aWVudEFkYXB0ZXI6OmNsZWFyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVS
TExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6Q2xpZW50QWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6
OkFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6OmRpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpkaWRG
YWlsKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRl
cjo6ZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRl
ZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6bm90aWZ5RXJyb3IpOgorICAgICAgICAoV2ViS2l0
OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHRl
c3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlRlc3RXZWJGcmFtZUNsaWVudDo6Y2FuY2VsbGVkRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpB
c3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6QXNzb2NpYXRlZFVSTExvYWRlclRlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6U2V0VXApOgorICAgICAgICAoV2Vi
S2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6VGVhckRvd24pOgorICAgICAgICAoV2ViS2l0
OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6c2VydmVSZXF1ZXN0cyk6CisgICAgICAgIChXZWJL
aXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0OjpjcmVhdGVBc3NvY2lhdGVkVVJMTG9hZGVyKToK
KyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlclRlc3Q6OndpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0OjpkaWRTZW5kRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0OjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6ZGlk
RG93bmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlclRlc3Q6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlclRl
c3Q6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0
ZWRVUkxMb2FkZXJUZXN0OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6QXNz
b2NpYXRlZFVSTExvYWRlclRlc3Q6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0Yp
OgorCiAyMDExLTA2LTA4ICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCShyZXZpc2lvbiA4ODQxNCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cAkod29ya2luZyBjb3B5KQpAQCAtNjQ0LDYgKzY0NCw3IEBACiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICd0ZXN0cy9DQ1RocmVhZFRlc3QuY3BwJywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIyBUaGVzZSB0ZXN0cyBkZXBlbmQgb24gd2Via2l0X3N1cHBvcnQgYW5k
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZnVuY3Rpb25zIGRlZmluZWQgb25s
eSBpbiAhV0VCS0lUX0lNUExFTUVOVEFUSU9OLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAndGVzdHMvQXNzb2NpYXRlZFVSTExvYWRlclRlc3QuY3BwJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZU5ld1NlcmlhbGl6ZXJUZXN0LmNwcCcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlU2VyaWFsaXpl
clRlc3QuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQkocmV2aXNpb24g
ODg0MTQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw2ICs1Myw3IEBACiAgICAgICAgIF0sCiAgICAgICAgICd3ZWJraXRfdW5pdHRl
c3RfZmlsZXMnOiBbCiAgICAgICAgICAgICAndGVzdHMvQXJlbmFUZXN0SGVscGVycy5oJywKKyAg
ICAgICAgICAgICd0ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAnLAogICAgICAgICAg
ICAgJ3Rlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAn
dGVzdHMvQ0NUaHJlYWRUYXNrVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDVGhyZWFk
VGVzdC5jcHAnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzb2NpYXRlZFVS
TExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNz
b2NpYXRlZFVSTExvYWRlci5jcHAJKHJldmlzaW9uIDg4NDE0KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvQXNzb2NpYXRlZFVSTExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNs
dWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJTdWJyZXNv
dXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiV2ViQXBwbGljYXRp
b25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJXZWJEYXRhU291cmNlLmgiCiAjaW5jbHVkZSAiV2Vi
RnJhbWVJbXBsLmgiCkBAIC01NCw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLy8gVGhp
cyBjbGFzcyBicmlkZ2VzIHRoZSBpbnRlcmZhY2UgZGlmZmVyZW5jZXMgYmV0d2VlbiBXZWJDb3Jl
IGFuZCBXZWJLaXQgbG9hZGVyIGNsaWVudHMuCiAvLyBJdCBmb3J3YXJkcyBpdHMgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCBub3RpZmljYXRpb25zIHRvIGEgV2ViVVJMTG9hZGVyQ2xpZW50LgogY2xh
c3MgQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlciA6IHB1YmxpYyBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXJDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENsaWVudEFk
YXB0ZXIpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENsaWVudEFkYXB0ZXI+IGNy
ZWF0ZShBc3NvY2lhdGVkVVJMTG9hZGVyKiwgV2ViVVJMTG9hZGVyQ2xpZW50KiwgYm9vbCAvKmRv
d25sb2FkVG9GaWxlKi8pOwogCkBAIC02OCwxNiArNzAsMjcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBib29sIGlzRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KCkgeyByZXR1cm4gdHJ1
ZTsgfQogCi0gICAgLy8gVGhpcyBtZXRob2Qgc3RvcHMgbG9hZGluZyBhbmQgcmVsZWFzZXMgdGhl
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciBhcyBlYXJseSBhcyBwb3NzaWJsZS4KLSAgICB2b2lk
IGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KKyAgICAvLyBFbmFibGVzIGZvcndhcmRp
bmcgb2YgZXJyb3Igbm90aWZpY2F0aW9ucyB0byB0aGUgV2ViVVJMTG9hZGVyQ2xpZW50LiBUaGVz
ZSBtdXN0IGJlCisgICAgLy8gZGVmZXJyZWQgdW50aWwgYWZ0ZXIgdGhlIGNhbGwgdG8gQXNzb2Np
YXRlZFVSTExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KCkgY29tcGxldGVzLgorICAgIHZvaWQg
ZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKCk7CisKKyAgICAvLyBTdG9wcyBsb2FkaW5nIGFuZCBy
ZWxlYXNlcyB0aGUgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyIGFzIGVhcmx5IGFzIHBvc3NpYmxl
LgorICAgIHZvaWQgY2xlYXJDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfSAKIAogcHJpdmF0ZToK
ICAgICBDbGllbnRBZGFwdGVyKEFzc29jaWF0ZWRVUkxMb2FkZXIqLCBXZWJVUkxMb2FkZXJDbGll
bnQqLCBib29sIC8qZG93bmxvYWRUb0ZpbGUqLyk7CiAKKyAgICB2b2lkIG5vdGlmeUVycm9yKFRp
bWVyPENsaWVudEFkYXB0ZXI+Kik7CisKICAgICBBc3NvY2lhdGVkVVJMTG9hZGVyKiBtX2xvYWRl
cjsKICAgICBXZWJVUkxMb2FkZXJDbGllbnQqIG1fY2xpZW50OworICAgIFdlYlVSTEVycm9yIG1f
ZXJyb3I7CisKKyAgICBUaW1lcjxDbGllbnRBZGFwdGVyPiBtX2Vycm9yVGltZXI7CiAgICAgdW5z
aWduZWQgbG9uZyBtX2Rvd25sb2FkTGVuZ3RoOwogICAgIGJvb2wgbV9kb3dubG9hZFRvRmlsZTsK
KyAgICBib29sIG1fZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zOworICAgIGJvb2wgbV9kaWRGYWls
OwogfTsKIAogUGFzc093blB0cjxBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyPiBB
c3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpjcmVhdGUoQXNzb2NpYXRlZFVSTExv
YWRlciogbG9hZGVyLCBXZWJVUkxMb2FkZXJDbGllbnQqIGNsaWVudCwgYm9vbCBkb3dubG9hZFRv
RmlsZSkKQEAgLTg4LDggKzEwMSwxMSBAQCBQYXNzT3duUHRyPEFzc29jaWF0ZWRVUkxMb2FkZXI6
OkNsaWVudEFkCiBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpDbGllbnRBZGFw
dGVyKEFzc29jaWF0ZWRVUkxMb2FkZXIqIGxvYWRlciwgV2ViVVJMTG9hZGVyQ2xpZW50KiBjbGll
bnQsIGJvb2wgZG93bmxvYWRUb0ZpbGUpCiAgICAgOiBtX2xvYWRlcihsb2FkZXIpCiAgICAgLCBt
X2NsaWVudChjbGllbnQpCisgICAgLCBtX2Vycm9yVGltZXIodGhpcywgJkNsaWVudEFkYXB0ZXI6
Om5vdGlmeUVycm9yKQogICAgICwgbV9kb3dubG9hZExlbmd0aCgwKQogICAgICwgbV9kb3dubG9h
ZFRvRmlsZShkb3dubG9hZFRvRmlsZSkKKyAgICAsIG1fZW5hYmxlRXJyb3JOb3RpZmljYXRpb25z
KGZhbHNlKQorICAgICwgbV9kaWRGYWlsKGZhbHNlKQogewogICAgIEFTU0VSVChtX2xvYWRlcik7
CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKQEAgLTE0NCw3ICsxNjAsNyBAQCB2b2lkIEFzc29jaWF0
ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6CiAgICAgaWYgKG1fZG93bmxvYWRUb0ZpbGUpIHsK
ICAgICAgICAgaW50IGRvd25sb2FkTGVuZ3RoID0gbV9kb3dubG9hZExlbmd0aCA8PSBJTlRfTUFY
ID8gbV9kb3dubG9hZExlbmd0aCA6IElOVF9NQVg7CiAgICAgICAgIG1fY2xpZW50LT5kaWREb3du
bG9hZERhdGEobV9sb2FkZXIsIGRvd25sb2FkTGVuZ3RoKTsKLSAgICAgICAgLy8gV2hpbGUgdGhl
IGNsaWVudCBjb3VsZCBoYXZlIGNhbmNlbGxlZCwgY29udGludWUsIHNpbmNlIHRoZSBsb2FkIGZp
bmlzaGVkLiAKKyAgICAgICAgLy8gV2hpbGUgdGhlIGNsaWVudCBjb3VsZCBoYXZlIGNhbmNlbGVk
LCBjb250aW51ZSwgc2luY2UgdGhlIGxvYWQgZmluaXNoZWQuCiAgICAgfQogCiAgICAgbV9jbGll
bnQtPmRpZEZpbmlzaExvYWRpbmcobV9sb2FkZXIsIGZpbmlzaFRpbWUpOwpAQCAtMTU1LDggKzE3
MSwyNiBAQCB2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6CiAgICAgaWYg
KCFtX2NsaWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViVVJMRXJyb3Igd2ViRXJyb3Io
ZXJyb3IpOwotICAgIG1fY2xpZW50LT5kaWRGYWlsKG1fbG9hZGVyLCB3ZWJFcnJvcik7CisgICAg
bV9kaWRGYWlsID0gdHJ1ZTsKKyAgICBtX2Vycm9yID0gV2ViVVJMRXJyb3IoZXJyb3IpOworICAg
IGlmIChtX2VuYWJsZUVycm9yTm90aWZpY2F0aW9ucykKKyAgICAgICAgbm90aWZ5RXJyb3IoJm1f
ZXJyb3JUaW1lcik7Cit9CisKK3ZvaWQgQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRl
cjo6ZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKCkKK3sKKyAgICBtX2VuYWJsZUVycm9yTm90aWZp
Y2F0aW9ucyA9IHRydWU7CisgICAgLy8gSWYgYW4gZXJyb3IgaGFzIGFscmVhZHkgYmVlbiByZWNl
aXZlZCwgc3RhcnQgYSB0aW1lciB0byByZXBvcnQgaXQgdG8gdGhlIGNsaWVudAorICAgIC8vIGFm
dGVyIEFzc29jaWF0ZWRVUkxMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseSBoYXMgcmV0dXJuZWQg
dG8gdGhlIGNhbGxlci4KKyAgICBpZiAobV9kaWRGYWlsKQorICAgICAgICBtX2Vycm9yVGltZXIu
c3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFk
YXB0ZXI6Om5vdGlmeUVycm9yKFRpbWVyPENsaWVudEFkYXB0ZXI+KiB0aW1lcikKK3sKKyAgICBB
U1NFUlQodGltZXIgPT0gJm1fZXJyb3JUaW1lcik7CisKKyAgICBtX2NsaWVudC0+ZGlkRmFpbCht
X2xvYWRlciwgbV9lcnJvcik7CiB9CiAKIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkFzc29jaWF0ZWRV
UkxMb2FkZXIoUGFzc1JlZlB0cjxXZWJGcmFtZUltcGw+IGZyYW1lSW1wbCkKQEAgLTIxNSw4ICsy
NDksOCBAQCB2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OmxvYWRBc3luY2hyb25vCiAgICAgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiB3ZWJjb3JlUmVxdWVzdCA9IHJlcXVlc3QudG9SZXNvdXJjZVJl
cXVlc3QoKTsKICAgICBEb2N1bWVudCogd2ViY29yZURvY3VtZW50ID0gbV9mcmFtZUltcGwtPmZy
YW1lKCktPmRvY3VtZW50KCk7CiAgICAgbV9jbGllbnRBZGFwdGVyID0gQ2xpZW50QWRhcHRlcjo6
Y3JlYXRlKHRoaXMsIG1fY2xpZW50LCByZXF1ZXN0LmRvd25sb2FkVG9GaWxlKCkpOwotCiAgICAg
bV9sb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3ZWJjb3JlRG9jdW1l
bnQsIG1fY2xpZW50QWRhcHRlci5nZXQoKSwgd2ViY29yZVJlcXVlc3QsIG9wdGlvbnMpOworICAg
IG1fY2xpZW50QWRhcHRlci0+ZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKCk7CiB9CiAKIHZvaWQg
QXNzb2NpYXRlZFVSTExvYWRlcjo6Y2FuY2VsKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQXNzb2NpYXRlZFVSTExvYWRlclRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQXNzb2NpYXRlZFVSTExvYWRlclRlc3QuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Bc3NvY2lhdGVkVVJMTG9h
ZGVyVGVzdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5o
IgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlVSTC5oIgorI2luY2x1ZGUg
IldlYlVSTExvYWRlci5oIgorI2luY2x1ZGUgIldlYlVSTExvYWRlckNsaWVudC5oIgorI2luY2x1
ZGUgIldlYlVSTExvYWRlck9wdGlvbnMuaCIKKyNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0LmgiCisj
aW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJXZWJWaWV3LmgiCisKKyNpbmNs
dWRlIDxnb29nbGV1cmwvc3JjL2d1cmwuaD4KKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2lu
Y2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIFRlc3RXZWJGcmFtZUNsaWVudCA6IHB1
YmxpYyBXZWJGcmFtZUNsaWVudCB7CisgICAgLy8gUmV0dXJuIGEgbm9uLW51bGwgY2FuY2VsbGF0
aW9uIGVycm9yIHNvIHRoZSBXZWJGcmFtZSBsb2FkZXJzIGNhbiBzaHV0IGRvd24gd2l0aG91dCBh
c3NlcnRpbmcuCisgICAgLy8gTWFrZSAncmVhc29uJyBub24temVybyBzbyBXZWJVUkxFcnJvciBp
c24ndCBjb25zaWRlcmVkIG51bGwuCisgICAgV2ViVVJMRXJyb3IgY2FuY2VsbGVkRXJyb3IoV2Vi
RnJhbWUqLCBjb25zdCBXZWJVUkxSZXF1ZXN0JiByZXF1ZXN0KQorICAgIHsKKyAgICAgICAgV2Vi
VVJMRXJyb3IgZXJyb3I7CisgICAgICAgIGVycm9yLnJlYXNvbiA9IDE7CisgICAgICAgIGVycm9y
LnVucmVhY2hhYmxlVVJMID0gcmVxdWVzdC51cmwoKTsKKyAgICAgICAgcmV0dXJuIGVycm9yOwor
ICAgIH0KK307CisKK2NsYXNzIEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJVUkxM
b2FkZXJDbGllbnQgeworcHVibGljOgorICAgIEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0KCkKKyAg
ICAgICAgOiAgbV93aWxsU2VuZFJlcXVlc3QoZmFsc2UpCisgICAgICAgICwgIG1fZGlkU2VuZERh
dGEoZmFsc2UpCisgICAgICAgICwgIG1fZGlkUmVjZWl2ZVJlc3BvbnNlKGZhbHNlKQorICAgICAg
ICAsICBtX2RpZFJlY2VpdmVEYXRhKGZhbHNlKQorICAgICAgICAsICBtX2RpZFJlY2VpdmVDYWNo
ZWRNZXRhZGF0YShmYWxzZSkKKyAgICAgICAgLCAgbV9kaWRGaW5pc2hMb2FkaW5nKGZhbHNlKQor
ICAgICAgICAsICBtX2RpZEZhaWwoZmFsc2UpCisgICAgeworICAgICAgICAvLyBSZXVzZSBvbmUg
b2YgdGhlIHRlc3QgZmlsZXMgZnJvbSBXZWJGcmFtZVRlc3QuCisgICAgICAgIHN0ZDo6c3RyaW5n
IGZpbGVQYXRoID0gd2Via2l0X3N1cHBvcnQ6OkdldFdlYktpdFJvb3REaXIoKS51dGY4KCk7Cisg
ICAgICAgIGZpbGVQYXRoICs9ICIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2lm
cmFtZXNfdGVzdC5odG1sIjsKKyAgICAgICAgbV9mcmFtZUZpbGVQYXRoID0gV2ViU3RyaW5nOjpm
cm9tVVRGOChmaWxlUGF0aCk7CisgICAgfQorCisgICAgdm9pZCBTZXRVcCgpCisgICAgeworICAg
ICAgICBtX3dlYlZpZXcgPSBXZWJWaWV3OjpjcmVhdGUoMCk7CisgICAgICAgIG1fd2ViVmlldy0+
aW5pdGlhbGl6ZU1haW5GcmFtZSgmbV93ZWJGcmFtZUNsaWVudCk7CisKKyAgICAgICAgLy8gTG9h
ZCB0aGUgZnJhbWUgYmVmb3JlIHRyeWluZyB0byBsb2FkIHJlc291cmNlcy4KKyAgICAgICAgR1VS
TCB1cmwgPSBHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL2lmcmFtZXNfdGVzdC5odG1sIik7Cisg
ICAgICAgIFdlYlVSTFJlc3BvbnNlIHJlc3BvbnNlOworICAgICAgICByZXNwb25zZS5pbml0aWFs
aXplKCk7CisgICAgICAgIHJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKKyAgICAg
ICAgd2Via2l0X3N1cHBvcnQ6OlJlZ2lzdGVyTW9ja2VkVVJMKHVybCwgcmVzcG9uc2UsIG1fZnJh
bWVGaWxlUGF0aCk7CisKKyAgICAgICAgV2ViVVJMUmVxdWVzdCByZXF1ZXN0OworICAgICAgICBy
ZXF1ZXN0LmluaXRpYWxpemUoKTsKKyAgICAgICAgcmVxdWVzdC5zZXRVUkwodXJsKTsKKyAgICAg
ICAgbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+bG9hZFJlcXVlc3QocmVxdWVzdCk7CisgICAgICAg
IHNlcnZlUmVxdWVzdHMoKTsKKworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6VW5yZWdpc3Rlck1v
Y2tlZFVSTCh1cmwpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKQorICAgIHsKKyAgICAg
ICAgd2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CisgICAgICAgIG1f
d2ViVmlldy0+Y2xvc2UoKTsKKyAgICB9CisKKyAgICB2b2lkIHNlcnZlUmVxdWVzdHMoKQorICAg
IHsKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVz
dHMoKTsKKyAgICB9CisKKyAgICBXZWJVUkxMb2FkZXIqIGNyZWF0ZUFzc29jaWF0ZWRVUkxMb2Fk
ZXIoY29uc3QgV2ViVVJMTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gV2ViVVJMTG9hZGVyT3B0aW9u
cygpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fd2ViVmlldy0+bWFpbkZyYW1lKCktPmNyZWF0
ZUFzc29jaWF0ZWRVUkxMb2FkZXIob3B0aW9ucyk7CisgICAgfQorCisgICAgLy8gV2ViVVJMTG9h
ZGVyQ2xpZW50IGltcGxlbWVudGF0aW9uLgorICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYlVS
TExvYWRlciogbG9hZGVyLCBXZWJVUkxSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBXZWJVUkxS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKKyAgICB7CisgICAgICAgIG1fd2lsbFNlbmRSZXF1
ZXN0ID0gdHJ1ZTsKKyAgICAgICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWRMb2FkZXIsIGxvYWRlcik7
CisgICAgICAgIEVYUEVDVF9FUShtX2V4cGVjdGVkTmV3UmVxdWVzdC51cmwoKSwgbmV3UmVxdWVz
dC51cmwoKSk7CisgICAgICAgIEVYUEVDVF9FUShtX2V4cGVjdGVkUmVkaXJlY3RSZXNwb25zZS51
cmwoKSwgcmVkaXJlY3RSZXNwb25zZS51cmwoKSk7CisgICAgICAgIEVYUEVDVF9FUShtX2V4cGVj
dGVkUmVkaXJlY3RSZXNwb25zZS5taW1lVHlwZSgpLCByZWRpcmVjdFJlc3BvbnNlLm1pbWVUeXBl
KCkpOworICAgICAgICBFWFBFQ1RfRVEobV9leHBlY3RlZFJlZGlyZWN0UmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSwgcmVkaXJlY3RSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKKyAgICB9CisK
KyAgICB2b2lkIGRpZFNlbmREYXRhKFdlYlVSTExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KQor
ICAgIHsKKyAgICAgICAgbV9kaWRTZW5kRGF0YSA9IHRydWU7CisgICAgICAgIEVYUEVDVF9FUSht
X2V4cGVjdGVkTG9hZGVyLCBsb2FkZXIpOworICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYlVSTExvYWRlciogbG9hZGVyLCBjb25zdCBXZWJVUkxSZXNwb25zZSYgcmVzcG9u
c2UpCisgICAgeworICAgICAgICBtX2RpZFJlY2VpdmVSZXNwb25zZSA9IHRydWU7CisgICAgICAg
IEVYUEVDVF9FUShtX2V4cGVjdGVkTG9hZGVyLCBsb2FkZXIpOworICAgICAgICBFWFBFQ1RfRVEo
bV9leHBlY3RlZFJlc3BvbnNlLnVybCgpLCByZXNwb25zZS51cmwoKSk7CisgICAgICAgIEVYUEVD
VF9FUShtX2V4cGVjdGVkUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgcmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSk7CisgICAgfQorCisgICAgdm9pZCBkaWREb3dubG9hZERhdGEoV2ViVVJMTG9h
ZGVyKiBsb2FkZXIsIGludCBkYXRhTGVuZ3RoKQorICAgIHsKKyAgICAgICAgbV9kaWREb3dubG9h
ZERhdGEgPSB0cnVlOworICAgICAgICBFWFBFQ1RfRVEobV9leHBlY3RlZExvYWRlciwgbG9hZGVy
KTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYlVSTExvYWRlciogbG9hZGVy
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
KQorICAgIHsKKyAgICAgICAgbV9kaWRSZWNlaXZlRGF0YSA9IHRydWU7CisgICAgICAgIEVYUEVD
VF9FUShtX2V4cGVjdGVkTG9hZGVyLCBsb2FkZXIpOworICAgICAgICBFWFBFQ1RfVFJVRShkYXRh
KTsKKyAgICAgICAgRVhQRUNUX0dUKGRhdGFMZW5ndGgsIDApOworICAgIH0KKworICAgIHZvaWQg
ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFdlYlVSTExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKKyAgICB7CisgICAgICAgIG1fZGlkUmVjZWl2ZUNhY2hl
ZE1ldGFkYXRhID0gdHJ1ZTsKKyAgICAgICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWRMb2FkZXIsIGxv
YWRlcik7CisgICAgfQorCisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYlVSTExvYWRlciog
bG9hZGVyLCBkb3VibGUgZmluaXNoVGltZSkKKyAgICB7CisgICAgICAgIG1fZGlkRmluaXNoTG9h
ZGluZyA9IHRydWU7CisgICAgICAgIEVYUEVDVF9FUShtX2V4cGVjdGVkTG9hZGVyLCBsb2FkZXIp
OworICAgIH0KKworICAgIHZvaWQgZGlkRmFpbChXZWJVUkxMb2FkZXIqIGxvYWRlciwgY29uc3Qg
V2ViVVJMRXJyb3ImIGVycm9yKQorICAgIHsKKyAgICAgICAgbV9kaWRGYWlsID0gdHJ1ZTsKKyAg
ICAgICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWRMb2FkZXIsIGxvYWRlcik7CisgICAgICAgIHdlYmtp
dF9zdXBwb3J0OjpRdWl0TWVzc2FnZUxvb3AoKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBX
ZWJTdHJpbmcgbV9mcmFtZUZpbGVQYXRoOworICAgIFRlc3RXZWJGcmFtZUNsaWVudCBtX3dlYkZy
YW1lQ2xpZW50OworICAgIFdlYlZpZXcqIG1fd2ViVmlldzsKKworICAgIFdlYlVSTExvYWRlciog
bV9leHBlY3RlZExvYWRlcjsKKyAgICBXZWJVUkxSZXNwb25zZSBtX2V4cGVjdGVkUmVzcG9uc2U7
CisgICAgV2ViVVJMUmVxdWVzdCBtX2V4cGVjdGVkTmV3UmVxdWVzdDsKKyAgICBXZWJVUkxSZXNw
b25zZSBtX2V4cGVjdGVkUmVkaXJlY3RSZXNwb25zZTsKKyAgICBib29sIG1fd2lsbFNlbmRSZXF1
ZXN0OworICAgIGJvb2wgbV9kaWRTZW5kRGF0YTsKKyAgICBib29sIG1fZGlkUmVjZWl2ZVJlc3Bv
bnNlOworICAgIGJvb2wgbV9kaWREb3dubG9hZERhdGE7CisgICAgYm9vbCBtX2RpZFJlY2VpdmVE
YXRhOworICAgIGJvb2wgbV9kaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGE7CisgICAgYm9vbCBtX2Rp
ZEZpbmlzaExvYWRpbmc7CisgICAgYm9vbCBtX2RpZEZhaWw7Cit9OworCisvLyBUZXN0IGEgc3Vj
Y2Vzc2Z1bCBVUkwgbG9hZC4KK1RFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgU3VjY2Vz
cykKK3sKKyAgICBHVVJMIHVybCA9IEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vc3VjY2Vzcy5o
dG1sIik7CisgICAgV2ViVVJMUmVxdWVzdCByZXF1ZXN0OworICAgIHJlcXVlc3QuaW5pdGlhbGl6
ZSgpOworICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CisKKyAgICBtX2V4cGVjdGVkUmVzcG9uc2Ug
PSBXZWJVUkxSZXNwb25zZSgpOworICAgIG1fZXhwZWN0ZWRSZXNwb25zZS5pbml0aWFsaXplKCk7
CisgICAgbV9leHBlY3RlZFJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKKyAgICB3
ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCBtX2V4cGVjdGVkUmVzcG9uc2Us
IG1fZnJhbWVGaWxlUGF0aCk7CisKKyAgICBtX2V4cGVjdGVkTG9hZGVyID0gY3JlYXRlQXNzb2Np
YXRlZFVSTExvYWRlcigpOworICAgIEVYUEVDVF9UUlVFKG1fZXhwZWN0ZWRMb2FkZXIpOworICAg
IG1fZXhwZWN0ZWRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseShyZXF1ZXN0LCB0aGlzKTsKKyAg
ICBzZXJ2ZVJlcXVlc3RzKCk7CisgICAgRVhQRUNUX1RSVUUobV9kaWRSZWNlaXZlUmVzcG9uc2Up
OworICAgIEVYUEVDVF9UUlVFKG1fZGlkUmVjZWl2ZURhdGEpOworICAgIEVYUEVDVF9UUlVFKG1f
ZGlkRmluaXNoTG9hZGluZyk7Cit9CisKKy8vIFRlc3QgdGhhdCB0aGUgc2FtZS1vcmlnaW4gcmVz
dHJpY3Rpb24gaXMgdGhlIGRlZmF1bHQuCitURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3Qs
IFNhbWVPcmlnaW5SZXN0cmljdGlvbikKK3sKKyAgICAvLyBUaGlzIGlzIGNyb3NzLW9yaWdpbiBz
aW5jZSB0aGUgZnJhbWUgd2FzIGxvYWRlZCBmcm9tIHd3dy50ZXN0LmNvbS4KKyAgICBHVVJMIHVy
bCA9IEdVUkwoImh0dHA6Ly93d3cub3RoZXIuY29tL2ZhaWx1cmUuaHRtbCIpOworICAgIFdlYlVS
TFJlcXVlc3QgcmVxdWVzdDsKKyAgICByZXF1ZXN0LmluaXRpYWxpemUoKTsKKyAgICByZXF1ZXN0
LnNldFVSTCh1cmwpOworCisgICAgbV9leHBlY3RlZExvYWRlciA9IGNyZWF0ZUFzc29jaWF0ZWRV
UkxMb2FkZXIoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2V4cGVjdGVkTG9hZGVyKTsKKyAgICBtX2V4
cGVjdGVkTG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkocmVxdWVzdCwgdGhpcyk7CisgICAgLy8g
RmFpbHVyZSBzaG91bGQgbm90IGJlIHJlcG9ydGVkIHN5bmNocm9ub3VzbHkuCisgICAgRVhQRUNU
X0ZBTFNFKG1fZGlkRmFpbCk7CisgICAgLy8gQWxsb3cgdGhlIGxvYWRlciB0byByZXR1cm4gdGhl
IGVycm9yLgorICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5NZXNzYWdlTG9vcCgpOworICAgIEVYUEVD
VF9UUlVFKG1fZGlkRmFpbCk7Cit9CisKKy8vIFRlc3QgYSBzdWNjZXNzZnVsIGNyb3NzLW9yaWdp
biBsb2FkLgorVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBDcm9zc09yaWdpblN1Y2Nl
c3MpCit7CisgICAgLy8gVGhpcyBpcyBjcm9zcy1vcmlnaW4gc2luY2UgdGhlIGZyYW1lIHdhcyBs
b2FkZWQgZnJvbSB3d3cudGVzdC5jb20uCisgICAgR1VSTCB1cmwgPSBHVVJMKCJodHRwOi8vd3d3
Lm90aGVyLmNvbS9zdWNjZXNzLmh0bWwiKTsKKyAgICBXZWJVUkxSZXF1ZXN0IHJlcXVlc3Q7Cisg
ICAgcmVxdWVzdC5pbml0aWFsaXplKCk7CisgICAgcmVxdWVzdC5zZXRVUkwodXJsKTsKKworICAg
IG1fZXhwZWN0ZWRSZXNwb25zZSA9IFdlYlVSTFJlc3BvbnNlKCk7CisgICAgbV9leHBlY3RlZFJl
c3BvbnNlLmluaXRpYWxpemUoKTsKKyAgICBtX2V4cGVjdGVkUmVzcG9uc2Uuc2V0TUlNRVR5cGUo
InRleHQvaHRtbCIpOworICAgIHdlYmtpdF9zdXBwb3J0OjpSZWdpc3Rlck1vY2tlZFVSTCh1cmws
IG1fZXhwZWN0ZWRSZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsKKworICAgIFdlYlVSTExvYWRl
ck9wdGlvbnMgb3B0aW9uczsKKyAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9
IFdlYlVSTExvYWRlck9wdGlvbnM6OkNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeUFsbG93OworICAg
IG1fZXhwZWN0ZWRMb2FkZXIgPSBjcmVhdGVBc3NvY2lhdGVkVVJMTG9hZGVyKG9wdGlvbnMpOwor
ICAgIEVYUEVDVF9UUlVFKG1fZXhwZWN0ZWRMb2FkZXIpOworICAgIG1fZXhwZWN0ZWRMb2FkZXIt
PmxvYWRBc3luY2hyb25vdXNseShyZXF1ZXN0LCB0aGlzKTsKKyAgICBzZXJ2ZVJlcXVlc3RzKCk7
CisgICAgRVhQRUNUX1RSVUUobV9kaWRSZWNlaXZlUmVzcG9uc2UpOworICAgIEVYUEVDVF9UUlVF
KG1fZGlkUmVjZWl2ZURhdGEpOworICAgIEVYUEVDVF9UUlVFKG1fZGlkRmluaXNoTG9hZGluZyk7
Cit9CisKK30K
</data>
<flag name="review"
          id="90332"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="90333"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96603</attachid>
            <date>2011-06-09 10:47:38 -0700</date>
            <delta_ts>2011-06-16 16:53:34 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>aul.txt</filename>
            <type>text/plain</type>
            <size>17522</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4ODQxNCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTEtMDYtMDggIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBBc3NvY2lhdGVk
VVJMTG9hZGVyIHJldHVybnMgVVJMIGFjY2VzcyBlcnJvcnMgc3luY2hyb25vdXNseS4gVXNlIGEg
dGltZXIgdG8gcmV0dXJuIHN1Y2ggZXJyb3JzIGFzeW5jaHJvbm91c2x5LiBBbHNvIGFkZCB1bml0
IHRlc3RzIGZvciBzdWNjZXNzZnVsIGxvYWRzLCBzYW1lLW9yaWdpbiByZXN0cmljdGlvbiBieSBk
ZWZhdWx0LCBhbmQgc3VjY2Vzc2Z1bCBjcm9zcy1vcmlnaW4gbG9hZHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDA1OQorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBzcmMvQXNzb2NpYXRl
ZFVSTExvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXI6OkNs
aWVudEFkYXB0ZXI6OmNsZWFyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVS
TExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6Q2xpZW50QWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6
OkFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6OmRpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpkaWRG
YWlsKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRl
cjo6ZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRl
ZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6bm90aWZ5RXJyb3IpOgorICAgICAgICAoV2ViS2l0
OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHRl
c3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlRlc3RXZWJGcmFtZUNsaWVudDo6Y2FuY2VsbGVkRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpB
c3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6QXNzb2NpYXRlZFVSTExvYWRlclRlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6U2V0VXApOgorICAgICAgICAoV2Vi
S2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6VGVhckRvd24pOgorICAgICAgICAoV2ViS2l0
OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6c2VydmVSZXF1ZXN0cyk6CisgICAgICAgIChXZWJL
aXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0OjpjcmVhdGVBc3NvY2lhdGVkVVJMTG9hZGVyKToK
KyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlclRlc3Q6OndpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0OjpkaWRTZW5kRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0OjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6ZGlk
RG93bmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlclRlc3Q6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlclRl
c3Q6OmRpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0
ZWRVUkxMb2FkZXJUZXN0OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6QXNz
b2NpYXRlZFVSTExvYWRlclRlc3Q6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0Yp
OgorCiAyMDExLTA2LTA4ICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCShyZXZpc2lvbiA4ODQxNCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cAkod29ya2luZyBjb3B5KQpAQCAtNjQ0LDYgKzY0NCw3IEBACiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICd0ZXN0cy9DQ1RocmVhZFRlc3QuY3BwJywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIyBUaGVzZSB0ZXN0cyBkZXBlbmQgb24gd2Via2l0X3N1cHBvcnQgYW5k
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZnVuY3Rpb25zIGRlZmluZWQgb25s
eSBpbiAhV0VCS0lUX0lNUExFTUVOVEFUSU9OLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAndGVzdHMvQXNzb2NpYXRlZFVSTExvYWRlclRlc3QuY3BwJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAndGVzdHMvV2ViUGFnZU5ld1NlcmlhbGl6ZXJUZXN0LmNwcCcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9XZWJQYWdlU2VyaWFsaXpl
clRlc3QuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQkocmV2aXNpb24g
ODg0MTQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw2ICs1Myw3IEBACiAgICAgICAgIF0sCiAgICAgICAgICd3ZWJraXRfdW5pdHRl
c3RfZmlsZXMnOiBbCiAgICAgICAgICAgICAndGVzdHMvQXJlbmFUZXN0SGVscGVycy5oJywKKyAg
ICAgICAgICAgICd0ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAnLAogICAgICAgICAg
ICAgJ3Rlc3RzL0lubmVyR2VzdHVyZVJlY29nbml6ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAn
dGVzdHMvQ0NUaHJlYWRUYXNrVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDVGhyZWFk
VGVzdC5jcHAnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzb2NpYXRlZFVS
TExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNz
b2NpYXRlZFVSTExvYWRlci5jcHAJKHJldmlzaW9uIDg4NDE0KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvQXNzb2NpYXRlZFVSTExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNs
dWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJTdWJyZXNv
dXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiV2ViQXBwbGljYXRp
b25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJXZWJEYXRhU291cmNlLmgiCiAjaW5jbHVkZSAiV2Vi
RnJhbWVJbXBsLmgiCkBAIC01NCw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLy8gVGhp
cyBjbGFzcyBicmlkZ2VzIHRoZSBpbnRlcmZhY2UgZGlmZmVyZW5jZXMgYmV0d2VlbiBXZWJDb3Jl
IGFuZCBXZWJLaXQgbG9hZGVyIGNsaWVudHMuCiAvLyBJdCBmb3J3YXJkcyBpdHMgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCBub3RpZmljYXRpb25zIHRvIGEgV2ViVVJMTG9hZGVyQ2xpZW50LgogY2xh
c3MgQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlciA6IHB1YmxpYyBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXJDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENsaWVudEFk
YXB0ZXIpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENsaWVudEFkYXB0ZXI+IGNy
ZWF0ZShBc3NvY2lhdGVkVVJMTG9hZGVyKiwgV2ViVVJMTG9hZGVyQ2xpZW50KiwgYm9vbCAvKmRv
d25sb2FkVG9GaWxlKi8pOwogCkBAIC02OCwxNiArNzAsMjcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBib29sIGlzRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KCkgeyByZXR1cm4gdHJ1
ZTsgfQogCi0gICAgLy8gVGhpcyBtZXRob2Qgc3RvcHMgbG9hZGluZyBhbmQgcmVsZWFzZXMgdGhl
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciBhcyBlYXJseSBhcyBwb3NzaWJsZS4KLSAgICB2b2lk
IGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KKyAgICAvLyBFbmFibGVzIGZvcndhcmRp
bmcgb2YgZXJyb3Igbm90aWZpY2F0aW9ucyB0byB0aGUgV2ViVVJMTG9hZGVyQ2xpZW50LiBUaGVz
ZSBtdXN0IGJlCisgICAgLy8gZGVmZXJyZWQgdW50aWwgYWZ0ZXIgdGhlIGNhbGwgdG8gQXNzb2Np
YXRlZFVSTExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KCkgY29tcGxldGVzLgorICAgIHZvaWQg
ZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKCk7CisKKyAgICAvLyBTdG9wcyBsb2FkaW5nIGFuZCBy
ZWxlYXNlcyB0aGUgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyIGFzIGVhcmx5IGFzIHBvc3NpYmxl
LgorICAgIHZvaWQgY2xlYXJDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfSAKIAogcHJpdmF0ZToK
ICAgICBDbGllbnRBZGFwdGVyKEFzc29jaWF0ZWRVUkxMb2FkZXIqLCBXZWJVUkxMb2FkZXJDbGll
bnQqLCBib29sIC8qZG93bmxvYWRUb0ZpbGUqLyk7CiAKKyAgICB2b2lkIG5vdGlmeUVycm9yKFRp
bWVyPENsaWVudEFkYXB0ZXI+Kik7CisKICAgICBBc3NvY2lhdGVkVVJMTG9hZGVyKiBtX2xvYWRl
cjsKICAgICBXZWJVUkxMb2FkZXJDbGllbnQqIG1fY2xpZW50OworICAgIFdlYlVSTEVycm9yIG1f
ZXJyb3I7CisKKyAgICBUaW1lcjxDbGllbnRBZGFwdGVyPiBtX2Vycm9yVGltZXI7CiAgICAgdW5z
aWduZWQgbG9uZyBtX2Rvd25sb2FkTGVuZ3RoOwogICAgIGJvb2wgbV9kb3dubG9hZFRvRmlsZTsK
KyAgICBib29sIG1fZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zOworICAgIGJvb2wgbV9kaWRGYWls
OwogfTsKIAogUGFzc093blB0cjxBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyPiBB
c3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpjcmVhdGUoQXNzb2NpYXRlZFVSTExv
YWRlciogbG9hZGVyLCBXZWJVUkxMb2FkZXJDbGllbnQqIGNsaWVudCwgYm9vbCBkb3dubG9hZFRv
RmlsZSkKQEAgLTg4LDggKzEwMSwxMSBAQCBQYXNzT3duUHRyPEFzc29jaWF0ZWRVUkxMb2FkZXI6
OkNsaWVudEFkCiBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpDbGllbnRBZGFw
dGVyKEFzc29jaWF0ZWRVUkxMb2FkZXIqIGxvYWRlciwgV2ViVVJMTG9hZGVyQ2xpZW50KiBjbGll
bnQsIGJvb2wgZG93bmxvYWRUb0ZpbGUpCiAgICAgOiBtX2xvYWRlcihsb2FkZXIpCiAgICAgLCBt
X2NsaWVudChjbGllbnQpCisgICAgLCBtX2Vycm9yVGltZXIodGhpcywgJkNsaWVudEFkYXB0ZXI6
Om5vdGlmeUVycm9yKQogICAgICwgbV9kb3dubG9hZExlbmd0aCgwKQogICAgICwgbV9kb3dubG9h
ZFRvRmlsZShkb3dubG9hZFRvRmlsZSkKKyAgICAsIG1fZW5hYmxlRXJyb3JOb3RpZmljYXRpb25z
KGZhbHNlKQorICAgICwgbV9kaWRGYWlsKGZhbHNlKQogewogICAgIEFTU0VSVChtX2xvYWRlcik7
CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKQEAgLTE0NCw3ICsxNjAsNyBAQCB2b2lkIEFzc29jaWF0
ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6CiAgICAgaWYgKG1fZG93bmxvYWRUb0ZpbGUpIHsK
ICAgICAgICAgaW50IGRvd25sb2FkTGVuZ3RoID0gbV9kb3dubG9hZExlbmd0aCA8PSBJTlRfTUFY
ID8gbV9kb3dubG9hZExlbmd0aCA6IElOVF9NQVg7CiAgICAgICAgIG1fY2xpZW50LT5kaWREb3du
bG9hZERhdGEobV9sb2FkZXIsIGRvd25sb2FkTGVuZ3RoKTsKLSAgICAgICAgLy8gV2hpbGUgdGhl
IGNsaWVudCBjb3VsZCBoYXZlIGNhbmNlbGxlZCwgY29udGludWUsIHNpbmNlIHRoZSBsb2FkIGZp
bmlzaGVkLiAKKyAgICAgICAgLy8gV2hpbGUgdGhlIGNsaWVudCBjb3VsZCBoYXZlIGNhbmNlbGVk
LCBjb250aW51ZSwgc2luY2UgdGhlIGxvYWQgZmluaXNoZWQuCiAgICAgfQogCiAgICAgbV9jbGll
bnQtPmRpZEZpbmlzaExvYWRpbmcobV9sb2FkZXIsIGZpbmlzaFRpbWUpOwpAQCAtMTU1LDggKzE3
MSwyNiBAQCB2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6CiAgICAgaWYg
KCFtX2NsaWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViVVJMRXJyb3Igd2ViRXJyb3Io
ZXJyb3IpOwotICAgIG1fY2xpZW50LT5kaWRGYWlsKG1fbG9hZGVyLCB3ZWJFcnJvcik7CisgICAg
bV9kaWRGYWlsID0gdHJ1ZTsKKyAgICBtX2Vycm9yID0gV2ViVVJMRXJyb3IoZXJyb3IpOworICAg
IGlmIChtX2VuYWJsZUVycm9yTm90aWZpY2F0aW9ucykKKyAgICAgICAgbm90aWZ5RXJyb3IoJm1f
ZXJyb3JUaW1lcik7Cit9CisKK3ZvaWQgQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRl
cjo6ZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKCkKK3sKKyAgICBtX2VuYWJsZUVycm9yTm90aWZp
Y2F0aW9ucyA9IHRydWU7CisgICAgLy8gSWYgYW4gZXJyb3IgaGFzIGFscmVhZHkgYmVlbiByZWNl
aXZlZCwgc3RhcnQgYSB0aW1lciB0byByZXBvcnQgaXQgdG8gdGhlIGNsaWVudAorICAgIC8vIGFm
dGVyIEFzc29jaWF0ZWRVUkxMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseSBoYXMgcmV0dXJuZWQg
dG8gdGhlIGNhbGxlci4KKyAgICBpZiAobV9kaWRGYWlsKQorICAgICAgICBtX2Vycm9yVGltZXIu
c3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFk
YXB0ZXI6Om5vdGlmeUVycm9yKFRpbWVyPENsaWVudEFkYXB0ZXI+KiB0aW1lcikKK3sKKyAgICBB
U1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAmbV9lcnJvclRpbWVyKTsKKworICAgIG1fY2xp
ZW50LT5kaWRGYWlsKG1fbG9hZGVyLCBtX2Vycm9yKTsKIH0KIAogQXNzb2NpYXRlZFVSTExvYWRl
cjo6QXNzb2NpYXRlZFVSTExvYWRlcihQYXNzUmVmUHRyPFdlYkZyYW1lSW1wbD4gZnJhbWVJbXBs
KQpAQCAtMjE1LDggKzI0OSw4IEBAIHZvaWQgQXNzb2NpYXRlZFVSTExvYWRlcjo6bG9hZEFzeW5j
aHJvbm8KICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHdlYmNvcmVSZXF1ZXN0ID0gcmVxdWVz
dC50b1Jlc291cmNlUmVxdWVzdCgpOwogICAgIERvY3VtZW50KiB3ZWJjb3JlRG9jdW1lbnQgPSBt
X2ZyYW1lSW1wbC0+ZnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICBtX2NsaWVudEFkYXB0ZXIgPSBD
bGllbnRBZGFwdGVyOjpjcmVhdGUodGhpcywgbV9jbGllbnQsIHJlcXVlc3QuZG93bmxvYWRUb0Zp
bGUoKSk7Ci0KICAgICBtX2xvYWRlciA9IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRl
KHdlYmNvcmVEb2N1bWVudCwgbV9jbGllbnRBZGFwdGVyLmdldCgpLCB3ZWJjb3JlUmVxdWVzdCwg
b3B0aW9ucyk7CisgICAgbV9jbGllbnRBZGFwdGVyLT5lbmFibGVFcnJvck5vdGlmaWNhdGlvbnMo
KTsKIH0KIAogdm9pZCBBc3NvY2lhdGVkVVJMTG9hZGVyOjpjYW5jZWwoKQpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVy
VGVzdC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Fz
c29jaWF0ZWRVUkxMb2FkZXJUZXN0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNjIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgIldl
YkZyYW1lQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVVJM
LmgiCisjaW5jbHVkZSAiV2ViVVJMTG9hZGVyLmgiCisjaW5jbHVkZSAiV2ViVVJMTG9hZGVyQ2xp
ZW50LmgiCisjaW5jbHVkZSAiV2ViVVJMTG9hZGVyT3B0aW9ucy5oIgorI2luY2x1ZGUgIldlYlVS
TFJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJVUkxSZXNwb25zZS5oIgorI2luY2x1ZGUgIldlYlZp
ZXcuaCIKKworI2luY2x1ZGUgPGdvb2dsZXVybC9zcmMvZ3VybC5oPgorI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgVGVzdFdlYkZy
YW1lQ2xpZW50IDogcHVibGljIFdlYkZyYW1lQ2xpZW50IHsKKyAgICAvLyBSZXR1cm4gYSBub24t
bnVsbCBjYW5jZWxsYXRpb24gZXJyb3Igc28gdGhlIFdlYkZyYW1lIGxvYWRlcnMgY2FuIHNodXQg
ZG93biB3aXRob3V0IGFzc2VydGluZy4KKyAgICAvLyBNYWtlICdyZWFzb24nIG5vbi16ZXJvIHNv
IFdlYlVSTEVycm9yIGlzbid0IGNvbnNpZGVyZWQgbnVsbC4KKyAgICBXZWJVUkxFcnJvciBjYW5j
ZWxsZWRFcnJvcihXZWJGcmFtZSosIGNvbnN0IFdlYlVSTFJlcXVlc3QmIHJlcXVlc3QpCisgICAg
eworICAgICAgICBXZWJVUkxFcnJvciBlcnJvcjsKKyAgICAgICAgZXJyb3IucmVhc29uID0gMTsK
KyAgICAgICAgZXJyb3IudW5yZWFjaGFibGVVUkwgPSByZXF1ZXN0LnVybCgpOworICAgICAgICBy
ZXR1cm4gZXJyb3I7CisgICAgfQorfTsKKworY2xhc3MgQXNzb2NpYXRlZFVSTExvYWRlclRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIFdlYlVSTExvYWRlckNsaWVudCB7CitwdWJsaWM6CisgICAgQXNzb2NpYXRlZFVSTExv
YWRlclRlc3QoKQorICAgICAgICA6ICBtX3dpbGxTZW5kUmVxdWVzdChmYWxzZSkKKyAgICAgICAg
LCAgbV9kaWRTZW5kRGF0YShmYWxzZSkKKyAgICAgICAgLCAgbV9kaWRSZWNlaXZlUmVzcG9uc2Uo
ZmFsc2UpCisgICAgICAgICwgIG1fZGlkUmVjZWl2ZURhdGEoZmFsc2UpCisgICAgICAgICwgIG1f
ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKGZhbHNlKQorICAgICAgICAsICBtX2RpZEZpbmlzaExv
YWRpbmcoZmFsc2UpCisgICAgICAgICwgIG1fZGlkRmFpbChmYWxzZSkKKyAgICB7CisgICAgICAg
IC8vIFJldXNlIG9uZSBvZiB0aGUgdGVzdCBmaWxlcyBmcm9tIFdlYkZyYW1lVGVzdC4KKyAgICAg
ICAgc3RkOjpzdHJpbmcgZmlsZVBhdGggPSB3ZWJraXRfc3VwcG9ydDo6R2V0V2ViS2l0Um9vdERp
cigpLnV0ZjgoKTsKKyAgICAgICAgZmlsZVBhdGggKz0gIi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL2RhdGEvaWZyYW1lc190ZXN0Lmh0bWwiOworICAgICAgICBtX2ZyYW1lRmlsZVBhdGgg
PSBXZWJTdHJpbmc6OmZyb21VVEY4KGZpbGVQYXRoKTsKKyAgICB9CisKKyAgICB2b2lkIFNldFVw
KCkKKyAgICB7CisgICAgICAgIG1fd2ViVmlldyA9IFdlYlZpZXc6OmNyZWF0ZSgwKTsKKyAgICAg
ICAgbV93ZWJWaWV3LT5pbml0aWFsaXplTWFpbkZyYW1lKCZtX3dlYkZyYW1lQ2xpZW50KTsKKwor
ICAgICAgICAvLyBMb2FkIHRoZSBmcmFtZSBiZWZvcmUgdHJ5aW5nIHRvIGxvYWQgcmVzb3VyY2Vz
LgorICAgICAgICBHVVJMIHVybCA9IEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vaWZyYW1lc190
ZXN0Lmh0bWwiKTsKKyAgICAgICAgV2ViVVJMUmVzcG9uc2UgcmVzcG9uc2U7CisgICAgICAgIHJl
c3BvbnNlLmluaXRpYWxpemUoKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0TUlNRVR5cGUoInRleHQv
aHRtbCIpOworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCBy
ZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsKKworICAgICAgICBXZWJVUkxSZXF1ZXN0IHJlcXVl
c3Q7CisgICAgICAgIHJlcXVlc3QuaW5pdGlhbGl6ZSgpOworICAgICAgICByZXF1ZXN0LnNldFVS
TCh1cmwpOworICAgICAgICBtX3dlYlZpZXctPm1haW5GcmFtZSgpLT5sb2FkUmVxdWVzdChyZXF1
ZXN0KTsKKyAgICAgICAgc2VydmVSZXF1ZXN0cygpOworCisgICAgICAgIHdlYmtpdF9zdXBwb3J0
OjpVbnJlZ2lzdGVyTW9ja2VkVVJMKHVybCk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigp
CisgICAgeworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6VW5yZWdpc3RlckFsbE1vY2tlZFVSTHMo
KTsKKyAgICAgICAgbV93ZWJWaWV3LT5jbG9zZSgpOworICAgIH0KKworICAgIHZvaWQgc2VydmVS
ZXF1ZXN0cygpCisgICAgeworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6U2VydmVBc3luY2hyb25v
dXNNb2NrZWRSZXF1ZXN0cygpOworICAgIH0KKworICAgIFdlYlVSTExvYWRlciogY3JlYXRlQXNz
b2NpYXRlZFVSTExvYWRlcihjb25zdCBXZWJVUkxMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBXZWJV
UkxMb2FkZXJPcHRpb25zKCkpCisgICAgeworICAgICAgICByZXR1cm4gbV93ZWJWaWV3LT5tYWlu
RnJhbWUoKS0+Y3JlYXRlQXNzb2NpYXRlZFVSTExvYWRlcihvcHRpb25zKTsKKyAgICB9CisKKyAg
ICAvLyBXZWJVUkxMb2FkZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCisgICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoV2ViVVJMTG9hZGVyKiBsb2FkZXIsIFdlYlVSTFJlcXVlc3QmIG5ld1JlcXVlc3Qs
IGNvbnN0IFdlYlVSTFJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQorICAgIHsKKyAgICAgICAg
bV93aWxsU2VuZFJlcXVlc3QgPSB0cnVlOworICAgICAgICBFWFBFQ1RfRVEobV9leHBlY3RlZExv
YWRlciwgbG9hZGVyKTsKKyAgICAgICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWROZXdSZXF1ZXN0LnVy
bCgpLCBuZXdSZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWRSZWRp
cmVjdFJlc3BvbnNlLnVybCgpLCByZWRpcmVjdFJlc3BvbnNlLnVybCgpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKG1fZXhwZWN0ZWRSZWRpcmVjdFJlc3BvbnNlLm1pbWVUeXBlKCksIHJlZGlyZWN0UmVz
cG9uc2UubWltZVR5cGUoKSk7CisgICAgICAgIEVYUEVDVF9FUShtX2V4cGVjdGVkUmVkaXJlY3RS
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZWRpcmVjdFJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkpOworICAgIH0KKworICAgIHZvaWQgZGlkU2VuZERhdGEoV2ViVVJMTG9hZGVyKiBsb2FkZXIs
IHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5
dGVzVG9CZVNlbnQpCisgICAgeworICAgICAgICBtX2RpZFNlbmREYXRhID0gdHJ1ZTsKKyAgICAg
ICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWRMb2FkZXIsIGxvYWRlcik7CisgICAgfQorCisgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViVVJMTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFdlYlVSTFJl
c3BvbnNlJiByZXNwb25zZSkKKyAgICB7CisgICAgICAgIG1fZGlkUmVjZWl2ZVJlc3BvbnNlID0g
dHJ1ZTsKKyAgICAgICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWRMb2FkZXIsIGxvYWRlcik7CisgICAg
ICAgIEVYUEVDVF9FUShtX2V4cGVjdGVkUmVzcG9uc2UudXJsKCksIHJlc3BvbnNlLnVybCgpKTsK
KyAgICAgICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWRSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCBy
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGRpZERvd25sb2Fk
RGF0YShXZWJVUkxMb2FkZXIqIGxvYWRlciwgaW50IGRhdGFMZW5ndGgpCisgICAgeworICAgICAg
ICBtX2RpZERvd25sb2FkRGF0YSA9IHRydWU7CisgICAgICAgIEVYUEVDVF9FUShtX2V4cGVjdGVk
TG9hZGVyLCBsb2FkZXIpOworICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViVVJM
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpCisgICAgeworICAgICAgICBtX2RpZFJlY2VpdmVEYXRhID0gdHJ1ZTsK
KyAgICAgICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWRMb2FkZXIsIGxvYWRlcik7CisgICAgICAgIEVY
UEVDVF9UUlVFKGRhdGEpOworICAgICAgICBFWFBFQ1RfR1QoZGF0YUxlbmd0aCwgMCk7CisgICAg
fQorCisgICAgdm9pZCBkaWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEoV2ViVVJMTG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQorICAgIHsKKyAgICAgICAgbV9k
aWRSZWNlaXZlQ2FjaGVkTWV0YWRhdGEgPSB0cnVlOworICAgICAgICBFWFBFQ1RfRVEobV9leHBl
Y3RlZExvYWRlciwgbG9hZGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmco
V2ViVVJMTG9hZGVyKiBsb2FkZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQorICAgIHsKKyAgICAgICAg
bV9kaWRGaW5pc2hMb2FkaW5nID0gdHJ1ZTsKKyAgICAgICAgRVhQRUNUX0VRKG1fZXhwZWN0ZWRM
b2FkZXIsIGxvYWRlcik7CisgICAgfQorCisgICAgdm9pZCBkaWRGYWlsKFdlYlVSTExvYWRlciog
bG9hZGVyLCBjb25zdCBXZWJVUkxFcnJvciYgZXJyb3IpCisgICAgeworICAgICAgICBtX2RpZEZh
aWwgPSB0cnVlOworICAgICAgICBFWFBFQ1RfRVEobV9leHBlY3RlZExvYWRlciwgbG9hZGVyKTsK
KyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlF1aXRNZXNzYWdlTG9vcCgpOworICAgIH0KKworcHJv
dGVjdGVkOgorICAgIFdlYlN0cmluZyBtX2ZyYW1lRmlsZVBhdGg7CisgICAgVGVzdFdlYkZyYW1l
Q2xpZW50IG1fd2ViRnJhbWVDbGllbnQ7CisgICAgV2ViVmlldyogbV93ZWJWaWV3OworCisgICAg
V2ViVVJMTG9hZGVyKiBtX2V4cGVjdGVkTG9hZGVyOworICAgIFdlYlVSTFJlc3BvbnNlIG1fZXhw
ZWN0ZWRSZXNwb25zZTsKKyAgICBXZWJVUkxSZXF1ZXN0IG1fZXhwZWN0ZWROZXdSZXF1ZXN0Owor
ICAgIFdlYlVSTFJlc3BvbnNlIG1fZXhwZWN0ZWRSZWRpcmVjdFJlc3BvbnNlOworICAgIGJvb2wg
bV93aWxsU2VuZFJlcXVlc3Q7CisgICAgYm9vbCBtX2RpZFNlbmREYXRhOworICAgIGJvb2wgbV9k
aWRSZWNlaXZlUmVzcG9uc2U7CisgICAgYm9vbCBtX2RpZERvd25sb2FkRGF0YTsKKyAgICBib29s
IG1fZGlkUmVjZWl2ZURhdGE7CisgICAgYm9vbCBtX2RpZFJlY2VpdmVDYWNoZWRNZXRhZGF0YTsK
KyAgICBib29sIG1fZGlkRmluaXNoTG9hZGluZzsKKyAgICBib29sIG1fZGlkRmFpbDsKK307CisK
Ky8vIFRlc3QgYSBzdWNjZXNzZnVsIFVSTCBsb2FkLgorVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2Fk
ZXJUZXN0LCBTdWNjZXNzKQoreworICAgIEdVUkwgdXJsID0gR1VSTCgiaHR0cDovL3d3dy50ZXN0
LmNvbS9zdWNjZXNzLmh0bWwiKTsKKyAgICBXZWJVUkxSZXF1ZXN0IHJlcXVlc3Q7CisgICAgcmVx
dWVzdC5pbml0aWFsaXplKCk7CisgICAgcmVxdWVzdC5zZXRVUkwodXJsKTsKKworICAgIG1fZXhw
ZWN0ZWRSZXNwb25zZSA9IFdlYlVSTFJlc3BvbnNlKCk7CisgICAgbV9leHBlY3RlZFJlc3BvbnNl
LmluaXRpYWxpemUoKTsKKyAgICBtX2V4cGVjdGVkUmVzcG9uc2Uuc2V0TUlNRVR5cGUoInRleHQv
aHRtbCIpOworICAgIHdlYmtpdF9zdXBwb3J0OjpSZWdpc3Rlck1vY2tlZFVSTCh1cmwsIG1fZXhw
ZWN0ZWRSZXNwb25zZSwgbV9mcmFtZUZpbGVQYXRoKTsKKworICAgIG1fZXhwZWN0ZWRMb2FkZXIg
PSBjcmVhdGVBc3NvY2lhdGVkVVJMTG9hZGVyKCk7CisgICAgRVhQRUNUX1RSVUUobV9leHBlY3Rl
ZExvYWRlcik7CisgICAgbV9leHBlY3RlZExvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KHJlcXVl
c3QsIHRoaXMpOworICAgIHNlcnZlUmVxdWVzdHMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2RpZFJl
Y2VpdmVSZXNwb25zZSk7CisgICAgRVhQRUNUX1RSVUUobV9kaWRSZWNlaXZlRGF0YSk7CisgICAg
RVhQRUNUX1RSVUUobV9kaWRGaW5pc2hMb2FkaW5nKTsKK30KKworLy8gVGVzdCB0aGF0IHRoZSBz
YW1lLW9yaWdpbiByZXN0cmljdGlvbiBpcyB0aGUgZGVmYXVsdC4KK1RFU1RfRihBc3NvY2lhdGVk
VVJMTG9hZGVyVGVzdCwgU2FtZU9yaWdpblJlc3RyaWN0aW9uKQoreworICAgIC8vIFRoaXMgaXMg
Y3Jvc3Mtb3JpZ2luIHNpbmNlIHRoZSBmcmFtZSB3YXMgbG9hZGVkIGZyb20gd3d3LnRlc3QuY29t
LgorICAgIEdVUkwgdXJsID0gR1VSTCgiaHR0cDovL3d3dy5vdGhlci5jb20vZmFpbHVyZS5odG1s
Iik7CisgICAgV2ViVVJMUmVxdWVzdCByZXF1ZXN0OworICAgIHJlcXVlc3QuaW5pdGlhbGl6ZSgp
OworICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CisKKyAgICBtX2V4cGVjdGVkTG9hZGVyID0gY3Jl
YXRlQXNzb2NpYXRlZFVSTExvYWRlcigpOworICAgIEVYUEVDVF9UUlVFKG1fZXhwZWN0ZWRMb2Fk
ZXIpOworICAgIG1fZXhwZWN0ZWRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseShyZXF1ZXN0LCB0
aGlzKTsKKyAgICAvLyBGYWlsdXJlIHNob3VsZCBub3QgYmUgcmVwb3J0ZWQgc3luY2hyb25vdXNs
eS4KKyAgICBFWFBFQ1RfRkFMU0UobV9kaWRGYWlsKTsKKyAgICAvLyBBbGxvdyB0aGUgbG9hZGVy
IHRvIHJldHVybiB0aGUgZXJyb3IuCisgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bk1lc3NhZ2VMb29w
KCk7CisgICAgRVhQRUNUX1RSVUUobV9kaWRGYWlsKTsKK30KKworLy8gVGVzdCBhIHN1Y2Nlc3Nm
dWwgY3Jvc3Mtb3JpZ2luIGxvYWQuCitURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIENy
b3NzT3JpZ2luU3VjY2VzcykKK3sKKyAgICAvLyBUaGlzIGlzIGNyb3NzLW9yaWdpbiBzaW5jZSB0
aGUgZnJhbWUgd2FzIGxvYWRlZCBmcm9tIHd3dy50ZXN0LmNvbS4KKyAgICBHVVJMIHVybCA9IEdV
UkwoImh0dHA6Ly93d3cub3RoZXIuY29tL3N1Y2Nlc3MuaHRtbCIpOworICAgIFdlYlVSTFJlcXVl
c3QgcmVxdWVzdDsKKyAgICByZXF1ZXN0LmluaXRpYWxpemUoKTsKKyAgICByZXF1ZXN0LnNldFVS
TCh1cmwpOworCisgICAgbV9leHBlY3RlZFJlc3BvbnNlID0gV2ViVVJMUmVzcG9uc2UoKTsKKyAg
ICBtX2V4cGVjdGVkUmVzcG9uc2UuaW5pdGlhbGl6ZSgpOworICAgIG1fZXhwZWN0ZWRSZXNwb25z
ZS5zZXRNSU1FVHlwZSgidGV4dC9odG1sIik7CisgICAgd2Via2l0X3N1cHBvcnQ6OlJlZ2lzdGVy
TW9ja2VkVVJMKHVybCwgbV9leHBlY3RlZFJlc3BvbnNlLCBtX2ZyYW1lRmlsZVBhdGgpOworCisg
ICAgV2ViVVJMTG9hZGVyT3B0aW9ucyBvcHRpb25zOworICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5S
ZXF1ZXN0UG9saWN5ID0gV2ViVVJMTG9hZGVyT3B0aW9uczo6Q3Jvc3NPcmlnaW5SZXF1ZXN0UG9s
aWN5QWxsb3c7CisgICAgbV9leHBlY3RlZExvYWRlciA9IGNyZWF0ZUFzc29jaWF0ZWRVUkxMb2Fk
ZXIob3B0aW9ucyk7CisgICAgRVhQRUNUX1RSVUUobV9leHBlY3RlZExvYWRlcik7CisgICAgbV9l
eHBlY3RlZExvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KHJlcXVlc3QsIHRoaXMpOworICAgIHNl
cnZlUmVxdWVzdHMoKTsKKyAgICBFWFBFQ1RfVFJVRShtX2RpZFJlY2VpdmVSZXNwb25zZSk7Cisg
ICAgRVhQRUNUX1RSVUUobV9kaWRSZWNlaXZlRGF0YSk7CisgICAgRVhQRUNUX1RSVUUobV9kaWRG
aW5pc2hMb2FkaW5nKTsKK30KKworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>