<?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>26083</bug_id>
          
          <creation_ts>2009-05-29 11:33:12 -0700</creation_ts>
          <short_desc>How to access formatted Java script Console message ?</short_desc>
          <delta_ts>2014-12-11 16:38:53 -0800</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></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="Gopal Raghavan">gop.rag</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>burg</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gopal.1.raghavan</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>pfeldman</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>123575</commentid>
    <comment_count>0</comment_count>
    <who name="Gopal Raghavan">gop.rag</who>
    <bug_when>2009-05-29 11:33:12 -0700</bug_when>
    <thetext>On Thu, May 14, 2009 at 11:48 AM, Gopal Raghavan &lt;gop.rag@gmail.com&gt; wrote:

    WebKit/WebCore/page/Cosole.cpp provides Console::log(), debug(), error() etc., to support Firebug console API.
    There are two overloaded addMessage(). Console::log messages are processed through Console::addMessage(MessageLevel level, ScriptCallStack* callStack, bool acceptNoArguments)


    I am trying to access this message through the chromeClient.

    Any idea why only the first argument is passed to  client ?


    // in Console::addMessage
        if (getFirstArgumentAsString(callStack-&gt;state(), lastCaller, message))
            page-&gt;chrome()-&gt;client()-&gt;addMessageToConsole(message, lastCaller.lineNumber(), lastCaller.sourceURL().prettyURL());


    Immediately, as next step the entire message is provided to inspector.

    When inspector processes the ConsoleMessage, it uses the formatter in front-end/console.js to display it on Inspector console.

    Is there a way to access this formatted message ?

    Thanks,
    --
    Gopal


On Thu, May 14, 2009 at 12:55 PM, Darin Adler &lt;darin@apple.com&gt; wrote:

    On May 14, 2009, at 8:48 AM, Gopal Raghavan wrote:

        Any idea why only the first argument is passed to  client ?


    It’s a bug. There’s an internal Apple report of this in the Mac OS X public API that ChromeClient is used for:

       &lt;rdar://problem/6453834&gt; -webView:addMessageToConsole: passes console.log&apos;s first argument rather than the composed string

    but I don’t know of a report of it in bugs.webkit.org. Feel free to file a bug report, or to try your hand at fixing it. It could be challenging to fix.

       -- Darin


On Fri, May 29, 2009 at 1:02 PM, Gopal Raghavan &lt;gop.rag@gmail.com&gt; wrote:

    Darin,
    Under which component should I file this bug?
    WebKit Misc
    WebCore JavaScript
    WebCore Misc
    ...

    I have also coded a patch for this.
    Thanks,
    --
    Gopal



On Fri, May 29, 2009 at 1:07 PM, Darin Adler &lt;darin@apple.com&gt; wrote:

    On May 29, 2009, at 10:02 AM, Gopal Raghavan wrote:

        Under which component should I file this bug?
        WebKit Misc
        WebCore JavaScript
        WebCore Misc


    I think WebCore Misc would be fine. See related https://bugs.webkit.org/show_bug.cgi?id=24496

       -- Darin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147843</commentid>
    <comment_count>1</comment_count>
      <attachid>39707</attachid>
    <who name="Gopal Raghavan">gop.rag</who>
    <bug_when>2009-09-17 10:38:07 -0700</bug_when>
    <thetext>Created attachment 39707
Fix for formatting javascript console message and handling firebug api

Current implementation of firebug api support for console.log is not complete.
Only the first argument is returned.
So if we have console.log(&quot;This is person info: %o&quot;,person) and pass person object, we do not get the complete formatted output.

This fix formats the string appropriately and passes the proper string to chrome client through addMessageToConsole
Supports firebug api outlined in http://getfirebug.com/console.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149553</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-23 17:09:33 -0700</bug_when>
    <thetext>Tab in ChangeLog will cause this to fail to land.

You&apos;ve failed to explain in your ChangeLog why we want this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149767</commentid>
    <comment_count>3</comment_count>
      <attachid>40070</attachid>
    <who name="Gopal Raghavan">gop.rag</who>
    <bug_when>2009-09-24 09:20:32 -0700</bug_when>
    <thetext>Created attachment 40070
Fix for formatted js console log message. Added some info to ChangeLog as suggested by Eric.S</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150754</commentid>
    <comment_count>4</comment_count>
      <attachid>39707</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-28 17:29:47 -0700</bug_when>
    <thetext>Comment on attachment 39707
Fix for formatting javascript console message and handling firebug api

I think he meant to obsolete this patch.  &quot;bugzilla-tool post-diff 26083&quot; will take care of automatically uplaoding patches and obsoleting old ones for you btw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154456</commentid>
    <comment_count>5</comment_count>
      <attachid>40070</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-13 15:08:12 -0700</bug_when>
    <thetext>Comment on attachment 40070
Fix for formatted js console log message. Added some info to ChangeLog as suggested by Eric.S

+ getMessageSourceAndLevelPrefix(source,level,sourceString,levelString);

We need spaces after the commas here.

+ getAllArgumentsAsString(callStack,message);

Here too.

+ void Console::getAllArgumentsAsString(ScriptCallStack* callStack, String&amp; message)

Please remove leading blank line from this function.

+ if (i==0 &amp;&amp; lastCaller.argumentAt(i).jsValue().isString()) {

We need spaces around the ==

There are too many style violations for me to review them all, much less understand the content of the patch.  Have you run check-webkit-style on your patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155565</commentid>
    <comment_count>6</comment_count>
      <attachid>41397</attachid>
    <who name="Gopal Raghavan">gop.rag</who>
    <bug_when>2009-10-18 22:38:17 -0700</bug_when>
    <thetext>Created attachment 41397
Fix for formatted js console log message. Fixed some style issues as suggested by Adam Barth.

Fixed style issues pointed by Adam.
Ran check-webkit-style. Total errors found:0
Re-submitting patch for review.
Thanks,
--
Gopal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166952</commentid>
    <comment_count>7</comment_count>
      <attachid>41397</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-27 14:50:03 -0800</bug_when>
    <thetext>Comment on attachment 41397
Fix for formatted js console log message. Fixed some style issues as suggested by Adam Barth.

Rejecting patch 41397 from commit-queue.

Failed to run &quot;[&apos;/Users/abarth/git/webkit-kr/WebKitTools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
to file WebCore/page/Console.cpp.rej
patching file WebCore/page/Console.h
Hunk #1 succeeded at 118 (offset 2 lines).
Hunk #2 succeeded at 128 (offset 2 lines).
patching file WebKit/qt/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file WebKit/qt/Api/qwebpage.cpp
Hunk #1 succeeded at 1790 (offset 215 lines).
patching file WebKit/qt/Api/qwebpage.h
Hunk #1 succeeded at 341 (offset 3 lines).
patching file WebKit/qt/WebCoreSupport/ChromeClientQt.cpp
Hunk #1 succeeded at 235 (offset 6 lines).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185249</commentid>
    <comment_count>8</comment_count>
      <attachid>41397</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2010-01-27 15:38:18 -0800</bug_when>
    <thetext>Comment on attachment 41397
Fix for formatted js console log message. Fixed some style issues as suggested by Adam Barth.

I think this patch should have LayoutTests (fast/dom/Window/console*); this would also help to communicate the motivation behind the patch. 

&gt; Index: WebKit/qt/Api/qwebpage.h
&gt; ===================================================================
&gt; --- WebKit/qt/Api/qwebpage.h	(revision 48300)
&gt; +++ WebKit/qt/Api/qwebpage.h	(working copy)
&gt; @@ -338,7 +338,7 @@ protected:
&gt;      virtual void javaScriptAlert(QWebFrame *originatingFrame, const QString&amp; msg);
&gt;      virtual bool javaScriptConfirm(QWebFrame *originatingFrame, const QString&amp; msg);
&gt;      virtual bool javaScriptPrompt(QWebFrame *originatingFrame, const QString&amp; msg, const QString&amp; defaultValue, QString* result);
&gt; -    virtual void javaScriptConsoleMessage(const QString&amp; message, int lineNumber, const QString&amp; sourceID);
&gt; +    virtual void javaScriptConsoleMessage(const QString&amp; messageSource, const QString&amp; messageLevel, const QString&amp; message, int lineNumber, const QString&amp; sourceID);
&gt;  
&gt;      virtual QString userAgentForUrl(const QUrl&amp; url) const;
&gt;  

This change breaks backward compatibility for the QtWebKit API as it changes the type of the second argument. 

r- for lack of tests and BC break.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304801</commentid>
    <comment_count>9</comment_count>
      <attachid>72972</attachid>
    <who name="Gopal Raghavan">gopal.1.raghavan</who>
    <bug_when>2010-11-04 12:35:29 -0700</bug_when>
    <thetext>Created attachment 72972
Patch against r71350, with fixes to issues raised by Lazlo. Layout tests also added.

Patch based on r71350.
included console-api.html layout test.

Style check: PASS, LayoutTest:PASS

gopal@fire:~/WebKit1$ WebKitTools/Scripts/check-webkit-style 
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebpage.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebpage.cpp&quot;
Total errors found: 0 in 11 files

gopal@fire:~/WebKit1$ WebKitTools/Scripts/run-webkit-tests --qt --debug -o /tmp/layout/ LayoutTests/fast/dom/Window/console-functions.html 
Running build-dumprendertree
Running tests from /home/gopal/WebKit1/LayoutTests
Testing 1 test cases.
fast/dom/Window .
8.36s total testing time

all 1 test cases succeeded
gopal@fire:~/WebKit1$ WebKitTools/Scripts/run-webkit-tests --qt --debug -o /tmp/layout/ LayoutTests/fast/dom/Window/console-api.html 
Running build-dumprendertree
Running tests from /home/gopal/WebKit1/LayoutTests
Testing 1 test cases.
fast/dom/Window .
11.32s total testing time

all 1 test cases succeeded</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304813</commentid>
    <comment_count>10</comment_count>
      <attachid>72972</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-11-04 13:00:27 -0700</bug_when>
    <thetext>Comment on attachment 72972
Patch against r71350, with fixes to issues raised by Lazlo. Layout tests also added.

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

Many things to fix... I have up halfway

&gt; WebCore/ChangeLog:5
&gt; +        Fixes bug: https://bugs.webkit.org/show_bug.cgi?id=26083

Please look at other commits on how to format a ChangeLog

&gt; WebCore/page/Console.cpp:149
&gt; +
&gt; +}

why newline here!

&gt; WebCore/page/Console.cpp:200
&gt; +    if (!message.isEmpty())
&gt; +      page-&gt;chrome()-&gt;client()-&gt;addMessageToConsole(JSMessageSource, type, level, message, lastCaller.lineNumber(), lastCaller.sourceURL());

wrong indentation!

&gt; WebCore/page/Console.cpp:505
&gt; +//  get all the arguments in message

We dont do comments like these outside the methods... and comments start with capital letter and ends with a dot!

&gt; WebCore/page/Console.cpp:506
&gt; +void Console::getAllArgumentsAsString(ScriptCallStack* callStack, String&amp; message)

IS this string supposed to not be const?

&gt; WebCore/page/Console.cpp:508
&gt; +{
&gt; + 

No newline needed here

&gt; WebCore/page/Console.cpp:511
&gt; +    String fStr; // formatted string

fStr... that naming is against our style... please consult out style guide and use meaning full variables. Then you wouldn&apos;t need useless comments like this one

&gt; WebCore/page/Console.cpp:524
&gt; +        } else {
&gt; +            String argStr;
&gt; +            int idx = 0;
&gt; +            bool repl = false; // should you replace format pattern with value
&gt; +

wow, you misses a } so either your code is wrong or your indentation is very wrong!

&gt; WebCore/page/Console.cpp:529
&gt; +                 // found it

Useless comment.. please remove these

&gt; WebCore/page/Console.cpp:532
&gt; +                 repl = true;

repl? what does that mean? write out variable names

&gt; WebCore/page/Console.cpp:537
&gt; +        if (lastCaller.argumentAt(i).jsValue().isNumber()) { // handle numbers

useless comments... the code pretty much says it

&gt; WebCore/page/Console.cpp:555
&gt; +        if (repl)
&gt; +             fStr.insert(argStr, idx);
&gt; +        else 
&gt; +             fStr += argStr;
&gt; +        }

Look at this code... indendation is wrong or so is your logic! bad, very bad.

&gt; WebCore/page/Console.cpp:567
&gt; +        JSC::ExecState* exec = callStack-&gt;globalState();
&gt; +        JSC::JSObject *myObj = jsVal.getObject();

coding style violation and inconsistency</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304821</commentid>
    <comment_count>11</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-11-04 13:08:14 -0700</bug_when>
    <thetext>Attachment 72972 did not build on qt:
Build output: http://queues.webkit.org/results/5198021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304916</commentid>
    <comment_count>12</comment_count>
      <attachid>72989</attachid>
    <who name="Gopal Raghavan">gopal.1.raghavan</who>
    <bug_when>2010-11-04 15:19:46 -0700</bug_when>
    <thetext>Created attachment 72989
Taken care of Kenneth&apos;s comments and qt build issue

Thanks Kenneth, for your quick feedback.

BR,
--
Gopal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304927</commentid>
    <comment_count>13</comment_count>
    <who name="Gopal Raghavan">gopal.1.raghavan</who>
    <bug_when>2010-11-04 15:32:35 -0700</bug_when>
    <thetext>This will also solve https://bugs.webkit.org/show_bug.cgi?id=31860</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305163</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-04 23:31:59 -0700</bug_when>
    <thetext>+    String formatPattern =&quot;%s%d%i%f%o&quot;;
...
+                String pattern = formatPattern.substring(j, formatPatternLen);

What&apos;s the benefit of having a String with modifiers, given that new strings need to be created anyway?

+                if (formattedString.contains(pattern, false)) {

This will mishandle e.g. %%d, right?

I&apos;d be extremely wary of custom formatted output implementations, these can be a big source of bugs, maybe even security ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305216</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-05 04:15:06 -0700</bug_when>
    <thetext>Attachment 72989 did not build on chromium:
Build output: http://queues.webkit.org/results/5324012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310347</commentid>
    <comment_count>16</comment_count>
      <attachid>74128</attachid>
    <who name="Gopal Raghavan">gopal.1.raghavan</who>
    <bug_when>2010-11-17 09:52:10 -0800</bug_when>
    <thetext>Created attachment 74128
Fixed build issues and took care of review comments

Thanks for review.
Had to redo patch after Yury&apos;s 71966 changeset.
I have now tested all positive and negative cases.
Included layout test.
Br,
--
Gopal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310483</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-17 13:21:06 -0800</bug_when>
    <thetext>Attachment 74128 did not build on chromium:
Build output: http://queues.webkit.org/results/6113029</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310719</commentid>
    <comment_count>18</comment_count>
      <attachid>74128</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2010-11-17 23:01:03 -0800</bug_when>
    <thetext>Comment on attachment 74128
Fixed build issues and took care of review comments

The patch adds direct dependencies to JavaScriptCore (e.g. PropertyNameArray.h) from within port-independent WebCore without any guards. This makes the Chromium bot fail as Chromium is using V8.

There are classes available that abstract V8 and JavaScriptCore for WebCore and are available to stringify JavaScript values. Check if the ScriptValue interface would work here - you might find toString() and toInspectorValue() useful.

CCing Yury and Pavel for their help/input.

r- as I think the functionality of the makeStringFromObj() function should be implemented for V8 as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310882</commentid>
    <comment_count>19</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-11-18 09:18:06 -0800</bug_when>
    <thetext>As Laszlo said you shouldn&apos;t add dependencies on VM specific code to WebCore. Instead you may use things like ScriptState and ScriptValue which are essentially wrappers around JS VM specific objects providing a VM-agnostic interface to such objects. For more details take a look at the implementation of ScriptArguments::getFirstArgumentAsString. It should be quite easy to add something like 

 String ScriptArguments::allArgumentsAsString

which would serialize the arguments into a string in a JS VM independent manner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310884</commentid>
    <comment_count>20</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-18 09:23:22 -0800</bug_when>
    <thetext>We should also make sure we don&apos;t harm performance here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514901</commentid>
    <comment_count>21</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-12-04 21:55:27 -0800</bug_when>
    <thetext>*** Bug 31860 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054682</commentid>
    <comment_count>22</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-12-11 16:38:53 -0800</bug_when>
    <thetext>Inspector supports format strings in the frontend. I don&apos;t understand what the use case is for having these on the backend. If it&apos;s for logging stderr or something, that should be bouncing through InspectorFrontendHost anyway and doesn&apos;t need to be implemented in C++.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39707</attachid>
            <date>2009-09-17 10:38:07 -0700</date>
            <delta_ts>2009-09-28 17:29:47 -0700</delta_ts>
            <desc>Fix for formatting javascript console message and handling firebug api</desc>
            <filename>26083.patch</filename>
            <type>text/plain</type>
            <size>11551</size>
            <attacher name="Gopal Raghavan">gop.rag</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODQyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMDktMDktMTYgIFJhZ2hhdmFuIEdvcGFsICA8Z29wYWwuMS5yYWdo
YXZhbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MDgzCisJ
Rml4IGZvciBmb3JtYXR0aW5nIGphdmFzY3JpcHQgY29uc29sZSBtZXNzYWdlIGFuZCBoYW5kbGlu
ZyBmaXJlYnVnIGFwaSAKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OlNjcmlwdENhbGxTdGFjayk6
CisgICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldE1lc3Nh
Z2VTb3VyY2VBbmRMZXZlbFByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpwcmludE1lc3NhZ2VT
b3VyY2VBbmRMZXZlbFByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjphZGRNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmdldEFsbEFyZ3VtZW50c0FzU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6Om1ha2VTdHJpbmdGcm9tT2JqKToKKyAgICAg
ICAgKiBwYWdlL0NvbnNvbGUuaDoKKwogMjAwOS0wOS0xNiAgR3JlZyBCb2xzaW5nYSAgPGJvbHNp
bmdhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgRU5BQkxFKERSQUdfU1VQUE9SVCkKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFjay5jcHAJKHJldmlzaW9uIDQ4MzAwKQor
KysgV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MywxNSArNTMsMTQgQEAgU2NyaXB0Q2FsbFN0YWNrOjpTY3JpcHRDYWxsU3RhY2soRXhl
Y1N0YQogICAgIEpTVmFsdWUgZnVuY3Rpb247CiAKICAgICBleGVjLT5pbnRlcnByZXRlcigpLT5y
ZXRyaWV2ZUxhc3RDYWxsZXIoZXhlYywgc2lnbmVkTGluZU51bWJlciwgc291cmNlSUQsIHVybFN0
cmluZywgZnVuY3Rpb24pOwotCisgICAgdW5zaWduZWQgbGluZU51bWJlciA9IHNpZ25lZExpbmVO
dW1iZXIgPj0gMCA/IHNpZ25lZExpbmVOdW1iZXIgOiAwOwogICAgIGlmIChmdW5jdGlvbikgewog
ICAgICAgICBtX2NhbGxlciA9IGFzSW50ZXJuYWxGdW5jdGlvbihmdW5jdGlvbik7Ci0gICAgICAg
IHVuc2lnbmVkIGxpbmVOdW1iZXIgPSBzaWduZWRMaW5lTnVtYmVyID49IDAgPyBzaWduZWRMaW5l
TnVtYmVyIDogMDsKICAgICAgICAgbV9mcmFtZXMuYXBwZW5kKFNjcmlwdENhbGxGcmFtZShtX2Nh
bGxlci0+bmFtZSgmbV9leGVjLT5nbG9iYWxEYXRhKCkpLCB1cmxTdHJpbmcsIGxpbmVOdW1iZXIs
IGFyZ3MsIHNraXBBcmd1bWVudENvdW50KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gQ2Fs
bGVyIGlzIHVua25vd24sIGJ1dCB3ZSBzaG91bGQgc3RpbGwgYWRkIHRoZSBmcmFtZSwgYmVjYXVz
ZQogICAgICAgICAvLyBzb21ldGhpbmcgY2FsbGVkIHVzLCBhbmQgZ2F2ZSB1cyBhcmd1bWVudHMu
Ci0gICAgICAgIG1fZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoVVN0cmluZygpLCBVU3Ry
aW5nKCksIDAsIGFyZ3MsIHNraXBBcmd1bWVudENvdW50KSk7CisgICAgICAgIG1fZnJhbWVzLmFw
cGVuZChTY3JpcHRDYWxsRnJhbWUoVVN0cmluZygpLCB1cmxTdHJpbmcsIGxpbmVOdW1iZXIsIGFy
Z3MsIHNraXBBcmd1bWVudENvdW50KSk7CiAgICAgfQogfQogCkluZGV4OiBXZWJDb3JlL3BhZ2Uv
Q29uc29sZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCShyZXZp
c2lvbiA0ODMwMCkKKysrIFdlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDYsNiArNDYsNyBAQAogCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVk
ZSA8c3RkaW8uaD4KKyNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTg3LDkgKzg4LDkgQEAgc3RhdGljIGJvb2wgZ2V0Rmlyc3RBcmd1bWVu
dEFzU3RyaW5nKFNjcgogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBwcmludE1l
c3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeChNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxl
dmVsIGxldmVsKQordm9pZCBnZXRNZXNzYWdlU291cmNlQW5kTGV2ZWxQcmVmaXgoTWVzc2FnZVNv
dXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIFN0
cmluZyYgbGV2ZWxTdHJpbmcpCiB7Ci0gICAgY29uc3QgY2hhciogc291cmNlU3RyaW5nOworCiAg
ICAgc3dpdGNoIChzb3VyY2UpIHsKICAgICBjYXNlIEhUTUxNZXNzYWdlU291cmNlOgogICAgICAg
ICBzb3VyY2VTdHJpbmcgPSAiSFRNTCI7CkBAIC0xMTQsOCArMTE1LDcgQEAgc3RhdGljIHZvaWQg
cHJpbnRNZXNzYWdlU291cmNlQW5kTGV2ZWxQcgogICAgICAgICBzb3VyY2VTdHJpbmcgPSAiVU5L
Tk9XTiI7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLQotICAgIGNvbnN0IGNoYXIqIGxldmVsU3Ry
aW5nOworICAgIAogICAgIHN3aXRjaCAobGV2ZWwpIHsKICAgICBjYXNlIFRpcE1lc3NhZ2VMZXZl
bDoKICAgICAgICAgbGV2ZWxTdHJpbmcgPSAiVElQIjsKQEAgLTEzOCw2ICsxMzgsMTYgQEAgc3Rh
dGljIHZvaWQgcHJpbnRNZXNzYWdlU291cmNlQW5kTGV2ZWxQcgogICAgICAgICBicmVhazsKICAg
ICB9CiAKKworfQorCitzdGF0aWMgdm9pZCBwcmludE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZp
eChNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsKQoreworICAgIFN0cmlu
ZyBzb3VyY2VTdHJpbmc7CisgICAgU3RyaW5nIGxldmVsU3RyaW5nOworCisgICAgZ2V0TWVzc2Fn
ZVNvdXJjZUFuZExldmVsUHJlZml4KHNvdXJjZSxsZXZlbCxzb3VyY2VTdHJpbmcsbGV2ZWxTdHJp
bmcpOworCiAgICAgcHJpbnRmKCIlcyAlczoiLCBzb3VyY2VTdHJpbmcsIGxldmVsU3RyaW5nKTsK
IH0KIApAQCAtMTczLDcgKzE4Myw4IEBAIHZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdl
VHlwZSB0eXAKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIG1lc3NhZ2U7Ci0gICAgaWYg
KGdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhjYWxsU3RhY2stPnN0YXRlKCksIGxhc3RDYWxsZXIs
IG1lc3NhZ2UpKQorICAgIGdldEFsbEFyZ3VtZW50c0FzU3RyaW5nKGNhbGxTdGFjayxtZXNzYWdl
KTsKKyAgICBpZighbWVzc2FnZS5pc0VtcHR5KCkpCiAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5j
bGllbnQoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIHR5cGUsIGxldmVs
LCBtZXNzYWdlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5zb3VyY2VVUkwo
KS5wcmV0dHlVUkwoKSk7CiAKICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1l
c3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCB0eXBlLCBsZXZlbCwgY2FsbFN0YWNrKTsK
QEAgLTQxMyw0ICs0MjQsOTcgQEAgUGFnZSogQ29uc29sZTo6cGFnZSgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fZnJhbWUtPnBhZ2UoKTsKIH0KIAordm9pZCBDb25zb2xlOjpnZXRBbGxBcmd1bWVudHNB
c1N0cmluZyhTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaywgU3RyaW5nJiBtZXNzYWdlKQorewor
IAorICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxTdGFjay0+YXQo
MCk7CisKKyAgICBTdHJpbmcgZlN0cjsKKyAgICBTdHJpbmcgZlBhdHRlcm4gPSIlcyVkJWYlbyI7
CisgICAgaW50IGZQYXR0ZXJuTGVuID0gMjsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsYXN0Q2FsbGVyLmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CisgICAgICAgIGlmIChpPT0wICYm
IGxhc3RDYWxsZXIuYXJndW1lbnRBdChpKS5qc1ZhbHVlKCkuaXNTdHJpbmcoKSkgeworICAgICAg
ICAgICAgZlN0ciA9IGxhc3RDYWxsZXIuYXJndW1lbnRBdChpKS50b1N0cmluZyhjYWxsU3RhY2st
PnN0YXRlKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3RyaW5nIGFyZ1N0cjsK
KyAgICAgICAgICAgIGludCBpZHggPSAwOworICAgICAgICAgICAgYm9vbCByZXBsID0gZmFsc2U7
CisKKyAgICAgICAgICAgIGZvciAoaW50IGo9MDtqPGZQYXR0ZXJuLmxlbmd0aCgpO2o9aitmUGF0
dGVybkxlbikgewkJCisgICAgICAgICAgICAgICAgU3RyaW5nIHBhdCA9IGZQYXR0ZXJuLnN1YnN0
cmluZyhqLGZQYXR0ZXJuTGVuKTsKKyAgICAgICAgICAgICAgICBpZihmU3RyLmNvbnRhaW5zKHBh
dCxmYWxzZSkpeworICAgICAgICAgICAgICAgICAgICBpZHggPSBmU3RyLmZpbmQocGF0LDAsZmFs
c2UpOworICAgICAgICAgICAgICAgICAgICBmU3RyLnJlbW92ZShpZHgsZlBhdHRlcm5MZW4pOwor
ICAgICAgICAgICAgICAgICAgICByZXBsPXRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGxh
c3RDYWxsZXIuYXJndW1lbnRBdChpKS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkgeyAKKyAgICAgICAg
ICAgICAgICBkb3VibGUgbnVtOworICAgICAgICAgICAgICAgIGxhc3RDYWxsZXIuYXJndW1lbnRB
dChpKS5qc1ZhbHVlKCkuZ2V0TnVtYmVyKG51bSk7CisgICAgICAgICAgICAgICAgYXJnU3RyID0g
U3RyaW5nOjpudW1iZXIobnVtKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdENhbGxlci5h
cmd1bWVudEF0KGkpLmpzVmFsdWUoKS5pc1N0cmluZygpKSB7IAorICAgICAgICAgICAgICAgIEpT
Qzo6VVN0cmluZyBtc2c7CisgICAgICAgICAgICAgICAgbGFzdENhbGxlci5hcmd1bWVudEF0KGkp
LmpzVmFsdWUoKS5nZXRTdHJpbmcobXNnKTsKKyAgICAgICAgICAgICAgICBhcmdTdHIgPSBtc2cu
YXNjaWkoKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9IGVsc2UgaWYgKGxh
c3RDYWxsZXIuYXJndW1lbnRBdChpKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSkgeyAKKyAgICAgICAg
ICAgICAgICBKU0M6OkpTVmFsdWUgb2JqVmFsID0gbGFzdENhbGxlci5hcmd1bWVudEF0KGkpLmpz
VmFsdWUoKTsKKyAgICAgICAgICAgICAgICBtYWtlU3RyaW5nRnJvbU9iaihvYmpWYWwsYXJnU3Ry
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHJlcGwpCisgICAgICAgICAgICAg
ICAgZlN0ci5pbnNlcnQoYXJnU3RyLGlkeCk7CisgICAgICAgICAgICBlbHNlIAorICAgICAgICAg
ICAgICAgIGZTdHIgKz0gYXJnU3RyOworCisgICAgICAgICAgICByZXBsICE9IHJlcGw7CisgICAg
ICAgIH0KKyAgICB9CisgICAgbWVzc2FnZSA9IGZTdHI7Cit9CisKK3ZvaWQgQ29uc29sZTo6bWFr
ZVN0cmluZ0Zyb21PYmooSlNDOjpKU1ZhbHVlJiBqc1ZhbCxTdHJpbmcmIGFyZ1N0cikKK3sKKyAg
ICBpZiAoanNWYWwuaXNPYmplY3QoKSkgeyAKKyAgICAgICAgU2NyaXB0Q29udHJvbGxlciogc2Ny
aXB0ID0gbV9mcmFtZS0+c2NyaXB0KCk7CisgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0g
c2NyaXB0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAgICAgICBKU0M6OkpTT2Jq
ZWN0ICpteU9iaiA9IGpzVmFsLmdldE9iamVjdCgpOworICAgICAgICBKU0M6OlByb3BlcnR5TmFt
ZUFycmF5IHByb3BOYW1lcyhleGVjKTsKKyAgICAgICAgbXlPYmotPmdldFByb3BlcnR5TmFtZXMo
ZXhlYyxwcm9wTmFtZXMpOworICAgICAgICBpZiAocHJvcE5hbWVzLnNpemUoKT09MCkgeworICAg
ICAgICAgICAgLy8gZW1wdHkgb2JqZWN0CisgICAgICAgICAgICBKU0M6OlVTdHJpbmcgbXNnOwor
ICAgICAgICAgICAganNWYWwuZ2V0U3RyaW5nKG1zZyk7CisgICAgICAgICAgICBTdHJpbmcgdG1w
ID0gbXNnLmRhdGEoKTsKKyAgICAgICAgICAgIFN0cmluZyBwcm9wbGVzc09ialN0cjsKKyAgICAg
ICAgICAgIHByb3BsZXNzT2JqU3RyID0ganNWYWwudG9TdHJpbmcoZXhlYyk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhcmdTdHIgKz0gIk9iamVjdFsiOworICAg
ICAgICBmb3IgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcHJv
cE5hbWVzLmJlZ2luKCk7IGl0ICE9IHByb3BOYW1lcy5lbmQoKTsgaXQrKykgeworICAgICAgICAg
ICAgSlNDOjpKU1ZhbHVlIHByb3AgPSBteU9iai0+Z2V0KGV4ZWMsKml0KTsKKyAgICAgICAgICAg
IFN0cmluZyB0bXBEYXRhID0gaXQtPmFzY2lpKCk7CisgICAgICAgICAgICBpZiAocHJvcC5pc1N0
cmluZygpKSB7CisgICAgICAgICAgICAgICAgYXJnU3RyICs9ICB0bXBEYXRhOworICAgICAgICAg
ICAgICAgIHRtcERhdGEgPSBwcm9wLmdldFN0cmluZygpLmFzY2lpKCk7CisgICAgICAgICAgICAg
ICAgYXJnU3RyICs9ICI9IiArIHRtcERhdGE7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3Au
aXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIGFyZ1N0ciArPSB0bXBEYXRhOworICAgICAg
ICAgICAgICAgIGRvdWJsZSBudW0xOworICAgICAgICAgICAgICAgIHByb3AuZ2V0TnVtYmVyKG51
bTEpOworICAgICAgICAgICAgICAgIGFyZ1N0ciArPSAiPSIgKyBTdHJpbmc6Om51bWJlcihudW0x
KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZihwcm9wLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgICAg
ICAgICBtYWtlU3RyaW5nRnJvbU9iaihwcm9wLGFyZ1N0cik7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBhcmdTdHIgKz0gIjsiOworICAgICAgICB9CisgICAgICAgIGFyZ1N0ciArPSAiXSI7
CisgICAgfQorICAgIHJldHVybjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9wYWdlL0NvbnNvbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ29uc29s
ZS5oCShyZXZpc2lvbiA0ODMwMCkKKysrIFdlYkNvcmUvcGFnZS9Db25zb2xlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExNiw2ICsxMTYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0
ZToKICAgICAgICAgaW5saW5lIFBhZ2UqIHBhZ2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBhZGRN
ZXNzYWdlKE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIFNjcmlwdENhbGxTdGFjayosIGJvb2wg
YWNjZXB0Tm9Bcmd1bWVudHMgPSBmYWxzZSk7CisgICAgICAgIHZvaWQgZ2V0QWxsQXJndW1lbnRz
QXNTdHJpbmcoU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2ssIFN0cmluZyYgbWVzc2FnZSk7Cisg
ICAgICAgIHZvaWQgbWFrZVN0cmluZ0Zyb21PYmooSlNDOjpKU1ZhbHVlJiAsIFN0cmluZyYgbXNn
KTsKIAogICAgICAgICBDb25zb2xlKEZyYW1lKik7CiAKQEAgLTEyNCw2ICsxMjYsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFByb2ZpbGVzQXJyYXkgbV9wcm9maWxlczsKICNlbmRp
ZgogICAgIH07CisgICAgdm9pZCBnZXRNZXNzYWdlU291cmNlQW5kTGV2ZWxQcmVmaXgoTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgU3RyaW5nJiBzb3VyY2VTdHJpbmcs
IFN0cmluZyYgbGV2ZWxTdHJpbmcpOworCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRl
eDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODQyNikKKysrIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNyBAQAorMjAwOS0wOS0xNiAgUmFnaGF2YW4gR29wYWwgIDxnb3BhbC4xLnJh
Z2hhdmFuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworCWh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjA4MworCUZpeCBm
b3IgZm9ybWF0dGluZyBqYXZhc2NyaXB0IGNvbnNvbGUgbWVzc2FnZSBhbmQgaGFuZGxpbmcgZmly
ZWJ1ZyBhcGkgCisKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2Vi
UGFnZTo6amF2YVNjcmlwdENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Uu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6YWRkTWVzc2FnZVRvQ29uc29sZSk6CisKIDIwMDkt
MDktMTYgIEFuZHJhcyBCZWNzaSAgPGFuZHJld2JlY3NpQHlhaG9vLmNvLnVrPgogCiAgICAgICAg
IFJ1YmJlcnN0YW1wZWQgYnkgS2VubmV0aCBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNw
cAkocmV2aXNpb24gNDgzMDApCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU3NSwxMSArMTU3NSwxMyBAQCBRV2lkZ2V0ICpRV2ViUGFnZTo6dmlldygp
IGNvbnN0CiAKICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBwcmludHMgbm90aGluZy4K
ICovCi12b2lkIFFXZWJQYWdlOjpqYXZhU2NyaXB0Q29uc29sZU1lc3NhZ2UoY29uc3QgUVN0cmlu
ZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFFTdHJpbmcmIHNvdXJjZUlEKQordm9p
ZCBRV2ViUGFnZTo6amF2YVNjcmlwdENvbnNvbGVNZXNzYWdlKGNvbnN0IFFTdHJpbmcmIG1lc3Nh
Z2VTb3VyY2UsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2VMZXZlbCwgY29uc3QgUVN0cmluZyYgbWVz
c2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFFTdHJpbmcmIHNvdXJjZUlEKQogewogICAgIFFf
VU5VU0VEKG1lc3NhZ2UpCiAgICAgUV9VTlVTRUQobGluZU51bWJlcikKICAgICBRX1VOVVNFRChz
b3VyY2VJRCkKKyAgICBRX1VOVVNFRChtZXNzYWdlU291cmNlKQorICAgIFFfVU5VU0VEKG1lc3Nh
Z2VMZXZlbCkKIH0KIAogLyohCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCShyZXZpc2lvbiA0ODMwMCkKKysrIFdl
YktpdC9xdC9BcGkvcXdlYnBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzM4LDcgKzMzOCw3IEBA
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgamF2YVNjcmlwdEFsZXJ0KFFXZWJGcmFtZSAq
b3JpZ2luYXRpbmdGcmFtZSwgY29uc3QgUVN0cmluZyYgbXNnKTsKICAgICB2aXJ0dWFsIGJvb2wg
amF2YVNjcmlwdENvbmZpcm0oUVdlYkZyYW1lICpvcmlnaW5hdGluZ0ZyYW1lLCBjb25zdCBRU3Ry
aW5nJiBtc2cpOwogICAgIHZpcnR1YWwgYm9vbCBqYXZhU2NyaXB0UHJvbXB0KFFXZWJGcmFtZSAq
b3JpZ2luYXRpbmdGcmFtZSwgY29uc3QgUVN0cmluZyYgbXNnLCBjb25zdCBRU3RyaW5nJiBkZWZh
dWx0VmFsdWUsIFFTdHJpbmcqIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIGphdmFTY3JpcHRD
b25zb2xlTWVzc2FnZShjb25zdCBRU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29u
c3QgUVN0cmluZyYgc291cmNlSUQpOworICAgIHZpcnR1YWwgdm9pZCBqYXZhU2NyaXB0Q29uc29s
ZU1lc3NhZ2UoY29uc3QgUVN0cmluZyYgbWVzc2FnZVNvdXJjZSwgY29uc3QgUVN0cmluZyYgbWVz
c2FnZUxldmVsLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3Qg
UVN0cmluZyYgc291cmNlSUQpOwogCiAgICAgdmlydHVhbCBRU3RyaW5nIHVzZXJBZ2VudEZvclVy
bChjb25zdCBRVXJsJiB1cmwpIGNvbnN0OwogCkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5jcHAJKHJldmlzaW9uIDQ4MzAwKQorKysgV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI5LDEy
ICsyMjksMjMgQEAgdm9pZCBDaHJvbWVDbGllbnRRdDo6c2V0UmVzaXphYmxlKGJvb2wpCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnRRdDo6YWRkTWVzc2FnZVRv
Q29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsCit2b2lkIENocm9tZUNsaWVudFF0OjphZGRNZXNzYWdlVG9Db25zb2xl
KE1lc3NhZ2VTb3VyY2Ugc291cmNlICwgTWVzc2FnZVR5cGUsTWVzc2FnZUxldmVsIGxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKQog
ewotICAgIFFTdHJpbmcgeCA9IG1lc3NhZ2U7Ci0gICAgUVN0cmluZyB5ID0gc291cmNlSUQ7Ci0g
ICAgbV93ZWJQYWdlLT5qYXZhU2NyaXB0Q29uc29sZU1lc3NhZ2UoeCwgbGluZU51bWJlciwgeSk7
CisgICAgUVN0cmluZyBtc2cgPSBtZXNzYWdlOworICAgIFFTdHJpbmcgc3JjSWQgPSBzb3VyY2VJ
RDsKKyAgICB1bnNpZ25lZCBsaW5OdW0gPSBsaW5lTnVtYmVyOworCisKKyAgICBTdHJpbmcgc3Jj
U3RyaW5nOworICAgIFN0cmluZyBsZXZTdHJpbmc7CisgICAgCisgICAgZ2V0TWVzc2FnZVNvdXJj
ZUFuZExldmVsUHJlZml4KHNvdXJjZSxsZXZlbCxzcmNTdHJpbmcsbGV2U3RyaW5nKTsKKworICAg
IFFTdHJpbmcgc291cmNlU3RyaW5nID0gc3JjU3RyaW5nOworICAgIFFTdHJpbmcgbGV2ZWxTdHJp
bmcgPSBsZXZTdHJpbmc7CisKKyAgICBtX3dlYlBhZ2UtPmphdmFTY3JpcHRDb25zb2xlTWVzc2Fn
ZShzb3VyY2VTdHJpbmcsbGV2ZWxTdHJpbmcsIG1zZywgbGluTnVtLCBzcmNJZCk7CiB9CiAKIHZv
aWQgQ2hyb21lQ2xpZW50UXQ6OmNocm9tZURlc3Ryb3llZCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40070</attachid>
            <date>2009-09-24 09:20:32 -0700</date>
            <delta_ts>2009-10-18 22:38:17 -0700</delta_ts>
            <desc>Fix for formatted js console log message. Added some info to ChangeLog as suggested by Eric.S</desc>
            <filename>26083a.patch</filename>
            <type>text/plain</type>
            <size>12434</size>
            <attacher name="Gopal Raghavan">gop.rag</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODQyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMDktMDktMTYgIFJhZ2hhdmFuIEdvcGFsICA8Z29wYWwuMS5yYWdo
YXZhbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MDgzCisg
ICAgICAgIEZpeCBmb3IgZm9ybWF0dGluZyBqYXZhc2NyaXB0IGNvbnNvbGUgbWVzc2FnZSBhbmQg
aGFuZGxpbmcgZmlyZWJ1ZyBhcGkgCisgICAgICAgIFdpdGhvdXQgdGhpcyBmaXggd2Ugd2lsbCBv
bmx5IGJlIGFibGUgdG8gZ2V0IGZpcnN0IGFyZ3VtZW50IGZvciBjb25zb2xlIG1lc3NhZ2VzLgor
ICAgICAgICBBbHNvLCBjdXJyZW50IGltcGxlbWVudCBkb2VzIG5vdCBoYW5kbGUgJW8gJWQgZXRj
LiwgcHJvcGVybHkuCisgICAgICAgIFRoaXMgZml4IGFkZHJlc3NlcyBhbGwgdGhlc2UgaXNzdWVz
IGFuZCBwcm92aWRlcyBhIGNsZWFuIGZvcm1hdHRlZCBzdHJpbmcuCisgICAgICAgIE9uIFM2MCBw
aG9uZSBkZXZpY2VzLCB3ZSBhcmUgdXNpbmcgdGhpcyBhcGkgdG8gZGlzcGxheSBvciBsb2cgdG8g
ZmlsZSAgY29uc29sZSBtZXNzYWdlLiBXaXRob3V0CisgICAgICAgIHRoaXMgZml4LCB3ZSBjYW5u
b3QgZ2V0IGNvbXBsZXRlIGZpcmVidWcgYXBpIHN1cHBvcnQgZm9yIGNvbnNvbGUgbG9nLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENhbGxTdGFjazo6U2NyaXB0Q2FsbFN0YWNrKToKKyAgICAgICAgKiBwYWdlL0Nv
bnNvbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TWVzc2FnZVNvdXJjZUFuZExldmVsUHJl
Zml4KToKKyAgICAgICAgKFdlYkNvcmU6OnByaW50TWVzc2FnZVNvdXJjZUFuZExldmVsUHJlZml4
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmFkZE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29uc29sZTo6Z2V0QWxsQXJndW1lbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29uc29sZTo6bWFrZVN0cmluZ0Zyb21PYmopOgorICAgICAgICAqIHBhZ2UvQ29uc29sZS5o
OgorCiAyMDA5LTA5LTE2ICBHcmVnIEJvbHNpbmdhICA8Ym9sc2luZ2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBFTkFCTEUoRFJBR19TVVBQT1JUKQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDYWxsU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q2FsbFN0YWNrLmNwcAkocmV2aXNpb24gNDgzMDApCisrKyBXZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDE1ICs1MywxNCBA
QCBTY3JpcHRDYWxsU3RhY2s6OlNjcmlwdENhbGxTdGFjayhFeGVjU3RhCiAgICAgSlNWYWx1ZSBm
dW5jdGlvbjsKIAogICAgIGV4ZWMtPmludGVycHJldGVyKCktPnJldHJpZXZlTGFzdENhbGxlcihl
eGVjLCBzaWduZWRMaW5lTnVtYmVyLCBzb3VyY2VJRCwgdXJsU3RyaW5nLCBmdW5jdGlvbik7Ci0K
KyAgICB1bnNpZ25lZCBsaW5lTnVtYmVyID0gc2lnbmVkTGluZU51bWJlciA+PSAwID8gc2lnbmVk
TGluZU51bWJlciA6IDA7CiAgICAgaWYgKGZ1bmN0aW9uKSB7CiAgICAgICAgIG1fY2FsbGVyID0g
YXNJbnRlcm5hbEZ1bmN0aW9uKGZ1bmN0aW9uKTsKLSAgICAgICAgdW5zaWduZWQgbGluZU51bWJl
ciA9IHNpZ25lZExpbmVOdW1iZXIgPj0gMCA/IHNpZ25lZExpbmVOdW1iZXIgOiAwOwogICAgICAg
ICBtX2ZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKG1fY2FsbGVyLT5uYW1lKCZtX2V4ZWMt
Pmdsb2JhbERhdGEoKSksIHVybFN0cmluZywgbGluZU51bWJlciwgYXJncywgc2tpcEFyZ3VtZW50
Q291bnQpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBDYWxsZXIgaXMgdW5rbm93biwgYnV0
IHdlIHNob3VsZCBzdGlsbCBhZGQgdGhlIGZyYW1lLCBiZWNhdXNlCiAgICAgICAgIC8vIHNvbWV0
aGluZyBjYWxsZWQgdXMsIGFuZCBnYXZlIHVzIGFyZ3VtZW50cy4KLSAgICAgICAgbV9mcmFtZXMu
YXBwZW5kKFNjcmlwdENhbGxGcmFtZShVU3RyaW5nKCksIFVTdHJpbmcoKSwgMCwgYXJncywgc2tp
cEFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgbV9mcmFtZXMuYXBwZW5kKFNjcmlwdENhbGxGcmFt
ZShVU3RyaW5nKCksIHVybFN0cmluZywgbGluZU51bWJlciwgYXJncywgc2tpcEFyZ3VtZW50Q291
bnQpKTsKICAgICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAJKHJldmlzaW9uIDQ4MzAwKQorKysgV2Vi
Q29yZS9wYWdlL0NvbnNvbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAK
ICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1
ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODcs
OSArODgsOSBAQCBzdGF0aWMgYm9vbCBnZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcoU2NyCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHByaW50TWVzc2FnZVNvdXJjZUFuZExldmVs
UHJlZml4KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwpCit2b2lkIGdl
dE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeChNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2Fn
ZUxldmVsIGxldmVsLCBTdHJpbmcmIHNvdXJjZVN0cmluZywgU3RyaW5nJiBsZXZlbFN0cmluZykK
IHsKLSAgICBjb25zdCBjaGFyKiBzb3VyY2VTdHJpbmc7CisKICAgICBzd2l0Y2ggKHNvdXJjZSkg
ewogICAgIGNhc2UgSFRNTE1lc3NhZ2VTb3VyY2U6CiAgICAgICAgIHNvdXJjZVN0cmluZyA9ICJI
VE1MIjsKQEAgLTExNCw4ICsxMTUsNyBAQCBzdGF0aWMgdm9pZCBwcmludE1lc3NhZ2VTb3VyY2VB
bmRMZXZlbFByCiAgICAgICAgIHNvdXJjZVN0cmluZyA9ICJVTktOT1dOIjsKICAgICAgICAgYnJl
YWs7CiAgICAgfQotCi0gICAgY29uc3QgY2hhciogbGV2ZWxTdHJpbmc7CisgICAgCiAgICAgc3dp
dGNoIChsZXZlbCkgewogICAgIGNhc2UgVGlwTWVzc2FnZUxldmVsOgogICAgICAgICBsZXZlbFN0
cmluZyA9ICJUSVAiOwpAQCAtMTM4LDYgKzEzOCwxNiBAQCBzdGF0aWMgdm9pZCBwcmludE1lc3Nh
Z2VTb3VyY2VBbmRMZXZlbFByCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorCit9CisKK3N0YXRp
YyB2b2lkIHByaW50TWVzc2FnZVNvdXJjZUFuZExldmVsUHJlZml4KE1lc3NhZ2VTb3VyY2Ugc291
cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwpCit7CisgICAgU3RyaW5nIHNvdXJjZVN0cmluZzsKKyAg
ICBTdHJpbmcgbGV2ZWxTdHJpbmc7CisKKyAgICBnZXRNZXNzYWdlU291cmNlQW5kTGV2ZWxQcmVm
aXgoc291cmNlLGxldmVsLHNvdXJjZVN0cmluZyxsZXZlbFN0cmluZyk7CisKICAgICBwcmludGYo
IiVzICVzOiIsIHNvdXJjZVN0cmluZywgbGV2ZWxTdHJpbmcpOwogfQogCkBAIC0xNzMsNyArMTgz
LDggQEAgdm9pZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VUeXBlIHR5cAogICAgICAgICBy
ZXR1cm47CiAKICAgICBTdHJpbmcgbWVzc2FnZTsKLSAgICBpZiAoZ2V0Rmlyc3RBcmd1bWVudEFz
U3RyaW5nKGNhbGxTdGFjay0+c3RhdGUoKSwgbGFzdENhbGxlciwgbWVzc2FnZSkpCisgICAgZ2V0
QWxsQXJndW1lbnRzQXNTdHJpbmcoY2FsbFN0YWNrLG1lc3NhZ2UpOworICAgIGlmKCFtZXNzYWdl
LmlzRW1wdHkoKSkKICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5hZGRNZXNzYWdl
VG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxhc3RDYWxs
ZXIubGluZU51bWJlcigpLCBsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpLnByZXR0eVVSTCgpKTsKIAog
ICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01l
c3NhZ2VTb3VyY2UsIHR5cGUsIGxldmVsLCBjYWxsU3RhY2spOwpAQCAtNDEzLDQgKzQyNCw5NyBA
QCBQYWdlKiBDb25zb2xlOjpwYWdlKCkgY29uc3QKICAgICByZXR1cm4gbV9mcmFtZS0+cGFnZSgp
OwogfQogCit2b2lkIENvbnNvbGU6OmdldEFsbEFyZ3VtZW50c0FzU3RyaW5nKFNjcmlwdENhbGxT
dGFjayogY2FsbFN0YWNrLCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgCisgICAgY29uc3QgU2NyaXB0
Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0gY2FsbFN0YWNrLT5hdCgwKTsKKworICAgIFN0cmluZyBm
U3RyOworICAgIFN0cmluZyBmUGF0dGVybiA9IiVzJWQlZiVvIjsKKyAgICBpbnQgZlBhdHRlcm5M
ZW4gPSAyOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxhc3RDYWxsZXIuYXJndW1l
bnRDb3VudCgpOyArK2kpIHsKKyAgICAgICAgaWYgKGk9PTAgJiYgbGFzdENhbGxlci5hcmd1bWVu
dEF0KGkpLmpzVmFsdWUoKS5pc1N0cmluZygpKSB7CisgICAgICAgICAgICBmU3RyID0gbGFzdENh
bGxlci5hcmd1bWVudEF0KGkpLnRvU3RyaW5nKGNhbGxTdGFjay0+c3RhdGUoKSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBTdHJpbmcgYXJnU3RyOworICAgICAgICAgICAgaW50IGlk
eCA9IDA7CisgICAgICAgICAgICBib29sIHJlcGwgPSBmYWxzZTsKKworICAgICAgICAgICAgZm9y
IChpbnQgaj0wO2o8ZlBhdHRlcm4ubGVuZ3RoKCk7aj1qK2ZQYXR0ZXJuTGVuKSB7CQkKKyAgICAg
ICAgICAgICAgICBTdHJpbmcgcGF0ID0gZlBhdHRlcm4uc3Vic3RyaW5nKGosZlBhdHRlcm5MZW4p
OworICAgICAgICAgICAgICAgIGlmKGZTdHIuY29udGFpbnMocGF0LGZhbHNlKSl7CisgICAgICAg
ICAgICAgICAgICAgIGlkeCA9IGZTdHIuZmluZChwYXQsMCxmYWxzZSk7CisgICAgICAgICAgICAg
ICAgICAgIGZTdHIucmVtb3ZlKGlkeCxmUGF0dGVybkxlbik7CisgICAgICAgICAgICAgICAgICAg
IHJlcGw9dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobGFzdENhbGxlci5hcmd1bWVudEF0
KGkpLmpzVmFsdWUoKS5pc051bWJlcigpKSB7IAorICAgICAgICAgICAgICAgIGRvdWJsZSBudW07
CisgICAgICAgICAgICAgICAgbGFzdENhbGxlci5hcmd1bWVudEF0KGkpLmpzVmFsdWUoKS5nZXRO
dW1iZXIobnVtKTsKKyAgICAgICAgICAgICAgICBhcmdTdHIgPSBTdHJpbmc6Om51bWJlcihudW0p
OworICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0Q2FsbGVyLmFyZ3VtZW50QXQoaSkuanNWYWx1
ZSgpLmlzU3RyaW5nKCkpIHsgCisgICAgICAgICAgICAgICAgSlNDOjpVU3RyaW5nIG1zZzsKKyAg
ICAgICAgICAgICAgICBsYXN0Q2FsbGVyLmFyZ3VtZW50QXQoaSkuanNWYWx1ZSgpLmdldFN0cmlu
Zyhtc2cpOworICAgICAgICAgICAgICAgIGFyZ1N0ciA9IG1zZy5hc2NpaSgpOworICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdENhbGxlci5hcmd1bWVudEF0
KGkpLmpzVmFsdWUoKS5pc09iamVjdCgpKSB7IAorICAgICAgICAgICAgICAgIEpTQzo6SlNWYWx1
ZSBvYmpWYWwgPSBsYXN0Q2FsbGVyLmFyZ3VtZW50QXQoaSkuanNWYWx1ZSgpOworICAgICAgICAg
ICAgICAgIG1ha2VTdHJpbmdGcm9tT2JqKG9ialZhbCxhcmdTdHIpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAocmVwbCkKKyAgICAgICAgICAgICAgICBmU3RyLmluc2VydChhcmdT
dHIsaWR4KTsKKyAgICAgICAgICAgIGVsc2UgCisgICAgICAgICAgICAgICAgZlN0ciArPSBhcmdT
dHI7CisKKyAgICAgICAgICAgIHJlcGwgIT0gcmVwbDsKKyAgICAgICAgfQorICAgIH0KKyAgICBt
ZXNzYWdlID0gZlN0cjsKK30KKwordm9pZCBDb25zb2xlOjptYWtlU3RyaW5nRnJvbU9iaihKU0M6
OkpTVmFsdWUmIGpzVmFsLFN0cmluZyYgYXJnU3RyKQoreworICAgIGlmIChqc1ZhbC5pc09iamVj
dCgpKSB7IAorICAgICAgICBTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQgPSBtX2ZyYW1lLT5zY3Jp
cHQoKTsKKyAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBzY3JpcHQtPmdsb2JhbE9iamVj
dCgpLT5nbG9iYWxFeGVjKCk7CisgICAgICAgIEpTQzo6SlNPYmplY3QgKm15T2JqID0ganNWYWwu
Z2V0T2JqZWN0KCk7CisgICAgICAgIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkgcHJvcE5hbWVzKGV4
ZWMpOworICAgICAgICBteU9iai0+Z2V0UHJvcGVydHlOYW1lcyhleGVjLHByb3BOYW1lcyk7Cisg
ICAgICAgIGlmIChwcm9wTmFtZXMuc2l6ZSgpPT0wKSB7CisgICAgICAgICAgICAvLyBlbXB0eSBv
YmplY3QKKyAgICAgICAgICAgIEpTQzo6VVN0cmluZyBtc2c7CisgICAgICAgICAgICBqc1ZhbC5n
ZXRTdHJpbmcobXNnKTsKKyAgICAgICAgICAgIFN0cmluZyB0bXAgPSBtc2cuZGF0YSgpOworICAg
ICAgICAgICAgU3RyaW5nIHByb3BsZXNzT2JqU3RyOworICAgICAgICAgICAgcHJvcGxlc3NPYmpT
dHIgPSBqc1ZhbC50b1N0cmluZyhleGVjKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGFyZ1N0ciArPSAiT2JqZWN0WyI7CisgICAgICAgIGZvciAoSlNDOjpQcm9w
ZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwcm9wTmFtZXMuYmVnaW4oKTsgaXQg
IT0gcHJvcE5hbWVzLmVuZCgpOyBpdCsrKSB7CisgICAgICAgICAgICBKU0M6OkpTVmFsdWUgcHJv
cCA9IG15T2JqLT5nZXQoZXhlYywqaXQpOworICAgICAgICAgICAgU3RyaW5nIHRtcERhdGEgPSBp
dC0+YXNjaWkoKTsKKyAgICAgICAgICAgIGlmIChwcm9wLmlzU3RyaW5nKCkpIHsKKyAgICAgICAg
ICAgICAgICBhcmdTdHIgKz0gIHRtcERhdGE7CisgICAgICAgICAgICAgICAgdG1wRGF0YSA9IHBy
b3AuZ2V0U3RyaW5nKCkuYXNjaWkoKTsKKyAgICAgICAgICAgICAgICBhcmdTdHIgKz0gIj0iICsg
dG1wRGF0YTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcC5pc051bWJlcigpKSB7CisgICAg
ICAgICAgICAgICAgYXJnU3RyICs9IHRtcERhdGE7CisgICAgICAgICAgICAgICAgZG91YmxlIG51
bTE7CisgICAgICAgICAgICAgICAgcHJvcC5nZXROdW1iZXIobnVtMSk7CisgICAgICAgICAgICAg
ICAgYXJnU3RyICs9ICI9IiArIFN0cmluZzo6bnVtYmVyKG51bTEpOworICAgICAgICAgICAgfSBl
bHNlIGlmKHByb3AuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgICAgIG1ha2VTdHJpbmdGcm9t
T2JqKHByb3AsYXJnU3RyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFyZ1N0ciArPSAi
OyI7CisgICAgICAgIH0KKyAgICAgICAgYXJnU3RyICs9ICJdIjsKKyAgICB9CisgICAgcmV0dXJu
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvQ29uc29s
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Db25zb2xlLmgJKHJldmlzaW9uIDQ4MzAw
KQorKysgV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzEx
Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICBpbmxpbmUg
UGFnZSogcGFnZSgpIGNvbnN0OwogICAgICAgICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVR5cGUs
IE1lc3NhZ2VMZXZlbCwgU2NyaXB0Q2FsbFN0YWNrKiwgYm9vbCBhY2NlcHROb0FyZ3VtZW50cyA9
IGZhbHNlKTsKKyAgICAgICAgdm9pZCBnZXRBbGxBcmd1bWVudHNBc1N0cmluZyhTY3JpcHRDYWxs
U3RhY2sqIGNhbGxTdGFjaywgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICAgICAgdm9pZCBtYWtlU3Ry
aW5nRnJvbU9iaihKU0M6OkpTVmFsdWUmICwgU3RyaW5nJiBtc2cpOwogCiAgICAgICAgIENvbnNv
bGUoRnJhbWUqKTsKIApAQCAtMTI0LDYgKzEyNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgUHJvZmlsZXNBcnJheSBtX3Byb2ZpbGVzOwogI2VuZGlmCiAgICAgfTsKKyAgICB2b2lk
IGdldE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeChNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZUxldmVsIGxldmVsLCBTdHJpbmcmIHNvdXJjZVN0cmluZywgU3RyaW5nJiBsZXZlbFN0cmlu
Zyk7CisKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ4NDI2KQor
KysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisy
MDA5LTA5LTE2ICBSYWdoYXZhbiBHb3BhbCAgPGdvcGFsLjEucmFnaGF2YW5Abm9raWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjA4MworICAgICAgICBGaXggZm9yIGZv
cm1hdHRpbmcgamF2YXNjcmlwdCBjb25zb2xlIG1lc3NhZ2UgYW5kIGhhbmRsaW5nIGZpcmVidWcg
YXBpIAorICAgICAgICBXaXRob3V0IHRoaXMgZml4IHdlIHdpbGwgb25seSBiZSBhYmxlIHRvIGdl
dCBmaXJzdCBhcmd1bWVudCBmb3IgY29uc29sZSBtZXNzYWdlcy4KKyAgICAgICAgQWxzbywgY3Vy
cmVudCBpbXBsZW1lbnQgZG9lcyBub3QgaGFuZGxlICVvICVkIGV0Yy4sIHByb3Blcmx5LgorICAg
ICAgICBUaGlzIGZpeCBhZGRyZXNzZXMgYWxsIHRoZXNlIGlzc3VlcyBhbmQgcHJvdmlkZXMgYSBj
bGVhbiBmb3JtYXR0ZWQgc3RyaW5nLgorICAgICAgICBPbiBTNjAgcGhvbmUgZGV2aWNlcywgd2Ug
YXJlIHVzaW5nIHRoaXMgYXBpIHRvIGRpc3BsYXkgb3IgbG9nIHRvIGZpbGUgIGNvbnNvbGUgbWVz
c2FnZS4gV2l0aG91dAorICAgICAgICB0aGlzIGZpeCwgd2UgY2Fubm90IGdldCBjb21wbGV0ZSBm
aXJlYnVnIGFwaSBzdXBwb3J0IGZvciBjb25zb2xlIGxvZy4KKworCisKKyAgICAgICAgKiBBcGkv
cXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OmphdmFTY3JpcHRDb25zb2xlTWVzc2Fn
ZSk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ6OmFk
ZE1lc3NhZ2VUb0NvbnNvbGUpOgorCiAyMDA5LTA5LTE2ICBBbmRyYXMgQmVjc2kgIDxhbmRyZXdi
ZWNzaUB5YWhvby5jby51az4KIAogICAgICAgICBSdWJiZXJzdGFtcGVkIGJ5IEtlbm5ldGggQ2hy
aXN0aWFuc2VuLgpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDQ4MzAwKQorKysgV2ViS2l0
L3F0L0FwaS9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NzUsMTEgKzE1NzUsMTMg
QEAgUVdpZGdldCAqUVdlYlBhZ2U6OnZpZXcoKSBjb25zdAogCiAgICAgVGhlIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24gcHJpbnRzIG5vdGhpbmcuCiAqLwotdm9pZCBRV2ViUGFnZTo6amF2YVNjcmlw
dENvbnNvbGVNZXNzYWdlKGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBj
b25zdCBRU3RyaW5nJiBzb3VyY2VJRCkKK3ZvaWQgUVdlYlBhZ2U6OmphdmFTY3JpcHRDb25zb2xl
TWVzc2FnZShjb25zdCBRU3RyaW5nJiBtZXNzYWdlU291cmNlLCBjb25zdCBRU3RyaW5nJiBtZXNz
YWdlTGV2ZWwsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBR
U3RyaW5nJiBzb3VyY2VJRCkKIHsKICAgICBRX1VOVVNFRChtZXNzYWdlKQogICAgIFFfVU5VU0VE
KGxpbmVOdW1iZXIpCiAgICAgUV9VTlVTRUQoc291cmNlSUQpCisgICAgUV9VTlVTRUQobWVzc2Fn
ZVNvdXJjZSkKKyAgICBRX1VOVVNFRChtZXNzYWdlTGV2ZWwpCiB9CiAKIC8qIQpJbmRleDogV2Vi
S2l0L3F0L0FwaS9xd2VicGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuaAkocmV2aXNpb24gNDgzMDApCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzOCw3ICszMzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lk
IGphdmFTY3JpcHRBbGVydChRV2ViRnJhbWUgKm9yaWdpbmF0aW5nRnJhbWUsIGNvbnN0IFFTdHJp
bmcmIG1zZyk7CiAgICAgdmlydHVhbCBib29sIGphdmFTY3JpcHRDb25maXJtKFFXZWJGcmFtZSAq
b3JpZ2luYXRpbmdGcmFtZSwgY29uc3QgUVN0cmluZyYgbXNnKTsKICAgICB2aXJ0dWFsIGJvb2wg
amF2YVNjcmlwdFByb21wdChRV2ViRnJhbWUgKm9yaWdpbmF0aW5nRnJhbWUsIGNvbnN0IFFTdHJp
bmcmIG1zZywgY29uc3QgUVN0cmluZyYgZGVmYXVsdFZhbHVlLCBRU3RyaW5nKiByZXN1bHQpOwot
ICAgIHZpcnR1YWwgdm9pZCBqYXZhU2NyaXB0Q29uc29sZU1lc3NhZ2UoY29uc3QgUVN0cmluZyYg
bWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFFTdHJpbmcmIHNvdXJjZUlEKTsKKyAgICB2
aXJ0dWFsIHZvaWQgamF2YVNjcmlwdENvbnNvbGVNZXNzYWdlKGNvbnN0IFFTdHJpbmcmIG1lc3Nh
Z2VTb3VyY2UsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2VMZXZlbCwgY29uc3QgUVN0cmluZyYgbWVz
c2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFFTdHJpbmcmIHNvdXJjZUlEKTsKIAogICAgIHZp
cnR1YWwgUVN0cmluZyB1c2VyQWdlbnRGb3JVcmwoY29uc3QgUVVybCYgdXJsKSBjb25zdDsKIApJ
bmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCShyZXZp
c2lvbiA0ODMwMCkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOSwxMiArMjI5LDIzIEBAIHZvaWQgQ2hyb21lQ2xpZW50
UXQ6OnNldFJlc2l6YWJsZShib29sKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQg
Q2hyb21lQ2xpZW50UXQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLAordm9pZCBDaHJvbWVD
bGllbnRRdDo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSAsIE1lc3Nh
Z2VUeXBlLE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCkKIHsKLSAgICBRU3RyaW5nIHggPSBtZXNzYWdlOwot
ICAgIFFTdHJpbmcgeSA9IHNvdXJjZUlEOwotICAgIG1fd2ViUGFnZS0+amF2YVNjcmlwdENvbnNv
bGVNZXNzYWdlKHgsIGxpbmVOdW1iZXIsIHkpOworICAgIFFTdHJpbmcgbXNnID0gbWVzc2FnZTsK
KyAgICBRU3RyaW5nIHNyY0lkID0gc291cmNlSUQ7CisgICAgdW5zaWduZWQgbGluTnVtID0gbGlu
ZU51bWJlcjsKKworCisgICAgU3RyaW5nIHNyY1N0cmluZzsKKyAgICBTdHJpbmcgbGV2U3RyaW5n
OworICAgIAorICAgIGdldE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeChzb3VyY2UsbGV2ZWws
c3JjU3RyaW5nLGxldlN0cmluZyk7CisKKyAgICBRU3RyaW5nIHNvdXJjZVN0cmluZyA9IHNyY1N0
cmluZzsKKyAgICBRU3RyaW5nIGxldmVsU3RyaW5nID0gbGV2U3RyaW5nOworCisgICAgbV93ZWJQ
YWdlLT5qYXZhU2NyaXB0Q29uc29sZU1lc3NhZ2Uoc291cmNlU3RyaW5nLGxldmVsU3RyaW5nLCBt
c2csIGxpbk51bSwgc3JjSWQpOwogfQogCiB2b2lkIENocm9tZUNsaWVudFF0OjpjaHJvbWVEZXN0
cm95ZWQoKQo=
</data>
<flag name="review"
          id="21247"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41397</attachid>
            <date>2009-10-18 22:38:17 -0700</date>
            <delta_ts>2010-06-10 20:42:33 -0700</delta_ts>
            <desc>Fix for formatted js console log message. Fixed some style issues as suggested by Adam Barth.</desc>
            <filename>26083b.patch</filename>
            <type>text/plain</type>
            <size>12467</size>
            <attacher name="Gopal Raghavan">gop.rag</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODQyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMDktMDktMTYgIFJhZ2hhdmFuIEdvcGFsICA8Z29wYWwuMS5yYWdo
YXZhbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MDgzCisg
ICAgICAgIEZpeCBmb3IgZm9ybWF0dGluZyBqYXZhc2NyaXB0IGNvbnNvbGUgbWVzc2FnZSBhbmQg
aGFuZGxpbmcgZmlyZWJ1ZyBhcGkgCisgICAgICAgIFdpdGhvdXQgdGhpcyBmaXggd2Ugd2lsbCBv
bmx5IGJlIGFibGUgdG8gZ2V0IGZpcnN0IGFyZ3VtZW50IGZvciBjb25zb2xlIG1lc3NhZ2VzLgor
ICAgICAgICBBbHNvLCBjdXJyZW50IGltcGxlbWVudCBkb2VzIG5vdCBoYW5kbGUgJW8gJWQgZXRj
LiwgcHJvcGVybHkuCisgICAgICAgIFRoaXMgZml4IGFkZHJlc3NlcyBhbGwgdGhlc2UgaXNzdWVz
IGFuZCBwcm92aWRlcyBhIGNsZWFuIGZvcm1hdHRlZCBzdHJpbmcuCisgICAgICAgIE9uIFM2MCBw
aG9uZSBkZXZpY2VzLCB3ZSBhcmUgdXNpbmcgdGhpcyBhcGkgdG8gZGlzcGxheSBvciBsb2cgdG8g
ZmlsZSAgY29uc29sZSBtZXNzYWdlLiBXaXRob3V0CisgICAgICAgIHRoaXMgZml4LCB3ZSBjYW5u
b3QgZ2V0IGNvbXBsZXRlIGZpcmVidWcgYXBpIHN1cHBvcnQgZm9yIGNvbnNvbGUgbG9nLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENhbGxTdGFjazo6U2NyaXB0Q2FsbFN0YWNrKToKKyAgICAgICAgKiBwYWdlL0Nv
bnNvbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TWVzc2FnZVNvdXJjZUFuZExldmVsUHJl
Zml4KToKKyAgICAgICAgKFdlYkNvcmU6OnByaW50TWVzc2FnZVNvdXJjZUFuZExldmVsUHJlZml4
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmFkZE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29uc29sZTo6Z2V0QWxsQXJndW1lbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29uc29sZTo6bWFrZVN0cmluZ0Zyb21PYmopOgorICAgICAgICAqIHBhZ2UvQ29uc29sZS5o
OgorCiAyMDA5LTA5LTE2ICBHcmVnIEJvbHNpbmdhICA8Ym9sc2luZ2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBFTkFCTEUoRFJBR19TVVBQT1JUKQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDYWxsU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q2FsbFN0YWNrLmNwcAkocmV2aXNpb24gNDgzMDApCisrKyBXZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDE1ICs1MywxNCBA
QCBTY3JpcHRDYWxsU3RhY2s6OlNjcmlwdENhbGxTdGFjayhFeGVjU3RhCiAgICAgSlNWYWx1ZSBm
dW5jdGlvbjsKIAogICAgIGV4ZWMtPmludGVycHJldGVyKCktPnJldHJpZXZlTGFzdENhbGxlcihl
eGVjLCBzaWduZWRMaW5lTnVtYmVyLCBzb3VyY2VJRCwgdXJsU3RyaW5nLCBmdW5jdGlvbik7Ci0K
KyAgICB1bnNpZ25lZCBsaW5lTnVtYmVyID0gc2lnbmVkTGluZU51bWJlciA+PSAwID8gc2lnbmVk
TGluZU51bWJlciA6IDA7CiAgICAgaWYgKGZ1bmN0aW9uKSB7CiAgICAgICAgIG1fY2FsbGVyID0g
YXNJbnRlcm5hbEZ1bmN0aW9uKGZ1bmN0aW9uKTsKLSAgICAgICAgdW5zaWduZWQgbGluZU51bWJl
ciA9IHNpZ25lZExpbmVOdW1iZXIgPj0gMCA/IHNpZ25lZExpbmVOdW1iZXIgOiAwOwogICAgICAg
ICBtX2ZyYW1lcy5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKG1fY2FsbGVyLT5uYW1lKCZtX2V4ZWMt
Pmdsb2JhbERhdGEoKSksIHVybFN0cmluZywgbGluZU51bWJlciwgYXJncywgc2tpcEFyZ3VtZW50
Q291bnQpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBDYWxsZXIgaXMgdW5rbm93biwgYnV0
IHdlIHNob3VsZCBzdGlsbCBhZGQgdGhlIGZyYW1lLCBiZWNhdXNlCiAgICAgICAgIC8vIHNvbWV0
aGluZyBjYWxsZWQgdXMsIGFuZCBnYXZlIHVzIGFyZ3VtZW50cy4KLSAgICAgICAgbV9mcmFtZXMu
YXBwZW5kKFNjcmlwdENhbGxGcmFtZShVU3RyaW5nKCksIFVTdHJpbmcoKSwgMCwgYXJncywgc2tp
cEFyZ3VtZW50Q291bnQpKTsKKyAgICAgICAgbV9mcmFtZXMuYXBwZW5kKFNjcmlwdENhbGxGcmFt
ZShVU3RyaW5nKCksIHVybFN0cmluZywgbGluZU51bWJlciwgYXJncywgc2tpcEFyZ3VtZW50Q291
bnQpKTsKICAgICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAJKHJldmlzaW9uIDQ4MzAwKQorKysgV2Vi
Q29yZS9wYWdlL0NvbnNvbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAK
ICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1
ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODcs
OSArODgsOSBAQCBzdGF0aWMgYm9vbCBnZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcoU2NyCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHByaW50TWVzc2FnZVNvdXJjZUFuZExldmVs
UHJlZml4KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwpCit2b2lkIGdl
dE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeChNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2Fn
ZUxldmVsIGxldmVsLCBTdHJpbmcmIHNvdXJjZVN0cmluZywgU3RyaW5nJiBsZXZlbFN0cmluZykK
IHsKLSAgICBjb25zdCBjaGFyKiBzb3VyY2VTdHJpbmc7CisKICAgICBzd2l0Y2ggKHNvdXJjZSkg
ewogICAgIGNhc2UgSFRNTE1lc3NhZ2VTb3VyY2U6CiAgICAgICAgIHNvdXJjZVN0cmluZyA9ICJI
VE1MIjsKQEAgLTExNCw4ICsxMTUsNyBAQCBzdGF0aWMgdm9pZCBwcmludE1lc3NhZ2VTb3VyY2VB
bmRMZXZlbFByCiAgICAgICAgIHNvdXJjZVN0cmluZyA9ICJVTktOT1dOIjsKICAgICAgICAgYnJl
YWs7CiAgICAgfQotCi0gICAgY29uc3QgY2hhciogbGV2ZWxTdHJpbmc7CisgICAgCiAgICAgc3dp
dGNoIChsZXZlbCkgewogICAgIGNhc2UgVGlwTWVzc2FnZUxldmVsOgogICAgICAgICBsZXZlbFN0
cmluZyA9ICJUSVAiOwpAQCAtMTM4LDYgKzEzOCwxNiBAQCBzdGF0aWMgdm9pZCBwcmludE1lc3Nh
Z2VTb3VyY2VBbmRMZXZlbFByCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorCit9CisKK3N0YXRp
YyB2b2lkIHByaW50TWVzc2FnZVNvdXJjZUFuZExldmVsUHJlZml4KE1lc3NhZ2VTb3VyY2Ugc291
cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwpCit7CisgICAgU3RyaW5nIHNvdXJjZVN0cmluZzsKKyAg
ICBTdHJpbmcgbGV2ZWxTdHJpbmc7CisKKyAgICBnZXRNZXNzYWdlU291cmNlQW5kTGV2ZWxQcmVm
aXgoc291cmNlLCBsZXZlbCwgc291cmNlU3RyaW5nLCBsZXZlbFN0cmluZyk7CisKICAgICBwcmlu
dGYoIiVzICVzOiIsIHNvdXJjZVN0cmluZywgbGV2ZWxTdHJpbmcpOwogfQogCkBAIC0xNzMsNyAr
MTgzLDggQEAgdm9pZCBDb25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VUeXBlIHR5cAogICAgICAg
ICByZXR1cm47CiAKICAgICBTdHJpbmcgbWVzc2FnZTsKLSAgICBpZiAoZ2V0Rmlyc3RBcmd1bWVu
dEFzU3RyaW5nKGNhbGxTdGFjay0+c3RhdGUoKSwgbGFzdENhbGxlciwgbWVzc2FnZSkpCisgICAg
Z2V0QWxsQXJndW1lbnRzQXNTdHJpbmcoY2FsbFN0YWNrLCBtZXNzYWdlKTsKKyAgICBpZighbWVz
c2FnZS5pc0VtcHR5KCkpCiAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+YWRkTWVz
c2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsYXN0
Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5zb3VyY2VVUkwoKS5wcmV0dHlVUkwoKSk7
CiAKICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUo
SlNNZXNzYWdlU291cmNlLCB0eXBlLCBsZXZlbCwgY2FsbFN0YWNrKTsKQEAgLTQxMyw0ICs0MjQs
OTcgQEAgUGFnZSogQ29uc29sZTo6cGFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZnJhbWUtPnBh
Z2UoKTsKIH0KIAordm9pZCBDb25zb2xlOjpnZXRBbGxBcmd1bWVudHNBc1N0cmluZyhTY3JpcHRD
YWxsU3RhY2sqIGNhbGxTdGFjaywgU3RyaW5nJiBtZXNzYWdlKQoreworIAorICAgIGNvbnN0IFNj
cmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxTdGFjay0+YXQoMCk7CisKKyAgICBTdHJp
bmcgZlN0cjsKKyAgICBTdHJpbmcgZlBhdHRlcm4gPSIlcyVkJWYlbyI7CisgICAgaW50IGZQYXR0
ZXJuTGVuID0gMjsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsYXN0Q2FsbGVyLmFy
Z3VtZW50Q291bnQoKTsgKytpKSB7CisgICAgICAgIGlmIChpID09IDAgJiYgbGFzdENhbGxlci5h
cmd1bWVudEF0KGkpLmpzVmFsdWUoKS5pc1N0cmluZygpKSB7CisgICAgICAgICAgICBmU3RyID0g
bGFzdENhbGxlci5hcmd1bWVudEF0KGkpLnRvU3RyaW5nKGNhbGxTdGFjay0+c3RhdGUoKSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBTdHJpbmcgYXJnU3RyOworICAgICAgICAgICAg
aW50IGlkeCA9IDA7CisgICAgICAgICAgICBib29sIHJlcGwgPSBmYWxzZTsKKworICAgICAgICAg
ICAgZm9yIChpbnQgaiA9IDA7IGo8ZlBhdHRlcm4ubGVuZ3RoKCk7IGogPSBqICsgZlBhdHRlcm5M
ZW4pIHsJCQorICAgICAgICAgICAgICAgIFN0cmluZyBwYXQgPSBmUGF0dGVybi5zdWJzdHJpbmco
aiwgZlBhdHRlcm5MZW4pOworICAgICAgICAgICAgICAgIGlmIChmU3RyLmNvbnRhaW5zKHBhdCwg
ZmFsc2UpKXsKKyAgICAgICAgICAgICAgICAgICAgaWR4ID0gZlN0ci5maW5kKHBhdCwgMCwgZmFs
c2UpOworICAgICAgICAgICAgICAgICAgICBmU3RyLnJlbW92ZShpZHgsIGZQYXR0ZXJuTGVuKTsK
KyAgICAgICAgICAgICAgICAgICAgcmVwbCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KGxhc3RDYWxsZXIuYXJndW1lbnRBdChpKS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkgeyAKKyAgICAg
ICAgICAgICAgICBkb3VibGUgbnVtOworICAgICAgICAgICAgICAgIGxhc3RDYWxsZXIuYXJndW1l
bnRBdChpKS5qc1ZhbHVlKCkuZ2V0TnVtYmVyKG51bSk7CisgICAgICAgICAgICAgICAgYXJnU3Ry
ID0gU3RyaW5nOjpudW1iZXIobnVtKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdENhbGxl
ci5hcmd1bWVudEF0KGkpLmpzVmFsdWUoKS5pc1N0cmluZygpKSB7IAorICAgICAgICAgICAgICAg
IEpTQzo6VVN0cmluZyBtc2c7CisgICAgICAgICAgICAgICAgbGFzdENhbGxlci5hcmd1bWVudEF0
KGkpLmpzVmFsdWUoKS5nZXRTdHJpbmcobXNnKTsKKyAgICAgICAgICAgICAgICBhcmdTdHIgPSBt
c2cuYXNjaWkoKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9IGVsc2UgaWYg
KGxhc3RDYWxsZXIuYXJndW1lbnRBdChpKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSkgeyAKKyAgICAg
ICAgICAgICAgICBKU0M6OkpTVmFsdWUgb2JqVmFsID0gbGFzdENhbGxlci5hcmd1bWVudEF0KGkp
LmpzVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBtYWtlU3RyaW5nRnJvbU9iaihvYmpWYWwsIGFy
Z1N0cik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChyZXBsKQorICAgICAgICAg
ICAgICAgIGZTdHIuaW5zZXJ0KGFyZ1N0ciwgaWR4KTsKKyAgICAgICAgICAgIGVsc2UgCisgICAg
ICAgICAgICAgICAgZlN0ciArPSBhcmdTdHI7CisKKyAgICAgICAgICAgIHJlcGwgIT0gcmVwbDsK
KyAgICAgICAgfQorICAgIH0KKyAgICBtZXNzYWdlID0gZlN0cjsKK30KKwordm9pZCBDb25zb2xl
OjptYWtlU3RyaW5nRnJvbU9iaihKU0M6OkpTVmFsdWUmIGpzVmFsLCBTdHJpbmcmIGFyZ1N0cikK
K3sKKyAgICBpZiAoanNWYWwuaXNPYmplY3QoKSkgeyAKKyAgICAgICAgU2NyaXB0Q29udHJvbGxl
ciogc2NyaXB0ID0gbV9mcmFtZS0+c2NyaXB0KCk7CisgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBl
eGVjID0gc2NyaXB0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAgICAgICBKU0M6
OkpTT2JqZWN0ICpteU9iaiA9IGpzVmFsLmdldE9iamVjdCgpOworICAgICAgICBKU0M6OlByb3Bl
cnR5TmFtZUFycmF5IHByb3BOYW1lcyhleGVjKTsKKyAgICAgICAgbXlPYmotPmdldFByb3BlcnR5
TmFtZXMoZXhlYywgcHJvcE5hbWVzKTsKKyAgICAgICAgaWYgKHByb3BOYW1lcy5zaXplKCkgPT0g
MCkgeworICAgICAgICAgICAgLy8gZW1wdHkgb2JqZWN0CisgICAgICAgICAgICBKU0M6OlVTdHJp
bmcgbXNnOworICAgICAgICAgICAganNWYWwuZ2V0U3RyaW5nKG1zZyk7CisgICAgICAgICAgICBT
dHJpbmcgdG1wID0gbXNnLmRhdGEoKTsKKyAgICAgICAgICAgIFN0cmluZyBwcm9wbGVzc09ialN0
cjsKKyAgICAgICAgICAgIHByb3BsZXNzT2JqU3RyID0ganNWYWwudG9TdHJpbmcoZXhlYyk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhcmdTdHIgKz0gIk9iamVj
dFsiOworICAgICAgICBmb3IgKEpTQzo6UHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gcHJvcE5hbWVzLmJlZ2luKCk7IGl0ICE9IHByb3BOYW1lcy5lbmQoKTsgaXQrKykgewor
ICAgICAgICAgICAgSlNDOjpKU1ZhbHVlIHByb3AgPSBteU9iai0+Z2V0KGV4ZWMsICppdCk7Cisg
ICAgICAgICAgICBTdHJpbmcgdG1wRGF0YSA9IGl0LT5hc2NpaSgpOworICAgICAgICAgICAgaWYg
KHByb3AuaXNTdHJpbmcoKSkgeworICAgICAgICAgICAgICAgIGFyZ1N0ciArPSAgdG1wRGF0YTsK
KyAgICAgICAgICAgICAgICB0bXBEYXRhID0gcHJvcC5nZXRTdHJpbmcoKS5hc2NpaSgpOworICAg
ICAgICAgICAgICAgIGFyZ1N0ciArPSAiPSIgKyB0bXBEYXRhOworICAgICAgICAgICAgfSBlbHNl
IGlmIChwcm9wLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBhcmdTdHIgKz0gdG1wRGF0
YTsKKyAgICAgICAgICAgICAgICBkb3VibGUgbnVtMTsKKyAgICAgICAgICAgICAgICBwcm9wLmdl
dE51bWJlcihudW0xKTsKKyAgICAgICAgICAgICAgICBhcmdTdHIgKz0gIj0iICsgU3RyaW5nOjpu
dW1iZXIobnVtMSk7CisgICAgICAgICAgICB9IGVsc2UgaWYocHJvcC5pc09iamVjdCgpKSB7Cisg
ICAgICAgICAgICAgICAgbWFrZVN0cmluZ0Zyb21PYmoocHJvcCwgYXJnU3RyKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGFyZ1N0ciArPSAiOyI7CisgICAgICAgIH0KKyAgICAgICAgYXJn
U3RyICs9ICJdIjsKKyAgICB9CisgICAgcmV0dXJuOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvQ29uc29sZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9Db25zb2xlLmgJKHJldmlzaW9uIDQ4MzAwKQorKysgV2ViQ29yZS9wYWdlL0NvbnNvbGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBwcml2YXRlOgogICAgICAgICBpbmxpbmUgUGFnZSogcGFnZSgpIGNvbnN0OwogICAgICAg
ICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgU2NyaXB0Q2FsbFN0
YWNrKiwgYm9vbCBhY2NlcHROb0FyZ3VtZW50cyA9IGZhbHNlKTsKKyAgICAgICAgdm9pZCBnZXRB
bGxBcmd1bWVudHNBc1N0cmluZyhTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaywgU3RyaW5nJiBt
ZXNzYWdlKTsKKyAgICAgICAgdm9pZCBtYWtlU3RyaW5nRnJvbU9iaihKU0M6OkpTVmFsdWUmLCBT
dHJpbmcmIG1zZyk7CiAKICAgICAgICAgQ29uc29sZShGcmFtZSopOwogCkBAIC0xMjQsNiArMTI2
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQcm9maWxlc0FycmF5IG1fcHJvZmls
ZXM7CiAjZW5kaWYKICAgICB9OworICAgIHZvaWQgZ2V0TWVzc2FnZVNvdXJjZUFuZExldmVsUHJl
Zml4KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIFN0cmluZyYgc291
cmNlU3RyaW5nLCBTdHJpbmcmIGxldmVsU3RyaW5nKTsKKwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0
L0NoYW5nZUxvZwkocmV2aXNpb24gNDg0MjYpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMDktMDktMTYgIFJhZ2hhdmFuIEdvcGFsICA8
Z29wYWwuMS5yYWdoYXZhbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI2MDgzCisgICAgICAgIEZpeCBmb3IgZm9ybWF0dGluZyBqYXZhc2NyaXB0IGNvbnNvbGUg
bWVzc2FnZSBhbmQgaGFuZGxpbmcgZmlyZWJ1ZyBhcGkgCisgICAgICAgIFdpdGhvdXQgdGhpcyBm
aXggd2Ugd2lsbCBvbmx5IGJlIGFibGUgdG8gZ2V0IGZpcnN0IGFyZ3VtZW50IGZvciBjb25zb2xl
IG1lc3NhZ2VzLgorICAgICAgICBBbHNvLCBjdXJyZW50IGltcGxlbWVudCBkb2VzIG5vdCBoYW5k
bGUgJW8gJWQgZXRjLiwgcHJvcGVybHkuCisgICAgICAgIFRoaXMgZml4IGFkZHJlc3NlcyBhbGwg
dGhlc2UgaXNzdWVzIGFuZCBwcm92aWRlcyBhIGNsZWFuIGZvcm1hdHRlZCBzdHJpbmcuCisgICAg
ICAgIE9uIFM2MCBwaG9uZSBkZXZpY2VzLCB3ZSBhcmUgdXNpbmcgdGhpcyBhcGkgdG8gZGlzcGxh
eSBvciBsb2cgdG8gZmlsZSAgY29uc29sZSBtZXNzYWdlLiBXaXRob3V0CisgICAgICAgIHRoaXMg
Zml4LCB3ZSBjYW5ub3QgZ2V0IGNvbXBsZXRlIGZpcmVidWcgYXBpIHN1cHBvcnQgZm9yIGNvbnNv
bGUgbG9nLgorCisKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2Vi
UGFnZTo6amF2YVNjcmlwdENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Uu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDo6YWRkTWVzc2FnZVRvQ29uc29sZSk6CisKIDIwMDkt
MDktMTYgIEFuZHJhcyBCZWNzaSAgPGFuZHJld2JlY3NpQHlhaG9vLmNvLnVrPgogCiAgICAgICAg
IFJ1YmJlcnN0YW1wZWQgYnkgS2VubmV0aCBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNw
cAkocmV2aXNpb24gNDgzMDApCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU3NSwxMSArMTU3NSwxMyBAQCBRV2lkZ2V0ICpRV2ViUGFnZTo6dmlldygp
IGNvbnN0CiAKICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBwcmludHMgbm90aGluZy4K
ICovCi12b2lkIFFXZWJQYWdlOjpqYXZhU2NyaXB0Q29uc29sZU1lc3NhZ2UoY29uc3QgUVN0cmlu
ZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFFTdHJpbmcmIHNvdXJjZUlEKQordm9p
ZCBRV2ViUGFnZTo6amF2YVNjcmlwdENvbnNvbGVNZXNzYWdlKGNvbnN0IFFTdHJpbmcmIG1lc3Nh
Z2VTb3VyY2UsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2VMZXZlbCwgY29uc3QgUVN0cmluZyYgbWVz
c2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFFTdHJpbmcmIHNvdXJjZUlEKQogewogICAgIFFf
VU5VU0VEKG1lc3NhZ2UpCiAgICAgUV9VTlVTRUQobGluZU51bWJlcikKICAgICBRX1VOVVNFRChz
b3VyY2VJRCkKKyAgICBRX1VOVVNFRChtZXNzYWdlU291cmNlKQorICAgIFFfVU5VU0VEKG1lc3Nh
Z2VMZXZlbCkKIH0KIAogLyohCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCShyZXZpc2lvbiA0ODMwMCkKKysrIFdl
YktpdC9xdC9BcGkvcXdlYnBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzM4LDcgKzMzOCw3IEBA
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgamF2YVNjcmlwdEFsZXJ0KFFXZWJGcmFtZSAq
b3JpZ2luYXRpbmdGcmFtZSwgY29uc3QgUVN0cmluZyYgbXNnKTsKICAgICB2aXJ0dWFsIGJvb2wg
amF2YVNjcmlwdENvbmZpcm0oUVdlYkZyYW1lICpvcmlnaW5hdGluZ0ZyYW1lLCBjb25zdCBRU3Ry
aW5nJiBtc2cpOwogICAgIHZpcnR1YWwgYm9vbCBqYXZhU2NyaXB0UHJvbXB0KFFXZWJGcmFtZSAq
b3JpZ2luYXRpbmdGcmFtZSwgY29uc3QgUVN0cmluZyYgbXNnLCBjb25zdCBRU3RyaW5nJiBkZWZh
dWx0VmFsdWUsIFFTdHJpbmcqIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIGphdmFTY3JpcHRD
b25zb2xlTWVzc2FnZShjb25zdCBRU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29u
c3QgUVN0cmluZyYgc291cmNlSUQpOworICAgIHZpcnR1YWwgdm9pZCBqYXZhU2NyaXB0Q29uc29s
ZU1lc3NhZ2UoY29uc3QgUVN0cmluZyYgbWVzc2FnZVNvdXJjZSwgY29uc3QgUVN0cmluZyYgbWVz
c2FnZUxldmVsLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3Qg
UVN0cmluZyYgc291cmNlSUQpOwogCiAgICAgdmlydHVhbCBRU3RyaW5nIHVzZXJBZ2VudEZvclVy
bChjb25zdCBRVXJsJiB1cmwpIGNvbnN0OwogCkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRRdC5jcHAJKHJldmlzaW9uIDQ4MzAwKQorKysgV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI5LDEy
ICsyMjksMjMgQEAgdm9pZCBDaHJvbWVDbGllbnRRdDo6c2V0UmVzaXphYmxlKGJvb2wpCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBDaHJvbWVDbGllbnRRdDo6YWRkTWVzc2FnZVRv
Q29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsCit2b2lkIENocm9tZUNsaWVudFF0OjphZGRNZXNzYWdlVG9Db25zb2xl
KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKQog
ewotICAgIFFTdHJpbmcgeCA9IG1lc3NhZ2U7Ci0gICAgUVN0cmluZyB5ID0gc291cmNlSUQ7Ci0g
ICAgbV93ZWJQYWdlLT5qYXZhU2NyaXB0Q29uc29sZU1lc3NhZ2UoeCwgbGluZU51bWJlciwgeSk7
CisgICAgUVN0cmluZyBtc2cgPSBtZXNzYWdlOworICAgIFFTdHJpbmcgc3JjSWQgPSBzb3VyY2VJ
RDsKKyAgICB1bnNpZ25lZCBsaW5OdW0gPSBsaW5lTnVtYmVyOworCisKKyAgICBTdHJpbmcgc3Jj
U3RyaW5nOworICAgIFN0cmluZyBsZXZTdHJpbmc7CisgICAgCisgICAgZ2V0TWVzc2FnZVNvdXJj
ZUFuZExldmVsUHJlZml4KHNvdXJjZSwgbGV2ZWwsIHNyY1N0cmluZywgbGV2U3RyaW5nKTsKKwor
ICAgIFFTdHJpbmcgc291cmNlU3RyaW5nID0gc3JjU3RyaW5nOworICAgIFFTdHJpbmcgbGV2ZWxT
dHJpbmcgPSBsZXZTdHJpbmc7CisKKyAgICBtX3dlYlBhZ2UtPmphdmFTY3JpcHRDb25zb2xlTWVz
c2FnZShzb3VyY2VTdHJpbmcsIGxldmVsU3RyaW5nLCBtc2csIGxpbk51bSwgc3JjSWQpOwogfQog
CiB2b2lkIENocm9tZUNsaWVudFF0OjpjaHJvbWVEZXN0cm95ZWQoKQo=
</data>
<flag name="review"
          id="22770"
          type_id="1"
          status="-"
          setter="laszlo.gombos"
    />
    <flag name="commit-queue"
          id="25723"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72972</attachid>
            <date>2010-11-04 12:35:29 -0700</date>
            <delta_ts>2010-11-04 15:19:46 -0700</delta_ts>
            <desc>Patch against r71350, with fixes to issues raised by Lazlo. Layout tests also added.</desc>
            <filename>26083b.patch</filename>
            <type>text/plain</type>
            <size>19748</size>
            <attacher name="Gopal Raghavan">gopal.1.raghavan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTM1MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMTEtMDQgIEdvcGFsIFJhZ2hhdmFuICA8Z29wYWwuMS5yYWdo
YXZhbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRml4ZXMgYnVnOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjYwODMKKyAgICAgICAgRml4IGZvciBmb3JtYXR0aW5nIGphdmFzY3JpcHQgY29uc29sZSBt
ZXNzYWdlIGFuZCBoYW5kbGluZyBmaXJlYnVnIGFwaS4gCisgICAgICAgIFdpdGhvdXQgdGhpcyBm
aXggd2UgYXJlIG9ubHkgc2VlaW5nIGZpcnN0IGFyZ3VtZW50IGZvciBjb25zb2xlIG1lc3NhZ2Vz
LgorICAgICAgICBBbHNvLCBjdXJyZW50IGltcGxlbWVudCBkb2VzIG5vdCBoYW5kbGUgJW8gJWQg
ZXRjLiwgcHJvcGVybHkuCisgICAgICAgIFRoaXMgZml4IGFkZHJlc3NlcyBhbGwgdGhlc2UgaXNz
dWVzIGFuZCBwcm92aWRlcyBhIGNsZWFuIGZvcm1hdHRlZCBzdHJpbmcuCisgICAgICAgIFRoaXMg
YXBpIGlzIHVzZWQgdG8gZGlzcGxheSBvciBsb2cgdG8gZmlsZSAgY29uc29sZSBtZXNzYWdlcy4g
V2l0aG91dAorICAgICAgICB0aGlzIGZpeCwgd2UgY2Fubm90IGdldCBjb21wbGV0ZSBmaXJlYnVn
IGFwaSBzdXBwb3J0IGZvciBjb25zb2xlIGxvZy4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9X
aW5kb3cvY29uc29sZS1hcGkuaHRtbAorCisgICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmdldE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeCk6CisgICAgICAg
IChXZWJDb3JlOjpwcmludE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb25zb2xlOjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6
OmluZm8pOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6Z2V0QWxsQXJndW1lbnRzQXNTdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6bWFrZVN0cmluZ0Zyb21PYmopOgorICAg
ICAgICAqIHBhZ2UvQ29uc29sZS5oOgorCiAyMDEwLTExLTA0ICBFcmlrIEFydmlkc3NvbiAgPGFy
dkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJ
bmRleDogV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9Db25zb2xlLmNwcAkocmV2aXNpb24gNzEzNDUpCisrKyBXZWJDb3JlL3BhZ2UvQ29uc29sZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDggQEAKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNs
dWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgog
CiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5o
IgpAQCAtOTAsOSArOTIsOSBAQCBzdGF0aWMgYm9vbCBnZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmco
U2NyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHByaW50TWVzc2FnZVNvdXJj
ZUFuZExldmVsUHJlZml4KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwp
Cit2b2lkIGdldE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeChNZXNzYWdlU291cmNlIHNvdXJj
ZSwgTWVzc2FnZUxldmVsIGxldmVsLCBTdHJpbmcmIHNvdXJjZVN0cmluZywgU3RyaW5nJiBsZXZl
bFN0cmluZykKIHsKLSAgICBjb25zdCBjaGFyKiBzb3VyY2VTdHJpbmc7CisKICAgICBzd2l0Y2gg
KHNvdXJjZSkgewogICAgIGNhc2UgSFRNTE1lc3NhZ2VTb3VyY2U6CiAgICAgICAgIHNvdXJjZVN0
cmluZyA9ICJIVE1MIjsKQEAgLTExNyw4ICsxMTksNyBAQCBzdGF0aWMgdm9pZCBwcmludE1lc3Nh
Z2VTb3VyY2VBbmRMZXZlbFByCiAgICAgICAgIHNvdXJjZVN0cmluZyA9ICJVTktOT1dOIjsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQotCi0gICAgY29uc3QgY2hhciogbGV2ZWxTdHJpbmc7CisgICAg
CiAgICAgc3dpdGNoIChsZXZlbCkgewogICAgIGNhc2UgVGlwTWVzc2FnZUxldmVsOgogICAgICAg
ICBsZXZlbFN0cmluZyA9ICJUSVAiOwpAQCAtMTI2LDYgKzEyNyw5IEBAIHN0YXRpYyB2b2lkIHBy
aW50TWVzc2FnZVNvdXJjZUFuZExldmVsUHIKICAgICBjYXNlIExvZ01lc3NhZ2VMZXZlbDoKICAg
ICAgICAgbGV2ZWxTdHJpbmcgPSAiTE9HIjsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbmZv
TWVzc2FnZUxldmVsOgorICAgICAgICBsZXZlbFN0cmluZyA9ICJJTkZPIjsKKyAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBXYXJuaW5nTWVzc2FnZUxldmVsOgogICAgICAgICBsZXZlbFN0cmluZyA9
ICJXQVJOIjsKICAgICAgICAgYnJlYWs7CkBAIC0xNDEsNyArMTQ1LDE3IEBAIHN0YXRpYyB2b2lk
IHByaW50TWVzc2FnZVNvdXJjZUFuZExldmVsUHIKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0g
ICAgcHJpbnRmKCIlcyAlczoiLCBzb3VyY2VTdHJpbmcsIGxldmVsU3RyaW5nKTsKKworfQorCitz
dGF0aWMgdm9pZCBwcmludE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeChNZXNzYWdlU291cmNl
IHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsKQoreworICAgIFN0cmluZyBzb3VyY2VTdHJpbmc7
CisgICAgU3RyaW5nIGxldmVsU3RyaW5nOworCisgICAgZ2V0TWVzc2FnZVNvdXJjZUFuZExldmVs
UHJlZml4KHNvdXJjZSwgbGV2ZWwsIHNvdXJjZVN0cmluZywgbGV2ZWxTdHJpbmcpOworCisgICAg
cHJpbnRmKCIlcyAlczoiLCBzb3VyY2VTdHJpbmcudXRmOCgpLmRhdGEoKSwgbGV2ZWxTdHJpbmcu
dXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlU291
cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKQEAgLTE4MSw4ICsxOTUsOSBAQCB2b2lk
IENvbnNvbGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVR5cGUgdHlwCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFN0cmluZyBtZXNzYWdlOwotICAgIGlmIChnZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcoY2Fs
bFN0YWNrLT5zdGF0ZSgpLCBsYXN0Q2FsbGVyLCBtZXNzYWdlKSkKLSAgICAgICAgcGFnZS0+Y2hy
b21lKCktPmNsaWVudCgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgdHlw
ZSwgbGV2ZWwsIG1lc3NhZ2UsIGxhc3RDYWxsZXIubGluZU51bWJlcigpLCBsYXN0Q2FsbGVyLnNv
dXJjZVVSTCgpKTsKKyAgICBnZXRBbGxBcmd1bWVudHNBc1N0cmluZyhjYWxsU3RhY2ssIG1lc3Nh
Z2UpOworICAgIGlmICghbWVzc2FnZS5pc0VtcHR5KCkpCisgICAgICBwYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCB0eXBlLCBsZXZl
bCwgbWVzc2FnZSwgbGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxhc3RDYWxsZXIuc291cmNlVVJM
KCkpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCB0eXBlLCBsZXZlbCwg
Y2FsbFN0YWNrLCBtZXNzYWdlKTsKQEAgLTIxNSw3ICsyMzAsNyBAQCB2b2lkIENvbnNvbGU6OmVy
cm9yKFNjcmlwdENhbGxTdGFjayogY2FsCiAKIHZvaWQgQ29uc29sZTo6aW5mbyhTY3JpcHRDYWxs
U3RhY2sqIGNhbGxTdGFjaykKIHsKLSAgICBsb2coY2FsbFN0YWNrKTsKKyAgICBhZGRNZXNzYWdl
KExvZ01lc3NhZ2VUeXBlLCBJbmZvTWVzc2FnZUxldmVsLCBjYWxsU3RhY2spOwogfQogCiB2b2lk
IENvbnNvbGU6OmxvZyhTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKQEAgLTQ4Nyw0ICs1MDIs
MTE3IEBAIFBhZ2UqIENvbnNvbGU6OnBhZ2UoKSBjb25zdAogICAgIHJldHVybiBtX2ZyYW1lLT5w
YWdlKCk7CiB9CiAKKy8vICBnZXQgYWxsIHRoZSBhcmd1bWVudHMgaW4gbWVzc2FnZQordm9pZCBD
b25zb2xlOjpnZXRBbGxBcmd1bWVudHNBc1N0cmluZyhTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFj
aywgU3RyaW5nJiBtZXNzYWdlKQoreworIAorICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFz
dENhbGxlciA9IGNhbGxTdGFjay0+YXQoMCk7CisKKyAgICBTdHJpbmcgZlN0cjsgLy8gZm9ybWF0
dGVkIHN0cmluZworICAgIFN0cmluZyBmUGF0dGVybiA9IiVzJWQlaSVmJW8iOyAvLyBmb3JtYXQg
cGF0dGVybnMKKyAgICBpbnQgZlBhdHRlcm5MZW4gPSAyOworCisgICAgLy8gbG9vcCB0aHJvdWdo
IGFsbCBhcmd1bWVudHMKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGFzdENhbGxlci5h
cmd1bWVudENvdW50KCk7ICsraSkgeworICAgICAgICBpZiAoIWkgJiYgbGFzdENhbGxlci5hcmd1
bWVudEF0KGkpLmpzVmFsdWUoKS5pc1N0cmluZygpKSB7CisgICAgICAgICAgIC8vIGdldCBmaXJz
dCBwYXJ0IG9mIHN0cmluZyAKKyAgICAgICAgICAgZlN0ciA9IGxhc3RDYWxsZXIuYXJndW1lbnRB
dChpKS50b1N0cmluZyhjYWxsU3RhY2stPnN0YXRlKCkpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgU3RyaW5nIGFyZ1N0cjsKKyAgICAgICAgICAgIGludCBpZHggPSAwOworICAgICAg
ICAgICAgYm9vbCByZXBsID0gZmFsc2U7IC8vIHNob3VsZCB5b3UgcmVwbGFjZSBmb3JtYXQgcGF0
dGVybiB3aXRoIHZhbHVlCisKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBmUGF0dGVybi5s
ZW5ndGgoKTsgaiA9IGogKyBmUGF0dGVybkxlbikgeworICAgICAgICAgICAgU3RyaW5nIHBhdCA9
IGZQYXR0ZXJuLnN1YnN0cmluZyhqLCBmUGF0dGVybkxlbik7CisgICAgICAgICAgICAvLyBjaGVj
ayBpZiBzdHJpbmcgY29udGFpbnMgZm9ybWF0IHBhdHRlcm5zCisgICAgICAgICAgICBpZiAoZlN0
ci5jb250YWlucyhwYXQsIGZhbHNlKSkgeworICAgICAgICAgICAgICAgICAvLyBmb3VuZCBpdAor
ICAgICAgICAgICAgICAgICBpZHggPSBmU3RyLmZpbmQocGF0LCAwLCBmYWxzZSk7CisgICAgICAg
ICAgICAgICAgIGZTdHIucmVtb3ZlKGlkeCwgZlBhdHRlcm5MZW4pOworICAgICAgICAgICAgICAg
ICByZXBsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAobGFzdENhbGxlci5hcmd1bWVudEF0KGkpLmpzVmFsdWUo
KS5pc051bWJlcigpKSB7IC8vIGhhbmRsZSBudW1iZXJzCisgICAgICAgICAgICAgZG91YmxlIG51
bTsKKyAgICAgICAgICAgICBsYXN0Q2FsbGVyLmFyZ3VtZW50QXQoaSkuanNWYWx1ZSgpLmdldE51
bWJlcihudW0pOworICAgICAgICAgICAgIGFyZ1N0ciA9IFN0cmluZzo6bnVtYmVyKG51bSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAobGFzdENhbGxlci5hcmd1bWVudEF0KGkpLmpzVmFsdWUoKS5pc1N0
cmluZygpKSB7IC8vIGhhbmRsZSBzdHJpbmdzCisgICAgICAgICAgICAgSlNDOjpVU3RyaW5nIG1z
ZzsKKyAgICAgICAgICAgICBsYXN0Q2FsbGVyLmFyZ3VtZW50QXQoaSkuanNWYWx1ZSgpLmdldFN0
cmluZyhjYWxsU3RhY2stPnN0YXRlKCksIG1zZyk7CisgICAgICAgICAgICAgU3RyaW5nIG1zZ0Rh
dGEobXNnLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgIGFyZ1N0ciA9IG1zZ0RhdGE7Cisg
ICAgICAgIH0gZWxzZSBpZiAobGFzdENhbGxlci5hcmd1bWVudEF0KGkpLmpzVmFsdWUoKS5pc09i
amVjdCgpKSB7IC8vIGhhbmRsZSBvYmplY3RzCisgICAgICAgICAgICAgSlNDOjpKU1ZhbHVlIG9i
alZhbCA9IGxhc3RDYWxsZXIuYXJndW1lbnRBdChpKS5qc1ZhbHVlKCk7CisgICAgICAgICAgICAg
bWFrZVN0cmluZ0Zyb21PYmooY2FsbFN0YWNrLCBvYmpWYWwsIGFyZ1N0cik7CisgICAgICAgIH0K
KworICAgICAgICBpZiAocmVwbCkKKyAgICAgICAgICAgICBmU3RyLmluc2VydChhcmdTdHIsIGlk
eCk7CisgICAgICAgIGVsc2UgCisgICAgICAgICAgICAgZlN0ciArPSBhcmdTdHI7CisgICAgICAg
IH0KKyAgICB9CisgICAgbWVzc2FnZSA9IGZTdHI7IC8vIG1lc3NhZ2UgcmVhZHkKK30KKworLy8g
Y29udmVydCBvYmplY3RzIGludG8gc3RyaW5ncwordm9pZCBDb25zb2xlOjptYWtlU3RyaW5nRnJv
bU9iaihTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaywgSlNDOjpKU1ZhbHVlJiBqc1ZhbCwgU3Ry
aW5nJiBhcmdTdHIpCit7CisgICAgLy8gY2hlY2sgaWYgaXQgYW4gb2JqZWN0IGluIHRoZSBmaXJz
dCBwbGFjZSAKKyAgICBpZiAoanNWYWwuaXNPYmplY3QoKSkgeyAKKyAgICAgICAgLy8gZ2V0IHBy
b3BlcnR5IG5hbWUgZnJvbSBvYmplY3QKKyAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBj
YWxsU3RhY2stPmdsb2JhbFN0YXRlKCk7CisgICAgICAgIEpTQzo6SlNPYmplY3QgKm15T2JqID0g
anNWYWwuZ2V0T2JqZWN0KCk7CisgICAgICAgIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkgcHJvcE5h
bWVzKGV4ZWMpOworICAgICAgICBteU9iai0+Z2V0UHJvcGVydHlOYW1lcyhleGVjLCBwcm9wTmFt
ZXMpOworCisgICAgICAgIGlmICghcHJvcE5hbWVzLnNpemUoKSkgeworICAgICAgICAgICAgLy8g
ZW1wdHkgb2JqZWN0CisgICAgICAgICAgICBKU0M6OlVTdHJpbmcgbXNnOworICAgICAgICAgICAg
bXNnID0ganNWYWwuZ2V0U3RyaW5nKGNhbGxTdGFjay0+c3RhdGUoKSk7CisgICAgICAgICAgICBT
dHJpbmcgbmFtZURhdGEobXNnLnV0ZjgoKS5kYXRhKCkpOworCisgICAgICAgICAgICBKU0M6OlVT
dHJpbmcgcHJvcGxlc3NPYmpTdHI7CisgICAgICAgICAgICBwcm9wbGVzc09ialN0ciA9IGpzVmFs
LnRvU3RyaW5nKGV4ZWMpOworICAgICAgICAgICAgU3RyaW5nIHZhbERhdGEocHJvcGxlc3NPYmpT
dHIudXRmOCgpLmRhdGEoKSk7CisKKyAgICAgICAgICAgIGFyZ1N0ciArPSBuYW1lRGF0YSArICI9
IiArIHZhbERhdGE7CisKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIGZvciBlYWNoIG9iamVjdCBtZW1iZXIKKyAgICAgICAgYXJnU3RyICs9ICJPYmplY3R7IjsK
KyAgICAgICAgZm9yIChKU0M6OlByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdCA9
IHByb3BOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9wTmFtZXMuZW5kKCk7IGl0KyspIHsKKyAgICAg
ICAgICAgIEpTQzo6SlNWYWx1ZSBwcm9wID0gbXlPYmotPmdldChleGVjLCAqaXQpOworICAgICAg
ICAgICAgSlNDOjpVU3RyaW5nIHRtcERhdGEgPSBpdC0+dXN0cmluZygpOworICAgICAgICAgICAg
U3RyaW5nIHN0ckRhdGEodG1wRGF0YS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGlmIChw
cm9wLmlzU3RyaW5nKCkpIHsgLy8gaGFuZGxlIHN0cmluZworICAgICAgICAgICAgICAgIGFyZ1N0
ciArPSAgc3RyRGF0YTsKKyAgICAgICAgICAgICAgICB0bXBEYXRhID0gcHJvcC5nZXRTdHJpbmco
Y2FsbFN0YWNrLT5zdGF0ZSgpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbW9yZURhdGEodG1w
RGF0YS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBhcmdTdHIgKz0gIj0iICsgbW9y
ZURhdGE7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3AuaXNOdW1iZXIoKSkgeyAvLyBoYW5k
bGUgbnVtYmVyCisgICAgICAgICAgICAgICAgYXJnU3RyICs9IHN0ckRhdGE7CisgICAgICAgICAg
ICAgICAgZG91YmxlIG51bTE7CisgICAgICAgICAgICAgICAgcHJvcC5nZXROdW1iZXIobnVtMSk7
CisgICAgICAgICAgICAgICAgYXJnU3RyICs9ICI9IiArIFN0cmluZzo6bnVtYmVyKG51bTEpOwor
ICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wLmlzQm9vbGVhbigpKSB7IC8vIGhhbmRsZSBib29s
CisgICAgICAgICAgICAgICAgYXJnU3RyICs9IHN0ckRhdGE7CisgICAgICAgICAgICAgICAgdG1w
RGF0YSA9IHByb3AudG9TdHJpbmcoY2FsbFN0YWNrLT5zdGF0ZSgpKTsKKyAgICAgICAgICAgICAg
ICBTdHJpbmcgYm9vbERhdGEodG1wRGF0YS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAg
ICBhcmdTdHIgKz0gIj0iICsgYm9vbERhdGE7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3Au
aXNPYmplY3QoKSkgeyAvLyBoYW5kbGUgb2JqZWN0IHdpdGhpbiBhbiBvYmplY3QKKyAgICAgICAg
ICAgICAgICBhcmdTdHIgKz0gc3RyRGF0YTsKKyAgICAgICAgICAgICAgICBtYWtlU3RyaW5nRnJv
bU9iaihjYWxsU3RhY2ssIHByb3AsIGFyZ1N0cik7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBhcmdTdHIgKz0gIjsiOyAvLyBtb3ZlIG9uIHRvIG5leHQgcHJvcE5hbWUKKyAgICAgICAgfSAK
KyAgICAgICAgYXJnU3RyICs9ICJ9IjsgLy8gb2JqZWN0IGRvbmUKKyAgICB9CisgICAgcmV0dXJu
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvQ29uc29s
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Db25zb2xlLmgJKHJldmlzaW9uIDcxMzQ1
KQorKysgV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEs
NyBAQAogCiAjaW5jbHVkZSAiTWVtb3J5SW5mby5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCisjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVlLmg+CiAjaW5jbHVkZSAiU2NyaXB0UHJvZmls
ZS5oIgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTczLDcgKzc0LDggQEAgZW51bSBN
ZXNzYWdlTGV2ZWwgewogICAgIExvZ01lc3NhZ2VMZXZlbCwKICAgICBXYXJuaW5nTWVzc2FnZUxl
dmVsLAogICAgIEVycm9yTWVzc2FnZUxldmVsLAotICAgIERlYnVnTWVzc2FnZUxldmVsCisgICAg
RGVidWdNZXNzYWdlTGV2ZWwsCisgICAgSW5mb01lc3NhZ2VMZXZlbAogfTsKIAogY2xhc3MgQ29u
c29sZSA6IHB1YmxpYyBSZWZDb3VudGVkPENvbnNvbGU+IHsKQEAgLTg1LDYgKzg3LDkgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBN
ZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrID0gMCk7
CiAKKyAgICB2b2lkIGdldEFsbEFyZ3VtZW50c0FzU3RyaW5nKFNjcmlwdENhbGxTdGFjayogY2Fs
bFN0YWNrLCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgbWFrZVN0cmluZ0Zyb21PYmooU2Ny
aXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2ssIEpTQzo6SlNWYWx1ZSYgLCBTdHJpbmcmIG1zZyk7CisK
ICAgICB2b2lkIGRlYnVnKFNjcmlwdENhbGxTdGFjayopOwogICAgIHZvaWQgZXJyb3IoU2NyaXB0
Q2FsbFN0YWNrKik7CiAgICAgdm9pZCBpbmZvKFNjcmlwdENhbGxTdGFjayopOwpAQCAtMTMwLDYg
KzEzNSw4IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBtdXRhYmxlIFJlZlB0cjxNZW1vcnlJbmZv
PiBtX21lbW9yeTsKIH07CisgCit2b2lkIGdldE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeChN
ZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBTdHJpbmcmIHNvdXJjZVN0
cmluZywgU3RyaW5nJiBsZXZlbFN0cmluZyk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJ
bmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdl
TG9nCShyZXZpc2lvbiA3MTM1MCkKKysrIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0xMS0wNCAgR29wYWwgUmFnaGF2YW4gIDxnb3BhbC4x
LnJhZ2hhdmFuQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGaXhlcyBidWc6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNjA4MworICAgICAgICBGaXggZm9yIGZvcm1hdHRpbmcgamF2YXNjcmlwdCBjb25z
b2xlIG1lc3NhZ2UgYW5kIGhhbmRsaW5nIGZpcmVidWcgYXBpLiAKKyAgICAgICAgV2l0aG91dCB0
aGlzIGZpeCB3ZSBhcmUgb25seSBzZWVpbmcgZmlyc3QgYXJndW1lbnQgZm9yIGNvbnNvbGUgbWVz
c2FnZXMuCisgICAgICAgIEFsc28sIGN1cnJlbnQgaW1wbGVtZW50IGRvZXMgbm90IGhhbmRsZSAl
byAlZCBldGMuLCBwcm9wZXJseS4KKyAgICAgICAgVGhpcyBmaXggYWRkcmVzc2VzIGFsbCB0aGVz
ZSBpc3N1ZXMgYW5kIHByb3ZpZGVzIGEgY2xlYW4gZm9ybWF0dGVkIHN0cmluZy4KKyAgICAgICAg
VGhpcyBhcGkgaXMgdXNlZCB0byBkaXNwbGF5IG9yIGxvZyB0byBmaWxlICBjb25zb2xlIG1lc3Nh
Z2VzLiBXaXRob3V0CisgICAgICAgIHRoaXMgZml4LCB3ZSBjYW5ub3QgZ2V0IGNvbXBsZXRlIGZp
cmVidWcgYXBpIHN1cHBvcnQgZm9yIGNvbnNvbGUgbG9nLgorCisgICAgICAgICogQXBpL3F3ZWJw
YWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpqYXZhU2NyaXB0Q29uc29sZU1lc3NhZ2UpOgor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjphZGRNZXNz
YWdlVG9Db25zb2xlKToKKwogMjAxMC0xMS0wNCAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KSW5kZXg6IFdlYktp
dC9xdC9BcGkvcXdlYnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwCShyZXZpc2lvbiA3MTM0NSkKKysrIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODYwLDE2ICsxODYwLDE1IEBAIFFXaWRnZXQgKlFXZWJQYWdlOjp2
aWV3KCkgY29uc3QKICovCiB2b2lkIFFXZWJQYWdlOjpqYXZhU2NyaXB0Q29uc29sZU1lc3NhZ2Uo
Y29uc3QgUVN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFFTdHJpbmcmIHNv
dXJjZUlEKQogewotICAgIFFfVU5VU0VEKHNvdXJjZUlEKQotCiAgICAgLy8gQ2F0Y2ggcGx1Z2lu
IGxvZ0Rlc3Ryb3kgbWVzc2FnZSBmb3IgTGF5b3V0VGVzdHMvcGx1Z2lucy9vcGVuLWFuZC1jbG9z
ZS13aW5kb3ctd2l0aC1wbHVnaW4uaHRtbAogICAgIC8vIEF0IHRoaXMgcG9pbnQgRFJUJ3MgV2Vi
UGFnZSBoYXMgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZAogICAgIGlmIChRV2ViUGFnZVByaXZhdGU6
OmRydFJ1bikgewogICAgICAgICBpZiAobWVzc2FnZSA9PSAiUExVR0lOOiBOUFBfRGVzdHJveSIp
Ci0gICAgICAgICAgICBmcHJpbnRmIChzdGRvdXQsICJDT05TT0xFIE1FU1NBR0U6IGxpbmUgJWQ6
ICVzXG4iLCBsaW5lTnVtYmVyLCBtZXNzYWdlLnRvVXRmOCgpLmNvbnN0RGF0YSgpKTsKKwkgIGZw
cmludGYgKHN0ZG91dCwgIkNPTlNPTEUgTUVTU0FHRTogJXMgOiAlcyA6ICVkIFxuIiwgbWVzc2Fn
ZS50b1V0ZjgoKS5jb25zdERhdGEoKSwgc291cmNlSUQudG9VdGY4KCkuY29uc3REYXRhKCksIGxp
bmVOdW1iZXIpOwogICAgIH0KIH0KIAorCiAvKiEKICAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxl
ZCB3aGVuZXZlciBhIEphdmFTY3JpcHQgcHJvZ3JhbSBydW5uaW5nIGluc2lkZSBcYSBmcmFtZSBj
YWxscyB0aGUgYWxlcnQoKSBmdW5jdGlvbiB3aXRoCiAgICAgdGhlIG1lc3NhZ2UgXGEgbXNnLgpJ
bmRleDogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9B
cGkvcXdlYnBhZ2UuaAkocmV2aXNpb24gNzEzNDUpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNyw2ICs0MDcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCBib29sIGphdmFTY3JpcHRQcm9tcHQoUVdlYkZyYW1lICpvcmlnaW5hdGluZ0ZyYW1lLCBj
b25zdCBRU3RyaW5nJiBtc2csIGNvbnN0IFFTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgUVN0cmluZyog
cmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgamF2YVNjcmlwdENvbnNvbGVNZXNzYWdlKGNvbnN0
IFFTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBRU3RyaW5nJiBzb3VyY2VJ
RCk7CiAKKwogICAgIHZpcnR1YWwgUVN0cmluZyB1c2VyQWdlbnRGb3JVcmwoY29uc3QgUVVybCYg
dXJsKSBjb25zdDsKIAogcHJpdmF0ZToKSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudFF0LmNwcAkocmV2aXNpb24gNzEzNDUpCisrKyBXZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsMTIgKzI2
NiwyMyBAQCB2b2lkIENocm9tZUNsaWVudFF0OjpzZXRSZXNpemFibGUoYm9vbCkKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi12b2lkIENocm9tZUNsaWVudFF0OjphZGRNZXNzYWdlVG9Db25z
b2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlSUQpCit2b2lkIENocm9t
ZUNsaWVudFF0OjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlICwgTWVz
c2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNp
Z25lZCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCkKIHsKLSAgICBRU3Ry
aW5nIHggPSBtZXNzYWdlOwotICAgIFFTdHJpbmcgeSA9IHNvdXJjZUlEOwotICAgIG1fd2ViUGFn
ZS0+amF2YVNjcmlwdENvbnNvbGVNZXNzYWdlKHgsIGxpbmVOdW1iZXIsIHkpOworICAgIFFTdHJp
bmcgbXNnID0gbWVzc2FnZTsKKyAgICBRU3RyaW5nIHNyY0lkID0gc291cmNlSUQ7CisgICAgdW5z
aWduZWQgbGluTnVtID0gbGluZU51bWJlcjsKKworCisgICAgU3RyaW5nIHNyY1N0cmluZzsKKyAg
ICBTdHJpbmcgbGV2U3RyaW5nOworICAgIAorICAgIGdldE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFBy
ZWZpeChzb3VyY2UsIGxldmVsLCBzcmNTdHJpbmcsIGxldlN0cmluZyk7CisKKyAgICBRU3RyaW5n
IHNvdXJjZVN0cmluZyA9IHNyY1N0cmluZzsKKyAgICBRU3RyaW5nIGxldmVsU3RyaW5nID0gbGV2
U3RyaW5nOworCisgICAgbXNnID0gc291cmNlU3RyaW5nICsgIiA6ICIgKyBsZXZlbFN0cmluZyAr
ICIgOiAiICsgbXNnOworICAgIG1fd2ViUGFnZS0+amF2YVNjcmlwdENvbnNvbGVNZXNzYWdlKG1z
ZywgbGluTnVtLCBzcmNJZCk7CiB9CiAKIHZvaWQgQ2hyb21lQ2xpZW50UXQ6OmNocm9tZURlc3Ry
b3llZCgpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTM1MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEwLTExLTA0ICBHb3BhbCBSYWdo
YXZhbiAgPGdvcGFsLjEucmFnaGF2YW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVzIGJ1ZzogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MDgzCisgICAgICAgIEZpeCBmb3IgZm9ybWF0dGluZyBq
YXZhc2NyaXB0IGNvbnNvbGUgbWVzc2FnZSBhbmQgaGFuZGxpbmcgZmlyZWJ1ZyBhcGkuIAorICAg
ICAgICBXaXRob3V0IHRoaXMgZml4IHdlIGFyZSBvbmx5IHNlZWluZyBmaXJzdCBhcmd1bWVudCBm
b3IgY29uc29sZSBtZXNzYWdlcy4KKyAgICAgICAgQWxzbywgY3VycmVudCBpbXBsZW1lbnQgZG9l
cyBub3QgaGFuZGxlICVvICVkIGV0Yy4sIHByb3Blcmx5LgorICAgICAgICBUaGlzIGZpeCBhZGRy
ZXNzZXMgYWxsIHRoZXNlIGlzc3VlcyBhbmQgcHJvdmlkZXMgYSBjbGVhbiBmb3JtYXR0ZWQgc3Ry
aW5nLgorICAgICAgICBUaGlzIGFwaSBpcyB1c2VkIHRvIGRpc3BsYXkgb3IgbG9nIHRvIGZpbGUg
IGNvbnNvbGUgbWVzc2FnZXMuIFdpdGhvdXQKKyAgICAgICAgdGhpcyBmaXgsIHdlIGNhbm5vdCBn
ZXQgY29tcGxldGUgZmlyZWJ1ZyBhcGkgc3VwcG9ydCBmb3IgY29uc29sZSBsb2cuCisKKyAgICAg
ICAgKiBmYXN0L2RvbS9XaW5kb3cvY29uc29sZS1hcGktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvY29uc29sZS1hcGkuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vV2luZG93L2NvbnNvbGUtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dDoKKwogMjAx
MC0xMS0wNCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEg
dGltaW5nLW91dCB0ZXN0IHRvIHRoZSBXaW5kb3dzIFNraXBwZWQgZmlsZQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L2NvbnNvbGUtYXBpLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvY29uc29sZS1hcGktZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2NvbnNvbGUtYXBp
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNiBAQAorQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDk6IEpTIDogTE9HIDogUGxhaW4gc3RyaW5nCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMTM6IEpTIDogTE9HIDogVGhlIGNvdyBqdW1wZWQgb3ZlciAyIHRhbGwgYnVpbGRpbmdzCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTU6IEpTIDogTE9HIDogKEFsdGVybmF0aXZlKSBUaGUgY293
IGp1bXBlZCBvdmVyIDIgdGFsbCBidWlsZGluZ3MKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMTog
SlMgOiBMT0cgOiBTdHJpbmcgdmVyc2lvbjogSSBhbSBDYXRJblRoZUhhdCBhbmQgSSBoYXZlOiB0
aGluZzF0aGluZzJ0aGluZzMKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyNzogSlMgOiBMT0cgOiBP
YmplY3QgdmVyc2lvbjogSSBhbSBPYmplY3R7MD1DOzE9YTsyPXQ7Mz1JOzQ9bjs1PVQ7Nj1oOzc9
ZTs4PUg7OT1hOzEwPXQ7fSBhbmQgSSBoYXZlOiBPYmplY3R7MD10OzE9aDsyPWk7Mz1uOzQ9Zzs1
PTE7fU9iamVjdHswPXQ7MT1oOzI9aTszPW47ND1nOzU9Mjt9T2JqZWN0ezA9dDsxPWg7Mj1pOzM9
bjs0PWc7NT0zO30KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAzMDogSlMgOiBMT0cgOiBQSSA9IDMu
MTQxNTkKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAzNDogSlMgOiBMT0cgOiBQSSBmcm9tIE1BVEgg
PSAzLjE0MTU5CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzc6IEpTIDogTE9HIDogTXkgbWF0aCBz
Y29yZSA9IDEwMAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQ5OiBKUyA6IExPRyA6IFNhbnRhIGRl
dGFpbHM6IE9iamVjdHtuYW1lPVN0LiBOaWNob2xhcztuaWNrbmFtZT1TYW50YTtoZWlnaHQ9Ni4y
O2FkZHJlc3M9Tm9ydGggcG9sZTtiZWFyZD10cnVlO2Nsb3RoaW5nQ29sb3I9cmVkO2Fycml2YWw9
U2F0IERlYyAyNSAyMDEwIDAwOjAwOjAwIEdNVC0wNTAwIChFU1QpO30KK0NPTlNPTEUgTUVTU0FH
RTogbGluZSA1NjogSlMgOiBMT0cgOiBGcnVpdHMgPSBPYmplY3R7MD1BcHBsZTsxPU9yYW5nZTsy
PUdyYXBlOzM9UGVyc2ltbW9uO30KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA1ODogSlMgOiBJTkZP
IDogRm9yIHlvdXIgaW5mb3JtYXRpb24KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2MDogSlMgOiBX
QVJOIDogSSB3YXJuIHlvdQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDYyOiBKUyA6IEVSUk9SIDog
RXJyb3IgcHJvbmUKK1RoaXMgaXMgRmlyZWJ1ZyBjb25zb2xlIGFwaSB0ZXN0aW5nIQorCitQbGVh
c2Ugd2F0Y2ggeW91ciBjb25zb2xlLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L2NvbnNvbGUtYXBpLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2lu
ZG93L2NvbnNvbGUtYXBpLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvY29uc29sZS1hcGkuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQorCXsKKwkgICAgaWYod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorCSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworCSAgICBjb25zb2xlLmxvZygiUGxhaW4gc3RyaW5nIik7CisKKwkgICAg
dmFyIGFuaW1hbCA9ICJjb3ciOworCSAgICB2YXIgY291bnQgPSAyOworCSAgICBjb25zb2xlLmxv
ZygiVGhlICVzIGp1bXBlZCBvdmVyICVkIHRhbGwgYnVpbGRpbmdzIiwgYW5pbWFsLCBjb3VudCk7
CisKKwkgICAgY29uc29sZS5sb2coIihBbHRlcm5hdGl2ZSkgVGhlICIsIGFuaW1hbCwgIiBqdW1w
ZWQgb3ZlciAiLCBjb3VudCwgIiB0YWxsIGJ1aWxkaW5ncyIpOworCisJICAgIHZhciBteU5hbWVT
ID0gIkNhdEluVGhlSGF0IjsKKwkgICAgdmFyIHRoaW5nMVMgPSAidGhpbmcxIjsKKwkgICAgdmFy
IHRoaW5nMlMgPSAidGhpbmcyIjsKKwkgICAgdmFyIHRoaW5nM1MgPSAidGhpbmczIjsKKwkgICAg
Y29uc29sZS5sb2coIlN0cmluZyB2ZXJzaW9uOiBJIGFtICVzIGFuZCBJIGhhdmU6ICIsIG15TmFt
ZVMsIHRoaW5nMVMsIHRoaW5nMlMsIHRoaW5nM1MpOworCisJICAgIHZhciBteU5hbWUgPSBuZXcg
U3RyaW5nKCJDYXRJblRoZUhhdCIpOworCSAgICB2YXIgdGhpbmcxID0gbmV3IFN0cmluZygidGhp
bmcxIik7CisJICAgIHZhciB0aGluZzIgPSBuZXcgU3RyaW5nKCJ0aGluZzIiKTsKKwkgICAgdmFy
IHRoaW5nMyA9IG5ldyBTdHJpbmcoInRoaW5nMyIpOworCSAgICBjb25zb2xlLmxvZygiT2JqZWN0
IHZlcnNpb246IEkgYW0gJW8gYW5kIEkgaGF2ZTogIiwgbXlOYW1lLCB0aGluZzEsIHRoaW5nMiwg
dGhpbmczKTsKKworCSAgICB2YXIgcGk9My4xNDE1OTI2NTM1ODk3OTMyMzg0NjI2NDMzODMyNzk1
MDI4ODQxOTcxNjkzOTkzNzUxMDsKKwkgICAgY29uc29sZS5sb2coIlBJID0gJWYiLHBpKTsKKwor
CisJICAgIHZhciBtUGkgPSBNYXRoLlBJCisJICAgIGNvbnNvbGUubG9nKCJQSSBmcm9tIE1BVEgg
PSAlZiIsIG1QaSk7CisKKwkgICAgdmFyIHNjb3JlID0gMTAwOworCSAgICBjb25zb2xlLmxvZygi
TXkgbWF0aCBzY29yZSA9ICVkIixzY29yZSk7CisKKworCSAgICB2YXIgc2FudGEgPSBuZXcgT2Jq
ZWN0KCk7CisKKwkgICAgc2FudGEubmFtZSA9ICJTdC4gTmljaG9sYXMiOworCSAgICBzYW50YS5u
aWNrbmFtZSA9ICJTYW50YSI7CisJICAgIHNhbnRhLmhlaWdodCA9IDYuMjsKKwkgICAgc2FudGEu
YWRkcmVzcyA9ICJOb3J0aCBwb2xlIjsKKwkgICAgc2FudGEuYmVhcmQgPSB0cnVlOworCSAgICBz
YW50YS5jbG90aGluZ0NvbG9yPSJyZWQiOworCSAgICBzYW50YS5hcnJpdmFsID0gbmV3IERhdGUo
IDIwMTAsIDExLCAyNSwgMCwgMCwgMCwgMCk7CisJICAgIGNvbnNvbGUubG9nKCJTYW50YSBkZXRh
aWxzOiAlbyIsIHNhbnRhKTsgCisKKwkgICAgdmFyIGZydWl0cyA9IG5ldyBBcnJheSgpOworCSAg
ICBmcnVpdHNbMF0gPSAiQXBwbGUiOworCSAgICBmcnVpdHNbMV0gPSAiT3JhbmdlIjsKKwkgICAg
ZnJ1aXRzWzJdID0gIkdyYXBlIjsKKwkgICAgZnJ1aXRzWzNdID0gIlBlcnNpbW1vbiI7CisJICAg
IGNvbnNvbGUubG9nKCJGcnVpdHMgPSAlbyIsZnJ1aXRzKTsKKworCSAgICBjb25zb2xlLmluZm8o
IkZvciB5b3VyIGluZm9ybWF0aW9uIik7CisKKwkgICAgY29uc29sZS53YXJuKCJJIHdhcm4geW91
Iik7CisKKwkgICAgY29uc29sZS5lcnJvcigiRXJyb3IgcHJvbmUiKTsKKwl9CisgICAgPC9zY3Jp
cHQ+CisKKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+CisgICAgPHA+VGhpcyBp
cyBGaXJlYnVnIGNvbnNvbGUgYXBpIHRlc3RpbmchPC9wPgorICAgIDxwPlBsZWFzZSB3YXRjaCB5
b3VyIGNvbnNvbGUuPC9wPgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvY29uc29sZS1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jb25zb2xlLWZ1bmN0aW9ucy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDcxMzQ1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2Nv
bnNvbGUtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcg
QEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxMDogY29uc29sZS5sb2coKSBjYWxsZWQuCi1DT05T
T0xFIE1FU1NBR0U6IGxpbmUgMTE6IGNvbnNvbGUuaW5mbygpIGNhbGxlZC4KLUNPTlNPTEUgTUVT
U0FHRTogbGluZSAxMjogY29uc29sZS53YXJuKCkgY2FsbGVkLgotQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDEzOiBjb25zb2xlLmVycm9yKCkgY2FsbGVkLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEw
OiBKUyA6IExPRyA6IGNvbnNvbGUubG9nKCkgY2FsbGVkLgorQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDExOiBKUyA6IElORk8gOiBjb25zb2xlLmluZm8oKSBjYWxsZWQuCitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMTI6IEpTIDogV0FSTiA6IGNvbnNvbGUud2FybigpIGNhbGxlZC4KK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAxMzogSlMgOiBFUlJPUiA6IGNvbnNvbGUuZXJyb3IoKSBjYWxsZWQuCiBUZXN0
cyB3aW5kb3cuY29uc29sZSBmdW5jdGlvbnMuIFRvIG1ha2Ugc3VyZSB0aGlzIHRlc3QgcGFzc2Vk
IHlvdSBtdXN0IGNoZWNrIHRoZSBjb25zb2xlIGZvciB0aGUgZm9sbG93aW5nIDQgbWVzc2FnZXM6
CiAKIGNvbnNvbGUubG9nKCkgY2FsbGVkLgo=
</data>
<flag name="review"
          id="63318"
          type_id="1"
          status="-"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="63319"
          type_id="3"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72989</attachid>
            <date>2010-11-04 15:19:46 -0700</date>
            <delta_ts>2010-11-17 09:52:10 -0800</delta_ts>
            <desc>Taken care of Kenneth&apos;s comments and qt build issue</desc>
            <filename>26083c.patch</filename>
            <type>text/plain</type>
            <size>19428</size>
            <attacher name="Gopal Raghavan">gopal.1.raghavan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTM1MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMTEtMDQgIEdvcGFsIFJhZ2hhdmFuICA8Z29wYWwuMS5yYWdo
YXZhbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRml4IGZvciBmb3JtYXR0aW5nIGphdmFzY3JpcHQgY29uc29sZSBtZXNzYWdlIGFu
ZCBoYW5kbGluZyBmaXJlYnVnIGFwaS4gCisgICAgICAgIFdpdGhvdXQgdGhpcyBmaXggd2UgYXJl
IG9ubHkgc2VlaW5nIGZpcnN0IGFyZ3VtZW50IGZvciBjb25zb2xlIG1lc3NhZ2VzLgorICAgICAg
ICBBbHNvLCBjdXJyZW50IGltcGxlbWVudCBkb2VzIG5vdCBoYW5kbGUgJW8gJWQgZXRjLiwgcHJv
cGVybHkuCisgICAgICAgIFRoaXMgZml4IGFkZHJlc3NlcyBhbGwgdGhlc2UgaXNzdWVzIGFuZCBw
cm92aWRlcyBhIGNsZWFuIGZvcm1hdHRlZCBzdHJpbmcuCisgICAgICAgIFRoaXMgYXBpIGlzIHVz
ZWQgdG8gZGlzcGxheSBvciBsb2cgdG8gZmlsZSAgY29uc29sZSBtZXNzYWdlcy4gV2l0aG91dAor
ICAgICAgICB0aGlzIGZpeCwgd2UgY2Fubm90IGdldCBjb21wbGV0ZSBmaXJlYnVnIGFwaSBzdXBw
b3J0IGZvciBjb25zb2xlIGxvZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjYwODMKKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9XaW5kb3cvY29u
c29sZS1hcGkuaHRtbAorCisgICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmdldE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeCk6CisgICAgICAgIChXZWJDb3Jl
OjpwcmludE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpD
b25zb2xlOjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmluZm8pOgor
ICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6Z2V0QWxsQXJndW1lbnRzQXNTdHJpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29uc29sZTo6bWFrZVN0cmluZ0Zyb21PYmopOgorICAgICAgICAqIHBh
Z2UvQ29uc29sZS5oOgorCiAyMDEwLTExLTA0ICBFcmlrIEFydmlkc3NvbiAgPGFydkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2Vi
Q29yZS9wYWdlL0NvbnNvbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Db25zb2xl
LmNwcAkocmV2aXNpb24gNzEzNDUpCisrKyBXZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDYgKzQwLDggQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
UGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJQcm9w
ZXJ0eU5hbWVBcnJheS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgogCiAjaW5jbHVk
ZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgpAQCAtOTAs
OSArOTIsOSBAQCBzdGF0aWMgYm9vbCBnZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcoU2NyCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHByaW50TWVzc2FnZVNvdXJjZUFuZExldmVs
UHJlZml4KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwpCit2b2lkIGdl
dE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeChNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2Fn
ZUxldmVsIGxldmVsLCBTdHJpbmcmIHNvdXJjZVN0cmluZywgU3RyaW5nJiBsZXZlbFN0cmluZykK
IHsKLSAgICBjb25zdCBjaGFyKiBzb3VyY2VTdHJpbmc7CisKICAgICBzd2l0Y2ggKHNvdXJjZSkg
ewogICAgIGNhc2UgSFRNTE1lc3NhZ2VTb3VyY2U6CiAgICAgICAgIHNvdXJjZVN0cmluZyA9ICJI
VE1MIjsKQEAgLTExNyw4ICsxMTksNyBAQCBzdGF0aWMgdm9pZCBwcmludE1lc3NhZ2VTb3VyY2VB
bmRMZXZlbFByCiAgICAgICAgIHNvdXJjZVN0cmluZyA9ICJVTktOT1dOIjsKICAgICAgICAgYnJl
YWs7CiAgICAgfQotCi0gICAgY29uc3QgY2hhciogbGV2ZWxTdHJpbmc7CisgICAgCiAgICAgc3dp
dGNoIChsZXZlbCkgewogICAgIGNhc2UgVGlwTWVzc2FnZUxldmVsOgogICAgICAgICBsZXZlbFN0
cmluZyA9ICJUSVAiOwpAQCAtMTI2LDYgKzEyNyw5IEBAIHN0YXRpYyB2b2lkIHByaW50TWVzc2Fn
ZVNvdXJjZUFuZExldmVsUHIKICAgICBjYXNlIExvZ01lc3NhZ2VMZXZlbDoKICAgICAgICAgbGV2
ZWxTdHJpbmcgPSAiTE9HIjsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbmZvTWVzc2FnZUxl
dmVsOgorICAgICAgICBsZXZlbFN0cmluZyA9ICJJTkZPIjsKKyAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBXYXJuaW5nTWVzc2FnZUxldmVsOgogICAgICAgICBsZXZlbFN0cmluZyA9ICJXQVJOIjsK
ICAgICAgICAgYnJlYWs7CkBAIC0xNDAsOCArMTQ0LDE2IEBAIHN0YXRpYyB2b2lkIHByaW50TWVz
c2FnZVNvdXJjZUFuZExldmVsUHIKICAgICAgICAgbGV2ZWxTdHJpbmcgPSAiVU5LTk9XTiI7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KK30KIAotICAgIHByaW50ZigiJXMgJXM6Iiwgc291cmNlU3Ry
aW5nLCBsZXZlbFN0cmluZyk7CitzdGF0aWMgdm9pZCBwcmludE1lc3NhZ2VTb3VyY2VBbmRMZXZl
bFByZWZpeChNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsKQoreworICAg
IFN0cmluZyBzb3VyY2VTdHJpbmc7CisgICAgU3RyaW5nIGxldmVsU3RyaW5nOworCisgICAgZ2V0
TWVzc2FnZVNvdXJjZUFuZExldmVsUHJlZml4KHNvdXJjZSwgbGV2ZWwsIHNvdXJjZVN0cmluZywg
bGV2ZWxTdHJpbmcpOworCisgICAgcHJpbnRmKCIlcyAlczoiLCBzb3VyY2VTdHJpbmcudXRmOCgp
LmRhdGEoKSwgbGV2ZWxTdHJpbmcudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgQ29uc29sZTo6
YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2Fn
ZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKQEAg
LTE4MSw3ICsxOTMsOCBAQCB2b2lkIENvbnNvbGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVR5cGUgdHlw
CiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBtZXNzYWdlOwotICAgIGlmIChnZXRGaXJz
dEFyZ3VtZW50QXNTdHJpbmcoY2FsbFN0YWNrLT5zdGF0ZSgpLCBsYXN0Q2FsbGVyLCBtZXNzYWdl
KSkKKyAgICBnZXRBbGxBcmd1bWVudHNBc1N0cmluZyhjYWxsU3RhY2ssIG1lc3NhZ2UpOworICAg
IGlmICghbWVzc2FnZS5pc0VtcHR5KCkpCiAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQo
KS0+YWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNz
YWdlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5zb3VyY2VVUkwoKSk7CiAK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtMjE1LDcgKzIyOCw3IEBAIHZvaWQgQ29uc29sZTo6
ZXJyb3IoU2NyaXB0Q2FsbFN0YWNrKiBjYWwKIAogdm9pZCBDb25zb2xlOjppbmZvKFNjcmlwdENh
bGxTdGFjayogY2FsbFN0YWNrKQogewotICAgIGxvZyhjYWxsU3RhY2spOworICAgIGFkZE1lc3Nh
Z2UoTG9nTWVzc2FnZVR5cGUsIEluZm9NZXNzYWdlTGV2ZWwsIGNhbGxTdGFjayk7CiB9CiAKIHZv
aWQgQ29uc29sZTo6bG9nKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQpAQCAtNDg3LDQgKzUw
MCw5NiBAQCBQYWdlKiBDb25zb2xlOjpwYWdlKCkgY29uc3QKICAgICByZXR1cm4gbV9mcmFtZS0+
cGFnZSgpOwogfQogCit2b2lkIENvbnNvbGU6OmdldEFsbEFyZ3VtZW50c0FzU3RyaW5nKFNjcmlw
dENhbGxTdGFjayogY2FsbFN0YWNrLCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgY29uc3QgU2Ny
aXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0gY2FsbFN0YWNrLT5hdCgwKTsKKyAgICBTdHJpbmcg
Zm9ybWF0dGVkU3RyaW5nOworICAgIFN0cmluZyBmb3JtYXRQYXR0ZXJuID0iJXMlZCVpJWYlbyI7
CisgICAgaW50IGZvcm1hdFBhdHRlcm5MZW4gPSAyOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsYXN0Q2FsbGVyLmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CisgICAgICAgIGlmICghaSAm
JiBsYXN0Q2FsbGVyLmFyZ3VtZW50QXQoaSkuanNWYWx1ZSgpLmlzU3RyaW5nKCkpCisgICAgICAg
ICAgICBmb3JtYXR0ZWRTdHJpbmcgPSBsYXN0Q2FsbGVyLmFyZ3VtZW50QXQoaSkudG9TdHJpbmco
Y2FsbFN0YWNrLT5zdGF0ZSgpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBTdHJpbmcg
YXJndW1lbnRTdHJpbmc7CisgICAgICAgICAgICBpbnQgaW5kZXggPSAwOworICAgICAgICAgICAg
Ym9vbCByZXBsYWNlID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGZv
cm1hdFBhdHRlcm4ubGVuZ3RoKCk7IGogPSBqICsgZm9ybWF0UGF0dGVybkxlbikgeworICAgICAg
ICAgICAgICAgIFN0cmluZyBwYXR0ZXJuID0gZm9ybWF0UGF0dGVybi5zdWJzdHJpbmcoaiwgZm9y
bWF0UGF0dGVybkxlbik7CisgICAgICAgICAgICAgICAgaWYgKGZvcm1hdHRlZFN0cmluZy5jb250
YWlucyhwYXR0ZXJuLCBmYWxzZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBmb3Jt
YXR0ZWRTdHJpbmcuZmluZChwYXR0ZXJuLCAwLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAg
IGZvcm1hdHRlZFN0cmluZy5yZW1vdmUoaW5kZXgsIGZvcm1hdFBhdHRlcm5MZW4pOworICAgICAg
ICAgICAgICAgICAgICByZXBsYWNlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGxhc3RD
YWxsZXIuYXJndW1lbnRBdChpKS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAg
ICAgIGRvdWJsZSBudW1iZXIgPSAwLjA7CisgICAgICAgICAgICAgICAgbGFzdENhbGxlci5hcmd1
bWVudEF0KGkpLmpzVmFsdWUoKS5nZXROdW1iZXIobnVtYmVyKTsKKyAgICAgICAgICAgICAgICBh
cmd1bWVudFN0cmluZyA9IFN0cmluZzo6bnVtYmVyKG51bWJlcik7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKGxhc3RDYWxsZXIuYXJndW1lbnRBdChpKS5qc1ZhbHVlKCkuaXNTdHJpbmcoKSkgewor
ICAgICAgICAgICAgICAgIEpTQzo6VVN0cmluZyBtc2c7CisgICAgICAgICAgICAgICAgbGFzdENh
bGxlci5hcmd1bWVudEF0KGkpLmpzVmFsdWUoKS5nZXRTdHJpbmcoY2FsbFN0YWNrLT5zdGF0ZSgp
LCBtc2cpOworICAgICAgICAgICAgICAgIFN0cmluZyBtc2dEYXRhKG1zZy51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgICAgICBhcmd1bWVudFN0cmluZyA9IG1zZ0RhdGE7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKGxhc3RDYWxsZXIuYXJndW1lbnRBdChpKS5qc1ZhbHVlKCkuaXNPYmplY3Qo
KSkgeworICAgICAgICAgICAgICAgIEpTQzo6SlNWYWx1ZSBvYmpWYWwgPSBsYXN0Q2FsbGVyLmFy
Z3VtZW50QXQoaSkuanNWYWx1ZSgpOworICAgICAgICAgICAgICAgIG1ha2VTdHJpbmdGcm9tT2Jq
KGNhbGxTdGFjaywgb2JqVmFsLCBhcmd1bWVudFN0cmluZyk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAocmVwbGFjZSkKKyAgICAgICAgICAgICAgICBmb3JtYXR0ZWRTdHJpbmcuaW5z
ZXJ0KGFyZ3VtZW50U3RyaW5nLCBpbmRleCk7CisgICAgICAgICAgICBlbHNlIAorICAgICAgICAg
ICAgICAgIGZvcm1hdHRlZFN0cmluZyArPSBhcmd1bWVudFN0cmluZzsKKyAgICAgICAgfQorICAg
IH0KKyAgICBtZXNzYWdlID0gZm9ybWF0dGVkU3RyaW5nOworfQorCit2b2lkIENvbnNvbGU6Om1h
a2VTdHJpbmdGcm9tT2JqKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrLCBKU0M6OkpTVmFsdWUm
IGpzVmFsLCBTdHJpbmcmIGFyZ3VtZW50U3RyaW5nKQoreworICAgIGlmIChqc1ZhbC5pc09iamVj
dCgpKSB7IAorICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlID0gY2FsbFN0YWNrLT5n
bG9iYWxTdGF0ZSgpOworICAgICAgICBKU0M6OkpTT2JqZWN0KiBteU9iaiA9IGpzVmFsLmdldE9i
amVjdCgpOworICAgICAgICBKU0M6OlByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5TmFtZXMoZXhl
Y1N0YXRlKTsKKyAgICAgICAgbXlPYmotPmdldFByb3BlcnR5TmFtZXMoZXhlY1N0YXRlLCBwcm9w
ZXJ0eU5hbWVzKTsKKyAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVzLnNpemUoKSkgeworICAgICAg
ICAgICAgSlNDOjpVU3RyaW5nIG5hbWVTdHJpbmc7CisgICAgICAgICAgICBuYW1lU3RyaW5nID0g
anNWYWwuZ2V0U3RyaW5nKGNhbGxTdGFjay0+c3RhdGUoKSk7CisgICAgICAgICAgICBTdHJpbmcg
bmFtZURhdGEobmFtZVN0cmluZy51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIEpTQzo6VVN0
cmluZyBwcm9wbGVzc09iamVjdFN0cmluZzsKKyAgICAgICAgICAgIHByb3BsZXNzT2JqZWN0U3Ry
aW5nID0ganNWYWwudG9TdHJpbmcoZXhlY1N0YXRlKTsKKyAgICAgICAgICAgIFN0cmluZyB2YWx1
ZURhdGEocHJvcGxlc3NPYmplY3RTdHJpbmcudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBh
cmd1bWVudFN0cmluZyArPSBuYW1lRGF0YSArICI9IiArIHZhbHVlRGF0YTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcmd1bWVudFN0cmluZyArPSAiT2JqZWN0eyI7
CisgICAgICAgIGZvciAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9IHByb3BlcnR5TmFtZXMuZW5kKCk7IGl0Kysp
IHsKKyAgICAgICAgICAgIEpTQzo6SlNWYWx1ZSBwcm9wZXJ0eSA9IG15T2JqLT5nZXQoZXhlY1N0
YXRlLCAqaXQpOworICAgICAgICAgICAgSlNDOjpVU3RyaW5nIHRlbXBvcmFyeURhdGEgPSBpdC0+
dXN0cmluZygpOworICAgICAgICAgICAgU3RyaW5nIHN0cmluZ0RhdGEodGVtcG9yYXJ5RGF0YS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5pc1N0cmluZygpKSB7Cisg
ICAgICAgICAgICAgICAgYXJndW1lbnRTdHJpbmcgKz0gIHN0cmluZ0RhdGE7CisgICAgICAgICAg
ICAgICAgdGVtcG9yYXJ5RGF0YSA9IHByb3BlcnR5LmdldFN0cmluZyhjYWxsU3RhY2stPnN0YXRl
KCkpOworICAgICAgICAgICAgICAgIFN0cmluZyBtb3JlRGF0YSh0ZW1wb3JhcnlEYXRhLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgICAgIGFyZ3VtZW50U3RyaW5nICs9ICI9IiArIG1vcmVE
YXRhOworICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5pc051bWJlcigpKSB7CisgICAg
ICAgICAgICAgICAgYXJndW1lbnRTdHJpbmcgKz0gc3RyaW5nRGF0YTsKKyAgICAgICAgICAgICAg
ICBkb3VibGUgbnVtYmVyRWxlbWVudCA9IDAuMDsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eS5n
ZXROdW1iZXIobnVtYmVyRWxlbWVudCk7CisgICAgICAgICAgICAgICAgYXJndW1lbnRTdHJpbmcg
Kz0gIj0iICsgU3RyaW5nOjpudW1iZXIobnVtYmVyRWxlbWVudCk7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKHByb3BlcnR5LmlzQm9vbGVhbigpKSB7CisgICAgICAgICAgICAgICAgYXJndW1lbnRT
dHJpbmcgKz0gc3RyaW5nRGF0YTsKKyAgICAgICAgICAgICAgICB0ZW1wb3JhcnlEYXRhID0gcHJv
cGVydHkudG9TdHJpbmcoY2FsbFN0YWNrLT5zdGF0ZSgpKTsKKyAgICAgICAgICAgICAgICBTdHJp
bmcgYm9vbERhdGEodGVtcG9yYXJ5RGF0YS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAg
ICBhcmd1bWVudFN0cmluZyArPSAiPSIgKyBib29sRGF0YTsKKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAocHJvcGVydHkuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgICAgIGFyZ3VtZW50U3RyaW5n
ICs9IHN0cmluZ0RhdGE7CisgICAgICAgICAgICAgICAgbWFrZVN0cmluZ0Zyb21PYmooY2FsbFN0
YWNrLCBwcm9wZXJ0eSwgYXJndW1lbnRTdHJpbmcpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYXJndW1lbnRTdHJpbmcgKz0gIjsiOworICAgICAgICB9IAorICAgICAgICBhcmd1bWVudFN0
cmluZyArPSAifSI7CisgICAgfQorICAgIHJldHVybjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BhZ2UvQ29uc29sZS5oCShyZXZpc2lvbiA3MTM0NSkKKysrIFdlYkNvcmUvcGFnZS9Db25zb2xl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIk1lbW9yeUlu
Zm8uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNW
YWx1ZS5oPgogI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CkBAIC03Myw3ICs3NCw4IEBAIGVudW0gTWVzc2FnZUxldmVsIHsKICAgICBMb2dNZXNz
YWdlTGV2ZWwsCiAgICAgV2FybmluZ01lc3NhZ2VMZXZlbCwKICAgICBFcnJvck1lc3NhZ2VMZXZl
bCwKLSAgICBEZWJ1Z01lc3NhZ2VMZXZlbAorICAgIERlYnVnTWVzc2FnZUxldmVsLAorICAgIElu
Zm9NZXNzYWdlTGV2ZWwKIH07CiAKIGNsYXNzIENvbnNvbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxD
b25zb2xlPiB7CkBAIC04NSw2ICs4Nyw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkTWVzc2Fn
ZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBT
Y3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjayA9IDApOwogCisgICAgdm9pZCBnZXRBbGxBcmd1bWVu
dHNBc1N0cmluZyhTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaywgU3RyaW5nJiBtZXNzYWdlKTsK
KyAgICB2b2lkIG1ha2VTdHJpbmdGcm9tT2JqKFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrLCBK
U0M6OkpTVmFsdWUmICwgU3RyaW5nJiBtc2cpOworCiAgICAgdm9pZCBkZWJ1ZyhTY3JpcHRDYWxs
U3RhY2sqKTsKICAgICB2b2lkIGVycm9yKFNjcmlwdENhbGxTdGFjayopOwogICAgIHZvaWQgaW5m
byhTY3JpcHRDYWxsU3RhY2sqKTsKQEAgLTEzMCw2ICsxMzUsOCBAQCBwcml2YXRlOgogI2VuZGlm
CiAgICAgbXV0YWJsZSBSZWZQdHI8TWVtb3J5SW5mbz4gbV9tZW1vcnk7CiB9OworIAordm9pZCBn
ZXRNZXNzYWdlU291cmNlQW5kTGV2ZWxQcmVmaXgoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
Z2VMZXZlbCBsZXZlbCwgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIFN0cmluZyYgbGV2ZWxTdHJpbmcp
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNzEzNTApCisrKyBX
ZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAt
MTEtMDQgIEdvcGFsIFJhZ2hhdmFuICA8Z29wYWwuMS5yYWdoYXZhbkBub2tpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGZvciBmb3Jt
YXR0aW5nIGphdmFzY3JpcHQgY29uc29sZSBtZXNzYWdlIGFuZCBoYW5kbGluZyBmaXJlYnVnIGFw
aS4gCisgICAgICAgIFdpdGhvdXQgdGhpcyBmaXggd2UgYXJlIG9ubHkgc2VlaW5nIGZpcnN0IGFy
Z3VtZW50IGZvciBjb25zb2xlIG1lc3NhZ2VzLgorICAgICAgICBBbHNvLCBjdXJyZW50IGltcGxl
bWVudCBkb2VzIG5vdCBoYW5kbGUgJW8gJWQgZXRjLiwgcHJvcGVybHkuCisgICAgICAgIFRoaXMg
Zml4IGFkZHJlc3NlcyBhbGwgdGhlc2UgaXNzdWVzIGFuZCBwcm92aWRlcyBhIGNsZWFuIGZvcm1h
dHRlZCBzdHJpbmcuCisgICAgICAgIFRoaXMgYXBpIGlzIHVzZWQgdG8gZGlzcGxheSBvciBsb2cg
dG8gZmlsZSAgY29uc29sZSBtZXNzYWdlcy4gV2l0aG91dAorICAgICAgICB0aGlzIGZpeCwgd2Ug
Y2Fubm90IGdldCBjb21wbGV0ZSBmaXJlYnVnIGFwaSBzdXBwb3J0IGZvciBjb25zb2xlIGxvZy4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYwODMK
KworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6amF2YVNj
cmlwdENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnRRdDo6YWRkTWVzc2FnZVRvQ29uc29sZSk6CisKIDIwMTAtMTEtMDQgIFJvYmVy
dCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJl
YXMgS2xpbmcuCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gNzEzNDUpCisrKyBXZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2MCwxNiArMTg2MCwxNSBA
QCBRV2lkZ2V0ICpRV2ViUGFnZTo6dmlldygpIGNvbnN0CiAqLwogdm9pZCBRV2ViUGFnZTo6amF2
YVNjcmlwdENvbnNvbGVNZXNzYWdlKGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5lTnVt
YmVyLCBjb25zdCBRU3RyaW5nJiBzb3VyY2VJRCkKIHsKLSAgICBRX1VOVVNFRChzb3VyY2VJRCkK
LQogICAgIC8vIENhdGNoIHBsdWdpbiBsb2dEZXN0cm95IG1lc3NhZ2UgZm9yIExheW91dFRlc3Rz
L3BsdWdpbnMvb3Blbi1hbmQtY2xvc2Utd2luZG93LXdpdGgtcGx1Z2luLmh0bWwKICAgICAvLyBB
dCB0aGlzIHBvaW50IERSVCdzIFdlYlBhZ2UgaGFzIGFscmVhZHkgYmVlbiBkZXN0cm95ZWQKICAg
ICBpZiAoUVdlYlBhZ2VQcml2YXRlOjpkcnRSdW4pIHsKICAgICAgICAgaWYgKG1lc3NhZ2UgPT0g
IlBMVUdJTjogTlBQX0Rlc3Ryb3kiKQotICAgICAgICAgICAgZnByaW50ZiAoc3Rkb3V0LCAiQ09O
U09MRSBNRVNTQUdFOiBsaW5lICVkOiAlc1xuIiwgbGluZU51bWJlciwgbWVzc2FnZS50b1V0Zjgo
KS5jb25zdERhdGEoKSk7CisgICAgICAgICAgICBmcHJpbnRmIChzdGRvdXQsICJDT05TT0xFIE1F
U1NBR0U6ICVzIDogJXMgOiAlZCBcbiIsIG1lc3NhZ2UudG9VdGY4KCkuY29uc3REYXRhKCksIHNv
dXJjZUlELnRvVXRmOCgpLmNvbnN0RGF0YSgpLCBsaW5lTnVtYmVyKTsKICAgICB9CiB9CiAKKwog
LyohCiAgICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbmV2ZXIgYSBKYXZhU2NyaXB0IHBy
b2dyYW0gcnVubmluZyBpbnNpZGUgXGEgZnJhbWUgY2FsbHMgdGhlIGFsZXJ0KCkgZnVuY3Rpb24g
d2l0aAogICAgIHRoZSBtZXNzYWdlIFxhIG1zZy4KSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgJKHJldmlzaW9uIDcx
MzQ1KQorKysgV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDcs
NiArNDA3LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBqYXZhU2NyaXB0UHJvbXB0
KFFXZWJGcmFtZSAqb3JpZ2luYXRpbmdGcmFtZSwgY29uc3QgUVN0cmluZyYgbXNnLCBjb25zdCBR
U3RyaW5nJiBkZWZhdWx0VmFsdWUsIFFTdHJpbmcqIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lk
IGphdmFTY3JpcHRDb25zb2xlTWVzc2FnZShjb25zdCBRU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGlu
ZU51bWJlciwgY29uc3QgUVN0cmluZyYgc291cmNlSUQpOwogCisKICAgICB2aXJ0dWFsIFFTdHJp
bmcgdXNlckFnZW50Rm9yVXJsKGNvbnN0IFFVcmwmIHVybCkgY29uc3Q7CiAKIHByaXZhdGU6Cklu
ZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5jcHAJKHJldmlz
aW9uIDcxMzQ1KQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjY2LDEyICsyNjYsMjMgQEAgdm9pZCBDaHJvbWVDbGllbnRR
dDo6c2V0UmVzaXphYmxlKGJvb2wpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBD
aHJvbWVDbGllbnRRdDo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdl
VHlwZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZUlEKQordm9pZCBDaHJvbWVDbGllbnRRdDo6YWRkTWVzc2FnZVRvQ29u
c29sZShNZXNzYWdlU291cmNlIHNvdXJjZSAsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwgbGV2
ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgaW50IGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlSUQpCiB7Ci0gICAgUVN0cmluZyB4ID0gbWVzc2FnZTsKLSAgICBRU3Ry
aW5nIHkgPSBzb3VyY2VJRDsKLSAgICBtX3dlYlBhZ2UtPmphdmFTY3JpcHRDb25zb2xlTWVzc2Fn
ZSh4LCBsaW5lTnVtYmVyLCB5KTsKKyAgICBRU3RyaW5nIG1zZyA9IG1lc3NhZ2U7CisgICAgUVN0
cmluZyBzcmNJZCA9IHNvdXJjZUlEOworICAgIHVuc2lnbmVkIGxpbk51bSA9IGxpbmVOdW1iZXI7
CisKKworICAgIFN0cmluZyBzcmNTdHJpbmc7CisgICAgU3RyaW5nIGxldlN0cmluZzsKKyAgICAK
KyAgICBnZXRNZXNzYWdlU291cmNlQW5kTGV2ZWxQcmVmaXgoc291cmNlLCBsZXZlbCwgc3JjU3Ry
aW5nLCBsZXZTdHJpbmcpOworCisgICAgUVN0cmluZyBzb3VyY2VTdHJpbmcgPSBzcmNTdHJpbmc7
CisgICAgUVN0cmluZyBsZXZlbFN0cmluZyA9IGxldlN0cmluZzsKKworICAgIG1zZyA9IHNvdXJj
ZVN0cmluZyArICIgOiAiICsgbGV2ZWxTdHJpbmcgKyAiIDogIiArIG1zZzsKKyAgICBtX3dlYlBh
Z2UtPmphdmFTY3JpcHRDb25zb2xlTWVzc2FnZShtc2csIGxpbk51bSwgc3JjSWQpOwogfQogCiB2
b2lkIENocm9tZUNsaWVudFF0OjpjaHJvbWVEZXN0cm95ZWQoKQpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
NzEzNTApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMCBAQAorMjAxMC0xMS0wNCAgR29wYWwgUmFnaGF2YW4gIDxnb3BhbC4xLnJhZ2hhdmFuQG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXggZm9yIGZvcm1hdHRpbmcgamF2YXNjcmlwdCBjb25zb2xlIG1lc3NhZ2UgYW5kIGhhbmRs
aW5nIGZpcmVidWcgYXBpLiAKKyAgICAgICAgV2l0aG91dCB0aGlzIGZpeCB3ZSBhcmUgb25seSBz
ZWVpbmcgZmlyc3QgYXJndW1lbnQgZm9yIGNvbnNvbGUgbWVzc2FnZXMuCisgICAgICAgIEFsc28s
IGN1cnJlbnQgaW1wbGVtZW50IGRvZXMgbm90IGhhbmRsZSAlbyAlZCBldGMuLCBwcm9wZXJseS4K
KyAgICAgICAgVGhpcyBmaXggYWRkcmVzc2VzIGFsbCB0aGVzZSBpc3N1ZXMgYW5kIHByb3ZpZGVz
IGEgY2xlYW4gZm9ybWF0dGVkIHN0cmluZy4KKyAgICAgICAgVGhpcyBhcGkgaXMgdXNlZCB0byBk
aXNwbGF5IG9yIGxvZyB0byBmaWxlICBjb25zb2xlIG1lc3NhZ2VzLiBXaXRob3V0CisgICAgICAg
IHRoaXMgZml4LCB3ZSBjYW5ub3QgZ2V0IGNvbXBsZXRlIGZpcmVidWcgYXBpIHN1cHBvcnQgZm9y
IGNvbnNvbGUgbG9nLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNjA4MworCisgICAgICAgICogZmFzdC9kb20vV2luZG93L2NvbnNvbGUtYXBpLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vV2luZG93L2NvbnNvbGUtYXBp
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy9jb25zb2xlLWZ1bmN0aW9u
cy1leHBlY3RlZC50eHQ6CisKIDIwMTAtMTEtMDQgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBhIHRpbWluZy1vdXQgdGVzdCB0byB0aGUgV2luZG93cyBTa2lw
cGVkIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jb25zb2xlLWFwaS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2Nv
bnNvbGUtYXBpLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL1dpbmRvdy9jb25zb2xlLWFwaS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTYgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA5OiBKUyA6IExPRyA6IFBsYWluIHN0cmlu
ZworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzOiBKUyA6IExPRyA6IFRoZSBjb3cganVtcGVkIG92
ZXIgMiB0YWxsIGJ1aWxkaW5ncworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE1OiBKUyA6IExPRyA6
IChBbHRlcm5hdGl2ZSkgVGhlIGNvdyBqdW1wZWQgb3ZlciAyIHRhbGwgYnVpbGRpbmdzCitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgMjE6IEpTIDogTE9HIDogU3RyaW5nIHZlcnNpb246IEkgYW0gQ2F0
SW5UaGVIYXQgYW5kIEkgaGF2ZTogdGhpbmcxdGhpbmcydGhpbmczCitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMjc6IEpTIDogTE9HIDogT2JqZWN0IHZlcnNpb246IEkgYW0gT2JqZWN0ezA9QzsxPWE7
Mj10OzM9STs0PW47NT1UOzY9aDs3PWU7OD1IOzk9YTsxMD10O30gYW5kIEkgaGF2ZTogT2JqZWN0
ezA9dDsxPWg7Mj1pOzM9bjs0PWc7NT0xO31PYmplY3R7MD10OzE9aDsyPWk7Mz1uOzQ9Zzs1PTI7
fU9iamVjdHswPXQ7MT1oOzI9aTszPW47ND1nOzU9Mzt9CitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
MzA6IEpTIDogTE9HIDogUEkgPSAzLjE0MTU5CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzQ6IEpT
IDogTE9HIDogUEkgZnJvbSBNQVRIID0gMy4xNDE1OQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM3
OiBKUyA6IExPRyA6IE15IG1hdGggc2NvcmUgPSAxMDAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA0
OTogSlMgOiBMT0cgOiBTYW50YSBkZXRhaWxzOiBPYmplY3R7bmFtZT1TdC4gTmljaG9sYXM7bmlj
a25hbWU9U2FudGE7aGVpZ2h0PTYuMjthZGRyZXNzPU5vcnRoIHBvbGU7YmVhcmQ9dHJ1ZTtjbG90
aGluZ0NvbG9yPXJlZDthcnJpdmFsPVNhdCBEZWMgMjUgMjAxMCAwMDowMDowMCBHTVQtMDUwMCAo
RVNUKTt9CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTY6IEpTIDogTE9HIDogRnJ1aXRzID0gT2Jq
ZWN0ezA9QXBwbGU7MT1PcmFuZ2U7Mj1HcmFwZTszPVBlcnNpbW1vbjt9CitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgNTg6IEpTIDogSU5GTyA6IEZvciB5b3VyIGluZm9ybWF0aW9uCitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgNjA6IEpTIDogV0FSTiA6IEkgd2FybiB5b3UKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSA2MjogSlMgOiBFUlJPUiA6IEVycm9yIHByb25lCitUaGlzIGlzIEZpcmVidWcgY29uc29s
ZSBhcGkgdGVzdGluZyEKKworUGxlYXNlIHdhdGNoIHlvdXIgY29uc29sZS4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jb25zb2xlLWFwaS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jb25zb2xlLWFwaS5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2NvbnNvbGUtYXBpLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGZ1bmN0aW9uIHJ1blRl
c3RzKCkKKwl7CisJICAgIGlmKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKwkgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwkgICAgY29uc29sZS5sb2coIlBs
YWluIHN0cmluZyIpOworCisJICAgIHZhciBhbmltYWwgPSAiY293IjsKKwkgICAgdmFyIGNvdW50
ID0gMjsKKwkgICAgY29uc29sZS5sb2coIlRoZSAlcyBqdW1wZWQgb3ZlciAlZCB0YWxsIGJ1aWxk
aW5ncyIsIGFuaW1hbCwgY291bnQpOworCisJICAgIGNvbnNvbGUubG9nKCIoQWx0ZXJuYXRpdmUp
IFRoZSAiLCBhbmltYWwsICIganVtcGVkIG92ZXIgIiwgY291bnQsICIgdGFsbCBidWlsZGluZ3Mi
KTsKKworCSAgICB2YXIgbXlOYW1lUyA9ICJDYXRJblRoZUhhdCI7CisJICAgIHZhciB0aGluZzFT
ID0gInRoaW5nMSI7CisJICAgIHZhciB0aGluZzJTID0gInRoaW5nMiI7CisJICAgIHZhciB0aGlu
ZzNTID0gInRoaW5nMyI7CisJICAgIGNvbnNvbGUubG9nKCJTdHJpbmcgdmVyc2lvbjogSSBhbSAl
cyBhbmQgSSBoYXZlOiAiLCBteU5hbWVTLCB0aGluZzFTLCB0aGluZzJTLCB0aGluZzNTKTsKKwor
CSAgICB2YXIgbXlOYW1lID0gbmV3IFN0cmluZygiQ2F0SW5UaGVIYXQiKTsKKwkgICAgdmFyIHRo
aW5nMSA9IG5ldyBTdHJpbmcoInRoaW5nMSIpOworCSAgICB2YXIgdGhpbmcyID0gbmV3IFN0cmlu
ZygidGhpbmcyIik7CisJICAgIHZhciB0aGluZzMgPSBuZXcgU3RyaW5nKCJ0aGluZzMiKTsKKwkg
ICAgY29uc29sZS5sb2coIk9iamVjdCB2ZXJzaW9uOiBJIGFtICVvIGFuZCBJIGhhdmU6ICIsIG15
TmFtZSwgdGhpbmcxLCB0aGluZzIsIHRoaW5nMyk7CisKKwkgICAgdmFyIHBpPTMuMTQxNTkyNjUz
NTg5NzkzMjM4NDYyNjQzMzgzMjc5NTAyODg0MTk3MTY5Mzk5Mzc1MTA7CisJICAgIGNvbnNvbGUu
bG9nKCJQSSA9ICVmIixwaSk7CisKKworCSAgICB2YXIgbVBpID0gTWF0aC5QSQorCSAgICBjb25z
b2xlLmxvZygiUEkgZnJvbSBNQVRIID0gJWYiLCBtUGkpOworCisJICAgIHZhciBzY29yZSA9IDEw
MDsKKwkgICAgY29uc29sZS5sb2coIk15IG1hdGggc2NvcmUgPSAlZCIsc2NvcmUpOworCisKKwkg
ICAgdmFyIHNhbnRhID0gbmV3IE9iamVjdCgpOworCisJICAgIHNhbnRhLm5hbWUgPSAiU3QuIE5p
Y2hvbGFzIjsKKwkgICAgc2FudGEubmlja25hbWUgPSAiU2FudGEiOworCSAgICBzYW50YS5oZWln
aHQgPSA2LjI7CisJICAgIHNhbnRhLmFkZHJlc3MgPSAiTm9ydGggcG9sZSI7CisJICAgIHNhbnRh
LmJlYXJkID0gdHJ1ZTsKKwkgICAgc2FudGEuY2xvdGhpbmdDb2xvcj0icmVkIjsKKwkgICAgc2Fu
dGEuYXJyaXZhbCA9IG5ldyBEYXRlKCAyMDEwLCAxMSwgMjUsIDAsIDAsIDAsIDApOworCSAgICBj
b25zb2xlLmxvZygiU2FudGEgZGV0YWlsczogJW8iLCBzYW50YSk7IAorCisJICAgIHZhciBmcnVp
dHMgPSBuZXcgQXJyYXkoKTsKKwkgICAgZnJ1aXRzWzBdID0gIkFwcGxlIjsKKwkgICAgZnJ1aXRz
WzFdID0gIk9yYW5nZSI7CisJICAgIGZydWl0c1syXSA9ICJHcmFwZSI7CisJICAgIGZydWl0c1sz
XSA9ICJQZXJzaW1tb24iOworCSAgICBjb25zb2xlLmxvZygiRnJ1aXRzID0gJW8iLGZydWl0cyk7
CisKKwkgICAgY29uc29sZS5pbmZvKCJGb3IgeW91ciBpbmZvcm1hdGlvbiIpOworCisJICAgIGNv
bnNvbGUud2FybigiSSB3YXJuIHlvdSIpOworCisJICAgIGNvbnNvbGUuZXJyb3IoIkVycm9yIHBy
b25lIik7CisJfQorICAgIDwvc2NyaXB0PgorCis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRl
c3RzKCkiPgorICAgIDxwPlRoaXMgaXMgRmlyZWJ1ZyBjb25zb2xlIGFwaSB0ZXN0aW5nITwvcD4K
KyAgICA8cD5QbGVhc2Ugd2F0Y2ggeW91ciBjb25zb2xlLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2NvbnNvbGUtZnVuY3Rpb25zLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvY29u
c29sZS1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3MTM0NSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL1dpbmRvdy9jb25zb2xlLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsNyArMSw3IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTA6IGNvbnNv
bGUubG9nKCkgY2FsbGVkLgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDExOiBjb25zb2xlLmluZm8o
KSBjYWxsZWQuCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTI6IGNvbnNvbGUud2FybigpIGNhbGxl
ZC4KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxMzogY29uc29sZS5lcnJvcigpIGNhbGxlZC4KK0NP
TlNPTEUgTUVTU0FHRTogbGluZSAxMDogSlMgOiBMT0cgOiBjb25zb2xlLmxvZygpIGNhbGxlZC4K
K0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMTogSlMgOiBJTkZPIDogY29uc29sZS5pbmZvKCkgY2Fs
bGVkLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEyOiBKUyA6IFdBUk4gOiBjb25zb2xlLndhcm4o
KSBjYWxsZWQuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTM6IEpTIDogRVJST1IgOiBjb25zb2xl
LmVycm9yKCkgY2FsbGVkLgogVGVzdHMgd2luZG93LmNvbnNvbGUgZnVuY3Rpb25zLiBUbyBtYWtl
IHN1cmUgdGhpcyB0ZXN0IHBhc3NlZCB5b3UgbXVzdCBjaGVjayB0aGUgY29uc29sZSBmb3IgdGhl
IGZvbGxvd2luZyA0IG1lc3NhZ2VzOgogCiBjb25zb2xlLmxvZygpIGNhbGxlZC4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74128</attachid>
            <date>2010-11-17 09:52:10 -0800</date>
            <delta_ts>2010-11-17 23:01:03 -0800</delta_ts>
            <desc>Fixed build issues and took care of review comments</desc>
            <filename>26083g.patch</filename>
            <type>text/plain</type>
            <size>16451</size>
            <attacher name="Gopal Raghavan">gopal.1.raghavan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjIxMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMTEtMTcgIEdvcGFsIFJhZ2hhdmFuICA8Z29wYWwuMS5yYWdo
YXZhbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRml4IGZvciBmb3JtYXR0aW5nIGphdmFzY3JpcHQgY29uc29sZSBtZXNzYWdlIGFu
ZCBoYW5kbGluZyBmaXJlYnVnIGFwaS4gCisgICAgICAgIFdpdGhvdXQgdGhpcyBmaXggd2UgYXJl
IG9ubHkgc2VlaW5nIGZpcnN0IGFyZ3VtZW50IGZvciBjb25zb2xlIG1lc3NhZ2VzLgorICAgICAg
ICBBbHNvLCBjdXJyZW50IGltcGxlbWVudCBkb2VzIG5vdCBoYW5kbGUgJW8gJWQgZXRjLiwgcHJv
cGVybHkuCisgICAgICAgIFRoaXMgZml4IGFkZHJlc3NlcyBhbGwgdGhlc2UgaXNzdWVzIGFuZCBw
cm92aWRlcyBhIGNsZWFuIGZvcm1hdHRlZCBzdHJpbmcuCisgICAgICAgIFRoaXMgYXBpIGlzIHVz
ZWQgdG8gZGlzcGxheSBvciBsb2cgdG8gZmlsZSAgY29uc29sZSBtZXNzYWdlcy4gV2l0aG91dAor
ICAgICAgICB0aGlzIGZpeCwgd2UgY2Fubm90IGdldCBjb21wbGV0ZSBmaXJlYnVnIGFwaSBzdXBw
b3J0IGZvciBjb25zb2xlIGxvZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjYwODMKKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9XaW5kb3cvY29u
c29sZS1hcGkuaHRtbAorCisgICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmdldE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeCk6CisgICAgICAgIChXZWJDb3Jl
OjpwcmludE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpD
b25zb2xlOjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmluZm8pOgor
ICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6Z2V0QWxsQXJndW1lbnRzQXNTdHJpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29uc29sZTo6bWFrZVN0cmluZ0Zyb21PYmopOgorICAgICAgICAqIHBh
Z2UvQ29uc29sZS5oOgorCiAyMDEwLTExLTE3ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KSW5kZXg6
IFdlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ29u
c29sZS5jcHAJKHJldmlzaW9uIDcyMjA2KQorKysgV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIK
ICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgi
CisjaW5jbHVkZSA8cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgIk1lbW9y
eUluZm8uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCkBAIC03
OCw5ICs3OSw4IEBAIHN0YXRpYyB2b2lkIHByaW50U291cmNlVVJMQW5kTGluZShjb25zdCAKICAg
ICB9CiB9CiAKLXN0YXRpYyB2b2lkIHByaW50TWVzc2FnZVNvdXJjZUFuZExldmVsUHJlZml4KE1l
c3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwpCit2b2lkIGdldE1lc3NhZ2VT
b3VyY2VBbmRMZXZlbFByZWZpeChNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxl
dmVsLCBTdHJpbmcmIHNvdXJjZVN0cmluZywgU3RyaW5nJiBsZXZlbFN0cmluZykKIHsKLSAgICBj
b25zdCBjaGFyKiBzb3VyY2VTdHJpbmc7CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKICAgICBjYXNl
IEhUTUxNZXNzYWdlU291cmNlOgogICAgICAgICBzb3VyY2VTdHJpbmcgPSAiSFRNTCI7CkBAIC0x
MDYsNyArMTA2LDYgQEAgc3RhdGljIHZvaWQgcHJpbnRNZXNzYWdlU291cmNlQW5kTGV2ZWxQcgog
ICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjb25zdCBjaGFyKiBsZXZlbFN0cmluZzsKICAg
ICBzd2l0Y2ggKGxldmVsKSB7CiAgICAgY2FzZSBUaXBNZXNzYWdlTGV2ZWw6CiAgICAgICAgIGxl
dmVsU3RyaW5nID0gIlRJUCI7CkBAIC0xMTQsNiArMTEzLDkgQEAgc3RhdGljIHZvaWQgcHJpbnRN
ZXNzYWdlU291cmNlQW5kTGV2ZWxQcgogICAgIGNhc2UgTG9nTWVzc2FnZUxldmVsOgogICAgICAg
ICBsZXZlbFN0cmluZyA9ICJMT0ciOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEluZm9NZXNz
YWdlTGV2ZWw6CisgICAgICAgIGxldmVsU3RyaW5nID0gIklORk8iOworICAgICAgICBicmVhazsK
ICAgICBjYXNlIFdhcm5pbmdNZXNzYWdlTGV2ZWw6CiAgICAgICAgIGxldmVsU3RyaW5nID0gIldB
Uk4iOwogICAgICAgICBicmVhazsKQEAgLTEyOCwxMCArMTMwLDE5IEBAIHN0YXRpYyB2b2lkIHBy
aW50TWVzc2FnZVNvdXJjZUFuZExldmVsUHIKICAgICAgICAgbGV2ZWxTdHJpbmcgPSAiVU5LTk9X
TiI7CiAgICAgICAgIGJyZWFrOwogICAgIH0KK30KKworc3RhdGljIHZvaWQgcHJpbnRNZXNzYWdl
U291cmNlQW5kTGV2ZWxQcmVmaXgoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBs
ZXZlbCkKK3sKKyAgICBTdHJpbmcgc291cmNlU3RyaW5nOworICAgIFN0cmluZyBsZXZlbFN0cmlu
ZzsKKworICAgIGdldE1lc3NhZ2VTb3VyY2VBbmRMZXZlbFByZWZpeChzb3VyY2UsIGxldmVsLCBz
b3VyY2VTdHJpbmcsIGxldmVsU3RyaW5nKTsKIAotICAgIHByaW50ZigiJXMgJXM6Iiwgc291cmNl
U3RyaW5nLCBsZXZlbFN0cmluZyk7CisgICAgcHJpbnRmKCIlcyAlczoiLCBzb3VyY2VTdHJpbmcu
dXRmOCgpLmRhdGEoKSwgbGV2ZWxTdHJpbmcudXRmOCgpLmRhdGEoKSk7CiB9CiAKKwogdm9pZCBD
b25zb2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBl
LCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7CiAgICAgYWRkTWVzc2FnZShzb3Vy
Y2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwsIDApOwpAQCAt
MTg2LDcgKzE5Nyw4IEBAIHZvaWQgQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlVHlwZSB0eXAK
ICAgICB9CiAKICAgICBTdHJpbmcgbWVzc2FnZTsKLSAgICBpZiAoYXJndW1lbnRzLT5nZXRGaXJz
dEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZSkpCisgICAgZ2V0QWxsQXJndW1lbnRzQXNTdHJpbmco
YXJndW1lbnRzLCBtZXNzYWdlKTsKKyAgICBpZiAoIW1lc3NhZ2UuaXNFbXB0eSgpKQogICAgICAg
ICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdl
U291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxh
c3RDYWxsZXIuc291cmNlVVJMKCkpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKQEAgLTIwNyw3
ICsyMTksNyBAQCB2b2lkIENvbnNvbGU6OmVycm9yKFBhc3NPd25QdHI8U2NyaXB0QXJnCiAKIHZv
aWQgQ29uc29sZTo6aW5mbyhQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQ
YXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKQogewotICAgIGxvZyhhcmd1bWVu
dHMsIGNhbGxTdGFjayk7CisgICAgYWRkTWVzc2FnZShMb2dNZXNzYWdlVHlwZSwgSW5mb01lc3Nh
Z2VMZXZlbCwgYXJndW1lbnRzLCBjYWxsU3RhY2spOwogfQogCiB2b2lkIENvbnNvbGU6OmxvZyhQ
YXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzLCBQYXNzT3duUHRyPFNjcmlwdENh
bGxTdGFjaz4gY2FsbFN0YWNrKQpAQCAtNDkzLDQgKzUwNSwxMDYgQEAgUGFnZSogQ29uc29sZTo6
cGFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZnJhbWUtPnBhZ2UoKTsKIH0KIAordm9pZCBDb25z
b2xlOjpnZXRBbGxBcmd1bWVudHNBc1N0cmluZyhQYXNzT3duUHRyPFNjcmlwdEFyZ3VtZW50cz4g
cHJwQXJndW1lbnRzLCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgT3duUHRyPFNjcmlwdEFyZ3Vt
ZW50cz4gYXJndW1lbnRzID0gcHJwQXJndW1lbnRzOworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVj
U3RhdGUgPSBhcmd1bWVudHMtPmdsb2JhbFN0YXRlKCk7CisgICAgU3RyaW5nIGZvcm1hdHRlZFN0
cmluZzsKKyAgICBTdHJpbmcgZm9ybWF0UGF0dGVybiA9IiVzJWQlaSVmJW8iOworICAgIGludCBm
b3JtYXRQYXR0ZXJuTGVuID0gMjsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1
bWVudHMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CisgICAgICAgIGlmICghaSAmJiBhcmd1bWVu
dHMtPmFyZ3VtZW50QXQoaSkuanNWYWx1ZSgpLmlzU3RyaW5nKCkpCisgICAgICAgICAgICBmb3Jt
YXR0ZWRTdHJpbmcgPSBhcmd1bWVudHMtPmFyZ3VtZW50QXQoaSkudG9TdHJpbmcoZXhlY1N0YXRl
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBTdHJpbmcgYXJndW1lbnRTdHJpbmc7Cisg
ICAgICAgICAgICBpbnQgaW5kZXggPSAwOworICAgICAgICAgICAgYm9vbCByZXBsYWNlID0gZmFs
c2U7CisgICAgICAgICAgICBTdHJpbmcgcGF0dGVybjsKKyAgICAgICAgICAgIGZvciAoaW50IGog
PSAwOyBqIDwgZm9ybWF0UGF0dGVybi5sZW5ndGgoKTsgaiA9IGogKyBmb3JtYXRQYXR0ZXJuTGVu
KSB7CisgICAgICAgICAgICAgICAgcGF0dGVybiA9IGZvcm1hdFBhdHRlcm4uc3Vic3RyaW5nKGos
IGZvcm1hdFBhdHRlcm5MZW4pOworICAgICAgICAgICAgICAgIGlmIChmb3JtYXR0ZWRTdHJpbmcu
Y29udGFpbnMocGF0dGVybiwgZmFsc2UpKSB7CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0g
Zm9ybWF0dGVkU3RyaW5nLmZpbmQocGF0dGVybiwgMCwgZmFsc2UpOworICAgICAgICAgICAgICAg
ICAgICByZXBsYWNlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy0+YXJn
dW1lbnRBdChpKS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIGRvdWJs
ZSBudW1iZXIgPSAwLjA7CisgICAgICAgICAgICAgICAgYXJndW1lbnRzLT5hcmd1bWVudEF0KGkp
LmpzVmFsdWUoKS5nZXROdW1iZXIobnVtYmVyKTsKKyAgICAgICAgICAgICAgICBhcmd1bWVudFN0
cmluZyA9IFN0cmluZzo6bnVtYmVyKG51bWJlcik7CisgICAgICAgICAgICAgICAgaWYgKCEocGF0
dGVybiA9PSAiJWQiIHx8IHBhdHRlcm4gPT0gIiVpIiB8fCBwYXR0ZXJuID09ICIlZiIpKQorICAg
ICAgICAgICAgICAgICAgICByZXBsYWNlID0gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2UgaWYg
KGFyZ3VtZW50cy0+YXJndW1lbnRBdChpKS5qc1ZhbHVlKCkuaXNTdHJpbmcoKSkgeworICAgICAg
ICAgICAgICAgIEpTQzo6VVN0cmluZyBtc2c7CisgICAgICAgICAgICAgICAgYXJndW1lbnRzLT5h
cmd1bWVudEF0KGkpLmpzVmFsdWUoKS5nZXRTdHJpbmcoZXhlY1N0YXRlLCBtc2cpOworICAgICAg
ICAgICAgICAgIFN0cmluZyBtc2dEYXRhKG1zZy51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAg
ICAgICBhcmd1bWVudFN0cmluZyA9IG1zZ0RhdGE7CisgICAgICAgICAgICAgICAgaWYgKHBhdHRl
cm4gIT0gIiVzIikKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSA9IGZhbHNlOworICAgICAg
ICAgICAgfSBlbHNlIGlmIChhcmd1bWVudHMtPmFyZ3VtZW50QXQoaSkuanNWYWx1ZSgpLmlzT2Jq
ZWN0KCkgJiYgcGF0dGVybiA9PSAiJW8iKSB7CisgICAgICAgICAgICAgICAgSlNDOjpKU1ZhbHVl
IG9ialZhbCA9IGFyZ3VtZW50cy0+YXJndW1lbnRBdChpKS5qc1ZhbHVlKCk7CisgICAgICAgICAg
ICAgICAgbWFrZVN0cmluZ0Zyb21PYmooYXJndW1lbnRzLmdldCgpLT5nbG9iYWxTdGF0ZSgpLCBv
YmpWYWwsIGFyZ3VtZW50U3RyaW5nKTsKKyAgICAgICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAg
ICAgICByZXBsYWNlID0gZmFsc2U7CisgICAgICAgICAgICBpZiAocmVwbGFjZSkgeworICAgICAg
ICAgICAgICAgIGZvcm1hdHRlZFN0cmluZy5yZW1vdmUoaW5kZXgsIGZvcm1hdFBhdHRlcm5MZW4p
OworICAgICAgICAgICAgICAgIGZvcm1hdHRlZFN0cmluZy5pbnNlcnQoYXJndW1lbnRTdHJpbmcs
IGluZGV4KTsKKyAgICAgICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAgICAgICBmb3JtYXR0ZWRT
dHJpbmcgKz0gYXJndW1lbnRTdHJpbmc7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFhcmd1bWVu
dHMpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgbWVzc2FnZSA9IGZvcm1hdHRlZFN0
cmluZzsKK30KKwordm9pZCBDb25zb2xlOjptYWtlU3RyaW5nRnJvbU9iaihKU0M6OkV4ZWNTdGF0
ZSogZXhlY1N0YXRlLCBKU0M6OkpTVmFsdWUmIGpzVmFsLCBTdHJpbmcmIGFyZ3VtZW50U3RyaW5n
KQoreworICAgIGlmIChqc1ZhbC5pc09iamVjdCgpKSB7IAorICAgICAgICBKU0M6OkpTT2JqZWN0
KiBteU9iaiA9IGpzVmFsLmdldE9iamVjdCgpOworICAgICAgICBKU0M6OlByb3BlcnR5TmFtZUFy
cmF5IHByb3BlcnR5TmFtZXMoZXhlY1N0YXRlKTsKKyAgICAgICAgbXlPYmotPmdldFByb3BlcnR5
TmFtZXMoZXhlY1N0YXRlLCBwcm9wZXJ0eU5hbWVzKTsKKyAgICAgICAgaWYgKCFwcm9wZXJ0eU5h
bWVzLnNpemUoKSkgeworICAgICAgICAgICAgSlNDOjpVU3RyaW5nIG5hbWVTdHJpbmc7CisgICAg
ICAgICAgICBuYW1lU3RyaW5nID0ganNWYWwuZ2V0U3RyaW5nKGV4ZWNTdGF0ZSk7CisgICAgICAg
ICAgICBTdHJpbmcgbmFtZURhdGEobmFtZVN0cmluZy51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIEpTQzo6VVN0cmluZyBwcm9wbGVzc09iamVjdFN0cmluZzsKKyAgICAgICAgICAgIHByb3Bs
ZXNzT2JqZWN0U3RyaW5nID0ganNWYWwudG9TdHJpbmcoZXhlY1N0YXRlKTsKKyAgICAgICAgICAg
IFN0cmluZyB2YWx1ZURhdGEocHJvcGxlc3NPYmplY3RTdHJpbmcudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgICAgICBhcmd1bWVudFN0cmluZyArPSBuYW1lRGF0YSArICI9IiArIHZhbHVlRGF0YTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcmd1bWVudFN0cmluZyAr
PSAiT2JqZWN0eyI7CisgICAgICAgIGZvciAoSlNDOjpQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9IHByb3BlcnR5TmFtZXMu
ZW5kKCk7IGl0KyspIHsKKyAgICAgICAgICAgIEpTQzo6SlNWYWx1ZSBwcm9wZXJ0eSA9IG15T2Jq
LT5nZXQoZXhlY1N0YXRlLCAqaXQpOworICAgICAgICAgICAgSlNDOjpVU3RyaW5nIHRlbXBvcmFy
eURhdGEgPSBpdC0+dXN0cmluZygpOworICAgICAgICAgICAgU3RyaW5nIHN0cmluZ0RhdGEodGVt
cG9yYXJ5RGF0YS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5pc1N0
cmluZygpKSB7CisgICAgICAgICAgICAgICAgYXJndW1lbnRTdHJpbmcgKz0gIHN0cmluZ0RhdGE7
CisgICAgICAgICAgICAgICAgdGVtcG9yYXJ5RGF0YSA9IHByb3BlcnR5LmdldFN0cmluZyhleGVj
U3RhdGUpOworICAgICAgICAgICAgICAgIFN0cmluZyBtb3JlRGF0YSh0ZW1wb3JhcnlEYXRhLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIGFyZ3VtZW50U3RyaW5nICs9ICI9IiArIG1v
cmVEYXRhOworICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5pc051bWJlcigpKSB7Cisg
ICAgICAgICAgICAgICAgYXJndW1lbnRTdHJpbmcgKz0gc3RyaW5nRGF0YTsKKyAgICAgICAgICAg
ICAgICBkb3VibGUgbnVtYmVyRWxlbWVudCA9IDAuMDsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0
eS5nZXROdW1iZXIobnVtYmVyRWxlbWVudCk7CisgICAgICAgICAgICAgICAgYXJndW1lbnRTdHJp
bmcgKz0gIj0iICsgU3RyaW5nOjpudW1iZXIobnVtYmVyRWxlbWVudCk7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKHByb3BlcnR5LmlzQm9vbGVhbigpKSB7CisgICAgICAgICAgICAgICAgYXJndW1l
bnRTdHJpbmcgKz0gc3RyaW5nRGF0YTsKKyAgICAgICAgICAgICAgICB0ZW1wb3JhcnlEYXRhID0g
cHJvcGVydHkudG9TdHJpbmcoZXhlY1N0YXRlKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgYm9v
bERhdGEodGVtcG9yYXJ5RGF0YS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBhcmd1
bWVudFN0cmluZyArPSAiPSIgKyBib29sRGF0YTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocHJv
cGVydHkuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgICAgIGFyZ3VtZW50U3RyaW5nICs9IHN0
cmluZ0RhdGE7CisgICAgICAgICAgICAgICAgbWFrZVN0cmluZ0Zyb21PYmooZXhlY1N0YXRlLCBw
cm9wZXJ0eSwgYXJndW1lbnRTdHJpbmcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXJn
dW1lbnRTdHJpbmcgKz0gIjsiOworICAgICAgICB9IAorICAgICAgICBhcmd1bWVudFN0cmluZyAr
PSAifSI7CisgICAgfQorICAgIHJldHVybjsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ29uc29sZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9Db25zb2xlLmgJKHJldmlzaW9uIDcyMjA2KQorKysgV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiTWVtb3J5SW5mby5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU1ZhbHVl
Lmg+CiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgi
CiAKQEAgLTc2LDcgKzc3LDggQEAgZW51bSBNZXNzYWdlTGV2ZWwgewogICAgIExvZ01lc3NhZ2VM
ZXZlbCwKICAgICBXYXJuaW5nTWVzc2FnZUxldmVsLAogICAgIEVycm9yTWVzc2FnZUxldmVsLAot
ICAgIERlYnVnTWVzc2FnZUxldmVsCisgICAgRGVidWdNZXNzYWdlTGV2ZWwsCisgICAgSW5mb01l
c3NhZ2VMZXZlbAogfTsKIAogY2xhc3MgQ29uc29sZSA6IHB1YmxpYyBSZWZDb3VudGVkPENvbnNv
bGU+IHsKQEAgLTg4LDcgKzkwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRNZXNzYWdlKE1l
c3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogICAg
IHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMLCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKTsKLQor
ICAgIHZvaWQgZ2V0QWxsQXJndW1lbnRzQXNTdHJpbmcoUGFzc093blB0cjxTY3JpcHRBcmd1bWVu
dHM+ICwgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIG1ha2VTdHJpbmdGcm9tT2JqKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlJiAsIFN0cmluZyYgbXNnKTsKICAgICB2b2lkIGRlYnVn
KFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+
KTsKICAgICB2b2lkIGVycm9yKFBhc3NPd25QdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc093blB0
cjxTY3JpcHRDYWxsU3RhY2s+KTsKICAgICB2b2lkIGluZm8oUGFzc093blB0cjxTY3JpcHRBcmd1
bWVudHM+LCBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4pOwpAQCAtMTMzLDcgKzEzNiw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKICAgICBtdXRhYmxlIFJlZlB0cjxNZW1vcnlJbmZvPiBtX21lbW9y
eTsKIH07Ci0KK3ZvaWQgZ2V0TWVzc2FnZVNvdXJjZUFuZExldmVsUHJlZml4KE1lc3NhZ2VTb3Vy
Y2UsIE1lc3NhZ2VMZXZlbCwgU3RyaW5nJiwgU3RyaW5nJik7CiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBDb25zb2xlX2gKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDcyMjEzKQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MTAtMTEtMTcgIEdvcGFsIFJhZ2hhdmFuICA8Z29wYWwuMS5yYWdoYXZhbkBub2tpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGZvciBm
b3JtYXR0aW5nIGphdmFzY3JpcHQgY29uc29sZSBtZXNzYWdlIGFuZCBoYW5kbGluZyBmaXJlYnVn
IGFwaS4gCisgICAgICAgIFdpdGhvdXQgdGhpcyBmaXggd2UgYXJlIG9ubHkgc2VlaW5nIGZpcnN0
IGFyZ3VtZW50IGZvciBjb25zb2xlIG1lc3NhZ2VzLgorICAgICAgICBBbHNvLCBjdXJyZW50IGlt
cGxlbWVudCBkb2VzIG5vdCBoYW5kbGUgJW8gJWQgZXRjLiwgcHJvcGVybHkuCisgICAgICAgIFRo
aXMgZml4IGFkZHJlc3NlcyBhbGwgdGhlc2UgaXNzdWVzIGFuZCBwcm92aWRlcyBhIGNsZWFuIGZv
cm1hdHRlZCBzdHJpbmcuCisgICAgICAgIFRoaXMgYXBpIGlzIHVzZWQgdG8gZGlzcGxheSBvciBs
b2cgdG8gZmlsZSAgY29uc29sZSBtZXNzYWdlcy4gV2l0aG91dAorICAgICAgICB0aGlzIGZpeCwg
d2UgY2Fubm90IGdldCBjb21wbGV0ZSBmaXJlYnVnIGFwaSBzdXBwb3J0IGZvciBjb25zb2xlIGxv
Zy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYw
ODMKKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9XaW5kb3cvY29uc29sZS1hcGkuaHRtbAorCisg
ICAgICAgICogZmFzdC9kb20vV2luZG93L2NvbnNvbGUtYXBpLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vV2luZG93L2NvbnNvbGUtYXBpLmh0bWw6IEFkZGVkLgorCiAy
MDEwLTExLTE3ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL1dpbmRvdy9jb25zb2xlLWFwaS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L2NvbnNvbGUtYXBpLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jb25zb2xlLWFwaS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA5
OiBQbGFpbiBzdHJpbmcKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMzogVGhlIGNvdyBqdW1wZWQg
b3ZlciAyIHRhbGwgYnVpbGRpbmdzCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTQ6IChBbHRlcm5h
dGl2ZSkgVGhlIGNvdyBqdW1wZWQgb3ZlciAyIHRhbGwgYnVpbGRpbmdzCitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgMTU6IChBbHRlcm5hdGl2ZSkgVGhlIGNvdyBqdW1wZWQgb3ZlciAyIHRhbGwgYnVp
bGRpbmdzCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjE6IFN0cmluZyB2ZXJzaW9uOiBJIGFtIENh
dEluVGhlSGF0IGFuZCBJIGhhdmU6IHRoaW5nMXRoaW5nMnRoaW5nMworQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDI3OiBPYmplY3QgdmVyc2lvbjogSSBhbSBPYmplY3R7MD1DOzE9YTsyPXQ7Mz1JOzQ9
bjs1PVQ7Nj1oOzc9ZTs4PUg7OT1hOzEwPXQ7fSBhbmQgSSBoYXZlOiBPYmplY3R7MD10OzE9aDsy
PWk7Mz1uOzQ9Zzs1PTE7fU9iamVjdHswPXQ7MT1oOzI9aTszPW47ND1nOzU9Mjt9T2JqZWN0ezA9
dDsxPWg7Mj1pOzM9bjs0PWc7NT0zO30KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAzMDogUEkgPSAz
LjE0MTU5CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzQ6IFBJIGZyb20gTUFUSCA9IDMuMTQxNTkK
K0NPTlNPTEUgTUVTU0FHRTogbGluZSAzNzogTXkgbWF0aCBzY29yZSA9IDEwMAorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDQ5OiBTYW50YSBkZXRhaWxzOiBPYmplY3R7bmFtZT1TdC4gTmljaG9sYXM7
bmlja25hbWU9U2FudGE7aGVpZ2h0PTYuMjthZGRyZXNzPU5vcnRoIHBvbGU7YmVhcmQ9dHJ1ZTtj
b2F0Q29sb3I9cmVkO2Fycml2YWw9U2F0IERlYyAyNSAyMDEwIDAwOjAwOjAwIEdNVC0wNTAwIChF
U1QpO30KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA1NjogRnJ1aXRzID0gT2JqZWN0ezA9QXBwbGU7
MT1PcmFuZ2U7Mj1HcmFwZTszPVBlcnNpbW1vbjt9CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTg6
IEZvciB5b3VyIGluZm9ybWF0aW9uCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTk6IEkgd2FybiB5
b3UKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2MDogRXJyb3IgcHJvbmUKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSA2MTogTmVnYXRpdmVzOiBUaGUgJSUganVtcGVkIG92ZXIgMiB0YWxsIGJ1aWxkaW5n
c2NvdworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDYyOiBOZWdhdGl2ZXM6IFRoZSAlayBqdW1wZWQg
b3ZlciAyIHRhbGwgYnVpbGRpbmdzY293CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjM6IE5lZ2F0
aXZlczogVGhlIGp1bXBlZCBvdmVyIDIgdGFsbCBidWlsZGluZ3MgYW5kICVkY293CitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgNjQ6IE5lZ2F0aXZlczogVGhlIGNvdyBqdW1wZWQgb3ZlciAyIHRhbGwg
YnVpbGRpbmdzIGFuZCAlZGNvdworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY1OiBFeHRlcmVtZTog
VGhlIGNvdyBqdW1wZWQgb3ZlciBPYmplY3R7bmFtZT1TdC4gTmljaG9sYXM7bmlja25hbWU9U2Fu
dGE7aGVpZ2h0PTYuMjthZGRyZXNzPU5vcnRoIHBvbGU7YmVhcmQ9dHJ1ZTtjb2F0Q29sb3I9cmVk
O2Fycml2YWw9U2F0IERlYyAyNSAyMDEwIDAwOjAwOjAwIEdNVC0wNTAwIChFU1QpO30gb29wcyEK
K1RoaXMgaXMgRmlyZWJ1ZyBjb25zb2xlIGFwaSB0ZXN0aW5nIQorCitQbGVhc2Ugd2F0Y2ggeW91
ciBjb25zb2xlLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2NvbnNvbGUtYXBp
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2NvbnNvbGUt
YXBpLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvY29u
c29sZS1hcGkuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
KyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQorICAgICAgICB7CisgICAgICAgICAgICBpZih3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgY29uc29sZS5sb2coIlBsYWluIHN0
cmluZyIpOworCisgICAgICAgICAgICB2YXIgYW5pbWFsID0gImNvdyI7CisgICAgICAgICAgICB2
YXIgY291bnQgPSAyOworICAgICAgICAgICAgY29uc29sZS5sb2coIlRoZSAlcyBqdW1wZWQgb3Zl
ciAlZCB0YWxsIGJ1aWxkaW5ncyIsIGFuaW1hbCwgY291bnQpOworICAgICAgICAgICAgY29uc29s
ZS5sb2coIihBbHRlcm5hdGl2ZSkgVGhlICVzIGp1bXBlZCBvdmVyIiwgYW5pbWFsLCIgJWQgdGFs
bCBidWlsZGluZ3MiLCBjb3VudCk7CisgICAgICAgICAgICBjb25zb2xlLmxvZygiKEFsdGVybmF0
aXZlKSBUaGUgIiwgYW5pbWFsLCAiIGp1bXBlZCBvdmVyICIsIGNvdW50LCAiIHRhbGwgYnVpbGRp
bmdzIik7CisKKyAgICAgICAgICAgIHZhciBteU5hbWVTID0gIkNhdEluVGhlSGF0IjsKKyAgICAg
ICAgICAgIHZhciB0aGluZzFTID0gInRoaW5nMSI7CisgICAgICAgICAgICB2YXIgdGhpbmcyUyA9
ICJ0aGluZzIiOworICAgICAgICAgICAgdmFyIHRoaW5nM1MgPSAidGhpbmczIjsKKyAgICAgICAg
ICAgIGNvbnNvbGUubG9nKCJTdHJpbmcgdmVyc2lvbjogSSBhbSAlcyBhbmQgSSBoYXZlOiAiLCBt
eU5hbWVTLCB0aGluZzFTLCB0aGluZzJTLCB0aGluZzNTKTsKKworICAgICAgICAgICAgdmFyIG15
TmFtZSA9IG5ldyBTdHJpbmcoIkNhdEluVGhlSGF0Iik7CisgICAgICAgICAgICB2YXIgdGhpbmcx
ID0gbmV3IFN0cmluZygidGhpbmcxIik7CisgICAgICAgICAgICB2YXIgdGhpbmcyID0gbmV3IFN0
cmluZygidGhpbmcyIik7CisgICAgICAgICAgICB2YXIgdGhpbmczID0gbmV3IFN0cmluZygidGhp
bmczIik7CisgICAgICAgICAgICBjb25zb2xlLmxvZygiT2JqZWN0IHZlcnNpb246IEkgYW0gJW8g
YW5kIEkgaGF2ZTogIiwgbXlOYW1lLCB0aGluZzEsIHRoaW5nMiwgdGhpbmczKTsKKworICAgICAg
ICAgICAgdmFyIHBpPTMuMTQxNTkyNjUzNTg5NzkzMjM4NDYyNjQzMzgzMjc5NTAyODg0MTk3MTY5
Mzk5Mzc1MTA7CisgICAgICAgICAgICBjb25zb2xlLmxvZygiUEkgPSAlZiIscGkpOworCisKKyAg
ICAgICAgICAgIHZhciBtUGkgPSBNYXRoLlBJCisgICAgICAgICAgICBjb25zb2xlLmxvZygiUEkg
ZnJvbSBNQVRIID0gJWYiLCBtUGkpOworCisgICAgICAgICAgICB2YXIgc2NvcmUgPSAxMDA7Cisg
ICAgICAgICAgICBjb25zb2xlLmxvZygiTXkgbWF0aCBzY29yZSA9ICVkIixzY29yZSk7CisKKwor
ICAgICAgICAgICAgdmFyIHNhbnRhID0gbmV3IE9iamVjdCgpOworCisgICAgICAgICAgICBzYW50
YS5uYW1lID0gIlN0LiBOaWNob2xhcyI7CisgICAgICAgICAgICBzYW50YS5uaWNrbmFtZSA9ICJT
YW50YSI7CisgICAgICAgICAgICBzYW50YS5oZWlnaHQgPSA2LjI7CisgICAgICAgICAgICBzYW50
YS5hZGRyZXNzID0gIk5vcnRoIHBvbGUiOworICAgICAgICAgICAgc2FudGEuYmVhcmQgPSB0cnVl
OworICAgICAgICAgICAgc2FudGEuY29hdENvbG9yPSJyZWQiOworICAgICAgICAgICAgc2FudGEu
YXJyaXZhbCA9IG5ldyBEYXRlKCAyMDEwLCAxMSwgMjUsIDAsIDAsIDAsIDApOworICAgICAgICAg
ICAgY29uc29sZS5sb2coIlNhbnRhIGRldGFpbHM6ICVvIiwgc2FudGEpOyAKKworICAgICAgICAg
ICAgdmFyIGZydWl0cyA9IG5ldyBBcnJheSgpOworICAgICAgICAgICAgZnJ1aXRzWzBdID0gIkFw
cGxlIjsKKyAgICAgICAgICAgIGZydWl0c1sxXSA9ICJPcmFuZ2UiOworICAgICAgICAgICAgZnJ1
aXRzWzJdID0gIkdyYXBlIjsKKyAgICAgICAgICAgIGZydWl0c1szXSA9ICJQZXJzaW1tb24iOwor
ICAgICAgICAgICAgY29uc29sZS5sb2coIkZydWl0cyA9ICVvIixmcnVpdHMpOworCisgICAgICAg
ICAgICBjb25zb2xlLmluZm8oIkZvciB5b3VyIGluZm9ybWF0aW9uIik7CisgICAgICAgICAgICBj
b25zb2xlLndhcm4oIkkgd2FybiB5b3UiKTsKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkVy
cm9yIHByb25lIik7CisgICAgICAgICAgICBjb25zb2xlLmxvZygiTmVnYXRpdmVzOiBUaGUgJSUg
anVtcGVkIG92ZXIgJWQgdGFsbCBidWlsZGluZ3MiLCBhbmltYWwsIGNvdW50KTsKKyAgICAgICAg
ICAgIGNvbnNvbGUubG9nKCJOZWdhdGl2ZXM6IFRoZSAlayBqdW1wZWQgb3ZlciAlZCB0YWxsIGJ1
aWxkaW5ncyIsIGFuaW1hbCwgY291bnQpOworICAgICAgICAgICAgY29uc29sZS5sb2coIk5lZ2F0
aXZlczogVGhlIGp1bXBlZCBvdmVyICVkIHRhbGwgYnVpbGRpbmdzIGFuZCAlZCIsIGFuaW1hbCwg
Y291bnQpOworICAgICAgICAgICAgY29uc29sZS5sb2coIk5lZ2F0aXZlczogVGhlICVzIGp1bXBl
ZCBvdmVyIiwgYW5pbWFsLCIgJWQgdGFsbCBidWlsZGluZ3MgYW5kICVkIiwgYW5pbWFsLCBjb3Vu
dCk7CisgICAgICAgICAgICBjb25zb2xlLmxvZygiRXh0ZXJlbWU6IFRoZSAiLCBhbmltYWwsICIg
anVtcGVkIG92ZXIgIiwgc2FudGEsICIgb29wcyEiKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0
PgorCis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3RzKCkiPgorICAgIDxwPlRoaXMgaXMg
RmlyZWJ1ZyBjb25zb2xlIGFwaSB0ZXN0aW5nITwvcD4KKyAgICA8cD5QbGVhc2Ugd2F0Y2ggeW91
ciBjb25zb2xlLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KKwo=
</data>
<flag name="review"
          id="64690"
          type_id="1"
          status="-"
          setter="laszlo.gombos"
    />
          </attachment>
      

    </bug>

</bugzilla>