<?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>85670</bug_id>
          
          <creation_ts>2012-05-04 14:39:00 -0700</creation_ts>
          <short_desc>[BlackBerry] Implement a popup client for HTML controls</short_desc>
          <delta_ts>2012-05-08 16:00:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Crystal Zhang">haizhang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>rakuco</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>616683</commentid>
    <comment_count>0</comment_count>
    <who name="Crystal Zhang">haizhang</who>
    <bug_when>2012-05-04 14:39:00 -0700</bug_when>
    <thetext>popup client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616746</commentid>
    <comment_count>1</comment_count>
      <attachid>140346</attachid>
    <who name="Crystal Zhang">haizhang</who>
    <bug_when>2012-05-04 15:48:45 -0700</bug_when>
    <thetext>Created attachment 140346
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616753</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-04 15:52:47 -0700</bug_when>
    <thetext>Attachment 140346 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit/...&quot; exit_code: 1
Source/WebKit/ChangeLog:8:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616771</commentid>
    <comment_count>3</comment_count>
      <attachid>140351</attachid>
    <who name="Crystal Zhang">haizhang</who>
    <bug_when>2012-05-04 16:08:49 -0700</bug_when>
    <thetext>Created attachment 140351
fix style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617224</commentid>
    <comment_count>4</comment_count>
      <attachid>140351</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-06 16:40:28 -0700</bug_when>
    <thetext>Comment on attachment 140351
fix style

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

Can be cleaned up some more.

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

It is best to add at least a short description.

&gt; Source/WebKit/PlatformBlackBerry.cmake:6
&gt; +

Better not add empty lines here.

&gt; Source/WebKit/PlatformBlackBerry.cmake:81
&gt; +

Ditto.

&gt; Source/WebKit/blackberry/ChangeLog:6
&gt; +        Reviewed by NOBODY (OOPS!).

It is best to add at least a short description.

&gt; Source/WebKit/blackberry/WebCoreSupport/WebPopupImpl.cpp:43
&gt; +#include &quot;WindowFeatures.h&quot;

Are all includes needed?

&gt; Source/WebKit/blackberry/WebCoreSupport/WebPopupImpl.cpp:48
&gt; +using namespace BlackBerry::WebKit;

Add a newline here.

&gt; Source/WebKit/blackberry/WebCoreSupport/WebPopupImpl.cpp:51
&gt; +class PagePopupChromeClient: public ChromeClientBlackBerry {

please add a space character before the &apos;:&apos;

&gt; Source/WebKit/blackberry/WebCoreSupport/WebPopupImpl.cpp:56
&gt; +                    0, 0, 0, 0)

Check if you need to initialize m_rect that way, it may default to 0,0,0,0 anyway.

&gt; Source/WebKit/blackberry/WebCoreSupport/WebPopupImpl.cpp:81
&gt; +

Remove empty line.

&gt; Source/WebKit/blackberry/WebCoreSupport/WebPopupImpl.cpp:97
&gt; +                new EmptyFrameLoaderClient;

I don&apos;t think you have to wrap here, can be on one line.

&gt; Source/WebKit/blackberry/WebCoreSupport/WebPopupImpl.cpp:105
&gt; +                new EmptyContextMenuClient;

Ditto.

&gt; Source/WebKit/blackberry/WebCoreSupport/WebPopupImpl.cpp:122
&gt; +                emptyFrameLoaderClient);

Ditto.

&gt; Source/WebKit/blackberry/WebCoreSupport/WebPopupImpl.cpp:129
&gt; +                frame-&gt;loader()-&gt;activeDocumentLoader()-&gt;writer();

Ditto.

&gt; Source/WebKit/blackberry/WebCoreSupport/WebPopupImpl.cpp:138
&gt; +    return false;

Better do early return style:

if (!webpage)
    return false;

.....

return true;

&gt; Source/WebKit/blackberry/WebCoreSupport/WebPopupImpl.h:31
&gt; +#include &lt;JavaScriptCore/JSValueRef.h&gt;

Please make sure to only include the ones you need, for example JSC includes can go to the .cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617928</commentid>
    <comment_count>5</comment_count>
      <attachid>140589</attachid>
    <who name="Crystal Zhang">haizhang</who>
    <bug_when>2012-05-07 14:12:36 -0700</bug_when>
    <thetext>Created attachment 140589
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617949</commentid>
    <comment_count>6</comment_count>
      <attachid>140589</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-07 14:25:33 -0700</bug_when>
    <thetext>Comment on attachment 140589
updated patch

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

Looks good, can still be cleaned up a bit.

&gt; Source/WebKit/blackberry/WebCoreSupport/WebPopupImpl.cpp:50
&gt; +

Can remove the empty line.

&gt; Source/WebKit/blackberry/WebCoreSupport/WebPopupImpl.cpp:133
&gt; +

Can remov the empty line here.

&gt; Source/WebKit/blackberry/WebCoreSupport/WebPopupImpl.cpp:233
&gt; +    case WebCore::PlatformEvent::MouseReleased:

Can remove all WebCore:: prefixes in this method.

&gt; Source/WebKit/blackberry/WebCoreSupport/WebPopupImpl.cpp:252
&gt; +    if (m_page) {

Can early return here if !page.

&gt; Source/WebKit/blackberry/WebCoreSupport/WebPopupImpl.cpp:258
&gt; +    m_page.clear();

Better use m_page-&gt;clear();

&gt; Source/WebKit/blackberry/WebCoreSupport/WebPopupImpl.h:24
&gt; +

Can remove empty line here.

&gt; Source/WebKit/blackberry/WebCoreSupport/WebPopupImpl.h:54
&gt; +

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618667</commentid>
    <comment_count>7</comment_count>
      <attachid>140754</attachid>
    <who name="Crystal Zhang">haizhang</who>
    <bug_when>2012-05-08 11:45:15 -0700</bug_when>
    <thetext>Created attachment 140754
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618670</commentid>
    <comment_count>8</comment_count>
      <attachid>140754</attachid>
    <who name="Crystal Zhang">haizhang</who>
    <bug_when>2012-05-08 11:46:28 -0700</bug_when>
    <thetext>Comment on attachment 140754
updated patch

wrong patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618677</commentid>
    <comment_count>9</comment_count>
      <attachid>140758</attachid>
    <who name="Crystal Zhang">haizhang</who>
    <bug_when>2012-05-08 11:56:28 -0700</bug_when>
    <thetext>Created attachment 140758
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618696</commentid>
    <comment_count>10</comment_count>
      <attachid>140758</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-08 12:12:12 -0700</bug_when>
    <thetext>Comment on attachment 140758
updated patch

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

Looks good, can be cleaned up a bit more.

&gt; Source/WebKit/blackberry/WebCoreSupport/PagePopupBlackBerry.cpp:212
&gt; +    JSC::UString name(&quot;popUp&quot;);

Yong can review this better than me. I do wonder if popUp is a good name.

&gt; Source/WebKit/blackberry/WebCoreSupport/PagePopupBlackBerry.cpp:233
&gt; +                event);

Combine the two lines above into one line.

&gt; Source/WebKit/blackberry/WebCoreSupport/PagePopupBlackBerry.cpp:258
&gt; +}

I think early return is preferred here:

if (!m_page) {
    m_page-&gt;clear();
    return;
}
m_page-&gt;
....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618714</commentid>
    <comment_count>11</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-05-08 12:29:37 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=140758&amp;action=review

It is an interesting way to do it. I&apos;m always worried about JS re-entrancy. So please make sure it cannot be triggered by JS code.

Also, where are the other parts? I cannot finish reviewing without seeing how PagePopupBlackBerry is used. Can I assume it is already working well?

&gt; Source/WebKit/blackberry/WebCoreSupport/PagePopupBlackBerry.cpp:43
&gt; +#define urlbarHeight 70

1. all letters should in capital case for macros.
2. I would use enum/const in a namespace/class scope.

Also why 70? Where is the number determined? Should we query it from webpageclient dynamically?

&gt; Source/WebKit/blackberry/WebCoreSupport/PagePopupBlackBerry.cpp:62
&gt; +    WebPagePrivate* webPage()
&gt; +    {

this method can be const

&gt; Source/WebKit/blackberry/WebCoreSupport/PagePopupBlackBerry.cpp:73
&gt; +PagePopupBlackBerry::PagePopupBlackBerry(BlackBerry::WebKit::WebPagePrivate* webPage,
&gt; +        PagePopupClient* client, const IntRect&amp; rect) :
&gt; +        m_webPagePrivate(webPage), m_client(client)

Is the style right? I would write it like this:

PagePopupBlackBerry::PagePopupBlackBerry(BlackBerry::WebKit::WebPagePrivate* webPage, PagePopupClient* client, const IntRect&amp; rect)
   : m_webPagePrivate(webPage)
   , m_client(client)

&gt; Source/WebKit/blackberry/WebCoreSupport/PagePopupBlackBerry.cpp:76
&gt; +    m_rect = IntRect(rect.x(), rect.y() - urlbarHeight,
&gt; +            client-&gt;contentSize().width(), client-&gt;contentSize().height());

one line should be enough.

&gt; Source/WebKit/blackberry/WebCoreSupport/PagePopupBlackBerry.cpp:89
&gt; +bool PagePopupBlackBerry::init(WebPage* webpage)
&gt; +{

I would use initialize

&gt; Source/WebKit/blackberry/WebCoreSupport/PagePopupBlackBerry.cpp:91
&gt; +    if (!webpage)
&gt; +        return false;

is it necessary?

&gt; Source/WebKit/blackberry/WebCoreSupport/PagePopupBlackBerry.cpp:144
&gt; +    char* strArgs = new char[sizeUTF8];

I would use WTF::Vector&lt;char&gt;

&gt; Source/WebKit/blackberry/WebCoreSupport/PagePopupBlackBerry.cpp:244
&gt; +    delete m_client;
&gt; +    m_client = 0;

I think the client should delete itself in didClosePopup. Or we can use a OwnPtr, and get PassOwnPtr&lt;PopupClient&gt; passed in through contructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618792</commentid>
    <comment_count>12</comment_count>
      <attachid>140781</attachid>
    <who name="Crystal Zhang">haizhang</who>
    <bug_when>2012-05-08 14:14:38 -0700</bug_when>
    <thetext>Created attachment 140781
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618803</commentid>
    <comment_count>13</comment_count>
      <attachid>140781</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-05-08 14:22:38 -0700</bug_when>
    <thetext>Comment on attachment 140781
updated patch

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

Other than the &quot;strArgs&quot; issue, the patch looks good to me

&gt; Source/WebKit/blackberry/WebCoreSupport/PagePopupBlackBerry.cpp:143
&gt; +    WTF::Vector&lt;char&gt; strArgs;
&gt; +    JSStringGetUTF8CString(string, strArgs.data(), sizeUTF8);

We have to allocate enough buffer for strArgs. Otherwise strArgs.data() is a null pointer. The reason I suggested to use Vector&lt;char&gt; is I hate &quot;delete&quot;. OwnArrayPtr&lt;char&gt; should also work.

&gt; Source/WebKit/blackberry/WebCoreSupport/PagePopupBlackBerry.cpp:152
&gt; +    client-&gt;setValueAndClosePopup(0, strArgs.data());

Are we sure the string data has a null terminator included? Otherwise, we have to pass the string length.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618826</commentid>
    <comment_count>14</comment_count>
      <attachid>140790</attachid>
    <who name="Crystal Zhang">haizhang</who>
    <bug_when>2012-05-08 14:45:24 -0700</bug_when>
    <thetext>Created attachment 140790
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618827</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-08 14:47:44 -0700</bug_when>
    <thetext>Attachment 140790 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit/...&quot; exit_code: 1
Source/WebKit/blackberry/WebCoreSupport/PagePopupBlackBerry.cpp:143:  Extra space before last semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618831</commentid>
    <comment_count>16</comment_count>
      <attachid>140791</attachid>
    <who name="Crystal Zhang">haizhang</who>
    <bug_when>2012-05-08 14:53:50 -0700</bug_when>
    <thetext>Created attachment 140791
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618852</commentid>
    <comment_count>17</comment_count>
      <attachid>140790</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-08 15:08:10 -0700</bug_when>
    <thetext>Comment on attachment 140790
updated patch

You should consider using webkit-patch upload, which will automatically obsolete your previous patches for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618855</commentid>
    <comment_count>18</comment_count>
      <attachid>140791</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-08 15:10:40 -0700</bug_when>
    <thetext>Comment on attachment 140791
updated patch

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

Looks good.

&gt; Source/WebKit/blackberry/WebCoreSupport/PagePopupBlackBerry.h:49
&gt; +    void setRect();

Can this be removed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618858</commentid>
    <comment_count>19</comment_count>
      <attachid>140791</attachid>
    <who name="Crystal Zhang">haizhang</who>
    <bug_when>2012-05-08 15:18:13 -0700</bug_when>
    <thetext>Comment on attachment 140791
updated patch

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

&gt;&gt; Source/WebKit/blackberry/WebCoreSupport/PagePopupBlackBerry.h:49
&gt;&gt; +    void setRect();
&gt; 
&gt; Can this be removed?

I&apos;d rather keep this method, because it might get call to change the rect in the runtime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618908</commentid>
    <comment_count>20</comment_count>
      <attachid>140791</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-08 16:00:26 -0700</bug_when>
    <thetext>Comment on attachment 140791
updated patch

Clearing flags on attachment: 140791

Committed r116462: &lt;http://trac.webkit.org/changeset/116462&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618909</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-08 16:00:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140346</attachid>
            <date>2012-05-04 15:48:45 -0700</date>
            <delta_ts>2012-05-04 16:08:49 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-2012-05-04-Crystal-Zhang-haizhang-rim.com.patch</filename>
            <type>text/plain</type>
            <size>15335</size>
            <attacher name="Crystal Zhang">haizhang</attacher>
            
              <data encoding="base64">RnJvbSA4ZjA4MTFlZjc4OWM1ZDViYjNiNjgyMGQ4NDkzMjAyZDI5NGMzYjg3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDcnlzdGFsIFpoYW5nIDxoYWl6aGFuZ0ByaW0uY29tPgpEYXRl
OiBGcmksIDQgTWF5IDIwMTIgMTc6NDM6NTMgLTA0MDAKU3ViamVjdDogW1BBVENIIDEvMl0gMjAx
Mi0wNS0wNCAgQ3J5c3RhbCBaaGFuZyAgPGhhaXpoYW5nQHJpbS5jb20+CgogICAgICAgIFtCbGFj
a0JlcnJ5XSBJbXBsZW1lbnQgYSBwb3B1cCBjbGllbnQgZm9yIEhUTUwgY29udHJvbHMKICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU2NzAKCiAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
UG9wdXBJbXBsLmNwcDogQWRkZWQuCiAgICAgICAgKFdlYkNvcmUpOgogICAgICAgIChXZWJDb3Jl
OjpXZWJQb3B1cEltcGw6OldlYlBvcHVwSW1wbCk6CiAgICAgICAgKFdlYkNvcmU6OldlYlBvcHVw
SW1wbDo6fldlYlBvcHVwSW1wbCk6CiAgICAgICAgKFdlYkNvcmU6OldlYlBvcHVwSW1wbDo6c2Vu
ZENyZWF0ZVBvcHVwV2ViVmlld1JlcXVlc3QpOgogICAgICAgIChXZWJDb3JlOjpXZWJQb3B1cElt
cGw6OmluaXQpOgogICAgICAgIChXZWJDb3JlOjpzZXRWYWx1ZUFuZENsb3NlUG9wdXBDYWxsYmFj
ayk6CiAgICAgICAgKFdlYkNvcmU6OnBvcFVwRXh0ZW5zaW9uSW5pdGlhbGl6ZSk6CiAgICAgICAg
KFdlYkNvcmU6OnBvcFVwRXh0ZW5zaW9uRmluYWxpemUpOgogICAgICAgIChXZWJDb3JlOjpXZWJQ
b3B1cEltcGw6Omluc3RhbGxEb21GdW5jdGlvbik6CiAgICAgICAgKFdlYkNvcmU6OldlYlBvcHVw
SW1wbDo6aGFuZGxlTW91c2VFdmVudCk6CiAgICAgICAgKFdlYkNvcmU6OldlYlBvcHVwSW1wbDo6
Y2xvc2VQb3B1cCk6CiAgICAgICAgKFdlYkNvcmU6OldlYlBvcHVwSW1wbDo6Y2xvc2VXZWJQYWdl
KToKICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBvcHVwSW1wbC5oOiBBZGRlZC4KICAgICAg
ICAoV2ViS2l0KToKICAgICAgICAoV2ViQ29yZSk6CiAgICAgICAgKiBQbGF0Zm9ybUJsYWNrQmVy
cnkuY21ha2U6Ci0tLQogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgICA5ICsKIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtl
ICAgICAgICAgICAgIHwgICAgMyArCiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICB8ICAgMjQgKysKIC4uLi9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0
L1dlYlBvcHVwSW1wbC5jcHAgICAgIHwgIDI2NiArKysrKysrKysrKysrKysrKysrKwogLi4uL2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBJbXBsLmggICAgICAgfCAgIDczICsrKysr
KwogNSBmaWxlcyBjaGFuZ2VkLCAzNzUgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cEltcGwuY3Bw
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L1dlYlBvcHVwSW1wbC5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2MzUwYjgyLi40NzAxNTg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA1LTA0ICBDcnlzdGFsIFpoYW5nICA8aGFpemhhbmdA
cmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gSW1wbGVtZW50IGEgcG9wdXAgY2xpZW50
IGZvciBIVE1MIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NTY3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCisKIDIwMTItMDQtMjAgIE1pa2Ug
TGF0dGFuemlvICA8bWxhdHRhbnppb0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBF
eHBvc2UgV2ViVmlld3BvcnRBcmd1bWVudHMgdG8gV2ViUGFnZUNsaWVudApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtQmxhY2tCZXJyeS5jbWFrZQppbmRleCBhNTRmZTZmLi41MDMwNDhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQpAQCAtMyw2ICszLDcgQEAgTElTVChJTlNFUlQg
V2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMgMAogICAgICIke0JMQUNLQkVSUllfVEhJUkRfUEFS
VFlfRElSfS9pY3UiCiApCiAKKwogTElTVChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJ
RVMKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9Ly4uIgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vZGZnIgpAQCAtNzYsNiArNzcsOCBAQCBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNFUwog
ICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvSmF2YVNjcmlwdERlYnVnZ2VyQmxhY2tCZXJy
eS5jcHAKICAgICBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRl
ckltcGwuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9WaWJyYXRpb25DbGllbnRC
bGFja0JlcnJ5LmNwcAorICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBJbXBs
LmNwcAorCiAgICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZUNvbXBvc2l0
aW5nU3VyZmFjZS5jcHAKICAgICBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQmFja2luZ1N0b3Jl
VGlsZS5jcHAKICAgICBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQmFja2luZ1N0b3JlQ2xpZW50
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggMWY3OWFhOS4uYjYzYmEzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDUt
MDQgIENyeXN0YWwgWmhhbmcgIDxoYWl6aGFuZ0ByaW0uY29tPgorCisgICAgICAgIFtCbGFja0Jl
cnJ5XSBJbXBsZW1lbnQgYSBwb3B1cCBjbGllbnQgZm9yIEhUTUwgY29udHJvbHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NjcwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJQb3B1cEltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViUG9wdXBJbXBsOjpXZWJQb3B1cEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
UG9wdXBJbXBsOjp+V2ViUG9wdXBJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBvcHVwSW1w
bDo6c2VuZENyZWF0ZVBvcHVwV2ViVmlld1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
UG9wdXBJbXBsOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OnNldFZhbHVlQW5kQ2xvc2VQb3B1
cENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OnBvcFVwRXh0ZW5zaW9uSW5pdGlhbGl6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpwb3BVcEV4dGVuc2lvbkZpbmFsaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlBvcHVwSW1wbDo6aW5zdGFsbERvbUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlBvcHVwSW1wbDo6aGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJQb3B1cEltcGw6OmNsb3NlUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6V2ViUG9wdXBJbXBs
OjpjbG9zZVdlYlBhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBvcHVwSW1wbC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0w
NS0wMyAgTWlrZSBGZW50b24gIDxtaWZlbnRvbkByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0Jl
cnJ5XSBBZGQgc3BlY2lhbCBhdHRyaWJ1dGUgZm9yIGFsdGVybmF0ZSBzZWxlY3Rpb24gdG91Y2gg
aGFuZGxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1
cHBvcnQvV2ViUG9wdXBJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3Jl
U3VwcG9ydC9XZWJQb3B1cEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmQ5NDgwYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBJbXBsLmNwcApAQCAtMCwwICsxLDI2NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiV2ViUG9wdXBJbXBsLmgiCisKKyNpbmNsdWRlICJCYWNraW5n
U3RvcmVDbGllbnQuaCIKKyNpbmNsdWRlICJCYWNraW5nU3RvcmVfcC5oIgorI2luY2x1ZGUgIkNo
cm9tZUNsaWVudEJsYWNrQmVycnkuaCIKKyNpbmNsdWRlICJFbXB0eUNsaWVudHMuaCIKKyNpbmNs
dWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJyeS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgorI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgorI2luY2x1ZGUgIkpTTG9jay5oIgorI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNSZXRhaW5QdHIuaCIKKworI2luY2x1ZGUg
IlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJQYWdlR3JvdXBMb2Fk
RGVmZXJyZXIuaCIKKyNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybU1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYlBh
Z2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlX3AuaCIKKyNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5o
IgorCisjZGVmaW5lIHVybGJhckhlaWdodCA3MAorCit1c2luZyBuYW1lc3BhY2UgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkdyYXBoaWNzOwordXNpbmcgbmFtZXNwYWNlIEJsYWNrQmVycnk6OldlYktp
dDsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGFnZVBvcHVwQ2hyb21lQ2xpZW50OiBw
dWJsaWMgQ2hyb21lQ2xpZW50QmxhY2tCZXJyeSB7CisKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQ
YWdlUG9wdXBDaHJvbWVDbGllbnQoV2ViUGFnZVByaXZhdGUqIHdlYnBhZ2UsIFdlYlBvcHVwSW1w
bCogcG9wdXApIDoKKyAgICAgICAgICAgIENocm9tZUNsaWVudEJsYWNrQmVycnkod2VicGFnZSks
IG1fcG9wdXAocG9wdXApLCBtX3dlYlBhZ2Uod2VicGFnZSksIG1fcmVjdCgKKyAgICAgICAgICAg
ICAgICAgICAgMCwgMCwgMCwgMCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNs
b3NlV2luZG93U29vbigpCisgICAgeworICAgICAgICBtX3BvcHVwLT5jbG9zZVBvcHVwKCk7Cisg
ICAgfQorCisgICAgV2ViUGFnZVByaXZhdGUqIHdlYlBhZ2UoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fd2ViUGFnZTsKKyAgICB9CisKKyAgICBXZWJQb3B1cEltcGwqIG1fcG9wdXA7CisgICAg
V2ViUGFnZVByaXZhdGUqIG1fd2ViUGFnZTsKKyAgICBJbnRSZWN0IG1fcmVjdDsKK307CisKK1dl
YlBvcHVwSW1wbDo6V2ViUG9wdXBJbXBsKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZh
dGUqIHdlYlBhZ2UsCisgICAgICAgIFBhZ2VQb3B1cENsaWVudCogY2xpZW50LCBjb25zdCBJbnRS
ZWN0JiByZWN0KSA6CisgICAgICAgIG1fd2ViUGFnZVByaXZhdGUod2ViUGFnZSksIG1fY2xpZW50
KGNsaWVudCkKK3sKKyAgICBtX3JlY3QgPSBJbnRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSAtIHVy
bGJhckhlaWdodCwKKyAgICAgICAgICAgIGNsaWVudC0+Y29udGVudFNpemUoKS53aWR0aCgpLCBj
bGllbnQtPmNvbnRlbnRTaXplKCkuaGVpZ2h0KCkpOworCit9CisKK1dlYlBvcHVwSW1wbDo6fldl
YlBvcHVwSW1wbCgpCit7Cit9CisKK3ZvaWQgV2ViUG9wdXBJbXBsOjpzZW5kQ3JlYXRlUG9wdXBX
ZWJWaWV3UmVxdWVzdCgpCit7CisgICAgbV93ZWJQYWdlUHJpdmF0ZS0+Y2xpZW50KCktPmNyZWF0
ZVBvcHVwV2ViVmlldyhtX3JlY3QpOworfQorCitib29sIFdlYlBvcHVwSW1wbDo6aW5pdChXZWJQ
YWdlKiB3ZWJwYWdlKQoreworICAgIGlmICh3ZWJwYWdlKSB7CisgICAgICAgIHN0YXRpYyBGcmFt
ZUxvYWRlckNsaWVudCogZW1wdHlGcmFtZUxvYWRlckNsaWVudCA9CisgICAgICAgICAgICAgICAg
bmV3IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ7CisgICAgICAgIFBhZ2U6OlBhZ2VDbGllbnRzIHBh
Z2VDbGllbnRzOworICAgICAgICBtX2Nocm9tZUNsaWVudCA9IGFkb3B0UHRyKG5ldyBQYWdlUG9w
dXBDaHJvbWVDbGllbnQod2VicGFnZS0+ZCwgdGhpcykpOworICAgICAgICBzdGF0aWMgRWRpdG9y
Q2xpZW50KiBlbXB0eUVkaXRvckNsaWVudCA9IG5ldyBFbXB0eUVkaXRvckNsaWVudDsKKyAgICAg
ICAgcGFnZUNsaWVudHMuY2hyb21lQ2xpZW50ID0gbV9jaHJvbWVDbGllbnQuZ2V0KCk7CisgICAg
ICAgIHBhZ2VDbGllbnRzLmVkaXRvckNsaWVudCA9IGVtcHR5RWRpdG9yQ2xpZW50OworI2lmIEVO
QUJMRShDT05URVhUX01FTlVTKQorICAgICAgICBzdGF0aWMgQ29udGV4dE1lbnVDbGllbnQqIGVt
cHR5Q29udGV4dE1lbnVDbGllbnQgPQorICAgICAgICAgICAgICAgIG5ldyBFbXB0eUNvbnRleHRN
ZW51Q2xpZW50OworICAgICAgICBwYWdlQ2xpZW50cy5jb250ZXh0TWVudUNsaWVudCA9IGVtcHR5
Q29udGV4dE1lbnVDbGllbnQ7CisjZW5kaWYKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorICAg
ICAgICBzdGF0aWMgRHJhZ0NsaWVudCogZW1wdHlEcmFnQ2xpZW50ID0gbmV3IEVtcHR5RHJhZ0Ns
aWVudDsKKyAgICAgICAgcGFnZUNsaWVudHMuZHJhZ0NsaWVudCA9IGVtcHR5RHJhZ0NsaWVudDsK
KyNlbmRpZgorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgICAgIHN0YXRpYyBJbnNwZWN0b3JD
bGllbnQqIGVtcHR5SW5zcGVjdG9yQ2xpZW50ID0gbmV3IEVtcHR5SW5zcGVjdG9yQ2xpZW50Owor
ICAgICAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBlbXB0eUluc3BlY3RvckNsaWVu
dDsKKyNlbmRpZgorCisgICAgICAgIG1fcGFnZSA9IGFkb3B0UHRyKG5ldyBQYWdlKHBhZ2VDbGll
bnRzKSk7CisgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0U2NyaXB0RW5hYmxlZCh0cnVl
KTsKKyAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRBbGxvd1NjcmlwdHNUb0Nsb3NlV2lu
ZG93cyh0cnVlKTsKKworICAgICAgICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gRnJhbWU6OmNyZWF0
ZShtX3BhZ2UuZ2V0KCksIDAsCisgICAgICAgICAgICAgICAgZW1wdHlGcmFtZUxvYWRlckNsaWVu
dCk7CisgICAgICAgIGZyYW1lLT5zZXRWaWV3KEZyYW1lVmlldzo6Y3JlYXRlKGZyYW1lLmdldCgp
KSk7CisgICAgICAgIGZyYW1lLT5pbml0KCk7CisgICAgICAgIGZyYW1lLT52aWV3KCktPnJlc2l6
ZShtX2NsaWVudC0+Y29udGVudFNpemUoKSk7CisKKyAgICAgICAgQ1N0cmluZyBodG1sU291cmNl
ID0gbV9jbGllbnQtPmh0bWxTb3VyY2UoKS51dGY4KCk7CisgICAgICAgIERvY3VtZW50V3JpdGVy
KiB3cml0ZXIgPQorICAgICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9jdW1l
bnRMb2FkZXIoKS0+d3JpdGVyKCk7CisgICAgICAgIG1fY2xpZW50LT53cml0ZURvY3VtZW50KCp3
cml0ZXIpOworCisgICAgICAgIGluc3RhbGxEb21GdW5jdGlvbihmcmFtZS5nZXQoKSk7CisKKyAg
ICAgICAgd2VicGFnZS0+ZC0+c2V0UGFyZW50UG9wdXAodGhpcyk7CisKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYg
c2V0VmFsdWVBbmRDbG9zZVBvcHVwQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsCisgICAg
ICAgIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiwgc2l6ZV90IGFyZ3VtZW50Q291bnQsCisgICAg
ICAgIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqKQoreworICAgIEpT
VmFsdWVSZWYganNSZXRWYWwgPSBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICBp
ZiAoYXJndW1lbnRDb3VudCA8PSAwKQorICAgICAgICByZXR1cm4ganNSZXRWYWw7CisKKyAgICBK
U1N0cmluZ1JlZiBzdHJpbmcgPSBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50
c1swXSwgMCk7CisgICAgc2l6ZV90IHNpemVVVEY4ID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENT
dHJpbmdTaXplKHN0cmluZyk7CisgICAgY2hhciogc3RyQXJncyA9IG5ldyBjaGFyW3NpemVVVEY4
XTsKKyAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZywgc3RyQXJncywgc2l6ZVVURjgp
OworICAgIEpTU3RyaW5nUmVsZWFzZShzdHJpbmcpOworCisgICAgSlNPYmplY3RSZWYgcG9wVXBP
YmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwKKyAgICAgICAgICAgIGFyZ3VtZW50c1th
cmd1bWVudENvdW50IC0gMV0sIDApOworICAgIFBhZ2VQb3B1cENsaWVudCogY2xpZW50ID0KKyAg
ICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UGFnZVBvcHVwQ2xpZW50Kj4oSlNPYmplY3RHZXRQ
cml2YXRlKHBvcFVwT2JqZWN0KSk7CisKKyAgICBBU1NFUlQoY2xpZW50KTsKKyAgICBjbGllbnQt
PnNldFZhbHVlQW5kQ2xvc2VQb3B1cCgwLCBzdHJBcmdzKTsKKworICAgIGRlbGV0ZSBzdHJBcmdz
OworICAgIHJldHVybiBqc1JldFZhbDsKK30KKworc3RhdGljIHZvaWQgcG9wVXBFeHRlbnNpb25J
bml0aWFsaXplKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBvYmplY3QpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOworfQor
CitzdGF0aWMgdm9pZCBwb3BVcEV4dGVuc2lvbkZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkK
K3sKKyAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKK30KKworc3RhdGljIEpTU3RhdGljRnVuY3Rp
b24gcG9wVXBFeHRlbnNpb25TdGF0aWNGdW5jdGlvbnNbXSA9Cit7Cit7IDAsIDAsIDAgfSwKK3sg
MCwgMCwgMCB9Cit9OworCitzdGF0aWMgSlNTdGF0aWNWYWx1ZSBwb3BVcEV4dGVuc2lvblN0YXRp
Y1ZhbHVlc1tdID0KK3sKK3sgMCwgMCwgMCwgMCB9Cit9OworCit2b2lkIFdlYlBvcHVwSW1wbDo6
aW5zdGFsbERvbUZ1bmN0aW9uKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBKU0M6OkpTTG9jayBsb2Nr
KEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKworICAgIEpTRE9NV2luZG93KiB3aW5kb3cg
PSB0b0pTRE9NV2luZG93KGZyYW1lLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgQVNT
RVJUKHdpbmRvdyk7CisKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHdpbmRvdy0+Z2xvYmFs
RXhlYygpOworICAgIEFTU0VSVChleGVjKTsKKworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0g
Ojp0b1JlZihleGVjKTsKKyAgICBKU09iamVjdFJlZiBnbG9iYWxPYmplY3QgPSBKU0NvbnRleHRH
ZXRHbG9iYWxPYmplY3QoY29udGV4dCk7CisgICAgSlNTdHJpbmdSZWYgZnVuY3Rpb25OYW1lID0g
SlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoCisgICAgICAgICAgICAic2V0VmFsdWVBbmRD
bG9zZVBvcHVwIik7CisgICAgSlNPYmplY3RSZWYgZnVuY3Rpb24gPSBKU09iamVjdE1ha2VGdW5j
dGlvbldpdGhDYWxsYmFjayhjb250ZXh0LAorICAgICAgICAgICAgZnVuY3Rpb25OYW1lLCBzZXRW
YWx1ZUFuZENsb3NlUG9wdXBDYWxsYmFjayk7CisgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250
ZXh0LCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb24sCisgICAgICAgICAgICBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5LCAwKTsKKworICAgIC8vIFJlZ2lzdGVyIGNsaWVudCBpbnRvIERPTQorICAgIEpTQ2xhc3NE
ZWZpbml0aW9uIGRlZmluaXRpb24gPSBrSlNDbGFzc0RlZmluaXRpb25FbXB0eTsKKyAgICBkZWZp
bml0aW9uLnN0YXRpY1ZhbHVlcyA9IHBvcFVwRXh0ZW5zaW9uU3RhdGljVmFsdWVzOworICAgIGRl
ZmluaXRpb24uc3RhdGljRnVuY3Rpb25zID0gcG9wVXBFeHRlbnNpb25TdGF0aWNGdW5jdGlvbnM7
CisgICAgZGVmaW5pdGlvbi5pbml0aWFsaXplID0gcG9wVXBFeHRlbnNpb25Jbml0aWFsaXplOwor
ICAgIGRlZmluaXRpb24uZmluYWxpemUgPSBwb3BVcEV4dGVuc2lvbkZpbmFsaXplOworICAgIEpT
Q2xhc3NSZWYgY2xpZW50Q2xhc3MgPSBKU0NsYXNzQ3JlYXRlKCZkZWZpbml0aW9uKTsKKworICAg
IEpTT2JqZWN0UmVmIGNsaWVudENsYXNzT2JqZWN0ID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIGNs
aWVudENsYXNzLCAwKTsKKyAgICBKU09iamVjdFNldFByaXZhdGUoY2xpZW50Q2xhc3NPYmplY3Qs
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fY2xpZW50KSk7CisKKyAgICBKU0M6OlVTdHJpbmcg
bmFtZSgicG9wVXAiKTsKKworICAgIEpTQzo6UHV0UHJvcGVydHlTbG90IHNsb3Q7CisgICAgd2lu
ZG93LT5wdXQod2luZG93LCBleGVjLCBKU0M6OklkZW50aWZpZXIoZXhlYywgbmFtZSksCisgICAg
ICAgICAgICB0b0pTKGNsaWVudENsYXNzT2JqZWN0KSwgc2xvdCk7CisKKyAgICBKU0NsYXNzUmVs
ZWFzZShjbGllbnRDbGFzcyk7Cit9CisKK2Jvb2wgV2ViUG9wdXBJbXBsOjpoYW5kbGVNb3VzZUV2
ZW50KFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCit7CisgICAgaWYgKCFtX3BhZ2UtPm1haW5G
cmFtZSgpIHx8ICFtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHN3aXRjaCAoZXZlbnQudHlwZSgpKSB7CisgICAgY2FzZSBXZWJDb3JlOjpQ
bGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOgorICAgICAgICByZXR1cm4gbV9wYWdlLT5tYWluRnJh
bWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlTW92ZUV2ZW50KGV2ZW50KTsKKyAgICBj
YXNlIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDoKKyAgICAgICAgcmV0dXJu
IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVByZXNzRXZl
bnQoZXZlbnQpOworICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNl
ZDoKKyAgICAgICAgcmV0dXJuIG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5o
YW5kbGVNb3VzZVJlbGVhc2VFdmVudCgKKyAgICAgICAgICAgICAgICBldmVudCk7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordm9pZCBXZWJQb3B1cElt
cGw6OmNsb3NlUG9wdXAoKQoreworICAgIGNsb3NlV2ViUGFnZSgpOworICAgIG1fY2xpZW50LT5k
aWRDbG9zZVBvcHVwKCk7CisgICAgZGVsZXRlIG1fY2xpZW50OworICAgIG1fY2xpZW50ID0gMDsK
KyAgICBtX3dlYlBhZ2VQcml2YXRlLT5jbGllbnQoKS0+Y2xvc2VQb3B1cFdlYlZpZXcoKTsKK30K
Kwordm9pZCBXZWJQb3B1cEltcGw6OmNsb3NlV2ViUGFnZSgpCit7CisgICAgaWYgKG1fcGFnZSkg
eworICAgICAgICBtX3BhZ2UtPnNldEdyb3VwTmFtZShTdHJpbmcoKSk7CisgICAgICAgIG1fcGFn
ZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVycygpOworICAgICAgICBtX3Bh
Z2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+c3RvcExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3lO
b25lKTsKKyAgICAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT5jbGVhcigpOworICAg
IH0KKyAgICBtX3BhZ2UuY2xlYXIoKTsKK30KK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwSW1wbC5oIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwSW1wbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5YWEzY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBJbXBsLmgKQEAgLTAsMCAr
MSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBSZXNl
YXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBV
U0EKKyAqLworCisjaWZuZGVmIFdlYlBvcHVwSW1wbF9oCisjZGVmaW5lIFdlYlBvcHVwSW1wbF9o
CisKKworI2luY2x1ZGUgIkVtcHR5Q2xpZW50cy5oIgorCisjaW5jbHVkZSAiSW50UmVjdC5oIgor
I2luY2x1ZGUgIlBhZ2VQb3B1cC5oIgorI2luY2x1ZGUgIldpZGdldC5oIgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNPYmplY3RSZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1Jl
Zi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWVSZWYuaD4KKworbmFtZXNwYWNl
IEJsYWNrQmVycnkgeworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJQYWdlUHJpdmF0ZTsK
K30KK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCYXNlQ2hyb21lQ2xpZW50Owor
Y2xhc3MgUGFnZVBvcHVwQ2hyb21lQ2xpZW50OworY2xhc3MgUGFnZVBvcHVwQ2xpZW50OworY2xh
c3MgUGxhdGZvcm1Nb3VzZUV2ZW50OworCitjbGFzcyBXZWJQb3B1cEltcGw6IHB1YmxpYyBQYWdl
UG9wdXAgeworcHVibGljOgorICAgIFdlYlBvcHVwSW1wbChCbGFja0JlcnJ5OjpXZWJLaXQ6Oldl
YlBhZ2VQcml2YXRlKiwgUGFnZVBvcHVwQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIH5X
ZWJQb3B1cEltcGwoKTsKKworICAgIHZvaWQgc2VuZENyZWF0ZVBvcHVwV2ViVmlld1JlcXVlc3Qo
KTsKKyAgICBib29sIGluaXQoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKik7CisgICAgdm9p
ZCBjbG9zZVBvcHVwKCk7CisgICAgdm9pZCBpbnN0YWxsRG9tRnVuY3Rpb24oRnJhbWUqKTsKKyAg
ICB2b2lkIHNldFJlY3QoKTsKKyAgICB2b2lkIGNsb3NlV2ViUGFnZSgpOworCisgICAgYm9vbCBo
YW5kbGVNb3VzZUV2ZW50KFBsYXRmb3JtTW91c2VFdmVudCYpOworCisKK3ByaXZhdGU6CisgICAg
QmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZSogbV93ZWJQYWdlUHJpdmF0ZTsKKyAg
ICBQYWdlUG9wdXBDbGllbnQqIG1fY2xpZW50OworICAgIEludFJlY3QgbV9yZWN0OworICAgIE93
blB0cjxXZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CisgICAgT3duUHRyPFBhZ2VQb3B1cENocm9tZUNs
aWVudD4gbV9jaHJvbWVDbGllbnQ7CisKKyAgICBmcmllbmQgY2xhc3MgUGFnZVBvcHVwQ2hyb21l
Q2xpZW50OworfTsKKworfQorCisjZW5kaWYgLy8gV2ViUG9wdXBJbXBsX2gKLS0gCjEuNy4xMC4x
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140351</attachid>
            <date>2012-05-04 16:08:49 -0700</date>
            <delta_ts>2012-05-07 14:12:36 -0700</delta_ts>
            <desc>fix style</desc>
            <filename>0001-2012-05-04-Crystal-Zhang-haizhang-rim.com.patch</filename>
            <type>text/plain</type>
            <size>15332</size>
            <attacher name="Crystal Zhang">haizhang</attacher>
            
              <data encoding="base64">RnJvbSA1ZmZlZjRkNjY2NmVmNDQ5Y2FkZWM0M2FmODQ0NTFhZTZlNjQzZGQxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDcnlzdGFsIFpoYW5nIDxoYWl6aGFuZ0ByaW0uY29tPgpEYXRl
OiBGcmksIDQgTWF5IDIwMTIgMTc6NDM6NTMgLTA0MDAKU3ViamVjdDogW1BBVENIXSAyMDEyLTA1
LTA0ICBDcnlzdGFsIFpoYW5nICA8aGFpemhhbmdAcmltLmNvbT4KCiAgICAgICAgW0JsYWNrQmVy
cnldIEltcGxlbWVudCBhIHBvcHVwIGNsaWVudCBmb3IgSFRNTCBjb250cm9scwogICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTY3MAoKICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQb3B1
cEltcGwuY3BwOiBBZGRlZC4KICAgICAgICAoV2ViQ29yZSk6CiAgICAgICAgKFdlYkNvcmU6Oldl
YlBvcHVwSW1wbDo6V2ViUG9wdXBJbXBsKToKICAgICAgICAoV2ViQ29yZTo6V2ViUG9wdXBJbXBs
Ojp+V2ViUG9wdXBJbXBsKToKICAgICAgICAoV2ViQ29yZTo6V2ViUG9wdXBJbXBsOjpzZW5kQ3Jl
YXRlUG9wdXBXZWJWaWV3UmVxdWVzdCk6CiAgICAgICAgKFdlYkNvcmU6OldlYlBvcHVwSW1wbDo6
aW5pdCk6CiAgICAgICAgKFdlYkNvcmU6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cENhbGxiYWNrKToK
ICAgICAgICAoV2ViQ29yZTo6cG9wVXBFeHRlbnNpb25Jbml0aWFsaXplKToKICAgICAgICAoV2Vi
Q29yZTo6cG9wVXBFeHRlbnNpb25GaW5hbGl6ZSk6CiAgICAgICAgKFdlYkNvcmU6OldlYlBvcHVw
SW1wbDo6aW5zdGFsbERvbUZ1bmN0aW9uKToKICAgICAgICAoV2ViQ29yZTo6V2ViUG9wdXBJbXBs
OjpoYW5kbGVNb3VzZUV2ZW50KToKICAgICAgICAoV2ViQ29yZTo6V2ViUG9wdXBJbXBsOjpjbG9z
ZVBvcHVwKToKICAgICAgICAoV2ViQ29yZTo6V2ViUG9wdXBJbXBsOjpjbG9zZVdlYlBhZ2UpOgog
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBJbXBsLmg6IEFkZGVkLgogICAgICAgIChX
ZWJLaXQpOgogICAgICAgIChXZWJDb3JlKToKICAgICAgICAqIFBsYXRmb3JtQmxhY2tCZXJyeS5j
bWFrZToKLS0tCiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgIDkgKwogU291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UgICAg
ICAgICAgICAgfCAgICAzICsKIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgIHwgICAyNCArKwogLi4uL2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvV2Vi
UG9wdXBJbXBsLmNwcCAgICAgfCAgMjY2ICsrKysrKysrKysrKysrKysrKysrCiAuLi4vYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cEltcGwuaCAgICAgICB8ICAgNzMgKysrKysrCiA1
IGZpbGVzIGNoYW5nZWQsIDM3NSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwSW1wbC5jcHAKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
V2ViUG9wdXBJbXBsLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYzNTBiODIuLjgzMTAzMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTItMDUtMDQgIENyeXN0YWwgWmhhbmcgIDxoYWl6aGFuZ0ByaW0u
Y29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBJbXBsZW1lbnQgYSBwb3B1cCBjbGllbnQgZm9y
IEhUTUwgY29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg1NjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybUJsYWNrQmVycnkuY21ha2U6CisKIDIwMTItMDQtMjAgIE1pa2UgTGF0
dGFuemlvICA8bWxhdHRhbnppb0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBFeHBv
c2UgV2ViVmlld3BvcnRBcmd1bWVudHMgdG8gV2ViUGFnZUNsaWVudApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtQmxhY2tCZXJyeS5jbWFrZQppbmRleCBhNTRmZTZmLi41MDMwNDhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQpAQCAtMyw2ICszLDcgQEAgTElTVChJTlNFUlQgV2Vi
S2l0X0lOQ0xVREVfRElSRUNUT1JJRVMgMAogICAgICIke0JMQUNLQkVSUllfVEhJUkRfUEFSVFlf
RElSfS9pY3UiCiApCiAKKwogTElTVChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMK
ICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9Ly4uIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vZGZnIgpAQCAtNzYsNiArNzcsOCBAQCBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAg
IGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvSmF2YVNjcmlwdERlYnVnZ2VyQmxhY2tCZXJyeS5j
cHAKICAgICBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlcklt
cGwuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9WaWJyYXRpb25DbGllbnRCbGFj
a0JlcnJ5LmNwcAorICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBJbXBsLmNw
cAorCiAgICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZUNvbXBvc2l0aW5n
U3VyZmFjZS5jcHAKICAgICBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQmFja2luZ1N0b3JlVGls
ZS5jcHAKICAgICBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQmFja2luZ1N0b3JlQ2xpZW50LmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggMWY3OWFhOS4uYjYzYmEzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDUtMDQg
IENyeXN0YWwgWmhhbmcgIDxoYWl6aGFuZ0ByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5
XSBJbXBsZW1lbnQgYSBwb3B1cCBjbGllbnQgZm9yIEhUTUwgY29udHJvbHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NjcwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQ
b3B1cEltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViUG9wdXBJbXBsOjpXZWJQb3B1cEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUG9w
dXBJbXBsOjp+V2ViUG9wdXBJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBvcHVwSW1wbDo6
c2VuZENyZWF0ZVBvcHVwV2ViVmlld1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViUG9w
dXBJbXBsOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cENh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OnBvcFVwRXh0ZW5zaW9uSW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwb3BVcEV4dGVuc2lvbkZpbmFsaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlBvcHVwSW1wbDo6aW5zdGFsbERvbUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlBvcHVwSW1wbDo6aGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQ
b3B1cEltcGw6OmNsb3NlUG9wdXApOgorICAgICAgICAoV2ViQ29yZTo6V2ViUG9wdXBJbXBsOjpj
bG9zZVdlYlBhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBvcHVwSW1wbC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wNS0w
MyAgTWlrZSBGZW50b24gIDxtaWZlbnRvbkByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5
XSBBZGQgc3BlY2lhbCBhdHRyaWJ1dGUgZm9yIGFsdGVybmF0ZSBzZWxlY3Rpb24gdG91Y2ggaGFu
ZGxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvV2ViUG9wdXBJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9XZWJQb3B1cEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmQ5NDgwYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
Q29yZVN1cHBvcnQvV2ViUG9wdXBJbXBsLmNwcApAQCAtMCwwICsxLDI2NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiV2ViUG9wdXBJbXBsLmgiCisKKyNpbmNsdWRlICJCYWNraW5nU3Rv
cmVDbGllbnQuaCIKKyNpbmNsdWRlICJCYWNraW5nU3RvcmVfcC5oIgorI2luY2x1ZGUgIkNocm9t
ZUNsaWVudEJsYWNrQmVycnkuaCIKKyNpbmNsdWRlICJFbXB0eUNsaWVudHMuaCIKKyNpbmNsdWRl
ICJGcmFtZUxvYWRSZXF1ZXN0LmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJyeS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgor
I2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgorI2luY2x1ZGUgIkpTTG9jay5oIgorI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNSZXRhaW5QdHIuaCIKKworI2luY2x1ZGUgIlBh
Z2UuaCIKKyNpbmNsdWRlICJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJQYWdlR3JvdXBMb2FkRGVm
ZXJyZXIuaCIKKyNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bU1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYlBhZ2Uu
aCIKKyNpbmNsdWRlICJXZWJQYWdlX3AuaCIKKyNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgor
CisjZGVmaW5lIHVybGJhckhlaWdodCA3MAorCit1c2luZyBuYW1lc3BhY2UgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkdyYXBoaWNzOwordXNpbmcgbmFtZXNwYWNlIEJsYWNrQmVycnk6OldlYktpdDsK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGFnZVBvcHVwQ2hyb21lQ2xpZW50OiBwdWJs
aWMgQ2hyb21lQ2xpZW50QmxhY2tCZXJyeSB7CisKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQYWdl
UG9wdXBDaHJvbWVDbGllbnQoV2ViUGFnZVByaXZhdGUqIHdlYnBhZ2UsIFdlYlBvcHVwSW1wbCog
cG9wdXApIDoKKyAgICAgICAgICAgIENocm9tZUNsaWVudEJsYWNrQmVycnkod2VicGFnZSksIG1f
cG9wdXAocG9wdXApLCBtX3dlYlBhZ2Uod2VicGFnZSksIG1fcmVjdCgKKyAgICAgICAgICAgICAg
ICAgICAgMCwgMCwgMCwgMCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNsb3Nl
V2luZG93U29vbigpCisgICAgeworICAgICAgICBtX3BvcHVwLT5jbG9zZVBvcHVwKCk7CisgICAg
fQorCisgICAgV2ViUGFnZVByaXZhdGUqIHdlYlBhZ2UoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fd2ViUGFnZTsKKyAgICB9CisKKyAgICBXZWJQb3B1cEltcGwqIG1fcG9wdXA7CisgICAgV2Vi
UGFnZVByaXZhdGUqIG1fd2ViUGFnZTsKKyAgICBJbnRSZWN0IG1fcmVjdDsKK307CisKK1dlYlBv
cHVwSW1wbDo6V2ViUG9wdXBJbXBsKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGUq
IHdlYlBhZ2UsCisgICAgICAgIFBhZ2VQb3B1cENsaWVudCogY2xpZW50LCBjb25zdCBJbnRSZWN0
JiByZWN0KSA6CisgICAgICAgIG1fd2ViUGFnZVByaXZhdGUod2ViUGFnZSksIG1fY2xpZW50KGNs
aWVudCkKK3sKKyAgICBtX3JlY3QgPSBJbnRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSAtIHVybGJh
ckhlaWdodCwKKyAgICAgICAgICAgIGNsaWVudC0+Y29udGVudFNpemUoKS53aWR0aCgpLCBjbGll
bnQtPmNvbnRlbnRTaXplKCkuaGVpZ2h0KCkpOworCit9CisKK1dlYlBvcHVwSW1wbDo6fldlYlBv
cHVwSW1wbCgpCit7Cit9CisKK3ZvaWQgV2ViUG9wdXBJbXBsOjpzZW5kQ3JlYXRlUG9wdXBXZWJW
aWV3UmVxdWVzdCgpCit7CisgICAgbV93ZWJQYWdlUHJpdmF0ZS0+Y2xpZW50KCktPmNyZWF0ZVBv
cHVwV2ViVmlldyhtX3JlY3QpOworfQorCitib29sIFdlYlBvcHVwSW1wbDo6aW5pdChXZWJQYWdl
KiB3ZWJwYWdlKQoreworICAgIGlmICh3ZWJwYWdlKSB7CisgICAgICAgIHN0YXRpYyBGcmFtZUxv
YWRlckNsaWVudCogZW1wdHlGcmFtZUxvYWRlckNsaWVudCA9CisgICAgICAgICAgICAgICAgbmV3
IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ7CisgICAgICAgIFBhZ2U6OlBhZ2VDbGllbnRzIHBhZ2VD
bGllbnRzOworICAgICAgICBtX2Nocm9tZUNsaWVudCA9IGFkb3B0UHRyKG5ldyBQYWdlUG9wdXBD
aHJvbWVDbGllbnQod2VicGFnZS0+ZCwgdGhpcykpOworICAgICAgICBzdGF0aWMgRWRpdG9yQ2xp
ZW50KiBlbXB0eUVkaXRvckNsaWVudCA9IG5ldyBFbXB0eUVkaXRvckNsaWVudDsKKyAgICAgICAg
cGFnZUNsaWVudHMuY2hyb21lQ2xpZW50ID0gbV9jaHJvbWVDbGllbnQuZ2V0KCk7CisgICAgICAg
IHBhZ2VDbGllbnRzLmVkaXRvckNsaWVudCA9IGVtcHR5RWRpdG9yQ2xpZW50OworI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQorICAgICAgICBzdGF0aWMgQ29udGV4dE1lbnVDbGllbnQqIGVtcHR5
Q29udGV4dE1lbnVDbGllbnQgPQorICAgICAgICAgICAgICAgIG5ldyBFbXB0eUNvbnRleHRNZW51
Q2xpZW50OworICAgICAgICBwYWdlQ2xpZW50cy5jb250ZXh0TWVudUNsaWVudCA9IGVtcHR5Q29u
dGV4dE1lbnVDbGllbnQ7CisjZW5kaWYKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorICAgICAg
ICBzdGF0aWMgRHJhZ0NsaWVudCogZW1wdHlEcmFnQ2xpZW50ID0gbmV3IEVtcHR5RHJhZ0NsaWVu
dDsKKyAgICAgICAgcGFnZUNsaWVudHMuZHJhZ0NsaWVudCA9IGVtcHR5RHJhZ0NsaWVudDsKKyNl
bmRpZgorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgICAgIHN0YXRpYyBJbnNwZWN0b3JDbGll
bnQqIGVtcHR5SW5zcGVjdG9yQ2xpZW50ID0gbmV3IEVtcHR5SW5zcGVjdG9yQ2xpZW50OworICAg
ICAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBlbXB0eUluc3BlY3RvckNsaWVudDsK
KyNlbmRpZgorCisgICAgICAgIG1fcGFnZSA9IGFkb3B0UHRyKG5ldyBQYWdlKHBhZ2VDbGllbnRz
KSk7CisgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsK
KyAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRBbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93
cyh0cnVlKTsKKworICAgICAgICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gRnJhbWU6OmNyZWF0ZSht
X3BhZ2UuZ2V0KCksIDAsCisgICAgICAgICAgICAgICAgZW1wdHlGcmFtZUxvYWRlckNsaWVudCk7
CisgICAgICAgIGZyYW1lLT5zZXRWaWV3KEZyYW1lVmlldzo6Y3JlYXRlKGZyYW1lLmdldCgpKSk7
CisgICAgICAgIGZyYW1lLT5pbml0KCk7CisgICAgICAgIGZyYW1lLT52aWV3KCktPnJlc2l6ZSht
X2NsaWVudC0+Y29udGVudFNpemUoKSk7CisKKyAgICAgICAgQ1N0cmluZyBodG1sU291cmNlID0g
bV9jbGllbnQtPmh0bWxTb3VyY2UoKS51dGY4KCk7CisgICAgICAgIERvY3VtZW50V3JpdGVyKiB3
cml0ZXIgPQorICAgICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRM
b2FkZXIoKS0+d3JpdGVyKCk7CisgICAgICAgIG1fY2xpZW50LT53cml0ZURvY3VtZW50KCp3cml0
ZXIpOworCisgICAgICAgIGluc3RhbGxEb21GdW5jdGlvbihmcmFtZS5nZXQoKSk7CisKKyAgICAg
ICAgd2VicGFnZS0+ZC0+c2V0UGFyZW50UG9wdXAodGhpcyk7CisKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgc2V0
VmFsdWVBbmRDbG9zZVBvcHVwQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsCisgICAgICAg
IEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiwgc2l6ZV90IGFyZ3VtZW50Q291bnQsCisgICAgICAg
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqKQoreworICAgIEpTVmFs
dWVSZWYganNSZXRWYWwgPSBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICBpZiAo
YXJndW1lbnRDb3VudCA8PSAwKQorICAgICAgICByZXR1cm4ganNSZXRWYWw7CisKKyAgICBKU1N0
cmluZ1JlZiBzdHJpbmcgPSBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1sw
XSwgMCk7CisgICAgc2l6ZV90IHNpemVVVEY4ID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJp
bmdTaXplKHN0cmluZyk7CisgICAgY2hhciogc3RyQXJncyA9IG5ldyBjaGFyW3NpemVVVEY4XTsK
KyAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZywgc3RyQXJncywgc2l6ZVVURjgpOwor
ICAgIEpTU3RyaW5nUmVsZWFzZShzdHJpbmcpOworCisgICAgSlNPYmplY3RSZWYgcG9wVXBPYmpl
Y3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwKKyAgICAgICAgICAgIGFyZ3VtZW50c1thcmd1
bWVudENvdW50IC0gMV0sIDApOworICAgIFBhZ2VQb3B1cENsaWVudCogY2xpZW50ID0KKyAgICAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UGFnZVBvcHVwQ2xpZW50Kj4oSlNPYmplY3RHZXRQcml2
YXRlKHBvcFVwT2JqZWN0KSk7CisKKyAgICBBU1NFUlQoY2xpZW50KTsKKyAgICBjbGllbnQtPnNl
dFZhbHVlQW5kQ2xvc2VQb3B1cCgwLCBzdHJBcmdzKTsKKworICAgIGRlbGV0ZSBzdHJBcmdzOwor
ICAgIHJldHVybiBqc1JldFZhbDsKK30KKworc3RhdGljIHZvaWQgcG9wVXBFeHRlbnNpb25Jbml0
aWFsaXplKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBvYmplY3QpCit7CisgICAg
VU5VU0VEX1BBUkFNKGNvbnRleHQpOworICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOworfQorCitz
dGF0aWMgdm9pZCBwb3BVcEV4dGVuc2lvbkZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKK3sK
KyAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKK30KKworc3RhdGljIEpTU3RhdGljRnVuY3Rpb24g
cG9wVXBFeHRlbnNpb25TdGF0aWNGdW5jdGlvbnNbXSA9Cit7Cit7IDAsIDAsIDAgfSwKK3sgMCwg
MCwgMCB9Cit9OworCitzdGF0aWMgSlNTdGF0aWNWYWx1ZSBwb3BVcEV4dGVuc2lvblN0YXRpY1Zh
bHVlc1tdID0KK3sKK3sgMCwgMCwgMCwgMCB9Cit9OworCit2b2lkIFdlYlBvcHVwSW1wbDo6aW5z
dGFsbERvbUZ1bmN0aW9uKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBKU0M6OkpTTG9jayBsb2NrKEpT
Qzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKworICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSB0
b0pTRE9NV2luZG93KGZyYW1lLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgQVNTRVJU
KHdpbmRvdyk7CisKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHdpbmRvdy0+Z2xvYmFsRXhl
YygpOworICAgIEFTU0VSVChleGVjKTsKKworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gOjp0
b1JlZihleGVjKTsKKyAgICBKU09iamVjdFJlZiBnbG9iYWxPYmplY3QgPSBKU0NvbnRleHRHZXRH
bG9iYWxPYmplY3QoY29udGV4dCk7CisgICAgSlNTdHJpbmdSZWYgZnVuY3Rpb25OYW1lID0gSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoCisgICAgICAgICAgICAic2V0VmFsdWVBbmRDbG9z
ZVBvcHVwIik7CisgICAgSlNPYmplY3RSZWYgZnVuY3Rpb24gPSBKU09iamVjdE1ha2VGdW5jdGlv
bldpdGhDYWxsYmFjayhjb250ZXh0LAorICAgICAgICAgICAgZnVuY3Rpb25OYW1lLCBzZXRWYWx1
ZUFuZENsb3NlUG9wdXBDYWxsYmFjayk7CisgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0
LCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb24sCisgICAgICAgICAgICBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
LCAwKTsKKworICAgIC8vIFJlZ2lzdGVyIGNsaWVudCBpbnRvIERPTQorICAgIEpTQ2xhc3NEZWZp
bml0aW9uIGRlZmluaXRpb24gPSBrSlNDbGFzc0RlZmluaXRpb25FbXB0eTsKKyAgICBkZWZpbml0
aW9uLnN0YXRpY1ZhbHVlcyA9IHBvcFVwRXh0ZW5zaW9uU3RhdGljVmFsdWVzOworICAgIGRlZmlu
aXRpb24uc3RhdGljRnVuY3Rpb25zID0gcG9wVXBFeHRlbnNpb25TdGF0aWNGdW5jdGlvbnM7Cisg
ICAgZGVmaW5pdGlvbi5pbml0aWFsaXplID0gcG9wVXBFeHRlbnNpb25Jbml0aWFsaXplOworICAg
IGRlZmluaXRpb24uZmluYWxpemUgPSBwb3BVcEV4dGVuc2lvbkZpbmFsaXplOworICAgIEpTQ2xh
c3NSZWYgY2xpZW50Q2xhc3MgPSBKU0NsYXNzQ3JlYXRlKCZkZWZpbml0aW9uKTsKKworICAgIEpT
T2JqZWN0UmVmIGNsaWVudENsYXNzT2JqZWN0ID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIGNsaWVu
dENsYXNzLCAwKTsKKyAgICBKU09iamVjdFNldFByaXZhdGUoY2xpZW50Q2xhc3NPYmplY3QsIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fY2xpZW50KSk7CisKKyAgICBKU0M6OlVTdHJpbmcgbmFt
ZSgicG9wVXAiKTsKKworICAgIEpTQzo6UHV0UHJvcGVydHlTbG90IHNsb3Q7CisgICAgd2luZG93
LT5wdXQod2luZG93LCBleGVjLCBKU0M6OklkZW50aWZpZXIoZXhlYywgbmFtZSksCisgICAgICAg
ICAgICB0b0pTKGNsaWVudENsYXNzT2JqZWN0KSwgc2xvdCk7CisKKyAgICBKU0NsYXNzUmVsZWFz
ZShjbGllbnRDbGFzcyk7Cit9CisKK2Jvb2wgV2ViUG9wdXBJbXBsOjpoYW5kbGVNb3VzZUV2ZW50
KFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCit7CisgICAgaWYgKCFtX3BhZ2UtPm1haW5GcmFt
ZSgpIHx8ICFtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHN3aXRjaCAoZXZlbnQudHlwZSgpKSB7CisgICAgY2FzZSBXZWJDb3JlOjpQbGF0
Zm9ybUV2ZW50OjpNb3VzZU1vdmVkOgorICAgICAgICByZXR1cm4gbV9wYWdlLT5tYWluRnJhbWUo
KS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlTW92ZUV2ZW50KGV2ZW50KTsKKyAgICBjYXNl
IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vdXNlUHJlc3NlZDoKKyAgICAgICAgcmV0dXJuIG1f
cGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVByZXNzRXZlbnQo
ZXZlbnQpOworICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TW91c2VSZWxlYXNlZDoK
KyAgICAgICAgcmV0dXJuIG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5k
bGVNb3VzZVJlbGVhc2VFdmVudCgKKyAgICAgICAgICAgICAgICBldmVudCk7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordm9pZCBXZWJQb3B1cEltcGw6
OmNsb3NlUG9wdXAoKQoreworICAgIGNsb3NlV2ViUGFnZSgpOworICAgIG1fY2xpZW50LT5kaWRD
bG9zZVBvcHVwKCk7CisgICAgZGVsZXRlIG1fY2xpZW50OworICAgIG1fY2xpZW50ID0gMDsKKyAg
ICBtX3dlYlBhZ2VQcml2YXRlLT5jbGllbnQoKS0+Y2xvc2VQb3B1cFdlYlZpZXcoKTsKK30KKwor
dm9pZCBXZWJQb3B1cEltcGw6OmNsb3NlV2ViUGFnZSgpCit7CisgICAgaWYgKG1fcGFnZSkgewor
ICAgICAgICBtX3BhZ2UtPnNldEdyb3VwTmFtZShTdHJpbmcoKSk7CisgICAgICAgIG1fcGFnZS0+
bWFpbkZyYW1lKCktPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVycygpOworICAgICAgICBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+c3RvcExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3lOb25l
KTsKKyAgICAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT5jbGVhcigpOworICAgIH0K
KyAgICBtX3BhZ2UuY2xlYXIoKTsKK30KK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwSW1wbC5oIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjk5YWEzY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBJbXBsLmgKQEAgLTAsMCArMSw3
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu
b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EK
KyAqLworCisjaWZuZGVmIFdlYlBvcHVwSW1wbF9oCisjZGVmaW5lIFdlYlBvcHVwSW1wbF9oCisK
KworI2luY2x1ZGUgIkVtcHR5Q2xpZW50cy5oIgorCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2lu
Y2x1ZGUgIlBhZ2VQb3B1cC5oIgorI2luY2x1ZGUgIldpZGdldC5oIgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNPYmplY3RSZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWVSZWYuaD4KKworbmFtZXNwYWNlIEJs
YWNrQmVycnkgeworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJQYWdlUHJpdmF0ZTsKK30K
K30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCYXNlQ2hyb21lQ2xpZW50OworY2xh
c3MgUGFnZVBvcHVwQ2hyb21lQ2xpZW50OworY2xhc3MgUGFnZVBvcHVwQ2xpZW50OworY2xhc3Mg
UGxhdGZvcm1Nb3VzZUV2ZW50OworCitjbGFzcyBXZWJQb3B1cEltcGw6IHB1YmxpYyBQYWdlUG9w
dXAgeworcHVibGljOgorICAgIFdlYlBvcHVwSW1wbChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBh
Z2VQcml2YXRlKiwgUGFnZVBvcHVwQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIH5XZWJQ
b3B1cEltcGwoKTsKKworICAgIHZvaWQgc2VuZENyZWF0ZVBvcHVwV2ViVmlld1JlcXVlc3QoKTsK
KyAgICBib29sIGluaXQoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKik7CisgICAgdm9pZCBj
bG9zZVBvcHVwKCk7CisgICAgdm9pZCBpbnN0YWxsRG9tRnVuY3Rpb24oRnJhbWUqKTsKKyAgICB2
b2lkIHNldFJlY3QoKTsKKyAgICB2b2lkIGNsb3NlV2ViUGFnZSgpOworCisgICAgYm9vbCBoYW5k
bGVNb3VzZUV2ZW50KFBsYXRmb3JtTW91c2VFdmVudCYpOworCisKK3ByaXZhdGU6CisgICAgQmxh
Y2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZSogbV93ZWJQYWdlUHJpdmF0ZTsKKyAgICBQ
YWdlUG9wdXBDbGllbnQqIG1fY2xpZW50OworICAgIEludFJlY3QgbV9yZWN0OworICAgIE93blB0
cjxXZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CisgICAgT3duUHRyPFBhZ2VQb3B1cENocm9tZUNsaWVu
dD4gbV9jaHJvbWVDbGllbnQ7CisKKyAgICBmcmllbmQgY2xhc3MgUGFnZVBvcHVwQ2hyb21lQ2xp
ZW50OworfTsKKworfQorCisjZW5kaWYgLy8gV2ViUG9wdXBJbXBsX2gKLS0gCjEuNy4xMC4xCgo=
</data>
<flag name="review"
          id="146182"
          type_id="1"
          status="-"
          setter="rwlbuis"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140589</attachid>
            <date>2012-05-07 14:12:36 -0700</date>
            <delta_ts>2012-05-08 11:45:15 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>0001-2012-05-07-Crystal-Zhang-haizhang-rim.com.patch</filename>
            <type>text/plain</type>
            <size>15554</size>
            <attacher name="Crystal Zhang">haizhang</attacher>
            
              <data encoding="base64">RnJvbSA4YjE0OTMzYWRmNWVmNDUzNGE0ZWQyMWUyMjhjYjljNDc3M2UxYzY5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDcnlzdGFsIFpoYW5nIDxoYWl6aGFuZ0ByaW0uY29tPgpEYXRl
OiBNb24sIDcgTWF5IDIwMTIgMTc6MTA6MTYgLTA0MDAKU3ViamVjdDogW1BBVENIXSAyMDEyLTA1
LTA3ICBDcnlzdGFsIFpoYW5nICA8aGFpemhhbmdAcmltLmNvbT4KCiAgICAgICAgW0JsYWNrQmVy
cnldIEltcGxlbWVudCBhIHBvcHVwIGNsaWVudCBmb3IgSFRNTCBjb250cm9scwogICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTY3MAoKICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgSW1wbGVtZW50IGEgcG9wdXAgY2xpZW50
IGZvciBIVE1MIGNvbnRyb2xzLCB3aGljaCB3b3VsZCBiZSB1c2VkIHRvIGxvYWQKICAgICAgICBk
aWZmZXJlbnQgcG9wdXBzIGFjY29yZGluZyB0byBwb3B1cCB0eXBlLgoKICAgICAgICBBZGQgcG9w
dXAgY2xpZW50IGZpbGUgdG8gYnVpbGQgc3lzdGVtLgoKICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYlBvcHVwSW1wbC5jcHA6IEFkZGVkLgogICAgICAgIChXZWJDb3JlKToKICAgICAgICAoUGFn
ZVBvcHVwQ2hyb21lQ2xpZW50KToKICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQ2hyb21lQ2xp
ZW50OjpQYWdlUG9wdXBDaHJvbWVDbGllbnQpOgogICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBD
aHJvbWVDbGllbnQ6OmNsb3NlV2luZG93U29vbik6CiAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1
cENocm9tZUNsaWVudDo6d2ViUGFnZSk6CiAgICAgICAgKFdlYkNvcmU6OldlYlBvcHVwSW1wbDo6
V2ViUG9wdXBJbXBsKToKICAgICAgICAoV2ViQ29yZTo6V2ViUG9wdXBJbXBsOjp+V2ViUG9wdXBJ
bXBsKToKICAgICAgICAoV2ViQ29yZTo6V2ViUG9wdXBJbXBsOjpzZW5kQ3JlYXRlUG9wdXBXZWJW
aWV3UmVxdWVzdCk6CiAgICAgICAgKFdlYkNvcmU6OldlYlBvcHVwSW1wbDo6aW5pdCk6CiAgICAg
ICAgKFdlYkNvcmU6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cENhbGxiYWNrKToKICAgICAgICAoV2Vi
Q29yZTo6cG9wVXBFeHRlbnNpb25Jbml0aWFsaXplKToKICAgICAgICAoV2ViQ29yZTo6cG9wVXBF
eHRlbnNpb25GaW5hbGl6ZSk6CiAgICAgICAgKFdlYkNvcmU6OldlYlBvcHVwSW1wbDo6aW5zdGFs
bERvbUZ1bmN0aW9uKToKICAgICAgICAoV2ViQ29yZTo6V2ViUG9wdXBJbXBsOjpoYW5kbGVNb3Vz
ZUV2ZW50KToKICAgICAgICAoV2ViQ29yZTo6V2ViUG9wdXBJbXBsOjpjbG9zZVBvcHVwKToKICAg
ICAgICAoV2ViQ29yZTo6V2ViUG9wdXBJbXBsOjpjbG9zZVdlYlBhZ2UpOgogICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViUG9wdXBJbXBsLmg6IEFkZGVkLgogICAgICAgIChXZWJLaXQpOgogICAg
ICAgIChXZWJDb3JlKToKICAgICAgICAoV2ViUG9wdXBJbXBsKToKICAgICAgICAqIFBsYXRmb3Jt
QmxhY2tCZXJyeS5jbWFrZToKLS0tCiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMTEgKwogU291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVy
cnkuY21ha2UgICAgICAgICAgICAgfCAgICAxICsKIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgIHwgICAzMiArKysKIC4uLi9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L1dlYlBvcHVwSW1wbC5jcHAgICAgIHwgIDI2MSArKysrKysrKysrKysrKysrKysr
KwogLi4uL2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBJbXBsLmggICAgICAgfCAg
IDY3ICsrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDM3MiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVw
SW1wbC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
Q29yZVN1cHBvcnQvV2ViUG9wdXBJbXBsLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVjN2RhZmMuLjU5MjMwZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDUtMDcgIENyeXN0YWwgWmhhbmcgIDxi
bHVlYmVsbHpoeUBnbWFpbC5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIEltcGxlbWVudCBh
IHBvcHVwIGNsaWVudCBmb3IgSFRNTCBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU2NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKyAgICAgICAKKyAgICAgICAgQWRkIHBvcHVwIGNsaWVudCBmaWxlIHRvIGJ1
aWxkIHN5c3RlbS4KKworICAgICAgICAqIFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZToKKwogMjAx
Mi0wNS0wMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3Zl
IFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciBpbnRvIGl0cyBvd24gZmlsZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKaW5kZXggZmNmZjljYi4uNDIxZmE1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKQEAgLTc0LDYgKzc0LDcgQEAgTElTVChBUFBF
TkQgV2ViS2l0X1NPVVJDRVMKICAgICBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0phdmFTY3Jp
cHREZWJ1Z2dlckJsYWNrQmVycnkuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9O
b3RpZmljYXRpb25QcmVzZW50ZXJJbXBsLmNwcAogICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvVmlicmF0aW9uQ2xpZW50QmxhY2tCZXJyeS5jcHAKKyAgICBibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L1dlYlBvcHVwSW1wbC5jcHAKICAgICBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQmFj
a2luZ1N0b3JlQ29tcG9zaXRpbmdTdXJmYWNlLmNwcAogICAgIGJsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9CYWNraW5nU3RvcmVUaWxlLmNwcAogICAgIGJsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9C
YWNraW5nU3RvcmVDbGllbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCAw
MmIyZDQ0Li5hOTVjOWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSwzNyBAQAogMjAxMi0wNS0wNyAgQ3J5c3RhbCBaaGFuZyAgPGhhaXpoYW5nQHJpbS5jb20+CiAK
KyAgICAgICAgW0JsYWNrQmVycnldIEltcGxlbWVudCBhIHBvcHVwIGNsaWVudCBmb3IgSFRNTCBj
b250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODU2NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnQgYSBwb3B1cCBjbGllbnQgZm9yIEhUTUwgY29udHJvbHMsIHdoaWNoIHdvdWxkIGJl
IHVzZWQgdG8gbG9hZCAKKyAgICAgICAgZGlmZmVyZW50IHBvcHVwcyBhY2NvcmRpbmcgdG8gcG9w
dXAgdHlwZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBvcHVwSW1wbC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQYWdlUG9wdXBDaHJvbWVDbGllbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQ2hyb21lQ2xpZW50OjpQYWdlUG9wdXBDaHJv
bWVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQ2hyb21lQ2xpZW50OjpjbG9z
ZVdpbmRvd1Nvb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQ2hyb21lQ2xpZW50Ojp3
ZWJQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBvcHVwSW1wbDo6V2ViUG9wdXBJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlBvcHVwSW1wbDo6fldlYlBvcHVwSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJQb3B1cEltcGw6OnNlbmRDcmVhdGVQb3B1cFdlYlZpZXdSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlBvcHVwSW1wbDo6aW5pdCk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRWYWx1ZUFuZENsb3NlUG9wdXBDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpwb3BV
cEV4dGVuc2lvbkluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6cG9wVXBFeHRlbnNpb25G
aW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQb3B1cEltcGw6Omluc3RhbGxEb21GdW5j
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJQb3B1cEltcGw6OmhhbmRsZU1vdXNlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViUG9wdXBJbXBsOjpjbG9zZVBvcHVwKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlBvcHVwSW1wbDo6Y2xvc2VXZWJQYWdlKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJQb3B1cEltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJQb3B1cEltcGwpOgorCisyMDEyLTA1LTA3ICBDcnlz
dGFsIFpoYW5nICA8aGFpemhhbmdAcmltLmNvbT4KKwogICAgICAgICBbQmxhY2tCZXJyeV0gQWRk
IG1ldGhvZHMgbmVlZCBieSBjbGllbnQgc2lkZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU2NjEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBJbXBsLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTgwNGM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwSW1wbC5jcHAKQEAgLTAs
MCArMSwyNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYlBvcHVwSW1wbC5oIgorCisjaW5jbHVkZSAi
Q2hyb21lQ2xpZW50QmxhY2tCZXJyeS5oIgorI2luY2x1ZGUgIkVtcHR5Q2xpZW50cy5oIgorI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudEJsYWNrQmVycnku
aCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2Uu
aCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpTUmV0YWluUHRyLmgiCisjaW5j
bHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgIlBhZ2VQb3B1
cENsaWVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VfcC5oIgor
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTU3RyaW5nUmVmLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5o
PgorCisjZGVmaW5lIHVybGJhckhlaWdodCA3MAorCit1c2luZyBuYW1lc3BhY2UgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkdyYXBoaWNzOwordXNpbmcgbmFtZXNwYWNlIEJsYWNrQmVycnk6OldlYktp
dDsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGFnZVBvcHVwQ2hyb21lQ2xpZW50IDog
cHVibGljIENocm9tZUNsaWVudEJsYWNrQmVycnkgeworCitwdWJsaWM6CisgICAgZXhwbGljaXQg
UGFnZVBvcHVwQ2hyb21lQ2xpZW50KFdlYlBhZ2VQcml2YXRlKiB3ZWJwYWdlLCBXZWJQb3B1cElt
cGwqIHBvcHVwKSA6CisgICAgICAgICAgICBDaHJvbWVDbGllbnRCbGFja0JlcnJ5KHdlYnBhZ2Up
LCBtX3BvcHVwKHBvcHVwKSwgbV93ZWJQYWdlKHdlYnBhZ2UpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvd1Nvb24oKQorICAgIHsKKyAgICAgICAgbV9wb3B1cC0+
Y2xvc2VQb3B1cCgpOworICAgIH0KKworICAgIFdlYlBhZ2VQcml2YXRlKiB3ZWJQYWdlKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX3dlYlBhZ2U7CisgICAgfQorCisgICAgV2ViUG9wdXBJbXBs
KiBtX3BvcHVwOworICAgIFdlYlBhZ2VQcml2YXRlKiBtX3dlYlBhZ2U7CisgICAgSW50UmVjdCBt
X3JlY3Q7Cit9OworCitXZWJQb3B1cEltcGw6OldlYlBvcHVwSW1wbChCbGFja0JlcnJ5OjpXZWJL
aXQ6OldlYlBhZ2VQcml2YXRlKiB3ZWJQYWdlLAorICAgICAgICBQYWdlUG9wdXBDbGllbnQqIGNs
aWVudCwgY29uc3QgSW50UmVjdCYgcmVjdCkgOgorICAgICAgICBtX3dlYlBhZ2VQcml2YXRlKHdl
YlBhZ2UpLCBtX2NsaWVudChjbGllbnQpCit7CisgICAgbV9yZWN0ID0gSW50UmVjdChyZWN0Lngo
KSwgcmVjdC55KCkgLSB1cmxiYXJIZWlnaHQsCisgICAgICAgICAgICBjbGllbnQtPmNvbnRlbnRT
aXplKCkud2lkdGgoKSwgY2xpZW50LT5jb250ZW50U2l6ZSgpLmhlaWdodCgpKTsKK30KKworV2Vi
UG9wdXBJbXBsOjp+V2ViUG9wdXBJbXBsKCkKK3sKK30KKwordm9pZCBXZWJQb3B1cEltcGw6OnNl
bmRDcmVhdGVQb3B1cFdlYlZpZXdSZXF1ZXN0KCkKK3sKKyAgICBtX3dlYlBhZ2VQcml2YXRlLT5j
bGllbnQoKS0+Y3JlYXRlUG9wdXBXZWJWaWV3KG1fcmVjdCk7Cit9CisKK2Jvb2wgV2ViUG9wdXBJ
bXBsOjppbml0KFdlYlBhZ2UqIHdlYnBhZ2UpCit7CisgICAgaWYgKCF3ZWJwYWdlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0aWMgRnJhbWVMb2FkZXJDbGllbnQqIGVtcHR5RnJh
bWVMb2FkZXJDbGllbnQgPSBuZXcgRW1wdHlGcmFtZUxvYWRlckNsaWVudDsKKyAgICBQYWdlOjpQ
YWdlQ2xpZW50cyBwYWdlQ2xpZW50czsKKyAgICBtX2Nocm9tZUNsaWVudCA9IGFkb3B0UHRyKG5l
dyBQYWdlUG9wdXBDaHJvbWVDbGllbnQod2VicGFnZS0+ZCwgdGhpcykpOworICAgIHN0YXRpYyBF
ZGl0b3JDbGllbnQqIGVtcHR5RWRpdG9yQ2xpZW50ID0gbmV3IEVtcHR5RWRpdG9yQ2xpZW50Owor
ICAgIHBhZ2VDbGllbnRzLmNocm9tZUNsaWVudCA9IG1fY2hyb21lQ2xpZW50LmdldCgpOworICAg
IHBhZ2VDbGllbnRzLmVkaXRvckNsaWVudCA9IGVtcHR5RWRpdG9yQ2xpZW50OworI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQorICAgIHN0YXRpYyBDb250ZXh0TWVudUNsaWVudCogZW1wdHlDb250
ZXh0TWVudUNsaWVudCA9CisgICAgICAgICAgICBuZXcgRW1wdHlDb250ZXh0TWVudUNsaWVudDsK
KyAgICBwYWdlQ2xpZW50cy5jb250ZXh0TWVudUNsaWVudCA9IGVtcHR5Q29udGV4dE1lbnVDbGll
bnQ7CisjZW5kaWYKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorICAgIHN0YXRpYyBEcmFnQ2xp
ZW50KiBlbXB0eURyYWdDbGllbnQgPSBuZXcgRW1wdHlEcmFnQ2xpZW50OworICAgIHBhZ2VDbGll
bnRzLmRyYWdDbGllbnQgPSBlbXB0eURyYWdDbGllbnQ7CisjZW5kaWYKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SKQorICAgIHN0YXRpYyBJbnNwZWN0b3JDbGllbnQqIGVtcHR5SW5zcGVjdG9yQ2xpZW50
ID0gbmV3IEVtcHR5SW5zcGVjdG9yQ2xpZW50OworICAgIHBhZ2VDbGllbnRzLmluc3BlY3RvckNs
aWVudCA9IGVtcHR5SW5zcGVjdG9yQ2xpZW50OworI2VuZGlmCisKKyAgICBtX3BhZ2UgPSBhZG9w
dFB0cihuZXcgUGFnZShwYWdlQ2xpZW50cykpOworICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0
U2NyaXB0RW5hYmxlZCh0cnVlKTsKKyAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldEFsbG93U2Ny
aXB0c1RvQ2xvc2VXaW5kb3dzKHRydWUpOworCisgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSA9IEZy
YW1lOjpjcmVhdGUobV9wYWdlLmdldCgpLCAwLAorICAgICAgICAgICAgZW1wdHlGcmFtZUxvYWRl
ckNsaWVudCk7CisgICAgZnJhbWUtPnNldFZpZXcoRnJhbWVWaWV3OjpjcmVhdGUoZnJhbWUuZ2V0
KCkpKTsKKyAgICBmcmFtZS0+aW5pdCgpOworICAgIGZyYW1lLT52aWV3KCktPnJlc2l6ZShtX2Ns
aWVudC0+Y29udGVudFNpemUoKSk7CisKKyAgICBDU3RyaW5nIGh0bWxTb3VyY2UgPSBtX2NsaWVu
dC0+aHRtbFNvdXJjZSgpLnV0ZjgoKTsKKyAgICBEb2N1bWVudFdyaXRlciogd3JpdGVyID0gZnJh
bWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKTsKKyAgICBtX2Ns
aWVudC0+d3JpdGVEb2N1bWVudCgqd3JpdGVyKTsKKworICAgIGluc3RhbGxEb21GdW5jdGlvbihm
cmFtZS5nZXQoKSk7CisKKyAgICB3ZWJwYWdlLT5kLT5zZXRQYXJlbnRQb3B1cCh0aGlzKTsKKwor
ICAgIHJldHVybiB0cnVlOworCit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldFZhbHVlQW5kQ2xv
c2VQb3B1cENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LAorICAgICAgICBKU09iamVjdFJl
ZiwgSlNPYmplY3RSZWYsIHNpemVfdCBhcmd1bWVudENvdW50LAorICAgICAgICBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKikKK3sKKyAgICBKU1ZhbHVlUmVmIGpzUmV0
VmFsID0gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisgICAgaWYgKGFyZ3VtZW50Q291
bnQgPD0gMCkKKyAgICAgICAgcmV0dXJuIGpzUmV0VmFsOworCisgICAgSlNTdHJpbmdSZWYgc3Ry
aW5nID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIDApOworICAg
IHNpemVfdCBzaXplVVRGOCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJp
bmcpOworICAgIGNoYXIqIHN0ckFyZ3MgPSBuZXcgY2hhcltzaXplVVRGOF07CisgICAgSlNTdHJp
bmdHZXRVVEY4Q1N0cmluZyhzdHJpbmcsIHN0ckFyZ3MsIHNpemVVVEY4KTsKKyAgICBKU1N0cmlu
Z1JlbGVhc2Uoc3RyaW5nKTsKKworICAgIEpTT2JqZWN0UmVmIHBvcFVwT2JqZWN0ID0gSlNWYWx1
ZVRvT2JqZWN0KGNvbnRleHQsCisgICAgICAgICAgICBhcmd1bWVudHNbYXJndW1lbnRDb3VudCAt
IDFdLCAwKTsKKyAgICBQYWdlUG9wdXBDbGllbnQqIGNsaWVudCA9CisgICAgICAgICAgICByZWlu
dGVycHJldF9jYXN0PFBhZ2VQb3B1cENsaWVudCo+KEpTT2JqZWN0R2V0UHJpdmF0ZShwb3BVcE9i
amVjdCkpOworCisgICAgQVNTRVJUKGNsaWVudCk7CisgICAgY2xpZW50LT5zZXRWYWx1ZUFuZENs
b3NlUG9wdXAoMCwgc3RyQXJncyk7CisKKyAgICBkZWxldGUgc3RyQXJnczsKKyAgICByZXR1cm4g
anNSZXRWYWw7Cit9CisKK3N0YXRpYyB2b2lkIHBvcFVwRXh0ZW5zaW9uSW5pdGlhbGl6ZShKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQg
cG9wVXBFeHRlbnNpb25GaW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCit7CisgICAgVU5VU0VE
X1BBUkFNKG9iamVjdCk7Cit9CisKK3N0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIHBvcFVwRXh0ZW5z
aW9uU3RhdGljRnVuY3Rpb25zW10gPQoreworeyAwLCAwLCAwIH0sCit7IDAsIDAsIDAgfQorfTsK
Kworc3RhdGljIEpTU3RhdGljVmFsdWUgcG9wVXBFeHRlbnNpb25TdGF0aWNWYWx1ZXNbXSA9Cit7
Cit7IDAsIDAsIDAsIDAgfQorfTsKKwordm9pZCBXZWJQb3B1cEltcGw6Omluc3RhbGxEb21GdW5j
dGlvbihGcmFtZSogZnJhbWUpCit7CisgICAgSlNDOjpKU0xvY2sgbG9jayhKU0M6OlNpbGVuY2VB
c3NlcnRpb25zT25seSk7CisKKyAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gdG9KU0RPTVdpbmRv
dyhmcmFtZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgIEFTU0VSVCh3aW5kb3cpOwor
CisgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB3aW5kb3ctPmdsb2JhbEV4ZWMoKTsKKyAgICBB
U1NFUlQoZXhlYyk7CisKKyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IDo6dG9SZWYoZXhlYyk7
CisgICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0
KGNvbnRleHQpOworICAgIEpTU3RyaW5nUmVmIGZ1bmN0aW9uTmFtZSA9IEpTU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKAorICAgICAgICAgICAgInNldFZhbHVlQW5kQ2xvc2VQb3B1cCIpOwor
ICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uID0gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJh
Y2soY29udGV4dCwKKyAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSwgc2V0VmFsdWVBbmRDbG9zZVBv
cHVwQ2FsbGJhY2spOworICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4dCwgZ2xvYmFsT2Jq
ZWN0LCBmdW5jdGlvbk5hbWUsIGZ1bmN0aW9uLAorICAgICAgICAgICAga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIHwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSwgMCk7CisKKyAg
ICAvLyBSZWdpc3RlciBjbGllbnQgaW50byBET00KKyAgICBKU0NsYXNzRGVmaW5pdGlvbiBkZWZp
bml0aW9uID0ga0pTQ2xhc3NEZWZpbml0aW9uRW1wdHk7CisgICAgZGVmaW5pdGlvbi5zdGF0aWNW
YWx1ZXMgPSBwb3BVcEV4dGVuc2lvblN0YXRpY1ZhbHVlczsKKyAgICBkZWZpbml0aW9uLnN0YXRp
Y0Z1bmN0aW9ucyA9IHBvcFVwRXh0ZW5zaW9uU3RhdGljRnVuY3Rpb25zOworICAgIGRlZmluaXRp
b24uaW5pdGlhbGl6ZSA9IHBvcFVwRXh0ZW5zaW9uSW5pdGlhbGl6ZTsKKyAgICBkZWZpbml0aW9u
LmZpbmFsaXplID0gcG9wVXBFeHRlbnNpb25GaW5hbGl6ZTsKKyAgICBKU0NsYXNzUmVmIGNsaWVu
dENsYXNzID0gSlNDbGFzc0NyZWF0ZSgmZGVmaW5pdGlvbik7CisKKyAgICBKU09iamVjdFJlZiBj
bGllbnRDbGFzc09iamVjdCA9IEpTT2JqZWN0TWFrZShjb250ZXh0LCBjbGllbnRDbGFzcywgMCk7
CisgICAgSlNPYmplY3RTZXRQcml2YXRlKGNsaWVudENsYXNzT2JqZWN0LCByZWludGVycHJldF9j
YXN0PHZvaWQqPihtX2NsaWVudCkpOworCisgICAgSlNDOjpVU3RyaW5nIG5hbWUoInBvcFVwIik7
CisKKyAgICBKU0M6OlB1dFByb3BlcnR5U2xvdCBzbG90OworICAgIHdpbmRvdy0+cHV0KHdpbmRv
dywgZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsIG5hbWUpLAorICAgICAgICAgICAgdG9KUyhj
bGllbnRDbGFzc09iamVjdCksIHNsb3QpOworCisgICAgSlNDbGFzc1JlbGVhc2UoY2xpZW50Q2xh
c3MpOworfQorCitib29sIFdlYlBvcHVwSW1wbDo6aGFuZGxlTW91c2VFdmVudChQbGF0Zm9ybU1v
dXNlRXZlbnQmIGV2ZW50KQoreworICAgIGlmICghbV9wYWdlLT5tYWluRnJhbWUoKSB8fCAhbV9w
YWdlLT5tYWluRnJhbWUoKS0+dmlldygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBz
d2l0Y2ggKGV2ZW50LnR5cGUoKSkgeworICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6
TW91c2VNb3ZlZDoKKyAgICAgICAgcmV0dXJuIG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFu
ZGxlcigpLT5oYW5kbGVNb3VzZU1vdmVFdmVudChldmVudCk7CisgICAgY2FzZSBXZWJDb3JlOjpQ
bGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ6CisgICAgICAgIHJldHVybiBtX3BhZ2UtPm1haW5G
cmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VQcmVzc0V2ZW50KGV2ZW50KTsKKyAg
ICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ6CisgICAgICAgIHJl
dHVybiBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VSZWxl
YXNlRXZlbnQoCisgICAgICAgICAgICAgICAgZXZlbnQpOworICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViUG9wdXBJbXBsOjpjbG9zZVBvcHVw
KCkKK3sKKyAgICBjbG9zZVdlYlBhZ2UoKTsKKyAgICBtX2NsaWVudC0+ZGlkQ2xvc2VQb3B1cCgp
OworICAgIGRlbGV0ZSBtX2NsaWVudDsKKyAgICBtX2NsaWVudCA9IDA7CisgICAgbV93ZWJQYWdl
UHJpdmF0ZS0+Y2xpZW50KCktPmNsb3NlUG9wdXBXZWJWaWV3KCk7Cit9CisKK3ZvaWQgV2ViUG9w
dXBJbXBsOjpjbG9zZVdlYlBhZ2UoKQoreworICAgIGlmIChtX3BhZ2UpIHsKKyAgICAgICAgbV9w
YWdlLT5zZXRHcm91cE5hbWUoU3RyaW5nKCkpOworICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgp
LT5sb2FkZXIoKS0+c3RvcEFsbExvYWRlcnMoKTsKKyAgICAgICAgbV9wYWdlLT5tYWluRnJhbWUo
KS0+bG9hZGVyKCktPnN0b3BMb2FkaW5nKFVubG9hZEV2ZW50UG9saWN5Tm9uZSk7CisgICAgICAg
IG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+Y2xlYXIoKTsKKyAgICB9CisgICAgbV9wYWdl
LmNsZWFyKCk7Cit9Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9XZWJQb3B1cEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9XZWJQb3B1cEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4xMWMwMTViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwSW1wbC5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwg
Qm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBXZWJQb3B1cEltcGxf
aAorI2RlZmluZSBXZWJQb3B1cEltcGxfaAorCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1
ZGUgIlBhZ2VQb3B1cC5oIgorCisKK25hbWVzcGFjZSBCbGFja0JlcnJ5IHsKK25hbWVzcGFjZSBX
ZWJLaXQgeworY2xhc3MgV2ViUGFnZTsKK2NsYXNzIFdlYlBhZ2VQcml2YXRlOworfQorfQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGcmFtZTsKK2NsYXNzIFBhZ2U7CitjbGFzcyBQYWdl
UG9wdXBDaHJvbWVDbGllbnQ7CitjbGFzcyBQYWdlUG9wdXBDbGllbnQ7CitjbGFzcyBQbGF0Zm9y
bU1vdXNlRXZlbnQ7CisKK2NsYXNzIFdlYlBvcHVwSW1wbCA6IHB1YmxpYyBQYWdlUG9wdXAgewor
cHVibGljOgorICAgIFdlYlBvcHVwSW1wbChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2
YXRlKiwgUGFnZVBvcHVwQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIH5XZWJQb3B1cElt
cGwoKTsKKworICAgIHZvaWQgc2VuZENyZWF0ZVBvcHVwV2ViVmlld1JlcXVlc3QoKTsKKyAgICBi
b29sIGluaXQoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKik7CisgICAgdm9pZCBjbG9zZVBv
cHVwKCk7CisgICAgdm9pZCBpbnN0YWxsRG9tRnVuY3Rpb24oRnJhbWUqKTsKKyAgICB2b2lkIHNl
dFJlY3QoKTsKKyAgICB2b2lkIGNsb3NlV2ViUGFnZSgpOworCisgICAgYm9vbCBoYW5kbGVNb3Vz
ZUV2ZW50KFBsYXRmb3JtTW91c2VFdmVudCYpOworCisKK3ByaXZhdGU6CisgICAgQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZSogbV93ZWJQYWdlUHJpdmF0ZTsKKyAgICBQYWdlUG9w
dXBDbGllbnQqIG1fY2xpZW50OworICAgIEludFJlY3QgbV9yZWN0OworICAgIE93blB0cjxXZWJD
b3JlOjpQYWdlPiBtX3BhZ2U7CisgICAgT3duUHRyPFBhZ2VQb3B1cENocm9tZUNsaWVudD4gbV9j
aHJvbWVDbGllbnQ7CisKKyAgICBmcmllbmQgY2xhc3MgUGFnZVBvcHVwQ2hyb21lQ2xpZW50Owor
fTsKKworfQorCisjZW5kaWYgLy8gV2ViUG9wdXBJbXBsX2gKLS0gCjEuNy4xMC4xCgo=
</data>
<flag name="review"
          id="146505"
          type_id="1"
          status="-"
          setter="rwlbuis"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140754</attachid>
            <date>2012-05-08 11:45:15 -0700</date>
            <delta_ts>2012-05-08 11:46:28 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>0001-2012-05-08-Crystal-Zhang-haizhang-rim.com.patch</filename>
            <type>text/plain</type>
            <size>7603</size>
            <attacher name="Crystal Zhang">haizhang</attacher>
            
              <data encoding="base64">RnJvbSA0OTMyNjVmYzc1YTQzMTUwNTdlZGZlZGJlODIwNDgzNDAyYzI2YTE4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDcnlzdGFsIFpoYW5nIDxoYWl6aGFuZ0ByaW0uY29tPgpEYXRl
OiBUdWUsIDggTWF5IDIwMTIgMTQ6Mzk6MjkgLTA0MDAKU3ViamVjdDogW1BBVENIXSAyMDEyLTA1
LTA4ICBDcnlzdGFsIFpoYW5nICA8aGFpemhhbmdAcmltLmNvbT4KCiAgICAgICAgICAgIFtCbGFj
a0JlcnJ5XSBJbXBsZW1lbnQgYSBwb3B1cCBjbGllbnQgZm9yIEhUTUwgY29udHJvbHMKICAgICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NjcwCgogICAg
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgICAgIEltcGxlbWVu
dCBhIHBvcHVwIGNsaWVudCBmb3IgSFRNTCBjb250cm9scywgd2hpY2ggd291bGQgYmUgdXNlZCB0
byBsb2FkCiAgICAgICAgICAgIGRpZmZlcmVudCBwb3B1cHMgYWNjb3JkaW5nIHRvIHBvcHVwIHR5
cGUuCgogICAgICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuY3Bw
OiBBZGRlZC4KICAgICAgICAgICAgKFdlYkNvcmUpOgogICAgICAgICAgICAoUGFnZVBvcHVwQ2hy
b21lQ2xpZW50KToKICAgICAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cENocm9tZUNsaWVudDo6
UGFnZVBvcHVwQ2hyb21lQ2xpZW50KToKICAgICAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cENo
cm9tZUNsaWVudDo6Y2xvc2VXaW5kb3dTb29uKToKICAgICAgICAgICAgKFdlYkNvcmU6OlBhZ2VQ
b3B1cENocm9tZUNsaWVudDo6d2ViUGFnZSk6CiAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9w
dXBCbGFja0JlcnJ5OjpQYWdlUG9wdXBCbGFja0JlcnJ5KToKICAgICAgICAgICAgKFdlYkNvcmU6
OlBhZ2VQb3B1cEJsYWNrQmVycnk6On5QYWdlUG9wdXBCbGFja0JlcnJ5KToKICAgICAgICAgICAg
KFdlYkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6OnNlbmRDcmVhdGVQb3B1cFdlYlZpZXdSZXF1
ZXN0KToKICAgICAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6OmluaXQpOgog
ICAgICAgICAgICAoV2ViQ29yZTo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwQ2FsbGJhY2spOgogICAg
ICAgICAgICAoV2ViQ29yZTo6cG9wVXBFeHRlbnNpb25Jbml0aWFsaXplKToKICAgICAgICAgICAg
KFdlYkNvcmU6OnBvcFVwRXh0ZW5zaW9uRmluYWxpemUpOgogICAgICAgICAgICAoV2ViQ29yZTo6
UGFnZVBvcHVwQmxhY2tCZXJyeTo6aW5zdGFsbERvbUZ1bmN0aW9uKToKICAgICAgICAgICAgKFdl
YkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6OmhhbmRsZU1vdXNlRXZlbnQpOgogICAgICAgICAg
ICAoV2ViQ29yZTo6UGFnZVBvcHVwQmxhY2tCZXJyeTo6Y2xvc2VQb3B1cCk6CiAgICAgICAgICAg
IChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5OjpjbG9zZVdlYlBhZ2UpOgogICAgICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuaDogQWRkZWQuCiAgICAgICAg
ICAgIChXZWJLaXQpOgogICAgICAgICAgICAoV2ViQ29yZSk6CiAgICAgICAgICAgIChQYWdlUG9w
dXBCbGFja0JlcnJ5KToKICAgICAgICAgICAgKiBQbGF0Zm9ybUJsYWNrQmVycnkuY21ha2U6Ci0t
LQogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDExICsrKysKIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlICAgICAgICAg
ICAgIHwgICAgMSArCiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICB8ICAgMzIgKysrKysrKysrKwogLi4uL1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJs
YWNrQmVycnkuaCAgICAgICAgICAgfCAgIDY3ICsrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVz
IGNoYW5nZWQsIDExMSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuY3BwCiBj
cmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0
L1BhZ2VQb3B1cEJsYWNrQmVycnkuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzc0YWIwMi4uZTMxNTMyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNS0wOCAgQ3J5c3RhbCBaaGFuZyAgPGhhaXpo
YW5nQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIEltcGxlbWVudCBhIHBvcHVwIGNs
aWVudCBmb3IgSFRNTCBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODU2NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgcG9wdXAgY2xpZW50IGZpbGUgdG8gYnVpbGQgc3lzdGVtLgorICAg
ICAgICAKKyAgICAgICAgKiBQbGF0Zm9ybUJsYWNrQmVycnkuY21ha2U6CisKIDIwMTItMDUtMDgg
IEpvbmF0aGFuIERvbmcgIDxqb25hdGhhbi5kb25nQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAg
ICAgICBbQmxhY2tCZXJyeV0gQXV0b2ZpbGxNYW5hZ2VyIGltcGxlbWVudGF0aW9uIHVwc3RyZWFt
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZSBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCmluZGV4IGYyNDQ3NzkuLjQ1NWZl
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC03NSw2ICs3NSw3
IEBAIExJU1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9KYXZhU2NyaXB0RGVidWdnZXJCbGFja0JlcnJ5LmNwcAogICAgIGJsYWNrYmVycnkvV2Vi
Q29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5jcHAKICAgICBibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L1ZpYnJhdGlvbkNsaWVudEJsYWNrQmVycnkuY3BwCisgICAgYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5LmNwcAogICAgIGJsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9CYWNraW5nU3RvcmVDb21wb3NpdGluZ1N1cmZhY2UuY3BwCiAgICAg
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZVRpbGUuY3BwCiAgICAgYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZUNsaWVudC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQ2hhbmdlTG9nCmluZGV4IDUzZDU4YzguLjQzZTc5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA1LTA4ICBDcnlzdGFsIFpoYW5nICA8
aGFpemhhbmdAcmltLmNvbT4KKyAgICAKKyAgICAgICAgICAgIFtCbGFja0JlcnJ5XSBJbXBsZW1l
bnQgYSBwb3B1cCBjbGllbnQgZm9yIEhUTUwgY29udHJvbHMKKyAgICAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTY3MAorICAgIAorICAgICAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgCisgICAgICAgICAgICBJbXBsZW1lbnQg
YSBwb3B1cCBjbGllbnQgZm9yIEhUTUwgY29udHJvbHMsIHdoaWNoIHdvdWxkIGJlIHVzZWQgdG8g
bG9hZAorICAgICAgICAgICAgZGlmZmVyZW50IHBvcHVwcyBhY2NvcmRpbmcgdG8gcG9wdXAgdHlw
ZS4KKyAgICAKKyAgICAgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJy
eS5jcHA6IEFkZGVkLgorICAgICAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAgICAgKFBhZ2VQ
b3B1cENocm9tZUNsaWVudCk6CisgICAgICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQ2hyb21l
Q2xpZW50OjpQYWdlUG9wdXBDaHJvbWVDbGllbnQpOgorICAgICAgICAgICAgKFdlYkNvcmU6OlBh
Z2VQb3B1cENocm9tZUNsaWVudDo6Y2xvc2VXaW5kb3dTb29uKToKKyAgICAgICAgICAgIChXZWJD
b3JlOjpQYWdlUG9wdXBDaHJvbWVDbGllbnQ6OndlYlBhZ2UpOgorICAgICAgICAgICAgKFdlYkNv
cmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6OlBhZ2VQb3B1cEJsYWNrQmVycnkpOgorICAgICAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6On5QYWdlUG9wdXBCbGFja0JlcnJ5KToK
KyAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5OjpzZW5kQ3JlYXRlUG9w
dXBXZWJWaWV3UmVxdWVzdCk6CisgICAgICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQmxhY2tC
ZXJyeTo6aW5pdCk6CisgICAgICAgICAgICAoV2ViQ29yZTo6c2V0VmFsdWVBbmRDbG9zZVBvcHVw
Q2FsbGJhY2spOgorICAgICAgICAgICAgKFdlYkNvcmU6OnBvcFVwRXh0ZW5zaW9uSW5pdGlhbGl6
ZSk6CisgICAgICAgICAgICAoV2ViQ29yZTo6cG9wVXBFeHRlbnNpb25GaW5hbGl6ZSk6CisgICAg
ICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQmxhY2tCZXJyeTo6aW5zdGFsbERvbUZ1bmN0aW9u
KToKKyAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5OjpoYW5kbGVNb3Vz
ZUV2ZW50KToKKyAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5OjpjbG9z
ZVBvcHVwKToKKyAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5OjpjbG9z
ZVdlYlBhZ2UpOgorICAgICAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0Jl
cnJ5Lmg6IEFkZGVkLgorICAgICAgICAgICAgKFdlYktpdCk6CisgICAgICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICAgICAoUGFnZVBvcHVwQmxhY2tCZXJyeSk6CisKIDIwMTItMDUtMDggIEFu
ZHJldyBMbyAgPGFubG9AcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gT3Zlci1zY3Jv
bGwgaW1hZ2Ugc2hvdWxkIGJlIHRpbGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnku
aCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFj
a0JlcnJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI1ODQyNgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9Q
YWdlUG9wdXBCbGFja0JlcnJ5LmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAw
MjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIFBhZ2VQb3B1cEJsYWNrQmVycnlfaAorI2Rl
ZmluZSBQYWdlUG9wdXBCbGFja0JlcnJ5X2gKKworI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNs
dWRlICJQYWdlUG9wdXAuaCIKKworCituYW1lc3BhY2UgQmxhY2tCZXJyeSB7CituYW1lc3BhY2Ug
V2ViS2l0IHsKK2NsYXNzIFdlYlBhZ2U7CitjbGFzcyBXZWJQYWdlUHJpdmF0ZTsKK30KK30KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRnJhbWU7CitjbGFzcyBQYWdlOworY2xhc3MgUGFn
ZVBvcHVwQ2hyb21lQ2xpZW50OworY2xhc3MgUGFnZVBvcHVwQ2xpZW50OworY2xhc3MgUGxhdGZv
cm1Nb3VzZUV2ZW50OworCitjbGFzcyBQYWdlUG9wdXBCbGFja0JlcnJ5IDogcHVibGljIFBhZ2VQ
b3B1cCB7CitwdWJsaWM6CisgICAgUGFnZVBvcHVwQmxhY2tCZXJyeShCbGFja0JlcnJ5OjpXZWJL
aXQ6OldlYlBhZ2VQcml2YXRlKiwgUGFnZVBvcHVwQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwor
ICAgIH5QYWdlUG9wdXBCbGFja0JlcnJ5KCk7CisKKyAgICB2b2lkIHNlbmRDcmVhdGVQb3B1cFdl
YlZpZXdSZXF1ZXN0KCk7CisgICAgYm9vbCBpbml0KEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFn
ZSopOworICAgIHZvaWQgY2xvc2VQb3B1cCgpOworICAgIHZvaWQgaW5zdGFsbERvbUZ1bmN0aW9u
KEZyYW1lKik7CisgICAgdm9pZCBzZXRSZWN0KCk7CisgICAgdm9pZCBjbG9zZVdlYlBhZ2UoKTsK
KworICAgIGJvb2wgaGFuZGxlTW91c2VFdmVudChQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKworCitw
cml2YXRlOgorICAgIEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGUqIG1fd2ViUGFn
ZVByaXZhdGU7CisgICAgUGFnZVBvcHVwQ2xpZW50KiBtX2NsaWVudDsKKyAgICBJbnRSZWN0IG1f
cmVjdDsKKyAgICBPd25QdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOworICAgIE93blB0cjxQYWdl
UG9wdXBDaHJvbWVDbGllbnQ+IG1fY2hyb21lQ2xpZW50OworCisgICAgZnJpZW5kIGNsYXNzIFBh
Z2VQb3B1cENocm9tZUNsaWVudDsKK307CisKK30KKworI2VuZGlmIC8vIFBhZ2VQb3B1cEJsYWNr
QmVycnlfaAotLSAKMS43LjEwLjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140758</attachid>
            <date>2012-05-08 11:56:28 -0700</date>
            <delta_ts>2012-05-08 14:14:38 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>0001-2012-05-08-Crystal-Zhang-haizhang-rim.com.patch</filename>
            <type>text/plain</type>
            <size>16081</size>
            <attacher name="Crystal Zhang">haizhang</attacher>
            
              <data encoding="base64">RnJvbSAwN2I0NDAwMzU3NjhlZmRhZTAyNGRjNmJmMjc4Zjg0MTE4ODUxNTE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDcnlzdGFsIFpoYW5nIDxoYWl6aGFuZ0ByaW0uY29tPgpEYXRl
OiBUdWUsIDggTWF5IDIwMTIgMTQ6Mzk6MjkgLTA0MDAKU3ViamVjdDogW1BBVENIXSAyMDEyLTA1
LTA4ICBDcnlzdGFsIFpoYW5nICA8aGFpemhhbmdAcmltLmNvbT4KCiAgICAgICAgICAgIFtCbGFj
a0JlcnJ5XSBJbXBsZW1lbnQgYSBwb3B1cCBjbGllbnQgZm9yIEhUTUwgY29udHJvbHMKICAgICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NjcwCgogICAg
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgICAgIEltcGxlbWVu
dCBhIHBvcHVwIGNsaWVudCBmb3IgSFRNTCBjb250cm9scywgd2hpY2ggd291bGQgYmUgdXNlZCB0
byBsb2FkCiAgICAgICAgICAgIGRpZmZlcmVudCBwb3B1cHMgYWNjb3JkaW5nIHRvIHBvcHVwIHR5
cGUuCgogICAgICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuY3Bw
OiBBZGRlZC4KICAgICAgICAgICAgKFdlYkNvcmUpOgogICAgICAgICAgICAoUGFnZVBvcHVwQ2hy
b21lQ2xpZW50KToKICAgICAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cENocm9tZUNsaWVudDo6
UGFnZVBvcHVwQ2hyb21lQ2xpZW50KToKICAgICAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cENo
cm9tZUNsaWVudDo6Y2xvc2VXaW5kb3dTb29uKToKICAgICAgICAgICAgKFdlYkNvcmU6OlBhZ2VQ
b3B1cENocm9tZUNsaWVudDo6d2ViUGFnZSk6CiAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9w
dXBCbGFja0JlcnJ5OjpQYWdlUG9wdXBCbGFja0JlcnJ5KToKICAgICAgICAgICAgKFdlYkNvcmU6
OlBhZ2VQb3B1cEJsYWNrQmVycnk6On5QYWdlUG9wdXBCbGFja0JlcnJ5KToKICAgICAgICAgICAg
KFdlYkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6OnNlbmRDcmVhdGVQb3B1cFdlYlZpZXdSZXF1
ZXN0KToKICAgICAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6OmluaXQpOgog
ICAgICAgICAgICAoV2ViQ29yZTo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwQ2FsbGJhY2spOgogICAg
ICAgICAgICAoV2ViQ29yZTo6cG9wVXBFeHRlbnNpb25Jbml0aWFsaXplKToKICAgICAgICAgICAg
KFdlYkNvcmU6OnBvcFVwRXh0ZW5zaW9uRmluYWxpemUpOgogICAgICAgICAgICAoV2ViQ29yZTo6
UGFnZVBvcHVwQmxhY2tCZXJyeTo6aW5zdGFsbERvbUZ1bmN0aW9uKToKICAgICAgICAgICAgKFdl
YkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6OmhhbmRsZU1vdXNlRXZlbnQpOgogICAgICAgICAg
ICAoV2ViQ29yZTo6UGFnZVBvcHVwQmxhY2tCZXJyeTo6Y2xvc2VQb3B1cCk6CiAgICAgICAgICAg
IChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5OjpjbG9zZVdlYlBhZ2UpOgogICAgICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuaDogQWRkZWQuCiAgICAgICAg
ICAgIChXZWJLaXQpOgogICAgICAgICAgICAoV2ViQ29yZSk6CiAgICAgICAgICAgIChQYWdlUG9w
dXBCbGFja0JlcnJ5KToKICAgICAgICAgICAgKiBQbGF0Zm9ybUJsYWNrQmVycnkuY21ha2U6Ci0t
LQogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDExICsKIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlICAgICAgICAgICAg
IHwgICAgMSArCiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICB8ICAgMzIgKysrCiAuLi4vV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5j
cHAgICAgICAgICB8ICAyNjAgKysrKysrKysrKysrKysrKysrKysKIC4uLi9XZWJDb3JlU3VwcG9y
dC9QYWdlUG9wdXBCbGFja0JlcnJ5LmggICAgICAgICAgIHwgICA2NCArKysrKwogNSBmaWxlcyBj
aGFuZ2VkLCAzNjggaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5LmNwcAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9Q
YWdlUG9wdXBCbGFja0JlcnJ5LmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM3NGFiMDIuLmUzMTUzMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDUtMDggIENyeXN0YWwgWmhhbmcgIDxoYWl6aGFu
Z0ByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBJbXBsZW1lbnQgYSBwb3B1cCBjbGll
bnQgZm9yIEhUTUwgY29udHJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg1NjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHBvcHVwIGNsaWVudCBmaWxlIHRvIGJ1aWxkIHN5c3RlbS4KKyAgICAg
ICAgCisgICAgICAgICogUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlOgorCiAyMDEyLTA1LTA4ICBK
b25hdGhhbiBEb25nICA8am9uYXRoYW4uZG9uZ0B0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAg
ICAgW0JsYWNrQmVycnldIEF1dG9maWxsTWFuYWdlciBpbXBsZW1lbnRhdGlvbiB1cHN0cmVhbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQppbmRleCBmMjQ0Nzc5Li40NTVmZWQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQpAQCAtNzUsNiArNzUsNyBA
QCBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvSmF2YVNjcmlwdERlYnVnZ2VyQmxhY2tCZXJyeS5jcHAKICAgICBibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckltcGwuY3BwCiAgICAgYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9WaWJyYXRpb25DbGllbnRCbGFja0JlcnJ5LmNwcAorICAgIGJsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5jcHAKICAgICBibGFja2JlcnJ5
L1dlYktpdFN1cHBvcnQvQmFja2luZ1N0b3JlQ29tcG9zaXRpbmdTdXJmYWNlLmNwcAogICAgIGJs
YWNrYmVycnkvV2ViS2l0U3VwcG9ydC9CYWNraW5nU3RvcmVUaWxlLmNwcAogICAgIGJsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9CYWNraW5nU3RvcmVDbGllbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0NoYW5nZUxvZwppbmRleCA1M2Q1OGM4Li40M2U3OTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMi0wNS0wOCAgQ3J5c3RhbCBaaGFuZyAgPGhh
aXpoYW5nQHJpbS5jb20+CisgICAgCisgICAgICAgICAgICBbQmxhY2tCZXJyeV0gSW1wbGVtZW50
IGEgcG9wdXAgY2xpZW50IGZvciBIVE1MIGNvbnRyb2xzCisgICAgICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU2NzAKKyAgICAKKyAgICAgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgIAorICAgICAgICAgICAgSW1wbGVtZW50IGEg
cG9wdXAgY2xpZW50IGZvciBIVE1MIGNvbnRyb2xzLCB3aGljaCB3b3VsZCBiZSB1c2VkIHRvIGxv
YWQKKyAgICAgICAgICAgIGRpZmZlcmVudCBwb3B1cHMgYWNjb3JkaW5nIHRvIHBvcHVwIHR5cGUu
CisgICAgCisgICAgICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnku
Y3BwOiBBZGRlZC4KKyAgICAgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgICAgIChQYWdlUG9w
dXBDaHJvbWVDbGllbnQpOgorICAgICAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cENocm9tZUNs
aWVudDo6UGFnZVBvcHVwQ2hyb21lQ2xpZW50KToKKyAgICAgICAgICAgIChXZWJDb3JlOjpQYWdl
UG9wdXBDaHJvbWVDbGllbnQ6OmNsb3NlV2luZG93U29vbik6CisgICAgICAgICAgICAoV2ViQ29y
ZTo6UGFnZVBvcHVwQ2hyb21lQ2xpZW50Ojp3ZWJQYWdlKToKKyAgICAgICAgICAgIChXZWJDb3Jl
OjpQYWdlUG9wdXBCbGFja0JlcnJ5OjpQYWdlUG9wdXBCbGFja0JlcnJ5KToKKyAgICAgICAgICAg
IChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5Ojp+UGFnZVBvcHVwQmxhY2tCZXJyeSk6Cisg
ICAgICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQmxhY2tCZXJyeTo6c2VuZENyZWF0ZVBvcHVw
V2ViVmlld1JlcXVlc3QpOgorICAgICAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVy
cnk6OmluaXQpOgorICAgICAgICAgICAgKFdlYkNvcmU6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cENh
bGxiYWNrKToKKyAgICAgICAgICAgIChXZWJDb3JlOjpwb3BVcEV4dGVuc2lvbkluaXRpYWxpemUp
OgorICAgICAgICAgICAgKFdlYkNvcmU6OnBvcFVwRXh0ZW5zaW9uRmluYWxpemUpOgorICAgICAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6Omluc3RhbGxEb21GdW5jdGlvbik6
CisgICAgICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQmxhY2tCZXJyeTo6aGFuZGxlTW91c2VF
dmVudCk6CisgICAgICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQmxhY2tCZXJyeTo6Y2xvc2VQ
b3B1cCk6CisgICAgICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQmxhY2tCZXJyeTo6Y2xvc2VX
ZWJQYWdlKToKKyAgICAgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJy
eS5oOiBBZGRlZC4KKyAgICAgICAgICAgIChXZWJLaXQpOgorICAgICAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAgICAgKFBhZ2VQb3B1cEJsYWNrQmVycnkpOgorCiAyMDEyLTA1LTA4ICBBbmRy
ZXcgTG8gIDxhbmxvQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIE92ZXItc2Nyb2xs
IGltYWdlIHNob3VsZCBiZSB0aWxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5ODlhZDQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tC
ZXJyeS5jcHAKQEAgLTAsMCArMSwyNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlBhZ2VQb3B1cEJsYWNr
QmVycnkuaCIKKworI2luY2x1ZGUgIkNocm9tZUNsaWVudEJsYWNrQmVycnkuaCIKKyNpbmNsdWRl
ICJFbXB0eUNsaWVudHMuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JDbGllbnRCbGFja0JlcnJ5LmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5j
bHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRl
ICJKU1JldGFpblB0ci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlR3JvdXAu
aCIKKyNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1vdXNl
RXZlbnQuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNp
bmNsdWRlICJXZWJQYWdlX3AuaCIKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTVmFsdWVSZWYuaD4KKworI2RlZmluZSB1cmxiYXJIZWlnaHQgNzAKKwordXNp
bmcgbmFtZXNwYWNlIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczsKK3VzaW5nIG5hbWVz
cGFjZSBCbGFja0JlcnJ5OjpXZWJLaXQ7CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBh
Z2VQb3B1cENocm9tZUNsaWVudCA6IHB1YmxpYyBDaHJvbWVDbGllbnRCbGFja0JlcnJ5IHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBQYWdlUG9wdXBDaHJvbWVDbGllbnQoV2ViUGFnZVByaXZhdGUq
IHdlYnBhZ2UsIFBhZ2VQb3B1cEJsYWNrQmVycnkqIHBvcHVwKSA6CisgICAgICAgICAgICBDaHJv
bWVDbGllbnRCbGFja0JlcnJ5KHdlYnBhZ2UpLCBtX3BvcHVwKHBvcHVwKSwgbV93ZWJQYWdlKHdl
YnBhZ2UpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvd1Nvb24o
KQorICAgIHsKKyAgICAgICAgbV9wb3B1cC0+Y2xvc2VQb3B1cCgpOworICAgIH0KKworICAgIFdl
YlBhZ2VQcml2YXRlKiB3ZWJQYWdlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3dlYlBhZ2U7
CisgICAgfQorCisgICAgUGFnZVBvcHVwQmxhY2tCZXJyeSogbV9wb3B1cDsKKyAgICBXZWJQYWdl
UHJpdmF0ZSogbV93ZWJQYWdlOworICAgIEludFJlY3QgbV9yZWN0OworfTsKKworUGFnZVBvcHVw
QmxhY2tCZXJyeTo6UGFnZVBvcHVwQmxhY2tCZXJyeShCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBh
Z2VQcml2YXRlKiB3ZWJQYWdlLAorICAgICAgICBQYWdlUG9wdXBDbGllbnQqIGNsaWVudCwgY29u
c3QgSW50UmVjdCYgcmVjdCkgOgorICAgICAgICBtX3dlYlBhZ2VQcml2YXRlKHdlYlBhZ2UpLCBt
X2NsaWVudChjbGllbnQpCit7CisgICAgbV9yZWN0ID0gSW50UmVjdChyZWN0LngoKSwgcmVjdC55
KCkgLSB1cmxiYXJIZWlnaHQsCisgICAgICAgICAgICBjbGllbnQtPmNvbnRlbnRTaXplKCkud2lk
dGgoKSwgY2xpZW50LT5jb250ZW50U2l6ZSgpLmhlaWdodCgpKTsKK30KKworUGFnZVBvcHVwQmxh
Y2tCZXJyeTo6flBhZ2VQb3B1cEJsYWNrQmVycnkoKQoreworfQorCit2b2lkIFBhZ2VQb3B1cEJs
YWNrQmVycnk6OnNlbmRDcmVhdGVQb3B1cFdlYlZpZXdSZXF1ZXN0KCkKK3sKKyAgICBtX3dlYlBh
Z2VQcml2YXRlLT5jbGllbnQoKS0+Y3JlYXRlUG9wdXBXZWJWaWV3KG1fcmVjdCk7Cit9CisKK2Jv
b2wgUGFnZVBvcHVwQmxhY2tCZXJyeTo6aW5pdChXZWJQYWdlKiB3ZWJwYWdlKQoreworICAgIGlm
ICghd2VicGFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3RhdGljIEZyYW1lTG9h
ZGVyQ2xpZW50KiBlbXB0eUZyYW1lTG9hZGVyQ2xpZW50ID0gbmV3IEVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ7CisgICAgUGFnZTo6UGFnZUNsaWVudHMgcGFnZUNsaWVudHM7CisgICAgbV9jaHJvbWVD
bGllbnQgPSBhZG9wdFB0cihuZXcgUGFnZVBvcHVwQ2hyb21lQ2xpZW50KHdlYnBhZ2UtPmQsIHRo
aXMpKTsKKyAgICBzdGF0aWMgRWRpdG9yQ2xpZW50KiBlbXB0eUVkaXRvckNsaWVudCA9IG5ldyBF
bXB0eUVkaXRvckNsaWVudDsKKyAgICBwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQgPSBtX2Nocm9t
ZUNsaWVudC5nZXQoKTsKKyAgICBwYWdlQ2xpZW50cy5lZGl0b3JDbGllbnQgPSBlbXB0eUVkaXRv
ckNsaWVudDsKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICBzdGF0aWMgQ29udGV4dE1l
bnVDbGllbnQqIGVtcHR5Q29udGV4dE1lbnVDbGllbnQgPQorICAgICAgICAgICAgbmV3IEVtcHR5
Q29udGV4dE1lbnVDbGllbnQ7CisgICAgcGFnZUNsaWVudHMuY29udGV4dE1lbnVDbGllbnQgPSBl
bXB0eUNvbnRleHRNZW51Q2xpZW50OworI2VuZGlmCisjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
KyAgICBzdGF0aWMgRHJhZ0NsaWVudCogZW1wdHlEcmFnQ2xpZW50ID0gbmV3IEVtcHR5RHJhZ0Ns
aWVudDsKKyAgICBwYWdlQ2xpZW50cy5kcmFnQ2xpZW50ID0gZW1wdHlEcmFnQ2xpZW50OworI2Vu
ZGlmCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBzdGF0aWMgSW5zcGVjdG9yQ2xpZW50KiBl
bXB0eUluc3BlY3RvckNsaWVudCA9IG5ldyBFbXB0eUluc3BlY3RvckNsaWVudDsKKyAgICBwYWdl
Q2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBlbXB0eUluc3BlY3RvckNsaWVudDsKKyNlbmRpZgor
CisgICAgbV9wYWdlID0gYWRvcHRQdHIobmV3IFBhZ2UocGFnZUNsaWVudHMpKTsKKyAgICBtX3Bh
Z2UtPnNldHRpbmdzKCktPnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7CisgICAgbV9wYWdlLT5zZXR0
aW5ncygpLT5zZXRBbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cyh0cnVlKTsKKworICAgIFJlZlB0
cjxGcmFtZT4gZnJhbWUgPSBGcmFtZTo6Y3JlYXRlKG1fcGFnZS5nZXQoKSwgMCwKKyAgICAgICAg
ICAgIGVtcHR5RnJhbWVMb2FkZXJDbGllbnQpOworICAgIGZyYW1lLT5zZXRWaWV3KEZyYW1lVmll
dzo6Y3JlYXRlKGZyYW1lLmdldCgpKSk7CisgICAgZnJhbWUtPmluaXQoKTsKKyAgICBmcmFtZS0+
dmlldygpLT5yZXNpemUobV9jbGllbnQtPmNvbnRlbnRTaXplKCkpOworCisgICAgQ1N0cmluZyBo
dG1sU291cmNlID0gbV9jbGllbnQtPmh0bWxTb3VyY2UoKS51dGY4KCk7CisgICAgRG9jdW1lbnRX
cml0ZXIqIHdyaXRlciA9IGZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+
d3JpdGVyKCk7CisgICAgbV9jbGllbnQtPndyaXRlRG9jdW1lbnQoKndyaXRlcik7CisKKyAgICBp
bnN0YWxsRG9tRnVuY3Rpb24oZnJhbWUuZ2V0KCkpOworCisgICAgd2VicGFnZS0+ZC0+c2V0UGFy
ZW50UG9wdXAodGhpcyk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIEpTVmFsdWVS
ZWYgc2V0VmFsdWVBbmRDbG9zZVBvcHVwQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsCisg
ICAgICAgIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiwgc2l6ZV90IGFyZ3VtZW50Q291bnQsCisg
ICAgICAgIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqKQoreworICAg
IEpTVmFsdWVSZWYganNSZXRWYWwgPSBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAg
ICBpZiAoYXJndW1lbnRDb3VudCA8PSAwKQorICAgICAgICByZXR1cm4ganNSZXRWYWw7CisKKyAg
ICBKU1N0cmluZ1JlZiBzdHJpbmcgPSBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3Vt
ZW50c1swXSwgMCk7CisgICAgc2l6ZV90IHNpemVVVEY4ID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRG
OENTdHJpbmdTaXplKHN0cmluZyk7CisgICAgY2hhciogc3RyQXJncyA9IG5ldyBjaGFyW3NpemVV
VEY4XTsKKyAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZywgc3RyQXJncywgc2l6ZVVU
RjgpOworICAgIEpTU3RyaW5nUmVsZWFzZShzdHJpbmcpOworCisgICAgSlNPYmplY3RSZWYgcG9w
VXBPYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwKKyAgICAgICAgICAgIGFyZ3VtZW50
c1thcmd1bWVudENvdW50IC0gMV0sIDApOworICAgIFBhZ2VQb3B1cENsaWVudCogY2xpZW50ID0K
KyAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UGFnZVBvcHVwQ2xpZW50Kj4oSlNPYmplY3RH
ZXRQcml2YXRlKHBvcFVwT2JqZWN0KSk7CisKKyAgICBBU1NFUlQoY2xpZW50KTsKKyAgICBjbGll
bnQtPnNldFZhbHVlQW5kQ2xvc2VQb3B1cCgwLCBzdHJBcmdzKTsKKworICAgIGRlbGV0ZSBzdHJB
cmdzW107CisgICAgcmV0dXJuIGpzUmV0VmFsOworfQorCitzdGF0aWMgdm9pZCBwb3BVcEV4dGVu
c2lvbkluaXRpYWxpemUoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIG9iamVjdCkK
K3sKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7
Cit9CisKK3N0YXRpYyB2b2lkIHBvcFVwRXh0ZW5zaW9uRmluYWxpemUoSlNPYmplY3RSZWYgb2Jq
ZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOworfQorCitzdGF0aWMgSlNTdGF0aWNG
dW5jdGlvbiBwb3BVcEV4dGVuc2lvblN0YXRpY0Z1bmN0aW9uc1tdID0KK3sKK3sgMCwgMCwgMCB9
LAoreyAwLCAwLCAwIH0KK307CisKK3N0YXRpYyBKU1N0YXRpY1ZhbHVlIHBvcFVwRXh0ZW5zaW9u
U3RhdGljVmFsdWVzW10gPQoreworeyAwLCAwLCAwLCAwIH0KK307CisKK3ZvaWQgUGFnZVBvcHVw
QmxhY2tCZXJyeTo6aW5zdGFsbERvbUZ1bmN0aW9uKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBKU0M6
OkpTTG9jayBsb2NrKEpTQzo6U2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKworICAgIEpTRE9NV2lu
ZG93KiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KGZyYW1lLCBtYWluVGhyZWFkTm9ybWFsV29ybGQo
KSk7CisgICAgQVNTRVJUKHdpbmRvdyk7CisKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHdp
bmRvdy0+Z2xvYmFsRXhlYygpOworICAgIEFTU0VSVChleGVjKTsKKworICAgIEpTQ29udGV4dFJl
ZiBjb250ZXh0ID0gOjp0b1JlZihleGVjKTsKKyAgICBKU09iamVjdFJlZiBnbG9iYWxPYmplY3Qg
PSBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QoY29udGV4dCk7CisgICAgSlNTdHJpbmdSZWYgZnVu
Y3Rpb25OYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoCisgICAgICAgICAgICAi
c2V0VmFsdWVBbmRDbG9zZVBvcHVwIik7CisgICAgSlNPYmplY3RSZWYgZnVuY3Rpb24gPSBKU09i
amVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhjb250ZXh0LAorICAgICAgICAgICAgZnVuY3Rp
b25OYW1lLCBzZXRWYWx1ZUFuZENsb3NlUG9wdXBDYWxsYmFjayk7CisgICAgSlNPYmplY3RTZXRQ
cm9wZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb24sCisg
ICAgICAgICAgICBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5LCAwKTsKKworICAgIC8vIFJlZ2lzdGVyIGNsaWVudCBpbnRvIERPTQor
ICAgIEpTQ2xhc3NEZWZpbml0aW9uIGRlZmluaXRpb24gPSBrSlNDbGFzc0RlZmluaXRpb25FbXB0
eTsKKyAgICBkZWZpbml0aW9uLnN0YXRpY1ZhbHVlcyA9IHBvcFVwRXh0ZW5zaW9uU3RhdGljVmFs
dWVzOworICAgIGRlZmluaXRpb24uc3RhdGljRnVuY3Rpb25zID0gcG9wVXBFeHRlbnNpb25TdGF0
aWNGdW5jdGlvbnM7CisgICAgZGVmaW5pdGlvbi5pbml0aWFsaXplID0gcG9wVXBFeHRlbnNpb25J
bml0aWFsaXplOworICAgIGRlZmluaXRpb24uZmluYWxpemUgPSBwb3BVcEV4dGVuc2lvbkZpbmFs
aXplOworICAgIEpTQ2xhc3NSZWYgY2xpZW50Q2xhc3MgPSBKU0NsYXNzQ3JlYXRlKCZkZWZpbml0
aW9uKTsKKworICAgIEpTT2JqZWN0UmVmIGNsaWVudENsYXNzT2JqZWN0ID0gSlNPYmplY3RNYWtl
KGNvbnRleHQsIGNsaWVudENsYXNzLCAwKTsKKyAgICBKU09iamVjdFNldFByaXZhdGUoY2xpZW50
Q2xhc3NPYmplY3QsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fY2xpZW50KSk7CisKKyAgICBK
U0M6OlVTdHJpbmcgbmFtZSgicG9wVXAiKTsKKworICAgIEpTQzo6UHV0UHJvcGVydHlTbG90IHNs
b3Q7CisgICAgd2luZG93LT5wdXQod2luZG93LCBleGVjLCBKU0M6OklkZW50aWZpZXIoZXhlYywg
bmFtZSksCisgICAgICAgICAgICB0b0pTKGNsaWVudENsYXNzT2JqZWN0KSwgc2xvdCk7CisKKyAg
ICBKU0NsYXNzUmVsZWFzZShjbGllbnRDbGFzcyk7Cit9CisKK2Jvb2wgUGFnZVBvcHVwQmxhY2tC
ZXJyeTo6aGFuZGxlTW91c2VFdmVudChQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQoreworICAg
IGlmICghbV9wYWdlLT5tYWluRnJhbWUoKSB8fCAhbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKGV2ZW50LnR5cGUoKSkgewor
ICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZDoKKyAgICAgICAgcmV0dXJuIG1fcGFn
ZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZU1vdmVFdmVudChldmVu
dCk7CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVByZXNzZWQ6CisgICAgICAgIHJldHVy
biBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VQcmVzc0V2
ZW50KGV2ZW50KTsKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ6CisgICAg
ICAgIHJldHVybiBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91
c2VSZWxlYXNlRXZlbnQoCisgICAgICAgICAgICAgICAgZXZlbnQpOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgUGFnZVBvcHVwQmxhY2tCZXJy
eTo6Y2xvc2VQb3B1cCgpCit7CisgICAgY2xvc2VXZWJQYWdlKCk7CisgICAgbV9jbGllbnQtPmRp
ZENsb3NlUG9wdXAoKTsKKyAgICBkZWxldGUgbV9jbGllbnQ7CisgICAgbV9jbGllbnQgPSAwOwor
ICAgIG1fd2ViUGFnZVByaXZhdGUtPmNsaWVudCgpLT5jbG9zZVBvcHVwV2ViVmlldygpOworfQor
Cit2b2lkIFBhZ2VQb3B1cEJsYWNrQmVycnk6OmNsb3NlV2ViUGFnZSgpCit7CisgICAgaWYgKCFt
X3BhZ2UpIHsKKyAgICAgICAgbV9wYWdlLT5jbGVhcigpOworICAgIH0gZWxzZSBpZiAobV9wYWdl
KSB7CisgICAgICAgIG1fcGFnZS0+c2V0R3JvdXBOYW1lKFN0cmluZygpKTsKKyAgICAgICAgbV9w
YWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJzKCk7CisgICAgICAgIG1f
cGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5zdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGlj
eU5vbmUpOworICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCktPmNsZWFyKCk7Cisg
ICAgICAgIG1fcGFnZS5jbGVhcigpOworfQorfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5oIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmU5MTYyOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBC
bGFja0JlcnJ5LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAx
ICBVU0EKKyAqLworCisjaWZuZGVmIFBhZ2VQb3B1cEJsYWNrQmVycnlfaAorI2RlZmluZSBQYWdl
UG9wdXBCbGFja0JlcnJ5X2gKKworI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJQYWdl
UG9wdXAuaCIKKworbmFtZXNwYWNlIEJsYWNrQmVycnkgeworbmFtZXNwYWNlIFdlYktpdCB7Citj
bGFzcyBXZWJQYWdlOworY2xhc3MgV2ViUGFnZVByaXZhdGU7Cit9Cit9CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIEZyYW1lOworY2xhc3MgUGFnZTsKK2NsYXNzIFBhZ2VQb3B1cENocm9t
ZUNsaWVudDsKK2NsYXNzIFBhZ2VQb3B1cENsaWVudDsKK2NsYXNzIFBsYXRmb3JtTW91c2VFdmVu
dDsKKworY2xhc3MgUGFnZVBvcHVwQmxhY2tCZXJyeSA6IHB1YmxpYyBQYWdlUG9wdXAgeworcHVi
bGljOgorICAgIFBhZ2VQb3B1cEJsYWNrQmVycnkoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdl
UHJpdmF0ZSosIFBhZ2VQb3B1cENsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICB+UGFnZVBv
cHVwQmxhY2tCZXJyeSgpOworCisgICAgdm9pZCBzZW5kQ3JlYXRlUG9wdXBXZWJWaWV3UmVxdWVz
dCgpOworICAgIGJvb2wgaW5pdChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2UqKTsKKyAgICB2
b2lkIGNsb3NlUG9wdXAoKTsKKyAgICB2b2lkIGluc3RhbGxEb21GdW5jdGlvbihGcmFtZSopOwor
ICAgIHZvaWQgc2V0UmVjdCgpOworICAgIHZvaWQgY2xvc2VXZWJQYWdlKCk7CisKKyAgICBib29s
IGhhbmRsZU1vdXNlRXZlbnQoUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisKK3ByaXZhdGU6CisgICAg
QmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZSogbV93ZWJQYWdlUHJpdmF0ZTsKKyAg
ICBQYWdlUG9wdXBDbGllbnQqIG1fY2xpZW50OworICAgIEludFJlY3QgbV9yZWN0OworICAgIE93
blB0cjxXZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CisgICAgT3duUHRyPFBhZ2VQb3B1cENocm9tZUNs
aWVudD4gbV9jaHJvbWVDbGllbnQ7CisKKyAgICBmcmllbmQgY2xhc3MgUGFnZVBvcHVwQ2hyb21l
Q2xpZW50OworfTsKK30KKworI2VuZGlmIC8vIFBhZ2VQb3B1cEJsYWNrQmVycnlfaAotLSAKMS43
LjEwLjEKCg==
</data>
<flag name="review"
          id="146726"
          type_id="1"
          status="-"
          setter="rwlbuis"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140781</attachid>
            <date>2012-05-08 14:14:38 -0700</date>
            <delta_ts>2012-05-08 14:45:24 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>0001-2012-05-08-Crystal-Zhang-haizhang-rim.com.patch</filename>
            <type>text/plain</type>
            <size>15969</size>
            <attacher name="Crystal Zhang">haizhang</attacher>
            
              <data encoding="base64">RnJvbSA4M2EzNmZkZWMwYjZhYzJlODVhOGE3NTEwMjIwMGIwNTMwNTUwYzQwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDcnlzdGFsIFpoYW5nIDxoYWl6aGFuZ0ByaW0uY29tPgpEYXRl
OiBUdWUsIDggTWF5IDIwMTIgMTQ6Mzk6MjkgLTA0MDAKU3ViamVjdDogW1BBVENIXSAyMDEyLTA1
LTA4ICBDcnlzdGFsIFpoYW5nICA8aGFpemhhbmdAcmltLmNvbT4KCiAgICAgICAgICAgIFtCbGFj
a0JlcnJ5XSBJbXBsZW1lbnQgYSBwb3B1cCBjbGllbnQgZm9yIEhUTUwgY29udHJvbHMKICAgICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NjcwCgogICAg
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgICAgIEltcGxlbWVu
dCBhIHBvcHVwIGNsaWVudCBmb3IgSFRNTCBjb250cm9scywgd2hpY2ggd291bGQgYmUgdXNlZCB0
byBsb2FkCiAgICAgICAgICAgIGRpZmZlcmVudCBwb3B1cHMgYWNjb3JkaW5nIHRvIHBvcHVwIHR5
cGUuCgogICAgICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuY3Bw
OiBBZGRlZC4KICAgICAgICAgICAgKFdlYkNvcmUpOgogICAgICAgICAgICAoUGFnZVBvcHVwQ2hy
b21lQ2xpZW50KToKICAgICAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cENocm9tZUNsaWVudDo6
UGFnZVBvcHVwQ2hyb21lQ2xpZW50KToKICAgICAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cENo
cm9tZUNsaWVudDo6Y2xvc2VXaW5kb3dTb29uKToKICAgICAgICAgICAgKFdlYkNvcmU6OlBhZ2VQ
b3B1cENocm9tZUNsaWVudDo6d2ViUGFnZSk6CiAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9w
dXBCbGFja0JlcnJ5OjpQYWdlUG9wdXBCbGFja0JlcnJ5KToKICAgICAgICAgICAgKFdlYkNvcmU6
OlBhZ2VQb3B1cEJsYWNrQmVycnk6On5QYWdlUG9wdXBCbGFja0JlcnJ5KToKICAgICAgICAgICAg
KFdlYkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6OnNlbmRDcmVhdGVQb3B1cFdlYlZpZXdSZXF1
ZXN0KToKICAgICAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6OmluaXQpOgog
ICAgICAgICAgICAoV2ViQ29yZTo6c2V0VmFsdWVBbmRDbG9zZVBvcHVwQ2FsbGJhY2spOgogICAg
ICAgICAgICAoV2ViQ29yZTo6cG9wVXBFeHRlbnNpb25Jbml0aWFsaXplKToKICAgICAgICAgICAg
KFdlYkNvcmU6OnBvcFVwRXh0ZW5zaW9uRmluYWxpemUpOgogICAgICAgICAgICAoV2ViQ29yZTo6
UGFnZVBvcHVwQmxhY2tCZXJyeTo6aW5zdGFsbERvbUZ1bmN0aW9uKToKICAgICAgICAgICAgKFdl
YkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6OmhhbmRsZU1vdXNlRXZlbnQpOgogICAgICAgICAg
ICAoV2ViQ29yZTo6UGFnZVBvcHVwQmxhY2tCZXJyeTo6Y2xvc2VQb3B1cCk6CiAgICAgICAgICAg
IChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5OjpjbG9zZVdlYlBhZ2UpOgogICAgICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuaDogQWRkZWQuCiAgICAgICAg
ICAgIChXZWJLaXQpOgogICAgICAgICAgICAoV2ViQ29yZSk6CiAgICAgICAgICAgIChQYWdlUG9w
dXBCbGFja0JlcnJ5KToKICAgICAgICAgICAgKiBQbGF0Zm9ybUJsYWNrQmVycnkuY21ha2U6Ci0t
LQogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDExICsKIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlICAgICAgICAgICAg
IHwgICAgMSArCiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICB8ICAgMzIgKysrCiAuLi4vV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5j
cHAgICAgICAgICB8ICAyNTQgKysrKysrKysrKysrKysrKysrKysKIC4uLi9XZWJDb3JlU3VwcG9y
dC9QYWdlUG9wdXBCbGFja0JlcnJ5LmggICAgICAgICAgIHwgICA2NyArKysrKysKIDUgZmlsZXMg
Y2hhbmdlZCwgMzY1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5jcHAKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
UGFnZVBvcHVwQmxhY2tCZXJyeS5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjNzRhYjAyLi5lMzE1MzIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA1LTA4ICBDcnlzdGFsIFpoYW5nICA8aGFpemhh
bmdAcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gSW1wbGVtZW50IGEgcG9wdXAgY2xp
ZW50IGZvciBIVE1MIGNvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04NTY3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBwb3B1cCBjbGllbnQgZmlsZSB0byBidWlsZCBzeXN0ZW0uCisgICAg
ICAgIAorICAgICAgICAqIFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZToKKwogMjAxMi0wNS0wOCAg
Sm9uYXRoYW4gRG9uZyAgPGpvbmF0aGFuLmRvbmdAdG9yY2htb2JpbGUuY29tLmNuPgogCiAgICAg
ICAgIFtCbGFja0JlcnJ5XSBBdXRvZmlsbE1hbmFnZXIgaW1wbGVtZW50YXRpb24gdXBzdHJlYW0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKaW5kZXggZjI0NDc3OS4uNDU1ZmVk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKQEAgLTc1LDYgKzc1LDcg
QEAgTElTVChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L0phdmFTY3JpcHREZWJ1Z2dlckJsYWNrQmVycnkuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJJbXBsLmNwcAogICAgIGJsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvVmlicmF0aW9uQ2xpZW50QmxhY2tCZXJyeS5jcHAKKyAgICBibGFja2Jl
cnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuY3BwCiAgICAgYmxhY2tiZXJy
eS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZUNvbXBvc2l0aW5nU3VyZmFjZS5jcHAKICAgICBi
bGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQmFja2luZ1N0b3JlVGlsZS5jcHAKICAgICBibGFja2Jl
cnJ5L1dlYktpdFN1cHBvcnQvQmFja2luZ1N0b3JlQ2xpZW50LmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9DaGFuZ2VMb2cKaW5kZXggNTNkNThjOC4uNDNlNzk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTItMDUtMDggIENyeXN0YWwgWmhhbmcgIDxo
YWl6aGFuZ0ByaW0uY29tPgorICAgIAorICAgICAgICAgICAgW0JsYWNrQmVycnldIEltcGxlbWVu
dCBhIHBvcHVwIGNsaWVudCBmb3IgSFRNTCBjb250cm9scworICAgICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NjcwCisgICAgCisgICAgICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAKKyAgICAgICAgICAgIEltcGxlbWVudCBh
IHBvcHVwIGNsaWVudCBmb3IgSFRNTCBjb250cm9scywgd2hpY2ggd291bGQgYmUgdXNlZCB0byBs
b2FkCisgICAgICAgICAgICBkaWZmZXJlbnQgcG9wdXBzIGFjY29yZGluZyB0byBwb3B1cCB0eXBl
LgorICAgIAorICAgICAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5
LmNwcDogQWRkZWQuCisgICAgICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICAgICAoUGFnZVBv
cHVwQ2hyb21lQ2xpZW50KToKKyAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBDaHJvbWVD
bGllbnQ6OlBhZ2VQb3B1cENocm9tZUNsaWVudCk6CisgICAgICAgICAgICAoV2ViQ29yZTo6UGFn
ZVBvcHVwQ2hyb21lQ2xpZW50OjpjbG9zZVdpbmRvd1Nvb24pOgorICAgICAgICAgICAgKFdlYkNv
cmU6OlBhZ2VQb3B1cENocm9tZUNsaWVudDo6d2ViUGFnZSk6CisgICAgICAgICAgICAoV2ViQ29y
ZTo6UGFnZVBvcHVwQmxhY2tCZXJyeTo6UGFnZVBvcHVwQmxhY2tCZXJyeSk6CisgICAgICAgICAg
ICAoV2ViQ29yZTo6UGFnZVBvcHVwQmxhY2tCZXJyeTo6flBhZ2VQb3B1cEJsYWNrQmVycnkpOgor
ICAgICAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6OnNlbmRDcmVhdGVQb3B1
cFdlYlZpZXdSZXF1ZXN0KToKKyAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0Jl
cnJ5Ojppbml0KToKKyAgICAgICAgICAgIChXZWJDb3JlOjpzZXRWYWx1ZUFuZENsb3NlUG9wdXBD
YWxsYmFjayk6CisgICAgICAgICAgICAoV2ViQ29yZTo6cG9wVXBFeHRlbnNpb25Jbml0aWFsaXpl
KToKKyAgICAgICAgICAgIChXZWJDb3JlOjpwb3BVcEV4dGVuc2lvbkZpbmFsaXplKToKKyAgICAg
ICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5OjppbnN0YWxsRG9tRnVuY3Rpb24p
OgorICAgICAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6OmhhbmRsZU1vdXNl
RXZlbnQpOgorICAgICAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6OmNsb3Nl
UG9wdXApOgorICAgICAgICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6OmNsb3Nl
V2ViUGFnZSk6CisgICAgICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVy
cnkuaDogQWRkZWQuCisgICAgICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgICAgIChQYWdlUG9wdXBCbGFja0JlcnJ5KToKKwogMjAxMi0wNS0wOCAgQW5k
cmV3IExvICA8YW5sb0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBPdmVyLXNjcm9s
bCBpbWFnZSBzaG91bGQgYmUgdGlsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODE3MTUwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNr
QmVycnkuY3BwCkBAIC0wLDAgKzEsMjU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJQYWdlUG9wdXBCbGFj
a0JlcnJ5LmgiCisKKyNpbmNsdWRlICJDaHJvbWVDbGllbnRCbGFja0JlcnJ5LmgiCisjaW5jbHVk
ZSAiRW1wdHlDbGllbnRzLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yQ2xpZW50QmxhY2tCZXJyeS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2lu
Y2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFnZUdyb3Vw
LmgiCisjaW5jbHVkZSAiUGFnZVBvcHVwQ2xpZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Nb3Vz
ZUV2ZW50LmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisj
aW5jbHVkZSAiV2ViUGFnZV9wLmgiCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdC5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+CisKKy8vIEZpeG1lOiBzaG91bGQgZ2V0IHRoZSBoZWln
aHQgZnJvbSBydW50aW1lLgorI2RlZmluZSBVUkxfQkFSX0hFSUdIVCA3MAorCit1c2luZyBuYW1l
c3BhY2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOwordXNpbmcgbmFtZXNwYWNlIEJs
YWNrQmVycnk6OldlYktpdDsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGFnZVBvcHVw
Q2hyb21lQ2xpZW50IDogcHVibGljIENocm9tZUNsaWVudEJsYWNrQmVycnkgeworcHVibGljOgor
ICAgIGV4cGxpY2l0IFBhZ2VQb3B1cENocm9tZUNsaWVudChXZWJQYWdlUHJpdmF0ZSogd2VicGFn
ZSwgUGFnZVBvcHVwQmxhY2tCZXJyeSogcG9wdXApCisgICAgICAgIDogQ2hyb21lQ2xpZW50Qmxh
Y2tCZXJyeSh3ZWJwYWdlKQorICAgICAgICAsIG1fcG9wdXAocG9wdXApCisgICAgICAgICwgbV93
ZWJQYWdlKHdlYnBhZ2UpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdp
bmRvd1Nvb24oKQorICAgIHsKKyAgICAgICAgbV9wb3B1cC0+Y2xvc2VQb3B1cCgpOworICAgIH0K
KworICAgIFdlYlBhZ2VQcml2YXRlKiB3ZWJQYWdlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBt
X3dlYlBhZ2U7CisgICAgfQorCisgICAgUGFnZVBvcHVwQmxhY2tCZXJyeSogbV9wb3B1cDsKKyAg
ICBXZWJQYWdlUHJpdmF0ZSogbV93ZWJQYWdlOworICAgIEludFJlY3QgbV9yZWN0OworfTsKKwor
UGFnZVBvcHVwQmxhY2tCZXJyeTo6UGFnZVBvcHVwQmxhY2tCZXJyeShCbGFja0JlcnJ5OjpXZWJL
aXQ6OldlYlBhZ2VQcml2YXRlKiB3ZWJQYWdlLCBQYWdlUG9wdXBDbGllbnQqIGNsaWVudCwgY29u
c3QgSW50UmVjdCYgcmVjdCkKKyAgICA6IG1fd2ViUGFnZVByaXZhdGUod2ViUGFnZSkKKyAgICAs
IG1fY2xpZW50KGFkb3B0UHRyKGNsaWVudCkpCit7CisgICAgbV9yZWN0ID0gSW50UmVjdChyZWN0
LngoKSwgcmVjdC55KCkgLSBVUkxfQkFSX0hFSUdIVCwgY2xpZW50LT5jb250ZW50U2l6ZSgpLndp
ZHRoKCksIGNsaWVudC0+Y29udGVudFNpemUoKS5oZWlnaHQoKSk7Cit9CisKK1BhZ2VQb3B1cEJs
YWNrQmVycnk6On5QYWdlUG9wdXBCbGFja0JlcnJ5KCkKK3sKK30KKwordm9pZCBQYWdlUG9wdXBC
bGFja0JlcnJ5OjpzZW5kQ3JlYXRlUG9wdXBXZWJWaWV3UmVxdWVzdCgpCit7CisgICAgbV93ZWJQ
YWdlUHJpdmF0ZS0+Y2xpZW50KCktPmNyZWF0ZVBvcHVwV2ViVmlldyhtX3JlY3QpOworfQorCiti
b29sIFBhZ2VQb3B1cEJsYWNrQmVycnk6OmluaXQoV2ViUGFnZSogd2VicGFnZSkKK3sKKyAgICBz
dGF0aWMgRnJhbWVMb2FkZXJDbGllbnQqIGVtcHR5RnJhbWVMb2FkZXJDbGllbnQgPSBuZXcgRW1w
dHlGcmFtZUxvYWRlckNsaWVudDsKKyAgICBQYWdlOjpQYWdlQ2xpZW50cyBwYWdlQ2xpZW50czsK
KyAgICBtX2Nocm9tZUNsaWVudCA9IGFkb3B0UHRyKG5ldyBQYWdlUG9wdXBDaHJvbWVDbGllbnQo
d2VicGFnZS0+ZCwgdGhpcykpOworICAgIHN0YXRpYyBFZGl0b3JDbGllbnQqIGVtcHR5RWRpdG9y
Q2xpZW50ID0gbmV3IEVtcHR5RWRpdG9yQ2xpZW50OworICAgIHBhZ2VDbGllbnRzLmNocm9tZUNs
aWVudCA9IG1fY2hyb21lQ2xpZW50LmdldCgpOworICAgIHBhZ2VDbGllbnRzLmVkaXRvckNsaWVu
dCA9IGVtcHR5RWRpdG9yQ2xpZW50OworI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIHN0
YXRpYyBDb250ZXh0TWVudUNsaWVudCogZW1wdHlDb250ZXh0TWVudUNsaWVudCA9IG5ldyBFbXB0
eUNvbnRleHRNZW51Q2xpZW50OworICAgIHBhZ2VDbGllbnRzLmNvbnRleHRNZW51Q2xpZW50ID0g
ZW1wdHlDb250ZXh0TWVudUNsaWVudDsKKyNlbmRpZgorI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQp
CisgICAgc3RhdGljIERyYWdDbGllbnQqIGVtcHR5RHJhZ0NsaWVudCA9IG5ldyBFbXB0eURyYWdD
bGllbnQ7CisgICAgcGFnZUNsaWVudHMuZHJhZ0NsaWVudCA9IGVtcHR5RHJhZ0NsaWVudDsKKyNl
bmRpZgorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgc3RhdGljIEluc3BlY3RvckNsaWVudCog
ZW1wdHlJbnNwZWN0b3JDbGllbnQgPSBuZXcgRW1wdHlJbnNwZWN0b3JDbGllbnQ7CisgICAgcGFn
ZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50ID0gZW1wdHlJbnNwZWN0b3JDbGllbnQ7CisjZW5kaWYK
KworICAgIG1fcGFnZSA9IGFkb3B0UHRyKG5ldyBQYWdlKHBhZ2VDbGllbnRzKSk7CisgICAgbV9w
YWdlLT5zZXR0aW5ncygpLT5zZXRTY3JpcHRFbmFibGVkKHRydWUpOworICAgIG1fcGFnZS0+c2V0
dGluZ3MoKS0+c2V0QWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3ModHJ1ZSk7CisKKyAgICBSZWZQ
dHI8RnJhbWU+IGZyYW1lID0gRnJhbWU6OmNyZWF0ZShtX3BhZ2UuZ2V0KCksIDAsCisgICAgICAg
ICAgICBlbXB0eUZyYW1lTG9hZGVyQ2xpZW50KTsKKyAgICBmcmFtZS0+c2V0VmlldyhGcmFtZVZp
ZXc6OmNyZWF0ZShmcmFtZS5nZXQoKSkpOworICAgIGZyYW1lLT5pbml0KCk7CisgICAgZnJhbWUt
PnZpZXcoKS0+cmVzaXplKG1fY2xpZW50LT5jb250ZW50U2l6ZSgpKTsKKworICAgIENTdHJpbmcg
aHRtbFNvdXJjZSA9IG1fY2xpZW50LT5odG1sU291cmNlKCkudXRmOCgpOworICAgIERvY3VtZW50
V3JpdGVyKiB3cml0ZXIgPSBmcmFtZS0+bG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCkt
PndyaXRlcigpOworICAgIG1fY2xpZW50LT53cml0ZURvY3VtZW50KCp3cml0ZXIpOworCisgICAg
aW5zdGFsbERvbUZ1bmN0aW9uKGZyYW1lLmdldCgpKTsKKworICAgIHdlYnBhZ2UtPmQtPnNldFBh
cmVudFBvcHVwKHRoaXMpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBKU1ZhbHVl
UmVmIHNldFZhbHVlQW5kQ2xvc2VQb3B1cENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LAor
ICAgICAgICBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYsIHNpemVfdCBhcmd1bWVudENvdW50LAor
ICAgICAgICBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKikKK3sKKyAg
ICBKU1ZhbHVlUmVmIGpzUmV0VmFsID0gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cisg
ICAgaWYgKGFyZ3VtZW50Q291bnQgPD0gMCkKKyAgICAgICAgcmV0dXJuIGpzUmV0VmFsOworCisg
ICAgSlNTdHJpbmdSZWYgc3RyaW5nID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1
bWVudHNbMF0sIDApOworICAgIHNpemVfdCBzaXplVVRGOCA9IEpTU3RyaW5nR2V0TWF4aW11bVVU
RjhDU3RyaW5nU2l6ZShzdHJpbmcpOworICAgIFdURjo6VmVjdG9yPGNoYXI+IHN0ckFyZ3M7Cisg
ICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhzdHJpbmcsIHN0ckFyZ3MuZGF0YSgpLCBzaXplVVRG
OCk7CisgICAgSlNTdHJpbmdSZWxlYXNlKHN0cmluZyk7CisKKyAgICBKU09iamVjdFJlZiBwb3BV
cE9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LAorICAgICAgICAgICAgYXJndW1lbnRz
W2FyZ3VtZW50Q291bnQgLSAxXSwgMCk7CisgICAgUGFnZVBvcHVwQ2xpZW50KiBjbGllbnQgPQor
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQYWdlUG9wdXBDbGllbnQqPihKU09iamVjdEdl
dFByaXZhdGUocG9wVXBPYmplY3QpKTsKKworICAgIEFTU0VSVChjbGllbnQpOworICAgIGNsaWVu
dC0+c2V0VmFsdWVBbmRDbG9zZVBvcHVwKDAsIHN0ckFyZ3MuZGF0YSgpKTsKKworICAgIHJldHVy
biBqc1JldFZhbDsKK30KKworc3RhdGljIHZvaWQgcG9wVXBFeHRlbnNpb25Jbml0aWFsaXplKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBvYmplY3QpCit7CisgICAgVU5VU0VEX1BB
UkFNKGNvbnRleHQpOworICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOworfQorCitzdGF0aWMgdm9p
ZCBwb3BVcEV4dGVuc2lvbkZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKK3sKKyAgICBVTlVT
RURfUEFSQU0ob2JqZWN0KTsKK30KKworc3RhdGljIEpTU3RhdGljRnVuY3Rpb24gcG9wVXBFeHRl
bnNpb25TdGF0aWNGdW5jdGlvbnNbXSA9Cit7Cit7IDAsIDAsIDAgfSwKK3sgMCwgMCwgMCB9Cit9
OworCitzdGF0aWMgSlNTdGF0aWNWYWx1ZSBwb3BVcEV4dGVuc2lvblN0YXRpY1ZhbHVlc1tdID0K
K3sKK3sgMCwgMCwgMCwgMCB9Cit9OworCit2b2lkIFBhZ2VQb3B1cEJsYWNrQmVycnk6Omluc3Rh
bGxEb21GdW5jdGlvbihGcmFtZSogZnJhbWUpCit7CisgICAgSlNDOjpKU0xvY2sgbG9jayhKU0M6
OlNpbGVuY2VBc3NlcnRpb25zT25seSk7CisKKyAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gdG9K
U0RPTVdpbmRvdyhmcmFtZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgIEFTU0VSVCh3
aW5kb3cpOworCisgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB3aW5kb3ctPmdsb2JhbEV4ZWMo
KTsKKyAgICBBU1NFUlQoZXhlYyk7CisKKyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IDo6dG9S
ZWYoZXhlYyk7CisgICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlNDb250ZXh0R2V0R2xv
YmFsT2JqZWN0KGNvbnRleHQpOworICAgIEpTU3RyaW5nUmVmIGZ1bmN0aW9uTmFtZSA9IEpTU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKAorICAgICAgICAgICAgInNldFZhbHVlQW5kQ2xvc2VQ
b3B1cCIpOworICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uID0gSlNPYmplY3RNYWtlRnVuY3Rpb25X
aXRoQ2FsbGJhY2soY29udGV4dCwKKyAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSwgc2V0VmFsdWVB
bmRDbG9zZVBvcHVwQ2FsbGJhY2spOworICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4dCwg
Z2xvYmFsT2JqZWN0LCBmdW5jdGlvbk5hbWUsIGZ1bmN0aW9uLAorICAgICAgICAgICAga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIHwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSwg
MCk7CisKKyAgICAvLyBSZWdpc3RlciBjbGllbnQgaW50byBET00KKyAgICBKU0NsYXNzRGVmaW5p
dGlvbiBkZWZpbml0aW9uID0ga0pTQ2xhc3NEZWZpbml0aW9uRW1wdHk7CisgICAgZGVmaW5pdGlv
bi5zdGF0aWNWYWx1ZXMgPSBwb3BVcEV4dGVuc2lvblN0YXRpY1ZhbHVlczsKKyAgICBkZWZpbml0
aW9uLnN0YXRpY0Z1bmN0aW9ucyA9IHBvcFVwRXh0ZW5zaW9uU3RhdGljRnVuY3Rpb25zOworICAg
IGRlZmluaXRpb24uaW5pdGlhbGl6ZSA9IHBvcFVwRXh0ZW5zaW9uSW5pdGlhbGl6ZTsKKyAgICBk
ZWZpbml0aW9uLmZpbmFsaXplID0gcG9wVXBFeHRlbnNpb25GaW5hbGl6ZTsKKyAgICBKU0NsYXNz
UmVmIGNsaWVudENsYXNzID0gSlNDbGFzc0NyZWF0ZSgmZGVmaW5pdGlvbik7CisKKyAgICBKU09i
amVjdFJlZiBjbGllbnRDbGFzc09iamVjdCA9IEpTT2JqZWN0TWFrZShjb250ZXh0LCBjbGllbnRD
bGFzcywgMCk7CisgICAgSlNPYmplY3RTZXRQcml2YXRlKGNsaWVudENsYXNzT2JqZWN0LCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihtX2NsaWVudC5nZXQoKSkpOworCisgICAgSlNDOjpVU3RyaW5n
IG5hbWUoInBvcFVwIik7CisKKyAgICBKU0M6OlB1dFByb3BlcnR5U2xvdCBzbG90OworICAgIHdp
bmRvdy0+cHV0KHdpbmRvdywgZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsIG5hbWUpLAorICAg
ICAgICAgICAgdG9KUyhjbGllbnRDbGFzc09iamVjdCksIHNsb3QpOworCisgICAgSlNDbGFzc1Jl
bGVhc2UoY2xpZW50Q2xhc3MpOworfQorCitib29sIFBhZ2VQb3B1cEJsYWNrQmVycnk6OmhhbmRs
ZU1vdXNlRXZlbnQoUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAoIW1fcGFn
ZS0+bWFpbkZyYW1lKCkgfHwgIW1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoIChldmVudC50eXBlKCkpIHsKKyAgICBjYXNlIFBs
YXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQ6CisgICAgICAgIHJldHVybiBtX3BhZ2UtPm1haW5GcmFt
ZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VNb3ZlRXZlbnQoZXZlbnQpOworICAgIGNh
c2UgUGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkOgorICAgICAgICByZXR1cm4gbV9wYWdlLT5t
YWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUHJlc3NFdmVudChldmVudCk7
CisgICAgY2FzZSBQbGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOgorICAgICAgICByZXR1cm4g
bV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUmVsZWFzZUV2
ZW50KGV2ZW50KTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
fQorCit2b2lkIFBhZ2VQb3B1cEJsYWNrQmVycnk6OmNsb3NlUG9wdXAoKQoreworICAgIGNsb3Nl
V2ViUGFnZSgpOworICAgIG1fY2xpZW50LT5kaWRDbG9zZVBvcHVwKCk7CisgICAgbV93ZWJQYWdl
UHJpdmF0ZS0+Y2xpZW50KCktPmNsb3NlUG9wdXBXZWJWaWV3KCk7Cit9CisKK3ZvaWQgUGFnZVBv
cHVwQmxhY2tCZXJyeTo6Y2xvc2VXZWJQYWdlKCkKK3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9wYWdlLT5zZXRHcm91cE5hbWUoU3RyaW5nKCkpOworICAgIG1f
cGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVycygpOworICAgIG1fcGFn
ZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5zdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeU5v
bmUpOworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+Y2xlYXIoKTsKKyAgICBtX3Bh
Z2UuY2xlYXIoKTsKK30KK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVjNzJjZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5o
CkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4g
TW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8K
KworI2lmbmRlZiBQYWdlUG9wdXBCbGFja0JlcnJ5X2gKKyNkZWZpbmUgUGFnZVBvcHVwQmxhY2tC
ZXJyeV9oCisKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiUGFnZVBvcHVwLmgiCisK
KworbmFtZXNwYWNlIEJsYWNrQmVycnkgeworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJQ
YWdlOworY2xhc3MgV2ViUGFnZVByaXZhdGU7Cit9Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIEZyYW1lOworY2xhc3MgUGFnZTsKK2NsYXNzIFBhZ2VQb3B1cENocm9tZUNsaWVudDsK
K2NsYXNzIFBhZ2VQb3B1cENsaWVudDsKK2NsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKKworY2xh
c3MgUGFnZVBvcHVwQmxhY2tCZXJyeSA6IHB1YmxpYyBQYWdlUG9wdXAgeworcHVibGljOgorICAg
IFBhZ2VQb3B1cEJsYWNrQmVycnkoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZSos
IFBhZ2VQb3B1cENsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICB+UGFnZVBvcHVwQmxhY2tC
ZXJyeSgpOworCisgICAgdm9pZCBzZW5kQ3JlYXRlUG9wdXBXZWJWaWV3UmVxdWVzdCgpOworICAg
IGJvb2wgaW5pdChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2UqKTsKKyAgICB2b2lkIGNsb3Nl
UG9wdXAoKTsKKyAgICB2b2lkIGluc3RhbGxEb21GdW5jdGlvbihGcmFtZSopOworICAgIHZvaWQg
c2V0UmVjdCgpOworICAgIHZvaWQgY2xvc2VXZWJQYWdlKCk7CisKKyAgICBib29sIGhhbmRsZU1v
dXNlRXZlbnQoUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisKKworcHJpdmF0ZToKKyAgICBCbGFja0Jl
cnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlKiBtX3dlYlBhZ2VQcml2YXRlOworICAgIE93blB0
cjxQYWdlUG9wdXBDbGllbnQ+IG1fY2xpZW50OworICAgIEludFJlY3QgbV9yZWN0OworICAgIE93
blB0cjxXZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CisgICAgT3duUHRyPFBhZ2VQb3B1cENocm9tZUNs
aWVudD4gbV9jaHJvbWVDbGllbnQ7CisKKyAgICBmcmllbmQgY2xhc3MgUGFnZVBvcHVwQ2hyb21l
Q2xpZW50OworfTsKKworfQorCisjZW5kaWYgLy8gUGFnZVBvcHVwQmxhY2tCZXJyeV9oCi0tIAox
LjcuMTAuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140790</attachid>
            <date>2012-05-08 14:45:24 -0700</date>
            <delta_ts>2012-05-08 15:08:10 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>0001-2012-05-08-Crystal-Zhang-haizhang-rim.com.patch</filename>
            <type>text/plain</type>
            <size>16014</size>
            <attacher name="Crystal Zhang">haizhang</attacher>
            
              <data encoding="base64">RnJvbSBiMmRkMzY3NjlmYTJkOWIxZjExYjI4NTc4ZTk2YzhiNmFjNGU4ZTQxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDcnlzdGFsIFpoYW5nIDxoYWl6aGFuZ0ByaW0uY29tPgpEYXRl
OiBUdWUsIDggTWF5IDIwMTIgMTQ6Mzk6MjkgLTA0MDAKU3ViamVjdDogW1BBVENIIDEvMl0gMjAx
Mi0wNS0wOCAgQ3J5c3RhbCBaaGFuZyAgPGhhaXpoYW5nQHJpbS5jb20+CgogICAgICAgICAgICBb
QmxhY2tCZXJyeV0gSW1wbGVtZW50IGEgcG9wdXAgY2xpZW50IGZvciBIVE1MIGNvbnRyb2xzCiAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTY3MAoK
ICAgICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgICAgICBJbXBs
ZW1lbnQgYSBwb3B1cCBjbGllbnQgZm9yIEhUTUwgY29udHJvbHMsIHdoaWNoIHdvdWxkIGJlIHVz
ZWQgdG8gbG9hZAogICAgICAgICAgICBkaWZmZXJlbnQgcG9wdXBzIGFjY29yZGluZyB0byBwb3B1
cCB0eXBlLgoKICAgICAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5
LmNwcDogQWRkZWQuCiAgICAgICAgICAgIChXZWJDb3JlKToKICAgICAgICAgICAgKFBhZ2VQb3B1
cENocm9tZUNsaWVudCk6CiAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBDaHJvbWVDbGll
bnQ6OlBhZ2VQb3B1cENocm9tZUNsaWVudCk6CiAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9w
dXBDaHJvbWVDbGllbnQ6OmNsb3NlV2luZG93U29vbik6CiAgICAgICAgICAgIChXZWJDb3JlOjpQ
YWdlUG9wdXBDaHJvbWVDbGllbnQ6OndlYlBhZ2UpOgogICAgICAgICAgICAoV2ViQ29yZTo6UGFn
ZVBvcHVwQmxhY2tCZXJyeTo6UGFnZVBvcHVwQmxhY2tCZXJyeSk6CiAgICAgICAgICAgIChXZWJD
b3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5Ojp+UGFnZVBvcHVwQmxhY2tCZXJyeSk6CiAgICAgICAg
ICAgIChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5OjpzZW5kQ3JlYXRlUG9wdXBXZWJWaWV3
UmVxdWVzdCk6CiAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5Ojppbml0
KToKICAgICAgICAgICAgKFdlYkNvcmU6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cENhbGxiYWNrKToK
ICAgICAgICAgICAgKFdlYkNvcmU6OnBvcFVwRXh0ZW5zaW9uSW5pdGlhbGl6ZSk6CiAgICAgICAg
ICAgIChXZWJDb3JlOjpwb3BVcEV4dGVuc2lvbkZpbmFsaXplKToKICAgICAgICAgICAgKFdlYkNv
cmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6Omluc3RhbGxEb21GdW5jdGlvbik6CiAgICAgICAgICAg
IChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5OjpoYW5kbGVNb3VzZUV2ZW50KToKICAgICAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6OmNsb3NlUG9wdXApOgogICAgICAg
ICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQmxhY2tCZXJyeTo6Y2xvc2VXZWJQYWdlKToKICAgICAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5Lmg6IEFkZGVkLgogICAg
ICAgICAgICAoV2ViS2l0KToKICAgICAgICAgICAgKFdlYkNvcmUpOgogICAgICAgICAgICAoUGFn
ZVBvcHVwQmxhY2tCZXJyeSk6CiAgICAgICAgICAgICogUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtl
OgotLS0KIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAxMSArCiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZSAgICAgICAg
ICAgICB8ICAgIDEgKwogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgfCAgIDMyICsrKwogLi4uL1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVy
cnkuY3BwICAgICAgICAgfCAgMjU0ICsrKysrKysrKysrKysrKysrKysrCiAuLi4vV2ViQ29yZVN1
cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5oICAgICAgICAgICB8ICAgNjcgKysrKysrCiA1IGZp
bGVzIGNoYW5nZWQsIDM2NSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuY3Bw
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzc0YWIwMi4uZTMxNTMyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNS0wOCAgQ3J5c3RhbCBaaGFuZyAgPGhh
aXpoYW5nQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIEltcGxlbWVudCBhIHBvcHVw
IGNsaWVudCBmb3IgSFRNTCBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODU2NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgcG9wdXAgY2xpZW50IGZpbGUgdG8gYnVpbGQgc3lzdGVtLgor
ICAgICAgICAKKyAgICAgICAgKiBQbGF0Zm9ybUJsYWNrQmVycnkuY21ha2U6CisKIDIwMTItMDUt
MDggIEpvbmF0aGFuIERvbmcgIDxqb25hdGhhbi5kb25nQHRvcmNobW9iaWxlLmNvbS5jbj4KIAog
ICAgICAgICBbQmxhY2tCZXJyeV0gQXV0b2ZpbGxNYW5hZ2VyIGltcGxlbWVudGF0aW9uIHVwc3Ry
ZWFtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZSBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCmluZGV4IGYyNDQ3NzkuLjQ1
NWZlZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC03NSw2ICs3
NSw3IEBAIExJU1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgYmxhY2tiZXJyeS9XZWJDb3Jl
U3VwcG9ydC9KYXZhU2NyaXB0RGVidWdnZXJCbGFja0JlcnJ5LmNwcAogICAgIGJsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5jcHAKICAgICBibGFja2Jl
cnJ5L1dlYkNvcmVTdXBwb3J0L1ZpYnJhdGlvbkNsaWVudEJsYWNrQmVycnkuY3BwCisgICAgYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5LmNwcAogICAgIGJsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9CYWNraW5nU3RvcmVDb21wb3NpdGluZ1N1cmZhY2UuY3BwCiAg
ICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZVRpbGUuY3BwCiAgICAgYmxh
Y2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZUNsaWVudC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQ2hhbmdlTG9nCmluZGV4IDUzZDU4YzguLjQzZTc5OTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA1LTA4ICBDcnlzdGFsIFpoYW5n
ICA8aGFpemhhbmdAcmltLmNvbT4KKyAgICAKKyAgICAgICAgICAgIFtCbGFja0JlcnJ5XSBJbXBs
ZW1lbnQgYSBwb3B1cCBjbGllbnQgZm9yIEhUTUwgY29udHJvbHMKKyAgICAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTY3MAorICAgIAorICAgICAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgCisgICAgICAgICAgICBJbXBsZW1l
bnQgYSBwb3B1cCBjbGllbnQgZm9yIEhUTUwgY29udHJvbHMsIHdoaWNoIHdvdWxkIGJlIHVzZWQg
dG8gbG9hZAorICAgICAgICAgICAgZGlmZmVyZW50IHBvcHVwcyBhY2NvcmRpbmcgdG8gcG9wdXAg
dHlwZS4KKyAgICAKKyAgICAgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tC
ZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAgICAgKFBh
Z2VQb3B1cENocm9tZUNsaWVudCk6CisgICAgICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQ2hy
b21lQ2xpZW50OjpQYWdlUG9wdXBDaHJvbWVDbGllbnQpOgorICAgICAgICAgICAgKFdlYkNvcmU6
OlBhZ2VQb3B1cENocm9tZUNsaWVudDo6Y2xvc2VXaW5kb3dTb29uKToKKyAgICAgICAgICAgIChX
ZWJDb3JlOjpQYWdlUG9wdXBDaHJvbWVDbGllbnQ6OndlYlBhZ2UpOgorICAgICAgICAgICAgKFdl
YkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6OlBhZ2VQb3B1cEJsYWNrQmVycnkpOgorICAgICAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6On5QYWdlUG9wdXBCbGFja0JlcnJ5
KToKKyAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5OjpzZW5kQ3JlYXRl
UG9wdXBXZWJWaWV3UmVxdWVzdCk6CisgICAgICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQmxh
Y2tCZXJyeTo6aW5pdCk6CisgICAgICAgICAgICAoV2ViQ29yZTo6c2V0VmFsdWVBbmRDbG9zZVBv
cHVwQ2FsbGJhY2spOgorICAgICAgICAgICAgKFdlYkNvcmU6OnBvcFVwRXh0ZW5zaW9uSW5pdGlh
bGl6ZSk6CisgICAgICAgICAgICAoV2ViQ29yZTo6cG9wVXBFeHRlbnNpb25GaW5hbGl6ZSk6Cisg
ICAgICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQmxhY2tCZXJyeTo6aW5zdGFsbERvbUZ1bmN0
aW9uKToKKyAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5OjpoYW5kbGVN
b3VzZUV2ZW50KToKKyAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5Ojpj
bG9zZVBvcHVwKToKKyAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5Ojpj
bG9zZVdlYlBhZ2UpOgorICAgICAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFj
a0JlcnJ5Lmg6IEFkZGVkLgorICAgICAgICAgICAgKFdlYktpdCk6CisgICAgICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICAgICAoUGFnZVBvcHVwQmxhY2tCZXJyeSk6CisKIDIwMTItMDUtMDgg
IEFuZHJldyBMbyAgPGFubG9AcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gT3Zlci1z
Y3JvbGwgaW1hZ2Ugc2hvdWxkIGJlIHRpbGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRiNzdiMgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBC
bGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDI1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x
MzAxICBVU0EKKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUGFnZVBvcHVw
QmxhY2tCZXJyeS5oIgorCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5oIgorI2lu
Y2x1ZGUgIkVtcHR5Q2xpZW50cy5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckNsaWVudEJsYWNrQmVycnkuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIK
KyNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VH
cm91cC5oIgorI2luY2x1ZGUgIlBhZ2VQb3B1cENsaWVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
TW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5o
IgorI2luY2x1ZGUgIldlYlBhZ2VfcC5oIgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3QuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJl
Zi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgorCisvLyBGaXhtZTogc2hvdWxkIGdldCB0aGUg
aGVpZ2h0IGZyb20gcnVudGltZS4KKyNkZWZpbmUgVVJMX0JBUl9IRUlHSFQgNzAKKwordXNpbmcg
bmFtZXNwYWNlIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczsKK3VzaW5nIG5hbWVzcGFj
ZSBCbGFja0JlcnJ5OjpXZWJLaXQ7CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBhZ2VQ
b3B1cENocm9tZUNsaWVudCA6IHB1YmxpYyBDaHJvbWVDbGllbnRCbGFja0JlcnJ5IHsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBQYWdlUG9wdXBDaHJvbWVDbGllbnQoV2ViUGFnZVByaXZhdGUqIHdl
YnBhZ2UsIFBhZ2VQb3B1cEJsYWNrQmVycnkqIHBvcHVwKQorICAgICAgICA6IENocm9tZUNsaWVu
dEJsYWNrQmVycnkod2VicGFnZSkKKyAgICAgICAgLCBtX3BvcHVwKHBvcHVwKQorICAgICAgICAs
IG1fd2ViUGFnZSh3ZWJwYWdlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xv
c2VXaW5kb3dTb29uKCkKKyAgICB7CisgICAgICAgIG1fcG9wdXAtPmNsb3NlUG9wdXAoKTsKKyAg
ICB9CisKKyAgICBXZWJQYWdlUHJpdmF0ZSogd2ViUGFnZSgpCisgICAgeworICAgICAgICByZXR1
cm4gbV93ZWJQYWdlOworICAgIH0KKworICAgIFBhZ2VQb3B1cEJsYWNrQmVycnkqIG1fcG9wdXA7
CisgICAgV2ViUGFnZVByaXZhdGUqIG1fd2ViUGFnZTsKKyAgICBJbnRSZWN0IG1fcmVjdDsKK307
CisKK1BhZ2VQb3B1cEJsYWNrQmVycnk6OlBhZ2VQb3B1cEJsYWNrQmVycnkoQmxhY2tCZXJyeTo6
V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZSogd2ViUGFnZSwgUGFnZVBvcHVwQ2xpZW50KiBjbGllbnQs
IGNvbnN0IEludFJlY3QmIHJlY3QpCisgICAgOiBtX3dlYlBhZ2VQcml2YXRlKHdlYlBhZ2UpCisg
ICAgLCBtX2NsaWVudChhZG9wdFB0cihjbGllbnQpKQoreworICAgIG1fcmVjdCA9IEludFJlY3Qo
cmVjdC54KCksIHJlY3QueSgpIC0gVVJMX0JBUl9IRUlHSFQsIGNsaWVudC0+Y29udGVudFNpemUo
KS53aWR0aCgpLCBjbGllbnQtPmNvbnRlbnRTaXplKCkuaGVpZ2h0KCkpOworfQorCitQYWdlUG9w
dXBCbGFja0JlcnJ5Ojp+UGFnZVBvcHVwQmxhY2tCZXJyeSgpCit7Cit9CisKK3ZvaWQgUGFnZVBv
cHVwQmxhY2tCZXJyeTo6c2VuZENyZWF0ZVBvcHVwV2ViVmlld1JlcXVlc3QoKQoreworICAgIG1f
d2ViUGFnZVByaXZhdGUtPmNsaWVudCgpLT5jcmVhdGVQb3B1cFdlYlZpZXcobV9yZWN0KTsKK30K
KworYm9vbCBQYWdlUG9wdXBCbGFja0JlcnJ5Ojppbml0KFdlYlBhZ2UqIHdlYnBhZ2UpCit7Cisg
ICAgc3RhdGljIEZyYW1lTG9hZGVyQ2xpZW50KiBlbXB0eUZyYW1lTG9hZGVyQ2xpZW50ID0gbmV3
IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ7CisgICAgUGFnZTo6UGFnZUNsaWVudHMgcGFnZUNsaWVu
dHM7CisgICAgbV9jaHJvbWVDbGllbnQgPSBhZG9wdFB0cihuZXcgUGFnZVBvcHVwQ2hyb21lQ2xp
ZW50KHdlYnBhZ2UtPmQsIHRoaXMpKTsKKyAgICBzdGF0aWMgRWRpdG9yQ2xpZW50KiBlbXB0eUVk
aXRvckNsaWVudCA9IG5ldyBFbXB0eUVkaXRvckNsaWVudDsKKyAgICBwYWdlQ2xpZW50cy5jaHJv
bWVDbGllbnQgPSBtX2Nocm9tZUNsaWVudC5nZXQoKTsKKyAgICBwYWdlQ2xpZW50cy5lZGl0b3JD
bGllbnQgPSBlbXB0eUVkaXRvckNsaWVudDsKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAg
ICBzdGF0aWMgQ29udGV4dE1lbnVDbGllbnQqIGVtcHR5Q29udGV4dE1lbnVDbGllbnQgPSBuZXcg
RW1wdHlDb250ZXh0TWVudUNsaWVudDsKKyAgICBwYWdlQ2xpZW50cy5jb250ZXh0TWVudUNsaWVu
dCA9IGVtcHR5Q29udGV4dE1lbnVDbGllbnQ7CisjZW5kaWYKKyNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQorICAgIHN0YXRpYyBEcmFnQ2xpZW50KiBlbXB0eURyYWdDbGllbnQgPSBuZXcgRW1wdHlE
cmFnQ2xpZW50OworICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSBlbXB0eURyYWdDbGllbnQ7
CisjZW5kaWYKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIHN0YXRpYyBJbnNwZWN0b3JDbGll
bnQqIGVtcHR5SW5zcGVjdG9yQ2xpZW50ID0gbmV3IEVtcHR5SW5zcGVjdG9yQ2xpZW50OworICAg
IHBhZ2VDbGllbnRzLmluc3BlY3RvckNsaWVudCA9IGVtcHR5SW5zcGVjdG9yQ2xpZW50OworI2Vu
ZGlmCisKKyAgICBtX3BhZ2UgPSBhZG9wdFB0cihuZXcgUGFnZShwYWdlQ2xpZW50cykpOworICAg
IG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKKyAgICBtX3BhZ2Ut
PnNldHRpbmdzKCktPnNldEFsbG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dzKHRydWUpOworCisgICAg
UmVmUHRyPEZyYW1lPiBmcmFtZSA9IEZyYW1lOjpjcmVhdGUobV9wYWdlLmdldCgpLCAwLAorICAg
ICAgICAgICAgZW1wdHlGcmFtZUxvYWRlckNsaWVudCk7CisgICAgZnJhbWUtPnNldFZpZXcoRnJh
bWVWaWV3OjpjcmVhdGUoZnJhbWUuZ2V0KCkpKTsKKyAgICBmcmFtZS0+aW5pdCgpOworICAgIGZy
YW1lLT52aWV3KCktPnJlc2l6ZShtX2NsaWVudC0+Y29udGVudFNpemUoKSk7CisKKyAgICBDU3Ry
aW5nIGh0bWxTb3VyY2UgPSBtX2NsaWVudC0+aHRtbFNvdXJjZSgpLnV0ZjgoKTsKKyAgICBEb2N1
bWVudFdyaXRlciogd3JpdGVyID0gZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRl
cigpLT53cml0ZXIoKTsKKyAgICBtX2NsaWVudC0+d3JpdGVEb2N1bWVudCgqd3JpdGVyKTsKKwor
ICAgIGluc3RhbGxEb21GdW5jdGlvbihmcmFtZS5nZXQoKSk7CisKKyAgICB3ZWJwYWdlLT5kLT5z
ZXRQYXJlbnRQb3B1cCh0aGlzKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgSlNW
YWx1ZVJlZiBzZXRWYWx1ZUFuZENsb3NlUG9wdXBDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwKKyAgICAgICAgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmLCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwKKyAgICAgICAgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiopCit7
CisgICAgSlNWYWx1ZVJlZiBqc1JldFZhbCA9IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQp
OworICAgIGlmIChhcmd1bWVudENvdW50IDw9IDApCisgICAgICAgIHJldHVybiBqc1JldFZhbDsK
KworICAgIEpTU3RyaW5nUmVmIHN0cmluZyA9IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwg
YXJndW1lbnRzWzBdLCAwKTsKKyAgICBzaXplX3Qgc2l6ZVVURjggPSBKU1N0cmluZ0dldE1heGlt
dW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKTsKKyAgICBXVEY6OlZlY3RvcjxjaGFyPiBzdHJBcmdz
KHNpemVVVEY4ICsgMSk7CisgICAgc3RyQXJnc1tzaXplVVRGOF0gPSAwIDsKKyAgICBKU1N0cmlu
Z0dldFVURjhDU3RyaW5nKHN0cmluZywgc3RyQXJncy5kYXRhKCksIHNpemVVVEY4KTsKKyAgICBK
U1N0cmluZ1JlbGVhc2Uoc3RyaW5nKTsKKyAgICBKU09iamVjdFJlZiBwb3BVcE9iamVjdCA9IEpT
VmFsdWVUb09iamVjdChjb250ZXh0LAorICAgICAgICAgICAgYXJndW1lbnRzW2FyZ3VtZW50Q291
bnQgLSAxXSwgMCk7CisgICAgUGFnZVBvcHVwQ2xpZW50KiBjbGllbnQgPQorICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDxQYWdlUG9wdXBDbGllbnQqPihKU09iamVjdEdldFByaXZhdGUocG9w
VXBPYmplY3QpKTsKKworICAgIEFTU0VSVChjbGllbnQpOworICAgIGNsaWVudC0+c2V0VmFsdWVB
bmRDbG9zZVBvcHVwKDAsIHN0ckFyZ3MuZGF0YSgpKTsKKworICAgIHJldHVybiBqc1JldFZhbDsK
K30KKworc3RhdGljIHZvaWQgcG9wVXBFeHRlbnNpb25Jbml0aWFsaXplKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBvYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQp
OworICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCBwb3BVcEV4dGVu
c2lvbkZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0ob2Jq
ZWN0KTsKK30KKworc3RhdGljIEpTU3RhdGljRnVuY3Rpb24gcG9wVXBFeHRlbnNpb25TdGF0aWNG
dW5jdGlvbnNbXSA9Cit7Cit7IDAsIDAsIDAgfSwKK3sgMCwgMCwgMCB9Cit9OworCitzdGF0aWMg
SlNTdGF0aWNWYWx1ZSBwb3BVcEV4dGVuc2lvblN0YXRpY1ZhbHVlc1tdID0KK3sKK3sgMCwgMCwg
MCwgMCB9Cit9OworCit2b2lkIFBhZ2VQb3B1cEJsYWNrQmVycnk6Omluc3RhbGxEb21GdW5jdGlv
bihGcmFtZSogZnJhbWUpCit7CisgICAgSlNDOjpKU0xvY2sgbG9jayhKU0M6OlNpbGVuY2VBc3Nl
cnRpb25zT25seSk7CisKKyAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gdG9KU0RPTVdpbmRvdyhm
cmFtZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgIEFTU0VSVCh3aW5kb3cpOworCisg
ICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB3aW5kb3ctPmdsb2JhbEV4ZWMoKTsKKyAgICBBU1NF
UlQoZXhlYyk7CisKKyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IDo6dG9SZWYoZXhlYyk7Cisg
ICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGNv
bnRleHQpOworICAgIEpTU3RyaW5nUmVmIGZ1bmN0aW9uTmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKAorICAgICAgICAgICAgInNldFZhbHVlQW5kQ2xvc2VQb3B1cCIpOworICAg
IEpTT2JqZWN0UmVmIGZ1bmN0aW9uID0gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2so
Y29udGV4dCwKKyAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSwgc2V0VmFsdWVBbmRDbG9zZVBvcHVw
Q2FsbGJhY2spOworICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4dCwgZ2xvYmFsT2JqZWN0
LCBmdW5jdGlvbk5hbWUsIGZ1bmN0aW9uLAorICAgICAgICAgICAga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIHwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSwgMCk7CisKKyAgICAv
LyBSZWdpc3RlciBjbGllbnQgaW50byBET00KKyAgICBKU0NsYXNzRGVmaW5pdGlvbiBkZWZpbml0
aW9uID0ga0pTQ2xhc3NEZWZpbml0aW9uRW1wdHk7CisgICAgZGVmaW5pdGlvbi5zdGF0aWNWYWx1
ZXMgPSBwb3BVcEV4dGVuc2lvblN0YXRpY1ZhbHVlczsKKyAgICBkZWZpbml0aW9uLnN0YXRpY0Z1
bmN0aW9ucyA9IHBvcFVwRXh0ZW5zaW9uU3RhdGljRnVuY3Rpb25zOworICAgIGRlZmluaXRpb24u
aW5pdGlhbGl6ZSA9IHBvcFVwRXh0ZW5zaW9uSW5pdGlhbGl6ZTsKKyAgICBkZWZpbml0aW9uLmZp
bmFsaXplID0gcG9wVXBFeHRlbnNpb25GaW5hbGl6ZTsKKyAgICBKU0NsYXNzUmVmIGNsaWVudENs
YXNzID0gSlNDbGFzc0NyZWF0ZSgmZGVmaW5pdGlvbik7CisKKyAgICBKU09iamVjdFJlZiBjbGll
bnRDbGFzc09iamVjdCA9IEpTT2JqZWN0TWFrZShjb250ZXh0LCBjbGllbnRDbGFzcywgMCk7Cisg
ICAgSlNPYmplY3RTZXRQcml2YXRlKGNsaWVudENsYXNzT2JqZWN0LCByZWludGVycHJldF9jYXN0
PHZvaWQqPihtX2NsaWVudC5nZXQoKSkpOworCisgICAgSlNDOjpVU3RyaW5nIG5hbWUoInBvcFVw
Iik7CisKKyAgICBKU0M6OlB1dFByb3BlcnR5U2xvdCBzbG90OworICAgIHdpbmRvdy0+cHV0KHdp
bmRvdywgZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsIG5hbWUpLAorICAgICAgICAgICAgdG9K
UyhjbGllbnRDbGFzc09iamVjdCksIHNsb3QpOworCisgICAgSlNDbGFzc1JlbGVhc2UoY2xpZW50
Q2xhc3MpOworfQorCitib29sIFBhZ2VQb3B1cEJsYWNrQmVycnk6OmhhbmRsZU1vdXNlRXZlbnQo
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAoIW1fcGFnZS0+bWFpbkZyYW1l
KCkgfHwgIW1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgc3dpdGNoIChldmVudC50eXBlKCkpIHsKKyAgICBjYXNlIFBsYXRmb3JtRXZlbnQ6
Ok1vdXNlTW92ZWQ6CisgICAgICAgIHJldHVybiBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhh
bmRsZXIoKS0+aGFuZGxlTW91c2VNb3ZlRXZlbnQoZXZlbnQpOworICAgIGNhc2UgUGxhdGZvcm1F
dmVudDo6TW91c2VQcmVzc2VkOgorICAgICAgICByZXR1cm4gbV9wYWdlLT5tYWluRnJhbWUoKS0+
ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUHJlc3NFdmVudChldmVudCk7CisgICAgY2FzZSBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZVJlbGVhc2VkOgorICAgICAgICByZXR1cm4gbV9wYWdlLT5tYWlu
RnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGV2ZW50KTsK
KyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCit2b2lkIFBh
Z2VQb3B1cEJsYWNrQmVycnk6OmNsb3NlUG9wdXAoKQoreworICAgIGNsb3NlV2ViUGFnZSgpOwor
ICAgIG1fY2xpZW50LT5kaWRDbG9zZVBvcHVwKCk7CisgICAgbV93ZWJQYWdlUHJpdmF0ZS0+Y2xp
ZW50KCktPmNsb3NlUG9wdXBXZWJWaWV3KCk7Cit9CisKK3ZvaWQgUGFnZVBvcHVwQmxhY2tCZXJy
eTo6Y2xvc2VXZWJQYWdlKCkKK3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9wYWdlLT5zZXRHcm91cE5hbWUoU3RyaW5nKCkpOworICAgIG1fcGFnZS0+bWFpbkZy
YW1lKCktPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVycygpOworICAgIG1fcGFnZS0+bWFpbkZyYW1l
KCktPmxvYWRlcigpLT5zdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeU5vbmUpOworICAgIG1f
cGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+Y2xlYXIoKTsKKyAgICBtX3BhZ2UuY2xlYXIoKTsK
K30KK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZDVjNzJjZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5oCkBAIC0wLDAgKzEs
NjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0
ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBQ
YWdlUG9wdXBCbGFja0JlcnJ5X2gKKyNkZWZpbmUgUGFnZVBvcHVwQmxhY2tCZXJyeV9oCisKKyNp
bmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiUGFnZVBvcHVwLmgiCisKKworbmFtZXNwYWNl
IEJsYWNrQmVycnkgeworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJQYWdlOworY2xhc3Mg
V2ViUGFnZVByaXZhdGU7Cit9Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZyYW1l
OworY2xhc3MgUGFnZTsKK2NsYXNzIFBhZ2VQb3B1cENocm9tZUNsaWVudDsKK2NsYXNzIFBhZ2VQ
b3B1cENsaWVudDsKK2NsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKKworY2xhc3MgUGFnZVBvcHVw
QmxhY2tCZXJyeSA6IHB1YmxpYyBQYWdlUG9wdXAgeworcHVibGljOgorICAgIFBhZ2VQb3B1cEJs
YWNrQmVycnkoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZSosIFBhZ2VQb3B1cENs
aWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICB+UGFnZVBvcHVwQmxhY2tCZXJyeSgpOworCisg
ICAgdm9pZCBzZW5kQ3JlYXRlUG9wdXBXZWJWaWV3UmVxdWVzdCgpOworICAgIGJvb2wgaW5pdChC
bGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2UqKTsKKyAgICB2b2lkIGNsb3NlUG9wdXAoKTsKKyAg
ICB2b2lkIGluc3RhbGxEb21GdW5jdGlvbihGcmFtZSopOworICAgIHZvaWQgc2V0UmVjdCgpOwor
ICAgIHZvaWQgY2xvc2VXZWJQYWdlKCk7CisKKyAgICBib29sIGhhbmRsZU1vdXNlRXZlbnQoUGxh
dGZvcm1Nb3VzZUV2ZW50Jik7CisKKworcHJpdmF0ZToKKyAgICBCbGFja0JlcnJ5OjpXZWJLaXQ6
OldlYlBhZ2VQcml2YXRlKiBtX3dlYlBhZ2VQcml2YXRlOworICAgIE93blB0cjxQYWdlUG9wdXBD
bGllbnQ+IG1fY2xpZW50OworICAgIEludFJlY3QgbV9yZWN0OworICAgIE93blB0cjxXZWJDb3Jl
OjpQYWdlPiBtX3BhZ2U7CisgICAgT3duUHRyPFBhZ2VQb3B1cENocm9tZUNsaWVudD4gbV9jaHJv
bWVDbGllbnQ7CisKKyAgICBmcmllbmQgY2xhc3MgUGFnZVBvcHVwQ2hyb21lQ2xpZW50OworfTsK
KworfQorCisjZW5kaWYgLy8gUGFnZVBvcHVwQmxhY2tCZXJyeV9oCi0tIAoxLjcuMTAuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140791</attachid>
            <date>2012-05-08 14:53:50 -0700</date>
            <delta_ts>2012-05-08 16:00:26 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>0001-2012-05-08-Crystal-Zhang-haizhang-rim.com.patch</filename>
            <type>text/plain</type>
            <size>16013</size>
            <attacher name="Crystal Zhang">haizhang</attacher>
            
              <data encoding="base64">RnJvbSBkOWZkOTAxZGZlMTY4NjlmOGY4NGU4ZTA5OGFmMDQ1ODNmZjAyY2Y1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDcnlzdGFsIFpoYW5nIDxoYWl6aGFuZ0ByaW0uY29tPgpEYXRl
OiBUdWUsIDggTWF5IDIwMTIgMTQ6Mzk6MjkgLTA0MDAKU3ViamVjdDogW1BBVENIIDEvMl0gMjAx
Mi0wNS0wOCAgQ3J5c3RhbCBaaGFuZyAgPGhhaXpoYW5nQHJpbS5jb20+CgogICAgICAgICAgICBb
QmxhY2tCZXJyeV0gSW1wbGVtZW50IGEgcG9wdXAgY2xpZW50IGZvciBIVE1MIGNvbnRyb2xzCiAg
ICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTY3MAoK
ICAgICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgICAgICBJbXBs
ZW1lbnQgYSBwb3B1cCBjbGllbnQgZm9yIEhUTUwgY29udHJvbHMsIHdoaWNoIHdvdWxkIGJlIHVz
ZWQgdG8gbG9hZAogICAgICAgICAgICBkaWZmZXJlbnQgcG9wdXBzIGFjY29yZGluZyB0byBwb3B1
cCB0eXBlLgoKICAgICAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5
LmNwcDogQWRkZWQuCiAgICAgICAgICAgIChXZWJDb3JlKToKICAgICAgICAgICAgKFBhZ2VQb3B1
cENocm9tZUNsaWVudCk6CiAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBDaHJvbWVDbGll
bnQ6OlBhZ2VQb3B1cENocm9tZUNsaWVudCk6CiAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9w
dXBDaHJvbWVDbGllbnQ6OmNsb3NlV2luZG93U29vbik6CiAgICAgICAgICAgIChXZWJDb3JlOjpQ
YWdlUG9wdXBDaHJvbWVDbGllbnQ6OndlYlBhZ2UpOgogICAgICAgICAgICAoV2ViQ29yZTo6UGFn
ZVBvcHVwQmxhY2tCZXJyeTo6UGFnZVBvcHVwQmxhY2tCZXJyeSk6CiAgICAgICAgICAgIChXZWJD
b3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5Ojp+UGFnZVBvcHVwQmxhY2tCZXJyeSk6CiAgICAgICAg
ICAgIChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5OjpzZW5kQ3JlYXRlUG9wdXBXZWJWaWV3
UmVxdWVzdCk6CiAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5Ojppbml0
KToKICAgICAgICAgICAgKFdlYkNvcmU6OnNldFZhbHVlQW5kQ2xvc2VQb3B1cENhbGxiYWNrKToK
ICAgICAgICAgICAgKFdlYkNvcmU6OnBvcFVwRXh0ZW5zaW9uSW5pdGlhbGl6ZSk6CiAgICAgICAg
ICAgIChXZWJDb3JlOjpwb3BVcEV4dGVuc2lvbkZpbmFsaXplKToKICAgICAgICAgICAgKFdlYkNv
cmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6Omluc3RhbGxEb21GdW5jdGlvbik6CiAgICAgICAgICAg
IChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5OjpoYW5kbGVNb3VzZUV2ZW50KToKICAgICAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6OmNsb3NlUG9wdXApOgogICAgICAg
ICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQmxhY2tCZXJyeTo6Y2xvc2VXZWJQYWdlKToKICAgICAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5Lmg6IEFkZGVkLgogICAg
ICAgICAgICAoV2ViS2l0KToKICAgICAgICAgICAgKFdlYkNvcmUpOgogICAgICAgICAgICAoUGFn
ZVBvcHVwQmxhY2tCZXJyeSk6CiAgICAgICAgICAgICogUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtl
OgotLS0KIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAxMSArCiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZSAgICAgICAg
ICAgICB8ICAgIDEgKwogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgfCAgIDMyICsrKwogLi4uL1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVy
cnkuY3BwICAgICAgICAgfCAgMjU0ICsrKysrKysrKysrKysrKysrKysrCiAuLi4vV2ViQ29yZVN1
cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5oICAgICAgICAgICB8ICAgNjcgKysrKysrCiA1IGZp
bGVzIGNoYW5nZWQsIDM2NSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuY3Bw
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzc0YWIwMi4uZTMxNTMyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNS0wOCAgQ3J5c3RhbCBaaGFuZyAgPGhh
aXpoYW5nQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIEltcGxlbWVudCBhIHBvcHVw
IGNsaWVudCBmb3IgSFRNTCBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODU2NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgcG9wdXAgY2xpZW50IGZpbGUgdG8gYnVpbGQgc3lzdGVtLgor
ICAgICAgICAKKyAgICAgICAgKiBQbGF0Zm9ybUJsYWNrQmVycnkuY21ha2U6CisKIDIwMTItMDUt
MDggIEpvbmF0aGFuIERvbmcgIDxqb25hdGhhbi5kb25nQHRvcmNobW9iaWxlLmNvbS5jbj4KIAog
ICAgICAgICBbQmxhY2tCZXJyeV0gQXV0b2ZpbGxNYW5hZ2VyIGltcGxlbWVudGF0aW9uIHVwc3Ry
ZWFtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZSBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCmluZGV4IGYyNDQ3NzkuLjQ1
NWZlZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC03NSw2ICs3
NSw3IEBAIExJU1QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgYmxhY2tiZXJyeS9XZWJDb3Jl
U3VwcG9ydC9KYXZhU2NyaXB0RGVidWdnZXJCbGFja0JlcnJ5LmNwcAogICAgIGJsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5jcHAKICAgICBibGFja2Jl
cnJ5L1dlYkNvcmVTdXBwb3J0L1ZpYnJhdGlvbkNsaWVudEJsYWNrQmVycnkuY3BwCisgICAgYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5LmNwcAogICAgIGJsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9CYWNraW5nU3RvcmVDb21wb3NpdGluZ1N1cmZhY2UuY3BwCiAg
ICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZVRpbGUuY3BwCiAgICAgYmxh
Y2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZUNsaWVudC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQ2hhbmdlTG9nCmluZGV4IDUzZDU4YzguLjQzZTc5OTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA1LTA4ICBDcnlzdGFsIFpoYW5n
ICA8aGFpemhhbmdAcmltLmNvbT4KKyAgICAKKyAgICAgICAgICAgIFtCbGFja0JlcnJ5XSBJbXBs
ZW1lbnQgYSBwb3B1cCBjbGllbnQgZm9yIEhUTUwgY29udHJvbHMKKyAgICAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTY3MAorICAgIAorICAgICAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgCisgICAgICAgICAgICBJbXBsZW1l
bnQgYSBwb3B1cCBjbGllbnQgZm9yIEhUTUwgY29udHJvbHMsIHdoaWNoIHdvdWxkIGJlIHVzZWQg
dG8gbG9hZAorICAgICAgICAgICAgZGlmZmVyZW50IHBvcHVwcyBhY2NvcmRpbmcgdG8gcG9wdXAg
dHlwZS4KKyAgICAKKyAgICAgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tC
ZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAgICAgKFBh
Z2VQb3B1cENocm9tZUNsaWVudCk6CisgICAgICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQ2hy
b21lQ2xpZW50OjpQYWdlUG9wdXBDaHJvbWVDbGllbnQpOgorICAgICAgICAgICAgKFdlYkNvcmU6
OlBhZ2VQb3B1cENocm9tZUNsaWVudDo6Y2xvc2VXaW5kb3dTb29uKToKKyAgICAgICAgICAgIChX
ZWJDb3JlOjpQYWdlUG9wdXBDaHJvbWVDbGllbnQ6OndlYlBhZ2UpOgorICAgICAgICAgICAgKFdl
YkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6OlBhZ2VQb3B1cEJsYWNrQmVycnkpOgorICAgICAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VQb3B1cEJsYWNrQmVycnk6On5QYWdlUG9wdXBCbGFja0JlcnJ5
KToKKyAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5OjpzZW5kQ3JlYXRl
UG9wdXBXZWJWaWV3UmVxdWVzdCk6CisgICAgICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQmxh
Y2tCZXJyeTo6aW5pdCk6CisgICAgICAgICAgICAoV2ViQ29yZTo6c2V0VmFsdWVBbmRDbG9zZVBv
cHVwQ2FsbGJhY2spOgorICAgICAgICAgICAgKFdlYkNvcmU6OnBvcFVwRXh0ZW5zaW9uSW5pdGlh
bGl6ZSk6CisgICAgICAgICAgICAoV2ViQ29yZTo6cG9wVXBFeHRlbnNpb25GaW5hbGl6ZSk6Cisg
ICAgICAgICAgICAoV2ViQ29yZTo6UGFnZVBvcHVwQmxhY2tCZXJyeTo6aW5zdGFsbERvbUZ1bmN0
aW9uKToKKyAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5OjpoYW5kbGVN
b3VzZUV2ZW50KToKKyAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5Ojpj
bG9zZVBvcHVwKToKKyAgICAgICAgICAgIChXZWJDb3JlOjpQYWdlUG9wdXBCbGFja0JlcnJ5Ojpj
bG9zZVdlYlBhZ2UpOgorICAgICAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFj
a0JlcnJ5Lmg6IEFkZGVkLgorICAgICAgICAgICAgKFdlYktpdCk6CisgICAgICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICAgICAoUGFnZVBvcHVwQmxhY2tCZXJyeSk6CisKIDIwMTItMDUtMDgg
IEFuZHJldyBMbyAgPGFubG9AcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gT3Zlci1z
Y3JvbGwgaW1hZ2Ugc2hvdWxkIGJlIHRpbGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU3MGM1YgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBC
bGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDI1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x
MzAxICBVU0EKKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUGFnZVBvcHVw
QmxhY2tCZXJyeS5oIgorCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5oIgorI2lu
Y2x1ZGUgIkVtcHR5Q2xpZW50cy5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckNsaWVudEJsYWNrQmVycnkuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIK
KyNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VH
cm91cC5oIgorI2luY2x1ZGUgIlBhZ2VQb3B1cENsaWVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
TW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5o
IgorI2luY2x1ZGUgIldlYlBhZ2VfcC5oIgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3QuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJl
Zi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgorCisvLyBGaXhtZTogc2hvdWxkIGdldCB0aGUg
aGVpZ2h0IGZyb20gcnVudGltZS4KKyNkZWZpbmUgVVJMX0JBUl9IRUlHSFQgNzAKKwordXNpbmcg
bmFtZXNwYWNlIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczsKK3VzaW5nIG5hbWVzcGFj
ZSBCbGFja0JlcnJ5OjpXZWJLaXQ7CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBhZ2VQ
b3B1cENocm9tZUNsaWVudCA6IHB1YmxpYyBDaHJvbWVDbGllbnRCbGFja0JlcnJ5IHsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBQYWdlUG9wdXBDaHJvbWVDbGllbnQoV2ViUGFnZVByaXZhdGUqIHdl
YnBhZ2UsIFBhZ2VQb3B1cEJsYWNrQmVycnkqIHBvcHVwKQorICAgICAgICA6IENocm9tZUNsaWVu
dEJsYWNrQmVycnkod2VicGFnZSkKKyAgICAgICAgLCBtX3BvcHVwKHBvcHVwKQorICAgICAgICAs
IG1fd2ViUGFnZSh3ZWJwYWdlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xv
c2VXaW5kb3dTb29uKCkKKyAgICB7CisgICAgICAgIG1fcG9wdXAtPmNsb3NlUG9wdXAoKTsKKyAg
ICB9CisKKyAgICBXZWJQYWdlUHJpdmF0ZSogd2ViUGFnZSgpCisgICAgeworICAgICAgICByZXR1
cm4gbV93ZWJQYWdlOworICAgIH0KKworICAgIFBhZ2VQb3B1cEJsYWNrQmVycnkqIG1fcG9wdXA7
CisgICAgV2ViUGFnZVByaXZhdGUqIG1fd2ViUGFnZTsKKyAgICBJbnRSZWN0IG1fcmVjdDsKK307
CisKK1BhZ2VQb3B1cEJsYWNrQmVycnk6OlBhZ2VQb3B1cEJsYWNrQmVycnkoQmxhY2tCZXJyeTo6
V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZSogd2ViUGFnZSwgUGFnZVBvcHVwQ2xpZW50KiBjbGllbnQs
IGNvbnN0IEludFJlY3QmIHJlY3QpCisgICAgOiBtX3dlYlBhZ2VQcml2YXRlKHdlYlBhZ2UpCisg
ICAgLCBtX2NsaWVudChhZG9wdFB0cihjbGllbnQpKQoreworICAgIG1fcmVjdCA9IEludFJlY3Qo
cmVjdC54KCksIHJlY3QueSgpIC0gVVJMX0JBUl9IRUlHSFQsIGNsaWVudC0+Y29udGVudFNpemUo
KS53aWR0aCgpLCBjbGllbnQtPmNvbnRlbnRTaXplKCkuaGVpZ2h0KCkpOworfQorCitQYWdlUG9w
dXBCbGFja0JlcnJ5Ojp+UGFnZVBvcHVwQmxhY2tCZXJyeSgpCit7Cit9CisKK3ZvaWQgUGFnZVBv
cHVwQmxhY2tCZXJyeTo6c2VuZENyZWF0ZVBvcHVwV2ViVmlld1JlcXVlc3QoKQoreworICAgIG1f
d2ViUGFnZVByaXZhdGUtPmNsaWVudCgpLT5jcmVhdGVQb3B1cFdlYlZpZXcobV9yZWN0KTsKK30K
KworYm9vbCBQYWdlUG9wdXBCbGFja0JlcnJ5Ojppbml0KFdlYlBhZ2UqIHdlYnBhZ2UpCit7Cisg
ICAgc3RhdGljIEZyYW1lTG9hZGVyQ2xpZW50KiBlbXB0eUZyYW1lTG9hZGVyQ2xpZW50ID0gbmV3
IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ7CisgICAgUGFnZTo6UGFnZUNsaWVudHMgcGFnZUNsaWVu
dHM7CisgICAgbV9jaHJvbWVDbGllbnQgPSBhZG9wdFB0cihuZXcgUGFnZVBvcHVwQ2hyb21lQ2xp
ZW50KHdlYnBhZ2UtPmQsIHRoaXMpKTsKKyAgICBzdGF0aWMgRWRpdG9yQ2xpZW50KiBlbXB0eUVk
aXRvckNsaWVudCA9IG5ldyBFbXB0eUVkaXRvckNsaWVudDsKKyAgICBwYWdlQ2xpZW50cy5jaHJv
bWVDbGllbnQgPSBtX2Nocm9tZUNsaWVudC5nZXQoKTsKKyAgICBwYWdlQ2xpZW50cy5lZGl0b3JD
bGllbnQgPSBlbXB0eUVkaXRvckNsaWVudDsKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAg
ICBzdGF0aWMgQ29udGV4dE1lbnVDbGllbnQqIGVtcHR5Q29udGV4dE1lbnVDbGllbnQgPSBuZXcg
RW1wdHlDb250ZXh0TWVudUNsaWVudDsKKyAgICBwYWdlQ2xpZW50cy5jb250ZXh0TWVudUNsaWVu
dCA9IGVtcHR5Q29udGV4dE1lbnVDbGllbnQ7CisjZW5kaWYKKyNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQorICAgIHN0YXRpYyBEcmFnQ2xpZW50KiBlbXB0eURyYWdDbGllbnQgPSBuZXcgRW1wdHlE
cmFnQ2xpZW50OworICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSBlbXB0eURyYWdDbGllbnQ7
CisjZW5kaWYKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIHN0YXRpYyBJbnNwZWN0b3JDbGll
bnQqIGVtcHR5SW5zcGVjdG9yQ2xpZW50ID0gbmV3IEVtcHR5SW5zcGVjdG9yQ2xpZW50OworICAg
IHBhZ2VDbGllbnRzLmluc3BlY3RvckNsaWVudCA9IGVtcHR5SW5zcGVjdG9yQ2xpZW50OworI2Vu
ZGlmCisKKyAgICBtX3BhZ2UgPSBhZG9wdFB0cihuZXcgUGFnZShwYWdlQ2xpZW50cykpOworICAg
IG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKKyAgICBtX3BhZ2Ut
PnNldHRpbmdzKCktPnNldEFsbG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dzKHRydWUpOworCisgICAg
UmVmUHRyPEZyYW1lPiBmcmFtZSA9IEZyYW1lOjpjcmVhdGUobV9wYWdlLmdldCgpLCAwLAorICAg
ICAgICAgICAgZW1wdHlGcmFtZUxvYWRlckNsaWVudCk7CisgICAgZnJhbWUtPnNldFZpZXcoRnJh
bWVWaWV3OjpjcmVhdGUoZnJhbWUuZ2V0KCkpKTsKKyAgICBmcmFtZS0+aW5pdCgpOworICAgIGZy
YW1lLT52aWV3KCktPnJlc2l6ZShtX2NsaWVudC0+Y29udGVudFNpemUoKSk7CisKKyAgICBDU3Ry
aW5nIGh0bWxTb3VyY2UgPSBtX2NsaWVudC0+aHRtbFNvdXJjZSgpLnV0ZjgoKTsKKyAgICBEb2N1
bWVudFdyaXRlciogd3JpdGVyID0gZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRl
cigpLT53cml0ZXIoKTsKKyAgICBtX2NsaWVudC0+d3JpdGVEb2N1bWVudCgqd3JpdGVyKTsKKwor
ICAgIGluc3RhbGxEb21GdW5jdGlvbihmcmFtZS5nZXQoKSk7CisKKyAgICB3ZWJwYWdlLT5kLT5z
ZXRQYXJlbnRQb3B1cCh0aGlzKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgSlNW
YWx1ZVJlZiBzZXRWYWx1ZUFuZENsb3NlUG9wdXBDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwKKyAgICAgICAgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmLCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwKKyAgICAgICAgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiopCit7
CisgICAgSlNWYWx1ZVJlZiBqc1JldFZhbCA9IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQp
OworICAgIGlmIChhcmd1bWVudENvdW50IDw9IDApCisgICAgICAgIHJldHVybiBqc1JldFZhbDsK
KworICAgIEpTU3RyaW5nUmVmIHN0cmluZyA9IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwg
YXJndW1lbnRzWzBdLCAwKTsKKyAgICBzaXplX3Qgc2l6ZVVURjggPSBKU1N0cmluZ0dldE1heGlt
dW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKTsKKyAgICBXVEY6OlZlY3RvcjxjaGFyPiBzdHJBcmdz
KHNpemVVVEY4ICsgMSk7CisgICAgc3RyQXJnc1tzaXplVVRGOF0gPSAwOworICAgIEpTU3RyaW5n
R2V0VVRGOENTdHJpbmcoc3RyaW5nLCBzdHJBcmdzLmRhdGEoKSwgc2l6ZVVURjgpOworICAgIEpT
U3RyaW5nUmVsZWFzZShzdHJpbmcpOworICAgIEpTT2JqZWN0UmVmIHBvcFVwT2JqZWN0ID0gSlNW
YWx1ZVRvT2JqZWN0KGNvbnRleHQsCisgICAgICAgICAgICBhcmd1bWVudHNbYXJndW1lbnRDb3Vu
dCAtIDFdLCAwKTsKKyAgICBQYWdlUG9wdXBDbGllbnQqIGNsaWVudCA9CisgICAgICAgICAgICBy
ZWludGVycHJldF9jYXN0PFBhZ2VQb3B1cENsaWVudCo+KEpTT2JqZWN0R2V0UHJpdmF0ZShwb3BV
cE9iamVjdCkpOworCisgICAgQVNTRVJUKGNsaWVudCk7CisgICAgY2xpZW50LT5zZXRWYWx1ZUFu
ZENsb3NlUG9wdXAoMCwgc3RyQXJncy5kYXRhKCkpOworCisgICAgcmV0dXJuIGpzUmV0VmFsOwor
fQorCitzdGF0aWMgdm9pZCBwb3BVcEV4dGVuc2lvbkluaXRpYWxpemUoSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIG9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7
CisgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHBvcFVwRXh0ZW5z
aW9uRmluYWxpemUoSlNPYmplY3RSZWYgb2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShvYmpl
Y3QpOworfQorCitzdGF0aWMgSlNTdGF0aWNGdW5jdGlvbiBwb3BVcEV4dGVuc2lvblN0YXRpY0Z1
bmN0aW9uc1tdID0KK3sKK3sgMCwgMCwgMCB9LAoreyAwLCAwLCAwIH0KK307CisKK3N0YXRpYyBK
U1N0YXRpY1ZhbHVlIHBvcFVwRXh0ZW5zaW9uU3RhdGljVmFsdWVzW10gPQoreworeyAwLCAwLCAw
LCAwIH0KK307CisKK3ZvaWQgUGFnZVBvcHVwQmxhY2tCZXJyeTo6aW5zdGFsbERvbUZ1bmN0aW9u
KEZyYW1lKiBmcmFtZSkKK3sKKyAgICBKU0M6OkpTTG9jayBsb2NrKEpTQzo6U2lsZW5jZUFzc2Vy
dGlvbnNPbmx5KTsKKworICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KGZy
YW1lLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgQVNTRVJUKHdpbmRvdyk7CisKKyAg
ICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHdpbmRvdy0+Z2xvYmFsRXhlYygpOworICAgIEFTU0VS
VChleGVjKTsKKworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gOjp0b1JlZihleGVjKTsKKyAg
ICBKU09iamVjdFJlZiBnbG9iYWxPYmplY3QgPSBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QoY29u
dGV4dCk7CisgICAgSlNTdHJpbmdSZWYgZnVuY3Rpb25OYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoCisgICAgICAgICAgICAic2V0VmFsdWVBbmRDbG9zZVBvcHVwIik7CisgICAg
SlNPYmplY3RSZWYgZnVuY3Rpb24gPSBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhj
b250ZXh0LAorICAgICAgICAgICAgZnVuY3Rpb25OYW1lLCBzZXRWYWx1ZUFuZENsb3NlUG9wdXBD
YWxsYmFjayk7CisgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3Qs
IGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb24sCisgICAgICAgICAgICBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5LCAwKTsKKworICAgIC8v
IFJlZ2lzdGVyIGNsaWVudCBpbnRvIERPTQorICAgIEpTQ2xhc3NEZWZpbml0aW9uIGRlZmluaXRp
b24gPSBrSlNDbGFzc0RlZmluaXRpb25FbXB0eTsKKyAgICBkZWZpbml0aW9uLnN0YXRpY1ZhbHVl
cyA9IHBvcFVwRXh0ZW5zaW9uU3RhdGljVmFsdWVzOworICAgIGRlZmluaXRpb24uc3RhdGljRnVu
Y3Rpb25zID0gcG9wVXBFeHRlbnNpb25TdGF0aWNGdW5jdGlvbnM7CisgICAgZGVmaW5pdGlvbi5p
bml0aWFsaXplID0gcG9wVXBFeHRlbnNpb25Jbml0aWFsaXplOworICAgIGRlZmluaXRpb24uZmlu
YWxpemUgPSBwb3BVcEV4dGVuc2lvbkZpbmFsaXplOworICAgIEpTQ2xhc3NSZWYgY2xpZW50Q2xh
c3MgPSBKU0NsYXNzQ3JlYXRlKCZkZWZpbml0aW9uKTsKKworICAgIEpTT2JqZWN0UmVmIGNsaWVu
dENsYXNzT2JqZWN0ID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIGNsaWVudENsYXNzLCAwKTsKKyAg
ICBKU09iamVjdFNldFByaXZhdGUoY2xpZW50Q2xhc3NPYmplY3QsIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KG1fY2xpZW50LmdldCgpKSk7CisKKyAgICBKU0M6OlVTdHJpbmcgbmFtZSgicG9wVXAi
KTsKKworICAgIEpTQzo6UHV0UHJvcGVydHlTbG90IHNsb3Q7CisgICAgd2luZG93LT5wdXQod2lu
ZG93LCBleGVjLCBKU0M6OklkZW50aWZpZXIoZXhlYywgbmFtZSksCisgICAgICAgICAgICB0b0pT
KGNsaWVudENsYXNzT2JqZWN0KSwgc2xvdCk7CisKKyAgICBKU0NsYXNzUmVsZWFzZShjbGllbnRD
bGFzcyk7Cit9CisKK2Jvb2wgUGFnZVBvcHVwQmxhY2tCZXJyeTo6aGFuZGxlTW91c2VFdmVudChQ
bGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQoreworICAgIGlmICghbV9wYWdlLT5tYWluRnJhbWUo
KSB8fCAhbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBzd2l0Y2ggKGV2ZW50LnR5cGUoKSkgeworICAgIGNhc2UgUGxhdGZvcm1FdmVudDo6
TW91c2VNb3ZlZDoKKyAgICAgICAgcmV0dXJuIG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFu
ZGxlcigpLT5oYW5kbGVNb3VzZU1vdmVFdmVudChldmVudCk7CisgICAgY2FzZSBQbGF0Zm9ybUV2
ZW50OjpNb3VzZVByZXNzZWQ6CisgICAgICAgIHJldHVybiBtX3BhZ2UtPm1haW5GcmFtZSgpLT5l
dmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VQcmVzc0V2ZW50KGV2ZW50KTsKKyAgICBjYXNlIFBs
YXRmb3JtRXZlbnQ6Ok1vdXNlUmVsZWFzZWQ6CisgICAgICAgIHJldHVybiBtX3BhZ2UtPm1haW5G
cmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoZXZlbnQpOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgUGFn
ZVBvcHVwQmxhY2tCZXJyeTo6Y2xvc2VQb3B1cCgpCit7CisgICAgY2xvc2VXZWJQYWdlKCk7Cisg
ICAgbV9jbGllbnQtPmRpZENsb3NlUG9wdXAoKTsKKyAgICBtX3dlYlBhZ2VQcml2YXRlLT5jbGll
bnQoKS0+Y2xvc2VQb3B1cFdlYlZpZXcoKTsKK30KKwordm9pZCBQYWdlUG9wdXBCbGFja0JlcnJ5
OjpjbG9zZVdlYlBhZ2UoKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3BhZ2UtPnNldEdyb3VwTmFtZShTdHJpbmcoKSk7CisgICAgbV9wYWdlLT5tYWluRnJh
bWUoKS0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJzKCk7CisgICAgbV9wYWdlLT5tYWluRnJhbWUo
KS0+bG9hZGVyKCktPnN0b3BMb2FkaW5nKFVubG9hZEV2ZW50UG9saWN5Tm9uZSk7CisgICAgbV9w
YWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT5jbGVhcigpOworICAgIG1fcGFnZS5jbGVhcigpOwor
fQorfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5kNWM3MmNlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QYWdlUG9wdXBCbGFja0JlcnJ5LmgKQEAgLTAsMCArMSw2
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIFBh
Z2VQb3B1cEJsYWNrQmVycnlfaAorI2RlZmluZSBQYWdlUG9wdXBCbGFja0JlcnJ5X2gKKworI2lu
Y2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJQYWdlUG9wdXAuaCIKKworCituYW1lc3BhY2Ug
QmxhY2tCZXJyeSB7CituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlBhZ2U7CitjbGFzcyBX
ZWJQYWdlUHJpdmF0ZTsKK30KK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRnJhbWU7
CitjbGFzcyBQYWdlOworY2xhc3MgUGFnZVBvcHVwQ2hyb21lQ2xpZW50OworY2xhc3MgUGFnZVBv
cHVwQ2xpZW50OworY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OworCitjbGFzcyBQYWdlUG9wdXBC
bGFja0JlcnJ5IDogcHVibGljIFBhZ2VQb3B1cCB7CitwdWJsaWM6CisgICAgUGFnZVBvcHVwQmxh
Y2tCZXJyeShCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlKiwgUGFnZVBvcHVwQ2xp
ZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIH5QYWdlUG9wdXBCbGFja0JlcnJ5KCk7CisKKyAg
ICB2b2lkIHNlbmRDcmVhdGVQb3B1cFdlYlZpZXdSZXF1ZXN0KCk7CisgICAgYm9vbCBpbml0KEJs
YWNrQmVycnk6OldlYktpdDo6V2ViUGFnZSopOworICAgIHZvaWQgY2xvc2VQb3B1cCgpOworICAg
IHZvaWQgaW5zdGFsbERvbUZ1bmN0aW9uKEZyYW1lKik7CisgICAgdm9pZCBzZXRSZWN0KCk7Cisg
ICAgdm9pZCBjbG9zZVdlYlBhZ2UoKTsKKworICAgIGJvb2wgaGFuZGxlTW91c2VFdmVudChQbGF0
Zm9ybU1vdXNlRXZlbnQmKTsKKworCitwcml2YXRlOgorICAgIEJsYWNrQmVycnk6OldlYktpdDo6
V2ViUGFnZVByaXZhdGUqIG1fd2ViUGFnZVByaXZhdGU7CisgICAgT3duUHRyPFBhZ2VQb3B1cENs
aWVudD4gbV9jbGllbnQ7CisgICAgSW50UmVjdCBtX3JlY3Q7CisgICAgT3duUHRyPFdlYkNvcmU6
OlBhZ2U+IG1fcGFnZTsKKyAgICBPd25QdHI8UGFnZVBvcHVwQ2hyb21lQ2xpZW50PiBtX2Nocm9t
ZUNsaWVudDsKKworICAgIGZyaWVuZCBjbGFzcyBQYWdlUG9wdXBDaHJvbWVDbGllbnQ7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBQYWdlUG9wdXBCbGFja0JlcnJ5X2gKLS0gCjEuNy4xMC4xCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>