<?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>73798</bug_id>
          
          <creation_ts>2011-12-04 22:23:42 -0800</creation_ts>
          <short_desc>Upstream 6 files into WebCore/platform/blackberry</short_desc>
          <delta_ts>2011-12-12 08:35:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>73144</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Mary Wu">mawu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dbates</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>514911</commentid>
    <comment_count>0</comment_count>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-04 22:23:42 -0800</bug_when>
    <thetext>Upstream 6 files into WebCore/platform/blackberry:
FileSystemBlackBerry.cpp          PlatformTouchPointBlackBerry.cpp  SharedTimerBlackBerry.cpp
PlatformTouchEventBlackBerry.cpp  SharedBufferBlackBerry.cpp        SystemTimeBlackBerry.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514918</commentid>
    <comment_count>1</comment_count>
      <attachid>117844</attachid>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-04 22:35:18 -0800</bug_when>
    <thetext>Created attachment 117844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514944</commentid>
    <comment_count>2</comment_count>
      <attachid>117844</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-12-05 00:06:24 -0800</bug_when>
    <thetext>Comment on attachment 117844
Patch

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

&gt; Source/WebCore/platform/blackberry/FileSystemBlackBerry.cpp:25
&gt; +#include &quot;Vector.h&quot;

This should be:

#include &lt;wtf/Vector.h&gt;

&gt; Source/WebCore/platform/blackberry/FileSystemBlackBerry.cpp:102
&gt; +    return &quot;&quot;;

Nit: return String()

(call the default constructor instead of C-string variant.

&gt; Source/WebCore/platform/blackberry/PlatformTouchEventBlackBerry.cpp:2
&gt; + * This file is part of the WebKit project.

This remark is obvious given you&apos;re proposing to land this file in the WebKit.org tree.

&gt; Source/WebCore/platform/blackberry/PlatformTouchEventBlackBerry.cpp:60
&gt; +    for (unsigned int i = 0; i &lt; event-&gt;m_points.size(); ++i)

unsigned int =&gt; unsigned

I take it the compiler is smart enough to either cache event-&gt;m_points or event-&gt;m_points.size(). Otherwise, I suggest caching this value in a local variable.

&gt; Source/WebCore/platform/blackberry/SharedBufferBlackBerry.cpp:24
&gt; +#include &quot;PassRefPtr.h&quot;

This should be:

#include &lt;wtf/PassRefPtr.h&gt;

&gt; Source/WebCore/platform/blackberry/SharedBufferBlackBerry.cpp:28
&gt; +WTF::PassRefPtr&lt;SharedBuffer&gt; SharedBuffer::createWithContentsOfFile(String const&amp;)

Do we need the WTF:: prefix here?

&gt; Source/WebCore/platform/blackberry/SystemTimeBlackBerry.cpp:30
&gt; +    return 0.0f;

This should be:

return 0;

Per the style rules and by implicit conversion of the return value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514953</commentid>
    <comment_count>3</comment_count>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-05 00:23:09 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 117844 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117844&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/blackberry/FileSystemBlackBerry.cpp:25
&gt; &gt; +#include &quot;Vector.h&quot;
&gt; 
&gt; This should be:
&gt; 
&gt; #include &lt;wtf/Vector.h&gt;
&gt; 
&gt; &gt; Source/WebCore/platform/blackberry/FileSystemBlackBerry.cpp:102
&gt; &gt; +    return &quot;&quot;;
&gt; 
&gt; Nit: return String()
&gt; 
&gt; (call the default constructor instead of C-string variant.
&gt; 
&gt; &gt; Source/WebCore/platform/blackberry/PlatformTouchEventBlackBerry.cpp:2
&gt; &gt; + * This file is part of the WebKit project.
&gt; 
&gt; This remark is obvious given you&apos;re proposing to land this file in the WebKit.org tree.
&gt; 
&gt; &gt; Source/WebCore/platform/blackberry/PlatformTouchEventBlackBerry.cpp:60
&gt; &gt; +    for (unsigned int i = 0; i &lt; event-&gt;m_points.size(); ++i)
&gt; 
&gt; unsigned int =&gt; unsigned
&gt; 
&gt; I take it the compiler is smart enough to either cache event-&gt;m_points or event-&gt;m_points.size(). Otherwise, I suggest caching this value in a local variable.
&gt; 
&gt; &gt; Source/WebCore/platform/blackberry/SharedBufferBlackBerry.cpp:24
&gt; &gt; +#include &quot;PassRefPtr.h&quot;
&gt; 
&gt; This should be:
&gt; 
&gt; #include &lt;wtf/PassRefPtr.h&gt;
&gt; 
&gt; &gt; Source/WebCore/platform/blackberry/SharedBufferBlackBerry.cpp:28
&gt; &gt; +WTF::PassRefPtr&lt;SharedBuffer&gt; SharedBuffer::createWithContentsOfFile(String const&amp;)
&gt; 
&gt; Do we need the WTF:: prefix here?
&gt; 
&gt; &gt; Source/WebCore/platform/blackberry/SystemTimeBlackBerry.cpp:30
&gt; &gt; +    return 0.0f;
&gt; 
&gt; This should be:
&gt; 
&gt; return 0;
&gt; 
&gt; Per the style rules and by implicit conversion of the return value.

thanks for your comments, Daniel, will update...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514956</commentid>
    <comment_count>4</comment_count>
      <attachid>117852</attachid>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-05 00:31:50 -0800</bug_when>
    <thetext>Created attachment 117852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516932</commentid>
    <comment_count>5</comment_count>
      <attachid>117852</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2011-12-07 14:36:42 -0800</bug_when>
    <thetext>Comment on attachment 117852
Patch

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

Looks good, but some stuff that can be improved, so r- for now.

&gt; Source/WebCore/platform/blackberry/PlatformTouchEventBlackBerry.cpp:38
&gt; +#if PLATFORM(BLACKBERRY) &amp;&amp; OS(QNX)

I talked with Dan and this is not needed. OS(QNX) is not needed at all. PLATFORM(BLACKBERRY) is implied since we only compile this on for BlackBerry. So you can remove the test.

&gt; Source/WebCore/platform/blackberry/SharedTimerBlackBerry.cpp:32
&gt; +    static SharedTimerBlackBerry* inst();

I think instance is a better name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517104</commentid>
    <comment_count>6</comment_count>
      <attachid>118309</attachid>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-07 18:57:58 -0800</bug_when>
    <thetext>Created attachment 118309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517113</commentid>
    <comment_count>7</comment_count>
      <attachid>118309</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2011-12-07 19:12:58 -0800</bug_when>
    <thetext>Comment on attachment 118309
Patch

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

Looking good, but still some issues left.

&gt; Source/WebCore/platform/blackberry/FileSystemBlackBerry.cpp:54
&gt; +    // loop invariant: directory part + &apos;/&apos;

Should be made a sentence.

&gt; Source/WebCore/platform/blackberry/PlatformTouchEventBlackBerry.cpp:38
&gt; +#if PLATFORM(BLACKBERRY)

This one should also not be needed, this is a BlackBerry file.

&gt; Source/WebCore/platform/blackberry/SharedTimerBlackBerry.cpp:29
&gt; +    friend void setSharedTimerFiredFunction(void (*f)());

Is this friend declaration needed?

&gt; Source/WebCore/platform/blackberry/SharedTimerBlackBerry.cpp:37
&gt; +    bool m_started;

Could this be moved to private part?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517279</commentid>
    <comment_count>8</comment_count>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-08 02:46:46 -0800</bug_when>
    <thetext>I think we referenced SharedTimerBlackBerry.cpp with qt porting, so should move both m_started and (*m_timerFunction) to private part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517282</commentid>
    <comment_count>9</comment_count>
      <attachid>118354</attachid>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-08 02:57:07 -0800</bug_when>
    <thetext>Created attachment 118354
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517630</commentid>
    <comment_count>10</comment_count>
      <attachid>118354</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2011-12-08 11:52:02 -0800</bug_when>
    <thetext>Comment on attachment 118354
Patch

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

I am pretty sure these are the last remaining problems, but for now r-.

&gt; Source/WebCore/platform/blackberry/FileSystemBlackBerry.cpp:50
&gt; +    DIR* dir;

You could move this to when they are actually used. For instance dir is only used much later. This is inconsistent with how de variable is used, which is only declared just before it is used.

&gt; Source/WebCore/platform/blackberry/FileSystemBlackBerry.cpp:54
&gt; +    // if directory part don&apos;t have &apos;/&apos; in the end, add it

Should be made into a proper sentence starting with Capital and ending with punctuation mark. Also probably should be placed before the if.

&gt; Source/WebCore/platform/blackberry/SharedTimerBlackBerry.cpp:45
&gt; +static SharedTimerBlackBerry* s_timer = 0;

I think it is nicer to move this into the instance() method. Also then you can remove the s_ prefix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518015</commentid>
    <comment_count>11</comment_count>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-08 18:31:42 -0800</bug_when>
    <thetext>yes, thanks for your comments, Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518023</commentid>
    <comment_count>12</comment_count>
      <attachid>118511</attachid>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-08 18:39:27 -0800</bug_when>
    <thetext>Created attachment 118511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518050</commentid>
    <comment_count>13</comment_count>
      <attachid>118511</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2011-12-08 19:41:39 -0800</bug_when>
    <thetext>Comment on attachment 118511
Patch

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

Some nits left. Once you have fixed, I am fine with the patch, so you can ask Leo to do the final r+ and cq.

&gt; Source/WebCore/platform/blackberry/FileSystemBlackBerry.cpp:55
&gt; +    fileName = filePath + cpath.length();

How about:

char *fileName = filePath + cpath.length();

&gt; Source/WebCore/platform/blackberry/FileSystemBlackBerry.cpp:61
&gt; +    fileNameSpace = sizeof(filePath) - (fileName - filePath) - 1;

Why not move it down to:

size_t fileNameSpace = sizeof(filePath) - (fileName - filePath) - 1;

&gt; Source/WebCore/platform/blackberry/FileSystemBlackBerry.cpp:64
&gt; +    dir = opendir(cpath.data());

I would suggest : DIR* dir = opendir(path.data())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518062</commentid>
    <comment_count>14</comment_count>
      <attachid>118519</attachid>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-08 20:05:02 -0800</bug_when>
    <thetext>Created attachment 118519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518263</commentid>
    <comment_count>15</comment_count>
      <attachid>118519</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2011-12-09 07:45:29 -0800</bug_when>
    <thetext>Comment on attachment 118519
Patch

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

The code is fine, one nit left. So r+ but cq- :) This means the patch can be fixed and committed by hand, or reuploaded and I&apos;ll r+ it again.

&gt; Source/WebCore/platform/blackberry/PlatformTouchPointBlackBerry.cpp:3
&gt; + * Copyright (C) 2010, 2011 Research In Motion Limited 2010. All rights reserved.

The final 2010 seems misplaced.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518771</commentid>
    <comment_count>16</comment_count>
      <attachid>118519</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-12-10 01:30:13 -0800</bug_when>
    <thetext>Comment on attachment 118519
Patch

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

Oh, just saw Rob gave r+, I have a rather big concern, so I revert to r-:

&gt; Source/WebCore/platform/blackberry/FileSystemBlackBerry.cpp:44
&gt; +Vector&lt;String&gt; listDirectory(const String&amp; path, const String&amp; filter)
&gt; +{
&gt; +    Vector&lt;String&gt; entries;

Ouch, we now have three different versions of listDirectory, that all more ore less use the same opendir() based functionality.
Once in platform/efl/FileSystemEfl.cpp (our code seems to be a copy of it), and platform/posix/FileSystemPosix.cpp.

Could you break this patch up into another piece, and refactor the listDirectory method? We can 1:1 share with Efl I think, and maybe also posix/.
No need for us to have the maintenance burden alone :-)

And note: this code in general looks scary, and I&apos;d rather avoid having possibly unsafe code in trunk.
If we want to add this as new code, it needs an intensive review...

The rest of this patch looks fine, so I suggest to leave out FileSysytemBlackberry from this patch, until it is properly refactored.

&gt; Source/WebCore/platform/blackberry/SharedBufferBlackBerry.cpp:32
&gt; +    return 0;

return nullptr;

&gt; Source/WebCore/platform/blackberry/SharedTimerBlackBerry.cpp:61
&gt; +        timer = new SharedTimerBlackBerry();

s/()//

&gt; Source/WebCore/platform/blackberry/SharedTimerBlackBerry.cpp:73
&gt; +    if (m_started) {

if (!m_started) early return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519022</commentid>
    <comment_count>17</comment_count>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-11 22:42:19 -0800</bug_when>
    <thetext>Nikolas, thanks for your comments. For disagreement on the file FileSystemBlackBerry.cpp, I removed it from the patch and give it to separate pr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519023</commentid>
    <comment_count>18</comment_count>
      <attachid>118734</attachid>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-11 22:43:03 -0800</bug_when>
    <thetext>Created attachment 118734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519045</commentid>
    <comment_count>19</comment_count>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-11 23:41:26 -0800</bug_when>
    <thetext>
&gt; &gt; Source/WebCore/platform/blackberry/SharedBufferBlackBerry.cpp:32
&gt; &gt; +    return 0;
&gt; 
&gt; return nullptr;
&gt; 

In WebKit coding-style, I saw this &quot;In C++, the null pointer value should be written as 0.&quot; So should we use nullptr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519181</commentid>
    <comment_count>20</comment_count>
      <attachid>118734</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2011-12-12 07:20:37 -0800</bug_when>
    <thetext>Comment on attachment 118734
Patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519215</commentid>
    <comment_count>21</comment_count>
      <attachid>118734</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-12 08:35:23 -0800</bug_when>
    <thetext>Comment on attachment 118734
Patch

Clearing flags on attachment: 118734

Committed r102588: &lt;http://trac.webkit.org/changeset/102588&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519216</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-12 08:35:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117844</attachid>
            <date>2011-12-04 22:35:18 -0800</date>
            <delta_ts>2011-12-05 00:31:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73798-20111205143516.patch</filename>
            <type>text/plain</type>
            <size>16394</size>
            <attacher name="Mary Wu">mawu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg4OTMyYjc1ZDNkZjgz
NDgyOTY5OWVmMTYxZTRmNzkwNzRhNjk1NS4uYTRkNmVjYjdlNDA0M2ZjMzg4Mjg5NWEwMGRiMTg2
ZjM1YTg5NjI3NiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDExLTEyLTA0ICBNYXJ5
IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgVXBzdHJlYW0gNiBm
aWxlcyBpbnRvIFdlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM3OTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBvdGhlciBtYWluIGNvbnRyaWJ1dG9yczoKKyAg
ICAgICAgR2VuZXZpZXZlIE1hayAgPGdtYWtAcmltLmNvbT4KKyAgICAgICAgQW50b25pbyBHb21l
cyAgPGFnb21lc0ByaW0uY29tPgorICAgICAgICBMeW9uIENoZW4gIDxsaWFjaGVuQHJpbS5jb20+
CisgICAgICAgIE1pa2UgRmVudG9uIDxtaWZlbnRvbkByaW0uY29tPgorICAgICAgICBHZW9yZ2Ug
U3RhaWtvcyAgPGdzdGFpa29zQHJpbS5jb20+CisgICAgICAgIFlvbmcgTGkgIDx5b2xpQHJpbS5j
b20+CisgICAgICAgIAorICAgICAgICBJbml0aWFsIHVwc3RyZWFtLCBObyBuZXcgdGVzdHMuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpob21lRGlyZWN0b3J5UGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpsaXN0RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjp1bmxvYWRNb2R1bGUpOgorICAgICAgICAo
V2ViQ29yZTo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVy
cnkvUGxhdGZvcm1Ub3VjaEV2ZW50QmxhY2tCZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Ub3VjaFBvaW50QmxhY2tCZXJyeS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50OjpQbGF0Zm9ybVRvdWNo
UG9pbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvU2hhcmVkQnVmZmVyQmxhY2tC
ZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvU2hhcmVk
VGltZXJCbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRUaW1l
ckJsYWNrQmVycnk6OlNoYXJlZFRpbWVyQmxhY2tCZXJyeSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRUaW1lckJsYWNrQmVycnk6On5TaGFyZWRUaW1lckJsYWNrQmVycnkpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkVGltZXJCbGFja0JlcnJ5OjppbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZFRpbWVyQmxhY2tCZXJyeTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
VGltZXJCbGFja0JlcnJ5OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFNoYXJlZFRpbWVy
RmlyZWRGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRTaGFyZWRUaW1lckZpcmVJbnRl
cnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpzdG9wU2hhcmVkVGltZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2JsYWNrYmVycnkvU3lzdGVtVGltZUJsYWNrQmVycnkuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OnVzZXJJZGxlVGltZSk6CisKIDIwMTEtMTEtMzAgIEplZmYgVGltYW51cyAg
PHR3aXpAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFsdGVyIGFuIGVhcmx5IHJldHVybiB0aGF0
IHdhcyBwcmV2ZW50aW5nIEhUTUxDYW52YXNFbGVtZW50OjpkaWREcmF3IG5vdGlmaWNhdGlvbnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvRmlsZVN5c3Rl
bUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9GaWxl
U3lzdGVtQmxhY2tCZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQxYWVjZTkwNzc5Yzc5ZGRmMTZjMWI0
NzU5MGI0M2Q3ODI0YzQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCkBAIC0wLDAgKzEsMTA1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3Rl
bXMKKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqIENv
cHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKKyNpbmNsdWRlICJWZWN0b3IuaCIKKworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9y
bUNsaWVudC5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNp
bmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZubWF0Y2guaD4KKyNpbmNsdWRlIDxzdGRpby5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQoreworICAgIHJldHVybiBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6Q2xpZW50OjpnZXQoKS0+Z2V0QXBwbGljYXRpb25EYXRhRGlyZWN0b3J5KCkuY19z
dHIoKTsKK30KKworVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7
CisgICAgQ1N0cmluZyBjcGF0aCA9IHBhdGgudXRmOCgpOworICAgIENTdHJpbmcgY2ZpbHRlciA9
IGZpbHRlci51dGY4KCk7CisgICAgY2hhciBmaWxlUGF0aFtQQVRIX01BWF07CisgICAgY2hhciog
ZmlsZU5hbWU7CisgICAgc2l6ZV90IGZpbGVOYW1lU3BhY2U7CisgICAgRElSKiBkaXI7CisKKyAg
ICBpZiAoY3BhdGgubGVuZ3RoKCkgKyBOQU1FX01BWCA+PSBzaXplb2YoZmlsZVBhdGgpKQorICAg
ICAgICByZXR1cm4gZW50cmllczsKKyAgICAvLyBsb29wIGludmFyaWFudDogZGlyZWN0b3J5IHBh
cnQgKyAnLycKKyAgICBtZW1jcHkoZmlsZVBhdGgsIGNwYXRoLmRhdGEoKSwgY3BhdGgubGVuZ3Ro
KCkpOworICAgIGZpbGVOYW1lID0gZmlsZVBhdGggKyBjcGF0aC5sZW5ndGgoKTsKKyAgICBpZiAo
Y3BhdGgubGVuZ3RoKCkgPiAwICYmIGZpbGVQYXRoW2NwYXRoLmxlbmd0aCgpIC0gMV0gIT0gJy8n
KSB7CisgICAgICAgIGZpbGVOYW1lWzBdID0gJy8nOworICAgICAgICBmaWxlTmFtZSsrOworICAg
IH0KKyAgICBmaWxlTmFtZVNwYWNlID0gc2l6ZW9mKGZpbGVQYXRoKSAtIChmaWxlTmFtZSAtIGZp
bGVQYXRoKSAtIDE7CisKKyAgICBkaXIgPSBvcGVuZGlyKGNwYXRoLmRhdGEoKSk7CisgICAgaWYg
KCFkaXIpCisgICAgICAgIHJldHVybiBlbnRyaWVzOworCisgICAgc3RydWN0IGRpcmVudCogZGU7
CisgICAgd2hpbGUgKGRlID0gcmVhZGRpcihkaXIpKSB7CisgICAgICAgIHNpemVfdCBuYW1lTGVu
OworICAgICAgICBpZiAoZGUtPmRfbmFtZVswXSA9PSAnLicpIHsKKyAgICAgICAgICAgIGlmIChk
ZS0+ZF9uYW1lWzFdID09ICdcMCcpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICBpZiAoZGUtPmRfbmFtZVsxXSA9PSAnLicgJiYgZGUtPmRfbmFtZVsyXSA9PSAnXDAnKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChmbm1hdGNo
KGNmaWx0ZXIuZGF0YSgpLCBkZS0+ZF9uYW1lLCAwKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIG5hbWVMZW4gPSBzdHJsZW4oZGUtPmRfbmFtZSk7CisgICAgICAgIGlmIChuYW1l
TGVuID49IGZpbGVOYW1lU3BhY2UpCisgICAgICAgICAgICBjb250aW51ZTsgLy8gbWF5YmUgYXNz
ZXJ0PyBpdCBzaG91bGQgbmV2ZXIgaGFwcGVuIGFueXdheS4uLgorCisgICAgICAgIG1lbWNweShm
aWxlTmFtZSwgZGUtPmRfbmFtZSwgbmFtZUxlbiArIDEpOworICAgICAgICBlbnRyaWVzLmFwcGVu
ZChmaWxlUGF0aCk7CisgICAgfQorICAgIGNsb3NlZGlyKGRpcik7CisgICAgcmV0dXJuIGVudHJp
ZXM7Cit9CisKK0NTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYg
cGF0aCkKK3sKKyAgICByZXR1cm4gcGF0aC51dGY4KCk7Cit9CisKK2Jvb2wgdW5sb2FkTW9kdWxl
KFBsYXRmb3JtTW9kdWxlKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIG9wZW5U
ZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYpCit7CisgICAg
cmV0dXJuICIiOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtVG91Y2hFdmVudEJsYWNrQmVy
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybVRvdWNo
RXZlbnRCbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzZlMDU1YWU5OTk0Yjk2NWM1NGFlMGVm
YzA0MjgxN2RiNDhhZjdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9QbGF0Zm9ybVRvdWNoRXZlbnRCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsx
LDgxIEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0Lgor
ICoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAxMCBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKKworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0
Zm9ybVRvdWNoRXZlbnQuaD4KKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworUGxhdGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQoQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OlRvdWNoRXZlbnQqIGV2ZW50KQorICAgIDogbV9jdHJsS2V5KDAp
CisgICAgLCBtX2FsdEtleShldmVudC0+bV9hbHRLZXkpCisgICAgLCBtX3NoaWZ0S2V5KGV2ZW50
LT5tX3NoaWZ0S2V5KQorICAgICwgbV9tZXRhS2V5KDApCisgICAgLCBtX3JvdGF0aW9uKDApCisg
ICAgLCBtX3NjYWxlKDEpCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkgJiYgT1MoUU5YKQorICAg
ICwgbV9kb3VibGVUYXAoZmFsc2UpCisgICAgLCBtX3RvdWNoSG9sZChmYWxzZSkKKyNlbmRpZgor
eworICAgIHN3aXRjaCAoZXZlbnQtPm1fdHlwZSkgeworICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OlRvdWNoRXZlbnQ6OlRvdWNoU3RhcnQ6CisgICAgICAgIG1fdHlwZSA9IFRvdWNoU3Rh
cnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRvdWNo
RXZlbnQ6OlRvdWNoTW92ZToKKyAgICAgICAgbV90eXBlID0gVG91Y2hNb3ZlOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpUb3VjaEV2ZW50OjpUb3VjaEVu
ZDoKKyAgICAgICAgbV90eXBlID0gVG91Y2hFbmQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QmxhY2tCZXJyeTo6UGxhdGZvcm06OlRvdWNoRXZlbnQ6OlRvdWNoQ2FuY2VsOgorICAgICAgICBt
X3R5cGUgPSBUb3VjaENhbmNlbDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBldmVudC0+bV9wb2ludHMuc2l6ZSgpOyArK2kpCisgICAg
ICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKFBsYXRmb3JtVG91Y2hQb2ludChldmVudC0+bV9wb2lu
dHNbaV0pKTsKKworICAgIGlmIChldmVudC0+bV9nZXN0dXJlcy5lbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R2VzdHVyZSBwaW5jaDsKKyAgICBp
ZiAoZXZlbnQtPmhhc0dlc3R1cmUoQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdlc3R1cmU6OlBpbmNo
LCAmcGluY2gpKSB7CisgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpQaW5jaEdlc3R1cmVE
YXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8QmxhY2tCZXJyeTo6UGxhdGZvcm06OlBpbmNoR2VzdHVy
ZURhdGEqPihwaW5jaC5tX2RhdGEpOworICAgICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAg
bV9yb3RhdGlvbiA9IGRhdGEtPm1fYW5nbGUgKiAxODAgLyBNX1BJOworICAgICAgICAgICAgbV9z
Y2FsZSA9IGRhdGEtPm1fc2NhbGU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGV2ZW50LT5o
YXNHZXN0dXJlKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHZXN0dXJlOjpEb3VibGVUYXApKQorICAg
ICAgICBtX2RvdWJsZVRhcCA9IHRydWU7CisgICAgZWxzZSBpZiAoZXZlbnQtPmhhc0dlc3R1cmUo
QmxhY2tCZXJyeTo6UGxhdGZvcm06Okdlc3R1cmU6OlRvdWNoSG9sZCkpCisgICAgICAgIG1fdG91
Y2hIb2xkID0gdHJ1ZTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Ub3VjaFBvaW50QmxhY2tCZXJyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtVG91Y2hQb2ludEJs
YWNrQmVycnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxY2I3ZjVjMWUwNDgzMDI0NmY3Mzk0Y2NiMGM4Yzg3
NjY3ZTRhNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFj
a2JlcnJ5L1BsYXRmb3JtVG91Y2hQb2ludEJsYWNrQmVycnkuY3BwCkBAIC0wLDAgKzEsNTUgQEAK
Ky8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IHByb2plY3QuCisgKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEwIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
IDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybVRvdWNoUG9pbnQuaCIKKworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVRv
dWNoRXZlbnQuaD4KKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUGxhdGZvcm1Ub3VjaFBvaW50OjpQbGF0Zm9ybVRvdWNoUG9pbnQoY29uc3QgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OlRvdWNoUG9pbnQmIHBvaW50KQorICAgIDogbV9pZChwb2ludC5t
X2lkKQorICAgICwgbV9zY3JlZW5Qb3MocG9pbnQubV9zY3JlZW5Qb3MpCisgICAgLCBtX3Bvcyhw
b2ludC5tX3BvcykKK3sKKyAgICBzd2l0Y2ggKHBvaW50Lm1fc3RhdGUpIHsKKyAgICBjYXNlIEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpUb3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkOgorICAgICAgICBt
X3N0YXRlID0gVG91Y2hSZWxlYXNlZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6VG91Y2hQb2ludDo6VG91Y2hNb3ZlZDoKKyAgICAgICAgbV9zdGF0ZSA9
IFRvdWNoTW92ZWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OlRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZDoKKyAgICAgICAgbV9zdGF0ZSA9IFRvdWNoUHJl
c3NlZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VG91
Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OgorICAgICAgICBtX3N0YXRlID0gVG91Y2hTdGF0aW9u
YXJ5OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1NoYXJlZEJ1ZmZlckJsYWNrQmVy
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9TaGFyZWRCdWZmZXJC
bGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDFlYTZjOThmMDdjY2VmNjVhZGU3NWNmZGZjNmU5
ZWE0Y2E1NDVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9TaGFyZWRCdWZmZXJCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDM0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhc3NSZWZQdHIu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEY6OlBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcgY29uc3QmKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvU2hhcmVkVGltZXJCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvU2hhcmVkVGltZXJCbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZWM5OGZjY2Q5
NWY1YjM1MGVjZmIyMTU5MWY0Y2E2OTc4Zjg3ZmY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9TaGFyZWRUaW1lckJsYWNrQmVycnkuY3BwCkBA
IC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZFRpbWVyLmgiCisKKyNpbmNsdWRl
ICJDdXJyZW50VGltZS5oIgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVRpbWVyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkVGltZXJCbGFja0JlcnJ5IHsKKyAg
ICBmcmllbmQgdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmYpKCkpOwor
CitwdWJsaWM6CisgICAgc3RhdGljIFNoYXJlZFRpbWVyQmxhY2tCZXJyeSogaW5zdCgpOworCisg
ICAgdm9pZCBzdGFydChkb3VibGUpOworICAgIHZvaWQgc3RvcCgpOworCisgICAgYm9vbCBtX3N0
YXJ0ZWQ7CisgICAgdm9pZCAoKm1fdGltZXJGdW5jdGlvbikoKTsKK3ByaXZhdGU6CisgICAgU2hh
cmVkVGltZXJCbGFja0JlcnJ5KCk7CisgICAgflNoYXJlZFRpbWVyQmxhY2tCZXJyeSgpOworfTsK
Kworc3RhdGljIFNoYXJlZFRpbWVyQmxhY2tCZXJyeSogc190aW1lciA9IDA7CisKK1NoYXJlZFRp
bWVyQmxhY2tCZXJyeTo6U2hhcmVkVGltZXJCbGFja0JlcnJ5KCkKKyAgICA6IG1fc3RhcnRlZChm
YWxzZSkKKyAgICAsIG1fdGltZXJGdW5jdGlvbigwKQoreworfQorCitTaGFyZWRUaW1lckJsYWNr
QmVycnk6On5TaGFyZWRUaW1lckJsYWNrQmVycnkoKQoreworICAgIGlmIChtX3N0YXJ0ZWQpCisg
ICAgICAgIHN0b3AoKTsKK30KKworU2hhcmVkVGltZXJCbGFja0JlcnJ5KiBTaGFyZWRUaW1lckJs
YWNrQmVycnk6Omluc3QoKQoreworICAgIGlmICghc190aW1lcikKKyAgICAgICAgc190aW1lciA9
IG5ldyBTaGFyZWRUaW1lckJsYWNrQmVycnkoKTsKKyAgICByZXR1cm4gc190aW1lcjsKK30KKwor
dm9pZCBTaGFyZWRUaW1lckJsYWNrQmVycnk6OnN0YXJ0KGRvdWJsZSBpbnRlcnZhbCkKK3sKKyAg
ICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dGltZXJTdGFydChpbnRlcnZhbCwgbV90aW1lckZ1bmN0
aW9uKTsKKyAgICBtX3N0YXJ0ZWQgPSB0cnVlOworfQorCit2b2lkIFNoYXJlZFRpbWVyQmxhY2tC
ZXJyeTo6c3RvcCgpCit7CisgICAgaWYgKG1fc3RhcnRlZCkgeworICAgICAgICBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6dGltZXJTdG9wKCk7CisgICAgICAgIG1fc3RhcnRlZCA9IGZhbHNlOworICAg
IH0KK30KKwordm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmYpKCkpCit7
CisgICAgU2hhcmVkVGltZXJCbGFja0JlcnJ5OjppbnN0KCktPm1fdGltZXJGdW5jdGlvbiA9IGY7
Cit9CisKK3ZvaWQgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQor
eworICAgIFNoYXJlZFRpbWVyQmxhY2tCZXJyeTo6aW5zdCgpLT5zdGFydChpbnRlcnZhbCk7Cit9
CisKK3ZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKK3sKKyAgICBTaGFyZWRUaW1lckJsYWNrQmVycnk6
Omluc3QoKS0+c3RvcCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvU3lzdGVtVGltZUJsYWNrQmVy
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9TeXN0ZW1UaW1lQmxh
Y2tCZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDViNjZmZmIzMGZjOGExODEzOWFiYjU1Mzk2MmQwNTRj
NmUwNmMxMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNr
YmVycnkvU3lzdGVtVGltZUJsYWNrQmVycnkuY3BwCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTeXN0ZW1UaW1lLmgiCisK
KyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Zs
b2F0IHVzZXJJZGxlVGltZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
MC4wZjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117852</attachid>
            <date>2011-12-05 00:31:50 -0800</date>
            <delta_ts>2011-12-07 18:57:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73798-20111205163148.patch</filename>
            <type>text/plain</type>
            <size>16223</size>
            <attacher name="Mary Wu">mawu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg4OTMyYjc1ZDNkZjgz
NDgyOTY5OWVmMTYxZTRmNzkwNzRhNjk1NS4uYjQ5OWYzYWEwOGE4ZmUyYmJlM2Q5MzdhOWY3YTU1
OTc2NjNlMjk1NSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTEyLTA0ICBNYXJ5
IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgVXBzdHJlYW0gNiBm
aWxlcyBpbnRvIFdlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM3OTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWluIGNvbnRyaWJ1dG9yczoKKyAgICAgICAg
R2VuZXZpZXZlIE1hayAgPGdtYWtAcmltLmNvbT4KKyAgICAgICAgQW50b25pbyBHb21lcyAgPGFn
b21lc0ByaW0uY29tPgorICAgICAgICBMeW9uIENoZW4gIDxsaWFjaGVuQHJpbS5jb20+CisgICAg
ICAgIEdlb3JnZSBTdGFpa29zICA8Z3N0YWlrb3NAcmltLmNvbT4KKyAgICAgICAgCisgICAgICAg
IEluaXRpYWwgdXBzdHJlYW0sIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2Js
YWNrYmVycnkvRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmhvbWVEaXJlY3RvcnlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6Omxpc3REaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OnVubG9hZE1vZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVuVGVtcG9yYXJ5
RmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybVRvdWNoRXZlbnRC
bGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoRXZl
bnQ6OlBsYXRmb3JtVG91Y2hFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9Q
bGF0Zm9ybVRvdWNoUG9pbnRCbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVRvdWNoUG9pbnQ6OlBsYXRmb3JtVG91Y2hQb2ludCk6CisgICAgICAgICogcGxh
dGZvcm0vYmxhY2tiZXJyeS9TaGFyZWRCdWZmZXJCbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9TaGFyZWRUaW1lckJsYWNrQmVycnkuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFRpbWVyQmxhY2tCZXJyeTo6U2hhcmVkVGlt
ZXJCbGFja0JlcnJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFRpbWVyQmxhY2tCZXJyeTo6
flNoYXJlZFRpbWVyQmxhY2tCZXJyeSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRUaW1lckJs
YWNrQmVycnk6Omluc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkVGltZXJCbGFja0JlcnJ5
OjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRUaW1lckJsYWNrQmVycnk6OnN0b3Ap
OgorICAgICAgICAoV2ViQ29yZTo6c2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldFNoYXJlZFRpbWVyRmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OnN0b3BTaGFyZWRUaW1lcik6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9TeXN0
ZW1UaW1lQmxhY2tCZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6dXNlcklkbGVU
aW1lKToKKwogMjAxMS0xMS0zMCAgSmVmZiBUaW1hbnVzICA8dHdpekBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgQWx0ZXIgYW4gZWFybHkgcmV0dXJuIHRoYXQgd2FzIHByZXZlbnRpbmcgSFRNTENh
bnZhc0VsZW1lbnQ6OmRpZERyYXcgbm90aWZpY2F0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9GaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZWQ0MDcxYTIwNTNmYmExMzRkMjc1NzNmMzZkODhjZWU3OWM1NmFiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9GaWxlU3lz
dGVtQmxhY2tCZXJyeS5jcHAKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworICogQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEw
LCAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAy
MTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCisjaW5jbHVkZSA8Qmxh
Y2tCZXJyeVBsYXRmb3JtQ2xpZW50Lmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUg
PGRpcmVudC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8Zm5tYXRjaC5oPgorI2lu
Y2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTdHJpbmcgaG9tZURpcmVj
dG9yeVBhdGgoKQoreworICAgIHJldHVybiBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50Ojpn
ZXQoKS0+Z2V0QXBwbGljYXRpb25EYXRhRGlyZWN0b3J5KCkuY19zdHIoKTsKK30KKworVmVjdG9y
PFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
ZmlsdGVyKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7CisgICAgQ1N0cmluZyBjcGF0
aCA9IHBhdGgudXRmOCgpOworICAgIENTdHJpbmcgY2ZpbHRlciA9IGZpbHRlci51dGY4KCk7Cisg
ICAgY2hhciBmaWxlUGF0aFtQQVRIX01BWF07CisgICAgY2hhciogZmlsZU5hbWU7CisgICAgc2l6
ZV90IGZpbGVOYW1lU3BhY2U7CisgICAgRElSKiBkaXI7CisKKyAgICBpZiAoY3BhdGgubGVuZ3Ro
KCkgKyBOQU1FX01BWCA+PSBzaXplb2YoZmlsZVBhdGgpKQorICAgICAgICByZXR1cm4gZW50cmll
czsKKyAgICAvLyBsb29wIGludmFyaWFudDogZGlyZWN0b3J5IHBhcnQgKyAnLycKKyAgICBtZW1j
cHkoZmlsZVBhdGgsIGNwYXRoLmRhdGEoKSwgY3BhdGgubGVuZ3RoKCkpOworICAgIGZpbGVOYW1l
ID0gZmlsZVBhdGggKyBjcGF0aC5sZW5ndGgoKTsKKyAgICBpZiAoY3BhdGgubGVuZ3RoKCkgPiAw
ICYmIGZpbGVQYXRoW2NwYXRoLmxlbmd0aCgpIC0gMV0gIT0gJy8nKSB7CisgICAgICAgIGZpbGVO
YW1lWzBdID0gJy8nOworICAgICAgICBmaWxlTmFtZSsrOworICAgIH0KKyAgICBmaWxlTmFtZVNw
YWNlID0gc2l6ZW9mKGZpbGVQYXRoKSAtIChmaWxlTmFtZSAtIGZpbGVQYXRoKSAtIDE7CisKKyAg
ICBkaXIgPSBvcGVuZGlyKGNwYXRoLmRhdGEoKSk7CisgICAgaWYgKCFkaXIpCisgICAgICAgIHJl
dHVybiBlbnRyaWVzOworCisgICAgc3RydWN0IGRpcmVudCogZGU7CisgICAgd2hpbGUgKGRlID0g
cmVhZGRpcihkaXIpKSB7CisgICAgICAgIHNpemVfdCBuYW1lTGVuOworICAgICAgICBpZiAoZGUt
PmRfbmFtZVswXSA9PSAnLicpIHsKKyAgICAgICAgICAgIGlmIChkZS0+ZF9uYW1lWzFdID09ICdc
MCcpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoZGUtPmRfbmFt
ZVsxXSA9PSAnLicgJiYgZGUtPmRfbmFtZVsyXSA9PSAnXDAnKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChmbm1hdGNoKGNmaWx0ZXIuZGF0YSgpLCBk
ZS0+ZF9uYW1lLCAwKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIG5hbWVMZW4g
PSBzdHJsZW4oZGUtPmRfbmFtZSk7CisgICAgICAgIGlmIChuYW1lTGVuID49IGZpbGVOYW1lU3Bh
Y2UpCisgICAgICAgICAgICBjb250aW51ZTsgLy8gbWF5YmUgYXNzZXJ0PyBpdCBzaG91bGQgbmV2
ZXIgaGFwcGVuIGFueXdheS4uLgorCisgICAgICAgIG1lbWNweShmaWxlTmFtZSwgZGUtPmRfbmFt
ZSwgbmFtZUxlbiArIDEpOworICAgICAgICBlbnRyaWVzLmFwcGVuZChmaWxlUGF0aCk7CisgICAg
fQorICAgIGNsb3NlZGlyKGRpcik7CisgICAgcmV0dXJuIGVudHJpZXM7Cit9CisKK0NTdHJpbmcg
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1
cm4gcGF0aC51dGY4KCk7Cit9CisKK2Jvb2wgdW5sb2FkTW9kdWxlKFBsYXRmb3JtTW9kdWxlKQor
eworICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0
IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYpCit7CisgICAgcmV0dXJuIFN0cmluZygpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtVG91Y2hFdmVudEJsYWNrQmVycnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybVRvdWNoRXZlbnRCbGFja0Jl
cnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MTU5MTQxNjdkYWJlNjcyMzFjNzNkZWYxZGM4YTRlMmU3ODYw
YzlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9QbGF0Zm9ybVRvdWNoRXZlbnRCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDc5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEwIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtVG91Y2hFdmVudC5oIgorCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3Jt
VG91Y2hFdmVudC5oPgorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitQbGF0Zm9ybVRvdWNoRXZlbnQ6OlBsYXRmb3JtVG91Y2hFdmVudChCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6VG91Y2hFdmVudCogZXZlbnQpCisgICAgOiBtX2N0cmxLZXkoMCkKKyAg
ICAsIG1fYWx0S2V5KGV2ZW50LT5tX2FsdEtleSkKKyAgICAsIG1fc2hpZnRLZXkoZXZlbnQtPm1f
c2hpZnRLZXkpCisgICAgLCBtX21ldGFLZXkoMCkKKyAgICAsIG1fcm90YXRpb24oMCkKKyAgICAs
IG1fc2NhbGUoMSkKKyNpZiBQTEFURk9STShCTEFDS0JFUlJZKSAmJiBPUyhRTlgpCisgICAgLCBt
X2RvdWJsZVRhcChmYWxzZSkKKyAgICAsIG1fdG91Y2hIb2xkKGZhbHNlKQorI2VuZGlmCit7Cisg
ICAgc3dpdGNoIChldmVudC0+bV90eXBlKSB7CisgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6VG91Y2hFdmVudDo6VG91Y2hTdGFydDoKKyAgICAgICAgbV90eXBlID0gVG91Y2hTdGFydDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VG91Y2hFdmVu
dDo6VG91Y2hNb3ZlOgorICAgICAgICBtX3R5cGUgPSBUb3VjaE1vdmU7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRvdWNoRXZlbnQ6OlRvdWNoRW5kOgor
ICAgICAgICBtX3R5cGUgPSBUb3VjaEVuZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6VG91Y2hFdmVudDo6VG91Y2hDYW5jZWw6CisgICAgICAgIG1fdHlw
ZSA9IFRvdWNoQ2FuY2VsOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZXZlbnQtPm1fcG9pbnRzLnNpemUoKTsgKytpKQorICAgICAgICBtX3Rv
dWNoUG9pbnRzLmFwcGVuZChQbGF0Zm9ybVRvdWNoUG9pbnQoZXZlbnQtPm1fcG9pbnRzW2ldKSk7
CisKKyAgICBpZiAoZXZlbnQtPm1fZ2VzdHVyZXMuZW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdlc3R1cmUgcGluY2g7CisgICAgaWYgKGV2ZW50
LT5oYXNHZXN0dXJlKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHZXN0dXJlOjpQaW5jaCwgJnBpbmNo
KSkgeworICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6UGluY2hHZXN0dXJlRGF0YSogZGF0
YSA9IHN0YXRpY19jYXN0PEJsYWNrQmVycnk6OlBsYXRmb3JtOjpQaW5jaEdlc3R1cmVEYXRhKj4o
cGluY2gubV9kYXRhKTsKKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fcm90YXRp
b24gPSBkYXRhLT5tX2FuZ2xlICogMTgwIC8gTV9QSTsKKyAgICAgICAgICAgIG1fc2NhbGUgPSBk
YXRhLT5tX3NjYWxlOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChldmVudC0+aGFzR2VzdHVy
ZShCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R2VzdHVyZTo6RG91YmxlVGFwKSkKKyAgICAgICAgbV9k
b3VibGVUYXAgPSB0cnVlOworICAgIGVsc2UgaWYgKGV2ZW50LT5oYXNHZXN0dXJlKEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpHZXN0dXJlOjpUb3VjaEhvbGQpKQorICAgICAgICBtX3RvdWNoSG9sZCA9
IHRydWU7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtVG91Y2hQb2ludEJsYWNrQmVycnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybVRvdWNoUG9pbnRCbGFja0JlcnJ5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kZjVlYzNjNmM1Y2NjM2NjM2M1ODVjODVmODIwNDBjYjRkN2MzNWZh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Q
bGF0Zm9ybVRvdWNoUG9pbnRCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEwIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
IDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybVRvdWNoUG9pbnQuaCIKKworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVRv
dWNoRXZlbnQuaD4KKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUGxhdGZvcm1Ub3VjaFBvaW50OjpQbGF0Zm9ybVRvdWNoUG9pbnQoY29uc3QgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OlRvdWNoUG9pbnQmIHBvaW50KQorICAgIDogbV9pZChwb2ludC5t
X2lkKQorICAgICwgbV9zY3JlZW5Qb3MocG9pbnQubV9zY3JlZW5Qb3MpCisgICAgLCBtX3Bvcyhw
b2ludC5tX3BvcykKK3sKKyAgICBzd2l0Y2ggKHBvaW50Lm1fc3RhdGUpIHsKKyAgICBjYXNlIEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpUb3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkOgorICAgICAgICBt
X3N0YXRlID0gVG91Y2hSZWxlYXNlZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6VG91Y2hQb2ludDo6VG91Y2hNb3ZlZDoKKyAgICAgICAgbV9zdGF0ZSA9
IFRvdWNoTW92ZWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OlRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZDoKKyAgICAgICAgbV9zdGF0ZSA9IFRvdWNoUHJl
c3NlZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VG91
Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OgorICAgICAgICBtX3N0YXRlID0gVG91Y2hTdGF0aW9u
YXJ5OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1NoYXJlZEJ1ZmZlckJsYWNrQmVy
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9TaGFyZWRCdWZmZXJC
bGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjllNWI3MTNmODA4MTk2ZWQzOTI1ZDAyMzVhNzlj
MWUyMjFhYTY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9TaGFyZWRCdWZmZXJCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDM1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nIGNvbnN0JikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L1NoYXJlZFRpbWVyQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L1NoYXJlZFRpbWVyQmxhY2tCZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjEzOWNiYWY1
NWRhYjE4NTA3YWYyZWU4OTc4ZGJjODRhNWE0NThjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvU2hhcmVkVGltZXJCbGFja0JlcnJ5LmNwcApA
QCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRUaW1lci5oIgorCisjaW5jbHVk
ZSAiQ3VycmVudFRpbWUuaCIKKworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVRpbWVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkVGltZXJCbGFja0JlcnJ5IHsK
KyAgICBmcmllbmQgdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmYpKCkp
OworCitwdWJsaWM6CisgICAgc3RhdGljIFNoYXJlZFRpbWVyQmxhY2tCZXJyeSogaW5zdCgpOwor
CisgICAgdm9pZCBzdGFydChkb3VibGUpOworICAgIHZvaWQgc3RvcCgpOworCisgICAgYm9vbCBt
X3N0YXJ0ZWQ7CisgICAgdm9pZCAoKm1fdGltZXJGdW5jdGlvbikoKTsKK3ByaXZhdGU6CisgICAg
U2hhcmVkVGltZXJCbGFja0JlcnJ5KCk7CisgICAgflNoYXJlZFRpbWVyQmxhY2tCZXJyeSgpOwor
fTsKKworc3RhdGljIFNoYXJlZFRpbWVyQmxhY2tCZXJyeSogc190aW1lciA9IDA7CisKK1NoYXJl
ZFRpbWVyQmxhY2tCZXJyeTo6U2hhcmVkVGltZXJCbGFja0JlcnJ5KCkKKyAgICA6IG1fc3RhcnRl
ZChmYWxzZSkKKyAgICAsIG1fdGltZXJGdW5jdGlvbigwKQoreworfQorCitTaGFyZWRUaW1lckJs
YWNrQmVycnk6On5TaGFyZWRUaW1lckJsYWNrQmVycnkoKQoreworICAgIGlmIChtX3N0YXJ0ZWQp
CisgICAgICAgIHN0b3AoKTsKK30KKworU2hhcmVkVGltZXJCbGFja0JlcnJ5KiBTaGFyZWRUaW1l
ckJsYWNrQmVycnk6Omluc3QoKQoreworICAgIGlmICghc190aW1lcikKKyAgICAgICAgc190aW1l
ciA9IG5ldyBTaGFyZWRUaW1lckJsYWNrQmVycnkoKTsKKyAgICByZXR1cm4gc190aW1lcjsKK30K
Kwordm9pZCBTaGFyZWRUaW1lckJsYWNrQmVycnk6OnN0YXJ0KGRvdWJsZSBpbnRlcnZhbCkKK3sK
KyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dGltZXJTdGFydChpbnRlcnZhbCwgbV90aW1lckZ1
bmN0aW9uKTsKKyAgICBtX3N0YXJ0ZWQgPSB0cnVlOworfQorCit2b2lkIFNoYXJlZFRpbWVyQmxh
Y2tCZXJyeTo6c3RvcCgpCit7CisgICAgaWYgKG1fc3RhcnRlZCkgeworICAgICAgICBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6dGltZXJTdG9wKCk7CisgICAgICAgIG1fc3RhcnRlZCA9IGZhbHNlOwor
ICAgIH0KK30KKwordm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmYpKCkp
Cit7CisgICAgU2hhcmVkVGltZXJCbGFja0JlcnJ5OjppbnN0KCktPm1fdGltZXJGdW5jdGlvbiA9
IGY7Cit9CisKK3ZvaWQgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFs
KQoreworICAgIFNoYXJlZFRpbWVyQmxhY2tCZXJyeTo6aW5zdCgpLT5zdGFydChpbnRlcnZhbCk7
Cit9CisKK3ZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKK3sKKyAgICBTaGFyZWRUaW1lckJsYWNrQmVy
cnk6Omluc3QoKS0+c3RvcCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvU3lzdGVtVGltZUJsYWNr
QmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9TeXN0ZW1UaW1l
QmxhY2tCZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNiNDU3MGIyMzNjNzc0YWE2ZjRhMzM1Y2U5Zjcy
OWE1NjAyMjVhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvU3lzdGVtVGltZUJsYWNrQmVycnkuY3BwCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTeXN0ZW1UaW1lLmgi
CisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2Zsb2F0IHVzZXJJZGxlVGltZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118309</attachid>
            <date>2011-12-07 18:57:58 -0800</date>
            <delta_ts>2011-12-08 02:56:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73798-20111208105751.patch</filename>
            <type>text/plain</type>
            <size>16209</size>
            <attacher name="Mary Wu">mawu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2ZmNDk4OWJkYmQ5MDYz
NGZmMGZhNjhkMDM5ZjhiMDFiMDRiYzgyNS4uODNlNzMyMGI5YzUwMTdkNGNiODliMWQ3ZjZiNzMw
MjhhZDE5ZDU2YSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTEyLTA3ICBNYXJ5
IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgVXBzdHJlYW0gNiBm
aWxlcyBpbnRvIFdlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM3OTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWluIGNvbnRyaWJ1dG9yczoKKyAgICAgICAg
R2VuZXZpZXZlIE1hayA8Z21ha0ByaW0uY29tPgorICAgICAgICBBbnRvbmlvIEdvbWVzIDxhZ29t
ZXNAcmltLmNvbT4KKyAgICAgICAgTHlvbiBDaGVuIDxsaWFjaGVuQHJpbS5jb20+CisgICAgICAg
IEdlb3JnZSBTdGFpa29zIDxnc3RhaWtvc0ByaW0uY29tPiAKKworICAgICAgICBJbml0aWFsIHVw
c3RyZWFtLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L0Zp
bGVTeXN0ZW1CbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpob21lRGly
ZWN0b3J5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KToKKyAgICAgICAg
KFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjp1
bmxvYWRNb2R1bGUpOgorICAgICAgICAoV2ViQ29yZTo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Ub3VjaEV2ZW50QmxhY2tCZXJyeS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9y
bVRvdWNoRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Ub3Vj
aFBvaW50QmxhY2tCZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1U
b3VjaFBvaW50OjpQbGF0Zm9ybVRvdWNoUG9pbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNr
YmVycnkvU2hhcmVkQnVmZmVyQmxhY2tCZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2JsYWNrYmVycnkvU2hhcmVkVGltZXJCbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRUaW1lckJsYWNrQmVycnk6OlNoYXJlZFRpbWVyQmxhY2tCZXJy
eSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRUaW1lckJsYWNrQmVycnk6On5TaGFyZWRUaW1l
ckJsYWNrQmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkVGltZXJCbGFja0JlcnJ5Ojpp
bnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRUaW1lckJsYWNrQmVycnk6OnN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFRpbWVyQmxhY2tCZXJyeTo6c3RvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6c3Rv
cFNoYXJlZFRpbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1N5c3RlbVRpbWVC
bGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp1c2VySWRsZVRpbWUpOgor
CiAyMDExLTEyLTA3ICBGbG9yaW4gTWFsaXRhICA8Zm1hbGl0YUBnb29nbGUuY29tPgogCiAgICAg
ICAgIDxsaSB2YWx1ZT0iMCI+IGJlaGF2ZXMgbGlrZSA8bGk+ICh0aGUgc2FtZSBmb3IgbmVnYXRp
dmUgbnVtYmVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9GaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmVkNDA3MWEyMDUz
ZmJhMTM0ZDI3NTczZjM2ZDg4Y2VlNzljNTZhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCkBAIC0w
LDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVt
YmVkZGVkIHN5c3RlbXMKKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ry
b25pY3MKKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUNsaWVudC5o
PgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpbmNsdWRlIDxl
cnJuby5oPgorI2luY2x1ZGUgPGZubWF0Y2guaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKK3sKKyAgICByZXR1
cm4gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudDo6Z2V0KCktPmdldEFwcGxpY2F0aW9uRGF0
YURpcmVjdG9yeSgpLmNfc3RyKCk7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlcikKK3sKKyAgICBWZWN0b3I8
U3RyaW5nPiBlbnRyaWVzOworICAgIENTdHJpbmcgY3BhdGggPSBwYXRoLnV0ZjgoKTsKKyAgICBD
U3RyaW5nIGNmaWx0ZXIgPSBmaWx0ZXIudXRmOCgpOworICAgIGNoYXIgZmlsZVBhdGhbUEFUSF9N
QVhdOworICAgIGNoYXIqIGZpbGVOYW1lOworICAgIHNpemVfdCBmaWxlTmFtZVNwYWNlOworICAg
IERJUiogZGlyOworCisgICAgaWYgKGNwYXRoLmxlbmd0aCgpICsgTkFNRV9NQVggPj0gc2l6ZW9m
KGZpbGVQYXRoKSkKKyAgICAgICAgcmV0dXJuIGVudHJpZXM7CisgICAgLy8gbG9vcCBpbnZhcmlh
bnQ6IGRpcmVjdG9yeSBwYXJ0ICsgJy8nCisgICAgbWVtY3B5KGZpbGVQYXRoLCBjcGF0aC5kYXRh
KCksIGNwYXRoLmxlbmd0aCgpKTsKKyAgICBmaWxlTmFtZSA9IGZpbGVQYXRoICsgY3BhdGgubGVu
Z3RoKCk7CisgICAgaWYgKGNwYXRoLmxlbmd0aCgpID4gMCAmJiBmaWxlUGF0aFtjcGF0aC5sZW5n
dGgoKSAtIDFdICE9ICcvJykgeworICAgICAgICBmaWxlTmFtZVswXSA9ICcvJzsKKyAgICAgICAg
ZmlsZU5hbWUrKzsKKyAgICB9CisgICAgZmlsZU5hbWVTcGFjZSA9IHNpemVvZihmaWxlUGF0aCkg
LSAoZmlsZU5hbWUgLSBmaWxlUGF0aCkgLSAxOworCisgICAgZGlyID0gb3BlbmRpcihjcGF0aC5k
YXRhKCkpOworICAgIGlmICghZGlyKQorICAgICAgICByZXR1cm4gZW50cmllczsKKworICAgIHN0
cnVjdCBkaXJlbnQqIGRlOworICAgIHdoaWxlIChkZSA9IHJlYWRkaXIoZGlyKSkgeworICAgICAg
ICBzaXplX3QgbmFtZUxlbjsKKyAgICAgICAgaWYgKGRlLT5kX25hbWVbMF0gPT0gJy4nKSB7Cisg
ICAgICAgICAgICBpZiAoZGUtPmRfbmFtZVsxXSA9PSAnXDAnKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgaWYgKGRlLT5kX25hbWVbMV0gPT0gJy4nICYmIGRlLT5kX25h
bWVbMl0gPT0gJ1wwJykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoZm5tYXRjaChjZmlsdGVyLmRhdGEoKSwgZGUtPmRfbmFtZSwgMCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBuYW1lTGVuID0gc3RybGVuKGRlLT5kX25hbWUpOwor
ICAgICAgICBpZiAobmFtZUxlbiA+PSBmaWxlTmFtZVNwYWNlKQorICAgICAgICAgICAgY29udGlu
dWU7IC8vIG1heWJlIGFzc2VydD8gaXQgc2hvdWxkIG5ldmVyIGhhcHBlbiBhbnl3YXkuLi4KKwor
ICAgICAgICBtZW1jcHkoZmlsZU5hbWUsIGRlLT5kX25hbWUsIG5hbWVMZW4gKyAxKTsKKyAgICAg
ICAgZW50cmllcy5hcHBlbmQoZmlsZVBhdGgpOworICAgIH0KKyAgICBjbG9zZWRpcihkaXIpOwor
ICAgIHJldHVybiBlbnRyaWVzOworfQorCitDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIHBhdGgudXRmOCgpOworfQorCiti
b29sIHVubG9hZE1vZHVsZShQbGF0Zm9ybU1vZHVsZSkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVI
YW5kbGUmKQoreworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0
Zm9ybVRvdWNoRXZlbnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvUGxhdGZvcm1Ub3VjaEV2ZW50QmxhY2tCZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTYx
ODY4NGViOTFiMzhjZWZjM2M3MmM2NzRjN2RiYjU5MjNkNGQ2MgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Ub3VjaEV2ZW50Qmxh
Y2tCZXJyeS5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQu
aCIKKworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVRvdWNoRXZlbnQuaD4KKworI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGxhdGZvcm1Ub3Vj
aEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRvdWNoRXZl
bnQqIGV2ZW50KQorICAgIDogbV9jdHJsS2V5KDApCisgICAgLCBtX2FsdEtleShldmVudC0+bV9h
bHRLZXkpCisgICAgLCBtX3NoaWZ0S2V5KGV2ZW50LT5tX3NoaWZ0S2V5KQorICAgICwgbV9tZXRh
S2V5KDApCisgICAgLCBtX3JvdGF0aW9uKDApCisgICAgLCBtX3NjYWxlKDEpCisjaWYgUExBVEZP
Uk0oQkxBQ0tCRVJSWSkKKyAgICAsIG1fZG91YmxlVGFwKGZhbHNlKQorICAgICwgbV90b3VjaEhv
bGQoZmFsc2UpCisjZW5kaWYKK3sKKyAgICBzd2l0Y2ggKGV2ZW50LT5tX3R5cGUpIHsKKyAgICBj
YXNlIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpUb3VjaEV2ZW50OjpUb3VjaFN0YXJ0OgorICAgICAg
ICBtX3R5cGUgPSBUb3VjaFN0YXJ0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpUb3VjaEV2ZW50OjpUb3VjaE1vdmU6CisgICAgICAgIG1fdHlwZSA9IFRv
dWNoTW92ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
VG91Y2hFdmVudDo6VG91Y2hFbmQ6CisgICAgICAgIG1fdHlwZSA9IFRvdWNoRW5kOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpUb3VjaEV2ZW50OjpUb3Vj
aENhbmNlbDoKKyAgICAgICAgbV90eXBlID0gVG91Y2hDYW5jZWw7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBldmVudC0+bV9wb2ludHMuc2l6
ZSgpOyArK2kpCisgICAgICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKFBsYXRmb3JtVG91Y2hQb2lu
dChldmVudC0+bV9wb2ludHNbaV0pKTsKKworICAgIGlmIChldmVudC0+bV9nZXN0dXJlcy5lbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R2VzdHVy
ZSBwaW5jaDsKKyAgICBpZiAoZXZlbnQtPmhhc0dlc3R1cmUoQmxhY2tCZXJyeTo6UGxhdGZvcm06
Okdlc3R1cmU6OlBpbmNoLCAmcGluY2gpKSB7CisgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpQaW5jaEdlc3R1cmVEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8QmxhY2tCZXJyeTo6UGxhdGZv
cm06OlBpbmNoR2VzdHVyZURhdGEqPihwaW5jaC5tX2RhdGEpOworICAgICAgICBpZiAoZGF0YSkg
eworICAgICAgICAgICAgbV9yb3RhdGlvbiA9IGRhdGEtPm1fYW5nbGUgKiAxODAgLyBNX1BJOwor
ICAgICAgICAgICAgbV9zY2FsZSA9IGRhdGEtPm1fc2NhbGU7CisgICAgICAgIH0KKyAgICB9IGVs
c2UgaWYgKGV2ZW50LT5oYXNHZXN0dXJlKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHZXN0dXJlOjpE
b3VibGVUYXApKQorICAgICAgICBtX2RvdWJsZVRhcCA9IHRydWU7CisgICAgZWxzZSBpZiAoZXZl
bnQtPmhhc0dlc3R1cmUoQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdlc3R1cmU6OlRvdWNoSG9sZCkp
CisgICAgICAgIG1fdG91Y2hIb2xkID0gdHJ1ZTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Ub3VjaFBvaW50
QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRm
b3JtVG91Y2hQb2ludEJsYWNrQmVycnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmNWVjM2M2YzVjY2MzY2Mz
YzU4NWM4NWY4MjA0MGNiNGQ3YzM1ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtVG91Y2hQb2ludEJsYWNrQmVycnkuY3BwCkBA
IC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVG91Y2hQb2ludC5oIgorCisjaW5jbHVk
ZSA8QmxhY2tCZXJyeVBsYXRmb3JtVG91Y2hFdmVudC5oPgorCisjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQbGF0Zm9ybVRvdWNoUG9pbnQ6OlBsYXRm
b3JtVG91Y2hQb2ludChjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VG91Y2hQb2ludCYgcG9p
bnQpCisgICAgOiBtX2lkKHBvaW50Lm1faWQpCisgICAgLCBtX3NjcmVlblBvcyhwb2ludC5tX3Nj
cmVlblBvcykKKyAgICAsIG1fcG9zKHBvaW50Lm1fcG9zKQoreworICAgIHN3aXRjaCAocG9pbnQu
bV9zdGF0ZSkgeworICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRvdWNoUG9pbnQ6OlRv
dWNoUmVsZWFzZWQ6CisgICAgICAgIG1fc3RhdGUgPSBUb3VjaFJlbGVhc2VkOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpUb3VjaFBvaW50OjpUb3VjaE1v
dmVkOgorICAgICAgICBtX3N0YXRlID0gVG91Y2hNb3ZlZDsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkOgorICAg
ICAgICBtX3N0YXRlID0gVG91Y2hQcmVzc2VkOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpUb3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk6CisgICAgICAg
IG1fc3RhdGUgPSBUb3VjaFN0YXRpb25hcnk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvU2hhcmVkQnVmZmVyQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L1NoYXJlZEJ1ZmZlckJsYWNrQmVycnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmOWU1Yjcx
M2Y4MDgxOTZlZDM5MjVkMDIzNWE3OWMxZTIyMWFhNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1NoYXJlZEJ1ZmZlckJsYWNrQmVycnkuY3Bw
CkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgUmVzZWFyY2ggSW4g
TW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShTdHJpbmcgY29uc3QmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvU2hhcmVkVGltZXJCbGFja0JlcnJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvU2hhcmVkVGltZXJCbGFja0JlcnJ5LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45OGU0OTQ3OTYzYzAwZmNkNTA0OWIxMjdhY2UzODBiMzVmMjI1YTkxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9TaGFy
ZWRUaW1lckJsYWNrQmVycnkuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAg
MDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNo
YXJlZFRpbWVyLmgiCisKKyNpbmNsdWRlICJDdXJyZW50VGltZS5oIgorCisjaW5jbHVkZSA8Qmxh
Y2tCZXJyeVBsYXRmb3JtVGltZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBT
aGFyZWRUaW1lckJsYWNrQmVycnkgeworICAgIGZyaWVuZCB2b2lkIHNldFNoYXJlZFRpbWVyRmly
ZWRGdW5jdGlvbih2b2lkICgqZikoKSk7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgU2hhcmVkVGlt
ZXJCbGFja0JlcnJ5KiBpbnN0YW5jZSgpOworCisgICAgdm9pZCBzdGFydChkb3VibGUpOworICAg
IHZvaWQgc3RvcCgpOworCisgICAgYm9vbCBtX3N0YXJ0ZWQ7CisgICAgdm9pZCAoKm1fdGltZXJG
dW5jdGlvbikoKTsKK3ByaXZhdGU6CisgICAgU2hhcmVkVGltZXJCbGFja0JlcnJ5KCk7CisgICAg
flNoYXJlZFRpbWVyQmxhY2tCZXJyeSgpOworfTsKKworc3RhdGljIFNoYXJlZFRpbWVyQmxhY2tC
ZXJyeSogc190aW1lciA9IDA7CisKK1NoYXJlZFRpbWVyQmxhY2tCZXJyeTo6U2hhcmVkVGltZXJC
bGFja0JlcnJ5KCkKKyAgICA6IG1fc3RhcnRlZChmYWxzZSkKKyAgICAsIG1fdGltZXJGdW5jdGlv
bigwKQoreworfQorCitTaGFyZWRUaW1lckJsYWNrQmVycnk6On5TaGFyZWRUaW1lckJsYWNrQmVy
cnkoKQoreworICAgIGlmIChtX3N0YXJ0ZWQpCisgICAgICAgIHN0b3AoKTsKK30KKworU2hhcmVk
VGltZXJCbGFja0JlcnJ5KiBTaGFyZWRUaW1lckJsYWNrQmVycnk6Omluc3RhbmNlKCkKK3sKKyAg
ICBpZiAoIXNfdGltZXIpCisgICAgICAgIHNfdGltZXIgPSBuZXcgU2hhcmVkVGltZXJCbGFja0Jl
cnJ5KCk7CisgICAgcmV0dXJuIHNfdGltZXI7Cit9CisKK3ZvaWQgU2hhcmVkVGltZXJCbGFja0Jl
cnJ5OjpzdGFydChkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OnRpbWVyU3RhcnQoaW50ZXJ2YWwsIG1fdGltZXJGdW5jdGlvbik7CisgICAgbV9zdGFydGVkID0g
dHJ1ZTsKK30KKwordm9pZCBTaGFyZWRUaW1lckJsYWNrQmVycnk6OnN0b3AoKQoreworICAgIGlm
IChtX3N0YXJ0ZWQpIHsKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OnRpbWVyU3RvcCgp
OworICAgICAgICBtX3N0YXJ0ZWQgPSBmYWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgc2V0U2hhcmVk
VGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmKSgpKQoreworICAgIFNoYXJlZFRpbWVyQmxhY2tC
ZXJyeTo6aW5zdGFuY2UoKS0+bV90aW1lckZ1bmN0aW9uID0gZjsKK30KKwordm9pZCBzZXRTaGFy
ZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgU2hhcmVkVGltZXJC
bGFja0JlcnJ5OjppbnN0YW5jZSgpLT5zdGFydChpbnRlcnZhbCk7Cit9CisKK3ZvaWQgc3RvcFNo
YXJlZFRpbWVyKCkKK3sKKyAgICBTaGFyZWRUaW1lckJsYWNrQmVycnk6Omluc3RhbmNlKCktPnN0
b3AoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1N5c3RlbVRpbWVCbGFja0JlcnJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvU3lzdGVtVGltZUJsYWNrQmVycnkuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmMzYjQ1NzBiMjMzYzc3NGFhNmY0YTMzNWNlOWY3MjlhNTYwMjI1YWMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1N5c3Rl
bVRpbWVCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3lzdGVtVGltZS5oIgorCisjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitmbG9hdCB1c2VySWRs
ZVRpbWUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118354</attachid>
            <date>2011-12-08 02:57:07 -0800</date>
            <delta_ts>2011-12-08 18:39:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73798-20111208185700.patch</filename>
            <type>text/plain</type>
            <size>16179</size>
            <attacher name="Mary Wu">mawu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU4NzAzZTQ2NWQ2MDBk
YWFmZmM0N2VkMGRlMzFmNTkzNmY4OTJkYy4uY2U0NmI4ZjU3ZGJkZmE4OWM1MTVhOTljMmUxNDAx
YWI0NGJiMzllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTEyLTA4ICBNYXJ5
IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgVXBzdHJlYW0gNiBm
aWxlcyBpbnRvIFdlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM3OTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWluIGNvbnRyaWJ1dG9yczoKKyAgICAgICAg
R2VuZXZpZXZlIE1hayA8Z21ha0ByaW0uY29tPgorICAgICAgICBBbnRvbmlvIEdvbWVzIDxhZ29t
ZXNAcmltLmNvbT4KKyAgICAgICAgTHlvbiBDaGVuIDxsaWFjaGVuQHJpbS5jb20+CisgICAgICAg
IEdlb3JnZSBTdGFpa29zIDxnc3RhaWtvc0ByaW0uY29tPiAKKworICAgICAgICBJbml0aWFsIHVw
c3RyZWFtLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L0Zp
bGVTeXN0ZW1CbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpob21lRGly
ZWN0b3J5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KToKKyAgICAgICAg
KFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjp1
bmxvYWRNb2R1bGUpOgorICAgICAgICAoV2ViQ29yZTo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Ub3VjaEV2ZW50QmxhY2tCZXJyeS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9y
bVRvdWNoRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Ub3Vj
aFBvaW50QmxhY2tCZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1U
b3VjaFBvaW50OjpQbGF0Zm9ybVRvdWNoUG9pbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNr
YmVycnkvU2hhcmVkQnVmZmVyQmxhY2tCZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2JsYWNrYmVycnkvU2hhcmVkVGltZXJCbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRUaW1lckJsYWNrQmVycnk6OlNoYXJlZFRpbWVyQmxhY2tCZXJy
eSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRUaW1lckJsYWNrQmVycnk6On5TaGFyZWRUaW1l
ckJsYWNrQmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkVGltZXJCbGFja0JlcnJ5Ojpp
bnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRUaW1lckJsYWNrQmVycnk6OnN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFRpbWVyQmxhY2tCZXJyeTo6c3RvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6c3Rv
cFNoYXJlZFRpbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1N5c3RlbVRpbWVC
bGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp1c2VySWRsZVRpbWUpOgor
CiAyMDExLTEyLTA3ICBNYXJ5IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAg
ICAgICAgVXBzdHJlYW0gNCBmaWxlcyBpbnRvIFdlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9GaWxlU3lzdGVt
QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0ZpbGVT
eXN0ZW1CbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZjA5NTY5MWU4YWNmYzJhOTgzYTQ0MWYy
OGYzZDI4ZDU5NDFkNTAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9GaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKQEAgLTAsMCArMSwxMDUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVt
cworICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICogQ29w
eXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgorCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtQ2xpZW50Lmg+CisjaW5jbHVkZSA8
YWxnb3JpdGhtPgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5j
bHVkZSA8Zm5tYXRjaC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQoreworICAgIHJldHVybiBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6Q2xpZW50OjpnZXQoKS0+Z2V0QXBwbGljYXRpb25EYXRhRGlyZWN0b3J5KCku
Y19zdHIoKTsKK30KKworVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGVudHJp
ZXM7CisgICAgQ1N0cmluZyBjcGF0aCA9IHBhdGgudXRmOCgpOworICAgIENTdHJpbmcgY2ZpbHRl
ciA9IGZpbHRlci51dGY4KCk7CisgICAgY2hhciBmaWxlUGF0aFtQQVRIX01BWF07CisgICAgY2hh
ciogZmlsZU5hbWU7CisgICAgc2l6ZV90IGZpbGVOYW1lU3BhY2U7CisgICAgRElSKiBkaXI7CisK
KyAgICBpZiAoY3BhdGgubGVuZ3RoKCkgKyBOQU1FX01BWCA+PSBzaXplb2YoZmlsZVBhdGgpKQor
ICAgICAgICByZXR1cm4gZW50cmllczsKKyAgICAvLyBpZiBkaXJlY3RvcnkgcGFydCBkb24ndCBo
YXZlICcvJyBpbiB0aGUgZW5kLCBhZGQgaXQKKyAgICBtZW1jcHkoZmlsZVBhdGgsIGNwYXRoLmRh
dGEoKSwgY3BhdGgubGVuZ3RoKCkpOworICAgIGZpbGVOYW1lID0gZmlsZVBhdGggKyBjcGF0aC5s
ZW5ndGgoKTsKKyAgICBpZiAoY3BhdGgubGVuZ3RoKCkgPiAwICYmIGZpbGVQYXRoW2NwYXRoLmxl
bmd0aCgpIC0gMV0gIT0gJy8nKSB7CisgICAgICAgIGZpbGVOYW1lWzBdID0gJy8nOworICAgICAg
ICBmaWxlTmFtZSsrOworICAgIH0KKyAgICBmaWxlTmFtZVNwYWNlID0gc2l6ZW9mKGZpbGVQYXRo
KSAtIChmaWxlTmFtZSAtIGZpbGVQYXRoKSAtIDE7CisKKyAgICBkaXIgPSBvcGVuZGlyKGNwYXRo
LmRhdGEoKSk7CisgICAgaWYgKCFkaXIpCisgICAgICAgIHJldHVybiBlbnRyaWVzOworCisgICAg
c3RydWN0IGRpcmVudCogZGU7CisgICAgd2hpbGUgKGRlID0gcmVhZGRpcihkaXIpKSB7CisgICAg
ICAgIHNpemVfdCBuYW1lTGVuOworICAgICAgICBpZiAoZGUtPmRfbmFtZVswXSA9PSAnLicpIHsK
KyAgICAgICAgICAgIGlmIChkZS0+ZF9uYW1lWzFdID09ICdcMCcpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICBpZiAoZGUtPmRfbmFtZVsxXSA9PSAnLicgJiYgZGUtPmRf
bmFtZVsyXSA9PSAnXDAnKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9Cisg
ICAgICAgIGlmIChmbm1hdGNoKGNmaWx0ZXIuZGF0YSgpLCBkZS0+ZF9uYW1lLCAwKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIG5hbWVMZW4gPSBzdHJsZW4oZGUtPmRfbmFtZSk7
CisgICAgICAgIGlmIChuYW1lTGVuID49IGZpbGVOYW1lU3BhY2UpCisgICAgICAgICAgICBjb250
aW51ZTsgLy8gbWF5YmUgYXNzZXJ0PyBpdCBzaG91bGQgbmV2ZXIgaGFwcGVuIGFueXdheS4uLgor
CisgICAgICAgIG1lbWNweShmaWxlTmFtZSwgZGUtPmRfbmFtZSwgbmFtZUxlbiArIDEpOworICAg
ICAgICBlbnRyaWVzLmFwcGVuZChmaWxlUGF0aCk7CisgICAgfQorICAgIGNsb3NlZGlyKGRpcik7
CisgICAgcmV0dXJuIGVudHJpZXM7Cit9CisKK0NTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gcGF0aC51dGY4KCk7Cit9CisK
K2Jvb2wgdW5sb2FkTW9kdWxlKFBsYXRmb3JtTW9kdWxlKQoreworICAgIHJldHVybiBmYWxzZTsK
K30KKworU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmls
ZUhhbmRsZSYpCit7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1Bs
YXRmb3JtVG91Y2hFdmVudEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9QbGF0Zm9ybVRvdWNoRXZlbnRCbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MTA0OTQ5OThiZDlkN2M4ZTNlYjkxM2I3MzJiOWI4NWUyYzJmMjExCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybVRvdWNoRXZlbnRC
bGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJp
Z2h0IChDKSAyMDEwIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVG91Y2hFdmVu
dC5oIgorCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtVG91Y2hFdmVudC5oPgorCisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQbGF0Zm9ybVRv
dWNoRXZlbnQ6OlBsYXRmb3JtVG91Y2hFdmVudChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VG91Y2hF
dmVudCogZXZlbnQpCisgICAgOiBtX2N0cmxLZXkoMCkKKyAgICAsIG1fYWx0S2V5KGV2ZW50LT5t
X2FsdEtleSkKKyAgICAsIG1fc2hpZnRLZXkoZXZlbnQtPm1fc2hpZnRLZXkpCisgICAgLCBtX21l
dGFLZXkoMCkKKyAgICAsIG1fcm90YXRpb24oMCkKKyAgICAsIG1fc2NhbGUoMSkKKyAgICAsIG1f
ZG91YmxlVGFwKGZhbHNlKQorICAgICwgbV90b3VjaEhvbGQoZmFsc2UpCit7CisgICAgc3dpdGNo
IChldmVudC0+bV90eXBlKSB7CisgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VG91Y2hF
dmVudDo6VG91Y2hTdGFydDoKKyAgICAgICAgbV90eXBlID0gVG91Y2hTdGFydDsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VG91Y2hFdmVudDo6VG91Y2hN
b3ZlOgorICAgICAgICBtX3R5cGUgPSBUb3VjaE1vdmU7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRvdWNoRXZlbnQ6OlRvdWNoRW5kOgorICAgICAgICBt
X3R5cGUgPSBUb3VjaEVuZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6VG91Y2hFdmVudDo6VG91Y2hDYW5jZWw6CisgICAgICAgIG1fdHlwZSA9IFRvdWNo
Q2FuY2VsOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZXZlbnQtPm1fcG9pbnRzLnNpemUoKTsgKytpKQorICAgICAgICBtX3RvdWNoUG9pbnRz
LmFwcGVuZChQbGF0Zm9ybVRvdWNoUG9pbnQoZXZlbnQtPm1fcG9pbnRzW2ldKSk7CisKKyAgICBp
ZiAoZXZlbnQtPm1fZ2VzdHVyZXMuZW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06Okdlc3R1cmUgcGluY2g7CisgICAgaWYgKGV2ZW50LT5oYXNHZXN0
dXJlKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHZXN0dXJlOjpQaW5jaCwgJnBpbmNoKSkgeworICAg
ICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6UGluY2hHZXN0dXJlRGF0YSogZGF0YSA9IHN0YXRp
Y19jYXN0PEJsYWNrQmVycnk6OlBsYXRmb3JtOjpQaW5jaEdlc3R1cmVEYXRhKj4ocGluY2gubV9k
YXRhKTsKKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fcm90YXRpb24gPSBkYXRh
LT5tX2FuZ2xlICogMTgwIC8gTV9QSTsKKyAgICAgICAgICAgIG1fc2NhbGUgPSBkYXRhLT5tX3Nj
YWxlOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChldmVudC0+aGFzR2VzdHVyZShCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6R2VzdHVyZTo6RG91YmxlVGFwKSkKKyAgICAgICAgbV9kb3VibGVUYXAg
PSB0cnVlOworICAgIGVsc2UgaWYgKGV2ZW50LT5oYXNHZXN0dXJlKEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpHZXN0dXJlOjpUb3VjaEhvbGQpKQorICAgICAgICBtX3RvdWNoSG9sZCA9IHRydWU7Cit9
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFj
a2JlcnJ5L1BsYXRmb3JtVG91Y2hQb2ludEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybVRvdWNoUG9pbnRCbGFja0JlcnJ5LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kZjVlYzNjNmM1Y2NjM2NjM2M1ODVjODVmODIwNDBjYjRkN2MzNWZhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybVRv
dWNoUG9pbnRCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQor
ICogQ29weXJpZ2h0IChDKSAyMDEwIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bVRvdWNoUG9pbnQuaCIKKworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVRvdWNoRXZlbnQu
aD4KKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UGxhdGZvcm1Ub3VjaFBvaW50OjpQbGF0Zm9ybVRvdWNoUG9pbnQoY29uc3QgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OlRvdWNoUG9pbnQmIHBvaW50KQorICAgIDogbV9pZChwb2ludC5tX2lkKQorICAg
ICwgbV9zY3JlZW5Qb3MocG9pbnQubV9zY3JlZW5Qb3MpCisgICAgLCBtX3Bvcyhwb2ludC5tX3Bv
cykKK3sKKyAgICBzd2l0Y2ggKHBvaW50Lm1fc3RhdGUpIHsKKyAgICBjYXNlIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpUb3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkOgorICAgICAgICBtX3N0YXRlID0g
VG91Y2hSZWxlYXNlZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6VG91Y2hQb2ludDo6VG91Y2hNb3ZlZDoKKyAgICAgICAgbV9zdGF0ZSA9IFRvdWNoTW92
ZWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRvdWNo
UG9pbnQ6OlRvdWNoUHJlc3NlZDoKKyAgICAgICAgbV9zdGF0ZSA9IFRvdWNoUHJlc3NlZDsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VG91Y2hQb2ludDo6
VG91Y2hTdGF0aW9uYXJ5OgorICAgICAgICBtX3N0YXRlID0gVG91Y2hTdGF0aW9uYXJ5OworICAg
ICAgICBicmVhazsKKyAgICB9Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1NoYXJlZEJ1ZmZlckJsYWNrQmVycnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9TaGFyZWRCdWZmZXJCbGFja0JlcnJ5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZjllNWI3MTNmODA4MTk2ZWQzOTI1ZDAyMzVhNzljMWUyMjFhYTY5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9T
aGFyZWRCdWZmZXJCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisKKyNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nIGNvbnN0JikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1NoYXJl
ZFRpbWVyQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L1NoYXJlZFRpbWVyQmxhY2tCZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ2NjVmNzk1NjQ2NTdhZThk
YzRiYjExNDQzZTgzYWRjOWRkMGU0ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvU2hhcmVkVGltZXJCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsx
LDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRUaW1lci5oIgorCisjaW5jbHVkZSAiQ3VycmVu
dFRpbWUuaCIKKworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVRpbWVyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkVGltZXJCbGFja0JlcnJ5IHsKKyAgICBmcmll
bmQgdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmYpKCkpOworCitwdWJs
aWM6CisgICAgc3RhdGljIFNoYXJlZFRpbWVyQmxhY2tCZXJyeSogaW5zdGFuY2UoKTsKKworICAg
IHZvaWQgc3RhcnQoZG91YmxlKTsKKyAgICB2b2lkIHN0b3AoKTsKKworcHJpdmF0ZToKKyAgICBT
aGFyZWRUaW1lckJsYWNrQmVycnkoKTsKKyAgICB+U2hhcmVkVGltZXJCbGFja0JlcnJ5KCk7CisK
KyAgICBib29sIG1fc3RhcnRlZDsKKyAgICB2b2lkICgqbV90aW1lckZ1bmN0aW9uKSgpOworfTsK
Kworc3RhdGljIFNoYXJlZFRpbWVyQmxhY2tCZXJyeSogc190aW1lciA9IDA7CisKK1NoYXJlZFRp
bWVyQmxhY2tCZXJyeTo6U2hhcmVkVGltZXJCbGFja0JlcnJ5KCkKKyAgICA6IG1fc3RhcnRlZChm
YWxzZSkKKyAgICAsIG1fdGltZXJGdW5jdGlvbigwKQoreworfQorCitTaGFyZWRUaW1lckJsYWNr
QmVycnk6On5TaGFyZWRUaW1lckJsYWNrQmVycnkoKQoreworICAgIGlmIChtX3N0YXJ0ZWQpCisg
ICAgICAgIHN0b3AoKTsKK30KKworU2hhcmVkVGltZXJCbGFja0JlcnJ5KiBTaGFyZWRUaW1lckJs
YWNrQmVycnk6Omluc3RhbmNlKCkKK3sKKyAgICBpZiAoIXNfdGltZXIpCisgICAgICAgIHNfdGlt
ZXIgPSBuZXcgU2hhcmVkVGltZXJCbGFja0JlcnJ5KCk7CisgICAgcmV0dXJuIHNfdGltZXI7Cit9
CisKK3ZvaWQgU2hhcmVkVGltZXJCbGFja0JlcnJ5OjpzdGFydChkb3VibGUgaW50ZXJ2YWwpCit7
CisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OnRpbWVyU3RhcnQoaW50ZXJ2YWwsIG1fdGltZXJG
dW5jdGlvbik7CisgICAgbV9zdGFydGVkID0gdHJ1ZTsKK30KKwordm9pZCBTaGFyZWRUaW1lckJs
YWNrQmVycnk6OnN0b3AoKQoreworICAgIGlmIChtX3N0YXJ0ZWQpIHsKKyAgICAgICAgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OnRpbWVyU3RvcCgpOworICAgICAgICBtX3N0YXJ0ZWQgPSBmYWxzZTsK
KyAgICB9Cit9CisKK3ZvaWQgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmKSgp
KQoreworICAgIFNoYXJlZFRpbWVyQmxhY2tCZXJyeTo6aW5zdGFuY2UoKS0+bV90aW1lckZ1bmN0
aW9uID0gZjsKK30KKwordm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50
ZXJ2YWwpCit7CisgICAgU2hhcmVkVGltZXJCbGFja0JlcnJ5OjppbnN0YW5jZSgpLT5zdGFydChp
bnRlcnZhbCk7Cit9CisKK3ZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKK3sKKyAgICBTaGFyZWRUaW1l
ckJsYWNrQmVycnk6Omluc3RhbmNlKCktPnN0b3AoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1N5
c3RlbVRpbWVCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvU3lzdGVtVGltZUJsYWNrQmVycnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzYjQ1NzBiMjMzYzc3NGFh
NmY0YTMzNWNlOWY3MjlhNTYwMjI1YWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1N5c3RlbVRpbWVCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsx
LDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U3lzdGVtVGltZS5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitmbG9hdCB1c2VySWRsZVRpbWUoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118511</attachid>
            <date>2011-12-08 18:39:27 -0800</date>
            <delta_ts>2011-12-08 20:04:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73798-20111209103918.patch</filename>
            <type>text/plain</type>
            <size>16176</size>
            <attacher name="Mary Wu">mawu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU4NzAzZTQ2NWQ2MDBk
YWFmZmM0N2VkMGRlMzFmNTkzNmY4OTJkYy4uY2U0NmI4ZjU3ZGJkZmE4OWM1MTVhOTljMmUxNDAx
YWI0NGJiMzllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTEyLTA4ICBNYXJ5
IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgVXBzdHJlYW0gNiBm
aWxlcyBpbnRvIFdlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM3OTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWluIGNvbnRyaWJ1dG9yczoKKyAgICAgICAg
R2VuZXZpZXZlIE1hayA8Z21ha0ByaW0uY29tPgorICAgICAgICBBbnRvbmlvIEdvbWVzIDxhZ29t
ZXNAcmltLmNvbT4KKyAgICAgICAgTHlvbiBDaGVuIDxsaWFjaGVuQHJpbS5jb20+CisgICAgICAg
IEdlb3JnZSBTdGFpa29zIDxnc3RhaWtvc0ByaW0uY29tPiAKKworICAgICAgICBJbml0aWFsIHVw
c3RyZWFtLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L0Zp
bGVTeXN0ZW1CbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpob21lRGly
ZWN0b3J5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KToKKyAgICAgICAg
KFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjp1
bmxvYWRNb2R1bGUpOgorICAgICAgICAoV2ViQ29yZTo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Ub3VjaEV2ZW50QmxhY2tCZXJyeS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9y
bVRvdWNoRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Ub3Vj
aFBvaW50QmxhY2tCZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1U
b3VjaFBvaW50OjpQbGF0Zm9ybVRvdWNoUG9pbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNr
YmVycnkvU2hhcmVkQnVmZmVyQmxhY2tCZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2JsYWNrYmVycnkvU2hhcmVkVGltZXJCbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRUaW1lckJsYWNrQmVycnk6OlNoYXJlZFRpbWVyQmxhY2tCZXJy
eSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRUaW1lckJsYWNrQmVycnk6On5TaGFyZWRUaW1l
ckJsYWNrQmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkVGltZXJCbGFja0JlcnJ5Ojpp
bnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRUaW1lckJsYWNrQmVycnk6OnN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFRpbWVyQmxhY2tCZXJyeTo6c3RvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6c3Rv
cFNoYXJlZFRpbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1N5c3RlbVRpbWVC
bGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp1c2VySWRsZVRpbWUpOgor
CiAyMDExLTEyLTA3ICBNYXJ5IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAg
ICAgICAgVXBzdHJlYW0gNCBmaWxlcyBpbnRvIFdlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9GaWxlU3lzdGVt
QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0ZpbGVT
eXN0ZW1CbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2ExMjk2MzI0YTNjZWViMGJkYzE1MDZh
ZGNlZWY3ZWZjMWQ0MjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9GaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKQEAgLTAsMCArMSwxMDYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVt
cworICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICogQ29w
eXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgorCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtQ2xpZW50Lmg+CisjaW5jbHVkZSA8
YWxnb3JpdGhtPgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5j
bHVkZSA8Zm5tYXRjaC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQoreworICAgIHJldHVybiBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6Q2xpZW50OjpnZXQoKS0+Z2V0QXBwbGljYXRpb25EYXRhRGlyZWN0b3J5KCku
Y19zdHIoKTsKK30KKworVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGVudHJp
ZXM7CisgICAgQ1N0cmluZyBjcGF0aCA9IHBhdGgudXRmOCgpOworICAgIENTdHJpbmcgY2ZpbHRl
ciA9IGZpbHRlci51dGY4KCk7CisgICAgY2hhciBmaWxlUGF0aFtQQVRIX01BWF07CisgICAgY2hh
ciogZmlsZU5hbWU7CisgICAgc2l6ZV90IGZpbGVOYW1lU3BhY2U7CisKKyAgICBpZiAoY3BhdGgu
bGVuZ3RoKCkgKyBOQU1FX01BWCA+PSBzaXplb2YoZmlsZVBhdGgpKQorICAgICAgICByZXR1cm4g
ZW50cmllczsKKworICAgIG1lbWNweShmaWxlUGF0aCwgY3BhdGguZGF0YSgpLCBjcGF0aC5sZW5n
dGgoKSk7CisgICAgZmlsZU5hbWUgPSBmaWxlUGF0aCArIGNwYXRoLmxlbmd0aCgpOworICAgIC8v
IElmIGRpcmVjdG9yeSBwYXJ0IGRvbid0IGhhdmUgJy8nIGluIHRoZSBlbmQsIGFkZCBpdC4KKyAg
ICBpZiAoY3BhdGgubGVuZ3RoKCkgPiAwICYmIGZpbGVQYXRoW2NwYXRoLmxlbmd0aCgpIC0gMV0g
IT0gJy8nKSB7CisgICAgICAgIGZpbGVOYW1lWzBdID0gJy8nOworICAgICAgICBmaWxlTmFtZSsr
OworICAgIH0KKyAgICBmaWxlTmFtZVNwYWNlID0gc2l6ZW9mKGZpbGVQYXRoKSAtIChmaWxlTmFt
ZSAtIGZpbGVQYXRoKSAtIDE7CisKKyAgICBESVIqIGRpcjsKKyAgICBkaXIgPSBvcGVuZGlyKGNw
YXRoLmRhdGEoKSk7CisgICAgaWYgKCFkaXIpCisgICAgICAgIHJldHVybiBlbnRyaWVzOworCisg
ICAgc3RydWN0IGRpcmVudCogZGU7CisgICAgd2hpbGUgKGRlID0gcmVhZGRpcihkaXIpKSB7Cisg
ICAgICAgIHNpemVfdCBuYW1lTGVuOworICAgICAgICBpZiAoZGUtPmRfbmFtZVswXSA9PSAnLicp
IHsKKyAgICAgICAgICAgIGlmIChkZS0+ZF9uYW1lWzFdID09ICdcMCcpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoZGUtPmRfbmFtZVsxXSA9PSAnLicgJiYgZGUt
PmRfbmFtZVsyXSA9PSAnXDAnKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisgICAgICAgIGlmIChmbm1hdGNoKGNmaWx0ZXIuZGF0YSgpLCBkZS0+ZF9uYW1lLCAwKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIG5hbWVMZW4gPSBzdHJsZW4oZGUtPmRfbmFt
ZSk7CisgICAgICAgIGlmIChuYW1lTGVuID49IGZpbGVOYW1lU3BhY2UpCisgICAgICAgICAgICBj
b250aW51ZTsgLy8gbWF5YmUgYXNzZXJ0PyBpdCBzaG91bGQgbmV2ZXIgaGFwcGVuIGFueXdheS4u
LgorCisgICAgICAgIG1lbWNweShmaWxlTmFtZSwgZGUtPmRfbmFtZSwgbmFtZUxlbiArIDEpOwor
ICAgICAgICBlbnRyaWVzLmFwcGVuZChmaWxlUGF0aCk7CisgICAgfQorICAgIGNsb3NlZGlyKGRp
cik7CisgICAgcmV0dXJuIGVudHJpZXM7Cit9CisKK0NTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gcGF0aC51dGY4KCk7Cit9
CisKK2Jvb2wgdW5sb2FkTW9kdWxlKFBsYXRmb3JtTW9kdWxlKQoreworICAgIHJldHVybiBmYWxz
ZTsKK30KKworU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3Jt
RmlsZUhhbmRsZSYpCit7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L1BsYXRmb3JtVG91Y2hFdmVudEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9QbGF0Zm9ybVRvdWNoRXZlbnRCbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43MTA0OTQ5OThiZDlkN2M4ZTNlYjkxM2I3MzJiOWI4NWUyYzJmMjExCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybVRvdWNoRXZl
bnRCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29w
eXJpZ2h0IChDKSAyMDEwIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVG91Y2hF
dmVudC5oIgorCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtVG91Y2hFdmVudC5oPgorCisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQbGF0Zm9y
bVRvdWNoRXZlbnQ6OlBsYXRmb3JtVG91Y2hFdmVudChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VG91
Y2hFdmVudCogZXZlbnQpCisgICAgOiBtX2N0cmxLZXkoMCkKKyAgICAsIG1fYWx0S2V5KGV2ZW50
LT5tX2FsdEtleSkKKyAgICAsIG1fc2hpZnRLZXkoZXZlbnQtPm1fc2hpZnRLZXkpCisgICAgLCBt
X21ldGFLZXkoMCkKKyAgICAsIG1fcm90YXRpb24oMCkKKyAgICAsIG1fc2NhbGUoMSkKKyAgICAs
IG1fZG91YmxlVGFwKGZhbHNlKQorICAgICwgbV90b3VjaEhvbGQoZmFsc2UpCit7CisgICAgc3dp
dGNoIChldmVudC0+bV90eXBlKSB7CisgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VG91
Y2hFdmVudDo6VG91Y2hTdGFydDoKKyAgICAgICAgbV90eXBlID0gVG91Y2hTdGFydDsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VG91Y2hFdmVudDo6VG91
Y2hNb3ZlOgorICAgICAgICBtX3R5cGUgPSBUb3VjaE1vdmU7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRvdWNoRXZlbnQ6OlRvdWNoRW5kOgorICAgICAg
ICBtX3R5cGUgPSBUb3VjaEVuZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6VG91Y2hFdmVudDo6VG91Y2hDYW5jZWw6CisgICAgICAgIG1fdHlwZSA9IFRv
dWNoQ2FuY2VsOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZXZlbnQtPm1fcG9pbnRzLnNpemUoKTsgKytpKQorICAgICAgICBtX3RvdWNoUG9p
bnRzLmFwcGVuZChQbGF0Zm9ybVRvdWNoUG9pbnQoZXZlbnQtPm1fcG9pbnRzW2ldKSk7CisKKyAg
ICBpZiAoZXZlbnQtPm1fZ2VzdHVyZXMuZW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
QmxhY2tCZXJyeTo6UGxhdGZvcm06Okdlc3R1cmUgcGluY2g7CisgICAgaWYgKGV2ZW50LT5oYXNH
ZXN0dXJlKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHZXN0dXJlOjpQaW5jaCwgJnBpbmNoKSkgewor
ICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6UGluY2hHZXN0dXJlRGF0YSogZGF0YSA9IHN0
YXRpY19jYXN0PEJsYWNrQmVycnk6OlBsYXRmb3JtOjpQaW5jaEdlc3R1cmVEYXRhKj4ocGluY2gu
bV9kYXRhKTsKKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fcm90YXRpb24gPSBk
YXRhLT5tX2FuZ2xlICogMTgwIC8gTV9QSTsKKyAgICAgICAgICAgIG1fc2NhbGUgPSBkYXRhLT5t
X3NjYWxlOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChldmVudC0+aGFzR2VzdHVyZShCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6R2VzdHVyZTo6RG91YmxlVGFwKSkKKyAgICAgICAgbV9kb3VibGVU
YXAgPSB0cnVlOworICAgIGVsc2UgaWYgKGV2ZW50LT5oYXNHZXN0dXJlKEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpHZXN0dXJlOjpUb3VjaEhvbGQpKQorICAgICAgICBtX3RvdWNoSG9sZCA9IHRydWU7
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L1BsYXRmb3JtVG91Y2hQb2ludEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybVRvdWNoUG9pbnRCbGFja0JlcnJ5LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kZjVlYzNjNmM1Y2NjM2NjM2M1ODVjODVmODIwNDBjYjRkN2MzNWZhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9y
bVRvdWNoUG9pbnRCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQorICogQ29weXJpZ2h0IChDKSAyMDEwIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVRvdWNoUG9pbnQuaCIKKworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVRvdWNoRXZl
bnQuaD4KKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUGxhdGZvcm1Ub3VjaFBvaW50OjpQbGF0Zm9ybVRvdWNoUG9pbnQoY29uc3QgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OlRvdWNoUG9pbnQmIHBvaW50KQorICAgIDogbV9pZChwb2ludC5tX2lkKQor
ICAgICwgbV9zY3JlZW5Qb3MocG9pbnQubV9zY3JlZW5Qb3MpCisgICAgLCBtX3Bvcyhwb2ludC5t
X3BvcykKK3sKKyAgICBzd2l0Y2ggKHBvaW50Lm1fc3RhdGUpIHsKKyAgICBjYXNlIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpUb3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkOgorICAgICAgICBtX3N0YXRl
ID0gVG91Y2hSZWxlYXNlZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6VG91Y2hQb2ludDo6VG91Y2hNb3ZlZDoKKyAgICAgICAgbV9zdGF0ZSA9IFRvdWNo
TW92ZWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRv
dWNoUG9pbnQ6OlRvdWNoUHJlc3NlZDoKKyAgICAgICAgbV9zdGF0ZSA9IFRvdWNoUHJlc3NlZDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VG91Y2hQb2lu
dDo6VG91Y2hTdGF0aW9uYXJ5OgorICAgICAgICBtX3N0YXRlID0gVG91Y2hTdGF0aW9uYXJ5Owor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1NoYXJlZEJ1ZmZlckJsYWNrQmVycnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9TaGFyZWRCdWZmZXJCbGFja0Jl
cnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZjllNWI3MTNmODA4MTk2ZWQzOTI1ZDAyMzVhNzljMWUyMjFh
YTY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9TaGFyZWRCdWZmZXJCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisK
KyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nIGNvbnN0JikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1No
YXJlZFRpbWVyQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L1NoYXJlZFRpbWVyQmxhY2tCZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzM0NDNhNGVmOThiZjAy
YzY5MWRmZWU3MjU5YmY3NDdkZGU1NGRlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvU2hhcmVkVGltZXJCbGFja0JlcnJ5LmNwcApAQCAtMCww
ICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRUaW1lci5oIgorCisjaW5jbHVkZSAiQ3Vy
cmVudFRpbWUuaCIKKworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVRpbWVyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkVGltZXJCbGFja0JlcnJ5IHsKKyAgICBm
cmllbmQgdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmYpKCkpOworCitw
dWJsaWM6CisgICAgc3RhdGljIFNoYXJlZFRpbWVyQmxhY2tCZXJyeSogaW5zdGFuY2UoKTsKKwor
ICAgIHZvaWQgc3RhcnQoZG91YmxlKTsKKyAgICB2b2lkIHN0b3AoKTsKKworcHJpdmF0ZToKKyAg
ICBTaGFyZWRUaW1lckJsYWNrQmVycnkoKTsKKyAgICB+U2hhcmVkVGltZXJCbGFja0JlcnJ5KCk7
CisKKyAgICBib29sIG1fc3RhcnRlZDsKKyAgICB2b2lkICgqbV90aW1lckZ1bmN0aW9uKSgpOwor
fTsKKworU2hhcmVkVGltZXJCbGFja0JlcnJ5OjpTaGFyZWRUaW1lckJsYWNrQmVycnkoKQorICAg
IDogbV9zdGFydGVkKGZhbHNlKQorICAgICwgbV90aW1lckZ1bmN0aW9uKDApCit7Cit9CisKK1No
YXJlZFRpbWVyQmxhY2tCZXJyeTo6flNoYXJlZFRpbWVyQmxhY2tCZXJyeSgpCit7CisgICAgaWYg
KG1fc3RhcnRlZCkKKyAgICAgICAgc3RvcCgpOworfQorCitTaGFyZWRUaW1lckJsYWNrQmVycnkq
IFNoYXJlZFRpbWVyQmxhY2tCZXJyeTo6aW5zdGFuY2UoKQoreworICAgIHN0YXRpYyBTaGFyZWRU
aW1lckJsYWNrQmVycnkqIHRpbWVyID0gMDsKKyAgICBpZiAoIXRpbWVyKQorICAgICAgICB0aW1l
ciA9IG5ldyBTaGFyZWRUaW1lckJsYWNrQmVycnkoKTsKKyAgICByZXR1cm4gdGltZXI7Cit9CisK
K3ZvaWQgU2hhcmVkVGltZXJCbGFja0JlcnJ5OjpzdGFydChkb3VibGUgaW50ZXJ2YWwpCit7Cisg
ICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OnRpbWVyU3RhcnQoaW50ZXJ2YWwsIG1fdGltZXJGdW5j
dGlvbik7CisgICAgbV9zdGFydGVkID0gdHJ1ZTsKK30KKwordm9pZCBTaGFyZWRUaW1lckJsYWNr
QmVycnk6OnN0b3AoKQoreworICAgIGlmIChtX3N0YXJ0ZWQpIHsKKyAgICAgICAgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OnRpbWVyU3RvcCgpOworICAgICAgICBtX3N0YXJ0ZWQgPSBmYWxzZTsKKyAg
ICB9Cit9CisKK3ZvaWQgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmKSgpKQor
eworICAgIFNoYXJlZFRpbWVyQmxhY2tCZXJyeTo6aW5zdGFuY2UoKS0+bV90aW1lckZ1bmN0aW9u
ID0gZjsKK30KKwordm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2
YWwpCit7CisgICAgU2hhcmVkVGltZXJCbGFja0JlcnJ5OjppbnN0YW5jZSgpLT5zdGFydChpbnRl
cnZhbCk7Cit9CisKK3ZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKK3sKKyAgICBTaGFyZWRUaW1lckJs
YWNrQmVycnk6Omluc3RhbmNlKCktPnN0b3AoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1N5c3Rl
bVRpbWVCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
U3lzdGVtVGltZUJsYWNrQmVycnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzYjQ1NzBiMjMzYzc3NGFhNmY0
YTMzNWNlOWY3MjlhNTYwMjI1YWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ibGFja2JlcnJ5L1N5c3RlbVRpbWVCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDMz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3lz
dGVtVGltZS5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitmbG9hdCB1c2VySWRsZVRpbWUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118519</attachid>
            <date>2011-12-08 20:05:02 -0800</date>
            <delta_ts>2011-12-11 22:42:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73798-20111209120453.patch</filename>
            <type>text/plain</type>
            <size>16179</size>
            <attacher name="Mary Wu">mawu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU4NzAzZTQ2NWQ2MDBk
YWFmZmM0N2VkMGRlMzFmNTkzNmY4OTJkYy4uY2U0NmI4ZjU3ZGJkZmE4OWM1MTVhOTljMmUxNDAx
YWI0NGJiMzllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTEyLTA4ICBNYXJ5
IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgVXBzdHJlYW0gNiBm
aWxlcyBpbnRvIFdlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM3OTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWluIGNvbnRyaWJ1dG9yczoKKyAgICAgICAg
R2VuZXZpZXZlIE1hayA8Z21ha0ByaW0uY29tPgorICAgICAgICBBbnRvbmlvIEdvbWVzIDxhZ29t
ZXNAcmltLmNvbT4KKyAgICAgICAgTHlvbiBDaGVuIDxsaWFjaGVuQHJpbS5jb20+CisgICAgICAg
IEdlb3JnZSBTdGFpa29zIDxnc3RhaWtvc0ByaW0uY29tPiAKKworICAgICAgICBJbml0aWFsIHVw
c3RyZWFtLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L0Zp
bGVTeXN0ZW1CbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpob21lRGly
ZWN0b3J5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KToKKyAgICAgICAg
KFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjp1
bmxvYWRNb2R1bGUpOgorICAgICAgICAoV2ViQ29yZTo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Ub3VjaEV2ZW50QmxhY2tCZXJyeS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9y
bVRvdWNoRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Ub3Vj
aFBvaW50QmxhY2tCZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1U
b3VjaFBvaW50OjpQbGF0Zm9ybVRvdWNoUG9pbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNr
YmVycnkvU2hhcmVkQnVmZmVyQmxhY2tCZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2JsYWNrYmVycnkvU2hhcmVkVGltZXJCbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRUaW1lckJsYWNrQmVycnk6OlNoYXJlZFRpbWVyQmxhY2tCZXJy
eSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRUaW1lckJsYWNrQmVycnk6On5TaGFyZWRUaW1l
ckJsYWNrQmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkVGltZXJCbGFja0JlcnJ5Ojpp
bnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRUaW1lckJsYWNrQmVycnk6OnN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFRpbWVyQmxhY2tCZXJyeTo6c3RvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6c3Rv
cFNoYXJlZFRpbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1N5c3RlbVRpbWVC
bGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp1c2VySWRsZVRpbWUpOgor
CiAyMDExLTEyLTA3ICBNYXJ5IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAg
ICAgICAgVXBzdHJlYW0gNCBmaWxlcyBpbnRvIFdlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9GaWxlU3lzdGVt
QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0ZpbGVT
eXN0ZW1CbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNmRmYzg0MTQ0ZmE1ZTQxODExNDQ2NTU0
OWY0YzAyNzZiOWEyOGE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9GaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKQEAgLTAsMCArMSwxMDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVt
cworICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICogQ29w
eXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgorCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtQ2xpZW50Lmg+CisjaW5jbHVkZSA8
YWxnb3JpdGhtPgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5j
bHVkZSA8Zm5tYXRjaC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitTdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQoreworICAgIHJldHVybiBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6Q2xpZW50OjpnZXQoKS0+Z2V0QXBwbGljYXRpb25EYXRhRGlyZWN0b3J5KCku
Y19zdHIoKTsKK30KKworVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGVudHJp
ZXM7CisgICAgQ1N0cmluZyBjcGF0aCA9IHBhdGgudXRmOCgpOworICAgIENTdHJpbmcgY2ZpbHRl
ciA9IGZpbHRlci51dGY4KCk7CisgICAgY2hhciBmaWxlUGF0aFtQQVRIX01BWF07CisKKyAgICBp
ZiAoY3BhdGgubGVuZ3RoKCkgKyBOQU1FX01BWCA+PSBzaXplb2YoZmlsZVBhdGgpKQorICAgICAg
ICByZXR1cm4gZW50cmllczsKKworICAgIG1lbWNweShmaWxlUGF0aCwgY3BhdGguZGF0YSgpLCBj
cGF0aC5sZW5ndGgoKSk7CisgICAgY2hhciogZmlsZU5hbWUgPSBmaWxlUGF0aCArIGNwYXRoLmxl
bmd0aCgpOworICAgIC8vIElmIGRpcmVjdG9yeSBwYXJ0IGRvbid0IGhhdmUgJy8nIGluIHRoZSBl
bmQsIGFkZCBpdC4KKyAgICBpZiAoY3BhdGgubGVuZ3RoKCkgPiAwICYmIGZpbGVQYXRoW2NwYXRo
Lmxlbmd0aCgpIC0gMV0gIT0gJy8nKSB7CisgICAgICAgIGZpbGVOYW1lWzBdID0gJy8nOworICAg
ICAgICBmaWxlTmFtZSsrOworICAgIH0KKyAgICBzaXplX3QgZmlsZU5hbWVTcGFjZSA9IHNpemVv
ZihmaWxlUGF0aCkgLSAoZmlsZU5hbWUgLSBmaWxlUGF0aCkgLSAxOworCisgICAgRElSKiBkaXIg
PSBvcGVuZGlyKGNwYXRoLmRhdGEoKSk7CisgICAgaWYgKCFkaXIpCisgICAgICAgIHJldHVybiBl
bnRyaWVzOworCisgICAgc3RydWN0IGRpcmVudCogZGU7CisgICAgd2hpbGUgKGRlID0gcmVhZGRp
cihkaXIpKSB7CisgICAgICAgIHNpemVfdCBuYW1lTGVuOworICAgICAgICBpZiAoZGUtPmRfbmFt
ZVswXSA9PSAnLicpIHsKKyAgICAgICAgICAgIGlmIChkZS0+ZF9uYW1lWzFdID09ICdcMCcpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoZGUtPmRfbmFtZVsxXSA9
PSAnLicgJiYgZGUtPmRfbmFtZVsyXSA9PSAnXDAnKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisgICAgICAgIGlmIChmbm1hdGNoKGNmaWx0ZXIuZGF0YSgpLCBkZS0+ZF9u
YW1lLCAwKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIG5hbWVMZW4gPSBzdHJs
ZW4oZGUtPmRfbmFtZSk7CisgICAgICAgIGlmIChuYW1lTGVuID49IGZpbGVOYW1lU3BhY2UpCisg
ICAgICAgICAgICBjb250aW51ZTsgLy8gbWF5YmUgYXNzZXJ0PyBpdCBzaG91bGQgbmV2ZXIgaGFw
cGVuIGFueXdheS4uLgorCisgICAgICAgIG1lbWNweShmaWxlTmFtZSwgZGUtPmRfbmFtZSwgbmFt
ZUxlbiArIDEpOworICAgICAgICBlbnRyaWVzLmFwcGVuZChmaWxlUGF0aCk7CisgICAgfQorICAg
IGNsb3NlZGlyKGRpcik7CisgICAgcmV0dXJuIGVudHJpZXM7Cit9CisKK0NTdHJpbmcgZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gcGF0
aC51dGY4KCk7Cit9CisKK2Jvb2wgdW5sb2FkTW9kdWxlKFBsYXRmb3JtTW9kdWxlKQoreworICAg
IHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmlu
ZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYpCit7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5L1BsYXRmb3JtVG91Y2hFdmVudEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybVRvdWNoRXZlbnRCbGFja0JlcnJ5LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NDQxYWQwOGE2YzI0MmZmZTUzZWRjOWJmZTY3ZWM2MGMyNmYzOTY0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0
Zm9ybVRvdWNoRXZlbnRCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtVG91Y2hFdmVudC5oIgorCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3Jt
VG91Y2hFdmVudC5oPgorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitQbGF0Zm9ybVRvdWNoRXZlbnQ6OlBsYXRmb3JtVG91Y2hFdmVudChCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6VG91Y2hFdmVudCogZXZlbnQpCisgICAgOiBtX2N0cmxLZXkoMCkKKyAg
ICAsIG1fYWx0S2V5KGV2ZW50LT5tX2FsdEtleSkKKyAgICAsIG1fc2hpZnRLZXkoZXZlbnQtPm1f
c2hpZnRLZXkpCisgICAgLCBtX21ldGFLZXkoMCkKKyAgICAsIG1fcm90YXRpb24oMCkKKyAgICAs
IG1fc2NhbGUoMSkKKyAgICAsIG1fZG91YmxlVGFwKGZhbHNlKQorICAgICwgbV90b3VjaEhvbGQo
ZmFsc2UpCit7CisgICAgc3dpdGNoIChldmVudC0+bV90eXBlKSB7CisgICAgY2FzZSBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6VG91Y2hFdmVudDo6VG91Y2hTdGFydDoKKyAgICAgICAgbV90eXBlID0g
VG91Y2hTdGFydDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6VG91Y2hFdmVudDo6VG91Y2hNb3ZlOgorICAgICAgICBtX3R5cGUgPSBUb3VjaE1vdmU7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRvdWNoRXZlbnQ6
OlRvdWNoRW5kOgorICAgICAgICBtX3R5cGUgPSBUb3VjaEVuZDsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VG91Y2hFdmVudDo6VG91Y2hDYW5jZWw6Cisg
ICAgICAgIG1fdHlwZSA9IFRvdWNoQ2FuY2VsOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXZlbnQtPm1fcG9pbnRzLnNpemUoKTsgKytpKQor
ICAgICAgICBtX3RvdWNoUG9pbnRzLmFwcGVuZChQbGF0Zm9ybVRvdWNoUG9pbnQoZXZlbnQtPm1f
cG9pbnRzW2ldKSk7CisKKyAgICBpZiAoZXZlbnQtPm1fZ2VzdHVyZXMuZW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdlc3R1cmUgcGluY2g7Cisg
ICAgaWYgKGV2ZW50LT5oYXNHZXN0dXJlKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHZXN0dXJlOjpQ
aW5jaCwgJnBpbmNoKSkgeworICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6UGluY2hHZXN0
dXJlRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PEJsYWNrQmVycnk6OlBsYXRmb3JtOjpQaW5jaEdl
c3R1cmVEYXRhKj4ocGluY2gubV9kYXRhKTsKKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAg
ICAgIG1fcm90YXRpb24gPSBkYXRhLT5tX2FuZ2xlICogMTgwIC8gTV9QSTsKKyAgICAgICAgICAg
IG1fc2NhbGUgPSBkYXRhLT5tX3NjYWxlOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChldmVu
dC0+aGFzR2VzdHVyZShCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R2VzdHVyZTo6RG91YmxlVGFwKSkK
KyAgICAgICAgbV9kb3VibGVUYXAgPSB0cnVlOworICAgIGVsc2UgaWYgKGV2ZW50LT5oYXNHZXN0
dXJlKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHZXN0dXJlOjpUb3VjaEhvbGQpKQorICAgICAgICBt
X3RvdWNoSG9sZCA9IHRydWU7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtVG91Y2hQb2ludEJsYWNrQmVycnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybVRvdWNoUG9p
bnRCbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzFjZTIxMmViYzM1Y2M0NjhhM2I4M2EyMGQ2
OTFkNzY1MWJmNjJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9QbGF0Zm9ybVRvdWNoUG9pbnRCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDUz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoUG9pbnQuaCIKKworI2luY2x1ZGUgPEJs
YWNrQmVycnlQbGF0Zm9ybVRvdWNoRXZlbnQuaD4KKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGxhdGZvcm1Ub3VjaFBvaW50OjpQbGF0Zm9ybVRv
dWNoUG9pbnQoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRvdWNoUG9pbnQmIHBvaW50KQor
ICAgIDogbV9pZChwb2ludC5tX2lkKQorICAgICwgbV9zY3JlZW5Qb3MocG9pbnQubV9zY3JlZW5Q
b3MpCisgICAgLCBtX3Bvcyhwb2ludC5tX3BvcykKK3sKKyAgICBzd2l0Y2ggKHBvaW50Lm1fc3Rh
dGUpIHsKKyAgICBjYXNlIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpUb3VjaFBvaW50OjpUb3VjaFJl
bGVhc2VkOgorICAgICAgICBtX3N0YXRlID0gVG91Y2hSZWxlYXNlZDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VG91Y2hQb2ludDo6VG91Y2hNb3ZlZDoK
KyAgICAgICAgbV9zdGF0ZSA9IFRvdWNoTW92ZWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QmxhY2tCZXJyeTo6UGxhdGZvcm06OlRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZDoKKyAgICAgICAg
bV9zdGF0ZSA9IFRvdWNoUHJlc3NlZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6VG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OgorICAgICAgICBtX3N0
YXRlID0gVG91Y2hTdGF0aW9uYXJ5OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1No
YXJlZEJ1ZmZlckJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9TaGFyZWRCdWZmZXJCbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjcwOGY0YzY5MWI0
OTBmYzg3ZTk0ZjRkODViNGNlZWEzZTE0MzQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9TaGFyZWRCdWZmZXJCbGFja0JlcnJ5LmNwcApAQCAt
MCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoU3RyaW5nIGNvbnN0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1NoYXJlZFRpbWVyQmxhY2tCZXJyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1NoYXJlZFRpbWVyQmxhY2tC
ZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM0NGM1NzZiMzA2OTRkNzRjNzcwNDI0ZjA5MWZiYzBlYWQ2
Y2RhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvU2hhcmVkVGltZXJCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJTaGFyZWRUaW1lci5oIgorCisjaW5jbHVkZSAiQ3VycmVudFRpbWUu
aCIKKworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVRpbWVyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgU2hhcmVkVGltZXJCbGFja0JlcnJ5IHsKKyAgICBmcmllbmQgdm9p
ZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmYpKCkpOworCitwdWJsaWM6Cisg
ICAgc3RhdGljIFNoYXJlZFRpbWVyQmxhY2tCZXJyeSogaW5zdGFuY2UoKTsKKworICAgIHZvaWQg
c3RhcnQoZG91YmxlKTsKKyAgICB2b2lkIHN0b3AoKTsKKworcHJpdmF0ZToKKyAgICBTaGFyZWRU
aW1lckJsYWNrQmVycnkoKTsKKyAgICB+U2hhcmVkVGltZXJCbGFja0JlcnJ5KCk7CisKKyAgICBi
b29sIG1fc3RhcnRlZDsKKyAgICB2b2lkICgqbV90aW1lckZ1bmN0aW9uKSgpOworfTsKKworU2hh
cmVkVGltZXJCbGFja0JlcnJ5OjpTaGFyZWRUaW1lckJsYWNrQmVycnkoKQorICAgIDogbV9zdGFy
dGVkKGZhbHNlKQorICAgICwgbV90aW1lckZ1bmN0aW9uKDApCit7Cit9CisKK1NoYXJlZFRpbWVy
QmxhY2tCZXJyeTo6flNoYXJlZFRpbWVyQmxhY2tCZXJyeSgpCit7CisgICAgaWYgKG1fc3RhcnRl
ZCkKKyAgICAgICAgc3RvcCgpOworfQorCitTaGFyZWRUaW1lckJsYWNrQmVycnkqIFNoYXJlZFRp
bWVyQmxhY2tCZXJyeTo6aW5zdGFuY2UoKQoreworICAgIHN0YXRpYyBTaGFyZWRUaW1lckJsYWNr
QmVycnkqIHRpbWVyID0gMDsKKyAgICBpZiAoIXRpbWVyKQorICAgICAgICB0aW1lciA9IG5ldyBT
aGFyZWRUaW1lckJsYWNrQmVycnkoKTsKKyAgICByZXR1cm4gdGltZXI7Cit9CisKK3ZvaWQgU2hh
cmVkVGltZXJCbGFja0JlcnJ5OjpzdGFydChkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OnRpbWVyU3RhcnQoaW50ZXJ2YWwsIG1fdGltZXJGdW5jdGlvbik7Cisg
ICAgbV9zdGFydGVkID0gdHJ1ZTsKK30KKwordm9pZCBTaGFyZWRUaW1lckJsYWNrQmVycnk6OnN0
b3AoKQoreworICAgIGlmIChtX3N0YXJ0ZWQpIHsKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OnRpbWVyU3RvcCgpOworICAgICAgICBtX3N0YXJ0ZWQgPSBmYWxzZTsKKyAgICB9Cit9CisK
K3ZvaWQgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmKSgpKQoreworICAgIFNo
YXJlZFRpbWVyQmxhY2tCZXJyeTo6aW5zdGFuY2UoKS0+bV90aW1lckZ1bmN0aW9uID0gZjsKK30K
Kwordm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCit7Cisg
ICAgU2hhcmVkVGltZXJCbGFja0JlcnJ5OjppbnN0YW5jZSgpLT5zdGFydChpbnRlcnZhbCk7Cit9
CisKK3ZvaWQgc3RvcFNoYXJlZFRpbWVyKCkKK3sKKyAgICBTaGFyZWRUaW1lckJsYWNrQmVycnk6
Omluc3RhbmNlKCktPnN0b3AoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1N5c3RlbVRpbWVCbGFj
a0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvU3lzdGVtVGlt
ZUJsYWNrQmVycnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzMGI1MDExY2VlMGU3YzE2YWRhNDZjMjkxOTBi
Y2I3ZGI5OGEwMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L1N5c3RlbVRpbWVCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDMzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U3lzdGVtVGltZS5oIgorCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitmbG9hdCB1c2VySWRsZVRpbWUoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118734</attachid>
            <date>2011-12-11 22:43:03 -0800</date>
            <delta_ts>2011-12-12 08:35:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73798-20111212144301.patch</filename>
            <type>text/plain</type>
            <size>12595</size>
            <attacher name="Mary Wu">mawu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU4NzAzZTQ2NWQ2MDBk
YWFmZmM0N2VkMGRlMzFmNTkzNmY4OTJkYy4uZmE0NWZjMjRkODA0NGE0MjYxYjAxOTJlMmZlNzE3
YTQ1OTAzOWRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDExLTEyLTExICBNYXJ5
IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgVXBzdHJlYW0gNSBm
aWxlcyBpbnRvIFdlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM3OTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWluIGNvbnRyaWJ1dG9yczoKKyAgICAgICAg
R2VuZXZpZXZlIE1hayA8Z21ha0ByaW0uY29tPgorICAgICAgICBNaWtlIExhdHRhbnppbyAgPG1s
YXR0YW56aW9AcmltLmNvbT4KKyAgICAgICAgR2VvcmdlIFN0YWlrb3MgPGdzdGFpa29zQHJpbS5j
b20+IAorCisgICAgICAgIEluaXRpYWwgdXBzdHJlYW0sIG5vIG5ldyB0ZXN0cy4KKworICAgICAg
ICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Ub3VjaEV2ZW50QmxhY2tCZXJyeS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRv
dWNoRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Ub3VjaFBv
aW50QmxhY2tCZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Ub3Vj
aFBvaW50OjpQbGF0Zm9ybVRvdWNoUG9pbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVy
cnkvU2hhcmVkQnVmZmVyQmxhY2tCZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2JsYWNrYmVycnkvU2hhcmVkVGltZXJCbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRUaW1lckJsYWNrQmVycnk6OlNoYXJlZFRpbWVyQmxhY2tCZXJyeSk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRUaW1lckJsYWNrQmVycnk6On5TaGFyZWRUaW1lckJs
YWNrQmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkVGltZXJCbGFja0JlcnJ5OjppbnN0
YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRUaW1lckJsYWNrQmVycnk6OnN0YXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFRpbWVyQmxhY2tCZXJyeTo6c3RvcCk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6c3RvcFNo
YXJlZFRpbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1N5c3RlbVRpbWVCbGFj
a0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp1c2VySWRsZVRpbWUpOgorCiAy
MDExLTEyLTA3ICBNYXJ5IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAg
ICAgVXBzdHJlYW0gNCBmaWxlcyBpbnRvIFdlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybVRvdWNo
RXZlbnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
UGxhdGZvcm1Ub3VjaEV2ZW50QmxhY2tCZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDk1NDMyMDkyMDY0
YmRlNGM1MDQ2MzViNTZmYTQ5NjMwZGI1Mjc1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Ub3VjaEV2ZW50QmxhY2tCZXJyeS5j
cHAKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAx
MCwgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIK
KworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVRvdWNoRXZlbnQuaD4KKworI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGxhdGZvcm1Ub3VjaEV2
ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRvdWNoRXZlbnQq
IGV2ZW50KQorICAgIDogbV9jdHJsS2V5KDApCisgICAgLCBtX2FsdEtleShldmVudC0+bV9hbHRL
ZXkpCisgICAgLCBtX3NoaWZ0S2V5KGV2ZW50LT5tX3NoaWZ0S2V5KQorICAgICwgbV9tZXRhS2V5
KDApCisgICAgLCBtX3JvdGF0aW9uKDApCisgICAgLCBtX3NjYWxlKDEpCisgICAgLCBtX2RvdWJs
ZVRhcChmYWxzZSkKKyAgICAsIG1fdG91Y2hIb2xkKGZhbHNlKQoreworICAgIHN3aXRjaCAoZXZl
bnQtPm1fdHlwZSkgeworICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRvdWNoRXZlbnQ6
OlRvdWNoU3RhcnQ6CisgICAgICAgIG1fdHlwZSA9IFRvdWNoU3RhcnQ7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRvdWNoRXZlbnQ6OlRvdWNoTW92ZToK
KyAgICAgICAgbV90eXBlID0gVG91Y2hNb3ZlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpUb3VjaEV2ZW50OjpUb3VjaEVuZDoKKyAgICAgICAgbV90eXBl
ID0gVG91Y2hFbmQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OlRvdWNoRXZlbnQ6OlRvdWNoQ2FuY2VsOgorICAgICAgICBtX3R5cGUgPSBUb3VjaENhbmNl
bDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGV2ZW50LT5tX3BvaW50cy5zaXplKCk7ICsraSkKKyAgICAgICAgbV90b3VjaFBvaW50cy5hcHBl
bmQoUGxhdGZvcm1Ub3VjaFBvaW50KGV2ZW50LT5tX3BvaW50c1tpXSkpOworCisgICAgaWYgKGV2
ZW50LT5tX2dlc3R1cmVzLmVtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpHZXN0dXJlIHBpbmNoOworICAgIGlmIChldmVudC0+aGFzR2VzdHVyZShC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6R2VzdHVyZTo6UGluY2gsICZwaW5jaCkpIHsKKyAgICAgICAg
QmxhY2tCZXJyeTo6UGxhdGZvcm06OlBpbmNoR2VzdHVyZURhdGEqIGRhdGEgPSBzdGF0aWNfY2Fz
dDxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6UGluY2hHZXN0dXJlRGF0YSo+KHBpbmNoLm1fZGF0YSk7
CisgICAgICAgIGlmIChkYXRhKSB7CisgICAgICAgICAgICBtX3JvdGF0aW9uID0gZGF0YS0+bV9h
bmdsZSAqIDE4MCAvIE1fUEk7CisgICAgICAgICAgICBtX3NjYWxlID0gZGF0YS0+bV9zY2FsZTsK
KyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoZXZlbnQtPmhhc0dlc3R1cmUoQmxhY2tCZXJyeTo6
UGxhdGZvcm06Okdlc3R1cmU6OkRvdWJsZVRhcCkpCisgICAgICAgIG1fZG91YmxlVGFwID0gdHJ1
ZTsKKyAgICBlbHNlIGlmIChldmVudC0+aGFzR2VzdHVyZShCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
R2VzdHVyZTo6VG91Y2hIb2xkKSkKKyAgICAgICAgbV90b3VjaEhvbGQgPSB0cnVlOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybVRv
dWNoUG9pbnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvUGxhdGZvcm1Ub3VjaFBvaW50QmxhY2tCZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGIxMWMyNDlh
YTFmZmZkNTUzZDc4ZWVmY2EzZGZiNzZiMzBkNmZlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Ub3VjaFBvaW50QmxhY2tCZXJy
eS5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykg
MjAxMCwgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVG91Y2hQb2ludC5oIgor
CisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtVG91Y2hFdmVudC5oPgorCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQbGF0Zm9ybVRvdWNoUG9p
bnQ6OlBsYXRmb3JtVG91Y2hQb2ludChjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VG91Y2hQ
b2ludCYgcG9pbnQpCisgICAgOiBtX2lkKHBvaW50Lm1faWQpCisgICAgLCBtX3NjcmVlblBvcyhw
b2ludC5tX3NjcmVlblBvcykKKyAgICAsIG1fcG9zKHBvaW50Lm1fcG9zKQoreworICAgIHN3aXRj
aCAocG9pbnQubV9zdGF0ZSkgeworICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRvdWNo
UG9pbnQ6OlRvdWNoUmVsZWFzZWQ6CisgICAgICAgIG1fc3RhdGUgPSBUb3VjaFJlbGVhc2VkOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpUb3VjaFBvaW50
OjpUb3VjaE1vdmVkOgorICAgICAgICBtX3N0YXRlID0gVG91Y2hNb3ZlZDsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VG91Y2hQb2ludDo6VG91Y2hQcmVz
c2VkOgorICAgICAgICBtX3N0YXRlID0gVG91Y2hQcmVzc2VkOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpUb3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk6
CisgICAgICAgIG1fc3RhdGUgPSBUb3VjaFN0YXRpb25hcnk7CisgICAgICAgIGJyZWFrOworICAg
IH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFRPVUNI
X0VWRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
U2hhcmVkQnVmZmVyQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFj
a2JlcnJ5L1NoYXJlZEJ1ZmZlckJsYWNrQmVycnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1YmQ1ZmEyZTVh
NTZhZDg2MzNkNjlkZDBkYTcwOTRiYmQzNTFkYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1NoYXJlZEJ1ZmZlckJsYWNrQmVycnkuY3BwCkBA
IC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKworI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShTdHJpbmcgY29uc3QmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvU2hhcmVkVGltZXJCbGFj
a0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvU2hhcmVkVGlt
ZXJCbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzVjNGVkN2NmMTBhYWJlMDE2NmI2MmM4MGVj
MjU0NGRjMGZkNWM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9TaGFyZWRUaW1lckJsYWNrQmVycnkuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYXJlZFRpbWVyLmgiCisKKyNpbmNsdWRlICJDdXJy
ZW50VGltZS5oIgorCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtVGltZXIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTaGFyZWRUaW1lckJsYWNrQmVycnkgeworICAgIGZy
aWVuZCB2b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbih2b2lkICgqZikoKSk7CisKK3B1
YmxpYzoKKyAgICBzdGF0aWMgU2hhcmVkVGltZXJCbGFja0JlcnJ5KiBpbnN0YW5jZSgpOworCisg
ICAgdm9pZCBzdGFydChkb3VibGUpOworICAgIHZvaWQgc3RvcCgpOworCitwcml2YXRlOgorICAg
IFNoYXJlZFRpbWVyQmxhY2tCZXJyeSgpOworICAgIH5TaGFyZWRUaW1lckJsYWNrQmVycnkoKTsK
KworICAgIGJvb2wgbV9zdGFydGVkOworICAgIHZvaWQgKCptX3RpbWVyRnVuY3Rpb24pKCk7Cit9
OworCitTaGFyZWRUaW1lckJsYWNrQmVycnk6OlNoYXJlZFRpbWVyQmxhY2tCZXJyeSgpCisgICAg
OiBtX3N0YXJ0ZWQoZmFsc2UpCisgICAgLCBtX3RpbWVyRnVuY3Rpb24oMCkKK3sKK30KKworU2hh
cmVkVGltZXJCbGFja0JlcnJ5Ojp+U2hhcmVkVGltZXJCbGFja0JlcnJ5KCkKK3sKKyAgICBpZiAo
bV9zdGFydGVkKQorICAgICAgICBzdG9wKCk7Cit9CisKK1NoYXJlZFRpbWVyQmxhY2tCZXJyeSog
U2hhcmVkVGltZXJCbGFja0JlcnJ5OjppbnN0YW5jZSgpCit7CisgICAgc3RhdGljIFNoYXJlZFRp
bWVyQmxhY2tCZXJyeSogdGltZXIgPSAwOworICAgIGlmICghdGltZXIpCisgICAgICAgIHRpbWVy
ID0gbmV3IFNoYXJlZFRpbWVyQmxhY2tCZXJyeTsKKyAgICByZXR1cm4gdGltZXI7Cit9CisKK3Zv
aWQgU2hhcmVkVGltZXJCbGFja0JlcnJ5OjpzdGFydChkb3VibGUgaW50ZXJ2YWwpCit7CisgICAg
QmxhY2tCZXJyeTo6UGxhdGZvcm06OnRpbWVyU3RhcnQoaW50ZXJ2YWwsIG1fdGltZXJGdW5jdGlv
bik7CisgICAgbV9zdGFydGVkID0gdHJ1ZTsKK30KKwordm9pZCBTaGFyZWRUaW1lckJsYWNrQmVy
cnk6OnN0b3AoKQoreworICAgIGlmICghbV9zdGFydGVkKQorICAgICAgICByZXR1cm47CisgICAg
QmxhY2tCZXJyeTo6UGxhdGZvcm06OnRpbWVyU3RvcCgpOworICAgIG1fc3RhcnRlZCA9IGZhbHNl
OworfQorCit2b2lkIHNldFNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbih2b2lkICgqZikoKSkKK3sK
KyAgICBTaGFyZWRUaW1lckJsYWNrQmVycnk6Omluc3RhbmNlKCktPm1fdGltZXJGdW5jdGlvbiA9
IGY7Cit9CisKK3ZvaWQgc2V0U2hhcmVkVGltZXJGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFs
KQoreworICAgIFNoYXJlZFRpbWVyQmxhY2tCZXJyeTo6aW5zdGFuY2UoKS0+c3RhcnQoaW50ZXJ2
YWwpOworfQorCit2b2lkIHN0b3BTaGFyZWRUaW1lcigpCit7CisgICAgU2hhcmVkVGltZXJCbGFj
a0JlcnJ5OjppbnN0YW5jZSgpLT5zdG9wKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9TeXN0ZW1U
aW1lQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1N5
c3RlbVRpbWVCbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzBiNTAxMWNlZTBlN2MxNmFkYTQ2
YzI5MTkwYmNiN2RiOThhMDI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9TeXN0ZW1UaW1lQmxhY2tCZXJyeS5jcHAKQEAgLTAsMCArMSwzMyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlN5c3RlbVRpbWUuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworZmxvYXQgdXNlcklkbGVUaW1lKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>