<?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>86995</bug_id>
          
          <creation_ts>2012-05-21 01:21:16 -0700</creation_ts>
          <short_desc>Cleanup: add a file system call which captures the file metadata at once.</short_desc>
          <delta_ts>2012-05-24 23:40:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kinuko Yasuda">kinuko</reporter>
          <assigned_to name="Kinuko Yasuda">kinuko</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>gustavo</cc>
    
    <cc>jamesr</cc>
    
    <cc>jianli</cc>
    
    <cc>levin</cc>
    
    <cc>philn</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>628865</commentid>
    <comment_count>0</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-21 01:21:16 -0700</bug_when>
    <thetext>Cleanup: add a file system call which captures the file metadata at once.

Current File.slice() (webkitSlice()) implementation calls two separate platform calls,
getFileSize() and getFileModificationTime() [both are defined in platform/FileSystem.h],
to capture the file metadata, but we should have a single file system call to get them at once
for two reasons: 1. save additional system call costs, and 2. atomically obtain the file metadata.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628873</commentid>
    <comment_count>1</comment_count>
      <attachid>142967</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-21 01:38:04 -0700</bug_when>
    <thetext>Created attachment 142967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628878</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-21 01:41:50 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628890</commentid>
    <comment_count>3</comment_count>
      <attachid>142967</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-21 02:06:42 -0700</bug_when>
    <thetext>Comment on attachment 142967
Patch

Attachment 142967 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12741192</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628906</commentid>
    <comment_count>4</comment_count>
      <attachid>142975</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-21 02:37:45 -0700</bug_when>
    <thetext>Created attachment 142975
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628915</commentid>
    <comment_count>5</comment_count>
      <attachid>142975</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-21 03:01:55 -0700</bug_when>
    <thetext>Comment on attachment 142975
Patch

Attachment 142975 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12744151</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628944</commentid>
    <comment_count>6</comment_count>
      <attachid>142989</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-21 04:06:42 -0700</bug_when>
    <thetext>Created attachment 142989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628954</commentid>
    <comment_count>7</comment_count>
      <attachid>142989</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-21 04:27:52 -0700</bug_when>
    <thetext>Comment on attachment 142989
Patch

Attachment 142989 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12736521</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628981</commentid>
    <comment_count>8</comment_count>
      <attachid>143003</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-21 05:05:07 -0700</bug_when>
    <thetext>Created attachment 143003
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628983</commentid>
    <comment_count>9</comment_count>
      <attachid>143005</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-21 05:09:47 -0700</bug_when>
    <thetext>Created attachment 143005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629140</commentid>
    <comment_count>10</comment_count>
      <attachid>143005</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-21 08:56:44 -0700</bug_when>
    <thetext>Comment on attachment 143005
Patch

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

&gt; Source/Platform/chromium/public/WebFileUtilities.h:44
&gt; +struct WebFileInfo;

Looks like you forgot to svn add WebFileInfo.h

&gt; Source/Platform/chromium/public/WebFileUtilities.h:57
&gt;      virtual bool getFileSize(const WebString&amp; path, long long&amp; result) { return false; }
&gt;      virtual bool getFileModificationTime(const WebString&amp; path, double&amp; result) { return false; }

Should we mark these as deprecated and plan to delete them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629141</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-21 08:58:05 -0700</bug_when>
    <thetext>Actually, looks like it does exist at http://trac.webkit.org/browser/trunk/Source/WebKit/chromium/public/WebFileInfo.h.  Can you move it into Platform/chromium/public ?  The Source/Platform shouldn&apos;t refer to things in Source/WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629259</commentid>
    <comment_count>12</comment_count>
      <attachid>143059</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-21 10:55:31 -0700</bug_when>
    <thetext>Created attachment 143059
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629266</commentid>
    <comment_count>13</comment_count>
      <attachid>143005</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-21 10:57:06 -0700</bug_when>
    <thetext>Comment on attachment 143005
Patch

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

&gt;&gt; Source/Platform/chromium/public/WebFileUtilities.h:44
&gt;&gt; +struct WebFileInfo;
&gt; 
&gt; Looks like you forgot to svn add WebFileInfo.h

Moved Source/WebKit/chromium/public/WebFileInfo.h into Platform/chromium/public.

&gt;&gt; Source/Platform/chromium/public/WebFileUtilities.h:57
&gt;&gt;      virtual bool getFileModificationTime(const WebString&amp; path, double&amp; result) { return false; }
&gt; 
&gt; Should we mark these as deprecated and plan to delete them?

Sounds good, added a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629267</commentid>
    <comment_count>14</comment_count>
      <attachid>143005</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-21 10:57:12 -0700</bug_when>
    <thetext>Comment on attachment 143005
Patch

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

&gt;&gt; Source/Platform/chromium/public/WebFileUtilities.h:44
&gt;&gt; +struct WebFileInfo;
&gt; 
&gt; Looks like you forgot to svn add WebFileInfo.h

Moved Source/WebKit/chromium/public/WebFileInfo.h into Platform/chromium/public.

&gt;&gt; Source/Platform/chromium/public/WebFileUtilities.h:57
&gt;&gt;      virtual bool getFileModificationTime(const WebString&amp; path, double&amp; result) { return false; }
&gt; 
&gt; Should we mark these as deprecated and plan to delete them?

Sounds good, added a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629272</commentid>
    <comment_count>15</comment_count>
      <attachid>143059</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-21 11:01:22 -0700</bug_when>
    <thetext>Comment on attachment 143059
Patch

WebKit API changes LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631233</commentid>
    <comment_count>16</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-22 22:45:45 -0700</bug_when>
    <thetext>This isn&apos;t intended to change existing behavior but is intended to remove FIXME&apos;s in File and cleanup platform APIs.  (I also would like to use the new platform API for other purpose)
Jian, David could either of you take a look at the patch?  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632066</commentid>
    <comment_count>17</comment_count>
      <attachid>143059</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-05-23 14:37:39 -0700</bug_when>
    <thetext>Comment on attachment 143059
Patch

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

r- see comments. I would do it in a dropdown but I have https://code.google.com/p/chromium/issues/detail?id=129444  to contend with :(.

&gt; Source/WebCore/platform/posix/FileSystemPOSIX.cpp:199
&gt; +    return true;

It feels like this code should be exactly like the code you added in FileSystemGtk.cpp (or visa versa) except for the g_stat vs stat. Why are there are other differences?

&gt; Source/WebCore/platform/qt/FileSystemQt.cpp:80
&gt; +    result.modificationTime = info.lastModified().toTime_t();

What data is being access if the file doesn&apos;t exist?

It feels sketchy to do this if !info.exists().

&gt; Source/WebCore/platform/win/FileSystemWin.cpp:79
&gt; +    return true;

Why return a bool at all if it always returns true?

&gt; Source/WebCore/platform/wince/FileSystemWinCE.cpp:72
&gt; +static void getFileSizeFromFileInfo(const BY_HANDLE_FILE_INFORMATION&amp; fileInfo, long long&amp; result)

result isn&apos;t very descriptive of what the variable contains.

&gt; Source/WebCore/platform/wince/FileSystemWinCE.cpp:84
&gt; +    result = t.QuadPart * 0.0000001 - 11644473600.0;

ditto re result (and in the other changes in this file).

&gt; Source/WebCore/platform/wx/FileSystemWx.cpp:89
&gt; +bool getFileMetadata(const String&amp; path, FileMetadata&amp; t)

avoid abbreviations &quot;t&quot;

&gt; Source/WebKit/chromium/src/PlatformSupport.cpp:340
&gt; +    result.type = static_cast&lt;FileMetadata::Type&gt;(webFileInfo.type);

Is there already a function to do this conversion (near some place with COMPILE_ASSERTS to verify that the values are the same)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632538</commentid>
    <comment_count>18</comment_count>
      <attachid>143768</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-24 02:16:53 -0700</bug_when>
    <thetext>Created attachment 143768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632544</commentid>
    <comment_count>19</comment_count>
      <attachid>143059</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-24 02:20:40 -0700</bug_when>
    <thetext>Comment on attachment 143059
Patch

Thanks!! Updated the patch.

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

&gt;&gt; Source/WebCore/platform/posix/FileSystemPOSIX.cpp:199
&gt;&gt; +    return true;
&gt; 
&gt; It feels like this code should be exactly like the code you added in FileSystemGtk.cpp (or visa versa) except for the g_stat vs stat. Why are there are other differences?

Basically I followed other code in the same file (e.g. posix&apos;s getFileMetadata() is implemented after posix&apos;s getFileSize and getFileModificationTime), and coding convention / preferences in each platform looks slightly different.

&gt;&gt; Source/WebCore/platform/qt/FileSystemQt.cpp:80
&gt;&gt; +    result.modificationTime = info.lastModified().toTime_t();
&gt; 
&gt; What data is being access if the file doesn&apos;t exist?
&gt; 
&gt; It feels sketchy to do this if !info.exists().

Good catch, fixed to exit earlier.

&gt;&gt; Source/WebCore/platform/win/FileSystemWin.cpp:79
&gt;&gt; +    return true;
&gt; 
&gt; Why return a bool at all if it always returns true?

Fixed.

&gt;&gt; Source/WebCore/platform/wince/FileSystemWinCE.cpp:72
&gt;&gt; +static void getFileSizeFromFileInfo(const BY_HANDLE_FILE_INFORMATION&amp; fileInfo, long long&amp; result)
&gt; 
&gt; result isn&apos;t very descriptive of what the variable contains.

Fixed.

&gt;&gt; Source/WebCore/platform/wince/FileSystemWinCE.cpp:84
&gt;&gt; +    result = t.QuadPart * 0.0000001 - 11644473600.0;
&gt; 
&gt; ditto re result (and in the other changes in this file).

Fixed.

&gt;&gt; Source/WebCore/platform/wx/FileSystemWx.cpp:89
&gt;&gt; +bool getFileMetadata(const String&amp; path, FileMetadata&amp; t)
&gt; 
&gt; avoid abbreviations &quot;t&quot;

Fixed.

&gt;&gt; Source/WebKit/chromium/src/PlatformSupport.cpp:340
&gt;&gt; +    result.type = static_cast&lt;FileMetadata::Type&gt;(webFileInfo.type);
&gt; 
&gt; Is there already a function to do this conversion (near some place with COMPILE_ASSERTS to verify that the values are the same)?

Yes, we have assertions in WebKit/chromium/src/AssertMatchingEnums.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633002</commentid>
    <comment_count>20</comment_count>
      <attachid>143768</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-05-24 11:37:20 -0700</bug_when>
    <thetext>Comment on attachment 143768
Patch

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

Only two comments. Feel free to address and submit.

&gt; Source/WebCore/platform/FileMetadata.h:57
&gt; +#endif // ENABLE(FILE_SYSTEM)

The end comment for the if isn&apos;t necessary and doesn&apos;t seem very useful for such a short area.

&gt; Source/WebCore/platform/chromium/FileSystemChromium.cpp:61
&gt; +bool getFileMetadata(const String&amp; path, FileMetadata&amp; result)

result isn&apos;t very descriptive.

&gt; Source/WebCore/platform/chromium/FileSystemChromium.cpp:70
&gt; +    result.modificationTime = modificationTime;

Why doesn&apos;t this set type?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633610</commentid>
    <comment_count>21</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-24 23:33:40 -0700</bug_when>
    <thetext>Thanks, will address them and submit.

(In reply to comment #20)
&gt; (From update of attachment 143768 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=143768&amp;action=review
&gt; 
&gt; Only two comments. Feel free to address and submit.
&gt; 
&gt; &gt; Source/WebCore/platform/FileMetadata.h:57
&gt; &gt; +#endif // ENABLE(FILE_SYSTEM)
&gt; 
&gt; The end comment for the if isn&apos;t necessary and doesn&apos;t seem very useful for such a short area.

Will remove it.

&gt; &gt; Source/WebCore/platform/chromium/FileSystemChromium.cpp:61
&gt; &gt; +bool getFileMetadata(const String&amp; path, FileMetadata&amp; result)
&gt; 
&gt; result isn&apos;t very descriptive.

Will fix.

&gt; &gt; Source/WebCore/platform/chromium/FileSystemChromium.cpp:70
&gt; &gt; +    result.modificationTime = modificationTime;
&gt; 
&gt; Why doesn&apos;t this set type?

The type info isn&apos;t available until the chromium port implementation is landed (which will come shortly).  For now I I&apos;ll add more specific FIXME comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633612</commentid>
    <comment_count>22</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-05-24 23:40:38 -0700</bug_when>
    <thetext>Committed r118481: &lt;http://trac.webkit.org/changeset/118481&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142967</attachid>
            <date>2012-05-21 01:38:04 -0700</date>
            <delta_ts>2012-05-21 02:37:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>t</filename>
            <type>text/plain</type>
            <size>20145</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">Y29tbWl0IDMyNjljZWU5ZDVmNGE1ZjFjMTMzOGNhYTA5NGVkMTIzYmVjZjY4NzUKQXV0aG9yOiBL
aW51a28gWWFzdWRhIDxraW51a29AY2hyb21pdW0ub3JnPgpEYXRlOiAgIE1vbiBNYXkgMjEgMTY6
MDk6MjYgMjAxMiArMDkwMAoKICAgIGFkZGluZyBHZXRGaWxlSW5mbwoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cgYi9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCmluZGV4
IDZkMTA0OTguLmI1YTZhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA1
LTIxICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBDbGVh
bnVwOiBhZGQgYSBmaWxlIHN5c3RlbSBjYWxsIHdoaWNoIGNhcHR1cmVzIHRoZSBmaWxlIG1ldGFk
YXRhIGF0IG9uY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04Njk5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogY2hyb21pdW0vcHVibGljL1dlYkZpbGVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVVdGlsaXRpZXM6OmdldEZpbGVJbmZvKTogQWRk
ZWQuCisKIDIwMTItMDUtMTcgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtDaHJvbWl1bV0gTW92ZSBXZWIgV29ya2VycyBtZXRob2RzIHRvIFBsYXRmb3Jt
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVV0
aWxpdGllcy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlVXRpbGl0
aWVzLmgKaW5kZXggNjdkYzRhOC4uN2ZhNGUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmgKQEAgLTQxLDYgKzQxLDggQEAgdHlw
ZWRlZiB2b2lkICpIQU5ETEU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdHJ1Y3QgV2ViRmls
ZUluZm87CisKIGNsYXNzIFdlYkZpbGVVdGlsaXRpZXMgewogcHVibGljOgogI2lmZGVmIFdJTjMy
CkBAIC01NCw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRW1wdHlE
aXJlY3RvcnkoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYg
cmVzdWx0KSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBnZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGRvdWJsZSYgcmVzdWx0KSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRGaWxlSW5mbyhjb25zdCBXZWJTdHJpbmcm
IHBhdGgsIFdlYkZpbGVJbmZvJiByZXN1bHQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBXZWJTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBXZWJTdHJpbmcmIHBhdGgpICB7IHJldHVy
biBXZWJTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgV2ViU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGNvbnN0IFdlYlN0cmluZyYgY29tcG9uZW50
KSAgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgbWFrZUFsbERpcmVj
dG9yaWVzKGNvbnN0IFdlYlN0cmluZyYgcGF0aCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBhZGM1NThmLi44NDYwMWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTIt
MDUtMjEgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIENs
ZWFudXA6IGFkZCBhIGZpbGUgc3lzdGVtIGNhbGwgd2hpY2ggY2FwdHVyZXMgdGhlIGZpbGUgbWV0
YWRhdGEgYXQgb25jZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg2OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ3VycmVudCBGaWxlLnNsaWNlKCkgKHdlYmtpdFNsaWNlKCkpIGltcGxlbWVudGF0aW9u
IGNhbGxzIHR3byBzZXBhcmF0ZSBwbGF0Zm9ybSBjYWxscywKKyAgICAgICAgZ2V0RmlsZVNpemUo
KSBhbmQgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoKSBbYm90aCBhcmUgZGVmaW5lZCBpbiBwbGF0
Zm9ybS9GaWxlU3lzdGVtLmhdLAorICAgICAgICB0byBjYXB0dXJlIHRoZSBmaWxlIG1ldGFkYXRh
LCBidXQgd2Ugc2hvdWxkIGhhdmUgYSBzaW5nbGUgZmlsZSBzeXN0ZW0gY2FsbCB0byBnZXQgdGhl
bSBhdCBvbmNlCisgICAgICAgIGZvciB0d28gcmVhc29uczogMS4gc2F2ZSBhZGRpdGlvbmFsIHN5
c3RlbSBjYWxsIGNvc3RzLCBhbmQgMi4gIGF0b21pY2FsbHkgb2J0YWluIHRoZSBmaWxlIG1ldGFk
YXRhLgorCisgICAgICAgIE5vIG5ldyB0ZXN0czogZXhpc3RpbmcgdGVzdHMgKGh0dHAvdGVzdHMv
bG9jYWwvZmlsZWFwaS8qIGFuZCBmYXN0L2ZpbGVzLyopIHNob3VsZCBwYXNzLgorCisgICAgICAg
ICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNhcHR1cmVTbmFw
c2hvdCk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZU1ldGFkYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vRmlsZVN5c3RlbS5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0ZpbGVTeXN0
ZW1DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTWV0YWRhdGEpOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAg
ICAgKFBsYXRmb3JtU3VwcG9ydCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1H
dGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZU1ldGFkYXRhKTogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmdldEZpbGVNZXRhZGF0YSk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L0ZpbGVT
eXN0ZW1RdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTWV0YWRhdGEpOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpnZXRGaWxlU2l6ZUZyb21GaW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxl
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6CisgICAg
ICAgIChXZWJDb3JlOjpnZXRGaWxlTWV0YWRhdGEpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS93aW5jZS9GaWxlU3lzdGVtV2luQ0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZVNp
emVGcm9tRmlsZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRp
bWVGcm9tRmlsZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZVNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0RmlsZU1ldGFkYXRhKTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vd3gvRmlsZVN5c3Rl
bVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVNZXRhZGF0YSk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDUtMTggIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjExNzUwMSk6IEljb25EYXRhYmFzZSBhc3Nl
cnRzIG9uIHN0YXJ0dXAgaW4gc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTCgpLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZS5jcHAKaW5kZXggZjJhZmEzNC4uMDk4MDg0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
Y3BwCkBAIC0xNjksMTMgKzE2OSwxNSBAQCB2b2lkIEZpbGU6OmNhcHR1cmVTbmFwc2hvdChsb25n
IGxvbmcmIHNuYXBzaG90U2l6ZSwgZG91YmxlJiBzbmFwc2hvdE1vZGlmaWNhdGlvbgogCiAgICAg
Ly8gT2J0YWlucyBhIHNuYXBzaG90IG9mIHRoZSBmaWxlIGJ5IGNhcHR1cmluZyBpdHMgY3VycmVu
dCBzaXplIGFuZCBtb2RpZmljYXRpb24gdGltZS4gVGhpcyBpcyB1c2VkIHdoZW4gd2Ugc2xpY2Ug
YSBmaWxlIGZvciB0aGUgZmlyc3QgdGltZS4KICAgICAvLyBJZiB3ZSBmYWlsIHRvIHJldHJpZXZl
IHRoZSBzaXplIG9yIG1vZGlmaWNhdGlvbiB0aW1lLCBwcm9iYWJseSBkdWUgdG8gdGhhdCB0aGUg
ZmlsZSBoYXMgYmVlbiBkZWxldGVkLCAwIHNpemUgaXMgcmV0dXJuZWQuCi0gICAgLy8gRklYTUU6
IENvbWJpbmUgZ2V0RmlsZVNpemUgYW5kIGdldEZpbGVNb2RpZmljYXRpb25UaW1lIGludG8gb25l
IGZpbGUgc3lzdGVtIGNhbGwuCi0gICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgaWYg
KCFnZXRGaWxlU2l6ZShtX3BhdGgsIHNuYXBzaG90U2l6ZSkgfHwgIWdldEZpbGVNb2RpZmljYXRp
b25UaW1lKG1fcGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpIHsKKyAgICBGaWxlTWV0YWRhdGEgbWV0
YWRhdGE7CisgICAgaWYgKCFnZXRGaWxlTWV0YWRhdGEobV9wYXRoLCBtZXRhZGF0YSkpIHsKICAg
ICAgICAgc25hcHNob3RTaXplID0gMDsKICAgICAgICAgc25hcHNob3RNb2RpZmljYXRpb25UaW1l
ID0gMDsKLSAgICB9IGVsc2UKLSAgICAgICAgc25hcHNob3RNb2RpZmljYXRpb25UaW1lID0gbW9k
aWZpY2F0aW9uVGltZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNuYXBzaG90U2l6
ZSA9IG1ldGFkYXRhLmxlbmd0aDsKKyAgICBzbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUgPSBtZXRh
ZGF0YS5tb2RpZmljYXRpb25UaW1lOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oCmluZGV4IDk5ZmUyZjMuLmVjMjgxNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oCkBAIC0zMyw4ICszMyw2IEBACiAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShGSUxFX1NZU1RF
TSkKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRmlsZU1ldGFkYXRhIHsKQEAgLTU0
LDEzICs1MiwxMyBAQCBzdHJ1Y3QgRmlsZU1ldGFkYXRhIHsKIAogICAgIFR5cGUgdHlwZTsKIAor
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICBTdHJpbmcgcGxhdGZvcm1QYXRoOworI2VuZGlm
IC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKIAogICAgIEZpbGVNZXRhZGF0YSgpIDogbW9kaWZpY2F0
aW9uVGltZSgwLjApLCBsZW5ndGgoLTEpLCB0eXBlKFR5cGVVbmtub3duKSB7IH0KIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQog
I2VuZGlmIC8vIEZpbGVNZXRhZGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgK
aW5kZXggYTIwMmZhMC4uYzE2YTU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0u
aApAQCAtMTUxLDEyICsxNTEsMTUgQEAgc3RhdGljIGNvbnN0IGNoYXIgUGxhdGZvcm1GaWxlUGF0
aFNlcGFyYXRvciA9ICdcXCc7CiBzdGF0aWMgY29uc3QgY2hhciBQbGF0Zm9ybUZpbGVQYXRoU2Vw
YXJhdG9yID0gJy8nOwogI2VuZGlmCiAKK3N0cnVjdCBGaWxlTWV0YWRhdGE7CisKIHZvaWQgcmV2
ZWFsRm9sZGVySW5PUyhjb25zdCBTdHJpbmcmKTsKIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJp
bmcmKTsKIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsKIGJvb2wgZGVsZXRlRW1wdHlE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiBib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYs
IGxvbmcgbG9uZyYgcmVzdWx0KTsKIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3Qg
U3RyaW5nJiwgdGltZV90JiByZXN1bHQpOworYm9vbCBnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3Ry
aW5nJiwgRmlsZU1ldGFkYXRhJik7CiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpOwogYm9vbCBtYWtlQWxs
RGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsKIFN0cmluZyBob21lRGlyZWN0b3J5UGF0
aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5
c3RlbUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZpbGVT
eXN0ZW1DaHJvbWl1bS5jcHAKaW5kZXggYzFhYmJiZC4uNDJmMDViZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogCisjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3VwcG9ydC5oIgpAQCAtNTcsNiArNTgsMTkgQEAgYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgcmVzdWx0KQogICAgIHJldHVybiBQbGF0Zm9y
bVN1cHBvcnQ6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgsIHJlc3VsdCk7CiB9CiAKK2Jv
b2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU1ldGFkYXRhJiByZXN1
bHQpCit7CisgICAgLy8gRklYTUU6IENhbGwgUGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxlTWV0YWRh
dGEgb25jZSBpdCBpcyBpbXBsZW1lbnRlZC4KKyAgICAvLyByZXR1cm4gUGxhdGZvcm1TdXBwb3J0
OjpnZXRGaWxlTWV0YWRhdGEocGF0aCwgcmVzdWx0KTsKKyAgICBpZiAoIVBsYXRmb3JtU3VwcG9y
dDo6Z2V0RmlsZVNpemUocGF0aCwgcmVzdWx0Lmxlbmd0aCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKKyAgICBpZiAoIVBsYXRmb3JtU3VwcG9y
dDo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXN1bHQubW9kaWZpY2F0aW9uVGltZSA9IG1vZGlmaWNh
dGlvblRpbWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgcmV2ZWFsRm9sZGVySW5PUyhj
b25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgUGxhdGZvcm1TdXBwb3J0OjpyZXZlYWxGb2xkZXJJ
bk9TKHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0
Zm9ybVN1cHBvcnQuaAppbmRleCBiZDI1MzMyLi41ZTIyNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaApAQCAtMTI4LDYgKzEy
OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25z
dCBTdHJpbmcmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmLCBs
b25nIGxvbmcmIHJlc3VsdCk7CiAgICAgc3RhdGljIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRp
bWUoY29uc3QgU3RyaW5nJiwgdGltZV90JiByZXN1bHQpOworICAgIHN0YXRpYyBib29sIGdldEZp
bGVNZXRhZGF0YShjb25zdCBTdHJpbmcmLCBGaWxlTWV0YWRhdGEmIHJlc3VsdCk7CiAgICAgc3Rh
dGljIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgc3RhdGlj
IFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIGNvbXBvbmVudCk7CiAgICAgc3RhdGljIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVz
KGNvbnN0IFN0cmluZyYgcGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmls
ZVN5c3RlbUd0ay5jcHAKaW5kZXggYTNiNDQ4ZC4uMGJmNDU2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcApAQCAtMjMsMTQgKzIzLDE1IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogCi0jaW5jbHVkZSA8
d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiVVVJRC5oIgogI2luY2x1ZGUgPGdpby9n
aW8uaD4KICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KLSNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HbGliVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HbGliVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNDEsNiArMTQyLDI0IEBAIGJvb2wgZ2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIG1vZGlmaWVkVGlt
ZSkKIAogfQogCitib29sIGdldEZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVN
ZXRhZGF0YSYpCit7CisgICAgQ1N0cmluZyBmaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKTsKKyAgICBpZiAoZmlsZW5hbWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHN0cnVjdCBzdGF0IHN0YXRSZXN1bHQ7CisgICAgZ2ludCByZXN1bHQgPSBn
X3N0YXQoZmlsZW5hbWUuZGF0YSgpLCAmc3RhdFJlc3VsdCk7CisgICAgaWYgKHJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUgPSBzdGF0
UmVzdWx0LnN0X210aW1lOworICAgIHJlc3VsdC5sZW5ndGggPSBzdGF0UmVzdWx0LnN0X3NpemU7
CisgICAgcmVzdWx0LnR5cGUgPSBTX0lTRElSKHN0YXRSZXN1bHQuc3RfbW9kZSkgPyBGaWxlTWV0
YWRhdGE6OlR5cGVEaXJlY3RvcnkgOiBGaWxlTWV0YWRhdGE6OlR5cGVGaWxlOworICAgIHJldHVy
biB0cnVlOworCit9CisKIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKIHsKICAgICBpZiAocGF0aC5lbmRz
V2l0aChHX0RJUl9TRVBBUkFUT1JfUykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAppbmRleCBmZGE4MTI2Li45OGRhZjQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVt
LmgiCiAKKyNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgPGRpcmVudC5oPgogI2luY2x1ZGUgPGVycm5vLmg+CkBAIC0xODEsNiAr
MTgyLDIzIEBAIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRo
LCB0aW1lX3QmIHJlc3VsdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBnZXRGaWxlTWV0
YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlTWV0YWRhdGEmIHJlc3VsdCkKK3sKKyAgICBD
U3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYg
KCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOworICAgIGlmIChzdGF0KGZzUmVw
LmRhdGEoKSwgJmZpbGVJbmZvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0
Lm1vZGlmaWNhdGlvblRpbWUgPSBmaWxlSW5mby5zdF9tdGltZTsKKyAgICByZXN1bHQubGVuZ3Ro
ID0gZmlsZUluZm8uc3Rfc2l6ZTsKKyAgICByZXN1bHQudHlwZSA9IFNfSVNESVIoZmlsZUluZm8u
c3RfbW9kZSkgPyBGaWxlTWV0YWRhdGE6OlR5cGVEaXJlY3RvcnkgOiBGaWxlTWV0YWRhdGE6OlR5
cGVGaWxlOworICAgIHJldHVybiB0cnVlOworfQorCiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiB7CiAg
ICAgaWYgKHBhdGguZW5kc1dpdGgoJy8nKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9G
aWxlU3lzdGVtUXQuY3BwCmluZGV4IDMyNjQ0ZDEuLjMzOWZkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAorI2luY2x1ZGUgIkZpbGVN
ZXRhZGF0YS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8UURhdGVU
aW1lPgogI2luY2x1ZGUgPFFEaXI+CkBAIC03Myw2ICs3NCwxNSBAQCBib29sIGdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCiAgICAgcmV0
dXJuIGluZm8uZXhpc3RzKCk7CiB9CiAKK2Jvb2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgRmlsZU1ldGFkYXRhJiByZXN1bHQpCit7CisgICAgUUZpbGVJbmZvIGluZm8ocGF0
aCk7CisgICAgcmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUgPSBpbmZvLmxhc3RNb2RpZmllZCgpLnRv
VGltZV90KCk7CisgICAgcmVzdWx0Lmxlbmd0aCA9IGluZm8uc2l6ZSgpOworICAgIHJlc3VsdC50
eXBlID0gaW5mby5pc0RpcigpID8gRmlsZU1ldGFkYXRhOjpUeXBlRGlyZWN0b3J5IDogRmlsZU1l
dGFkYXRhOjpUeXBlRmlsZTsKKyAgICByZXR1cm4gaW5mby5leGlzdHMoKTsKK30KKwogYm9vbCBt
YWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHJldHVybiBRRGly
Ojpyb290KCkubWtwYXRoKHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Zp
bGVTeXN0ZW1XaW4uY3BwCmluZGV4IDRjZTUxODcuLjRkZDYzZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAKKyNpbmNsdWRlICJG
aWxlTWV0YWR0YWEuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBh
dGhXYWxrZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIu
aD4KQEAgLTU0LDEyICs1NSw4IEBAIHN0YXRpYyBib29sIGdldEZpbmREYXRhKFN0cmluZyBwYXRo
LCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0KQorc3Rh
dGljIGJvb2wgZ2V0RmlsZVNpemVGcm9tRmluZERhdGEoY29uc3QgV0lOMzJfRklORF9EQVRBVyYg
ZmluZERhdGEsIGxvbmcgbG9uZyYgcmVzdWx0KQogewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmlu
ZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQogICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVTaXplOwogICAgIGZpbGVTaXpl
LkhpZ2hQYXJ0ID0gZmluZERhdGEubkZpbGVTaXplSGlnaDsKICAgICBmaWxlU2l6ZS5Mb3dQYXJ0
ID0gZmluZERhdGEubkZpbGVTaXplTG93OwpAQCAtNzEsMTggKzY4LDQ5IEBAIGJvb2wgZ2V0Rmls
ZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdCkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERh
dGEoY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEsIHRpbWVfdCYgcmVzdWx0KQorewor
ICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVTaXplOworICAgIGZpbGVUaW1lLkhpZ2hQYXJ0ID0gZmlu
ZERhdGEuZnRMYXN0V3JpdGVUaW1lLmR3SGlnaERhdGVUaW1lOworICAgIGZpbGVUaW1lLkxvd1Bh
cnQgPSBmaW5kRGF0YS5mdExhc3RXcml0ZVRpbWUuZHdMb3dEYXRlVGltZTsKKworICAgIC8vIElu
Zm9ybWF0aW9uIGFib3V0IGNvbnZlcnRpbmcgdGltZV90IHRvIEZpbGVUaW1lIGlzIGF2YWlsYWJs
ZSBhdCBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM3MjQyMjglMjh2
PXZzLjg1JTI5LmFzcHgKKyAgICByZXN1bHQgPSBmaWxlVGltZS5RdWFkUGFydCAvIDEwMDAwMDAw
IC0ga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0OworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHQpCit7
CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICBpZiAoIWdldEZpbmREYXRhKHBh
dGgsIGZpbmREYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGdldEZp
bGVTaXplRnJvbUZpbmREYXRhKGZpbmREYXRhLCByZXN1bHQpOworfQorCiBib29sIGdldEZpbGVN
b2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCiB7CiAg
ICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKICAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgs
IGZpbmREYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgVUxBUkdFX0lOVEVHRVIg
ZmlsZVNpemU7Ci0gICAgZmlsZVNpemUuSGlnaFBhcnQgPSBmaW5kRGF0YS5mdExhc3RXcml0ZVRp
bWUuZHdIaWdoRGF0ZVRpbWU7Ci0gICAgZmlsZVNpemUuTG93UGFydCA9IGZpbmREYXRhLmZ0TGFz
dFdyaXRlVGltZS5kd0xvd0RhdGVUaW1lOworICAgIHJldHVybiBnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgcmVzdWx0KTsKK30KKworYm9vbCBnZXRGaWxlTWV0
YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlTWV0YWRhdGEmIHJlc3VsdCkKK3sKKyAgICBX
SU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOworICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmlu
ZERhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWdldEZpbGVTaXplRnJv
bUZpbmREYXRhKGZpbmREYXRhLCByZXN1bHQubGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0
YSwgcmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXN1bHQudHlwZSA9IChhdHRyLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9E
SVJFQ1RPUlkpID8gRmlsZU1ldGFkYXRhOjpUeXBlRGlyZWN0b3J5IDogRmlsZU1ldGFkYXRhOjpU
eXBlRmlsZTsKIAotICAgIC8vIEluZm9ybWF0aW9uIGFib3V0IGNvbnZlcnRpbmcgdGltZV90IHRv
IEZpbGVUaW1lIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVz
L2xpYnJhcnkvbXM3MjQyMjglMjh2PXZzLjg1JTI5LmFzcHgKLSAgICByZXN1bHQgPSBmaWxlU2l6
ZS5RdWFkUGFydCAvIDEwMDAwMDAwIC0ga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0OwogICAg
IHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW5jZS9GaWxlU3lzdGVtV2luQ0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luY2Uv
RmlsZVN5c3RlbVdpbkNFLmNwcAppbmRleCA0YzdhMWRmLi45MjE4YjYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9GaWxlU3lzdGVtV2luQ0UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0ZpbGVTeXN0ZW1XaW5DRS5jcHAKQEAgLTY4LDMx
ICs2OCw1MCBAQCBzdGF0aWMgYm9vbCBnZXRGaWxlSW5mbyhjb25zdCBTdHJpbmcmIHBhdGgsIEJZ
X0hBTkRMRV9GSUxFX0lORk9STUFUSU9OJiBmaWxlSW5mbwogICAgIHJldHVybiBydG47CiB9CiAK
K3N0YXRpYyB2b2lkIGdldEZpbGVTaXplRnJvbUZpbGVJbmZvKGNvbnN0IEJZX0hBTkRMRV9GSUxF
X0lORk9STUFUSU9OJiBmaWxlSW5mbywgbG9uZyBsb25nJiByZXN1bHQpCit7CisgICAgVUxBUkdF
X0lOVEVHRVIgZmlsZVNpemU7CisgICAgZmlsZVNpemUuTG93UGFydCA9IGZpbGVJbmZvLm5GaWxl
U2l6ZUxvdzsKKyAgICBmaWxlU2l6ZS5IaWdoUGFydCA9IGZpbGVJbmZvLm5GaWxlU2l6ZUhpZ2g7
CisgICAgcmVzdWx0ID0gZmlsZVNpemUuUXVhZFBhcnQ7Cit9CisKK3N0YXRpYyB2b2lkIGdldEZp
bGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbGVJbmZvKGNvbnN0IEJZX0hBTkRMRV9GSUxFX0lORk9S
TUFUSU9OJiBmaWxlSW5mbywgdGltZV90JiByZXN1bHQpCit7CisgICAgVUxBUkdFX0lOVEVHRVIg
dDsKKyAgICBtZW1jcHkoJnQsICZmaWxlSW5mby5mdExhc3RXcml0ZVRpbWUsIHNpemVvZih0KSk7
CisgICAgcmVzdWx0ID0gdC5RdWFkUGFydCAqIDAuMDAwMDAwMSAtIDExNjQ0NDczNjAwLjA7Cit9
CisKIGJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJlc3Vs
dCkKIHsKICAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb247CiAg
ICAgaWYgKCFnZXRGaWxlSW5mbyhwYXRoLCBmaWxlSW5mb3JtYXRpb24pKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBVTEFSR0VfSU5URUdFUiBmaWxlU2l6ZTsKLSAgICBmaWxlU2l6ZS5M
b3dQYXJ0ID0gZmlsZUluZm9ybWF0aW9uLm5GaWxlU2l6ZUxvdzsKLSAgICBmaWxlU2l6ZS5IaWdo
UGFydCA9IGZpbGVJbmZvcm1hdGlvbi5uRmlsZVNpemVIaWdoOworICAgIGdldEZpbGVTaXplRnJv
bUZpbGVJbmZvKGZpbGVJbmZvcm1hdGlvbiwgcmVzdWx0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
IAotICAgIHJlc3VsdCA9IGZpbGVTaXplLlF1YWRQYXJ0OworYm9vbCBnZXRGaWxlTW9kaWZpY2F0
aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgcmVzdWx0KQoreworICAgIEJZX0hB
TkRMRV9GSUxFX0lORk9STUFUSU9OIGZpbGVJbmZvcm1hdGlvbjsKKyAgICBpZiAoIWdldEZpbGVJ
bmZvKHBhdGgsIGZpbGVJbmZvcm1hdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAg
IGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbGVJbmZvKGZpbGVJbmZvcm1hdGlvbiwgcmVz
dWx0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgcmVzdWx0KQorYm9vbCBnZXRGaWxlTWV0YWRh
dGEoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlTWV0YWRhdGEmIHJlc3VsdCkKIHsKICAgICBCWV9I
QU5ETEVfRklMRV9JTkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb247CiAgICAgaWYgKCFnZXRGaWxl
SW5mbyhwYXRoLCBmaWxlSW5mb3JtYXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBVTEFSR0VfSU5URUdFUiB0OwotICAgIG1lbWNweSgmdCwgJmZpbGVJbmZvcm1hdGlvbi5mdExh
c3RXcml0ZVRpbWUsIHNpemVvZih0KSk7Ci0gICAgCi0gICAgcmVzdWx0ID0gdC5RdWFkUGFydCAq
IDAuMDAwMDAwMSAtIDExNjQ0NDczNjAwLjA7CisgICAgZ2V0RmlsZVNpemVGcm9tRmlsZUluZm8o
ZmlsZUluZm9ybWF0aW9uLCByZXN1bHQubGVuZ3RoKTsKKyAgICBnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZUZyb21GaWxlSW5mbyhmaWxlSW5mb3JtYXRpb24sIHJlc3VsdC5tb2RpZmljYXRpb25UaW1l
KTsKKyAgICByZXN1bHQudHlwZSA9IChmaWxlSW5mb3JtYXRpb24uZHdGaWxlQXR0cmlidXRlcyAm
IEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkgPyBGaWxlTWV0YWRhdGE6OlR5cGVEaXJlY3Rvcnkg
OiBGaWxlTWV0YWRhdGE6OlR5cGVGaWxlOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9GaWxlU3lzdGVtV3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNwcAppbmRleCBiYmVjOWZlLi5kMDE5
NTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9GaWxlU3lzdGVtV3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L0ZpbGVTeXN0ZW1XeC5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVt
LmgiCiAKKyNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKICNpbmNsdWRlIDx3eC93eC5oPgogI2lu
Y2x1ZGUgPHd4L2RhdGV0aW1lLmg+CiAjaW5jbHVkZSA8d3gvZGlyLmg+CkBAIC04NSw2ICs4Niwx
NyBAQCBib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGlt
ZV90JiB0KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBnZXRGaWxlTWV0YWRhdGEoY29u
c3QgU3RyaW5nJiBwYXRoLCBGaWxlTWV0YWRhdGEmIHQpCit7CisgICAgaWYgKCF3eEZpbGVFeGlz
dHMocGF0aCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB3eEZpbGVOYW1lIGZpbGVOYW1l
KHBhdGgpOworICAgIHQubGVuZ3RoID0gZmlsZU5hbWUuR2V0TW9kaWZpY2F0aW9uVGltZSgpLkdl
dFRpY2tzKCk7CisgICAgdC5tb2RpZmljYXRpb25UaW1lID0gZmlsZU5hbWUuR2V0U2l6ZSgpOwor
ICAgIHQudHlwZSA9IGZpbGVOYW1lLklzRGlyKCkgPyBGaWxlTWV0YWRhdGE6OlR5cGVEaXJlY3Rv
cnkgOiBGaWxlTWV0YWRhdGE6OlR5cGVGaWxlOworICAgIHJldHVybiB0cnVlOworfQorCiBib29s
IG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgcmV0dXJuIHd4
RmlsZU5hbWU6Ok1rZGlyKHBhdGgsIDA3NzcsIHd4UEFUSF9NS0RJUl9GVUxMKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggZDU0N2Q2OC4uMmViMTcwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNS0yMSAgS2ludWtvIFlhc3VkYSAgPGtp
bnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2xlYW51cDogYWRkIGEgZmlsZSBzeXN0ZW0g
Y2FsbCB3aGljaCBjYXB0dXJlcyB0aGUgZmlsZSBtZXRhZGF0YSBhdCBvbmNlLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY5OTUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9QbGF0Zm9ybVN1cHBv
cnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxlTWV0YWRh
dGEpOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDUtMjEgIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBSb2xsZWQg
REVQUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3Vw
cG9ydC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3Bw
CmluZGV4IGJiZDA3Y2EuLmQ2ZWMyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvUGxhdGZvcm1TdXBwb3J0LmNwcApAQCAtMzUsNyArMzUsOSBAQAogCiAjaW5jbHVkZSAiQ2hy
b21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIkZpbGVNZXRh
ZGF0YS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJGaWxlSW5mby5oIgogI2lu
Y2x1ZGUgIldlYkZpbGVVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgog
I2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgpAQCAtMzMzLDYgKzMzNSwxNyBAQCBib29sIFBsYXRm
b3JtU3VwcG9ydDo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0
aW1lX3QmIHJlc3VsdAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFBsYXRmb3JtU3VwcG9y
dDo6Z2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU1ldGFkYXRhJiByZXN1
bHQpCit7CisgICAgV2ViRmlsZUluZm8gd2ViRmlsZUluZm87CisgICAgaWYgKCF3ZWJLaXRQbGF0
Zm9ybVN1cHBvcnQoKS0+ZmlsZVV0aWxpdGllcygpLT5nZXRGaWxlSW5mbyhwYXRoLCB3ZWJGaWxl
SW5mbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXN1bHQubW9kaWZpY2F0aW9uVGlt
ZSA9IHdlYkZpbGVJbmZvLm1vZGlmaWNhdGlvblRpbWU7CisgICAgcmVzdWx0Lmxlbmd0aCA9IHdl
YkZpbGVJbmZvLmxlbmd0aDsKKyAgICByZXN1bHQudHlwZSA9IHN0YXRpY19jYXN0PEZpbGVNZXRh
ZGF0YTo6VHlwZT4od2ViRmlsZUluZm8udHlwZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIFN0
cmluZyBQbGF0Zm9ybVN1cHBvcnQ6OmRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQog
ewogICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmZpbGVVdGlsaXRpZXMo
KS0+ZGlyZWN0b3J5TmFtZShwYXRoKTsK
</data>
<flag name="commit-queue"
          id="149430"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142975</attachid>
            <date>2012-05-21 02:37:45 -0700</date>
            <delta_ts>2012-05-21 04:06:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>t</filename>
            <type>text/plain</type>
            <size>20308</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">Y29tbWl0IGE1YzA2YjJmOTU2ZDg0ZDdmYjVhZjU1MmZkNjM0MTAzOWFjNWIwYWQKQXV0aG9yOiBL
aW51a28gWWFzdWRhIDxraW51a29AY2hyb21pdW0ub3JnPgpEYXRlOiAgIE1vbiBNYXkgMjEgMTY6
MDk6MjYgMjAxMiArMDkwMAoKICAgIGFkZGluZyBHZXRGaWxlSW5mbwoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cgYi9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCmluZGV4
IDZkMTA0OTguLmI1YTZhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA1
LTIxICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBDbGVh
bnVwOiBhZGQgYSBmaWxlIHN5c3RlbSBjYWxsIHdoaWNoIGNhcHR1cmVzIHRoZSBmaWxlIG1ldGFk
YXRhIGF0IG9uY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04Njk5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogY2hyb21pdW0vcHVibGljL1dlYkZpbGVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVVdGlsaXRpZXM6OmdldEZpbGVJbmZvKTogQWRk
ZWQuCisKIDIwMTItMDUtMTcgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtDaHJvbWl1bV0gTW92ZSBXZWIgV29ya2VycyBtZXRob2RzIHRvIFBsYXRmb3Jt
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVV0
aWxpdGllcy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlVXRpbGl0
aWVzLmgKaW5kZXggNjdkYzRhOC4uN2ZhNGUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmgKQEAgLTQxLDYgKzQxLDggQEAgdHlw
ZWRlZiB2b2lkICpIQU5ETEU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdHJ1Y3QgV2ViRmls
ZUluZm87CisKIGNsYXNzIFdlYkZpbGVVdGlsaXRpZXMgewogcHVibGljOgogI2lmZGVmIFdJTjMy
CkBAIC01NCw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRW1wdHlE
aXJlY3RvcnkoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYg
cmVzdWx0KSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBnZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGRvdWJsZSYgcmVzdWx0KSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRGaWxlSW5mbyhjb25zdCBXZWJTdHJpbmcm
IHBhdGgsIFdlYkZpbGVJbmZvJiByZXN1bHQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBXZWJTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBXZWJTdHJpbmcmIHBhdGgpICB7IHJldHVy
biBXZWJTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgV2ViU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGNvbnN0IFdlYlN0cmluZyYgY29tcG9uZW50
KSAgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgbWFrZUFsbERpcmVj
dG9yaWVzKGNvbnN0IFdlYlN0cmluZyYgcGF0aCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBhZGM1NThmLi44NDYwMWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTIt
MDUtMjEgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIENs
ZWFudXA6IGFkZCBhIGZpbGUgc3lzdGVtIGNhbGwgd2hpY2ggY2FwdHVyZXMgdGhlIGZpbGUgbWV0
YWRhdGEgYXQgb25jZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg2OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ3VycmVudCBGaWxlLnNsaWNlKCkgKHdlYmtpdFNsaWNlKCkpIGltcGxlbWVudGF0aW9u
IGNhbGxzIHR3byBzZXBhcmF0ZSBwbGF0Zm9ybSBjYWxscywKKyAgICAgICAgZ2V0RmlsZVNpemUo
KSBhbmQgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoKSBbYm90aCBhcmUgZGVmaW5lZCBpbiBwbGF0
Zm9ybS9GaWxlU3lzdGVtLmhdLAorICAgICAgICB0byBjYXB0dXJlIHRoZSBmaWxlIG1ldGFkYXRh
LCBidXQgd2Ugc2hvdWxkIGhhdmUgYSBzaW5nbGUgZmlsZSBzeXN0ZW0gY2FsbCB0byBnZXQgdGhl
bSBhdCBvbmNlCisgICAgICAgIGZvciB0d28gcmVhc29uczogMS4gc2F2ZSBhZGRpdGlvbmFsIHN5
c3RlbSBjYWxsIGNvc3RzLCBhbmQgMi4gIGF0b21pY2FsbHkgb2J0YWluIHRoZSBmaWxlIG1ldGFk
YXRhLgorCisgICAgICAgIE5vIG5ldyB0ZXN0czogZXhpc3RpbmcgdGVzdHMgKGh0dHAvdGVzdHMv
bG9jYWwvZmlsZWFwaS8qIGFuZCBmYXN0L2ZpbGVzLyopIHNob3VsZCBwYXNzLgorCisgICAgICAg
ICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNhcHR1cmVTbmFw
c2hvdCk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZU1ldGFkYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vRmlsZVN5c3RlbS5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0ZpbGVTeXN0
ZW1DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTWV0YWRhdGEpOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAg
ICAgKFBsYXRmb3JtU3VwcG9ydCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1H
dGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZU1ldGFkYXRhKTogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmdldEZpbGVNZXRhZGF0YSk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L0ZpbGVT
eXN0ZW1RdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTWV0YWRhdGEpOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpnZXRGaWxlU2l6ZUZyb21GaW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxl
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6CisgICAg
ICAgIChXZWJDb3JlOjpnZXRGaWxlTWV0YWRhdGEpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS93aW5jZS9GaWxlU3lzdGVtV2luQ0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZVNp
emVGcm9tRmlsZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRp
bWVGcm9tRmlsZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZVNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0RmlsZU1ldGFkYXRhKTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vd3gvRmlsZVN5c3Rl
bVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVNZXRhZGF0YSk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDUtMTggIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjExNzUwMSk6IEljb25EYXRhYmFzZSBhc3Nl
cnRzIG9uIHN0YXJ0dXAgaW4gc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTCgpLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZS5jcHAKaW5kZXggZjJhZmEzNC4uMDk4MDg0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
Y3BwCkBAIC0xNjksMTMgKzE2OSwxNSBAQCB2b2lkIEZpbGU6OmNhcHR1cmVTbmFwc2hvdChsb25n
IGxvbmcmIHNuYXBzaG90U2l6ZSwgZG91YmxlJiBzbmFwc2hvdE1vZGlmaWNhdGlvbgogCiAgICAg
Ly8gT2J0YWlucyBhIHNuYXBzaG90IG9mIHRoZSBmaWxlIGJ5IGNhcHR1cmluZyBpdHMgY3VycmVu
dCBzaXplIGFuZCBtb2RpZmljYXRpb24gdGltZS4gVGhpcyBpcyB1c2VkIHdoZW4gd2Ugc2xpY2Ug
YSBmaWxlIGZvciB0aGUgZmlyc3QgdGltZS4KICAgICAvLyBJZiB3ZSBmYWlsIHRvIHJldHJpZXZl
IHRoZSBzaXplIG9yIG1vZGlmaWNhdGlvbiB0aW1lLCBwcm9iYWJseSBkdWUgdG8gdGhhdCB0aGUg
ZmlsZSBoYXMgYmVlbiBkZWxldGVkLCAwIHNpemUgaXMgcmV0dXJuZWQuCi0gICAgLy8gRklYTUU6
IENvbWJpbmUgZ2V0RmlsZVNpemUgYW5kIGdldEZpbGVNb2RpZmljYXRpb25UaW1lIGludG8gb25l
IGZpbGUgc3lzdGVtIGNhbGwuCi0gICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgaWYg
KCFnZXRGaWxlU2l6ZShtX3BhdGgsIHNuYXBzaG90U2l6ZSkgfHwgIWdldEZpbGVNb2RpZmljYXRp
b25UaW1lKG1fcGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpIHsKKyAgICBGaWxlTWV0YWRhdGEgbWV0
YWRhdGE7CisgICAgaWYgKCFnZXRGaWxlTWV0YWRhdGEobV9wYXRoLCBtZXRhZGF0YSkpIHsKICAg
ICAgICAgc25hcHNob3RTaXplID0gMDsKICAgICAgICAgc25hcHNob3RNb2RpZmljYXRpb25UaW1l
ID0gMDsKLSAgICB9IGVsc2UKLSAgICAgICAgc25hcHNob3RNb2RpZmljYXRpb25UaW1lID0gbW9k
aWZpY2F0aW9uVGltZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNuYXBzaG90U2l6
ZSA9IG1ldGFkYXRhLmxlbmd0aDsKKyAgICBzbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUgPSBtZXRh
ZGF0YS5tb2RpZmljYXRpb25UaW1lOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oCmluZGV4IDk5ZmUyZjMuLmVjMjgxNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oCkBAIC0zMyw4ICszMyw2IEBACiAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShGSUxFX1NZU1RF
TSkKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRmlsZU1ldGFkYXRhIHsKQEAgLTU0
LDEzICs1MiwxMyBAQCBzdHJ1Y3QgRmlsZU1ldGFkYXRhIHsKIAogICAgIFR5cGUgdHlwZTsKIAor
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICBTdHJpbmcgcGxhdGZvcm1QYXRoOworI2VuZGlm
IC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKIAogICAgIEZpbGVNZXRhZGF0YSgpIDogbW9kaWZpY2F0
aW9uVGltZSgwLjApLCBsZW5ndGgoLTEpLCB0eXBlKFR5cGVVbmtub3duKSB7IH0KIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQog
I2VuZGlmIC8vIEZpbGVNZXRhZGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgK
aW5kZXggYTIwMmZhMC4uYzE2YTU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0u
aApAQCAtMTUxLDEyICsxNTEsMTUgQEAgc3RhdGljIGNvbnN0IGNoYXIgUGxhdGZvcm1GaWxlUGF0
aFNlcGFyYXRvciA9ICdcXCc7CiBzdGF0aWMgY29uc3QgY2hhciBQbGF0Zm9ybUZpbGVQYXRoU2Vw
YXJhdG9yID0gJy8nOwogI2VuZGlmCiAKK3N0cnVjdCBGaWxlTWV0YWRhdGE7CisKIHZvaWQgcmV2
ZWFsRm9sZGVySW5PUyhjb25zdCBTdHJpbmcmKTsKIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJp
bmcmKTsKIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsKIGJvb2wgZGVsZXRlRW1wdHlE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiBib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYs
IGxvbmcgbG9uZyYgcmVzdWx0KTsKIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3Qg
U3RyaW5nJiwgdGltZV90JiByZXN1bHQpOworYm9vbCBnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3Ry
aW5nJiwgRmlsZU1ldGFkYXRhJik7CiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpOwogYm9vbCBtYWtlQWxs
RGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsKIFN0cmluZyBob21lRGlyZWN0b3J5UGF0
aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5
c3RlbUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZpbGVT
eXN0ZW1DaHJvbWl1bS5jcHAKaW5kZXggYzFhYmJiZC4uNDJmMDViZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogCisjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3VwcG9ydC5oIgpAQCAtNTcsNiArNTgsMTkgQEAgYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgcmVzdWx0KQogICAgIHJldHVybiBQbGF0Zm9y
bVN1cHBvcnQ6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgsIHJlc3VsdCk7CiB9CiAKK2Jv
b2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU1ldGFkYXRhJiByZXN1
bHQpCit7CisgICAgLy8gRklYTUU6IENhbGwgUGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxlTWV0YWRh
dGEgb25jZSBpdCBpcyBpbXBsZW1lbnRlZC4KKyAgICAvLyByZXR1cm4gUGxhdGZvcm1TdXBwb3J0
OjpnZXRGaWxlTWV0YWRhdGEocGF0aCwgcmVzdWx0KTsKKyAgICBpZiAoIVBsYXRmb3JtU3VwcG9y
dDo6Z2V0RmlsZVNpemUocGF0aCwgcmVzdWx0Lmxlbmd0aCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKKyAgICBpZiAoIVBsYXRmb3JtU3VwcG9y
dDo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXN1bHQubW9kaWZpY2F0aW9uVGltZSA9IG1vZGlmaWNh
dGlvblRpbWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgcmV2ZWFsRm9sZGVySW5PUyhj
b25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgUGxhdGZvcm1TdXBwb3J0OjpyZXZlYWxGb2xkZXJJ
bk9TKHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0
Zm9ybVN1cHBvcnQuaAppbmRleCBiZDI1MzMyLi41ZTIyNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaApAQCAtMTI4LDYgKzEy
OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25z
dCBTdHJpbmcmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmLCBs
b25nIGxvbmcmIHJlc3VsdCk7CiAgICAgc3RhdGljIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRp
bWUoY29uc3QgU3RyaW5nJiwgdGltZV90JiByZXN1bHQpOworICAgIHN0YXRpYyBib29sIGdldEZp
bGVNZXRhZGF0YShjb25zdCBTdHJpbmcmLCBGaWxlTWV0YWRhdGEmIHJlc3VsdCk7CiAgICAgc3Rh
dGljIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgc3RhdGlj
IFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIGNvbXBvbmVudCk7CiAgICAgc3RhdGljIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVz
KGNvbnN0IFN0cmluZyYgcGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmls
ZVN5c3RlbUd0ay5jcHAKaW5kZXggYTNiNDQ4ZC4uNDIzNWRjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcApAQCAtMjMsMTQgKzIzLDE1IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogCi0jaW5jbHVkZSA8
d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiVVVJRC5oIgogI2luY2x1ZGUgPGdpby9n
aW8uaD4KICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KLSNpbmNs
dWRlIDx3dGYvZ29iamVjdC9HbGliVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HbGliVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNDEsNiArMTQyLDI0IEBAIGJvb2wgZ2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIG1vZGlmaWVkVGlt
ZSkKIAogfQogCitib29sIGdldEZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVN
ZXRhZGF0YSYgbWV0YWRhdGEpCit7CisgICAgQ1N0cmluZyBmaWxlbmFtZSA9IGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBpZiAoZmlsZW5hbWUuaXNOdWxsKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHN0cnVjdCBzdGF0IHN0YXRSZXN1bHQ7CisgICAgZ2ludCBy
ZXN1bHQgPSBnX3N0YXQoZmlsZW5hbWUuZGF0YSgpLCAmc3RhdFJlc3VsdCk7CisgICAgaWYgKHJl
c3VsdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbWV0YWRhdGEubW9kaWZpY2F0aW9u
VGltZSA9IHN0YXRSZXN1bHQuc3RfbXRpbWU7CisgICAgbWV0YWRhdGEubGVuZ3RoID0gc3RhdFJl
c3VsdC5zdF9zaXplOworICAgIG1ldGFkYXRhLnR5cGUgPSBTX0lTRElSKHN0YXRSZXN1bHQuc3Rf
bW9kZSkgPyBGaWxlTWV0YWRhdGE6OlR5cGVEaXJlY3RvcnkgOiBGaWxlTWV0YWRhdGE6OlR5cGVG
aWxlOworICAgIHJldHVybiB0cnVlOworCit9CisKIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKIHsKICAg
ICBpZiAocGF0aC5lbmRzV2l0aChHX0RJUl9TRVBBUkFUT1JfUykpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAppbmRleCBmZGE4MTI2Li45
OGRhZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lz
dGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0
ZW1QT1NJWC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJGaWxlU3lzdGVtLmgiCiAKKyNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPGRpcmVudC5oPgogI2luY2x1ZGUgPGVycm5v
Lmg+CkBAIC0xODEsNiArMTgyLDIzIEBAIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29u
c3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHJlc3VsdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
Ym9vbCBnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlTWV0YWRhdGEmIHJl
c3VsdCkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpOworCisgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOworICAg
IGlmIChzdGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUgPSBmaWxlSW5mby5zdF9tdGltZTsKKyAg
ICByZXN1bHQubGVuZ3RoID0gZmlsZUluZm8uc3Rfc2l6ZTsKKyAgICByZXN1bHQudHlwZSA9IFNf
SVNESVIoZmlsZUluZm8uc3RfbW9kZSkgPyBGaWxlTWV0YWRhdGE6OlR5cGVEaXJlY3RvcnkgOiBG
aWxlTWV0YWRhdGE6OlR5cGVGaWxlOworICAgIHJldHVybiB0cnVlOworfQorCiBTdHJpbmcgcGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBj
b21wb25lbnQpCiB7CiAgICAgaWYgKHBhdGguZW5kc1dpdGgoJy8nKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwCmluZGV4IDMyNjQ0ZDEuLjMzOWZkNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAor
I2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAj
aW5jbHVkZSA8UURhdGVUaW1lPgogI2luY2x1ZGUgPFFEaXI+CkBAIC03Myw2ICs3NCwxNSBAQCBi
b29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiBy
ZXN1bHQpCiAgICAgcmV0dXJuIGluZm8uZXhpc3RzKCk7CiB9CiAKK2Jvb2wgZ2V0RmlsZU1ldGFk
YXRhKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU1ldGFkYXRhJiByZXN1bHQpCit7CisgICAgUUZp
bGVJbmZvIGluZm8ocGF0aCk7CisgICAgcmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUgPSBpbmZvLmxh
c3RNb2RpZmllZCgpLnRvVGltZV90KCk7CisgICAgcmVzdWx0Lmxlbmd0aCA9IGluZm8uc2l6ZSgp
OworICAgIHJlc3VsdC50eXBlID0gaW5mby5pc0RpcigpID8gRmlsZU1ldGFkYXRhOjpUeXBlRGly
ZWN0b3J5IDogRmlsZU1ldGFkYXRhOjpUeXBlRmlsZTsKKyAgICByZXR1cm4gaW5mby5leGlzdHMo
KTsKK30KKwogYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewog
ICAgIHJldHVybiBRRGlyOjpyb290KCkubWtwYXRoKHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDRjZTUxODcuLjU4MmEyZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgi
CiAKKyNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgogI2luY2x1ZGUgIlBhdGhXYWxrZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2Fs
bHlSYW5kb21OdW1iZXIuaD4KQEAgLTU0LDEyICs1NSw4IEBAIHN0YXRpYyBib29sIGdldEZpbmRE
YXRhKFN0cmluZyBwYXRoLCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9u
ZyYgcmVzdWx0KQorc3RhdGljIGJvb2wgZ2V0RmlsZVNpemVGcm9tRmluZERhdGEoY29uc3QgV0lO
MzJfRklORF9EQVRBVyYgZmluZERhdGEsIGxvbmcgbG9uZyYgcmVzdWx0KQogewotICAgIFdJTjMy
X0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0
YSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVTaXpl
OwogICAgIGZpbGVTaXplLkhpZ2hQYXJ0ID0gZmluZERhdGEubkZpbGVTaXplSGlnaDsKICAgICBm
aWxlU2l6ZS5Mb3dQYXJ0ID0gZmluZERhdGEubkZpbGVTaXplTG93OwpAQCAtNzEsMTggKzY4LDUx
IEBAIGJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJlc3Vs
dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlv
blRpbWVGcm9tRmluZERhdGEoY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEsIHRpbWVf
dCYgcmVzdWx0KQoreworICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVTaXplOworICAgIGZpbGVUaW1l
LkhpZ2hQYXJ0ID0gZmluZERhdGEuZnRMYXN0V3JpdGVUaW1lLmR3SGlnaERhdGVUaW1lOworICAg
IGZpbGVUaW1lLkxvd1BhcnQgPSBmaW5kRGF0YS5mdExhc3RXcml0ZVRpbWUuZHdMb3dEYXRlVGlt
ZTsKKworICAgIC8vIEluZm9ybWF0aW9uIGFib3V0IGNvbnZlcnRpbmcgdGltZV90IHRvIEZpbGVU
aW1lIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJh
cnkvbXM3MjQyMjglMjh2PXZzLjg1JTI5LmFzcHgKKyAgICByZXN1bHQgPSBmaWxlVGltZS5RdWFk
UGFydCAvIDEwMDAwMDAwIC0ga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0OworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBs
b25nJiByZXN1bHQpCit7CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICBpZiAo
IWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgcmV0dXJuIGdldEZpbGVTaXplRnJvbUZpbmREYXRhKGZpbmREYXRhLCByZXN1bHQpOworfQor
CiBib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90
JiByZXN1bHQpCiB7CiAgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKICAgICBpZiAoIWdl
dEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
VUxBUkdFX0lOVEVHRVIgZmlsZVNpemU7Ci0gICAgZmlsZVNpemUuSGlnaFBhcnQgPSBmaW5kRGF0
YS5mdExhc3RXcml0ZVRpbWUuZHdIaWdoRGF0ZVRpbWU7Ci0gICAgZmlsZVNpemUuTG93UGFydCA9
IGZpbmREYXRhLmZ0TGFzdFdyaXRlVGltZS5kd0xvd0RhdGVUaW1lOworICAgIHJldHVybiBnZXRG
aWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgcmVzdWx0KTsKK30KKwor
Ym9vbCBnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlTWV0YWRhdGEmIHJl
c3VsdCkKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOworICAgIGlmICghZ2V0Rmlu
ZERhdGEocGF0aCwgZmluZERhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
IWdldEZpbGVTaXplRnJvbUZpbmREYXRhKGZpbmREYXRhLCByZXN1bHQubGVuZ3RoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7CisgICAgaWYg
KCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgbW9kaWZpY2F0
aW9uVGltZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXN1bHQubW9kaWZpY2F0aW9u
VGltZSA9IG1vZGlmaWNhdGlvblRpbWU7CisKKyAgICByZXN1bHQudHlwZSA9IChhdHRyLmR3Rmls
ZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpID8gRmlsZU1ldGFkYXRhOjpU
eXBlRGlyZWN0b3J5IDogRmlsZU1ldGFkYXRhOjpUeXBlRmlsZTsKIAotICAgIC8vIEluZm9ybWF0
aW9uIGFib3V0IGNvbnZlcnRpbmcgdGltZV90IHRvIEZpbGVUaW1lIGlzIGF2YWlsYWJsZSBhdCBo
dHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM3MjQyMjglMjh2PXZzLjg1
JTI5LmFzcHgKLSAgICByZXN1bHQgPSBmaWxlU2l6ZS5RdWFkUGFydCAvIDEwMDAwMDAwIC0ga1Nl
Y29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9GaWxlU3lzdGVtV2luQ0UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRmlsZVN5c3RlbVdpbkNFLmNwcAppbmRleCA0
YzdhMWRmLi45ZGJhYTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5j
ZS9GaWxlU3lzdGVtV2luQ0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNl
L0ZpbGVTeXN0ZW1XaW5DRS5jcHAKQEAgLTY4LDMxICs2OCw1NCBAQCBzdGF0aWMgYm9vbCBnZXRG
aWxlSW5mbyhjb25zdCBTdHJpbmcmIHBhdGgsIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OJiBm
aWxlSW5mbwogICAgIHJldHVybiBydG47CiB9CiAKK3N0YXRpYyB2b2lkIGdldEZpbGVTaXplRnJv
bUZpbGVJbmZvKGNvbnN0IEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OJiBmaWxlSW5mbywgbG9u
ZyBsb25nJiByZXN1bHQpCit7CisgICAgVUxBUkdFX0lOVEVHRVIgZmlsZVNpemU7CisgICAgZmls
ZVNpemUuTG93UGFydCA9IGZpbGVJbmZvLm5GaWxlU2l6ZUxvdzsKKyAgICBmaWxlU2l6ZS5IaWdo
UGFydCA9IGZpbGVJbmZvLm5GaWxlU2l6ZUhpZ2g7CisgICAgcmVzdWx0ID0gZmlsZVNpemUuUXVh
ZFBhcnQ7Cit9CisKK3N0YXRpYyB2b2lkIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbGVJ
bmZvKGNvbnN0IEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OJiBmaWxlSW5mbywgdGltZV90JiBy
ZXN1bHQpCit7CisgICAgVUxBUkdFX0lOVEVHRVIgdDsKKyAgICBtZW1jcHkoJnQsICZmaWxlSW5m
by5mdExhc3RXcml0ZVRpbWUsIHNpemVvZih0KSk7CisgICAgcmVzdWx0ID0gdC5RdWFkUGFydCAq
IDAuMDAwMDAwMSAtIDExNjQ0NDczNjAwLjA7Cit9CisKIGJvb2wgZ2V0RmlsZVNpemUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdCkKIHsKICAgICBCWV9IQU5ETEVfRklMRV9J
TkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb247CiAgICAgaWYgKCFnZXRGaWxlSW5mbyhwYXRoLCBm
aWxlSW5mb3JtYXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBVTEFSR0VfSU5U
RUdFUiBmaWxlU2l6ZTsKLSAgICBmaWxlU2l6ZS5Mb3dQYXJ0ID0gZmlsZUluZm9ybWF0aW9uLm5G
aWxlU2l6ZUxvdzsKLSAgICBmaWxlU2l6ZS5IaWdoUGFydCA9IGZpbGVJbmZvcm1hdGlvbi5uRmls
ZVNpemVIaWdoOworICAgIGdldEZpbGVTaXplRnJvbUZpbGVJbmZvKGZpbGVJbmZvcm1hdGlvbiwg
cmVzdWx0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KIAotICAgIHJlc3VsdCA9IGZpbGVTaXplLlF1
YWRQYXJ0OworYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgs
IHRpbWVfdCYgcmVzdWx0KQoreworICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGZpbGVJ
bmZvcm1hdGlvbjsKKyAgICBpZiAoIWdldEZpbGVJbmZvKHBhdGgsIGZpbGVJbmZvcm1hdGlvbikp
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJv
bUZpbGVJbmZvKGZpbGVJbmZvcm1hdGlvbiwgcmVzdWx0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVf
dCYgcmVzdWx0KQorYm9vbCBnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxl
TWV0YWRhdGEmIHJlc3VsdCkKIHsKICAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBmaWxl
SW5mb3JtYXRpb247CiAgICAgaWYgKCFnZXRGaWxlSW5mbyhwYXRoLCBmaWxlSW5mb3JtYXRpb24p
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBVTEFSR0VfSU5URUdFUiB0OwotICAgIG1l
bWNweSgmdCwgJmZpbGVJbmZvcm1hdGlvbi5mdExhc3RXcml0ZVRpbWUsIHNpemVvZih0KSk7Ci0g
ICAgCi0gICAgcmVzdWx0ID0gdC5RdWFkUGFydCAqIDAuMDAwMDAwMSAtIDExNjQ0NDczNjAwLjA7
CisgICAgZ2V0RmlsZVNpemVGcm9tRmlsZUluZm8oZmlsZUluZm9ybWF0aW9uLCByZXN1bHQubGVu
Z3RoKTsKKworICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOworICAgIGdldEZpbGVNb2RpZmlj
YXRpb25UaW1lRnJvbUZpbGVJbmZvKGZpbGVJbmZvcm1hdGlvbiwgbW9kaWZpY2F0aW9uVGltZSk7
CisgICAgcmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUgPSBtb2RpZmljYXRpb25UaW1lOworCisgICAg
cmVzdWx0LnR5cGUgPSAoZmlsZUluZm9ybWF0aW9uLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FU
VFJJQlVURV9ESVJFQ1RPUlkpID8gRmlsZU1ldGFkYXRhOjpUeXBlRGlyZWN0b3J5IDogRmlsZU1l
dGFkYXRhOjpUeXBlRmlsZTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3d4L0ZpbGVTeXN0ZW1XeC5jcHAKaW5kZXggYmJlYzlmZS4uOGU5MGM0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9GaWxlU3lzdGVtV3guY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogCisj
aW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSA8d3gvd3guaD4KICNpbmNsdWRlIDx3
eC9kYXRldGltZS5oPgogI2luY2x1ZGUgPHd4L2Rpci5oPgpAQCAtODUsNiArODYsMTcgQEAgYm9v
bCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgdCkK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgRmlsZU1ldGFkYXRhJiB0KQoreworICAgIGlmICghd3hGaWxlRXhpc3RzKHBhdGgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgd3hGaWxlTmFtZSBmaWxlTmFtZShwYXRoKTsK
KyAgICB0Lmxlbmd0aCA9IGZpbGVOYW1lLkdldFNpemUoKTsKKyAgICB0Lm1vZGlmaWNhdGlvblRp
bWUgPSBmaWxlTmFtZS5HZXRNb2RpZmljYXRpb25UaW1lKCkuR2V0VGlja3MoKTsKKyAgICB0LnR5
cGUgPSBmaWxlTmFtZS5Jc0RpcigpID8gRmlsZU1ldGFkYXRhOjpUeXBlRGlyZWN0b3J5IDogRmls
ZU1ldGFkYXRhOjpUeXBlRmlsZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBtYWtlQWxs
RGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHJldHVybiB3eEZpbGVOYW1l
OjpNa2RpcihwYXRoLCAwNzc3LCB3eFBBVEhfTUtESVJfRlVMTCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IGQ1NDdkNjguLjJlYjE3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDUtMjEgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIENsZWFudXA6IGFkZCBhIGZpbGUgc3lzdGVtIGNhbGwgd2hp
Y2ggY2FwdHVyZXMgdGhlIGZpbGUgbWV0YWRhdGEgYXQgb25jZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2OTk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6Z2V0RmlsZU1ldGFkYXRhKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA1LTIxICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZp
ZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiAgUm9sbGVkIERFUFMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAppbmRleCBi
YmQwN2NhLi5kNmVjMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Q
bGF0Zm9ybVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRm
b3JtU3VwcG9ydC5jcHAKQEAgLTM1LDcgKzM1LDkgQEAKIAogI2luY2x1ZGUgIkNocm9tZS5oIgog
I2luY2x1ZGUgIkNocm9tZUNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiV2ViRmlsZUluZm8uaCIKICNpbmNsdWRlICJX
ZWJGaWxlVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRl
ICJXZWJGcmFtZUltcGwuaCIKQEAgLTMzMyw2ICszMzUsMTcgQEAgYm9vbCBQbGF0Zm9ybVN1cHBv
cnQ6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiBy
ZXN1bHQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZp
bGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVNZXRhZGF0YSYgcmVzdWx0KQorewor
ICAgIFdlYkZpbGVJbmZvIHdlYkZpbGVJbmZvOworICAgIGlmICghd2ViS2l0UGxhdGZvcm1TdXBw
b3J0KCktPmZpbGVVdGlsaXRpZXMoKS0+Z2V0RmlsZUluZm8ocGF0aCwgd2ViRmlsZUluZm8pKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUgPSB3ZWJG
aWxlSW5mby5tb2RpZmljYXRpb25UaW1lOworICAgIHJlc3VsdC5sZW5ndGggPSB3ZWJGaWxlSW5m
by5sZW5ndGg7CisgICAgcmVzdWx0LnR5cGUgPSBzdGF0aWNfY2FzdDxGaWxlTWV0YWRhdGE6OlR5
cGU+KHdlYkZpbGVJbmZvLnR5cGUpOworICAgIHJldHVybiB0cnVlOworfQorCiBTdHJpbmcgUGxh
dGZvcm1TdXBwb3J0OjpkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBy
ZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPmRpcmVj
dG9yeU5hbWUocGF0aCk7Cg==
</data>
<flag name="commit-queue"
          id="149437"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142989</attachid>
            <date>2012-05-21 04:06:42 -0700</date>
            <delta_ts>2012-05-21 05:05:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>t</filename>
            <type>text/plain</type>
            <size>20518</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">Y29tbWl0IGI0ZjcwNDZiM2M4ZjIzY2M5ZGQxMDVkNGQ0MzBkNWY5OGU1M2E0NTYKQXV0aG9yOiBL
aW51a28gWWFzdWRhIDxraW51a29AY2hyb21pdW0ub3JnPgpEYXRlOiAgIE1vbiBNYXkgMjEgMTY6
MDk6MjYgMjAxMiArMDkwMAoKICAgIGFkZGluZyBHZXRGaWxlSW5mbwoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cgYi9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCmluZGV4
IDZkMTA0OTguLmI1YTZhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA1
LTIxICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBDbGVh
bnVwOiBhZGQgYSBmaWxlIHN5c3RlbSBjYWxsIHdoaWNoIGNhcHR1cmVzIHRoZSBmaWxlIG1ldGFk
YXRhIGF0IG9uY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04Njk5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogY2hyb21pdW0vcHVibGljL1dlYkZpbGVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVVdGlsaXRpZXM6OmdldEZpbGVJbmZvKTogQWRk
ZWQuCisKIDIwMTItMDUtMTcgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtDaHJvbWl1bV0gTW92ZSBXZWIgV29ya2VycyBtZXRob2RzIHRvIFBsYXRmb3Jt
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVV0
aWxpdGllcy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlVXRpbGl0
aWVzLmgKaW5kZXggNjdkYzRhOC4uN2ZhNGUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmgKQEAgLTQxLDYgKzQxLDggQEAgdHlw
ZWRlZiB2b2lkICpIQU5ETEU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdHJ1Y3QgV2ViRmls
ZUluZm87CisKIGNsYXNzIFdlYkZpbGVVdGlsaXRpZXMgewogcHVibGljOgogI2lmZGVmIFdJTjMy
CkBAIC01NCw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRW1wdHlE
aXJlY3RvcnkoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYg
cmVzdWx0KSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBnZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGRvdWJsZSYgcmVzdWx0KSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRGaWxlSW5mbyhjb25zdCBXZWJTdHJpbmcm
IHBhdGgsIFdlYkZpbGVJbmZvJiByZXN1bHQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBXZWJTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBXZWJTdHJpbmcmIHBhdGgpICB7IHJldHVy
biBXZWJTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgV2ViU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGNvbnN0IFdlYlN0cmluZyYgY29tcG9uZW50
KSAgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgbWFrZUFsbERpcmVj
dG9yaWVzKGNvbnN0IFdlYlN0cmluZyYgcGF0aCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAwYzZhMjYzLi43ZGFiOTc0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAx
Mi0wNS0yMSAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
Q2xlYW51cDogYWRkIGEgZmlsZSBzeXN0ZW0gY2FsbCB3aGljaCBjYXB0dXJlcyB0aGUgZmlsZSBt
ZXRhZGF0YSBhdCBvbmNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDdXJyZW50IEZpbGUuc2xpY2UoKSAod2Via2l0U2xpY2UoKSkgaW1wbGVtZW50YXRp
b24gY2FsbHMgdHdvIHNlcGFyYXRlIHBsYXRmb3JtIGNhbGxzLAorICAgICAgICBnZXRGaWxlU2l6
ZSgpIGFuZCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIFtib3RoIGFyZSBkZWZpbmVkIGluIHBs
YXRmb3JtL0ZpbGVTeXN0ZW0uaF0sCisgICAgICAgIHRvIGNhcHR1cmUgdGhlIGZpbGUgbWV0YWRh
dGEsIGJ1dCB3ZSBzaG91bGQgaGF2ZSBhIHNpbmdsZSBmaWxlIHN5c3RlbSBjYWxsIHRvIGdldCB0
aGVtIGF0IG9uY2UKKyAgICAgICAgZm9yIHR3byByZWFzb25zOiAxLiBzYXZlIGFkZGl0aW9uYWwg
c3lzdGVtIGNhbGwgY29zdHMsIGFuZCAyLiAgYXRvbWljYWxseSBvYnRhaW4gdGhlIGZpbGUgbWV0
YWRhdGEuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiBleGlzdGluZyB0ZXN0cyAoaHR0cC90ZXN0
cy9sb2NhbC9maWxlYXBpLyogYW5kIGZhc3QvZmlsZXMvKikgc2hvdWxkIHBhc3MuCisKKyAgICAg
ICAgKiBmaWxlYXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y2FwdHVyZVNu
YXBzaG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5
c3RlbUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVNZXRhZGF0YSk6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oOgorICAg
ICAgICAoUGxhdGZvcm1TdXBwb3J0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRmlsZVN5c3Rl
bUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTWV0YWRhdGEpOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0RmlsZU1ldGFkYXRhKTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvRmls
ZVN5c3RlbVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVNZXRhZGF0YSk6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmdldEZpbGVTaXplRnJvbUZpbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEZp
bGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEZp
bGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OmdldEZpbGVNZXRhZGF0YSk6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL3dpbmNlL0ZpbGVTeXN0ZW1XaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxl
U2l6ZUZyb21GaWxlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZUZyb21GaWxlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlU2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpnZXRGaWxlTWV0YWRhdGEpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93eC9GaWxlU3lz
dGVtV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZU1ldGFkYXRhKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wNS0yMSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlz
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBleHBhbmQgb25seSBuZWln
aGJvcnMgb2YgdGhlIGhpZ2hsaWdodGVkIG5vZGUgd2hlbiByZXZlYWxpbmcgaXQgaW4gaGVhcCBz
bmFwc2hvdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXggZjJhZmEzNC4uMDk4MDg0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC0xNjksMTMgKzE2OSwxNSBAQCB2b2lkIEZpbGU6OmNh
cHR1cmVTbmFwc2hvdChsb25nIGxvbmcmIHNuYXBzaG90U2l6ZSwgZG91YmxlJiBzbmFwc2hvdE1v
ZGlmaWNhdGlvbgogCiAgICAgLy8gT2J0YWlucyBhIHNuYXBzaG90IG9mIHRoZSBmaWxlIGJ5IGNh
cHR1cmluZyBpdHMgY3VycmVudCBzaXplIGFuZCBtb2RpZmljYXRpb24gdGltZS4gVGhpcyBpcyB1
c2VkIHdoZW4gd2Ugc2xpY2UgYSBmaWxlIGZvciB0aGUgZmlyc3QgdGltZS4KICAgICAvLyBJZiB3
ZSBmYWlsIHRvIHJldHJpZXZlIHRoZSBzaXplIG9yIG1vZGlmaWNhdGlvbiB0aW1lLCBwcm9iYWJs
eSBkdWUgdG8gdGhhdCB0aGUgZmlsZSBoYXMgYmVlbiBkZWxldGVkLCAwIHNpemUgaXMgcmV0dXJu
ZWQuCi0gICAgLy8gRklYTUU6IENvbWJpbmUgZ2V0RmlsZVNpemUgYW5kIGdldEZpbGVNb2RpZmlj
YXRpb25UaW1lIGludG8gb25lIGZpbGUgc3lzdGVtIGNhbGwuCi0gICAgdGltZV90IG1vZGlmaWNh
dGlvblRpbWU7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZShtX3BhdGgsIHNuYXBzaG90U2l6ZSkgfHwg
IWdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1fcGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpIHsKKyAg
ICBGaWxlTWV0YWRhdGEgbWV0YWRhdGE7CisgICAgaWYgKCFnZXRGaWxlTWV0YWRhdGEobV9wYXRo
LCBtZXRhZGF0YSkpIHsKICAgICAgICAgc25hcHNob3RTaXplID0gMDsKICAgICAgICAgc25hcHNo
b3RNb2RpZmljYXRpb25UaW1lID0gMDsKLSAgICB9IGVsc2UKLSAgICAgICAgc25hcHNob3RNb2Rp
ZmljYXRpb25UaW1lID0gbW9kaWZpY2F0aW9uVGltZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHNuYXBzaG90U2l6ZSA9IG1ldGFkYXRhLmxlbmd0aDsKKyAgICBzbmFwc2hvdE1vZGlm
aWNhdGlvblRpbWUgPSBtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0
YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oCmluZGV4IDk5
ZmUyZjMuLmVjMjgxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVN
ZXRhZGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oCkBA
IC0zMyw4ICszMyw2IEBACiAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lm
IEVOQUJMRShGSUxFX1NZU1RFTSkKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRmls
ZU1ldGFkYXRhIHsKQEAgLTU0LDEzICs1MiwxMyBAQCBzdHJ1Y3QgRmlsZU1ldGFkYXRhIHsKIAog
ICAgIFR5cGUgdHlwZTsKIAorI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICBTdHJpbmcgcGxh
dGZvcm1QYXRoOworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKIAogICAgIEZpbGVNZXRh
ZGF0YSgpIDogbW9kaWZpY2F0aW9uVGltZSgwLjApLCBsZW5ndGgoLTEpLCB0eXBlKFR5cGVVbmtu
b3duKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJM
RShGSUxFX1NZU1RFTSkKLQogI2VuZGlmIC8vIEZpbGVNZXRhZGF0YV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3lzdGVtLmgKaW5kZXggYTIwMmZhMC4uYzE2YTU2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTeXN0ZW0uaApAQCAtMTUxLDEyICsxNTEsMTUgQEAgc3RhdGljIGNvbnN0IGNo
YXIgUGxhdGZvcm1GaWxlUGF0aFNlcGFyYXRvciA9ICdcXCc7CiBzdGF0aWMgY29uc3QgY2hhciBQ
bGF0Zm9ybUZpbGVQYXRoU2VwYXJhdG9yID0gJy8nOwogI2VuZGlmCiAKK3N0cnVjdCBGaWxlTWV0
YWRhdGE7CisKIHZvaWQgcmV2ZWFsRm9sZGVySW5PUyhjb25zdCBTdHJpbmcmKTsKIGJvb2wgZmls
ZUV4aXN0cyhjb25zdCBTdHJpbmcmKTsKIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsK
IGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiBib29sIGdldEZpbGVT
aXplKGNvbnN0IFN0cmluZyYsIGxvbmcgbG9uZyYgcmVzdWx0KTsKIGJvb2wgZ2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiwgdGltZV90JiByZXN1bHQpOworYm9vbCBnZXRGaWxl
TWV0YWRhdGEoY29uc3QgU3RyaW5nJiwgRmlsZU1ldGFkYXRhJik7CiBTdHJpbmcgcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25l
bnQpOwogYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsKIFN0cmlu
ZyBob21lRGlyZWN0b3J5UGF0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKaW5kZXggYzFhYmJiZC4uNDJmMDVi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3Rl
bUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxl
U3lzdGVtQ2hyb21pdW0uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogCisjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgpAQCAtNTcsNiArNTgsMTkgQEAgYm9vbCBnZXRG
aWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgcmVzdWx0KQog
ICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgs
IHJlc3VsdCk7CiB9CiAKK2Jvb2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwg
RmlsZU1ldGFkYXRhJiByZXN1bHQpCit7CisgICAgLy8gRklYTUU6IENhbGwgUGxhdGZvcm1TdXBw
b3J0OjpnZXRGaWxlTWV0YWRhdGEgb25jZSBpdCBpcyBpbXBsZW1lbnRlZC4KKyAgICAvLyByZXR1
cm4gUGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxlTWV0YWRhdGEocGF0aCwgcmVzdWx0KTsKKyAgICBp
ZiAoIVBsYXRmb3JtU3VwcG9ydDo6Z2V0RmlsZVNpemUocGF0aCwgcmVzdWx0Lmxlbmd0aCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKKyAgICBp
ZiAoIVBsYXRmb3JtU3VwcG9ydDo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbW9kaWZp
Y2F0aW9uVGltZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXN1bHQubW9kaWZpY2F0
aW9uVGltZSA9IG1vZGlmaWNhdGlvblRpbWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQg
cmV2ZWFsRm9sZGVySW5PUyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgUGxhdGZvcm1TdXBw
b3J0OjpyZXZlYWxGb2xkZXJJbk9TKHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAppbmRleCBiZDI1MzMyLi41ZTIyNTE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBv
cnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBv
cnQuaApAQCAtMTI4LDYgKzEyOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBkZWxldGVF
bXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRGaWxlU2l6
ZShjb25zdCBTdHJpbmcmLCBsb25nIGxvbmcmIHJlc3VsdCk7CiAgICAgc3RhdGljIGJvb2wgZ2V0
RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiwgdGltZV90JiByZXN1bHQpOworICAg
IHN0YXRpYyBib29sIGdldEZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmLCBGaWxlTWV0YWRhdGEm
IHJlc3VsdCk7CiAgICAgc3RhdGljIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYg
cGF0aCk7CiAgICAgc3RhdGljIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCk7CiAgICAgc3RhdGljIGJvb2wg
bWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAKaW5kZXggYTNiNDQ4ZC4uNDIzNWRjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcApAQCAt
MjMsMTQgKzIzLDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgogCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgIkZpbGVN
ZXRhZGF0YS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiVVVJRC5o
IgogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8Z2xp
Yi9nc3RkaW8uaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HbGliVXRpbGl0aWVzLmg+CisjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HbGliVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNDEsNiArMTQy
LDI0IEBAIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0
aW1lX3QmIG1vZGlmaWVkVGltZSkKIAogfQogCitib29sIGdldEZpbGVNZXRhZGF0YShjb25zdCBT
dHJpbmcmIHBhdGgsIEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCit7CisgICAgQ1N0cmluZyBmaWxl
bmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBpZiAoZmlsZW5hbWUu
aXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0cnVjdCBzdGF0IHN0YXRS
ZXN1bHQ7CisgICAgZ2ludCByZXN1bHQgPSBnX3N0YXQoZmlsZW5hbWUuZGF0YSgpLCAmc3RhdFJl
c3VsdCk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbWV0
YWRhdGEubW9kaWZpY2F0aW9uVGltZSA9IHN0YXRSZXN1bHQuc3RfbXRpbWU7CisgICAgbWV0YWRh
dGEubGVuZ3RoID0gc3RhdFJlc3VsdC5zdF9zaXplOworICAgIG1ldGFkYXRhLnR5cGUgPSBTX0lT
RElSKHN0YXRSZXN1bHQuc3RfbW9kZSkgPyBGaWxlTWV0YWRhdGE6OlR5cGVEaXJlY3RvcnkgOiBG
aWxlTWV0YWRhdGE6OlR5cGVGaWxlOworICAgIHJldHVybiB0cnVlOworCit9CisKIFN0cmluZyBw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IGNvbXBvbmVudCkKIHsKICAgICBpZiAocGF0aC5lbmRzV2l0aChHX0RJUl9TRVBBUkFUT1JfUykp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9T
SVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNw
cAppbmRleCBmZGE4MTI2Li45OGRhZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAKKyNpbmNsdWRlICJGaWxlTWV0
YWRhdGEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPGRpcmVudC5o
PgogI2luY2x1ZGUgPGVycm5vLmg+CkBAIC0xODEsNiArMTgyLDIzIEBAIGJvb2wgZ2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHJlc3VsdCkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRo
LCBGaWxlTWV0YWRhdGEmIHJlc3VsdCkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAu
ZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0cnVjdCBz
dGF0IGZpbGVJbmZvOworICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUgPSBmaWxl
SW5mby5zdF9tdGltZTsKKyAgICByZXN1bHQubGVuZ3RoID0gZmlsZUluZm8uc3Rfc2l6ZTsKKyAg
ICByZXN1bHQudHlwZSA9IFNfSVNESVIoZmlsZUluZm8uc3RfbW9kZSkgPyBGaWxlTWV0YWRhdGE6
OlR5cGVEaXJlY3RvcnkgOiBGaWxlTWV0YWRhdGE6OlR5cGVGaWxlOworICAgIHJldHVybiB0cnVl
OworfQorCiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiB7CiAgICAgaWYgKHBhdGguZW5kc1dpdGgoJy8n
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwCmluZGV4IDMy
NjQ0ZDEuLjMzOWZkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Zp
bGVTeXN0ZW1RdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvRmlsZVN5c3Rl
bVF0LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKIAorI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8UURhdGVUaW1lPgogI2luY2x1ZGUgPFFEaXI+CkBA
IC03Myw2ICs3NCwxNSBAQCBib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCiAgICAgcmV0dXJuIGluZm8uZXhpc3RzKCk7CiB9CiAK
K2Jvb2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU1ldGFkYXRhJiBy
ZXN1bHQpCit7CisgICAgUUZpbGVJbmZvIGluZm8ocGF0aCk7CisgICAgcmVzdWx0Lm1vZGlmaWNh
dGlvblRpbWUgPSBpbmZvLmxhc3RNb2RpZmllZCgpLnRvVGltZV90KCk7CisgICAgcmVzdWx0Lmxl
bmd0aCA9IGluZm8uc2l6ZSgpOworICAgIHJlc3VsdC50eXBlID0gaW5mby5pc0RpcigpID8gRmls
ZU1ldGFkYXRhOjpUeXBlRGlyZWN0b3J5IDogRmlsZU1ldGFkYXRhOjpUeXBlRmlsZTsKKyAgICBy
ZXR1cm4gaW5mby5leGlzdHMoKTsKK30KKwogYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3Qg
U3RyaW5nJiBwYXRoKQogewogICAgIHJldHVybiBRRGlyOjpyb290KCkubWtwYXRoKHBhdGgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDRj
ZTUxODcuLjU4MmEyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9G
aWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJGaWxlU3lzdGVtLmgiCiAKKyNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKICNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhdGhXYWxrZXIuaCIKICNpbmNsdWRlIDx3
dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KQEAgLTU0LDEyICs1NSw4IEBAIHN0
YXRpYyBib29sIGdldEZpbmREYXRhKFN0cmluZyBwYXRoLCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5k
RGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJp
bmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0KQorc3RhdGljIGJvb2wgZ2V0RmlsZVNpemVGcm9t
RmluZERhdGEoY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEsIGxvbmcgbG9uZyYgcmVz
dWx0KQogewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5k
RGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIFVMQVJH
RV9JTlRFR0VSIGZpbGVTaXplOwogICAgIGZpbGVTaXplLkhpZ2hQYXJ0ID0gZmluZERhdGEubkZp
bGVTaXplSGlnaDsKICAgICBmaWxlU2l6ZS5Mb3dQYXJ0ID0gZmluZERhdGEubkZpbGVTaXplTG93
OwpAQCAtNzEsMTggKzY4LDUxIEBAIGJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRo
LCBsb25nIGxvbmcmIHJlc3VsdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wg
Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoY29uc3QgV0lOMzJfRklORF9EQVRB
VyYgZmluZERhdGEsIHRpbWVfdCYgcmVzdWx0KQoreworICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVT
aXplOworICAgIGZpbGVUaW1lLkhpZ2hQYXJ0ID0gZmluZERhdGEuZnRMYXN0V3JpdGVUaW1lLmR3
SGlnaERhdGVUaW1lOworICAgIGZpbGVUaW1lLkxvd1BhcnQgPSBmaW5kRGF0YS5mdExhc3RXcml0
ZVRpbWUuZHdMb3dEYXRlVGltZTsKKworICAgIC8vIEluZm9ybWF0aW9uIGFib3V0IGNvbnZlcnRp
bmcgdGltZV90IHRvIEZpbGVUaW1lIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vbXNkbi5taWNyb3Nv
ZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM3MjQyMjglMjh2PXZzLjg1JTI5LmFzcHgKKyAgICByZXN1
bHQgPSBmaWxlVGltZS5RdWFkUGFydCAvIDEwMDAwMDAwIC0ga1NlY29uZHNGcm9tRmlsZVRpbWVU
b1RpbWV0OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIGdldEZpbGVTaXplKGNvbnN0IFN0
cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHQpCit7CisgICAgV0lOMzJfRklORF9EQVRBVyBm
aW5kRGF0YTsKKyAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGdldEZpbGVTaXplRnJvbUZpbmREYXRhKGZpbmRE
YXRhLCByZXN1bHQpOworfQorCiBib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0
cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCiB7CiAgICAgV0lOMzJfRklORF9EQVRBVyBmaW5k
RGF0YTsKICAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgVUxBUkdFX0lOVEVHRVIgZmlsZVNpemU7Ci0gICAgZmlsZVNpemUu
SGlnaFBhcnQgPSBmaW5kRGF0YS5mdExhc3RXcml0ZVRpbWUuZHdIaWdoRGF0ZVRpbWU7Ci0gICAg
ZmlsZVNpemUuTG93UGFydCA9IGZpbmREYXRhLmZ0TGFzdFdyaXRlVGltZS5kd0xvd0RhdGVUaW1l
OworICAgIHJldHVybiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0
YSwgcmVzdWx0KTsKK30KKworYm9vbCBnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRo
LCBGaWxlTWV0YWRhdGEmIHJlc3VsdCkKK3sKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRh
OworICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIWdldEZpbGVTaXplRnJvbUZpbmREYXRhKGZpbmREYXRhLCByZXN1
bHQubGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdGltZV90IG1vZGlmaWNh
dGlvblRpbWU7CisgICAgaWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShm
aW5kRGF0YSwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXN1bHQubW9kaWZpY2F0aW9uVGltZSA9IG1vZGlmaWNhdGlvblRpbWU7CisKKyAgICByZXN1bHQu
dHlwZSA9IChhdHRyLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkp
ID8gRmlsZU1ldGFkYXRhOjpUeXBlRGlyZWN0b3J5IDogRmlsZU1ldGFkYXRhOjpUeXBlRmlsZTsK
IAotICAgIC8vIEluZm9ybWF0aW9uIGFib3V0IGNvbnZlcnRpbmcgdGltZV90IHRvIEZpbGVUaW1l
IGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkv
bXM3MjQyMjglMjh2PXZzLjg1JTI5LmFzcHgKLSAgICByZXN1bHQgPSBmaWxlU2l6ZS5RdWFkUGFy
dCAvIDEwMDAwMDAwIC0ga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0OwogICAgIHJldHVybiB0
cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9GaWxl
U3lzdGVtV2luQ0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRmlsZVN5c3Rl
bVdpbkNFLmNwcAppbmRleCA0YzdhMWRmLi5lOTU5ZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW5jZS9GaWxlU3lzdGVtV2luQ0UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbmNlL0ZpbGVTeXN0ZW1XaW5DRS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAKKyNpbmNsdWRl
ICJGaWxlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
PHdpbmNyeXB0Lmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgpAQCAtNjgsMzEgKzY5LDU0IEBAIHN0
YXRpYyBib29sIGdldEZpbGVJbmZvKGNvbnN0IFN0cmluZyYgcGF0aCwgQllfSEFORExFX0ZJTEVf
SU5GT1JNQVRJT04mIGZpbGVJbmZvCiAgICAgcmV0dXJuIHJ0bjsKIH0KIAorc3RhdGljIHZvaWQg
Z2V0RmlsZVNpemVGcm9tRmlsZUluZm8oY29uc3QgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04m
IGZpbGVJbmZvLCBsb25nIGxvbmcmIHJlc3VsdCkKK3sKKyAgICBVTEFSR0VfSU5URUdFUiBmaWxl
U2l6ZTsKKyAgICBmaWxlU2l6ZS5Mb3dQYXJ0ID0gZmlsZUluZm8ubkZpbGVTaXplTG93OworICAg
IGZpbGVTaXplLkhpZ2hQYXJ0ID0gZmlsZUluZm8ubkZpbGVTaXplSGlnaDsKKyAgICByZXN1bHQg
PSBmaWxlU2l6ZS5RdWFkUGFydDsKK30KKworc3RhdGljIHZvaWQgZ2V0RmlsZU1vZGlmaWNhdGlv
blRpbWVGcm9tRmlsZUluZm8oY29uc3QgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04mIGZpbGVJ
bmZvLCB0aW1lX3QmIHJlc3VsdCkKK3sKKyAgICBVTEFSR0VfSU5URUdFUiB0OworICAgIG1lbWNw
eSgmdCwgJmZpbGVJbmZvLmZ0TGFzdFdyaXRlVGltZSwgc2l6ZW9mKHQpKTsKKyAgICByZXN1bHQg
PSB0LlF1YWRQYXJ0ICogMC4wMDAwMDAxIC0gMTE2NDQ0NzM2MDAuMDsKK30KKwogYm9vbCBnZXRG
aWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0KQogewogICAgIEJZ
X0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGZpbGVJbmZvcm1hdGlvbjsKICAgICBpZiAoIWdldEZp
bGVJbmZvKHBhdGgsIGZpbGVJbmZvcm1hdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVTaXplOwotICAgIGZpbGVTaXplLkxvd1BhcnQgPSBmaWxl
SW5mb3JtYXRpb24ubkZpbGVTaXplTG93OwotICAgIGZpbGVTaXplLkhpZ2hQYXJ0ID0gZmlsZUlu
Zm9ybWF0aW9uLm5GaWxlU2l6ZUhpZ2g7CisgICAgZ2V0RmlsZVNpemVGcm9tRmlsZUluZm8oZmls
ZUluZm9ybWF0aW9uLCByZXN1bHQpOworICAgIHJldHVybiB0cnVlOworfQogCi0gICAgcmVzdWx0
ID0gZmlsZVNpemUuUXVhZFBhcnQ7Citib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0
IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCit7CisgICAgQllfSEFORExFX0ZJTEVfSU5G
T1JNQVRJT04gZmlsZUluZm9ybWF0aW9uOworICAgIGlmICghZ2V0RmlsZUluZm8ocGF0aCwgZmls
ZUluZm9ybWF0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgZ2V0RmlsZU1vZGlm
aWNhdGlvblRpbWVGcm9tRmlsZUluZm8oZmlsZUluZm9ybWF0aW9uLCByZXN1bHQpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCitib29sIGdldEZpbGVNZXRhZGF0YShjb25zdCBTdHJp
bmcmIHBhdGgsIEZpbGVNZXRhZGF0YSYgcmVzdWx0KQogewogICAgIEJZX0hBTkRMRV9GSUxFX0lO
Rk9STUFUSU9OIGZpbGVJbmZvcm1hdGlvbjsKICAgICBpZiAoIWdldEZpbGVJbmZvKHBhdGgsIGZp
bGVJbmZvcm1hdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFVMQVJHRV9JTlRF
R0VSIHQ7Ci0gICAgbWVtY3B5KCZ0LCAmZmlsZUluZm9ybWF0aW9uLmZ0TGFzdFdyaXRlVGltZSwg
c2l6ZW9mKHQpKTsKLSAgICAKLSAgICByZXN1bHQgPSB0LlF1YWRQYXJ0ICogMC4wMDAwMDAxIC0g
MTE2NDQ0NzM2MDAuMDsKKyAgICBnZXRGaWxlU2l6ZUZyb21GaWxlSW5mbyhmaWxlSW5mb3JtYXRp
b24sIHJlc3VsdC5sZW5ndGgpOworCisgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7CisgICAg
Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmlsZUluZm8oZmlsZUluZm9ybWF0aW9uLCBtb2Rp
ZmljYXRpb25UaW1lKTsKKyAgICByZXN1bHQubW9kaWZpY2F0aW9uVGltZSA9IG1vZGlmaWNhdGlv
blRpbWU7CisKKyAgICByZXN1bHQudHlwZSA9IChmaWxlSW5mb3JtYXRpb24uZHdGaWxlQXR0cmli
dXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkgPyBGaWxlTWV0YWRhdGE6OlR5cGVEaXJl
Y3RvcnkgOiBGaWxlTWV0YWRhdGE6OlR5cGVGaWxlOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9GaWxlU3lzdGVtV3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNwcAppbmRleCBiYmVjOWZl
Li44ZTkwYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9GaWxlU3lz
dGVtV3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L0ZpbGVTeXN0ZW1XeC5j
cHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCiAKKyNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKICNpbmNsdWRlIDx3eC93eC5o
PgogI2luY2x1ZGUgPHd4L2RhdGV0aW1lLmg+CiAjaW5jbHVkZSA8d3gvZGlyLmg+CkBAIC04NSw2
ICs4NiwxNyBAQCBib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0
aCwgdGltZV90JiB0KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBnZXRGaWxlTWV0YWRh
dGEoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlTWV0YWRhdGEmIHQpCit7CisgICAgaWYgKCF3eEZp
bGVFeGlzdHMocGF0aCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB3eEZpbGVOYW1lIGZp
bGVOYW1lKHBhdGgpOworICAgIHQubGVuZ3RoID0gZmlsZU5hbWUuR2V0U2l6ZSgpOworICAgIHQu
bW9kaWZpY2F0aW9uVGltZSA9IGZpbGVOYW1lLkdldE1vZGlmaWNhdGlvblRpbWUoKS5HZXRUaWNr
cygpOworICAgIHQudHlwZSA9IGZpbGVOYW1lLklzRGlyKCkgPyBGaWxlTWV0YWRhdGE6OlR5cGVE
aXJlY3RvcnkgOiBGaWxlTWV0YWRhdGE6OlR5cGVGaWxlOworICAgIHJldHVybiB0cnVlOworfQor
CiBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgcmV0
dXJuIHd4RmlsZU5hbWU6Ok1rZGlyKHBhdGgsIDA3NzcsIHd4UEFUSF9NS0RJUl9GVUxMKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMTY5NGU3Ni4uYWI0OGNjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNS0yMSAgS2ludWtvIFlhc3Vk
YSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2xlYW51cDogYWRkIGEgZmlsZSBz
eXN0ZW0gY2FsbCB3aGljaCBjYXB0dXJlcyB0aGUgZmlsZSBtZXRhZGF0YSBhdCBvbmNlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY5OTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9QbGF0Zm9y
bVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxl
TWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDUtMjEgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEltcGxlbWVudCBXZWJW
aWV3SW1wbDo6dGV4dElucHV0SW5mbygpIGZvciBBbmRyb2lkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAppbmRleCBiYmQwN2NhLi5kNmVjMmE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKQEAg
LTM1LDcgKzM1LDkgQEAKIAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNs
aWVudEltcGwuaCIKKyNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiV2ViRmlsZUluZm8uaCIKICNpbmNsdWRlICJXZWJGaWxlVXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIK
QEAgLTMzMyw2ICszMzUsMTcgQEAgYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZpbGVNZXRhZGF0YShjb25zdCBT
dHJpbmcmIHBhdGgsIEZpbGVNZXRhZGF0YSYgcmVzdWx0KQoreworICAgIFdlYkZpbGVJbmZvIHdl
YkZpbGVJbmZvOworICAgIGlmICghd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmZpbGVVdGlsaXRp
ZXMoKS0+Z2V0RmlsZUluZm8ocGF0aCwgd2ViRmlsZUluZm8pKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUgPSB3ZWJGaWxlSW5mby5tb2RpZmljYXRp
b25UaW1lOworICAgIHJlc3VsdC5sZW5ndGggPSB3ZWJGaWxlSW5mby5sZW5ndGg7CisgICAgcmVz
dWx0LnR5cGUgPSBzdGF0aWNfY2FzdDxGaWxlTWV0YWRhdGE6OlR5cGU+KHdlYkZpbGVJbmZvLnR5
cGUpOworICAgIHJldHVybiB0cnVlOworfQorCiBTdHJpbmcgUGxhdGZvcm1TdXBwb3J0OjpkaXJl
Y3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICByZXR1cm4gV2ViS2l0OjpQbGF0
Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPmRpcmVjdG9yeU5hbWUocGF0aCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143003</attachid>
            <date>2012-05-21 05:05:07 -0700</date>
            <delta_ts>2012-05-21 05:09:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86995-20120521210506.patch</filename>
            <type>text/plain</type>
            <size>21448</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2ZDEwNDk4ZjdlYTM0
NGUxNDI2ODEzYmU1MzJjZTY3MzMxMzJiNTIxLi5iNWE2YTI1OTdhODRhYjQ2NTk4NDRkYTM4MTUw
M2UzMjZhYzM2ZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNS0yMSAg
S2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2xlYW51cDog
YWRkIGEgZmlsZSBzeXN0ZW0gY2FsbCB3aGljaCBjYXB0dXJlcyB0aGUgZmlsZSBtZXRhZGF0YSBh
dCBvbmNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGNocm9taXVtL3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGaWxlVXRpbGl0aWVzOjpnZXRGaWxlSW5mbyk6IEFkZGVkLgor
CiAyMDEyLTA1LTE3ICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIE1vdmUgV2ViIFdvcmtlcnMgbWV0aG9kcyB0byBQbGF0Zm9ybS5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMGM2YTI2M2M5OTM1YTFhNDU1OGFjMjY5ZDRkMTAzZDMzZTA1ZDBkNy4uN2Rh
Yjk3NDE2MGNiMDg3ZjhiNjNkNjU3ODc2MWEyYjVmNDc5NTViOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ3IEBACisyMDEyLTA1LTIxICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBDbGVhbnVwOiBhZGQgYSBmaWxlIHN5c3RlbSBjYWxsIHdoaWNoIGNhcHR1
cmVzIHRoZSBmaWxlIG1ldGFkYXRhIGF0IG9uY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Njk5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnQgRmlsZS5zbGljZSgpICh3ZWJraXRTbGljZSgp
KSBpbXBsZW1lbnRhdGlvbiBjYWxscyB0d28gc2VwYXJhdGUgcGxhdGZvcm0gY2FsbHMsCisgICAg
ICAgIGdldEZpbGVTaXplKCkgYW5kIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKCkgW2JvdGggYXJl
IGRlZmluZWQgaW4gcGxhdGZvcm0vRmlsZVN5c3RlbS5oXSwKKyAgICAgICAgdG8gY2FwdHVyZSB0
aGUgZmlsZSBtZXRhZGF0YSwgYnV0IHdlIHNob3VsZCBoYXZlIGEgc2luZ2xlIGZpbGUgc3lzdGVt
IGNhbGwgdG8gZ2V0IHRoZW0gYXQgb25jZQorICAgICAgICBmb3IgdHdvIHJlYXNvbnM6IDEuIHNh
dmUgYWRkaXRpb25hbCBzeXN0ZW0gY2FsbCBjb3N0cywgYW5kIDIuICBhdG9taWNhbGx5IG9idGFp
biB0aGUgZmlsZSBtZXRhZGF0YS4KKworICAgICAgICBObyBuZXcgdGVzdHM6IGV4aXN0aW5nIHRl
c3RzIChodHRwL3Rlc3RzL2xvY2FsL2ZpbGVhcGkvKiBhbmQgZmFzdC9maWxlcy8qKSBzaG91bGQg
cGFzcy4KKworICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlOjpjYXB0dXJlU25hcHNob3QpOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVNZXRhZGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Rmls
ZU1ldGFkYXRhKTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1T
dXBwb3J0Lmg6CisgICAgICAgIChQbGF0Zm9ybVN1cHBvcnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9GaWxlU3lzdGVtR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVNZXRhZGF0
YSk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTWV0YWRhdGEpOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZU1l
dGFkYXRhKTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZVNpemVGcm9tRmluZERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0RmlsZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZU1vZGlmaWNh
dGlvblRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZU1ldGFkYXRhKTogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vd2luY2UvRmlsZVN5c3RlbVdpbkNFLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmdldEZpbGVTaXplRnJvbUZpbGVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEZp
bGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbGVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEZp
bGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OmdldEZpbGVNZXRhZGF0YSk6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL3d4L0ZpbGVTeXN0ZW1XeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTWV0YWRh
dGEpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA1LTIxICBZdXJ5IFNlbWlr
aGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGV4
cGFuZCBvbmx5IG5laWdoYm9ycyBvZiB0aGUgaGlnaGxpZ2h0ZWQgbm9kZSB3aGVuIHJldmVhbGlu
ZyBpdCBpbiBoZWFwIHNuYXBzaG90CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDE2OTRl
NzZlYzQ5NjQ5ODRjNWI3NzlmZWE4ZWY5NWVlZTU2MmRmMmIuLmFiNDhjYzBlNDhhOGVmNmMwZmMy
ZjgyMDZkYmU5NDA0MjUxZmU5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTItMDUtMjEgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIENsZWFudXA6IGFkZCBhIGZpbGUgc3lzdGVtIGNhbGwgd2hpY2ggY2FwdHVy
ZXMgdGhlIGZpbGUgbWV0YWRhdGEgYXQgb25jZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg2OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6Z2V0RmlsZU1ldGFkYXRhKToKKyAgICAgICAgKFdl
YkNvcmUpOgorCiAyMDEyLTA1LTIxICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW0Nocm9taXVtXSBJbXBsZW1lbnQgV2ViVmlld0ltcGw6OnRleHRJbnB1dEluZm8o
KSBmb3IgQW5kcm9pZApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJGaWxlVXRpbGl0aWVzLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkZpbGVVdGlsaXRpZXMuaAppbmRleCA2N2RjNGE4NzM4YjI1YmU1OGEyYzJjZWI5YjIxNTE1MjE0
MDI1NWU5Li43ZmE0ZTI3NGRkYzJkNTg5ZmU1NzJlMjZhNjBiZGExOTc5NGEzZTBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZpbGVVdGlsaXRpZXMuaAor
KysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZpbGVVdGlsaXRpZXMuaApA
QCAtNDEsNiArNDEsOCBAQCB0eXBlZGVmIHZvaWQgKkhBTkRMRTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKK3N0cnVjdCBXZWJGaWxlSW5mbzsKKwogY2xhc3MgV2ViRmlsZVV0aWxpdGllcyB7CiBw
dWJsaWM6CiAjaWZkZWYgV0lOMzIKQEAgLTU0LDYgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBXZWJTdHJpbmcmIHBhdGgpIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGdldEZpbGVTaXplKGNvbnN0IFdlYlN0cmlu
ZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHQpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgZG91
YmxlJiByZXN1bHQpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGdldEZpbGVJ
bmZvKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgV2ViRmlsZUluZm8mIHJlc3VsdCkgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIFdlYlN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFdlYlN0
cmluZyYgcGF0aCkgIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9CiAgICAgdmlydHVhbCBXZWJTdHJp
bmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgY29uc3Qg
V2ViU3RyaW5nJiBjb21wb25lbnQpICB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQogICAgIHZpcnR1
YWwgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSB7IHJldHVy
biBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXggZjJhZmEzNDU0YTBjZDMzY2Y2
MTdjNDA0Nzk2OGVhZTk5N2MwZWQxNC4uMDk4MDg0ODA3ZDBiYTJjY2UwMmMyMzQzN2M5ODA3NmYx
YWRhMmEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC0xNjksMTMgKzE2OSwxNSBAQCB2
b2lkIEZpbGU6OmNhcHR1cmVTbmFwc2hvdChsb25nIGxvbmcmIHNuYXBzaG90U2l6ZSwgZG91Ymxl
JiBzbmFwc2hvdE1vZGlmaWNhdGlvbgogCiAgICAgLy8gT2J0YWlucyBhIHNuYXBzaG90IG9mIHRo
ZSBmaWxlIGJ5IGNhcHR1cmluZyBpdHMgY3VycmVudCBzaXplIGFuZCBtb2RpZmljYXRpb24gdGlt
ZS4gVGhpcyBpcyB1c2VkIHdoZW4gd2Ugc2xpY2UgYSBmaWxlIGZvciB0aGUgZmlyc3QgdGltZS4K
ICAgICAvLyBJZiB3ZSBmYWlsIHRvIHJldHJpZXZlIHRoZSBzaXplIG9yIG1vZGlmaWNhdGlvbiB0
aW1lLCBwcm9iYWJseSBkdWUgdG8gdGhhdCB0aGUgZmlsZSBoYXMgYmVlbiBkZWxldGVkLCAwIHNp
emUgaXMgcmV0dXJuZWQuCi0gICAgLy8gRklYTUU6IENvbWJpbmUgZ2V0RmlsZVNpemUgYW5kIGdl
dEZpbGVNb2RpZmljYXRpb25UaW1lIGludG8gb25lIGZpbGUgc3lzdGVtIGNhbGwuCi0gICAgdGlt
ZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZShtX3BhdGgsIHNuYXBz
aG90U2l6ZSkgfHwgIWdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1fcGF0aCwgbW9kaWZpY2F0aW9u
VGltZSkpIHsKKyAgICBGaWxlTWV0YWRhdGEgbWV0YWRhdGE7CisgICAgaWYgKCFnZXRGaWxlTWV0
YWRhdGEobV9wYXRoLCBtZXRhZGF0YSkpIHsKICAgICAgICAgc25hcHNob3RTaXplID0gMDsKICAg
ICAgICAgc25hcHNob3RNb2RpZmljYXRpb25UaW1lID0gMDsKLSAgICB9IGVsc2UKLSAgICAgICAg
c25hcHNob3RNb2RpZmljYXRpb25UaW1lID0gbW9kaWZpY2F0aW9uVGltZTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHNuYXBzaG90U2l6ZSA9IG1ldGFkYXRhLmxlbmd0aDsKKyAgICBz
bmFwc2hvdE1vZGlmaWNhdGlvblRpbWUgPSBtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0
YS5oCmluZGV4IDk5ZmUyZjMyNjEzZjJhYWU5NjEyMjVlMWYwNjQzYzhkMjY2YjJiYjUuLmVjMjgx
NDViYWU1YjFjODI0ODY1MzAwMTE1MTQ1YzRkYjlmZWZmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVNZXRhZGF0YS5oCkBAIC0zMyw4ICszMyw2IEBACiAKICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdHJ1Y3QgRmlsZU1ldGFkYXRhIHsKQEAgLTU0LDEzICs1MiwxMyBAQCBzdHJ1
Y3QgRmlsZU1ldGFkYXRhIHsKIAogICAgIFR5cGUgdHlwZTsKIAorI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKICAgICBTdHJpbmcgcGxhdGZvcm1QYXRoOworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZ
U1RFTSkKIAogICAgIEZpbGVNZXRhZGF0YSgpIDogbW9kaWZpY2F0aW9uVGltZSgwLjApLCBsZW5n
dGgoLTEpLCB0eXBlKFR5cGVVbmtub3duKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQogI2VuZGlmIC8vIEZpbGVNZXRh
ZGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKaW5kZXggYTIwMmZhMDM2OWQ3
ZmE2MDFlNTRmYTYyMTk1NzllYTIyMzZmYzU3NS4uYzE2YTU2MWFiZGZmOGQ2MzNmOTAzYzIxYTFj
MDM4OWFmNzAzODc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5
c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaApAQCAtMTUx
LDEyICsxNTEsMTUgQEAgc3RhdGljIGNvbnN0IGNoYXIgUGxhdGZvcm1GaWxlUGF0aFNlcGFyYXRv
ciA9ICdcXCc7CiBzdGF0aWMgY29uc3QgY2hhciBQbGF0Zm9ybUZpbGVQYXRoU2VwYXJhdG9yID0g
Jy8nOwogI2VuZGlmCiAKK3N0cnVjdCBGaWxlTWV0YWRhdGE7CisKIHZvaWQgcmV2ZWFsRm9sZGVy
SW5PUyhjb25zdCBTdHJpbmcmKTsKIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmKTsKIGJv
b2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmKTsKIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJik7CiBib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYsIGxvbmcgbG9u
ZyYgcmVzdWx0KTsKIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiwg
dGltZV90JiByZXN1bHQpOworYm9vbCBnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiwgRmls
ZU1ldGFkYXRhJik7CiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpOwogYm9vbCBtYWtlQWxsRGlyZWN0b3Jp
ZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsKIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZpbGVTeXN0ZW1DaHJv
bWl1bS5jcHAKaW5kZXggYzFhYmJiZDE4NDU5YTZiZjNkNGRlZDgwOThkNDgwN2UxY2VkY2UyYS4u
NDJmMDViZWM1YjdlYzM1OTNiNjk0M2JmNjRiNWI3ZGNkNjBmZTFjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogCisjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3VwcG9ydC5oIgpAQCAtNTcsNiArNTgsMTkgQEAgYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgcmVzdWx0KQogICAgIHJldHVybiBQbGF0Zm9y
bVN1cHBvcnQ6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgsIHJlc3VsdCk7CiB9CiAKK2Jv
b2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU1ldGFkYXRhJiByZXN1
bHQpCit7CisgICAgLy8gRklYTUU6IENhbGwgUGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxlTWV0YWRh
dGEgb25jZSBpdCBpcyBpbXBsZW1lbnRlZC4KKyAgICAvLyByZXR1cm4gUGxhdGZvcm1TdXBwb3J0
OjpnZXRGaWxlTWV0YWRhdGEocGF0aCwgcmVzdWx0KTsKKyAgICBpZiAoIVBsYXRmb3JtU3VwcG9y
dDo6Z2V0RmlsZVNpemUocGF0aCwgcmVzdWx0Lmxlbmd0aCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKKyAgICBpZiAoIVBsYXRmb3JtU3VwcG9y
dDo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXN1bHQubW9kaWZpY2F0aW9uVGltZSA9IG1vZGlmaWNh
dGlvblRpbWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgcmV2ZWFsRm9sZGVySW5PUyhj
b25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgUGxhdGZvcm1TdXBwb3J0OjpyZXZlYWxGb2xkZXJJ
bk9TKHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0
Zm9ybVN1cHBvcnQuaAppbmRleCBiZDI1MzMyOGFlYzk0ZmY5N2JjYzViOGU4OTFmYWNiNGViNTY1
OGNiLi41ZTIyNTE1YjI3ZGVhMTFiNWE5N2JlNTVjOWM2YzM5M2ZhZTA3ZmQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaApAQCAt
MTI4LDYgKzEyOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBkZWxldGVFbXB0eURpcmVj
dG9yeShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBT
dHJpbmcmLCBsb25nIGxvbmcmIHJlc3VsdCk7CiAgICAgc3RhdGljIGJvb2wgZ2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiwgdGltZV90JiByZXN1bHQpOworICAgIHN0YXRpYyBi
b29sIGdldEZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmLCBGaWxlTWV0YWRhdGEmIHJlc3VsdCk7
CiAgICAgc3RhdGljIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAg
ICAgc3RhdGljIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCk7CiAgICAgc3RhdGljIGJvb2wgbWFrZUFsbERp
cmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAKaW5kZXggYTNiNDQ4ZGY0NzJmNjQzMmU4YTBjMzhiM2Ri
MDgzNjIxMzUzNDE4Yy4uNDIzNWRjNGFjZmEwYmQ3MGQ1ZmZjMjU2MmVkNDdmODA5MWZhY2JjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcApAQCAt
MjMsMTQgKzIzLDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgogCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgIkZpbGVN
ZXRhZGF0YS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiVVVJRC5o
IgogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8Z2xp
Yi9nc3RkaW8uaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HbGliVXRpbGl0aWVzLmg+CisjaW5j
bHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HbGliVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNDEsNiArMTQy
LDI0IEBAIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0
aW1lX3QmIG1vZGlmaWVkVGltZSkKIAogfQogCitib29sIGdldEZpbGVNZXRhZGF0YShjb25zdCBT
dHJpbmcmIHBhdGgsIEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCit7CisgICAgQ1N0cmluZyBmaWxl
bmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBpZiAoZmlsZW5hbWUu
aXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0cnVjdCBzdGF0IHN0YXRS
ZXN1bHQ7CisgICAgZ2ludCByZXN1bHQgPSBnX3N0YXQoZmlsZW5hbWUuZGF0YSgpLCAmc3RhdFJl
c3VsdCk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbWV0
YWRhdGEubW9kaWZpY2F0aW9uVGltZSA9IHN0YXRSZXN1bHQuc3RfbXRpbWU7CisgICAgbWV0YWRh
dGEubGVuZ3RoID0gc3RhdFJlc3VsdC5zdF9zaXplOworICAgIG1ldGFkYXRhLnR5cGUgPSBTX0lT
RElSKHN0YXRSZXN1bHQuc3RfbW9kZSkgPyBGaWxlTWV0YWRhdGE6OlR5cGVEaXJlY3RvcnkgOiBG
aWxlTWV0YWRhdGE6OlR5cGVGaWxlOworICAgIHJldHVybiB0cnVlOworCit9CisKIFN0cmluZyBw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IGNvbXBvbmVudCkKIHsKICAgICBpZiAocGF0aC5lbmRzV2l0aChHX0RJUl9TRVBBUkFUT1JfUykp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9T
SVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNw
cAppbmRleCBmZGE4MTI2NWI1Y2QzZmFmMWUxOTNiYzMwMTBiM2I4MTEwYjc1MTFlLi45OGRhZjQ1
M2VjNTk4ZTZlNDk3OGQ1ZDUxMTA1ZGQ2NGJhMjA1OTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAKKyNpbmNsdWRl
ICJGaWxlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUg
PGRpcmVudC5oPgogI2luY2x1ZGUgPGVycm5vLmg+CkBAIC0xODEsNiArMTgyLDIzIEBAIGJvb2wg
Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHJlc3Vs
dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3Ry
aW5nJiBwYXRoLCBGaWxlTWV0YWRhdGEmIHJlc3VsdCkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKCFmc1JlcC5kYXRhKCkg
fHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHN0cnVjdCBzdGF0IGZpbGVJbmZvOworICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJ
bmZvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0Lm1vZGlmaWNhdGlvblRp
bWUgPSBmaWxlSW5mby5zdF9tdGltZTsKKyAgICByZXN1bHQubGVuZ3RoID0gZmlsZUluZm8uc3Rf
c2l6ZTsKKyAgICByZXN1bHQudHlwZSA9IFNfSVNESVIoZmlsZUluZm8uc3RfbW9kZSkgPyBGaWxl
TWV0YWRhdGE6OlR5cGVEaXJlY3RvcnkgOiBGaWxlTWV0YWRhdGE6OlR5cGVGaWxlOworICAgIHJl
dHVybiB0cnVlOworfQorCiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiB7CiAgICAgaWYgKHBhdGguZW5k
c1dpdGgoJy8nKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVT
eXN0ZW1RdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3Bw
CmluZGV4IDMyNjQ0ZDE3OGJiZDZlMmM5ZTBlYmEzZWUxNGM1NDM4ZjJjNzRiMWQuLjMzOWZkNjM1
Njk0ZDdkZGUyNzRlOTU4YjE0MmZmMjYwODlmN2E5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAorI2luY2x1ZGUgIkZpbGVNZXRhZGF0
YS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8UURhdGVUaW1lPgog
I2luY2x1ZGUgPFFEaXI+CkBAIC03Myw2ICs3NCwxNSBAQCBib29sIGdldEZpbGVNb2RpZmljYXRp
b25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCiAgICAgcmV0dXJuIGlu
Zm8uZXhpc3RzKCk7CiB9CiAKK2Jvb2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0
aCwgRmlsZU1ldGFkYXRhJiByZXN1bHQpCit7CisgICAgUUZpbGVJbmZvIGluZm8ocGF0aCk7Cisg
ICAgcmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUgPSBpbmZvLmxhc3RNb2RpZmllZCgpLnRvVGltZV90
KCk7CisgICAgcmVzdWx0Lmxlbmd0aCA9IGluZm8uc2l6ZSgpOworICAgIHJlc3VsdC50eXBlID0g
aW5mby5pc0RpcigpID8gRmlsZU1ldGFkYXRhOjpUeXBlRGlyZWN0b3J5IDogRmlsZU1ldGFkYXRh
OjpUeXBlRmlsZTsKKyAgICByZXR1cm4gaW5mby5leGlzdHMoKTsKK30KKwogYm9vbCBtYWtlQWxs
RGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHJldHVybiBRRGlyOjpyb290
KCkubWtwYXRoKHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0
ZW1XaW4uY3BwCmluZGV4IDRjZTUxODc3MTIzNTNlOTBjMGQxNTZmODU0MTlmY2IwNWRiMzdmYWMu
LjU1YmNmZDYzNTZjYmI4Y2M4YWU3N2NlOTM0OGNlMTQ0Mjk1ZjE0MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAKKyNpbmNsdWRl
ICJGaWxlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IlBhdGhXYWxrZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1i
ZXIuaD4KQEAgLTU0LDEyICs1NSw4IEBAIHN0YXRpYyBib29sIGdldEZpbmREYXRhKFN0cmluZyBw
YXRoLCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0KQor
c3RhdGljIGJvb2wgZ2V0RmlsZVNpemVGcm9tRmluZERhdGEoY29uc3QgV0lOMzJfRklORF9EQVRB
VyYgZmluZERhdGEsIGxvbmcgbG9uZyYgcmVzdWx0KQogewotICAgIFdJTjMyX0ZJTkRfREFUQVcg
ZmluZERhdGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQogICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVTaXplOwogICAgIGZpbGVT
aXplLkhpZ2hQYXJ0ID0gZmluZERhdGEubkZpbGVTaXplSGlnaDsKICAgICBmaWxlU2l6ZS5Mb3dQ
YXJ0ID0gZmluZERhdGEubkZpbGVTaXplTG93OwpAQCAtNzEsMTggKzY4LDUxIEBAIGJvb2wgZ2V0
RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdCkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmlu
ZERhdGEoY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEsIHRpbWVfdCYgcmVzdWx0KQor
eworICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVUaW1lOworICAgIGZpbGVUaW1lLkhpZ2hQYXJ0ID0g
ZmluZERhdGEuZnRMYXN0V3JpdGVUaW1lLmR3SGlnaERhdGVUaW1lOworICAgIGZpbGVUaW1lLkxv
d1BhcnQgPSBmaW5kRGF0YS5mdExhc3RXcml0ZVRpbWUuZHdMb3dEYXRlVGltZTsKKworICAgIC8v
IEluZm9ybWF0aW9uIGFib3V0IGNvbnZlcnRpbmcgdGltZV90IHRvIEZpbGVUaW1lIGlzIGF2YWls
YWJsZSBhdCBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM3MjQyMjgl
Mjh2PXZzLjg1JTI5LmFzcHgKKyAgICByZXN1bHQgPSBmaWxlVGltZS5RdWFkUGFydCAvIDEwMDAw
MDAwIC0ga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0OworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHQp
Cit7CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICBpZiAoIWdldEZpbmREYXRh
KHBhdGgsIGZpbmREYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGdl
dEZpbGVTaXplRnJvbUZpbmREYXRhKGZpbmREYXRhLCByZXN1bHQpOworfQorCiBib29sIGdldEZp
bGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCiB7
CiAgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKICAgICBpZiAoIWdldEZpbmREYXRhKHBh
dGgsIGZpbmREYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgVUxBUkdFX0lOVEVH
RVIgZmlsZVNpemU7Ci0gICAgZmlsZVNpemUuSGlnaFBhcnQgPSBmaW5kRGF0YS5mdExhc3RXcml0
ZVRpbWUuZHdIaWdoRGF0ZVRpbWU7Ci0gICAgZmlsZVNpemUuTG93UGFydCA9IGZpbmREYXRhLmZ0
TGFzdFdyaXRlVGltZS5kd0xvd0RhdGVUaW1lOworICAgIHJldHVybiBnZXRGaWxlTW9kaWZpY2F0
aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgcmVzdWx0KTsKK30KKworYm9vbCBnZXRGaWxl
TWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlTWV0YWRhdGEmIHJlc3VsdCkKK3sKKyAg
ICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOworICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwg
ZmluZERhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWdldEZpbGVTaXpl
RnJvbUZpbmREYXRhKGZpbmREYXRhLCByZXN1bHQubGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7CisgICAgaWYgKCFnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgbW9kaWZpY2F0aW9uVGltZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXN1bHQubW9kaWZpY2F0aW9uVGltZSA9IG1vZGlm
aWNhdGlvblRpbWU7CisKKyAgICByZXN1bHQudHlwZSA9IChmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1
dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSA/IEZpbGVNZXRhZGF0YTo6VHlwZURpcmVj
dG9yeSA6IEZpbGVNZXRhZGF0YTo6VHlwZUZpbGU7CiAKLSAgICAvLyBJbmZvcm1hdGlvbiBhYm91
dCBjb252ZXJ0aW5nIHRpbWVfdCB0byBGaWxlVGltZSBpcyBhdmFpbGFibGUgYXQgaHR0cDovL21z
ZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNzI0MjI4JTI4dj12cy44NSUyOS5hc3B4
Ci0gICAgcmVzdWx0ID0gZmlsZVNpemUuUXVhZFBhcnQgLyAxMDAwMDAwMCAtIGtTZWNvbmRzRnJv
bUZpbGVUaW1lVG9UaW1ldDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRmlsZVN5c3RlbVdpbkNFLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0ZpbGVTeXN0ZW1XaW5DRS5jcHAKaW5kZXggNGM3YTFkZmQ2
OTI2MWM4NTJmMWI1Mjc0ZDNiODllN2ZiNDgzMzQ1ZS4uZTk1OWRlZjc4ODY2Y2Y5MGY5ZDYwYTZk
YTJiMDFjYjg5MjkzMzMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
Y2UvRmlsZVN5c3RlbVdpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5j
ZS9GaWxlU3lzdGVtV2luQ0UuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogCisjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDx3aW5jcnlwdC5oPgogI2lu
Y2x1ZGUgPHdpbmRvd3MuaD4KQEAgLTY4LDMxICs2OSw1NCBAQCBzdGF0aWMgYm9vbCBnZXRGaWxl
SW5mbyhjb25zdCBTdHJpbmcmIHBhdGgsIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OJiBmaWxl
SW5mbwogICAgIHJldHVybiBydG47CiB9CiAKK3N0YXRpYyB2b2lkIGdldEZpbGVTaXplRnJvbUZp
bGVJbmZvKGNvbnN0IEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OJiBmaWxlSW5mbywgbG9uZyBs
b25nJiByZXN1bHQpCit7CisgICAgVUxBUkdFX0lOVEVHRVIgZmlsZVNpemU7CisgICAgZmlsZVNp
emUuTG93UGFydCA9IGZpbGVJbmZvLm5GaWxlU2l6ZUxvdzsKKyAgICBmaWxlU2l6ZS5IaWdoUGFy
dCA9IGZpbGVJbmZvLm5GaWxlU2l6ZUhpZ2g7CisgICAgcmVzdWx0ID0gZmlsZVNpemUuUXVhZFBh
cnQ7Cit9CisKK3N0YXRpYyB2b2lkIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbGVJbmZv
KGNvbnN0IEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OJiBmaWxlSW5mbywgdGltZV90JiByZXN1
bHQpCit7CisgICAgVUxBUkdFX0lOVEVHRVIgdDsKKyAgICBtZW1jcHkoJnQsICZmaWxlSW5mby5m
dExhc3RXcml0ZVRpbWUsIHNpemVvZih0KSk7CisgICAgcmVzdWx0ID0gdC5RdWFkUGFydCAqIDAu
MDAwMDAwMSAtIDExNjQ0NDczNjAwLjA7Cit9CisKIGJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdCkKIHsKICAgICBCWV9IQU5ETEVfRklMRV9JTkZP
Uk1BVElPTiBmaWxlSW5mb3JtYXRpb247CiAgICAgaWYgKCFnZXRGaWxlSW5mbyhwYXRoLCBmaWxl
SW5mb3JtYXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBVTEFSR0VfSU5URUdF
UiBmaWxlU2l6ZTsKLSAgICBmaWxlU2l6ZS5Mb3dQYXJ0ID0gZmlsZUluZm9ybWF0aW9uLm5GaWxl
U2l6ZUxvdzsKLSAgICBmaWxlU2l6ZS5IaWdoUGFydCA9IGZpbGVJbmZvcm1hdGlvbi5uRmlsZVNp
emVIaWdoOworICAgIGdldEZpbGVTaXplRnJvbUZpbGVJbmZvKGZpbGVJbmZvcm1hdGlvbiwgcmVz
dWx0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KIAotICAgIHJlc3VsdCA9IGZpbGVTaXplLlF1YWRQ
YXJ0OworYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRp
bWVfdCYgcmVzdWx0KQoreworICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGZpbGVJbmZv
cm1hdGlvbjsKKyAgICBpZiAoIWdldEZpbGVJbmZvKHBhdGgsIGZpbGVJbmZvcm1hdGlvbikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZp
bGVJbmZvKGZpbGVJbmZvcm1hdGlvbiwgcmVzdWx0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYg
cmVzdWx0KQorYm9vbCBnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlTWV0
YWRhdGEmIHJlc3VsdCkKIHsKICAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBmaWxlSW5m
b3JtYXRpb247CiAgICAgaWYgKCFnZXRGaWxlSW5mbyhwYXRoLCBmaWxlSW5mb3JtYXRpb24pKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBVTEFSR0VfSU5URUdFUiB0OwotICAgIG1lbWNw
eSgmdCwgJmZpbGVJbmZvcm1hdGlvbi5mdExhc3RXcml0ZVRpbWUsIHNpemVvZih0KSk7Ci0gICAg
Ci0gICAgcmVzdWx0ID0gdC5RdWFkUGFydCAqIDAuMDAwMDAwMSAtIDExNjQ0NDczNjAwLjA7Cisg
ICAgZ2V0RmlsZVNpemVGcm9tRmlsZUluZm8oZmlsZUluZm9ybWF0aW9uLCByZXN1bHQubGVuZ3Ro
KTsKKworICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOworICAgIGdldEZpbGVNb2RpZmljYXRp
b25UaW1lRnJvbUZpbGVJbmZvKGZpbGVJbmZvcm1hdGlvbiwgbW9kaWZpY2F0aW9uVGltZSk7Cisg
ICAgcmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUgPSBtb2RpZmljYXRpb25UaW1lOworCisgICAgcmVz
dWx0LnR5cGUgPSAoZmlsZUluZm9ybWF0aW9uLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJ
QlVURV9ESVJFQ1RPUlkpID8gRmlsZU1ldGFkYXRhOjpUeXBlRGlyZWN0b3J5IDogRmlsZU1ldGFk
YXRhOjpUeXBlRmlsZTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3d4L0ZpbGVTeXN0ZW1XeC5jcHAKaW5kZXggYmJlYzlmZTE0OWI0ZjRlOGI3ODZlOTYz
NzBlODAzY2I5YzZlMzhkMC4uOGU5MGM0NmM5NDY5YzQ0OWE5OWU1YjFmODFkODk1MzExZjA3YmM1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9GaWxlU3lzdGVtV3guY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogCisjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSA8d3gvd3guaD4KICNpbmNs
dWRlIDx3eC9kYXRldGltZS5oPgogI2luY2x1ZGUgPHd4L2Rpci5oPgpAQCAtODUsNiArODYsMTcg
QEAgYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVf
dCYgdCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0
IFN0cmluZyYgcGF0aCwgRmlsZU1ldGFkYXRhJiB0KQoreworICAgIGlmICghd3hGaWxlRXhpc3Rz
KHBhdGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgd3hGaWxlTmFtZSBmaWxlTmFtZShw
YXRoKTsKKyAgICB0Lmxlbmd0aCA9IGZpbGVOYW1lLkdldFNpemUoKTsKKyAgICB0Lm1vZGlmaWNh
dGlvblRpbWUgPSBmaWxlTmFtZS5HZXRNb2RpZmljYXRpb25UaW1lKCkuR2V0VGlja3MoKTsKKyAg
ICB0LnR5cGUgPSBmaWxlTmFtZS5Jc0RpcigpID8gRmlsZU1ldGFkYXRhOjpUeXBlRGlyZWN0b3J5
IDogRmlsZU1ldGFkYXRhOjpUeXBlRmlsZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBt
YWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHJldHVybiB3eEZp
bGVOYW1lOjpNa2RpcihwYXRoLCAwNzc3LCB3eFBBVEhfTUtESVJfRlVMTCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAppbmRleCBiYmQwN2NhN2M5
YmY0N2I3NThhY2E2ZjM3N2U5ZDMxYzIwZjkxMzg2Li5kNmVjMmE2MjlkNzcwZTE0YzE3NDM1Nzcz
ZDFlYjFhYTk2ZTU4NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Q
bGF0Zm9ybVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRm
b3JtU3VwcG9ydC5jcHAKQEAgLTM1LDcgKzM1LDkgQEAKIAogI2luY2x1ZGUgIkNocm9tZS5oIgog
I2luY2x1ZGUgIkNocm9tZUNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiV2ViRmlsZUluZm8uaCIKICNpbmNsdWRlICJX
ZWJGaWxlVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRl
ICJXZWJGcmFtZUltcGwuaCIKQEAgLTMzMyw2ICszMzUsMTcgQEAgYm9vbCBQbGF0Zm9ybVN1cHBv
cnQ6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiBy
ZXN1bHQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZp
bGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVNZXRhZGF0YSYgcmVzdWx0KQorewor
ICAgIFdlYkZpbGVJbmZvIHdlYkZpbGVJbmZvOworICAgIGlmICghd2ViS2l0UGxhdGZvcm1TdXBw
b3J0KCktPmZpbGVVdGlsaXRpZXMoKS0+Z2V0RmlsZUluZm8ocGF0aCwgd2ViRmlsZUluZm8pKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUgPSB3ZWJG
aWxlSW5mby5tb2RpZmljYXRpb25UaW1lOworICAgIHJlc3VsdC5sZW5ndGggPSB3ZWJGaWxlSW5m
by5sZW5ndGg7CisgICAgcmVzdWx0LnR5cGUgPSBzdGF0aWNfY2FzdDxGaWxlTWV0YWRhdGE6OlR5
cGU+KHdlYkZpbGVJbmZvLnR5cGUpOworICAgIHJldHVybiB0cnVlOworfQorCiBTdHJpbmcgUGxh
dGZvcm1TdXBwb3J0OjpkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBy
ZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPmRpcmVj
dG9yeU5hbWUocGF0aCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143005</attachid>
            <date>2012-05-21 05:09:47 -0700</date>
            <delta_ts>2012-05-21 10:57:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86995-20120521210945.patch</filename>
            <type>text/plain</type>
            <size>21473</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2ZDEwNDk4ZjdlYTM0
NGUxNDI2ODEzYmU1MzJjZTY3MzMxMzJiNTIxLi5iNWE2YTI1OTdhODRhYjQ2NTk4NDRkYTM4MTUw
M2UzMjZhYzM2ZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNS0yMSAg
S2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2xlYW51cDog
YWRkIGEgZmlsZSBzeXN0ZW0gY2FsbCB3aGljaCBjYXB0dXJlcyB0aGUgZmlsZSBtZXRhZGF0YSBh
dCBvbmNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGNocm9taXVtL3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGaWxlVXRpbGl0aWVzOjpnZXRGaWxlSW5mbyk6IEFkZGVkLgor
CiAyMDEyLTA1LTE3ICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIE1vdmUgV2ViIFdvcmtlcnMgbWV0aG9kcyB0byBQbGF0Zm9ybS5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggYmRmNjQzNWJiM2Q2MzY2NTJkZDU1NTI3YmY2OWU5ZWRjOGI5YzM0Yy4uZjdi
NWNjZjQ0ZmFkMTdkYjNlOTc5ZWVlZmNjMjM4ZmJjZGU4ZTMwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ3IEBACisyMDEyLTA1LTIxICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBDbGVhbnVwOiBhZGQgYSBmaWxlIHN5c3RlbSBjYWxsIHdoaWNoIGNhcHR1
cmVzIHRoZSBmaWxlIG1ldGFkYXRhIGF0IG9uY2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Njk5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnQgRmlsZS5zbGljZSgpICh3ZWJraXRTbGljZSgp
KSBpbXBsZW1lbnRhdGlvbiBjYWxscyB0d28gc2VwYXJhdGUgcGxhdGZvcm0gY2FsbHMsCisgICAg
ICAgIGdldEZpbGVTaXplKCkgYW5kIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKCkgW2JvdGggYXJl
IGRlZmluZWQgaW4gcGxhdGZvcm0vRmlsZVN5c3RlbS5oXSwKKyAgICAgICAgdG8gY2FwdHVyZSB0
aGUgZmlsZSBtZXRhZGF0YSwgYnV0IHdlIHNob3VsZCBoYXZlIGEgc2luZ2xlIGZpbGUgc3lzdGVt
IGNhbGwgdG8gZ2V0IHRoZW0gYXQgb25jZQorICAgICAgICBmb3IgdHdvIHJlYXNvbnM6IDEuIHNh
dmUgYWRkaXRpb25hbCBzeXN0ZW0gY2FsbCBjb3N0cywgYW5kIDIuICBhdG9taWNhbGx5IG9idGFp
biB0aGUgZmlsZSBtZXRhZGF0YS4KKworICAgICAgICBObyBuZXcgdGVzdHM6IGV4aXN0aW5nIHRl
c3RzIChodHRwL3Rlc3RzL2xvY2FsL2ZpbGVhcGkvKiBhbmQgZmFzdC9maWxlcy8qKSBzaG91bGQg
cGFzcy4KKworICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlOjpjYXB0dXJlU25hcHNob3QpOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVNZXRhZGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Rmls
ZU1ldGFkYXRhKTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1T
dXBwb3J0Lmg6CisgICAgICAgIChQbGF0Zm9ybVN1cHBvcnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9GaWxlU3lzdGVtR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVNZXRhZGF0
YSk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTWV0YWRhdGEpOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZU1l
dGFkYXRhKTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZVNpemVGcm9tRmluZERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0RmlsZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZU1vZGlmaWNh
dGlvblRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZU1ldGFkYXRhKTogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vd2luY2UvRmlsZVN5c3RlbVdpbkNFLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmdldEZpbGVTaXplRnJvbUZpbGVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEZp
bGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbGVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEZp
bGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OmdldEZpbGVNZXRhZGF0YSk6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL3d4L0ZpbGVTeXN0ZW1XeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTWV0YWRh
dGEpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA1LTIxICBWc2V2b2xvZCBW
bGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFRl
bXBvcmFyeSBVSVNvdXJjZUNvZGUgc2hvdWxkIGJlIHJlcGxhY2VkIGVhY2ggdGltZSBhbm90aGVy
IGlubGluZSBzY3JpcHQgaXMgYWRkZWQgaW4gUmF3U291cmNlQ29kZSB3aXRoIHBlbmRpbmcgcmVx
dWVzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggODQxZTZjYjY2M2RhYzYxMjA5MGNh
NjQ5YTc3NmE5NzQ4YjFiM2MzNC4uMjNiOGFiYzIyNDFiMTg4NzE1NTUxZTdjNDhiNTU2NDNjOWQz
ZmVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0w
NS0yMSAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2xl
YW51cDogYWRkIGEgZmlsZSBzeXN0ZW0gY2FsbCB3aGljaCBjYXB0dXJlcyB0aGUgZmlsZSBtZXRh
ZGF0YSBhdCBvbmNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1TdXBwb3J0OjpnZXRGaWxlTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTIt
MDUtMjAgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENs
ZWFudXA6IFJlbW92ZSBXZWJDb3JlOjpyZXZlYWxGb2xkZXJJbk9TKCkgd2hpY2ggaXMgbm8gbG9u
Z2VyIHVzZWQgYW55d2hlcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViRmlsZVV0aWxpdGllcy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJGaWxlVXRpbGl0aWVzLmgKaW5kZXggMGUyNzBkNzczZTNkODljOGZiZWExOGUyNjhhNTlm
OWY1ZDRhMjI4OC4uMjdkYzFlZTU3MzE3YTgxZTg4YzBkYzUxZWMwODcyMzFlZmFhNmI5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVz
LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVz
LmgKQEAgLTQxLDYgKzQxLDggQEAgdHlwZWRlZiB2b2lkICpIQU5ETEU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCitzdHJ1Y3QgV2ViRmlsZUluZm87CisKIGNsYXNzIFdlYkZpbGVVdGlsaXRpZXMg
ewogcHVibGljOgogI2lmZGVmIFdJTjMyCkBAIC01Myw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBXZWJT
dHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0KSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBXZWJTdHJpbmcmIHBhdGgs
IGRvdWJsZSYgcmVzdWx0KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRG
aWxlSW5mbyhjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZpbGVJbmZvJiByZXN1bHQpIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBX
ZWJTdHJpbmcmIHBhdGgpICB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgV2Vi
U3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGNv
bnN0IFdlYlN0cmluZyYgY29tcG9uZW50KSAgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KICAgICB2
aXJ0dWFsIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFdlYlN0cmluZyYgcGF0aCkgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4IGYyYWZhMzQ1NGEwY2Qz
M2NmNjE3YzQwNDc5NjhlYWU5OTdjMGVkMTQuLjA5ODA4NDgwN2QwYmEyY2NlMDJjMjM0MzdjOTgw
NzZmMWFkYTJhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAtMTY5LDEzICsxNjksMTUg
QEAgdm9pZCBGaWxlOjpjYXB0dXJlU25hcHNob3QobG9uZyBsb25nJiBzbmFwc2hvdFNpemUsIGRv
dWJsZSYgc25hcHNob3RNb2RpZmljYXRpb24KIAogICAgIC8vIE9idGFpbnMgYSBzbmFwc2hvdCBv
ZiB0aGUgZmlsZSBieSBjYXB0dXJpbmcgaXRzIGN1cnJlbnQgc2l6ZSBhbmQgbW9kaWZpY2F0aW9u
IHRpbWUuIFRoaXMgaXMgdXNlZCB3aGVuIHdlIHNsaWNlIGEgZmlsZSBmb3IgdGhlIGZpcnN0IHRp
bWUuCiAgICAgLy8gSWYgd2UgZmFpbCB0byByZXRyaWV2ZSB0aGUgc2l6ZSBvciBtb2RpZmljYXRp
b24gdGltZSwgcHJvYmFibHkgZHVlIHRvIHRoYXQgdGhlIGZpbGUgaGFzIGJlZW4gZGVsZXRlZCwg
MCBzaXplIGlzIHJldHVybmVkLgotICAgIC8vIEZJWE1FOiBDb21iaW5lIGdldEZpbGVTaXplIGFu
ZCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSBpbnRvIG9uZSBmaWxlIHN5c3RlbSBjYWxsLgotICAg
IHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOwotICAgIGlmICghZ2V0RmlsZVNpemUobV9wYXRoLCBz
bmFwc2hvdFNpemUpIHx8ICFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtX3BhdGgsIG1vZGlmaWNh
dGlvblRpbWUpKSB7CisgICAgRmlsZU1ldGFkYXRhIG1ldGFkYXRhOworICAgIGlmICghZ2V0Rmls
ZU1ldGFkYXRhKG1fcGF0aCwgbWV0YWRhdGEpKSB7CiAgICAgICAgIHNuYXBzaG90U2l6ZSA9IDA7
CiAgICAgICAgIHNuYXBzaG90TW9kaWZpY2F0aW9uVGltZSA9IDA7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIHNuYXBzaG90TW9kaWZpY2F0aW9uVGltZSA9IG1vZGlmaWNhdGlvblRpbWU7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBzbmFwc2hvdFNpemUgPSBtZXRhZGF0YS5sZW5ndGg7Cisg
ICAgc25hcHNob3RNb2RpZmljYXRpb25UaW1lID0gbWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZU1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0
YWRhdGEuaAppbmRleCA5OWZlMmYzMjYxM2YyYWFlOTYxMjI1ZTFmMDY0M2M4ZDI2NmIyYmI1Li5l
YzI4MTQ1YmFlNWIxYzgyNDg2NTMwMDExNTE0NWM0ZGI5ZmVmZjgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlTWV0YWRhdGEuaApAQCAtMzMsOCArMzMsNiBAQAogCiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RydWN0IEZpbGVNZXRhZGF0YSB7CkBAIC01NCwxMyArNTIsMTMgQEAg
c3RydWN0IEZpbGVNZXRhZGF0YSB7CiAKICAgICBUeXBlIHR5cGU7CiAKKyNpZiBFTkFCTEUoRklM
RV9TWVNURU0pCiAgICAgU3RyaW5nIHBsYXRmb3JtUGF0aDsKKyNlbmRpZiAvLyBFTkFCTEUoRklM
RV9TWVNURU0pCiAKICAgICBGaWxlTWV0YWRhdGEoKSA6IG1vZGlmaWNhdGlvblRpbWUoMC4wKSwg
bGVuZ3RoKC0xKSwgdHlwZShUeXBlVW5rbm93bikgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KICNlbmRpZiAvLyBGaWxl
TWV0YWRhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3Rl
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCmluZGV4IDQyZDc1MDBm
ZjBjOTEyMjY4YjJlNGVmOTQxYjI3NDZlYTRiMmQzNjAuLjIxZWNlMTEyMWYzMTdkYmJmZWQzYWU5
MTEwODc5MDFlZTBkMWM3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAg
LTE1MSwxMSArMTUxLDE0IEBAIHN0YXRpYyBjb25zdCBjaGFyIFBsYXRmb3JtRmlsZVBhdGhTZXBh
cmF0b3IgPSAnXFwnOwogc3RhdGljIGNvbnN0IGNoYXIgUGxhdGZvcm1GaWxlUGF0aFNlcGFyYXRv
ciA9ICcvJzsKICNlbmRpZgogCitzdHJ1Y3QgRmlsZU1ldGFkYXRhOworCiBib29sIGZpbGVFeGlz
dHMoY29uc3QgU3RyaW5nJik7CiBib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJik7CiBib29s
IGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogYm9vbCBnZXRGaWxlU2l6ZShj
b25zdCBTdHJpbmcmLCBsb25nIGxvbmcmIHJlc3VsdCk7CiBib29sIGdldEZpbGVNb2RpZmljYXRp
b25UaW1lKGNvbnN0IFN0cmluZyYsIHRpbWVfdCYgcmVzdWx0KTsKK2Jvb2wgZ2V0RmlsZU1ldGFk
YXRhKGNvbnN0IFN0cmluZyYsIEZpbGVNZXRhZGF0YSYpOwogU3RyaW5nIHBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KTsK
IGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCk7CiBTdHJpbmcgaG9t
ZURpcmVjdG9yeVBhdGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwCmluZGV4IGEzMjUxNWI0NzBiMDAwZWY5Y2Nj
MzVkYWNjZGI2YTA3YWY1YzA2ZTguLjk1NDNmNTQyNWIzMjBjOGJiOTQ2ZTU2ZTM0ZWE5MmI3Y2Nk
YTY0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZpbGVT
eXN0ZW1DaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
RmlsZVN5c3RlbUNocm9taXVtLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAorI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKQEAgLTU3LDYgKzU4LDE5IEBAIGJvb2wg
Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHJlc3Vs
dCkKICAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShw
YXRoLCByZXN1bHQpOwogfQogCitib29sIGdldEZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBh
dGgsIEZpbGVNZXRhZGF0YSYgcmVzdWx0KQoreworICAgIC8vIEZJWE1FOiBDYWxsIFBsYXRmb3Jt
U3VwcG9ydDo6Z2V0RmlsZU1ldGFkYXRhIG9uY2UgaXQgaXMgaW1wbGVtZW50ZWQuCisgICAgLy8g
cmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6Z2V0RmlsZU1ldGFkYXRhKHBhdGgsIHJlc3VsdCk7Cisg
ICAgaWYgKCFQbGF0Zm9ybVN1cHBvcnQ6OmdldEZpbGVTaXplKHBhdGgsIHJlc3VsdC5sZW5ndGgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Cisg
ICAgaWYgKCFQbGF0Zm9ybVN1cHBvcnQ6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgsIG1v
ZGlmaWNhdGlvblRpbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0Lm1vZGlm
aWNhdGlvblRpbWUgPSBtb2RpZmljYXRpb25UaW1lOworICAgIHJldHVybiB0cnVlOworfQorCiBT
dHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgcmV0dXJuIFBs
YXRmb3JtU3VwcG9ydDo6ZGlyZWN0b3J5TmFtZShwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKaW5kZXggZjhiNWI3ZTk4N2M2
ZjM2Y2E5NDUxNzE0OTgwMTI2ZTNlMWFiYWE1Ny4uMjhjNWEyMDQzNmM5MmZkMzYyZWU2NzhiM2Zm
YjE4NGRhNTE0ODA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vUGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vUGxhdGZvcm1TdXBwb3J0LmgKQEAgLTEyNyw2ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGlj
IGJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiwgbG9uZyBsb25nJiByZXN1bHQpOwogICAg
IHN0YXRpYyBib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYsIHRpbWVf
dCYgcmVzdWx0KTsKKyAgICBzdGF0aWMgYm9vbCBnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5n
JiwgRmlsZU1ldGFkYXRhJiByZXN1bHQpOwogICAgIHN0YXRpYyBTdHJpbmcgZGlyZWN0b3J5TmFt
ZShjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIHN0YXRpYyBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpOwog
ICAgIHN0YXRpYyBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwCmluZGV4IGEz
YjQ0OGRmNDcyZjY0MzJlOGEwYzM4YjNkYjA4MzYyMTM1MzQxOGMuLjQyMzVkYzRhY2ZhMGJkNzBk
NWZmYzI1NjJlZDQ3ZjgwOTFmYWNiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRmlsZVN5c3RlbUd0ay5jcHAKQEAgLTIzLDE0ICsyMywxNSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dP
d25QdHIuaD4KKyNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogI2luY2x1ZGUgIlVVSUQuaCIKICNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVk
ZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR2xpYlV0aWxpdGllcy5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR2xp
YlV0aWxpdGllcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMTQxLDYgKzE0MiwyNCBAQCBib29sIGdldEZpbGVNb2RpZmljYXRpb25U
aW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiBtb2RpZmllZFRpbWUpCiAKIH0KIAorYm9v
bCBnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlTWV0YWRhdGEmIG1ldGFk
YXRhKQoreworICAgIENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cGF0aCk7CisgICAgaWYgKGZpbGVuYW1lLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBzdHJ1Y3Qgc3RhdCBzdGF0UmVzdWx0OworICAgIGdpbnQgcmVzdWx0ID0gZ19zdGF0
KGZpbGVuYW1lLmRhdGEoKSwgJnN0YXRSZXN1bHQpOworICAgIGlmIChyZXN1bHQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIG1ldGFkYXRhLm1vZGlmaWNhdGlvblRpbWUgPSBzdGF0UmVz
dWx0LnN0X210aW1lOworICAgIG1ldGFkYXRhLmxlbmd0aCA9IHN0YXRSZXN1bHQuc3Rfc2l6ZTsK
KyAgICBtZXRhZGF0YS50eXBlID0gU19JU0RJUihzdGF0UmVzdWx0LnN0X21vZGUpID8gRmlsZU1l
dGFkYXRhOjpUeXBlRGlyZWN0b3J5IDogRmlsZU1ldGFkYXRhOjpUeXBlRmlsZTsKKyAgICByZXR1
cm4gdHJ1ZTsKKworfQorCiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiB7CiAgICAgaWYgKHBhdGguZW5k
c1dpdGgoR19ESVJfU0VQQVJBVE9SX1MpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggZmRhODEyNjViNWNkM2ZhZjFlMTkzYmMz
MDEwYjNiODExMGI3NTExZS4uOThkYWY0NTNlYzU5OGU2ZTQ5NzhkNWQ1MTEwNWRkNjRiYTIwNTk0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBP
U0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9T
SVguY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgogCisjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDxkaXJlbnQuaD4KICNpbmNsdWRlIDxlcnJuby5oPgpA
QCAtMTgxLDYgKzE4MiwyMyBAQCBib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0
cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wg
Z2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU1ldGFkYXRhJiByZXN1bHQp
Cit7CisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsK
KworICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKKyAgICBpZiAo
c3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJlc3VsdC5tb2RpZmljYXRpb25UaW1lID0gZmlsZUluZm8uc3RfbXRpbWU7CisgICAgcmVz
dWx0Lmxlbmd0aCA9IGZpbGVJbmZvLnN0X3NpemU7CisgICAgcmVzdWx0LnR5cGUgPSBTX0lTRElS
KGZpbGVJbmZvLnN0X21vZGUpID8gRmlsZU1ldGFkYXRhOjpUeXBlRGlyZWN0b3J5IDogRmlsZU1l
dGFkYXRhOjpUeXBlRmlsZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogU3RyaW5nIHBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9u
ZW50KQogewogICAgIGlmIChwYXRoLmVuZHNXaXRoKCcvJykpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNwcAppbmRleCAzMjY0NGQxNzhiYmQ2ZTJjOWUwZWJhM2Vl
MTRjNTQzOGYyYzc0YjFkLi4zMzlmZDYzNTY5NGQ3ZGRlMjc0ZTk1OGIxNDJmZjI2MDg5ZjdhOTI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgi
CiAKKyNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgogI2luY2x1ZGUgPFFEYXRlVGltZT4KICNpbmNsdWRlIDxRRGlyPgpAQCAtNzMsNiArNzQsMTUg
QEAgYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVf
dCYgcmVzdWx0KQogICAgIHJldHVybiBpbmZvLmV4aXN0cygpOwogfQogCitib29sIGdldEZpbGVN
ZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVNZXRhZGF0YSYgcmVzdWx0KQoreworICAg
IFFGaWxlSW5mbyBpbmZvKHBhdGgpOworICAgIHJlc3VsdC5tb2RpZmljYXRpb25UaW1lID0gaW5m
by5sYXN0TW9kaWZpZWQoKS50b1RpbWVfdCgpOworICAgIHJlc3VsdC5sZW5ndGggPSBpbmZvLnNp
emUoKTsKKyAgICByZXN1bHQudHlwZSA9IGluZm8uaXNEaXIoKSA/IEZpbGVNZXRhZGF0YTo6VHlw
ZURpcmVjdG9yeSA6IEZpbGVNZXRhZGF0YTo6VHlwZUZpbGU7CisgICAgcmV0dXJuIGluZm8uZXhp
c3RzKCk7Cit9CisKIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkK
IHsKICAgICByZXR1cm4gUURpcjo6cm9vdCgpLm1rcGF0aChwYXRoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCA0Y2U1MTg3NzEyMzUzZTkw
YzBkMTU2Zjg1NDE5ZmNiMDVkYjM3ZmFjLi41NWJjZmQ2MzU2Y2JiOGNjOGFlNzdjZTkzNDhjZTE0
NDI5NWYxNDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1X
aW4uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgogCisjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYXRoV2Fsa2VyLmgiCiAjaW5jbHVkZSA8d3RmL0Ny
eXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CkBAIC01NCwxMiArNTUsOCBAQCBzdGF0aWMg
Ym9vbCBnZXRGaW5kRGF0YShTdHJpbmcgcGF0aCwgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBw
YXRoLCBsb25nIGxvbmcmIHJlc3VsdCkKK3N0YXRpYyBib29sIGdldEZpbGVTaXplRnJvbUZpbmRE
YXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZpbmREYXRhLCBsb25nIGxvbmcmIHJlc3VsdCkK
IHsKLSAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwotICAgIGlmICghZ2V0RmluZERhdGEo
cGF0aCwgZmluZERhdGEpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBVTEFSR0VfSU5U
RUdFUiBmaWxlU2l6ZTsKICAgICBmaWxlU2l6ZS5IaWdoUGFydCA9IGZpbmREYXRhLm5GaWxlU2l6
ZUhpZ2g7CiAgICAgZmlsZVNpemUuTG93UGFydCA9IGZpbmREYXRhLm5GaWxlU2l6ZUxvdzsKQEAg
LTcxLDE4ICs2OCw1MSBAQCBib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9u
ZyBsb25nJiByZXN1bHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBib29sIGdldEZp
bGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZp
bmREYXRhLCB0aW1lX3QmIHJlc3VsdCkKK3sKKyAgICBVTEFSR0VfSU5URUdFUiBmaWxlVGltZTsK
KyAgICBmaWxlVGltZS5IaWdoUGFydCA9IGZpbmREYXRhLmZ0TGFzdFdyaXRlVGltZS5kd0hpZ2hE
YXRlVGltZTsKKyAgICBmaWxlVGltZS5Mb3dQYXJ0ID0gZmluZERhdGEuZnRMYXN0V3JpdGVUaW1l
LmR3TG93RGF0ZVRpbWU7CisKKyAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCBjb252ZXJ0aW5nIHRp
bWVfdCB0byBGaWxlVGltZSBpcyBhdmFpbGFibGUgYXQgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNv
bS9lbi11cy9saWJyYXJ5L21zNzI0MjI4JTI4dj12cy44NSUyOS5hc3B4CisgICAgcmVzdWx0ID0g
ZmlsZVRpbWUuUXVhZFBhcnQgLyAxMDAwMDAwMCAtIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1l
dDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcm
IHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0KQoreworICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERh
dGE7CisgICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiBnZXRGaWxlU2l6ZUZyb21GaW5kRGF0YShmaW5kRGF0YSwg
cmVzdWx0KTsKK30KKwogYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcm
IHBhdGgsIHRpbWVfdCYgcmVzdWx0KQogewogICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7
CiAgICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVTaXplOwotICAgIGZpbGVTaXplLkhpZ2hQ
YXJ0ID0gZmluZERhdGEuZnRMYXN0V3JpdGVUaW1lLmR3SGlnaERhdGVUaW1lOwotICAgIGZpbGVT
aXplLkxvd1BhcnQgPSBmaW5kRGF0YS5mdExhc3RXcml0ZVRpbWUuZHdMb3dEYXRlVGltZTsKKyAg
ICByZXR1cm4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoZmluZERhdGEsIHJl
c3VsdCk7Cit9CisKK2Jvb2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwgRmls
ZU1ldGFkYXRhJiByZXN1bHQpCit7CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAg
ICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFnZXRGaWxlU2l6ZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgcmVzdWx0Lmxl
bmd0aCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHRpbWVfdCBtb2RpZmljYXRpb25U
aW1lOworICAgIGlmICghZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoZmluZERh
dGEsIG1vZGlmaWNhdGlvblRpbWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0
Lm1vZGlmaWNhdGlvblRpbWUgPSBtb2RpZmljYXRpb25UaW1lOworCisgICAgcmVzdWx0LnR5cGUg
PSAoZmluZERhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkg
PyBGaWxlTWV0YWRhdGE6OlR5cGVEaXJlY3RvcnkgOiBGaWxlTWV0YWRhdGE6OlR5cGVGaWxlOwog
Ci0gICAgLy8gSW5mb3JtYXRpb24gYWJvdXQgY29udmVydGluZyB0aW1lX3QgdG8gRmlsZVRpbWUg
aXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9t
czcyNDIyOCUyOHY9dnMuODUlMjkuYXNweAotICAgIHJlc3VsdCA9IGZpbGVTaXplLlF1YWRQYXJ0
IC8gMTAwMDAwMDAgLSBrU2Vjb25kc0Zyb21GaWxlVGltZVRvVGltZXQ7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0ZpbGVT
eXN0ZW1XaW5DRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9GaWxlU3lzdGVt
V2luQ0UuY3BwCmluZGV4IDRjN2ExZGZkNjkyNjFjODUyZjFiNTI3NGQzYjg5ZTdmYjQ4MzM0NWUu
LmU5NTlkZWY3ODg2NmNmOTBmOWQ2MGE2ZGEyYjAxY2I4OTI5MzMzMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0ZpbGVTeXN0ZW1XaW5DRS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRmlsZVN5c3RlbVdpbkNFLmNwcApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAor
I2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAj
aW5jbHVkZSA8d2luY3J5cHQuaD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC02OCwzMSArNjks
NTQgQEAgc3RhdGljIGJvb2wgZ2V0RmlsZUluZm8oY29uc3QgU3RyaW5nJiBwYXRoLCBCWV9IQU5E
TEVfRklMRV9JTkZPUk1BVElPTiYgZmlsZUluZm8KICAgICByZXR1cm4gcnRuOwogfQogCitzdGF0
aWMgdm9pZCBnZXRGaWxlU2l6ZUZyb21GaWxlSW5mbyhjb25zdCBCWV9IQU5ETEVfRklMRV9JTkZP
Uk1BVElPTiYgZmlsZUluZm8sIGxvbmcgbG9uZyYgcmVzdWx0KQoreworICAgIFVMQVJHRV9JTlRF
R0VSIGZpbGVTaXplOworICAgIGZpbGVTaXplLkxvd1BhcnQgPSBmaWxlSW5mby5uRmlsZVNpemVM
b3c7CisgICAgZmlsZVNpemUuSGlnaFBhcnQgPSBmaWxlSW5mby5uRmlsZVNpemVIaWdoOworICAg
IHJlc3VsdCA9IGZpbGVTaXplLlF1YWRQYXJ0OworfQorCitzdGF0aWMgdm9pZCBnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZUZyb21GaWxlSW5mbyhjb25zdCBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElP
TiYgZmlsZUluZm8sIHRpbWVfdCYgcmVzdWx0KQoreworICAgIFVMQVJHRV9JTlRFR0VSIHQ7Cisg
ICAgbWVtY3B5KCZ0LCAmZmlsZUluZm8uZnRMYXN0V3JpdGVUaW1lLCBzaXplb2YodCkpOworICAg
IHJlc3VsdCA9IHQuUXVhZFBhcnQgKiAwLjAwMDAwMDEgLSAxMTY0NDQ3MzYwMC4wOworfQorCiBi
b29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHQpCiB7
CiAgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gZmlsZUluZm9ybWF0aW9uOwogICAgIGlm
ICghZ2V0RmlsZUluZm8ocGF0aCwgZmlsZUluZm9ybWF0aW9uKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgVUxBUkdFX0lOVEVHRVIgZmlsZVNpemU7Ci0gICAgZmlsZVNpemUuTG93UGFy
dCA9IGZpbGVJbmZvcm1hdGlvbi5uRmlsZVNpemVMb3c7Ci0gICAgZmlsZVNpemUuSGlnaFBhcnQg
PSBmaWxlSW5mb3JtYXRpb24ubkZpbGVTaXplSGlnaDsKKyAgICBnZXRGaWxlU2l6ZUZyb21GaWxl
SW5mbyhmaWxlSW5mb3JtYXRpb24sIHJlc3VsdCk7CisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAg
ICByZXN1bHQgPSBmaWxlU2l6ZS5RdWFkUGFydDsKK2Jvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRp
bWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHJlc3VsdCkKK3sKKyAgICBCWV9IQU5ETEVf
RklMRV9JTkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb247CisgICAgaWYgKCFnZXRGaWxlSW5mbyhw
YXRoLCBmaWxlSW5mb3JtYXRpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBnZXRG
aWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaWxlSW5mbyhmaWxlSW5mb3JtYXRpb24sIHJlc3VsdCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29u
c3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHJlc3VsdCkKK2Jvb2wgZ2V0RmlsZU1ldGFkYXRhKGNv
bnN0IFN0cmluZyYgcGF0aCwgRmlsZU1ldGFkYXRhJiByZXN1bHQpCiB7CiAgICAgQllfSEFORExF
X0ZJTEVfSU5GT1JNQVRJT04gZmlsZUluZm9ybWF0aW9uOwogICAgIGlmICghZ2V0RmlsZUluZm8o
cGF0aCwgZmlsZUluZm9ybWF0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgVUxB
UkdFX0lOVEVHRVIgdDsKLSAgICBtZW1jcHkoJnQsICZmaWxlSW5mb3JtYXRpb24uZnRMYXN0V3Jp
dGVUaW1lLCBzaXplb2YodCkpOwotICAgIAotICAgIHJlc3VsdCA9IHQuUXVhZFBhcnQgKiAwLjAw
MDAwMDEgLSAxMTY0NDQ3MzYwMC4wOworICAgIGdldEZpbGVTaXplRnJvbUZpbGVJbmZvKGZpbGVJ
bmZvcm1hdGlvbiwgcmVzdWx0Lmxlbmd0aCk7CisKKyAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGlt
ZTsKKyAgICBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaWxlSW5mbyhmaWxlSW5mb3JtYXRp
b24sIG1vZGlmaWNhdGlvblRpbWUpOworICAgIHJlc3VsdC5tb2RpZmljYXRpb25UaW1lID0gbW9k
aWZpY2F0aW9uVGltZTsKKworICAgIHJlc3VsdC50eXBlID0gKGZpbGVJbmZvcm1hdGlvbi5kd0Zp
bGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSA/IEZpbGVNZXRhZGF0YTo6
VHlwZURpcmVjdG9yeSA6IEZpbGVNZXRhZGF0YTo6VHlwZUZpbGU7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L0ZpbGVTeXN0ZW1X
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9GaWxlU3lzdGVtV3guY3BwCmluZGV4
IGJiZWM5ZmUxNDliNGY0ZThiNzg2ZTk2MzcwZTgwM2NiOWM2ZTM4ZDAuLjhlOTBjNDZjOTQ2OWM0
NDlhOTllNWIxZjgxZDg5NTMxMWYwN2JjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3d4L0ZpbGVTeXN0ZW1XeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d3gvRmlsZVN5c3RlbVd4LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAorI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgog
I2luY2x1ZGUgPHd4L3d4Lmg+CiAjaW5jbHVkZSA8d3gvZGF0ZXRpbWUuaD4KICNpbmNsdWRlIDx3
eC9kaXIuaD4KQEAgLTg1LDYgKzg2LDE3IEBAIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUo
Y29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiti
b29sIGdldEZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVNZXRhZGF0YSYgdCkK
K3sKKyAgICBpZiAoIXd4RmlsZUV4aXN0cyhwYXRoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHd4RmlsZU5hbWUgZmlsZU5hbWUocGF0aCk7CisgICAgdC5sZW5ndGggPSBmaWxlTmFtZS5H
ZXRTaXplKCk7CisgICAgdC5tb2RpZmljYXRpb25UaW1lID0gZmlsZU5hbWUuR2V0TW9kaWZpY2F0
aW9uVGltZSgpLkdldFRpY2tzKCk7CisgICAgdC50eXBlID0gZmlsZU5hbWUuSXNEaXIoKSA/IEZp
bGVNZXRhZGF0YTo6VHlwZURpcmVjdG9yeSA6IEZpbGVNZXRhZGF0YTo6VHlwZUZpbGU7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKICAgICByZXR1cm4gd3hGaWxlTmFtZTo6TWtkaXIocGF0aCwgMDc3Nywgd3hQQVRI
X01LRElSX0ZVTEwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxh
dGZvcm1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3Vw
cG9ydC5jcHAKaW5kZXggZWVhYjc4NjE5NjZiZjQxODMzZTlhMzhhMmFiNzRkZTA1ZTExNzg2NC4u
Mzg1MzFmNWE1ZjBiOTgyMzRjYjJmM2ViNmM3M2JkYTBkNjAwYzAyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCkBAIC0zNSw3ICszNSw5IEBA
CiAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnRJbXBsLmgiCisj
aW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIldl
YkZpbGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIldl
YkZyYW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCkBAIC0zMjgsNiArMzMw
LDE3IEBAIGJvb2wgUGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25z
dCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgcmVzdWx0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jv
b2wgUGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBG
aWxlTWV0YWRhdGEmIHJlc3VsdCkKK3sKKyAgICBXZWJGaWxlSW5mbyB3ZWJGaWxlSW5mbzsKKyAg
ICBpZiAoIXdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5maWxlVXRpbGl0aWVzKCktPmdldEZpbGVJ
bmZvKHBhdGgsIHdlYkZpbGVJbmZvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3Vs
dC5tb2RpZmljYXRpb25UaW1lID0gd2ViRmlsZUluZm8ubW9kaWZpY2F0aW9uVGltZTsKKyAgICBy
ZXN1bHQubGVuZ3RoID0gd2ViRmlsZUluZm8ubGVuZ3RoOworICAgIHJlc3VsdC50eXBlID0gc3Rh
dGljX2Nhc3Q8RmlsZU1ldGFkYXRhOjpUeXBlPih3ZWJGaWxlSW5mby50eXBlKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogU3RyaW5nIFBsYXRmb3JtU3VwcG9ydDo6ZGlyZWN0b3J5TmFtZShjb25z
dCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQo
KS0+ZmlsZVV0aWxpdGllcygpLT5kaXJlY3RvcnlOYW1lKHBhdGgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143059</attachid>
            <date>2012-05-21 10:55:31 -0700</date>
            <delta_ts>2012-05-24 02:20:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86995-20120522025530.patch</filename>
            <type>text/plain</type>
            <size>26980</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3ODAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2ZDEwNDk4ZjdlYTM0
NGUxNDI2ODEzYmU1MzJjZTY3MzMxMzJiNTIxLi41ODdkNzcyNDYwZTVkNThhYzFlOWM2MTEzNmIw
YjVjZWVlODRiZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNS0yMSAg
S2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2xlYW51cDog
YWRkIGEgZmlsZSBzeXN0ZW0gY2FsbCB3aGljaCBjYXB0dXJlcyB0aGUgZmlsZSBtZXRhZGF0YSBh
dCBvbmNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFBsYXRmb3JtLmd5cGk6IEFkZGVkIGFuIGVudHJ5IGZvciBXZWJGaWxlSW5mby5oLgorICAgICAg
ICAqIGNocm9taXVtL3B1YmxpYy9XZWJGaWxlSW5mby5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUluZm8uaC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
RmlsZUluZm86OldlYkZpbGVJbmZvKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViRmls
ZVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRmls
ZVV0aWxpdGllczo6Z2V0RmlsZUluZm8pOiBBZGRlZC4KKwogMjAxMi0wNS0xNyAgTWFyayBQaWxn
cmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBNb3ZlIFdl
YiBXb3JrZXJzIG1ldGhvZHMgdG8gUGxhdGZvcm0uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZkZWFhMTAzOWYy
MDNjZTM5NmNkODQ0MDc1ZDJlZWU0N2ZiY2JlMTguLjA1OTFhNGI3YjRjOWVhOWExMDYxZjllMWI2
YmM3MjU1NzdkZDdkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMi0wNS0yMSAg
S2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2xlYW51cDog
YWRkIGEgZmlsZSBzeXN0ZW0gY2FsbCB3aGljaCBjYXB0dXJlcyB0aGUgZmlsZSBtZXRhZGF0YSBh
dCBvbmNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
dXJyZW50IEZpbGUuc2xpY2UoKSAod2Via2l0U2xpY2UoKSkgaW1wbGVtZW50YXRpb24gY2FsbHMg
dHdvIHNlcGFyYXRlIHBsYXRmb3JtIGNhbGxzLAorICAgICAgICBnZXRGaWxlU2l6ZSgpIGFuZCBn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgpIFtib3RoIGFyZSBkZWZpbmVkIGluIHBsYXRmb3JtL0Zp
bGVTeXN0ZW0uaF0sCisgICAgICAgIHRvIGNhcHR1cmUgdGhlIGZpbGUgbWV0YWRhdGEsIGJ1dCB3
ZSBzaG91bGQgaGF2ZSBhIHNpbmdsZSBmaWxlIHN5c3RlbSBjYWxsIHRvIGdldCB0aGVtIGF0IG9u
Y2UKKyAgICAgICAgZm9yIHR3byByZWFzb25zOiAxLiBzYXZlIGFkZGl0aW9uYWwgc3lzdGVtIGNh
bGwgY29zdHMsIGFuZCAyLiAgYXRvbWljYWxseSBvYnRhaW4gdGhlIGZpbGUgbWV0YWRhdGEuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzOiBleGlzdGluZyB0ZXN0cyAoaHR0cC90ZXN0cy9sb2NhbC9m
aWxlYXBpLyogYW5kIGZhc3QvZmlsZXMvKikgc2hvdWxkIHBhc3MuCisKKyAgICAgICAgKiBmaWxl
YXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y2FwdHVyZVNuYXBzaG90KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9G
aWxlU3lzdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVNZXRhZGF0YSk6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAoUGxh
dGZvcm1TdXBwb3J0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTWV0YWRhdGEpOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
RmlsZU1ldGFkYXRhKTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVNZXRhZGF0YSk6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omdl
dEZpbGVTaXplRnJvbUZpbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVNb2RpZmlj
YXRpb25UaW1lRnJvbUZpbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OmdldEZpbGVNZXRhZGF0YSk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNl
L0ZpbGVTeXN0ZW1XaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlU2l6ZUZyb21G
aWxlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21G
aWxlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxl
TWV0YWRhdGEpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93eC9GaWxlU3lzdGVtV3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZU1ldGFkYXRhKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKwogMjAxMi0wNS0yMSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiByZWZhY3RvciByZXZpc2lvbiBoaXN0b3J5
IHRvIG5vdCBpbmNsdWRlIHJlc291cmNlIGl0c2VsZi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggYjZmNGY3OGM3NmQwN2VjYWMyMTc3MTllMWExNzgxYTI3OWIyYjg0MC4uODUyNjJjMWEw
YjZjNzE0Y2M0YzQ5ZmFiNTY1NjAzOWYxZDYzNDVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNS0yMSAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2xlYW51cDogYWRkIGEgZmlsZSBzeXN0ZW0gY2FsbCB3
aGljaCBjYXB0dXJlcyB0aGUgZmlsZSBtZXRhZGF0YSBhdCBvbmNlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY5OTUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxlTWV0YWRhdGEpOgor
ICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDUtMTggIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hh
ZWxuQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBEb21TdG9yYWdlIGV2ZW50cyBo
YW5kbGluZyBuZWVkcyBUTEMgKDIpDQpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL1BsYXRm
b3JtLmd5cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQppbmRleCBjMDhkOTUyMzIx
ZTBmOWJjMmE5ODY1OGU2ZmJhYjMwMDkwM2VkYjIzLi4xZjllNTQxNmU4MTlhOTc4ZjYzZmY3ZmZl
NDU3MjBlYjhmMWMyZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lw
aQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpAQCAtNDYsNiArNDYsNyBAQAog
ICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJEYXRhLmgnLAogICAgICAgICAgICAgJ2No
cm9taXVtL3B1YmxpYy9XZWJEcmFnRGF0YS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJs
aWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYkZpbGVJbmZvLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJGaWxl
U3lzdGVtLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVz
LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZpbGVJbmZv
LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZpbGVJbmZvLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDMyNmUwNjkwOGE2MGUzMzQ3MjQxOGNhNmJlZjAxMjc1ZGJlOTIyMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUluZm8uaApA
QCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJGaWxlSW5mb19oCisjZGVmaW5lIFdlYkZpbGVJbmZv
X2gKKworI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3Ry
dWN0IFdlYkZpbGVJbmZvIHsKKyAgICAvLyBUaGUgbGFzdCBtb2RpZmljYXRpb24gdGltZSBvZiB0
aGUgZmlsZSwgaW4gc2Vjb25kcy4KKyAgICAvLyBUaGUgdmFsdWUgMC4wIG1lYW5zIHRoYXQgdGhl
IHRpbWUgaXMgbm90IHNldC4KKyAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZTsKKworICAgIC8v
IFRoZSBsZW5ndGggb2YgdGhlIGZpbGUgaW4gYnl0ZXMuCisgICAgLy8gVGhlIHZhbHVlIC0xIG1l
YW5zIHRoYXQgdGhlIGxlbmd0aCBpcyBub3Qgc2V0LgorICAgIGxvbmcgbG9uZyBsZW5ndGg7CisK
KyAgICBlbnVtIFR5cGUgeworICAgICAgICBUeXBlVW5rbm93biA9IDAsCisgICAgICAgIFR5cGVG
aWxlLAorICAgICAgICBUeXBlRGlyZWN0b3J5CisgICAgfTsKKworICAgIFR5cGUgdHlwZTsKKwor
ICAgIFdlYlN0cmluZyBwbGF0Zm9ybVBhdGg7CisKKyAgICBXZWJGaWxlSW5mbygpIDogbW9kaWZp
Y2F0aW9uVGltZSgwLjApLCBsZW5ndGgoLTEpLCB0eXBlKFR5cGVVbmtub3duKSB7IH0KK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVV0aWxpdGllcy5oIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmgKaW5kZXggMGUyNzBkNzczZTNkODlj
OGZiZWExOGUyNjhhNTlmOWY1ZDRhMjI4OC4uZDkwMTdmMjY4Y2JlMDE0MjI3NGU5OWFmNTU3NDI0
OWY2YWQxZTgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJGaWxlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJGaWxlVXRpbGl0aWVzLmgKQEAgLTQxLDYgKzQxLDggQEAgdHlwZWRlZiB2b2lkICpIQU5ETEU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdHJ1Y3QgV2ViRmlsZUluZm87CisKIGNsYXNzIFdl
YkZpbGVVdGlsaXRpZXMgewogcHVibGljOgogI2lmZGVmIFdJTjMyCkBAIC01MSw4ICs1MywxMCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGZpbGVFeGlzdHMoY29uc3QgV2ViU3RyaW5nJiBw
YXRoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVGaWxlKGNvbnN0
IFdlYlN0cmluZyYgcGF0aCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGVs
ZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSB7IHJldHVybiBmYWxzZTsg
fQorICAgIC8vIEZJWE1FOiBEZXByZWNhdGUgZ2V0RmlsZVNpemUgYW5kIGdldEZpbGVNb2RpZmlj
YXRpb25UaW1lIG9uY2UgZ2V0RmlsZUluZm8gaXMgaW1wbGVtZW50ZWQuCiAgICAgdmlydHVhbCBi
b29sIGdldEZpbGVTaXplKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHQp
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGdldEZpbGVNb2RpZmljYXRpb25U
aW1lKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgZG91YmxlJiByZXN1bHQpIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIGdldEZpbGVJbmZvKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwg
V2ViRmlsZUluZm8mIHJlc3VsdCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIFdlYlN0
cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFdlYlN0cmluZyYgcGF0aCkgIHsgcmV0dXJuIFdlYlN0
cmluZygpOyB9CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgY29uc3QgV2ViU3RyaW5nJiBjb21wb25lbnQpICB7IHJl
dHVybiBXZWJTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMo
Y29uc3QgV2ViU3RyaW5nJiBwYXRoKSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZS5jcHAKaW5kZXggZjJhZmEzNDU0YTBjZDMzY2Y2MTdjNDA0Nzk2OGVhZTk5N2MwZWQxNC4uMDk4
MDg0ODA3ZDBiYTJjY2UwMmMyMzQzN2M5ODA3NmYxYWRhMmEyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGUuY3BwCkBAIC0xNjksMTMgKzE2OSwxNSBAQCB2b2lkIEZpbGU6OmNhcHR1cmVTbmFwc2hvdChs
b25nIGxvbmcmIHNuYXBzaG90U2l6ZSwgZG91YmxlJiBzbmFwc2hvdE1vZGlmaWNhdGlvbgogCiAg
ICAgLy8gT2J0YWlucyBhIHNuYXBzaG90IG9mIHRoZSBmaWxlIGJ5IGNhcHR1cmluZyBpdHMgY3Vy
cmVudCBzaXplIGFuZCBtb2RpZmljYXRpb24gdGltZS4gVGhpcyBpcyB1c2VkIHdoZW4gd2Ugc2xp
Y2UgYSBmaWxlIGZvciB0aGUgZmlyc3QgdGltZS4KICAgICAvLyBJZiB3ZSBmYWlsIHRvIHJldHJp
ZXZlIHRoZSBzaXplIG9yIG1vZGlmaWNhdGlvbiB0aW1lLCBwcm9iYWJseSBkdWUgdG8gdGhhdCB0
aGUgZmlsZSBoYXMgYmVlbiBkZWxldGVkLCAwIHNpemUgaXMgcmV0dXJuZWQuCi0gICAgLy8gRklY
TUU6IENvbWJpbmUgZ2V0RmlsZVNpemUgYW5kIGdldEZpbGVNb2RpZmljYXRpb25UaW1lIGludG8g
b25lIGZpbGUgc3lzdGVtIGNhbGwuCi0gICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAg
aWYgKCFnZXRGaWxlU2l6ZShtX3BhdGgsIHNuYXBzaG90U2l6ZSkgfHwgIWdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKG1fcGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpIHsKKyAgICBGaWxlTWV0YWRhdGEg
bWV0YWRhdGE7CisgICAgaWYgKCFnZXRGaWxlTWV0YWRhdGEobV9wYXRoLCBtZXRhZGF0YSkpIHsK
ICAgICAgICAgc25hcHNob3RTaXplID0gMDsKICAgICAgICAgc25hcHNob3RNb2RpZmljYXRpb25U
aW1lID0gMDsKLSAgICB9IGVsc2UKLSAgICAgICAgc25hcHNob3RNb2RpZmljYXRpb25UaW1lID0g
bW9kaWZpY2F0aW9uVGltZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNuYXBzaG90
U2l6ZSA9IG1ldGFkYXRhLmxlbmd0aDsKKyAgICBzbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUgPSBt
ZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oCmluZGV4IDk5ZmUyZjMyNjEzZjJhYWU5
NjEyMjVlMWYwNjQzYzhkMjY2YjJiYjUuLmVjMjgxNDViYWU1YjFjODI0ODY1MzAwMTE1MTQ1YzRk
YjlmZWZmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oCkBAIC0zMyw4
ICszMyw2IEBACiAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIEVOQUJM
RShGSUxFX1NZU1RFTSkKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRmlsZU1ldGFk
YXRhIHsKQEAgLTU0LDEzICs1MiwxMyBAQCBzdHJ1Y3QgRmlsZU1ldGFkYXRhIHsKIAogICAgIFR5
cGUgdHlwZTsKIAorI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICBTdHJpbmcgcGxhdGZvcm1Q
YXRoOworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKIAogICAgIEZpbGVNZXRhZGF0YSgp
IDogbW9kaWZpY2F0aW9uVGltZSgwLjApLCBsZW5ndGgoLTEpLCB0eXBlKFR5cGVVbmtub3duKSB7
IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShGSUxF
X1NZU1RFTSkKLQogI2VuZGlmIC8vIEZpbGVNZXRhZGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlU3lzdGVtLmgKaW5kZXggNDJkNzUwMGZmMGM5MTIyNjhiMmU0ZWY5NDFiMjc0NmVhNGIyZDM2
MC4uMjFlY2UxMTIxZjMxN2RiYmZlZDNhZTkxMTA4NzkwMWVlMGQxYzcxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaApAQCAtMTUxLDExICsxNTEsMTQgQEAgc3RhdGljIGNvbnN0
IGNoYXIgUGxhdGZvcm1GaWxlUGF0aFNlcGFyYXRvciA9ICdcXCc7CiBzdGF0aWMgY29uc3QgY2hh
ciBQbGF0Zm9ybUZpbGVQYXRoU2VwYXJhdG9yID0gJy8nOwogI2VuZGlmCiAKK3N0cnVjdCBGaWxl
TWV0YWRhdGE7CisKIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmKTsKIGJvb2wgZGVsZXRl
RmlsZShjb25zdCBTdHJpbmcmKTsKIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJik7CiBib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYsIGxvbmcgbG9uZyYgcmVzdWx0
KTsKIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiwgdGltZV90JiBy
ZXN1bHQpOworYm9vbCBnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiwgRmlsZU1ldGFkYXRh
Jik7CiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBjb21wb25lbnQpOwogYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3Qg
U3RyaW5nJiBwYXRoKTsKIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAK
aW5kZXggYTMyNTE1YjQ3MGIwMDBlZjljY2MzNWRhY2NkYjZhMDdhZjVjMDZlOC4uOTU0M2Y1NDI1
YjMyMGM4YmI5NDZlNTZlMzRlYTkyYjdjY2RhNjRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgog
CisjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5o
IgpAQCAtNTcsNiArNTgsMTkgQEAgYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBT
dHJpbmcmIHBhdGgsIHRpbWVfdCYgcmVzdWx0KQogICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6
OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgsIHJlc3VsdCk7CiB9CiAKK2Jvb2wgZ2V0Rmls
ZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU1ldGFkYXRhJiByZXN1bHQpCit7Cisg
ICAgLy8gRklYTUU6IENhbGwgUGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxlTWV0YWRhdGEgb25jZSBp
dCBpcyBpbXBsZW1lbnRlZC4KKyAgICAvLyByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxl
TWV0YWRhdGEocGF0aCwgcmVzdWx0KTsKKyAgICBpZiAoIVBsYXRmb3JtU3VwcG9ydDo6Z2V0Rmls
ZVNpemUocGF0aCwgcmVzdWx0Lmxlbmd0aCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB0
aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKKyAgICBpZiAoIVBsYXRmb3JtU3VwcG9ydDo6Z2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXN1bHQubW9kaWZpY2F0aW9uVGltZSA9IG1vZGlmaWNhdGlvblRpbWU7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKICAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpkaXJlY3RvcnlOYW1lKHBh
dGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZv
cm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1
cHBvcnQuaAppbmRleCBmOGI1YjdlOTg3YzZmMzZjYTk0NTE3MTQ5ODAxMjZlM2UxYWJhYTU3Li4y
OGM1YTIwNDM2YzkyZmQzNjJlZTY3OGIzZmZiMTg0ZGE1MTQ4MDViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaApAQCAtMTI3LDYg
KzEyNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShj
b25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcm
LCBsb25nIGxvbmcmIHJlc3VsdCk7CiAgICAgc3RhdGljIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlv
blRpbWUoY29uc3QgU3RyaW5nJiwgdGltZV90JiByZXN1bHQpOworICAgIHN0YXRpYyBib29sIGdl
dEZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmLCBGaWxlTWV0YWRhdGEmIHJlc3VsdCk7CiAgICAg
c3RhdGljIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgc3Rh
dGljIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIGNvbXBvbmVudCk7CiAgICAgc3RhdGljIGJvb2wgbWFrZUFsbERpcmVjdG9y
aWVzKGNvbnN0IFN0cmluZyYgcGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
RmlsZVN5c3RlbUd0ay5jcHAKaW5kZXggYTNiNDQ4ZGY0NzJmNjQzMmU4YTBjMzhiM2RiMDgzNjIx
MzUzNDE4Yy4uNDIzNWRjNGFjZmEwYmQ3MGQ1ZmZjMjU2MmVkNDdmODA5MWZhY2JjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcApAQCAtMjMsMTQg
KzIzLDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgog
Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1ZGUgIkZpbGVNZXRhZGF0
YS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiVVVJRC5oIgogI2lu
Y2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8Z2xpYi9nc3Rk
aW8uaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HbGliVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8
d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HbGliVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNDEsNiArMTQyLDI0IEBA
IGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3Qm
IG1vZGlmaWVkVGltZSkKIAogfQogCitib29sIGdldEZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcm
IHBhdGgsIEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCit7CisgICAgQ1N0cmluZyBmaWxlbmFtZSA9
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBpZiAoZmlsZW5hbWUuaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0cnVjdCBzdGF0IHN0YXRSZXN1bHQ7
CisgICAgZ2ludCByZXN1bHQgPSBnX3N0YXQoZmlsZW5hbWUuZGF0YSgpLCAmc3RhdFJlc3VsdCk7
CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbWV0YWRhdGEu
bW9kaWZpY2F0aW9uVGltZSA9IHN0YXRSZXN1bHQuc3RfbXRpbWU7CisgICAgbWV0YWRhdGEubGVu
Z3RoID0gc3RhdFJlc3VsdC5zdF9zaXplOworICAgIG1ldGFkYXRhLnR5cGUgPSBTX0lTRElSKHN0
YXRSZXN1bHQuc3RfbW9kZSkgPyBGaWxlTWV0YWRhdGE6OlR5cGVEaXJlY3RvcnkgOiBGaWxlTWV0
YWRhdGE6OlR5cGVGaWxlOworICAgIHJldHVybiB0cnVlOworCit9CisKIFN0cmluZyBwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBv
bmVudCkKIHsKICAgICBpZiAocGF0aC5lbmRzV2l0aChHX0RJUl9TRVBBUkFUT1JfUykpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAppbmRl
eCBmZGE4MTI2NWI1Y2QzZmFmMWUxOTNiYzMwMTBiM2I4MTEwYjc1MTFlLi45OGRhZjQ1M2VjNTk4
ZTZlNDk3OGQ1ZDUxMTA1ZGQ2NGJhMjA1OTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAKKyNpbmNsdWRlICJGaWxl
TWV0YWRhdGEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPGRpcmVu
dC5oPgogI2luY2x1ZGUgPGVycm5vLmg+CkBAIC0xODEsNiArMTgyLDIzIEBAIGJvb2wgZ2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHJlc3VsdCkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBw
YXRoLCBGaWxlTWV0YWRhdGEmIHJlc3VsdCkKK3sKKyAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworCisgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNS
ZXAuZGF0YSgpWzBdID09ICdcMCcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0cnVj
dCBzdGF0IGZpbGVJbmZvOworICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUgPSBm
aWxlSW5mby5zdF9tdGltZTsKKyAgICByZXN1bHQubGVuZ3RoID0gZmlsZUluZm8uc3Rfc2l6ZTsK
KyAgICByZXN1bHQudHlwZSA9IFNfSVNESVIoZmlsZUluZm8uc3RfbW9kZSkgPyBGaWxlTWV0YWRh
dGE6OlR5cGVEaXJlY3RvcnkgOiBGaWxlTWV0YWRhdGE6OlR5cGVGaWxlOworICAgIHJldHVybiB0
cnVlOworfQorCiBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiB7CiAgICAgaWYgKHBhdGguZW5kc1dpdGgo
Jy8nKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1R
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwCmluZGV4
IDMyNjQ0ZDE3OGJiZDZlMmM5ZTBlYmEzZWUxNGM1NDM4ZjJjNzRiMWQuLjMzOWZkNjM1Njk0ZDdk
ZGUyNzRlOTU4YjE0MmZmMjYwODlmN2E5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cXQvRmlsZVN5c3RlbVF0LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAorI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8UURhdGVUaW1lPgogI2luY2x1
ZGUgPFFEaXI+CkBAIC03Myw2ICs3NCwxNSBAQCBib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1l
KGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCiAgICAgcmV0dXJuIGluZm8uZXhp
c3RzKCk7CiB9CiAKK2Jvb2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwgRmls
ZU1ldGFkYXRhJiByZXN1bHQpCit7CisgICAgUUZpbGVJbmZvIGluZm8ocGF0aCk7CisgICAgcmVz
dWx0Lm1vZGlmaWNhdGlvblRpbWUgPSBpbmZvLmxhc3RNb2RpZmllZCgpLnRvVGltZV90KCk7Cisg
ICAgcmVzdWx0Lmxlbmd0aCA9IGluZm8uc2l6ZSgpOworICAgIHJlc3VsdC50eXBlID0gaW5mby5p
c0RpcigpID8gRmlsZU1ldGFkYXRhOjpUeXBlRGlyZWN0b3J5IDogRmlsZU1ldGFkYXRhOjpUeXBl
RmlsZTsKKyAgICByZXR1cm4gaW5mby5leGlzdHMoKTsKK30KKwogYm9vbCBtYWtlQWxsRGlyZWN0
b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHJldHVybiBRRGlyOjpyb290KCkubWtw
YXRoKHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVT
eXN0ZW1XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwCmluZGV4IDRjZTUxODc3MTIzNTNlOTBjMGQxNTZmODU0MTlmY2IwNWRiMzdmYWMuLjU1YmNm
ZDYzNTZjYmI4Y2M4YWU3N2NlOTM0OGNlMTQ0Mjk1ZjE0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAKKyNpbmNsdWRlICJGaWxl
TWV0YWRhdGEuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhdGhX
YWxrZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4K
QEAgLTU0LDEyICs1NSw4IEBAIHN0YXRpYyBib29sIGdldEZpbmREYXRhKFN0cmluZyBwYXRoLCBX
SU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBn
ZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0KQorc3RhdGlj
IGJvb2wgZ2V0RmlsZVNpemVGcm9tRmluZERhdGEoY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmlu
ZERhdGEsIGxvbmcgbG9uZyYgcmVzdWx0KQogewotICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERh
dGE7Ci0gICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQogICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVTaXplOwogICAgIGZpbGVTaXplLkhp
Z2hQYXJ0ID0gZmluZERhdGEubkZpbGVTaXplSGlnaDsKICAgICBmaWxlU2l6ZS5Mb3dQYXJ0ID0g
ZmluZERhdGEubkZpbGVTaXplTG93OwpAQCAtNzEsMTggKzY4LDUxIEBAIGJvb2wgZ2V0RmlsZVNp
emUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdCkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAorc3RhdGljIGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEo
Y29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEsIHRpbWVfdCYgcmVzdWx0KQoreworICAg
IFVMQVJHRV9JTlRFR0VSIGZpbGVUaW1lOworICAgIGZpbGVUaW1lLkhpZ2hQYXJ0ID0gZmluZERh
dGEuZnRMYXN0V3JpdGVUaW1lLmR3SGlnaERhdGVUaW1lOworICAgIGZpbGVUaW1lLkxvd1BhcnQg
PSBmaW5kRGF0YS5mdExhc3RXcml0ZVRpbWUuZHdMb3dEYXRlVGltZTsKKworICAgIC8vIEluZm9y
bWF0aW9uIGFib3V0IGNvbnZlcnRpbmcgdGltZV90IHRvIEZpbGVUaW1lIGlzIGF2YWlsYWJsZSBh
dCBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM3MjQyMjglMjh2PXZz
Ljg1JTI5LmFzcHgKKyAgICByZXN1bHQgPSBmaWxlVGltZS5RdWFkUGFydCAvIDEwMDAwMDAwIC0g
a1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0OworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHQpCit7Cisg
ICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgs
IGZpbmREYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGdldEZpbGVT
aXplRnJvbUZpbmREYXRhKGZpbmREYXRhLCByZXN1bHQpOworfQorCiBib29sIGdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCiB7CiAgICAg
V0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKICAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZp
bmREYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgVUxBUkdFX0lOVEVHRVIgZmls
ZVNpemU7Ci0gICAgZmlsZVNpemUuSGlnaFBhcnQgPSBmaW5kRGF0YS5mdExhc3RXcml0ZVRpbWUu
ZHdIaWdoRGF0ZVRpbWU7Ci0gICAgZmlsZVNpemUuTG93UGFydCA9IGZpbmREYXRhLmZ0TGFzdFdy
aXRlVGltZS5kd0xvd0RhdGVUaW1lOworICAgIHJldHVybiBnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgcmVzdWx0KTsKK30KKworYm9vbCBnZXRGaWxlTWV0YWRh
dGEoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlTWV0YWRhdGEmIHJlc3VsdCkKK3sKKyAgICBXSU4z
Ml9GSU5EX0RBVEFXIGZpbmREYXRhOworICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERh
dGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWdldEZpbGVTaXplRnJvbUZp
bmREYXRhKGZpbmREYXRhLCByZXN1bHQubGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7CisgICAgaWYgKCFnZXRGaWxlTW9kaWZpY2F0
aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXN1bHQubW9kaWZpY2F0aW9uVGltZSA9IG1vZGlmaWNhdGlv
blRpbWU7CisKKyAgICByZXN1bHQudHlwZSA9IChmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYg
RklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSA/IEZpbGVNZXRhZGF0YTo6VHlwZURpcmVjdG9yeSA6
IEZpbGVNZXRhZGF0YTo6VHlwZUZpbGU7CiAKLSAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCBjb252
ZXJ0aW5nIHRpbWVfdCB0byBGaWxlVGltZSBpcyBhdmFpbGFibGUgYXQgaHR0cDovL21zZG4ubWlj
cm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNzI0MjI4JTI4dj12cy44NSUyOS5hc3B4Ci0gICAg
cmVzdWx0ID0gZmlsZVNpemUuUXVhZFBhcnQgLyAxMDAwMDAwMCAtIGtTZWNvbmRzRnJvbUZpbGVU
aW1lVG9UaW1ldDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luY2UvRmlsZVN5c3RlbVdpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbmNlL0ZpbGVTeXN0ZW1XaW5DRS5jcHAKaW5kZXggNGM3YTFkZmQ2OTI2MWM4
NTJmMWI1Mjc0ZDNiODllN2ZiNDgzMzQ1ZS4uZTk1OWRlZjc4ODY2Y2Y5MGY5ZDYwYTZkYTJiMDFj
Yjg5MjkzMzMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRmls
ZVN5c3RlbVdpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9GaWxl
U3lzdGVtV2luQ0UuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogCisjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDx3aW5jcnlwdC5oPgogI2luY2x1ZGUg
PHdpbmRvd3MuaD4KQEAgLTY4LDMxICs2OSw1NCBAQCBzdGF0aWMgYm9vbCBnZXRGaWxlSW5mbyhj
b25zdCBTdHJpbmcmIHBhdGgsIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OJiBmaWxlSW5mbwog
ICAgIHJldHVybiBydG47CiB9CiAKK3N0YXRpYyB2b2lkIGdldEZpbGVTaXplRnJvbUZpbGVJbmZv
KGNvbnN0IEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OJiBmaWxlSW5mbywgbG9uZyBsb25nJiBy
ZXN1bHQpCit7CisgICAgVUxBUkdFX0lOVEVHRVIgZmlsZVNpemU7CisgICAgZmlsZVNpemUuTG93
UGFydCA9IGZpbGVJbmZvLm5GaWxlU2l6ZUxvdzsKKyAgICBmaWxlU2l6ZS5IaWdoUGFydCA9IGZp
bGVJbmZvLm5GaWxlU2l6ZUhpZ2g7CisgICAgcmVzdWx0ID0gZmlsZVNpemUuUXVhZFBhcnQ7Cit9
CisKK3N0YXRpYyB2b2lkIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbGVJbmZvKGNvbnN0
IEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OJiBmaWxlSW5mbywgdGltZV90JiByZXN1bHQpCit7
CisgICAgVUxBUkdFX0lOVEVHRVIgdDsKKyAgICBtZW1jcHkoJnQsICZmaWxlSW5mby5mdExhc3RX
cml0ZVRpbWUsIHNpemVvZih0KSk7CisgICAgcmVzdWx0ID0gdC5RdWFkUGFydCAqIDAuMDAwMDAw
MSAtIDExNjQ0NDczNjAwLjA7Cit9CisKIGJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBw
YXRoLCBsb25nIGxvbmcmIHJlc3VsdCkKIHsKICAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElP
TiBmaWxlSW5mb3JtYXRpb247CiAgICAgaWYgKCFnZXRGaWxlSW5mbyhwYXRoLCBmaWxlSW5mb3Jt
YXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBVTEFSR0VfSU5URUdFUiBmaWxl
U2l6ZTsKLSAgICBmaWxlU2l6ZS5Mb3dQYXJ0ID0gZmlsZUluZm9ybWF0aW9uLm5GaWxlU2l6ZUxv
dzsKLSAgICBmaWxlU2l6ZS5IaWdoUGFydCA9IGZpbGVJbmZvcm1hdGlvbi5uRmlsZVNpemVIaWdo
OworICAgIGdldEZpbGVTaXplRnJvbUZpbGVJbmZvKGZpbGVJbmZvcm1hdGlvbiwgcmVzdWx0KTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KIAotICAgIHJlc3VsdCA9IGZpbGVTaXplLlF1YWRQYXJ0Owor
Ym9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYg
cmVzdWx0KQoreworICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGZpbGVJbmZvcm1hdGlv
bjsKKyAgICBpZiAoIWdldEZpbGVJbmZvKHBhdGgsIGZpbGVJbmZvcm1hdGlvbikpCisgICAgICAg
IHJldHVybiBmYWxzZTsKIAorICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbGVJbmZv
KGZpbGVJbmZvcm1hdGlvbiwgcmVzdWx0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgcmVzdWx0
KQorYm9vbCBnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlTWV0YWRhdGEm
IHJlc3VsdCkKIHsKICAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBmaWxlSW5mb3JtYXRp
b247CiAgICAgaWYgKCFnZXRGaWxlSW5mbyhwYXRoLCBmaWxlSW5mb3JtYXRpb24pKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBVTEFSR0VfSU5URUdFUiB0OwotICAgIG1lbWNweSgmdCwg
JmZpbGVJbmZvcm1hdGlvbi5mdExhc3RXcml0ZVRpbWUsIHNpemVvZih0KSk7Ci0gICAgCi0gICAg
cmVzdWx0ID0gdC5RdWFkUGFydCAqIDAuMDAwMDAwMSAtIDExNjQ0NDczNjAwLjA7CisgICAgZ2V0
RmlsZVNpemVGcm9tRmlsZUluZm8oZmlsZUluZm9ybWF0aW9uLCByZXN1bHQubGVuZ3RoKTsKKwor
ICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOworICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1l
RnJvbUZpbGVJbmZvKGZpbGVJbmZvcm1hdGlvbiwgbW9kaWZpY2F0aW9uVGltZSk7CisgICAgcmVz
dWx0Lm1vZGlmaWNhdGlvblRpbWUgPSBtb2RpZmljYXRpb25UaW1lOworCisgICAgcmVzdWx0LnR5
cGUgPSAoZmlsZUluZm9ybWF0aW9uLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9E
SVJFQ1RPUlkpID8gRmlsZU1ldGFkYXRhOjpUeXBlRGlyZWN0b3J5IDogRmlsZU1ldGFkYXRhOjpU
eXBlRmlsZTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3d4L0ZpbGVTeXN0ZW1XeC5jcHAKaW5kZXggYmJlYzlmZTE0OWI0ZjRlOGI3ODZlOTYzNzBlODAz
Y2I5YzZlMzhkMC4uOGU5MGM0NmM5NDY5YzQ0OWE5OWU1YjFmODFkODk1MzExZjA3YmM1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9GaWxlU3lzdGVtV3guY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogCisj
aW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSA8d3gvd3guaD4KICNpbmNsdWRlIDx3
eC9kYXRldGltZS5oPgogI2luY2x1ZGUgPHd4L2Rpci5oPgpAQCAtODUsNiArODYsMTcgQEAgYm9v
bCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgdCkK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgRmlsZU1ldGFkYXRhJiB0KQoreworICAgIGlmICghd3hGaWxlRXhpc3RzKHBhdGgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgd3hGaWxlTmFtZSBmaWxlTmFtZShwYXRoKTsK
KyAgICB0Lmxlbmd0aCA9IGZpbGVOYW1lLkdldFNpemUoKTsKKyAgICB0Lm1vZGlmaWNhdGlvblRp
bWUgPSBmaWxlTmFtZS5HZXRNb2RpZmljYXRpb25UaW1lKCkuR2V0VGlja3MoKTsKKyAgICB0LnR5
cGUgPSBmaWxlTmFtZS5Jc0RpcigpID8gRmlsZU1ldGFkYXRhOjpUeXBlRGlyZWN0b3J5IDogRmls
ZU1ldGFkYXRhOjpUeXBlRmlsZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBtYWtlQWxs
RGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHJldHVybiB3eEZpbGVOYW1l
OjpNa2RpcihwYXRoLCAwNzc3LCB3eFBBVEhfTUtESVJfRlVMTCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAKaW5kZXggOWVhMDQ0ODZjNTJlZjQ1MmJkNGJhMGU1ZTFhYmE1ODlmNmRlZWRhMy4u
YjQzODNiYjU1YWUxZjE2MGIyMGNiNGMyYzY3Mzc4Y2IwN2Y3NzU2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cApAQCAtMTQ3LDcgKzE0Nyw2IEBACiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJGaWxlQ2hvb3NlclBhcmFtcy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVF
cnJvci5oJywKLSAgICAgICAgICAgICAgICAncHVibGljL1dlYkZpbGVJbmZvLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrcy5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkZpbGVTeXN0ZW1FbnRyeS5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkZpbGVXcml0ZXIuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJGaWxlSW5mby5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RmlsZUluZm8uaAppbmRleCBiZjE1MmZlNzUxMGMwNDNmMjAwZTM2NmEyYWU0ODY1NzRkN2I0NWZj
Li5hOGMxYmJhNzAyNTgyMDhkODlhZmUzYTQzMzllM2Q0NDFhMjI1MDBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlSW5mby5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVJbmZvLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDM1ICsyOCw0IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViRmlsZUluZm9faAotI2RlZmluZSBXZWJGaWxl
SW5mb19oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLXN0cnVjdCBXZWJGaWxlSW5mbyB7Ci0gICAgLy8gVGhlIGxhc3QgbW9kaWZpY2F0
aW9uIHRpbWUgb2YgdGhlIGZpbGUsIGluIHNlY29uZHMuCi0gICAgLy8gVGhlIHZhbHVlIDAuMCBt
ZWFucyB0aGF0IHRoZSB0aW1lIGlzIG5vdCBzZXQuCi0gICAgZG91YmxlIG1vZGlmaWNhdGlvblRp
bWU7Ci0KLSAgICAvLyBUaGUgbGVuZ3RoIG9mIHRoZSBmaWxlIGluIGJ5dGVzLgotICAgIC8vIFRo
ZSB2YWx1ZSAtMSBtZWFucyB0aGF0IHRoZSBsZW5ndGggaXMgbm90IHNldC4KLSAgICBsb25nIGxv
bmcgbGVuZ3RoOwotCi0gICAgZW51bSBUeXBlIHsKLSAgICAgICAgVHlwZVVua25vd24gPSAwLAot
ICAgICAgICBUeXBlRmlsZSwKLSAgICAgICAgVHlwZURpcmVjdG9yeQotICAgIH07Ci0KLSAgICBU
eXBlIHR5cGU7Ci0KLSAgICBXZWJTdHJpbmcgcGxhdGZvcm1QYXRoOwotCi0gICAgV2ViRmlsZUlu
Zm8oKSA6IG1vZGlmaWNhdGlvblRpbWUoMC4wKSwgbGVuZ3RoKC0xKSwgdHlwZShUeXBlVW5rbm93
bikgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCisjaW5jbHVkZSAi
Li4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZpbGVJbmZvLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAppbmRleCBlZWFiNzg2
MTk2NmJmNDE4MzNlOWEzOGEyYWI3NGRlMDVlMTE3ODY0Li4zODUzMWY1YTVmMGI5ODIzNGNiMmYz
ZWI2YzczYmRhMGQ2MDBjMDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9QbGF0Zm9ybVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Bs
YXRmb3JtU3VwcG9ydC5jcHAKQEAgLTM1LDcgKzM1LDkgQEAKIAogI2luY2x1ZGUgIkNocm9tZS5o
IgogI2luY2x1ZGUgIkNocm9tZUNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJGaWxlTWV0YWRhdGEu
aCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiV2ViRmlsZUluZm8uaCIKICNpbmNsdWRl
ICJXZWJGaWxlVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNs
dWRlICJXZWJGcmFtZUltcGwuaCIKQEAgLTMyOCw2ICszMzAsMTcgQEAgYm9vbCBQbGF0Zm9ybVN1
cHBvcnQ6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90
JiByZXN1bHQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6Omdl
dEZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVNZXRhZGF0YSYgcmVzdWx0KQor
eworICAgIFdlYkZpbGVJbmZvIHdlYkZpbGVJbmZvOworICAgIGlmICghd2ViS2l0UGxhdGZvcm1T
dXBwb3J0KCktPmZpbGVVdGlsaXRpZXMoKS0+Z2V0RmlsZUluZm8ocGF0aCwgd2ViRmlsZUluZm8p
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUgPSB3
ZWJGaWxlSW5mby5tb2RpZmljYXRpb25UaW1lOworICAgIHJlc3VsdC5sZW5ndGggPSB3ZWJGaWxl
SW5mby5sZW5ndGg7CisgICAgcmVzdWx0LnR5cGUgPSBzdGF0aWNfY2FzdDxGaWxlTWV0YWRhdGE6
OlR5cGU+KHdlYkZpbGVJbmZvLnR5cGUpOworICAgIHJldHVybiB0cnVlOworfQorCiBTdHJpbmcg
UGxhdGZvcm1TdXBwb3J0OjpkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAg
ICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5maWxlVXRpbGl0aWVzKCktPmRp
cmVjdG9yeU5hbWUocGF0aCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143768</attachid>
            <date>2012-05-24 02:16:53 -0700</date>
            <delta_ts>2012-05-24 11:37:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86995-20120524181651.patch</filename>
            <type>text/plain</type>
            <size>27279</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA1MmJhNjQ2ZmQwNTM3
OWE4MDE4NmM3MmFhZjMwNTQ4MGI4ZWMxNmZiLi4xMGYyZTRiZDZkOWMyMDZmZDhmM2FhYmEyMjc3
ODdmNDk3OTYwZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNS0yMSAg
S2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2xlYW51cDog
YWRkIGEgZmlsZSBzeXN0ZW0gY2FsbCB3aGljaCBjYXB0dXJlcyB0aGUgZmlsZSBtZXRhZGF0YSBh
dCBvbmNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODY5OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFBsYXRmb3JtLmd5cGk6IEFkZGVkIGFuIGVudHJ5IGZvciBXZWJGaWxlSW5mby5oLgorICAgICAg
ICAqIGNocm9taXVtL3B1YmxpYy9XZWJGaWxlSW5mby5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUluZm8uaC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
RmlsZUluZm86OldlYkZpbGVJbmZvKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViRmls
ZVV0aWxpdGllcy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRmls
ZVV0aWxpdGllczo6Z2V0RmlsZUluZm8pOiBBZGRlZC4KKwogMjAxMi0wNS0yMyAgU2hlcmlmZiBC
b3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjExODIxOC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MDRkM2M4N2U1NDEwNmY4MDlmMGRl
OTc4YWQ1ZDJkNTViNmJiM2MzLi4xYmJiNmI2MWYxNzlmNDkxNWY0YWQxMjk1M2YwZGU4ZWNjMWY1
MTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTItMDUtMjEgIEtpbnVrbyBZYXN1
ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIENsZWFudXA6IGFkZCBhIGZpbGUg
c3lzdGVtIGNhbGwgd2hpY2ggY2FwdHVyZXMgdGhlIGZpbGUgbWV0YWRhdGEgYXQgb25jZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2OTk1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudCBGaWxl
LnNsaWNlKCkgKHdlYmtpdFNsaWNlKCkpIGltcGxlbWVudGF0aW9uIGNhbGxzIHR3byBzZXBhcmF0
ZSBwbGF0Zm9ybSBjYWxscywKKyAgICAgICAgZ2V0RmlsZVNpemUoKSBhbmQgZ2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoKSBbYm90aCBhcmUgZGVmaW5lZCBpbiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmhd
LAorICAgICAgICB0byBjYXB0dXJlIHRoZSBmaWxlIG1ldGFkYXRhLCBidXQgd2Ugc2hvdWxkIGhh
dmUgYSBzaW5nbGUgZmlsZSBzeXN0ZW0gY2FsbCB0byBnZXQgdGhlbSBhdCBvbmNlCisgICAgICAg
IGZvciB0d28gcmVhc29uczogMS4gc2F2ZSBhZGRpdGlvbmFsIHN5c3RlbSBjYWxsIGNvc3RzLCBh
bmQgMi4gIGF0b21pY2FsbHkgb2J0YWluIHRoZSBmaWxlIG1ldGFkYXRhLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0czogZXhpc3RpbmcgdGVzdHMgKGh0dHAvdGVzdHMvbG9jYWwvZmlsZWFwaS8qIGFu
ZCBmYXN0L2ZpbGVzLyopIHNob3VsZCBwYXNzLgorCisgICAgICAgICogZmlsZWFwaS9GaWxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGU6OmNhcHR1cmVTbmFwc2hvdCk6CisgICAgICAgICog
cGxhdGZvcm0vRmlsZU1ldGFkYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTWV0YWRhdGEpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFBsYXRmb3JtU3VwcG9y
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0RmlsZU1ldGFkYXRhKTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vcG9z
aXgvRmlsZVN5c3RlbVBPU0lYLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVNZXRhZGF0
YSk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpnZXRGaWxlTWV0YWRhdGEpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlU2l6ZUZy
b21GaW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZy
b21GaW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRG
aWxlTWV0YWRhdGEpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jZS9GaWxlU3lzdGVt
V2luQ0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZVNpemVGcm9tRmlsZUluZm8pOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmlsZUluZm8pOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZU1ldGFkYXRhKTog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdldEZpbGVNZXRhZGF0YSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisK
IDIwMTItMDUtMjQgIEtyaXN0w7NmIEtvc3p0ecOzICA8a2tyaXN0b2ZAaW5mLnUtc3plZ2VkLmh1
PgogCiAgICAgICAgIFtRdF0gQnVpbGRmaXggZm9yIHRoZSBtaW5pbWFsIGJ1aWxkIGJlY2F1c2Ug
dGhlIHIxMTgxOTcgYnJva2UgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDllNjZj
OWJmNGEyMTIxZWUwYzFiNzYxODdjNDcxZmI5MGVhODM2NGYuLmNjNGFhZjljY2M3MzdhZTFlYWY3
ZGI3MDhjYWNiNDhiMGMzZTA5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTItMDUtMjEgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIENsZWFudXA6IGFkZCBhIGZpbGUgc3lzdGVtIGNhbGwgd2hpY2ggY2FwdHVy
ZXMgdGhlIGZpbGUgbWV0YWRhdGEgYXQgb25jZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg2OTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6Z2V0RmlsZU1ldGFkYXRhKToKKyAgICAgICAgKFdl
YkNvcmUpOgorCiAyMDEyLTA1LTIzICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgYWRkIGJhY2sgdGhlIGFiaWxpdHkgdG8gZGlzYWJsZSBmbGV4Ym94CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0
Zm9ybS5neXBpCmluZGV4IGI3YjJkMjkxODYzZjM2ZWYyNWUyZTUzN2U5MGZjNTBkNTVkMzFjZGEu
LjdiYjk5ODMzYzEyMmVlYmVlYzM0OWY0ODU4MTU1ZDhlNThiZmVhZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9y
bS5neXBpCkBAIC00OCw2ICs0OCw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dl
YkRhdGEuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkRyYWdEYXRhLmgnLAog
ICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oJywK
KyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUluZm8uaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYkZpbGVVdGlsaXRpZXMuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYkZpbHRlck9wZXJhdGlvbi5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViRmlsZUluZm8uaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViRmlsZUluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzI2ZTA2OTA4YTYwZTMzNDcyNDE4Y2E2
YmVmMDEyNzVkYmU5MjIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJGaWxlSW5mby5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkZpbGVJ
bmZvX2gKKyNkZWZpbmUgV2ViRmlsZUluZm9faAorCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViRmlsZUluZm8geworICAgIC8vIFRoZSBs
YXN0IG1vZGlmaWNhdGlvbiB0aW1lIG9mIHRoZSBmaWxlLCBpbiBzZWNvbmRzLgorICAgIC8vIFRo
ZSB2YWx1ZSAwLjAgbWVhbnMgdGhhdCB0aGUgdGltZSBpcyBub3Qgc2V0LgorICAgIGRvdWJsZSBt
b2RpZmljYXRpb25UaW1lOworCisgICAgLy8gVGhlIGxlbmd0aCBvZiB0aGUgZmlsZSBpbiBieXRl
cy4KKyAgICAvLyBUaGUgdmFsdWUgLTEgbWVhbnMgdGhhdCB0aGUgbGVuZ3RoIGlzIG5vdCBzZXQu
CisgICAgbG9uZyBsb25nIGxlbmd0aDsKKworICAgIGVudW0gVHlwZSB7CisgICAgICAgIFR5cGVV
bmtub3duID0gMCwKKyAgICAgICAgVHlwZUZpbGUsCisgICAgICAgIFR5cGVEaXJlY3RvcnkKKyAg
ICB9OworCisgICAgVHlwZSB0eXBlOworCisgICAgV2ViU3RyaW5nIHBsYXRmb3JtUGF0aDsKKwor
ICAgIFdlYkZpbGVJbmZvKCkgOiBtb2RpZmljYXRpb25UaW1lKDAuMCksIGxlbmd0aCgtMSksIHR5
cGUoVHlwZVVua25vd24pIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlVXRp
bGl0aWVzLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZpbGVVdGlsaXRp
ZXMuaAppbmRleCAwZTI3MGQ3NzNlM2Q4OWM4ZmJlYTE4ZTI2OGE1OWY5ZjVkNGEyMjg4Li5kOTAx
N2YyNjhjYmUwMTQyMjc0ZTk5YWY1NTc0MjQ5ZjZhZDFlODNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZpbGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZpbGVVdGlsaXRpZXMuaApAQCAtNDEsNiArNDEs
OCBAQCB0eXBlZGVmIHZvaWQgKkhBTkRMRTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0cnVj
dCBXZWJGaWxlSW5mbzsKKwogY2xhc3MgV2ViRmlsZVV0aWxpdGllcyB7CiBwdWJsaWM6CiAjaWZk
ZWYgV0lOMzIKQEAgLTUxLDggKzUzLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZmls
ZUV4aXN0cyhjb25zdCBXZWJTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIGRlbGV0ZUZpbGUoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBXZWJTdHJp
bmcmIHBhdGgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgLy8gRklYTUU6IERlcHJlY2F0ZSBnZXRG
aWxlU2l6ZSBhbmQgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUgb25jZSBnZXRGaWxlSW5mbyBpcyBp
bXBsZW1lbnRlZC4KICAgICB2aXJ0dWFsIGJvb2wgZ2V0RmlsZVNpemUoY29uc3QgV2ViU3RyaW5n
JiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBkb3Vi
bGUmIHJlc3VsdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RmlsZUlu
Zm8oY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxlSW5mbyYgcmVzdWx0KSB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgV2ViU3Ry
aW5nJiBwYXRoKSAgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIFdlYlN0cmlu
ZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBjb25zdCBX
ZWJTdHJpbmcmIGNvbXBvbmVudCkgIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9CiAgICAgdmlydHVh
bCBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBXZWJTdHJpbmcmIHBhdGgpIHsgcmV0dXJu
IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCBmMmFmYTM0NTRhMGNkMzNjZjYx
N2M0MDQ3OTY4ZWFlOTk3YzBlZDE0Li4wOTgwODQ4MDdkMGJhMmNjZTAyYzIzNDM3Yzk4MDc2ZjFh
ZGEyYTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTE2OSwxMyArMTY5LDE1IEBAIHZv
aWQgRmlsZTo6Y2FwdHVyZVNuYXBzaG90KGxvbmcgbG9uZyYgc25hcHNob3RTaXplLCBkb3VibGUm
IHNuYXBzaG90TW9kaWZpY2F0aW9uCiAKICAgICAvLyBPYnRhaW5zIGEgc25hcHNob3Qgb2YgdGhl
IGZpbGUgYnkgY2FwdHVyaW5nIGl0cyBjdXJyZW50IHNpemUgYW5kIG1vZGlmaWNhdGlvbiB0aW1l
LiBUaGlzIGlzIHVzZWQgd2hlbiB3ZSBzbGljZSBhIGZpbGUgZm9yIHRoZSBmaXJzdCB0aW1lLgog
ICAgIC8vIElmIHdlIGZhaWwgdG8gcmV0cmlldmUgdGhlIHNpemUgb3IgbW9kaWZpY2F0aW9uIHRp
bWUsIHByb2JhYmx5IGR1ZSB0byB0aGF0IHRoZSBmaWxlIGhhcyBiZWVuIGRlbGV0ZWQsIDAgc2l6
ZSBpcyByZXR1cm5lZC4KLSAgICAvLyBGSVhNRTogQ29tYmluZSBnZXRGaWxlU2l6ZSBhbmQgZ2V0
RmlsZU1vZGlmaWNhdGlvblRpbWUgaW50byBvbmUgZmlsZSBzeXN0ZW0gY2FsbC4KLSAgICB0aW1l
X3QgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBpZiAoIWdldEZpbGVTaXplKG1fcGF0aCwgc25hcHNo
b3RTaXplKSB8fCAhZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobV9wYXRoLCBtb2RpZmljYXRpb25U
aW1lKSkgeworICAgIEZpbGVNZXRhZGF0YSBtZXRhZGF0YTsKKyAgICBpZiAoIWdldEZpbGVNZXRh
ZGF0YShtX3BhdGgsIG1ldGFkYXRhKSkgewogICAgICAgICBzbmFwc2hvdFNpemUgPSAwOwogICAg
ICAgICBzbmFwc2hvdE1vZGlmaWNhdGlvblRpbWUgPSAwOwotICAgIH0gZWxzZQotICAgICAgICBz
bmFwc2hvdE1vZGlmaWNhdGlvblRpbWUgPSBtb2RpZmljYXRpb25UaW1lOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgc25hcHNob3RTaXplID0gbWV0YWRhdGEubGVuZ3RoOworICAgIHNu
YXBzaG90TW9kaWZpY2F0aW9uVGltZSA9IG1ldGFkYXRhLm1vZGlmaWNhdGlvblRpbWU7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVNZXRhZGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1ldGFkYXRh
LmgKaW5kZXggOTlmZTJmMzI2MTNmMmFhZTk2MTIyNWUxZjA2NDNjOGQyNjZiMmJiNS4uZWMyODE0
NWJhZTViMWM4MjQ4NjUzMDAxMTUxNDVjNGRiOWZlZmY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZU1ldGFkYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZU1ldGFkYXRhLmgKQEAgLTMzLDggKzMzLDYgQEAKIAogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0cnVjdCBGaWxlTWV0YWRhdGEgewpAQCAtNTQsMTMgKzUyLDEzIEBAIHN0cnVj
dCBGaWxlTWV0YWRhdGEgewogCiAgICAgVHlwZSB0eXBlOwogCisjaWYgRU5BQkxFKEZJTEVfU1lT
VEVNKQogICAgIFN0cmluZyBwbGF0Zm9ybVBhdGg7CisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lT
VEVNKQogCiAgICAgRmlsZU1ldGFkYXRhKCkgOiBtb2RpZmljYXRpb25UaW1lKDAuMCksIGxlbmd0
aCgtMSksIHR5cGUoVHlwZVVua25vd24pIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCiAjZW5kaWYgLy8gRmlsZU1ldGFk
YXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAppbmRleCA0MmQ3NTAwZmYwYzkx
MjI2OGIyZTRlZjk0MWIyNzQ2ZWE0YjJkMzYwLi4yMWVjZTExMjFmMzE3ZGJiZmVkM2FlOTExMDg3
OTAxZWUwZDFjNzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lz
dGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCkBAIC0xNTEs
MTEgKzE1MSwxNCBAQCBzdGF0aWMgY29uc3QgY2hhciBQbGF0Zm9ybUZpbGVQYXRoU2VwYXJhdG9y
ID0gJ1xcJzsKIHN0YXRpYyBjb25zdCBjaGFyIFBsYXRmb3JtRmlsZVBhdGhTZXBhcmF0b3IgPSAn
Lyc7CiAjZW5kaWYKIAorc3RydWN0IEZpbGVNZXRhZGF0YTsKKwogYm9vbCBmaWxlRXhpc3RzKGNv
bnN0IFN0cmluZyYpOwogYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYpOwogYm9vbCBkZWxl
dGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKIGJvb2wgZ2V0RmlsZVNpemUoY29uc3Qg
U3RyaW5nJiwgbG9uZyBsb25nJiByZXN1bHQpOwogYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShjb25zdCBTdHJpbmcmLCB0aW1lX3QmIHJlc3VsdCk7Citib29sIGdldEZpbGVNZXRhZGF0YShj
b25zdCBTdHJpbmcmLCBGaWxlTWV0YWRhdGEmKTsKIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCk7CiBib29s
IG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpOwogU3RyaW5nIGhvbWVEaXJl
Y3RvcnlQYXRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9GaWxlU3lzdGVtQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vRmlsZVN5c3RlbUNocm9taXVtLmNwcAppbmRleCBhMzI1MTViNDcwYjAwMGVmOWNjYzM1ZGFj
Y2RiNmEwN2FmNWMwNmU4Li45NTQzZjU0MjViMzIwYzhiYjk0NmU1NmUzNGVhOTJiN2NjZGE2NGEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GaWxlU3lzdGVt
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZpbGVT
eXN0ZW1DaHJvbWl1bS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAKKyNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCkBAIC01Nyw2ICs1OCwxOSBAQCBib29sIGdldEZp
bGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCiAg
ICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCwg
cmVzdWx0KTsKIH0KIAorYm9vbCBnZXRGaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBG
aWxlTWV0YWRhdGEmIHJlc3VsdCkKK3sKKyAgICAvLyBGSVhNRTogQ2FsbCBQbGF0Zm9ybVN1cHBv
cnQ6OmdldEZpbGVNZXRhZGF0YSBvbmNlIGl0IGlzIGltcGxlbWVudGVkLgorICAgIC8vIHJldHVy
biBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZpbGVNZXRhZGF0YShwYXRoLCByZXN1bHQpOworICAgIGlm
ICghUGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxlU2l6ZShwYXRoLCByZXN1bHQubGVuZ3RoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOworICAgIGlm
ICghUGxhdGZvcm1TdXBwb3J0OjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoLCBtb2RpZmlj
YXRpb25UaW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdC5tb2RpZmljYXRp
b25UaW1lID0gbW9kaWZpY2F0aW9uVGltZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogU3RyaW5n
IGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHJldHVybiBQbGF0Zm9y
bVN1cHBvcnQ6OmRpcmVjdG9yeU5hbWUocGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCmluZGV4IDAxZjRjYjY2MDhiZmQ5NWQ0
NGE3NjljNzYzNTNmNmQzN2JkNmU5NjUuLmNmMjdjNzhkMGFjY2ZkMDAxN2I4MDk4MjE3YTU2NjEz
YjhiODZiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bs
YXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bs
YXRmb3JtU3VwcG9ydC5oCkBAIC0xMjgsNiArMTI4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBi
b29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBib29s
IGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYsIGxvbmcgbG9uZyYgcmVzdWx0KTsKICAgICBzdGF0
aWMgYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmLCB0aW1lX3QmIHJl
c3VsdCk7CisgICAgc3RhdGljIGJvb2wgZ2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYsIEZp
bGVNZXRhZGF0YSYgcmVzdWx0KTsKICAgICBzdGF0aWMgU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29u
c3QgU3RyaW5nJiBwYXRoKTsKICAgICBzdGF0aWMgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KTsKICAgICBz
dGF0aWMgYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcAppbmRleCBhM2I0NDhk
ZjQ3MmY2NDMyZThhMGMzOGIzZGIwODM2MjEzNTM0MThjLi40MjM1ZGM0YWNmYTBiZDcwZDVmZmMy
NTYyZWQ0N2Y4MDkxZmFjYmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRmlsZVN5c3RlbUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Zp
bGVTeXN0ZW1HdGsuY3BwCkBAIC0yMywxNCArMjMsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRy
Lmg+CisjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlICJVVUlELmgiCiAjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUgPGds
aWIuaD4KICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0ds
aWJVdGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dsaWJVdGls
aXRpZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTE0MSw2ICsxNDIsMjQgQEAgYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShj
b25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgbW9kaWZpZWRUaW1lKQogCiB9CiAKK2Jvb2wgZ2V0
RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkK
K3sKKyAgICBDU3RyaW5nIGZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OworICAgIGlmIChmaWxlbmFtZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgc3RydWN0IHN0YXQgc3RhdFJlc3VsdDsKKyAgICBnaW50IHJlc3VsdCA9IGdfc3RhdChmaWxl
bmFtZS5kYXRhKCksICZzdGF0UmVzdWx0KTsKKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBtZXRhZGF0YS5tb2RpZmljYXRpb25UaW1lID0gc3RhdFJlc3VsdC5z
dF9tdGltZTsKKyAgICBtZXRhZGF0YS5sZW5ndGggPSBzdGF0UmVzdWx0LnN0X3NpemU7CisgICAg
bWV0YWRhdGEudHlwZSA9IFNfSVNESVIoc3RhdFJlc3VsdC5zdF9tb2RlKSA/IEZpbGVNZXRhZGF0
YTo6VHlwZURpcmVjdG9yeSA6IEZpbGVNZXRhZGF0YTo6VHlwZUZpbGU7CisgICAgcmV0dXJuIHRy
dWU7CisKK30KKwogU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQogewogICAgIGlmIChwYXRoLmVuZHNXaXRo
KEdfRElSX1NFUEFSQVRPUl9TKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGZkYTgxMjY1YjVjZDNmYWYxZTE5M2JjMzAxMGIz
YjgxMTBiNzUxMWUuLjM3YTQ1ZDE0ZGU0ZDYyMGE4ZWI1ZmQ1ZmZlMTIzMWU3YTA1MTg3ZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNw
cApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbGVT
eXN0ZW0uaCIKIAorI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCiAjaW5jbHVkZSA8ZGlyZW50Lmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KQEAgLTE4
MSw2ICsxODIsMjMgQEAgYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcm
IHBhdGgsIHRpbWVfdCYgcmVzdWx0KQogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIGdldEZp
bGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCit7
CisgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKwor
ICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKKyAgICBpZiAoc3Rh
dChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IG1ldGFkYXRhLm1vZGlmaWNhdGlvblRpbWUgPSBmaWxlSW5mby5zdF9tdGltZTsKKyAgICBtZXRh
ZGF0YS5sZW5ndGggPSBmaWxlSW5mby5zdF9zaXplOworICAgIG1ldGFkYXRhLnR5cGUgPSBTX0lT
RElSKGZpbGVJbmZvLnN0X21vZGUpID8gRmlsZU1ldGFkYXRhOjpUeXBlRGlyZWN0b3J5IDogRmls
ZU1ldGFkYXRhOjpUeXBlRmlsZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogU3RyaW5nIHBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29t
cG9uZW50KQogewogICAgIGlmIChwYXRoLmVuZHNXaXRoKCcvJykpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNwcAppbmRleCAzMjY0NGQxNzhiYmQ2ZTJjOWUwZWJh
M2VlMTRjNTQzOGYyYzc0YjFkLi45YTgwMTE0MTdmMjk4MjQwZTU3MDQwNmUyZDUwODQ1NzE3ODE0
Nzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVt
LmgiCiAKKyNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgPFFEYXRlVGltZT4KICNpbmNsdWRlIDxRRGlyPgpAQCAtNzMsNiArNzQs
MTcgQEAgYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRp
bWVfdCYgcmVzdWx0KQogICAgIHJldHVybiBpbmZvLmV4aXN0cygpOwogfQogCitib29sIGdldEZp
bGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVNZXRhZGF0YSYgcmVzdWx0KQorewor
ICAgIFFGaWxlSW5mbyBpbmZvKHBhdGgpOworICAgIGlmICghaW5mby5leGlzdHMoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdC5tb2RpZmljYXRpb25UaW1lID0gaW5mby5sYXN0
TW9kaWZpZWQoKS50b1RpbWVfdCgpOworICAgIHJlc3VsdC5sZW5ndGggPSBpbmZvLnNpemUoKTsK
KyAgICByZXN1bHQudHlwZSA9IGluZm8uaXNEaXIoKSA/IEZpbGVNZXRhZGF0YTo6VHlwZURpcmVj
dG9yeSA6IEZpbGVNZXRhZGF0YTo6VHlwZUZpbGU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJv
b2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICByZXR1cm4g
UURpcjo6cm9vdCgpLm1rcGF0aChwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCA0Y2U1MTg3NzEyMzUzZTkwYzBkMTU2Zjg1NDE5ZmNi
MDVkYjM3ZmFjLi5lZTAyNTVlMTI4NThlYTM5YjFiYzk0NjY1MTI5MDczYzRkY2ExOTRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgog
CisjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
ICNpbmNsdWRlICJQYXRoV2Fsa2VyLmgiCiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5
UmFuZG9tTnVtYmVyLmg+CkBAIC01NCwxMiArNTUsOCBAQCBzdGF0aWMgYm9vbCBnZXRGaW5kRGF0
YShTdHJpbmcgcGF0aCwgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcm
IHJlc3VsdCkKK3N0YXRpYyBib29sIGdldEZpbGVTaXplRnJvbUZpbmREYXRhKGNvbnN0IFdJTjMy
X0ZJTkRfREFUQVcmIGZpbmREYXRhLCBsb25nIGxvbmcmIHNpemUpCiB7Ci0gICAgV0lOMzJfRklO
RF9EQVRBVyBmaW5kRGF0YTsKLSAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgVUxBUkdFX0lOVEVHRVIgZmlsZVNpemU7CiAg
ICAgZmlsZVNpemUuSGlnaFBhcnQgPSBmaW5kRGF0YS5uRmlsZVNpemVIaWdoOwogICAgIGZpbGVT
aXplLkxvd1BhcnQgPSBmaW5kRGF0YS5uRmlsZVNpemVMb3c7CkBAIC02NywyMiArNjQsNTQgQEAg
Ym9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVzdWx0KQog
ICAgIGlmIChmaWxlU2l6ZS5RdWFkUGFydCA+IHN0YXRpY19jYXN0PFVMT05HTE9ORz4oc3RkOjpu
dW1lcmljX2xpbWl0czxsb25nIGxvbmc+OjptYXgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJlc3VsdCA9IGZpbGVTaXplLlF1YWRQYXJ0OworICAgIHNpemUgPSBmaWxlU2l6ZS5R
dWFkUGFydDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgcmVzdWx0KQorc3RhdGljIHZvaWQgZ2V0
RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoY29uc3QgV0lOMzJfRklORF9EQVRBVyYg
ZmluZERhdGEsIHRpbWVfdCYgdGltZSkKK3sKKyAgICBVTEFSR0VfSU5URUdFUiBmaWxlVGltZTsK
KyAgICBmaWxlVGltZS5IaWdoUGFydCA9IGZpbmREYXRhLmZ0TGFzdFdyaXRlVGltZS5kd0hpZ2hE
YXRlVGltZTsKKyAgICBmaWxlVGltZS5Mb3dQYXJ0ID0gZmluZERhdGEuZnRMYXN0V3JpdGVUaW1l
LmR3TG93RGF0ZVRpbWU7CisKKyAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCBjb252ZXJ0aW5nIHRp
bWVfdCB0byBGaWxlVGltZSBpcyBhdmFpbGFibGUgYXQgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNv
bS9lbi11cy9saWJyYXJ5L21zNzI0MjI4JTI4dj12cy44NSUyOS5hc3B4CisgICAgdGltZSA9IGZp
bGVUaW1lLlF1YWRQYXJ0IC8gMTAwMDAwMDAgLSBrU2Vjb25kc0Zyb21GaWxlVGltZVRvVGltZXQ7
Cit9CisKK2Jvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHNp
emUpCiB7CiAgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKICAgICBpZiAoIWdldEZpbmRE
YXRhKHBhdGgsIGZpbmREYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgVUxBUkdF
X0lOVEVHRVIgZmlsZVNpemU7Ci0gICAgZmlsZVNpemUuSGlnaFBhcnQgPSBmaW5kRGF0YS5mdExh
c3RXcml0ZVRpbWUuZHdIaWdoRGF0ZVRpbWU7Ci0gICAgZmlsZVNpemUuTG93UGFydCA9IGZpbmRE
YXRhLmZ0TGFzdFdyaXRlVGltZS5kd0xvd0RhdGVUaW1lOworICAgIHJldHVybiBnZXRGaWxlU2l6
ZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgc2l6ZSk7Cit9CisKK2Jvb2wgZ2V0RmlsZU1vZGlmaWNh
dGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHRpbWUpCit7CisgICAgV0lOMzJf
RklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRh
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVG
cm9tRmluZERhdGEoZmluZERhdGEsIHRpbWUpOworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IGdldEZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVNZXRhZGF0YSYgbWV0YWRh
dGEpCit7CisgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKKyAgICBpZiAoIWdldEZpbmRE
YXRhKHBhdGgsIGZpbmREYXRhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFn
ZXRGaWxlU2l6ZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgbWV0YWRhdGEubGVuZ3RoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7CisgICAgZ2V0
RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoZmluZERhdGEsIG1vZGlmaWNhdGlvblRp
bWUpOworICAgIG1ldGFkYXRhLm1vZGlmaWNhdGlvblRpbWUgPSBtb2RpZmljYXRpb25UaW1lOwor
CisgICAgbWV0YWRhdGEudHlwZSA9IChmaW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9B
VFRSSUJVVEVfRElSRUNUT1JZKSA/IEZpbGVNZXRhZGF0YTo6VHlwZURpcmVjdG9yeSA6IEZpbGVN
ZXRhZGF0YTo6VHlwZUZpbGU7CiAKLSAgICAvLyBJbmZvcm1hdGlvbiBhYm91dCBjb252ZXJ0aW5n
IHRpbWVfdCB0byBGaWxlVGltZSBpcyBhdmFpbGFibGUgYXQgaHR0cDovL21zZG4ubWljcm9zb2Z0
LmNvbS9lbi11cy9saWJyYXJ5L21zNzI0MjI4JTI4dj12cy44NSUyOS5hc3B4Ci0gICAgcmVzdWx0
ID0gZmlsZVNpemUuUXVhZFBhcnQgLyAxMDAwMDAwMCAtIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9U
aW1ldDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luY2UvRmlsZVN5c3RlbVdpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbmNlL0ZpbGVTeXN0ZW1XaW5DRS5jcHAKaW5kZXggNGM3YTFkZmQ2OTI2MWM4NTJmMWI1
Mjc0ZDNiODllN2ZiNDgzMzQ1ZS4uZmI1MDdjMDM2ZjE1MGQ3NGNhNGRiNGYzNGZkOWNjNjY0MmRl
YjU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRmlsZVN5c3Rl
bVdpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9GaWxlU3lzdGVt
V2luQ0UuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgogCisjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDx3aW5jcnlwdC5oPgogI2luY2x1ZGUgPHdpbmRv
d3MuaD4KQEAgLTY4LDMxICs2OSw1NCBAQCBzdGF0aWMgYm9vbCBnZXRGaWxlSW5mbyhjb25zdCBT
dHJpbmcmIHBhdGgsIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OJiBmaWxlSW5mbwogICAgIHJl
dHVybiBydG47CiB9CiAKLWJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25n
IGxvbmcmIHJlc3VsdCkKK3N0YXRpYyB2b2lkIGdldEZpbGVTaXplRnJvbUZpbGVJbmZvKGNvbnN0
IEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OJiBmaWxlSW5mbywgbG9uZyBsb25nJiBzaXplKQor
eworICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVTaXplOworICAgIGZpbGVTaXplLkxvd1BhcnQgPSBm
aWxlSW5mby5uRmlsZVNpemVMb3c7CisgICAgZmlsZVNpemUuSGlnaFBhcnQgPSBmaWxlSW5mby5u
RmlsZVNpemVIaWdoOworICAgIHNpemUgPSBmaWxlU2l6ZS5RdWFkUGFydDsKK30KKworc3RhdGlj
IHZvaWQgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWVGcm9tRmlsZUluZm8oY29uc3QgQllfSEFORExF
X0ZJTEVfSU5GT1JNQVRJT04mIGZpbGVJbmZvLCB0aW1lX3QmIHRpbWUpCit7CisgICAgVUxBUkdF
X0lOVEVHRVIgdDsKKyAgICBtZW1jcHkoJnQsICZmaWxlSW5mby5mdExhc3RXcml0ZVRpbWUsIHNp
emVvZih0KSk7CisgICAgdGltZSA9IHQuUXVhZFBhcnQgKiAwLjAwMDAwMDEgLSAxMTY0NDQ3MzYw
MC4wOworfQorCitib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25n
JiBzaXplKQogewogICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGZpbGVJbmZvcm1hdGlv
bjsKICAgICBpZiAoIWdldEZpbGVJbmZvKHBhdGgsIGZpbGVJbmZvcm1hdGlvbikpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIFVMQVJHRV9JTlRFR0VSIGZpbGVTaXplOwotICAgIGZpbGVT
aXplLkxvd1BhcnQgPSBmaWxlSW5mb3JtYXRpb24ubkZpbGVTaXplTG93OwotICAgIGZpbGVTaXpl
LkhpZ2hQYXJ0ID0gZmlsZUluZm9ybWF0aW9uLm5GaWxlU2l6ZUhpZ2g7CisgICAgZ2V0RmlsZVNp
emVGcm9tRmlsZUluZm8oZmlsZUluZm9ybWF0aW9uLCBzaXplKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KIAotICAgIHJlc3VsdCA9IGZpbGVTaXplLlF1YWRQYXJ0OworYm9vbCBnZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgdGltZSkKK3sKKyAgICBCWV9I
QU5ETEVfRklMRV9JTkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb247CisgICAgaWYgKCFnZXRGaWxl
SW5mbyhwYXRoLCBmaWxlSW5mb3JtYXRpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAg
ICBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaWxlSW5mbyhmaWxlSW5mb3JtYXRpb24sIHRp
bWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1l
KGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCitib29sIGdldEZpbGVNZXRhZGF0
YShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7CiAgICAgQllf
SEFORExFX0ZJTEVfSU5GT1JNQVRJT04gZmlsZUluZm9ybWF0aW9uOwogICAgIGlmICghZ2V0Rmls
ZUluZm8ocGF0aCwgZmlsZUluZm9ybWF0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgVUxBUkdFX0lOVEVHRVIgdDsKLSAgICBtZW1jcHkoJnQsICZmaWxlSW5mb3JtYXRpb24uZnRM
YXN0V3JpdGVUaW1lLCBzaXplb2YodCkpOwotICAgIAotICAgIHJlc3VsdCA9IHQuUXVhZFBhcnQg
KiAwLjAwMDAwMDEgLSAxMTY0NDQ3MzYwMC4wOworICAgIGdldEZpbGVTaXplRnJvbUZpbGVJbmZv
KGZpbGVJbmZvcm1hdGlvbiwgbWV0YWRhdGEubGVuZ3RoKTsKKworICAgIHRpbWVfdCBtb2RpZmlj
YXRpb25UaW1lOworICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbGVJbmZvKGZpbGVJ
bmZvcm1hdGlvbiwgbW9kaWZpY2F0aW9uVGltZSk7CisgICAgbWV0YWRhdGEubW9kaWZpY2F0aW9u
VGltZSA9IG1vZGlmaWNhdGlvblRpbWU7CisKKyAgICBtZXRhZGF0YS50eXBlID0gKGZpbGVJbmZv
cm1hdGlvbi5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSA/IEZp
bGVNZXRhZGF0YTo6VHlwZURpcmVjdG9yeSA6IEZpbGVNZXRhZGF0YTo6VHlwZUZpbGU7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4
L0ZpbGVTeXN0ZW1XeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9GaWxlU3lzdGVt
V3guY3BwCmluZGV4IGJiZWM5ZmUxNDliNGY0ZThiNzg2ZTk2MzcwZTgwM2NiOWM2ZTM4ZDAuLjFh
MmVkZDVhMGQ1MzQ4OTRkYzdiMGQ3OWJlZTVmOGVkNzExOGMwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3d4L0ZpbGVTeXN0ZW1XeC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd3gvRmlsZVN5c3RlbVd4LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAorI2luY2x1ZGUgIkZpbGVN
ZXRhZGF0YS5oIgogI2luY2x1ZGUgPHd4L3d4Lmg+CiAjaW5jbHVkZSA8d3gvZGF0ZXRpbWUuaD4K
ICNpbmNsdWRlIDx3eC9kaXIuaD4KQEAgLTg1LDYgKzg2LDE3IEBAIGJvb2wgZ2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHQpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCitib29sIGdldEZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVN
ZXRhZGF0YSYgbWV0YWRhdGEpCit7CisgICAgaWYgKCF3eEZpbGVFeGlzdHMocGF0aCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB3eEZpbGVOYW1lIGZpbGVOYW1lKHBhdGgpOworICAgIG1l
dGFkYXRhLmxlbmd0aCA9IGZpbGVOYW1lLkdldFNpemUoKTsKKyAgICBtZXRhZGF0YS5tb2RpZmlj
YXRpb25UaW1lID0gZmlsZU5hbWUuR2V0TW9kaWZpY2F0aW9uVGltZSgpLkdldFRpY2tzKCk7Cisg
ICAgbWV0YWRhdGEudHlwZSA9IGZpbGVOYW1lLklzRGlyKCkgPyBGaWxlTWV0YWRhdGE6OlR5cGVE
aXJlY3RvcnkgOiBGaWxlTWV0YWRhdGE6OlR5cGVGaWxlOworICAgIHJldHVybiB0cnVlOworfQor
CiBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgcmV0
dXJuIHd4RmlsZU5hbWU6Ok1rZGlyKHBhdGgsIDA3NzcsIHd4UEFUSF9NS0RJUl9GVUxMKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBmMTM4YmU0ZjQxYjJjYzlhZDFhZjQxNjdmYjI0
YWY1MWZmOTNlYjBkLi43MWI2MGNhYTg1YmQxMTJiNWU3OGU1NGM3ZWU0Njg4OWZjNzI4ODkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xNDcsNyArMTQ3LDYgQEAKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbi5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkZpbGVDaG9vc2VyUGFyYW1zLmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViRmlsZUVycm9yLmgnLAotICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZUlu
Zm8uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRmlsZVN5c3RlbUVudHJ5LmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViRmlsZVdyaXRlci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVJbmZvLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJGaWxlSW5mby5oCmluZGV4IGJmMTUyZmU3NTEwYzA0M2YyMDBlMzY2YTJh
ZTQ4NjU3NGQ3YjQ1ZmMuLmE4YzFiYmE3MDI1ODIwOGQ4OWFmZTNhNDMzOWUzZDQ0MWEyMjUwMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVJbmZvLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUluZm8uaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsMzUg
KzI4LDQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJGaWxlSW5mb19oCi0j
ZGVmaW5lIFdlYkZpbGVJbmZvX2gKLQotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYkZpbGVJbmZvIHsKLSAgICAvLyBUaGUg
bGFzdCBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgZmlsZSwgaW4gc2Vjb25kcy4KLSAgICAvLyBU
aGUgdmFsdWUgMC4wIG1lYW5zIHRoYXQgdGhlIHRpbWUgaXMgbm90IHNldC4KLSAgICBkb3VibGUg
bW9kaWZpY2F0aW9uVGltZTsKLQotICAgIC8vIFRoZSBsZW5ndGggb2YgdGhlIGZpbGUgaW4gYnl0
ZXMuCi0gICAgLy8gVGhlIHZhbHVlIC0xIG1lYW5zIHRoYXQgdGhlIGxlbmd0aCBpcyBub3Qgc2V0
LgotICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0KLSAgICBlbnVtIFR5cGUgewotICAgICAgICBUeXBl
VW5rbm93biA9IDAsCi0gICAgICAgIFR5cGVGaWxlLAotICAgICAgICBUeXBlRGlyZWN0b3J5Ci0g
ICAgfTsKLQotICAgIFR5cGUgdHlwZTsKLQotICAgIFdlYlN0cmluZyBwbGF0Zm9ybVBhdGg7Ci0K
LSAgICBXZWJGaWxlSW5mbygpIDogbW9kaWZpY2F0aW9uVGltZSgwLjApLCBsZW5ndGgoLTEpLCB0
eXBlKFR5cGVVbmtub3duKSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYKKyNpbmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUlu
Zm8uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3Vw
cG9ydC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3Bw
CmluZGV4IDkxZjFiYjE1ZWI5YTY0NjVlZDkyNThiYzczNTI2NGFiMjEzMTc0NGIuLjVmYzlkY2E1
NGJiN2ZlYzQzOTdjZjBjOWNlZmVhMWU4MzhkNmE2MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcApAQCAtMzUsNyArMzUsOSBAQAogCiAjaW5j
bHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUg
IkZpbGVNZXRhZGF0YS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJGaWxlSW5m
by5oIgogI2luY2x1ZGUgIldlYkZpbGVVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNs
aWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgpAQCAtMzI5LDYgKzMzMSwxNyBAQCBi
b29sIFBsYXRmb3JtU3VwcG9ydDo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5n
JiBwYXRoLCB0aW1lX3QmIHJlc3VsdAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFBsYXRm
b3JtU3VwcG9ydDo6Z2V0RmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU1ldGFk
YXRhJiByZXN1bHQpCit7CisgICAgV2ViRmlsZUluZm8gd2ViRmlsZUluZm87CisgICAgaWYgKCF3
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+ZmlsZVV0aWxpdGllcygpLT5nZXRGaWxlSW5mbyhwYXRo
LCB3ZWJGaWxlSW5mbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXN1bHQubW9kaWZp
Y2F0aW9uVGltZSA9IHdlYkZpbGVJbmZvLm1vZGlmaWNhdGlvblRpbWU7CisgICAgcmVzdWx0Lmxl
bmd0aCA9IHdlYkZpbGVJbmZvLmxlbmd0aDsKKyAgICByZXN1bHQudHlwZSA9IHN0YXRpY19jYXN0
PEZpbGVNZXRhZGF0YTo6VHlwZT4od2ViRmlsZUluZm8udHlwZSk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIFN0cmluZyBQbGF0Zm9ybVN1cHBvcnQ6OmRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5n
JiBwYXRoKQogewogICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmZpbGVV
dGlsaXRpZXMoKS0+ZGlyZWN0b3J5TmFtZShwYXRoKTsK
</data>
<flag name="review"
          id="150416"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="150542"
          type_id="3"
          status="-"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>