<?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>49200</bug_id>
          
          <creation_ts>2010-11-08 13:01:29 -0800</creation_ts>
          <short_desc>[Qt] bugs in Composition mode for QWebPage::inputMethodEvent &amp; inputMethodQuery()</short_desc>
          <delta_ts>2010-11-19 05:18:14 -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>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Yi Shen">max.hong.shen</reporter>
          <assigned_to name="Yi Shen">max.hong.shen</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hausmann</cc>
    
    <cc>kling</cc>
    
    <cc>robert</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>306305</commentid>
    <comment_count>0</comment_count>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2010-11-08 13:01:29 -0800</bug_when>
    <thetext>When editor is in composition mode, the Qt::ImCursorPosition, Qt::ImAnchorPosition, Qt::ImCurrentSelection seems return wrong value, which produce some bugs on S60 VKB, e.g. entering a character which gets highlighted for a second (in composition mode), then the highlight disappeared.

Also, in my tests cases, the value of ImCursorPosition &amp; ImAnchorostion can be negative sometimes, which is incorrect.

So, I modified QWebPage::inputMethodEvent &amp; inputMethodQuery() based on qcoefepinputcontext_s60.cpp and now it works as following when in composition mode,

1. anchor position and cursor position are the same and always &gt;= 0
2. current selection is always Null when in composition mode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306311</commentid>
    <comment_count>1</comment_count>
      <attachid>73271</attachid>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2010-11-08 13:10:43 -0800</bug_when>
    <thetext>Created attachment 73271
tested on both linux &amp; s60</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306646</commentid>
    <comment_count>2</comment_count>
      <attachid>73271</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-11-09 00:40:36 -0800</bug_when>
    <thetext>Comment on attachment 73271
tested on both linux &amp; s60

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

Very nice test coverage here!
Unfortunately I have to r- because of lacking ChangeLog.

&gt; WebKit/qt/ChangeLog:7
&gt; +

Insufficient ChangeLog- please explain what&apos;s being changed and why.

&gt; WebKit/qt/tests/qwebpage/tst_qwebpage.cpp:1695
&gt; +    // clear selection, also cancel the ongoing composition if there is one

Comments should be capitalized and end with a period.

&gt; WebKit/qt/tests/qwebpage/tst_qwebpage.cpp:1704
&gt; +    //ImCurrentSelection

Style violation, space after //</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306770</commentid>
    <comment_count>3</comment_count>
      <attachid>73374</attachid>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2010-11-09 07:17:27 -0800</bug_when>
    <thetext>Created attachment 73374
fix style and changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306775</commentid>
    <comment_count>4</comment_count>
      <attachid>73374</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-11-09 07:22:20 -0800</bug_when>
    <thetext>Comment on attachment 73374
fix style and changelog

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

Oops,

&gt; WebKitTools/ChangeLog:6
&gt; +        [Qt][QtTestBrowser] Don&apos;t erase incorrect url in the Url Bar
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=49047

This stuff belongs to another bug report :)

&gt; WebKitTools/QtTestBrowser/mainwindow.cpp:119
&gt; -    urlEdit-&gt;setText(url.toString(QUrl::RemoveUserInfo));
&gt; +    setAddressUrl(url.toString(QUrl::RemoveUserInfo));

Ditto.

&gt; WebKitTools/QtTestBrowser/mainwindow.cpp:125
&gt; -    urlEdit-&gt;setText(url);
&gt; +    if (!url.contains(&quot;about:&quot;))
&gt; +        urlEdit-&gt;setText(url);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306778</commentid>
    <comment_count>5</comment_count>
      <attachid>73375</attachid>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2010-11-09 07:26:14 -0800</bug_when>
    <thetext>Created attachment 73375
try again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306779</commentid>
    <comment_count>6</comment_count>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2010-11-09 07:27:58 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 73374 [details])
&gt; This stuff belongs to another bug report :)
Weird, I updated both? Anyway, please review it again, thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309268</commentid>
    <comment_count>7</comment_count>
      <attachid>73891</attachid>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2010-11-15 07:07:55 -0800</bug_when>
    <thetext>Created attachment 73891
fix style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310271</commentid>
    <comment_count>8</comment_count>
      <attachid>73891</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-11-17 07:19:38 -0800</bug_when>
    <thetext>Comment on attachment 73891
fix style

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

In general the change looks good to me, but I&apos;d like to hear Robert&apos;s opinion on the patch, too. Nice test coverage, btw :)

&gt; WebKit/qt/Api/qwebpage.cpp:1086
&gt; -        editor-&gt;setComposition(ev-&gt;preeditString(), underlines, 0, ev-&gt;preeditString().length());
&gt; +        editor-&gt;setComposition(ev-&gt;preeditString(), underlines, 0, 0);

That looks correct to me. Robert, can you remember why the pre-edit string was automatically selected before?

&gt; WebKit/qt/Api/qwebpage.cpp:1372
&gt; -            if (editor-&gt;hasComposition()) {
&gt; -                RefPtr&lt;Range&gt; range = editor-&gt;compositionRange();
&gt; -                return QVariant(frame-&gt;selection()-&gt;end().offsetInContainerNode() - TextIterator::rangeLength(range.get()));
&gt; -            }
&gt; +            if (editor-&gt;hasComposition())
&gt; +                return QVariant(frame-&gt;selection()-&gt;end().offsetInContainerNode());

Ah, does this fix the negative positioning you mentioned in the bugreport?

&gt; WebKit/qt/Api/qwebpage.cpp:1386
&gt; -            if (renderTextControl) {
&gt; +            if (!editor-&gt;hasComposition() &amp;&amp; renderTextControl) {

Why is this check needed? When you enter composition, you clear the selection anyway, don&apos;t you?

&gt; WebKit/qt/tests/qwebpage/tst_qwebpage.cpp:1755
&gt; +    // Send temporary text, which makes the editor has composition &apos;l&apos;.
&gt; +    {
&gt; +        QList&lt;QInputMethodEvent::Attribute&gt; attributes;
&gt; +        QInputMethodEvent event(&quot;n&quot;, attributes);
&gt; +        page-&gt;event(&amp;event);

Shouldn&apos;t the comment say &quot;has composition &apos;n&apos;&quot; ?

&gt; WebKit/qt/tests/qwebpage/tst_qwebpage.cpp:1810
&gt; +    // Send temporary text, which makes the editor has composition &apos;m&apos;.
&gt; +    {
&gt; +        QList&lt;QInputMethodEvent::Attribute&gt; attributes;
&gt; +        QInputMethodEvent event(&quot;d&quot;, attributes);

Same here, isn&apos;t the comment incorrect and it should say &apos;d&apos; instead?

&gt; WebKit/qt/tests/qwebpage/tst_qwebpage.cpp:1869
&gt; +    // Send temporary text, which makes the editor has composition &apos;m&apos;.
&gt; +    {
&gt; +        QList&lt;QInputMethodEvent::Attribute&gt; attributes;
&gt; +        QInputMethodEvent event(&quot;t&quot;, attributes);
&gt; +        page-&gt;event(&amp;event);

Same here...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310273</commentid>
    <comment_count>9</comment_count>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2010-11-17 07:33:53 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 73891 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73891&amp;action=review
&gt; 
&gt; In general the change looks good to me, but I&apos;d like to hear Robert&apos;s opinion on the patch, too. Nice test coverage, btw :)
&gt; 
&gt; &gt; WebKit/qt/Api/qwebpage.cpp:1086
&gt; &gt; -        editor-&gt;setComposition(ev-&gt;preeditString(), underlines, 0, ev-&gt;preeditString().length());
&gt; &gt; +        editor-&gt;setComposition(ev-&gt;preeditString(), underlines, 0, 0);
&gt; 
&gt; That looks correct to me. Robert, can you remember why the pre-edit string was automatically selected before?
&gt; 
&gt; &gt; WebKit/qt/Api/qwebpage.cpp:1372
&gt; &gt; -            if (editor-&gt;hasComposition()) {
&gt; &gt; -                RefPtr&lt;Range&gt; range = editor-&gt;compositionRange();
&gt; &gt; -                return QVariant(frame-&gt;selection()-&gt;end().offsetInContainerNode() - TextIterator::rangeLength(range.get()));
&gt; &gt; -            }
&gt; &gt; +            if (editor-&gt;hasComposition())
&gt; &gt; +                return QVariant(frame-&gt;selection()-&gt;end().offsetInContainerNode());
&gt; 
&gt; Ah, does this fix the negative positioning you mentioned in the bugreport?
Yes, it does.
&gt; 
&gt; &gt; WebKit/qt/Api/qwebpage.cpp:1386
&gt; &gt; -            if (renderTextControl) {
&gt; &gt; +            if (!editor-&gt;hasComposition() &amp;&amp; renderTextControl) {
&gt; 
&gt; Why is this check needed? When you enter composition, you clear the selection anyway, don&apos;t you?
No, the editor doesn&apos;t clear the selection when enter composition. So I add this check to make sure it returns empty string when in composition.
&gt; 
&gt; &gt; WebKit/qt/tests/qwebpage/tst_qwebpage.cpp:1755
&gt; &gt; +    // Send temporary text, which makes the editor has composition &apos;l&apos;.
&gt; &gt; +    {
&gt; &gt; +        QList&lt;QInputMethodEvent::Attribute&gt; attributes;
&gt; &gt; +        QInputMethodEvent event(&quot;n&quot;, attributes);
&gt; &gt; +        page-&gt;event(&amp;event);
&gt; 
&gt; Shouldn&apos;t the comment say &quot;has composition &apos;n&apos;&quot; ?
I will fix it, thanks
&gt; 
&gt; &gt; WebKit/qt/tests/qwebpage/tst_qwebpage.cpp:1810
&gt; &gt; +    // Send temporary text, which makes the editor has composition &apos;m&apos;.
&gt; &gt; +    {
&gt; &gt; +        QList&lt;QInputMethodEvent::Attribute&gt; attributes;
&gt; &gt; +        QInputMethodEvent event(&quot;d&quot;, attributes);
&gt; 
&gt; Same here, isn&apos;t the comment incorrect and it should say &apos;d&apos; instead?
&gt; 
&gt; &gt; WebKit/qt/tests/qwebpage/tst_qwebpage.cpp:1869
&gt; &gt; +    // Send temporary text, which makes the editor has composition &apos;m&apos;.
&gt; &gt; +    {
&gt; &gt; +        QList&lt;QInputMethodEvent::Attribute&gt; attributes;
&gt; &gt; +        QInputMethodEvent event(&quot;t&quot;, attributes);
&gt; &gt; +        page-&gt;event(&amp;event);
&gt; 
&gt; Same here...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310275</commentid>
    <comment_count>10</comment_count>
      <attachid>74112</attachid>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2010-11-17 07:41:44 -0800</bug_when>
    <thetext>Created attachment 74112
fix typo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310371</commentid>
    <comment_count>11</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-11-17 10:39:51 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; 
&gt; &gt; WebKit/qt/Api/qwebpage.cpp:1086
&gt; &gt; -        editor-&gt;setComposition(ev-&gt;preeditString(), underlines, 0, ev-&gt;preeditString().length());
&gt; &gt; +        editor-&gt;setComposition(ev-&gt;preeditString(), underlines, 0, 0);
&gt; 
&gt; That looks correct to me. Robert, can you remember why the pre-edit string was automatically selected before?

That looks like a regression from http://trac.webkit.org/changeset/70259 that wasn&apos;t caught by the unit tests.

Yi, could you make sure the changes don&apos;t cause any regressions on :

fast/forms/input-maxlength-ime-preedit.html
fast/forms/input-maxlength-ime-completed.html
fast/text/international/thai-cursor-position.html
fast/events/ime-composition-events-001.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310404</commentid>
    <comment_count>12</comment_count>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2010-11-17 11:24:45 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #8)
&gt; &gt; 
&gt; &gt; &gt; WebKit/qt/Api/qwebpage.cpp:1086
&gt; &gt; &gt; -        editor-&gt;setComposition(ev-&gt;preeditString(), underlines, 0, ev-&gt;preeditString().length());
&gt; &gt; &gt; +        editor-&gt;setComposition(ev-&gt;preeditString(), underlines, 0, 0);
&gt; &gt; 
&gt; &gt; That looks correct to me. Robert, can you remember why the pre-edit string was automatically selected before?
&gt; 
&gt; That looks like a regression from http://trac.webkit.org/changeset/70259 that wasn&apos;t caught by the unit tests.
&gt; 
&gt; Yi, could you make sure the changes don&apos;t cause any regressions on :
&gt; 
&gt; fast/forms/input-maxlength-ime-preedit.html
&gt; fast/forms/input-maxlength-ime-completed.html
&gt; fast/text/international/thai-cursor-position.html
&gt; fast/events/ime-composition-events-001.html

Robert Hogan, I run the test on linux and all above tests passed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310486</commentid>
    <comment_count>13</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-11-17 13:25:44 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; 
&gt; Robert Hogan, I run the test on linux and all above tests passed.

Great stuff. Looks good to me so!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310496</commentid>
    <comment_count>14</comment_count>
      <attachid>74112</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-11-17 13:42:35 -0800</bug_when>
    <thetext>Comment on attachment 74112
fix typo

LGTM, too. Thanks Simon &amp; Robert for weighing in!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310498</commentid>
    <comment_count>15</comment_count>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2010-11-17 13:44:07 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 74112 [details])
&gt; LGTM, too. Thanks Simon &amp; Robert for weighing in!

Thanks all you guys :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310500</commentid>
    <comment_count>16</comment_count>
      <attachid>74112</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-11-17 13:45:41 -0800</bug_when>
    <thetext>Comment on attachment 74112
fix typo

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

&gt; WebKit/qt/ChangeLog:10
&gt; +        2. current selection is always NULL

We normally write &quot;null&quot; as we do not use a define for 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310502</commentid>
    <comment_count>17</comment_count>
      <attachid>74150</attachid>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2010-11-17 13:53:18 -0800</bug_when>
    <thetext>Created attachment 74150
fix changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310769</commentid>
    <comment_count>18</comment_count>
      <attachid>74112</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-18 03:18:37 -0800</bug_when>
    <thetext>Comment on attachment 74112
fix typo

Cleared Andreas Kling&apos;s review+ from obsolete attachment 74112 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310989</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-18 11:23:14 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 74150:

compositing/iframes/overlapped-nested-iframes.html
fast/frames/flattening/frameset-flattening-advanced.html

Please file bugs against the tests.  These tests were authored by kenneth@webkit.org, ossy@webkit.org, and simon.fraser@apple.com.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311014</commentid>
    <comment_count>20</comment_count>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2010-11-18 11:47:35 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; The commit-queue encountered the following flaky tests while processing attachment 74150 [details]:
&gt; 
&gt; compositing/iframes/overlapped-nested-iframes.html
&gt; fast/frames/flattening/frameset-flattening-advanced.html
&gt; 
&gt; Please file bugs against the tests.  These tests were authored by kenneth@webkit.org, ossy@webkit.org, and simon.fraser@apple.com.  The commit-queue is continuing to process your patch.

Tested on Linux with r72289,

compositing/iframes/overlapped-nested-iframes.html failed without/with my patch.

fast/frames/flattening/frameset-flattening-advanced.html passed without/with my patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311293</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-18 22:03:52 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 74150:

compositing/iframes/overlapped-nested-iframes.html
fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport.html

Please file bugs against the tests.  These tests were authored by sam@webkit.org, simon.fraser@apple.com, and xji@chromium.org.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311297</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-18 22:29:35 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 74150:

compositing/iframes/overlapped-nested-iframes.html
fast/workers/storage/use-same-database-in-page-and-workers.html

Please file bugs against the tests.  These tests were authored by dumi@chromium.org and simon.fraser@apple.com.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311320</commentid>
    <comment_count>23</comment_count>
      <attachid>74150</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-19 01:35:21 -0800</bug_when>
    <thetext>Comment on attachment 74150
fix changelog

Clearing flags on attachment: 74150

Committed r72370: &lt;http://trac.webkit.org/changeset/72370&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311321</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-19 01:35:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311325</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-19 02:20:28 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 74150:

compositing/iframes/overlapped-nested-iframes.html
fast/preloader/script.html

Please file bugs against the tests.  These tests were authored by abarth@webkit.org and simon.fraser@apple.com.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311373</commentid>
    <comment_count>26</comment_count>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2010-11-19 05:18:14 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; The commit-queue encountered the following flaky tests while processing attachment 74150 [details]:
&gt; 
&gt; compositing/iframes/overlapped-nested-iframes.html
&gt; fast/preloader/script.html
&gt; 
&gt; Please file bugs against the tests.  These tests were authored by abarth@webkit.org and simon.fraser@apple.com.  The commit-queue is continuing to process your patch.

Tested on Linux with r72337,

fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport.html
fast/workers/storage/use-same-database-in-page-and-workers.html
fast/preloader/script.html

all passed with this patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73271</attachid>
            <date>2010-11-08 13:10:43 -0800</date>
            <delta_ts>2010-11-09 07:17:27 -0800</delta_ts>
            <desc>tested on both linux &amp; s60</desc>
            <filename>49200.patch</filename>
            <type>text/plain</type>
            <size>15575</size>
            <attacher name="Yi Shen">max.hong.shen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNzE1NjApCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMTEtMDggIFlpIFNoZW4gIDx5aS40LnNoZW5Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTIwMAorICAgICAgICBb
UXRdIGJ1Z3MgaW4gQ29tcG9zaXRpb24gbW9kZSBmb3IgUVdlYlBhZ2U6OmlucHV0TWV0aG9kRXZl
bnQgJiBpbnB1dE1ldGhvZFF1ZXJ5KCkKKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6Cisg
ICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9kRXZlbnQpOgorICAgICAgICAoUVdl
YlBhZ2U6OmlucHV0TWV0aG9kUXVlcnkpOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9x
d2VicGFnZS5jcHA6CisgICAgICAgICh0c3RfUVdlYlBhZ2U6OmlucHV0TWV0aG9kcyk6CisKIDIw
MTAtMTEtMDggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gNzE1
NDIpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2
OCw5ICsxMDY4LDcgQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OmlucHV0TWV0aG9kRXZlbnQoUQog
ICAgICAgICAgICAgICAgIHNldFNlbGVjdGlvblJhbmdlKG5vZGUsIHFNaW4oYS5zdGFydCwgKGEu
c3RhcnQgKyBhLmxlbmd0aCkpLCBxTWF4KGEuc3RhcnQsIChhLnN0YXJ0ICsgYS5sZW5ndGgpKSk7
CiAKICAgICAgICAgICAgIGlmICghZXYtPnByZWVkaXRTdHJpbmcoKS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgICAgICBlZGl0b3ItPnNldENvbXBvc2l0aW9uKGV2LT5wcmVlZGl0U3RyaW5nKCks
IHVuZGVybGluZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhLmxl
bmd0aCA8IDApID8gYS5zdGFydCArIGEubGVuZ3RoIDogYS5zdGFydCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGEubGVuZ3RoIDwgMCkgPyBhLnN0YXJ0IDogYS5zdGFy
dCArIGEubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBlZGl0b3ItPnNldENvbXBvc2l0aW9uKGV2
LT5wcmVlZGl0U3RyaW5nKCksIHVuZGVybGluZXMsIHFNaW4oYS5zdGFydCwgKGEuc3RhcnQgKyBh
Lmxlbmd0aCkpLCBxTWF4KGEuc3RhcnQsIChhLnN0YXJ0ICsgYS5sZW5ndGgpKSk7CiAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBpbiB0aGUgbWlkZGxl
IG9mIGEgY29tcG9zaXRpb24sIGFuIGVtcHR5IHByZS1lZGl0IHN0cmluZyBhbmQgYSBzZWxlY3Rp
b24gb2YgemVybwogICAgICAgICAgICAgICAgIC8vIGNhbmNlbHMgdGhlIGN1cnJlbnQgY29tcG9z
aXRpb24KQEAgLTEwODUsNyArMTA4Myw3IEBAIHZvaWQgUVdlYlBhZ2VQcml2YXRlOjppbnB1dE1l
dGhvZEV2ZW50KFEKICAgICBpZiAoIWV2LT5jb21taXRTdHJpbmcoKS5pc0VtcHR5KCkpCiAgICAg
ICAgIGVkaXRvci0+Y29uZmlybUNvbXBvc2l0aW9uKGV2LT5jb21taXRTdHJpbmcoKSk7CiAgICAg
ZWxzZSBpZiAoIWhhc1NlbGVjdGlvbiAmJiAhZXYtPnByZWVkaXRTdHJpbmcoKS5pc0VtcHR5KCkp
Ci0gICAgICAgIGVkaXRvci0+c2V0Q29tcG9zaXRpb24oZXYtPnByZWVkaXRTdHJpbmcoKSwgdW5k
ZXJsaW5lcywgMCwgZXYtPnByZWVkaXRTdHJpbmcoKS5sZW5ndGgoKSk7CisgICAgICAgIGVkaXRv
ci0+c2V0Q29tcG9zaXRpb24oZXYtPnByZWVkaXRTdHJpbmcoKSwgdW5kZXJsaW5lcywgMCwgMCk7
CiAKICAgICBldi0+YWNjZXB0KCk7CiB9CkBAIC0xMzY1LDExICsxMzYzLDEwIEBAIFFWYXJpYW50
IFFXZWJQYWdlOjppbnB1dE1ldGhvZFF1ZXJ5KFF0OjoKICAgICAgICAgICAgIHJldHVybiBRVmFy
aWFudChRRm9udCgpKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFF0OjpJbUN1cnNvclBvc2l0
aW9uOiB7Ci0gICAgICAgICAgICBpZiAoZWRpdG9yLT5oYXNDb21wb3NpdGlvbigpKSB7Ci0gICAg
ICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGVkaXRvci0+Y29tcG9zaXRpb25SYW5n
ZSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBRVmFyaWFudChmcmFtZS0+c2VsZWN0aW9uKCkt
PmVuZCgpLm9mZnNldEluQ29udGFpbmVyTm9kZSgpIC0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0
aChyYW5nZS5nZXQoKSkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIFFWYXJp
YW50KGZyYW1lLT5zZWxlY3Rpb24oKS0+ZXh0ZW50KCkub2Zmc2V0SW5Db250YWluZXJOb2RlKCkp
OworICAgICAgICAgICAgaWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVjdGlvbigpLT5lbmQoKS5vZmZzZXRJbkNv
bnRhaW5lck5vZGUoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJu
IFFWYXJpYW50KGZyYW1lLT5zZWxlY3Rpb24oKS0+ZXh0ZW50KCkub2Zmc2V0SW5Db250YWluZXJO
b2RlKCkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgUXQ6OkltU3Vycm91bmRpbmdUZXh0OiB7
CiAgICAgICAgICAgICBpZiAocmVuZGVyVGV4dENvbnRyb2wpIHsKQEAgLTEzODIsNyArMTM3OSw3
IEBAIFFWYXJpYW50IFFXZWJQYWdlOjppbnB1dE1ldGhvZFF1ZXJ5KFF0OjoKICAgICAgICAgICAg
IHJldHVybiBRVmFyaWFudCgpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgUXQ6OkltQ3VycmVu
dFNlbGVjdGlvbjogewotICAgICAgICAgICAgaWYgKHJlbmRlclRleHRDb250cm9sKSB7CisgICAg
ICAgICAgICBpZiAoIWVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSAmJiByZW5kZXJUZXh0Q29udHJv
bCkgewogICAgICAgICAgICAgICAgIGludCBzdGFydCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+c3Rh
cnQoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKICAgICAgICAgICAgICAgICBpbnQgZW5kID0g
ZnJhbWUtPnNlbGVjdGlvbigpLT5lbmQoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKICAgICAg
ICAgICAgICAgICBpZiAoZW5kID4gc3RhcnQpCkBAIC0xMzkyLDExICsxMzg5LDEwIEBAIFFWYXJp
YW50IFFXZWJQYWdlOjppbnB1dE1ldGhvZFF1ZXJ5KFF0OjoKIAogICAgICAgICB9CiAgICAgICAg
IGNhc2UgUXQ6OkltQW5jaG9yUG9zaXRpb246IHsKLSAgICAgICAgICAgIGlmIChlZGl0b3ItPmhh
c0NvbXBvc2l0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
ZWRpdG9yLT5jb21wb3NpdGlvblJhbmdlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFFWYXJp
YW50KGZyYW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSAt
IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCkpKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHJldHVybiBRVmFyaWFudChmcmFtZS0+c2VsZWN0aW9uKCktPmJhc2UoKS5v
ZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7CisgICAgICAgICAgICBpZiAoZWRpdG9yLT5oYXNDb21w
b3NpdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBRVmFyaWFudChmcmFtZS0+c2VsZWN0
aW9uKCktPnN0YXJ0KCkub2Zmc2V0SW5Db250YWluZXJOb2RlKCkpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHJldHVybiBRVmFyaWFudChmcmFtZS0+c2VsZWN0aW9uKCktPmJh
c2UoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBR
dDo6SW1NYXhpbXVtVGV4dExlbmd0aDogewogICAgICAgICAgICAgaWYgKGZyYW1lLT5zZWxlY3Rp
b24oKS0+aXNDb250ZW50RWRpdGFibGUoKSkgewpJbmRleDogV2ViS2l0L3F0L3Rlc3RzL3F3ZWJw
YWdlL3RzdF9xd2VicGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L3Rlc3RzL3F3ZWJw
YWdlL3RzdF9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDcxNTQyKQorKysgV2ViS2l0L3F0L3Rlc3Rz
L3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2ODcsNiArMTY4
NywzMTEgQEAgdm9pZCB0c3RfUVdlYlBhZ2U6OmlucHV0TWV0aG9kcygpCiAgICAgUUNPTVBBUkUo
aW5wdXRWYWx1ZSwgUVN0cmluZygiUXRXZWJLaXQyIikpOwogICAgIC8vRU5EIC0gVGVzdCBmb3Ig
c2VuZGluZyBlbXB0eSBRSW5wdXRNZXRob2RFdmVudAogCisgICAgcGFnZS0+bWFpbkZyYW1lKCkt
PnNldEh0bWwoIjxodG1sPjxib2R5PiIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiPGlucHV0IHR5cGU9J3RleHQnIGlkPSdpbnB1dDQnIHZhbHVlPSdRdFdl
YktpdCBpbnB1dE1ldGhvZCcvPiIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiPC9ib2R5PjwvaHRtbD4iKTsKKyAgICBwYWdlLT5tYWluRnJhbWUoKS0+ZXZh
bHVhdGVKYXZhU2NyaXB0KCJ2YXIgaW5wdXRFbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
aW5wdXQ0Jyk7IGlucHV0RWxlLmZvY3VzKCk7IGlucHV0RWxlLnNlbGVjdCgpOyIpOworCisgICAg
Ly8gY2xlYXIgc2VsZWN0aW9uLCBhbHNvIGNhbmNlbCB0aGUgb25nb2luZyBjb21wb3NpdGlvbiBp
ZiB0aGVyZSBpcyBvbmUKKyAgICB7CisgICAgICAgIFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpB
dHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CisgICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1
dGUgbmV3U2VsZWN0aW9uKFFJbnB1dE1ldGhvZEV2ZW50OjpTZWxlY3Rpb24sIDAsIDAsIFFWYXJp
YW50KCkpOworICAgICAgICBhdHRyaWJ1dGVzLmFwcGVuZChuZXdTZWxlY3Rpb24pOworICAgICAg
ICBRSW5wdXRNZXRob2RFdmVudCBldmVudCgiIiwgYXR0cmlidXRlcyk7CisgICAgICAgIHBhZ2Ut
PmV2ZW50KCZldmVudCk7CisgICAgfQorCisgICAgLy9JbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2
YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsK
KyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09N
UEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOworCisgICAgdmFyaWFudCA9IHBhZ2Ut
PmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBRU3RyaW5nIHN1
cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUo
c3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygiUXRXZWJLaXQgaW5wdXRNZXRob2QiKSk7CisKKyAg
ICAvL0ltQW5jaG9yUG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVy
eShRdDo6SW1BbmNob3JQb3NpdGlvbik7CisgICAgYW5jaG9yUG9zaXRpb24gPSAgdmFyaWFudC50
b0ludCgpOworICAgIFFDT01QQVJFKGFuY2hvclBvc2l0aW9uLCAwKTsKKworICAgIC8vSW1DdXJz
b3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1
cnNvclBvc2l0aW9uKTsKKyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7Cisg
ICAgUUNPTVBBUkUoY3Vyc29yUG9zaXRpb24sIDApOworCisgICAgLy8gMS4gaW5zZXJ0IGEgY2hh
cmFjdGVyIHRvIHRoZSBiZWdpbmluZyBvZiB0aGUgbGluZQorICAgIC8vIHNlbmQgdGVtcG9yYXJ5
IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0b3IgaGFzIGNvbXBvc2l0aW9uICdtJworICAgIHsK
KyAgICAgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsK
KyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnQoIm0iLCBhdHRyaWJ1dGVzKTsKKyAgICAg
ICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAgICAvL0ltQ3VycmVudFNlbGVjdGlv
bgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnJlbnRTZWxl
Y3Rpb24pOworICAgIHNlbGVjdGlvblZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOwor
ICAgIFFDT01QQVJFKHNlbGVjdGlvblZhbHVlLCBRU3RyaW5nKCIiKSk7CisKKyAgICAvL0ltU3Vy
cm91bmRpbmdUZXh0CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6Oklt
U3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJyb3VuZGluZ1ZhbHVlID0gdmFyaWFudC52YWx1ZTxR
U3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1cnJvdW5kaW5nVmFsdWUsIFFTdHJpbmcoIlF0V2Vi
S2l0IGlucHV0TWV0aG9kIikpOworCisgICAgLy9JbUN1cnNvclBvc2l0aW9uCisgICAgdmFyaWFu
dCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAgIGN1
cnNvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQb3Np
dGlvbiwgMCk7CisKKyAgICAvL0ltQW5jaG9yUG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+
aW5wdXRNZXRob2RRdWVyeShRdDo6SW1BbmNob3JQb3NpdGlvbik7CisgICAgYW5jaG9yUG9zaXRp
b24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01QQVJFKGFuY2hvclBvc2l0aW9uLCAwKTsK
KworICAgIC8vIHNlbmQgdGVtcG9yYXJ5IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0b3IgaGFz
IGNvbXBvc2l0aW9uICdsJworICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6
OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnQo
Im4iLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisK
KyAgICAvL0ltQ3VycmVudFNlbGVjdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhv
ZFF1ZXJ5KFF0OjpJbUN1cnJlbnRTZWxlY3Rpb24pOworICAgIHNlbGVjdGlvblZhbHVlID0gdmFy
aWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHNlbGVjdGlvblZhbHVlLCBRU3Ry
aW5nKCIiKSk7CisKKyAgICAvL0ltU3Vycm91bmRpbmdUZXh0CisgICAgdmFyaWFudCA9IHBhZ2Ut
PmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJyb3VuZGlu
Z1ZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1cnJvdW5k
aW5nVmFsdWUsIFFTdHJpbmcoIlF0V2ViS2l0IGlucHV0TWV0aG9kIikpOworCisgICAgLy9JbUN1
cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6Oklt
Q3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsK
KyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgMCk7CisKKyAgICAvL0ltQW5jaG9yUG9zaXRp
b24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1BbmNob3JQb3Np
dGlvbik7CisgICAgYW5jaG9yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01Q
QVJFKGFuY2hvclBvc2l0aW9uLCAwKTsKKworICAgIC8vIHNlbmQgY29tbWl0IHRleHQsIHdoaWNo
IG1ha2VzIHRoZSBlZGl0b3IgY29uZm9ybXMgY29tcG9zaXRpb24KKyAgICB7CisgICAgICAgIFFM
aXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CisgICAgICAgIFFJ
bnB1dE1ldGhvZEV2ZW50IGV2ZW50KCIiLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgZXZlbnQuc2V0
Q29tbWl0U3RyaW5nKCJvIik7CisgICAgICAgIHBhZ2UtPmV2ZW50KCZldmVudCk7CisgICAgfQor
CisgICAgLy9JbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRo
b2RRdWVyeShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZh
cmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0
cmluZygiIikpOworCisgICAgLy9JbVN1cnJvdW5kaW5nVGV4dAorICAgIHZhcmlhbnQgPSBwYWdl
LT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbVN1cnJvdW5kaW5nVGV4dCk7CisgICAgc3Vycm91bmRp
bmdWYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzdXJyb3Vu
ZGluZ1ZhbHVlLCBRU3RyaW5nKCJvUXRXZWJLaXQgaW5wdXRNZXRob2QiKSk7CisKKyAgICAvL0lt
Q3Vyc29yUG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6
SW1DdXJzb3JQb3NpdGlvbik7CisgICAgY3Vyc29yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgp
OworICAgIFFDT01QQVJFKGN1cnNvclBvc2l0aW9uLCAxKTsKKworICAgIC8vSW1BbmNob3JQb3Np
dGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBv
c2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNP
TVBBUkUoYW5jaG9yUG9zaXRpb24sIDEpOworCisgICAgLy8gMi4gaW5zZXJ0IGEgY2hhcmFjdGVy
IHRvIHRoZSBtaWRkbGUgb2YgdGhlIGxpbmUKKyAgICAvLyBzZW5kIHRlbXBvcmFyeSB0ZXh0LCB3
aGljaCBtYWtlcyB0aGUgZWRpdG9yIGhhcyBjb21wb3NpdGlvbiAnbScKKyAgICB7CisgICAgICAg
IFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CisgICAgICAg
IFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCJkIiwgYXR0cmlidXRlcyk7CisgICAgICAgIHBhZ2Ut
PmV2ZW50KCZldmVudCk7CisgICAgfQorCisgICAgLy9JbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2
YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsK
KyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09N
UEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOworCisgICAgLy9JbVN1cnJvdW5kaW5n
VGV4dAorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbVN1cnJvdW5k
aW5nVGV4dCk7CisgICAgc3Vycm91bmRpbmdWYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4o
KTsKKyAgICBRQ09NUEFSRShzdXJyb3VuZGluZ1ZhbHVlLCBRU3RyaW5nKCJvUXRXZWJLaXQgaW5w
dXRNZXRob2QiKSk7CisKKyAgICAvL0ltQ3Vyc29yUG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFn
ZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJzb3JQb3NpdGlvbik7CisgICAgY3Vyc29yUG9z
aXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01QQVJFKGN1cnNvclBvc2l0aW9uLCAx
KTsKKworICAgIC8vSW1BbmNob3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1l
dGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9ICB2
YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5jaG9yUG9zaXRpb24sIDEpOworCisgICAg
Ly8gc2VuZCBjb21taXQgdGV4dCwgd2hpY2ggbWFrZXMgdGhlIGVkaXRvciBjb25mb3JtcyBjb21w
b3NpdGlvbgorICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0
ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnQoIiIsIGF0dHJp
YnV0ZXMpOworICAgICAgICBldmVudC5zZXRDb21taXRTdHJpbmcoImUiKTsKKyAgICAgICAgcGFn
ZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAgICAvL0ltQ3VycmVudFNlbGVjdGlvbgorICAg
IHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnJlbnRTZWxlY3Rpb24p
OworICAgIHNlbGVjdGlvblZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFD
T01QQVJFKHNlbGVjdGlvblZhbHVlLCBRU3RyaW5nKCIiKSk7CisKKyAgICAvL0ltU3Vycm91bmRp
bmdUZXh0CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91
bmRpbmdUZXh0KTsKKyAgICBzdXJyb3VuZGluZ1ZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5n
PigpOworICAgIFFDT01QQVJFKHN1cnJvdW5kaW5nVmFsdWUsIFFTdHJpbmcoIm9lUXRXZWJLaXQg
aW5wdXRNZXRob2QiKSk7CisKKyAgICAvL0ltQ3Vyc29yUG9zaXRpb24KKyAgICB2YXJpYW50ID0g
cGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJzb3JQb3NpdGlvbik7CisgICAgY3Vyc29y
UG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01QQVJFKGN1cnNvclBvc2l0aW9u
LCAyKTsKKworICAgIC8vSW1BbmNob3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1
dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9
ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5jaG9yUG9zaXRpb24sIDIpOworCisg
ICAgLy8gMy4gaW5zZXJ0IGEgY2hhcmFjdGVyIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUKKyAgICBw
YWdlLT50cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpNb3ZlVG9FbmRPZkxpbmUpOworICAgIAorICAg
IC8vIHNlbmQgdGVtcG9yYXJ5IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0b3IgaGFzIGNvbXBv
c2l0aW9uICdtJworICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJp
YnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnQoInQiLCBh
dHRyaWJ1dGVzKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAgICAv
L0ltQ3VycmVudFNlbGVjdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5
KFF0OjpJbUN1cnJlbnRTZWxlY3Rpb24pOworICAgIHNlbGVjdGlvblZhbHVlID0gdmFyaWFudC52
YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHNlbGVjdGlvblZhbHVlLCBRU3RyaW5nKCIi
KSk7CisKKyAgICAvL0ltU3Vycm91bmRpbmdUZXh0CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0
TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJyb3VuZGluZ1ZhbHVl
ID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1cnJvdW5kaW5nVmFs
dWUsIFFTdHJpbmcoIm9lUXRXZWJLaXQgaW5wdXRNZXRob2QiKSk7CisKKyAgICAvL0ltQ3Vyc29y
UG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJz
b3JQb3NpdGlvbik7CisgICAgY3Vyc29yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAg
IFFDT01QQVJFKGN1cnNvclBvc2l0aW9uLCAyMik7CisKKyAgICAvL0ltQW5jaG9yUG9zaXRpb24K
KyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1BbmNob3JQb3NpdGlv
bik7CisgICAgYW5jaG9yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01QQVJF
KGFuY2hvclBvc2l0aW9uLCAyMik7CisKKyAgICAvLyBzZW5kIGNvbW1pdCB0ZXh0LCB3aGljaCBt
YWtlcyB0aGUgZWRpdG9yIGNvbmZvcm1zIGNvbXBvc2l0aW9uCisgICAgeworICAgICAgICBRTGlz
dDxRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlPiBhdHRyaWJ1dGVzOworICAgICAgICBRSW5w
dXRNZXRob2RFdmVudCBldmVudCgiIiwgYXR0cmlidXRlcyk7CisgICAgICAgIGV2ZW50LnNldENv
bW1pdFN0cmluZygidCIpOworICAgICAgICBwYWdlLT5ldmVudCgmZXZlbnQpOworICAgIH0KKwor
ICAgIC8vSW1DdXJyZW50U2VsZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9k
UXVlcnkoUXQ6OkltQ3VycmVudFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJp
YW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJp
bmcoIiIpKTsKKworICAgIC8vSW1TdXJyb3VuZGluZ1RleHQKKyAgICB2YXJpYW50ID0gcGFnZS0+
aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5n
VmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRp
bmdWYWx1ZSwgUVN0cmluZygib2VRdFdlYktpdCBpbnB1dE1ldGhvZHQiKSk7CisKKyAgICAvL0lt
Q3Vyc29yUG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6
SW1DdXJzb3JQb3NpdGlvbik7CisgICAgY3Vyc29yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgp
OworICAgIFFDT01QQVJFKGN1cnNvclBvc2l0aW9uLCAyMyk7CisKKyAgICAvL0ltQW5jaG9yUG9z
aXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1BbmNob3JQ
b3NpdGlvbik7CisgICAgYW5jaG9yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFD
T01QQVJFKGFuY2hvclBvc2l0aW9uLCAyMyk7CisKKyAgICAvLzQuIHJlcGxhY2UgdGhlIHNlbGVj
dGlvbgorICAgIHBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdFByZXZpb3VzV29y
ZCk7CisKKyAgICAvL0ltQ3VycmVudFNlbGVjdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1
dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnJlbnRTZWxlY3Rpb24pOworICAgIHNlbGVjdGlvblZhbHVl
ID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHNlbGVjdGlvblZhbHVl
LCBRU3RyaW5nKCJpbnB1dE1ldGhvZHQiKSk7CisKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRN
ZXRob2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUg
PSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1
ZSwgUVN0cmluZygib2VRdFdlYktpdCBpbnB1dE1ldGhvZHQiKSk7CisKKyAgICAvL0ltQ3Vyc29y
UG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJz
b3JQb3NpdGlvbik7CisgICAgY3Vyc29yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAg
IFFDT01QQVJFKGN1cnNvclBvc2l0aW9uLCAxMSk7CisKKyAgICAvL0ltQW5jaG9yUG9zaXRpb24K
KyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1BbmNob3JQb3NpdGlv
bik7CisgICAgYW5jaG9yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01QQVJF
KGFuY2hvclBvc2l0aW9uLCAyMyk7CisKKyAgICAvLyBzZW5kIHRlbXBvcmFyeSB0ZXh0LCB3aGlj
aCBtYWtlcyB0aGUgZWRpdG9yIGhhcyBjb21wb3NpdGlvbiAndycKKyAgICB7CisgICAgICAgIFFM
aXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CisgICAgICAgIFFJ
bnB1dE1ldGhvZEV2ZW50IGV2ZW50KCJ3IiwgYXR0cmlidXRlcyk7CisgICAgICAgIHBhZ2UtPmV2
ZW50KCZldmVudCk7CisgICAgfQorCisgICAgLy9JbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2YXJp
YW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsKKyAg
ICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFS
RShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOworCisgICAgdmFyaWFudCA9IHBhZ2UtPmlu
cHV0TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJyb3VuZGluZ1Zh
bHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1cnJvdW5kaW5n
VmFsdWUsIFFTdHJpbmcoIm9lUXRXZWJLaXQgIikpOworCisgICAgLy9JbUN1cnNvclBvc2l0aW9u
CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9zaXRp
b24pOworICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFS
RShjdXJzb3JQb3NpdGlvbiwgMTEpOworCisgICAgLy9JbUFuY2hvclBvc2l0aW9uCisgICAgdmFy
aWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOworICAg
IGFuY2hvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQ
b3NpdGlvbiwgMTEpOworCisgICAgLy8gc2VuZCBjb21taXQgdGV4dCwgd2hpY2ggbWFrZXMgdGhl
IGVkaXRvciBjb25mb3JtcyBjb21wb3NpdGlvbgorICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0
TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9k
RXZlbnQgZXZlbnQoIiIsIGF0dHJpYnV0ZXMpOworICAgICAgICBldmVudC5zZXRDb21taXRTdHJp
bmcoIjIiKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAgICAvL0lt
Q3VycmVudFNlbGVjdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0
OjpJbUN1cnJlbnRTZWxlY3Rpb24pOworICAgIHNlbGVjdGlvblZhbHVlID0gdmFyaWFudC52YWx1
ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHNlbGVjdGlvblZhbHVlLCBRU3RyaW5nKCIiKSk7
CisKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3VuZGlu
Z1RleHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7
CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygib2VRdFdlYktpdCAyIikp
OworCisgICAgLy9JbUN1cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0
aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0aW9uID0gIHZh
cmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgMTIpOworCisgICAg
Ly9JbUFuY2hvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnko
UXQ6OkltQW5jaG9yUG9zaXRpb24pOworICAgIGFuY2hvclBvc2l0aW9uID0gIHZhcmlhbnQudG9J
bnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwgMTIpOworCiAgICAgZGVsZXRlIGNv
bnRhaW5lcjsKIH0KIAo=
</data>
<flag name="review"
          id="63668"
          type_id="1"
          status="-"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73374</attachid>
            <date>2010-11-09 07:17:27 -0800</date>
            <delta_ts>2010-11-09 07:26:14 -0800</delta_ts>
            <desc>fix style and changelog</desc>
            <filename>xxx.patch</filename>
            <type>text/plain</type>
            <size>21602</size>
            <attacher name="Yi Shen">max.hong.shen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9x
dC9BcGkvcXdlYnBhZ2UuY3BwCShyZXZpc2lvbiA3MTQzMSkKKysrIFdlYktpdC9xdC9BcGkvcXdl
YnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDY4LDkgKzEwNjgsNyBAQCB2b2lkIFFXZWJQ
YWdlUHJpdmF0ZTo6aW5wdXRNZXRob2RFdmVudChRCiAgICAgICAgICAgICAgICAgc2V0U2VsZWN0
aW9uUmFuZ2Uobm9kZSwgcU1pbihhLnN0YXJ0LCAoYS5zdGFydCArIGEubGVuZ3RoKSksIHFNYXgo
YS5zdGFydCwgKGEuc3RhcnQgKyBhLmxlbmd0aCkpKTsKIAogICAgICAgICAgICAgaWYgKCFldi0+
cHJlZWRpdFN0cmluZygpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIGVkaXRvci0+c2V0
Q29tcG9zaXRpb24oZXYtPnByZWVkaXRTdHJpbmcoKSwgdW5kZXJsaW5lcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEubGVuZ3RoIDwgMCkgPyBhLnN0YXJ0ICsgYS5s
ZW5ndGggOiBhLnN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
YS5sZW5ndGggPCAwKSA/IGEuc3RhcnQgOiBhLnN0YXJ0ICsgYS5sZW5ndGgpOworICAgICAgICAg
ICAgICAgIGVkaXRvci0+c2V0Q29tcG9zaXRpb24oZXYtPnByZWVkaXRTdHJpbmcoKSwgdW5kZXJs
aW5lcywgcU1pbihhLnN0YXJ0LCAoYS5zdGFydCArIGEubGVuZ3RoKSksIHFNYXgoYS5zdGFydCwg
KGEuc3RhcnQgKyBhLmxlbmd0aCkpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgLy8gSWYgd2UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjb21wb3NpdGlvbiwgYW4gZW1w
dHkgcHJlLWVkaXQgc3RyaW5nIGFuZCBhIHNlbGVjdGlvbiBvZiB6ZXJvCiAgICAgICAgICAgICAg
ICAgLy8gY2FuY2VscyB0aGUgY3VycmVudCBjb21wb3NpdGlvbgpAQCAtMTM4MiwxNCArMTM4MCwx
MyBAQCBRVmFyaWFudCBRV2ViUGFnZTo6aW5wdXRNZXRob2RRdWVyeShRdDo6CiAgICAgICAgICAg
ICByZXR1cm4gUVZhcmlhbnQoKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFF0OjpJbUN1cnJl
bnRTZWxlY3Rpb246IHsKLSAgICAgICAgICAgIGlmIChyZW5kZXJUZXh0Q29udHJvbCkgeworICAg
ICAgICAgICAgaWYgKCFlZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkgJiYgcmVuZGVyVGV4dENvbnRy
b2wpIHsKICAgICAgICAgICAgICAgICBpbnQgc3RhcnQgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnN0
YXJ0KCkub2Zmc2V0SW5Db250YWluZXJOb2RlKCk7CiAgICAgICAgICAgICAgICAgaW50IGVuZCA9
IGZyYW1lLT5zZWxlY3Rpb24oKS0+ZW5kKCkub2Zmc2V0SW5Db250YWluZXJOb2RlKCk7CiAgICAg
ICAgICAgICAgICAgaWYgKGVuZCA+IHN0YXJ0KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
UVZhcmlhbnQoUVN0cmluZyhyZW5kZXJUZXh0Q29udHJvbC0+dGV4dCgpKS5taWQoc3RhcnQsIGVu
ZCAtIHN0YXJ0KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQo
KTsKLQogICAgICAgICB9CiAgICAgICAgIGNhc2UgUXQ6OkltQW5jaG9yUG9zaXRpb246IHsKICAg
ICAgICAgICAgIGlmIChlZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkpIHsKSW5kZXg6IFdlYktpdC9x
dC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9x
dC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCShyZXZpc2lvbiA3MTQzMSkKKysrIFdl
YktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjg3LDYgKzE2ODcsNDg2IEBAIHZvaWQgdHN0X1FXZWJQYWdlOjppbnB1dE1ldGhvZHMoKQog
ICAgIFFDT01QQVJFKGlucHV0VmFsdWUsIFFTdHJpbmcoIlF0V2ViS2l0MiIpKTsKICAgICAvL0VO
RCAtIFRlc3QgZm9yIHNlbmRpbmcgZW1wdHkgUUlucHV0TWV0aG9kRXZlbnQKIAorICAgIHBhZ2Ut
Pm1haW5GcmFtZSgpLT5zZXRIdG1sKCI8aHRtbD48Ym9keT4iIFwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxpbnB1dCB0eXBlPSd0ZXh0JyBpZD0naW5wdXQ0
JyB2YWx1ZT0nUXRXZWJLaXQgaW5wdXRNZXRob2QnLz4iIFwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIjwvYm9keT48L2h0bWw+Iik7CisgICAgcGFnZS0+bWFp
bkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlwdCgidmFyIGlucHV0RWxlID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2lucHV0NCcpOyBpbnB1dEVsZS5mb2N1cygpOyBpbnB1dEVsZS5zZWxlY3Qo
KTsiKTsKKworICAgIC8vIGNsZWFyIHNlbGVjdGlvbiwgYWxzbyBjYW5jZWwgdGhlIG9uZ29pbmcg
Y29tcG9zaXRpb24gaWYgdGhlcmUgaXMgb25lCisgICAgeworICAgICAgICBRTGlzdDxRSW5wdXRN
ZXRob2RFdmVudDo6QXR0cmlidXRlPiBhdHRyaWJ1dGVzOworICAgICAgICBRSW5wdXRNZXRob2RF
dmVudDo6QXR0cmlidXRlIG5ld1NlbGVjdGlvbihRSW5wdXRNZXRob2RFdmVudDo6U2VsZWN0aW9u
LCAwLCAwLCBRVmFyaWFudCgpKTsKKyAgICAgICAgYXR0cmlidXRlcy5hcHBlbmQobmV3U2VsZWN0
aW9uKTsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnQoIiIsIGF0dHJpYnV0ZXMpOwor
ICAgICAgICBwYWdlLT5ldmVudCgmZXZlbnQpOworICAgIH0KKworICAgIC8vSW1DdXJyZW50U2Vs
ZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3VycmVu
dFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+
KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsKKyAgICBxRGVi
dWcoKSA8PCAiY3VycmVudCBzZWxlY3Rpb246IiA8PCBzZWxlY3Rpb25WYWx1ZTsKKworICAgIHZh
cmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbVN1cnJvdW5kaW5nVGV4dCk7Cisg
ICAgUVN0cmluZyBzdXJyb3VuZGluZ1ZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOwor
ICAgIFFDT01QQVJFKHN1cnJvdW5kaW5nVmFsdWUsIFFTdHJpbmcoIlF0V2ViS2l0IGlucHV0TWV0
aG9kIikpOworICAgIHFEZWJ1ZygpIDw8ICJzdXJyb3VuZGluZyB0ZXh0OiIgPDwgc3Vycm91bmRp
bmdWYWx1ZTsKKworICAgIC8vSW1BbmNob3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5p
bnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlv
biA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5jaG9yUG9zaXRpb24sIDApOwor
ICAgIHFEZWJ1ZygpIDw8ICJhbmNob3I6IiA8PCBhbmNob3JQb3NpdGlvbjsKKworICAgIC8vSW1D
dXJzb3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJ
bUN1cnNvclBvc2l0aW9uKTsKKyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7
CisgICAgUUNPTVBBUkUoY3Vyc29yUG9zaXRpb24sIDApOworICAgIHFEZWJ1ZygpIDw8ICJjdXJv
c3I6IiA8PCBjdXJzb3JQb3NpdGlvbjsKKworICAgIC8vIHNlbmQgdGVtcG9yYXJ5IHRleHQsIHdo
aWNoIG1ha2VzIHRoZSBlZGl0b3IgaGFzIGNvbXBvc2l0aW9uICdtJworICAgIHsKKyAgICAgICAg
UUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAg
UUlucHV0TWV0aG9kRXZlbnQgZXZlbnQoIm0iLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgcGFnZS0+
ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAgICAvL0ltQ3VycmVudFNlbGVjdGlvbgorICAgIHZh
cmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnJlbnRTZWxlY3Rpb24pOwor
ICAgIHNlbGVjdGlvblZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01Q
QVJFKHNlbGVjdGlvblZhbHVlLCBRU3RyaW5nKCIiKSk7CisgICAgcURlYnVnKCkgPDwgImN1cnJl
bnQgc2VsZWN0aW9uOiIgPDwgc2VsZWN0aW9uVmFsdWU7CisKKyAgICB2YXJpYW50ID0gcGFnZS0+
aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5n
VmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRp
bmdWYWx1ZSwgUVN0cmluZygiUXRXZWJLaXQgaW5wdXRNZXRob2QiKSk7CisgICAgcURlYnVnKCkg
PDwgInN1cnJvdW5kaW5nIHRleHQ6IiA8PCBzdXJyb3VuZGluZ1ZhbHVlOworCisgICAgLy9JbUN1
cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6Oklt
Q3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsK
KyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgMCk7CisgICAgcURlYnVnKCkgPDwgImN1cm9z
cjoiIDw8IGN1cnNvclBvc2l0aW9uOworCisgICAgLy9JbUFuY2hvclBvc2l0aW9uCisgICAgdmFy
aWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOworICAg
IGFuY2hvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQ
b3NpdGlvbiwgLTEpOworICAgIHFEZWJ1ZygpIDw8ICJhbmNob3I6IiA8PCBhbmNob3JQb3NpdGlv
bjsKKworICAgIC8vIHNlbmQgdGVtcG9yYXJ5IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0b3Ig
aGFzIGNvbXBvc2l0aW9uICdsJworICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZl
bnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZl
bnQoImwiLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9
CisKKyAgICAvL0ltQ3VycmVudFNlbGVjdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1l
dGhvZFF1ZXJ5KFF0OjpJbUN1cnJlbnRTZWxlY3Rpb24pOworICAgIHNlbGVjdGlvblZhbHVlID0g
dmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHNlbGVjdGlvblZhbHVlLCBR
U3RyaW5nKCIiKSk7CisgICAgcURlYnVnKCkgPDwgImN1cnJlbnQgc2VsZWN0aW9uOiIgPDwgc2Vs
ZWN0aW9uVmFsdWU7CisKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6
SW1TdXJyb3VuZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVl
PFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygiUXRX
ZWJLaXQgaW5wdXRNZXRob2QiKSk7CisgICAgcURlYnVnKCkgPDwgInN1cnJvdW5kaW5nIHRleHQ6
IiA8PCBzdXJyb3VuZGluZ1ZhbHVlOworCisgICAgLy9JbUN1cnNvclBvc2l0aW9uCisgICAgdmFy
aWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAg
IGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQ
b3NpdGlvbiwgMCk7CisgICAgcURlYnVnKCkgPDwgImN1cm9zcjoiIDw8IGN1cnNvclBvc2l0aW9u
OworCisgICAgLy9JbUFuY2hvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0
aG9kUXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOworICAgIGFuY2hvclBvc2l0aW9uID0gIHZh
cmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwgLTEpOworICAgIHFE
ZWJ1ZygpIDw8ICJhbmNob3I6IiA8PCBhbmNob3JQb3NpdGlvbjsKKworICAgIC8vIHNlbmQgdGVt
cG9yYXJ5IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0b3IgaGFzIGNvbXBvc2l0aW9uICdvaycK
KyAgICB7CisgICAgICAgIFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+IGF0dHJp
YnV0ZXM7CisgICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCJvayIsIGF0dHJpYnV0ZXMp
OworICAgICAgICBwYWdlLT5ldmVudCgmZXZlbnQpOworICAgIH0KKworICAgIC8vSW1DdXJyZW50
U2VsZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3Vy
cmVudFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJp
bmc+KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsKKyAgICBx
RGVidWcoKSA8PCAiY3VycmVudCBzZWxlY3Rpb246IiA8PCBzZWxlY3Rpb25WYWx1ZTsKKworICAg
IHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbVN1cnJvdW5kaW5nVGV4dCk7
CisgICAgc3Vycm91bmRpbmdWYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBR
Q09NUEFSRShzdXJyb3VuZGluZ1ZhbHVlLCBRU3RyaW5nKCJRdFdlYktpdCBpbnB1dE1ldGhvZCIp
KTsKKyAgICBxRGVidWcoKSA8PCAic3Vycm91bmRpbmcgdGV4dDoiIDw8IHN1cnJvdW5kaW5nVmFs
dWU7CisKKyAgICAvL0ltQ3Vyc29yUG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRN
ZXRob2RRdWVyeShRdDo6SW1DdXJzb3JQb3NpdGlvbik7CisgICAgY3Vyc29yUG9zaXRpb24gPSAg
dmFyaWFudC50b0ludCgpOworICAgIFFDT01QQVJFKGN1cnNvclBvc2l0aW9uLCAwKTsKKyAgICBx
RGVidWcoKSA8PCAiY3Vyb3NyOiIgPDwgY3Vyc29yUG9zaXRpb247CisKKyAgICAvL0ltQW5jaG9y
UG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1BbmNo
b3JQb3NpdGlvbik7CisgICAgYW5jaG9yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAg
IFFDT01QQVJFKGFuY2hvclBvc2l0aW9uLCAtMik7CisgICAgcURlYnVnKCkgPDwgImFuY2hvcjoi
IDw8IGFuY2hvclBvc2l0aW9uOworCisgICAgLy8gc2VuZCBjb21taXQgdGV4dCwgd2hpY2ggbWFr
ZXMgdGhlIGVkaXRvciBjb25mb3JtcyBjb21wb3NpdGlvbgorICAgIHsKKyAgICAgICAgUUxpc3Q8
UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0
TWV0aG9kRXZlbnQgZXZlbnQoIiIsIGF0dHJpYnV0ZXMpOworICAgICAgICBldmVudC5zZXRDb21t
aXRTdHJpbmcoIm4iKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAg
ICAvL0ltQ3VycmVudFNlbGVjdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1
ZXJ5KFF0OjpJbUN1cnJlbnRTZWxlY3Rpb24pOworICAgIHNlbGVjdGlvblZhbHVlID0gdmFyaWFu
dC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHNlbGVjdGlvblZhbHVlLCBRU3RyaW5n
KCIiKSk7CisgICAgcURlYnVnKCkgPDwgImN1cnJlbnQgc2VsZWN0aW9uOiIgPDwgc2VsZWN0aW9u
VmFsdWU7CisKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJy
b3VuZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJp
bmc+KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygiblF0V2ViS2l0
IGlucHV0TWV0aG9kIikpOworICAgIHFEZWJ1ZygpIDw8ICJzdXJyb3VuZGluZyB0ZXh0OiIgPDwg
c3Vycm91bmRpbmdWYWx1ZTsKKworICAgIC8vSW1DdXJzb3JQb3NpdGlvbgorICAgIHZhcmlhbnQg
PSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBvc2l0aW9uKTsKKyAgICBjdXJz
b3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoY3Vyc29yUG9zaXRp
b24sIDEpOworICAgIHFEZWJ1ZygpIDw8ICJjdXJvc3I6IiA8PCBjdXJzb3JQb3NpdGlvbjsKKwor
ICAgIC8vSW1BbmNob3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1
ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50
LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5jaG9yUG9zaXRpb24sIDEpOworICAgIHFEZWJ1Zygp
IDw8ICJhbmNob3I6IiA8PCBhbmNob3JQb3NpdGlvbjsKKworICAgICAvLyBzZW5kIHRlbXBvcmFy
eSB0ZXh0LCB3aGljaCBtYWtlcyB0aGUgZWRpdG9yIGhhcyBjb21wb3NpdGlvbiAncCcKKyAgICB7
CisgICAgICAgIFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7
CisgICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCJwIiwgYXR0cmlidXRlcyk7CisgICAg
ICAgIHBhZ2UtPmV2ZW50KCZldmVudCk7CisgICAgfQorCisgICAgLy9JbUN1cnJlbnRTZWxlY3Rp
b24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJyZW50U2Vs
ZWN0aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsK
KyAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOworICAgIHFEZWJ1Zygp
IDw8ICJjdXJyZW50IHNlbGVjdGlvbjoiIDw8IHNlbGVjdGlvblZhbHVlOworCisgICAgdmFyaWFu
dCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBz
dXJyb3VuZGluZ1ZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJF
KHN1cnJvdW5kaW5nVmFsdWUsIFFTdHJpbmcoIm5RdFdlYktpdCBpbnB1dE1ldGhvZCIpKTsKKyAg
ICBxRGVidWcoKSA8PCAic3Vycm91bmRpbmcgdGV4dDoiIDw8IHN1cnJvdW5kaW5nVmFsdWU7CisK
KyAgICAvL0ltQ3Vyc29yUG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RR
dWVyeShRdDo6SW1DdXJzb3JQb3NpdGlvbik7CisgICAgY3Vyc29yUG9zaXRpb24gPSAgdmFyaWFu
dC50b0ludCgpOworICAgIFFDT01QQVJFKGN1cnNvclBvc2l0aW9uLCAxKTsKKyAgICBxRGVidWco
KSA8PCAiY3Vyb3NyOiIgPDwgY3Vyc29yUG9zaXRpb247CisKKyAgICAvL0ltQW5jaG9yUG9zaXRp
b24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1BbmNob3JQb3Np
dGlvbik7CisgICAgYW5jaG9yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01Q
QVJFKGFuY2hvclBvc2l0aW9uLCAwKTsKKyAgICBxRGVidWcoKSA8PCAiYW5jaG9yOiIgPDwgYW5j
aG9yUG9zaXRpb247CisKKyAgICAvLyBzZW5kIGNvbW1pdCB0ZXh0LCB3aGljaCBtYWtlcyB0aGUg
ZWRpdG9yIGNvbmZvcm1zIGNvbXBvc2l0aW9uCisgICAgeworICAgICAgICBRTGlzdDxRSW5wdXRN
ZXRob2RFdmVudDo6QXR0cmlidXRlPiBhdHRyaWJ1dGVzOworICAgICAgICBRSW5wdXRNZXRob2RF
dmVudCBldmVudCgiIiwgYXR0cmlidXRlcyk7CisgICAgICAgIGV2ZW50LnNldENvbW1pdFN0cmlu
ZygicSIpOworICAgICAgICBwYWdlLT5ldmVudCgmZXZlbnQpOworICAgIH0KKworICAgIC8vSW1D
dXJyZW50U2VsZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6
OkltQ3VycmVudFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVl
PFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsK
KyAgICBxRGVidWcoKSA8PCAiY3VycmVudCBzZWxlY3Rpb246IiA8PCBzZWxlY3Rpb25WYWx1ZTsK
KworICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbVN1cnJvdW5kaW5n
VGV4dCk7CisgICAgc3Vycm91bmRpbmdWYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsK
KyAgICBRQ09NUEFSRShzdXJyb3VuZGluZ1ZhbHVlLCBRU3RyaW5nKCJucVF0V2ViS2l0IGlucHV0
TWV0aG9kIikpOworICAgIHFEZWJ1ZygpIDw8ICJzdXJyb3VuZGluZyB0ZXh0OiIgPDwgc3Vycm91
bmRpbmdWYWx1ZTsKKworICAgIC8vSW1DdXJzb3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdl
LT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBvc2l0aW9uKTsKKyAgICBjdXJzb3JQb3Np
dGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoY3Vyc29yUG9zaXRpb24sIDIp
OworICAgIHFEZWJ1ZygpIDw8ICJjdXJvc3I6IiA8PCBjdXJzb3JQb3NpdGlvbjsKKworICAgIC8v
SW1BbmNob3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0
OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50
KCk7CisgICAgUUNPTVBBUkUoYW5jaG9yUG9zaXRpb24sIDIpOworICAgIHFEZWJ1ZygpIDw8ICJh
bmNob3I6IiA8PCBhbmNob3JQb3NpdGlvbjsKKworICAgIC8vU2VsZWN0IHRvIHRoZSBzdGFydCBv
ZiB0aGUgbGluZQorICAgIHBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdFN0YXJ0
T2ZMaW5lKTsKKworICAgIC8vSW1DdXJyZW50U2VsZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2Ut
PmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3VycmVudFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9u
VmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9u
VmFsdWUsIFFTdHJpbmcoIm5xIikpOworICAgIHFEZWJ1ZygpIDw8ICJjdXJyZW50IHNlbGVjdGlv
bjoiIDw8IHNlbGVjdGlvblZhbHVlOworCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9k
UXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJyb3VuZGluZ1ZhbHVlID0gdmFy
aWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1cnJvdW5kaW5nVmFsdWUsIFFT
dHJpbmcoIm5xUXRXZWJLaXQgaW5wdXRNZXRob2QiKSk7CisgICAgcURlYnVnKCkgPDwgInN1cnJv
dW5kaW5nIHRleHQ6IiA8PCBzdXJyb3VuZGluZ1ZhbHVlOworCisgICAgLy9JbUN1cnNvclBvc2l0
aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9z
aXRpb24pOworICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09N
UEFSRShjdXJzb3JQb3NpdGlvbiwgMCk7CisgICAgcURlYnVnKCkgPDwgImN1cm9zcjoiIDw8IGN1
cnNvclBvc2l0aW9uOworCisgICAgLy9JbUFuY2hvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBh
Z2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOworICAgIGFuY2hvclBv
c2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwg
Mik7CisgICAgcURlYnVnKCkgPDwgImFuY2hvcjoiIDw8IGFuY2hvclBvc2l0aW9uOworCisgICAg
Ly8gc2VuZCB0ZW1wb3JhcnkgdGV4dCwgd2hpY2ggbWFrZXMgdGhlIGVkaXRvciBoYXMgY29tcG9z
aXRpb24gJ3cnCisgICAgeworICAgICAgICBRTGlzdDxRSW5wdXRNZXRob2RFdmVudDo6QXR0cmli
dXRlPiBhdHRyaWJ1dGVzOworICAgICAgICBRSW5wdXRNZXRob2RFdmVudCBldmVudCgidyIsIGF0
dHJpYnV0ZXMpOworICAgICAgICBwYWdlLT5ldmVudCgmZXZlbnQpOworICAgIH0KKworICAgIC8v
SW1DdXJyZW50U2VsZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnko
UXQ6OkltQ3VycmVudFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZh
bHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIp
KTsKKyAgICBxRGVidWcoKSA8PCAiY3VycmVudCBzZWxlY3Rpb246IiA8PCBzZWxlY3Rpb25WYWx1
ZTsKKworICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbVN1cnJvdW5k
aW5nVGV4dCk7CisgICAgc3Vycm91bmRpbmdWYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4o
KTsKKyAgICBRQ09NUEFSRShzdXJyb3VuZGluZ1ZhbHVlLCBRU3RyaW5nKCJRdFdlYktpdCBpbnB1
dE1ldGhvZCIpKTsKKyAgICBxRGVidWcoKSA8PCAic3Vycm91bmRpbmcgdGV4dDoiIDw8IHN1cnJv
dW5kaW5nVmFsdWU7CisKKyAgICAvL0ltQ3Vyc29yUG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFn
ZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJzb3JQb3NpdGlvbik7CisgICAgY3Vyc29yUG9z
aXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01QQVJFKGN1cnNvclBvc2l0aW9uLCAw
KTsKKyAgICBxRGVidWcoKSA8PCAiY3Vyb3NyOiIgPDwgY3Vyc29yUG9zaXRpb247CisKKyAgICAv
L0ltQW5jaG9yUG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShR
dDo6SW1BbmNob3JQb3NpdGlvbik7CisgICAgYW5jaG9yUG9zaXRpb24gPSAgdmFyaWFudC50b0lu
dCgpOworICAgIFFDT01QQVJFKGFuY2hvclBvc2l0aW9uLCAtMSk7CisgICAgcURlYnVnKCkgPDwg
ImFuY2hvcjoiIDw8IGFuY2hvclBvc2l0aW9uOworCisgICAgLy8gc2VuZCBjb21taXQgdGV4dCwg
d2hpY2ggbWFrZXMgdGhlIGVkaXRvciBjb25mb3JtcyBjb21wb3NpdGlvbgorICAgIHsKKyAgICAg
ICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAg
ICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnQoIiIsIGF0dHJpYnV0ZXMpOworICAgICAgICBldmVu
dC5zZXRDb21taXRTdHJpbmcoIngiKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAg
ICB9CisKKyAgICAvL0ltQ3VycmVudFNlbGVjdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1
dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnJlbnRTZWxlY3Rpb24pOworICAgIHNlbGVjdGlvblZhbHVl
ID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHNlbGVjdGlvblZhbHVl
LCBRU3RyaW5nKCIiKSk7CisgICAgcURlYnVnKCkgPDwgImN1cnJlbnQgc2VsZWN0aW9uOiIgPDwg
c2VsZWN0aW9uVmFsdWU7CisKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShR
dDo6SW1TdXJyb3VuZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZh
bHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygi
eFF0V2ViS2l0IGlucHV0TWV0aG9kIikpOworICAgIHFEZWJ1ZygpIDw8ICJzdXJyb3VuZGluZyB0
ZXh0OiIgPDwgc3Vycm91bmRpbmdWYWx1ZTsKKworICAgIC8vSW1DdXJzb3JQb3NpdGlvbgorICAg
IHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBvc2l0aW9uKTsK
KyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoY3Vy
c29yUG9zaXRpb24sIDEpOworICAgIHFEZWJ1ZygpIDw8ICJjdXJvc3I6IiA8PCBjdXJzb3JQb3Np
dGlvbjsKKworICAgIC8vSW1BbmNob3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1
dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9
ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5jaG9yUG9zaXRpb24sIDEpOworICAg
IHFEZWJ1ZygpIDw8ICJhbmNob3I6IiA8PCBhbmNob3JQb3NpdGlvbjsKKworICAgIC8vU2VsZWN0
IHRvIHRoZSBuZXh0IHdvcmQKKyAgICBwYWdlLT50cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpTZWxl
Y3ROZXh0V29yZCk7CisKKyAgICAvL0ltQ3VycmVudFNlbGVjdGlvbgorICAgIHZhcmlhbnQgPSBw
YWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnJlbnRTZWxlY3Rpb24pOworICAgIHNlbGVj
dGlvblZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHNlbGVj
dGlvblZhbHVlLCBRU3RyaW5nKCJRdFdlYktpdCIpKTsKKyAgICBxRGVidWcoKSA8PCAiY3VycmVu
dCBzZWxlY3Rpb246IiA8PCBzZWxlY3Rpb25WYWx1ZTsKKworICAgIHZhcmlhbnQgPSBwYWdlLT5p
bnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbVN1cnJvdW5kaW5nVGV4dCk7CisgICAgc3Vycm91bmRpbmdW
YWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzdXJyb3VuZGlu
Z1ZhbHVlLCBRU3RyaW5nKCJ4UXRXZWJLaXQgaW5wdXRNZXRob2QiKSk7CisgICAgcURlYnVnKCkg
PDwgInN1cnJvdW5kaW5nIHRleHQ6IiA8PCBzdXJyb3VuZGluZ1ZhbHVlOworCisgICAgLy9JbUN1
cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6Oklt
Q3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsK
KyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgOSk7CisgICAgcURlYnVnKCkgPDwgImN1cm9z
cjoiIDw8IGN1cnNvclBvc2l0aW9uOworCisgICAgLy9JbUFuY2hvclBvc2l0aW9uCisgICAgdmFy
aWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOworICAg
IGFuY2hvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQ
b3NpdGlvbiwgMSk7CisgICAgcURlYnVnKCkgPDwgImFuY2hvcjoiIDw8IGFuY2hvclBvc2l0aW9u
OworCisgICAgLy8gc2VuZCB0ZW1wb3JhcnkgdGV4dCwgd2hpY2ggbWFrZXMgdGhlIGVkaXRvciBo
YXMgY29tcG9zaXRpb24gJ2QnCisgICAgeworICAgICAgICBRTGlzdDxRSW5wdXRNZXRob2RFdmVu
dDo6QXR0cmlidXRlPiBhdHRyaWJ1dGVzOyAgICAvL1NlbGVjdCB0byB0aGUgbmV4dCB3b3JkCisg
ICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCJkIiwgYXR0cmlidXRlcyk7CisgICAgICAg
IHBhZ2UtPmV2ZW50KCZldmVudCk7CisgICAgfQorCisgICAgLy9JbUN1cnJlbnRTZWxlY3Rpb24K
KyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJyZW50U2VsZWN0
aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAg
ICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOworICAgIHFEZWJ1ZygpIDw8
ICJjdXJyZW50IHNlbGVjdGlvbjoiIDw8IHNlbGVjdGlvblZhbHVlOworCisgICAgdmFyaWFudCA9
IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJy
b3VuZGluZ1ZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1
cnJvdW5kaW5nVmFsdWUsIFFTdHJpbmcoInggaW5wdXRNZXRob2QiKSk7CisgICAgcURlYnVnKCkg
PDwgInN1cnJvdW5kaW5nIHRleHQ6IiA8PCBzdXJyb3VuZGluZ1ZhbHVlOworCisgICAgLy9JbUN1
cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6Oklt
Q3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsK
KyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgMSk7CisgICAgcURlYnVnKCkgPDwgImN1cm9z
cjoiIDw8IGN1cnNvclBvc2l0aW9uOworCisgICAgLy9JbUFuY2hvclBvc2l0aW9uCisgICAgdmFy
aWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOworICAg
IGFuY2hvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQ
b3NpdGlvbiwgMCk7CisgICAgcURlYnVnKCkgPDwgImFuY2hvcjoiIDw8IGFuY2hvclBvc2l0aW9u
OworCisgICAgLy8gc2VuZCBjb21taXQgdGV4dCwgd2hpY2ggbWFrZXMgdGhlIGVkaXRvciBjb25m
b3JtcyBjb21wb3NpdGlvbgorICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6
OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnQo
IiIsIGF0dHJpYnV0ZXMpOworICAgICAgICBldmVudC5zZXRDb21taXRTdHJpbmcoImQiKTsKKyAg
ICAgICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAgICAvL0ltQ3VycmVudFNlbGVj
dGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnJlbnRT
ZWxlY3Rpb24pOworICAgIHNlbGVjdGlvblZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigp
OworICAgIFFDT01QQVJFKHNlbGVjdGlvblZhbHVlLCBRU3RyaW5nKCIiKSk7CisgICAgcURlYnVn
KCkgPDwgImN1cnJlbnQgc2VsZWN0aW9uOiIgPDwgc2VsZWN0aW9uVmFsdWU7CisKKyAgICB2YXJp
YW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1RleHQpOworICAg
IHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBB
UkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygieGQgaW5wdXRNZXRob2QiKSk7CisgICAgcURl
YnVnKCkgPDwgInN1cnJvdW5kaW5nIHRleHQ6IiA8PCBzdXJyb3VuZGluZ1ZhbHVlOworCisgICAg
Ly9JbUN1cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnko
UXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQudG9J
bnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgMik7CisgICAgcURlYnVnKCkgPDwg
ImN1cm9zcjoiIDw8IGN1cnNvclBvc2l0aW9uOworCisgICAgLy9JbUFuY2hvclBvc2l0aW9uCisg
ICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24p
OworICAgIGFuY2hvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKworICAgIHFEZWJ1Zygp
IDw8ICJhbmNob3I6IiA8PCBhbmNob3JQb3NpdGlvbjsKKyAgICBRQ09NUEFSRShhbmNob3JQb3Np
dGlvbiwgMik7CisgICAgLy9TZWxlY3QgdG8gdGhlIG5leHQgd29yZAorICAgIHBhZ2UtPnRyaWdn
ZXJBY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdE5leHRMaW5lKTsKKworICAgIC8vSW1DdXJyZW50U2Vs
ZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3VycmVu
dFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+
KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiBpbnB1dE1ldGhvZCIp
KTsKKyAgICBxRGVidWcoKSA8PCAiY3VycmVudCBzZWxlY3Rpb246IiA8PCBzZWxlY3Rpb25WYWx1
ZTsKKworICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbVN1cnJvdW5k
aW5nVGV4dCk7CisgICAgc3Vycm91bmRpbmdWYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4o
KTsKKyAgICBRQ09NUEFSRShzdXJyb3VuZGluZ1ZhbHVlLCBRU3RyaW5nKCJ4ZCBpbnB1dE1ldGhv
ZCIpKTsKKyAgICBxRGVidWcoKSA8PCAic3Vycm91bmRpbmcgdGV4dDoiIDw8IHN1cnJvdW5kaW5n
VmFsdWU7CisKKyAgICAvL0ltQ3Vyc29yUG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5w
dXRNZXRob2RRdWVyeShRdDo6SW1DdXJzb3JQb3NpdGlvbik7CisgICAgY3Vyc29yUG9zaXRpb24g
PSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01QQVJFKGN1cnNvclBvc2l0aW9uLCAxNCk7Cisg
ICAgcURlYnVnKCkgPDwgImN1cm9zcjoiIDw8IGN1cnNvclBvc2l0aW9uOworCisgICAgLy9JbUFu
Y2hvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6Oklt
QW5jaG9yUG9zaXRpb24pOworICAgIGFuY2hvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsK
KyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwgMik7CisgICAgcURlYnVnKCkgPDwgImFuY2hv
cjoiIDw8IGFuY2hvclBvc2l0aW9uOworCisgICAgLy8gc2VuZCB0ZW1wb3JhcnkgdGV4dCwgd2hp
Y2ggbWFrZXMgdGhlIGVkaXRvciBoYXMgY29tcG9zaXRpb24gJ2QnCisgICAgeworICAgICAgICBR
TGlzdDxRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlPiBhdHRyaWJ1dGVzOyAgICAvL1NlbGVj
dCB0byB0aGUgbmV4dCB3b3JkCisgICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCJkIiwg
YXR0cmlidXRlcyk7CisgICAgICAgIHBhZ2UtPmV2ZW50KCZldmVudCk7CisgICAgfQorCisgICAg
Ly9JbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVy
eShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQu
dmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygi
IikpOworICAgIHFEZWJ1ZygpIDw8ICJjdXJyZW50IHNlbGVjdGlvbjoiIDw8IHNlbGVjdGlvblZh
bHVlOworCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91
bmRpbmdUZXh0KTsKKyAgICBzdXJyb3VuZGluZ1ZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5n
PigpOworICAgIFFDT01QQVJFKHN1cnJvdW5kaW5nVmFsdWUsIFFTdHJpbmcoInhkIikpOworICAg
IHFEZWJ1ZygpIDw8ICJzdXJyb3VuZGluZyB0ZXh0OiIgPDwgc3Vycm91bmRpbmdWYWx1ZTsKKwor
ICAgIC8vSW1DdXJzb3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1
ZXJ5KFF0OjpJbUN1cnNvclBvc2l0aW9uKTsKKyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50
LnRvSW50KCk7CisgICAgUUNPTVBBUkUoY3Vyc29yUG9zaXRpb24sIDIpOworICAgIHFEZWJ1Zygp
IDw8ICJjdXJvc3I6IiA8PCBjdXJzb3JQb3NpdGlvbjsKKworICAgIC8vSW1BbmNob3JQb3NpdGlv
bgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0
aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBB
UkUoYW5jaG9yUG9zaXRpb24sIDEpOworICAgIHFEZWJ1ZygpIDw8ICJhbmNob3I6IiA8PCBhbmNo
b3JQb3NpdGlvbjsKKworICAgIC8vIHNlbmQgY29tbWl0IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBl
ZGl0b3IgY29uZm9ybXMgY29tcG9zaXRpb24KKyAgICB7CisgICAgICAgIFFMaXN0PFFJbnB1dE1l
dGhvZEV2ZW50OjpBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CisgICAgICAgIFFJbnB1dE1ldGhvZEV2
ZW50IGV2ZW50KCIiLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgZXZlbnQuc2V0Q29tbWl0U3RyaW5n
KCJvayIpOworICAgICAgICBwYWdlLT5ldmVudCgmZXZlbnQpOworICAgIH0KKworICAgIC8vSW1D
dXJyZW50U2VsZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6
OkltQ3VycmVudFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVl
PFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsK
KyAgICBxRGVidWcoKSA8PCAiY3VycmVudCBzZWxlY3Rpb246IiA8PCBzZWxlY3Rpb25WYWx1ZTsK
KworICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbVN1cnJvdW5kaW5n
VGV4dCk7CisgICAgc3Vycm91bmRpbmdWYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsK
KyAgICBRQ09NUEFSRShzdXJyb3VuZGluZ1ZhbHVlLCBRU3RyaW5nKCJ4ZG9rIikpOworICAgIHFE
ZWJ1ZygpIDw8ICJzdXJyb3VuZGluZyB0ZXh0OiIgPDwgc3Vycm91bmRpbmdWYWx1ZTsKKworICAg
IC8vSW1DdXJzb3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5
KFF0OjpJbUN1cnNvclBvc2l0aW9uKTsKKyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRv
SW50KCk7CisgICAgUUNPTVBBUkUoY3Vyc29yUG9zaXRpb24sIDQpOworICAgIHFEZWJ1ZygpIDw8
ICJjdXJvc3I6IiA8PCBjdXJzb3JQb3NpdGlvbjsKKworICAgIC8vSW1BbmNob3JQb3NpdGlvbgor
ICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9u
KTsKKyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUo
YW5jaG9yUG9zaXRpb24sIDQpOworICAgIHFEZWJ1ZygpIDw8ICJhbmNob3I6IiA8PCBhbmNob3JQ
b3NpdGlvbjsKKwogICAgIGRlbGV0ZSBjb250YWluZXI7CiB9CiAKSW5kZXg6IFdlYktpdFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDcxNDMyKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTAtMTEtMDUgIFlpIFNoZW4gIDx5aS40LnNoZW5Abm9raWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF1bUXRUZXN0
QnJvd3Nlcl0gRG9uJ3QgZXJhc2UgaW5jb3JyZWN0IHVybCBpbiB0aGUgVXJsIEJhcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkwNDcKKworICAgICAg
ICAqIFF0VGVzdEJyb3dzZXIvbWFpbndpbmRvdy5jcHA6CisgICAgICAgIChNYWluV2luZG93Ojpz
ZXRBZGRyZXNzVXJsKToKKwogMjAxMC0xMS0wNCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5j
b20+CiAKICAgICAgICAgVGVhY2ggY2hlY2std2Via2l0LXN0eWxlIGFib3V0IFRlc3ROZXRzY2Fw
ZVBsdWdJbgpJbmRleDogV2ViS2l0VG9vbHMvUXRUZXN0QnJvd3Nlci9tYWlud2luZG93LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9RdFRlc3RCcm93c2VyL21haW53aW5kb3cuY3BwCShy
ZXZpc2lvbiA3MTQzMSkKKysrIFdlYktpdFRvb2xzL1F0VGVzdEJyb3dzZXIvbWFpbndpbmRvdy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiwxMiArMTE2LDEzIEBAIFdlYlBhZ2UqIE1haW5XaW5k
b3c6OnBhZ2UoKSBjb25zdAogCiB2b2lkIE1haW5XaW5kb3c6OnNldEFkZHJlc3NVcmwoY29uc3Qg
UVVybCYgdXJsKQogewotICAgIHVybEVkaXQtPnNldFRleHQodXJsLnRvU3RyaW5nKFFVcmw6OlJl
bW92ZVVzZXJJbmZvKSk7CisgICAgc2V0QWRkcmVzc1VybCh1cmwudG9TdHJpbmcoUVVybDo6UmVt
b3ZlVXNlckluZm8pKTsKIH0KIAogdm9pZCBNYWluV2luZG93OjpzZXRBZGRyZXNzVXJsKGNvbnN0
IFFTdHJpbmcmIHVybCkKIHsKLSAgICB1cmxFZGl0LT5zZXRUZXh0KHVybCk7CisgICAgaWYgKCF1
cmwuY29udGFpbnMoImFib3V0OiIpKQorICAgICAgICB1cmxFZGl0LT5zZXRUZXh0KHVybCk7CiB9
CiAKIHZvaWQgTWFpbldpbmRvdzo6YWRkQ29tcGxldGVyRW50cnkoY29uc3QgUVVybCYgdXJsKQo=
</data>
<flag name="review"
          id="63798"
          type_id="1"
          status="-"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73375</attachid>
            <date>2010-11-09 07:26:14 -0800</date>
            <delta_ts>2010-11-15 07:07:55 -0800</delta_ts>
            <desc>try again</desc>
            <filename>49200.patch</filename>
            <type>text/plain</type>
            <size>15869</size>
            <attacher name="Yi Shen">max.hong.shen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNzE2MjUpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMTEtMDkgIFlpIFNoZW4gIDx5aS40LnNoZW5Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTIwMAorICAgICAgICBb
UXRdIGJ1Z3MgaW4gQ29tcG9zaXRpb24gbW9kZSBmb3IgUVdlYlBhZ2U6OmlucHV0TWV0aG9kRXZl
bnQgJiBpbnB1dE1ldGhvZFF1ZXJ5KCkKKworICAgICAgICBNYWtlIFFXZWJQYWdlIHdvcmsgYXMg
Zm9sbG93aW5nIHdoZW4gZWRpdG9yIGlzIGluIGNvbXBvc2l0aW9uIG1vZGU6CisgICAgICAgIDEu
IGFuY2hvciBwb3NpdGlvbiBhbmQgY3Vyc29yIHBvc2l0aW9uIGFyZSB0aGUgc2FtZSBhbmQgYWx3
YXlzID49IDAKKyAgICAgICAgMi4gY3VycmVudCBzZWxlY3Rpb24gaXMgYWx3YXlzIE5VTEwKKwor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Omlu
cHV0TWV0aG9kRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2U6OmlucHV0TWV0aG9kUXVlcnkpOgor
ICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3Rf
UVdlYlBhZ2U6OmlucHV0TWV0aG9kcyk6CisKIDIwMTAtMTEtMDggIEJlbmphbWluIFBvdWxhaW4g
IDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRy
ZWFzIEtsaW5nLgpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDcxNjI1KQorKysgV2ViS2l0
L3F0L0FwaS9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNjgsOSArMTA2OCw3IEBA
IHZvaWQgUVdlYlBhZ2VQcml2YXRlOjppbnB1dE1ldGhvZEV2ZW50KFEKICAgICAgICAgICAgICAg
ICBzZXRTZWxlY3Rpb25SYW5nZShub2RlLCBxTWluKGEuc3RhcnQsIChhLnN0YXJ0ICsgYS5sZW5n
dGgpKSwgcU1heChhLnN0YXJ0LCAoYS5zdGFydCArIGEubGVuZ3RoKSkpOwogCiAgICAgICAgICAg
ICBpZiAoIWV2LT5wcmVlZGl0U3RyaW5nKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAg
ZWRpdG9yLT5zZXRDb21wb3NpdGlvbihldi0+cHJlZWRpdFN0cmluZygpLCB1bmRlcmxpbmVzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYS5sZW5ndGggPCAwKSA/IGEu
c3RhcnQgKyBhLmxlbmd0aCA6IGEuc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChhLmxlbmd0aCA8IDApID8gYS5zdGFydCA6IGEuc3RhcnQgKyBhLmxlbmd0aCk7
CisgICAgICAgICAgICAgICAgZWRpdG9yLT5zZXRDb21wb3NpdGlvbihldi0+cHJlZWRpdFN0cmlu
ZygpLCB1bmRlcmxpbmVzLCBxTWluKGEuc3RhcnQsIChhLnN0YXJ0ICsgYS5sZW5ndGgpKSwgcU1h
eChhLnN0YXJ0LCAoYS5zdGFydCArIGEubGVuZ3RoKSkpOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNvbXBvc2l0
aW9uLCBhbiBlbXB0eSBwcmUtZWRpdCBzdHJpbmcgYW5kIGEgc2VsZWN0aW9uIG9mIHplcm8KICAg
ICAgICAgICAgICAgICAvLyBjYW5jZWxzIHRoZSBjdXJyZW50IGNvbXBvc2l0aW9uCkBAIC0xMDg1
LDcgKzEwODMsNyBAQCB2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6aW5wdXRNZXRob2RFdmVudChRCiAg
ICAgaWYgKCFldi0+Y29tbWl0U3RyaW5nKCkuaXNFbXB0eSgpKQogICAgICAgICBlZGl0b3ItPmNv
bmZpcm1Db21wb3NpdGlvbihldi0+Y29tbWl0U3RyaW5nKCkpOwogICAgIGVsc2UgaWYgKCFoYXNT
ZWxlY3Rpb24gJiYgIWV2LT5wcmVlZGl0U3RyaW5nKCkuaXNFbXB0eSgpKQotICAgICAgICBlZGl0
b3ItPnNldENvbXBvc2l0aW9uKGV2LT5wcmVlZGl0U3RyaW5nKCksIHVuZGVybGluZXMsIDAsIGV2
LT5wcmVlZGl0U3RyaW5nKCkubGVuZ3RoKCkpOworICAgICAgICBlZGl0b3ItPnNldENvbXBvc2l0
aW9uKGV2LT5wcmVlZGl0U3RyaW5nKCksIHVuZGVybGluZXMsIDAsIDApOwogCiAgICAgZXYtPmFj
Y2VwdCgpOwogfQpAQCAtMTM3MCwxMSArMTM2OCwxMCBAQCBRVmFyaWFudCBRV2ViUGFnZTo6aW5w
dXRNZXRob2RRdWVyeShRdDo6CiAgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoUUZvbnQoKSk7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBRdDo6SW1DdXJzb3JQb3NpdGlvbjogewotICAgICAg
ICAgICAgaWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkgewotICAgICAgICAgICAgICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBlZGl0b3ItPmNvbXBvc2l0aW9uUmFuZ2UoKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVjdGlvbigpLT5lbmQoKS5vZmZzZXRJ
bkNvbnRhaW5lck5vZGUoKSAtIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCkp
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBRVmFyaWFudChmcmFtZS0+c2Vs
ZWN0aW9uKCktPmV4dGVudCgpLm9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsKKyAgICAgICAgICAg
IGlmIChlZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFFW
YXJpYW50KGZyYW1lLT5zZWxlY3Rpb24oKS0+ZW5kKCkub2Zmc2V0SW5Db250YWluZXJOb2RlKCkp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBRVmFyaWFudChmcmFt
ZS0+c2VsZWN0aW9uKCktPmV4dGVudCgpLm9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIFF0OjpJbVN1cnJvdW5kaW5nVGV4dDogewogICAgICAgICAgICAg
aWYgKHJlbmRlclRleHRDb250cm9sKSB7CkBAIC0xMzg3LDcgKzEzODQsNyBAQCBRVmFyaWFudCBR
V2ViUGFnZTo6aW5wdXRNZXRob2RRdWVyeShRdDo6CiAgICAgICAgICAgICByZXR1cm4gUVZhcmlh
bnQoKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFF0OjpJbUN1cnJlbnRTZWxlY3Rpb246IHsK
LSAgICAgICAgICAgIGlmIChyZW5kZXJUZXh0Q29udHJvbCkgeworICAgICAgICAgICAgaWYgKCFl
ZGl0b3ItPmhhc0NvbXBvc2l0aW9uKCkgJiYgcmVuZGVyVGV4dENvbnRyb2wpIHsKICAgICAgICAg
ICAgICAgICBpbnQgc3RhcnQgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnN0YXJ0KCkub2Zmc2V0SW5D
b250YWluZXJOb2RlKCk7CiAgICAgICAgICAgICAgICAgaW50IGVuZCA9IGZyYW1lLT5zZWxlY3Rp
b24oKS0+ZW5kKCkub2Zmc2V0SW5Db250YWluZXJOb2RlKCk7CiAgICAgICAgICAgICAgICAgaWYg
KGVuZCA+IHN0YXJ0KQpAQCAtMTM5NywxMSArMTM5NCwxMCBAQCBRVmFyaWFudCBRV2ViUGFnZTo6
aW5wdXRNZXRob2RRdWVyeShRdDo6CiAKICAgICAgICAgfQogICAgICAgICBjYXNlIFF0OjpJbUFu
Y2hvclBvc2l0aW9uOiB7Ci0gICAgICAgICAgICBpZiAoZWRpdG9yLT5oYXNDb21wb3NpdGlvbigp
KSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGVkaXRvci0+Y29tcG9z
aXRpb25SYW5nZSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBRVmFyaWFudChmcmFtZS0+c2Vs
ZWN0aW9uKCktPnN0YXJ0KCkub2Zmc2V0SW5Db250YWluZXJOb2RlKCkgLSBUZXh0SXRlcmF0b3I6
OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBy
ZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVjdGlvbigpLT5iYXNlKCkub2Zmc2V0SW5Db250YWlu
ZXJOb2RlKCkpOworICAgICAgICAgICAgaWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgp
Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICByZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVjdGlvbigpLT5iYXNlKCkub2Zmc2V0SW5D
b250YWluZXJOb2RlKCkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgUXQ6OkltTWF4aW11bVRl
eHRMZW5ndGg6IHsKICAgICAgICAgICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCktPmlzQ29udGVu
dEVkaXRhYmxlKCkpIHsKSW5kZXg6IFdlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBh
Z2UuY3BwCShyZXZpc2lvbiA3MTYyNSkKKysrIFdlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3Rf
cXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjg3LDYgKzE2ODcsMzE0IEBAIHZvaWQg
dHN0X1FXZWJQYWdlOjppbnB1dE1ldGhvZHMoKQogICAgIFFDT01QQVJFKGlucHV0VmFsdWUsIFFT
dHJpbmcoIlF0V2ViS2l0MiIpKTsKICAgICAvL0VORCAtIFRlc3QgZm9yIHNlbmRpbmcgZW1wdHkg
UUlucHV0TWV0aG9kRXZlbnQKIAorICAgIHBhZ2UtPm1haW5GcmFtZSgpLT5zZXRIdG1sKCI8aHRt
bD48Ym9keT4iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IjxpbnB1dCB0eXBlPSd0ZXh0JyBpZD0naW5wdXQ0JyB2YWx1ZT0nUXRXZWJLaXQgaW5wdXRNZXRo
b2QnLz4iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwv
Ym9keT48L2h0bWw+Iik7CisgICAgcGFnZS0+bWFpbkZyYW1lKCktPmV2YWx1YXRlSmF2YVNjcmlw
dCgidmFyIGlucHV0RWxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0NCcpOyBpbnB1
dEVsZS5mb2N1cygpOyBpbnB1dEVsZS5zZWxlY3QoKTsiKTsKKworICAgIC8vQ2xlYXIgdGhlIHNl
bGVjdGlvbiwgYWxzbyBjYW5jZWwgdGhlIG9uZ29pbmcgY29tcG9zaXRpb24gaWYgdGhlcmUgaXMg
b25lLgorICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4g
YXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZSBuZXdTZWxl
Y3Rpb24oUUlucHV0TWV0aG9kRXZlbnQ6OlNlbGVjdGlvbiwgMCwgMCwgUVZhcmlhbnQoKSk7Cisg
ICAgICAgIGF0dHJpYnV0ZXMuYXBwZW5kKG5ld1NlbGVjdGlvbik7CisgICAgICAgIFFJbnB1dE1l
dGhvZEV2ZW50IGV2ZW50KCIiLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQoJmV2
ZW50KTsKKyAgICB9CisKKyAgICAvL0ltQ3VycmVudFNlbGVjdGlvbgorICAgIHZhcmlhbnQgPSBw
YWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnJlbnRTZWxlY3Rpb24pOworICAgIHNlbGVj
dGlvblZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHNlbGVj
dGlvblZhbHVlLCBRU3RyaW5nKCIiKSk7CisKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRo
b2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1RleHQpOworICAgIFFTdHJpbmcgc3Vycm91bmRpbmdW
YWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzdXJyb3VuZGlu
Z1ZhbHVlLCBRU3RyaW5nKCJRdFdlYktpdCBpbnB1dE1ldGhvZCIpKTsKKworICAgIC8vSW1BbmNo
b3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFu
Y2hvclBvc2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7Cisg
ICAgUUNPTVBBUkUoYW5jaG9yUG9zaXRpb24sIDApOworCisgICAgLy9JbUN1cnNvclBvc2l0aW9u
CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9zaXRp
b24pOworICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFS
RShjdXJzb3JQb3NpdGlvbiwgMCk7CisKKyAgICAvLzEuIEluc2VydCBhIGNoYXJhY3RlciB0byB0
aGUgYmVnaW5pbmcgb2YgdGhlIGxpbmUuCisgICAgLy9TZW5kIHRlbXBvcmFyeSB0ZXh0LCB3aGlj
aCBtYWtlcyB0aGUgZWRpdG9yIGhhcyBjb21wb3NpdGlvbiAnbScuCisgICAgeworICAgICAgICBR
TGlzdDxRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlPiBhdHRyaWJ1dGVzOworICAgICAgICBR
SW5wdXRNZXRob2RFdmVudCBldmVudCgibSIsIGF0dHJpYnV0ZXMpOworICAgICAgICBwYWdlLT5l
dmVudCgmZXZlbnQpOworICAgIH0KKworICAgIC8vSW1DdXJyZW50U2VsZWN0aW9uCisgICAgdmFy
aWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3VycmVudFNlbGVjdGlvbik7Cisg
ICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBB
UkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsKKworICAgIC8vSW1TdXJyb3VuZGluZ1Rl
eHQKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3VuZGlu
Z1RleHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7
CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygiUXRXZWJLaXQgaW5wdXRN
ZXRob2QiKSk7CisKKyAgICAvL0ltQ3Vyc29yUG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+
aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJzb3JQb3NpdGlvbik7CisgICAgY3Vyc29yUG9zaXRp
b24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01QQVJFKGN1cnNvclBvc2l0aW9uLCAwKTsK
KworICAgIC8vSW1BbmNob3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhv
ZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJp
YW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5jaG9yUG9zaXRpb24sIDApOworCisgICAgLy9T
ZW5kIHRlbXBvcmFyeSB0ZXh0LCB3aGljaCBtYWtlcyB0aGUgZWRpdG9yIGhhcyBjb21wb3NpdGlv
biAnbCcuCisgICAgeworICAgICAgICBRTGlzdDxRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRl
PiBhdHRyaWJ1dGVzOworICAgICAgICBRSW5wdXRNZXRob2RFdmVudCBldmVudCgibiIsIGF0dHJp
YnV0ZXMpOworICAgICAgICBwYWdlLT5ldmVudCgmZXZlbnQpOworICAgIH0KKworICAgIC8vSW1D
dXJyZW50U2VsZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6
OkltQ3VycmVudFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVl
PFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsK
KworICAgIC8vSW1TdXJyb3VuZGluZ1RleHQKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRo
b2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2
YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwg
UVN0cmluZygiUXRXZWJLaXQgaW5wdXRNZXRob2QiKSk7CisKKyAgICAvL0ltQ3Vyc29yUG9zaXRp
b24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJzb3JQb3Np
dGlvbik7CisgICAgY3Vyc29yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01Q
QVJFKGN1cnNvclBvc2l0aW9uLCAwKTsKKworICAgIC8vSW1BbmNob3JQb3NpdGlvbgorICAgIHZh
cmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAg
ICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5jaG9y
UG9zaXRpb24sIDApOworCisgICAgLy9TZW5kIGNvbW1pdCB0ZXh0LCB3aGljaCBtYWtlcyB0aGUg
ZWRpdG9yIGNvbmZvcm1zIGNvbXBvc2l0aW9uLgorICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0
TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9k
RXZlbnQgZXZlbnQoIiIsIGF0dHJpYnV0ZXMpOworICAgICAgICBldmVudC5zZXRDb21taXRTdHJp
bmcoIm8iKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAgICAvL0lt
Q3VycmVudFNlbGVjdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0
OjpJbUN1cnJlbnRTZWxlY3Rpb24pOworICAgIHNlbGVjdGlvblZhbHVlID0gdmFyaWFudC52YWx1
ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHNlbGVjdGlvblZhbHVlLCBRU3RyaW5nKCIiKSk7
CisKKyAgICAvL0ltU3Vycm91bmRpbmdUZXh0CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0
aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJyb3VuZGluZ1ZhbHVlID0g
dmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1cnJvdW5kaW5nVmFsdWUs
IFFTdHJpbmcoIm9RdFdlYktpdCBpbnB1dE1ldGhvZCIpKTsKKworICAgIC8vSW1DdXJzb3JQb3Np
dGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBv
c2l0aW9uKTsKKyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNP
TVBBUkUoY3Vyc29yUG9zaXRpb24sIDEpOworCisgICAgLy9JbUFuY2hvclBvc2l0aW9uCisgICAg
dmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOwor
ICAgIGFuY2hvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNo
b3JQb3NpdGlvbiwgMSk7CisKKyAgICAvLzIuIGluc2VydCBhIGNoYXJhY3RlciB0byB0aGUgbWlk
ZGxlIG9mIHRoZSBsaW5lLgorICAgIC8vU2VuZCB0ZW1wb3JhcnkgdGV4dCwgd2hpY2ggbWFrZXMg
dGhlIGVkaXRvciBoYXMgY29tcG9zaXRpb24gJ20nLgorICAgIHsKKyAgICAgICAgUUxpc3Q8UUlu
cHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0
aG9kRXZlbnQgZXZlbnQoImQiLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQoJmV2
ZW50KTsKKyAgICB9CisKKyAgICAvL0ltQ3VycmVudFNlbGVjdGlvbgorICAgIHZhcmlhbnQgPSBw
YWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnJlbnRTZWxlY3Rpb24pOworICAgIHNlbGVj
dGlvblZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHNlbGVj
dGlvblZhbHVlLCBRU3RyaW5nKCIiKSk7CisKKyAgICAvL0ltU3Vycm91bmRpbmdUZXh0CisgICAg
dmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsK
KyAgICBzdXJyb3VuZGluZ1ZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFD
T01QQVJFKHN1cnJvdW5kaW5nVmFsdWUsIFFTdHJpbmcoIm9RdFdlYktpdCBpbnB1dE1ldGhvZCIp
KTsKKworICAgIC8vSW1DdXJzb3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1l
dGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBvc2l0aW9uKTsKKyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2
YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoY3Vyc29yUG9zaXRpb24sIDEpOworCisgICAg
Ly9JbUFuY2hvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnko
UXQ6OkltQW5jaG9yUG9zaXRpb24pOworICAgIGFuY2hvclBvc2l0aW9uID0gIHZhcmlhbnQudG9J
bnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwgMSk7CisKKyAgICAvL1NlbmQgY29t
bWl0IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0b3IgY29uZm9ybXMgY29tcG9zaXRpb24uCisg
ICAgeworICAgICAgICBRTGlzdDxRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlPiBhdHRyaWJ1
dGVzOworICAgICAgICBRSW5wdXRNZXRob2RFdmVudCBldmVudCgiIiwgYXR0cmlidXRlcyk7Cisg
ICAgICAgIGV2ZW50LnNldENvbW1pdFN0cmluZygiZSIpOworICAgICAgICBwYWdlLT5ldmVudCgm
ZXZlbnQpOworICAgIH0KKworICAgIC8vSW1DdXJyZW50U2VsZWN0aW9uCisgICAgdmFyaWFudCA9
IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3VycmVudFNlbGVjdGlvbik7CisgICAgc2Vs
ZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2Vs
ZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsKKworICAgIC8vSW1TdXJyb3VuZGluZ1RleHQKKyAg
ICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1RleHQp
OworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAg
UUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygib2VRdFdlYktpdCBpbnB1dE1ldGhv
ZCIpKTsKKworICAgIC8vSW1DdXJzb3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1
dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBvc2l0aW9uKTsKKyAgICBjdXJzb3JQb3NpdGlvbiA9
ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoY3Vyc29yUG9zaXRpb24sIDIpOworCisg
ICAgLy9JbUFuY2hvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVl
cnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOworICAgIGFuY2hvclBvc2l0aW9uID0gIHZhcmlhbnQu
dG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwgMik7CisKKyAgICAvLzMuIElu
c2VydCBhIGNoYXJhY3RlciB0byB0aGUgZW5kIG9mIHRoZSBsaW5lLgorICAgIHBhZ2UtPnRyaWdn
ZXJBY3Rpb24oUVdlYlBhZ2U6Ok1vdmVUb0VuZE9mTGluZSk7CisgICAgCisgICAgLy9TZW5kIHRl
bXBvcmFyeSB0ZXh0LCB3aGljaCBtYWtlcyB0aGUgZWRpdG9yIGhhcyBjb21wb3NpdGlvbiAnbScu
CisgICAgeworICAgICAgICBRTGlzdDxRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlPiBhdHRy
aWJ1dGVzOworICAgICAgICBRSW5wdXRNZXRob2RFdmVudCBldmVudCgidCIsIGF0dHJpYnV0ZXMp
OworICAgICAgICBwYWdlLT5ldmVudCgmZXZlbnQpOworICAgIH0KKworICAgIC8vSW1DdXJyZW50
U2VsZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3Vy
cmVudFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJp
bmc+KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsKKworICAg
IC8vSW1TdXJyb3VuZGluZ1RleHQKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVy
eShRdDo6SW1TdXJyb3VuZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50
LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmlu
Zygib2VRdFdlYktpdCBpbnB1dE1ldGhvZCIpKTsKKworICAgIC8vSW1DdXJzb3JQb3NpdGlvbgor
ICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBvc2l0aW9u
KTsKKyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUo
Y3Vyc29yUG9zaXRpb24sIDIyKTsKKworICAgIC8vSW1BbmNob3JQb3NpdGlvbgorICAgIHZhcmlh
bnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAgICBh
bmNob3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5jaG9yUG9z
aXRpb24sIDIyKTsKKworICAgIC8vU2VuZCBjb21taXQgdGV4dCwgd2hpY2ggbWFrZXMgdGhlIGVk
aXRvciBjb25mb3JtcyBjb21wb3NpdGlvbi4KKyAgICB7CisgICAgICAgIFFMaXN0PFFJbnB1dE1l
dGhvZEV2ZW50OjpBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CisgICAgICAgIFFJbnB1dE1ldGhvZEV2
ZW50IGV2ZW50KCIiLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgZXZlbnQuc2V0Q29tbWl0U3RyaW5n
KCJ0Iik7CisgICAgICAgIHBhZ2UtPmV2ZW50KCZldmVudCk7CisgICAgfQorCisgICAgLy9JbUN1
cnJlbnRTZWxlY3Rpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6
SW1DdXJyZW50U2VsZWN0aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8
UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOwor
CisgICAgLy9JbVN1cnJvdW5kaW5nVGV4dAorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhv
ZFF1ZXJ5KFF0OjpJbVN1cnJvdW5kaW5nVGV4dCk7CisgICAgc3Vycm91bmRpbmdWYWx1ZSA9IHZh
cmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzdXJyb3VuZGluZ1ZhbHVlLCBR
U3RyaW5nKCJvZVF0V2ViS2l0IGlucHV0TWV0aG9kdCIpKTsKKworICAgIC8vSW1DdXJzb3JQb3Np
dGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBv
c2l0aW9uKTsKKyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNP
TVBBUkUoY3Vyc29yUG9zaXRpb24sIDIzKTsKKworICAgIC8vSW1BbmNob3JQb3NpdGlvbgorICAg
IHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsK
KyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5j
aG9yUG9zaXRpb24sIDIzKTsKKworICAgIC8vNC4gUmVwbGFjZSB0aGUgc2VsZWN0aW9uLgorICAg
IHBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdFByZXZpb3VzV29yZCk7CisKKyAg
ICAvL0ltQ3VycmVudFNlbGVjdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1
ZXJ5KFF0OjpJbUN1cnJlbnRTZWxlY3Rpb24pOworICAgIHNlbGVjdGlvblZhbHVlID0gdmFyaWFu
dC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHNlbGVjdGlvblZhbHVlLCBRU3RyaW5n
KCJpbnB1dE1ldGhvZHQiKSk7CisKKyAgICAvL0ltU3Vycm91bmRpbmdUZXh0CisgICAgdmFyaWFu
dCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBz
dXJyb3VuZGluZ1ZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJF
KHN1cnJvdW5kaW5nVmFsdWUsIFFTdHJpbmcoIm9lUXRXZWJLaXQgaW5wdXRNZXRob2R0IikpOwor
CisgICAgLy9JbUN1cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9k
UXVlcnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlh
bnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgMTEpOworCisgICAgLy9J
bUFuY2hvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6
OkltQW5jaG9yUG9zaXRpb24pOworICAgIGFuY2hvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQo
KTsKKyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwgMjMpOworCisgICAgLy9TZW5kIHRlbXBv
cmFyeSB0ZXh0LCB3aGljaCBtYWtlcyB0aGUgZWRpdG9yIGhhcyBjb21wb3NpdGlvbiAndycuCisg
ICAgeworICAgICAgICBRTGlzdDxRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlPiBhdHRyaWJ1
dGVzOworICAgICAgICBRSW5wdXRNZXRob2RFdmVudCBldmVudCgidyIsIGF0dHJpYnV0ZXMpOwor
ICAgICAgICBwYWdlLT5ldmVudCgmZXZlbnQpOworICAgIH0KKworICAgIC8vSW1DdXJyZW50U2Vs
ZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3VycmVu
dFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+
KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsKKworICAgIC8v
SW1TdXJyb3VuZGluZ1RleHQKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShR
dDo6SW1TdXJyb3VuZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZh
bHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygi
b2VRdFdlYktpdCAiKSk7CisKKyAgICAvL0ltQ3Vyc29yUG9zaXRpb24KKyAgICB2YXJpYW50ID0g
cGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJzb3JQb3NpdGlvbik7CisgICAgY3Vyc29y
UG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01QQVJFKGN1cnNvclBvc2l0aW9u
LCAxMSk7CisKKyAgICAvL0ltQW5jaG9yUG9zaXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5w
dXRNZXRob2RRdWVyeShRdDo6SW1BbmNob3JQb3NpdGlvbik7CisgICAgYW5jaG9yUG9zaXRpb24g
PSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01QQVJFKGFuY2hvclBvc2l0aW9uLCAxMSk7CisK
KyAgICAvL1NlbmQgY29tbWl0IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0b3IgY29uZm9ybXMg
Y29tcG9zaXRpb24uCisgICAgeworICAgICAgICBRTGlzdDxRSW5wdXRNZXRob2RFdmVudDo6QXR0
cmlidXRlPiBhdHRyaWJ1dGVzOworICAgICAgICBRSW5wdXRNZXRob2RFdmVudCBldmVudCgiIiwg
YXR0cmlidXRlcyk7CisgICAgICAgIGV2ZW50LnNldENvbW1pdFN0cmluZygiMiIpOworICAgICAg
ICBwYWdlLT5ldmVudCgmZXZlbnQpOworICAgIH0KKworICAgIC8vSW1DdXJyZW50U2VsZWN0aW9u
CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3VycmVudFNlbGVj
dGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7Cisg
ICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsKKworICAgIC8vSW1TdXJy
b3VuZGluZ1RleHQKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1T
dXJyb3VuZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFT
dHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygib2VRdFdl
YktpdCAyIikpOworCisgICAgLy9JbUN1cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2Ut
PmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0
aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgMTIp
OworCisgICAgLy9JbUFuY2hvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0
aG9kUXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOworICAgIGFuY2hvclBvc2l0aW9uID0gIHZh
cmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwgMTIpOworCiAgICAg
ZGVsZXRlIGNvbnRhaW5lcjsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73891</attachid>
            <date>2010-11-15 07:07:55 -0800</date>
            <delta_ts>2010-11-17 07:41:44 -0800</delta_ts>
            <desc>fix style</desc>
            <filename>49200.patch</filename>
            <type>text/plain</type>
            <size>15772</size>
            <attacher name="Yi Shen">max.hong.shen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNzIwMDUpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMTEtMTUgIFlpIFNoZW4gIDx5aS40LnNoZW5Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTIwMAorICAgICAgICBb
UXRdIGJ1Z3MgaW4gQ29tcG9zaXRpb24gbW9kZSBmb3IgUVdlYlBhZ2U6OmlucHV0TWV0aG9kRXZl
bnQgJiBpbnB1dE1ldGhvZFF1ZXJ5KCkKKworICAgICAgICBNYWtlIFFXZWJQYWdlIHdvcmsgYXMg
Zm9sbG93aW5nIHdoZW4gZWRpdG9yIGlzIGluIGNvbXBvc2l0aW9uIG1vZGU6CisgICAgICAgIDEu
IGFuY2hvciBwb3NpdGlvbiBhbmQgY3Vyc29yIHBvc2l0aW9uIGFyZSB0aGUgc2FtZSBhbmQgYWx3
YXlzID49IDAKKyAgICAgICAgMi4gY3VycmVudCBzZWxlY3Rpb24gaXMgYWx3YXlzIE5VTEwKKwor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Omlu
cHV0TWV0aG9kRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2U6OmlucHV0TWV0aG9kUXVlcnkpOgor
ICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3Rf
UVdlYlBhZ2U6OmlucHV0TWV0aG9kcyk6CisKIDIwMTAtMTEtMTQgIEFuZHJlYXMgS2xpbmcgIDxr
bGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCklu
ZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gNzIwMDUpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJw
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2NywxMSArMTA2Nyw5IEBAIHZvaWQgUVdlYlBh
Z2VQcml2YXRlOjppbnB1dE1ldGhvZEV2ZW50KFEKICAgICAgICAgICAgIGlmIChub2RlKQogICAg
ICAgICAgICAgICAgIHNldFNlbGVjdGlvblJhbmdlKG5vZGUsIHFNaW4oYS5zdGFydCwgKGEuc3Rh
cnQgKyBhLmxlbmd0aCkpLCBxTWF4KGEuc3RhcnQsIChhLnN0YXJ0ICsgYS5sZW5ndGgpKSk7CiAK
LSAgICAgICAgICAgIGlmICghZXYtPnByZWVkaXRTdHJpbmcoKS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgICAgICBlZGl0b3ItPnNldENvbXBvc2l0aW9uKGV2LT5wcmVlZGl0U3RyaW5nKCksIHVu
ZGVybGluZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhLmxlbmd0
aCA8IDApID8gYS5zdGFydCArIGEubGVuZ3RoIDogYS5zdGFydCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGEubGVuZ3RoIDwgMCkgPyBhLnN0YXJ0IDogYS5zdGFydCAr
IGEubGVuZ3RoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIWV2LT5w
cmVlZGl0U3RyaW5nKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGVkaXRvci0+c2V0Q29t
cG9zaXRpb24oZXYtPnByZWVkaXRTdHJpbmcoKSwgdW5kZXJsaW5lcywgcU1pbihhLnN0YXJ0LCAo
YS5zdGFydCArIGEubGVuZ3RoKSksIHFNYXgoYS5zdGFydCwgKGEuc3RhcnQgKyBhLmxlbmd0aCkp
KTsKKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBpbiB0
aGUgbWlkZGxlIG9mIGEgY29tcG9zaXRpb24sIGFuIGVtcHR5IHByZS1lZGl0IHN0cmluZyBhbmQg
YSBzZWxlY3Rpb24gb2YgemVybwogICAgICAgICAgICAgICAgIC8vIGNhbmNlbHMgdGhlIGN1cnJl
bnQgY29tcG9zaXRpb24KICAgICAgICAgICAgICAgICBpZiAoZWRpdG9yLT5oYXNDb21wb3NpdGlv
bigpICYmIChhLnN0YXJ0ICsgYS5sZW5ndGggPT0gMCkpCkBAIC0xMDg1LDcgKzEwODMsNyBAQCB2
b2lkIFFXZWJQYWdlUHJpdmF0ZTo6aW5wdXRNZXRob2RFdmVudChRCiAgICAgaWYgKCFldi0+Y29t
bWl0U3RyaW5nKCkuaXNFbXB0eSgpKQogICAgICAgICBlZGl0b3ItPmNvbmZpcm1Db21wb3NpdGlv
bihldi0+Y29tbWl0U3RyaW5nKCkpOwogICAgIGVsc2UgaWYgKCFoYXNTZWxlY3Rpb24gJiYgIWV2
LT5wcmVlZGl0U3RyaW5nKCkuaXNFbXB0eSgpKQotICAgICAgICBlZGl0b3ItPnNldENvbXBvc2l0
aW9uKGV2LT5wcmVlZGl0U3RyaW5nKCksIHVuZGVybGluZXMsIDAsIGV2LT5wcmVlZGl0U3RyaW5n
KCkubGVuZ3RoKCkpOworICAgICAgICBlZGl0b3ItPnNldENvbXBvc2l0aW9uKGV2LT5wcmVlZGl0
U3RyaW5nKCksIHVuZGVybGluZXMsIDAsIDApOwogCiAgICAgZXYtPmFjY2VwdCgpOwogfQpAQCAt
MTM3MCwxMCArMTM2OCw4IEBAIFFWYXJpYW50IFFXZWJQYWdlOjppbnB1dE1ldGhvZFF1ZXJ5KFF0
OjoKICAgICAgICAgICAgIHJldHVybiBRVmFyaWFudChRRm9udCgpKTsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIFF0OjpJbUN1cnNvclBvc2l0aW9uOiB7Ci0gICAgICAgICAgICBpZiAoZWRpdG9y
LT5oYXNDb21wb3NpdGlvbigpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5n
ZSA9IGVkaXRvci0+Y29tcG9zaXRpb25SYW5nZSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBR
VmFyaWFudChmcmFtZS0+c2VsZWN0aW9uKCktPmVuZCgpLm9mZnNldEluQ29udGFpbmVyTm9kZSgp
IC0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSkpOwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVjdGlvbigpLT5lbmQoKS5vZmZzZXRJbkNv
bnRhaW5lck5vZGUoKSk7CiAgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVj
dGlvbigpLT5leHRlbnQoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBRdDo6SW1TdXJyb3VuZGluZ1RleHQ6IHsKQEAgLTEzODcsNyArMTM4Myw3IEBA
IFFWYXJpYW50IFFXZWJQYWdlOjppbnB1dE1ldGhvZFF1ZXJ5KFF0OjoKICAgICAgICAgICAgIHJl
dHVybiBRVmFyaWFudCgpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgUXQ6OkltQ3VycmVudFNl
bGVjdGlvbjogewotICAgICAgICAgICAgaWYgKHJlbmRlclRleHRDb250cm9sKSB7CisgICAgICAg
ICAgICBpZiAoIWVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSAmJiByZW5kZXJUZXh0Q29udHJvbCkg
ewogICAgICAgICAgICAgICAgIGludCBzdGFydCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQo
KS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKICAgICAgICAgICAgICAgICBpbnQgZW5kID0gZnJh
bWUtPnNlbGVjdGlvbigpLT5lbmQoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKICAgICAgICAg
ICAgICAgICBpZiAoZW5kID4gc3RhcnQpCkBAIC0xMzk3LDEwICsxMzkzLDggQEAgUVZhcmlhbnQg
UVdlYlBhZ2U6OmlucHV0TWV0aG9kUXVlcnkoUXQ6OgogCiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBRdDo6SW1BbmNob3JQb3NpdGlvbjogewotICAgICAgICAgICAgaWYgKGVkaXRvci0+aGFzQ29t
cG9zaXRpb24oKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBlZGl0
b3ItPmNvbXBvc2l0aW9uUmFuZ2UoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQo
ZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpLm9mZnNldEluQ29udGFpbmVyTm9kZSgpIC0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSkpOwotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpLm9mZnNldEluQ29udGFp
bmVyTm9kZSgpKTsKICAgICAgICAgICAgIHJldHVybiBRVmFyaWFudChmcmFtZS0+c2VsZWN0aW9u
KCktPmJhc2UoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBRdDo6SW1NYXhpbXVtVGV4dExlbmd0aDogewpJbmRleDogV2ViS2l0L3F0L3Rlc3RzL3F3
ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L3Rlc3RzL3F3
ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDcyMDA1KQorKysgV2ViS2l0L3F0L3Rl
c3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2ODcsNiAr
MTY4NywzMTQgQEAgdm9pZCB0c3RfUVdlYlBhZ2U6OmlucHV0TWV0aG9kcygpCiAgICAgUUNPTVBB
UkUoaW5wdXRWYWx1ZSwgUVN0cmluZygiUXRXZWJLaXQyIikpOwogICAgIC8vRU5EIC0gVGVzdCBm
b3Igc2VuZGluZyBlbXB0eSBRSW5wdXRNZXRob2RFdmVudAogCisgICAgcGFnZS0+bWFpbkZyYW1l
KCktPnNldEh0bWwoIjxodG1sPjxib2R5PiIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiPGlucHV0IHR5cGU9J3RleHQnIGlkPSdpbnB1dDQnIHZhbHVlPSdR
dFdlYktpdCBpbnB1dE1ldGhvZCcvPiIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiPC9ib2R5PjwvaHRtbD4iKTsKKyAgICBwYWdlLT5tYWluRnJhbWUoKS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJ2YXIgaW5wdXRFbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnaW5wdXQ0Jyk7IGlucHV0RWxlLmZvY3VzKCk7IGlucHV0RWxlLnNlbGVjdCgpOyIpOworCisg
ICAgLy8gQ2xlYXIgdGhlIHNlbGVjdGlvbiwgYWxzbyBjYW5jZWwgdGhlIG9uZ29pbmcgY29tcG9z
aXRpb24gaWYgdGhlcmUgaXMgb25lLgorICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0TWV0aG9k
RXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQ6
OkF0dHJpYnV0ZSBuZXdTZWxlY3Rpb24oUUlucHV0TWV0aG9kRXZlbnQ6OlNlbGVjdGlvbiwgMCwg
MCwgUVZhcmlhbnQoKSk7CisgICAgICAgIGF0dHJpYnV0ZXMuYXBwZW5kKG5ld1NlbGVjdGlvbik7
CisgICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCIiLCBhdHRyaWJ1dGVzKTsKKyAgICAg
ICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAgICAvLyBJbUN1cnJlbnRTZWxlY3Rp
b24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJyZW50U2Vs
ZWN0aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsK
KyAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOworCisgICAgdmFyaWFu
dCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBR
U3RyaW5nIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAg
UUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygiUXRXZWJLaXQgaW5wdXRNZXRob2Qi
KSk7CisKKyAgICAvLyBJbUFuY2hvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0
TWV0aG9kUXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOworICAgIGFuY2hvclBvc2l0aW9uID0g
IHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwgMCk7CisKKyAg
ICAvLyBJbUN1cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVl
cnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQu
dG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgMCk7CisKKyAgICAvLyAxLiBJ
bnNlcnQgYSBjaGFyYWN0ZXIgdG8gdGhlIGJlZ2luaW5nIG9mIHRoZSBsaW5lLgorICAgIC8vIFNl
bmQgdGVtcG9yYXJ5IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0b3IgaGFzIGNvbXBvc2l0aW9u
ICdtJy4KKyAgICB7CisgICAgICAgIFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+
IGF0dHJpYnV0ZXM7CisgICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCJtIiwgYXR0cmli
dXRlcyk7CisgICAgICAgIHBhZ2UtPmV2ZW50KCZldmVudCk7CisgICAgfQorCisgICAgLy8gSW1D
dXJyZW50U2VsZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6
OkltQ3VycmVudFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVl
PFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsK
KworICAgIC8vIEltU3Vycm91bmRpbmdUZXh0CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0
aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJyb3VuZGluZ1ZhbHVlID0g
dmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1cnJvdW5kaW5nVmFsdWUs
IFFTdHJpbmcoIlF0V2ViS2l0IGlucHV0TWV0aG9kIikpOworCisgICAgLy8gSW1DdXJzb3JQb3Np
dGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBv
c2l0aW9uKTsKKyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNP
TVBBUkUoY3Vyc29yUG9zaXRpb24sIDApOworCisgICAgLy8gSW1BbmNob3JQb3NpdGlvbgorICAg
IHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsK
KyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5j
aG9yUG9zaXRpb24sIDApOworCisgICAgLy8gU2VuZCB0ZW1wb3JhcnkgdGV4dCwgd2hpY2ggbWFr
ZXMgdGhlIGVkaXRvciBoYXMgY29tcG9zaXRpb24gJ2wnLgorICAgIHsKKyAgICAgICAgUUxpc3Q8
UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0
TWV0aG9kRXZlbnQgZXZlbnQoIm4iLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQo
JmV2ZW50KTsKKyAgICB9CisKKyAgICAvLyBJbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2YXJpYW50
ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsKKyAgICBz
ZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShz
ZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOworCisgICAgLy8gSW1TdXJyb3VuZGluZ1RleHQK
KyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1Rl
eHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7Cisg
ICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygiUXRXZWJLaXQgaW5wdXRNZXRo
b2QiKSk7CisKKyAgICAvLyBJbUN1cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlu
cHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0aW9u
ID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgMCk7CisK
KyAgICAvLyBJbUFuY2hvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9k
UXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOworICAgIGFuY2hvclBvc2l0aW9uID0gIHZhcmlh
bnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwgMCk7CisKKyAgICAvLyBT
ZW5kIGNvbW1pdCB0ZXh0LCB3aGljaCBtYWtlcyB0aGUgZWRpdG9yIGNvbmZvcm1zIGNvbXBvc2l0
aW9uLgorICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4g
YXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnQoIiIsIGF0dHJpYnV0
ZXMpOworICAgICAgICBldmVudC5zZXRDb21taXRTdHJpbmcoIm8iKTsKKyAgICAgICAgcGFnZS0+
ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAgICAvLyBJbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2
YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsK
KyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09N
UEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOworCisgICAgLy8gSW1TdXJyb3VuZGlu
Z1RleHQKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3Vu
ZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+
KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygib1F0V2ViS2l0IGlu
cHV0TWV0aG9kIikpOworCisgICAgLy8gSW1DdXJzb3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBw
YWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBvc2l0aW9uKTsKKyAgICBjdXJzb3JQ
b3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoY3Vyc29yUG9zaXRpb24s
IDEpOworCisgICAgLy8gSW1BbmNob3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1
dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9
ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5jaG9yUG9zaXRpb24sIDEpOworCisg
ICAgLy8gMi4gaW5zZXJ0IGEgY2hhcmFjdGVyIHRvIHRoZSBtaWRkbGUgb2YgdGhlIGxpbmUuCisg
ICAgLy8gU2VuZCB0ZW1wb3JhcnkgdGV4dCwgd2hpY2ggbWFrZXMgdGhlIGVkaXRvciBoYXMgY29t
cG9zaXRpb24gJ20nLgorICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0
dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnQoImQi
LCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAg
ICAvLyBJbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RR
dWVyeShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlh
bnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmlu
ZygiIikpOworCisgICAgLy8gSW1TdXJyb3VuZGluZ1RleHQKKyAgICB2YXJpYW50ID0gcGFnZS0+
aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5n
VmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRp
bmdWYWx1ZSwgUVN0cmluZygib1F0V2ViS2l0IGlucHV0TWV0aG9kIikpOworCisgICAgLy8gSW1D
dXJzb3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJ
bUN1cnNvclBvc2l0aW9uKTsKKyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7
CisgICAgUUNPTVBBUkUoY3Vyc29yUG9zaXRpb24sIDEpOworCisgICAgLy8gSW1BbmNob3JQb3Np
dGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBv
c2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNP
TVBBUkUoYW5jaG9yUG9zaXRpb24sIDEpOworCisgICAgLy8gU2VuZCBjb21taXQgdGV4dCwgd2hp
Y2ggbWFrZXMgdGhlIGVkaXRvciBjb25mb3JtcyBjb21wb3NpdGlvbi4KKyAgICB7CisgICAgICAg
IFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CisgICAgICAg
IFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCIiLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgZXZlbnQu
c2V0Q29tbWl0U3RyaW5nKCJlIik7CisgICAgICAgIHBhZ2UtPmV2ZW50KCZldmVudCk7CisgICAg
fQorCisgICAgLy8gSW1DdXJyZW50U2VsZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0
TWV0aG9kUXVlcnkoUXQ6OkltQ3VycmVudFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUg
PSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUs
IFFTdHJpbmcoIiIpKTsKKworICAgIC8vIEltU3Vycm91bmRpbmdUZXh0CisgICAgdmFyaWFudCA9
IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJy
b3VuZGluZ1ZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1
cnJvdW5kaW5nVmFsdWUsIFFTdHJpbmcoIm9lUXRXZWJLaXQgaW5wdXRNZXRob2QiKSk7CisKKyAg
ICAvLyBJbUN1cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVl
cnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQu
dG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgMik7CisKKyAgICAvLyBJbUFu
Y2hvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6Oklt
QW5jaG9yUG9zaXRpb24pOworICAgIGFuY2hvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsK
KyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwgMik7CisKKyAgICAvLyAzLiBJbnNlcnQgYSBj
aGFyYWN0ZXIgdG8gdGhlIGVuZCBvZiB0aGUgbGluZS4KKyAgICBwYWdlLT50cmlnZ2VyQWN0aW9u
KFFXZWJQYWdlOjpNb3ZlVG9FbmRPZkxpbmUpOworICAgIAorICAgIC8vIFNlbmQgdGVtcG9yYXJ5
IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0b3IgaGFzIGNvbXBvc2l0aW9uICdtJy4KKyAgICB7
CisgICAgICAgIFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7
CisgICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCJ0IiwgYXR0cmlidXRlcyk7CisgICAg
ICAgIHBhZ2UtPmV2ZW50KCZldmVudCk7CisgICAgfQorCisgICAgLy8gSW1DdXJyZW50U2VsZWN0
aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3VycmVudFNl
bGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7
CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsKKworICAgIC8vIElt
U3Vycm91bmRpbmdUZXh0CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6
OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJyb3VuZGluZ1ZhbHVlID0gdmFyaWFudC52YWx1
ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1cnJvdW5kaW5nVmFsdWUsIFFTdHJpbmcoIm9l
UXRXZWJLaXQgaW5wdXRNZXRob2QiKSk7CisKKyAgICAvLyBJbUN1cnNvclBvc2l0aW9uCisgICAg
dmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOwor
ICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJz
b3JQb3NpdGlvbiwgMjIpOworCisgICAgLy8gSW1BbmNob3JQb3NpdGlvbgorICAgIHZhcmlhbnQg
PSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAgICBhbmNo
b3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5jaG9yUG9zaXRp
b24sIDIyKTsKKworICAgIC8vIFNlbmQgY29tbWl0IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0
b3IgY29uZm9ybXMgY29tcG9zaXRpb24uCisgICAgeworICAgICAgICBRTGlzdDxRSW5wdXRNZXRo
b2RFdmVudDo6QXR0cmlidXRlPiBhdHRyaWJ1dGVzOworICAgICAgICBRSW5wdXRNZXRob2RFdmVu
dCBldmVudCgiIiwgYXR0cmlidXRlcyk7CisgICAgICAgIGV2ZW50LnNldENvbW1pdFN0cmluZygi
dCIpOworICAgICAgICBwYWdlLT5ldmVudCgmZXZlbnQpOworICAgIH0KKworICAgIC8vIEltQ3Vy
cmVudFNlbGVjdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJ
bUN1cnJlbnRTZWxlY3Rpb24pOworICAgIHNlbGVjdGlvblZhbHVlID0gdmFyaWFudC52YWx1ZTxR
U3RyaW5nPigpOworICAgIFFDT01QQVJFKHNlbGVjdGlvblZhbHVlLCBRU3RyaW5nKCIiKSk7CisK
KyAgICAvLyBJbVN1cnJvdW5kaW5nVGV4dAorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhv
ZFF1ZXJ5KFF0OjpJbVN1cnJvdW5kaW5nVGV4dCk7CisgICAgc3Vycm91bmRpbmdWYWx1ZSA9IHZh
cmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzdXJyb3VuZGluZ1ZhbHVlLCBR
U3RyaW5nKCJvZVF0V2ViS2l0IGlucHV0TWV0aG9kdCIpKTsKKworICAgIC8vIEltQ3Vyc29yUG9z
aXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJzb3JQ
b3NpdGlvbik7CisgICAgY3Vyc29yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFD
T01QQVJFKGN1cnNvclBvc2l0aW9uLCAyMyk7CisKKyAgICAvLyBJbUFuY2hvclBvc2l0aW9uCisg
ICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24p
OworICAgIGFuY2hvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShh
bmNob3JQb3NpdGlvbiwgMjMpOworCisgICAgLy8gNC4gUmVwbGFjZSB0aGUgc2VsZWN0aW9uLgor
ICAgIHBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdFByZXZpb3VzV29yZCk7CisK
KyAgICAvLyBJbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRo
b2RRdWVyeShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZh
cmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0
cmluZygiaW5wdXRNZXRob2R0IikpOworCisgICAgLy8gSW1TdXJyb3VuZGluZ1RleHQKKyAgICB2
YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1RleHQpOwor
ICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNP
TVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygib2VRdFdlYktpdCBpbnB1dE1ldGhvZHQi
KSk7CisKKyAgICAvLyBJbUN1cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0
TWV0aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0aW9uID0g
IHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgMTEpOworCisg
ICAgLy8gSW1BbmNob3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1
ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50
LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5jaG9yUG9zaXRpb24sIDIzKTsKKworICAgIC8vIFNl
bmQgdGVtcG9yYXJ5IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0b3IgaGFzIGNvbXBvc2l0aW9u
ICd3Jy4KKyAgICB7CisgICAgICAgIFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+
IGF0dHJpYnV0ZXM7CisgICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCJ3IiwgYXR0cmli
dXRlcyk7CisgICAgICAgIHBhZ2UtPmV2ZW50KCZldmVudCk7CisgICAgfQorCisgICAgLy8gSW1D
dXJyZW50U2VsZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6
OkltQ3VycmVudFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVl
PFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsK
KworICAgIC8vIEltU3Vycm91bmRpbmdUZXh0CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0
aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJyb3VuZGluZ1ZhbHVlID0g
dmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1cnJvdW5kaW5nVmFsdWUs
IFFTdHJpbmcoIm9lUXRXZWJLaXQgIikpOworCisgICAgLy8gSW1DdXJzb3JQb3NpdGlvbgorICAg
IHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBvc2l0aW9uKTsK
KyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoY3Vy
c29yUG9zaXRpb24sIDExKTsKKworICAgIC8vIEltQW5jaG9yUG9zaXRpb24KKyAgICB2YXJpYW50
ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1BbmNob3JQb3NpdGlvbik7CisgICAgYW5j
aG9yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01QQVJFKGFuY2hvclBvc2l0
aW9uLCAxMSk7CisKKyAgICAvLyBTZW5kIGNvbW1pdCB0ZXh0LCB3aGljaCBtYWtlcyB0aGUgZWRp
dG9yIGNvbmZvcm1zIGNvbXBvc2l0aW9uLgorICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0TWV0
aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZl
bnQgZXZlbnQoIiIsIGF0dHJpYnV0ZXMpOworICAgICAgICBldmVudC5zZXRDb21taXRTdHJpbmco
IjIiKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAgICAvLyBJbUN1
cnJlbnRTZWxlY3Rpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6
SW1DdXJyZW50U2VsZWN0aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8
UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOwor
CisgICAgLy8gSW1TdXJyb3VuZGluZ1RleHQKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRo
b2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2
YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwg
UVN0cmluZygib2VRdFdlYktpdCAyIikpOworCisgICAgLy8gSW1DdXJzb3JQb3NpdGlvbgorICAg
IHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBvc2l0aW9uKTsK
KyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoY3Vy
c29yUG9zaXRpb24sIDEyKTsKKworICAgIC8vIEltQW5jaG9yUG9zaXRpb24KKyAgICB2YXJpYW50
ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1BbmNob3JQb3NpdGlvbik7CisgICAgYW5j
aG9yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01QQVJFKGFuY2hvclBvc2l0
aW9uLCAxMik7CisKICAgICBkZWxldGUgY29udGFpbmVyOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74112</attachid>
            <date>2010-11-17 07:41:44 -0800</date>
            <delta_ts>2010-11-18 03:18:37 -0800</delta_ts>
            <desc>fix typo</desc>
            <filename>49200.patch</filename>
            <type>text/plain</type>
            <size>15772</size>
            <attacher name="Yi Shen">max.hong.shen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNzIwMDUpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMTEtMTUgIFlpIFNoZW4gIDx5aS40LnNoZW5Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTIwMAorICAgICAgICBb
UXRdIGJ1Z3MgaW4gQ29tcG9zaXRpb24gbW9kZSBmb3IgUVdlYlBhZ2U6OmlucHV0TWV0aG9kRXZl
bnQgJiBpbnB1dE1ldGhvZFF1ZXJ5KCkKKworICAgICAgICBNYWtlIFFXZWJQYWdlIHdvcmsgYXMg
Zm9sbG93aW5nIHdoZW4gZWRpdG9yIGlzIGluIGNvbXBvc2l0aW9uIG1vZGU6CisgICAgICAgIDEu
IGFuY2hvciBwb3NpdGlvbiBhbmQgY3Vyc29yIHBvc2l0aW9uIGFyZSB0aGUgc2FtZSBhbmQgYWx3
YXlzID49IDAKKyAgICAgICAgMi4gY3VycmVudCBzZWxlY3Rpb24gaXMgYWx3YXlzIE5VTEwKKwor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Omlu
cHV0TWV0aG9kRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2U6OmlucHV0TWV0aG9kUXVlcnkpOgor
ICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3Rf
UVdlYlBhZ2U6OmlucHV0TWV0aG9kcyk6CisKIDIwMTAtMTEtMTQgIEFuZHJlYXMgS2xpbmcgIDxr
bGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCklu
ZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gNzIwMDUpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJw
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2NywxMSArMTA2Nyw5IEBAIHZvaWQgUVdlYlBh
Z2VQcml2YXRlOjppbnB1dE1ldGhvZEV2ZW50KFEKICAgICAgICAgICAgIGlmIChub2RlKQogICAg
ICAgICAgICAgICAgIHNldFNlbGVjdGlvblJhbmdlKG5vZGUsIHFNaW4oYS5zdGFydCwgKGEuc3Rh
cnQgKyBhLmxlbmd0aCkpLCBxTWF4KGEuc3RhcnQsIChhLnN0YXJ0ICsgYS5sZW5ndGgpKSk7CiAK
LSAgICAgICAgICAgIGlmICghZXYtPnByZWVkaXRTdHJpbmcoKS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgICAgICBlZGl0b3ItPnNldENvbXBvc2l0aW9uKGV2LT5wcmVlZGl0U3RyaW5nKCksIHVu
ZGVybGluZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhLmxlbmd0
aCA8IDApID8gYS5zdGFydCArIGEubGVuZ3RoIDogYS5zdGFydCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGEubGVuZ3RoIDwgMCkgPyBhLnN0YXJ0IDogYS5zdGFydCAr
IGEubGVuZ3RoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIWV2LT5w
cmVlZGl0U3RyaW5nKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGVkaXRvci0+c2V0Q29t
cG9zaXRpb24oZXYtPnByZWVkaXRTdHJpbmcoKSwgdW5kZXJsaW5lcywgcU1pbihhLnN0YXJ0LCAo
YS5zdGFydCArIGEubGVuZ3RoKSksIHFNYXgoYS5zdGFydCwgKGEuc3RhcnQgKyBhLmxlbmd0aCkp
KTsKKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBpbiB0
aGUgbWlkZGxlIG9mIGEgY29tcG9zaXRpb24sIGFuIGVtcHR5IHByZS1lZGl0IHN0cmluZyBhbmQg
YSBzZWxlY3Rpb24gb2YgemVybwogICAgICAgICAgICAgICAgIC8vIGNhbmNlbHMgdGhlIGN1cnJl
bnQgY29tcG9zaXRpb24KICAgICAgICAgICAgICAgICBpZiAoZWRpdG9yLT5oYXNDb21wb3NpdGlv
bigpICYmIChhLnN0YXJ0ICsgYS5sZW5ndGggPT0gMCkpCkBAIC0xMDg1LDcgKzEwODMsNyBAQCB2
b2lkIFFXZWJQYWdlUHJpdmF0ZTo6aW5wdXRNZXRob2RFdmVudChRCiAgICAgaWYgKCFldi0+Y29t
bWl0U3RyaW5nKCkuaXNFbXB0eSgpKQogICAgICAgICBlZGl0b3ItPmNvbmZpcm1Db21wb3NpdGlv
bihldi0+Y29tbWl0U3RyaW5nKCkpOwogICAgIGVsc2UgaWYgKCFoYXNTZWxlY3Rpb24gJiYgIWV2
LT5wcmVlZGl0U3RyaW5nKCkuaXNFbXB0eSgpKQotICAgICAgICBlZGl0b3ItPnNldENvbXBvc2l0
aW9uKGV2LT5wcmVlZGl0U3RyaW5nKCksIHVuZGVybGluZXMsIDAsIGV2LT5wcmVlZGl0U3RyaW5n
KCkubGVuZ3RoKCkpOworICAgICAgICBlZGl0b3ItPnNldENvbXBvc2l0aW9uKGV2LT5wcmVlZGl0
U3RyaW5nKCksIHVuZGVybGluZXMsIDAsIDApOwogCiAgICAgZXYtPmFjY2VwdCgpOwogfQpAQCAt
MTM3MCwxMCArMTM2OCw4IEBAIFFWYXJpYW50IFFXZWJQYWdlOjppbnB1dE1ldGhvZFF1ZXJ5KFF0
OjoKICAgICAgICAgICAgIHJldHVybiBRVmFyaWFudChRRm9udCgpKTsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIFF0OjpJbUN1cnNvclBvc2l0aW9uOiB7Ci0gICAgICAgICAgICBpZiAoZWRpdG9y
LT5oYXNDb21wb3NpdGlvbigpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5n
ZSA9IGVkaXRvci0+Y29tcG9zaXRpb25SYW5nZSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBR
VmFyaWFudChmcmFtZS0+c2VsZWN0aW9uKCktPmVuZCgpLm9mZnNldEluQ29udGFpbmVyTm9kZSgp
IC0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSkpOwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVjdGlvbigpLT5lbmQoKS5vZmZzZXRJbkNv
bnRhaW5lck5vZGUoKSk7CiAgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVj
dGlvbigpLT5leHRlbnQoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBRdDo6SW1TdXJyb3VuZGluZ1RleHQ6IHsKQEAgLTEzODcsNyArMTM4Myw3IEBA
IFFWYXJpYW50IFFXZWJQYWdlOjppbnB1dE1ldGhvZFF1ZXJ5KFF0OjoKICAgICAgICAgICAgIHJl
dHVybiBRVmFyaWFudCgpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgUXQ6OkltQ3VycmVudFNl
bGVjdGlvbjogewotICAgICAgICAgICAgaWYgKHJlbmRlclRleHRDb250cm9sKSB7CisgICAgICAg
ICAgICBpZiAoIWVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSAmJiByZW5kZXJUZXh0Q29udHJvbCkg
ewogICAgICAgICAgICAgICAgIGludCBzdGFydCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQo
KS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKICAgICAgICAgICAgICAgICBpbnQgZW5kID0gZnJh
bWUtPnNlbGVjdGlvbigpLT5lbmQoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKICAgICAgICAg
ICAgICAgICBpZiAoZW5kID4gc3RhcnQpCkBAIC0xMzk3LDEwICsxMzkzLDggQEAgUVZhcmlhbnQg
UVdlYlBhZ2U6OmlucHV0TWV0aG9kUXVlcnkoUXQ6OgogCiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBRdDo6SW1BbmNob3JQb3NpdGlvbjogewotICAgICAgICAgICAgaWYgKGVkaXRvci0+aGFzQ29t
cG9zaXRpb24oKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBlZGl0
b3ItPmNvbXBvc2l0aW9uUmFuZ2UoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQo
ZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpLm9mZnNldEluQ29udGFpbmVyTm9kZSgpIC0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSkpOwotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpLm9mZnNldEluQ29udGFp
bmVyTm9kZSgpKTsKICAgICAgICAgICAgIHJldHVybiBRVmFyaWFudChmcmFtZS0+c2VsZWN0aW9u
KCktPmJhc2UoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBRdDo6SW1NYXhpbXVtVGV4dExlbmd0aDogewpJbmRleDogV2ViS2l0L3F0L3Rlc3RzL3F3
ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L3Rlc3RzL3F3
ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDcyMDA1KQorKysgV2ViS2l0L3F0L3Rl
c3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2ODcsNiAr
MTY4NywzMTQgQEAgdm9pZCB0c3RfUVdlYlBhZ2U6OmlucHV0TWV0aG9kcygpCiAgICAgUUNPTVBB
UkUoaW5wdXRWYWx1ZSwgUVN0cmluZygiUXRXZWJLaXQyIikpOwogICAgIC8vRU5EIC0gVGVzdCBm
b3Igc2VuZGluZyBlbXB0eSBRSW5wdXRNZXRob2RFdmVudAogCisgICAgcGFnZS0+bWFpbkZyYW1l
KCktPnNldEh0bWwoIjxodG1sPjxib2R5PiIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiPGlucHV0IHR5cGU9J3RleHQnIGlkPSdpbnB1dDQnIHZhbHVlPSdR
dFdlYktpdCBpbnB1dE1ldGhvZCcvPiIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiPC9ib2R5PjwvaHRtbD4iKTsKKyAgICBwYWdlLT5tYWluRnJhbWUoKS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJ2YXIgaW5wdXRFbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnaW5wdXQ0Jyk7IGlucHV0RWxlLmZvY3VzKCk7IGlucHV0RWxlLnNlbGVjdCgpOyIpOworCisg
ICAgLy8gQ2xlYXIgdGhlIHNlbGVjdGlvbiwgYWxzbyBjYW5jZWwgdGhlIG9uZ29pbmcgY29tcG9z
aXRpb24gaWYgdGhlcmUgaXMgb25lLgorICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0TWV0aG9k
RXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQ6
OkF0dHJpYnV0ZSBuZXdTZWxlY3Rpb24oUUlucHV0TWV0aG9kRXZlbnQ6OlNlbGVjdGlvbiwgMCwg
MCwgUVZhcmlhbnQoKSk7CisgICAgICAgIGF0dHJpYnV0ZXMuYXBwZW5kKG5ld1NlbGVjdGlvbik7
CisgICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCIiLCBhdHRyaWJ1dGVzKTsKKyAgICAg
ICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAgICAvLyBJbUN1cnJlbnRTZWxlY3Rp
b24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJyZW50U2Vs
ZWN0aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsK
KyAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOworCisgICAgdmFyaWFu
dCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBR
U3RyaW5nIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAg
UUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygiUXRXZWJLaXQgaW5wdXRNZXRob2Qi
KSk7CisKKyAgICAvLyBJbUFuY2hvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0
TWV0aG9kUXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOworICAgIGFuY2hvclBvc2l0aW9uID0g
IHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwgMCk7CisKKyAg
ICAvLyBJbUN1cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVl
cnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQu
dG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgMCk7CisKKyAgICAvLyAxLiBJ
bnNlcnQgYSBjaGFyYWN0ZXIgdG8gdGhlIGJlZ2luaW5nIG9mIHRoZSBsaW5lLgorICAgIC8vIFNl
bmQgdGVtcG9yYXJ5IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0b3IgaGFzIGNvbXBvc2l0aW9u
ICdtJy4KKyAgICB7CisgICAgICAgIFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+
IGF0dHJpYnV0ZXM7CisgICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCJtIiwgYXR0cmli
dXRlcyk7CisgICAgICAgIHBhZ2UtPmV2ZW50KCZldmVudCk7CisgICAgfQorCisgICAgLy8gSW1D
dXJyZW50U2VsZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6
OkltQ3VycmVudFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVl
PFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsK
KworICAgIC8vIEltU3Vycm91bmRpbmdUZXh0CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0
aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJyb3VuZGluZ1ZhbHVlID0g
dmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1cnJvdW5kaW5nVmFsdWUs
IFFTdHJpbmcoIlF0V2ViS2l0IGlucHV0TWV0aG9kIikpOworCisgICAgLy8gSW1DdXJzb3JQb3Np
dGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBv
c2l0aW9uKTsKKyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNP
TVBBUkUoY3Vyc29yUG9zaXRpb24sIDApOworCisgICAgLy8gSW1BbmNob3JQb3NpdGlvbgorICAg
IHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsK
KyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5j
aG9yUG9zaXRpb24sIDApOworCisgICAgLy8gU2VuZCB0ZW1wb3JhcnkgdGV4dCwgd2hpY2ggbWFr
ZXMgdGhlIGVkaXRvciBoYXMgY29tcG9zaXRpb24gJ24nLgorICAgIHsKKyAgICAgICAgUUxpc3Q8
UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0
TWV0aG9kRXZlbnQgZXZlbnQoIm4iLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQo
JmV2ZW50KTsKKyAgICB9CisKKyAgICAvLyBJbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2YXJpYW50
ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsKKyAgICBz
ZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShz
ZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOworCisgICAgLy8gSW1TdXJyb3VuZGluZ1RleHQK
KyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1Rl
eHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7Cisg
ICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygiUXRXZWJLaXQgaW5wdXRNZXRo
b2QiKSk7CisKKyAgICAvLyBJbUN1cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlu
cHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0aW9u
ID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgMCk7CisK
KyAgICAvLyBJbUFuY2hvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9k
UXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOworICAgIGFuY2hvclBvc2l0aW9uID0gIHZhcmlh
bnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwgMCk7CisKKyAgICAvLyBT
ZW5kIGNvbW1pdCB0ZXh0LCB3aGljaCBtYWtlcyB0aGUgZWRpdG9yIGNvbmZvcm1zIGNvbXBvc2l0
aW9uLgorICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4g
YXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnQoIiIsIGF0dHJpYnV0
ZXMpOworICAgICAgICBldmVudC5zZXRDb21taXRTdHJpbmcoIm8iKTsKKyAgICAgICAgcGFnZS0+
ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAgICAvLyBJbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2
YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsK
KyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09N
UEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOworCisgICAgLy8gSW1TdXJyb3VuZGlu
Z1RleHQKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3Vu
ZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+
KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygib1F0V2ViS2l0IGlu
cHV0TWV0aG9kIikpOworCisgICAgLy8gSW1DdXJzb3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBw
YWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBvc2l0aW9uKTsKKyAgICBjdXJzb3JQ
b3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoY3Vyc29yUG9zaXRpb24s
IDEpOworCisgICAgLy8gSW1BbmNob3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1
dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9
ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5jaG9yUG9zaXRpb24sIDEpOworCisg
ICAgLy8gMi4gaW5zZXJ0IGEgY2hhcmFjdGVyIHRvIHRoZSBtaWRkbGUgb2YgdGhlIGxpbmUuCisg
ICAgLy8gU2VuZCB0ZW1wb3JhcnkgdGV4dCwgd2hpY2ggbWFrZXMgdGhlIGVkaXRvciBoYXMgY29t
cG9zaXRpb24gJ2QnLgorICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0
dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnQoImQi
LCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAg
ICAvLyBJbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RR
dWVyeShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlh
bnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmlu
ZygiIikpOworCisgICAgLy8gSW1TdXJyb3VuZGluZ1RleHQKKyAgICB2YXJpYW50ID0gcGFnZS0+
aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5n
VmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRp
bmdWYWx1ZSwgUVN0cmluZygib1F0V2ViS2l0IGlucHV0TWV0aG9kIikpOworCisgICAgLy8gSW1D
dXJzb3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJ
bUN1cnNvclBvc2l0aW9uKTsKKyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7
CisgICAgUUNPTVBBUkUoY3Vyc29yUG9zaXRpb24sIDEpOworCisgICAgLy8gSW1BbmNob3JQb3Np
dGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBv
c2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNP
TVBBUkUoYW5jaG9yUG9zaXRpb24sIDEpOworCisgICAgLy8gU2VuZCBjb21taXQgdGV4dCwgd2hp
Y2ggbWFrZXMgdGhlIGVkaXRvciBjb25mb3JtcyBjb21wb3NpdGlvbi4KKyAgICB7CisgICAgICAg
IFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CisgICAgICAg
IFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCIiLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgZXZlbnQu
c2V0Q29tbWl0U3RyaW5nKCJlIik7CisgICAgICAgIHBhZ2UtPmV2ZW50KCZldmVudCk7CisgICAg
fQorCisgICAgLy8gSW1DdXJyZW50U2VsZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0
TWV0aG9kUXVlcnkoUXQ6OkltQ3VycmVudFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUg
PSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUs
IFFTdHJpbmcoIiIpKTsKKworICAgIC8vIEltU3Vycm91bmRpbmdUZXh0CisgICAgdmFyaWFudCA9
IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJy
b3VuZGluZ1ZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1
cnJvdW5kaW5nVmFsdWUsIFFTdHJpbmcoIm9lUXRXZWJLaXQgaW5wdXRNZXRob2QiKSk7CisKKyAg
ICAvLyBJbUN1cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVl
cnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQu
dG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgMik7CisKKyAgICAvLyBJbUFu
Y2hvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6Oklt
QW5jaG9yUG9zaXRpb24pOworICAgIGFuY2hvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsK
KyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwgMik7CisKKyAgICAvLyAzLiBJbnNlcnQgYSBj
aGFyYWN0ZXIgdG8gdGhlIGVuZCBvZiB0aGUgbGluZS4KKyAgICBwYWdlLT50cmlnZ2VyQWN0aW9u
KFFXZWJQYWdlOjpNb3ZlVG9FbmRPZkxpbmUpOworICAgIAorICAgIC8vIFNlbmQgdGVtcG9yYXJ5
IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0b3IgaGFzIGNvbXBvc2l0aW9uICd0Jy4KKyAgICB7
CisgICAgICAgIFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7
CisgICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCJ0IiwgYXR0cmlidXRlcyk7CisgICAg
ICAgIHBhZ2UtPmV2ZW50KCZldmVudCk7CisgICAgfQorCisgICAgLy8gSW1DdXJyZW50U2VsZWN0
aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3VycmVudFNl
bGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7
CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsKKworICAgIC8vIElt
U3Vycm91bmRpbmdUZXh0CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6
OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJyb3VuZGluZ1ZhbHVlID0gdmFyaWFudC52YWx1
ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1cnJvdW5kaW5nVmFsdWUsIFFTdHJpbmcoIm9l
UXRXZWJLaXQgaW5wdXRNZXRob2QiKSk7CisKKyAgICAvLyBJbUN1cnNvclBvc2l0aW9uCisgICAg
dmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOwor
ICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJz
b3JQb3NpdGlvbiwgMjIpOworCisgICAgLy8gSW1BbmNob3JQb3NpdGlvbgorICAgIHZhcmlhbnQg
PSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAgICBhbmNo
b3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5jaG9yUG9zaXRp
b24sIDIyKTsKKworICAgIC8vIFNlbmQgY29tbWl0IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0
b3IgY29uZm9ybXMgY29tcG9zaXRpb24uCisgICAgeworICAgICAgICBRTGlzdDxRSW5wdXRNZXRo
b2RFdmVudDo6QXR0cmlidXRlPiBhdHRyaWJ1dGVzOworICAgICAgICBRSW5wdXRNZXRob2RFdmVu
dCBldmVudCgiIiwgYXR0cmlidXRlcyk7CisgICAgICAgIGV2ZW50LnNldENvbW1pdFN0cmluZygi
dCIpOworICAgICAgICBwYWdlLT5ldmVudCgmZXZlbnQpOworICAgIH0KKworICAgIC8vIEltQ3Vy
cmVudFNlbGVjdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJ
bUN1cnJlbnRTZWxlY3Rpb24pOworICAgIHNlbGVjdGlvblZhbHVlID0gdmFyaWFudC52YWx1ZTxR
U3RyaW5nPigpOworICAgIFFDT01QQVJFKHNlbGVjdGlvblZhbHVlLCBRU3RyaW5nKCIiKSk7CisK
KyAgICAvLyBJbVN1cnJvdW5kaW5nVGV4dAorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhv
ZFF1ZXJ5KFF0OjpJbVN1cnJvdW5kaW5nVGV4dCk7CisgICAgc3Vycm91bmRpbmdWYWx1ZSA9IHZh
cmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzdXJyb3VuZGluZ1ZhbHVlLCBR
U3RyaW5nKCJvZVF0V2ViS2l0IGlucHV0TWV0aG9kdCIpKTsKKworICAgIC8vIEltQ3Vyc29yUG9z
aXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJzb3JQ
b3NpdGlvbik7CisgICAgY3Vyc29yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFD
T01QQVJFKGN1cnNvclBvc2l0aW9uLCAyMyk7CisKKyAgICAvLyBJbUFuY2hvclBvc2l0aW9uCisg
ICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24p
OworICAgIGFuY2hvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShh
bmNob3JQb3NpdGlvbiwgMjMpOworCisgICAgLy8gNC4gUmVwbGFjZSB0aGUgc2VsZWN0aW9uLgor
ICAgIHBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdFByZXZpb3VzV29yZCk7CisK
KyAgICAvLyBJbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRo
b2RRdWVyeShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZh
cmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0
cmluZygiaW5wdXRNZXRob2R0IikpOworCisgICAgLy8gSW1TdXJyb3VuZGluZ1RleHQKKyAgICB2
YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1RleHQpOwor
ICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNP
TVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygib2VRdFdlYktpdCBpbnB1dE1ldGhvZHQi
KSk7CisKKyAgICAvLyBJbUN1cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0
TWV0aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0aW9uID0g
IHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgMTEpOworCisg
ICAgLy8gSW1BbmNob3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1
ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50
LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5jaG9yUG9zaXRpb24sIDIzKTsKKworICAgIC8vIFNl
bmQgdGVtcG9yYXJ5IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0b3IgaGFzIGNvbXBvc2l0aW9u
ICd3Jy4KKyAgICB7CisgICAgICAgIFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+
IGF0dHJpYnV0ZXM7CisgICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCJ3IiwgYXR0cmli
dXRlcyk7CisgICAgICAgIHBhZ2UtPmV2ZW50KCZldmVudCk7CisgICAgfQorCisgICAgLy8gSW1D
dXJyZW50U2VsZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6
OkltQ3VycmVudFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVl
PFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsK
KworICAgIC8vIEltU3Vycm91bmRpbmdUZXh0CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0
aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJyb3VuZGluZ1ZhbHVlID0g
dmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1cnJvdW5kaW5nVmFsdWUs
IFFTdHJpbmcoIm9lUXRXZWJLaXQgIikpOworCisgICAgLy8gSW1DdXJzb3JQb3NpdGlvbgorICAg
IHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBvc2l0aW9uKTsK
KyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoY3Vy
c29yUG9zaXRpb24sIDExKTsKKworICAgIC8vIEltQW5jaG9yUG9zaXRpb24KKyAgICB2YXJpYW50
ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1BbmNob3JQb3NpdGlvbik7CisgICAgYW5j
aG9yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01QQVJFKGFuY2hvclBvc2l0
aW9uLCAxMSk7CisKKyAgICAvLyBTZW5kIGNvbW1pdCB0ZXh0LCB3aGljaCBtYWtlcyB0aGUgZWRp
dG9yIGNvbmZvcm1zIGNvbXBvc2l0aW9uLgorICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0TWV0
aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZl
bnQgZXZlbnQoIiIsIGF0dHJpYnV0ZXMpOworICAgICAgICBldmVudC5zZXRDb21taXRTdHJpbmco
IjIiKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAgICAvLyBJbUN1
cnJlbnRTZWxlY3Rpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6
SW1DdXJyZW50U2VsZWN0aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8
UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOwor
CisgICAgLy8gSW1TdXJyb3VuZGluZ1RleHQKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRo
b2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2
YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwg
UVN0cmluZygib2VRdFdlYktpdCAyIikpOworCisgICAgLy8gSW1DdXJzb3JQb3NpdGlvbgorICAg
IHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBvc2l0aW9uKTsK
KyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoY3Vy
c29yUG9zaXRpb24sIDEyKTsKKworICAgIC8vIEltQW5jaG9yUG9zaXRpb24KKyAgICB2YXJpYW50
ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1BbmNob3JQb3NpdGlvbik7CisgICAgYW5j
aG9yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01QQVJFKGFuY2hvclBvc2l0
aW9uLCAxMik7CisKICAgICBkZWxldGUgY29udGFpbmVyOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74150</attachid>
            <date>2010-11-17 13:53:18 -0800</date>
            <delta_ts>2010-11-19 01:35:20 -0800</delta_ts>
            <desc>fix changelog</desc>
            <filename>49200.patch</filename>
            <type>text/plain</type>
            <size>15772</size>
            <attacher name="Yi Shen">max.hong.shen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNzIwMDUpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMTEtMTUgIFlpIFNoZW4gIDx5aS40LnNoZW5Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTIwMAorICAgICAgICBb
UXRdIGJ1Z3MgaW4gQ29tcG9zaXRpb24gbW9kZSBmb3IgUVdlYlBhZ2U6OmlucHV0TWV0aG9kRXZl
bnQgJiBpbnB1dE1ldGhvZFF1ZXJ5KCkKKworICAgICAgICBNYWtlIFFXZWJQYWdlIHdvcmsgYXMg
Zm9sbG93aW5nIHdoZW4gZWRpdG9yIGlzIGluIGNvbXBvc2l0aW9uIG1vZGU6CisgICAgICAgIDEu
IGFuY2hvciBwb3NpdGlvbiBhbmQgY3Vyc29yIHBvc2l0aW9uIGFyZSB0aGUgc2FtZSBhbmQgYWx3
YXlzID49IDAKKyAgICAgICAgMi4gY3VycmVudCBzZWxlY3Rpb24gaXMgYWx3YXlzIG51bGwKKwor
ICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6Omlu
cHV0TWV0aG9kRXZlbnQpOgorICAgICAgICAoUVdlYlBhZ2U6OmlucHV0TWV0aG9kUXVlcnkpOgor
ICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAgICh0c3Rf
UVdlYlBhZ2U6OmlucHV0TWV0aG9kcyk6CisKIDIwMTAtMTEtMTQgIEFuZHJlYXMgS2xpbmcgIDxr
bGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCklu
ZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gNzIwMDUpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJw
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2NywxMSArMTA2Nyw5IEBAIHZvaWQgUVdlYlBh
Z2VQcml2YXRlOjppbnB1dE1ldGhvZEV2ZW50KFEKICAgICAgICAgICAgIGlmIChub2RlKQogICAg
ICAgICAgICAgICAgIHNldFNlbGVjdGlvblJhbmdlKG5vZGUsIHFNaW4oYS5zdGFydCwgKGEuc3Rh
cnQgKyBhLmxlbmd0aCkpLCBxTWF4KGEuc3RhcnQsIChhLnN0YXJ0ICsgYS5sZW5ndGgpKSk7CiAK
LSAgICAgICAgICAgIGlmICghZXYtPnByZWVkaXRTdHJpbmcoKS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgICAgICBlZGl0b3ItPnNldENvbXBvc2l0aW9uKGV2LT5wcmVlZGl0U3RyaW5nKCksIHVu
ZGVybGluZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhLmxlbmd0
aCA8IDApID8gYS5zdGFydCArIGEubGVuZ3RoIDogYS5zdGFydCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGEubGVuZ3RoIDwgMCkgPyBhLnN0YXJ0IDogYS5zdGFydCAr
IGEubGVuZ3RoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIWV2LT5w
cmVlZGl0U3RyaW5nKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGVkaXRvci0+c2V0Q29t
cG9zaXRpb24oZXYtPnByZWVkaXRTdHJpbmcoKSwgdW5kZXJsaW5lcywgcU1pbihhLnN0YXJ0LCAo
YS5zdGFydCArIGEubGVuZ3RoKSksIHFNYXgoYS5zdGFydCwgKGEuc3RhcnQgKyBhLmxlbmd0aCkp
KTsKKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBpbiB0
aGUgbWlkZGxlIG9mIGEgY29tcG9zaXRpb24sIGFuIGVtcHR5IHByZS1lZGl0IHN0cmluZyBhbmQg
YSBzZWxlY3Rpb24gb2YgemVybwogICAgICAgICAgICAgICAgIC8vIGNhbmNlbHMgdGhlIGN1cnJl
bnQgY29tcG9zaXRpb24KICAgICAgICAgICAgICAgICBpZiAoZWRpdG9yLT5oYXNDb21wb3NpdGlv
bigpICYmIChhLnN0YXJ0ICsgYS5sZW5ndGggPT0gMCkpCkBAIC0xMDg1LDcgKzEwODMsNyBAQCB2
b2lkIFFXZWJQYWdlUHJpdmF0ZTo6aW5wdXRNZXRob2RFdmVudChRCiAgICAgaWYgKCFldi0+Y29t
bWl0U3RyaW5nKCkuaXNFbXB0eSgpKQogICAgICAgICBlZGl0b3ItPmNvbmZpcm1Db21wb3NpdGlv
bihldi0+Y29tbWl0U3RyaW5nKCkpOwogICAgIGVsc2UgaWYgKCFoYXNTZWxlY3Rpb24gJiYgIWV2
LT5wcmVlZGl0U3RyaW5nKCkuaXNFbXB0eSgpKQotICAgICAgICBlZGl0b3ItPnNldENvbXBvc2l0
aW9uKGV2LT5wcmVlZGl0U3RyaW5nKCksIHVuZGVybGluZXMsIDAsIGV2LT5wcmVlZGl0U3RyaW5n
KCkubGVuZ3RoKCkpOworICAgICAgICBlZGl0b3ItPnNldENvbXBvc2l0aW9uKGV2LT5wcmVlZGl0
U3RyaW5nKCksIHVuZGVybGluZXMsIDAsIDApOwogCiAgICAgZXYtPmFjY2VwdCgpOwogfQpAQCAt
MTM3MCwxMCArMTM2OCw4IEBAIFFWYXJpYW50IFFXZWJQYWdlOjppbnB1dE1ldGhvZFF1ZXJ5KFF0
OjoKICAgICAgICAgICAgIHJldHVybiBRVmFyaWFudChRRm9udCgpKTsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIFF0OjpJbUN1cnNvclBvc2l0aW9uOiB7Ci0gICAgICAgICAgICBpZiAoZWRpdG9y
LT5oYXNDb21wb3NpdGlvbigpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5n
ZSA9IGVkaXRvci0+Y29tcG9zaXRpb25SYW5nZSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBR
VmFyaWFudChmcmFtZS0+c2VsZWN0aW9uKCktPmVuZCgpLm9mZnNldEluQ29udGFpbmVyTm9kZSgp
IC0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSkpOwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVjdGlvbigpLT5lbmQoKS5vZmZzZXRJbkNv
bnRhaW5lck5vZGUoKSk7CiAgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVj
dGlvbigpLT5leHRlbnQoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBRdDo6SW1TdXJyb3VuZGluZ1RleHQ6IHsKQEAgLTEzODcsNyArMTM4Myw3IEBA
IFFWYXJpYW50IFFXZWJQYWdlOjppbnB1dE1ldGhvZFF1ZXJ5KFF0OjoKICAgICAgICAgICAgIHJl
dHVybiBRVmFyaWFudCgpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgUXQ6OkltQ3VycmVudFNl
bGVjdGlvbjogewotICAgICAgICAgICAgaWYgKHJlbmRlclRleHRDb250cm9sKSB7CisgICAgICAg
ICAgICBpZiAoIWVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSAmJiByZW5kZXJUZXh0Q29udHJvbCkg
ewogICAgICAgICAgICAgICAgIGludCBzdGFydCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQo
KS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKICAgICAgICAgICAgICAgICBpbnQgZW5kID0gZnJh
bWUtPnNlbGVjdGlvbigpLT5lbmQoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKICAgICAgICAg
ICAgICAgICBpZiAoZW5kID4gc3RhcnQpCkBAIC0xMzk3LDEwICsxMzkzLDggQEAgUVZhcmlhbnQg
UVdlYlBhZ2U6OmlucHV0TWV0aG9kUXVlcnkoUXQ6OgogCiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBRdDo6SW1BbmNob3JQb3NpdGlvbjogewotICAgICAgICAgICAgaWYgKGVkaXRvci0+aGFzQ29t
cG9zaXRpb24oKSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBlZGl0
b3ItPmNvbXBvc2l0aW9uUmFuZ2UoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQo
ZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpLm9mZnNldEluQ29udGFpbmVyTm9kZSgpIC0gVGV4
dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSkpOwotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKGVkaXRvci0+aGFzQ29tcG9zaXRpb24oKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gUVZhcmlhbnQoZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpLm9mZnNldEluQ29udGFp
bmVyTm9kZSgpKTsKICAgICAgICAgICAgIHJldHVybiBRVmFyaWFudChmcmFtZS0+c2VsZWN0aW9u
KCktPmJhc2UoKS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBRdDo6SW1NYXhpbXVtVGV4dExlbmd0aDogewpJbmRleDogV2ViS2l0L3F0L3Rlc3RzL3F3
ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L3Rlc3RzL3F3
ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDcyMDA1KQorKysgV2ViS2l0L3F0L3Rl
c3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2ODcsNiAr
MTY4NywzMTQgQEAgdm9pZCB0c3RfUVdlYlBhZ2U6OmlucHV0TWV0aG9kcygpCiAgICAgUUNPTVBB
UkUoaW5wdXRWYWx1ZSwgUVN0cmluZygiUXRXZWJLaXQyIikpOwogICAgIC8vRU5EIC0gVGVzdCBm
b3Igc2VuZGluZyBlbXB0eSBRSW5wdXRNZXRob2RFdmVudAogCisgICAgcGFnZS0+bWFpbkZyYW1l
KCktPnNldEh0bWwoIjxodG1sPjxib2R5PiIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiPGlucHV0IHR5cGU9J3RleHQnIGlkPSdpbnB1dDQnIHZhbHVlPSdR
dFdlYktpdCBpbnB1dE1ldGhvZCcvPiIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiPC9ib2R5PjwvaHRtbD4iKTsKKyAgICBwYWdlLT5tYWluRnJhbWUoKS0+
ZXZhbHVhdGVKYXZhU2NyaXB0KCJ2YXIgaW5wdXRFbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnaW5wdXQ0Jyk7IGlucHV0RWxlLmZvY3VzKCk7IGlucHV0RWxlLnNlbGVjdCgpOyIpOworCisg
ICAgLy8gQ2xlYXIgdGhlIHNlbGVjdGlvbiwgYWxzbyBjYW5jZWwgdGhlIG9uZ29pbmcgY29tcG9z
aXRpb24gaWYgdGhlcmUgaXMgb25lLgorICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0TWV0aG9k
RXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQ6
OkF0dHJpYnV0ZSBuZXdTZWxlY3Rpb24oUUlucHV0TWV0aG9kRXZlbnQ6OlNlbGVjdGlvbiwgMCwg
MCwgUVZhcmlhbnQoKSk7CisgICAgICAgIGF0dHJpYnV0ZXMuYXBwZW5kKG5ld1NlbGVjdGlvbik7
CisgICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCIiLCBhdHRyaWJ1dGVzKTsKKyAgICAg
ICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAgICAvLyBJbUN1cnJlbnRTZWxlY3Rp
b24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJyZW50U2Vs
ZWN0aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsK
KyAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOworCisgICAgdmFyaWFu
dCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBR
U3RyaW5nIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAg
UUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygiUXRXZWJLaXQgaW5wdXRNZXRob2Qi
KSk7CisKKyAgICAvLyBJbUFuY2hvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0
TWV0aG9kUXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOworICAgIGFuY2hvclBvc2l0aW9uID0g
IHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwgMCk7CisKKyAg
ICAvLyBJbUN1cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVl
cnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQu
dG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgMCk7CisKKyAgICAvLyAxLiBJ
bnNlcnQgYSBjaGFyYWN0ZXIgdG8gdGhlIGJlZ2luaW5nIG9mIHRoZSBsaW5lLgorICAgIC8vIFNl
bmQgdGVtcG9yYXJ5IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0b3IgaGFzIGNvbXBvc2l0aW9u
ICdtJy4KKyAgICB7CisgICAgICAgIFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+
IGF0dHJpYnV0ZXM7CisgICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCJtIiwgYXR0cmli
dXRlcyk7CisgICAgICAgIHBhZ2UtPmV2ZW50KCZldmVudCk7CisgICAgfQorCisgICAgLy8gSW1D
dXJyZW50U2VsZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6
OkltQ3VycmVudFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVl
PFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsK
KworICAgIC8vIEltU3Vycm91bmRpbmdUZXh0CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0
aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJyb3VuZGluZ1ZhbHVlID0g
dmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1cnJvdW5kaW5nVmFsdWUs
IFFTdHJpbmcoIlF0V2ViS2l0IGlucHV0TWV0aG9kIikpOworCisgICAgLy8gSW1DdXJzb3JQb3Np
dGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBv
c2l0aW9uKTsKKyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNP
TVBBUkUoY3Vyc29yUG9zaXRpb24sIDApOworCisgICAgLy8gSW1BbmNob3JQb3NpdGlvbgorICAg
IHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsK
KyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5j
aG9yUG9zaXRpb24sIDApOworCisgICAgLy8gU2VuZCB0ZW1wb3JhcnkgdGV4dCwgd2hpY2ggbWFr
ZXMgdGhlIGVkaXRvciBoYXMgY29tcG9zaXRpb24gJ24nLgorICAgIHsKKyAgICAgICAgUUxpc3Q8
UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0
TWV0aG9kRXZlbnQgZXZlbnQoIm4iLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQo
JmV2ZW50KTsKKyAgICB9CisKKyAgICAvLyBJbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2YXJpYW50
ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsKKyAgICBz
ZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShz
ZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOworCisgICAgLy8gSW1TdXJyb3VuZGluZ1RleHQK
KyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1Rl
eHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7Cisg
ICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygiUXRXZWJLaXQgaW5wdXRNZXRo
b2QiKSk7CisKKyAgICAvLyBJbUN1cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlu
cHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0aW9u
ID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgMCk7CisK
KyAgICAvLyBJbUFuY2hvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9k
UXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24pOworICAgIGFuY2hvclBvc2l0aW9uID0gIHZhcmlh
bnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwgMCk7CisKKyAgICAvLyBT
ZW5kIGNvbW1pdCB0ZXh0LCB3aGljaCBtYWtlcyB0aGUgZWRpdG9yIGNvbmZvcm1zIGNvbXBvc2l0
aW9uLgorICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZT4g
YXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnQoIiIsIGF0dHJpYnV0
ZXMpOworICAgICAgICBldmVudC5zZXRDb21taXRTdHJpbmcoIm8iKTsKKyAgICAgICAgcGFnZS0+
ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAgICAvLyBJbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2
YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsK
KyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09N
UEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOworCisgICAgLy8gSW1TdXJyb3VuZGlu
Z1RleHQKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3Vu
ZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+
KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygib1F0V2ViS2l0IGlu
cHV0TWV0aG9kIikpOworCisgICAgLy8gSW1DdXJzb3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBw
YWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBvc2l0aW9uKTsKKyAgICBjdXJzb3JQ
b3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoY3Vyc29yUG9zaXRpb24s
IDEpOworCisgICAgLy8gSW1BbmNob3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1
dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9
ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5jaG9yUG9zaXRpb24sIDEpOworCisg
ICAgLy8gMi4gaW5zZXJ0IGEgY2hhcmFjdGVyIHRvIHRoZSBtaWRkbGUgb2YgdGhlIGxpbmUuCisg
ICAgLy8gU2VuZCB0ZW1wb3JhcnkgdGV4dCwgd2hpY2ggbWFrZXMgdGhlIGVkaXRvciBoYXMgY29t
cG9zaXRpb24gJ2QnLgorICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0TWV0aG9kRXZlbnQ6OkF0
dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZlbnQgZXZlbnQoImQi
LCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAg
ICAvLyBJbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RR
dWVyeShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlh
bnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmlu
ZygiIikpOworCisgICAgLy8gSW1TdXJyb3VuZGluZ1RleHQKKyAgICB2YXJpYW50ID0gcGFnZS0+
aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5n
VmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRp
bmdWYWx1ZSwgUVN0cmluZygib1F0V2ViS2l0IGlucHV0TWV0aG9kIikpOworCisgICAgLy8gSW1D
dXJzb3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJ
bUN1cnNvclBvc2l0aW9uKTsKKyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7
CisgICAgUUNPTVBBUkUoY3Vyc29yUG9zaXRpb24sIDEpOworCisgICAgLy8gSW1BbmNob3JQb3Np
dGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBv
c2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNP
TVBBUkUoYW5jaG9yUG9zaXRpb24sIDEpOworCisgICAgLy8gU2VuZCBjb21taXQgdGV4dCwgd2hp
Y2ggbWFrZXMgdGhlIGVkaXRvciBjb25mb3JtcyBjb21wb3NpdGlvbi4KKyAgICB7CisgICAgICAg
IFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CisgICAgICAg
IFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCIiLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgZXZlbnQu
c2V0Q29tbWl0U3RyaW5nKCJlIik7CisgICAgICAgIHBhZ2UtPmV2ZW50KCZldmVudCk7CisgICAg
fQorCisgICAgLy8gSW1DdXJyZW50U2VsZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0
TWV0aG9kUXVlcnkoUXQ6OkltQ3VycmVudFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUg
PSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUs
IFFTdHJpbmcoIiIpKTsKKworICAgIC8vIEltU3Vycm91bmRpbmdUZXh0CisgICAgdmFyaWFudCA9
IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJy
b3VuZGluZ1ZhbHVlID0gdmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1
cnJvdW5kaW5nVmFsdWUsIFFTdHJpbmcoIm9lUXRXZWJLaXQgaW5wdXRNZXRob2QiKSk7CisKKyAg
ICAvLyBJbUN1cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVl
cnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQu
dG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgMik7CisKKyAgICAvLyBJbUFu
Y2hvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6Oklt
QW5jaG9yUG9zaXRpb24pOworICAgIGFuY2hvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsK
KyAgICBRQ09NUEFSRShhbmNob3JQb3NpdGlvbiwgMik7CisKKyAgICAvLyAzLiBJbnNlcnQgYSBj
aGFyYWN0ZXIgdG8gdGhlIGVuZCBvZiB0aGUgbGluZS4KKyAgICBwYWdlLT50cmlnZ2VyQWN0aW9u
KFFXZWJQYWdlOjpNb3ZlVG9FbmRPZkxpbmUpOworICAgIAorICAgIC8vIFNlbmQgdGVtcG9yYXJ5
IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0b3IgaGFzIGNvbXBvc2l0aW9uICd0Jy4KKyAgICB7
CisgICAgICAgIFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7
CisgICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCJ0IiwgYXR0cmlidXRlcyk7CisgICAg
ICAgIHBhZ2UtPmV2ZW50KCZldmVudCk7CisgICAgfQorCisgICAgLy8gSW1DdXJyZW50U2VsZWN0
aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3VycmVudFNl
bGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7
CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsKKworICAgIC8vIElt
U3Vycm91bmRpbmdUZXh0CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6
OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJyb3VuZGluZ1ZhbHVlID0gdmFyaWFudC52YWx1
ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1cnJvdW5kaW5nVmFsdWUsIFFTdHJpbmcoIm9l
UXRXZWJLaXQgaW5wdXRNZXRob2QiKSk7CisKKyAgICAvLyBJbUN1cnNvclBvc2l0aW9uCisgICAg
dmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOwor
ICAgIGN1cnNvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJz
b3JQb3NpdGlvbiwgMjIpOworCisgICAgLy8gSW1BbmNob3JQb3NpdGlvbgorICAgIHZhcmlhbnQg
PSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAgICBhbmNo
b3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5jaG9yUG9zaXRp
b24sIDIyKTsKKworICAgIC8vIFNlbmQgY29tbWl0IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0
b3IgY29uZm9ybXMgY29tcG9zaXRpb24uCisgICAgeworICAgICAgICBRTGlzdDxRSW5wdXRNZXRo
b2RFdmVudDo6QXR0cmlidXRlPiBhdHRyaWJ1dGVzOworICAgICAgICBRSW5wdXRNZXRob2RFdmVu
dCBldmVudCgiIiwgYXR0cmlidXRlcyk7CisgICAgICAgIGV2ZW50LnNldENvbW1pdFN0cmluZygi
dCIpOworICAgICAgICBwYWdlLT5ldmVudCgmZXZlbnQpOworICAgIH0KKworICAgIC8vIEltQ3Vy
cmVudFNlbGVjdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJ
bUN1cnJlbnRTZWxlY3Rpb24pOworICAgIHNlbGVjdGlvblZhbHVlID0gdmFyaWFudC52YWx1ZTxR
U3RyaW5nPigpOworICAgIFFDT01QQVJFKHNlbGVjdGlvblZhbHVlLCBRU3RyaW5nKCIiKSk7CisK
KyAgICAvLyBJbVN1cnJvdW5kaW5nVGV4dAorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhv
ZFF1ZXJ5KFF0OjpJbVN1cnJvdW5kaW5nVGV4dCk7CisgICAgc3Vycm91bmRpbmdWYWx1ZSA9IHZh
cmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzdXJyb3VuZGluZ1ZhbHVlLCBR
U3RyaW5nKCJvZVF0V2ViS2l0IGlucHV0TWV0aG9kdCIpKTsKKworICAgIC8vIEltQ3Vyc29yUG9z
aXRpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1DdXJzb3JQ
b3NpdGlvbik7CisgICAgY3Vyc29yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFD
T01QQVJFKGN1cnNvclBvc2l0aW9uLCAyMyk7CisKKyAgICAvLyBJbUFuY2hvclBvc2l0aW9uCisg
ICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6OkltQW5jaG9yUG9zaXRpb24p
OworICAgIGFuY2hvclBvc2l0aW9uID0gIHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShh
bmNob3JQb3NpdGlvbiwgMjMpOworCisgICAgLy8gNC4gUmVwbGFjZSB0aGUgc2VsZWN0aW9uLgor
ICAgIHBhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6OlNlbGVjdFByZXZpb3VzV29yZCk7CisK
KyAgICAvLyBJbUN1cnJlbnRTZWxlY3Rpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRo
b2RRdWVyeShRdDo6SW1DdXJyZW50U2VsZWN0aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZh
cmlhbnQudmFsdWU8UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0
cmluZygiaW5wdXRNZXRob2R0IikpOworCisgICAgLy8gSW1TdXJyb3VuZGluZ1RleHQKKyAgICB2
YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1RleHQpOwor
ICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNP
TVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwgUVN0cmluZygib2VRdFdlYktpdCBpbnB1dE1ldGhvZHQi
KSk7CisKKyAgICAvLyBJbUN1cnNvclBvc2l0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0
TWV0aG9kUXVlcnkoUXQ6OkltQ3Vyc29yUG9zaXRpb24pOworICAgIGN1cnNvclBvc2l0aW9uID0g
IHZhcmlhbnQudG9JbnQoKTsKKyAgICBRQ09NUEFSRShjdXJzb3JQb3NpdGlvbiwgMTEpOworCisg
ICAgLy8gSW1BbmNob3JQb3NpdGlvbgorICAgIHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1
ZXJ5KFF0OjpJbUFuY2hvclBvc2l0aW9uKTsKKyAgICBhbmNob3JQb3NpdGlvbiA9ICB2YXJpYW50
LnRvSW50KCk7CisgICAgUUNPTVBBUkUoYW5jaG9yUG9zaXRpb24sIDIzKTsKKworICAgIC8vIFNl
bmQgdGVtcG9yYXJ5IHRleHQsIHdoaWNoIG1ha2VzIHRoZSBlZGl0b3IgaGFzIGNvbXBvc2l0aW9u
ICd3Jy4KKyAgICB7CisgICAgICAgIFFMaXN0PFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGU+
IGF0dHJpYnV0ZXM7CisgICAgICAgIFFJbnB1dE1ldGhvZEV2ZW50IGV2ZW50KCJ3IiwgYXR0cmli
dXRlcyk7CisgICAgICAgIHBhZ2UtPmV2ZW50KCZldmVudCk7CisgICAgfQorCisgICAgLy8gSW1D
dXJyZW50U2VsZWN0aW9uCisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0aG9kUXVlcnkoUXQ6
OkltQ3VycmVudFNlbGVjdGlvbik7CisgICAgc2VsZWN0aW9uVmFsdWUgPSB2YXJpYW50LnZhbHVl
PFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc2VsZWN0aW9uVmFsdWUsIFFTdHJpbmcoIiIpKTsK
KworICAgIC8vIEltU3Vycm91bmRpbmdUZXh0CisgICAgdmFyaWFudCA9IHBhZ2UtPmlucHV0TWV0
aG9kUXVlcnkoUXQ6OkltU3Vycm91bmRpbmdUZXh0KTsKKyAgICBzdXJyb3VuZGluZ1ZhbHVlID0g
dmFyaWFudC52YWx1ZTxRU3RyaW5nPigpOworICAgIFFDT01QQVJFKHN1cnJvdW5kaW5nVmFsdWUs
IFFTdHJpbmcoIm9lUXRXZWJLaXQgIikpOworCisgICAgLy8gSW1DdXJzb3JQb3NpdGlvbgorICAg
IHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBvc2l0aW9uKTsK
KyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoY3Vy
c29yUG9zaXRpb24sIDExKTsKKworICAgIC8vIEltQW5jaG9yUG9zaXRpb24KKyAgICB2YXJpYW50
ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1BbmNob3JQb3NpdGlvbik7CisgICAgYW5j
aG9yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01QQVJFKGFuY2hvclBvc2l0
aW9uLCAxMSk7CisKKyAgICAvLyBTZW5kIGNvbW1pdCB0ZXh0LCB3aGljaCBtYWtlcyB0aGUgZWRp
dG9yIGNvbmZvcm1zIGNvbXBvc2l0aW9uLgorICAgIHsKKyAgICAgICAgUUxpc3Q8UUlucHV0TWV0
aG9kRXZlbnQ6OkF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAgICAgICAgUUlucHV0TWV0aG9kRXZl
bnQgZXZlbnQoIiIsIGF0dHJpYnV0ZXMpOworICAgICAgICBldmVudC5zZXRDb21taXRTdHJpbmco
IjIiKTsKKyAgICAgICAgcGFnZS0+ZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAgICAvLyBJbUN1
cnJlbnRTZWxlY3Rpb24KKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6
SW1DdXJyZW50U2VsZWN0aW9uKTsKKyAgICBzZWxlY3Rpb25WYWx1ZSA9IHZhcmlhbnQudmFsdWU8
UVN0cmluZz4oKTsKKyAgICBRQ09NUEFSRShzZWxlY3Rpb25WYWx1ZSwgUVN0cmluZygiIikpOwor
CisgICAgLy8gSW1TdXJyb3VuZGluZ1RleHQKKyAgICB2YXJpYW50ID0gcGFnZS0+aW5wdXRNZXRo
b2RRdWVyeShRdDo6SW1TdXJyb3VuZGluZ1RleHQpOworICAgIHN1cnJvdW5kaW5nVmFsdWUgPSB2
YXJpYW50LnZhbHVlPFFTdHJpbmc+KCk7CisgICAgUUNPTVBBUkUoc3Vycm91bmRpbmdWYWx1ZSwg
UVN0cmluZygib2VRdFdlYktpdCAyIikpOworCisgICAgLy8gSW1DdXJzb3JQb3NpdGlvbgorICAg
IHZhcmlhbnQgPSBwYWdlLT5pbnB1dE1ldGhvZFF1ZXJ5KFF0OjpJbUN1cnNvclBvc2l0aW9uKTsK
KyAgICBjdXJzb3JQb3NpdGlvbiA9ICB2YXJpYW50LnRvSW50KCk7CisgICAgUUNPTVBBUkUoY3Vy
c29yUG9zaXRpb24sIDEyKTsKKworICAgIC8vIEltQW5jaG9yUG9zaXRpb24KKyAgICB2YXJpYW50
ID0gcGFnZS0+aW5wdXRNZXRob2RRdWVyeShRdDo6SW1BbmNob3JQb3NpdGlvbik7CisgICAgYW5j
aG9yUG9zaXRpb24gPSAgdmFyaWFudC50b0ludCgpOworICAgIFFDT01QQVJFKGFuY2hvclBvc2l0
aW9uLCAxMik7CisKICAgICBkZWxldGUgY29udGFpbmVyOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>