<?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>81600</bug_id>
          
          <creation_ts>2012-03-19 17:28:29 -0700</creation_ts>
          <short_desc>webkitpy: get ServerProcess out of the reportcrash business</short_desc>
          <delta_ts>2012-03-21 13:29:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>71380</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>jberlin</cc>
    
    <cc>mitz</cc>
    
    <cc>ojan</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>582509</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-19 17:28:29 -0700</bug_when>
    <thetext>webkitpy: get ServerProcess out of the reportcrash business</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582514</commentid>
    <comment_count>1</comment_count>
      <attachid>132732</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-19 17:32:16 -0700</bug_when>
    <thetext>Created attachment 132732
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582530</commentid>
    <comment_count>2</comment_count>
      <attachid>132732</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-19 17:39:47 -0700</bug_when>
    <thetext>Comment on attachment 132732
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/server_process.py:106
&gt; +        if self._proc.returncode in (-1073741510, -signal.SIGINT):

-1073741510   &lt;-   Can we name this constant?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582540</commentid>
    <comment_count>3</comment_count>
      <attachid>132732</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-19 17:52:55 -0700</bug_when>
    <thetext>Comment on attachment 132732
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/server_process.py:106
&gt;&gt; +        if self._proc.returncode in (-1073741510, -signal.SIGINT):
&gt; 
&gt; -1073741510   &lt;-   Can we name this constant?

I don&apos;t actually know what a good name for this constant would be; given the FIXME above, I suspect we can actually delete the constant altogether, and even if we can&apos;t, I need to figure out if this value correlates to something. 

I&apos;d like to defer doing that and removing the fixme to a subsequent patch if that&apos;s okay, since getting to the root of this is kind of a different effort.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582543</commentid>
    <comment_count>4</comment_count>
      <attachid>132732</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-19 17:54:28 -0700</bug_when>
    <thetext>Comment on attachment 132732
Patch

I&apos;m not sure I understand.  Where did the code that waits for ReportCrash to finish dumping the stack go?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582545</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-19 17:55:09 -0700</bug_when>
    <thetext>Do we not need to wait for ReportCrash anymore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582552</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-19 18:04:13 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 132732 [details])
&gt; I&apos;m not sure I understand.  Where did the code that waits for ReportCrash to finish dumping the stack go?

That logic moves into the Port classes (see bug 81603), but I should probably move some of it back here.

The reason is slightly complicated. 

It turns out that waiting for ReportCrash to exit is the wrong thing to do. Under normal circumstances (things are crashing rarely), ReportCrash actually writes the crash log before python is even notified that the subprocess has crashed. When lots of things are crashing, however, the write may be somewhat delayed (I don&apos;t really know what&apos;s going on, but it&apos;s like there is a delay before the file gets flushed to disk). So, in some cases, we actually do want to wait a while longer to look for the log - hence, in the patch in bug 81603, there&apos;s a slow spin for a period of time derived from how many workers are running in parallel.

However, in any case, the operating system appears to keep ReportCrash around for a long (~30-40second) time just so it doesn&apos;t have to re-launch it if there is another crash. Also, there is only ever one ReportCrash running, regardless of how many processes are crashing at once (it appears that the single ReportCrash handles multiple crashes simultaneously).

Most of the time, not waiting at all seems to be fine. Sometimes - if the world is broken and so every test crashes - you want to wait for a while. 

Ideally (for me) we&apos;d land this patch as-is and then get &quot;more correct&quot; when 81603 lands. However, if you like I can rework the division of labor between the two patches a bit so that we even slow-spin as part of this patch as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582553</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-19 18:04:41 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; That logic moves into the Port classes (see bug 81603), but I should probably move some of it back here.

s/should probably/could if necessary/. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582562</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-19 18:18:04 -0700</bug_when>
    <thetext>I see.  I think I misunderstood how ReportCrash worked previously.  I thought there was one for each crash dump.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582563</commentid>
    <comment_count>9</comment_count>
      <attachid>132732</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-19 18:19:02 -0700</bug_when>
    <thetext>Comment on attachment 132732
Patch

I&apos;m not sure I understand 100% of the details in this patch, but I like the overall direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582576</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-19 18:33:10 -0700</bug_when>
    <thetext>Committed r111293: &lt;http://trac.webkit.org/changeset/111293&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582670</commentid>
    <comment_count>11</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-03-19 20:11:26 -0700</bug_when>
    <thetext>This is still breaking the layout tests on the bots, even after http://trac.webkit.org/changeset/111307

http://build.webkit.org/builders/Lion%20Intel%20Debug%20%28WebKit2%20Tests%29/builds/5070/steps/layout-test/logs/stdio

-03-19 19:51:42,660 43121 single_test_runner.py:209 DEBUG   /Volumes/Data/slave/lion-intel-debug/build/Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp(557) : bool WebCore::ApplicationCacheStorage::executeSQLCommand(const WTF::String &amp;)
2012-03-19 19:51:42,660 43123 stack_utils.py:67 DEBUG     File &quot;/Volumes/Data/slave/lion-intel-debug-tests-wk2/build/Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py&quot;, line 280, in run
2012-03-19 19:51:42,661 43123 stack_utils.py:67 DEBUG       self._worker_connection.run_message_loop()
2012-03-19 19:51:42,661 43123 stack_utils.py:67 DEBUG     File &quot;/Volumes/Data/slave/lion-intel-debug-tests-wk2/build/Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py&quot;, line 232, in run_message_loop
2012-03-19 19:51:42,661 43123 stack_utils.py:67 DEBUG       self._broker.run_message_loop(self._run_topic, self._client, delay_secs)
2012-03-19 19:51:42,661 43123 stack_utils.py:67 DEBUG     File &quot;/Volumes/Data/slave/lion-intel-debug-tests-wk2/build/Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py&quot;, line 168, in run_message_loop
2012-03-19 19:51:42,661 43123 stack_utils.py:67 DEBUG       self._run_loop(topic_name, client, block=True, delay_secs=delay_secs)
2012-03-19 19:51:42,661 43123 stack_utils.py:67 DEBUG     File &quot;/Volumes/Data/slave/lion-intel-debug-tests-wk2/build/Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py&quot;, line 182, in _run_loop
2012-03-19 19:51:42,662 43121 worker.py:206 DEBUG worker/5 fast/media/media-query-invalid-value.html passed
2012-03-19 19:51:42,662 43123 stack_utils.py:67 DEBUG       self._dispatch_message(msg, client)
2012-03-19 19:51:42,662 43123 stack_utils.py:67 DEBUG     File &quot;/Volumes/Data/slave/lion-intel-debug-tests-wk2/build/Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py&quot;, line 191, in _dispatch_message
2012-03-19 19:51:42,662 43123 stack_utils.py:67 DEBUG       message_handler(message.src, *optargs)
2012-03-19 19:51:42,662 43123 stack_utils.py:67 DEBUG     File &quot;/Volumes/Data/slave/lion-intel-debug-tests-wk2/build/Tools/Scripts/webkitpy/layout_tests/controllers/worker.py&quot;, line 128, in handle_test_list
2012-03-19 19:51:42,662 43123 stack_utils.py:67 DEBUG       self._run_test(test_input)
2012-03-19 19:51:42,663 43123 stack_utils.py:67 DEBUG     File &quot;/Volumes/Data/slave/lion-intel-debug-tests-wk2/build/Tools/Scripts/webkitpy/layout_tests/controllers/worker.py&quot;, line 143, in _run_test
2012-03-19 19:51:42,663 43123 stack_utils.py:67 DEBUG       result = self.run_test_with_timeout(test_input, test_timeout_sec)
2012-03-19 19:51:42,663 43123 stack_utils.py:67 DEBUG     File &quot;/Volumes/Data/slave/lion-intel-debug-tests-wk2/build/Tools/Scripts/webkitpy/layout_tests/controllers/worker.py&quot;, line 185, in run_test_with_timeout
2012-03-19 19:51:42,663 43123 stack_utils.py:67 DEBUG       return self._run_test_in_this_thread(test_input)
2012-03-19 19:51:42,663 43123 stack_utils.py:67 DEBUG     File &quot;/Volumes/Data/slave/lion-intel-debug-tests-wk2/build/Tools/Scripts/webkitpy/layout_tests/controllers/worker.py&quot;, line 270, in _run_test_in_this_thread
2012-03-19 19:51:42,663 43123 stack_utils.py:67 DEBUG       return self.run_single_test(self._driver, test_input)
2012-03-19 19:51:42,663 43123 stack_utils.py:67 DEBUG     File &quot;/Volumes/Data/slave/lion-intel-debug-tests-wk2/build/Tools/Scripts/webkitpy/layout_tests/controllers/worker.py&quot;, line 274, in run_single_test
2012-03-19 19:51:42,664 43123 stack_utils.py:67 DEBUG       test_input, driver, self._name)
2012-03-19 19:51:42,664 43123 stack_utils.py:67 DEBUG     File &quot;/Volumes/Data/slave/lion-intel-debug-tests-wk2/build/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py&quot;, line 46, in run_single_test
2012-03-19 19:51:42,664 43123 stack_utils.py:67 DEBUG       return runner.run()
2012-03-19 19:51:42,664 43123 stack_utils.py:67 DEBUG     File &quot;/Volumes/Data/slave/lion-intel-debug-tests-wk2/build/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py&quot;, line 106, in run
2012-03-19 19:51:42,664 43123 stack_utils.py:67 DEBUG       return self._run_compare_test()
2012-03-19 19:51:42,664 43123 stack_utils.py:67 DEBUG     File &quot;/Volumes/Data/slave/lion-intel-debug-tests-wk2/build/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py&quot;, line 119, in _run_compare_test
2012-03-19 19:51:42,664 43123 stack_utils.py:67 DEBUG       test_result_writer.write_test_result(self._filesystem, self._port, self._test_name, driver_output, expected_driver_output, test_result.failures)
2012-03-19 19:51:42,665 43123 stack_utils.py:67 DEBUG     File &quot;/Volumes/Data/slave/lion-intel-debug-tests-wk2/build/Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py&quot;, line 66, in write_test_result
2012-03-19 19:51:42,665 43123 stack_utils.py:67 DEBUG       writer.write_crash_report(crashed_driver_output.crashed_process_name, crashed_driver_output.error)
2012-03-19 19:51:42,665 43123 stack_utils.py:67 DEBUG     File &quot;/Volumes/Data/slave/lion-intel-debug-tests-wk2/build/Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py&quot;, line 165, in write_crash_report
2012-03-19 19:51:42,665 43123 stack_utils.py:67 DEBUG       log = crash_logs.find_newest_log(crashed_process_name)
2012-03-19 19:51:42,665 43123 stack_utils.py:67 DEBUG     File &quot;/Volumes/Data/slave/lion-intel-debug-tests-wk2/build/Tools/Scripts/webkitpy/common/system/crashlogs.py&quot;, line 40, in find_newest_log
2012-03-19 19:51:42,665 43123 stack_utils.py:67 DEBUG       return self._find_newest_log_darwin(process_name, pid, include_errors)
2012-03-19 19:51:42,665 43123 stack_utils.py:67 DEBUG     File &quot;/Volumes/Data/slave/lion-intel-debug-tests-wk2/build/Tools/Scripts/webkitpy/common/system/crashlogs.py&quot;, line 57, in _find_newest_log_darwin
2012-03-19 19:51:42,666 43123 stack_utils.py:67 DEBUG       logs = self._filesystem.files_under(log_directory, file_filter=is_crash_log)
2012-03-19 19:51:42,666 43123 stack_utils.py:67 DEBUG     File &quot;/Volumes/Data/slave/lion-intel-debug-tests-wk2/build/Tools/Scripts/webkitpy/common/system/filesystem.py&quot;, line 111, in files_under
2012-03-19 19:51:42,666 43123 stack_utils.py:67 DEBUG       if file_filter(self, dirpath, filename):
2012-03-19 19:51:42,666 43123 stack_utils.py:67 DEBUG     File &quot;/Volumes/Data/slave/lion-intel-debug-tests-wk2/build/Tools/Scripts/webkitpy/common/system/crashlogs.py&quot;, line 54, in is_crash_log
2012-03-19 19:51:42,666 43123 stack_utils.py:67 DEBUG       return basename.startswith(process_name + &quot;_&quot;) and basename.endswith(&quot;.crash&quot;)
2012-03-19 19:51:42,668 43123 manager_worker_broker.py:291 DEBUG worker/7 done with message loop, exception raised
2012-03-19 19:51:42,669 42883 manager.py:1424 ERROR worker/7 raised TypeError(&apos;unsupported operand type(s) for +: &apos;NoneType&apos; and &apos;str&apos;&apos;):
2012-03-19 19:51:42,669 42883 manager.py:1458 ERROR   layout_tests/controllers/manager_worker_broker.py:280 (in run)
2012-03-19 19:51:42,669 42883 manager.py:1459 ERROR     self._worker_connection.run_message_loop()
2012-03-19 19:51:42,669 42883 manager.py:1458 ERROR   layout_tests/controllers/manager_worker_broker.py:232 (in run_message_loop)
2012-03-19 19:51:42,669 42883 manager.py:1459 ERROR     self._broker.run_message_loop(self._run_topic, self._client, delay_secs)
2012-03-19 19:51:42,669 42883 manager.py:1458 ERROR   layout_tests/controllers/manager_worker_broker.py:168 (in run_message_loop)
2012-03-19 19:51:42,669 42883 manager.py:1459 ERROR     self._run_loop(topic_name, client, block=True, delay_secs=delay_secs)
2012-03-19 19:51:42,670 42883 manager.py:1458 ERROR   layout_tests/controllers/manager_worker_broker.py:182 (in _run_loop)
2012-03-19 19:51:42,670 42883 manager.py:1459 ERROR     self._dispatch_message(msg, client)
2012-03-19 19:51:42,670 42883 manager.py:1458 ERROR   layout_tests/controllers/manager_worker_broker.py:191 (in _dispatch_message)
2012-03-19 19:51:42,670 42883 manager.py:1459 ERROR     message_handler(message.src, *optargs)
2012-03-19 19:51:42,670 42883 manager.py:1458 ERROR   layout_tests/controllers/worker.py:128 (in handle_test_list)
2012-03-19 19:51:42,670 42883 manager.py:1459 ERROR     self._run_test(test_input)
2012-03-19 19:51:42,670 42883 manager.py:1458 ERROR   layout_tests/controllers/worker.py:143 (in _run_test)
2012-03-19 19:51:42,670 42883 manager.py:1459 ERROR     result = self.run_test_with_timeout(test_input, test_timeout_sec)
2012-03-19 19:51:42,670 42883 manager.py:1458 ERROR   layout_tests/controllers/worker.py:185 (in run_test_with_timeout)
2012-03-19 19:51:42,670 42883 manager.py:1459 ERROR     return self._run_test_in_this_thread(test_input)
2012-03-19 19:51:42,670 42883 manager.py:1458 ERROR   layout_tests/controllers/worker.py:270 (in _run_test_in_this_thread)
2012-03-19 19:51:42,670 42883 manager.py:1459 ERROR     return self.run_single_test(self._driver, test_input)
2012-03-19 19:51:42,670 42883 manager.py:1458 ERROR   layout_tests/controllers/worker.py:274 (in run_single_test)
2012-03-19 19:51:42,671 42883 manager.py:1459 ERROR     test_input, driver, self._name)
2012-03-19 19:51:42,671 42883 manager.py:1458 ERROR   layout_tests/controllers/single_test_runner.py:46 (in run_single_test)
2012-03-19 19:51:42,671 42883 manager.py:1459 ERROR     return runner.run()
2012-03-19 19:51:42,671 42883 manager.py:1458 ERROR   layout_tests/controllers/single_test_runner.py:106 (in run)
2012-03-19 19:51:42,671 42883 manager.py:1459 ERROR     return self._run_compare_test()
2012-03-19 19:51:42,671 42883 manager.py:1458 ERROR   layout_tests/controllers/single_test_runner.py:119 (in _run_compare_test)
2012-03-19 19:51:42,671 42883 manager.py:1459 ERROR     test_result_writer.write_test_result(self._filesystem, self._port, self._test_name, driver_output, expected_driver_output, test_result.failures)
2012-03-19 19:51:42,671 43123 worker.py:151 DEBUG worker/7 cleaning up
2012-03-19 19:51:42,671 42883 manager.py:1458 ERROR   layout_tests/controllers/test_result_writer.py:66 (in write_test_result)
2012-03-19 19:51:42,671 42883 manager.py:1459 ERROR     writer.write_crash_report(crashed_driver_output.crashed_process_name, crashed_driver_output.error)
2012-03-19 19:51:42,671 42883 manager.py:1458 ERROR   layout_tests/controllers/test_result_writer.py:165 (in write_crash_report)
2012-03-19 19:51:42,671 42883 manager.py:1459 ERROR     log = crash_logs.find_newest_log(crashed_process_name)
2012-03-19 19:51:42,671 43123 worker.py:178 DEBUG worker/7 killing driver
2012-03-19 19:51:42,671 42883 manager.py:1458 ERROR   common/system/crashlogs.py:40 (in find_newest_log)
2012-03-19 19:51:42,672 42883 manager.py:1459 ERROR     return self._find_newest_log_darwin(process_name, pid, include_errors)
2012-03-19 19:51:42,672 42883 manager.py:1458 ERROR   common/system/crashlogs.py:57 (in _find_newest_log_darwin)
2012-03-19 19:51:42,672 42883 manager.py:1459 ERROR     logs = self._filesystem.files_under(log_directory, file_filter=is_crash_log)
2012-03-19 19:51:42,672 42883 manager.py:1458 ERROR   common/system/filesystem.py:111 (in files_under)
2012-03-19 19:51:42,672 42883 manager.py:1459 ERROR     if file_filter(self, dirpath, filename):
2012-03-19 19:51:42,672 42883 manager.py:1458 ERROR   common/system/crashlogs.py:54 (in is_crash_log)
2012-03-19 19:51:42,672 42883 manager.py:1459 ERROR     return basename.startswith(process_name + &quot;_&quot;) and basename.endswith(&quot;.crash&quot;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582671</commentid>
    <comment_count>12</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-03-19 20:12:19 -0700</bug_when>
    <thetext>I think I may have to roll out those patches soon if this isn&apos;t addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582701</commentid>
    <comment_count>13</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-03-19 20:48:06 -0700</bug_when>
    <thetext>I had to roll out the changes in http://trac.webkit.org/changeset/111343</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582828</commentid>
    <comment_count>14</comment_count>
      <attachid>132732</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-03-20 00:52:34 -0700</bug_when>
    <thetext>Comment on attachment 132732
Patch

Unflagging patch, since it got rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583413</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-20 13:56:32 -0700</bug_when>
    <thetext>Thanks for rolling this out, and I&apos;m sorry I wasn&apos;t around to debug/fix/roll it out myself!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583518</commentid>
    <comment_count>16</comment_count>
      <attachid>132911</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-20 15:39:02 -0700</bug_when>
    <thetext>Created attachment 132911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583520</commentid>
    <comment_count>17</comment_count>
      <attachid>132911</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-20 15:39:48 -0700</bug_when>
    <thetext>Comment on attachment 132911
Patch

The actual fix:


layout_tests $ git diff port/webkit.py
494c494,497
&lt;         return self._server_process.has_crashed()
---
&gt;         if self._server_process.has_crashed():
&gt;             self._crashed_subprocess_name = self._port.driver_name()
&gt;             return True
&gt;         return False
501c504,505
&lt;         elif error_line == &quot;#CRASHED - WebProcess\n&quot;:
---
&gt;             return True
&gt;         if error_line == &quot;#CRASHED - WebProcess\n&quot;:
503a508
&gt;             return True</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583521</commentid>
    <comment_count>18</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-20 15:40:19 -0700</bug_when>
    <thetext>Committed r111453: &lt;http://trac.webkit.org/changeset/111453&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583615</commentid>
    <comment_count>19</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-03-20 16:52:53 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Committed r111453: &lt;http://trac.webkit.org/changeset/111453&gt;

This change broke Lion Intel Release (WebKit2 Tests), as seen here: &lt;http://build.webkit.org/builders/Lion%20Intel%20Release%20%28WebKit2%20Tests%29/builds/5535/steps/layout-test/logs/stdio/text&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583623</commentid>
    <comment_count>20</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-20 17:00:17 -0700</bug_when>
    <thetext>Reverted r111453 for reason:

still broken

Committed r111470: &lt;http://trac.webkit.org/changeset/111470&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583926</commentid>
    <comment_count>21</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-21 02:27:29 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Reverted r111453 for reason:
&gt; 
&gt; still broken
&gt; 
&gt; Committed r111470: &lt;http://trac.webkit.org/changeset/111470&gt;

I still see this in GTK Debug when a crash happens:

2012-03-21 02:10:45,581 1482 manager.py:1424 ERROR worker/1 raised UnicodeDecodeError(&apos;&apos;ascii&apos; codec can&apos;t decode byte 0xce in position 235: ordinal not in range(128)&apos;):
2012-03-21 02:10:45,582 1482 manager.py:1458 ERROR   layout_tests/controllers/manager_worker_broker.py:280 (in run)
2012-03-21 02:10:45,582 1482 manager.py:1459 ERROR     self._worker_connection.run_message_loop()
...
2012-03-21 02:10:45,584 1482 manager.py:1458 ERROR   layout_tests/controllers/single_test_runner.py:119 (in _run_compare_test)
2012-03-21 02:10:45,584 1482 manager.py:1459 ERROR     test_result_writer.write_test_result(self._filesystem, self._port, self._test_name, driver_output, expected_driver_output, test_result.failures)
2012-03-21 02:10:45,584 1482 manager.py:1458 ERROR   layout_tests/controllers/test_result_writer.py:66 (in write_test_result)
2012-03-21 02:10:45,584 1482 manager.py:1459 ERROR     writer.write_crash_report(crashed_driver_output.crashed_process_name, crashed_driver_output.error)
2012-03-21 02:10:45,584 1482 manager.py:1458 ERROR   layout_tests/controllers/test_result_writer.py:168 (in write_crash_report)
2012-03-21 02:10:45,584 1482 manager.py:1459 ERROR     fs.write_text_file(filename, log if log else error)
2012-03-21 02:10:45,584 1482 manager.py:1458 ERROR   common/system/filesystem.py:223 (in write_text_file)
2012-03-21 02:10:45,584 1482 manager.py:1459 ERROR     f.write(contents)
2012-03-21 02:10:45,584 1482 manager.py:1458 ERROR   /usr/lib/python2.6/codecs.py:691 (in write)
2012-03-21 02:10:45,584 1482 manager.py:1459 ERROR     return self.writer.write(data)
2012-03-21 02:10:45,585 1482 manager.py:1458 ERROR   /usr/lib/python2.6/codecs.py:351 (in write)
2012-03-21 02:10:45,585 1482 manager.py:1459 ERROR     data, consumed = self.encode(object, self.errors)

The error variable needs to be: errors.decode(&apos;utf8&apos;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584546</commentid>
    <comment_count>22</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-21 13:11:57 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; The error variable needs to be: errors.decode(&apos;utf8&apos;)

Okay, will fix with the next attempt :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584556</commentid>
    <comment_count>23</comment_count>
      <attachid>133102</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-21 13:22:14 -0700</bug_when>
    <thetext>Created attachment 133102
fix another crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584558</commentid>
    <comment_count>24</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-21 13:23:28 -0700</bug_when>
    <thetext>Actual fix in patch #3:


$ diff --git a/Tools/Scripts/webkitpy/layout_tests/port/webkit.py b/Tools/Scripts/webkitpy/layout_tests/port/webkit.py
index 32a7a25..b998c47 100644
--- a/Tools/Scripts/webkitpy/layout_tests/port/webkit.py
+++ b/Tools/Scripts/webkitpy/layout_tests/port/webkit.py
@@ -588,7 +588,7 @@ class WebKitDriver(Driver):
         block = ContentBlock()
         out_seen_eof = False
 
-        while True:
+        while not self.has_crashed():
             if out_seen_eof and (self.err_seen_eof or not wait_for_stderr_eof):
                 break
$

I need to revamp ServerProcess to be a little more bulletproof, but I&apos;ll do that in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584566</commentid>
    <comment_count>25</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-21 13:29:45 -0700</bug_when>
    <thetext>Committed r111599: &lt;http://trac.webkit.org/changeset/111599&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132732</attachid>
            <date>2012-03-19 17:32:16 -0700</date>
            <delta_ts>2012-03-20 15:38:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81600-20120319173215.patch</filename>
            <type>text/plain</type>
            <size>12948</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMjYxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGIzMGY0YTViN2QxYmFjYTE1MGM0Y2Q4NWU5YThiNzE4
MjlhMzU4Ny4uOTc1Njk0MjViOGUzYTE0MWM3ZmJjOTg5ZTQ4ZWY3ZGU4NzhiOGMwNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ0
IEBACiAyMDEyLTAzLTE5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHdlYmtpdHB5OiBnZXQgU2VydmVyUHJvY2VzcyBvdXQgb2YgdGhlIHJlcG9ydGNyYXNo
IGJ1c2luZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MTYwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNlcnZlclByb2Nlc3Mgd2FzIGhhbGYtYXdhcmUgdGhhdCBSZXBvcnRDcmFzaCBtaWdodCBydW4K
KyAgICAgICAgc29tZXRpbWVzLCBhbmQgdGhhdCB0aGUgcHJvY2VzcyBTZXJ2ZXJQcm9jZXNzIHdh
cyB0YWxraW5nIHRvCisgICAgICAgIG1pZ2h0IGhhdmUgaXRzIG93biBjcmFzaGluZyBzdWJwcm9j
ZXNzZXM7IG5laXRoZXIgb2YgdGhlc2UKKyAgICAgICAgdGhpbmdzIHJlYWxseSB3b3JrZWQgcmln
aHQgYW5kIGl0IG1hZGUgdGhlIGxvZ2ljIGNvbnZvbHV0ZWQsIHNvCisgICAgICAgIHRoaXMgY2hh
bmdlIG1ha2VzIGhhbmRsaW5nIGNyYXNoZXMgY29tcGxldGVseSBzZXBhcmF0ZSBmcm9tIHRoZQor
ICAgICAgICBzZXJ2ZXJfcHJvY2VzcyBjb2RlLCBzbyB0aGF0IGl0IGNhbiBmb2N1cyBvbiBqdXN0
IEkvTyB0byB0aGUKKyAgICAgICAgc3VicHJvY2Vzcy4KKworICAgICAgICBUaGVyZSBzaG91bGQg
YmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHJlc3VsdGluZyBmcm9tIHRoaXMgcGF0Y2guCisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNz
LnB5OgorICAgICAgICAoU2VydmVyUHJvY2Vzcy5fcmVzZXQpOgorICAgICAgICAoU2VydmVyUHJv
Y2Vzcy5faGFuZGxlX3Bvc3NpYmxlX2ludGVycnVwdCk6CisgICAgICAgIChTZXJ2ZXJQcm9jZXNz
LndyaXRlKToKKyAgICAgICAgKFNlcnZlclByb2Nlc3MucmVhZF9zdGRvdXQpOgorICAgICAgICAo
U2VydmVyUHJvY2Vzcy5oYXNfY3Jhc2hlZCk6CisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLl9yZWFk
KToKKyAgICAgICAgKFNlcnZlclByb2Nlc3Muc3RvcCk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzc191bml0dGVzdC5weToKKyAgICAg
ICAgKFRyaXZpYWxNb2NrUG9ydC5jaGVja19mb3JfbGVha3MpOgorICAgICAgICAoVGVzdFNlcnZl
clByb2Nlc3MudGVzdF9icm9rZW5fcGlwZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisgICAgICAgIChXZWJLaXRQb3J0Ll9yZWFkX2lt
YWdlX2RpZmYpOgorICAgICAgICAoV2ViS2l0RHJpdmVyLmhhc19jcmFzaGVkKToKKyAgICAgICAg
KFdlYktpdERyaXZlci5fY2hlY2tfZm9yX2RyaXZlcl9jcmFzaCk6CisgICAgICAgIChXZWJLaXRE
cml2ZXIucnVuX3Rlc3QpOgorICAgICAgICAoV2ViS2l0RHJpdmVyLl9yZWFkX2Jsb2NrKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVz
dC5weToKKyAgICAgICAgKE1vY2tTZXJ2ZXJQcm9jZXNzLl9faW5pdF9fKToKKyAgICAgICAgKE1v
Y2tTZXJ2ZXJQcm9jZXNzKToKKyAgICAgICAgKE1vY2tTZXJ2ZXJQcm9jZXNzLmhhc19jcmFzaGVk
KToKKworMjAxMi0wMy0xOSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwog
ICAgICAgICBOUldUIHJ1bnMgc29tZSB0ZXN0cyB0aGF0IGFyZSBza2lwcGVkIHdpdGggLWkgY29t
bWFuZCBsaW5lIG9wdGlvbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODE1MzUKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHkKaW5kZXggNmM0OGZlZjY0YjAxMzBh
NDg4YzNlODM2NTM1Yzc3NmRjNGVjNGE2Ni4uMjQ1Yjc3YTZhYzliN2ZhZmJkYzQxM2RlZmEzZmI5
YjFlMDg1NGEzMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CkBAIC03MCw3ICs3MCw3IEBAIGNsYXNz
IFNlcnZlclByb2Nlc3M6CiAgICAgICAgIHNlbGYuX3Byb2MgPSBOb25lCiAgICAgICAgIHNlbGYu
X291dHB1dCA9IHN0cigpICAjIGJ5dGVzYXJyYXkoKSBvbmNlIHdlIHJlcXVpcmUgUHl0aG9uIDIu
NgogICAgICAgICBzZWxmLl9lcnJvciA9IHN0cigpICAjIGJ5dGVzYXJyYXkoKSBvbmNlIHdlIHJl
cXVpcmUgUHl0aG9uIDIuNgotICAgICAgICBzZWxmLnNldF9jcmFzaGVkKEZhbHNlKQorICAgICAg
ICBzZWxmLl9jcmFzaGVkID0gRmFsc2UKICAgICAgICAgc2VsZi50aW1lZF9vdXQgPSBGYWxzZQog
CiAgICAgZGVmIHByb2Nlc3NfbmFtZShzZWxmKToKQEAgLTk0LDIyICs5NCwxNyBAQCBjbGFzcyBT
ZXJ2ZXJQcm9jZXNzOgogICAgICAgICBmbCA9IGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX0dFVEZM
KQogICAgICAgICBmY250bC5mY250bChmZCwgZmNudGwuRl9TRVRGTCwgZmwgfCBvcy5PX05PTkJM
T0NLKQogCi0gICAgZGVmIGhhbmRsZV9pbnRlcnJ1cHQoc2VsZik6CisgICAgZGVmIF9oYW5kbGVf
cG9zc2libGVfaW50ZXJydXB0KHNlbGYpOgogICAgICAgICAiIiJUaGlzIHJvdXRpbmUgY2hlY2tz
IHRvIHNlZSBpZiB0aGUgcHJvY2VzcyBjcmFzaGVkIG9yIGV4aXRlZAogICAgICAgICBiZWNhdXNl
IG9mIGEga2V5Ym9hcmQgaW50ZXJydXB0IGFuZCByYWlzZXMgS2V5Ym9hcmRJbnRlcnJ1cHQKICAg
ICAgICAgYWNjb3JkaW5nbHkuIiIiCi0gICAgICAgIGlmIHNlbGYuY3Jhc2hlZDoKLSAgICAgICAg
ICAgICMgVGhpcyBpcyBoZXggY29kZSAweGMwMDAwMDFkLCB3aGljaCBpcyB1c2VkIGZvciBhYnJ1
cHQKLSAgICAgICAgICAgICMgdGVybWluYXRpb24uIFRoaXMgaGFwcGVucyBpZiB3ZSBoaXQgY3Ry
bCtjIGZyb20gdGhlIHByb21wdAotICAgICAgICAgICAgIyBhbmQgd2UgaGFwcGVuIHRvIGJlIHdh
aXRpbmcgb24gdGhlIER1bXBSZW5kZXJUcmVlLgotICAgICAgICAgICAgIyBzZG95b246IE5vdCBz
dXJlIGZvciB3aGljaCBPUyBhbmQgaW4gd2hhdCBjaXJjdW1zdGFuY2VzIHRoZQotICAgICAgICAg
ICAgIyBhYm92ZSBjb2RlIGlzIHZhbGlkLiBXaGF0IHdvcmtzIGZvciBtZSB1bmRlciBMaW51eCB0
byBkZXRlY3QKLSAgICAgICAgICAgICMgY3RybCtjIGlzIGZvciB0aGUgc3VicHJvY2VzcyByZXR1
cm5jb2RlIHRvIGJlIG5lZ2F0aXZlCi0gICAgICAgICAgICAjIFNJR0lOVC4gQW5kIHRoYXQgYWdy
ZWVzIHdpdGggdGhlIHN1YnByb2Nlc3MgZG9jdW1lbnRhdGlvbi4KLSAgICAgICAgICAgIGlmICgt
MTA3Mzc0MTUxMCA9PSBzZWxmLl9wcm9jLnJldHVybmNvZGUgb3IKLSAgICAgICAgICAgICAgICAt
IHNpZ25hbC5TSUdJTlQgPT0gc2VsZi5fcHJvYy5yZXR1cm5jb2RlKToKLSAgICAgICAgICAgICAg
ICByYWlzZSBLZXlib2FyZEludGVycnVwdAotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICMg
RklYTUU6IExpbnV4IGFuZCBNYWMgc2V0IHRoZSByZXR1cm5jb2RlIHRvIC1zaWduYWwuU0lHSU5U
IGlmIGEKKyAgICAgICAgIyBzdWJwcm9jZXNzIGlzIGtpbGxlZCB3aXRoIGEgY3RybF5DLiAgUHJl
dmlvdXMgY29tbWVudHMgaW4gdGhpcworICAgICAgICAjIHJvdXRpbmUgc2FpZCB0aGF0IHN1cHBv
c2VkbHkgV2luZG93cyByZXR1cm5zIDB4YzAwMDAwMWQsIGJ1dCB0aGF0J3Mgbm90IHdoYXQKKyAg
ICAgICAgIyAtMTA3Mzc0MTUxMCBldmFsdWF0ZXMgdG8uIEZpZ3VyZSBvdXQgd2hhdCB0aGUgcmln
aHQgdmFsdWUgaXMKKyAgICAgICAgIyBmb3Igd2luMzIgYW5kIGN5Z3dpbiBoZXJlIC4uLgorICAg
ICAgICBpZiBzZWxmLl9wcm9jLnJldHVybmNvZGUgaW4gKC0xMDczNzQxNTEwLCAtc2lnbmFsLlNJ
R0lOVCk6CisgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAogCiAgICAgZGVmIHBv
bGwoc2VsZik6CiAgICAgICAgICIiIkNoZWNrIHRvIHNlZSBpZiB0aGUgdW5kZXJseWluZyBwcm9j
ZXNzIGlzIHJ1bm5pbmc7IHJldHVybnMgTm9uZQpAQCAtMTI4LDcgKzEyMyw3IEBAIGNsYXNzIFNl
cnZlclByb2Nlc3M6CiAgICAgICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgogICAgICAgICAgICAgc2Vs
Zi5zdG9wKCkKICAgICAgICAgICAgICMgc3RvcCgpIGNhbGxzIF9yZXNldCgpLCBzbyB3ZSBoYXZl
IHRvIHNldCBjcmFzaGVkIHRvIFRydWUgYWZ0ZXIgY2FsbGluZyBzdG9wKCkuCi0gICAgICAgICAg
ICBzZWxmLnNldF9jcmFzaGVkKFRydWUpCisgICAgICAgICAgICBzZWxmLl9jcmFzaGVkID0gVHJ1
ZQogCiAgICAgZGVmIF9wb3Bfc3Rkb3V0X2xpbmVfaWZfcmVhZHkoc2VsZik6CiAgICAgICAgIGlu
ZGV4X2FmdGVyX25ld2xpbmUgPSBzZWxmLl9vdXRwdXQuZmluZCgnXG4nKSArIDEKQEAgLTE3OCwx
MSArMTczLDYgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKIAogICAgICAgICByZXR1cm4gc2VsZi5f
cmVhZChkZWFkbGluZSwgcmV0cmlldmVfYnl0ZXNfZnJvbV9zdGRvdXRfYnVmZmVyKQogCi0gICAg
ZGVmIF9jaGVja19mb3JfY3Jhc2goc2VsZiwgd2FpdF9mb3JfY3Jhc2hfcmVwb3J0ZXI9VHJ1ZSk6
Ci0gICAgICAgIGlmIHNlbGYucG9sbCgpICE9IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnNldF9j
cmFzaGVkKFRydWUsIHdhaXRfZm9yX2NyYXNoX3JlcG9ydGVyKQotICAgICAgICAgICAgc2VsZi5o
YW5kbGVfaW50ZXJydXB0KCkKLQogICAgIGRlZiBfbG9nKHNlbGYsIG1lc3NhZ2UpOgogICAgICAg
ICAjIFRoaXMgaXMgYSBiaXQgb2YgYSBoYWNrLCBidXQgd2UgZmlyc3QgbG9nIGEgYmxhbmsgbGlu
ZSB0byBhdm9pZAogICAgICAgICAjIG1lc3NpbmcgdXAgdGhlIG1hc3RlciBwcm9jZXNzJ3Mgb3V0
cHV0LgpAQCAtMjA2LDEwICsxOTYsNiBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzOgogICAgICAgICAg
ICAgc2VsZi5fbG9nKCdVbmFibGUgdG8gc2FtcGxlIHByb2Nlc3MuJykKIAogICAgIGRlZiBfaGFu
ZGxlX3RpbWVvdXQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS53YWl0X25ld2VzdChz
ZWxmLl9wb3J0LmlzX2NyYXNoX3JlcG9ydGVyKQotICAgICAgICBzZWxmLl9jaGVja19mb3JfY3Jh
c2god2FpdF9mb3JfY3Jhc2hfcmVwb3J0ZXI9RmFsc2UpCi0gICAgICAgIGlmIHNlbGYuY3Jhc2hl
ZDoKLSAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLnRpbWVkX291dCA9IFRydWUKICAg
ICAgICAgc2VsZi5fc2FtcGxlKCkKIApAQCAtMjM4LDIwICsyMjQsMjIgQEAgY2xhc3MgU2VydmVy
UHJvY2VzczoKICAgICAgICAgICAgICMgRklYTUU6IFdoeSBkbyB3ZSBpZ25vcmUgYWxsIElPRXJy
b3JzIGhlcmU/CiAgICAgICAgICAgICBwYXNzCiAKLSAgICBkZWYgX2NoZWNrX2Zvcl9hYm9ydChz
ZWxmLCBkZWFkbGluZSk6Ci0gICAgICAgIHNlbGYuX2NoZWNrX2Zvcl9jcmFzaCgpCi0KLSAgICAg
ICAgaWYgdGltZS50aW1lKCkgPiBkZWFkbGluZToKLSAgICAgICAgICAgIHNlbGYuX2hhbmRsZV90
aW1lb3V0KCkKLQotICAgICAgICByZXR1cm4gc2VsZi5jcmFzaGVkIG9yIHNlbGYudGltZWRfb3V0
CisgICAgZGVmIGhhc19jcmFzaGVkKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fY3Jhc2hl
ZCBhbmQgc2VsZi5wb2xsKCk6CisgICAgICAgICAgICBzZWxmLl9jcmFzaGVkID0gVHJ1ZQorICAg
ICAgICAgICAgc2VsZi5faGFuZGxlX3Bvc3NpYmxlX2ludGVycnVwdCgpCisgICAgICAgIHJldHVy
biBzZWxmLl9jcmFzaGVkCiAKICAgICAjIFRoaXMgcmVhZCBmdW5jdGlvbiBpcyBhIGJpdCBvZGRs
eS1kZXNpZ25lZCwgYXMgaXQgcG9sbHMgYm90aCBzdGRvdXQgYW5kIHN0ZGVyciwgeWV0CiAgICAg
IyBvbmx5IHJlYWRzL3JldHVybnMgZnJvbSBvbmUgb2YgdGhlbSAoYnVmZmVyaW5nIGJvdGggaW4g
bG9jYWwgc2VsZi5fb3V0cHV0L3NlbGYuX2Vycm9yKS4KICAgICAjIEl0IG1pZ2h0IGJlIGNsZWFu
ZXIgdG8gcGFzcyBpbiB0aGUgZmlsZSBkZXNjcmlwdG9yIHRvIHBvbGwgaW5zdGVhZC4KICAgICBk
ZWYgX3JlYWQoc2VsZiwgZGVhZGxpbmUsIGZldGNoX2J5dGVzX2Zyb21fYnVmZmVyc19jYWxsYmFj
ayk6CiAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBpZiBzZWxmLl9jaGVja19mb3Jf
YWJvcnQoZGVhZGxpbmUpOgorICAgICAgICAgICAgaWYgc2VsZi5oYXNfY3Jhc2hlZCgpOgorICAg
ICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgIGlmIHRpbWUudGltZSgpID4g
ZGVhZGxpbmU6CisgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3RpbWVvdXQoKQogICAgICAg
ICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAgICAgICAgIGJ5dGVzID0gZmV0Y2hfYnl0ZXNf
ZnJvbV9idWZmZXJzX2NhbGxiYWNrKCkKQEAgLTI5Miw5ICsyODAsMyBAQCBjbGFzcyBTZXJ2ZXJQ
cm9jZXNzOgogICAgICAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS5raWxsX3Byb2Nlc3Moc2Vs
Zi5fcHJvYy5waWQpCiAgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdraWxsZWQnKQogICAg
ICAgICBzZWxmLl9yZXNldCgpCi0KLSAgICBkZWYgc2V0X2NyYXNoZWQoc2VsZiwgY3Jhc2hlZCwg
d2FpdF9mb3JfY3Jhc2hfcmVwb3J0ZXI9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuY3Jhc2hlZCA9IGNy
YXNoZWQKLSAgICAgICAgaWYgbm90IHNlbGYuY3Jhc2hlZCBvciBub3Qgd2FpdF9mb3JfY3Jhc2hf
cmVwb3J0ZXI6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi5fZXhlY3V0aXZlLndh
aXRfbmV3ZXN0KHNlbGYuX3BvcnQuaXNfY3Jhc2hfcmVwb3J0ZXIpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzX3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJf
cHJvY2Vzc191bml0dGVzdC5weQppbmRleCBjYWU2YjAyYzU5NDM2MWZhNDY4NDA0MDI0ZTI5Njhj
MDFlOWQ1MDk0Li5mMmJjOTk2ODY1MTRlM2M0NjEzMzkxYTk2MTM5ZjE3ODRiZTAwYjY5IDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9w
cm9jZXNzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvc2VydmVyX3Byb2Nlc3NfdW5pdHRlc3QucHkKQEAgLTUwLDkgKzUwLDYgQEAgY2xh
c3MgVHJpdmlhbE1vY2tQb3J0KG9iamVjdCk6CiAgICAgZGVmIGNoZWNrX2Zvcl9sZWFrcyhzZWxm
LCBwcm9jZXNzX25hbWUsIHByb2Nlc3NfcGlkKToKICAgICAgICAgcGFzcwogCi0gICAgZGVmIGlz
X2NyYXNoX3JlcG9ydGVyKHNlbGYsIHByb2Nlc3NfbmFtZSk6Ci0gICAgICAgIHJldHVybiBGYWxz
ZQotCiAKIGNsYXNzIE1vY2tGaWxlKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNl
cnZlcl9wcm9jZXNzKToKQEAgLTkxLDcgKzg4LDcgQEAgY2xhc3MgVGVzdFNlcnZlclByb2Nlc3Mo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Jyb2tlbl9waXBlKHNlbGYpOgogICAg
ICAgICBzZXJ2ZXJfcHJvY2VzcyA9IEZha2VTZXJ2ZXJQcm9jZXNzKHBvcnRfb2JqPVRyaXZpYWxN
b2NrUG9ydCgpLCBuYW1lPSJ0ZXN0IiwgY21kPVsidGVzdCJdKQogICAgICAgICBzZXJ2ZXJfcHJv
Y2Vzcy53cml0ZSgic2hvdWxkIGJyZWFrIikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZl
cl9wcm9jZXNzLmNyYXNoZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXJfcHJvY2Vz
cy5oYXNfY3Jhc2hlZCgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZXJ2ZXJfcHJvY2Vz
cy5fcHJvYywgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VydmVyX3Byb2Nlc3Mu
YnJva2VuX3BpcGVzLCBbc2VydmVyX3Byb2Nlc3Muc3RkaW5dKQogCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CmluZGV4IDZlNGExNmJk
YTQ3MGY5ZGRlMjc1MjEwYmJmZTI5NDU0ZmNmNmFjNTguLmI5YzdhMDcwMmEzYWFmYWE1YjE0ZDQ0
MzA5YjBmMDNjODYzNmQ2NWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CkBAIC0xOTQsNyArMTk0LDcgQEAgY2xhc3MgV2ViS2l0
UG9ydChQb3J0KToKIAogICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgb3V0cHV0ID0g
c3AucmVhZF9zdGRvdXRfbGluZShkZWFkbGluZSkKLSAgICAgICAgICAgIGlmIHNwLnRpbWVkX291
dCBvciBzcC5jcmFzaGVkIG9yIG5vdCBvdXRwdXQ6CisgICAgICAgICAgICBpZiBzcC50aW1lZF9v
dXQgb3Igc3AuaGFzX2NyYXNoZWQoKSBvciBub3Qgb3V0cHV0OgogICAgICAgICAgICAgICAgIGJy
ZWFrCiAKICAgICAgICAgICAgIGlmIG91dHB1dC5zdGFydHN3aXRoKCdkaWZmJyk6ICAjIFRoaXMg
aXMgdGhlIGxhc3QgbGluZSBJbWFnZURpZmYgcHJpbnRzLgpAQCAtMjA5LDcgKzIwOSw3IEBAIGNs
YXNzIFdlYktpdFBvcnQoUG9ydCk6CiAKICAgICAgICAgaWYgc3AudGltZWRfb3V0OgogICAgICAg
ICAgICAgX2xvZy5lcnJvcigiSW1hZ2VEaWZmIHRpbWVkIG91dCIpCi0gICAgICAgIGlmIHNwLmNy
YXNoZWQ6CisgICAgICAgIGlmIHNwLmhhc19jcmFzaGVkKCk6CiAgICAgICAgICAgICBfbG9nLmVy
cm9yKCJJbWFnZURpZmYgY3Jhc2hlZCIpCiAgICAgICAgICMgRklYTUU6IFRoZXJlIGlzIG5vIG5l
ZWQgdG8gc2h1dCBkb3duIHRoZSBJbWFnZURpZmYgc2VydmVyIGFmdGVyIGV2ZXJ5IGRpZmYuCiAg
ICAgICAgIHNwLnN0b3AoKQpAQCAtNDg5LDMxICs0ODksMTkgQEAgY2xhc3MgV2ViS2l0RHJpdmVy
KERyaXZlcik6CiAgICAgZGVmIGhhc19jcmFzaGVkKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9z
ZXJ2ZXJfcHJvY2VzcyBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAg
IHJldHVybiBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5wb2xsKCkgaXMgbm90IE5vbmUKKyAgICAgICAg
aWYgc2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWU6CisgICAgICAgICAgICByZXR1cm4gVHJ1
ZQorICAgICAgICByZXR1cm4gc2VsZi5fc2VydmVyX3Byb2Nlc3MuaGFzX2NyYXNoZWQoKQogCiAg
ICAgZGVmIF9jaGVja19mb3JfZHJpdmVyX2NyYXNoKHNlbGYsIGVycm9yX2xpbmUpOgogICAgICAg
ICBpZiBlcnJvcl9saW5lID09ICIjQ1JBU0hFRFxuIjoKICAgICAgICAgICAgICMgVGhpcyBpcyB1
c2VkIG9uIFdpbmRvd3MgdG8gcmVwb3J0IHRoYXQgdGhlIHByb2Nlc3MgaGFzIGNyYXNoZWQKICAg
ICAgICAgICAgICMgU2VlIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzY1NTM3Lgot
ICAgICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Muc2V0X2NyYXNoZWQoVHJ1ZSkKKyAgICAg
ICAgICAgIHNlbGYuX2NyYXNoZWRfc3VicHJvY2Vzc19uYW1lID0gc2VsZi5fcG9ydC5kcml2ZXJf
bmFtZSgpCiAgICAgICAgIGVsaWYgZXJyb3JfbGluZSA9PSAiI0NSQVNIRUQgLSBXZWJQcm9jZXNz
XG4iOgogICAgICAgICAgICAgIyBXZWJLaXRUZXN0UnVubmVyIHVzZXMgdGhpcyB0byByZXBvcnQg
dGhhdCB0aGUgV2ViUHJvY2VzcyBzdWJwcm9jZXNzIGNyYXNoZWQuCi0gICAgICAgICAgICBzZWxm
Ll9zdWJwcm9jZXNzX2NyYXNoZWQoIldlYlByb2Nlc3MiKQotICAgICAgICByZXR1cm4gc2VsZi5f
ZGV0ZWN0ZWRfY3Jhc2goKQotCi0gICAgZGVmIF9kZXRlY3RlZF9jcmFzaChzZWxmKToKLSAgICAg
ICAgIyBXZSBjYW4ndCBqdXN0IGNoZWNrIHNlbGYuX3NlcnZlcl9wcm9jZXNzLmNyYXNoZWQgYmVj
YXVzZSBXZWJLaXRUZXN0UnVubmVyCi0gICAgICAgICMgY2FuIHJlcG9ydCBzdWJwcm9jZXNzIGNy
YXNoZXMgYXQgYW55IHRpbWUgYnkgcHJpbnRpbmcKLSAgICAgICAgIyAiI0NSQVNIRUQgLSBXZWJQ
cm9jZXNzIiwgd2Ugd2FudCB0byBjb3VudCB0aG9zZSBhcyBjcmFzaGVzIGFzIHdlbGwuCi0gICAg
ICAgIHJldHVybiBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5jcmFzaGVkIG9yIHNlbGYuX2NyYXNoZWRf
c3VicHJvY2Vzc19uYW1lCi0KLSAgICBkZWYgX3N1YnByb2Nlc3NfY3Jhc2hlZChzZWxmLCBzdWJw
cm9jZXNzX25hbWUpOgotICAgICAgICBzZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3NfbmFtZSA9IHN1
YnByb2Nlc3NfbmFtZQotCi0gICAgZGVmIF9jcmFzaGVkX3Byb2Nlc3NfbmFtZShzZWxmKToKLSAg
ICAgICAgaWYgbm90IHNlbGYuX2RldGVjdGVkX2NyYXNoKCk6Ci0gICAgICAgICAgICByZXR1cm4g
Tm9uZQotICAgICAgICByZXR1cm4gc2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWUgb3Igc2Vs
Zi5fc2VydmVyX3Byb2Nlc3MucHJvY2Vzc19uYW1lKCkKKyAgICAgICAgICAgIHNlbGYuX2NyYXNo
ZWRfc3VicHJvY2Vzc19uYW1lID0gIldlYlByb2Nlc3MiCisgICAgICAgIHJldHVybiBzZWxmLl9o
YXNfY3Jhc2hlZCgpCiAKICAgICBkZWYgX2NvbW1hbmRfZnJvbV9kcml2ZXJfaW5wdXQoc2VsZiwg
ZHJpdmVyX2lucHV0KToKICAgICAgICAgaWYgc2VsZi5pc19odHRwX3Rlc3QoZHJpdmVyX2lucHV0
LnRlc3RfbmFtZSk6CkBAIC01NjMsOSArNTUxLDkgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKERyaXZl
cik6CiAgICAgICAgIHNlbGYuZXJyb3JfZnJvbV90ZXN0ICs9IHNlbGYuX3NlcnZlcl9wcm9jZXNz
LnBvcF9hbGxfYnVmZmVyZWRfc3RkZXJyKCkKIAogICAgICAgICByZXR1cm4gRHJpdmVyT3V0cHV0
KHRleHQsIGltYWdlLCBhY3R1YWxfaW1hZ2VfaGFzaCwgYXVkaW8sCi0gICAgICAgICAgICBjcmFz
aD1zZWxmLl9kZXRlY3RlZF9jcmFzaCgpLCB0ZXN0X3RpbWU9dGltZS50aW1lKCkgLSBzdGFydF90
aW1lLAorICAgICAgICAgICAgY3Jhc2g9c2VsZi5oYXNfY3Jhc2hlZCgpLCB0ZXN0X3RpbWU9dGlt
ZS50aW1lKCkgLSBzdGFydF90aW1lLAogICAgICAgICAgICAgdGltZW91dD1zZWxmLl9zZXJ2ZXJf
cHJvY2Vzcy50aW1lZF9vdXQsIGVycm9yPXNlbGYuZXJyb3JfZnJvbV90ZXN0LAotICAgICAgICAg
ICAgY3Jhc2hlZF9wcm9jZXNzX25hbWU9c2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUoKSkKKyAg
ICAgICAgICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1lPXNlbGYuX2NyYXNoZWRfc3VicHJvY2Vzc19u
YW1lKQogCiAgICAgZGVmIF9yZWFkX2hlYWRlcihzZWxmLCBibG9jaywgbGluZSwgaGVhZGVyX3Rl
eHQsIGhlYWRlcl9hdHRyLCBoZWFkZXJfZmlsdGVyPU5vbmUpOgogICAgICAgICBpZiBsaW5lLnN0
YXJ0c3dpdGgoaGVhZGVyX3RleHQpIGFuZCBnZXRhdHRyKGJsb2NrLCBoZWFkZXJfYXR0cikgaXMg
Tm9uZToKQEAgLTYwOCw3ICs1OTYsNyBAQCBjbGFzcyBXZWJLaXREcml2ZXIoRHJpdmVyKToKICAg
ICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgb3V0X2xpbmUsIGVycl9saW5lID0gc2Vs
Zi5fc2VydmVyX3Byb2Nlc3MucmVhZF9laXRoZXJfc3Rkb3V0X29yX3N0ZGVycl9saW5lKGRlYWRs
aW5lKQogCi0gICAgICAgICAgICBpZiBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQgb3Ig
c2VsZi5fZGV0ZWN0ZWRfY3Jhc2goKToKKyAgICAgICAgICAgIGlmIHNlbGYuX3NlcnZlcl9wcm9j
ZXNzLnRpbWVkX291dCBvciBzZWxmLmhhc19jcmFzaGVkKCk6CiAgICAgICAgICAgICAgICAgYnJl
YWsKIAogICAgICAgICAgICAgaWYgb3V0X2xpbmU6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CmluZGV4
IDZkYzg0NTQ0MTM3MWI2ZGU3OGE0YWNlNzA3MGM4MmFkY2U5Zjk4NGQuLjc5M2E0ZmRjNWYxNjll
ODc2ZjRjOTE4MmFlOTFiYzE1NTU2ZjY5NDQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CkBAIC0y
NDAsOCArMjQwLDExIEBAIGNsYXNzIFdlYktpdFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRl
c3RDYXNlKToKIGNsYXNzIE1vY2tTZXJ2ZXJQcm9jZXNzKG9iamVjdCk6CiAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGxpbmVzPU5vbmUpOgogICAgICAgICBzZWxmLnRpbWVkX291dCA9IEZhbHNlCi0g
ICAgICAgIHNlbGYuY3Jhc2hlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYubGluZXMgPSBsaW5lcyBv
ciBbXQorICAgICAgICBzZWxmLmNyYXNoZWQgPSBGYWxzZQorCisgICAgZGVmIGhhc19jcmFzaGVk
KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jcmFzaGVkCiAKICAgICBkZWYgcmVhZF9zdGRv
dXRfbGluZShzZWxmLCBkZWFkbGluZSk6CiAgICAgICAgIHJldHVybiBzZWxmLmxpbmVzLnBvcCgw
KSArICJcbiIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132911</attachid>
            <date>2012-03-20 15:39:02 -0700</date>
            <delta_ts>2012-03-21 13:22:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81600-20120320153901.patch</filename>
            <type>text/plain</type>
            <size>12706</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNDUyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWUwN2M3N2IzNThhOTk1MWRlYmJiNzZmNGVmZDIxNjU5
ODg3N2E3Zi4uMmEyZGY3MDY4NDZlODNlZTZlMjIwMzgwMWNlMGRkMmU1MGVhOTI2ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1
IEBACisyMDEyLTAzLTIwICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHdlYmtpdHB5OiBnZXQgU2VydmVyUHJvY2VzcyBvdXQgb2YgdGhlIHJlcG9ydGNyYXNo
IGJ1c2luZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MTYwMAorCisgICAgICAgIFVucmV2aWV3ZWQsIGJ1aWxkIGZpeC4KKworICAgICAgICBSZS1s
YW5kIHIxMTEzMDcgYW5kIHIxMTEyOTMgd2l0aCBmaXggZm9yIGNyYXNoIGluIE5SV1Q7IEkKKyAg
ICAgICAgd2FzIGZhaWxpbmcgdG8gc2V0IHRoZSBjcmFzaGluZyBwcm9jZXNzIG5hbWUuCisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNz
LnB5OgorICAgICAgICAoU2VydmVyUHJvY2Vzcy5fcmVzZXQpOgorICAgICAgICAoU2VydmVyUHJv
Y2Vzcy5faGFuZGxlX3Bvc3NpYmxlX2ludGVycnVwdCk6CisgICAgICAgIChTZXJ2ZXJQcm9jZXNz
LndyaXRlKToKKyAgICAgICAgKFNlcnZlclByb2Nlc3MucmVhZF9zdGRvdXQpOgorICAgICAgICAo
U2VydmVyUHJvY2Vzcy5oYXNfY3Jhc2hlZCk6CisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLl9yZWFk
KToKKyAgICAgICAgKFNlcnZlclByb2Nlc3Muc3RvcCk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzc191bml0dGVzdC5weToKKyAgICAg
ICAgKFRyaXZpYWxNb2NrUG9ydC5jaGVja19mb3JfbGVha3MpOgorICAgICAgICAoVGVzdFNlcnZl
clByb2Nlc3MudGVzdF9icm9rZW5fcGlwZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisgICAgICAgIChXZWJLaXRQb3J0Ll9yZWFkX2lt
YWdlX2RpZmYpOgorICAgICAgICAoV2ViS2l0RHJpdmVyLmhhc19jcmFzaGVkKToKKyAgICAgICAg
KFdlYktpdERyaXZlci5fY2hlY2tfZm9yX2RyaXZlcl9jcmFzaCk6CisgICAgICAgIChXZWJLaXRE
cml2ZXIucnVuX3Rlc3QpOgorICAgICAgICAoV2ViS2l0RHJpdmVyLl9yZWFkX2Jsb2NrKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVz
dC5weToKKyAgICAgICAgKE1vY2tTZXJ2ZXJQcm9jZXNzLl9faW5pdF9fKToKKyAgICAgICAgKE1v
Y2tTZXJ2ZXJQcm9jZXNzKToKKyAgICAgICAgKE1vY2tTZXJ2ZXJQcm9jZXNzLmhhc19jcmFzaGVk
KToKKwogMjAxMi0wMy0yMCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
IAogICAgICAgICBbbWFjXSBSZXN0b3JlIGNvbG9yIHNwYWNlIHN3aXRjaGluZyBjb2RlIHRvIHJ1
bi13ZWJraXQtdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CmluZGV4IDZjNDhmZWY2NGIwMTMwYTQ4
OGMzZTgzNjUzNWM3NzZkYzRlYzRhNjYuLjI0NWI3N2E2YWM5YjdmYWZiZGM0MTNkZWZhM2ZiOWIx
ZTA4NTRhMzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvc2VydmVyX3Byb2Nlc3MucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQpAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBT
ZXJ2ZXJQcm9jZXNzOgogICAgICAgICBzZWxmLl9wcm9jID0gTm9uZQogICAgICAgICBzZWxmLl9v
dXRwdXQgPSBzdHIoKSAgIyBieXRlc2FycmF5KCkgb25jZSB3ZSByZXF1aXJlIFB5dGhvbiAyLjYK
ICAgICAgICAgc2VsZi5fZXJyb3IgPSBzdHIoKSAgIyBieXRlc2FycmF5KCkgb25jZSB3ZSByZXF1
aXJlIFB5dGhvbiAyLjYKLSAgICAgICAgc2VsZi5zZXRfY3Jhc2hlZChGYWxzZSkKKyAgICAgICAg
c2VsZi5fY3Jhc2hlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYudGltZWRfb3V0ID0gRmFsc2UKIAog
ICAgIGRlZiBwcm9jZXNzX25hbWUoc2VsZik6CkBAIC05NCwyMiArOTQsMTcgQEAgY2xhc3MgU2Vy
dmVyUHJvY2VzczoKICAgICAgICAgZmwgPSBmY250bC5mY250bChmZCwgZmNudGwuRl9HRVRGTCkK
ICAgICAgICAgZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfU0VURkwsIGZsIHwgb3MuT19OT05CTE9D
SykKIAotICAgIGRlZiBoYW5kbGVfaW50ZXJydXB0KHNlbGYpOgorICAgIGRlZiBfaGFuZGxlX3Bv
c3NpYmxlX2ludGVycnVwdChzZWxmKToKICAgICAgICAgIiIiVGhpcyByb3V0aW5lIGNoZWNrcyB0
byBzZWUgaWYgdGhlIHByb2Nlc3MgY3Jhc2hlZCBvciBleGl0ZWQKICAgICAgICAgYmVjYXVzZSBv
ZiBhIGtleWJvYXJkIGludGVycnVwdCBhbmQgcmFpc2VzIEtleWJvYXJkSW50ZXJydXB0CiAgICAg
ICAgIGFjY29yZGluZ2x5LiIiIgotICAgICAgICBpZiBzZWxmLmNyYXNoZWQ6Ci0gICAgICAgICAg
ICAjIFRoaXMgaXMgaGV4IGNvZGUgMHhjMDAwMDAxZCwgd2hpY2ggaXMgdXNlZCBmb3IgYWJydXB0
Ci0gICAgICAgICAgICAjIHRlcm1pbmF0aW9uLiBUaGlzIGhhcHBlbnMgaWYgd2UgaGl0IGN0cmwr
YyBmcm9tIHRoZSBwcm9tcHQKLSAgICAgICAgICAgICMgYW5kIHdlIGhhcHBlbiB0byBiZSB3YWl0
aW5nIG9uIHRoZSBEdW1wUmVuZGVyVHJlZS4KLSAgICAgICAgICAgICMgc2RveW9uOiBOb3Qgc3Vy
ZSBmb3Igd2hpY2ggT1MgYW5kIGluIHdoYXQgY2lyY3Vtc3RhbmNlcyB0aGUKLSAgICAgICAgICAg
ICMgYWJvdmUgY29kZSBpcyB2YWxpZC4gV2hhdCB3b3JrcyBmb3IgbWUgdW5kZXIgTGludXggdG8g
ZGV0ZWN0Ci0gICAgICAgICAgICAjIGN0cmwrYyBpcyBmb3IgdGhlIHN1YnByb2Nlc3MgcmV0dXJu
Y29kZSB0byBiZSBuZWdhdGl2ZQotICAgICAgICAgICAgIyBTSUdJTlQuIEFuZCB0aGF0IGFncmVl
cyB3aXRoIHRoZSBzdWJwcm9jZXNzIGRvY3VtZW50YXRpb24uCi0gICAgICAgICAgICBpZiAoLTEw
NzM3NDE1MTAgPT0gc2VsZi5fcHJvYy5yZXR1cm5jb2RlIG9yCi0gICAgICAgICAgICAgICAgLSBz
aWduYWwuU0lHSU5UID09IHNlbGYuX3Byb2MucmV0dXJuY29kZSk6Ci0gICAgICAgICAgICAgICAg
cmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAjIEZJ
WE1FOiBMaW51eCBhbmQgTWFjIHNldCB0aGUgcmV0dXJuY29kZSB0byAtc2lnbmFsLlNJR0lOVCBp
ZiBhCisgICAgICAgICMgc3VicHJvY2VzcyBpcyBraWxsZWQgd2l0aCBhIGN0cmxeQy4gIFByZXZp
b3VzIGNvbW1lbnRzIGluIHRoaXMKKyAgICAgICAgIyByb3V0aW5lIHNhaWQgdGhhdCBzdXBwb3Nl
ZGx5IFdpbmRvd3MgcmV0dXJucyAweGMwMDAwMDFkLCBidXQgdGhhdCdzIG5vdCB3aGF0CisgICAg
ICAgICMgLTEwNzM3NDE1MTAgZXZhbHVhdGVzIHRvLiBGaWd1cmUgb3V0IHdoYXQgdGhlIHJpZ2h0
IHZhbHVlIGlzCisgICAgICAgICMgZm9yIHdpbjMyIGFuZCBjeWd3aW4gaGVyZSAuLi4KKyAgICAg
ICAgaWYgc2VsZi5fcHJvYy5yZXR1cm5jb2RlIGluICgtMTA3Mzc0MTUxMCwgLXNpZ25hbC5TSUdJ
TlQpOgorICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKIAogICAgIGRlZiBwb2xs
KHNlbGYpOgogICAgICAgICAiIiJDaGVjayB0byBzZWUgaWYgdGhlIHVuZGVybHlpbmcgcHJvY2Vz
cyBpcyBydW5uaW5nOyByZXR1cm5zIE5vbmUKQEAgLTEyOCw3ICsxMjMsNyBAQCBjbGFzcyBTZXJ2
ZXJQcm9jZXNzOgogICAgICAgICBleGNlcHQgSU9FcnJvciwgZToKICAgICAgICAgICAgIHNlbGYu
c3RvcCgpCiAgICAgICAgICAgICAjIHN0b3AoKSBjYWxscyBfcmVzZXQoKSwgc28gd2UgaGF2ZSB0
byBzZXQgY3Jhc2hlZCB0byBUcnVlIGFmdGVyIGNhbGxpbmcgc3RvcCgpLgotICAgICAgICAgICAg
c2VsZi5zZXRfY3Jhc2hlZChUcnVlKQorICAgICAgICAgICAgc2VsZi5fY3Jhc2hlZCA9IFRydWUK
IAogICAgIGRlZiBfcG9wX3N0ZG91dF9saW5lX2lmX3JlYWR5KHNlbGYpOgogICAgICAgICBpbmRl
eF9hZnRlcl9uZXdsaW5lID0gc2VsZi5fb3V0cHV0LmZpbmQoJ1xuJykgKyAxCkBAIC0xNzgsMTEg
KzE3Myw2IEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6CiAKICAgICAgICAgcmV0dXJuIHNlbGYuX3Jl
YWQoZGVhZGxpbmUsIHJldHJpZXZlX2J5dGVzX2Zyb21fc3Rkb3V0X2J1ZmZlcikKIAotICAgIGRl
ZiBfY2hlY2tfZm9yX2NyYXNoKHNlbGYsIHdhaXRfZm9yX2NyYXNoX3JlcG9ydGVyPVRydWUpOgot
ICAgICAgICBpZiBzZWxmLnBvbGwoKSAhPSBOb25lOgotICAgICAgICAgICAgc2VsZi5zZXRfY3Jh
c2hlZChUcnVlLCB3YWl0X2Zvcl9jcmFzaF9yZXBvcnRlcikKLSAgICAgICAgICAgIHNlbGYuaGFu
ZGxlX2ludGVycnVwdCgpCi0KICAgICBkZWYgX2xvZyhzZWxmLCBtZXNzYWdlKToKICAgICAgICAg
IyBUaGlzIGlzIGEgYml0IG9mIGEgaGFjaywgYnV0IHdlIGZpcnN0IGxvZyBhIGJsYW5rIGxpbmUg
dG8gYXZvaWQKICAgICAgICAgIyBtZXNzaW5nIHVwIHRoZSBtYXN0ZXIgcHJvY2VzcydzIG91dHB1
dC4KQEAgLTIwNiwxMCArMTk2LDYgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKICAgICAgICAgICAg
IHNlbGYuX2xvZygnVW5hYmxlIHRvIHNhbXBsZSBwcm9jZXNzLicpCiAKICAgICBkZWYgX2hhbmRs
ZV90aW1lb3V0KHNlbGYpOgotICAgICAgICBzZWxmLl9leGVjdXRpdmUud2FpdF9uZXdlc3Qoc2Vs
Zi5fcG9ydC5pc19jcmFzaF9yZXBvcnRlcikKLSAgICAgICAgc2VsZi5fY2hlY2tfZm9yX2NyYXNo
KHdhaXRfZm9yX2NyYXNoX3JlcG9ydGVyPUZhbHNlKQotICAgICAgICBpZiBzZWxmLmNyYXNoZWQ6
Ci0gICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi50aW1lZF9vdXQgPSBUcnVlCiAgICAg
ICAgIHNlbGYuX3NhbXBsZSgpCiAKQEAgLTIzOCwyMCArMjI0LDIyIEBAIGNsYXNzIFNlcnZlclBy
b2Nlc3M6CiAgICAgICAgICAgICAjIEZJWE1FOiBXaHkgZG8gd2UgaWdub3JlIGFsbCBJT0Vycm9y
cyBoZXJlPwogICAgICAgICAgICAgcGFzcwogCi0gICAgZGVmIF9jaGVja19mb3JfYWJvcnQoc2Vs
ZiwgZGVhZGxpbmUpOgotICAgICAgICBzZWxmLl9jaGVja19mb3JfY3Jhc2goKQotCi0gICAgICAg
IGlmIHRpbWUudGltZSgpID4gZGVhZGxpbmU6Ci0gICAgICAgICAgICBzZWxmLl9oYW5kbGVfdGlt
ZW91dCgpCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuY3Jhc2hlZCBvciBzZWxmLnRpbWVkX291dAor
ICAgIGRlZiBoYXNfY3Jhc2hlZChzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuX2NyYXNoZWQg
YW5kIHNlbGYucG9sbCgpOgorICAgICAgICAgICAgc2VsZi5fY3Jhc2hlZCA9IFRydWUKKyAgICAg
ICAgICAgIHNlbGYuX2hhbmRsZV9wb3NzaWJsZV9pbnRlcnJ1cHQoKQorICAgICAgICByZXR1cm4g
c2VsZi5fY3Jhc2hlZAogCiAgICAgIyBUaGlzIHJlYWQgZnVuY3Rpb24gaXMgYSBiaXQgb2RkbHkt
ZGVzaWduZWQsIGFzIGl0IHBvbGxzIGJvdGggc3Rkb3V0IGFuZCBzdGRlcnIsIHlldAogICAgICMg
b25seSByZWFkcy9yZXR1cm5zIGZyb20gb25lIG9mIHRoZW0gKGJ1ZmZlcmluZyBib3RoIGluIGxv
Y2FsIHNlbGYuX291dHB1dC9zZWxmLl9lcnJvcikuCiAgICAgIyBJdCBtaWdodCBiZSBjbGVhbmVy
IHRvIHBhc3MgaW4gdGhlIGZpbGUgZGVzY3JpcHRvciB0byBwb2xsIGluc3RlYWQuCiAgICAgZGVm
IF9yZWFkKHNlbGYsIGRlYWRsaW5lLCBmZXRjaF9ieXRlc19mcm9tX2J1ZmZlcnNfY2FsbGJhY2sp
OgogICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgaWYgc2VsZi5fY2hlY2tfZm9yX2Fi
b3J0KGRlYWRsaW5lKToKKyAgICAgICAgICAgIGlmIHNlbGYuaGFzX2NyYXNoZWQoKToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICBpZiB0aW1lLnRpbWUoKSA+IGRl
YWRsaW5lOgorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV90aW1lb3V0KCkKICAgICAgICAg
ICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAgICAgICBieXRlcyA9IGZldGNoX2J5dGVzX2Zy
b21fYnVmZmVyc19jYWxsYmFjaygpCkBAIC0yOTIsOSArMjgwLDMgQEAgY2xhc3MgU2VydmVyUHJv
Y2VzczoKICAgICAgICAgICAgICAgICBzZWxmLl9leGVjdXRpdmUua2lsbF9wcm9jZXNzKHNlbGYu
X3Byb2MucGlkKQogICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygna2lsbGVkJykKICAgICAg
ICAgc2VsZi5fcmVzZXQoKQotCi0gICAgZGVmIHNldF9jcmFzaGVkKHNlbGYsIGNyYXNoZWQsIHdh
aXRfZm9yX2NyYXNoX3JlcG9ydGVyPVRydWUpOgotICAgICAgICBzZWxmLmNyYXNoZWQgPSBjcmFz
aGVkCi0gICAgICAgIGlmIG5vdCBzZWxmLmNyYXNoZWQgb3Igbm90IHdhaXRfZm9yX2NyYXNoX3Jl
cG9ydGVyOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS53YWl0
X25ld2VzdChzZWxmLl9wb3J0LmlzX2NyYXNoX3JlcG9ydGVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzc191bml0dGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3By
b2Nlc3NfdW5pdHRlc3QucHkKaW5kZXggY2FlNmIwMmM1OTQzNjFmYTQ2ODQwNDAyNGUyOTY4YzAx
ZTlkNTA5NC4uZjJiYzk5Njg2NTE0ZTNjNDYxMzM5MWE5NjEzOWYxNzg0YmUwMGI2OSAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJv
Y2Vzc191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3NlcnZlcl9wcm9jZXNzX3VuaXR0ZXN0LnB5CkBAIC01MCw5ICs1MCw2IEBAIGNsYXNz
IFRyaXZpYWxNb2NrUG9ydChvYmplY3QpOgogICAgIGRlZiBjaGVja19mb3JfbGVha3Moc2VsZiwg
cHJvY2Vzc19uYW1lLCBwcm9jZXNzX3BpZCk6CiAgICAgICAgIHBhc3MKIAotICAgIGRlZiBpc19j
cmFzaF9yZXBvcnRlcihzZWxmLCBwcm9jZXNzX25hbWUpOgotICAgICAgICByZXR1cm4gRmFsc2UK
LQogCiBjbGFzcyBNb2NrRmlsZShvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXJ2
ZXJfcHJvY2Vzcyk6CkBAIC05MSw3ICs4OCw3IEBAIGNsYXNzIFRlc3RTZXJ2ZXJQcm9jZXNzKHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9icm9rZW5fcGlwZShzZWxmKToKICAgICAg
ICAgc2VydmVyX3Byb2Nlc3MgPSBGYWtlU2VydmVyUHJvY2Vzcyhwb3J0X29iaj1Ucml2aWFsTW9j
a1BvcnQoKSwgbmFtZT0idGVzdCIsIGNtZD1bInRlc3QiXSkKICAgICAgICAgc2VydmVyX3Byb2Nl
c3Mud3JpdGUoInNob3VsZCBicmVhayIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXJf
cHJvY2Vzcy5jcmFzaGVkKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyX3Byb2Nlc3Mu
aGFzX2NyYXNoZWQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VydmVyX3Byb2Nlc3Mu
X3Byb2MsIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlcnZlcl9wcm9jZXNzLmJy
b2tlbl9waXBlcywgW3NlcnZlcl9wcm9jZXNzLnN0ZGluXSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCA2ZTRhMTZiZGE0
NzBmOWRkZTI3NTIxMGJiZmUyOTQ1NGZjZjZhYzU4Li4zMmE3YTI1MmExYmZlYjkxY2M3ZGViYTkw
N2Q2ODA4Yjg0NzY3MTFmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtMTk0LDcgKzE5NCw3IEBAIGNsYXNzIFdlYktpdFBv
cnQoUG9ydCk6CiAKICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIG91dHB1dCA9IHNw
LnJlYWRfc3Rkb3V0X2xpbmUoZGVhZGxpbmUpCi0gICAgICAgICAgICBpZiBzcC50aW1lZF9vdXQg
b3Igc3AuY3Jhc2hlZCBvciBub3Qgb3V0cHV0OgorICAgICAgICAgICAgaWYgc3AudGltZWRfb3V0
IG9yIHNwLmhhc19jcmFzaGVkKCkgb3Igbm90IG91dHB1dDoKICAgICAgICAgICAgICAgICBicmVh
awogCiAgICAgICAgICAgICBpZiBvdXRwdXQuc3RhcnRzd2l0aCgnZGlmZicpOiAgIyBUaGlzIGlz
IHRoZSBsYXN0IGxpbmUgSW1hZ2VEaWZmIHByaW50cy4KQEAgLTIwOSw3ICsyMDksNyBAQCBjbGFz
cyBXZWJLaXRQb3J0KFBvcnQpOgogCiAgICAgICAgIGlmIHNwLnRpbWVkX291dDoKICAgICAgICAg
ICAgIF9sb2cuZXJyb3IoIkltYWdlRGlmZiB0aW1lZCBvdXQiKQotICAgICAgICBpZiBzcC5jcmFz
aGVkOgorICAgICAgICBpZiBzcC5oYXNfY3Jhc2hlZCgpOgogICAgICAgICAgICAgX2xvZy5lcnJv
cigiSW1hZ2VEaWZmIGNyYXNoZWQiKQogICAgICAgICAjIEZJWE1FOiBUaGVyZSBpcyBubyBuZWVk
IHRvIHNodXQgZG93biB0aGUgSW1hZ2VEaWZmIHNlcnZlciBhZnRlciBldmVyeSBkaWZmLgogICAg
ICAgICBzcC5zdG9wKCkKQEAgLTQ4OSwzMSArNDg5LDI0IEBAIGNsYXNzIFdlYktpdERyaXZlcihE
cml2ZXIpOgogICAgIGRlZiBoYXNfY3Jhc2hlZChzZWxmKToKICAgICAgICAgaWYgc2VsZi5fc2Vy
dmVyX3Byb2Nlc3MgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBy
ZXR1cm4gc2VsZi5fc2VydmVyX3Byb2Nlc3MucG9sbCgpIGlzIG5vdCBOb25lCisgICAgICAgIGlm
IHNlbGYuX2NyYXNoZWRfc3VicHJvY2Vzc19uYW1lOgorICAgICAgICAgICAgcmV0dXJuIFRydWUK
KyAgICAgICAgaWYgc2VsZi5fc2VydmVyX3Byb2Nlc3MuaGFzX2NyYXNoZWQoKToKKyAgICAgICAg
ICAgIHNlbGYuX2NyYXNoZWRfc3VicHJvY2Vzc19uYW1lID0gc2VsZi5fcG9ydC5kcml2ZXJfbmFt
ZSgpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKIAogICAg
IGRlZiBfY2hlY2tfZm9yX2RyaXZlcl9jcmFzaChzZWxmLCBlcnJvcl9saW5lKToKICAgICAgICAg
aWYgZXJyb3JfbGluZSA9PSAiI0NSQVNIRURcbiI6CiAgICAgICAgICAgICAjIFRoaXMgaXMgdXNl
ZCBvbiBXaW5kb3dzIHRvIHJlcG9ydCB0aGF0IHRoZSBwcm9jZXNzIGhhcyBjcmFzaGVkCiAgICAg
ICAgICAgICAjIFNlZSBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC82NTUzNy4KLSAg
ICAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLnNldF9jcmFzaGVkKFRydWUpCi0gICAgICAg
IGVsaWYgZXJyb3JfbGluZSA9PSAiI0NSQVNIRUQgLSBXZWJQcm9jZXNzXG4iOgorICAgICAgICAg
ICAgc2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWUgPSBzZWxmLl9wb3J0LmRyaXZlcl9uYW1l
KCkKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIGVycm9yX2xpbmUgPT0gIiND
UkFTSEVEIC0gV2ViUHJvY2Vzc1xuIjoKICAgICAgICAgICAgICMgV2ViS2l0VGVzdFJ1bm5lciB1
c2VzIHRoaXMgdG8gcmVwb3J0IHRoYXQgdGhlIFdlYlByb2Nlc3Mgc3VicHJvY2VzcyBjcmFzaGVk
LgotICAgICAgICAgICAgc2VsZi5fc3VicHJvY2Vzc19jcmFzaGVkKCJXZWJQcm9jZXNzIikKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX2RldGVjdGVkX2NyYXNoKCkKLQotICAgIGRlZiBfZGV0ZWN0ZWRf
Y3Jhc2goc2VsZik6Ci0gICAgICAgICMgV2UgY2FuJ3QganVzdCBjaGVjayBzZWxmLl9zZXJ2ZXJf
cHJvY2Vzcy5jcmFzaGVkIGJlY2F1c2UgV2ViS2l0VGVzdFJ1bm5lcgotICAgICAgICAjIGNhbiBy
ZXBvcnQgc3VicHJvY2VzcyBjcmFzaGVzIGF0IGFueSB0aW1lIGJ5IHByaW50aW5nCi0gICAgICAg
ICMgIiNDUkFTSEVEIC0gV2ViUHJvY2VzcyIsIHdlIHdhbnQgdG8gY291bnQgdGhvc2UgYXMgY3Jh
c2hlcyBhcyB3ZWxsLgotICAgICAgICByZXR1cm4gc2VsZi5fc2VydmVyX3Byb2Nlc3MuY3Jhc2hl
ZCBvciBzZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3NfbmFtZQotCi0gICAgZGVmIF9zdWJwcm9jZXNz
X2NyYXNoZWQoc2VsZiwgc3VicHJvY2Vzc19uYW1lKToKLSAgICAgICAgc2VsZi5fY3Jhc2hlZF9z
dWJwcm9jZXNzX25hbWUgPSBzdWJwcm9jZXNzX25hbWUKLQotICAgIGRlZiBfY3Jhc2hlZF9wcm9j
ZXNzX25hbWUoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9kZXRlY3RlZF9jcmFzaCgpOgot
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NyYXNoZWRfc3Vi
cHJvY2Vzc19uYW1lIG9yIHNlbGYuX3NlcnZlcl9wcm9jZXNzLnByb2Nlc3NfbmFtZSgpCisgICAg
ICAgICAgICBzZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3NfbmFtZSA9ICJXZWJQcm9jZXNzIgorICAg
ICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIHNlbGYuaGFzX2NyYXNoZWQoKQog
CiAgICAgZGVmIF9jb21tYW5kX2Zyb21fZHJpdmVyX2lucHV0KHNlbGYsIGRyaXZlcl9pbnB1dCk6
CiAgICAgICAgIGlmIHNlbGYuaXNfaHR0cF90ZXN0KGRyaXZlcl9pbnB1dC50ZXN0X25hbWUpOgpA
QCAtNTYzLDkgKzU1Niw5IEBAIGNsYXNzIFdlYktpdERyaXZlcihEcml2ZXIpOgogICAgICAgICBz
ZWxmLmVycm9yX2Zyb21fdGVzdCArPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5wb3BfYWxsX2J1ZmZl
cmVkX3N0ZGVycigpCiAKICAgICAgICAgcmV0dXJuIERyaXZlck91dHB1dCh0ZXh0LCBpbWFnZSwg
YWN0dWFsX2ltYWdlX2hhc2gsIGF1ZGlvLAotICAgICAgICAgICAgY3Jhc2g9c2VsZi5fZGV0ZWN0
ZWRfY3Jhc2goKSwgdGVzdF90aW1lPXRpbWUudGltZSgpIC0gc3RhcnRfdGltZSwKKyAgICAgICAg
ICAgIGNyYXNoPXNlbGYuaGFzX2NyYXNoZWQoKSwgdGVzdF90aW1lPXRpbWUudGltZSgpIC0gc3Rh
cnRfdGltZSwKICAgICAgICAgICAgIHRpbWVvdXQ9c2VsZi5fc2VydmVyX3Byb2Nlc3MudGltZWRf
b3V0LCBlcnJvcj1zZWxmLmVycm9yX2Zyb21fdGVzdCwKLSAgICAgICAgICAgIGNyYXNoZWRfcHJv
Y2Vzc19uYW1lPXNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lKCkpCisgICAgICAgICAgICBjcmFz
aGVkX3Byb2Nlc3NfbmFtZT1zZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3NfbmFtZSkKIAogICAgIGRl
ZiBfcmVhZF9oZWFkZXIoc2VsZiwgYmxvY2ssIGxpbmUsIGhlYWRlcl90ZXh0LCBoZWFkZXJfYXR0
ciwgaGVhZGVyX2ZpbHRlcj1Ob25lKToKICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKGhlYWRl
cl90ZXh0KSBhbmQgZ2V0YXR0cihibG9jaywgaGVhZGVyX2F0dHIpIGlzIE5vbmU6CkBAIC02MDgs
NyArNjAxLDcgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKERyaXZlcik6CiAgICAgICAgICAgICBlbHNl
OgogICAgICAgICAgICAgICAgIG91dF9saW5lLCBlcnJfbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9j
ZXNzLnJlYWRfZWl0aGVyX3N0ZG91dF9vcl9zdGRlcnJfbGluZShkZWFkbGluZSkKIAotICAgICAg
ICAgICAgaWYgc2VsZi5fc2VydmVyX3Byb2Nlc3MudGltZWRfb3V0IG9yIHNlbGYuX2RldGVjdGVk
X2NyYXNoKCk6CisgICAgICAgICAgICBpZiBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQg
b3Igc2VsZi5oYXNfY3Jhc2hlZCgpOgogICAgICAgICAgICAgICAgIGJyZWFrCiAKICAgICAgICAg
ICAgIGlmIG91dF9saW5lOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQppbmRleCA2ZGM4NDU0NDEzNzFi
NmRlNzhhNGFjZTcwNzBjODJhZGNlOWY5ODRkLi43OTNhNGZkYzVmMTY5ZTg3NmY0YzkxODJhZTkx
YmMxNTU1NmY2OTQ0IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQpAQCAtMjQwLDggKzI0MCwxMSBA
QCBjbGFzcyBXZWJLaXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiBjbGFz
cyBNb2NrU2VydmVyUHJvY2VzcyhvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW5l
cz1Ob25lKToKICAgICAgICAgc2VsZi50aW1lZF9vdXQgPSBGYWxzZQotICAgICAgICBzZWxmLmNy
YXNoZWQgPSBGYWxzZQogICAgICAgICBzZWxmLmxpbmVzID0gbGluZXMgb3IgW10KKyAgICAgICAg
c2VsZi5jcmFzaGVkID0gRmFsc2UKKworICAgIGRlZiBoYXNfY3Jhc2hlZChzZWxmKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuY3Jhc2hlZAogCiAgICAgZGVmIHJlYWRfc3Rkb3V0X2xpbmUoc2VsZiwg
ZGVhZGxpbmUpOgogICAgICAgICByZXR1cm4gc2VsZi5saW5lcy5wb3AoMCkgKyAiXG4iCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133102</attachid>
            <date>2012-03-21 13:22:14 -0700</date>
            <delta_ts>2012-03-21 13:29:54 -0700</delta_ts>
            <desc>fix another crash</desc>
            <filename>bug-81600-20120321132213.patch</filename>
            <type>text/plain</type>
            <size>13041</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNTk3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjY5M2Y4OWM5OWE3NWQ0NzM4ZjMzZmUzNTVlMTA0YjZk
NjEyNmJjMy4uZTQ5ZjNmMmM3YWEwOTBkMzQ3NWY5OTY3OGZjOTkzMWQ1NjdjMzExZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3
IEBACisyMDEyLTAzLTIxICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHdlYmtpdHB5OiBnZXQgU2VydmVyUHJvY2VzcyBvdXQgb2YgdGhlIHJlcG9ydGNyYXNo
IGJ1c2luZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MTYwMAorCisgICAgICAgIFVucmV2aWV3ZWQsIGJ1aWxkIGZpeC4KKworICAgICAgICBSZS1s
YW5kIHIxMTEzMDcgYW5kIHIxMTEyOTMgd2l0aCBhbm90aGVyIGZpeCBmb3IgYSBjcmFzaCBpbiBO
UldUOworICAgICAgICB3ZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBkcml2ZXIgaGFzIGNyYXNoZWQg
YmVmb3JlIGF0dGVtcHRpbmcgdG8KKyAgICAgICAgcmVhZCBmcm9tIGl0LgorCisKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5Ogor
ICAgICAgICAoU2VydmVyUHJvY2Vzcy5fcmVzZXQpOgorICAgICAgICAoU2VydmVyUHJvY2Vzcy5f
aGFuZGxlX3Bvc3NpYmxlX2ludGVycnVwdCk6CisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLndyaXRl
KToKKyAgICAgICAgKFNlcnZlclByb2Nlc3MucmVhZF9zdGRvdXQpOgorICAgICAgICAoU2VydmVy
UHJvY2Vzcy5oYXNfY3Jhc2hlZCk6CisgICAgICAgIChTZXJ2ZXJQcm9jZXNzLl9yZWFkKToKKyAg
ICAgICAgKFNlcnZlclByb2Nlc3Muc3RvcCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzc191bml0dGVzdC5weToKKyAgICAgICAgKFRy
aXZpYWxNb2NrUG9ydC5jaGVja19mb3JfbGVha3MpOgorICAgICAgICAoVGVzdFNlcnZlclByb2Nl
c3MudGVzdF9icm9rZW5fcGlwZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC93ZWJraXQucHk6CisgICAgICAgIChXZWJLaXRQb3J0Ll9yZWFkX2ltYWdlX2Rp
ZmYpOgorICAgICAgICAoV2ViS2l0RHJpdmVyLmhhc19jcmFzaGVkKToKKyAgICAgICAgKFdlYktp
dERyaXZlci5fY2hlY2tfZm9yX2RyaXZlcl9jcmFzaCk6CisgICAgICAgIChXZWJLaXREcml2ZXIu
cnVuX3Rlc3QpOgorICAgICAgICAoV2ViS2l0RHJpdmVyLl9yZWFkX2Jsb2NrKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weToK
KyAgICAgICAgKE1vY2tTZXJ2ZXJQcm9jZXNzLl9faW5pdF9fKToKKyAgICAgICAgKE1vY2tTZXJ2
ZXJQcm9jZXNzKToKKyAgICAgICAgKE1vY2tTZXJ2ZXJQcm9jZXNzLmhhc19jcmFzaGVkKToKKwog
MjAxMi0wMy0yMSAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9yZz4KIAogICAgICAgICBb
UXRdW01hY10gcmFubGliIHNlZ2ZhdWx0cyB3aGVuIGNyZWF0aW5nIHN5bWJvbCB0YWJsZXMgZm9y
IGxpYldlYkNvcmUuYS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CmluZGV4IDZjNDhmZWY2NGIwMTMwYTQ4
OGMzZTgzNjUzNWM3NzZkYzRlYzRhNjYuLjI0NWI3N2E2YWM5YjdmYWZiZGM0MTNkZWZhM2ZiOWIx
ZTA4NTRhMzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvc2VydmVyX3Byb2Nlc3MucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQpAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBT
ZXJ2ZXJQcm9jZXNzOgogICAgICAgICBzZWxmLl9wcm9jID0gTm9uZQogICAgICAgICBzZWxmLl9v
dXRwdXQgPSBzdHIoKSAgIyBieXRlc2FycmF5KCkgb25jZSB3ZSByZXF1aXJlIFB5dGhvbiAyLjYK
ICAgICAgICAgc2VsZi5fZXJyb3IgPSBzdHIoKSAgIyBieXRlc2FycmF5KCkgb25jZSB3ZSByZXF1
aXJlIFB5dGhvbiAyLjYKLSAgICAgICAgc2VsZi5zZXRfY3Jhc2hlZChGYWxzZSkKKyAgICAgICAg
c2VsZi5fY3Jhc2hlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYudGltZWRfb3V0ID0gRmFsc2UKIAog
ICAgIGRlZiBwcm9jZXNzX25hbWUoc2VsZik6CkBAIC05NCwyMiArOTQsMTcgQEAgY2xhc3MgU2Vy
dmVyUHJvY2VzczoKICAgICAgICAgZmwgPSBmY250bC5mY250bChmZCwgZmNudGwuRl9HRVRGTCkK
ICAgICAgICAgZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfU0VURkwsIGZsIHwgb3MuT19OT05CTE9D
SykKIAotICAgIGRlZiBoYW5kbGVfaW50ZXJydXB0KHNlbGYpOgorICAgIGRlZiBfaGFuZGxlX3Bv
c3NpYmxlX2ludGVycnVwdChzZWxmKToKICAgICAgICAgIiIiVGhpcyByb3V0aW5lIGNoZWNrcyB0
byBzZWUgaWYgdGhlIHByb2Nlc3MgY3Jhc2hlZCBvciBleGl0ZWQKICAgICAgICAgYmVjYXVzZSBv
ZiBhIGtleWJvYXJkIGludGVycnVwdCBhbmQgcmFpc2VzIEtleWJvYXJkSW50ZXJydXB0CiAgICAg
ICAgIGFjY29yZGluZ2x5LiIiIgotICAgICAgICBpZiBzZWxmLmNyYXNoZWQ6Ci0gICAgICAgICAg
ICAjIFRoaXMgaXMgaGV4IGNvZGUgMHhjMDAwMDAxZCwgd2hpY2ggaXMgdXNlZCBmb3IgYWJydXB0
Ci0gICAgICAgICAgICAjIHRlcm1pbmF0aW9uLiBUaGlzIGhhcHBlbnMgaWYgd2UgaGl0IGN0cmwr
YyBmcm9tIHRoZSBwcm9tcHQKLSAgICAgICAgICAgICMgYW5kIHdlIGhhcHBlbiB0byBiZSB3YWl0
aW5nIG9uIHRoZSBEdW1wUmVuZGVyVHJlZS4KLSAgICAgICAgICAgICMgc2RveW9uOiBOb3Qgc3Vy
ZSBmb3Igd2hpY2ggT1MgYW5kIGluIHdoYXQgY2lyY3Vtc3RhbmNlcyB0aGUKLSAgICAgICAgICAg
ICMgYWJvdmUgY29kZSBpcyB2YWxpZC4gV2hhdCB3b3JrcyBmb3IgbWUgdW5kZXIgTGludXggdG8g
ZGV0ZWN0Ci0gICAgICAgICAgICAjIGN0cmwrYyBpcyBmb3IgdGhlIHN1YnByb2Nlc3MgcmV0dXJu
Y29kZSB0byBiZSBuZWdhdGl2ZQotICAgICAgICAgICAgIyBTSUdJTlQuIEFuZCB0aGF0IGFncmVl
cyB3aXRoIHRoZSBzdWJwcm9jZXNzIGRvY3VtZW50YXRpb24uCi0gICAgICAgICAgICBpZiAoLTEw
NzM3NDE1MTAgPT0gc2VsZi5fcHJvYy5yZXR1cm5jb2RlIG9yCi0gICAgICAgICAgICAgICAgLSBz
aWduYWwuU0lHSU5UID09IHNlbGYuX3Byb2MucmV0dXJuY29kZSk6Ci0gICAgICAgICAgICAgICAg
cmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAjIEZJ
WE1FOiBMaW51eCBhbmQgTWFjIHNldCB0aGUgcmV0dXJuY29kZSB0byAtc2lnbmFsLlNJR0lOVCBp
ZiBhCisgICAgICAgICMgc3VicHJvY2VzcyBpcyBraWxsZWQgd2l0aCBhIGN0cmxeQy4gIFByZXZp
b3VzIGNvbW1lbnRzIGluIHRoaXMKKyAgICAgICAgIyByb3V0aW5lIHNhaWQgdGhhdCBzdXBwb3Nl
ZGx5IFdpbmRvd3MgcmV0dXJucyAweGMwMDAwMDFkLCBidXQgdGhhdCdzIG5vdCB3aGF0CisgICAg
ICAgICMgLTEwNzM3NDE1MTAgZXZhbHVhdGVzIHRvLiBGaWd1cmUgb3V0IHdoYXQgdGhlIHJpZ2h0
IHZhbHVlIGlzCisgICAgICAgICMgZm9yIHdpbjMyIGFuZCBjeWd3aW4gaGVyZSAuLi4KKyAgICAg
ICAgaWYgc2VsZi5fcHJvYy5yZXR1cm5jb2RlIGluICgtMTA3Mzc0MTUxMCwgLXNpZ25hbC5TSUdJ
TlQpOgorICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKIAogICAgIGRlZiBwb2xs
KHNlbGYpOgogICAgICAgICAiIiJDaGVjayB0byBzZWUgaWYgdGhlIHVuZGVybHlpbmcgcHJvY2Vz
cyBpcyBydW5uaW5nOyByZXR1cm5zIE5vbmUKQEAgLTEyOCw3ICsxMjMsNyBAQCBjbGFzcyBTZXJ2
ZXJQcm9jZXNzOgogICAgICAgICBleGNlcHQgSU9FcnJvciwgZToKICAgICAgICAgICAgIHNlbGYu
c3RvcCgpCiAgICAgICAgICAgICAjIHN0b3AoKSBjYWxscyBfcmVzZXQoKSwgc28gd2UgaGF2ZSB0
byBzZXQgY3Jhc2hlZCB0byBUcnVlIGFmdGVyIGNhbGxpbmcgc3RvcCgpLgotICAgICAgICAgICAg
c2VsZi5zZXRfY3Jhc2hlZChUcnVlKQorICAgICAgICAgICAgc2VsZi5fY3Jhc2hlZCA9IFRydWUK
IAogICAgIGRlZiBfcG9wX3N0ZG91dF9saW5lX2lmX3JlYWR5KHNlbGYpOgogICAgICAgICBpbmRl
eF9hZnRlcl9uZXdsaW5lID0gc2VsZi5fb3V0cHV0LmZpbmQoJ1xuJykgKyAxCkBAIC0xNzgsMTEg
KzE3Myw2IEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6CiAKICAgICAgICAgcmV0dXJuIHNlbGYuX3Jl
YWQoZGVhZGxpbmUsIHJldHJpZXZlX2J5dGVzX2Zyb21fc3Rkb3V0X2J1ZmZlcikKIAotICAgIGRl
ZiBfY2hlY2tfZm9yX2NyYXNoKHNlbGYsIHdhaXRfZm9yX2NyYXNoX3JlcG9ydGVyPVRydWUpOgot
ICAgICAgICBpZiBzZWxmLnBvbGwoKSAhPSBOb25lOgotICAgICAgICAgICAgc2VsZi5zZXRfY3Jh
c2hlZChUcnVlLCB3YWl0X2Zvcl9jcmFzaF9yZXBvcnRlcikKLSAgICAgICAgICAgIHNlbGYuaGFu
ZGxlX2ludGVycnVwdCgpCi0KICAgICBkZWYgX2xvZyhzZWxmLCBtZXNzYWdlKToKICAgICAgICAg
IyBUaGlzIGlzIGEgYml0IG9mIGEgaGFjaywgYnV0IHdlIGZpcnN0IGxvZyBhIGJsYW5rIGxpbmUg
dG8gYXZvaWQKICAgICAgICAgIyBtZXNzaW5nIHVwIHRoZSBtYXN0ZXIgcHJvY2VzcydzIG91dHB1
dC4KQEAgLTIwNiwxMCArMTk2LDYgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKICAgICAgICAgICAg
IHNlbGYuX2xvZygnVW5hYmxlIHRvIHNhbXBsZSBwcm9jZXNzLicpCiAKICAgICBkZWYgX2hhbmRs
ZV90aW1lb3V0KHNlbGYpOgotICAgICAgICBzZWxmLl9leGVjdXRpdmUud2FpdF9uZXdlc3Qoc2Vs
Zi5fcG9ydC5pc19jcmFzaF9yZXBvcnRlcikKLSAgICAgICAgc2VsZi5fY2hlY2tfZm9yX2NyYXNo
KHdhaXRfZm9yX2NyYXNoX3JlcG9ydGVyPUZhbHNlKQotICAgICAgICBpZiBzZWxmLmNyYXNoZWQ6
Ci0gICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi50aW1lZF9vdXQgPSBUcnVlCiAgICAg
ICAgIHNlbGYuX3NhbXBsZSgpCiAKQEAgLTIzOCwyMCArMjI0LDIyIEBAIGNsYXNzIFNlcnZlclBy
b2Nlc3M6CiAgICAgICAgICAgICAjIEZJWE1FOiBXaHkgZG8gd2UgaWdub3JlIGFsbCBJT0Vycm9y
cyBoZXJlPwogICAgICAgICAgICAgcGFzcwogCi0gICAgZGVmIF9jaGVja19mb3JfYWJvcnQoc2Vs
ZiwgZGVhZGxpbmUpOgotICAgICAgICBzZWxmLl9jaGVja19mb3JfY3Jhc2goKQotCi0gICAgICAg
IGlmIHRpbWUudGltZSgpID4gZGVhZGxpbmU6Ci0gICAgICAgICAgICBzZWxmLl9oYW5kbGVfdGlt
ZW91dCgpCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuY3Jhc2hlZCBvciBzZWxmLnRpbWVkX291dAor
ICAgIGRlZiBoYXNfY3Jhc2hlZChzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuX2NyYXNoZWQg
YW5kIHNlbGYucG9sbCgpOgorICAgICAgICAgICAgc2VsZi5fY3Jhc2hlZCA9IFRydWUKKyAgICAg
ICAgICAgIHNlbGYuX2hhbmRsZV9wb3NzaWJsZV9pbnRlcnJ1cHQoKQorICAgICAgICByZXR1cm4g
c2VsZi5fY3Jhc2hlZAogCiAgICAgIyBUaGlzIHJlYWQgZnVuY3Rpb24gaXMgYSBiaXQgb2RkbHkt
ZGVzaWduZWQsIGFzIGl0IHBvbGxzIGJvdGggc3Rkb3V0IGFuZCBzdGRlcnIsIHlldAogICAgICMg
b25seSByZWFkcy9yZXR1cm5zIGZyb20gb25lIG9mIHRoZW0gKGJ1ZmZlcmluZyBib3RoIGluIGxv
Y2FsIHNlbGYuX291dHB1dC9zZWxmLl9lcnJvcikuCiAgICAgIyBJdCBtaWdodCBiZSBjbGVhbmVy
IHRvIHBhc3MgaW4gdGhlIGZpbGUgZGVzY3JpcHRvciB0byBwb2xsIGluc3RlYWQuCiAgICAgZGVm
IF9yZWFkKHNlbGYsIGRlYWRsaW5lLCBmZXRjaF9ieXRlc19mcm9tX2J1ZmZlcnNfY2FsbGJhY2sp
OgogICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgaWYgc2VsZi5fY2hlY2tfZm9yX2Fi
b3J0KGRlYWRsaW5lKToKKyAgICAgICAgICAgIGlmIHNlbGYuaGFzX2NyYXNoZWQoKToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICBpZiB0aW1lLnRpbWUoKSA+IGRl
YWRsaW5lOgorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV90aW1lb3V0KCkKICAgICAgICAg
ICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAgICAgICBieXRlcyA9IGZldGNoX2J5dGVzX2Zy
b21fYnVmZmVyc19jYWxsYmFjaygpCkBAIC0yOTIsOSArMjgwLDMgQEAgY2xhc3MgU2VydmVyUHJv
Y2VzczoKICAgICAgICAgICAgICAgICBzZWxmLl9leGVjdXRpdmUua2lsbF9wcm9jZXNzKHNlbGYu
X3Byb2MucGlkKQogICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygna2lsbGVkJykKICAgICAg
ICAgc2VsZi5fcmVzZXQoKQotCi0gICAgZGVmIHNldF9jcmFzaGVkKHNlbGYsIGNyYXNoZWQsIHdh
aXRfZm9yX2NyYXNoX3JlcG9ydGVyPVRydWUpOgotICAgICAgICBzZWxmLmNyYXNoZWQgPSBjcmFz
aGVkCi0gICAgICAgIGlmIG5vdCBzZWxmLmNyYXNoZWQgb3Igbm90IHdhaXRfZm9yX2NyYXNoX3Jl
cG9ydGVyOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS53YWl0
X25ld2VzdChzZWxmLl9wb3J0LmlzX2NyYXNoX3JlcG9ydGVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzc191bml0dGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3By
b2Nlc3NfdW5pdHRlc3QucHkKaW5kZXggY2FlNmIwMmM1OTQzNjFmYTQ2ODQwNDAyNGUyOTY4YzAx
ZTlkNTA5NC4uZjJiYzk5Njg2NTE0ZTNjNDYxMzM5MWE5NjEzOWYxNzg0YmUwMGI2OSAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJv
Y2Vzc191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3NlcnZlcl9wcm9jZXNzX3VuaXR0ZXN0LnB5CkBAIC01MCw5ICs1MCw2IEBAIGNsYXNz
IFRyaXZpYWxNb2NrUG9ydChvYmplY3QpOgogICAgIGRlZiBjaGVja19mb3JfbGVha3Moc2VsZiwg
cHJvY2Vzc19uYW1lLCBwcm9jZXNzX3BpZCk6CiAgICAgICAgIHBhc3MKIAotICAgIGRlZiBpc19j
cmFzaF9yZXBvcnRlcihzZWxmLCBwcm9jZXNzX25hbWUpOgotICAgICAgICByZXR1cm4gRmFsc2UK
LQogCiBjbGFzcyBNb2NrRmlsZShvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXJ2
ZXJfcHJvY2Vzcyk6CkBAIC05MSw3ICs4OCw3IEBAIGNsYXNzIFRlc3RTZXJ2ZXJQcm9jZXNzKHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9icm9rZW5fcGlwZShzZWxmKToKICAgICAg
ICAgc2VydmVyX3Byb2Nlc3MgPSBGYWtlU2VydmVyUHJvY2Vzcyhwb3J0X29iaj1Ucml2aWFsTW9j
a1BvcnQoKSwgbmFtZT0idGVzdCIsIGNtZD1bInRlc3QiXSkKICAgICAgICAgc2VydmVyX3Byb2Nl
c3Mud3JpdGUoInNob3VsZCBicmVhayIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXJf
cHJvY2Vzcy5jcmFzaGVkKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyX3Byb2Nlc3Mu
aGFzX2NyYXNoZWQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VydmVyX3Byb2Nlc3Mu
X3Byb2MsIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlcnZlcl9wcm9jZXNzLmJy
b2tlbl9waXBlcywgW3NlcnZlcl9wcm9jZXNzLnN0ZGluXSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCA2ZTRhMTZiZGE0
NzBmOWRkZTI3NTIxMGJiZmUyOTQ1NGZjZjZhYzU4Li5iOTk4YzQ3YzliODQ2MmFkNjg2YTRmZTBh
NjUzYjM5NmJiYTJlOTY4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtMTk0LDcgKzE5NCw3IEBAIGNsYXNzIFdlYktpdFBv
cnQoUG9ydCk6CiAKICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIG91dHB1dCA9IHNw
LnJlYWRfc3Rkb3V0X2xpbmUoZGVhZGxpbmUpCi0gICAgICAgICAgICBpZiBzcC50aW1lZF9vdXQg
b3Igc3AuY3Jhc2hlZCBvciBub3Qgb3V0cHV0OgorICAgICAgICAgICAgaWYgc3AudGltZWRfb3V0
IG9yIHNwLmhhc19jcmFzaGVkKCkgb3Igbm90IG91dHB1dDoKICAgICAgICAgICAgICAgICBicmVh
awogCiAgICAgICAgICAgICBpZiBvdXRwdXQuc3RhcnRzd2l0aCgnZGlmZicpOiAgIyBUaGlzIGlz
IHRoZSBsYXN0IGxpbmUgSW1hZ2VEaWZmIHByaW50cy4KQEAgLTIwOSw3ICsyMDksNyBAQCBjbGFz
cyBXZWJLaXRQb3J0KFBvcnQpOgogCiAgICAgICAgIGlmIHNwLnRpbWVkX291dDoKICAgICAgICAg
ICAgIF9sb2cuZXJyb3IoIkltYWdlRGlmZiB0aW1lZCBvdXQiKQotICAgICAgICBpZiBzcC5jcmFz
aGVkOgorICAgICAgICBpZiBzcC5oYXNfY3Jhc2hlZCgpOgogICAgICAgICAgICAgX2xvZy5lcnJv
cigiSW1hZ2VEaWZmIGNyYXNoZWQiKQogICAgICAgICAjIEZJWE1FOiBUaGVyZSBpcyBubyBuZWVk
IHRvIHNodXQgZG93biB0aGUgSW1hZ2VEaWZmIHNlcnZlciBhZnRlciBldmVyeSBkaWZmLgogICAg
ICAgICBzcC5zdG9wKCkKQEAgLTQ4OSwzMSArNDg5LDI0IEBAIGNsYXNzIFdlYktpdERyaXZlcihE
cml2ZXIpOgogICAgIGRlZiBoYXNfY3Jhc2hlZChzZWxmKToKICAgICAgICAgaWYgc2VsZi5fc2Vy
dmVyX3Byb2Nlc3MgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBy
ZXR1cm4gc2VsZi5fc2VydmVyX3Byb2Nlc3MucG9sbCgpIGlzIG5vdCBOb25lCisgICAgICAgIGlm
IHNlbGYuX2NyYXNoZWRfc3VicHJvY2Vzc19uYW1lOgorICAgICAgICAgICAgcmV0dXJuIFRydWUK
KyAgICAgICAgaWYgc2VsZi5fc2VydmVyX3Byb2Nlc3MuaGFzX2NyYXNoZWQoKToKKyAgICAgICAg
ICAgIHNlbGYuX2NyYXNoZWRfc3VicHJvY2Vzc19uYW1lID0gc2VsZi5fcG9ydC5kcml2ZXJfbmFt
ZSgpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKIAogICAg
IGRlZiBfY2hlY2tfZm9yX2RyaXZlcl9jcmFzaChzZWxmLCBlcnJvcl9saW5lKToKICAgICAgICAg
aWYgZXJyb3JfbGluZSA9PSAiI0NSQVNIRURcbiI6CiAgICAgICAgICAgICAjIFRoaXMgaXMgdXNl
ZCBvbiBXaW5kb3dzIHRvIHJlcG9ydCB0aGF0IHRoZSBwcm9jZXNzIGhhcyBjcmFzaGVkCiAgICAg
ICAgICAgICAjIFNlZSBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC82NTUzNy4KLSAg
ICAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLnNldF9jcmFzaGVkKFRydWUpCi0gICAgICAg
IGVsaWYgZXJyb3JfbGluZSA9PSAiI0NSQVNIRUQgLSBXZWJQcm9jZXNzXG4iOgorICAgICAgICAg
ICAgc2VsZi5fY3Jhc2hlZF9zdWJwcm9jZXNzX25hbWUgPSBzZWxmLl9wb3J0LmRyaXZlcl9uYW1l
KCkKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIGVycm9yX2xpbmUgPT0gIiND
UkFTSEVEIC0gV2ViUHJvY2Vzc1xuIjoKICAgICAgICAgICAgICMgV2ViS2l0VGVzdFJ1bm5lciB1
c2VzIHRoaXMgdG8gcmVwb3J0IHRoYXQgdGhlIFdlYlByb2Nlc3Mgc3VicHJvY2VzcyBjcmFzaGVk
LgotICAgICAgICAgICAgc2VsZi5fc3VicHJvY2Vzc19jcmFzaGVkKCJXZWJQcm9jZXNzIikKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX2RldGVjdGVkX2NyYXNoKCkKLQotICAgIGRlZiBfZGV0ZWN0ZWRf
Y3Jhc2goc2VsZik6Ci0gICAgICAgICMgV2UgY2FuJ3QganVzdCBjaGVjayBzZWxmLl9zZXJ2ZXJf
cHJvY2Vzcy5jcmFzaGVkIGJlY2F1c2UgV2ViS2l0VGVzdFJ1bm5lcgotICAgICAgICAjIGNhbiBy
ZXBvcnQgc3VicHJvY2VzcyBjcmFzaGVzIGF0IGFueSB0aW1lIGJ5IHByaW50aW5nCi0gICAgICAg
ICMgIiNDUkFTSEVEIC0gV2ViUHJvY2VzcyIsIHdlIHdhbnQgdG8gY291bnQgdGhvc2UgYXMgY3Jh
c2hlcyBhcyB3ZWxsLgotICAgICAgICByZXR1cm4gc2VsZi5fc2VydmVyX3Byb2Nlc3MuY3Jhc2hl
ZCBvciBzZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3NfbmFtZQotCi0gICAgZGVmIF9zdWJwcm9jZXNz
X2NyYXNoZWQoc2VsZiwgc3VicHJvY2Vzc19uYW1lKToKLSAgICAgICAgc2VsZi5fY3Jhc2hlZF9z
dWJwcm9jZXNzX25hbWUgPSBzdWJwcm9jZXNzX25hbWUKLQotICAgIGRlZiBfY3Jhc2hlZF9wcm9j
ZXNzX25hbWUoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9kZXRlY3RlZF9jcmFzaCgpOgot
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NyYXNoZWRfc3Vi
cHJvY2Vzc19uYW1lIG9yIHNlbGYuX3NlcnZlcl9wcm9jZXNzLnByb2Nlc3NfbmFtZSgpCisgICAg
ICAgICAgICBzZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3NfbmFtZSA9ICJXZWJQcm9jZXNzIgorICAg
ICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIHNlbGYuaGFzX2NyYXNoZWQoKQog
CiAgICAgZGVmIF9jb21tYW5kX2Zyb21fZHJpdmVyX2lucHV0KHNlbGYsIGRyaXZlcl9pbnB1dCk6
CiAgICAgICAgIGlmIHNlbGYuaXNfaHR0cF90ZXN0KGRyaXZlcl9pbnB1dC50ZXN0X25hbWUpOgpA
QCAtNTYzLDkgKzU1Niw5IEBAIGNsYXNzIFdlYktpdERyaXZlcihEcml2ZXIpOgogICAgICAgICBz
ZWxmLmVycm9yX2Zyb21fdGVzdCArPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5wb3BfYWxsX2J1ZmZl
cmVkX3N0ZGVycigpCiAKICAgICAgICAgcmV0dXJuIERyaXZlck91dHB1dCh0ZXh0LCBpbWFnZSwg
YWN0dWFsX2ltYWdlX2hhc2gsIGF1ZGlvLAotICAgICAgICAgICAgY3Jhc2g9c2VsZi5fZGV0ZWN0
ZWRfY3Jhc2goKSwgdGVzdF90aW1lPXRpbWUudGltZSgpIC0gc3RhcnRfdGltZSwKKyAgICAgICAg
ICAgIGNyYXNoPXNlbGYuaGFzX2NyYXNoZWQoKSwgdGVzdF90aW1lPXRpbWUudGltZSgpIC0gc3Rh
cnRfdGltZSwKICAgICAgICAgICAgIHRpbWVvdXQ9c2VsZi5fc2VydmVyX3Byb2Nlc3MudGltZWRf
b3V0LCBlcnJvcj1zZWxmLmVycm9yX2Zyb21fdGVzdCwKLSAgICAgICAgICAgIGNyYXNoZWRfcHJv
Y2Vzc19uYW1lPXNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lKCkpCisgICAgICAgICAgICBjcmFz
aGVkX3Byb2Nlc3NfbmFtZT1zZWxmLl9jcmFzaGVkX3N1YnByb2Nlc3NfbmFtZSkKIAogICAgIGRl
ZiBfcmVhZF9oZWFkZXIoc2VsZiwgYmxvY2ssIGxpbmUsIGhlYWRlcl90ZXh0LCBoZWFkZXJfYXR0
ciwgaGVhZGVyX2ZpbHRlcj1Ob25lKToKICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKGhlYWRl
cl90ZXh0KSBhbmQgZ2V0YXR0cihibG9jaywgaGVhZGVyX2F0dHIpIGlzIE5vbmU6CkBAIC01OTUs
NyArNTg4LDcgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKERyaXZlcik6CiAgICAgICAgIGJsb2NrID0g
Q29udGVudEJsb2NrKCkKICAgICAgICAgb3V0X3NlZW5fZW9mID0gRmFsc2UKIAotICAgICAgICB3
aGlsZSBUcnVlOgorICAgICAgICB3aGlsZSBub3Qgc2VsZi5oYXNfY3Jhc2hlZCgpOgogICAgICAg
ICAgICAgaWYgb3V0X3NlZW5fZW9mIGFuZCAoc2VsZi5lcnJfc2Vlbl9lb2Ygb3Igbm90IHdhaXRf
Zm9yX3N0ZGVycl9lb2YpOgogICAgICAgICAgICAgICAgIGJyZWFrCiAKQEAgLTYwOCw3ICs2MDEs
NyBAQCBjbGFzcyBXZWJLaXREcml2ZXIoRHJpdmVyKToKICAgICAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICAgICAgb3V0X2xpbmUsIGVycl9saW5lID0gc2VsZi5fc2VydmVyX3Byb2Nlc3MucmVh
ZF9laXRoZXJfc3Rkb3V0X29yX3N0ZGVycl9saW5lKGRlYWRsaW5lKQogCi0gICAgICAgICAgICBp
ZiBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQgb3Igc2VsZi5fZGV0ZWN0ZWRfY3Jhc2go
KToKKyAgICAgICAgICAgIGlmIHNlbGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dCBvciBzZWxm
Lmhhc19jcmFzaGVkKCk6CiAgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICAgICAgaWYg
b3V0X2xpbmU6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CmluZGV4IDZkYzg0NTQ0MTM3MWI2ZGU3OGE0
YWNlNzA3MGM4MmFkY2U5Zjk4NGQuLjc5M2E0ZmRjNWYxNjllODc2ZjRjOTE4MmFlOTFiYzE1NTU2
ZjY5NDQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvd2Via2l0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CkBAIC0yNDAsOCArMjQwLDExIEBAIGNsYXNz
IFdlYktpdFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKIGNsYXNzIE1vY2tT
ZXJ2ZXJQcm9jZXNzKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmVzPU5vbmUp
OgogICAgICAgICBzZWxmLnRpbWVkX291dCA9IEZhbHNlCi0gICAgICAgIHNlbGYuY3Jhc2hlZCA9
IEZhbHNlCiAgICAgICAgIHNlbGYubGluZXMgPSBsaW5lcyBvciBbXQorICAgICAgICBzZWxmLmNy
YXNoZWQgPSBGYWxzZQorCisgICAgZGVmIGhhc19jcmFzaGVkKHNlbGYpOgorICAgICAgICByZXR1
cm4gc2VsZi5jcmFzaGVkCiAKICAgICBkZWYgcmVhZF9zdGRvdXRfbGluZShzZWxmLCBkZWFkbGlu
ZSk6CiAgICAgICAgIHJldHVybiBzZWxmLmxpbmVzLnBvcCgwKSArICJcbiIK
</data>

          </attachment>
      

    </bug>

</bugzilla>