<?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>60622</bug_id>
          
          <creation_ts>2011-05-11 05:42:33 -0700</creation_ts>
          <short_desc>getUserMedia() should not throw when successCallback is null</short_desc>
          <delta_ts>2012-03-20 00:44:53 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc>http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#obtaining-local-multimedia-content</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="Adam Bergkvist">adam.bergkvist</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>adam.bergkvist</cc>
    
    <cc>danilo.eu</cc>
    
    <cc>darin</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>leandrogracia</cc>
    
    <cc>mike</cc>
    
    <cc>tommyw</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>401926</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2011-05-11 05:42:33 -0700</bug_when>
    <thetext>From the spec:

4. If successCallback is null, abort these steps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410521</commentid>
    <comment_count>1</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-05-26 09:34:55 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; From the spec:
&gt; 
&gt; 4. If successCallback is null, abort these steps.

I think you&apos;re right on this.

Currently, createFunctionOnlyCallback has optional flags as its last parameter for both JSC and V8 bindings. To accept null you just need to add the appropriate flag there.

However, I disagree about undefined as mentioned in the bug title. Please correct me if I&apos;m wrong, but I think that allowing undefined would mean that we consider valid to call the function with only one argument, which seems not to be the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412232</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2011-05-30 08:03:19 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; (In reply to comment #0)
&gt; &gt; From the spec:
&gt; &gt; 
&gt; &gt; 4. If successCallback is null, abort these steps.
&gt; 
&gt; I think you&apos;re right on this.
&gt; 
&gt; Currently, createFunctionOnlyCallback has optional flags as its last parameter for both JSC and V8 bindings. To accept null you just need to add the appropriate flag there.
&gt; 
&gt; However, I disagree about undefined as mentioned in the bug title. Please correct me if I&apos;m wrong, but I think that allowing undefined would mean that we consider valid to call the function with only one argument, which seems not to be the case.

Since variables passed as arguments can be null or undefined (as opposed to having a &quot;real&quot; value) they are usually handled the same. If one would like to prevent the function from being called with only one argument one would have to check the number of arguments actually passed. I think the current specification should be read as: the successCallback argument is mandatory for the function to do what it should do, and the errorCallback is optional for handling errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412261</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-30 09:35:02 -0700</bug_when>
    <thetext>To be precise:

    1) For functions built in to language, JavaScript makes no distinction between undefined arguments and missing arguments. Any arguments omitted are simply set to undefined.

    2) For DOM functions, WebKit originally did the same, never checking numbers of arguments, and checking for the undefined value to handle missing arguments. But Mozilla has always checked numbers of arguments, and this different choice in the WebKit DOM has been controversial and is a possible source of incompatibilities between the browser engines. The JavaScript runtime does allow functions to tell the difference between actual undefined arguments and arguments that are missing.

    3) The value null is not involved in this. It is a separate value, not the same as undefined, and unrelated to missing arguments. The only connection to null is that it&apos;s common to handle both null and undefined in the same way in a function implementation.

Hope this explanation helps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412582</commentid>
    <comment_count>4</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-05-31 06:42:50 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; To be precise:
&gt; 
&gt;     1) For functions built in to language, JavaScript makes no distinction between undefined arguments and missing arguments. Any arguments omitted are simply set to undefined.
&gt; 
&gt;     2) For DOM functions, WebKit originally did the same, never checking numbers of arguments, and checking for the undefined value to handle missing arguments. But Mozilla has always checked numbers of arguments, and this different choice in the WebKit DOM has been controversial and is a possible source of incompatibilities between the browser engines. The JavaScript runtime does allow functions to tell the difference between actual undefined arguments and arguments that are missing.
&gt; 
&gt;     3) The value null is not involved in this. It is a separate value, not the same as undefined, and unrelated to missing arguments. The only connection to null is that it&apos;s common to handle both null and undefined in the same way in a function implementation.
&gt; 
&gt; Hope this explanation helps.

Thank you very much for the explanation. In that case, I&apos;m removing the &apos;undefined&apos; from the bug title. Please don&apos;t hesitate to discuss any objections about his.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412591</commentid>
    <comment_count>5</comment_count>
      <attachid>95430</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-05-31 06:46:46 -0700</bug_when>
    <thetext>Created attachment 95430
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412604</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2011-05-31 07:23:22 -0700</bug_when>
    <thetext>var u;
var n = null;

navigator.webkitGetUserMedia(&quot;audio&quot;, u);  // will throw
navigator.webkitGetUserMedia(&quot;audio&quot;, n);  // will not throw

I don&apos;t think this is the desired behavior. As Darin pointed out, it&apos;s common to handle both null and undefined in the same way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412660</commentid>
    <comment_count>7</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-05-31 08:50:34 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; var u;
&gt; var n = null;
&gt; 
&gt; navigator.webkitGetUserMedia(&quot;audio&quot;, u);  // will throw
&gt; navigator.webkitGetUserMedia(&quot;audio&quot;, n);  // will not throw
&gt; 
&gt; I don&apos;t think this is the desired behavior. As Darin pointed out, it&apos;s common to handle both null and undefined in the same way.

The problem is that if we allow undefined then this would not throw either:

navigator.webkitGetUserMedia(&quot;audio&quot;);

So we would be implicitly accepting that getUserMedia can be invoked with only one argument, which seems not to be the case in the spec (the successCallback is not an optional argument).

Darin, do you have any suggestions about what can we do about this? Maybe check the number of arguments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412665</commentid>
    <comment_count>8</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-05-31 09:00:00 -0700</bug_when>
    <thetext>We&apos;re removing the review flag until this is properly discussed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412870</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-31 14:37:26 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Darin, do you have any suggestions about what can we do about this? Maybe check the number of arguments?

Sure, we can definitely check the number of arguments if we need to distinguish undefined from a missing argument.

We need to figure out what behavior we want. The implementation is not tricky once we know what we want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419498</commentid>
    <comment_count>10</comment_count>
      <attachid>96945</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-06-13 04:58:32 -0700</bug_when>
    <thetext>Created attachment 96945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419502</commentid>
    <comment_count>11</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-06-13 05:03:59 -0700</bug_when>
    <thetext>The latest patch makes sense to me, hope it makes sense in general.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419511</commentid>
    <comment_count>12</comment_count>
      <attachid>96945</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-06-13 05:44:07 -0700</bug_when>
    <thetext>Comment on attachment 96945
Patch

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

&gt; LayoutTests/fast/dom/MediaStream/argument-types-expected.txt:-18
&gt; -PASS navigator.webkitGetUserMedia(undefined, emptyFunction) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.

We should keep at least one test case for the DOM Exception 9. If I&apos;m not wrong, it could be done with something like navigator.webkitGetUserMedia(&quot;invalid options&quot;, emptyFunction). It may also be a good idea to do some basic testing to the parsing of the options string using this same DOM Exception.

&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:41
&gt; +    // Explicitly check basic assumtions for clarity.

Minor nit: assumptions.

&gt; Source/WebCore/bindings/v8/custom/V8NavigatorCustom.cpp:46
&gt; +    // Explicitly check basic assumtions for clarity.

Same nit as before.

&gt; Source/WebCore/bindings/v8/custom/V8NavigatorCustom.cpp:47
&gt; +    if (isUndefinedOrNull(args[0]) || !args[0]-&gt;IsString())

This makes a lot of sense to me, but I&apos;m still not sure if that&apos;s the intended behaviour according to the spec. This argument is obviously only useful if it&apos;s a string, but still I don&apos;t know if we can safely throw a type mismatch error when some other types could be automatically converted to Strings, even if this will render their contents to be invalid (which is likely to lead to a DOM Exception 9 instead of 17).

Maybe we should ask this little detail in whatwg? We could also make sure that this first &apos;options&apos; argument is not nullable, since the official spec doesn&apos;t reflect yet the changes on WebIDL about the explicit use of the &apos;?&apos; symbol for the nullable types. Please also make sure to keep the objectThrowingException cases if toString is used again.

&gt; Source/WebCore/bindings/v8/custom/V8NavigatorCustom.cpp:49
&gt; +    if (isUndefinedOrNull(args[1]))

Since this is now being checked at the binding level, we should probably replace the check for successCallback in MediaStreamFrameController::generateStream with an assertion.

&gt; Source/WebCore/bindings/v8/custom/V8NavigatorCustom.cpp:-46
&gt; -    v8::Handle&lt;v8::String&gt; options = args[0]-&gt;ToString();

If removing the previous IsString, have you checked if the objectThrowingException test case makes ToString to raise an exception? Just for curiosity, as it was the reason that made me to use it instead of toWebCoreString. In any case if IsString is finally used this should be perfectly safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419525</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2011-06-13 06:22:14 -0700</bug_when>
    <thetext>I think the first argument is handled correctly (according to the spec) already. We just want to prevent getUserMedia from throwing when the second argument is undefined or null which can be achieved by passing CallbackAllowUndefined | CallbackAllowNull to createFunctionOnlyCallback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419526</commentid>
    <comment_count>14</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-06-13 06:31:49 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; I think the first argument is handled correctly (according to the spec) already. We just want to prevent getUserMedia from throwing when the second argument is undefined or null which can be achieved by passing CallbackAllowUndefined | CallbackAllowNull to createFunctionOnlyCallback.

Sure, you&apos;re right on that and it will be solved. Thanks for pointing it out.

My point is to make sure that all other details are completely ok and the spec is specific enough about this. Otherwise we might find in the future that some details are different in other non WebKit-based browsers when we&apos;re supposed to define and implement one same specification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419537</commentid>
    <comment_count>15</comment_count>
      <attachid>96945</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-06-13 06:58:50 -0700</bug_when>
    <thetext>Comment on attachment 96945
Patch

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

&gt;&gt; LayoutTests/fast/dom/MediaStream/argument-types-expected.txt:-18
&gt;&gt; -PASS navigator.webkitGetUserMedia(undefined, emptyFunction) threw exception Error: NOT_SUPPORTED_ERR: DOM Exception 9.
&gt; 
&gt; We should keep at least one test case for the DOM Exception 9. If I&apos;m not wrong, it could be done with something like navigator.webkitGetUserMedia(&quot;invalid options&quot;, emptyFunction). It may also be a good idea to do some basic testing to the parsing of the options string using this same DOM Exception.

Done

&gt;&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:41
&gt;&gt; +    // Explicitly check basic assumtions for clarity.
&gt; 
&gt; Minor nit: assumptions.

Done.

&gt;&gt; Source/WebCore/bindings/v8/custom/V8NavigatorCustom.cpp:46
&gt;&gt; +    // Explicitly check basic assumtions for clarity.
&gt; 
&gt; Same nit as before.

Done.

&gt;&gt; Source/WebCore/bindings/v8/custom/V8NavigatorCustom.cpp:47
&gt;&gt; +    if (isUndefinedOrNull(args[0]) || !args[0]-&gt;IsString())
&gt; 
&gt; This makes a lot of sense to me, but I&apos;m still not sure if that&apos;s the intended behaviour according to the spec. This argument is obviously only useful if it&apos;s a string, but still I don&apos;t know if we can safely throw a type mismatch error when some other types could be automatically converted to Strings, even if this will render their contents to be invalid (which is likely to lead to a DOM Exception 9 instead of 17).
&gt; 
&gt; Maybe we should ask this little detail in whatwg? We could also make sure that this first &apos;options&apos; argument is not nullable, since the official spec doesn&apos;t reflect yet the changes on WebIDL about the explicit use of the &apos;?&apos; symbol for the nullable types. Please also make sure to keep the objectThrowingException cases if toString is used again.

Sorry, it should have been NOT_SUPPORTED_ERR.

&gt;&gt; Source/WebCore/bindings/v8/custom/V8NavigatorCustom.cpp:49
&gt;&gt; +    if (isUndefinedOrNull(args[1]))
&gt; 
&gt; Since this is now being checked at the binding level, we should probably replace the check for successCallback in MediaStreamFrameController::generateStream with an assertion.

Done.

&gt;&gt; Source/WebCore/bindings/v8/custom/V8NavigatorCustom.cpp:-46
&gt;&gt; -    v8::Handle&lt;v8::String&gt; options = args[0]-&gt;ToString();
&gt; 
&gt; If removing the previous IsString, have you checked if the objectThrowingException test case makes ToString to raise an exception? Just for curiosity, as it was the reason that made me to use it instead of toWebCoreString. In any case if IsString is finally used this should be perfectly safe.

Neither version triggered the ToString exception, hence my switch to the more readable version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419538</commentid>
    <comment_count>16</comment_count>
      <attachid>96952</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-06-13 07:00:01 -0700</bug_when>
    <thetext>Created attachment 96952
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419539</commentid>
    <comment_count>17</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-06-13 07:01:34 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; 
&gt; My point is to make sure that all other details are completely ok and the spec is specific enough about this. Otherwise we might find in the future that some details are different in other non WebKit-based browsers when we&apos;re supposed to define and implement one same specification.

Yeah, +1 to that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419546</commentid>
    <comment_count>18</comment_count>
      <attachid>96952</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-06-13 07:28:05 -0700</bug_when>
    <thetext>Comment on attachment 96952
Patch

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

Looks quite good, just a few minor details.

&gt; LayoutTests/fast/dom/MediaStream/argument-types-expected.txt:-28
&gt; -PASS navigator.webkitGetUserMedia(&quot;video&quot;, undefined) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.

Do you think it&apos;s a good time to add some simple tests for the option parsing? Some suggestions:

navigator.webkitGetUserMedia(&quot;, this should pass,  video   suboptions here,, s0me rubish@$!&quot;, emptyFunction);
navigator.webkitGetUserMedia(&quot;this should pass, audio, video audio, audio video, video&quot;, emptyFunction);
navigator.webkitGetUserMedia(&quot;this should throw NOT_SUPPORTED_ERR&quot;, emptyFunction);
navigator.webkitGetUserMedia(&quot;this should throw NOT_SUPPORTED_ERR since it&apos;s split by commas: audio&quot;, emptyFunction);

Of course at this point we can only test that either video or audio are provided. Properly testing the parsing of suboptions and checking what is really required to the embedder is a task for a later test involving the successful creation of generated streams.

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:280
&gt; +    ASSERT(successCallback.get());

.get() should not be required here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419569</commentid>
    <comment_count>19</comment_count>
      <attachid>96957</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-06-13 08:16:29 -0700</bug_when>
    <thetext>Created attachment 96957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419570</commentid>
    <comment_count>20</comment_count>
      <attachid>96952</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-06-13 08:17:07 -0700</bug_when>
    <thetext>Comment on attachment 96952
Patch

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

&gt;&gt; LayoutTests/fast/dom/MediaStream/argument-types-expected.txt:-28
&gt;&gt; -PASS navigator.webkitGetUserMedia(&quot;video&quot;, undefined) threw exception Error: TYPE_MISMATCH_ERR: DOM Exception 17.
&gt; 
&gt; Do you think it&apos;s a good time to add some simple tests for the option parsing? Some suggestions:
&gt; 
&gt; navigator.webkitGetUserMedia(&quot;, this should pass,  video   suboptions here,, s0me rubish@$!&quot;, emptyFunction);
&gt; navigator.webkitGetUserMedia(&quot;this should pass, audio, video audio, audio video, video&quot;, emptyFunction);
&gt; navigator.webkitGetUserMedia(&quot;this should throw NOT_SUPPORTED_ERR&quot;, emptyFunction);
&gt; navigator.webkitGetUserMedia(&quot;this should throw NOT_SUPPORTED_ERR since it&apos;s split by commas: audio&quot;, emptyFunction);
&gt; 
&gt; Of course at this point we can only test that either video or audio are provided. Properly testing the parsing of suboptions and checking what is really required to the embedder is a task for a later test involving the successful creation of generated streams.

done

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:280
&gt;&gt; +    ASSERT(successCallback.get());
&gt; 
&gt; .get() should not be required here.

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419572</commentid>
    <comment_count>21</comment_count>
      <attachid>96957</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-06-13 08:21:30 -0700</bug_when>
    <thetext>Comment on attachment 96957
Patch

Looks good to me. Thanks Tommy!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419974</commentid>
    <comment_count>22</comment_count>
      <attachid>96957</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-06-13 15:31:03 -0700</bug_when>
    <thetext>Comment on attachment 96957
Patch

Attachment 96957 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/8830975</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420267</commentid>
    <comment_count>23</comment_count>
      <attachid>97082</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-06-14 01:12:14 -0700</bug_when>
    <thetext>Created attachment 97082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420288</commentid>
    <comment_count>24</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2011-06-14 02:24:31 -0700</bug_when>
    <thetext>I think it would be best to avoid doing argument checks, that are described in the specification algorithms, in the bindings. Otherwise it would be up to each binding implementation to get this right. The current patch handles the argument check for successCallback in the bindings while checking the errorCallback is left to the implementation. My suggestion is to pass CallbackAllowUndefined | CallbackAllowNull to createFunctionOnlyCallback for both the successCallback and the errorCallback and leave the successCallback null-check in MediaStreamFrameController::generateStream() as is.

I still think the first argument is handled correctly already. We should just let the string conversion rules be applied, and the options parsing will handle the throwing. The new tests for options parsing make sense, but perhaps they should be introduced in a separate bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420507</commentid>
    <comment_count>25</comment_count>
      <attachid>97082</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-14 09:52:41 -0700</bug_when>
    <thetext>Comment on attachment 97082
Patch

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

&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:41
&gt; +    // Explicitly check basic assumptions for clarity.

That doesn’t seem like the right tradeoff. We don’t want special case code that just does the same thing the code below does unless we need it for performance reasons. I think the tests provide sufficient clarity, or a comment could. Adding extra code at runtime just for clarity is not the right tradeoff.

Or maybe this is not just for clarity, and actually has an effect. If that is so, then they comment is misleading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421117</commentid>
    <comment_count>26</comment_count>
      <attachid>97253</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-06-15 01:41:15 -0700</bug_when>
    <thetext>Created attachment 97253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421119</commentid>
    <comment_count>27</comment_count>
      <attachid>97082</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-06-15 01:41:59 -0700</bug_when>
    <thetext>Comment on attachment 97082
Patch

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

&gt;&gt; Source/WebCore/bindings/js/JSNavigatorCustom.cpp:41
&gt;&gt; +    // Explicitly check basic assumptions for clarity.
&gt; 
&gt; That doesn’t seem like the right tradeoff. We don’t want special case code that just does the same thing the code below does unless we need it for performance reasons. I think the tests provide sufficient clarity, or a comment could. Adding extra code at runtime just for clarity is not the right tradeoff.
&gt; 
&gt; Or maybe this is not just for clarity, and actually has an effect. If that is so, then they comment is misleading.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421125</commentid>
    <comment_count>28</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-06-15 01:45:33 -0700</bug_when>
    <thetext>I don&apos;t like that calling getUserMedia() will just return silently, but since this is the consensus I have done what you have asked (finally ;). 

Thanks for having patience with me while I get into the whole JavaScript/WebKit world.

I&apos;ll would like leave the tests in there since more tests are always better than fewer, unless you feel strongly I should move them to a new bug.


(In reply to comment #24)
&gt; I think it would be best to avoid doing argument checks, that are described in the specification algorithms, in the bindings. Otherwise it would be up to each binding implementation to get this right. The current patch handles the argument check for successCallback in the bindings while checking the errorCallback is left to the implementation. My suggestion is to pass CallbackAllowUndefined | CallbackAllowNull to createFunctionOnlyCallback for both the successCallback and the errorCallback and leave the successCallback null-check in MediaStreamFrameController::generateStream() as is.
&gt; 
&gt; I still think the first argument is handled correctly already. We should just let the string conversion rules be applied, and the options parsing will handle the throwing. The new tests for options parsing make sense, but perhaps they should be introduced in a separate bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421144</commentid>
    <comment_count>29</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2011-06-15 02:36:31 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; I don&apos;t like that calling getUserMedia() will just return silently, but since this is the consensus I have done what you have asked (finally ;). 

Thanks :)

&gt; I&apos;ll would like leave the tests in there since more tests are always better than fewer, unless you feel strongly I should move them to a new bug.

I don&apos;t have a strong opinion about the new tests, but perhaps it should be mentioned in the ChangeLog. I also noted that one test was removed. It&apos;s indeed a corner case, but if I recall correctly, that test previously showed a difference in behavior between the JSC and V8 bindings (toString() didn&apos;t throw in the V8 bindings) so it might be good to keep it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524014</commentid>
    <comment_count>30</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-19 10:55:54 -0800</bug_when>
    <thetext>Looks like this bug got forgotten?  The change looks OK to me?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572712</commentid>
    <comment_count>31</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-07 02:17:56 -0800</bug_when>
    <thetext>Adam says to close as wontfix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582822</commentid>
    <comment_count>32</comment_count>
      <attachid>97253</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-20 00:44:53 -0700</bug_when>
    <thetext>Comment on attachment 97253
Patch

Cleared review? from attachment 97253 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95430</attachid>
            <date>2011-05-31 06:46:46 -0700</date>
            <delta_ts>2011-06-13 04:58:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60622-20110531154644.patch</filename>
            <type>text/plain</type>
            <size>5713</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc3MjEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYTQwYjVlMWFjZTBkZTI0NzJhZjE0
NmZlNGExMGFlNTJlZWU5ZmJmLi43MWRmYTk4YWMzYzQ2N2UwYzU3NThkMDQ1Nzk0YTAwNDgzZWM4
YTQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDUtMzEgIFRvbW15IFdpZGVuZmx5Y2h0
ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgZ2V0VXNlck1lZGlhKCkgc2hvdWxkIG5vdCB0aHJvdyB3aGVuIHN1Y2Nl
c3NDYWxsYmFjayBpcyBudWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MDYyMgorCisgICAgICAgICogZmFzdC9kb20vTWVkaWFTdHJlYW0vYXJndW1l
bnQtdHlwZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL01lZGlhU3RyZWFtL3Nj
cmlwdC10ZXN0cy9hcmd1bWVudC10eXBlcy5qczoKKwogMjAxMS0wNS0zMSAgT2xpdmVyIFZhcmdh
ICA8VmFyZ2EuT2xpdmVyQHN0dWQudS1zemVnZWQuaHU+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
Tmlrb2xhcyBaaW1tZXJtYW5uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVk
aWFTdHJlYW0vYXJndW1lbnQtdHlwZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vTWVkaWFTdHJlYW0vYXJndW1lbnQtdHlwZXMtZXhwZWN0ZWQudHh0CmluZGV4IDQwNzI4OGU5
YzU2ODgwYTU2NzhkZDlmMzU1MGExZGNkNDI5MzU0OTQuLjQ4NzJiMTdhMGU4ZGY0ZGU5MzA2ZWUx
N2NjZWM5ZGI0YmUyYTY4NWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL01lZGlh
U3RyZWFtL2FyZ3VtZW50LXR5cGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9NZWRpYVN0cmVhbS9hcmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQKQEAgLTI2LDcgKzI2
LDcgQEAgUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKC1JbmZpbml0eSwgZW1wdHlG
dW5jdGlvbikgdGhyZXcgZXhjZXB0aW9uIEVycm8KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYShlbXB0eUZ1bmN0aW9uLCBlbXB0eUZ1bmN0aW9uKSB0aHJldyBleGNlcHRpb24gRXJy
b3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCiBQQVNTIG5hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgInZpZGVvIikgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1MgbmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIG5hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgbnVsbCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBU
WVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgbmF2aWdhdG9yLndlYmtp
dEdldFVzZXJNZWRpYSgidmlkZW8iLCBudWxsKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBB
U1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCB7fSkgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1MgbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBvYmplY3RUaHJvd2luZ0V4Y2VwdGlv
bikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlv
biAxNy4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCB0cnVlKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vc2NyaXB0LXRl
c3RzL2FyZ3VtZW50LXR5cGVzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0v
c2NyaXB0LXRlc3RzL2FyZ3VtZW50LXR5cGVzLmpzCmluZGV4IDBlOTlkNjMwOGRhZjZhYTQ5NmI4
YTc3ZWUzMzkxNWFjMDA2ZDBiOTUuLmQyYjY2NzcxNjJkZTY4YjdkZjllMDU5ZTFlNDMwN2QzMWUw
NzE4MzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL3Njcmlw
dC10ZXN0cy9hcmd1bWVudC10eXBlcy5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRp
YVN0cmVhbS9zY3JpcHQtdGVzdHMvYXJndW1lbnQtdHlwZXMuanMKQEAgLTYwLDcgKzYwLDcgQEAg
dGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShlbXB0eUZ1bmN0aW9uLCBlbXB0eUZ1
bmN0aW9uKScsIHRydWUsIG5vdFN1cHAKIAogdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSgidmlkZW8iLCAidmlkZW8iKScsIHRydWUpOwogdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYSgidmlkZW8iLCB1bmRlZmluZWQpJywgdHJ1ZSk7Ci10ZXN0KCduYXZpZ2F0b3Iu
d2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIG51bGwpJywgdHJ1ZSk7Cit0ZXN0KCduYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIG51bGwpJywgZmFsc2UpOwogdGVzdCgnbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCB7fSknLCB0cnVlKTsKIHRlc3QoJ25h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgb2JqZWN0VGhyb3dpbmdFeGNlcHRp
b24pJywgdHJ1ZSk7CiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIs
IHRydWUpJywgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2IzMTJhMDBjNzQzNDVjZWMxMWRlYmI2ZGZh
Njk3MmE3NGU2ZTMwNC4uYjkzMjk5MWIwMTczZGNhMDZkYjkzNDJhZTM4NTljZmY0YWVhMTZhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTA1LTMxICBUb21teSBXaWRlbmZseWNo
dCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGdldFVzZXJNZWRpYSgpIHNob3VsZCBub3QgdGhyb3cgd2hlbiBzdWNj
ZXNzQ2FsbGJhY2sgaXMgbnVsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjA2MjIKKworICAgICAgICBUZXN0czogTGF5b3V0VGVzdHMvZmFzdC9kb20v
TWVkaWFTdHJlYW0vYXJndW1lbnQtdHlwZXMuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMv
SlNOYXZpZ2F0b3JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOYXZpZ2F0b3I6Ondl
YmtpdEdldFVzZXJNZWRpYSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmF2aWdh
dG9yQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TmF2aWdhdG9yOjp3ZWJraXRHZXRV
c2VyTWVkaWFDYWxsYmFjayk6CisKIDIwMTEtMDUtMzEgIE9saXZlciBWYXJnYSAgPFZhcmdhLk9s
aXZlckBzdHVkLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5pa29sYXMgWmlt
bWVybWFubi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdh
dG9yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3Vz
dG9tLmNwcAppbmRleCBiOWQzZjY1NTJkYmZkMzViMTBmODVlNzlmNDJlZWNiMmMxNTIyMTRmLi4y
NTZhZjRiYmQ5ZjkwN2FkYjMwYjFiYzE4NDE0OGU1YjAwMjQyZWNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCkBAIC00Miw3ICs0Miw3
IEBAIEpTVmFsdWUgSlNOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKIAotICAgIFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTTmF2aWdhdG9y
VXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPihleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDEpKTsK
KyAgICBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU05hdmlnYXRvclVzZXJNZWRpYVN1
Y2Nlc3NDYWxsYmFjaz4oZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT5hcmd1bWVudCgxKSwgQ2FsbGJhY2tBbGxv
d051bGwpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhOYXZpZ2F0b3JDdXN0b20uY3BwCmluZGV4IGRjY2IwMDU4MWVlNmI2MmI4OWQzNWU3
MWM0NGE1MTdiYTA0MDlkZGYuLmM0YzJhOTNjMTI0MzE2MTEwZWQzMTU2MGMzZDQ2MzE2ODU0ZmY0
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hdmln
YXRvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
TmF2aWdhdG9yQ3VzdG9tLmNwcApAQCAtNDgsNyArNDgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudAogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGNlcHRpb25DYXRjaGVyLkV4Y2VwdGlv
bigpKTsKIAogICAgIGJvb2wgc3VjY2VlZGVkID0gZmFsc2U7Ci0gICAgUmVmUHRyPE5hdmlnYXRv
clVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gY3JlYXRlRnVuY3Rp
b25Pbmx5Q2FsbGJhY2s8VjhOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s+KGFyZ3Nb
MV0sIHN1Y2NlZWRlZCk7CisgICAgUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8VjhOYXZp
Z2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s+KGFyZ3NbMV0sIHN1Y2NlZWRlZCwgQ2FsbGJh
Y2tBbGxvd051bGwpOwogICAgIGlmICghc3VjY2VlZGVkKQogICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96945</attachid>
            <date>2011-06-13 04:58:32 -0700</date>
            <delta_ts>2011-06-13 06:59:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60622-20110613135829.patch</filename>
            <type>text/plain</type>
            <size>13779</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg2MzAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ODIxMzg4Nzc1YWZjZTNjYzcyMjAz
ZGY0ODc3MjYyZjdiMmFkOTc1Li5kMGQxMzE1ZDYyNzE1Mjk4Y2I5NGY5OWQzZjg5NmM2NDliZTky
NTYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDYtMTMgIFRvbW15IFdpZGVuZmx5Y2h0
ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgZ2V0VXNlck1lZGlhKCkgc2hvdWxkIG5vdCB0aHJvdyB3aGVuIHN1Y2Nl
c3NDYWxsYmFjayBpcyBudWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MDYyMgorCisgICAgICAgICogZmFzdC9kb20vTWVkaWFTdHJlYW0vYXJndW1l
bnQtdHlwZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL01lZGlhU3RyZWFtL3Nj
cmlwdC10ZXN0cy9hcmd1bWVudC10eXBlcy5qczoKKwogMjAxMS0wNi0xMiAgTU9SSVRBIEhhamlt
ZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByODg2MjUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9h
cmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0
cmVhbS9hcmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQKaW5kZXggNDA3Mjg4ZTljNTY4ODBhNTY3
OGRkOWYzNTUwYTFkY2Q0MjkzNTQ5NC4uZWE1ZjVhMWMwMWZjMWIzMWFiM2Q1M2EwZWEwNWNhZjhk
YjJlM2JkNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vYXJn
dW1lbnQtdHlwZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL01lZGlh
U3RyZWFtL2FyZ3VtZW50LXR5cGVzLWV4cGVjdGVkLnR4dApAQCAtNywyOCArNywyNSBAQCBQQVNT
IG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZ
UEVfTUlTTUFUQ0hfRVJSOiBETwogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHVu
ZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4
Y2VwdGlvbiAxNy4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShudWxsKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3Lgog
UEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHt9KSB0aHJldyBleGNlcHRpb24gRXJy
b3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBuYXZpZ2F0b3Iu
d2Via2l0R2V0VXNlck1lZGlhKG9iamVjdFRocm93aW5nRXhjZXB0aW9uKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IHRvU3RyaW5nIHRocmV3IGV4Y2VwdGlvbi4KLVBBU1MgbmF2aWdhdG9yLndlYmtp
dEdldFVzZXJNZWRpYSgidmlkZW8iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFU
Q0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKCJ2aWRlbyIpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKHRydWUpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRD
SF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoNDIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoSW5maW5pdHkpIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcu
CiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoLUluZmluaXR5KSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIG5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0
aHJvdyBleGNlcHRpb24uCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEodW5kZWZp
bmVkLCBlbXB0eUZ1bmN0aW9uKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURf
RVJSOiBET00gRXhjZXB0aW9uIDkuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
bnVsbCwgZW1wdHlGdW5jdGlvbikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVE
X0VSUjogRE9NIEV4Y2VwdGlvbiA5LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KHt9LCBlbXB0eUZ1bmN0aW9uKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURf
RVJSOiBET00gRXhjZXB0aW9uIDkuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
b2JqZWN0VGhyb3dpbmdFeGNlcHRpb24sIGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogdG9TdHJpbmcgdGhyZXcgZXhjZXB0aW9uLgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhKHRydWUsIGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9U
X1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYSg0MiwgZW1wdHlGdW5jdGlvbikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1Rf
U1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhKEluZmluaXR5LCBlbXB0eUZ1bmN0aW9uKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCi1QQVNTIG5hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEoLUluZmluaXR5LCBlbXB0eUZ1bmN0aW9uKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCi1QQVNTIG5hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoZW1wdHlGdW5jdGlvbiwgZW1wdHlGdW5jdGlvbikgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgorUEFT
UyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHVuZGVmaW5lZCwgZW1wdHlGdW5jdGlvbikg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAx
Ny4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShudWxsLCBlbXB0eUZ1bmN0aW9u
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9u
IDE3LgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHt9LCBlbXB0eUZ1bmN0aW9u
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9u
IDE3LgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHRydWUsIGVtcHR5RnVuY3Rp
b24pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRp
b24gMTcuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoNDIsIGVtcHR5RnVuY3Rp
b24pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRp
b24gMTcuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoSW5maW5pdHksIGVtcHR5
RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBF
eGNlcHRpb24gMTcuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoLUluZmluaXR5
LCBlbXB0eUZ1bmN0aW9uKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJS
OiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKGVt
cHR5RnVuY3Rpb24sIGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9N
SVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEoInZpZGVvIiwgInZpZGVvIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01J
U01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYSgidmlkZW8iLCB1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9N
SVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEoInZpZGVvIiwgbnVsbCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01B
VENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSgidmlkZW8iLCB1bmRlZmluZWQpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIG51bGwpIGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIHt9
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9u
IDE3LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIG9iamVjdFRo
cm93aW5nRXhjZXB0aW9uKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJS
OiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2
aWRlbyIsIHRydWUpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERP
TSBFeGNlcHRpb24gMTcuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVv
IiwgNDIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgSW5m
aW5pdHkpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCkBAIC00Miw3ICszOSw2IEBAIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSgiYXVkaW8sIHZpZGVvIGVudmlyb25tZW50IiwgZW1wdHlGdW5jdGlvbiwgdW5kCiBQQVNT
IG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbiwgInZp
ZGVvIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxNy4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBlbXB0
eUZ1bmN0aW9uLCBudWxsKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJS
OiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2
aWRlbyIsIGVtcHR5RnVuY3Rpb24sIHt9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlT
TUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNl
ck1lZGlhKCJ2aWRlbyIsIGVtcHR5RnVuY3Rpb24sIG9iamVjdFRocm93aW5nRXhjZXB0aW9uKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3
LgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIGVtcHR5RnVuY3Rp
b24sIHRydWUpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBF
eGNlcHRpb24gMTcuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwg
ZW1wdHlGdW5jdGlvbiwgNDIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9F
UlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
InZpZGVvIiwgZW1wdHlGdW5jdGlvbiwgSW5maW5pdHkpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
VFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9zY3JpcHQtdGVzdHMvYXJndW1lbnQtdHlwZXMuanMg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9zY3JpcHQtdGVzdHMvYXJndW1lbnQt
dHlwZXMuanMKaW5kZXggMGU5OWQ2MzA4ZGFmNmFhNDk2YjhhNzdlZTMzOTE1YWMwMDZkMGI5NS4u
ODJjYzM3YTAwNjYyODJkOWUxMDE1MzA0NzNjNWQ3ODUzZDlhZjRhNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vc2NyaXB0LXRlc3RzL2FyZ3VtZW50LXR5cGVz
LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL3NjcmlwdC10ZXN0cy9h
cmd1bWVudC10eXBlcy5qcwpAQCAtMjUsMTIgKzI1LDYgQEAgdmFyIHRvU3RyaW5nRXJyb3IgPSBu
ZXcgRXJyb3IoJ3RvU3RyaW5nIHRocmV3IGV4Y2VwdGlvbicpOwogdmFyIG5vdFN1cHBvcnRlZEVy
cm9yID0gbmV3IEVycm9yKCdOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5Jyk7CiB2
YXIgZW1wdHlGdW5jdGlvbiA9IGZ1bmN0aW9uKCkge307CiAKLWZ1bmN0aW9uIE9iamVjdFRocm93
aW5nRXhjZXB0aW9uKCkge307Ci1PYmplY3RUaHJvd2luZ0V4Y2VwdGlvbi5wcm90b3R5cGUudG9T
dHJpbmcgPSBmdW5jdGlvbigpIHsKLSAgICB0aHJvdyB0b1N0cmluZ0Vycm9yOwotfQotdmFyIG9i
amVjdFRocm93aW5nRXhjZXB0aW9uID0gbmV3IE9iamVjdFRocm93aW5nRXhjZXB0aW9uKCk7Ci0K
IC8vIE5vIGFyZ3VtZW50cwogdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgpJywg
dHJ1ZSk7CiAKQEAgLTM4LDggKzMyLDcgQEAgdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSgpJywgdHJ1ZSk7CiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHVuZGVm
aW5lZCknLCB0cnVlKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEobnVsbCkn
LCB0cnVlKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe30pJywgdHJ1ZSk7
Ci10ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKG9iamVjdFRocm93aW5nRXhjZXB0
aW9uKScsIHRydWUsIHRvU3RyaW5nRXJyb3IpOwotdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYSgidmlkZW8iKScsIHRydWUpOwordGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSgidmlkZW8iKScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEodHJ1ZSknLCB0cnVlKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoNDIp
JywgdHJ1ZSk7CiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKEluZmluaXR5KScs
IHRydWUpOwpAQCAtNDgsMjEgKzQxLDE5IEBAIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2Vy
TWVkaWEoZW1wdHlGdW5jdGlvbiknLCB0cnVlKTsKIAogLy8gMiBBcmd1bWVudHMuCiB0ZXN0KCdu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIGVtcHR5RnVuY3Rpb24pJywgZmFs
c2UpOwotdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh1bmRlZmluZWQsIGVtcHR5
RnVuY3Rpb24pJywgdHJ1ZSwgbm90U3VwcG9ydGVkRXJyb3IpOwotdGVzdCgnbmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYShudWxsLCBlbXB0eUZ1bmN0aW9uKScsIHRydWUsIG5vdFN1cHBvcnRl
ZEVycm9yKTsKLXRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe30sIGVtcHR5RnVu
Y3Rpb24pJywgdHJ1ZSwgbm90U3VwcG9ydGVkRXJyb3IpOwotdGVzdCgnbmF2aWdhdG9yLndlYmtp
dEdldFVzZXJNZWRpYShvYmplY3RUaHJvd2luZ0V4Y2VwdGlvbiwgZW1wdHlGdW5jdGlvbiknLCB0
cnVlLCB0b1N0cmluZ0Vycm9yKTsKLXRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
dHJ1ZSwgZW1wdHlGdW5jdGlvbiknLCB0cnVlLCBub3RTdXBwb3J0ZWRFcnJvcik7Ci10ZXN0KCdu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKDQyLCBlbXB0eUZ1bmN0aW9uKScsIHRydWUsIG5v
dFN1cHBvcnRlZEVycm9yKTsKLXRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoSW5m
aW5pdHksIGVtcHR5RnVuY3Rpb24pJywgdHJ1ZSwgbm90U3VwcG9ydGVkRXJyb3IpOwotdGVzdCgn
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgtSW5maW5pdHksIGVtcHR5RnVuY3Rpb24pJywg
dHJ1ZSwgbm90U3VwcG9ydGVkRXJyb3IpOwotdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYShlbXB0eUZ1bmN0aW9uLCBlbXB0eUZ1bmN0aW9uKScsIHRydWUsIG5vdFN1cHBvcnRlZEVy
cm9yKTsKK3Rlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEodW5kZWZpbmVkLCBlbXB0
eUZ1bmN0aW9uKScsIHRydWUpOwordGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShu
dWxsLCBlbXB0eUZ1bmN0aW9uKScsIHRydWUpOwordGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYSh7fSwgZW1wdHlGdW5jdGlvbiknLCB0cnVlKTsKK3Rlc3QoJ25hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEodHJ1ZSwgZW1wdHlGdW5jdGlvbiknLCB0cnVlKTsKK3Rlc3QoJ25hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoNDIsIGVtcHR5RnVuY3Rpb24pJywgdHJ1ZSk7Cit0ZXN0
KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKEluZmluaXR5LCBlbXB0eUZ1bmN0aW9uKScs
IHRydWUpOwordGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgtSW5maW5pdHksIGVt
cHR5RnVuY3Rpb24pJywgdHJ1ZSk7Cit0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KGVtcHR5RnVuY3Rpb24sIGVtcHR5RnVuY3Rpb24pJywgdHJ1ZSk7CiAKIHRlc3QoJ25hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgInZpZGVvIiknLCB0cnVlKTsKLXRlc3QoJ25h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgdW5kZWZpbmVkKScsIHRydWUpOwot
dGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBudWxsKScsIHRydWUp
OwordGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCB1bmRlZmluZWQp
JywgZmFsc2UpOwordGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBu
dWxsKScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVv
Iiwge30pJywgdHJ1ZSk7Ci10ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRl
byIsIG9iamVjdFRocm93aW5nRXhjZXB0aW9uKScsIHRydWUpOwogdGVzdCgnbmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCB0cnVlKScsIHRydWUpOwogdGVzdCgnbmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCA0MiknLCB0cnVlKTsKIHRlc3QoJ25hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgSW5maW5pdHkpJywgdHJ1ZSk7CkBAIC03OCw3
ICs2OSw2IEBAIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoImF1ZGlvLCB2aWRl
byBlbnZpcm9ubWVudCIsIGVtcHR5RnVuY3Rpb24sIHVuCiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKCJ2aWRlbyIsIGVtcHR5RnVuY3Rpb24sICJ2aWRlbyIpJywgdHJ1ZSk7CiB0
ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIGVtcHR5RnVuY3Rpb24s
IG51bGwpJywgdHJ1ZSk7CiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRl
byIsIGVtcHR5RnVuY3Rpb24sIHt9KScsIHRydWUpOwotdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYSgidmlkZW8iLCBlbXB0eUZ1bmN0aW9uLCBvYmplY3RUaHJvd2luZ0V4Y2VwdGlv
biknLCB0cnVlKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwg
ZW1wdHlGdW5jdGlvbiwgdHJ1ZSknLCB0cnVlKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbiwgNDIpJywgdHJ1ZSk7CiB0ZXN0KCduYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIGVtcHR5RnVuY3Rpb24sIEluZmluaXR5
KScsIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM3NDQ1OGFkYTU0ZDAzZDI0NWZiMjFjYjMwZTY4MDQ3
YzUwMjFmZTEuLjYzYmJlMTRhNmZkZDI2ZThmY2VkNWIyN2RhM2RjOGVhODZlN2JmZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wNi0xMyAgVG9tbXkgV2lkZW5mbHljaHQgIDx0
b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBnZXRVc2VyTWVkaWEoKSBzaG91bGQgbm90IHRocm93IHdoZW4gc3VjY2Vzc0Nh
bGxiYWNrIGlzIG51bGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTYwNjIyCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU05hdmlnYXRvcjo6d2Via2l0R2V0VXNlck1lZGlhKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0b3JDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYUNhbGxiYWNrKToK
KwogMjAxMS0wNi0xMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAppbmRleCAxMDdkYWViMmZjY2FlNDNjNGQ5YjFmNTBh
MmEzYTE4YjUyZjIxODMzLi4wMjIzYjA4MWUyZWJjNGUyNmExYzE4ODQzNzgyNmE4Nzc4M2U4Mjgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20u
Y3BwCkBAIC0zOCw2ICszOCwxNCBAQCBKU1ZhbHVlIEpTTmF2aWdhdG9yOjp3ZWJraXRHZXRVc2Vy
TWVkaWEoRXhlY1N0YXRlKiBleGVjKQogewogICAgIC8vIEFyZ3VtZW50czogT3B0aW9ucywgc3Vj
Y2Vzc0NhbGxiYWNrLCAob3B0aW9uYWwpZXJyb3JDYWxsYmFjawogCisgICAgLy8gRXhwbGljaXRs
eSBjaGVjayBiYXNpYyBhc3N1bXRpb25zIGZvciBjbGFyaXR5LgorICAgIGlmIChleGVjLT5hcmd1
bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
ICAgIH0KKyAgICBpZiAoZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWRPck51bGwoKSkKKyAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKICAgICBTdHJpbmcgb3B0aW9ucyA9IHVzdHJp
bmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKSk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hdmlnYXRvckN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0b3JDdXN0
b20uY3BwCmluZGV4IGRjY2IwMDU4MWVlNmI2MmI4OWQzNWU3MWM0NGE1MTdiYTA0MDlkZGYuLjM3
NDA2NmU4ZmI4MTUyN2VjN2E1ODc0ZWRjZjcwZTBiY2ZkNTRkNjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmF2aWdhdG9yQ3VzdG9tLmNwcApA
QCAtNDAsMTAgKzQwLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4TmF2aWdhdG9yOjp3ZWJraXRHZXRVc2VyTWVkaWFDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogeworICAgIC8vIEFyZ3VtZW50czogT3B0aW9ucywgc3VjY2Vzc0Nh
bGxiYWNrLCAob3B0aW9uYWwpZXJyb3JDYWxsYmFjawogICAgIElOQ19TVEFUUygiRE9NLk5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoKSIpOwogCisgICAgLy8gRXhwbGljaXRseSBjaGVjayBi
YXNpYyBhc3N1bXRpb25zIGZvciBjbGFyaXR5LgorICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbChh
cmdzWzBdKSB8fCAhYXJnc1swXS0+SXNTdHJpbmcoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoVFlQRV9NSVNNQVRDSF9FUlIpOworICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFd
KSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKwogICAgIHY4OjpUcnlDYXRjaCBl
eGNlcHRpb25DYXRjaGVyOwotICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gb3B0aW9ucyA9IGFy
Z3NbMF0tPlRvU3RyaW5nKCk7CisgICAgU3RyaW5nIG9wdGlvbnMgPSB0b1dlYkNvcmVTdHJpbmco
YXJnc1swXSk7CiAgICAgaWYgKGV4Y2VwdGlvbkNhdGNoZXIuSGFzQ2F1Z2h0KCkpCiAgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKGV4Y2VwdGlvbkNhdGNoZXIuRXhjZXB0aW9uKCkpOwogCkBAIC01
OSw3ICs2Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5hdmlnYXRvcjo6d2Via2l0R2V0
VXNlck1lZGlhQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50CiAKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBOYXZpZ2F0b3IqIG5hdmlnYXRvciA9IFY4TmF2aWdhdG9yOjp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKLSAgICBuYXZpZ2F0b3ItPndlYmtpdEdldFVzZXJNZWRpYSh0b1dl
YkNvcmVTdHJpbmcob3B0aW9ucyksIHN1Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCksIGVycm9yQ2Fs
bGJhY2sucmVsZWFzZSgpLCBlYyk7CisgICAgbmF2aWdhdG9yLT53ZWJraXRHZXRVc2VyTWVkaWEo
b3B0aW9ucywgc3VjY2Vzc0NhbGxiYWNrLnJlbGVhc2UoKSwgZXJyb3JDYWxsYmFjay5yZWxlYXNl
KCksIGVjKTsKICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96952</attachid>
            <date>2011-06-13 07:00:01 -0700</date>
            <delta_ts>2011-06-13 08:17:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60622-20110613155959.patch</filename>
            <type>text/plain</type>
            <size>16611</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg2MzAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ODIxMzg4Nzc1YWZjZTNjYzcyMjAz
ZGY0ODc3MjYyZjdiMmFkOTc1Li5kMGQxMzE1ZDYyNzE1Mjk4Y2I5NGY5OWQzZjg5NmM2NDliZTky
NTYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDYtMTMgIFRvbW15IFdpZGVuZmx5Y2h0
ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgZ2V0VXNlck1lZGlhKCkgc2hvdWxkIG5vdCB0aHJvdyB3aGVuIHN1Y2Nl
c3NDYWxsYmFjayBpcyBudWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MDYyMgorCisgICAgICAgICogZmFzdC9kb20vTWVkaWFTdHJlYW0vYXJndW1l
bnQtdHlwZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL01lZGlhU3RyZWFtL3Nj
cmlwdC10ZXN0cy9hcmd1bWVudC10eXBlcy5qczoKKwogMjAxMS0wNi0xMiAgTU9SSVRBIEhhamlt
ZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByODg2MjUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9h
cmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0
cmVhbS9hcmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQKaW5kZXggNDA3Mjg4ZTljNTY4ODBhNTY3
OGRkOWYzNTUwYTFkY2Q0MjkzNTQ5NC4uMmYwZjQ0ODg5NWYxNzRmNjU2OTljZjZmNmU0OTBhOGJl
NGU4ZjJjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vYXJn
dW1lbnQtdHlwZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL01lZGlh
U3RyZWFtL2FyZ3VtZW50LXR5cGVzLWV4cGVjdGVkLnR4dApAQCAtMywzMiArMywyOSBAQCBUZXN0
cyB0aGUgYWNjZXB0YWJsZSB0eXBlcyBmb3IgYXJndW1lbnRzIHRvIG5hdmlnYXRvci5nZXRVc2Vy
TWVkaWEgbWV0aG9kcy4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIG5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlT
TUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNl
ck1lZGlhKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VS
UjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShu
dWxsKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0
aW9uIDE3LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHt9KSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKG9iamVjdFRocm93aW5nRXhjZXB0aW9uKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IHRvU3RyaW5nIHRocmV3IGV4Y2VwdGlvbi4KLVBBU1MgbmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZ
UEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKHRydWUpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9F
UlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
NDIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRp
b24gMTcuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoSW5maW5pdHkpIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1Q
QVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoLUluZmluaXR5KSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIG5hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JU
RURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBE
T00gRXhjZXB0aW9uIDkuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEobnVsbCkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5
LgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHt9KSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIG5hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQ
QVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEodHJ1ZSkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBuYXZpZ2F0b3Iu
d2Via2l0R2V0VXNlck1lZGlhKDQyKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JU
RURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoSW5maW5pdHkpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERP
TSBFeGNlcHRpb24gOS4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgtSW5maW5p
dHkpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRp
b24gOS4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShlbXB0eUZ1bmN0aW9uKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDku
CiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlv
bikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2Vy
TWVkaWEodW5kZWZpbmVkLCBlbXB0eUZ1bmN0aW9uKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5P
VF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEobnVsbCwgZW1wdHlGdW5jdGlvbikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBO
T1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKHt9LCBlbXB0eUZ1bmN0aW9uKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5P
VF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEob2JqZWN0VGhyb3dpbmdFeGNlcHRpb24sIGVtcHR5RnVuY3Rpb24pIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogdG9TdHJpbmcgdGhyZXcgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKHRydWUsIGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KIFBBU1MgbmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSg0MiwgZW1wdHlGdW5jdGlvbikgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgogUEFTUyBuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKEluZmluaXR5LCBlbXB0eUZ1bmN0aW9uKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCiBQQVNTIG5h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoLUluZmluaXR5LCBlbXB0eUZ1bmN0aW9uKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCiBQ
QVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoZW1wdHlGdW5jdGlvbiwgZW1wdHlGdW5j
dGlvbikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2Vw
dGlvbiA5LgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsICJ2aWRl
byIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRp
b24gMTcuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgdW5kZWZp
bmVkKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0
aW9uIDE3LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIG51bGwp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24g
MTcuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgdW5kZWZpbmVk
KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSgidmlkZW8iLCBudWxsKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCB7fSkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgbmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBvYmplY3RUaHJvd2luZ0V4Y2VwdGlvbikgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBB
U1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCB0cnVlKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIDQyKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIEluZmluaXR5KSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgpAQCAtNDAsOSArMzcs
OCBAQCBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoImF1ZGlvLCBzb21ldGhpbmdl
bHNlLCx2aWRlbyIsIGVtcHR5RnVuY3Rpb24sCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2Vy
TWVkaWEoImF1ZGlvLCB2aWRlbyB1c2VyIiwgZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgi
YXVkaW8sIHZpZGVvIGVudmlyb25tZW50IiwgZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgi
dmlkZW8iLCBlbXB0eUZ1bmN0aW9uLCAidmlkZW8iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZ
UEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKCJ2aWRlbyIsIGVtcHR5RnVuY3Rpb24sIG51bGwpIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIG5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbiwgbnVsbCkgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
InZpZGVvIiwgZW1wdHlGdW5jdGlvbiwge30pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9N
SVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbiwgb2JqZWN0VGhyb3dpbmdFeGNlcHRpb24p
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24g
MTcuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5j
dGlvbiwgdHJ1ZSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9N
IEV4Y2VwdGlvbiAxNy4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8i
LCBlbXB0eUZ1bmN0aW9uLCA0MikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENI
X0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSgidmlkZW8iLCBlbXB0eUZ1bmN0aW9uLCBJbmZpbml0eSkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL3NjcmlwdC10ZXN0cy9hcmd1bWVudC10eXBlcy5q
cyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL3NjcmlwdC10ZXN0cy9hcmd1bWVu
dC10eXBlcy5qcwppbmRleCAwZTk5ZDYzMDhkYWY2YWE0OTZiOGE3N2VlMzM5MTVhYzAwNmQwYjk1
Li40MThkMmVkMGNjN2MzY2VlNmU2NDg3MzlmMTU3YmU4ZWRmYjdlMzYzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9zY3JpcHQtdGVzdHMvYXJndW1lbnQtdHlw
ZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vc2NyaXB0LXRlc3Rz
L2FyZ3VtZW50LXR5cGVzLmpzCkBAIC0yMSwzNyArMjEsMjggQEAgZnVuY3Rpb24gdGVzdChleHBy
ZXNzaW9uLCBleHByZXNzaW9uU2hvdWxkVGhyb3csIGV4cGVjdGVkRXhjZXB0aW9uKSB7CiAgICAg
fQogfQogCi12YXIgdG9TdHJpbmdFcnJvciA9IG5ldyBFcnJvcigndG9TdHJpbmcgdGhyZXcgZXhj
ZXB0aW9uJyk7CiB2YXIgbm90U3VwcG9ydGVkRXJyb3IgPSBuZXcgRXJyb3IoJ05PVF9TVVBQT1JU
RURfRVJSOiBET00gRXhjZXB0aW9uIDknKTsKIHZhciBlbXB0eUZ1bmN0aW9uID0gZnVuY3Rpb24o
KSB7fTsKIAotZnVuY3Rpb24gT2JqZWN0VGhyb3dpbmdFeGNlcHRpb24oKSB7fTsKLU9iamVjdFRo
cm93aW5nRXhjZXB0aW9uLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgewotICAgIHRo
cm93IHRvU3RyaW5nRXJyb3I7Ci19Ci12YXIgb2JqZWN0VGhyb3dpbmdFeGNlcHRpb24gPSBuZXcg
T2JqZWN0VGhyb3dpbmdFeGNlcHRpb24oKTsKLQogLy8gTm8gYXJndW1lbnRzCi10ZXN0KCduYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCknLCB0cnVlKTsKK3Rlc3QoJ25hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEoKScsIHRydWUsIG5vdFN1cHBvcnRlZEVycm9yKTsKIAogLy8gMSBBcmd1
bWVudCAoZ2V0VXNlck1lZGlhIHJlcXVpcmVzIGF0IGxlYXN0IDIgYXJndW1lbnRzKS4KLXRlc3Qo
J25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEodW5kZWZpbmVkKScsIHRydWUpOwotdGVzdCgn
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShudWxsKScsIHRydWUpOwotdGVzdCgnbmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSh7fSknLCB0cnVlKTsKLXRlc3QoJ25hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEob2JqZWN0VGhyb3dpbmdFeGNlcHRpb24pJywgdHJ1ZSwgdG9TdHJpbmdF
cnJvcik7Ci10ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIpJywgdHJ1
ZSk7Ci10ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHRydWUpJywgdHJ1ZSk7Ci10
ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKDQyKScsIHRydWUpOwotdGVzdCgnbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShJbmZpbml0eSknLCB0cnVlKTsKLXRlc3QoJ25hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoLUluZmluaXR5KScsIHRydWUpOwotdGVzdCgnbmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYShlbXB0eUZ1bmN0aW9uKScsIHRydWUpOwordGVzdCgnbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh1bmRlZmluZWQpJywgdHJ1ZSwgbm90U3VwcG9ydGVk
RXJyb3IpOwordGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShudWxsKScsIHRydWUs
IG5vdFN1cHBvcnRlZEVycm9yKTsKK3Rlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
e30pJywgdHJ1ZSwgbm90U3VwcG9ydGVkRXJyb3IpOwordGVzdCgnbmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYSgidmlkZW8iKScsIGZhbHNlKTsKK3Rlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEodHJ1ZSknLCB0cnVlLCBub3RTdXBwb3J0ZWRFcnJvcik7Cit0ZXN0KCduYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKDQyKScsIHRydWUsIG5vdFN1cHBvcnRlZEVycm9yKTsKK3Rl
c3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoSW5maW5pdHkpJywgdHJ1ZSwgbm90U3Vw
cG9ydGVkRXJyb3IpOwordGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgtSW5maW5p
dHkpJywgdHJ1ZSwgbm90U3VwcG9ydGVkRXJyb3IpOwordGVzdCgnbmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYShlbXB0eUZ1bmN0aW9uKScsIHRydWUsIG5vdFN1cHBvcnRlZEVycm9yKTsKIAog
Ly8gMiBBcmd1bWVudHMuCiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRl
byIsIGVtcHR5RnVuY3Rpb24pJywgZmFsc2UpOwogdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYSh1bmRlZmluZWQsIGVtcHR5RnVuY3Rpb24pJywgdHJ1ZSwgbm90U3VwcG9ydGVkRXJy
b3IpOwogdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShudWxsLCBlbXB0eUZ1bmN0
aW9uKScsIHRydWUsIG5vdFN1cHBvcnRlZEVycm9yKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEoe30sIGVtcHR5RnVuY3Rpb24pJywgdHJ1ZSwgbm90U3VwcG9ydGVkRXJyb3Ip
OwotdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShvYmplY3RUaHJvd2luZ0V4Y2Vw
dGlvbiwgZW1wdHlGdW5jdGlvbiknLCB0cnVlLCB0b1N0cmluZ0Vycm9yKTsKIHRlc3QoJ25hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEodHJ1ZSwgZW1wdHlGdW5jdGlvbiknLCB0cnVlLCBub3RT
dXBwb3J0ZWRFcnJvcik7CiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKDQyLCBl
bXB0eUZ1bmN0aW9uKScsIHRydWUsIG5vdFN1cHBvcnRlZEVycm9yKTsKIHRlc3QoJ25hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoSW5maW5pdHksIGVtcHR5RnVuY3Rpb24pJywgdHJ1ZSwgbm90
U3VwcG9ydGVkRXJyb3IpOwpAQCAtNTksMTAgKzUwLDkgQEAgdGVzdCgnbmF2aWdhdG9yLndlYmtp
dEdldFVzZXJNZWRpYSgtSW5maW5pdHksIGVtcHR5RnVuY3Rpb24pJywgdHJ1ZSwgbm90U3VwcG9y
dGUKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoZW1wdHlGdW5jdGlvbiwgZW1w
dHlGdW5jdGlvbiknLCB0cnVlLCBub3RTdXBwb3J0ZWRFcnJvcik7CiAKIHRlc3QoJ25hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgInZpZGVvIiknLCB0cnVlKTsKLXRlc3QoJ25h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgdW5kZWZpbmVkKScsIHRydWUpOwot
dGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBudWxsKScsIHRydWUp
OwordGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCB1bmRlZmluZWQp
JywgZmFsc2UpOwordGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBu
dWxsKScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVv
Iiwge30pJywgdHJ1ZSk7Ci10ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRl
byIsIG9iamVjdFRocm93aW5nRXhjZXB0aW9uKScsIHRydWUpOwogdGVzdCgnbmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCB0cnVlKScsIHRydWUpOwogdGVzdCgnbmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCA0MiknLCB0cnVlKTsKIHRlc3QoJ25hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgSW5maW5pdHkpJywgdHJ1ZSk7CkBAIC03Niw5
ICs2Niw4IEBAIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoImF1ZGlvLCBzb21l
dGhpbmdlbHNlLCx2aWRlbyIsIGVtcHR5RnVuY3Rpb24sCiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKCJhdWRpbywgdmlkZW8gdXNlciIsIGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5l
ZCknLCBmYWxzZSk7CiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJhdWRpbywg
dmlkZW8gZW52aXJvbm1lbnQiLCBlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQpJywgZmFsc2UpOwog
dGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBlbXB0eUZ1bmN0aW9u
LCAidmlkZW8iKScsIHRydWUpOwotdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgi
dmlkZW8iLCBlbXB0eUZ1bmN0aW9uLCBudWxsKScsIHRydWUpOwordGVzdCgnbmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBlbXB0eUZ1bmN0aW9uLCBudWxsKScsIGZhbHNlKTsK
IHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlv
biwge30pJywgdHJ1ZSk7Ci10ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRl
byIsIGVtcHR5RnVuY3Rpb24sIG9iamVjdFRocm93aW5nRXhjZXB0aW9uKScsIHRydWUpOwogdGVz
dCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBlbXB0eUZ1bmN0aW9uLCB0
cnVlKScsIHRydWUpOwogdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8i
LCBlbXB0eUZ1bmN0aW9uLCA0MiknLCB0cnVlKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbiwgSW5maW5pdHkpJywgdHJ1ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggYzc0NDU4YWRhNTRkMDNkMjQ1ZmIyMWNiMzBlNjgwNDdjNTAyMWZlMS4uNjNiYmUx
NGE2ZmRkMjZlOGZjZWQ1YjI3ZGEzZGM4ZWE4NmU3YmZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDExLTA2LTEzICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGdldFVz
ZXJNZWRpYSgpIHNob3VsZCBub3QgdGhyb3cgd2hlbiBzdWNjZXNzQ2FsbGJhY2sgaXMgbnVsbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA2MjIKKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTTmF2aWdhdG9yOjp3ZWJraXRHZXRVc2VyTWVkaWEpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OE5hdmlnYXRvcjo6d2Via2l0R2V0VXNlck1lZGlhQ2FsbGJhY2spOgorCiAyMDExLTA2LTEyICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZp
Z2F0b3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JD
dXN0b20uY3BwCmluZGV4IDEwN2RhZWIyZmNjYWU0M2M0ZDliMWY1MGEyYTNhMThiNTJmMjE4MzMu
LmRiZWRlNmMwNjI1N2I0ZjRkYjQzMTc1MGMyM2Y1NWMyMDBhZWZkNzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKQEAgLTM4LDYgKzM4
LDE0IEBAIEpTVmFsdWUgSlNOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYShFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgLy8gQXJndW1lbnRzOiBPcHRpb25zLCBzdWNjZXNzQ2FsbGJhY2ssIChv
cHRpb25hbCllcnJvckNhbGxiYWNrCiAKKyAgICAvLyBFeHBsaWNpdGx5IGNoZWNrIGJhc2ljIGFz
c3VtcHRpb25zIGZvciBjbGFyaXR5LgorICAgIGlmIChleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVm
aW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBOT1RfU1VQUE9S
VEVEX0VSUik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKyAgICBpZiAo
ZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisKICAgICBTdHJpbmcgb3B0aW9ucyA9IHVzdHJpbmdUb1N0cmluZyhleGVj
LT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTQ2LDcgKzU0LDcgQEAgSlNW
YWx1ZSBKU05hdmlnYXRvcjo6d2Via2l0R2V0VXNlck1lZGlhKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogCi0gICAgUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU05hdmlnYXRvclVzZXJNZWRpYUVy
cm9yQ2FsbGJhY2s+KGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+YXJndW1lbnQoMiksIENhbGxiYWNrQWxsb3dV
bmRlZmluZWQpOworICAgIFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNOYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvckNhbGxiYWNrPihleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDIpLCBDYWxsYmFj
a0FsbG93VW5kZWZpbmVkIHwgQ2FsbGJhY2tBbGxvd051bGwpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0b3JDdXN0b20uY3Bw
CmluZGV4IGRjY2IwMDU4MWVlNmI2MmI4OWQzNWU3MWM0NGE1MTdiYTA0MDlkZGYuLmNjNGU0YzVm
YzYxNzZiODFlM2ExMGNiOGNhMWRlM2Y4ZmMyNDBkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmF2aWdhdG9yQ3VzdG9tLmNwcApAQCAtNDAs
MTAgKzQwLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4TmF2aWdhdG9yOjp3ZWJraXRHZXRVc2VyTWVkaWFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogeworICAgIC8vIEFyZ3VtZW50czogT3B0aW9ucywgc3VjY2Vzc0NhbGxiYWNr
LCAob3B0aW9uYWwpZXJyb3JDYWxsYmFjawogICAgIElOQ19TVEFUUygiRE9NLk5hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEoKSIpOwogCisgICAgLy8gRXhwbGljaXRseSBjaGVjayBiYXNpYyBh
c3N1bXB0aW9ucyBmb3IgY2xhcml0eS4KKyAgICBpZiAoaXNVbmRlZmluZWRPck51bGwoYXJnc1sw
XSkgfHwgIWFyZ3NbMF0tPklzU3RyaW5nKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKE5P
VF9TVVBQT1JURURfRVJSKTsKKyAgICBpZiAoaXNVbmRlZmluZWRPck51bGwoYXJnc1sxXSkpCisg
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisKICAgICB2ODo6VHJ5Q2F0Y2ggZXhjZXB0
aW9uQ2F0Y2hlcjsKLSAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IG9wdGlvbnMgPSBhcmdzWzBd
LT5Ub1N0cmluZygpOworICAgIFN0cmluZyBvcHRpb25zID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3Nb
MF0pOwogICAgIGlmIChleGNlcHRpb25DYXRjaGVyLkhhc0NhdWdodCgpKQogICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihleGNlcHRpb25DYXRjaGVyLkV4Y2VwdGlvbigpKTsKIApAQCAtNTMsMTMg
KzYwLDEzIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5hdmlnYXRvcjo6d2Via2l0R2V0VXNl
ck1lZGlhQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50CiAgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CiAKICAgICAvLyBBcmd1bWVudCBpcyBvcHRpb25hbCwgaGVuY2UgdW5kZWZpbmVk
IGlzIGFsbG93ZWQuCi0gICAgUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxWOE5hdmlnYXRvclVz
ZXJNZWRpYUVycm9yQ2FsbGJhY2s+KGFyZ3NbMl0sIHN1Y2NlZWRlZCwgQ2FsbGJhY2tBbGxvd1Vu
ZGVmaW5lZCk7CisgICAgUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxWOE5hdmlnYXRvclVzZXJN
ZWRpYUVycm9yQ2FsbGJhY2s+KGFyZ3NbMl0sIHN1Y2NlZWRlZCwgQ2FsbGJhY2tBbGxvd1VuZGVm
aW5lZCB8IENhbGxiYWNrQWxsb3dOdWxsKTsKICAgICBpZiAoIXN1Y2NlZWRlZCkKICAgICAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IE5hdmlnYXRvciogbmF2aWdhdG9yID0gVjhOYXZpZ2F0b3I6OnRvTmF0aXZlKGFyZ3MuSG9sZGVy
KCkpOwotICAgIG5hdmlnYXRvci0+d2Via2l0R2V0VXNlck1lZGlhKHRvV2ViQ29yZVN0cmluZyhv
cHRpb25zKSwgc3VjY2Vzc0NhbGxiYWNrLnJlbGVhc2UoKSwgZXJyb3JDYWxsYmFjay5yZWxlYXNl
KCksIGVjKTsKKyAgICBuYXZpZ2F0b3ItPndlYmtpdEdldFVzZXJNZWRpYShvcHRpb25zLCBzdWNj
ZXNzQ2FsbGJhY2sucmVsZWFzZSgpLCBlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgZWMpOwogICAg
IHJldHVybiB0aHJvd0Vycm9yKGVjKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcAppbmRleCBhZTllZTg4NjNiNjc3ZWU1YzQ0
NTlmMWVmNzRiM2IxNGY5MWZjODU5Li5kNzQyNTFlNTJlODc5NDFmNGVjMDNkZTcyZTA1ODRjZGQ2
ZGRiNTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyLmNwcApAQCAtMjc3LDggKzI3Nyw3IEBAIHZvaWQgTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXI6OmdlbmVyYXRlU3RyZWFtKGNvbnN0IFN0cmluZyYgb3B0aW9ucywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIGVjID0gMDsKLSAgICBpZiAoIXN1Y2Nlc3NDYWxsYmFjaykKLSAgICAgICAgcmV0
dXJuOworICAgIEFTU0VSVChzdWNjZXNzQ2FsbGJhY2suZ2V0KCkpOwogCiAgICAgR2VuZXJhdGVT
dHJlYW1PcHRpb25GbGFncyBmbGFncyA9IHBhcnNlR2VuZXJhdGVTdHJlYW1PcHRpb25zKG9wdGlv
bnMpOwogICAgIGlmICghZmxhZ3MpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96957</attachid>
            <date>2011-06-13 08:16:29 -0700</date>
            <delta_ts>2011-06-14 01:12:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60622-20110613171627.patch</filename>
            <type>text/plain</type>
            <size>18301</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg2MzAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ODIxMzg4Nzc1YWZjZTNjYzcyMjAz
ZGY0ODc3MjYyZjdiMmFkOTc1Li5kMGQxMzE1ZDYyNzE1Mjk4Y2I5NGY5OWQzZjg5NmM2NDliZTky
NTYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDYtMTMgIFRvbW15IFdpZGVuZmx5Y2h0
ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgZ2V0VXNlck1lZGlhKCkgc2hvdWxkIG5vdCB0aHJvdyB3aGVuIHN1Y2Nl
c3NDYWxsYmFjayBpcyBudWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MDYyMgorCisgICAgICAgICogZmFzdC9kb20vTWVkaWFTdHJlYW0vYXJndW1l
bnQtdHlwZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL01lZGlhU3RyZWFtL3Nj
cmlwdC10ZXN0cy9hcmd1bWVudC10eXBlcy5qczoKKwogMjAxMS0wNi0xMiAgTU9SSVRBIEhhamlt
ZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByODg2MjUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9h
cmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0
cmVhbS9hcmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQKaW5kZXggNDA3Mjg4ZTljNTY4ODBhNTY3
OGRkOWYzNTUwYTFkY2Q0MjkzNTQ5NC4uMGQ2MGFiZjU2MjgzNjk3OTg3MzdiODkxNTNkMzBhNjE3
MjY0NGMyNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vYXJn
dW1lbnQtdHlwZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL01lZGlh
U3RyZWFtL2FyZ3VtZW50LXR5cGVzLWV4cGVjdGVkLnR4dApAQCAtMywzNiArMywzNyBAQCBUZXN0
cyB0aGUgYWNjZXB0YWJsZSB0eXBlcyBmb3IgYXJndW1lbnRzIHRvIG5hdmlnYXRvci5nZXRVc2Vy
TWVkaWEgbWV0aG9kcy4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIG5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlT
TUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNl
ck1lZGlhKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VS
UjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShu
dWxsKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0
aW9uIDE3LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHt9KSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKG9iamVjdFRocm93aW5nRXhjZXB0aW9uKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IHRvU3RyaW5nIHRocmV3IGV4Y2VwdGlvbi4KLVBBU1MgbmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZ
UEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKHRydWUpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9F
UlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
NDIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRp
b24gMTcuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoSW5maW5pdHkpIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1Q
QVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoLUluZmluaXR5KSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIG5hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JU
RURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBE
T00gRXhjZXB0aW9uIDkuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEobnVsbCkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5
LgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHt9KSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIG5hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQ
QVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEodHJ1ZSkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBuYXZpZ2F0b3Iu
d2Via2l0R2V0VXNlck1lZGlhKDQyKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JU
RURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoSW5maW5pdHkpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERP
TSBFeGNlcHRpb24gOS4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgtSW5maW5p
dHkpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRp
b24gOS4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShlbXB0eUZ1bmN0aW9uKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDku
CiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlv
bikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2Vy
TWVkaWEodW5kZWZpbmVkLCBlbXB0eUZ1bmN0aW9uKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5P
VF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEobnVsbCwgZW1wdHlGdW5jdGlvbikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBO
T1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKHt9LCBlbXB0eUZ1bmN0aW9uKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5P
VF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEob2JqZWN0VGhyb3dpbmdFeGNlcHRpb24sIGVtcHR5RnVuY3Rpb24pIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogdG9TdHJpbmcgdGhyZXcgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKHRydWUsIGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KIFBBU1MgbmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSg0MiwgZW1wdHlGdW5jdGlvbikgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgogUEFTUyBuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKEluZmluaXR5LCBlbXB0eUZ1bmN0aW9uKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCiBQQVNTIG5h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoLUluZmluaXR5LCBlbXB0eUZ1bmN0aW9uKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCiBQ
QVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoZW1wdHlGdW5jdGlvbiwgZW1wdHlGdW5j
dGlvbikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2Vw
dGlvbiA5LgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsICJ2aWRl
byIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRp
b24gMTcuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgdW5kZWZp
bmVkKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0
aW9uIDE3LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIG51bGwp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24g
MTcuCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgdW5kZWZpbmVk
KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSgidmlkZW8iLCBudWxsKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCB7fSkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgbmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBvYmplY3RUaHJvd2luZ0V4Y2VwdGlvbikgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBB
U1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCB0cnVlKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIDQyKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIEluZmluaXR5KSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIC1JbmZpbml0eSkgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgbmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSgiLCB0aGlzIHNob3VsZCBwYXNzLCAgdmlkZW8gICBzdWJv
cHRpb25zIGhlcmUsLCBzMG1lIHJ1YmlzaEAkISIsIGVtcHR5RnVuY3Rpb24pIGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ0aGlzIHNo
b3VsZCBwYXNzLCBhdWRpbywgdmlkZW8gYXVkaW8sIGF1ZGlvIHZpZGVvLCB2aWRlbyIsIGVtcHR5
RnVuY3Rpb24pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKCJ0aGlzIHNob3VsZCB0aHJvdyBOT1RfU1VQUE9SVEVEX0VSUiIsIGVtcHR5
RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBF
eGNlcHRpb24gOS4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidGhpcyBzaG91
bGQgdGhyb3cgTk9UX1NVUFBPUlRFRF9FUlIgc2luY2UgaXQgaXMgc3BsaXQgYnkgYSBjb2xvbjog
YXVkaW8iLCBlbXB0eUZ1bmN0aW9uKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JU
RURfRVJSOiBET00gRXhjZXB0aW9uIDkuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbiwgZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1w
dHlGdW5jdGlvbiwgdW5kZWZpbmVkKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgiYXVkaW8sIHZpZGVvIiwgZW1wdHlGdW5jdGlvbiwg
dW5kZWZpbmVkKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KQEAgLTQwLDkgKzQxLDggQEAgUEFT
UyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJhdWRpbywgc29tZXRoaW5nZWxzZSwsdmlk
ZW8iLCBlbXB0eUZ1bmN0aW9uLAogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJh
dWRpbywgdmlkZW8gdXNlciIsIGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoImF1ZGlvLCB2
aWRlbyBlbnZpcm9ubWVudCIsIGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwg
ZW1wdHlGdW5jdGlvbiwgInZpZGVvIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01B
VENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSgidmlkZW8iLCBlbXB0eUZ1bmN0aW9uLCBudWxsKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBuYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIGVtcHR5RnVuY3Rpb24sIG51bGwpIGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIs
IGVtcHR5RnVuY3Rpb24sIHt9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hf
RVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KCJ2aWRlbyIsIGVtcHR5RnVuY3Rpb24sIG9iamVjdFRocm93aW5nRXhjZXB0aW9uKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFT
UyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIGVtcHR5RnVuY3Rpb24sIHRy
dWUpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRp
b24gMTcuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlG
dW5jdGlvbiwgNDIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERP
TSBFeGNlcHRpb24gMTcuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVv
IiwgZW1wdHlGdW5jdGlvbiwgSW5maW5pdHkpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9N
SVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9NZWRpYVN0cmVhbS9zY3JpcHQtdGVzdHMvYXJndW1lbnQtdHlwZXMuanMgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9zY3JpcHQtdGVzdHMvYXJndW1lbnQtdHlwZXMu
anMKaW5kZXggMGU5OWQ2MzA4ZGFmNmFhNDk2YjhhNzdlZTMzOTE1YWMwMDZkMGI5NS4uOGM2NmMz
YzQ2Yjg2MDI4MGRlYjlmNDY4YWE2NzdjZWQ0YzQ3MjZjZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vc2NyaXB0LXRlc3RzL2FyZ3VtZW50LXR5cGVzLmpzCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL3NjcmlwdC10ZXN0cy9hcmd1bWVu
dC10eXBlcy5qcwpAQCAtMjEsNTIgKzIxLDQ1IEBAIGZ1bmN0aW9uIHRlc3QoZXhwcmVzc2lvbiwg
ZXhwcmVzc2lvblNob3VsZFRocm93LCBleHBlY3RlZEV4Y2VwdGlvbikgewogICAgIH0KIH0KIAot
dmFyIHRvU3RyaW5nRXJyb3IgPSBuZXcgRXJyb3IoJ3RvU3RyaW5nIHRocmV3IGV4Y2VwdGlvbicp
OwogdmFyIG5vdFN1cHBvcnRlZEVycm9yID0gbmV3IEVycm9yKCdOT1RfU1VQUE9SVEVEX0VSUjog
RE9NIEV4Y2VwdGlvbiA5Jyk7CiB2YXIgZW1wdHlGdW5jdGlvbiA9IGZ1bmN0aW9uKCkge307CiAK
LWZ1bmN0aW9uIE9iamVjdFRocm93aW5nRXhjZXB0aW9uKCkge307Ci1PYmplY3RUaHJvd2luZ0V4
Y2VwdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKLSAgICB0aHJvdyB0b1N0
cmluZ0Vycm9yOwotfQotdmFyIG9iamVjdFRocm93aW5nRXhjZXB0aW9uID0gbmV3IE9iamVjdFRo
cm93aW5nRXhjZXB0aW9uKCk7Ci0KIC8vIE5vIGFyZ3VtZW50cwotdGVzdCgnbmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSgpJywgdHJ1ZSk7Cit0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNl
ck1lZGlhKCknLCB0cnVlLCBub3RTdXBwb3J0ZWRFcnJvcik7CiAKIC8vIDEgQXJndW1lbnQgKGdl
dFVzZXJNZWRpYSByZXF1aXJlcyBhdCBsZWFzdCAyIGFyZ3VtZW50cykuCi10ZXN0KCduYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKHVuZGVmaW5lZCknLCB0cnVlKTsKLXRlc3QoJ25hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEobnVsbCknLCB0cnVlKTsKLXRlc3QoJ25hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEoe30pJywgdHJ1ZSk7Ci10ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNl
ck1lZGlhKG9iamVjdFRocm93aW5nRXhjZXB0aW9uKScsIHRydWUsIHRvU3RyaW5nRXJyb3IpOwot
dGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iKScsIHRydWUpOwotdGVz
dCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh0cnVlKScsIHRydWUpOwotdGVzdCgnbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSg0MiknLCB0cnVlKTsKLXRlc3QoJ25hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEoSW5maW5pdHkpJywgdHJ1ZSk7Ci10ZXN0KCduYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKC1JbmZpbml0eSknLCB0cnVlKTsKLXRlc3QoJ25hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEoZW1wdHlGdW5jdGlvbiknLCB0cnVlKTsKK3Rlc3QoJ25hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEodW5kZWZpbmVkKScsIHRydWUsIG5vdFN1cHBvcnRlZEVycm9yKTsK
K3Rlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEobnVsbCknLCB0cnVlLCBub3RTdXBw
b3J0ZWRFcnJvcik7Cit0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHt9KScsIHRy
dWUsIG5vdFN1cHBvcnRlZEVycm9yKTsKK3Rlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoInZpZGVvIiknLCBmYWxzZSk7Cit0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KHRydWUpJywgdHJ1ZSwgbm90U3VwcG9ydGVkRXJyb3IpOwordGVzdCgnbmF2aWdhdG9yLndlYmtp
dEdldFVzZXJNZWRpYSg0MiknLCB0cnVlLCBub3RTdXBwb3J0ZWRFcnJvcik7Cit0ZXN0KCduYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKEluZmluaXR5KScsIHRydWUsIG5vdFN1cHBvcnRlZEVy
cm9yKTsKK3Rlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoLUluZmluaXR5KScsIHRy
dWUsIG5vdFN1cHBvcnRlZEVycm9yKTsKK3Rlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoZW1wdHlGdW5jdGlvbiknLCB0cnVlLCBub3RTdXBwb3J0ZWRFcnJvcik7CiAKIC8vIDIgQXJn
dW1lbnRzLgogdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBlbXB0
eUZ1bmN0aW9uKScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
dW5kZWZpbmVkLCBlbXB0eUZ1bmN0aW9uKScsIHRydWUsIG5vdFN1cHBvcnRlZEVycm9yKTsKIHRl
c3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEobnVsbCwgZW1wdHlGdW5jdGlvbiknLCB0
cnVlLCBub3RTdXBwb3J0ZWRFcnJvcik7CiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKHt9LCBlbXB0eUZ1bmN0aW9uKScsIHRydWUsIG5vdFN1cHBvcnRlZEVycm9yKTsKLXRlc3Qo
J25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEob2JqZWN0VGhyb3dpbmdFeGNlcHRpb24sIGVt
cHR5RnVuY3Rpb24pJywgdHJ1ZSwgdG9TdHJpbmdFcnJvcik7CiB0ZXN0KCduYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKHRydWUsIGVtcHR5RnVuY3Rpb24pJywgdHJ1ZSwgbm90U3VwcG9ydGVk
RXJyb3IpOwogdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSg0MiwgZW1wdHlGdW5j
dGlvbiknLCB0cnVlLCBub3RTdXBwb3J0ZWRFcnJvcik7CiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKEluZmluaXR5LCBlbXB0eUZ1bmN0aW9uKScsIHRydWUsIG5vdFN1cHBvcnRl
ZEVycm9yKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoLUluZmluaXR5LCBl
bXB0eUZ1bmN0aW9uKScsIHRydWUsIG5vdFN1cHBvcnRlZEVycm9yKTsKIHRlc3QoJ25hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoZW1wdHlGdW5jdGlvbiwgZW1wdHlGdW5jdGlvbiknLCB0cnVl
LCBub3RTdXBwb3J0ZWRFcnJvcik7Ci0KIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoInZpZGVvIiwgInZpZGVvIiknLCB0cnVlKTsKLXRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEoInZpZGVvIiwgdW5kZWZpbmVkKScsIHRydWUpOwotdGVzdCgnbmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBudWxsKScsIHRydWUpOwordGVzdCgnbmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCB1bmRlZmluZWQpJywgZmFsc2UpOwordGVzdCgn
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBudWxsKScsIGZhbHNlKTsKIHRl
c3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwge30pJywgdHJ1ZSk7Ci10
ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIG9iamVjdFRocm93aW5n
RXhjZXB0aW9uKScsIHRydWUpOwogdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgi
dmlkZW8iLCB0cnVlKScsIHRydWUpOwogdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSgidmlkZW8iLCA0MiknLCB0cnVlKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoInZpZGVvIiwgSW5maW5pdHkpJywgdHJ1ZSk7CiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhKCJ2aWRlbyIsIC1JbmZpbml0eSknLCB0cnVlKTsKK3Rlc3QoJ25hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEoIiwgdGhpcyBzaG91bGQgcGFzcywgIHZpZGVvICAgc3Vib3B0aW9u
cyBoZXJlLCwgczBtZSBydWJpc2hAJCEiLCBlbXB0eUZ1bmN0aW9uKScsIGZhbHNlKTsKK3Rlc3Qo
J25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInRoaXMgc2hvdWxkIHBhc3MsIGF1ZGlvLCB2
aWRlbyBhdWRpbywgYXVkaW8gdmlkZW8sIHZpZGVvIiwgZW1wdHlGdW5jdGlvbiknLCBmYWxzZSk7
Cit0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ0aGlzIHNob3VsZCB0aHJvdyBO
T1RfU1VQUE9SVEVEX0VSUiIsIGVtcHR5RnVuY3Rpb24pJywgdHJ1ZSwgbm90U3VwcG9ydGVkRXJy
b3IpOwordGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidGhpcyBzaG91bGQgdGhy
b3cgTk9UX1NVUFBPUlRFRF9FUlIgc2luY2UgaXQgaXMgc3BsaXQgYnkgYSBjb2xvbjogYXVkaW8i
LCBlbXB0eUZ1bmN0aW9uKScsIHRydWUsIG5vdFN1cHBvcnRlZEVycm9yKTsKIAogLy8gMyBBcmd1
bWVudHMuCiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIGVtcHR5
RnVuY3Rpb24sIGVtcHR5RnVuY3Rpb24pJywgZmFsc2UpOwpAQCAtNzYsOSArNjksOCBAQCB0ZXN0
KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJhdWRpbywgc29tZXRoaW5nZWxzZSwsdmlk
ZW8iLCBlbXB0eUZ1bmN0aW9uLAogdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgi
YXVkaW8sIHZpZGVvIHVzZXIiLCBlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQpJywgZmFsc2UpOwog
dGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgiYXVkaW8sIHZpZGVvIGVudmlyb25t
ZW50IiwgZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkKScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbiwgInZpZGVvIiknLCB0
cnVlKTsKLXRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlG
dW5jdGlvbiwgbnVsbCknLCB0cnVlKTsKK3Rlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbiwgbnVsbCknLCBmYWxzZSk7CiB0ZXN0KCduYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIGVtcHR5RnVuY3Rpb24sIHt9KScsIHRydWUp
OwotdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBlbXB0eUZ1bmN0
aW9uLCBvYmplY3RUaHJvd2luZ0V4Y2VwdGlvbiknLCB0cnVlKTsKIHRlc3QoJ25hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbiwgdHJ1ZSknLCB0cnVlKTsK
IHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlv
biwgNDIpJywgdHJ1ZSk7CiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRl
byIsIGVtcHR5RnVuY3Rpb24sIEluZmluaXR5KScsIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM3NDQ1
OGFkYTU0ZDAzZDI0NWZiMjFjYjMwZTY4MDQ3YzUwMjFmZTEuLjYzYmJlMTRhNmZkZDI2ZThmY2Vk
NWIyN2RhM2RjOGVhODZlN2JmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0w
Ni0xMyAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBnZXRVc2VyTWVkaWEoKSBzaG91
bGQgbm90IHRocm93IHdoZW4gc3VjY2Vzc0NhbGxiYWNrIGlzIG51bGwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNjIyCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05hdmln
YXRvcjo6d2Via2l0R2V0VXNlck1lZGlhKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhOYXZpZ2F0b3JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhOYXZpZ2F0b3I6Ondl
YmtpdEdldFVzZXJNZWRpYUNhbGxiYWNrKToKKwogMjAxMS0wNi0xMiAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAppbmRl
eCAxMDdkYWViMmZjY2FlNDNjNGQ5YjFmNTBhMmEzYTE4YjUyZjIxODMzLi5kYmVkZTZjMDYyNTdi
NGY0ZGI0MzE3NTBjMjNmNTVjMjAwYWVmZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCkBAIC0zOCw2ICszOCwxNCBAQCBKU1ZhbHVl
IEpTTmF2aWdhdG9yOjp3ZWJraXRHZXRVc2VyTWVkaWEoRXhlY1N0YXRlKiBleGVjKQogewogICAg
IC8vIEFyZ3VtZW50czogT3B0aW9ucywgc3VjY2Vzc0NhbGxiYWNrLCAob3B0aW9uYWwpZXJyb3JD
YWxsYmFjawogCisgICAgLy8gRXhwbGljaXRseSBjaGVjayBiYXNpYyBhc3N1bXB0aW9ucyBmb3Ig
Y2xhcml0eS4KKyAgICBpZiAoZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkg
eworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9UX1NVUFBPUlRFRF9FUlIpOworICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50
KDEpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
CiAgICAgU3RyaW5nIG9wdGlvbnMgPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC00Niw3ICs1NCw3IEBAIEpTVmFsdWUgSlNOYXZpZ2F0
b3I6OndlYmtpdEdldFVzZXJNZWRpYShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIFJlZlB0
cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gY3JlYXRl
RnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPihl
eGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDIpLCBDYWxsYmFja0FsbG93VW5kZWZpbmVkKTsKKyAg
ICBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9
IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxs
YmFjaz4oZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpLCBleGVjLT5hcmd1bWVudCgyKSwgQ2FsbGJhY2tBbGxvd1VuZGVmaW5l
ZCB8IENhbGxiYWNrQWxsb3dOdWxsKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0b3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmF2aWdhdG9yQ3VzdG9tLmNwcAppbmRleCBkY2NiMDA1
ODFlZTZiNjJiODlkMzVlNzFjNDRhNTE3YmEwNDA5ZGRmLi5jYzRlNGM1ZmM2MTc2YjgxZTNhMTBj
YjhjYTFkZTNmOGZjMjQwZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhOYXZpZ2F0b3JDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHAKQEAgLTQwLDEwICs0MCwxNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5hdmlnYXRvcjo6
d2Via2l0R2V0VXNlck1lZGlhQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
KyAgICAvLyBBcmd1bWVudHM6IE9wdGlvbnMsIHN1Y2Nlc3NDYWxsYmFjaywgKG9wdGlvbmFsKWVy
cm9yQ2FsbGJhY2sKICAgICBJTkNfU1RBVFMoIkRPTS5OYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKCkiKTsKIAorICAgIC8vIEV4cGxpY2l0bHkgY2hlY2sgYmFzaWMgYXNzdW1wdGlvbnMgZm9y
IGNsYXJpdHkuCisgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMF0pIHx8ICFhcmdzWzBd
LT5Jc1N0cmluZygpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihOT1RfU1VQUE9SVEVEX0VS
Uik7CisgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pKQorICAgICAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOworCiAgICAgdjg6OlRyeUNhdGNoIGV4Y2VwdGlvbkNhdGNoZXI7Ci0g
ICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBvcHRpb25zID0gYXJnc1swXS0+VG9TdHJpbmcoKTsK
KyAgICBTdHJpbmcgb3B0aW9ucyA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKICAgICBpZiAo
ZXhjZXB0aW9uQ2F0Y2hlci5IYXNDYXVnaHQoKSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
ZXhjZXB0aW9uQ2F0Y2hlci5FeGNlcHRpb24oKSk7CiAKQEAgLTUzLDEzICs2MCwxMyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudAogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCiAg
ICAgLy8gQXJndW1lbnQgaXMgb3B0aW9uYWwsIGhlbmNlIHVuZGVmaW5lZCBpcyBhbGxvd2VkLgot
ICAgIFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
ID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8VjhOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNh
bGxiYWNrPihhcmdzWzJdLCBzdWNjZWVkZWQsIENhbGxiYWNrQWxsb3dVbmRlZmluZWQpOworICAg
IFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0g
Y3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8VjhOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxi
YWNrPihhcmdzWzJdLCBzdWNjZWVkZWQsIENhbGxiYWNrQWxsb3dVbmRlZmluZWQgfCBDYWxsYmFj
a0FsbG93TnVsbCk7CiAgICAgaWYgKCFzdWNjZWVkZWQpCiAgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBOYXZpZ2F0b3IqIG5h
dmlnYXRvciA9IFY4TmF2aWdhdG9yOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBuYXZp
Z2F0b3ItPndlYmtpdEdldFVzZXJNZWRpYSh0b1dlYkNvcmVTdHJpbmcob3B0aW9ucyksIHN1Y2Nl
c3NDYWxsYmFjay5yZWxlYXNlKCksIGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBlYyk7CisgICAg
bmF2aWdhdG9yLT53ZWJraXRHZXRVc2VyTWVkaWEob3B0aW9ucywgc3VjY2Vzc0NhbGxiYWNrLnJl
bGVhc2UoKSwgZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIGVjKTsKICAgICByZXR1cm4gdGhyb3dF
cnJvcihlYyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlci5jcHAKaW5kZXggYWU5ZWU4ODYzYjY3N2VlNWM0NDU5ZjFlZjc0YjNiMTRm
OTFmYzg1OS4uM2VmMGY3MDVmM2ExOTE3ZDc2M2M4ZjY1MDY0NmM2YWI3MmM2NTJlYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAK
QEAgLTI3Nyw4ICsyNzcsNyBAQCB2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpnZW5l
cmF0ZVN0cmVhbShjb25zdCBTdHJpbmcmIG9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9
IDA7Ci0gICAgaWYgKCFzdWNjZXNzQ2FsbGJhY2spCi0gICAgICAgIHJldHVybjsKKyAgICBBU1NF
UlQoc3VjY2Vzc0NhbGxiYWNrKTsKIAogICAgIEdlbmVyYXRlU3RyZWFtT3B0aW9uRmxhZ3MgZmxh
Z3MgPSBwYXJzZUdlbmVyYXRlU3RyZWFtT3B0aW9ucyhvcHRpb25zKTsKICAgICBpZiAoIWZsYWdz
KSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97082</attachid>
            <date>2011-06-14 01:12:14 -0700</date>
            <delta_ts>2011-06-15 01:41:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60622-20110614101212.patch</filename>
            <type>text/plain</type>
            <size>18319</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg3ODMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4OTUyOGUyMDkzOTU1ZjlmZjMzZjc3
Y2ZjMDc1ZDQwMzVjNzQ0NGM4Li43NWQwYjI2YWZhNjZiNDJiZjI1MzZjNmI0YTE0ZDEyNDI4ODE0
NjA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDYtMTMgIFRvbW15IFdpZGVuZmx5Y2h0
ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgZ2V0VXNlck1lZGlhKCkgc2hvdWxkIG5vdCB0aHJvdyB3aGVuIHN1Y2Nl
c3NDYWxsYmFjayBpcyBudWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MDYyMgorCisgICAgICAgICogZmFzdC9kb20vTWVkaWFTdHJlYW0vYXJndW1l
bnQtdHlwZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL01lZGlhU3RyZWFtL3Nj
cmlwdC10ZXN0cy9hcmd1bWVudC10eXBlcy5qczoKKwogMjAxMS0wNi0xNCAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW01hYy1XSzJdIFJlYmFzZWxpbmUgZm9y
IHI4ODc1Ny4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL2Fy
Z3VtZW50LXR5cGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3Ry
ZWFtL2FyZ3VtZW50LXR5cGVzLWV4cGVjdGVkLnR4dAppbmRleCA0MDcyODhlOWM1Njg4MGE1Njc4
ZGQ5ZjM1NTBhMWRjZDQyOTM1NDk0Li4wZDYwYWJmNTYyODM2OTc5ODczN2I4OTE1M2QzMGE2MTcy
NjQ0YzI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9hcmd1
bWVudC10eXBlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFT
dHJlYW0vYXJndW1lbnQtdHlwZXMtZXhwZWN0ZWQudHh0CkBAIC0zLDM2ICszLDM3IEBAIFRlc3Rz
IHRoZSBhY2NlcHRhYmxlIHR5cGVzIGZvciBhcmd1bWVudHMgdG8gbmF2aWdhdG9yLmdldFVzZXJN
ZWRpYSBtZXRob2RzLgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgbmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSgpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNN
QVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2Vy
TWVkaWEodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJS
OiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKG51
bGwpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRp
b24gMTcuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe30pIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIG5h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEob2JqZWN0VGhyb3dpbmdFeGNlcHRpb24pIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogdG9TdHJpbmcgdGhyZXcgZXhjZXB0aW9uLgotUEFTUyBuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQ
RV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEodHJ1ZSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VS
UjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSg0
MikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlv
biAxNy4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShJbmZpbml0eSkgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBB
U1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgtSW5maW5pdHkpIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIG5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoZW1wdHlGdW5jdGlvbikgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgbmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYSgpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRF
RF9FUlI6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERP
TSBFeGNlcHRpb24gOS4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShudWxsKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDku
CitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe30pIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgbmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BB
U1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh0cnVlKSB0aHJldyBleGNlcHRpb24gRXJy
b3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIG5hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEoNDIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRF
RF9FUlI6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YShJbmZpbml0eSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9N
IEV4Y2VwdGlvbiA5LgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKC1JbmZpbml0
eSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlv
biA5LgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKGVtcHR5RnVuY3Rpb24pIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4K
IFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBlbXB0eUZ1bmN0aW9u
KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSh1bmRlZmluZWQsIGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9U
X1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYShudWxsLCBlbXB0eUZ1bmN0aW9uKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5P
VF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEoe30sIGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9U
X1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYShvYmplY3RUaHJvd2luZ0V4Y2VwdGlvbiwgZW1wdHlGdW5jdGlvbikgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiB0b1N0cmluZyB0aHJldyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEodHJ1ZSwgZW1wdHlGdW5jdGlvbikgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgogUEFTUyBuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKDQyLCBlbXB0eUZ1bmN0aW9uKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCiBQQVNTIG5hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoSW5maW5pdHksIGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KIFBBU1MgbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgtSW5maW5pdHksIGVtcHR5RnVuY3Rpb24pIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KIFBB
U1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShlbXB0eUZ1bmN0aW9uLCBlbXB0eUZ1bmN0
aW9uKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0
aW9uIDkuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgInZpZGVv
IikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlv
biAxNy4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCB1bmRlZmlu
ZWQpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRp
b24gMTcuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgbnVsbCkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAx
Ny4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCB1bmRlZmluZWQp
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKCJ2aWRlbyIsIG51bGwpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIHt9KSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBuYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIG9iamVjdFRocm93aW5nRXhjZXB0aW9uKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFT
UyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIHRydWUpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIG5h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgNDIpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIG5hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgSW5maW5pdHkpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIG5hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgLUluZmluaXR5KSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKCIsIHRoaXMgc2hvdWxkIHBhc3MsICB2aWRlbyAgIHN1Ym9w
dGlvbnMgaGVyZSwsIHMwbWUgcnViaXNoQCQhIiwgZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInRoaXMgc2hv
dWxkIHBhc3MsIGF1ZGlvLCB2aWRlbyBhdWRpbywgYXVkaW8gdmlkZW8sIHZpZGVvIiwgZW1wdHlG
dW5jdGlvbikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEoInRoaXMgc2hvdWxkIHRocm93IE5PVF9TVVBQT1JURURfRVJSIiwgZW1wdHlG
dW5jdGlvbikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4
Y2VwdGlvbiA5LgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ0aGlzIHNob3Vs
ZCB0aHJvdyBOT1RfU1VQUE9SVEVEX0VSUiBzaW5jZSBpdCBpcyBzcGxpdCBieSBhIGNvbG9uOiBh
dWRpbyIsIGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRF
RF9FUlI6IERPTSBFeGNlcHRpb24gOS4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSgidmlkZW8iLCBlbXB0eUZ1bmN0aW9uLCBlbXB0eUZ1bmN0aW9uKSBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBlbXB0
eUZ1bmN0aW9uLCB1bmRlZmluZWQpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJhdWRpbywgdmlkZW8iLCBlbXB0eUZ1bmN0aW9uLCB1
bmRlZmluZWQpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgpAQCAtNDAsOSArNDEsOCBAQCBQQVNT
IG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoImF1ZGlvLCBzb21ldGhpbmdlbHNlLCx2aWRl
byIsIGVtcHR5RnVuY3Rpb24sCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoImF1
ZGlvLCB2aWRlbyB1c2VyIiwgZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkKSBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgiYXVkaW8sIHZp
ZGVvIGVudmlyb25tZW50IiwgZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkKSBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBl
bXB0eUZ1bmN0aW9uLCAidmlkZW8iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFU
Q0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKCJ2aWRlbyIsIGVtcHR5RnVuY3Rpb24sIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
VFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIG5hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbiwgbnVsbCkgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwg
ZW1wdHlGdW5jdGlvbiwge30pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9F
UlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
InZpZGVvIiwgZW1wdHlGdW5jdGlvbiwgb2JqZWN0VGhyb3dpbmdFeGNlcHRpb24pIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNT
IG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbiwgdHJ1
ZSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlv
biAxNy4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBlbXB0eUZ1
bmN0aW9uLCA0MikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9N
IEV4Y2VwdGlvbiAxNy4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8i
LCBlbXB0eUZ1bmN0aW9uLCBJbmZpbml0eSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01J
U01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL01lZGlhU3RyZWFtL3NjcmlwdC10ZXN0cy9hcmd1bWVudC10eXBlcy5qcyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL01lZGlhU3RyZWFtL3NjcmlwdC10ZXN0cy9hcmd1bWVudC10eXBlcy5q
cwppbmRleCAwZTk5ZDYzMDhkYWY2YWE0OTZiOGE3N2VlMzM5MTVhYzAwNmQwYjk1Li44YzY2YzNj
NDZiODYwMjgwZGViOWY0NjhhYTY3N2NlZDRjNDcyNmNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9NZWRpYVN0cmVhbS9zY3JpcHQtdGVzdHMvYXJndW1lbnQtdHlwZXMuanMKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0vc2NyaXB0LXRlc3RzL2FyZ3VtZW50
LXR5cGVzLmpzCkBAIC0yMSw1MiArMjEsNDUgQEAgZnVuY3Rpb24gdGVzdChleHByZXNzaW9uLCBl
eHByZXNzaW9uU2hvdWxkVGhyb3csIGV4cGVjdGVkRXhjZXB0aW9uKSB7CiAgICAgfQogfQogCi12
YXIgdG9TdHJpbmdFcnJvciA9IG5ldyBFcnJvcigndG9TdHJpbmcgdGhyZXcgZXhjZXB0aW9uJyk7
CiB2YXIgbm90U3VwcG9ydGVkRXJyb3IgPSBuZXcgRXJyb3IoJ05PVF9TVVBQT1JURURfRVJSOiBE
T00gRXhjZXB0aW9uIDknKTsKIHZhciBlbXB0eUZ1bmN0aW9uID0gZnVuY3Rpb24oKSB7fTsKIAot
ZnVuY3Rpb24gT2JqZWN0VGhyb3dpbmdFeGNlcHRpb24oKSB7fTsKLU9iamVjdFRocm93aW5nRXhj
ZXB0aW9uLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgewotICAgIHRocm93IHRvU3Ry
aW5nRXJyb3I7Ci19Ci12YXIgb2JqZWN0VGhyb3dpbmdFeGNlcHRpb24gPSBuZXcgT2JqZWN0VGhy
b3dpbmdFeGNlcHRpb24oKTsKLQogLy8gTm8gYXJndW1lbnRzCi10ZXN0KCduYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKCknLCB0cnVlKTsKK3Rlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2Vy
TWVkaWEoKScsIHRydWUsIG5vdFN1cHBvcnRlZEVycm9yKTsKIAogLy8gMSBBcmd1bWVudCAoZ2V0
VXNlck1lZGlhIHJlcXVpcmVzIGF0IGxlYXN0IDIgYXJndW1lbnRzKS4KLXRlc3QoJ25hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEodW5kZWZpbmVkKScsIHRydWUpOwotdGVzdCgnbmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYShudWxsKScsIHRydWUpOwotdGVzdCgnbmF2aWdhdG9yLndlYmtp
dEdldFVzZXJNZWRpYSh7fSknLCB0cnVlKTsKLXRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2Vy
TWVkaWEob2JqZWN0VGhyb3dpbmdFeGNlcHRpb24pJywgdHJ1ZSwgdG9TdHJpbmdFcnJvcik7Ci10
ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIpJywgdHJ1ZSk7Ci10ZXN0
KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHRydWUpJywgdHJ1ZSk7Ci10ZXN0KCduYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKDQyKScsIHRydWUpOwotdGVzdCgnbmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYShJbmZpbml0eSknLCB0cnVlKTsKLXRlc3QoJ25hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEoLUluZmluaXR5KScsIHRydWUpOwotdGVzdCgnbmF2aWdhdG9yLndlYmtp
dEdldFVzZXJNZWRpYShlbXB0eUZ1bmN0aW9uKScsIHRydWUpOwordGVzdCgnbmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSh1bmRlZmluZWQpJywgdHJ1ZSwgbm90U3VwcG9ydGVkRXJyb3IpOwor
dGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShudWxsKScsIHRydWUsIG5vdFN1cHBv
cnRlZEVycm9yKTsKK3Rlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe30pJywgdHJ1
ZSwgbm90U3VwcG9ydGVkRXJyb3IpOwordGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSgidmlkZW8iKScsIGZhbHNlKTsKK3Rlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
dHJ1ZSknLCB0cnVlLCBub3RTdXBwb3J0ZWRFcnJvcik7Cit0ZXN0KCduYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKDQyKScsIHRydWUsIG5vdFN1cHBvcnRlZEVycm9yKTsKK3Rlc3QoJ25hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoSW5maW5pdHkpJywgdHJ1ZSwgbm90U3VwcG9ydGVkRXJy
b3IpOwordGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgtSW5maW5pdHkpJywgdHJ1
ZSwgbm90U3VwcG9ydGVkRXJyb3IpOwordGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YShlbXB0eUZ1bmN0aW9uKScsIHRydWUsIG5vdFN1cHBvcnRlZEVycm9yKTsKIAogLy8gMiBBcmd1
bWVudHMuCiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIGVtcHR5
RnVuY3Rpb24pJywgZmFsc2UpOwogdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh1
bmRlZmluZWQsIGVtcHR5RnVuY3Rpb24pJywgdHJ1ZSwgbm90U3VwcG9ydGVkRXJyb3IpOwogdGVz
dCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShudWxsLCBlbXB0eUZ1bmN0aW9uKScsIHRy
dWUsIG5vdFN1cHBvcnRlZEVycm9yKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoe30sIGVtcHR5RnVuY3Rpb24pJywgdHJ1ZSwgbm90U3VwcG9ydGVkRXJyb3IpOwotdGVzdCgn
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShvYmplY3RUaHJvd2luZ0V4Y2VwdGlvbiwgZW1w
dHlGdW5jdGlvbiknLCB0cnVlLCB0b1N0cmluZ0Vycm9yKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEodHJ1ZSwgZW1wdHlGdW5jdGlvbiknLCB0cnVlLCBub3RTdXBwb3J0ZWRF
cnJvcik7CiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKDQyLCBlbXB0eUZ1bmN0
aW9uKScsIHRydWUsIG5vdFN1cHBvcnRlZEVycm9yKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEoSW5maW5pdHksIGVtcHR5RnVuY3Rpb24pJywgdHJ1ZSwgbm90U3VwcG9ydGVk
RXJyb3IpOwogdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgtSW5maW5pdHksIGVt
cHR5RnVuY3Rpb24pJywgdHJ1ZSwgbm90U3VwcG9ydGVkRXJyb3IpOwogdGVzdCgnbmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYShlbXB0eUZ1bmN0aW9uLCBlbXB0eUZ1bmN0aW9uKScsIHRydWUs
IG5vdFN1cHBvcnRlZEVycm9yKTsKLQogdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSgidmlkZW8iLCAidmlkZW8iKScsIHRydWUpOwotdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYSgidmlkZW8iLCB1bmRlZmluZWQpJywgdHJ1ZSk7Ci10ZXN0KCduYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIG51bGwpJywgdHJ1ZSk7Cit0ZXN0KCduYXZpZ2F0b3Iu
d2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIHVuZGVmaW5lZCknLCBmYWxzZSk7Cit0ZXN0KCdu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIG51bGwpJywgZmFsc2UpOwogdGVz
dCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCB7fSknLCB0cnVlKTsKLXRl
c3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgb2JqZWN0VGhyb3dpbmdF
eGNlcHRpb24pJywgdHJ1ZSk7CiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2
aWRlbyIsIHRydWUpJywgdHJ1ZSk7CiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KCJ2aWRlbyIsIDQyKScsIHRydWUpOwogdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSgidmlkZW8iLCBJbmZpbml0eSknLCB0cnVlKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEoInZpZGVvIiwgLUluZmluaXR5KScsIHRydWUpOwordGVzdCgnbmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSgiLCB0aGlzIHNob3VsZCBwYXNzLCAgdmlkZW8gICBzdWJvcHRpb25z
IGhlcmUsLCBzMG1lIHJ1YmlzaEAkISIsIGVtcHR5RnVuY3Rpb24pJywgZmFsc2UpOwordGVzdCgn
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidGhpcyBzaG91bGQgcGFzcywgYXVkaW8sIHZp
ZGVvIGF1ZGlvLCBhdWRpbyB2aWRlbywgdmlkZW8iLCBlbXB0eUZ1bmN0aW9uKScsIGZhbHNlKTsK
K3Rlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInRoaXMgc2hvdWxkIHRocm93IE5P
VF9TVVBQT1JURURfRVJSIiwgZW1wdHlGdW5jdGlvbiknLCB0cnVlLCBub3RTdXBwb3J0ZWRFcnJv
cik7Cit0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ0aGlzIHNob3VsZCB0aHJv
dyBOT1RfU1VQUE9SVEVEX0VSUiBzaW5jZSBpdCBpcyBzcGxpdCBieSBhIGNvbG9uOiBhdWRpbyIs
IGVtcHR5RnVuY3Rpb24pJywgdHJ1ZSwgbm90U3VwcG9ydGVkRXJyb3IpOwogCiAvLyAzIEFyZ3Vt
ZW50cy4KIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlG
dW5jdGlvbiwgZW1wdHlGdW5jdGlvbiknLCBmYWxzZSk7CkBAIC03Niw5ICs2OSw4IEBAIHRlc3Qo
J25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoImF1ZGlvLCBzb21ldGhpbmdlbHNlLCx2aWRl
byIsIGVtcHR5RnVuY3Rpb24sCiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJh
dWRpbywgdmlkZW8gdXNlciIsIGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCknLCBmYWxzZSk7CiB0
ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJhdWRpbywgdmlkZW8gZW52aXJvbm1l
bnQiLCBlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQpJywgZmFsc2UpOwogdGVzdCgnbmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBlbXB0eUZ1bmN0aW9uLCAidmlkZW8iKScsIHRy
dWUpOwotdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBlbXB0eUZ1
bmN0aW9uLCBudWxsKScsIHRydWUpOwordGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSgidmlkZW8iLCBlbXB0eUZ1bmN0aW9uLCBudWxsKScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbiwge30pJywgdHJ1ZSk7
Ci10ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIGVtcHR5RnVuY3Rp
b24sIG9iamVjdFRocm93aW5nRXhjZXB0aW9uKScsIHRydWUpOwogdGVzdCgnbmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBlbXB0eUZ1bmN0aW9uLCB0cnVlKScsIHRydWUpOwog
dGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBlbXB0eUZ1bmN0aW9u
LCA0MiknLCB0cnVlKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVv
IiwgZW1wdHlGdW5jdGlvbiwgSW5maW5pdHkpJywgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjg1Y2Zk
MmE5NzdkYTk0ZTY0YTQ4NjlkNjE2MDJjMmI2ZWMxNDdkZC4uNDhlYTY4NTJhNmYyYjQ1YjYwOGI1
YzRjYTRiZDc4MDRlOWQ4NjVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTA2
LTEzICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGdldFVzZXJNZWRpYSgpIHNob3Vs
ZCBub3QgdGhyb3cgd2hlbiBzdWNjZXNzQ2FsbGJhY2sgaXMgbnVsbAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA2MjIKKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTmF2aWdh
dG9yOjp3ZWJraXRHZXRVc2VyTWVkaWEpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OE5hdmlnYXRvckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE5hdmlnYXRvcjo6d2Vi
a2l0R2V0VXNlck1lZGlhQ2FsbGJhY2spOgorCiAyMDExLTA2LTEzICBLZW50IFRhbXVyYSAgPHRr
ZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbRUZMXSBUaGUgc2Vjb25kIHRyeSB0byBmaXgg
YSBidWlsZCBicmVhay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TmF2aWdhdG9yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdh
dG9yQ3VzdG9tLmNwcAppbmRleCAxMDdkYWViMmZjY2FlNDNjNGQ5YjFmNTBhMmEzYTE4YjUyZjIx
ODMzLi5kYmVkZTZjMDYyNTdiNGY0ZGI0MzE3NTBjMjNmNTVjMjAwYWVmZDc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCkBAIC0zOCw2
ICszOCwxNCBAQCBKU1ZhbHVlIEpTTmF2aWdhdG9yOjp3ZWJraXRHZXRVc2VyTWVkaWEoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIC8vIEFyZ3VtZW50czogT3B0aW9ucywgc3VjY2Vzc0NhbGxiYWNr
LCAob3B0aW9uYWwpZXJyb3JDYWxsYmFjawogCisgICAgLy8gRXhwbGljaXRseSBjaGVjayBiYXNp
YyBhc3N1bXB0aW9ucyBmb3IgY2xhcml0eS4KKyAgICBpZiAoZXhlYy0+YXJndW1lbnQoMCkuaXNV
bmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9UX1NV
UFBPUlRFRF9FUlIpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAg
aWYgKGV4ZWMtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworCiAgICAgU3RyaW5nIG9wdGlvbnMgPSB1c3RyaW5nVG9TdHJpbmco
ZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC00Niw3ICs1NCw3IEBA
IEpTVmFsdWUgSlNOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYShFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIAotICAgIFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNOYXZpZ2F0b3JVc2VyTWVk
aWFFcnJvckNhbGxiYWNrPihleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDIpLCBDYWxsYmFja0Fs
bG93VW5kZWZpbmVkKTsKKyAgICBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTTmF2aWdhdG9y
VXNlck1lZGlhRXJyb3JDYWxsYmFjaz4oZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT5hcmd1bWVudCgyKSwgQ2Fs
bGJhY2tBbGxvd1VuZGVmaW5lZCB8IENhbGxiYWNrQWxsb3dOdWxsKTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0b3JDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmF2aWdhdG9yQ3VzdG9t
LmNwcAppbmRleCBkY2NiMDA1ODFlZTZiNjJiODlkMzVlNzFjNDRhNTE3YmEwNDA5ZGRmLi5jYzRl
NGM1ZmM2MTc2YjgxZTNhMTBjYjhjYTFkZTNmOGZjMjQwZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0b3JDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHAKQEAg
LTQwLDEwICs0MCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOE5hdmlnYXRvcjo6d2Via2l0R2V0VXNlck1lZGlhQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKKyAgICAvLyBBcmd1bWVudHM6IE9wdGlvbnMsIHN1Y2Nlc3NDYWxs
YmFjaywgKG9wdGlvbmFsKWVycm9yQ2FsbGJhY2sKICAgICBJTkNfU1RBVFMoIkRPTS5OYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKCkiKTsKIAorICAgIC8vIEV4cGxpY2l0bHkgY2hlY2sgYmFz
aWMgYXNzdW1wdGlvbnMgZm9yIGNsYXJpdHkuCisgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGFy
Z3NbMF0pIHx8ICFhcmdzWzBdLT5Jc1N0cmluZygpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cihOT1RfU1VQUE9SVEVEX0VSUik7CisgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0p
KQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCiAgICAgdjg6OlRyeUNhdGNoIGV4
Y2VwdGlvbkNhdGNoZXI7Ci0gICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBvcHRpb25zID0gYXJn
c1swXS0+VG9TdHJpbmcoKTsKKyAgICBTdHJpbmcgb3B0aW9ucyA9IHRvV2ViQ29yZVN0cmluZyhh
cmdzWzBdKTsKICAgICBpZiAoZXhjZXB0aW9uQ2F0Y2hlci5IYXNDYXVnaHQoKSkKICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoZXhjZXB0aW9uQ2F0Y2hlci5FeGNlcHRpb24oKSk7CiAKQEAgLTUz
LDEzICs2MCwxMyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOYXZpZ2F0b3I6OndlYmtpdEdl
dFVzZXJNZWRpYUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudAogICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwogCiAgICAgLy8gQXJndW1lbnQgaXMgb3B0aW9uYWwsIGhlbmNlIHVuZGVm
aW5lZCBpcyBhbGxvd2VkLgotICAgIFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8VjhOYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPihhcmdzWzJdLCBzdWNjZWVkZWQsIENhbGxiYWNrQWxs
b3dVbmRlZmluZWQpOworICAgIFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8VjhOYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvckNhbGxiYWNrPihhcmdzWzJdLCBzdWNjZWVkZWQsIENhbGxiYWNrQWxsb3dV
bmRlZmluZWQgfCBDYWxsYmFja0FsbG93TnVsbCk7CiAgICAgaWYgKCFzdWNjZWVkZWQpCiAgICAg
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICBOYXZpZ2F0b3IqIG5hdmlnYXRvciA9IFY4TmF2aWdhdG9yOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKLSAgICBuYXZpZ2F0b3ItPndlYmtpdEdldFVzZXJNZWRpYSh0b1dlYkNvcmVTdHJp
bmcob3B0aW9ucyksIHN1Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCksIGVycm9yQ2FsbGJhY2sucmVs
ZWFzZSgpLCBlYyk7CisgICAgbmF2aWdhdG9yLT53ZWJraXRHZXRVc2VyTWVkaWEob3B0aW9ucywg
c3VjY2Vzc0NhbGxiYWNrLnJlbGVhc2UoKSwgZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIGVjKTsK
ICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAKaW5kZXggYWU5ZWU4ODYzYjY3N2Vl
NWM0NDU5ZjFlZjc0YjNiMTRmOTFmYzg1OS4uM2VmMGY3MDVmM2ExOTE3ZDc2M2M4ZjY1MDY0NmM2
YWI3MmM2NTJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlci5jcHAKQEAgLTI3Nyw4ICsyNzcsNyBAQCB2b2lkIE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyOjpnZW5lcmF0ZVN0cmVhbShjb25zdCBTdHJpbmcmIG9wdGlvbnMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBlYyA9IDA7Ci0gICAgaWYgKCFzdWNjZXNzQ2FsbGJhY2spCi0gICAgICAg
IHJldHVybjsKKyAgICBBU1NFUlQoc3VjY2Vzc0NhbGxiYWNrKTsKIAogICAgIEdlbmVyYXRlU3Ry
ZWFtT3B0aW9uRmxhZ3MgZmxhZ3MgPSBwYXJzZUdlbmVyYXRlU3RyZWFtT3B0aW9ucyhvcHRpb25z
KTsKICAgICBpZiAoIWZsYWdzKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97253</attachid>
            <date>2011-06-15 01:41:15 -0700</date>
            <delta_ts>2012-03-20 00:44:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60622-20110615104113.patch</filename>
            <type>text/plain</type>
            <size>17478</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg5MTIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMzQ2ZGQxOTUwM2RhYjMxMTRhNzRi
NTQ0YmU1MDcwZGJmNzgyYjdjLi5mNDQyNTMxZWE3MmExNWZjYThmYmRlYWNkNGQyM2RmNTJiZjMz
NWQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDYtMTMgIFRvbW15IFdpZGVuZmx5Y2h0
ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgZ2V0VXNlck1lZGlhKCkgc2hvdWxkIG5vdCB0aHJvdyB3aGVuIHN1Y2Nl
c3NDYWxsYmFjayBpcyBudWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MDYyMgorCisgICAgICAgICogZmFzdC9kb20vTWVkaWFTdHJlYW0vYXJndW1l
bnQtdHlwZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL01lZGlhU3RyZWFtL3Nj
cmlwdC10ZXN0cy9hcmd1bWVudC10eXBlcy5qczoKKwogMjAxMS0wNi0xNSAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1dpbl0gVXBkYXRlIGV4cGVjdGF0aW9u
IGZvciByODg3NTcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVh
bS9hcmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRp
YVN0cmVhbS9hcmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQKaW5kZXggNDA3Mjg4ZTljNTY4ODBh
NTY3OGRkOWYzNTUwYTFkY2Q0MjkzNTQ5NC4uZmRmYTA1NTEzOGI4NTg3NmYwZjQ3MGQyNTIzZWM4
ZDA3OGU0MmVmZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFTdHJlYW0v
YXJndW1lbnQtdHlwZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL01l
ZGlhU3RyZWFtL2FyZ3VtZW50LXR5cGVzLWV4cGVjdGVkLnR4dApAQCAtMywzNiArMywzNyBAQCBU
ZXN0cyB0aGUgYWNjZXB0YWJsZSB0eXBlcyBmb3IgYXJndW1lbnRzIHRvIG5hdmlnYXRvci5nZXRV
c2VyTWVkaWEgbWV0aG9kcy4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIG5h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENI
X0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YShudWxsKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhj
ZXB0aW9uIDE3LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHt9KSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFT
UyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKG9iamVjdFRocm93aW5nRXhjZXB0aW9uKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IHRvU3RyaW5nIHRocmV3IGV4Y2VwdGlvbi4KLVBBU1MgbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBuYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKHRydWUpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRD
SF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoNDIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoSW5maW5pdHkpIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcu
Ci1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoLUluZmluaXR5KSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIG5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mg
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh1bmRlZmluZWQpIGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKG51bGwpIGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHt9KSBk
aWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSgidmlkZW8iKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtp
dEdldFVzZXJNZWRpYSh0cnVlKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSg0MikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNT
IG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoSW5maW5pdHkpIGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKC1JbmZpbml0eSkgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
ZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEodW5kZWZpbmVkLCBl
bXB0eUZ1bmN0aW9uKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBE
T00gRXhjZXB0aW9uIDkuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEobnVsbCwg
ZW1wdHlGdW5jdGlvbikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjog
RE9NIEV4Y2VwdGlvbiA5LgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHt9LCBl
bXB0eUZ1bmN0aW9uKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBE
T00gRXhjZXB0aW9uIDkuCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEob2JqZWN0
VGhyb3dpbmdFeGNlcHRpb24sIGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
dG9TdHJpbmcgdGhyZXcgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKHRydWUsIGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBP
UlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSg0MiwgZW1wdHlGdW5jdGlvbikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9S
VEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKEluZmluaXR5LCBlbXB0eUZ1bmN0aW9uKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9T
VVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEoLUluZmluaXR5LCBlbXB0eUZ1bmN0aW9uKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCiBQQVNTIG5hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEoZW1wdHlGdW5jdGlvbiwgZW1wdHlGdW5jdGlvbikgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgogUEFTUyBuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsICJ2aWRlbyIpIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIG5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgdW5kZWZpbmVkKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIG51bGwpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIG5hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgdW5kZWZpbmVkKSBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBudWxs
KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSgidmlkZW8iLCB7fSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VS
UjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgi
dmlkZW8iLCBvYmplY3RUaHJvd2luZ0V4Y2VwdGlvbikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBU
WVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1MgbmF2aWdhdG9yLndlYmtp
dEdldFVzZXJNZWRpYSgidmlkZW8iLCB0cnVlKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhKCJ2aWRlbyIsIDQyKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFU
Q0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKCJ2aWRlbyIsIEluZmluaXR5KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFU
Q0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKCJ2aWRlbyIsIC1JbmZpbml0eSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01B
VENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSgiLCB0aGlzIHNob3VsZCBwYXNzLCAgdmlkZW8gICBzdWJvcHRpb25zIGhlcmUsLCBzMG1l
IHJ1YmlzaEAkISIsIGVtcHR5RnVuY3Rpb24pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFT
UyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ0aGlzIHNob3VsZCBwYXNzLCBhdWRpbywg
dmlkZW8gYXVkaW8sIGF1ZGlvIHZpZGVvLCB2aWRlbyIsIGVtcHR5RnVuY3Rpb24pIGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ0aGlz
IHNob3VsZCB0aHJvdyBOT1RfU1VQUE9SVEVEX0VSUiIsIGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KK1BBU1Mg
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidGhpcyBzaG91bGQgdGhyb3cgTk9UX1NVUFBP
UlRFRF9FUlIgc2luY2UgaXQgaXMgc3BsaXQgYnkgYSBjb2xvbjogYXVkaW8iLCBlbXB0eUZ1bmN0
aW9uKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0
aW9uIDkuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlG
dW5jdGlvbiwgZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbiwgdW5kZWZp
bmVkKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYSgiYXVkaW8sIHZpZGVvIiwgZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkKSBkaWQgbm90
IHRocm93IGV4Y2VwdGlvbi4KQEAgLTQwLDkgKzQxLDggQEAgUEFTUyBuYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKCJhdWRpbywgc29tZXRoaW5nZWxzZSwsdmlkZW8iLCBlbXB0eUZ1bmN0aW9u
LAogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJhdWRpbywgdmlkZW8gdXNlciIs
IGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNT
IG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoImF1ZGlvLCB2aWRlbyBlbnZpcm9ubWVudCIs
IGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNT
IG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbiwgInZp
ZGVvIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxNy4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBlbXB0
eUZ1bmN0aW9uLCBudWxsKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJS
OiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2
aWRlbyIsIGVtcHR5RnVuY3Rpb24sIG51bGwpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFT
UyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIGVtcHR5RnVuY3Rpb24sIHt9
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9u
IDE3LgotUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIGVtcHR5RnVu
Y3Rpb24sIG9iamVjdFRocm93aW5nRXhjZXB0aW9uKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZ
UEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKCJ2aWRlbyIsIGVtcHR5RnVuY3Rpb24sIHRydWUpIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIG5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbiwgNDIpIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQ
QVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbiwg
SW5maW5pdHkpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBF
eGNlcHRpb24gMTcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NZWRpYVN0cmVh
bS9zY3JpcHQtdGVzdHMvYXJndW1lbnQtdHlwZXMuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9N
ZWRpYVN0cmVhbS9zY3JpcHQtdGVzdHMvYXJndW1lbnQtdHlwZXMuanMKaW5kZXggMGU5OWQ2MzA4
ZGFmNmFhNDk2YjhhNzdlZTMzOTE1YWMwMDZkMGI5NS4uZTUzMzI2OGRiYTFkN2ZiOGJjMDA5NGZi
NGQzYzBlMDhmMzYxZWVkZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTWVkaWFT
dHJlYW0vc2NyaXB0LXRlc3RzL2FyZ3VtZW50LXR5cGVzLmpzCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL01lZGlhU3RyZWFtL3NjcmlwdC10ZXN0cy9hcmd1bWVudC10eXBlcy5qcwpAQCAtMjEs
NTIgKzIxLDQ1IEBAIGZ1bmN0aW9uIHRlc3QoZXhwcmVzc2lvbiwgZXhwcmVzc2lvblNob3VsZFRo
cm93LCBleHBlY3RlZEV4Y2VwdGlvbikgewogICAgIH0KIH0KIAotdmFyIHRvU3RyaW5nRXJyb3Ig
PSBuZXcgRXJyb3IoJ3RvU3RyaW5nIHRocmV3IGV4Y2VwdGlvbicpOwogdmFyIG5vdFN1cHBvcnRl
ZEVycm9yID0gbmV3IEVycm9yKCdOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5Jyk7
CiB2YXIgZW1wdHlGdW5jdGlvbiA9IGZ1bmN0aW9uKCkge307CiAKLWZ1bmN0aW9uIE9iamVjdFRo
cm93aW5nRXhjZXB0aW9uKCkge307Ci1PYmplY3RUaHJvd2luZ0V4Y2VwdGlvbi5wcm90b3R5cGUu
dG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKLSAgICB0aHJvdyB0b1N0cmluZ0Vycm9yOwotfQotdmFy
IG9iamVjdFRocm93aW5nRXhjZXB0aW9uID0gbmV3IE9iamVjdFRocm93aW5nRXhjZXB0aW9uKCk7
Ci0KIC8vIE5vIGFyZ3VtZW50cwotdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgp
JywgdHJ1ZSk7Cit0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCknLCBmYWxzZSk7
CiAKIC8vIDEgQXJndW1lbnQgKGdldFVzZXJNZWRpYSByZXF1aXJlcyBhdCBsZWFzdCAyIGFyZ3Vt
ZW50cykuCi10ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHVuZGVmaW5lZCknLCB0
cnVlKTsKLXRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEobnVsbCknLCB0cnVlKTsK
LXRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe30pJywgdHJ1ZSk7Ci10ZXN0KCdu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKG9iamVjdFRocm93aW5nRXhjZXB0aW9uKScsIHRy
dWUsIHRvU3RyaW5nRXJyb3IpOwotdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgi
dmlkZW8iKScsIHRydWUpOwotdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh0cnVl
KScsIHRydWUpOwotdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSg0MiknLCB0cnVl
KTsKLXRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoSW5maW5pdHkpJywgdHJ1ZSk7
Ci10ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKC1JbmZpbml0eSknLCB0cnVlKTsK
LXRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoZW1wdHlGdW5jdGlvbiknLCB0cnVl
KTsKK3Rlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEodW5kZWZpbmVkKScsIGZhbHNl
KTsKK3Rlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEobnVsbCknLCBmYWxzZSk7Cit0
ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHt9KScsIGZhbHNlKTsKK3Rlc3QoJ25h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiknLCBmYWxzZSk7Cit0ZXN0KCduYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHRydWUpJywgZmFsc2UpOwordGVzdCgnbmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYSg0MiknLCBmYWxzZSk7Cit0ZXN0KCduYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKEluZmluaXR5KScsIGZhbHNlKTsKK3Rlc3QoJ25hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEoLUluZmluaXR5KScsIGZhbHNlKTsKK3Rlc3QoJ25hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEoZW1wdHlGdW5jdGlvbiknLCBmYWxzZSk7CiAKIC8vIDIgQXJndW1lbnRzLgog
dGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBlbXB0eUZ1bmN0aW9u
KScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEodW5kZWZpbmVk
LCBlbXB0eUZ1bmN0aW9uKScsIHRydWUsIG5vdFN1cHBvcnRlZEVycm9yKTsKIHRlc3QoJ25hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEobnVsbCwgZW1wdHlGdW5jdGlvbiknLCB0cnVlLCBub3RT
dXBwb3J0ZWRFcnJvcik7CiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHt9LCBl
bXB0eUZ1bmN0aW9uKScsIHRydWUsIG5vdFN1cHBvcnRlZEVycm9yKTsKLXRlc3QoJ25hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEob2JqZWN0VGhyb3dpbmdFeGNlcHRpb24sIGVtcHR5RnVuY3Rp
b24pJywgdHJ1ZSwgdG9TdHJpbmdFcnJvcik7CiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNl
ck1lZGlhKHRydWUsIGVtcHR5RnVuY3Rpb24pJywgdHJ1ZSwgbm90U3VwcG9ydGVkRXJyb3IpOwog
dGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSg0MiwgZW1wdHlGdW5jdGlvbiknLCB0
cnVlLCBub3RTdXBwb3J0ZWRFcnJvcik7CiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKEluZmluaXR5LCBlbXB0eUZ1bmN0aW9uKScsIHRydWUsIG5vdFN1cHBvcnRlZEVycm9yKTsK
IHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoLUluZmluaXR5LCBlbXB0eUZ1bmN0
aW9uKScsIHRydWUsIG5vdFN1cHBvcnRlZEVycm9yKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEoZW1wdHlGdW5jdGlvbiwgZW1wdHlGdW5jdGlvbiknLCB0cnVlLCBub3RTdXBw
b3J0ZWRFcnJvcik7Ci0KIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVv
IiwgInZpZGVvIiknLCB0cnVlKTsKLXRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
InZpZGVvIiwgdW5kZWZpbmVkKScsIHRydWUpOwotdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVz
ZXJNZWRpYSgidmlkZW8iLCBudWxsKScsIHRydWUpOwordGVzdCgnbmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYSgidmlkZW8iLCB1bmRlZmluZWQpJywgZmFsc2UpOwordGVzdCgnbmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBudWxsKScsIGZhbHNlKTsKIHRlc3QoJ25hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwge30pJywgdHJ1ZSk7Ci10ZXN0KCduYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIG9iamVjdFRocm93aW5nRXhjZXB0aW9u
KScsIHRydWUpOwogdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCB0
cnVlKScsIHRydWUpOwogdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8i
LCA0MiknLCB0cnVlKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVv
IiwgSW5maW5pdHkpJywgdHJ1ZSk7CiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KCJ2aWRlbyIsIC1JbmZpbml0eSknLCB0cnVlKTsKK3Rlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEoIiwgdGhpcyBzaG91bGQgcGFzcywgIHZpZGVvICAgc3Vib3B0aW9ucyBoZXJlLCwg
czBtZSBydWJpc2hAJCEiLCBlbXB0eUZ1bmN0aW9uKScsIGZhbHNlKTsKK3Rlc3QoJ25hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoInRoaXMgc2hvdWxkIHBhc3MsIGF1ZGlvLCB2aWRlbyBhdWRp
bywgYXVkaW8gdmlkZW8sIHZpZGVvIiwgZW1wdHlGdW5jdGlvbiknLCBmYWxzZSk7Cit0ZXN0KCdu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ0aGlzIHNob3VsZCB0aHJvdyBOT1RfU1VQUE9S
VEVEX0VSUiIsIGVtcHR5RnVuY3Rpb24pJywgdHJ1ZSwgbm90U3VwcG9ydGVkRXJyb3IpOwordGVz
dCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidGhpcyBzaG91bGQgdGhyb3cgTk9UX1NV
UFBPUlRFRF9FUlIgc2luY2UgaXQgaXMgc3BsaXQgYnkgYSBjb2xvbjogYXVkaW8iLCBlbXB0eUZ1
bmN0aW9uKScsIHRydWUsIG5vdFN1cHBvcnRlZEVycm9yKTsKIAogLy8gMyBBcmd1bWVudHMuCiB0
ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIGVtcHR5RnVuY3Rpb24s
IGVtcHR5RnVuY3Rpb24pJywgZmFsc2UpOwpAQCAtNzYsOSArNjksOCBAQCB0ZXN0KCduYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKCJhdWRpbywgc29tZXRoaW5nZWxzZSwsdmlkZW8iLCBlbXB0
eUZ1bmN0aW9uLAogdGVzdCgnbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgiYXVkaW8sIHZp
ZGVvIHVzZXIiLCBlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQpJywgZmFsc2UpOwogdGVzdCgnbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgiYXVkaW8sIHZpZGVvIGVudmlyb25tZW50IiwgZW1w
dHlGdW5jdGlvbiwgdW5kZWZpbmVkKScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbiwgInZpZGVvIiknLCB0cnVlKTsKLXRl
c3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbiwg
bnVsbCknLCB0cnVlKTsKK3Rlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVv
IiwgZW1wdHlGdW5jdGlvbiwgbnVsbCknLCBmYWxzZSk7CiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKCJ2aWRlbyIsIGVtcHR5RnVuY3Rpb24sIHt9KScsIHRydWUpOwotdGVzdCgn
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBlbXB0eUZ1bmN0aW9uLCBvYmpl
Y3RUaHJvd2luZ0V4Y2VwdGlvbiknLCB0cnVlKTsKIHRlc3QoJ25hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbiwgdHJ1ZSknLCB0cnVlKTsKIHRlc3QoJ25h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZW1wdHlGdW5jdGlvbiwgNDIpJywg
dHJ1ZSk7CiB0ZXN0KCduYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIGVtcHR5
RnVuY3Rpb24sIEluZmluaXR5KScsIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ0NGVkZDE0ZjEyMzdk
ODgyZTQxZDBkZjI3ZWYyN2NhZDk0ZGRlMzQuLjE1ZTVjMGZmYjEzYmQ3MmNhYjYyMjk5Njc4NmE0
NGVkMGU4NGZhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wNi0xMyAgVG9t
bXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBnZXRVc2VyTWVkaWEoKSBzaG91bGQgbm90IHRo
cm93IHdoZW4gc3VjY2Vzc0NhbGxiYWNrIGlzIG51bGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNjIyCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U05hdmlnYXRvckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05hdmlnYXRvcjo6d2Vi
a2l0R2V0VXNlck1lZGlhKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0
b3JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhOYXZpZ2F0b3I6OndlYmtpdEdldFVz
ZXJNZWRpYUNhbGxiYWNrKToKKwogMjAxMS0wNi0wOSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKaW5kZXgg
MTA3ZGFlYjJmY2NhZTQzYzRkOWIxZjUwYTJhM2ExOGI1MmYyMTgzMy4uY2VjN2IyOWM0ZjU2NThh
MTQ3NmNmNWI2M2M0NmE3NGZlOTUxNTRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcApAQCAtMzYsMTcgKzM2LDE3IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIEpTVmFsdWUgSlNOYXZpZ2F0
b3I6OndlYmtpdEdldFVzZXJNZWRpYShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgLy8gQXJndW1l
bnRzOiBPcHRpb25zLCBzdWNjZXNzQ2FsbGJhY2ssIChvcHRpb25hbCllcnJvckNhbGxiYWNrCisg
ICAgLy8gQXJndW1lbnRzOiBPcHRpb25zLCBzdWNjZXNzQ2FsbGJhY2s/LCAob3B0aW9uYWwpZXJy
b3JDYWxsYmFjaz8KIAogICAgIFN0cmluZyBvcHRpb25zID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMt
PmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgUmVmUHRyPE5hdmlnYXRv
clVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gY3JlYXRlRnVuY3Rp
b25Pbmx5Q2FsbGJhY2s8SlNOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s+KGV4ZWMs
IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKSwgZXhlYy0+YXJndW1lbnQoMSkpOworICAgIFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFT
dWNjZXNzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxi
YWNrPEpTTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPihleGVjLCBzdGF0aWNfY2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMt
PmFyZ3VtZW50KDEpLCBDYWxsYmFja0FsbG93VW5kZWZpbmVkIHwgQ2FsbGJhY2tBbGxvd051bGwp
OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAKLSAgICBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3JDYWxsYmFjaz4oZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT5hcmd1bWVudCgyKSwgQ2FsbGJhY2tB
bGxvd1VuZGVmaW5lZCk7CisgICAgUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU05hdmlnYXRv
clVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+KGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+YXJndW1lbnQoMiksIENh
bGxiYWNrQWxsb3dVbmRlZmluZWQgfCBDYWxsYmFja0FsbG93TnVsbCk7CiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmF2aWdhdG9yQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hdmlnYXRvckN1c3Rv
bS5jcHAKaW5kZXggZGNjYjAwNTgxZWU2YjYyYjg5ZDM1ZTcxYzQ0YTUxN2JhMDQwOWRkZi4uYWU2
MzE2MGYwNzYyOTk4MzUwMDI3OTEyM2YyMjlkMjNiZDU3MTNlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmF2aWdhdG9yQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0b3JDdXN0b20uY3BwCkBA
IC00MCwyNiArNDAsMjcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYUNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CisgICAgLy8gQXJndW1lbnRzOiBPcHRpb25zLCBzdWNjZXNzQ2Fs
bGJhY2s/LCAob3B0aW9uYWwpZXJyb3JDYWxsYmFjaz8KICAgICBJTkNfU1RBVFMoIkRPTS5OYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCkiKTsKIAogICAgIHY4OjpUcnlDYXRjaCBleGNlcHRp
b25DYXRjaGVyOwotICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gb3B0aW9ucyA9IGFyZ3NbMF0t
PlRvU3RyaW5nKCk7CisgICAgU3RyaW5nIG9wdGlvbnMgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1sw
XSk7CiAgICAgaWYgKGV4Y2VwdGlvbkNhdGNoZXIuSGFzQ2F1Z2h0KCkpCiAgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKGV4Y2VwdGlvbkNhdGNoZXIuRXhjZXB0aW9uKCkpOwogCiAgICAgYm9vbCBz
dWNjZWVkZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0Nh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxWOE5h
dmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4oYXJnc1sxXSwgc3VjY2VlZGVkKTsKKyAg
ICBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxWOE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nl
c3NDYWxsYmFjaz4oYXJnc1sxXSwgc3VjY2VlZGVkLCBDYWxsYmFja0FsbG93VW5kZWZpbmVkIHwg
Q2FsbGJhY2tBbGxvd051bGwpOwogICAgIGlmICghc3VjY2VlZGVkKQogICAgICAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOwogCiAgICAgLy8gQXJndW1lbnQgaXMgb3B0aW9uYWwsIGhlbmNlIHVu
ZGVmaW5lZCBpcyBhbGxvd2VkLgotICAgIFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8VjhOYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPihhcmdzWzJdLCBzdWNjZWVkZWQsIENhbGxiYWNr
QWxsb3dVbmRlZmluZWQpOworICAgIFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8VjhOYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPihhcmdzWzJdLCBzdWNjZWVkZWQsIENhbGxiYWNrQWxs
b3dVbmRlZmluZWQgfCBDYWxsYmFja0FsbG93TnVsbCk7CiAgICAgaWYgKCFzdWNjZWVkZWQpCiAg
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBOYXZpZ2F0b3IqIG5hdmlnYXRvciA9IFY4TmF2aWdhdG9yOjp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKLSAgICBuYXZpZ2F0b3ItPndlYmtpdEdldFVzZXJNZWRpYSh0b1dlYkNvcmVT
dHJpbmcob3B0aW9ucyksIHN1Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCksIGVycm9yQ2FsbGJhY2su
cmVsZWFzZSgpLCBlYyk7CisgICAgbmF2aWdhdG9yLT53ZWJraXRHZXRVc2VyTWVkaWEob3B0aW9u
cywgc3VjY2Vzc0NhbGxiYWNrLnJlbGVhc2UoKSwgZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIGVj
KTsKICAgICByZXR1cm4gdGhyb3dFcnJvcihlYyk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>