<?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>104443</bug_id>
          
          <creation_ts>2012-12-08 09:19:53 -0800</creation_ts>
          <short_desc>[BlackBerry] Update Media Controls for BlackBerry Platform</short_desc>
          <delta_ts>2012-12-12 14:19:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Griggs">jgriggs</reporter>
          <assigned_to name="John Griggs">jgriggs</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mfeil</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>786525</commentid>
    <comment_count>0</comment_count>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-12-08 09:19:53 -0800</bug_when>
    <thetext>Update the media controls on the BlackBerry platform to allow separate styling of audio, embedded video and full screen video elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788591</commentid>
    <comment_count>1</comment_count>
      <attachid>178835</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-12-11 10:48:32 -0800</bug_when>
    <thetext>Created attachment 178835
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788699</commentid>
    <comment_count>2</comment_count>
      <attachid>178856</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-12-11 12:56:29 -0800</bug_when>
    <thetext>Created attachment 178856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788703</commentid>
    <comment_count>3</comment_count>
      <attachid>178856</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-12-11 12:57:16 -0800</bug_when>
    <thetext>Comment on attachment 178856
Patch

Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788728</commentid>
    <comment_count>4</comment_count>
      <attachid>178856</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-12-11 13:28:36 -0800</bug_when>
    <thetext>Comment on attachment 178856
Patch

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

Needs some more iterations.

&gt; Source/WebCore/ChangeLog:8
&gt; +        Reviewed by NOBODY (OOPS!).

Any PR to mention?

&gt; Source/WebCore/ChangeLog:203
&gt; +        (WebCore::RenderThemeBlackBerry::supportsDataListUI):

Need to regenerate your ChangeLog :)

&gt; Source/WebCore/PlatformBlackBerry.cmake:8
&gt; +)

Why remove this? What is the backstory?

&gt; Source/WebCore/html/shadow/MediaControlElementTypes.cpp:77
&gt; +#if !PLATFORM(BLACKBERRY)

Is there a cleaner way? Do we want VIDEO_TRACK in the first place? If yes then why not this part?

&gt; Source/WebCore/platform/blackberry/RenderThemeBlackBerry.cpp:420
&gt; +    }

This is not relevant to your change, please remove.

&gt; Source/WebCore/platform/blackberry/RenderThemeBlackBerry.cpp:456
&gt; +        return false;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788750</commentid>
    <comment_count>5</comment_count>
      <attachid>178856</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-12-11 13:47:11 -0800</bug_when>
    <thetext>Comment on attachment 178856
Patch

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

&gt;&gt; Source/WebCore/PlatformBlackBerry.cmake:8
&gt;&gt; +)
&gt; 
&gt; Why remove this? What is the backstory?

These are the media controls for Apple platforms - they are replaced by our controls in MediaControlsBlackBerry.cpp.  Both of these files extend the code in MediaControls.cpp

&gt;&gt; Source/WebCore/html/shadow/MediaControlElementTypes.cpp:77
&gt;&gt; +#if !PLATFORM(BLACKBERRY)
&gt; 
&gt; Is there a cleaner way? Do we want VIDEO_TRACK in the first place? If yes then why not this part?

The VIDEO_TRACK feature is apparently required (according to Eli), but the new Media Control changes from WebKit seem to depend on some rendering code for VIDEO_TRACK that we do not have yet.  I cannot turn off VIDEO_TRACK entirely, so this is the easiest way to avoid chasing the rendering changes and get these media control changes in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788754</commentid>
    <comment_count>6</comment_count>
      <attachid>178866</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-12-11 13:50:23 -0800</bug_when>
    <thetext>Created attachment 178866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788756</commentid>
    <comment_count>7</comment_count>
      <attachid>178866</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-12-11 13:51:32 -0800</bug_when>
    <thetext>Comment on attachment 178866
Patch

Fixes items from review except for those explained in my previous comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788781</commentid>
    <comment_count>8</comment_count>
      <attachid>178866</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-12-11 14:12:21 -0800</bug_when>
    <thetext>Comment on attachment 178866
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788787</commentid>
    <comment_count>9</comment_count>
      <attachid>178866</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-11 14:16:49 -0800</bug_when>
    <thetext>Comment on attachment 178866
Patch

Rejecting attachment 178866 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
-1 lines).
Hunk #15 succeeded at 1061 (offset -1 lines).
Hunk #16 succeeded at 1100 (offset -1 lines).
Hunk #17 succeeded at 1134 (offset -1 lines).
1 out of 17 hunks FAILED -- saving rejects to file Source/WebCore/platform/blackberry/RenderThemeBlackBerry.cpp.rej
patching file Source/WebCore/platform/blackberry/RenderThemeBlackBerry.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Rob Buis&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/15277298</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789544</commentid>
    <comment_count>10</comment_count>
      <attachid>179044</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-12-12 07:55:03 -0800</bug_when>
    <thetext>Created attachment 179044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789547</commentid>
    <comment_count>11</comment_count>
      <attachid>179044</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-12-12 07:55:40 -0800</bug_when>
    <thetext>Comment on attachment 179044
Patch

Updated to fix a one line error that was preventing the patch from applying cleanly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789552</commentid>
    <comment_count>12</comment_count>
      <attachid>179044</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-12-12 07:56:59 -0800</bug_when>
    <thetext>Comment on attachment 179044
Patch

Retrying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789556</commentid>
    <comment_count>13</comment_count>
      <attachid>179044</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 07:59:32 -0800</bug_when>
    <thetext>Comment on attachment 179044
Patch

Rejecting attachment 179044 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
-1 lines).
Hunk #15 succeeded at 1061 (offset -1 lines).
Hunk #16 succeeded at 1100 (offset -1 lines).
Hunk #17 succeeded at 1134 (offset -1 lines).
1 out of 17 hunks FAILED -- saving rejects to file Source/WebCore/platform/blackberry/RenderThemeBlackBerry.cpp.rej
patching file Source/WebCore/platform/blackberry/RenderThemeBlackBerry.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Rob Buis&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/15281533</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789612</commentid>
    <comment_count>14</comment_count>
      <attachid>179061</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-12-12 09:02:09 -0800</bug_when>
    <thetext>Created attachment 179061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789613</commentid>
    <comment_count>15</comment_count>
      <attachid>179061</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-12-12 09:04:21 -0800</bug_when>
    <thetext>Comment on attachment 179061
Patch

Another patch to attempt to get past the errors applying the patch.  It looks like there were two conflicts - one in RenderThemeBlackBerry.cpp and one in Source/WebCore/ChangeLog.  both are addressed in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789636</commentid>
    <comment_count>16</comment_count>
      <attachid>179061</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-12-12 09:34:49 -0800</bug_when>
    <thetext>Comment on attachment 179061
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789650</commentid>
    <comment_count>17</comment_count>
      <attachid>179061</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-12-12 09:55:45 -0800</bug_when>
    <thetext>Comment on attachment 179061
Patch

Silvia just refactored media control code to get rid of as many &quot;#if PLATFORM()&quot; in shared code as possible. I would *really* rather not have a bunch of &quot;#if PLATFORM(BLACKBERRY)&quot; in MediaControlElements.cpp, can you do this another way (eg. subclass the controls you want to change)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789694</commentid>
    <comment_count>18</comment_count>
      <attachid>179061</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-12-12 10:44:37 -0800</bug_when>
    <thetext>Comment on attachment 179061
Patch

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

Agree with Eric.

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:440
&gt; +#if PLATFORM(BLACKBERRY)
&gt; +    if (event-&gt;type() == eventNames().mousedownEvent) {
&gt; +        // We do not mute when the media player volume/mute control is touched
&gt; +        // on Playbook. Instead we show/hide the volume slider.
&gt; +        m_controls-&gt;toggleVolumeSlider();
&gt; +        event-&gt;setDefaultHandled();
&gt; +        return;
&gt; +    }
&gt; +#endif

this can be a setting at least, and have its own bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789823</commentid>
    <comment_count>19</comment_count>
      <attachid>179108</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-12-12 12:58:33 -0800</bug_when>
    <thetext>Created attachment 179108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789824</commentid>
    <comment_count>20</comment_count>
      <attachid>179108</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-12-12 12:59:28 -0800</bug_when>
    <thetext>Comment on attachment 179108
Patch

Latest patch removes #if PLATFORM(BLACKBERRY) from shared code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789867</commentid>
    <comment_count>21</comment_count>
      <attachid>179119</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-12-12 13:40:26 -0800</bug_when>
    <thetext>Created attachment 179119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789868</commentid>
    <comment_count>22</comment_count>
      <attachid>179119</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-12-12 13:42:18 -0800</bug_when>
    <thetext>Comment on attachment 179119
Patch

Updated patch removes #if PLATFORM(BLACKBERRY) blocks from common code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789870</commentid>
    <comment_count>23</comment_count>
      <attachid>179119</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-12-12 13:43:50 -0800</bug_when>
    <thetext>Comment on attachment 179119
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789873</commentid>
    <comment_count>24</comment_count>
      <attachid>179119</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-12-12 13:46:32 -0800</bug_when>
    <thetext>Comment on attachment 179119
Patch

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

Maybe this patch should be split  into smaller ones?

&gt; Source/WebCore/ChangeLog:13
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).
&gt; +
&gt; +        No new tests (OOPS!).

these should not be here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789886</commentid>
    <comment_count>25</comment_count>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-12-12 13:52:48 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 179119 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179119&amp;action=review
&gt; 
&gt; Maybe this patch should be split  into smaller ones?
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:13
&gt; &gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).
&gt; &gt; +
&gt; &gt; +        No new tests (OOPS!).
&gt; 
&gt; these should not be here

Antonio,

I am SOOO close and under some time pressure.  I would really appreciate not having to break this patch up.

I have fixed the ChangeLog issues (which I thought I had already squashed) in a new patch - uploading now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789889</commentid>
    <comment_count>26</comment_count>
      <attachid>179121</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-12-12 13:54:34 -0800</bug_when>
    <thetext>Created attachment 179121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789891</commentid>
    <comment_count>27</comment_count>
      <attachid>179121</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-12-12 13:55:02 -0800</bug_when>
    <thetext>Comment on attachment 179121
Patch

Fixed ChangeLog issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789893</commentid>
    <comment_count>28</comment_count>
      <attachid>179121</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-12-12 13:58:42 -0800</bug_when>
    <thetext>Comment on attachment 179121
Patch

Retrying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789910</commentid>
    <comment_count>29</comment_count>
      <attachid>179121</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 14:19:32 -0800</bug_when>
    <thetext>Comment on attachment 179121
Patch

Clearing flags on attachment: 179121

Committed r137514: &lt;http://trac.webkit.org/changeset/137514&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789911</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 14:19:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178835</attachid>
            <date>2012-12-11 10:48:32 -0800</date>
            <delta_ts>2012-12-11 12:56:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104443-20121211134553.patch</filename>
            <type>text/plain</type>
            <size>113573</size>
            <attacher name="John Griggs">jgriggs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2E4YzNlZDdkZTUxMmJh
NDE1NTE2OTBlZTIxM2I2ODYzYWQ2NGE1MC4uOTg1MTkyZTY0MWIxZmI3MTUyMzA0YzQwZjliYmI1
NWFlOTE5ZjdiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxMCBAQAorMjAxMi0xMi0xMSAgSm9o
biBHcmlnZ3MgIDxqZ3JpZ2dzQHJpbS5jb20+CisKKyAgICAgICAgMjAxMi0xMi0xMSAgSm9obiBH
cmlnZ3MgIDxqZ3JpZ2dzQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFVwZGF0ZSBC
bGFja0JlcnJ5IE1lZGlhIENvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDQ0NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBQbGF0Zm9ybSBzcGVjaWZpYyB1cGRhdGUgdG8gbWVkaWEgY29udHJv
bHMgYXBwZWFyYW5jZSAtIE5vIG5ldyB0ZXN0cyByZXF1aXJlZC4KKworICAgICAgICBVcGRhdGUg
c2hhZG93IERPTSwgcGxhdGZvcm0gQ1NTIGFuZCByZW5kZXJpbmcgY29kZSBmb3IgbmV3IGxheW91
dCBvZiBtZWRpYSBjb250cm9scyBvbiBCbGFja0JlcnJ5IHBsYXRmb3JtLgorCisgICAgICAgICog
UGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlOgorICAgICAgICAqIGNzcy9tZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeS5jc3M6CisgICAgICAgIChhdWRpbyk6CisgICAgICAgIChhdWRpbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXBhbmVsLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1mdWxsc2NyZWVuLXBhbmVsKToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXBhbmVsLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCk6CisgICAg
ICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAtY29udGFpbmVy
LCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAtY29udGFpbmVyKToK
KyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1k
aXNwbGF5LWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVl
bi10aW1lLWRpc3BsYXktY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIpOgorICAgICAgICAodmlkZW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbiwgYXVkaW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbik6CisgICAgICAgICh2aWRlbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtcGxheS1idXR0b24pOgorICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtZnVsbHNjcmVlbi10aW1lbGluZS1jb250YWluZXIsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUtY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyKToKKyAgICAgICAgKGF1ZGlvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10aW1lLWRpc3BsYXksIHZpZGVv
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10aW1lLWRpc3BsYXkp
OgorICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtY3VycmVudC10aW1lLWRp
c3BsYXksIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWN1cnJlbnQtdGltZS1kaXNwbGF5
KToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGlt
ZS1yZW1haW5pbmctZGlzcGxheSwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNj
cmVlbi10aW1lLXJlbWFpbmluZy1kaXNwbGF5KToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXksIGF1ZGlvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkpOgorICAgICAgICAoYXVkaW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZSwgdmlkZW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZSk6CisgICAgICAgICh2aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uLCBhdWRpbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uKToKKyAgICAg
ICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uKToKKyAg
ICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uKToK
KyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uKToKKyAg
ICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uKToKKyAgICAg
ICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXItY29udGFpbmVy
KToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXIt
Y29udGFpbmVyKToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVt
ZS1zbGlkZXIpOgorICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1l
LXNsaWRlcik6CisgICAgICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2Ny
ZWVuLWJ1dHRvbi1kaXZpZGVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2Ny
ZWVuLWJ1dHRvbi1kaXZpZGVyKToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLWZ1bGxzY3JlZW4tYnV0dG9uLWNvbnRhaW5lciwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtcGxheS1idXR0b24tY29udGFpbmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1mdWxsc2NyZWVuLWJ1dHRvbi1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lcik6CisgICAgICAgICogY3NzL21lZGlhQ29udHJvbHNC
bGFja0JlcnJ5RnVsbHNjcmVlbi5jc3M6IEFkZGVkLgorICAgICAgICAoYm9keTotd2Via2l0LWZ1
bGwtcGFnZS1tZWRpYSk6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tcGFuZWwpOgorICAgICAgICAodmlkZW86LXdl
YmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCk6CisgICAgICAg
ICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWJ1dHRv
bi1ncm91cC1jb250YWluZXIpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtZGlzcGxheS1jb250YWluZXIp
OgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy10aW1lLWRpc3BsYXktY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVs
bC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbik6
CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXBsYXktYnV0dG9uKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZS1jb250YWluZXIpOgorICAg
ICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10
aW1lbGluZS1jb250YWluZXIpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWN1cnJlbnQtdGltZS1kaXNwbGF5KToK
KyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtY3VycmVudC10aW1lLWRpc3BsYXkpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNj
cmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtcmVtYWluaW5nLWRp
c3BsYXkpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy10aW1lLXJlbWFpbmluZy1kaXNwbGF5KToKKyAgICAgICAgKHZpZGVvOi13ZWJr
aXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGlu
ZSk6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXRpbWVsaW5lKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1mdWxsc2NyZWVuLWJ1dHRvbik6CisgICAg
ICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1
bGxzY3JlZW4tYnV0dG9uKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0b24pOgorICAgICAgICAodmlkZW86LXdlYmtp
dC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRh
aW5lcik6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXZvbHVtZS1zbGlkZXIpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNj
cmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1kaXZpZGVyKToK
KyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtZnVsbHNjcmVlbi1idXR0b24tY29udGFpbmVyLCB2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVu
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lcik6CisgICAgICAg
ICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxz
Y3JlZW4tYnV0dG9uLWNvbnRhaW5lcik6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2Ny
ZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lcik6CisgICAg
ICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBs
YWNlaG9sZGVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlw
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudFR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xD
bG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpyZWJ1
aWxkVHJhY2tMaXN0TWVudSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJh
Y2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVTdWJ0cmVlcyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVw
ZGF0ZVNpemVzKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEJ1dHRvbkdy
b3VwQ29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xCdXR0
b25Hcm91cENvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6
TWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6
c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVl
blBhbmVsRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBhbmVsRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGFuZWxFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBhbmVsRWxlbWVudDo6
c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVl
blBhbmVsRWxlbWVudDo6c3RhcnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5QYW5lbEVsZW1lbnQ6OmNvbnRpbnVlRHJhZyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGFuZWxFbGVtZW50OjplbmREcmFnKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QYW5lbEVsZW1lbnQ6OnN0YXJ0VGltZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBhbmVsRWxlbWVudDo6
c3RvcFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QYW5l
bEVsZW1lbnQ6OnRyYW5zaXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5QYW5lbEVsZW1lbnQ6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QYW5lbEVsZW1lbnQ6OnJlc2V0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBhbmVsRWxlbWVudDo6
bWFrZU9wYXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGFu
ZWxFbGVtZW50OjptYWtlVHJhbnNwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sRnVsbHNjcmVlblBhbmVsRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGFuZWxFbGVtZW50OjpzZXRDYW5CZURy
YWdnZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBhbmVsRWxl
bWVudDo6c2V0SXNEaXNwbGF5ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVs
bHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVl
blRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVy
RWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5C
dXR0b25Db250YWluZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1Bz
ZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25E
aXZpZGVyRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVy
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5CdXR0b25EaXZpZGVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBs
YXlCdXR0b25Db250YWluZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6TWVkaWFD
b250cm9sUGxhY2Vob2xkZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0
dG9uRWxlbWVudDo6dXBkYXRlRGlzcGxheVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1l
bnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1l
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVs
bHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVs
bHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OnNldElzRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50OjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250
YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGlt
ZWxpbmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lbGluZUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OndpbGxSZXNw
b25kVG9Nb3VzZUNsaWNrRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OnNo
YWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6
OnNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sRnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6
TWVkaWFDb250cm9sc0JsYWNrQmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
czo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojpj
cmVhdGVDb250cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eTo6c2V0TWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNC
bGFja0JlcnJ5OjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0Jl
cnJ5OjpoaWRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojpt
YWtlT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojpt
YWtlVHJhbnNwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0JsYWNrQmVy
cnk6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojpi
dWZmZXJpbmdQcm9ncmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFj
a0JlcnJ5OjpwbGF5YmFja1N0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
c0JsYWNrQmVycnk6OnBsYXliYWNrUHJvZ3Jlc3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xzQmxhY2tCZXJyeTo6cGxheWJhY2tTdG9wcGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojp1cGRhdGVDdXJyZW50VGltZURpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnJlcG9ydGVkRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0JsYWNrQmVycnk6OmNoYW5nZWRNdXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjplbnRlcmVkRnVsbHNj
cmVlbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6ZXhpdGVk
RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6
c2hvd1ZvbHVtZVNsaWRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tC
ZXJyeTo6dG9nZ2xlVm9sdW1lU2xpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNCbGFja0JlcnJ5OjpzaG91bGRIaWRlQ29udHJvbHMpOgorICAgICAgICAqIGh0bWwvc2hhZG93
L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQpOgorICAgICAg
ICAoTWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5QYW5lbEVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9s
RnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250
cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sUGxh
Y2Vob2xkZXJFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0
dG9uRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1
dHRvbkVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29u
dGFpbmVyRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVF
bGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlz
cGxheUVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sRnVsbHNjcmVlbkN1cnJlbnRUaW1l
RGlzcGxheUVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sc0JsYWNrQmVycnkpOgorICAg
ICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lRnVsbFNjcmVlbk11
bHRpcGxpZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpleHRy
YUZ1bGxTY3JlZW5TdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxh
Y2tCZXJyeTo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0
b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RTbGlk
ZXJUaHVtYlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5Ojpw
YWludFNsaWRlclRyYWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNr
QmVycnk6OmFkanVzdE1lZGlhQ29udHJvbFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0U2xpZGVyVHJhY2tTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFSZXdpbmRCdXR0b24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhTXV0ZUJ1dHRv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFG
dWxsc2NyZWVuQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJy
eTo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
QmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVZvbHVtZVNsaWRl
clRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6c2xpZGVy
VGlja1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpzbGlk
ZXJUaWNrT2Zmc2V0RnJvbVRyYWNrQ2VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lQmxhY2tCZXJyeTo6c3VwcG9ydHNEYXRhTGlzdFVJKToKKyAgICAgICAgKiBwbGF0Zm9ybS9i
bGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVCbGFja0JlcnJ5Ojp1c2VzVmVydGljYWxWb2x1bWVTbGlkZXIpOgorICAgICAgICAo
UmVuZGVyVGhlbWVCbGFja0JlcnJ5KToKKwogMjAxMi0xMi0xMSAgU2ltb24gSGF1c21hbm4gIDxz
aW1vbi5oYXVzbWFubkBkaWdpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBRdCBidWlsZCBm
aXg6IERvbid0IGVycm9yIG91dCBpZiBTUUxJVEUzU1JDRElSIGlzbid0IHNldCBidXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQppbmRleCBjYjllOWFlM2IyMzViNTMyNjVh
NTlmODA1YWZkZDQ5ODNkMGM5YTkzLi44MzhmNmQ3NzJkNGU3NGYwNjM3OTM0Nzg3NDA4MWI2YmEz
YjczNjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC0zLDYg
KzMsMTAgQEAgbGlzdChJTlNFUlQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTIDAKICAgICAi
JHtCTEFDS0JFUlJZX1RISVJEX1BBUlRZX0RJUn0vaWN1IgogKQogCitsaXN0KFJFTU9WRV9JVEVN
IFdlYkNvcmVfU09VUkNFUworICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAK
KykKKwogbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L2JpbmRpbmdzL2NwcCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vYmxh
Y2tiZXJyeS9Db29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZSIKQEAgLTEwNSw2ICsxMDksNyBAQCBs
aXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogbGlzdChBUFBFTkQgV2ViQ29yZV9VU0VSX0FH
RU5UX1NUWUxFX1NIRUVUUwogICAgICR7V0VCQ09SRV9ESVJ9L2Nzcy9tZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeS5jc3MKKyAgICAke1dFQkNPUkVfRElSfS9jc3MvbWVkaWFDb250cm9sc0JsYWNrQmVy
cnlGdWxsc2NyZWVuLmNzcwogICAgICR7V0VCQ09SRV9ESVJ9L2Nzcy90aGVtZUJsYWNrQmVycnku
Y3NzCiApCiAKQEAgLTEzMSw2ICsxMzYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVf
RElSRUNUT1JJRVMKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGVkaXRpbmcvYmxh
Y2tiZXJyeS9FZGl0b3JCbGFja0JlcnJ5LmNwcAogICAgIGVkaXRpbmcvYmxhY2tiZXJyeS9TbWFy
dFJlcGxhY2VCbGFja0JlcnJ5LmNwcAorICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFj
a0JlcnJ5LmNwcAogICAgIGxvYWRlci9ibGFja2JlcnJ5L0Nvb2tpZUphckJsYWNrQmVycnkuY3Bw
CiAgICAgcGFnZS9ibGFja2JlcnJ5L0FjY2Vzc2liaWxpdHlPYmplY3RCbGFja0JlcnJ5LmNwcAog
ICAgIHBhZ2UvYmxhY2tiZXJyeS9EcmFnQ29udHJvbGxlckJsYWNrQmVycnkuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3NzIGIvU291
cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNzcwppbmRleCA0YzAwYTcy
NWNkNWEwMTNlOTk4YjIzZmI0Yjc2NDM5YThhNzg4NDUxLi4zOGVlZjYzNWQ5ZTZhNDBlYzZlYTJl
NTQxYWY1OGRjNzk1NjBjODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFD
b250cm9sc0JsYWNrQmVycnkuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRy
b2xzQmxhY2tCZXJyeS5jc3MKQEAgLTI4LDQzICsyOCw3MSBAQAogIC8qIEJsYWNrQmVycnkgZGVm
YXVsdCBtZWRpYSBjb250cm9scy4gKi8KIAogYXVkaW8geworICAgIGJhY2tncm91bmQtY29sb3I6
IHJnYigwLCAwLCAwKTsKICAgICB3aWR0aDogMzAwcHg7CiAgICAgaGVpZ2h0OiAzMnB4OwogfQog
Ci1hdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCwgdmlkZW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtcGFuZWwgeworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZW1iZWRk
ZWQtcGFuZWwsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWVtYmVkZGVkLXBhbmVsIHsK
ICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6
b250YWw7CiAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKLSAgICAtd2Via2l0LXVzZXIt
c2VsZWN0OiBub25lOwogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICBib3R0b206IDA7CiAg
ICAgd2lkdGg6IDEwMCU7Ci0gICAgei1pbmRleDogMDsKLSAgICBvdmVyZmxvdzogdmlzaWJsZTsK
ICAgICBoZWlnaHQ6IGF1dG87Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIGJhY2tncm91
bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC42KTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io
MCwgMCwgMCk7CiB9CiAKLXZpZGVvOi13ZWJraXQtZnVsbC1wYWdlLW1lZGlhOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXBhbmVsIHsKLSAgICBib3R0b206IDBweDsKK2F1ZGlvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXBhbmVsLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCB7
CisgICAgZGlzcGxheTogbm9uZTsKIH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
cGxheS1idXR0b24sIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uIHsK
LSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLXBsYXktYnV0dG9uOwotICAgIGRpc3BsYXk6
IC13ZWJraXQtYm94OwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtYnV0dG9uLWdyb3Vw
LWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtYnV0dG9uLWdyb3VwLWNv
bnRhaW5lciB7CisgICAgZGlzcGxheTogbm9uZTsKIH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy10aW1lbGluZS1jb250YWluZXIgewordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVs
bHNjcmVlbi10aW1lLWRpc3BsYXktY29udGFpbmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1mdWxsc2NyZWVuLXRpbWUtZGlzcGxheS1jb250YWluZXIgeworICAgIGRpc3BsYXk6IG5v
bmU7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtZGlzcGxheS1jb250
YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWlu
ZXIgewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtY29udHJvbHMtYmFja2dyb3VuZDsK
ICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6
b250YWw7CiAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKLSAgICAtd2Via2l0LWJveC1w
YWNrOiBlbmQ7CisgICAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeTsKKyAgICAtd2Via2l0LWJv
eC1mbGV4OiAxOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCAwLCAwKTsKK30KKwordmlk
ZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbiwgYXVkaW86
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbiB7CisgICAgZGlz
cGxheTogbm9uZTsKK30KKwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0
b24sIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uIHsKKyAgICAtd2Vi
a2l0LWFwcGVhcmFuY2U6IG1lZGlhLXBsYXktYnV0dG9uOworICAgIGRpc3BsYXk6IC13ZWJraXQt
Ym94OworfQorCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWVs
aW5lLWNvbnRhaW5lciwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10
aW1lbGluZS1jb250YWluZXIgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6
IG1lZGlhLWNvbnRyb2xzLWJhY2tncm91bmQ7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Cisg
ICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKKyAgICAtd2Via2l0LWJveC1hbGlnbjog
c3RyZXRjaDsKKyAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAgLXdlYmtpdC1ib3gt
ZmxleDogMTsKLSAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgIGhlaWdodDogYXV0
bzsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7
Cit9CisKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10
aW1lLWRpc3BsYXksIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3Vy
cmVudC10aW1lLWRpc3BsYXkgeworICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKIGF1ZGlvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLWN1cnJlbnQtdGltZS1kaXNwbGF5LCB2aWRlbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUtZGlzcGxheSB7CkBAIC03NCwxOSArMTAyLDI3IEBA
IGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWN1cnJlbnQtdGltZS1kaXNwbGF5LCB2aWRl
bzo6LXdlYmtpdC1tZWRpYS1jb250cm9sCiAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsK
ICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICAgLXdlYmtpdC1ib3gtZmxleDogMDsKLSAg
ICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwotICAgIGNvbG9yOiB3aGl0ZTsKKyAgICBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7CisgICAgY29sb3I6ICNmYWZhZmE7Cit9CisKK3Zp
ZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1yZW1haW5pbmctZGlz
cGxheSwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lLXJlbWFp
bmluZy1kaXNwbGF5IHsKKyAgICBkaXNwbGF5OiBub25lOwogfQogCi1hdWRpbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmluZy1kaXNwbGF5LCB2aWRlbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy10aW1lLXJlbWFpbmluZy1kaXNwbGF5IHsKK3ZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXksIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkgewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTog
bWVkaWEtdGltZS1yZW1haW5pbmctZGlzcGxheTsKICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsK
ICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAgLXdlYmtpdC1ib3gtYWxp
Z246IGNlbnRlcjsKICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICAgLXdlYmtpdC1ib3gt
ZmxleDogMDsKLSAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwotICAgIGNvbG9yOiB3aGl0
ZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7CisgICAgY29sb3I6ICNmYWZh
ZmE7Cit9CisKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxp
bmUsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUgewor
ICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRp
bWVsaW5lLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZSB7CkBAIC05NSw0
MSArMTMxLDYzIEBAIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLCB2aWRl
bzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZSB7CiAgICAgLXdlYmtpdC1ib3gtZmxl
eDogMTsKIH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0
b24sIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uIHsKLSAg
ICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLWZ1bGxzY3JlZW4tYnV0dG9uOwordmlkZW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1mdWxsc2NyZWVuLWJ1dHRvbiwgYXVkaW86
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1mdWxsc2NyZWVuLWJ1dHRvbiB7Cisg
ICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVs
bHNjcmVlbi1idXR0b24geworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtZW50ZXItZnVs
bHNjcmVlbi1idXR0b247CiAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiB9CiAKLWF1ZGlvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1tdXRlLWJ1dHRvbiB7CithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxs
c2NyZWVuLWJ1dHRvbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworYXVkaW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtbXV0ZS1idXR0b24gewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVk
aWEtbXV0ZS1idXR0b247CiAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiB9CiAKLWF1ZGlvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXItY29udGFpbmVyLCB2aWRlbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRhaW5lciB7Cit2aWRlbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1tdXRlLWJ1dHRvbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30K
KworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlci1jb250YWluZXIg
ewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtdm9sdW1lLXNsaWRlci1jb250YWluZXI7
CiAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Ci0gICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jp
em9udGFsOworICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAgLXdlYmtpdC1i
b3gtYWxpZ246IGNlbnRlcjsKICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICAgLXdlYmtp
dC1ib3gtZmxleDogMTsKICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAwcHg7CiAgICAgcmlnaHQ6IDBweDsKLSAgICBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNik7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
cmdiKDAsMCwwKTsKIH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNs
aWRlciwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlciB7Ci0gICAg
LXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS12b2x1bWUtc2xpZGVyOwotICAgIGRpc3BsYXk6IC13
ZWJraXQtYm94OwotICAgIC13ZWJraXQtYm94LWZsZXg6IDE7Cit2aWRlbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRhaW5lciB7CisgICAgZGlzcGxheTogbm9uZTsK
K30KKworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlciB7CisgICAg
IC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtdm9sdW1lLXNsaWRlcjsKKyAgICAgZGlzcGxheTog
LXdlYmtpdC1ib3g7CisgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIGxlZnQ6IDMlOworICAgIHJpZ2h0OiAzJTsKK30KKwordmlkZW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlciB7CisgICAgZGlzcGxheTogbm9uZTsKIH0K
IAotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtc2Vlay1iYWNrLWJ1dHRvbiwgdmlkZW86
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtc2Vlay1iYWNrLWJ1dHRvbiB7Ci0gICAgLXdlYmtpdC1h
cHBlYXJhbmNlOiBtZWRpYS1zZWVrLWJhY2stYnV0dG9uOwordmlkZW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24tZGl2aWRlciwgYXVkaW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24tZGl2aWRlciB7CiAgICAgZGlzcGxheTogbm9uZTsK
IH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtc2Vlay1mb3J3YXJkLWJ1dHRvbiwg
dmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtc2Vlay1mb3J3YXJkLWJ1dHRvbiB7Ci0gICAg
LXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1zZWVrLWZvcndhcmQtYnV0dG9uOwordmlkZW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24tY29udGFpbmVyLCB2aWRlbzo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbi1jb250YWluZXIsIGF1ZGlvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uLWNvbnRhaW5lciwgYXVkaW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24tY29udGFpbmVyIHsKICAgICBkaXNwbGF5
OiBub25lOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHNC
bGFja0JlcnJ5RnVsbHNjcmVlbi5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9s
c0JsYWNrQmVycnlGdWxsc2NyZWVuLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDQxMjM3YTgxOGM0MTc1ZWY3
ZmUyMTkzNDA2MzkxMjlhMDFmOGM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL21lZGlhQ29udHJvbHNCbGFja0JlcnJ5RnVsbHNjcmVlbi5jc3MKQEAgLTAsMCArMSwxODgg
QEAKKy8qCisgKiBCbGFja0JlcnJ5IHNwZWNpZmljIG92ZXJyaWRlcyBmb3IgSFRNTDUgbWVkaWEg
ZWxlbWVudHMuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyAvKiBCbGFja0JlcnJ5IGZ1bGxzY3Jl
ZW4gdmlkZW8gY29udHJvbHMuICovCisKK2JvZHk6LXdlYmtpdC1mdWxsLXBhZ2UtbWVkaWEgewor
ICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCAwLCAwKTsKK30KKwordmlkZW86LXdlYmtpdC1m
dWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1lbWJlZGRlZC1wYW5lbCB7CisgICAg
ZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1wYW5lbCB7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdl
YmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKKyAgICAtd2Via2l0LWJveC1hbGlnbjogc3RyZXRj
aDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYm90dG9tOiAwcHg7CisgICAgd2lkdGg6
IDEwMCU7CisgICAgaGVpZ2h0OiBhdXRvOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzgs
IDM4LCAzOCwgMC41KTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAtY29udGFpbmVyIHsKKyAgICAtd2Via2l0LWFwcGVh
cmFuY2U6IG1lZGlhLWNvbnRyb2xzLWJhY2tncm91bmQ7CisgICAgZGlzcGxheTogLXdlYmtpdC1i
b3g7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOworICAgIC13ZWJraXQtYm94
LWFsaWduOiBjZW50ZXI7CisgICAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeTsKKyAgICAtd2Vi
a2l0LWJveC1mbGV4OiAxOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCAwLCAwKTsKK30K
KwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxs
c2NyZWVuLXRpbWUtZGlzcGxheS1jb250YWluZXIgeworICAgIC13ZWJraXQtYXBwZWFyYW5jZTog
bWVkaWEtY29udHJvbHMtYmFja2dyb3VuZDsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAg
ICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246
IGNlbnRlcjsKKyAgICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5OworICAgIC13ZWJraXQtYm94
LWZsZXg6IDE7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzOCwgMzgsIDM4LCAwLjUpOwor
fQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRp
bWUtZGlzcGxheS1jb250YWluZXIgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13
ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5
LWJ1dHRvbiB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1wbGF5LWJ1dHRvbjsKKyAg
ICBkaXNwbGF5OiAtd2Via2l0LWJveDsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiB7CisgICAgZGlzcGxheTogbm9uZTsK
K30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1m
dWxsc2NyZWVuLXRpbWVsaW5lLWNvbnRhaW5lciB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBt
ZWRpYS1jb250cm9scy1iYWNrZ3JvdW5kOworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAg
IC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0
cmV0Y2g7CisgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOworICAgIC13ZWJraXQtYm94LWZs
ZXg6IDE7CisgICAgaGVpZ2h0OiBhdXRvOworICAgIHdpZHRoOiAxMDAlOworICAgIGJhY2tncm91
bmQtY29sb3I6IHJnYmEoMzgsIDM4LCAzOCwgMC41KTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxs
LXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZS1jb250YWluZXIgeworICAg
IGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1jdXJyZW50LXRpbWUtZGlzcGxheSB7CisgICAgLXdl
YmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1jdXJyZW50LXRpbWUtZGlzcGxheTsKKyAgICBkaXNwbGF5
OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CisgICAg
LXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKKyAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7Cisg
ICAgLXdlYmtpdC1ib3gtZmxleDogMDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM4LCAz
OCwgMzgsIDAuNSk7CisgICAgY29sb3I6ICNmYWZhZmE7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVs
bC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtY3VycmVudC10aW1lLWRpc3BsYXkgewor
ICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lLXJlbWFpbmluZy1kaXNwbGF5IHsKKyAg
ICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLXRpbWUtcmVtYWluaW5nLWRpc3BsYXk7CisgICAg
ZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFs
OworICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CisgICAgLXdlYmtpdC1ib3gtcGFjazog
ZW5kOworICAgIC13ZWJraXQtYm94LWZsZXg6IDA7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdi
YSgzOCwgMzgsIDM4LCAwLjUpOworICAgIGNvbG9yOiAjZmFmYWZhOworfQorCit2aWRlbzotd2Vi
a2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRp
c3BsYXkgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3Jl
ZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZSB7CisgICAgLXdl
YmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1zbGlkZXI7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7
CisgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVl
bjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZSB7CisgICAgZGlzcGxheTogbm9uZTsK
K30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1m
dWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1l
ZGlhLWV4aXQtZnVsbHNjcmVlbi1idXR0b247CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Cit9
CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVs
bHNjcmVlbi1idXR0b24geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQt
ZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0b24geworICAgIGRp
c3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtdm9sdW1lLXNsaWRlci1jb250YWluZXIgeworICAgIGRpc3BsYXk6IG5vbmU7
Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
dm9sdW1lLXNsaWRlciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86LXdlYmtpdC1m
dWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1kaXZp
ZGVyIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLXJld2luZC1idXR0b247CisgICAg
ZGlzcGxheTogLXdlYmtpdC1ib3g7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24tY29udGFpbmVyLCB2aWRlbzot
d2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLWNv
bnRhaW5lciB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1jb250cm9scy1iYWNrZ3Jv
dW5kOworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIC13ZWJraXQtYm94LW9yaWVudDog
aG9yaXpvbnRhbDsKKyAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOworICAgIC13ZWJraXQt
Ym94LWZsZXg6IDE7CisgICAgbWluLXdpZHRoOiAxMDAlOworICAgIGJhY2tncm91bmQtY29sb3I6
IHJnYigwLCAwLCAwKTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1jb250YWluZXIgeworICAgIC13ZWJraXQt
Ym94LXBhY2s6IHN0YXJ0OworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lciB7CisgICAgLXdlYmtpdC1ib3gt
cGFjazogY2VudGVyOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXBsYWNlaG9sZGVyIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlh
LWNvbnRyb2xzLWJhY2tncm91bmQ7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdl
YmtpdC1ib3gtZmxleDogMTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7Cisg
ICAgbWluLXdpZHRoOiAxMDAlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAKaW5kZXggN2MxMjBjMjFhMzhhMzkx
OTZlODQ3NDNlNDViMDM5Y2Y4Y2FmZjBmYi4uZWZjMzg1NDRjZGJiNzkxNjMzOWQzZmU5ODYzOTgy
ZWFmNjk5ZWI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwCkBAIC03NCw2ICs3NCw3IEBAIE1lZGlhQ29udHJv
bEVsZW1lbnRUeXBlIG1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKE5vZGUqIG5vZGUpCiB9CiAKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCiBjb25zdCBB
dG9taWNTdHJpbmcmIHRyYWNrSW5kZXhBdHRyaWJ1dGVOYW1lKCkKIHsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ4LXdlYmtpdC10cmFjay1pbmRleCIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKQEAgLTkyLDYgKzkzLDcgQEAgaW50
IHRyYWNrTGlzdEluZGV4Rm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogICAgIHJldHVybiB0
cmFja0luZGV4OwogfQogI2VuZGlmCisjZW5kaWYKIAogTWVkaWFDb250cm9sRWxlbWVudDo6TWVk
aWFDb250cm9sRWxlbWVudChNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSwgSFRN
TEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgOiBtX21lZGlhQ29udHJvbGxlcigwKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaApp
bmRleCA5MWIwYzhhMzUxZWEwMmJiNjFkM2Y1NzAxYTZkNDczODgwNWZhNjQzLi42YTMyZGI0NTdk
MzExYzZjZTgzMWQwN2VkODhhZGFhMzhkZGUzYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaApAQCAtODAsOSArODAs
MTEgQEAgaW5saW5lIEhUTUxNZWRpYUVsZW1lbnQqIHRvUGFyZW50TWVkaWFFbGVtZW50KFJlbmRl
ck9iamVjdCogcmVuZGVyZXIpIHsgcmV0dXJuIHQKIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIG1l
ZGlhQ29udHJvbEVsZW1lbnRUeXBlKE5vZGUqKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
KyNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKIGNvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJbmRl
eEF0dHJpYnV0ZU5hbWUoKTsKIGludCB0cmFja0xpc3RJbmRleEZvckVsZW1lbnQoRWxlbWVudCop
OwogI2VuZGlmCisjZW5kaWYKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5j
cHAKaW5kZXggOGI4ZTczZjExZDgxMDgxZjk2YWVmOWRiZDVjYThiMGU2NmMyNjMwMi4uNmRiZGI1
MzUxYzljOGE2MDk1ZjdkZjYyODc2ZDkzZGIyY2I0MDVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAtNDI5LDYgKzQy
OSwxNSBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ+IE1l
ZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbgogCiB2b2lkIE1lZGlhQ29udHJvbFBhbmVs
TXV0ZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewor
I2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLm1vdXNlZG93bkV2ZW50KSB7CisgICAgICAgIC8vIFdlIGRvIG5vdCBtdXRlIHdoZW4g
dGhlIG1lZGlhIHBsYXllciB2b2x1bWUvbXV0ZSBjb250cm9sIGlzIHRvdWNoZWQKKyAgICAgICAg
Ly8gb24gUGxheWJvb2suIEluc3RlYWQgd2Ugc2hvdy9oaWRlIHRoZSB2b2x1bWUgc2xpZGVyLgor
ICAgICAgICBtX2NvbnRyb2xzLT50b2dnbGVWb2x1bWVTbGlkZXIoKTsKKyAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKICAg
ICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQpCiAgICAg
ICAgIG1fY29udHJvbHMtPnNob3dWb2x1bWVTbGlkZXIoKTsKIApAQCAtNzIzLDcgKzczMiw2IEBA
IGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJF
bGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpCiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLQogTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpNZWRp
YUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50
LCBNZWRpYUNvbnRyb2xzKiBjb250cm9scykKICAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1lbnQo
ZG9jdW1lbnQsIE1lZGlhQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3QpCiAgICAgLCBtX2NvbnRyb2xz
KGNvbnRyb2xzKQpAQCAtNzQwLDYgKzc0OCw3IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sQ2xv
c2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50PiBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uCiAK
IHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKKyNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBtb2RpZmllciBrZXkg
Zm9yIGV4Y2x1c2l2aXR5IG92ZXJyaWRlLgpAQCAtNzcxLDYgKzc4MCw3IEBAIHZvaWQgTWVkaWFD
b250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50KiBldmVuCiAKICAgICBNZWRpYUNvbnRyb2xEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKGV2ZW50KTsKICNlbmRpZgorI2VuZGlmIC8vICFQTEFURk9STShCTEFDS0JFUlJZKQog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tM
aXN0RWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdApAQCAtNzgxLDYgKzc5MSw3IEBAIGNv
bnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVt
ZW50OjpzaGFkb3dQc2V1ZG9JZCgpCiAKIHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNU
cmFja0xpc3RFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KCkKIHsKKyNpZiAhUExBVEZPUk0oQkxBQ0tC
RVJSWSkKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIHNlbGVjdGVkQ2xhc3NWYWx1ZSwgKCJzZWxlY3RlZCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIApAQCAtODIxLDEwICs4MzIsMTIgQEAgdm9pZCBN
ZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXko
KQogICAgICAgICB9CiAgICAgfQogI2VuZGlmCisjZW5kaWYgLy8gIVBMQVRGT1JNKEJMQUNLQkVS
UlkpCiB9CiAKIHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50
OjpyZWJ1aWxkVHJhY2tMaXN0TWVudSgpCiB7CisjaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIC8vIFJlbW92ZSBhbnkgZXhpc3RpbmcgY29udGVu
dC4KICAgICByZW1vdmVDaGlsZHJlbigpOwpAQCAtOTEzLDYgKzkyNiw3IEBAIHZvaWQgTWVkaWFD
b250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpyZWJ1aWxkVHJhY2tMaXN0TWVu
dSgpCiAKICAgICB1cGRhdGVEaXNwbGF5KCk7CiAjZW5kaWYKKyNlbmRpZiAvLyAhUExBVEZPUk0o
QkxBQ0tCRVJSWSkKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTE5
NSwxMCArMTIwOSwxMiBAQCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpN
ZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KERvYwogICAgIAogdm9pZCBNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVTdWJ0cmVlcyhEb2N1bWVu
dCogZG9jdW1lbnQpCiB7CisjaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCiAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGN1ZSwgKCJjdWUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgbV9jdWVDb250YWluZXIgPSBIVE1MRWxlbWVu
dDo6Y3JlYXRlKHNwYW5UYWcsIGRvY3VtZW50KTsKICAgICBtX2N1ZUNvbnRhaW5lci0+c2V0UHNl
dWRvKGN1ZSk7CiAgICAgYXBwZW5kQ2hpbGQobV9jdWVDb250YWluZXIsIEFTU0VSVF9OT19FWENF
UFRJT04sIGZhbHNlKTsKKyNlbmRpZgogfQogCiBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRleHRU
cmFja0NvbnRhaW5lckVsZW1lbnQ+IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xMjIxLDYgKzEyMzcsNyBAQCBjb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnNo
YWRvd1BzZXVkb0lkKCkgY29ucwogCiB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5l
ckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQogeworI2lmICFQTEFURk9STShCTEFDS0JFUlJZKQog
ICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50
KHRoaXMpOwogCiAgICAgLy8gMS4gSWYgdGhlIG1lZGlhIGVsZW1lbnQgaXMgYW4gYXVkaW8gZWxl
bWVudCwgb3IgaXMgYW5vdGhlciBwbGF5YmFjawpAQCAtMTI4MywxMCArMTMwMCwxMiBAQCB2b2lk
IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQog
CiAgICAgLy8gMTEuIFJldHVybiBvdXRwdXQuCiAgICAgaGFzQ2hpbGROb2RlcygpID8gc2hvdygp
IDogaGlkZSgpOworI2VuZGlmIC8vICFQTEFURk9STShCTEFDS0JFUlJZKQogfQogCiB2b2lkIE1l
ZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKCkKIHsKKyNp
ZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1l
bnQgPSB0b1BhcmVudE1lZGlhRWxlbWVudCh0aGlzKTsKICAgICBpZiAoIW1lZGlhRWxlbWVudCB8
fCAhbWVkaWFFbGVtZW50LT5yZW5kZXJlcigpIHx8ICFtZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCkt
PmlzVmlkZW8oKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTMwMSw2ICsxMzIwLDcgQEAgdm9pZCBN
ZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVTaXplcygpCiAgICAg
ICAgIG1fZm9udFNpemUgPSBmb250U2l6ZTsKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBTdHJpbmc6Om51bWJlcihmb250U2l6ZSkgKyAicHgiKTsK
ICAgICB9CisjZW5kaWYgLy8gIVBMQVRGT1JNKEJMQUNLQkVSUlkpCiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoVklERU9fVFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzLmgKaW5kZXggZmE1ZDBiZDAwZDM2ZTgwOWIwOGU1NzczNTA0MjBlY2E4MmQ2MjJjOC4uZDRi
YTAxZGI4MDU2ZDJkMGRhMTQwOWM0MDJlYTI4NWJiZTZhZWIyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaApAQCAtODMsNiArODMsOSBAQCBjbGFzcyBNZWRp
YUNvbnRyb2xzIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlU3RhdHVzRGlzcGxheSgpIHsgfTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ3VycmVudFRp
bWVEaXNwbGF5KCk7CiAgICAgdmlydHVhbCB2b2lkIHNob3dWb2x1bWVTbGlkZXIoKTsKKyNpZiBQ
TEFURk9STShCTEFDS0JFUlJZKQorICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVWb2x1bWVTbGlkZXIo
KSB7IH07CisjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VkTXV0ZSgpOwogICAgIHZp
cnR1YWwgdm9pZCBjaGFuZ2VkVm9sdW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDg5NzVi
NzdiZmUxNDJkZGFmOGU4MTQ4NDU1NzRkMTVlMzBkNzA4MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcApAQCAt
MCwwICsxLDEwODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUg
Ik1lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmgiCisKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNs
dWRlICJET01Ub2tlbkxpc3QuaCIKKyNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbmNs
dWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgorI2luY2x1ZGUg
Ik1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94LmgiCisjaW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCisjaW5jbHVkZSAi
UmVuZGVyVGhlbWUuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlRleHQuaCIK
KworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKyNl
bmRpZgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Vz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK3N0YXRpYyBjb25zdCBkb3VibGUgdGltZVdpdGhv
dXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMgPSAzOworCitpbmxpbmUgTWVkaWFD
b250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xCdXR0b25Hcm91
cENvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9s
RGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFDb250cm9sc1BhbmVsKQoreworfQorCitQYXNzUmVm
UHRyPE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9s
QnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQor
eworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQ+IGVs
ZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVt
ZW50KGRvY3VtZW50KSk7CisgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgpOworfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudDo6
c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWJ1dHRvbi1ncm91cC1jb250YWlu
ZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlk
OworfQorCitpbmxpbmUgTWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50OjpN
ZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50
KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFDb250cm9sc1Bh
bmVsKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVy
RWxlbWVudD4gTWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lRGlzcGxh
eUNvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVGlt
ZURpc3BsYXlDb250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgcmV0dXJuIGVsZW1lbnQu
cmVsZWFzZSgpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFRpbWVEaXNw
bGF5Q29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXRpbWUtZGlzcGxheS1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgcmV0dXJuIGlkOworfQorCitNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxl
bWVudDo6TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50
KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFDb250cm9sc1Bh
bmVsKQorICAgICwgbV9jYW5CZURyYWdnZWQoZmFsc2UpCisgICAgLCBtX2lzQmVpbmdEcmFnZ2Vk
KGZhbHNlKQorICAgICwgbV9pc0Rpc3BsYXllZChmYWxzZSkKKyAgICAsIG1fb3BhcXVlKHRydWUp
CisgICAgLCBtX3RyYW5zaXRpb25UaW1lcih0aGlzLCAmTWVkaWFDb250cm9sRW1iZWRkZWRQYW5l
bEVsZW1lbnQ6OnRyYW5zaXRpb25UaW1lckZpcmVkKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50PiBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50KGRvY3VtZW50KSk7Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnNoYWRv
d1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1lbWJlZGRlZC1wYW5lbCIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK3ZvaWQg
TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnN0YXJ0RHJhZyhjb25zdCBMYXlvdXRQ
b2ludCYgZXZlbnRMb2NhdGlvbikKK3sKKyAgICBpZiAoIW1fY2FuQmVEcmFnZ2VkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV9pc0JlaW5nRHJhZ2dlZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAgaWYg
KCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzQm94KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9sYXN0RHJhZ0V2ZW50TG9jYXRpb24gPSBldmVudExvY2F0
aW9uOworCisgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50
c05vZGUodGhpcyk7CisKKyAgICBtX2lzQmVpbmdEcmFnZ2VkID0gdHJ1ZTsKK30KKwordm9pZCBN
ZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6Y29udGludWVEcmFnKGNvbnN0IExheW91
dFBvaW50JiBldmVudExvY2F0aW9uKQoreworICAgIGlmICghbV9pc0JlaW5nRHJhZ2dlZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgTGF5b3V0U2l6ZSBkaXN0YW5jZURyYWdnZWQgPSBldmVudExv
Y2F0aW9uIC0gbV9sYXN0RHJhZ0V2ZW50TG9jYXRpb247CisgICAgbV9jdW11bGF0aXZlRHJhZ09m
ZnNldC5tb3ZlKGRpc3RhbmNlRHJhZ2dlZCk7CisgICAgbV9sYXN0RHJhZ0V2ZW50TG9jYXRpb24g
PSBldmVudExvY2F0aW9uOworICAgIHNldFBvc2l0aW9uKG1fY3VtdWxhdGl2ZURyYWdPZmZzZXQp
OworfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjplbmREcmFnKCkK
K3sKKyAgICBpZiAoIW1faXNCZWluZ0RyYWdnZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
aXNCZWluZ0RyYWdnZWQgPSBmYWxzZTsKKworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkt
PmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7Cit9CisKK3Zv
aWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnN0YXJ0VGltZXIoKQoreworICAg
IHN0b3BUaW1lcigpOworCisgICAgLy8gVGhlIHRpbWVyIGlzIHJlcXVpcmVkIHRvIHNldCB0aGUg
cHJvcGVydHkgZGlzcGxheTonbm9uZScgb24gdGhlIHBhbmVsLAorICAgIC8vIHN1Y2ggdGhhdCBj
YXB0aW9ucyBhcmUgY29ycmVjdGx5IGRpc3BsYXllZCBhdCB0aGUgYm90dG9tIG9mIHRoZSB2aWRl
bworICAgIC8vIGF0IHRoZSBlbmQgb2YgdGhlIGZhZGVvdXQgdHJhbnNpdGlvbi4KKyAgICBkb3Vi
bGUgZHVyYXRpb24gPSBkb2N1bWVudCgpLT5wYWdlKCkgPyBkb2N1bWVudCgpLT5wYWdlKCktPnRo
ZW1lKCktPm1lZGlhQ29udHJvbHNGYWRlT3V0RHVyYXRpb24oKSA6IDA7CisgICAgbV90cmFuc2l0
aW9uVGltZXIuc3RhcnRPbmVTaG90KGR1cmF0aW9uKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xF
bWJlZGRlZFBhbmVsRWxlbWVudDo6c3RvcFRpbWVyKCkKK3sKKyAgICBpZiAobV90cmFuc2l0aW9u
VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV90cmFuc2l0aW9uVGltZXIuc3RvcCgpOworfQor
Cit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50Ojp0cmFuc2l0aW9uVGltZXJG
aXJlZChUaW1lcjxNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudD4qKQoreworICAgIGlm
ICghbV9vcGFxdWUpCisgICAgICAgIGhpZGUoKTsKKworICAgIHN0b3BUaW1lcigpOworfQorCit2
b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjpzZXRQb3NpdGlvbihjb25zdCBM
YXlvdXRQb2ludCYgcG9zaXRpb24pCit7CisgICAgZG91YmxlIGxlZnQgPSBwb3NpdGlvbi54KCk7
CisgICAgZG91YmxlIHRvcCA9IHBvc2l0aW9uLnkoKTsKKworICAgIC8vIFNldCB0aGUgbGVmdCBh
bmQgdG9wIHRvIGNvbnRyb2wgdGhlIHBhbmVsJ3MgcG9zaXRpb247IHRoaXMgZGVwZW5kcyBvbiBp
dCBiZWluZyBhYnNvbHV0ZSBwb3NpdGlvbmVkLgorICAgIC8vIFNldCB0aGUgbWFyZ2luIHRvIHpl
cm8gc2luY2UgdGhlIHBvc2l0aW9uIHBhc3NlZCBpbiB3aWxsIGFscmVhZHkgaW5jbHVkZSB0aGUg
ZWZmZWN0IG9mIHRoZSBtYXJnaW4uCisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUxlZnQsIGxlZnQsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgIHNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIHRvcCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QWCk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpbkxlZnQs
IDAuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblRvcCwgMC4wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BY
KTsKKworICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZDsKKyAgICBjbGFzc0xpc3QoKS0+YWRkKCJk
cmFnZ2VkIiwgaWdub3JlZCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVs
ZW1lbnQ6OnJlc2V0UG9zaXRpb24oKQoreworICAgIHJlbW92ZUlubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlMZWZ0KTsKKyAgICByZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5VG9wKTsKKyAgICByZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2lu
TGVmdCk7CisgICAgcmVtb3ZlSW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblRv
cCk7CisKKyAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWQ7CisgICAgY2xhc3NMaXN0KCktPnJlbW92
ZSgiZHJhZ2dlZCIsIGlnbm9yZWQpOworCisgICAgbV9jdW11bGF0aXZlRHJhZ09mZnNldC5zZXRY
KDApOworICAgIG1fY3VtdWxhdGl2ZURyYWdPZmZzZXQuc2V0WSgwKTsKK30KKwordm9pZCBNZWRp
YUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6bWFrZU9wYXF1ZSgpCit7CisgICAgaWYgKG1f
b3BhcXVlKQorICAgICAgICByZXR1cm47CisKKyAgICBkb3VibGUgZHVyYXRpb24gPSBkb2N1bWVu
dCgpLT5wYWdlKCkgPyBkb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCktPm1lZGlhQ29udHJvbHNG
YWRlSW5EdXJhdGlvbigpIDogMDsKKworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHksIENTU1Byb3BlcnR5T3BhY2l0eSk7CisgICAg
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlv
biwgZHVyYXRpb24sIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUyk7CisgICAgc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHksIDEuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIpOworCisgICAgbV9vcGFxdWUgPSB0cnVlOworCisgICAgaWYgKG1faXNEaXNwbGF5
ZWQpCisgICAgICAgIHNob3coKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVs
RWxlbWVudDo6bWFrZVRyYW5zcGFyZW50KCkKK3sKKyAgICBpZiAoIW1fb3BhcXVlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBkb3VibGUgZHVyYXRpb24gPSBkb2N1bWVudCgpLT5wYWdlKCkgPyBk
b2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCktPm1lZGlhQ29udHJvbHNGYWRlT3V0RHVyYXRpb24o
KSA6IDA7CisKKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJh
bnNpdGlvblByb3BlcnR5LCBDU1NQcm9wZXJ0eU9wYWNpdHkpOworICAgIHNldElubGluZVN0eWxl
UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpOworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlPcGFjaXR5LCAwLjAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKwor
ICAgIG1fb3BhcXVlID0gZmFsc2U7CisgICAgc3RhcnRUaW1lcigpOworfQorCit2b2lkIE1lZGlh
Q29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBl
dmVudCkKK3sKKyAgICBNZWRpYUNvbnRyb2xEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KGV2ZW50KTsKKworICAgIGlmIChldmVudC0+aXNNb3VzZUV2ZW50KCkpIHsKKyAgICAgICAgTGF5
b3V0UG9pbnQgbG9jYXRpb24gPSBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5hYnNv
bHV0ZUxvY2F0aW9uKCk7CisgICAgICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS5tb3VzZWRvd25FdmVudCAmJiBldmVudC0+dGFyZ2V0KCkgPT0gdGhpcykgeworICAgICAgICAg
ICAgc3RhcnREcmFnKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFu
ZGxlZCgpOworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
Lm1vdXNlbW92ZUV2ZW50ICYmIG1faXNCZWluZ0RyYWdnZWQpCisgICAgICAgICAgICBjb250aW51
ZURyYWcobG9jYXRpb24pOworICAgICAgICBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5tb3VzZXVwRXZlbnQgJiYgbV9pc0JlaW5nRHJhZ2dlZCkgeworICAgICAgICAgICAg
Y29udGludWVEcmFnKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGVuZERyYWcoKTsKKyAgICAgICAg
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjpzZXRDYW5CZURyYWdnZWQoYm9v
bCBjYW5CZURyYWdnZWQpCit7CisgICAgaWYgKG1fY2FuQmVEcmFnZ2VkID09IGNhbkJlRHJhZ2dl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jYW5CZURyYWdnZWQgPSBjYW5CZURyYWdnZWQ7
CisKKyAgICBpZiAoIWNhbkJlRHJhZ2dlZCkKKyAgICAgICAgZW5kRHJhZygpOworfQorCit2b2lk
IE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjpzZXRJc0Rpc3BsYXllZChib29sIGlz
RGlzcGxheWVkKQoreworICAgIG1faXNEaXNwbGF5ZWQgPSBpc0Rpc3BsYXllZDsKK30KKworaW5s
aW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ6Ok1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQq
IGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFD
b250cm9sc1BhbmVsKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlz
cGxheUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAg
UmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ+
IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5
Q29udGFpbmVyRWxlbWVudChkb2N1bWVudCkpOworICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2Uo
KTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZURp
c3BsYXlDb250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJv
bHMtZnVsbHNjcmVlbi10aW1lLWRpc3BsYXktY29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKworaW5saW5lIE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRp
YUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwpCit7Cit9CisK
K1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ+
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9j
dW1lbnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0
dG9uQ29udGFpbmVyRWxlbWVudD4gZWxlbWVudCA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudChkb2N1bWVudCkpOworICAgIHJldHVybiBl
bGVtZW50LnJlbGVhc2UoKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uLWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK2lubGluZSBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRp
YUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYVJld2luZEJ1dHRvbikKK3sKK30KKwor
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQ+IE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50
KiBkb2N1bWVudCkKK3sKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRp
dmlkZXJFbGVtZW50PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5CdXR0b25EaXZpZGVyRWxlbWVudChkb2N1bWVudCkpOworICAgIHJldHVybiBlbGVtZW50LnJl
bGVhc2UoKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
QnV0dG9uRGl2aWRlckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9s
cy1mdWxsc2NyZWVuLWJ1dHRvbi1kaXZpZGVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKworaW5saW5lIE1lZGlhQ29udHJvbFBsYXlC
dXR0b25Db250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxl
bWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRv
Y3VtZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250
cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ+IE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250
YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudD4gZWxlbWVudCA9IGFkb3B0UmVm
KG5ldyBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudChkb2N1bWVudCkpOwor
ICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBN
ZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBj
b25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK2lubGluZSBNZWRp
YUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVu
dChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3Vt
ZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9s
UGxhY2Vob2xkZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0
ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFBsYWNlaG9s
ZGVyRWxlbWVudD4gZWxlbWVudCA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xQbGFjZWhvbGRl
ckVsZW1lbnQoZG9jdW1lbnQpKTsKKyAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7Cit9CisK
K2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxhY2Vob2xkZXIiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlkOworfQorCitpbmxpbmUg
TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFD
b250cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50LCBNZWRpYVBsYXlCdXR0b24pCit7Cit9CisKK1Bh
c3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50PiBNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1l
bnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVu
dD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9u
RWxlbWVudChkb2N1bWVudCkpOworICAgIGJ1dHRvbi0+Y3JlYXRlU2hhZG93U3VidHJlZSgpOwor
ICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7CisgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNl
KCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgeworICAgICAgICBpZiAobWVkaWFDb250cm9s
bGVyKCktPmNhblBsYXkoKSkKKyAgICAgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5wbGF5KCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5wYXVzZSgpOwor
ICAgICAgICB1cGRhdGVEaXNwbGF5VHlwZSgpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhh
bmRsZWQoKTsKKyAgICB9CisgICAgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihldmVudCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVt
ZW50Ojp1cGRhdGVEaXNwbGF5VHlwZSgpCit7CisgICAgc2V0RGlzcGxheVR5cGUobWVkaWFDb250
cm9sbGVyKCktPmNhblBsYXkoKSA/IE1lZGlhUGxheUJ1dHRvbiA6IE1lZGlhUGF1c2VCdXR0b24p
OworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0
dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3Jl
ZW4tcGxheS1idXR0b24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgcmV0dXJuIGlkOworfQorCitpbmxpbmUgTWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3Jl
ZW5CdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVs
ZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50
KGRvY3VtZW50LCBNZWRpYUV4aXRGdWxsc2NyZWVuQnV0dG9uKQoreworfQorCitQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4gTWVkaWFDb250
cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRv
Y3VtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1
dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
RnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsKKyAgICBidXR0b24tPmNyZWF0ZVNo
YWRvd1N1YnRyZWUoKTsKKyAgICBidXR0b24tPnNldFR5cGUoImJ1dHRvbiIpOworICAgIGJ1dHRv
bi0+aGlkZSgpOworICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOworfQorCit2b2lkIE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmNsaWNrRXZlbnQpIHsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgICAgIC8v
IE9ubHkgdXNlIHRoZSBuZXcgZnVsbCBzY3JlZW4gQVBJIGlmIHRoZSBmdWxsU2NyZWVuRW5hYmxl
ZCBzZXR0aW5nIGhhcyAKKyAgICAgICAgLy8gYmVlbiBleHBsaWNpdGx5IGVuYWJsZWQuIE90aGVy
d2lzZSwgdXNlIHRoZSBvbGQgZnVsbHNjcmVlbiBBUEkuIFRoaXMKKyAgICAgICAgLy8gYWxsb3dz
IGFwcHMgd2hpY2ggZW1iZWQgYSBXZWJWaWV3IHRvIHJldGFpbiB0aGUgZXhpc3RpbmcgZnVsbCBz
Y3JlZW4KKyAgICAgICAgLy8gdmlkZW8gaW1wbGVtZW50YXRpb24gd2l0aG91dCByZXF1aXJpbmcg
dGhlbSB0byBpbXBsZW1lbnQgdGhlaXIgb3duIGZ1bGwgCisgICAgICAgIC8vIHNjcmVlbiBiZWhh
dmlvci4KKyAgICAgICAgaWYgKGRvY3VtZW50KCktPnNldHRpbmdzKCkgJiYgZG9jdW1lbnQoKS0+
c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSkgeworICAgICAgICAgICAgaWYgKGRvY3Vt
ZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpICYmIGRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRG
dWxsU2NyZWVuRWxlbWVudCgpID09IHRvUGFyZW50TWVkaWFFbGVtZW50KHRoaXMpKQorICAgICAg
ICAgICAgICAgIGRvY3VtZW50KCktPndlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5yZXF1ZXN0RnVsbFNjcmVlbkZv
ckVsZW1lbnQodG9QYXJlbnRNZWRpYUVsZW1lbnQodGhpcyksIDAsIERvY3VtZW50OjpFeGVtcHRJ
RnJhbWVBbGxvd0Z1bGxTY3JlZW5SZXF1aXJlbWVudCk7CisgICAgICAgIH0gZWxzZQorI2VuZGlm
CisgICAgICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7CisgICAg
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgIH0KKyAgICBIVE1MSW5wdXRFbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
aWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9u
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6
OnNldElzRnVsbHNjcmVlbihib29sIGlzRnVsbHNjcmVlbikKK3sKKyAgICBzZXREaXNwbGF5VHlw
ZShNZWRpYUV4aXRGdWxsc2NyZWVuQnV0dG9uKTsKK30KKworaW5saW5lIE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lbGluZUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFD
b250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFUaW1lbGluZUNvbnRhaW5lcikKK3sKK30K
KworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVt
ZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50OjpjcmVh
dGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQoZG9jdW1lbnQpKTsKKyAg
ICBlbGVtZW50LT5oaWRlKCk7CisgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgpOworfQorCitj
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5l
ckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVu
LXRpbWVsaW5lLWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK01lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVs
ZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250cm9scykKKyAgICA6IE1lZGlhQ29udHJvbElucHV0
RWxlbWVudChkb2N1bWVudCwgTWVkaWFTbGlkZXIpCisgICAgLCBtX2NvbnRyb2xzKGNvbnRyb2xz
KQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1l
bnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVu
dCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbHMqIGNvbnRyb2xzKQoreworICAgIEFTU0VSVChjb250
cm9scyk7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVu
dD4gdGltZWxpbmUgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5l
RWxlbWVudChkb2N1bWVudCwgY29udHJvbHMpKTsKKyAgICB0aW1lbGluZS0+Y3JlYXRlU2hhZG93
U3VidHJlZSgpOworICAgIHRpbWVsaW5lLT5zZXRUeXBlKCJyYW5nZSIpOworICAgIHRpbWVsaW5l
LT5zZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0ciwgImZsb2F0Iik7CisgICAgcmV0dXJuIHRpbWVs
aW5lLnJlbGVhc2UoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVF
bGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3sKKyAgICAvLyBMZWZ0
IGJ1dHRvbiBpcyAwLiBSZWplY3RzIG1vdXNlIGV2ZW50cyBub3QgZnJvbSBsZWZ0IGJ1dHRvbi4K
KyAgICBpZiAoZXZlbnQtPmlzTW91c2VFdmVudCgpICYmIHN0YXRpY19jYXN0PE1vdXNlRXZlbnQq
PihldmVudCktPmJ1dHRvbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWF0dGFjaGVk
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5tb3VzZWRvd25FdmVudCkKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPmJlZ2luU2Ny
dWJiaW5nKCk7CisKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2V1
cEV2ZW50KQorICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+ZW5kU2NydWJiaW5nKCk7CisKKyAg
ICBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwor
CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50IHx8
IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3V0RXZlbnQgfHwgZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGZsb2F0IHRpbWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHZhbHVlKCkudG9Eb3VibGUo
KSk7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmlucHV0RXZlbnQgJiYg
dGltZSAhPSBtZWRpYUNvbnRyb2xsZXIoKS0+Y3VycmVudFRpbWUoKSkgeworICAgICAgICBFeGNl
cHRpb25Db2RlIGVjOworICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Q3VycmVudFRpbWUo
dGltZSwgZWMpOworICAgIH0KKworICAgIFJlbmRlclNsaWRlciogc2xpZGVyID0gdG9SZW5kZXJT
bGlkZXIocmVuZGVyZXIoKSk7CisgICAgaWYgKHNsaWRlciAmJiBzbGlkZXItPmluRHJhZ01vZGUo
KSkKKyAgICAgICAgbV9jb250cm9scy0+dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCk7Cit9CisK
K2Jvb2wgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6d2lsbFJlc3BvbmRU
b01vdXNlQ2xpY2tFdmVudHMoKQoreworICAgIGlmICghYXR0YWNoZWQoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRnVs
bHNjcmVlblRpbWVsaW5lRWxlbWVudDo6c2V0UG9zaXRpb24oZmxvYXQgY3VycmVudFRpbWUpCit7
CisgICAgc2V0VmFsdWUoU3RyaW5nOjpudW1iZXIoY3VycmVudFRpbWUpKTsKK30KKwordm9pZCBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpzZXREdXJhdGlvbihmbG9hdCBk
dXJhdGlvbikKK3sKKyAgICBzZXRBdHRyaWJ1dGUobWF4QXR0ciwgU3RyaW5nOjpudW1iZXIoaXNm
aW5pdGUoZHVyYXRpb24pID8gZHVyYXRpb24gOiAwKSk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6c2hhZG93UHNldWRvSWQo
KSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCIt
d2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlkOworfQorCitQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ+IE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShEb2N1
bWVudCogZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KGRvY3VtZW50KSk7Cit9CisKK01l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50KQorICAgIDogTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50KGRvY3VtZW50LCBNZWRp
YVRpbWVSZW1haW5pbmdEaXNwbGF5KQoreworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OnNoYWRvd1BzZXVk
b0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQs
ICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtcmVtYWluaW5nLWRpc3Bs
YXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlk
OworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3Bs
YXlFbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVu
dDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50KGRvY3VtZW50
KSk7Cit9CisKK01lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50
OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVu
dCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQoZG9jdW1l
bnQsIE1lZGlhQ3VycmVudFRpbWVEaXNwbGF5KQoreworfQorCitjb25zdCBBdG9taWNTdHJpbmcm
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpzaGFkb3dQ
c2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1jdXJyZW50LXRpbWUtZGlz
cGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4g
aWQ7Cit9CisKK01lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eShEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xzKGRvY3VtZW50KQorICAg
ICwgbV9idXR0b25Db250YWluZXIoMCkKKyAgICAsIG1fdGltZURpc3BsYXlDb250YWluZXIoMCkK
KyAgICAsIG1fZnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyKDApCisgICAgLCBtX2Z1bGxz
Y3JlZW5QbGF5QnV0dG9uKDApCisgICAgLCBtX2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXko
MCkKKyAgICAsIG1fZnVsbHNjcmVlblRpbWVsaW5lKDApCisgICAgLCBtX3RpbWVSZW1haW5pbmdE
aXNwbGF5KDApCisgICAgLCBtX2Z1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheSgwKQorICAg
ICwgbV90aW1lbGluZUNvbnRhaW5lcigwKQorICAgICwgbV9mdWxsc2NyZWVuVGltZWxpbmVDb250
YWluZXIoMCkKKyAgICAsIG1fZnVsbFNjcmVlbkRpdmlkZXIoMCkKKyAgICAsIG1fZnVsbHNjcmVl
bkZ1bGxTY3JlZW5CdXR0b24oMCkKKyAgICAsIG1fbXV0ZUJ1dHRvbigwKQorICAgICwgbV92b2x1
bWVTbGlkZXJDb250YWluZXIoMCkKKyAgICAsIG1fZW1iZWRkZWRQYW5lbCgwKQorICAgICwgbV9m
dWxsU2NyZWVuQnV0dG9uQ29udGFpbmVyKDApCisgICAgLCBtX3BsYXlCdXR0b25Db250YWluZXIo
MCkKKyAgICAsIG1fcGxhY2Vob2xkZXIoMCkKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xzPiBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIHJl
dHVybiBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6Y3JlYXRlQ29udHJvbHMoZG9jdW1lbnQpOwor
fQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5PiBNZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeTo6Y3JlYXRlQ29udHJvbHMoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIGlmICgh
ZG9jdW1lbnQtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sc0JsYWNrQmVycnk+IGNvbnRyb2xzID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbHNC
bGFja0JlcnJ5KGRvY3VtZW50KSk7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxFbGVt
ZW50PiBwYW5lbCA9IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
KyAgICBSZWZQdHI8TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ+IGVtYmVkUGFuZWwg
PSBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRv
bkVsZW1lbnQ+IHBsYXlCdXR0b24gPSBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9wbGF5QnV0dG9uID0gcGxheUJ1dHRvbi5n
ZXQoKTsKKyAgICBlbWJlZFBhbmVsLT5hcHBlbmRDaGlsZChwbGF5QnV0dG9uLnJlbGVhc2UoKSwg
ZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8
TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50PiB0aW1lbGluZUNvbnRhaW5lciA9
IE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
KworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gTWVk
aWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGNvbnRyb2xzLmdldCgp
KTsKKyAgICBjb250cm9scy0+bV90aW1lbGluZSA9IHRpbWVsaW5lLmdldCgpOworICAgIHRpbWVs
aW5lQ29udGFpbmVyLT5hcHBlbmRDaGlsZCh0aW1lbGluZS5yZWxlYXNlKCksIGVjLCB0cnVlKTsK
KyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJv
bFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudD4gdGltZURpc3BsYXlDb250YWluZXIgPSBNZWRp
YUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisK
KyAgICBSZWZQdHI8TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4gY3VycmVu
dFRpbWVEaXNwbGF5ID0gTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9jdXJyZW50VGltZURpc3BsYXkgPSBjdXJy
ZW50VGltZURpc3BsYXkuZ2V0KCk7CisgICAgdGltZURpc3BsYXlDb250YWluZXItPmFwcGVuZENo
aWxkKGN1cnJlbnRUaW1lRGlzcGxheS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMp
CisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVSZW1haW5p
bmdEaXNwbGF5RWxlbWVudD4gdGltZVJlbWFpbmluZ0Rpc3BsYXkgPSBNZWRpYUNvbnRyb2xUaW1l
UmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgY29udHJvbHMt
Pm1fdGltZVJlbWFpbmluZ0Rpc3BsYXkgPSB0aW1lUmVtYWluaW5nRGlzcGxheS5nZXQoKTsKKyAg
ICB0aW1lRGlzcGxheUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodGltZVJlbWFpbmluZ0Rpc3BsYXku
cmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIGNvbnRyb2xzLT5tX3RpbWVEaXNwbGF5Q29udGFpbmVyID0gdGltZURpc3BsYXlDb250YWlu
ZXIuZ2V0KCk7CisgICAgdGltZWxpbmVDb250YWluZXItPmFwcGVuZENoaWxkKHRpbWVEaXNwbGF5
Q29udGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBjb250cm9scy0+bV90aW1lbGluZUNvbnRhaW5lciA9IHRpbWVsaW5lQ29u
dGFpbmVyLmdldCgpOworICAgIGVtYmVkUGFuZWwtPmFwcGVuZENoaWxkKHRpbWVsaW5lQ29udGFp
bmVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGZ1bGxT
Y3JlZW5CdXR0b24gPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9mdWxsU2NyZWVuQnV0dG9uID0gZnVsbFNjcmVl
bkJ1dHRvbi5nZXQoKTsKKyAgICBlbWJlZFBhbmVsLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuQnV0
dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKS0+dGhlbWUoKS0+dXNlc01lZGlhQ29udHJvbFZv
bHVtZVNsaWRlcigpKSB7CisgICAgICAgIC8vIFRoZSBtdXRlIGJ1dHRvbiBhbmQgdGhlIHNsaWRl
ciBlbGVtZW50IHNob3VsZCBiZSBpbiB0aGUgc2FtZSBkaXYuCisgICAgICAgIFJlZlB0cjxIVE1M
RGl2RWxlbWVudD4gdm9sdW1lQ29udHJvbENvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOworCisgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJD
b250YWluZXJFbGVtZW50PiB2b2x1bWVTbGlkZXJDb250YWluZXIgPSBNZWRpYUNvbnRyb2xWb2x1
bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworCisgICAgICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IE1lZGlh
Q29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICAg
ICAgY29udHJvbHMtPm1fdm9sdW1lU2xpZGVyID0gc2xpZGVyLmdldCgpOworICAgICAgICB2b2x1
bWVTbGlkZXJDb250YWluZXItPmFwcGVuZENoaWxkKHNsaWRlci5yZWxlYXNlKCksIGVjLCB0cnVl
KTsKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY29u
dHJvbHMtPm1fdm9sdW1lU2xpZGVyQ29udGFpbmVyID0gdm9sdW1lU2xpZGVyQ29udGFpbmVyLmdl
dCgpOworICAgICAgICB2b2x1bWVDb250cm9sQ29udGFpbmVyLT5hcHBlbmRDaGlsZCh2b2x1bWVT
bGlkZXJDb250YWluZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgICAgIGlmIChlYykKKyAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxNdXRl
QnV0dG9uRWxlbWVudD4gbXV0ZUJ1dHRvbiA9IE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgY29udHJvbHMuZ2V0KCkpOworICAgICAgICBjb250cm9s
cy0+bV9tdXRlQnV0dG9uID0gbXV0ZUJ1dHRvbi5nZXQoKTsKKyAgICAgICAgdm9sdW1lQ29udHJv
bENvbnRhaW5lci0+YXBwZW5kQ2hpbGQobXV0ZUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsK
KyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgZW1iZWRQ
YW5lbC0+YXBwZW5kQ2hpbGQodm9sdW1lQ29udHJvbENvbnRhaW5lci5yZWxlYXNlKCksIGVjLCB0
cnVlKTsKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisg
ICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+
IGZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lciA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1l
bGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisKKyAgICBSZWZQdHI8TWVk
aWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudD4gZnVsbHNjcmVlblRpbWVsaW5lID0g
TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBj
b250cm9scy5nZXQoKSk7CisgICAgY29udHJvbHMtPm1fZnVsbHNjcmVlblRpbWVsaW5lID0gZnVs
bHNjcmVlblRpbWVsaW5lLmdldCgpOworICAgIGZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lci0+
YXBwZW5kQ2hpbGQoZnVsbHNjcmVlblRpbWVsaW5lLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAg
IGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVs
bHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudD4gZnVsbHNjcmVlblRpbWVEaXNwbGF5
Q29udGFpbmVyID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4gZnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxh
eSA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOworICAgIGNvbnRyb2xzLT5tX2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3Bs
YXkgPSBmdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5LmdldCgpOworICAgIGZ1bGxzY3JlZW5U
aW1lRGlzcGxheUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoZnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlz
cGxheS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAw
OworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxh
eUVsZW1lbnQ+IGZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheSA9IE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Cisg
ICAgY29udHJvbHMtPm1fZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5ID0gZnVsbHNjcmVl
blRpbWVSZW1haW5pbmdEaXNwbGF5LmdldCgpOworICAgIGZ1bGxzY3JlZW5UaW1lRGlzcGxheUNv
bnRhaW5lci0+YXBwZW5kQ2hpbGQoZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5LnJlbGVh
c2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBj
b250cm9scy0+bV9mdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXIgPSBmdWxsc2NyZWVuVGlt
ZURpc3BsYXlDb250YWluZXIuZ2V0KCk7CisgICAgZnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVy
LT5hcHBlbmRDaGlsZChmdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXIucmVsZWFzZSgpLCBl
YywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnRyb2xz
LT5tX2Z1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lciA9IGZ1bGxzY3JlZW5UaW1lbGluZUNvbnRh
aW5lci5nZXQoKTsKKyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoZnVsbHNjcmVlblRpbWVsaW5lQ29u
dGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50
PiBidXR0b25Hcm91cENvbnRhaW5lciA9IE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVy
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIC8vIEZJWE1FOiBPbmx5IGNyZWF0ZSB3
aGVuIG5lZWRlZCA8aHR0cDovL3dlYmtpdC5vcmcvYi81NzE2Mz4KKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sRnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ+IGZ1bGxTY3JlZW5CdXR0b25D
b250YWluZXIgPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9mdWxsU2NyZWVuQnV0dG9uQ29udGFp
bmVyID0gZnVsbFNjcmVlbkJ1dHRvbkNvbnRhaW5lci5nZXQoKTsKKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBmdWxsc2NyZWVuRnVsbFNj
cmVlbkJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9mdWxsc2NyZWVuRnVsbFNjcmVl
bkJ1dHRvbiA9IGZ1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLmdldCgpOworICAgIGZ1bGxTY3Jl
ZW5CdXR0b25Db250YWluZXItPmFwcGVuZENoaWxkKGZ1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9u
LnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudD4gZnVs
bFNjcmVlbkRpdmlkZXIgPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1l
bnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgY29udHJvbHMtPm1fZnVsbFNjcmVlbkRpdmlkZXIg
PSBmdWxsU2NyZWVuRGl2aWRlci5nZXQoKTsKKyAgICBmdWxsU2NyZWVuQnV0dG9uQ29udGFpbmVy
LT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuRGl2aWRlci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAg
ICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworICAgIGJ1dHRvbkdyb3VwQ29udGFpbmVyLT5h
cHBlbmRDaGlsZChmdWxsU2NyZWVuQnV0dG9uQ29udGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUp
OworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250
cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ+IHBsYXlCdXR0b25Db250YWluZXIgPSBNZWRp
YUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAg
ICBjb250cm9scy0+bV9wbGF5QnV0dG9uQ29udGFpbmVyID0gcGxheUJ1dHRvbkNvbnRhaW5lci5n
ZXQoKTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50
PiBmdWxsc2NyZWVuUGxheUJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9u
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9mdWxsc2NyZWVuUGxh
eUJ1dHRvbiA9IGZ1bGxzY3JlZW5QbGF5QnV0dG9uLmdldCgpOworICAgIHBsYXlCdXR0b25Db250
YWluZXItPmFwcGVuZENoaWxkKGZ1bGxzY3JlZW5QbGF5QnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRy
dWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgYnV0dG9uR3JvdXBDb250
YWluZXItPmFwcGVuZENoaWxkKHBsYXlCdXR0b25Db250YWluZXIucmVsZWFzZSgpLCBlYywgdHJ1
ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNv
bnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ+IHBsYWNlaG9sZGVyID0gTWVkaWFDb250cm9sUGxhY2Vo
b2xkZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIGNvbnRyb2xzLT5tX3BsYWNlaG9s
ZGVyID0gcGxhY2Vob2xkZXIuZ2V0KCk7CisgICAgYnV0dG9uR3JvdXBDb250YWluZXItPmFwcGVu
ZENoaWxkKHBsYWNlaG9sZGVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBjb250cm9scy0+bV9idXR0b25Db250YWluZXIgPSBidXR0
b25Hcm91cENvbnRhaW5lci5nZXQoKTsKKyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoYnV0dG9uR3Jv
dXBDb250YWluZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIGlmIChkb2N1bWVudC0+cGFnZSgpLT50aGVtZSgpLT5zdXBwb3J0c0Ns
b3NlZENhcHRpb25pbmcoKSkgeworICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVG9nZ2xlQ2xv
c2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiB0b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA9IE1l
ZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50LCBjb250cm9scy5nZXQoKSk7CisgICAgICAgIGNvbnRyb2xzLT5tX3RvZ2dsZUNsb3NlZENh
cHRpb25zQnV0dG9uID0gdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24uZ2V0KCk7CisgICAgICAg
IHBhbmVsLT5hcHBlbmRDaGlsZCh0b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi5yZWxlYXNlKCks
IGVjLCB0cnVlKTsKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorCisgICAgY29udHJvbHMtPm1fcGFuZWwgPSBwYW5lbC5nZXQoKTsKKyAgICBjb250cm9scy0+
YXBwZW5kQ2hpbGQocGFuZWwucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIGNvbnRyb2xzLT5tX2VtYmVkZGVkUGFuZWwgPSBlbWJlZFBh
bmVsLmdldCgpOworICAgIGNvbnRyb2xzLT5hcHBlbmRDaGlsZChlbWJlZFBhbmVsLnJlbGVhc2Uo
KSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1
cm4gY29udHJvbHMucmVsZWFzZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5
OjpzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBjb250cm9sbGVy
KQoreworICAgIGlmIChtX21lZGlhQ29udHJvbGxlciA9PSBjb250cm9sbGVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBNZWRpYUNvbnRyb2xzOjpzZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxl
cik7CisKKyAgICBpZiAobV9idXR0b25Db250YWluZXIpCisgICAgICAgIG1fYnV0dG9uQ29udGFp
bmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fdGltZURpc3Bs
YXlDb250YWluZXIpCisgICAgICAgIG1fdGltZURpc3BsYXlDb250YWluZXItPnNldE1lZGlhQ29u
dHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuVGltZURpc3BsYXlDb250
YWluZXIpCisgICAgICAgIG1fZnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyLT5zZXRNZWRp
YUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fZnVsbHNjcmVlblBsYXlCdXR0b24p
CisgICAgICAgIG1fZnVsbHNjcmVlblBsYXlCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250
cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5KQorICAgICAg
ICBtX2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXktPnNldE1lZGlhQ29udHJvbGxlcihjb250
cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuVGltZWxpbmUpCisgICAgICAgIG1fZnVsbHNj
cmVlblRpbWVsaW5lLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1f
dGltZVJlbWFpbmluZ0Rpc3BsYXkpCisgICAgICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNl
dE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuVGltZVJl
bWFpbmluZ0Rpc3BsYXkpCisgICAgICAgIG1fZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5
LT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fdGltZWxpbmVDb250
YWluZXIpCisgICAgICAgIG1fdGltZWxpbmVDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihj
b250cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXIpCisgICAg
ICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29u
dHJvbGxlcik7CisgICAgaWYgKG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24pCisgICAgICAg
IG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9s
bGVyKTsKKyAgICBpZiAobV9tdXRlQnV0dG9uKQorICAgICAgICBtX211dGVCdXR0b24tPnNldE1l
ZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV92b2x1bWVTbGlkZXJDb250YWlu
ZXIpCisgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIo
Y29udHJvbGxlcik7CisgICAgaWYgKG1fZW1iZWRkZWRQYW5lbCkKKyAgICAgICAgbV9lbWJlZGRl
ZFBhbmVsLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgcmVzZXQoKTsKK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6c2hvdygpCit7CisgICAgaWYgKG1faXNG
dWxsc2NyZWVuKSB7CisgICAgICAgIG1fcGFuZWwtPnNldElzRGlzcGxheWVkKHRydWUpOworICAg
ICAgICBtX3BhbmVsLT5zaG93KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9lbWJlZGRlZFBh
bmVsLT5zZXRJc0Rpc3BsYXllZCh0cnVlKTsKKyAgICAgICAgbV9lbWJlZGRlZFBhbmVsLT5zaG93
KCk7CisgICAgfQorfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpoaWRlKCkKK3sK
KyAgICBpZiAobV9pc0Z1bGxzY3JlZW4pIHsKKyAgICAgICAgbV9wYW5lbC0+c2V0SXNEaXNwbGF5
ZWQoZmFsc2UpOworICAgICAgICBtX3BhbmVsLT5oaWRlKCk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgbV9lbWJlZGRlZFBhbmVsLT5zZXRJc0Rpc3BsYXllZChmYWxzZSk7CisgICAgICAgIG1fZW1i
ZWRkZWRQYW5lbC0+aGlkZSgpOworICAgICAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+aGlk
ZSgpOworICAgIH0KK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6bWFrZU9wYXF1
ZSgpCit7CisgICAgaWYgKG1faXNGdWxsc2NyZWVuKQorICAgICAgICBtX3BhbmVsLT5tYWtlT3Bh
cXVlKCk7CisgICAgZWxzZQorICAgICAgICBtX2VtYmVkZGVkUGFuZWwtPm1ha2VPcGFxdWUoKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6bWFrZVRyYW5zcGFyZW50KCkKK3sK
KyAgICBpZiAobV9pc0Z1bGxzY3JlZW4pCisgICAgICAgIG1fcGFuZWwtPm1ha2VUcmFuc3BhcmVu
dCgpOworICAgIGVsc2UgeworICAgICAgICBtX2VtYmVkZGVkUGFuZWwtPm1ha2VUcmFuc3BhcmVu
dCgpOworICAgICAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+aGlkZSgpOworICAgIH0KK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cmVzZXQoKQoreworICAgIFBhZ2UqIHBh
Z2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47
CisKKyAgICB1cGRhdGVTdGF0dXNEaXNwbGF5KCk7CisKKyAgICBpZiAobV9mdWxsU2NyZWVuQnV0
dG9uKSB7CisgICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+c3VwcG9ydHNGdWxsc2NyZWVu
KCkpCisgICAgICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPnNob3coKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CisgICAgfQorICAgIGlm
IChtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uKSB7CisgICAgICAgIGlmIChtX21lZGlhQ29u
dHJvbGxlci0+c3VwcG9ydHNGdWxsc2NyZWVuKCkpCisgICAgICAgICAgICBtX2Z1bGxzY3JlZW5G
dWxsU2NyZWVuQnV0dG9uLT5zaG93KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZnVs
bHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24tPmhpZGUoKTsKKyAgICB9CisgICAgZmxvYXQgZHVyYXRp
b24gPSBtX21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24oKTsKKyAgICBpZiAoaXNmaW5pdGUoZHVy
YXRpb24pIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihN
ZWRpYVNsaWRlclBhcnQpKSB7CisgICAgICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVy
LT5jdXJyZW50VGltZSgpOworICAgICAgICBtX3RpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlv
bik7CisgICAgICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7
CisgICAgICAgIG1fdGltZWxpbmVDb250YWluZXItPnNob3coKTsKKyAgICAgICAgbV9mdWxsc2Ny
ZWVuVGltZWxpbmVDb250YWluZXItPnNob3coKTsKKyAgICAgICAgbV90aW1lbGluZS0+c2V0UG9z
aXRpb24obm93KTsKKyAgICAgICAgbV9mdWxsc2NyZWVuVGltZWxpbmUtPnNldFBvc2l0aW9uKG5v
dyk7CisgICAgICAgIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIG1fdGltZWxpbmVDb250YWluZXItPmhpZGUoKTsKKyAgICAgICAgbV9mdWxsc2NyZWVu
VGltZWxpbmVDb250YWluZXItPmhpZGUoKTsKKyAgICB9CisKKyAgICBpZiAobV9tZWRpYUNvbnRy
b2xsZXItPmhhc0F1ZGlvKCkgfHwgcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhh
bmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQpKQorICAgICAgICBtX211dGVCdXR0b24tPnNo
b3coKTsKKyAgICBlbHNlCisgICAgICAgIG1fbXV0ZUJ1dHRvbi0+aGlkZSgpOworCisgICAgaWYg
KG1fdm9sdW1lU2xpZGVyKQorICAgICAgICBtX3ZvbHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVk
aWFDb250cm9sbGVyLT52b2x1bWUoKSk7CisKKyAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9u
c0J1dHRvbikgeworICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPmhhc0Nsb3NlZENhcHRp
b25zKCkpCisgICAgICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLT5zaG93KCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24t
PmhpZGUoKTsKKyAgICB9CisKKyAgICBpZiAobV9wbGF5QnV0dG9uKQorICAgICAgICBtX3BsYXlC
dXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CisKKyAgICBpZiAobV9mdWxsc2NyZWVuUGxheUJ1
dHRvbikKKyAgICAgICAgbV9mdWxsc2NyZWVuUGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUo
KTsKKworICAgIG1ha2VPcGFxdWUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eTo6YnVmZmVyaW5nUHJvZ3Jlc3NlZCgpCit7CisgICAgLy8gV2Ugb25seSBuZWVkIHRvIHVwZGF0
ZSBidWZmZXJpbmcgcHJvZ3Jlc3Mgd2hlbiBwYXVzZWQsIGR1cmluZyBub3JtYWwKKyAgICAvLyBw
bGF5YmFjayBwbGF5YmFja1Byb2dyZXNzZWQoKSB3aWxsIHRha2UgY2FyZSBvZiBpdC4KKyAgICBp
ZiAobV9tZWRpYUNvbnRyb2xsZXItPnBhdXNlZCgpKSB7CisgICAgICAgIGZsb2F0IG5vdyA9IG1f
bWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgICAgICBtX3RpbWVsaW5lLT5zZXRQ
b3NpdGlvbihub3cpOworICAgICAgICBtX2Z1bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24o
bm93KTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnBsYXliYWNr
U3RhcnRlZCgpCit7CisgICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRU
aW1lKCk7CisgICAgbV9wbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOworICAgIG1fZnVs
bHNjcmVlblBsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CisgICAgbV90aW1lbGluZS0+
c2V0UG9zaXRpb24obm93KTsKKyAgICBtX2Z1bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24o
bm93KTsKKyAgICB1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKTsKKworICAgIGlmIChtX2lzRnVs
bHNjcmVlbikKKyAgICAgICAgc3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cGxheWJhY2tQcm9ncmVzc2VkKCkKK3sK
KyAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBt
X3RpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOworICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lLT5z
ZXRQb3NpdGlvbihub3cpOworICAgIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpOworICAgIAor
ICAgIGlmICghbV9pc01vdXNlT3ZlckNvbnRyb2xzICYmIG1fbWVkaWFDb250cm9sbGVyLT5oYXNW
aWRlbygpKQorICAgICAgICBtYWtlVHJhbnNwYXJlbnQoKTsKK30KKwordm9pZCBNZWRpYUNvbnRy
b2xzQmxhY2tCZXJyeTo6cGxheWJhY2tTdG9wcGVkKCkKK3sKKyAgICBmbG9hdCBub3cgPSBtX21l
ZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURp
c3BsYXlUeXBlKCk7CisgICAgbV9mdWxsc2NyZWVuUGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5
cGUoKTsKKyAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOworICAgIG1fZnVsbHNjcmVl
blRpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOworICAgIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxh
eSgpOworICAgIG1ha2VPcGFxdWUoKTsKKyAgICAKKyAgICBzdG9wSGlkZUZ1bGxzY3JlZW5Db250
cm9sc1RpbWVyKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnVwZGF0ZUN1
cnJlbnRUaW1lRGlzcGxheSgpCit7CisgICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXIt
PmN1cnJlbnRUaW1lKCk7CisgICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+
ZHVyYXRpb24oKTsKKworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7CisgICAg
aWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBBbGxvdyB0aGUgdGhlbWUgdG8g
Zm9ybWF0IHRoZSB0aW1lLgorICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgbV9jdXJyZW50VGlt
ZURpc3BsYXktPnNldElubmVyVGV4dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xz
Q3VycmVudFRpbWUobm93LCBkdXJhdGlvbiksIGVjKTsKKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxh
eS0+c2V0Q3VycmVudFZhbHVlKG5vdyk7CisgICAgbV9mdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNw
bGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc0N1cnJl
bnRUaW1lKG5vdywgZHVyYXRpb24pLCBlYyk7CisgICAgbV9mdWxsc2NyZWVuQ3VycmVudFRpbWVE
aXNwbGF5LT5zZXRDdXJyZW50VmFsdWUobm93KTsKKyAgICBtX3RpbWVSZW1haW5pbmdEaXNwbGF5
LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc1JlbWFpbmlu
Z1RpbWUobm93LCBkdXJhdGlvbiksIGVjKTsKKyAgICBtX3RpbWVSZW1haW5pbmdEaXNwbGF5LT5z
ZXRDdXJyZW50VmFsdWUobm93IC0gZHVyYXRpb24pOworICAgIG1fZnVsbHNjcmVlblRpbWVSZW1h
aW5pbmdEaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250
cm9sc1JlbWFpbmluZ1RpbWUobm93LCBkdXJhdGlvbiksIGVjKTsKKyAgICBtX2Z1bGxzY3JlZW5U
aW1lUmVtYWluaW5nRGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKG5vdyAtIGR1cmF0aW9uKTsKK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cmVwb3J0ZWRFcnJvcigpCit7CisgICAg
UGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmICghcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhh
bmRsaW5nRm9yKE1lZGlhU2xpZGVyUGFydCkpIHsKKyAgICAgICAgbV90aW1lbGluZUNvbnRhaW5l
ci0+aGlkZSgpOworICAgICAgICBtX2Z1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lci0+aGlkZSgp
OworICAgIH0KKworICAgIGlmICghcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhh
bmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQpKQorICAgICAgICBtX211dGVCdXR0b24tPmhp
ZGUoKTsKKworICAgIGlmIChtX2Z1bGxTY3JlZW5CdXR0b24pCisgICAgICAgIG1fZnVsbFNjcmVl
bkJ1dHRvbi0+aGlkZSgpOworCisgICAgaWYgKG1fZnVsbFNjcmVlbkRpdmlkZXIpCisgICAgICAg
IG1fZnVsbFNjcmVlbkRpdmlkZXItPmhpZGUoKTsKKworICAgIGlmIChtX2Z1bGxzY3JlZW5GdWxs
U2NyZWVuQnV0dG9uKQorICAgICAgICBtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLT5oaWRl
KCk7CisKKyAgICBpZiAobV92b2x1bWVTbGlkZXJDb250YWluZXIpCisgICAgICAgIG1fdm9sdW1l
U2xpZGVyQ29udGFpbmVyLT5oaWRlKCk7CisKKyAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9u
c0J1dHRvbiAmJiAhcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9y
KE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25QYXJ0KSkKKyAgICAgICAgbV90b2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFj
a0JlcnJ5OjpjaGFuZ2VkTXV0ZSgpCit7CisgICAgbV9tdXRlQnV0dG9uLT5jaGFuZ2VkTXV0ZSgp
OworfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjplbnRlcmVkRnVsbHNjcmVlbigp
Cit7CisgICAgTWVkaWFDb250cm9sczo6ZW50ZXJlZEZ1bGxzY3JlZW4oKTsKKworICAgIG1fcGFu
ZWwtPnNldENhbkJlRHJhZ2dlZCh0cnVlKTsKKyAgICBtX2VtYmVkZGVkUGFuZWwtPnNldENhbkJl
RHJhZ2dlZCh0cnVlKTsKKworICAgIGlmIChtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uKQor
ICAgICAgICBtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLT5zZXRJc0Z1bGxzY3JlZW4odHJ1
ZSk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OmV4aXRlZEZ1bGxzY3JlZW4o
KQoreworICAgIG1fcGFuZWwtPnNldENhbkJlRHJhZ2dlZChmYWxzZSk7CisgICAgbV9lbWJlZGRl
ZFBhbmVsLT5zZXRDYW5CZURyYWdnZWQoZmFsc2UpOworCisgICAgaWYgKG1fZnVsbHNjcmVlbkZ1
bGxTY3JlZW5CdXR0b24pCisgICAgICAgIG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24tPnNl
dElzRnVsbHNjcmVlbihmYWxzZSk7CisKKyAgICAvLyBXZSB3aWxsIGtlZXAgdXNpbmcgdGhlIHBh
bmVsLCBidXQgd2Ugd2FudCBpdCB0byBnbyBiYWNrIHRvIHRoZSBzdGFuZGFyZCBwb3NpdGlvbi4K
KyAgICAvLyBUaGlzIHdpbGwgbWF0dGVyIHJpZ2h0IGF3YXkgYmVjYXVzZSB3ZSB1c2UgdGhlIHBh
bmVsIGV2ZW4gd2hlbiBub3QgZnVsbHNjcmVlbi4KKyAgICAvLyBBbmQgaWYgd2UgcmVlbnRlciBm
dWxsc2NyZWVuIHdlIGFsc28gd2FudCB0aGUgcGFuZWwgaW4gdGhlIHN0YW5kYXJkIHBvc2l0aW9u
LgorICAgIG1fcGFuZWwtPnJlc2V0UG9zaXRpb24oKTsKKyAgICBtX2VtYmVkZGVkUGFuZWwtPnJl
c2V0UG9zaXRpb24oKTsKKworICAgIE1lZGlhQ29udHJvbHM6OmV4aXRlZEZ1bGxzY3JlZW4oKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6c2hvd1ZvbHVtZVNsaWRlcigpCit7
CisgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlci0+aGFzQXVkaW8oKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyKQorICAgICAgICBtX3ZvbHVtZVNs
aWRlckNvbnRhaW5lci0+c2hvdygpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5
Ojp0b2dnbGVWb2x1bWVTbGlkZXIoKQoreworICAgIGlmICghbV9tZWRpYUNvbnRyb2xsZXItPmhh
c0F1ZGlvKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3ZvbHVtZVNsaWRlckNvbnRh
aW5lcikgeworICAgICAgICBpZiAobV92b2x1bWVTbGlkZXJDb250YWluZXItPnJlbmRlcmVyKCkg
JiYgbV92b2x1bWVTbGlkZXJDb250YWluZXItPnJlbmRlcmVyKCktPnZpc2libGVUb0hpdFRlc3Rp
bmcoKSkKKyAgICAgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5oaWRlKCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5zaG93KCk7Cisg
ICAgfQorfQorCitib29sIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpzaG91bGRIaWRlQ29udHJv
bHMoKQoreworICAgIGlmIChtX2lzRnVsbHNjcmVlbikKKyAgICAgICAgcmV0dXJuICFtX3BhbmVs
LT5ob3ZlcmVkKCk7CisgICAgcmV0dXJuICFtX2VtYmVkZGVkUGFuZWwtPmhvdmVyZWQoKTsKK30K
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xzQmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sc0JsYWNrQmVycnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTI2OWYxZTYyZWQxMjE4NDU3NDcyOWNh
ZjBkNDE2ZGI3MjkxNzFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuaApAQCAtMCwwICsxLDI4MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhQ29u
dHJvbHNCbGFja0JlcnJ5X2gKKyNkZWZpbmUgTWVkaWFDb250cm9sc0JsYWNrQmVycnlfaAorCisj
aWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmgi
CisjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudHMuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRy
b2xzLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3Mg
RXZlbnQ7CitjbGFzcyBNZWRpYVBsYXllcjsKKworY2xhc3MgUmVuZGVyQm94OworY2xhc3MgUmVu
ZGVyTWVkaWE7CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitjbGFzcyBNZWRpYUNvbnRyb2xU
ZXh0VHJhY2tDb250YWluZXJFbGVtZW50OworY2xhc3MgTWVkaWFDb250cm9sVGV4dFRyYWNrRGlz
cGxheUVsZW1lbnQ7CisjZW5kaWYKKworY2xhc3MgTWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250
YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxl
bWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisKK3Byb3RlY3RlZDoKKyAgICBNZWRpYUNvbnRyb2xC
dXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKK307CisKK2Ns
YXNzIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRp
YUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwor
Citwcm90ZWN0ZWQ6CisgICAgTWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50
KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVk
b0lkKCkgY29uc3QgT1ZFUlJJREU7Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xFbWJlZGRlZFBh
bmVsRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudD4gY3Jl
YXRlKERvY3VtZW50Kik7CisKKyAgICB2b2lkIHNldENhbkJlRHJhZ2dlZChib29sKTsKKyAgICB2
b2lkIHNldElzRGlzcGxheWVkKGJvb2wpOworCisgICAgdm9pZCByZXNldFBvc2l0aW9uKCk7Cisg
ICAgdm9pZCBtYWtlT3BhcXVlKCk7CisgICAgdm9pZCBtYWtlVHJhbnNwYXJlbnQoKTsKKworICAg
IHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJREUgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2
ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNp
dCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudChEb2N1bWVudCopOworCisgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsK
KworICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IExheW91dFBvaW50JiBldmVudExvY2F0aW9uKTsK
KyAgICB2b2lkIGNvbnRpbnVlRHJhZyhjb25zdCBMYXlvdXRQb2ludCYgZXZlbnRMb2NhdGlvbik7
CisgICAgdm9pZCBlbmREcmFnKCk7CisKKyAgICB2b2lkIHN0YXJ0VGltZXIoKTsKKyAgICB2b2lk
IHN0b3BUaW1lcigpOworICAgIHZvaWQgdHJhbnNpdGlvblRpbWVyRmlyZWQoVGltZXI8TWVkaWFD
b250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ+Kik7CisKKyAgICB2b2lkIHNldFBvc2l0aW9uKGNv
bnN0IExheW91dFBvaW50Jik7CisKKyAgICBib29sIG1fY2FuQmVEcmFnZ2VkOworICAgIGJvb2wg
bV9pc0JlaW5nRHJhZ2dlZDsKKyAgICBib29sIG1faXNEaXNwbGF5ZWQ7CisgICAgYm9vbCBtX29w
YXF1ZTsKKyAgICBMYXlvdXRQb2ludCBtX2xhc3REcmFnRXZlbnRMb2NhdGlvbjsKKyAgICBMYXlv
dXRQb2ludCBtX2N1bXVsYXRpdmVEcmFnT2Zmc2V0OworCisgICAgVGltZXI8TWVkaWFDb250cm9s
RW1iZWRkZWRQYW5lbEVsZW1lbnQ+IG1fdHJhbnNpdGlvblRpbWVyOworfTsKKworY2xhc3MgTWVk
aWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBN
ZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50PiBjcmVhdGUo
RG9jdW1lbnQqKTsKKworcHJvdGVjdGVkOgorICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1l
RGlzcGxheUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKK307CisKK2NsYXNz
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50IDogcHVibGljIE1l
ZGlhQ29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1l
bnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFp
bmVyRWxlbWVudChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVs
ZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisKK3ByaXZhdGU6
CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50KERvY3VtZW50
Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29u
c3QgT1ZFUlJJREU7Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVy
RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudD4g
Y3JlYXRlKERvY3VtZW50Kik7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sUGxheUJ1dHRv
bkNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKK307CisKK2NsYXNzIE1lZGlh
Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGFjZWhvbGRl
ckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworCitwcml2YXRlOgorICAgIE1lZGlhQ29udHJv
bFBsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworfTsKKworY2xhc3MgTWVk
aWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJv
bElucHV0RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250
cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworICAg
IHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVR5cGUoKSBPVkVS
UklERTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVs
ZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93
UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCopIE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNj
cmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxl
bWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNj
cmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworICAgIHZp
cnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2b2lkIHNldElzRnVsbHNjcmVlbihib29sKTsKKworcHJpdmF0ZToK
KyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoRG9jdW1l
bnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCopIE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5l
Q29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVD
b250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50KERvY3VtZW50Kik7Cisg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZF
UlJJREU7Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50
IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudD4gY3JlYXRl
KERvY3VtZW50KiwgTWVkaWFDb250cm9scyopOworCisgICAgdmlydHVhbCBib29sIHdpbGxSZXNw
b25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREU7CisgICAgdm9pZCBzZXRQb3NpdGlvbihm
bG9hdCk7CisgICAgdm9pZCBzZXREdXJhdGlvbihmbG9hdCk7CisKK3ByaXZhdGU6CisgICAgTWVk
aWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJv
bHMqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCopIE9WRVJSSURFOworCisgICAgTWVkaWFDb250cm9scyogbV9jb250cm9sczsKK307CisKK2Ns
YXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQgOiBw
dWJsaWMgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlF
bGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KERvY3VtZW50Kik7CisgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7
Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxl
bWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURp
c3BsYXlFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVudCopOworICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJS
SURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sc0JsYWNrQmVycnkgOiBwdWJsaWMgTWVkaWFD
b250cm9scyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0Js
YWNrQmVycnk+IGNyZWF0ZUNvbnRyb2xzKERvY3VtZW50Kik7CisKKyAgICAvLyBNZWRpYUNvbnRy
b2xzIGltcGxlbWVudGF0aW9uLgorICAgIHZvaWQgc2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29u
dHJvbGxlckludGVyZmFjZSopIE9WRVJSSURFOworCisgICAgdm9pZCBzaG93KCkgT1ZFUlJJREU7
CisgICAgdm9pZCBoaWRlKCkgT1ZFUlJJREU7CisgICAgdm9pZCBtYWtlT3BhcXVlKCkgT1ZFUlJJ
REU7CisgICAgdm9pZCBtYWtlVHJhbnNwYXJlbnQoKSBPVkVSUklERTsKKworICAgIHZvaWQgcmVz
ZXQoKSBPVkVSUklERTsKKworICAgIHZvaWQgYnVmZmVyaW5nUHJvZ3Jlc3NlZCgpIE9WRVJSSURF
OworICAgIHZvaWQgcGxheWJhY2tQcm9ncmVzc2VkKCkgT1ZFUlJJREU7CisgICAgdm9pZCBwbGF5
YmFja1N0YXJ0ZWQoKSBPVkVSUklERTsKKyAgICB2b2lkIHBsYXliYWNrU3RvcHBlZCgpIE9WRVJS
SURFOworCisgICAgdm9pZCBjaGFuZ2VkTXV0ZSgpIE9WRVJSSURFOworCisgICAgdm9pZCBlbnRl
cmVkRnVsbHNjcmVlbigpIE9WRVJSSURFOworICAgIHZvaWQgZXhpdGVkRnVsbHNjcmVlbigpIE9W
RVJSSURFOworCisgICAgdm9pZCByZXBvcnRlZEVycm9yKCkgT1ZFUlJJREU7CisKKyAgICB2b2lk
IHNob3dWb2x1bWVTbGlkZXIoKSBPVkVSUklERTsKKyAgICB2b2lkIHRvZ2dsZVZvbHVtZVNsaWRl
cigpIE9WRVJSSURFOworICAgIHZvaWQgdXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCkgT1ZFUlJJ
REU7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSGlkZUNvbnRyb2xzKCkgT1ZFUlJJREU7CisK
K3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sc0JsYWNrQmVycnkoRG9jdW1lbnQqKTsKKworICAg
IE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudCogbV9idXR0b25Db250YWlu
ZXI7CisgICAgTWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50KiBtX3RpbWVE
aXNwbGF5Q29udGFpbmVyOworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNv
bnRhaW5lckVsZW1lbnQqIG1fZnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyOworICAgIE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudCogbV9mdWxsc2NyZWVuUGxheUJ1
dHRvbjsKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVu
dCogbV9mdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5OworICAgIE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5UaW1lbGluZUVsZW1lbnQqIG1fZnVsbHNjcmVlblRpbWVsaW5lOworICAgIE1lZGlhQ29u
dHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudCogbV90aW1lUmVtYWluaW5nRGlzcGxheTsK
KyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KiBt
X2Z1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheTsKKyAgICBNZWRpYUNvbnRyb2xUaW1lbGlu
ZUNvbnRhaW5lckVsZW1lbnQqIG1fdGltZWxpbmVDb250YWluZXI7CisgICAgTWVkaWFDb250cm9s
RnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyRWxlbWVudCogbV9mdWxsc2NyZWVuVGltZWxpbmVD
b250YWluZXI7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50
KiBtX2Z1bGxTY3JlZW5EaXZpZGVyOworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2Ny
ZWVuQnV0dG9uRWxlbWVudCogbV9mdWxsc2NyZWVuRnVsbFNjcmVlbkJ1dHRvbjsKKyAgICBNZWRp
YUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50KiBtX211dGVCdXR0b247CisgICAgTWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudCogbV92b2x1bWVTbGlkZXJDb250YWlu
ZXI7CisgICAgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQqIG1fZW1iZWRkZWRQYW5l
bDsKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudCogbV9m
dWxsU2NyZWVuQnV0dG9uQ29udGFpbmVyOworICAgIE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250
YWluZXJFbGVtZW50KiBtX3BsYXlCdXR0b25Db250YWluZXI7CisgICAgTWVkaWFDb250cm9sUGxh
Y2Vob2xkZXJFbGVtZW50KiBtX3BsYWNlaG9sZGVyOworfTsKKworfQorCisjZW5kaWYKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJU
aGVtZUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9S
ZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwCmluZGV4IDk3NWQxZTRmMDE1ZGFlYjQxM2M5YmU1YTdi
ZDMxMjQyYTY5Mzg0NzIuLjc4MDg3YTEwYzM0Y2E3YjU1MDU1MjM1NzVlZWU3YWEzNjhlNjU5MjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhl
bWVCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIb3N0V2lu
ZG93LmgiCisjaW5jbHVkZSAiSW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxl
bWVudHMuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgpAQCAtNDQsMTAgKzQ1LDEzIEBAIGNvbnN0IHVuc2lnbmVkIHNtYWxsUmFk
aXVzID0gMTsKIGNvbnN0IHVuc2lnbmVkIGxhcmdlUmFkaXVzID0gMzsKIGNvbnN0IHVuc2lnbmVk
IGxpbmVXaWR0aCA9IDE7CiBjb25zdCBmbG9hdCBtYXJnaW5TaXplID0gNDsKLWNvbnN0IGZsb2F0
IG1lZGlhQ29udHJvbHNIZWlnaHQgPSAzMjsKLWNvbnN0IGZsb2F0IG1lZGlhU2xpZGVyVGh1bWJX
aWR0aCA9IDQwOwotY29uc3QgZmxvYXQgbWVkaWFTbGlkZXJUaHVtYkhlaWdodCA9IDEzOwotY29u
c3QgZmxvYXQgbWVkaWFTbGlkZXJUaHVtYlJhZGl1cyA9IDU7Citjb25zdCBmbG9hdCBtZWRpYUNv
bnRyb2xzSGVpZ2h0ID0gNDQ7Citjb25zdCBmbG9hdCBtZWRpYUJhY2tCdXR0b25IZWlnaHQgPSAz
MzsKK2NvbnN0IGZsb2F0IG1lZGlhU2xpZGVyT3V0bGluZVdpZHRoID0gMjsKK2NvbnN0IGZsb2F0
IG1lZGlhU2xpZGVyVHJhY2tSYWRpdXMgPSAzOworY29uc3QgZmxvYXQgbWVkaWFTbGlkZXJUaHVt
YldpZHRoID0gMjU7Citjb25zdCBmbG9hdCBtZWRpYVNsaWRlclRodW1iSGVpZ2h0ID0gMjU7Citj
b25zdCBmbG9hdCBtZWRpYVNsaWRlclRodW1iUmFkaXVzID0gMzsKIGNvbnN0IGZsb2F0IHNsaWRl
clRodW1iV2lkdGggPSAxNTsKIGNvbnN0IGZsb2F0IHNsaWRlclRodW1iSGVpZ2h0ID0gMjU7CiAK
QEAgLTEyNCw2ICsxMjgsMTIgQEAgY29uc3QgUkdCQTMyIGRyYWdSb2xsRGFyayA9IDB4ZmY2OWE4
ZmY7CiBjb25zdCBSR0JBMzIgYmxhY2tQZW4gPSBDb2xvcjo6YmxhY2s7CiBjb25zdCBSR0JBMzIg
Zm9jdXNSaW5nUGVuID0gMHhmZmEzYzhmZTsKIAorY29uc3QgUkdCQTMyIG1lZGlhU2xpZGVyVHJh
Y2tPdXRsaW5lID0gMHhmZjg0ODU4NzsKK2NvbnN0IFJHQkEzMiBtZWRpYVNsaWRlclRyYWNrUGxh
eWVkID0gMHhmZjJiOGZmZjsKK2NvbnN0IFJHQkEzMiBtZWRpYVNsaWRlclRyYWNrQnVmZmVyZWQg
PSAweGZmYmJiZGJmOworCitjb25zdCBSR0JBMzIgc2VsZWN0aW9uID0gMHhmZjJiOGZmZjsKKwog
ZmxvYXQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpkZWZhdWx0Rm9udFNpemUgPSAxNjsKIAogY29u
c3QgU3RyaW5nJiBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmRlZmF1bHRHVUlGb250KCkKQEAgLTE2
Myw3ICsxNzMsNyBAQCBzdGF0aWMgZmxvYXQgZGV0ZXJtaW5lRnVsbFNjcmVlbk11bHRpcGxpZXIo
RWxlbWVudCogZWxlbWVudCkKICAgICAgICAgLy8gdmlld3BvcnQgc2l6ZSwgYW5kIHRoZSB2aWV3
cG9ydCBzaXplIG1pZ2h0IGdldCBvdXRzdHJldGNoZWQgdG8gZml0IHRvIHRoZSBzY3JlZW4gZGlt
ZW5zaW9ucy4KICAgICAgICAgLy8gVG8gZml4IHRoYXQsIGxldHMgc3RyaXBzIG91dCB0aGUgUGFn
ZSBzY2FsZSBmYWN0b3IgZnJvbSB0aGUgbWVkaWEgY29udHJvbHMgbXVsdGlwbGllci4KICAgICAg
ICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBlbGVtZW50LT5kb2N1bWVudCgpLT52aWV3KCktPmhvc3RX
aW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCktPmN1cnJlbnRab29tRmFjdG9yKCk7Ci0gICAg
ICAgIHN0YXRpYyBWaWV3cG9ydEFyZ3VtZW50cyBkZWZhdWx0Vmlld3BvcnRBcmd1bWVudHM7CisK
ICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3JGdWRnZSA9IDEgLyBlbGVtZW50LT5kb2N1bWVudCgp
LT5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgICAgIGZ1bGxTY3JlZW5NdWx0aXBs
aWVyIC89IHNjYWxlRmFjdG9yICogc2NhbGVGYWN0b3JGdWRnZTsKICAgICB9CkBAIC0yOTYsMTIg
KzMwNiwxMiBAQCBTdHJpbmcgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpleHRyYU1lZGlhQ29udHJv
bHNTdHlsZVNoZWV0KCkKIHsKICAgICByZXR1cm4gU3RyaW5nKG1lZGlhQ29udHJvbHNCbGFja0Jl
cnJ5VXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKG1lZGlhQ29udHJvbHNCbGFja0JlcnJ5VXNl
ckFnZW50U3R5bGVTaGVldCkpOwogfQorI2VuZGlmCiAKLVN0cmluZyBSZW5kZXJUaGVtZUJsYWNr
QmVycnk6OmZvcm1hdE1lZGlhQ29udHJvbHNSZW1haW5pbmdUaW1lKGZsb2F0LCBmbG9hdCBkdXJh
dGlvbikgY29uc3QKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCitTdHJpbmcgUmVuZGVyVGhl
bWVCbGFja0JlcnJ5OjpleHRyYUZ1bGxTY3JlZW5TdHlsZVNoZWV0KCkKIHsKLSAgICAvLyBUaGlz
IGlzIGEgd29ya2Fyb3VuZCB0byBtYWtlIHRoZSBhcHBlYXJhbmNlIG9mIG1lZGlhIHRpbWUgY29u
dHJvbGxlciBpbgotICAgIC8vIGluLXBhZ2UgbW9kZSB0aGUgc2FtZSBhcyBpbiBmdWxsc2NyZWVu
IG1vZGUuCi0gICAgcmV0dXJuIGZvcm1hdE1lZGlhQ29udHJvbHNUaW1lKGR1cmF0aW9uKTsKKyAg
ICByZXR1cm4gU3RyaW5nKG1lZGlhQ29udHJvbHNCbGFja0JlcnJ5RnVsbHNjcmVlblVzZXJBZ2Vu
dFN0eWxlU2hlZXQsIHNpemVvZihtZWRpYUNvbnRyb2xzQmxhY2tCZXJyeUZ1bGxzY3JlZW5Vc2Vy
QWdlbnRTdHlsZVNoZWV0KSk7CiB9CiAjZW5kaWYKIApAQCAtMzkzLDEyICs0MDMsMjIgQEAgdm9p
ZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNv
bHZlciosIFJlbmRlclN0eWxlKgogICAgIHNldEJ1dHRvblN0eWxlKHN0eWxlKTsKIH0KIAotdm9p
ZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5
bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit2
b2lkIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25T
dHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25z
dAogewogICAgIHN0YXRpYyBjb25zdCBmbG9hdCBkZWZhdWx0Q29udHJvbEZvbnRQaXhlbFNpemUg
PSAxMDsKICAgICBzdGF0aWMgY29uc3QgZmxvYXQgZGVmYXVsdENhbmNlbEJ1dHRvblNpemUgPSAx
MzsKICAgICBzdGF0aWMgY29uc3QgZmxvYXQgbWluQ2FuY2VsQnV0dG9uU2l6ZSA9IDU7CiAKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIGJiU2hvd0NhbmNlbCwgKG51bGxB
dG9tLCAiZGF0YS1ibGFja2JlcnJ5LWhpZGUtY2FuY2VsIiwgbnVsbEF0b20pKTsKKworICAgIC8v
IGlmIHdlIGhhdmUgZGF0YS1ibGFja2JlcnJ5LWhpZGUtY2FuY2VsIGFjdGl2ZSwgbWFrZSB0aGUg
J1gnIHRha2Ugbm8gc3BhY2UKKyAgICBpZiAoZSAmJiBlLT5zaGFkb3dIb3N0KCktPmZhc3RHZXRB
dHRyaWJ1dGUoYmJTaG93Q2FuY2VsKSA9PSAidHJ1ZSIpIHsKKyAgICAgICAgTGVuZ3RoIGxlbmd0
aCgwLCBGaXhlZCk7CisgICAgICAgIHN0eWxlLT5zZXRXaWR0aChsZW5ndGgpOworICAgICAgICBz
dHlsZS0+c2V0SGVpZ2h0KGxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAv
LyBTY2FsZSB0aGUgYnV0dG9uIHNpemUgYmFzZWQgb24gdGhlIGZvbnQgc2l6ZQogICAgIGZsb2F0
IGZvbnRTY2FsZSA9IHN0eWxlLT5mb250U2l6ZSgpIC8gZGVmYXVsdENvbnRyb2xGb250UGl4ZWxT
aXplOwogICAgIGludCBjYW5jZWxCdXR0b25TaXplID0gbHJvdW5kZihzdGQ6Om1heChtaW5DYW5j
ZWxCdXR0b25TaXplLCBkZWZhdWx0Q2FuY2VsQnV0dG9uU2l6ZSAqIGZvbnRTY2FsZSkpOwpAQCAt
NDMxLDYgKzQ1MSwxMCBAQCBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRTZWFyY2hG
aWVsZENhbmNlbEJ1dHRvbihSZW5kZXJPYmplY3QqIGNhbmNlbEJ1dAogICAgIGlmICghaW5wdXQt
PnJlbmRlcmVyKCktPmlzQm94KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIC8vIGlm
IHdlIGhhdmUgZGF0YS1ibGFja2JlcnJ5LWhpZGUtY2FuY2VsIGFjdGl2ZSwgZG9uJ3QgZHJhdyB0
aGUgJ1gnCisgICAgaWYgKGNhbmNlbEJ1dHRvbk9iamVjdC0+c3R5bGUoKS0+dmlzaWJpbGl0eSgp
ID09IEhJRERFTikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgUmVuZGVyQm94KiBpbnB1
dFJlbmRlckJveCA9IHRvUmVuZGVyQm94KGlucHV0LT5yZW5kZXJlcigpKTsKICAgICBMYXlvdXRS
ZWN0IGlucHV0Q29udGVudEJveCA9IGlucHV0UmVuZGVyQm94LT5jb250ZW50Qm94UmVjdCgpOwog
CkBAIC02ODksMTAgKzcxMywxMCBAQCB2b2lkIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0
U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZQogICAgICAgICAg
ICAgZnVsbFNjcmVlbk11bHRpcGxpZXIgPSBkZXRlcm1pbmVGdWxsU2NyZWVuTXVsdGlwbGllcih0
b0VsZW1lbnQoc2xpZGVyLT5ub2RlKCkpKTsKICAgICB9CiAKLSAgICBpZiAocGFydCA9PSBNZWRp
YVZvbHVtZVNsaWRlclRodW1iUGFydCB8fCBwYXJ0ID09IFNsaWRlclRodW1iSG9yaXpvbnRhbFBh
cnQgfHwgcGFydCA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCkgeworICAgIGlmIChwYXJ0ID09
IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQgfHwgcGFydCA9PSBTbGlkZXJUaHVtYlZlcnRpY2Fs
UGFydCkgewogICAgICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKChwYXJ0ID09IFNsaWRlclRo
dW1iVmVydGljYWxQYXJ0ID8gc2xpZGVyVGh1bWJIZWlnaHQgOiBzbGlkZXJUaHVtYldpZHRoKSAq
IGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCkpOwogICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0
KExlbmd0aCgocGFydCA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCA/IHNsaWRlclRodW1iV2lk
dGggOiBzbGlkZXJUaHVtYkhlaWdodCkgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpKTsK
LSAgICB9IGVsc2UgaWYgKHBhcnQgPT0gTWVkaWFTbGlkZXJUaHVtYlBhcnQpIHsKKyAgICB9IGVs
c2UgaWYgKHBhcnQgPT0gTWVkaWFWb2x1bWVTbGlkZXJUaHVtYlBhcnQgfHwgcGFydCA9PSBNZWRp
YVNsaWRlclRodW1iUGFydCkgewogICAgICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKG1lZGlh
U2xpZGVyVGh1bWJXaWR0aCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCkpOwogICAgICAg
ICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChtZWRpYVNsaWRlclRodW1iSGVpZ2h0ICogZnVsbFNj
cmVlbk11bHRpcGxpZXIsIEZpeGVkKSk7CiAgICAgfQpAQCAtNzE4LDEwICs3NDIsMzEgQEAgYm9v
bCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBv
YmplY3QsIGNvbnN0IFBhaW50SW4KIAogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50
U2xpZGVyVHJhY2tSZWN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGlu
Zm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZT4gYmFj
a2dyb3VuZDsKLSAgICBpZiAoIWJhY2tncm91bmQpCi0gICAgICAgIGJhY2tncm91bmQgPSBsb2Fk
SW1hZ2UoImNvcmVfc2xpZGVyX2JnIik7Ci0gICAgcmV0dXJuIHBhaW50U2xpZGVyVHJhY2tSZWN0
KG9iamVjdCwgaW5mbywgcmVjdCwgYmFja2dyb3VuZC5nZXQoKSk7CisgICAgcmV0dXJuIHBhaW50
U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgaW5mbywgcmVjdCwgcmFuZ2VTbGlkZXJSZWd1bGFyVG9w
T3V0bGluZSwgcmFuZ2VTbGlkZXJSZWd1bGFyQm90dG9tT3V0bGluZSwgcmFuZ2VTbGlkZXJSZWd1
bGFyVG9wLCByYW5nZVNsaWRlclJlZ3VsYXJCb3R0b20pOworfQorCitib29sIFJlbmRlclRoZW1l
QmxhY2tCZXJyeTo6cGFpbnRTbGlkZXJUcmFja1JlY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNv
bnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCwgUkdCQTMyIHN0cm9rZUNv
bG9yU3RhcnQsIFJHQkEzMiBzdHJva2VDb2xvckVuZCwgUkdCQTMyIGZpbGxDb2xvclN0YXJ0LCBS
R0JBMzIgZmlsbENvbG9yRW5kKQoreworICAgIEZsb2F0U2l6ZSBzbWFsbENvcm5lcihtZWRpYVNs
aWRlclRyYWNrUmFkaXVzLCBtZWRpYVNsaWRlclRyYWNrUmFkaXVzKTsKKworICAgIGluZm8uY29u
dGV4dC0+c2F2ZSgpOworICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJv
a2UpOworICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVXaWR0aCk7CisK
KyNpZiBVU0UoU0tJQSkKKyAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KGNyZWF0
ZUxpbmVhckdyYWRpZW50KHN0cm9rZUNvbG9yU3RhcnQsIHN0cm9rZUNvbG9yRW5kLCByZWN0Lm1h
eFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSkpOworICAgIGluZm8uY29udGV4
dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KGZpbGxDb2xvclN0YXJ0LCBm
aWxsQ29sb3JFbmQsIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigp
KSk7CisjZWxzZQorICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3Ryb2tlQ29sb3JT
dGFydCwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgaW5mby5jb250ZXh0LT5zZXRGaWxsQ29s
b3IoZmlsbENvbG9yU3RhcnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworI2VuZGlmCisKKyAgICBQ
YXRoIHBhdGg7CisgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0LCBzbWFsbENvcm5lcik7Cisg
ICAgaW5mby5jb250ZXh0LT5maWxsUGF0aChwYXRoKTsKKworICAgIGluZm8uY29udGV4dC0+cmVz
dG9yZSgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVy
cnk6OnBhaW50U2xpZGVyVHJhY2tSZWN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWlu
dEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QsIEltYWdlKiBpbmFjdGl2ZSkKQEAgLTgw
NSwyOSArODUwLDQ3IEBAIHZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RNZWRpYUNv
bnRyb2xTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqCiAgICAgLy8gV2UgdXNlIG11
bHRpcGxlcyBvZiBtZWRpYUNvbnRyb2xzSGVpZ2h0IHRvIG1ha2UgYWxsIG9iamVjdHMgc2NhbGUg
ZXZlbmx5CiAgICAgTGVuZ3RoIHplcm8oMCwgRml4ZWQpOwogICAgIExlbmd0aCBjb250cm9sc0hl
aWdodChtZWRpYUNvbnRyb2xzSGVpZ2h0ICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIEZpeGVkKTsK
LSAgICBMZW5ndGggdGltZVdpZHRoKG1lZGlhQ29udHJvbHNIZWlnaHQgKiAzIC8gMiAqIGZ1bGxT
Y3JlZW5NdWx0aXBsaWVyLCBGaXhlZCk7Ci0gICAgTGVuZ3RoIHZvbHVtZUhlaWdodChtZWRpYUNv
bnRyb2xzSGVpZ2h0ICogNCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCk7Ci0gICAgTGVu
Z3RoIHBhZGRpbmcobWVkaWFDb250cm9sc0hlaWdodCAvIDggKiBmdWxsU2NyZWVuTXVsdGlwbGll
ciwgRml4ZWQpOwotICAgIGZsb2F0IGZvbnRTaXplID0gbWVkaWFDb250cm9sc0hlaWdodCAvIDIg
KiBmdWxsU2NyZWVuTXVsdGlwbGllcjsKKyAgICBMZW5ndGggaGFsZkNvbnRyb2xzV2lkdGgobWVk
aWFDb250cm9sc0hlaWdodCAvIDIgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpOworICAg
IExlbmd0aCBkaXNwbGF5SGVpZ2h0KG1lZGlhQ29udHJvbHNIZWlnaHQgLyAzICogZnVsbFNjcmVl
bk11bHRpcGxpZXIsIEZpeGVkKTsKKyAgICBMZW5ndGggcGFkZGluZyhtZWRpYUNvbnRyb2xzSGVp
Z2h0IC8gMTAgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpOworICAgIGZsb2F0IGZvbnRT
aXplID0gbWVkaWFDb250cm9sc0hlaWdodCAvIDMgKiBmdWxsU2NyZWVuTXVsdGlwbGllcjsKIAog
ICAgIHN3aXRjaCAoc3R5bGUtPmFwcGVhcmFuY2UoKSkgewogICAgIGNhc2UgTWVkaWFQbGF5QnV0
dG9uUGFydDoKKyAgICAgICAgc3R5bGUtPnNldFdpZHRoKGNvbnRyb2xzSGVpZ2h0KTsKKyAgICAg
ICAgc3R5bGUtPnNldEhlaWdodChjb250cm9sc0hlaWdodCk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgTWVkaWFNdXRlQnV0dG9uUGFydDoKKyAgICAgICAgc3R5bGUtPnNldFBhZGRpbmdMZWZ0
KHBhZGRpbmcpOworICAgICAgICBzdHlsZS0+c2V0V2lkdGgoY29udHJvbHNIZWlnaHQpOworICAg
ICAgICBzdHlsZS0+c2V0SGVpZ2h0KGNvbnRyb2xzSGVpZ2h0KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBNZWRpYVJld2luZEJ1dHRvblBhcnQ6CisgICAgICAgIC8vIFdlIGhpLWphY2sgdGhl
IFJld2luZCBCdXR0b24gSUQgdG8gdXNlIGl0IGZvciB0aGUgZGl2aWRlciBpbWFnZQorICAgICAg
ICBzdHlsZS0+c2V0V2lkdGgoaGFsZkNvbnRyb2xzV2lkdGgpOworICAgICAgICBzdHlsZS0+c2V0
SGVpZ2h0KGNvbnRyb2xzSGVpZ2h0KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYUVu
dGVyRnVsbHNjcmVlbkJ1dHRvblBhcnQ6CisgICAgICAgIHN0eWxlLT5zZXRQYWRkaW5nUmlnaHQo
cGFkZGluZyk7CisgICAgICAgIHN0eWxlLT5zZXRXaWR0aChjb250cm9sc0hlaWdodCk7CisgICAg
ICAgIHN0eWxlLT5zZXRIZWlnaHQoY29udHJvbHNIZWlnaHQpOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIE1lZGlhRXhpdEZ1bGxzY3JlZW5CdXR0b25QYXJ0OgotICAgIGNhc2UgTWVkaWFNdXRl
QnV0dG9uUGFydDoKKyAgICAgICAgc3R5bGUtPnNldExlZnQoemVybyk7CiAgICAgICAgIHN0eWxl
LT5zZXRXaWR0aChjb250cm9sc0hlaWdodCk7CiAgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoY29u
dHJvbHNIZWlnaHQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhQ3VycmVudFRpbWVQ
YXJ0OgogICAgIGNhc2UgTWVkaWFUaW1lUmVtYWluaW5nUGFydDoKLSAgICAgICAgc3R5bGUtPnNl
dFdpZHRoKHRpbWVXaWR0aCk7Ci0gICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoY29udHJvbHNIZWln
aHQpOworICAgICAgICBzdHlsZS0+c2V0V2lkdGgoY29udHJvbHNIZWlnaHQpOworICAgICAgICBz
dHlsZS0+c2V0SGVpZ2h0KGRpc3BsYXlIZWlnaHQpOwogICAgICAgICBzdHlsZS0+c2V0UGFkZGlu
Z1JpZ2h0KHBhZGRpbmcpOworICAgICAgICBzdHlsZS0+c2V0UGFkZGluZ0xlZnQocGFkZGluZyk7
CisgICAgICAgIHN0eWxlLT5zZXRQYWRkaW5nQm90dG9tKHBhZGRpbmcpOwogICAgICAgICBzdHls
ZS0+c2V0Rm9udFNpemUoc3RhdGljX2Nhc3Q8aW50Pihmb250U2l6ZSkpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIE1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyUGFydDoKLSAgICAgICAgc3R5
bGUtPnNldFdpZHRoKGNvbnRyb2xzSGVpZ2h0KTsKLSAgICAgICAgc3R5bGUtPnNldEhlaWdodCh2
b2x1bWVIZWlnaHQpOworICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KGNvbnRyb2xzSGVpZ2h0KTsK
ICAgICAgICAgc3R5bGUtPnNldEJvdHRvbShjb250cm9sc0hlaWdodCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CkBAIC04NDQsMTIgKzkwNywxNCBAQCB2b2lkIFJlbmRlclRoZW1lQmxh
Y2tCZXJyeTo6YWRqdXN0TWVkaWFDb250cm9sU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0
eWxlKgogICAgICAgICBjYXNlIE1lZGlhRXhpdEZ1bGxzY3JlZW5CdXR0b25QYXJ0OgogICAgICAg
ICAgICAgc3R5bGUtPnNldFBvc2l0aW9uKEFic29sdXRlUG9zaXRpb24pOwogICAgICAgICAgICAg
c3R5bGUtPnNldEJvdHRvbSh6ZXJvKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRMZWZ0KHplcm8p
OwogICAgICAgICAgICAgc3R5bGUtPnNldFJpZ2h0KGNvbnRyb2xzSGVpZ2h0KTsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1lZGlhTXV0ZUJ1dHRvblBhcnQ6CisgICAgICAgIGNh
c2UgTWVkaWFSZXdpbmRCdXR0b25QYXJ0OgorICAgICAgICAgICAgLy8gV2UgaGktamFjayB0aGUg
UmV3aW5kIEJ1dHRvbiBJRCB0byB1c2UgaXQgZm9yIHRoZSBkaXZpZGVyIGltYWdlCiAgICAgICAg
ICAgICBzdHlsZS0+c2V0UG9zaXRpb24oQWJzb2x1dGVQb3NpdGlvbik7CiAgICAgICAgICAgICBz
dHlsZS0+c2V0Qm90dG9tKHplcm8pOwotICAgICAgICAgICAgc3R5bGUtPnNldFJpZ2h0KHplcm8p
OworICAgICAgICAgICAgc3R5bGUtPnNldExlZnQoY29udHJvbHNIZWlnaHQpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKQEAgLTg2Miwx
NyArOTI3LDEyIEBAIHZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RTbGlkZXJUcmFj
a1N0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSoKICAgICBmbG9hdCBmdWxsU2NyZWVu
TXVsdGlwbGllciA9IGRldGVybWluZUZ1bGxTY3JlZW5NdWx0aXBsaWVyKGVsZW1lbnQpOwogCiAg
ICAgLy8gV2UgdXNlIG11bHRpcGxlcyBvZiBtZWRpYUNvbnRyb2xzSGVpZ2h0IHRvIG1ha2UgYWxs
IG9iamVjdHMgc2NhbGUgZXZlbmx5Ci0gICAgTGVuZ3RoIGNvbnRyb2xzSGVpZ2h0KG1lZGlhQ29u
dHJvbHNIZWlnaHQgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpOwotICAgIExlbmd0aCB2
b2x1bWVIZWlnaHQobWVkaWFDb250cm9sc0hlaWdodCAqIDQgKiBmdWxsU2NyZWVuTXVsdGlwbGll
ciwgRml4ZWQpOworICAgIExlbmd0aCBjb250cm9sc0hlaWdodChtZWRpYUNvbnRyb2xzSGVpZ2h0
IC8gMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCk7CiAgICAgc3dpdGNoIChzdHlsZS0+
YXBwZWFyYW5jZSgpKSB7CiAgICAgY2FzZSBNZWRpYVNsaWRlclBhcnQ6Ci0gICAgICAgIHN0eWxl
LT5zZXRIZWlnaHQoY29udHJvbHNIZWlnaHQpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIE1l
ZGlhVm9sdW1lU2xpZGVyUGFydDoKLSAgICAgICAgc3R5bGUtPnNldFdpZHRoKGNvbnRyb2xzSGVp
Z2h0KTsKLSAgICAgICAgc3R5bGUtPnNldEhlaWdodCh2b2x1bWVIZWlnaHQpOworICAgICAgICBz
dHlsZS0+c2V0SGVpZ2h0KGNvbnRyb2xzSGVpZ2h0KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXJQYXJ0OgogICAgIGRlZmF1bHQ6CiAgICAgICAg
IGJyZWFrOwogICAgIH0KQEAgLTkwNCw2ICs5NjQsMjkgQEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNr
QmVycnk6OnBhaW50TWVkaWFQbGF5QnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQ
YWkKICNlbmRpZgogfQogCisvLyBXZSBoaS1qYWNrIHRoZSBSZXdpbmQgQnV0dG9uIGNvZGUgdG8g
dXNlIGl0IGZvciB0aGUgZGl2aWRlciBpbWFnZQorYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6
OnBhaW50TWVkaWFSZXdpbmRCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworI2lmIEVOQUJMRShWSURF
TykKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0b1BhcmVudE1lZGlhRWxl
bWVudChvYmplY3QpOworCisgICAgaWYgKCFtZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmICghbWVkaWFFbGVtZW50LT5pc0Z1bGxzY3JlZW4oKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgc3RhdGljIEltYWdlKiBkaXZpZGVyID0gSW1hZ2U6OmxvYWRQ
bGF0Zm9ybVJlc291cmNlKCJkaXZpZGVyIikubGVha1JlZigpOworCisgICAgcmV0dXJuIHBhaW50
TWVkaWFCdXR0b24ocGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIGRpdmlkZXIpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0ocGFpbnRJbmZvKTsKKyAg
ICBVTlVTRURfUEFSQU0ocmVjdCk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIGJv
b2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmpl
Y3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB7CiAjaWYgRU5BQkxFKFZJREVPKQpAQCAtOTEyLDEwICs5OTUsOSBAQCBib29sIFJlbmRl
clRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIGNvbnN0IFBhaQogICAgIGlmICghbWVkaWFFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBzdGF0aWMgSW1hZ2UqIG1lZGlhTXV0ZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgic3BlYWtlciIpLmxlYWtSZWYoKTsKLSAgICBzdGF0aWMgSW1hZ2UqIG1lZGlhVW5t
dXRlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJzcGVha2VyX211dGUiKS5sZWFrUmVm
KCk7CisgICAgc3RhdGljIEltYWdlKiBkaXZpZGVyID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291
cmNlKCJzcGVha2VyIikubGVha1JlZigpOwogCi0gICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24o
cGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIG1lZGlhRWxlbWVudC0+bXV0ZWQoKSB8fCAhbWVkaWFF
bGVtZW50LT52b2x1bWUoKSA/IG1lZGlhVW5tdXRlIDogbWVkaWFNdXRlKTsKKyAgICByZXR1cm4g
cGFpbnRNZWRpYUJ1dHRvbihwYWludEluZm8uY29udGV4dCwgcmVjdCwgZGl2aWRlcik7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOwogICAgIFVOVVNFRF9QQVJBTShwYWludEluZm8p
OwpAQCAtOTMyLDcgKzEwMTQsNyBAQCBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRN
ZWRpYUZ1bGxzY3JlZW5CdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbgogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBzdGF0aWMgSW1hZ2UqIG1lZGlhRW50ZXJGdWxsc2NyZWVuID0g
SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJmdWxsc2NyZWVuIikubGVha1JlZigpOwotICAg
IHN0YXRpYyBJbWFnZSogbWVkaWFFeGl0RnVsbHNjcmVlbiA9IEltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgiZXhpdF9mdWxsc2NyZWVuIikubGVha1JlZigpOworICAgIHN0YXRpYyBJbWFnZSog
bWVkaWFFeGl0RnVsbHNjcmVlbiA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgiYmFjayIp
LmxlYWtSZWYoKTsKIAogICAgIEltYWdlKiBidXR0b25JbWFnZSA9IG1lZGlhRW50ZXJGdWxsc2Ny
ZWVuOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTk1OSwzOCArMTA0MSwzMCBAQCBi
b29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRlck9i
amVjdCogb2JqZWN0LCBjb25zdCBQYQogICAgIGZsb2F0IGxvYWRlZCA9IG1lZGlhRWxlbWVudC0+
cGVyY2VudExvYWRlZCgpOwogICAgIGZsb2F0IHBvc2l0aW9uID0gbWVkaWFFbGVtZW50LT5kdXJh
dGlvbigpID4gMCA/IChtZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCkgLyBtZWRpYUVsZW1lbnQt
PmR1cmF0aW9uKCkpIDogMDsKIAotICAgIGludCB4ID0gY2VpbChyZWN0LngoKSArIDIgKiBmdWxs
U2NyZWVuTXVsdGlwbGllciAtIGZ1bGxTY3JlZW5NdWx0aXBsaWVyIC8gMik7Ci0gICAgaW50IHkg
PSBjZWlsKHJlY3QueSgpICsgMTQgKiBmdWxsU2NyZWVuTXVsdGlwbGllciArIGZ1bGxTY3JlZW5N
dWx0aXBsaWVyIC8gMik7Ci0gICAgaW50IHcgPSBjZWlsKHJlY3Qud2lkdGgoKSAtIDQgKiBmdWxs
U2NyZWVuTXVsdGlwbGllciArIGZ1bGxTY3JlZW5NdWx0aXBsaWVyIC8gMik7Ci0gICAgaW50IGgg
PSBjZWlsKDIgKiBmdWxsU2NyZWVuTXVsdGlwbGllcik7CisgICAgaW50IGludHJpbnNpY0hlaWdo
dCA9IGNlaWwobWVkaWFTbGlkZXJUaHVtYkhlaWdodCAvIDQpOworICAgIGludCB4ID0gY2VpbChy
ZWN0LngoKSArIChtZWRpYUNvbnRyb2xzSGVpZ2h0IC0gaW50cmluc2ljSGVpZ2h0KSAvIDIgKiBm
dWxsU2NyZWVuTXVsdGlwbGllciAtIGZ1bGxTY3JlZW5NdWx0aXBsaWVyIC8gMik7CisgICAgaW50
IHkgPSBjZWlsKHJlY3QueSgpICsgKG1lZGlhQ29udHJvbHNIZWlnaHQgLyAyIC0gaW50cmluc2lj
SGVpZ2h0KSAvIDIgKiBmdWxsU2NyZWVuTXVsdGlwbGllciArIGZ1bGxTY3JlZW5NdWx0aXBsaWVy
IC8gMik7CisgICAgaW50IHcgPSBjZWlsKHJlY3Qud2lkdGgoKSAtIChtZWRpYUNvbnRyb2xzSGVp
Z2h0IC0gaW50cmluc2ljSGVpZ2h0KSAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyICsgZnVsbFNjcmVl
bk11bHRpcGxpZXIgLyAyKTsKKyAgICBpbnQgaCA9IGNlaWwoaW50cmluc2ljSGVpZ2h0ICogZnVs
bFNjcmVlbk11bHRpcGxpZXIpOwogICAgIEludFJlY3QgcmVjdDIoeCwgeSwgdywgaCk7CiAKICAg
ICBpbnQgd1BsYXllZCA9IGNlaWwodyAqIHBvc2l0aW9uKTsKICAgICBpbnQgd0xvYWRlZCA9IGNl
aWwoKHcgLSBtZWRpYVNsaWRlclRodW1iV2lkdGggKiBmdWxsU2NyZWVuTXVsdGlwbGllcikgKiBs
b2FkZWQgKyBtZWRpYVNsaWRlclRodW1iV2lkdGggKiBmdWxsU2NyZWVuTXVsdGlwbGllcik7CiAK
ICAgICBJbnRSZWN0IHBsYXllZCh4LCB5LCB3UGxheWVkLCBoKTsKLSAgICBJbnRSZWN0IGJ1ZmZl
cmVkKHgsIHksIHdMb2FkZWQsIGgpOworICAgIEludFJlY3QgYnVmZmVyZWQoeCwgY2VpbCh5ICsg
bWVkaWFTbGlkZXJPdXRsaW5lV2lkdGgpLCB3TG9hZGVkLCBjZWlsKGggLSAyICogbWVkaWFTbGlk
ZXJPdXRsaW5lV2lkdGgpKTsKIAogICAgIC8vIFRoaXMgaXMgdG8gcGFpbnQgbWFpbiBzbGlkZXIg
YmFyLgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHRyYWNrSW1hZ2U7Ci0gICAgaWYgKCF0cmFj
a0ltYWdlKQotICAgICAgICB0cmFja0ltYWdlID0gbG9hZEltYWdlKCJjb3JlX3NsaWRlcl9tZWRp
YV9iZyIpOwotICAgIGJvb2wgcmVzdWx0ID0gcGFpbnRTbGlkZXJUcmFja1JlY3Qob2JqZWN0LCBw
YWludEluZm8sIHJlY3QyLCB0cmFja0ltYWdlLmdldCgpKTsKKyAgICBib29sIHJlc3VsdCA9IHBh
aW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJbmZvLCByZWN0Mik7CiAKICAgICBpZiAo
bG9hZGVkID4gMCB8fCBwb3NpdGlvbiA+IDApIHsKICAgICAgICAgLy8gVGhpcyBpcyB0byBwYWlu
dCBidWZmZXJlZCBiYXIuCi0gICAgICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGJ1ZmZlcmVkSW1h
Z2UsIHBsYXllZEltYWdlOwotICAgICAgICBpZiAoIWJ1ZmZlcmVkSW1hZ2UpIHsKLSAgICAgICAg
ICAgIGJ1ZmZlcmVkSW1hZ2UgPSBsb2FkSW1hZ2UoImNvcmVfc2xpZGVyX2J1ZmZlcmVkX2JnIik7
Ci0gICAgICAgICAgICBwbGF5ZWRJbWFnZSA9IGxvYWRJbWFnZSgiY29yZV9zbGlkZXJfcGxheWVk
X2JnIik7Ci0gICAgICAgIH0KLSAgICAgICAgcGFpbnRTbGlkZXJUcmFja1JlY3Qob2JqZWN0LCBw
YWludEluZm8sIGJ1ZmZlcmVkLCBidWZmZXJlZEltYWdlLmdldCgpKTsKKyAgICAgICAgcGFpbnRT
bGlkZXJUcmFja1JlY3Qob2JqZWN0LCBwYWludEluZm8sIGJ1ZmZlcmVkLCBDb2xvcjo6ZGFya0dy
YXksIENvbG9yOjpkYXJrR3JheSwgQ29sb3I6OmRhcmtHcmF5LCBDb2xvcjo6ZGFya0dyYXkpOwog
CiAgICAgICAgIC8vIFRoaXMgaXMgdG8gcGFpbnQgcGxheWVkIHBhcnQgb2YgYmFyIChsZWZ0IG9m
IHNsaWRlciB0aHVtYikgdXNpbmcgc2VsZWN0aW9uIGNvbG9yLgotICAgICAgICBwYWludFNsaWRl
clRyYWNrUmVjdChvYmplY3QsIHBhaW50SW5mbywgcGxheWVkLCBwbGF5ZWRJbWFnZS5nZXQoKSk7
CisgICAgICAgIHBhaW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJbmZvLCBwbGF5ZWQs
IHNlbGVjdGlvbiwgc2VsZWN0aW9uLCBzZWxlY3Rpb24sIHNlbGVjdGlvbik7CiAgICAgfQogICAg
IHJldHVybiByZXN1bHQ7Ci0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7CiAgICAg
VU5VU0VEX1BBUkFNKHBhaW50SW5mbyk7CkBAIC0xMDAyLDE1ICsxMDc2LDM0IEBAIGJvb2wgUmVu
ZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBv
YmplY3QsIGNvbnN0IFBhCiBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNs
aWRlclRodW1iKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICNpZiBFTkFCTEUoVklERU8pCisjaWYgVVNFKFNL
SUEpCiAgICAgUmVuZGVyU2xpZGVyKiBzbGlkZXIgPSBkZXRlcm1pbmVSZW5kZXJTbGlkZXIob2Jq
ZWN0KTsKICAgICBpZiAoIXNsaWRlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3Rh
dGljIEltYWdlKiBtZWRpYVZvbHVtZVRodW1iID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNl
KCJ2b2x1bWVfdGh1bWIiKS5sZWFrUmVmKCk7CisgICAgZmxvYXQgZnVsbFNjcmVlbk11bHRpcGxp
ZXIgPSBkZXRlcm1pbmVGdWxsU2NyZWVuTXVsdGlwbGllcih0b0VsZW1lbnQoc2xpZGVyLT5ub2Rl
KCkpKTsKKworICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgUGF0aCBtZWRpYVRo
dW1iUm91bmRlZFJlY3RhbmdsZTsKKyAgICBtZWRpYVRodW1iUm91bmRlZFJlY3RhbmdsZS5hZGRS
b3VuZGVkUmVjdChyZWN0LCBGbG9hdFNpemUobWVkaWFTbGlkZXJUaHVtYlJhZGl1cyAqIGZ1bGxT
Y3JlZW5NdWx0aXBsaWVyLCBtZWRpYVNsaWRlclRodW1iUmFkaXVzICogZnVsbFNjcmVlbk11bHRp
cGxpZXIpKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJv
a2UpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoMC41KTsKKyAg
ICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKworICAgIGlmIChpc1ByZXNzZWQob2JqZWN0KSB8fCBpc0hvdmVyZWQo
b2JqZWN0KSB8fCBzbGlkZXItPmluRHJhZ01vZGUoKSkKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPnNldEZpbGxHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChzZWxlY3Rpb24sIENvbG9y
KHNlbGVjdGlvbikuZGFyaygpLnJnYigpLCByZWN0Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4
WE1heFlDb3JuZXIoKSkpOworICAgIGVsc2UKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNl
dEZpbGxHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChDb2xvcjo6d2hpdGUsIENvbG9yKENv
bG9yOjp3aGl0ZSkuZGFyaygpLnJnYigpLCByZWN0Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4
WE1heFlDb3JuZXIoKSkpOwogCi0gICAgZHJhd0NvbnRyb2wocGFpbnRJbmZvLmNvbnRleHQsIHJl
Y3QsIG1lZGlhVm9sdW1lVGh1bWIpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUGF0aCht
ZWRpYVRodW1iUm91bmRlZFJlY3RhbmdsZSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3Rv
cmUoKTsKIAogICAgIHJldHVybiB0cnVlOworI2Vsc2UgLy8gR0wgcmVuZGVyZXIKKyAgICBzdGF0
aWMgSW1hZ2UqIG1lZGlhU2xpZGVyVGh1bWIgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2Uo
ImNvcmVfc2xpZGVyX2hhbmRsZV9kaXNhYmxlZCIpLmxlYWtSZWYoKTsKKworICAgIHJldHVybiBw
YWludE1lZGlhQnV0dG9uKHBhaW50SW5mby5jb250ZXh0LCByZWN0LCBtZWRpYVNsaWRlclRodW1i
KTsKKyNlbmRpZiAvLyBVU0UoU0tJQSkKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7
CiAgICAgVU5VU0VEX1BBUkFNKHBhaW50SW5mbyk7CkBAIC0xMDIyLDE5ICsxMTE1LDI5IEBAIGJv
b2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhU2xpZGVyVGh1bWIoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QsIGNvbnN0IFBhCiBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRN
ZWRpYVZvbHVtZVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICNpZiBFTkFCTEUoVklERU8p
Ci0gICAgZmxvYXQgcGFkID0gcmVjdC53aWR0aCgpICogMC40NTsKLSAgICBmbG9hdCB4ID0gcmVj
dC54KCkgKyBwYWQ7Ci0gICAgZmxvYXQgeSA9IHJlY3QueSgpICsgcGFkOwotICAgIGZsb2F0IHdp
ZHRoID0gcmVjdC53aWR0aCgpICogMC4xOwotICAgIGZsb2F0IGhlaWdodCA9IHJlY3QuaGVpZ2h0
KCkgLSAoMi4wICogcGFkKTsKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0
b1BhcmVudE1lZGlhRWxlbWVudChvYmplY3QpOworICAgIGlmICghbWVkaWFFbGVtZW50KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmbG9hdCBmdWxsU2NyZWVuTXVsdGlwbGllciA9IGRl
dGVybWluZUZ1bGxTY3JlZW5NdWx0aXBsaWVyKG1lZGlhRWxlbWVudCk7CisgICAgZmxvYXQgdm9s
dW1lID0gbWVkaWFFbGVtZW50LT52b2x1bWUoKSA+IDAgPyBtZWRpYUVsZW1lbnQtPnZvbHVtZSgp
IDogMDsKIAotICAgIEludFJlY3QgcmVjdDIoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgaW50
IGludHJpbnNpY0hlaWdodCA9IGNlaWwobWVkaWFTbGlkZXJUaHVtYkhlaWdodCAvIDQpOworICAg
IGludCB4ID0gY2VpbChyZWN0LngoKSArIChtZWRpYUNvbnRyb2xzSGVpZ2h0IC0gaW50cmluc2lj
SGVpZ2h0KSAvIDIgKiBmdWxsU2NyZWVuTXVsdGlwbGllciAtIGZ1bGxTY3JlZW5NdWx0aXBsaWVy
IC8gMik7CisgICAgaW50IHkgPSBjZWlsKHJlY3QueSgpICsgKG1lZGlhQ29udHJvbHNIZWlnaHQg
LyAyIC0gaW50cmluc2ljSGVpZ2h0KSAvIDIgKiBmdWxsU2NyZWVuTXVsdGlwbGllciArIGZ1bGxT
Y3JlZW5NdWx0aXBsaWVyIC8gMik7CisgICAgaW50IHcgPSBjZWlsKHJlY3Qud2lkdGgoKSAtICht
ZWRpYUNvbnRyb2xzSGVpZ2h0IC0gaW50cmluc2ljSGVpZ2h0KSAqIGZ1bGxTY3JlZW5NdWx0aXBs
aWVyICsgZnVsbFNjcmVlbk11bHRpcGxpZXIgLyAyKTsKKyAgICBpbnQgaCA9IGNlaWwoaW50cmlu
c2ljSGVpZ2h0ICogZnVsbFNjcmVlbk11bHRpcGxpZXIpOworICAgIEludFJlY3QgcmVjdDIoeCwg
eSwgdywgaCk7CisgICAgSW50UmVjdCB2b2x1bWVSZWN0KHgsIHksIGNlaWwodyAqIHZvbHVtZSks
IGgpOwogCi0gICAgc3RhdGljIFJlZlB0cjxJbWFnZT4gdHJhY2tJbWFnZTsKLSAgICBpZiAoIXRy
YWNrSW1hZ2UpCi0gICAgICAgIHRyYWNrSW1hZ2UgPSBsb2FkSW1hZ2UoImNvcmVfc2xpZGVyX21l
ZGlhX2JnIik7CisgICAgLy8gVGhpcyBpcyB0byBwYWludCBtYWluIHZvbHVtZSBzbGlkZXIgYmFy
LgorICAgIGJvb2wgcmVzdWx0ID0gcGFpbnRTbGlkZXJUcmFja1JlY3Qob2JqZWN0LCBwYWludElu
Zm8sIHJlY3QyLCBDb2xvcihtZWRpYVNsaWRlclRyYWNrT3V0bGluZSkucmdiKCksIENvbG9yKG1l
ZGlhU2xpZGVyVHJhY2tPdXRsaW5lKS5yZ2IoKSwgcmFuZ2VTbGlkZXJSZWd1bGFyVG9wLCByYW5n
ZVNsaWRlclJlZ3VsYXJUb3ApOwogCi0gICAgcmV0dXJuIHBhaW50U2xpZGVyVHJhY2tSZWN0KG9i
amVjdCwgcGFpbnRJbmZvLCByZWN0MiwgdHJhY2tJbWFnZS5nZXQoKSk7CisgICAgaWYgKHZvbHVt
ZSA+IDApIHsKKyAgICAgICAgLy8gVGhpcyBpcyB0byBwYWludCB2b2x1bWUgYmFyIChsZWZ0IG9m
IHZvbHVtZSBzbGlkZXIgdGh1bWIpIHVzaW5nIHNlbGVjdGlvbiBjb2xvci4KKyAgICAgICAgcGFp
bnRTbGlkZXJUcmFja1JlY3Qob2JqZWN0LCBwYWludEluZm8sIHZvbHVtZVJlY3QsIENvbG9yKG1l
ZGlhU2xpZGVyVHJhY2tPdXRsaW5lKS5yZ2IoKSwgQ29sb3IobWVkaWFTbGlkZXJUcmFja091dGxp
bmUpLnJnYigpLCBzZWxlY3Rpb24sIHNlbGVjdGlvbik7CisgICAgfQorICAgIHJldHVybiByZXN1
bHQ7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOwogICAgIFVOVVNFRF9QQVJBTShw
YWludEluZm8pOwpAQCAtMTA0Niw5ICsxMTQ5LDI5IEBAIGJvb2wgUmVuZGVyVGhlbWVCbGFja0Jl
cnJ5OjpwYWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNv
CiBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRodW1i
KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIHsKICNpZiBFTkFCTEUoVklERU8pCi0gICAgc3RhdGljIEltYWdlKiBt
ZWRpYVZvbHVtZVRodW1iID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJ2b2x1bWVfdGh1
bWIiKS5sZWFrUmVmKCk7CisjaWYgVVNFKFNLSUEpCisgICAgUmVuZGVyU2xpZGVyKiBzbGlkZXIg
PSBkZXRlcm1pbmVSZW5kZXJTbGlkZXIob2JqZWN0KTsKKyAgICBpZiAoIXNsaWRlcikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgZmxvYXQgZnVsbFNjcmVlbk11bHRpcGxpZXIgPSBkZXRl
cm1pbmVGdWxsU2NyZWVuTXVsdGlwbGllcih0b0VsZW1lbnQoc2xpZGVyLT5ub2RlKCkpKTsKKwor
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgUGF0aCBtZWRpYVRodW1iUm91bmRl
ZFJlY3RhbmdsZTsKKyAgICBtZWRpYVRodW1iUm91bmRlZFJlY3RhbmdsZS5hZGRSb3VuZGVkUmVj
dChyZWN0LCBGbG9hdFNpemUobWVkaWFTbGlkZXJUaHVtYkhlaWdodCAvIDIgKiBmdWxsU2NyZWVu
TXVsdGlwbGllciwgbWVkaWFTbGlkZXJUaHVtYkhlaWdodCAvIDIgKiBmdWxsU2NyZWVuTXVsdGlw
bGllcikpOworCisgICAgaWYgKGlzUHJlc3NlZChvYmplY3QpIHx8IGlzSG92ZXJlZChvYmplY3Qp
IHx8IHNsaWRlci0+aW5EcmFnTW9kZSgpKQorICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0
RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KHNlbGVjdGlvbiwgQ29sb3Ioc2VsZWN0
aW9uKS5kYXJrKCkucmdiKCksIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNv
cm5lcigpKSk7CisgICAgZWxzZQorICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0RmlsbEdy
YWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KG1lZGlhU2xpZGVyVHJhY2tPdXRsaW5lLCBDb2xv
cjo6YmxhY2ssIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7
CisKKyAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFBhdGgobWVkaWFUaHVtYlJvdW5kZWRSZWN0
YW5nbGUpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAKLSAgICByZXR1cm4g
cGFpbnRNZWRpYUJ1dHRvbihwYWludEluZm8uY29udGV4dCwgcmVjdCwgbWVkaWFWb2x1bWVUaHVt
Yik7CisgICAgcmV0dXJuIHRydWU7CisjZWxzZSAvLyBHTCByZW5kZXJlcgorICAgIHJldHVybiBw
YWludE1lZGlhU2xpZGVyVGh1bWIob2JqZWN0LCBwYWludEluZm8sIHJlY3QpOworI2VuZGlmIC8v
IFVTRShTS0lBKQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKICAgICBVTlVTRURf
UEFSQU0ocGFpbnRJbmZvKTsKQEAgLTExNDAsNCArMTI2MywyNCBAQCBDb2xvciBSZW5kZXJUaGVt
ZUJsYWNrQmVycnk6OnBsYXRmb3JtSW5hY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSBj
b25zdAogICAgIHJldHVybiBDb2xvcigyNTUsIDI1NSwgMCk7IC8vIFllbGxvdy4KIH0KIAorI2lm
IEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorSW50U2l6ZSBSZW5kZXJUaGVtZUJsYWNrQmVycnk6
OnNsaWRlclRpY2tTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gSW50U2l6ZSgxLCAzKTsKK30K
KworaW50IFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6c2xpZGVyVGlja09mZnNldEZyb21UcmFja0Nl
bnRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIC05OworfQorCisjZW5kaWYKKworYm9vbCBSZW5k
ZXJUaGVtZUJsYWNrQmVycnk6OnN1cHBvcnRzRGF0YUxpc3RVSShjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUpIGNvbnN0Cit7CisgICAgLy8gVE9ETzogc3VwcG9ydCBvdGhlciBpbnB1dCB0eXBlcyBp
biB0aGUgZnV0dXJlLgorICAgIHJldHVybiB0eXBlID09IElucHV0VHlwZU5hbWVzOjp0ZXh0KCk7
Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmgKaW5kZXgg
NTA3ZDQ1MTM0OGQzNWZlNDU0NjU0MDEwOWJhMzc1NmQ2MzY4NWVlNS4uMjg0MzNlYzU5NzU0NWE1
NzQ2YmNmNWJjZmRhYzIxZWU5NGM4NzBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oCkBAIC0zMiw3
ICszMiwxMCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdmlydHVhbCBTdHJp
bmcgZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGZv
cm1hdE1lZGlhQ29udHJvbHNSZW1haW5pbmdUaW1lKGZsb2F0IGN1cnJlbnRUaW1lLCBmbG9hdCBk
dXJhdGlvbikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHVzZXNWZXJ0aWNhbFZvbHVtZVNsaWRl
cigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCisgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFGdWxsU2NyZWVuU3R5bGVTaGVldCgpOwog
I2VuZGlmCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSG92ZXIoY29uc3QgUmVuZGVyU3R5bGUq
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTUxLDYgKzU0LDExIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVyVGh1
bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCisj
aWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgdmlydHVhbCBJbnRTaXplIHNsaWRlclRp
Y2tTaXplKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgc2xpZGVyVGlja09mZnNl
dEZyb21UcmFja0NlbnRlcigpIGNvbnN0IE9WRVJSSURFOworI2VuZGlmCisKICNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1UYXBIaWdobGlnaHRDb2xv
cigpIGNvbnN0OwogI2VuZGlmCkBAIC04Miw2ICs5MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRNZWRpYVZvbHVtZVNsaWRlclRodW1iKFJlbmRlck9iamVjdCosIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVBs
YXlCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OwogICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50
TWVkaWFSZXdpbmRCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpOwogICAgIHZpcnR1YWwgYm9vbCBwYWludFByb2dyZXNzQmFyKFJlbmRlck9iamVj
dCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIGRvdWJs
ZSBhbmltYXRpb25SZXBlYXRJbnRlcnZhbEZvclByb2dyZXNzQmFyKFJlbmRlclByb2dyZXNzKikg
Y29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgYW5pbWF0aW9uRHVyYXRpb25Gb3JQcm9ncmVzc0Jh
cihSZW5kZXJQcm9ncmVzcyopIGNvbnN0OwpAQCAtOTIsNiArMTAxLDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSBj
b25zdDsKICAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtSW5hY3RpdmVUZXh0U2VhcmNoSGlnaGxp
Z2h0Q29sb3IoKSBjb25zdDsKIAorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RhdGFMaXN0VUko
Y29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0
IFN0cmluZyYgZGVmYXVsdEdVSUZvbnQoKTsKIApAQCAtMTA0LDkgKzExNSwxMyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0QnV0dG9uU3R5bGUoUmVuZGVyU3R5bGUqKSBjb25zdDsKIAogICAgIGJv
b2wgcGFpbnRUZXh0RmllbGRPclRleHRBcmVhT3JTZWFyY2hGaWVsZChSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisKICAgICBib29sIHBhaW50U2xpZGVy
VHJhY2tSZWN0KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KTsKIAorICAgIGJvb2wgcGFpbnRTbGlkZXJUcmFja1JlY3QoUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYsIFJHQkEzMiwgUkdCQTMyLCBSR0JBMzIsIFJHQkEz
Mik7CisKICAgICBib29sIHBhaW50U2xpZGVyVHJhY2tSZWN0KFJlbmRlck9iamVjdCosIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmLCBJbWFnZSopOworCiAgICAgSW50UmVjdCBjb252
ZXJ0VG9QYWludGluZ1JlY3QoUmVuZGVyT2JqZWN0KiBpbnB1dFJlbmRlcmVyLCBjb25zdCBSZW5k
ZXJPYmplY3QqIHBhcnRSZW5kZXJlciwgTGF5b3V0UmVjdCBwYXJ0UmVjdCwgY29uc3QgSW50UmVj
dCYgbG9jYWxPZmZzZXQpIGNvbnN0OwogCiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178856</attachid>
            <date>2012-12-11 12:56:29 -0800</date>
            <delta_ts>2012-12-11 13:50:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104443-20121211155348.patch</filename>
            <type>text/plain</type>
            <size>112253</size>
            <attacher name="John Griggs">jgriggs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2E4YzNlZDdkZTUxMmJh
NDE1NTE2OTBlZTIxM2I2ODYzYWQ2NGE1MC4uOTg1MTkyZTY0MWIxZmI3MTUyMzA0YzQwZjliYmI1
NWFlOTE5ZjdiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxMCBAQAorMjAxMi0xMi0xMSAgSm9o
biBHcmlnZ3MgIDxqZ3JpZ2dzQHJpbS5jb20+CisKKyAgICAgICAgMjAxMi0xMi0xMSAgSm9obiBH
cmlnZ3MgIDxqZ3JpZ2dzQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFVwZGF0ZSBC
bGFja0JlcnJ5IE1lZGlhIENvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDQ0NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBQbGF0Zm9ybSBzcGVjaWZpYyB1cGRhdGUgdG8gbWVkaWEgY29udHJv
bHMgYXBwZWFyYW5jZSAtIE5vIG5ldyB0ZXN0cyByZXF1aXJlZC4KKworICAgICAgICBVcGRhdGUg
c2hhZG93IERPTSwgcGxhdGZvcm0gQ1NTIGFuZCByZW5kZXJpbmcgY29kZSBmb3IgbmV3IGxheW91
dCBvZiBtZWRpYSBjb250cm9scyBvbiBCbGFja0JlcnJ5IHBsYXRmb3JtLgorCisgICAgICAgICog
UGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlOgorICAgICAgICAqIGNzcy9tZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeS5jc3M6CisgICAgICAgIChhdWRpbyk6CisgICAgICAgIChhdWRpbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXBhbmVsLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1mdWxsc2NyZWVuLXBhbmVsKToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXBhbmVsLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCk6CisgICAg
ICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAtY29udGFpbmVy
LCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAtY29udGFpbmVyKToK
KyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1k
aXNwbGF5LWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVl
bi10aW1lLWRpc3BsYXktY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIpOgorICAgICAgICAodmlkZW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbiwgYXVkaW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbik6CisgICAgICAgICh2aWRlbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtcGxheS1idXR0b24pOgorICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtZnVsbHNjcmVlbi10aW1lbGluZS1jb250YWluZXIsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUtY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyKToKKyAgICAgICAgKGF1ZGlvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10aW1lLWRpc3BsYXksIHZpZGVv
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10aW1lLWRpc3BsYXkp
OgorICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtY3VycmVudC10aW1lLWRp
c3BsYXksIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWN1cnJlbnQtdGltZS1kaXNwbGF5
KToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGlt
ZS1yZW1haW5pbmctZGlzcGxheSwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNj
cmVlbi10aW1lLXJlbWFpbmluZy1kaXNwbGF5KToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXksIGF1ZGlvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkpOgorICAgICAgICAoYXVkaW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZSwgdmlkZW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZSk6CisgICAgICAgICh2aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uLCBhdWRpbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uKToKKyAgICAg
ICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uKToKKyAg
ICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uKToK
KyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uKToKKyAg
ICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uKToKKyAgICAg
ICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXItY29udGFpbmVy
KToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXIt
Y29udGFpbmVyKToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVt
ZS1zbGlkZXIpOgorICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1l
LXNsaWRlcik6CisgICAgICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2Ny
ZWVuLWJ1dHRvbi1kaXZpZGVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2Ny
ZWVuLWJ1dHRvbi1kaXZpZGVyKToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLWZ1bGxzY3JlZW4tYnV0dG9uLWNvbnRhaW5lciwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtcGxheS1idXR0b24tY29udGFpbmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1mdWxsc2NyZWVuLWJ1dHRvbi1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lcik6CisgICAgICAgICogY3NzL21lZGlhQ29udHJvbHNC
bGFja0JlcnJ5RnVsbHNjcmVlbi5jc3M6IEFkZGVkLgorICAgICAgICAoYm9keTotd2Via2l0LWZ1
bGwtcGFnZS1tZWRpYSk6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tcGFuZWwpOgorICAgICAgICAodmlkZW86LXdl
YmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCk6CisgICAgICAg
ICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWJ1dHRv
bi1ncm91cC1jb250YWluZXIpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtZGlzcGxheS1jb250YWluZXIp
OgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy10aW1lLWRpc3BsYXktY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVs
bC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbik6
CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXBsYXktYnV0dG9uKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZS1jb250YWluZXIpOgorICAg
ICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10
aW1lbGluZS1jb250YWluZXIpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWN1cnJlbnQtdGltZS1kaXNwbGF5KToK
KyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtY3VycmVudC10aW1lLWRpc3BsYXkpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNj
cmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtcmVtYWluaW5nLWRp
c3BsYXkpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy10aW1lLXJlbWFpbmluZy1kaXNwbGF5KToKKyAgICAgICAgKHZpZGVvOi13ZWJr
aXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGlu
ZSk6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXRpbWVsaW5lKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1mdWxsc2NyZWVuLWJ1dHRvbik6CisgICAg
ICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1
bGxzY3JlZW4tYnV0dG9uKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0b24pOgorICAgICAgICAodmlkZW86LXdlYmtp
dC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRh
aW5lcik6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXZvbHVtZS1zbGlkZXIpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNj
cmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1kaXZpZGVyKToK
KyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtZnVsbHNjcmVlbi1idXR0b24tY29udGFpbmVyLCB2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVu
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lcik6CisgICAgICAg
ICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxz
Y3JlZW4tYnV0dG9uLWNvbnRhaW5lcik6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2Ny
ZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lcik6CisgICAg
ICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBs
YWNlaG9sZGVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlw
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudFR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xD
bG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpyZWJ1
aWxkVHJhY2tMaXN0TWVudSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJh
Y2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVTdWJ0cmVlcyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVw
ZGF0ZVNpemVzKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEJ1dHRvbkdy
b3VwQ29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xCdXR0
b25Hcm91cENvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6
TWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6
c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVl
blBhbmVsRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBhbmVsRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGFuZWxFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBhbmVsRWxlbWVudDo6
c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVl
blBhbmVsRWxlbWVudDo6c3RhcnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5QYW5lbEVsZW1lbnQ6OmNvbnRpbnVlRHJhZyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGFuZWxFbGVtZW50OjplbmREcmFnKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QYW5lbEVsZW1lbnQ6OnN0YXJ0VGltZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBhbmVsRWxlbWVudDo6
c3RvcFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QYW5l
bEVsZW1lbnQ6OnRyYW5zaXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5QYW5lbEVsZW1lbnQ6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QYW5lbEVsZW1lbnQ6OnJlc2V0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBhbmVsRWxlbWVudDo6
bWFrZU9wYXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGFu
ZWxFbGVtZW50OjptYWtlVHJhbnNwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sRnVsbHNjcmVlblBhbmVsRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGFuZWxFbGVtZW50OjpzZXRDYW5CZURy
YWdnZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBhbmVsRWxl
bWVudDo6c2V0SXNEaXNwbGF5ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVs
bHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVl
blRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVy
RWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5C
dXR0b25Db250YWluZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1Bz
ZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25E
aXZpZGVyRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVy
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5CdXR0b25EaXZpZGVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBs
YXlCdXR0b25Db250YWluZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6TWVkaWFD
b250cm9sUGxhY2Vob2xkZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0
dG9uRWxlbWVudDo6dXBkYXRlRGlzcGxheVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1l
bnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1l
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVs
bHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVs
bHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OnNldElzRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50OjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250
YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGlt
ZWxpbmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lbGluZUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OndpbGxSZXNw
b25kVG9Nb3VzZUNsaWNrRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OnNo
YWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6
OnNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sRnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6
TWVkaWFDb250cm9sc0JsYWNrQmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
czo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojpj
cmVhdGVDb250cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eTo6c2V0TWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNC
bGFja0JlcnJ5OjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0Jl
cnJ5OjpoaWRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojpt
YWtlT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojpt
YWtlVHJhbnNwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0JsYWNrQmVy
cnk6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojpi
dWZmZXJpbmdQcm9ncmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFj
a0JlcnJ5OjpwbGF5YmFja1N0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
c0JsYWNrQmVycnk6OnBsYXliYWNrUHJvZ3Jlc3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xzQmxhY2tCZXJyeTo6cGxheWJhY2tTdG9wcGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojp1cGRhdGVDdXJyZW50VGltZURpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnJlcG9ydGVkRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0JsYWNrQmVycnk6OmNoYW5nZWRNdXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjplbnRlcmVkRnVsbHNj
cmVlbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6ZXhpdGVk
RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6
c2hvd1ZvbHVtZVNsaWRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tC
ZXJyeTo6dG9nZ2xlVm9sdW1lU2xpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNCbGFja0JlcnJ5OjpzaG91bGRIaWRlQ29udHJvbHMpOgorICAgICAgICAqIGh0bWwvc2hhZG93
L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQpOgorICAgICAg
ICAoTWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5QYW5lbEVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9s
RnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250
cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sUGxh
Y2Vob2xkZXJFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0
dG9uRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1
dHRvbkVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29u
dGFpbmVyRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVF
bGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlz
cGxheUVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sRnVsbHNjcmVlbkN1cnJlbnRUaW1l
RGlzcGxheUVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sc0JsYWNrQmVycnkpOgorICAg
ICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lRnVsbFNjcmVlbk11
bHRpcGxpZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpleHRy
YUZ1bGxTY3JlZW5TdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxh
Y2tCZXJyeTo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0
b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RTbGlk
ZXJUaHVtYlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5Ojpw
YWludFNsaWRlclRyYWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNr
QmVycnk6OmFkanVzdE1lZGlhQ29udHJvbFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0U2xpZGVyVHJhY2tTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFSZXdpbmRCdXR0b24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhTXV0ZUJ1dHRv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFG
dWxsc2NyZWVuQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJy
eTo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
QmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVZvbHVtZVNsaWRl
clRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6c2xpZGVy
VGlja1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpzbGlk
ZXJUaWNrT2Zmc2V0RnJvbVRyYWNrQ2VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lQmxhY2tCZXJyeTo6c3VwcG9ydHNEYXRhTGlzdFVJKToKKyAgICAgICAgKiBwbGF0Zm9ybS9i
bGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVCbGFja0JlcnJ5Ojp1c2VzVmVydGljYWxWb2x1bWVTbGlkZXIpOgorICAgICAgICAo
UmVuZGVyVGhlbWVCbGFja0JlcnJ5KToKKwogMjAxMi0xMi0xMSAgU2ltb24gSGF1c21hbm4gIDxz
aW1vbi5oYXVzbWFubkBkaWdpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBRdCBidWlsZCBm
aXg6IERvbid0IGVycm9yIG91dCBpZiBTUUxJVEUzU1JDRElSIGlzbid0IHNldCBidXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQppbmRleCBjYjllOWFlM2IyMzViNTMyNjVh
NTlmODA1YWZkZDQ5ODNkMGM5YTkzLi44MzhmNmQ3NzJkNGU3NGYwNjM3OTM0Nzg3NDA4MWI2YmEz
YjczNjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC0zLDYg
KzMsMTAgQEAgbGlzdChJTlNFUlQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTIDAKICAgICAi
JHtCTEFDS0JFUlJZX1RISVJEX1BBUlRZX0RJUn0vaWN1IgogKQogCitsaXN0KFJFTU9WRV9JVEVN
IFdlYkNvcmVfU09VUkNFUworICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAK
KykKKwogbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L2JpbmRpbmdzL2NwcCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vYmxh
Y2tiZXJyeS9Db29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZSIKQEAgLTEwNSw2ICsxMDksNyBAQCBs
aXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogbGlzdChBUFBFTkQgV2ViQ29yZV9VU0VSX0FH
RU5UX1NUWUxFX1NIRUVUUwogICAgICR7V0VCQ09SRV9ESVJ9L2Nzcy9tZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeS5jc3MKKyAgICAke1dFQkNPUkVfRElSfS9jc3MvbWVkaWFDb250cm9sc0JsYWNrQmVy
cnlGdWxsc2NyZWVuLmNzcwogICAgICR7V0VCQ09SRV9ESVJ9L2Nzcy90aGVtZUJsYWNrQmVycnku
Y3NzCiApCiAKQEAgLTEzMSw2ICsxMzYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVf
RElSRUNUT1JJRVMKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGVkaXRpbmcvYmxh
Y2tiZXJyeS9FZGl0b3JCbGFja0JlcnJ5LmNwcAogICAgIGVkaXRpbmcvYmxhY2tiZXJyeS9TbWFy
dFJlcGxhY2VCbGFja0JlcnJ5LmNwcAorICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFj
a0JlcnJ5LmNwcAogICAgIGxvYWRlci9ibGFja2JlcnJ5L0Nvb2tpZUphckJsYWNrQmVycnkuY3Bw
CiAgICAgcGFnZS9ibGFja2JlcnJ5L0FjY2Vzc2liaWxpdHlPYmplY3RCbGFja0JlcnJ5LmNwcAog
ICAgIHBhZ2UvYmxhY2tiZXJyeS9EcmFnQ29udHJvbGxlckJsYWNrQmVycnkuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3NzIGIvU291
cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNzcwppbmRleCA0YzAwYTcy
NWNkNWEwMTNlOTk4YjIzZmI0Yjc2NDM5YThhNzg4NDUxLi4zOGVlZjYzNWQ5ZTZhNDBlYzZlYTJl
NTQxYWY1OGRjNzk1NjBjODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFD
b250cm9sc0JsYWNrQmVycnkuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRy
b2xzQmxhY2tCZXJyeS5jc3MKQEAgLTI4LDQzICsyOCw3MSBAQAogIC8qIEJsYWNrQmVycnkgZGVm
YXVsdCBtZWRpYSBjb250cm9scy4gKi8KIAogYXVkaW8geworICAgIGJhY2tncm91bmQtY29sb3I6
IHJnYigwLCAwLCAwKTsKICAgICB3aWR0aDogMzAwcHg7CiAgICAgaGVpZ2h0OiAzMnB4OwogfQog
Ci1hdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCwgdmlkZW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtcGFuZWwgeworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZW1iZWRk
ZWQtcGFuZWwsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWVtYmVkZGVkLXBhbmVsIHsK
ICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6
b250YWw7CiAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKLSAgICAtd2Via2l0LXVzZXIt
c2VsZWN0OiBub25lOwogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICBib3R0b206IDA7CiAg
ICAgd2lkdGg6IDEwMCU7Ci0gICAgei1pbmRleDogMDsKLSAgICBvdmVyZmxvdzogdmlzaWJsZTsK
ICAgICBoZWlnaHQ6IGF1dG87Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIGJhY2tncm91
bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC42KTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io
MCwgMCwgMCk7CiB9CiAKLXZpZGVvOi13ZWJraXQtZnVsbC1wYWdlLW1lZGlhOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXBhbmVsIHsKLSAgICBib3R0b206IDBweDsKK2F1ZGlvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXBhbmVsLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCB7
CisgICAgZGlzcGxheTogbm9uZTsKIH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
cGxheS1idXR0b24sIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uIHsK
LSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLXBsYXktYnV0dG9uOwotICAgIGRpc3BsYXk6
IC13ZWJraXQtYm94OwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtYnV0dG9uLWdyb3Vw
LWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtYnV0dG9uLWdyb3VwLWNv
bnRhaW5lciB7CisgICAgZGlzcGxheTogbm9uZTsKIH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy10aW1lbGluZS1jb250YWluZXIgewordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVs
bHNjcmVlbi10aW1lLWRpc3BsYXktY29udGFpbmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1mdWxsc2NyZWVuLXRpbWUtZGlzcGxheS1jb250YWluZXIgeworICAgIGRpc3BsYXk6IG5v
bmU7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtZGlzcGxheS1jb250
YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWlu
ZXIgewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtY29udHJvbHMtYmFja2dyb3VuZDsK
ICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6
b250YWw7CiAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKLSAgICAtd2Via2l0LWJveC1w
YWNrOiBlbmQ7CisgICAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeTsKKyAgICAtd2Via2l0LWJv
eC1mbGV4OiAxOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCAwLCAwKTsKK30KKwordmlk
ZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbiwgYXVkaW86
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbiB7CisgICAgZGlz
cGxheTogbm9uZTsKK30KKwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0
b24sIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uIHsKKyAgICAtd2Vi
a2l0LWFwcGVhcmFuY2U6IG1lZGlhLXBsYXktYnV0dG9uOworICAgIGRpc3BsYXk6IC13ZWJraXQt
Ym94OworfQorCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWVs
aW5lLWNvbnRhaW5lciwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10
aW1lbGluZS1jb250YWluZXIgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6
IG1lZGlhLWNvbnRyb2xzLWJhY2tncm91bmQ7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Cisg
ICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKKyAgICAtd2Via2l0LWJveC1hbGlnbjog
c3RyZXRjaDsKKyAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CiAgICAgLXdlYmtpdC1ib3gt
ZmxleDogMTsKLSAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgIGhlaWdodDogYXV0
bzsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7
Cit9CisKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10
aW1lLWRpc3BsYXksIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3Vy
cmVudC10aW1lLWRpc3BsYXkgeworICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKIGF1ZGlvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLWN1cnJlbnQtdGltZS1kaXNwbGF5LCB2aWRlbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUtZGlzcGxheSB7CkBAIC03NCwxOSArMTAyLDI3IEBA
IGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWN1cnJlbnQtdGltZS1kaXNwbGF5LCB2aWRl
bzo6LXdlYmtpdC1tZWRpYS1jb250cm9sCiAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsK
ICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICAgLXdlYmtpdC1ib3gtZmxleDogMDsKLSAg
ICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwotICAgIGNvbG9yOiB3aGl0ZTsKKyAgICBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7CisgICAgY29sb3I6ICNmYWZhZmE7Cit9CisKK3Zp
ZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1yZW1haW5pbmctZGlz
cGxheSwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lLXJlbWFp
bmluZy1kaXNwbGF5IHsKKyAgICBkaXNwbGF5OiBub25lOwogfQogCi1hdWRpbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmluZy1kaXNwbGF5LCB2aWRlbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy10aW1lLXJlbWFpbmluZy1kaXNwbGF5IHsKK3ZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXksIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkgewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTog
bWVkaWEtdGltZS1yZW1haW5pbmctZGlzcGxheTsKICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsK
ICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAgLXdlYmtpdC1ib3gtYWxp
Z246IGNlbnRlcjsKICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICAgLXdlYmtpdC1ib3gt
ZmxleDogMDsKLSAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwotICAgIGNvbG9yOiB3aGl0
ZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7CisgICAgY29sb3I6ICNmYWZh
ZmE7Cit9CisKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxp
bmUsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUgewor
ICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRp
bWVsaW5lLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZSB7CkBAIC05NSw0
MSArMTMxLDYzIEBAIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLCB2aWRl
bzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZSB7CiAgICAgLXdlYmtpdC1ib3gtZmxl
eDogMTsKIH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0
b24sIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uIHsKLSAg
ICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLWZ1bGxzY3JlZW4tYnV0dG9uOwordmlkZW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1mdWxsc2NyZWVuLWJ1dHRvbiwgYXVkaW86
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1mdWxsc2NyZWVuLWJ1dHRvbiB7Cisg
ICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVs
bHNjcmVlbi1idXR0b24geworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtZW50ZXItZnVs
bHNjcmVlbi1idXR0b247CiAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiB9CiAKLWF1ZGlvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1tdXRlLWJ1dHRvbiB7CithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxs
c2NyZWVuLWJ1dHRvbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworYXVkaW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtbXV0ZS1idXR0b24gewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVk
aWEtbXV0ZS1idXR0b247CiAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiB9CiAKLWF1ZGlvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXItY29udGFpbmVyLCB2aWRlbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRhaW5lciB7Cit2aWRlbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1tdXRlLWJ1dHRvbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30K
KworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlci1jb250YWluZXIg
ewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtdm9sdW1lLXNsaWRlci1jb250YWluZXI7
CiAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Ci0gICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jp
em9udGFsOworICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAgLXdlYmtpdC1i
b3gtYWxpZ246IGNlbnRlcjsKICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CiAgICAgLXdlYmtp
dC1ib3gtZmxleDogMTsKICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAwcHg7CiAgICAgcmlnaHQ6IDBweDsKLSAgICBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNik7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
cmdiKDAsMCwwKTsKIH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNs
aWRlciwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlciB7Ci0gICAg
LXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS12b2x1bWUtc2xpZGVyOwotICAgIGRpc3BsYXk6IC13
ZWJraXQtYm94OwotICAgIC13ZWJraXQtYm94LWZsZXg6IDE7Cit2aWRlbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRhaW5lciB7CisgICAgZGlzcGxheTogbm9uZTsK
K30KKworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlciB7CisgICAg
IC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtdm9sdW1lLXNsaWRlcjsKKyAgICAgZGlzcGxheTog
LXdlYmtpdC1ib3g7CisgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIGxlZnQ6IDMlOworICAgIHJpZ2h0OiAzJTsKK30KKwordmlkZW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlciB7CisgICAgZGlzcGxheTogbm9uZTsKIH0K
IAotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtc2Vlay1iYWNrLWJ1dHRvbiwgdmlkZW86
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtc2Vlay1iYWNrLWJ1dHRvbiB7Ci0gICAgLXdlYmtpdC1h
cHBlYXJhbmNlOiBtZWRpYS1zZWVrLWJhY2stYnV0dG9uOwordmlkZW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24tZGl2aWRlciwgYXVkaW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24tZGl2aWRlciB7CiAgICAgZGlzcGxheTogbm9uZTsK
IH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtc2Vlay1mb3J3YXJkLWJ1dHRvbiwg
dmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtc2Vlay1mb3J3YXJkLWJ1dHRvbiB7Ci0gICAg
LXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1zZWVrLWZvcndhcmQtYnV0dG9uOwordmlkZW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24tY29udGFpbmVyLCB2aWRlbzo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbi1jb250YWluZXIsIGF1ZGlvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uLWNvbnRhaW5lciwgYXVkaW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24tY29udGFpbmVyIHsKICAgICBkaXNwbGF5
OiBub25lOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHNC
bGFja0JlcnJ5RnVsbHNjcmVlbi5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9s
c0JsYWNrQmVycnlGdWxsc2NyZWVuLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDQxMjM3YTgxOGM0MTc1ZWY3
ZmUyMTkzNDA2MzkxMjlhMDFmOGM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL21lZGlhQ29udHJvbHNCbGFja0JlcnJ5RnVsbHNjcmVlbi5jc3MKQEAgLTAsMCArMSwxODgg
QEAKKy8qCisgKiBCbGFja0JlcnJ5IHNwZWNpZmljIG92ZXJyaWRlcyBmb3IgSFRNTDUgbWVkaWEg
ZWxlbWVudHMuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyAvKiBCbGFja0JlcnJ5IGZ1bGxzY3Jl
ZW4gdmlkZW8gY29udHJvbHMuICovCisKK2JvZHk6LXdlYmtpdC1mdWxsLXBhZ2UtbWVkaWEgewor
ICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCAwLCAwKTsKK30KKwordmlkZW86LXdlYmtpdC1m
dWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1lbWJlZGRlZC1wYW5lbCB7CisgICAg
ZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1wYW5lbCB7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdl
YmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKKyAgICAtd2Via2l0LWJveC1hbGlnbjogc3RyZXRj
aDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYm90dG9tOiAwcHg7CisgICAgd2lkdGg6
IDEwMCU7CisgICAgaGVpZ2h0OiBhdXRvOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzgs
IDM4LCAzOCwgMC41KTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAtY29udGFpbmVyIHsKKyAgICAtd2Via2l0LWFwcGVh
cmFuY2U6IG1lZGlhLWNvbnRyb2xzLWJhY2tncm91bmQ7CisgICAgZGlzcGxheTogLXdlYmtpdC1i
b3g7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOworICAgIC13ZWJraXQtYm94
LWFsaWduOiBjZW50ZXI7CisgICAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeTsKKyAgICAtd2Vi
a2l0LWJveC1mbGV4OiAxOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCAwLCAwKTsKK30K
KwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxs
c2NyZWVuLXRpbWUtZGlzcGxheS1jb250YWluZXIgeworICAgIC13ZWJraXQtYXBwZWFyYW5jZTog
bWVkaWEtY29udHJvbHMtYmFja2dyb3VuZDsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAg
ICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246
IGNlbnRlcjsKKyAgICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5OworICAgIC13ZWJraXQtYm94
LWZsZXg6IDE7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzOCwgMzgsIDM4LCAwLjUpOwor
fQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRp
bWUtZGlzcGxheS1jb250YWluZXIgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13
ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5
LWJ1dHRvbiB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1wbGF5LWJ1dHRvbjsKKyAg
ICBkaXNwbGF5OiAtd2Via2l0LWJveDsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiB7CisgICAgZGlzcGxheTogbm9uZTsK
K30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1m
dWxsc2NyZWVuLXRpbWVsaW5lLWNvbnRhaW5lciB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBt
ZWRpYS1jb250cm9scy1iYWNrZ3JvdW5kOworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAg
IC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0
cmV0Y2g7CisgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOworICAgIC13ZWJraXQtYm94LWZs
ZXg6IDE7CisgICAgaGVpZ2h0OiBhdXRvOworICAgIHdpZHRoOiAxMDAlOworICAgIGJhY2tncm91
bmQtY29sb3I6IHJnYmEoMzgsIDM4LCAzOCwgMC41KTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxs
LXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZS1jb250YWluZXIgeworICAg
IGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1jdXJyZW50LXRpbWUtZGlzcGxheSB7CisgICAgLXdl
YmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1jdXJyZW50LXRpbWUtZGlzcGxheTsKKyAgICBkaXNwbGF5
OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CisgICAg
LXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKKyAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7Cisg
ICAgLXdlYmtpdC1ib3gtZmxleDogMDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM4LCAz
OCwgMzgsIDAuNSk7CisgICAgY29sb3I6ICNmYWZhZmE7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVs
bC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtY3VycmVudC10aW1lLWRpc3BsYXkgewor
ICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lLXJlbWFpbmluZy1kaXNwbGF5IHsKKyAg
ICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLXRpbWUtcmVtYWluaW5nLWRpc3BsYXk7CisgICAg
ZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFs
OworICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CisgICAgLXdlYmtpdC1ib3gtcGFjazog
ZW5kOworICAgIC13ZWJraXQtYm94LWZsZXg6IDA7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdi
YSgzOCwgMzgsIDM4LCAwLjUpOworICAgIGNvbG9yOiAjZmFmYWZhOworfQorCit2aWRlbzotd2Vi
a2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRp
c3BsYXkgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3Jl
ZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZSB7CisgICAgLXdl
YmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1zbGlkZXI7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7
CisgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVl
bjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZSB7CisgICAgZGlzcGxheTogbm9uZTsK
K30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1m
dWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1l
ZGlhLWV4aXQtZnVsbHNjcmVlbi1idXR0b247CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Cit9
CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVs
bHNjcmVlbi1idXR0b24geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQt
ZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0b24geworICAgIGRp
c3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtdm9sdW1lLXNsaWRlci1jb250YWluZXIgeworICAgIGRpc3BsYXk6IG5vbmU7
Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
dm9sdW1lLXNsaWRlciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86LXdlYmtpdC1m
dWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1kaXZp
ZGVyIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLXJld2luZC1idXR0b247CisgICAg
ZGlzcGxheTogLXdlYmtpdC1ib3g7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24tY29udGFpbmVyLCB2aWRlbzot
d2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLWNv
bnRhaW5lciB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1jb250cm9scy1iYWNrZ3Jv
dW5kOworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIC13ZWJraXQtYm94LW9yaWVudDog
aG9yaXpvbnRhbDsKKyAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOworICAgIC13ZWJraXQt
Ym94LWZsZXg6IDE7CisgICAgbWluLXdpZHRoOiAxMDAlOworICAgIGJhY2tncm91bmQtY29sb3I6
IHJnYigwLCAwLCAwKTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1jb250YWluZXIgeworICAgIC13ZWJraXQt
Ym94LXBhY2s6IHN0YXJ0OworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lciB7CisgICAgLXdlYmtpdC1ib3gt
cGFjazogY2VudGVyOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXBsYWNlaG9sZGVyIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlh
LWNvbnRyb2xzLWJhY2tncm91bmQ7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdl
YmtpdC1ib3gtZmxleDogMTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7Cisg
ICAgbWluLXdpZHRoOiAxMDAlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAKaW5kZXggN2MxMjBjMjFhMzhhMzkx
OTZlODQ3NDNlNDViMDM5Y2Y4Y2FmZjBmYi4uZWZjMzg1NDRjZGJiNzkxNjMzOWQzZmU5ODYzOTgy
ZWFmNjk5ZWI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwCkBAIC03NCw2ICs3NCw3IEBAIE1lZGlhQ29udHJv
bEVsZW1lbnRUeXBlIG1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKE5vZGUqIG5vZGUpCiB9CiAKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCiBjb25zdCBB
dG9taWNTdHJpbmcmIHRyYWNrSW5kZXhBdHRyaWJ1dGVOYW1lKCkKIHsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCJ4LXdlYmtpdC10cmFjay1pbmRleCIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKQEAgLTkyLDYgKzkzLDcgQEAgaW50
IHRyYWNrTGlzdEluZGV4Rm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogICAgIHJldHVybiB0
cmFja0luZGV4OwogfQogI2VuZGlmCisjZW5kaWYKIAogTWVkaWFDb250cm9sRWxlbWVudDo6TWVk
aWFDb250cm9sRWxlbWVudChNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSwgSFRN
TEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgOiBtX21lZGlhQ29udHJvbGxlcigwKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaApp
bmRleCA5MWIwYzhhMzUxZWEwMmJiNjFkM2Y1NzAxYTZkNDczODgwNWZhNjQzLi42YTMyZGI0NTdk
MzExYzZjZTgzMWQwN2VkODhhZGFhMzhkZGUzYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaApAQCAtODAsOSArODAs
MTEgQEAgaW5saW5lIEhUTUxNZWRpYUVsZW1lbnQqIHRvUGFyZW50TWVkaWFFbGVtZW50KFJlbmRl
ck9iamVjdCogcmVuZGVyZXIpIHsgcmV0dXJuIHQKIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIG1l
ZGlhQ29udHJvbEVsZW1lbnRUeXBlKE5vZGUqKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
KyNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKIGNvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJbmRl
eEF0dHJpYnV0ZU5hbWUoKTsKIGludCB0cmFja0xpc3RJbmRleEZvckVsZW1lbnQoRWxlbWVudCop
OwogI2VuZGlmCisjZW5kaWYKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5j
cHAKaW5kZXggOGI4ZTczZjExZDgxMDgxZjk2YWVmOWRiZDVjYThiMGU2NmMyNjMwMi4uNmRiZGI1
MzUxYzljOGE2MDk1ZjdkZjYyODc2ZDkzZGIyY2I0MDVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAtNDI5LDYgKzQy
OSwxNSBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ+IE1l
ZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbgogCiB2b2lkIE1lZGlhQ29udHJvbFBhbmVs
TXV0ZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewor
I2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLm1vdXNlZG93bkV2ZW50KSB7CisgICAgICAgIC8vIFdlIGRvIG5vdCBtdXRlIHdoZW4g
dGhlIG1lZGlhIHBsYXllciB2b2x1bWUvbXV0ZSBjb250cm9sIGlzIHRvdWNoZWQKKyAgICAgICAg
Ly8gb24gUGxheWJvb2suIEluc3RlYWQgd2Ugc2hvdy9oaWRlIHRoZSB2b2x1bWUgc2xpZGVyLgor
ICAgICAgICBtX2NvbnRyb2xzLT50b2dnbGVWb2x1bWVTbGlkZXIoKTsKKyAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKICAg
ICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQpCiAgICAg
ICAgIG1fY29udHJvbHMtPnNob3dWb2x1bWVTbGlkZXIoKTsKIApAQCAtNzIzLDcgKzczMiw2IEBA
IGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJF
bGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpCiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLQogTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpNZWRp
YUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50
LCBNZWRpYUNvbnRyb2xzKiBjb250cm9scykKICAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1lbnQo
ZG9jdW1lbnQsIE1lZGlhQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3QpCiAgICAgLCBtX2NvbnRyb2xz
KGNvbnRyb2xzKQpAQCAtNzQwLDYgKzc0OCw3IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sQ2xv
c2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50PiBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uCiAK
IHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKKyNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBtb2RpZmllciBrZXkg
Zm9yIGV4Y2x1c2l2aXR5IG92ZXJyaWRlLgpAQCAtNzcxLDYgKzc4MCw3IEBAIHZvaWQgTWVkaWFD
b250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50KiBldmVuCiAKICAgICBNZWRpYUNvbnRyb2xEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKGV2ZW50KTsKICNlbmRpZgorI2VuZGlmIC8vICFQTEFURk9STShCTEFDS0JFUlJZKQog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tM
aXN0RWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdApAQCAtNzgxLDYgKzc5MSw3IEBAIGNv
bnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVt
ZW50OjpzaGFkb3dQc2V1ZG9JZCgpCiAKIHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNU
cmFja0xpc3RFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KCkKIHsKKyNpZiAhUExBVEZPUk0oQkxBQ0tC
RVJSWSkKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIHNlbGVjdGVkQ2xhc3NWYWx1ZSwgKCJzZWxlY3RlZCIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIApAQCAtODIxLDEwICs4MzIsMTIgQEAgdm9pZCBN
ZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXko
KQogICAgICAgICB9CiAgICAgfQogI2VuZGlmCisjZW5kaWYgLy8gIVBMQVRGT1JNKEJMQUNLQkVS
UlkpCiB9CiAKIHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50
OjpyZWJ1aWxkVHJhY2tMaXN0TWVudSgpCiB7CisjaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIC8vIFJlbW92ZSBhbnkgZXhpc3RpbmcgY29udGVu
dC4KICAgICByZW1vdmVDaGlsZHJlbigpOwpAQCAtOTEzLDYgKzkyNiw3IEBAIHZvaWQgTWVkaWFD
b250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpyZWJ1aWxkVHJhY2tMaXN0TWVu
dSgpCiAKICAgICB1cGRhdGVEaXNwbGF5KCk7CiAjZW5kaWYKKyNlbmRpZiAvLyAhUExBVEZPUk0o
QkxBQ0tCRVJSWSkKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTE5
NSwxMCArMTIwOSwxMiBAQCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpN
ZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KERvYwogICAgIAogdm9pZCBNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVTdWJ0cmVlcyhEb2N1bWVu
dCogZG9jdW1lbnQpCiB7CisjaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCiAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIGN1ZSwgKCJjdWUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgbV9jdWVDb250YWluZXIgPSBIVE1MRWxlbWVu
dDo6Y3JlYXRlKHNwYW5UYWcsIGRvY3VtZW50KTsKICAgICBtX2N1ZUNvbnRhaW5lci0+c2V0UHNl
dWRvKGN1ZSk7CiAgICAgYXBwZW5kQ2hpbGQobV9jdWVDb250YWluZXIsIEFTU0VSVF9OT19FWENF
UFRJT04sIGZhbHNlKTsKKyNlbmRpZgogfQogCiBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRleHRU
cmFja0NvbnRhaW5lckVsZW1lbnQ+IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0xMjIxLDYgKzEyMzcsNyBAQCBjb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnNo
YWRvd1BzZXVkb0lkKCkgY29ucwogCiB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5l
ckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQogeworI2lmICFQTEFURk9STShCTEFDS0JFUlJZKQog
ICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50
KHRoaXMpOwogCiAgICAgLy8gMS4gSWYgdGhlIG1lZGlhIGVsZW1lbnQgaXMgYW4gYXVkaW8gZWxl
bWVudCwgb3IgaXMgYW5vdGhlciBwbGF5YmFjawpAQCAtMTI4MywxMCArMTMwMCwxMiBAQCB2b2lk
IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQog
CiAgICAgLy8gMTEuIFJldHVybiBvdXRwdXQuCiAgICAgaGFzQ2hpbGROb2RlcygpID8gc2hvdygp
IDogaGlkZSgpOworI2VuZGlmIC8vICFQTEFURk9STShCTEFDS0JFUlJZKQogfQogCiB2b2lkIE1l
ZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKCkKIHsKKyNp
ZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1l
bnQgPSB0b1BhcmVudE1lZGlhRWxlbWVudCh0aGlzKTsKICAgICBpZiAoIW1lZGlhRWxlbWVudCB8
fCAhbWVkaWFFbGVtZW50LT5yZW5kZXJlcigpIHx8ICFtZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCkt
PmlzVmlkZW8oKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTMwMSw2ICsxMzIwLDcgQEAgdm9pZCBN
ZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVTaXplcygpCiAgICAg
ICAgIG1fZm9udFNpemUgPSBmb250U2l6ZTsKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBTdHJpbmc6Om51bWJlcihmb250U2l6ZSkgKyAicHgiKTsK
ICAgICB9CisjZW5kaWYgLy8gIVBMQVRGT1JNKEJMQUNLQkVSUlkpCiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoVklERU9fVFJBQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzLmgKaW5kZXggZmE1ZDBiZDAwZDM2ZTgwOWIwOGU1NzczNTA0MjBlY2E4MmQ2MjJjOC4uZDRi
YTAxZGI4MDU2ZDJkMGRhMTQwOWM0MDJlYTI4NWJiZTZhZWIyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaApAQCAtODMsNiArODMsOSBAQCBjbGFzcyBNZWRp
YUNvbnRyb2xzIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlU3RhdHVzRGlzcGxheSgpIHsgfTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ3VycmVudFRp
bWVEaXNwbGF5KCk7CiAgICAgdmlydHVhbCB2b2lkIHNob3dWb2x1bWVTbGlkZXIoKTsKKyNpZiBQ
TEFURk9STShCTEFDS0JFUlJZKQorICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVWb2x1bWVTbGlkZXIo
KSB7IH07CisjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VkTXV0ZSgpOwogICAgIHZp
cnR1YWwgdm9pZCBjaGFuZ2VkVm9sdW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDg5NzVi
NzdiZmUxNDJkZGFmOGU4MTQ4NDU1NzRkMTVlMzBkNzA4MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcApAQCAt
MCwwICsxLDEwODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUg
Ik1lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmgiCisKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNs
dWRlICJET01Ub2tlbkxpc3QuaCIKKyNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbmNs
dWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgorI2luY2x1ZGUg
Ik1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94LmgiCisjaW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCisjaW5jbHVkZSAi
UmVuZGVyVGhlbWUuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlRleHQuaCIK
KworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKyNl
bmRpZgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Vz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK3N0YXRpYyBjb25zdCBkb3VibGUgdGltZVdpdGhv
dXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMgPSAzOworCitpbmxpbmUgTWVkaWFD
b250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xCdXR0b25Hcm91
cENvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9s
RGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFDb250cm9sc1BhbmVsKQoreworfQorCitQYXNzUmVm
UHRyPE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9s
QnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQor
eworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQ+IGVs
ZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVt
ZW50KGRvY3VtZW50KSk7CisgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgpOworfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudDo6
c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWJ1dHRvbi1ncm91cC1jb250YWlu
ZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlk
OworfQorCitpbmxpbmUgTWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50OjpN
ZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50
KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFDb250cm9sc1Bh
bmVsKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVy
RWxlbWVudD4gTWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lRGlzcGxh
eUNvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVGlt
ZURpc3BsYXlDb250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgcmV0dXJuIGVsZW1lbnQu
cmVsZWFzZSgpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFRpbWVEaXNw
bGF5Q29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXRpbWUtZGlzcGxheS1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgcmV0dXJuIGlkOworfQorCitNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxl
bWVudDo6TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50
KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFDb250cm9sc1Bh
bmVsKQorICAgICwgbV9jYW5CZURyYWdnZWQoZmFsc2UpCisgICAgLCBtX2lzQmVpbmdEcmFnZ2Vk
KGZhbHNlKQorICAgICwgbV9pc0Rpc3BsYXllZChmYWxzZSkKKyAgICAsIG1fb3BhcXVlKHRydWUp
CisgICAgLCBtX3RyYW5zaXRpb25UaW1lcih0aGlzLCAmTWVkaWFDb250cm9sRW1iZWRkZWRQYW5l
bEVsZW1lbnQ6OnRyYW5zaXRpb25UaW1lckZpcmVkKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50PiBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50KGRvY3VtZW50KSk7Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnNoYWRv
d1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1lbWJlZGRlZC1wYW5lbCIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK3ZvaWQg
TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnN0YXJ0RHJhZyhjb25zdCBMYXlvdXRQ
b2ludCYgZXZlbnRMb2NhdGlvbikKK3sKKyAgICBpZiAoIW1fY2FuQmVEcmFnZ2VkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV9pc0JlaW5nRHJhZ2dlZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAgaWYg
KCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzQm94KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9sYXN0RHJhZ0V2ZW50TG9jYXRpb24gPSBldmVudExvY2F0
aW9uOworCisgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50
c05vZGUodGhpcyk7CisKKyAgICBtX2lzQmVpbmdEcmFnZ2VkID0gdHJ1ZTsKK30KKwordm9pZCBN
ZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6Y29udGludWVEcmFnKGNvbnN0IExheW91
dFBvaW50JiBldmVudExvY2F0aW9uKQoreworICAgIGlmICghbV9pc0JlaW5nRHJhZ2dlZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgTGF5b3V0U2l6ZSBkaXN0YW5jZURyYWdnZWQgPSBldmVudExv
Y2F0aW9uIC0gbV9sYXN0RHJhZ0V2ZW50TG9jYXRpb247CisgICAgbV9jdW11bGF0aXZlRHJhZ09m
ZnNldC5tb3ZlKGRpc3RhbmNlRHJhZ2dlZCk7CisgICAgbV9sYXN0RHJhZ0V2ZW50TG9jYXRpb24g
PSBldmVudExvY2F0aW9uOworICAgIHNldFBvc2l0aW9uKG1fY3VtdWxhdGl2ZURyYWdPZmZzZXQp
OworfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjplbmREcmFnKCkK
K3sKKyAgICBpZiAoIW1faXNCZWluZ0RyYWdnZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
aXNCZWluZ0RyYWdnZWQgPSBmYWxzZTsKKworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkt
PmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7Cit9CisKK3Zv
aWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnN0YXJ0VGltZXIoKQoreworICAg
IHN0b3BUaW1lcigpOworCisgICAgLy8gVGhlIHRpbWVyIGlzIHJlcXVpcmVkIHRvIHNldCB0aGUg
cHJvcGVydHkgZGlzcGxheTonbm9uZScgb24gdGhlIHBhbmVsLAorICAgIC8vIHN1Y2ggdGhhdCBj
YXB0aW9ucyBhcmUgY29ycmVjdGx5IGRpc3BsYXllZCBhdCB0aGUgYm90dG9tIG9mIHRoZSB2aWRl
bworICAgIC8vIGF0IHRoZSBlbmQgb2YgdGhlIGZhZGVvdXQgdHJhbnNpdGlvbi4KKyAgICBkb3Vi
bGUgZHVyYXRpb24gPSBkb2N1bWVudCgpLT5wYWdlKCkgPyBkb2N1bWVudCgpLT5wYWdlKCktPnRo
ZW1lKCktPm1lZGlhQ29udHJvbHNGYWRlT3V0RHVyYXRpb24oKSA6IDA7CisgICAgbV90cmFuc2l0
aW9uVGltZXIuc3RhcnRPbmVTaG90KGR1cmF0aW9uKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xF
bWJlZGRlZFBhbmVsRWxlbWVudDo6c3RvcFRpbWVyKCkKK3sKKyAgICBpZiAobV90cmFuc2l0aW9u
VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV90cmFuc2l0aW9uVGltZXIuc3RvcCgpOworfQor
Cit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50Ojp0cmFuc2l0aW9uVGltZXJG
aXJlZChUaW1lcjxNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudD4qKQoreworICAgIGlm
ICghbV9vcGFxdWUpCisgICAgICAgIGhpZGUoKTsKKworICAgIHN0b3BUaW1lcigpOworfQorCit2
b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjpzZXRQb3NpdGlvbihjb25zdCBM
YXlvdXRQb2ludCYgcG9zaXRpb24pCit7CisgICAgZG91YmxlIGxlZnQgPSBwb3NpdGlvbi54KCk7
CisgICAgZG91YmxlIHRvcCA9IHBvc2l0aW9uLnkoKTsKKworICAgIC8vIFNldCB0aGUgbGVmdCBh
bmQgdG9wIHRvIGNvbnRyb2wgdGhlIHBhbmVsJ3MgcG9zaXRpb247IHRoaXMgZGVwZW5kcyBvbiBp
dCBiZWluZyBhYnNvbHV0ZSBwb3NpdGlvbmVkLgorICAgIC8vIFNldCB0aGUgbWFyZ2luIHRvIHpl
cm8gc2luY2UgdGhlIHBvc2l0aW9uIHBhc3NlZCBpbiB3aWxsIGFscmVhZHkgaW5jbHVkZSB0aGUg
ZWZmZWN0IG9mIHRoZSBtYXJnaW4uCisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUxlZnQsIGxlZnQsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgIHNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIHRvcCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QWCk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpbkxlZnQs
IDAuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblRvcCwgMC4wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BY
KTsKKworICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZDsKKyAgICBjbGFzc0xpc3QoKS0+YWRkKCJk
cmFnZ2VkIiwgaWdub3JlZCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVs
ZW1lbnQ6OnJlc2V0UG9zaXRpb24oKQoreworICAgIHJlbW92ZUlubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlMZWZ0KTsKKyAgICByZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5VG9wKTsKKyAgICByZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2lu
TGVmdCk7CisgICAgcmVtb3ZlSW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblRv
cCk7CisKKyAgICBFeGNlcHRpb25Db2RlIGlnbm9yZWQ7CisgICAgY2xhc3NMaXN0KCktPnJlbW92
ZSgiZHJhZ2dlZCIsIGlnbm9yZWQpOworCisgICAgbV9jdW11bGF0aXZlRHJhZ09mZnNldC5zZXRY
KDApOworICAgIG1fY3VtdWxhdGl2ZURyYWdPZmZzZXQuc2V0WSgwKTsKK30KKwordm9pZCBNZWRp
YUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6bWFrZU9wYXF1ZSgpCit7CisgICAgaWYgKG1f
b3BhcXVlKQorICAgICAgICByZXR1cm47CisKKyAgICBkb3VibGUgZHVyYXRpb24gPSBkb2N1bWVu
dCgpLT5wYWdlKCkgPyBkb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCktPm1lZGlhQ29udHJvbHNG
YWRlSW5EdXJhdGlvbigpIDogMDsKKworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHksIENTU1Byb3BlcnR5T3BhY2l0eSk7CisgICAg
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlv
biwgZHVyYXRpb24sIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUyk7CisgICAgc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHksIDEuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIpOworCisgICAgbV9vcGFxdWUgPSB0cnVlOworCisgICAgaWYgKG1faXNEaXNwbGF5
ZWQpCisgICAgICAgIHNob3coKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVs
RWxlbWVudDo6bWFrZVRyYW5zcGFyZW50KCkKK3sKKyAgICBpZiAoIW1fb3BhcXVlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBkb3VibGUgZHVyYXRpb24gPSBkb2N1bWVudCgpLT5wYWdlKCkgPyBk
b2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCktPm1lZGlhQ29udHJvbHNGYWRlT3V0RHVyYXRpb24o
KSA6IDA7CisKKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJh
bnNpdGlvblByb3BlcnR5LCBDU1NQcm9wZXJ0eU9wYWNpdHkpOworICAgIHNldElubGluZVN0eWxl
UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpOworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlPcGFjaXR5LCAwLjAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKwor
ICAgIG1fb3BhcXVlID0gZmFsc2U7CisgICAgc3RhcnRUaW1lcigpOworfQorCit2b2lkIE1lZGlh
Q29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBl
dmVudCkKK3sKKyAgICBNZWRpYUNvbnRyb2xEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KGV2ZW50KTsKKworICAgIGlmIChldmVudC0+aXNNb3VzZUV2ZW50KCkpIHsKKyAgICAgICAgTGF5
b3V0UG9pbnQgbG9jYXRpb24gPSBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5hYnNv
bHV0ZUxvY2F0aW9uKCk7CisgICAgICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS5tb3VzZWRvd25FdmVudCAmJiBldmVudC0+dGFyZ2V0KCkgPT0gdGhpcykgeworICAgICAgICAg
ICAgc3RhcnREcmFnKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFu
ZGxlZCgpOworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
Lm1vdXNlbW92ZUV2ZW50ICYmIG1faXNCZWluZ0RyYWdnZWQpCisgICAgICAgICAgICBjb250aW51
ZURyYWcobG9jYXRpb24pOworICAgICAgICBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5tb3VzZXVwRXZlbnQgJiYgbV9pc0JlaW5nRHJhZ2dlZCkgeworICAgICAgICAgICAg
Y29udGludWVEcmFnKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGVuZERyYWcoKTsKKyAgICAgICAg
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjpzZXRDYW5CZURyYWdnZWQoYm9v
bCBjYW5CZURyYWdnZWQpCit7CisgICAgaWYgKG1fY2FuQmVEcmFnZ2VkID09IGNhbkJlRHJhZ2dl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jYW5CZURyYWdnZWQgPSBjYW5CZURyYWdnZWQ7
CisKKyAgICBpZiAoIWNhbkJlRHJhZ2dlZCkKKyAgICAgICAgZW5kRHJhZygpOworfQorCit2b2lk
IE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjpzZXRJc0Rpc3BsYXllZChib29sIGlz
RGlzcGxheWVkKQoreworICAgIG1faXNEaXNwbGF5ZWQgPSBpc0Rpc3BsYXllZDsKK30KKworaW5s
aW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ6Ok1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQq
IGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFD
b250cm9sc1BhbmVsKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlz
cGxheUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAg
UmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ+
IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5
Q29udGFpbmVyRWxlbWVudChkb2N1bWVudCkpOworICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2Uo
KTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZURp
c3BsYXlDb250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJv
bHMtZnVsbHNjcmVlbi10aW1lLWRpc3BsYXktY29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKworaW5saW5lIE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRp
YUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwpCit7Cit9CisK
K1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ+
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9j
dW1lbnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0
dG9uQ29udGFpbmVyRWxlbWVudD4gZWxlbWVudCA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudChkb2N1bWVudCkpOworICAgIHJldHVybiBl
bGVtZW50LnJlbGVhc2UoKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uLWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK2lubGluZSBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRp
YUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYVJld2luZEJ1dHRvbikKK3sKK30KKwor
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQ+IE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50
KiBkb2N1bWVudCkKK3sKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRp
dmlkZXJFbGVtZW50PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5CdXR0b25EaXZpZGVyRWxlbWVudChkb2N1bWVudCkpOworICAgIHJldHVybiBlbGVtZW50LnJl
bGVhc2UoKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
QnV0dG9uRGl2aWRlckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9s
cy1mdWxsc2NyZWVuLWJ1dHRvbi1kaXZpZGVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKworaW5saW5lIE1lZGlhQ29udHJvbFBsYXlC
dXR0b25Db250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxl
bWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRv
Y3VtZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250
cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ+IE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250
YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudD4gZWxlbWVudCA9IGFkb3B0UmVm
KG5ldyBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudChkb2N1bWVudCkpOwor
ICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBN
ZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBj
b25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK2lubGluZSBNZWRp
YUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVu
dChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3Vt
ZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9s
UGxhY2Vob2xkZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0
ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFBsYWNlaG9s
ZGVyRWxlbWVudD4gZWxlbWVudCA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xQbGFjZWhvbGRl
ckVsZW1lbnQoZG9jdW1lbnQpKTsKKyAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7Cit9CisK
K2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxhY2Vob2xkZXIiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlkOworfQorCitpbmxpbmUg
TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFD
b250cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50LCBNZWRpYVBsYXlCdXR0b24pCit7Cit9CisKK1Bh
c3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50PiBNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1l
bnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVu
dD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9u
RWxlbWVudChkb2N1bWVudCkpOworICAgIGJ1dHRvbi0+Y3JlYXRlU2hhZG93U3VidHJlZSgpOwor
ICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7CisgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNl
KCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgeworICAgICAgICBpZiAobWVkaWFDb250cm9s
bGVyKCktPmNhblBsYXkoKSkKKyAgICAgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5wbGF5KCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5wYXVzZSgpOwor
ICAgICAgICB1cGRhdGVEaXNwbGF5VHlwZSgpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhh
bmRsZWQoKTsKKyAgICB9CisgICAgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihldmVudCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVt
ZW50Ojp1cGRhdGVEaXNwbGF5VHlwZSgpCit7CisgICAgc2V0RGlzcGxheVR5cGUobWVkaWFDb250
cm9sbGVyKCktPmNhblBsYXkoKSA/IE1lZGlhUGxheUJ1dHRvbiA6IE1lZGlhUGF1c2VCdXR0b24p
OworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0
dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3Jl
ZW4tcGxheS1idXR0b24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgcmV0dXJuIGlkOworfQorCitpbmxpbmUgTWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3Jl
ZW5CdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVs
ZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50
KGRvY3VtZW50LCBNZWRpYUV4aXRGdWxsc2NyZWVuQnV0dG9uKQoreworfQorCitQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4gTWVkaWFDb250
cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRv
Y3VtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1
dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
RnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsKKyAgICBidXR0b24tPmNyZWF0ZVNo
YWRvd1N1YnRyZWUoKTsKKyAgICBidXR0b24tPnNldFR5cGUoImJ1dHRvbiIpOworICAgIGJ1dHRv
bi0+aGlkZSgpOworICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOworfQorCit2b2lkIE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmNsaWNrRXZlbnQpIHsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgICAgIC8v
IE9ubHkgdXNlIHRoZSBuZXcgZnVsbCBzY3JlZW4gQVBJIGlmIHRoZSBmdWxsU2NyZWVuRW5hYmxl
ZCBzZXR0aW5nIGhhcyAKKyAgICAgICAgLy8gYmVlbiBleHBsaWNpdGx5IGVuYWJsZWQuIE90aGVy
d2lzZSwgdXNlIHRoZSBvbGQgZnVsbHNjcmVlbiBBUEkuIFRoaXMKKyAgICAgICAgLy8gYWxsb3dz
IGFwcHMgd2hpY2ggZW1iZWQgYSBXZWJWaWV3IHRvIHJldGFpbiB0aGUgZXhpc3RpbmcgZnVsbCBz
Y3JlZW4KKyAgICAgICAgLy8gdmlkZW8gaW1wbGVtZW50YXRpb24gd2l0aG91dCByZXF1aXJpbmcg
dGhlbSB0byBpbXBsZW1lbnQgdGhlaXIgb3duIGZ1bGwgCisgICAgICAgIC8vIHNjcmVlbiBiZWhh
dmlvci4KKyAgICAgICAgaWYgKGRvY3VtZW50KCktPnNldHRpbmdzKCkgJiYgZG9jdW1lbnQoKS0+
c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSkgeworICAgICAgICAgICAgaWYgKGRvY3Vt
ZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpICYmIGRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRG
dWxsU2NyZWVuRWxlbWVudCgpID09IHRvUGFyZW50TWVkaWFFbGVtZW50KHRoaXMpKQorICAgICAg
ICAgICAgICAgIGRvY3VtZW50KCktPndlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5yZXF1ZXN0RnVsbFNjcmVlbkZv
ckVsZW1lbnQodG9QYXJlbnRNZWRpYUVsZW1lbnQodGhpcyksIDAsIERvY3VtZW50OjpFeGVtcHRJ
RnJhbWVBbGxvd0Z1bGxTY3JlZW5SZXF1aXJlbWVudCk7CisgICAgICAgIH0gZWxzZQorI2VuZGlm
CisgICAgICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7CisgICAg
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgIH0KKyAgICBIVE1MSW5wdXRFbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
aWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9u
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6
OnNldElzRnVsbHNjcmVlbihib29sIGlzRnVsbHNjcmVlbikKK3sKKyAgICBzZXREaXNwbGF5VHlw
ZShNZWRpYUV4aXRGdWxsc2NyZWVuQnV0dG9uKTsKK30KKworaW5saW5lIE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lbGluZUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFD
b250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFUaW1lbGluZUNvbnRhaW5lcikKK3sKK30K
KworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVt
ZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50OjpjcmVh
dGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQoZG9jdW1lbnQpKTsKKyAg
ICBlbGVtZW50LT5oaWRlKCk7CisgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgpOworfQorCitj
b25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5l
ckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVu
LXRpbWVsaW5lLWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK01lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVs
ZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250cm9scykKKyAgICA6IE1lZGlhQ29udHJvbElucHV0
RWxlbWVudChkb2N1bWVudCwgTWVkaWFTbGlkZXIpCisgICAgLCBtX2NvbnRyb2xzKGNvbnRyb2xz
KQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1l
bnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVu
dCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbHMqIGNvbnRyb2xzKQoreworICAgIEFTU0VSVChjb250
cm9scyk7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVu
dD4gdGltZWxpbmUgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5l
RWxlbWVudChkb2N1bWVudCwgY29udHJvbHMpKTsKKyAgICB0aW1lbGluZS0+Y3JlYXRlU2hhZG93
U3VidHJlZSgpOworICAgIHRpbWVsaW5lLT5zZXRUeXBlKCJyYW5nZSIpOworICAgIHRpbWVsaW5l
LT5zZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0ciwgImZsb2F0Iik7CisgICAgcmV0dXJuIHRpbWVs
aW5lLnJlbGVhc2UoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVF
bGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3sKKyAgICAvLyBMZWZ0
IGJ1dHRvbiBpcyAwLiBSZWplY3RzIG1vdXNlIGV2ZW50cyBub3QgZnJvbSBsZWZ0IGJ1dHRvbi4K
KyAgICBpZiAoZXZlbnQtPmlzTW91c2VFdmVudCgpICYmIHN0YXRpY19jYXN0PE1vdXNlRXZlbnQq
PihldmVudCktPmJ1dHRvbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWF0dGFjaGVk
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5tb3VzZWRvd25FdmVudCkKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPmJlZ2luU2Ny
dWJiaW5nKCk7CisKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2V1
cEV2ZW50KQorICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+ZW5kU2NydWJiaW5nKCk7CisKKyAg
ICBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwor
CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50IHx8
IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3V0RXZlbnQgfHwgZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGZsb2F0IHRpbWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHZhbHVlKCkudG9Eb3VibGUo
KSk7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmlucHV0RXZlbnQgJiYg
dGltZSAhPSBtZWRpYUNvbnRyb2xsZXIoKS0+Y3VycmVudFRpbWUoKSkgeworICAgICAgICBFeGNl
cHRpb25Db2RlIGVjOworICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Q3VycmVudFRpbWUo
dGltZSwgZWMpOworICAgIH0KKworICAgIFJlbmRlclNsaWRlciogc2xpZGVyID0gdG9SZW5kZXJT
bGlkZXIocmVuZGVyZXIoKSk7CisgICAgaWYgKHNsaWRlciAmJiBzbGlkZXItPmluRHJhZ01vZGUo
KSkKKyAgICAgICAgbV9jb250cm9scy0+dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCk7Cit9CisK
K2Jvb2wgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6d2lsbFJlc3BvbmRU
b01vdXNlQ2xpY2tFdmVudHMoKQoreworICAgIGlmICghYXR0YWNoZWQoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRnVs
bHNjcmVlblRpbWVsaW5lRWxlbWVudDo6c2V0UG9zaXRpb24oZmxvYXQgY3VycmVudFRpbWUpCit7
CisgICAgc2V0VmFsdWUoU3RyaW5nOjpudW1iZXIoY3VycmVudFRpbWUpKTsKK30KKwordm9pZCBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpzZXREdXJhdGlvbihmbG9hdCBk
dXJhdGlvbikKK3sKKyAgICBzZXRBdHRyaWJ1dGUobWF4QXR0ciwgU3RyaW5nOjpudW1iZXIoaXNm
aW5pdGUoZHVyYXRpb24pID8gZHVyYXRpb24gOiAwKSk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6c2hhZG93UHNldWRvSWQo
KSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCIt
d2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlkOworfQorCitQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ+IE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShEb2N1
bWVudCogZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KGRvY3VtZW50KSk7Cit9CisKK01l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50KQorICAgIDogTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50KGRvY3VtZW50LCBNZWRp
YVRpbWVSZW1haW5pbmdEaXNwbGF5KQoreworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OnNoYWRvd1BzZXVk
b0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQs
ICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtcmVtYWluaW5nLWRpc3Bs
YXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlk
OworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3Bs
YXlFbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVu
dDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50KGRvY3VtZW50
KSk7Cit9CisKK01lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50
OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVu
dCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQoZG9jdW1l
bnQsIE1lZGlhQ3VycmVudFRpbWVEaXNwbGF5KQoreworfQorCitjb25zdCBBdG9taWNTdHJpbmcm
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpzaGFkb3dQ
c2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1jdXJyZW50LXRpbWUtZGlz
cGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4g
aWQ7Cit9CisKK01lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eShEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xzKGRvY3VtZW50KQorICAg
ICwgbV9idXR0b25Db250YWluZXIoMCkKKyAgICAsIG1fdGltZURpc3BsYXlDb250YWluZXIoMCkK
KyAgICAsIG1fZnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyKDApCisgICAgLCBtX2Z1bGxz
Y3JlZW5QbGF5QnV0dG9uKDApCisgICAgLCBtX2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXko
MCkKKyAgICAsIG1fZnVsbHNjcmVlblRpbWVsaW5lKDApCisgICAgLCBtX3RpbWVSZW1haW5pbmdE
aXNwbGF5KDApCisgICAgLCBtX2Z1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheSgwKQorICAg
ICwgbV90aW1lbGluZUNvbnRhaW5lcigwKQorICAgICwgbV9mdWxsc2NyZWVuVGltZWxpbmVDb250
YWluZXIoMCkKKyAgICAsIG1fZnVsbFNjcmVlbkRpdmlkZXIoMCkKKyAgICAsIG1fZnVsbHNjcmVl
bkZ1bGxTY3JlZW5CdXR0b24oMCkKKyAgICAsIG1fbXV0ZUJ1dHRvbigwKQorICAgICwgbV92b2x1
bWVTbGlkZXJDb250YWluZXIoMCkKKyAgICAsIG1fZW1iZWRkZWRQYW5lbCgwKQorICAgICwgbV9m
dWxsU2NyZWVuQnV0dG9uQ29udGFpbmVyKDApCisgICAgLCBtX3BsYXlCdXR0b25Db250YWluZXIo
MCkKKyAgICAsIG1fcGxhY2Vob2xkZXIoMCkKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xzPiBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIHJl
dHVybiBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6Y3JlYXRlQ29udHJvbHMoZG9jdW1lbnQpOwor
fQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5PiBNZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeTo6Y3JlYXRlQ29udHJvbHMoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIGlmICgh
ZG9jdW1lbnQtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sc0JsYWNrQmVycnk+IGNvbnRyb2xzID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbHNC
bGFja0JlcnJ5KGRvY3VtZW50KSk7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxFbGVt
ZW50PiBwYW5lbCA9IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
KyAgICBSZWZQdHI8TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ+IGVtYmVkUGFuZWwg
PSBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRv
bkVsZW1lbnQ+IHBsYXlCdXR0b24gPSBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9wbGF5QnV0dG9uID0gcGxheUJ1dHRvbi5n
ZXQoKTsKKyAgICBlbWJlZFBhbmVsLT5hcHBlbmRDaGlsZChwbGF5QnV0dG9uLnJlbGVhc2UoKSwg
ZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8
TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50PiB0aW1lbGluZUNvbnRhaW5lciA9
IE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
KworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gTWVk
aWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGNvbnRyb2xzLmdldCgp
KTsKKyAgICBjb250cm9scy0+bV90aW1lbGluZSA9IHRpbWVsaW5lLmdldCgpOworICAgIHRpbWVs
aW5lQ29udGFpbmVyLT5hcHBlbmRDaGlsZCh0aW1lbGluZS5yZWxlYXNlKCksIGVjLCB0cnVlKTsK
KyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJv
bFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudD4gdGltZURpc3BsYXlDb250YWluZXIgPSBNZWRp
YUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisK
KyAgICBSZWZQdHI8TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4gY3VycmVu
dFRpbWVEaXNwbGF5ID0gTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9jdXJyZW50VGltZURpc3BsYXkgPSBjdXJy
ZW50VGltZURpc3BsYXkuZ2V0KCk7CisgICAgdGltZURpc3BsYXlDb250YWluZXItPmFwcGVuZENo
aWxkKGN1cnJlbnRUaW1lRGlzcGxheS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMp
CisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVSZW1haW5p
bmdEaXNwbGF5RWxlbWVudD4gdGltZVJlbWFpbmluZ0Rpc3BsYXkgPSBNZWRpYUNvbnRyb2xUaW1l
UmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgY29udHJvbHMt
Pm1fdGltZVJlbWFpbmluZ0Rpc3BsYXkgPSB0aW1lUmVtYWluaW5nRGlzcGxheS5nZXQoKTsKKyAg
ICB0aW1lRGlzcGxheUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodGltZVJlbWFpbmluZ0Rpc3BsYXku
cmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIGNvbnRyb2xzLT5tX3RpbWVEaXNwbGF5Q29udGFpbmVyID0gdGltZURpc3BsYXlDb250YWlu
ZXIuZ2V0KCk7CisgICAgdGltZWxpbmVDb250YWluZXItPmFwcGVuZENoaWxkKHRpbWVEaXNwbGF5
Q29udGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBjb250cm9scy0+bV90aW1lbGluZUNvbnRhaW5lciA9IHRpbWVsaW5lQ29u
dGFpbmVyLmdldCgpOworICAgIGVtYmVkUGFuZWwtPmFwcGVuZENoaWxkKHRpbWVsaW5lQ29udGFp
bmVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGZ1bGxT
Y3JlZW5CdXR0b24gPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9mdWxsU2NyZWVuQnV0dG9uID0gZnVsbFNjcmVl
bkJ1dHRvbi5nZXQoKTsKKyAgICBlbWJlZFBhbmVsLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuQnV0
dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKS0+dGhlbWUoKS0+dXNlc01lZGlhQ29udHJvbFZv
bHVtZVNsaWRlcigpKSB7CisgICAgICAgIC8vIFRoZSBtdXRlIGJ1dHRvbiBhbmQgdGhlIHNsaWRl
ciBlbGVtZW50IHNob3VsZCBiZSBpbiB0aGUgc2FtZSBkaXYuCisgICAgICAgIFJlZlB0cjxIVE1M
RGl2RWxlbWVudD4gdm9sdW1lQ29udHJvbENvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOworCisgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJD
b250YWluZXJFbGVtZW50PiB2b2x1bWVTbGlkZXJDb250YWluZXIgPSBNZWRpYUNvbnRyb2xWb2x1
bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworCisgICAgICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IE1lZGlh
Q29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICAg
ICAgY29udHJvbHMtPm1fdm9sdW1lU2xpZGVyID0gc2xpZGVyLmdldCgpOworICAgICAgICB2b2x1
bWVTbGlkZXJDb250YWluZXItPmFwcGVuZENoaWxkKHNsaWRlci5yZWxlYXNlKCksIGVjLCB0cnVl
KTsKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY29u
dHJvbHMtPm1fdm9sdW1lU2xpZGVyQ29udGFpbmVyID0gdm9sdW1lU2xpZGVyQ29udGFpbmVyLmdl
dCgpOworICAgICAgICB2b2x1bWVDb250cm9sQ29udGFpbmVyLT5hcHBlbmRDaGlsZCh2b2x1bWVT
bGlkZXJDb250YWluZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgICAgIGlmIChlYykKKyAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxNdXRl
QnV0dG9uRWxlbWVudD4gbXV0ZUJ1dHRvbiA9IE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgY29udHJvbHMuZ2V0KCkpOworICAgICAgICBjb250cm9s
cy0+bV9tdXRlQnV0dG9uID0gbXV0ZUJ1dHRvbi5nZXQoKTsKKyAgICAgICAgdm9sdW1lQ29udHJv
bENvbnRhaW5lci0+YXBwZW5kQ2hpbGQobXV0ZUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsK
KyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgZW1iZWRQ
YW5lbC0+YXBwZW5kQ2hpbGQodm9sdW1lQ29udHJvbENvbnRhaW5lci5yZWxlYXNlKCksIGVjLCB0
cnVlKTsKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisg
ICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+
IGZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lciA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1l
bGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisKKyAgICBSZWZQdHI8TWVk
aWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudD4gZnVsbHNjcmVlblRpbWVsaW5lID0g
TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBj
b250cm9scy5nZXQoKSk7CisgICAgY29udHJvbHMtPm1fZnVsbHNjcmVlblRpbWVsaW5lID0gZnVs
bHNjcmVlblRpbWVsaW5lLmdldCgpOworICAgIGZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lci0+
YXBwZW5kQ2hpbGQoZnVsbHNjcmVlblRpbWVsaW5lLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAg
IGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVs
bHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudD4gZnVsbHNjcmVlblRpbWVEaXNwbGF5
Q29udGFpbmVyID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4gZnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxh
eSA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOworICAgIGNvbnRyb2xzLT5tX2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3Bs
YXkgPSBmdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5LmdldCgpOworICAgIGZ1bGxzY3JlZW5U
aW1lRGlzcGxheUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoZnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlz
cGxheS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAw
OworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxh
eUVsZW1lbnQ+IGZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheSA9IE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Cisg
ICAgY29udHJvbHMtPm1fZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5ID0gZnVsbHNjcmVl
blRpbWVSZW1haW5pbmdEaXNwbGF5LmdldCgpOworICAgIGZ1bGxzY3JlZW5UaW1lRGlzcGxheUNv
bnRhaW5lci0+YXBwZW5kQ2hpbGQoZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5LnJlbGVh
c2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBj
b250cm9scy0+bV9mdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXIgPSBmdWxsc2NyZWVuVGlt
ZURpc3BsYXlDb250YWluZXIuZ2V0KCk7CisgICAgZnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVy
LT5hcHBlbmRDaGlsZChmdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXIucmVsZWFzZSgpLCBl
YywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnRyb2xz
LT5tX2Z1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lciA9IGZ1bGxzY3JlZW5UaW1lbGluZUNvbnRh
aW5lci5nZXQoKTsKKyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoZnVsbHNjcmVlblRpbWVsaW5lQ29u
dGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50
PiBidXR0b25Hcm91cENvbnRhaW5lciA9IE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVy
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIC8vIEZJWE1FOiBPbmx5IGNyZWF0ZSB3
aGVuIG5lZWRlZCA8aHR0cDovL3dlYmtpdC5vcmcvYi81NzE2Mz4KKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sRnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ+IGZ1bGxTY3JlZW5CdXR0b25D
b250YWluZXIgPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9mdWxsU2NyZWVuQnV0dG9uQ29udGFp
bmVyID0gZnVsbFNjcmVlbkJ1dHRvbkNvbnRhaW5lci5nZXQoKTsKKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBmdWxsc2NyZWVuRnVsbFNj
cmVlbkJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9mdWxsc2NyZWVuRnVsbFNjcmVl
bkJ1dHRvbiA9IGZ1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLmdldCgpOworICAgIGZ1bGxTY3Jl
ZW5CdXR0b25Db250YWluZXItPmFwcGVuZENoaWxkKGZ1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9u
LnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudD4gZnVs
bFNjcmVlbkRpdmlkZXIgPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1l
bnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgY29udHJvbHMtPm1fZnVsbFNjcmVlbkRpdmlkZXIg
PSBmdWxsU2NyZWVuRGl2aWRlci5nZXQoKTsKKyAgICBmdWxsU2NyZWVuQnV0dG9uQ29udGFpbmVy
LT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuRGl2aWRlci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAg
ICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworICAgIGJ1dHRvbkdyb3VwQ29udGFpbmVyLT5h
cHBlbmRDaGlsZChmdWxsU2NyZWVuQnV0dG9uQ29udGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUp
OworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250
cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ+IHBsYXlCdXR0b25Db250YWluZXIgPSBNZWRp
YUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAg
ICBjb250cm9scy0+bV9wbGF5QnV0dG9uQ29udGFpbmVyID0gcGxheUJ1dHRvbkNvbnRhaW5lci5n
ZXQoKTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50
PiBmdWxsc2NyZWVuUGxheUJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9u
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9mdWxsc2NyZWVuUGxh
eUJ1dHRvbiA9IGZ1bGxzY3JlZW5QbGF5QnV0dG9uLmdldCgpOworICAgIHBsYXlCdXR0b25Db250
YWluZXItPmFwcGVuZENoaWxkKGZ1bGxzY3JlZW5QbGF5QnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRy
dWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgYnV0dG9uR3JvdXBDb250
YWluZXItPmFwcGVuZENoaWxkKHBsYXlCdXR0b25Db250YWluZXIucmVsZWFzZSgpLCBlYywgdHJ1
ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNv
bnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ+IHBsYWNlaG9sZGVyID0gTWVkaWFDb250cm9sUGxhY2Vo
b2xkZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIGNvbnRyb2xzLT5tX3BsYWNlaG9s
ZGVyID0gcGxhY2Vob2xkZXIuZ2V0KCk7CisgICAgYnV0dG9uR3JvdXBDb250YWluZXItPmFwcGVu
ZENoaWxkKHBsYWNlaG9sZGVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBjb250cm9scy0+bV9idXR0b25Db250YWluZXIgPSBidXR0
b25Hcm91cENvbnRhaW5lci5nZXQoKTsKKyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoYnV0dG9uR3Jv
dXBDb250YWluZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIGlmIChkb2N1bWVudC0+cGFnZSgpLT50aGVtZSgpLT5zdXBwb3J0c0Ns
b3NlZENhcHRpb25pbmcoKSkgeworICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVG9nZ2xlQ2xv
c2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiB0b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA9IE1l
ZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50LCBjb250cm9scy5nZXQoKSk7CisgICAgICAgIGNvbnRyb2xzLT5tX3RvZ2dsZUNsb3NlZENh
cHRpb25zQnV0dG9uID0gdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24uZ2V0KCk7CisgICAgICAg
IHBhbmVsLT5hcHBlbmRDaGlsZCh0b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi5yZWxlYXNlKCks
IGVjLCB0cnVlKTsKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorCisgICAgY29udHJvbHMtPm1fcGFuZWwgPSBwYW5lbC5nZXQoKTsKKyAgICBjb250cm9scy0+
YXBwZW5kQ2hpbGQocGFuZWwucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIGNvbnRyb2xzLT5tX2VtYmVkZGVkUGFuZWwgPSBlbWJlZFBh
bmVsLmdldCgpOworICAgIGNvbnRyb2xzLT5hcHBlbmRDaGlsZChlbWJlZFBhbmVsLnJlbGVhc2Uo
KSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1
cm4gY29udHJvbHMucmVsZWFzZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5
OjpzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBjb250cm9sbGVy
KQoreworICAgIGlmIChtX21lZGlhQ29udHJvbGxlciA9PSBjb250cm9sbGVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBNZWRpYUNvbnRyb2xzOjpzZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxl
cik7CisKKyAgICBpZiAobV9idXR0b25Db250YWluZXIpCisgICAgICAgIG1fYnV0dG9uQ29udGFp
bmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fdGltZURpc3Bs
YXlDb250YWluZXIpCisgICAgICAgIG1fdGltZURpc3BsYXlDb250YWluZXItPnNldE1lZGlhQ29u
dHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuVGltZURpc3BsYXlDb250
YWluZXIpCisgICAgICAgIG1fZnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyLT5zZXRNZWRp
YUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fZnVsbHNjcmVlblBsYXlCdXR0b24p
CisgICAgICAgIG1fZnVsbHNjcmVlblBsYXlCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250
cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5KQorICAgICAg
ICBtX2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXktPnNldE1lZGlhQ29udHJvbGxlcihjb250
cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuVGltZWxpbmUpCisgICAgICAgIG1fZnVsbHNj
cmVlblRpbWVsaW5lLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1f
dGltZVJlbWFpbmluZ0Rpc3BsYXkpCisgICAgICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNl
dE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuVGltZVJl
bWFpbmluZ0Rpc3BsYXkpCisgICAgICAgIG1fZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5
LT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fdGltZWxpbmVDb250
YWluZXIpCisgICAgICAgIG1fdGltZWxpbmVDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihj
b250cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXIpCisgICAg
ICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29u
dHJvbGxlcik7CisgICAgaWYgKG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24pCisgICAgICAg
IG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9s
bGVyKTsKKyAgICBpZiAobV9tdXRlQnV0dG9uKQorICAgICAgICBtX211dGVCdXR0b24tPnNldE1l
ZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV92b2x1bWVTbGlkZXJDb250YWlu
ZXIpCisgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIo
Y29udHJvbGxlcik7CisgICAgaWYgKG1fZW1iZWRkZWRQYW5lbCkKKyAgICAgICAgbV9lbWJlZGRl
ZFBhbmVsLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgcmVzZXQoKTsKK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6c2hvdygpCit7CisgICAgaWYgKG1faXNG
dWxsc2NyZWVuKSB7CisgICAgICAgIG1fcGFuZWwtPnNldElzRGlzcGxheWVkKHRydWUpOworICAg
ICAgICBtX3BhbmVsLT5zaG93KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9lbWJlZGRlZFBh
bmVsLT5zZXRJc0Rpc3BsYXllZCh0cnVlKTsKKyAgICAgICAgbV9lbWJlZGRlZFBhbmVsLT5zaG93
KCk7CisgICAgfQorfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpoaWRlKCkKK3sK
KyAgICBpZiAobV9pc0Z1bGxzY3JlZW4pIHsKKyAgICAgICAgbV9wYW5lbC0+c2V0SXNEaXNwbGF5
ZWQoZmFsc2UpOworICAgICAgICBtX3BhbmVsLT5oaWRlKCk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgbV9lbWJlZGRlZFBhbmVsLT5zZXRJc0Rpc3BsYXllZChmYWxzZSk7CisgICAgICAgIG1fZW1i
ZWRkZWRQYW5lbC0+aGlkZSgpOworICAgICAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+aGlk
ZSgpOworICAgIH0KK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6bWFrZU9wYXF1
ZSgpCit7CisgICAgaWYgKG1faXNGdWxsc2NyZWVuKQorICAgICAgICBtX3BhbmVsLT5tYWtlT3Bh
cXVlKCk7CisgICAgZWxzZQorICAgICAgICBtX2VtYmVkZGVkUGFuZWwtPm1ha2VPcGFxdWUoKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6bWFrZVRyYW5zcGFyZW50KCkKK3sK
KyAgICBpZiAobV9pc0Z1bGxzY3JlZW4pCisgICAgICAgIG1fcGFuZWwtPm1ha2VUcmFuc3BhcmVu
dCgpOworICAgIGVsc2UgeworICAgICAgICBtX2VtYmVkZGVkUGFuZWwtPm1ha2VUcmFuc3BhcmVu
dCgpOworICAgICAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+aGlkZSgpOworICAgIH0KK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cmVzZXQoKQoreworICAgIFBhZ2UqIHBh
Z2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47
CisKKyAgICB1cGRhdGVTdGF0dXNEaXNwbGF5KCk7CisKKyAgICBpZiAobV9mdWxsU2NyZWVuQnV0
dG9uKSB7CisgICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+c3VwcG9ydHNGdWxsc2NyZWVu
KCkpCisgICAgICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPnNob3coKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CisgICAgfQorICAgIGlm
IChtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uKSB7CisgICAgICAgIGlmIChtX21lZGlhQ29u
dHJvbGxlci0+c3VwcG9ydHNGdWxsc2NyZWVuKCkpCisgICAgICAgICAgICBtX2Z1bGxzY3JlZW5G
dWxsU2NyZWVuQnV0dG9uLT5zaG93KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZnVs
bHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24tPmhpZGUoKTsKKyAgICB9CisgICAgZmxvYXQgZHVyYXRp
b24gPSBtX21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24oKTsKKyAgICBpZiAoaXNmaW5pdGUoZHVy
YXRpb24pIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihN
ZWRpYVNsaWRlclBhcnQpKSB7CisgICAgICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVy
LT5jdXJyZW50VGltZSgpOworICAgICAgICBtX3RpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlv
bik7CisgICAgICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7
CisgICAgICAgIG1fdGltZWxpbmVDb250YWluZXItPnNob3coKTsKKyAgICAgICAgbV9mdWxsc2Ny
ZWVuVGltZWxpbmVDb250YWluZXItPnNob3coKTsKKyAgICAgICAgbV90aW1lbGluZS0+c2V0UG9z
aXRpb24obm93KTsKKyAgICAgICAgbV9mdWxsc2NyZWVuVGltZWxpbmUtPnNldFBvc2l0aW9uKG5v
dyk7CisgICAgICAgIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIG1fdGltZWxpbmVDb250YWluZXItPmhpZGUoKTsKKyAgICAgICAgbV9mdWxsc2NyZWVu
VGltZWxpbmVDb250YWluZXItPmhpZGUoKTsKKyAgICB9CisKKyAgICBpZiAobV9tZWRpYUNvbnRy
b2xsZXItPmhhc0F1ZGlvKCkgfHwgcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhh
bmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQpKQorICAgICAgICBtX211dGVCdXR0b24tPnNo
b3coKTsKKyAgICBlbHNlCisgICAgICAgIG1fbXV0ZUJ1dHRvbi0+aGlkZSgpOworCisgICAgaWYg
KG1fdm9sdW1lU2xpZGVyKQorICAgICAgICBtX3ZvbHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVk
aWFDb250cm9sbGVyLT52b2x1bWUoKSk7CisKKyAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9u
c0J1dHRvbikgeworICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPmhhc0Nsb3NlZENhcHRp
b25zKCkpCisgICAgICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLT5zaG93KCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24t
PmhpZGUoKTsKKyAgICB9CisKKyAgICBpZiAobV9wbGF5QnV0dG9uKQorICAgICAgICBtX3BsYXlC
dXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CisKKyAgICBpZiAobV9mdWxsc2NyZWVuUGxheUJ1
dHRvbikKKyAgICAgICAgbV9mdWxsc2NyZWVuUGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUo
KTsKKworICAgIG1ha2VPcGFxdWUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eTo6YnVmZmVyaW5nUHJvZ3Jlc3NlZCgpCit7CisgICAgLy8gV2Ugb25seSBuZWVkIHRvIHVwZGF0
ZSBidWZmZXJpbmcgcHJvZ3Jlc3Mgd2hlbiBwYXVzZWQsIGR1cmluZyBub3JtYWwKKyAgICAvLyBw
bGF5YmFjayBwbGF5YmFja1Byb2dyZXNzZWQoKSB3aWxsIHRha2UgY2FyZSBvZiBpdC4KKyAgICBp
ZiAobV9tZWRpYUNvbnRyb2xsZXItPnBhdXNlZCgpKSB7CisgICAgICAgIGZsb2F0IG5vdyA9IG1f
bWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgICAgICBtX3RpbWVsaW5lLT5zZXRQ
b3NpdGlvbihub3cpOworICAgICAgICBtX2Z1bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24o
bm93KTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnBsYXliYWNr
U3RhcnRlZCgpCit7CisgICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRU
aW1lKCk7CisgICAgbV9wbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOworICAgIG1fZnVs
bHNjcmVlblBsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CisgICAgbV90aW1lbGluZS0+
c2V0UG9zaXRpb24obm93KTsKKyAgICBtX2Z1bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24o
bm93KTsKKyAgICB1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKTsKKworICAgIGlmIChtX2lzRnVs
bHNjcmVlbikKKyAgICAgICAgc3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cGxheWJhY2tQcm9ncmVzc2VkKCkKK3sK
KyAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBt
X3RpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOworICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lLT5z
ZXRQb3NpdGlvbihub3cpOworICAgIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpOworICAgIAor
ICAgIGlmICghbV9pc01vdXNlT3ZlckNvbnRyb2xzICYmIG1fbWVkaWFDb250cm9sbGVyLT5oYXNW
aWRlbygpKQorICAgICAgICBtYWtlVHJhbnNwYXJlbnQoKTsKK30KKwordm9pZCBNZWRpYUNvbnRy
b2xzQmxhY2tCZXJyeTo6cGxheWJhY2tTdG9wcGVkKCkKK3sKKyAgICBmbG9hdCBub3cgPSBtX21l
ZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURp
c3BsYXlUeXBlKCk7CisgICAgbV9mdWxsc2NyZWVuUGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5
cGUoKTsKKyAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOworICAgIG1fZnVsbHNjcmVl
blRpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOworICAgIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxh
eSgpOworICAgIG1ha2VPcGFxdWUoKTsKKyAgICAKKyAgICBzdG9wSGlkZUZ1bGxzY3JlZW5Db250
cm9sc1RpbWVyKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnVwZGF0ZUN1
cnJlbnRUaW1lRGlzcGxheSgpCit7CisgICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXIt
PmN1cnJlbnRUaW1lKCk7CisgICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+
ZHVyYXRpb24oKTsKKworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7CisgICAg
aWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBBbGxvdyB0aGUgdGhlbWUgdG8g
Zm9ybWF0IHRoZSB0aW1lLgorICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgbV9jdXJyZW50VGlt
ZURpc3BsYXktPnNldElubmVyVGV4dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xz
Q3VycmVudFRpbWUobm93LCBkdXJhdGlvbiksIGVjKTsKKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxh
eS0+c2V0Q3VycmVudFZhbHVlKG5vdyk7CisgICAgbV9mdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNw
bGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc0N1cnJl
bnRUaW1lKG5vdywgZHVyYXRpb24pLCBlYyk7CisgICAgbV9mdWxsc2NyZWVuQ3VycmVudFRpbWVE
aXNwbGF5LT5zZXRDdXJyZW50VmFsdWUobm93KTsKKyAgICBtX3RpbWVSZW1haW5pbmdEaXNwbGF5
LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc1JlbWFpbmlu
Z1RpbWUobm93LCBkdXJhdGlvbiksIGVjKTsKKyAgICBtX3RpbWVSZW1haW5pbmdEaXNwbGF5LT5z
ZXRDdXJyZW50VmFsdWUobm93IC0gZHVyYXRpb24pOworICAgIG1fZnVsbHNjcmVlblRpbWVSZW1h
aW5pbmdEaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250
cm9sc1JlbWFpbmluZ1RpbWUobm93LCBkdXJhdGlvbiksIGVjKTsKKyAgICBtX2Z1bGxzY3JlZW5U
aW1lUmVtYWluaW5nRGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKG5vdyAtIGR1cmF0aW9uKTsKK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cmVwb3J0ZWRFcnJvcigpCit7CisgICAg
UGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmICghcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhh
bmRsaW5nRm9yKE1lZGlhU2xpZGVyUGFydCkpIHsKKyAgICAgICAgbV90aW1lbGluZUNvbnRhaW5l
ci0+aGlkZSgpOworICAgICAgICBtX2Z1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lci0+aGlkZSgp
OworICAgIH0KKworICAgIGlmICghcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhh
bmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQpKQorICAgICAgICBtX211dGVCdXR0b24tPmhp
ZGUoKTsKKworICAgIGlmIChtX2Z1bGxTY3JlZW5CdXR0b24pCisgICAgICAgIG1fZnVsbFNjcmVl
bkJ1dHRvbi0+aGlkZSgpOworCisgICAgaWYgKG1fZnVsbFNjcmVlbkRpdmlkZXIpCisgICAgICAg
IG1fZnVsbFNjcmVlbkRpdmlkZXItPmhpZGUoKTsKKworICAgIGlmIChtX2Z1bGxzY3JlZW5GdWxs
U2NyZWVuQnV0dG9uKQorICAgICAgICBtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLT5oaWRl
KCk7CisKKyAgICBpZiAobV92b2x1bWVTbGlkZXJDb250YWluZXIpCisgICAgICAgIG1fdm9sdW1l
U2xpZGVyQ29udGFpbmVyLT5oaWRlKCk7CisKKyAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9u
c0J1dHRvbiAmJiAhcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9y
KE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25QYXJ0KSkKKyAgICAgICAgbV90b2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFj
a0JlcnJ5OjpjaGFuZ2VkTXV0ZSgpCit7CisgICAgbV9tdXRlQnV0dG9uLT5jaGFuZ2VkTXV0ZSgp
OworfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjplbnRlcmVkRnVsbHNjcmVlbigp
Cit7CisgICAgTWVkaWFDb250cm9sczo6ZW50ZXJlZEZ1bGxzY3JlZW4oKTsKKworICAgIG1fcGFu
ZWwtPnNldENhbkJlRHJhZ2dlZCh0cnVlKTsKKyAgICBtX2VtYmVkZGVkUGFuZWwtPnNldENhbkJl
RHJhZ2dlZCh0cnVlKTsKKworICAgIGlmIChtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uKQor
ICAgICAgICBtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLT5zZXRJc0Z1bGxzY3JlZW4odHJ1
ZSk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OmV4aXRlZEZ1bGxzY3JlZW4o
KQoreworICAgIG1fcGFuZWwtPnNldENhbkJlRHJhZ2dlZChmYWxzZSk7CisgICAgbV9lbWJlZGRl
ZFBhbmVsLT5zZXRDYW5CZURyYWdnZWQoZmFsc2UpOworCisgICAgaWYgKG1fZnVsbHNjcmVlbkZ1
bGxTY3JlZW5CdXR0b24pCisgICAgICAgIG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24tPnNl
dElzRnVsbHNjcmVlbihmYWxzZSk7CisKKyAgICAvLyBXZSB3aWxsIGtlZXAgdXNpbmcgdGhlIHBh
bmVsLCBidXQgd2Ugd2FudCBpdCB0byBnbyBiYWNrIHRvIHRoZSBzdGFuZGFyZCBwb3NpdGlvbi4K
KyAgICAvLyBUaGlzIHdpbGwgbWF0dGVyIHJpZ2h0IGF3YXkgYmVjYXVzZSB3ZSB1c2UgdGhlIHBh
bmVsIGV2ZW4gd2hlbiBub3QgZnVsbHNjcmVlbi4KKyAgICAvLyBBbmQgaWYgd2UgcmVlbnRlciBm
dWxsc2NyZWVuIHdlIGFsc28gd2FudCB0aGUgcGFuZWwgaW4gdGhlIHN0YW5kYXJkIHBvc2l0aW9u
LgorICAgIG1fcGFuZWwtPnJlc2V0UG9zaXRpb24oKTsKKyAgICBtX2VtYmVkZGVkUGFuZWwtPnJl
c2V0UG9zaXRpb24oKTsKKworICAgIE1lZGlhQ29udHJvbHM6OmV4aXRlZEZ1bGxzY3JlZW4oKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6c2hvd1ZvbHVtZVNsaWRlcigpCit7
CisgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlci0+aGFzQXVkaW8oKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyKQorICAgICAgICBtX3ZvbHVtZVNs
aWRlckNvbnRhaW5lci0+c2hvdygpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5
Ojp0b2dnbGVWb2x1bWVTbGlkZXIoKQoreworICAgIGlmICghbV9tZWRpYUNvbnRyb2xsZXItPmhh
c0F1ZGlvKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3ZvbHVtZVNsaWRlckNvbnRh
aW5lcikgeworICAgICAgICBpZiAobV92b2x1bWVTbGlkZXJDb250YWluZXItPnJlbmRlcmVyKCkg
JiYgbV92b2x1bWVTbGlkZXJDb250YWluZXItPnJlbmRlcmVyKCktPnZpc2libGVUb0hpdFRlc3Rp
bmcoKSkKKyAgICAgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5oaWRlKCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5zaG93KCk7Cisg
ICAgfQorfQorCitib29sIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpzaG91bGRIaWRlQ29udHJv
bHMoKQoreworICAgIGlmIChtX2lzRnVsbHNjcmVlbikKKyAgICAgICAgcmV0dXJuICFtX3BhbmVs
LT5ob3ZlcmVkKCk7CisgICAgcmV0dXJuICFtX2VtYmVkZGVkUGFuZWwtPmhvdmVyZWQoKTsKK30K
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xzQmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sc0JsYWNrQmVycnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTI2OWYxZTYyZWQxMjE4NDU3NDcyOWNh
ZjBkNDE2ZGI3MjkxNzFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuaApAQCAtMCwwICsxLDI4MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhQ29u
dHJvbHNCbGFja0JlcnJ5X2gKKyNkZWZpbmUgTWVkaWFDb250cm9sc0JsYWNrQmVycnlfaAorCisj
aWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmgi
CisjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudHMuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRy
b2xzLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3Mg
RXZlbnQ7CitjbGFzcyBNZWRpYVBsYXllcjsKKworY2xhc3MgUmVuZGVyQm94OworY2xhc3MgUmVu
ZGVyTWVkaWE7CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitjbGFzcyBNZWRpYUNvbnRyb2xU
ZXh0VHJhY2tDb250YWluZXJFbGVtZW50OworY2xhc3MgTWVkaWFDb250cm9sVGV4dFRyYWNrRGlz
cGxheUVsZW1lbnQ7CisjZW5kaWYKKworY2xhc3MgTWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250
YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxl
bWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisKK3Byb3RlY3RlZDoKKyAgICBNZWRpYUNvbnRyb2xC
dXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKK307CisKK2Ns
YXNzIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRp
YUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwor
Citwcm90ZWN0ZWQ6CisgICAgTWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50
KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVk
b0lkKCkgY29uc3QgT1ZFUlJJREU7Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xFbWJlZGRlZFBh
bmVsRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudD4gY3Jl
YXRlKERvY3VtZW50Kik7CisKKyAgICB2b2lkIHNldENhbkJlRHJhZ2dlZChib29sKTsKKyAgICB2
b2lkIHNldElzRGlzcGxheWVkKGJvb2wpOworCisgICAgdm9pZCByZXNldFBvc2l0aW9uKCk7Cisg
ICAgdm9pZCBtYWtlT3BhcXVlKCk7CisgICAgdm9pZCBtYWtlVHJhbnNwYXJlbnQoKTsKKworICAg
IHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJREUgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2
ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNp
dCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudChEb2N1bWVudCopOworCisgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsK
KworICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IExheW91dFBvaW50JiBldmVudExvY2F0aW9uKTsK
KyAgICB2b2lkIGNvbnRpbnVlRHJhZyhjb25zdCBMYXlvdXRQb2ludCYgZXZlbnRMb2NhdGlvbik7
CisgICAgdm9pZCBlbmREcmFnKCk7CisKKyAgICB2b2lkIHN0YXJ0VGltZXIoKTsKKyAgICB2b2lk
IHN0b3BUaW1lcigpOworICAgIHZvaWQgdHJhbnNpdGlvblRpbWVyRmlyZWQoVGltZXI8TWVkaWFD
b250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ+Kik7CisKKyAgICB2b2lkIHNldFBvc2l0aW9uKGNv
bnN0IExheW91dFBvaW50Jik7CisKKyAgICBib29sIG1fY2FuQmVEcmFnZ2VkOworICAgIGJvb2wg
bV9pc0JlaW5nRHJhZ2dlZDsKKyAgICBib29sIG1faXNEaXNwbGF5ZWQ7CisgICAgYm9vbCBtX29w
YXF1ZTsKKyAgICBMYXlvdXRQb2ludCBtX2xhc3REcmFnRXZlbnRMb2NhdGlvbjsKKyAgICBMYXlv
dXRQb2ludCBtX2N1bXVsYXRpdmVEcmFnT2Zmc2V0OworCisgICAgVGltZXI8TWVkaWFDb250cm9s
RW1iZWRkZWRQYW5lbEVsZW1lbnQ+IG1fdHJhbnNpdGlvblRpbWVyOworfTsKKworY2xhc3MgTWVk
aWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBN
ZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50PiBjcmVhdGUo
RG9jdW1lbnQqKTsKKworcHJvdGVjdGVkOgorICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1l
RGlzcGxheUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKK307CisKK2NsYXNz
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50IDogcHVibGljIE1l
ZGlhQ29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1l
bnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFp
bmVyRWxlbWVudChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVs
ZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisKK3ByaXZhdGU6
CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50KERvY3VtZW50
Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29u
c3QgT1ZFUlJJREU7Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVy
RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudD4g
Y3JlYXRlKERvY3VtZW50Kik7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sUGxheUJ1dHRv
bkNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKK307CisKK2NsYXNzIE1lZGlh
Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGFjZWhvbGRl
ckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworCitwcml2YXRlOgorICAgIE1lZGlhQ29udHJv
bFBsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworfTsKKworY2xhc3MgTWVk
aWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJv
bElucHV0RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250
cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworICAg
IHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVR5cGUoKSBPVkVS
UklERTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVs
ZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93
UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCopIE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNj
cmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxl
bWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNj
cmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworICAgIHZp
cnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2b2lkIHNldElzRnVsbHNjcmVlbihib29sKTsKKworcHJpdmF0ZToK
KyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoRG9jdW1l
bnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCopIE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5l
Q29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVD
b250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50KERvY3VtZW50Kik7Cisg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZF
UlJJREU7Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50
IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudD4gY3JlYXRl
KERvY3VtZW50KiwgTWVkaWFDb250cm9scyopOworCisgICAgdmlydHVhbCBib29sIHdpbGxSZXNw
b25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREU7CisgICAgdm9pZCBzZXRQb3NpdGlvbihm
bG9hdCk7CisgICAgdm9pZCBzZXREdXJhdGlvbihmbG9hdCk7CisKK3ByaXZhdGU6CisgICAgTWVk
aWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJv
bHMqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCopIE9WRVJSSURFOworCisgICAgTWVkaWFDb250cm9scyogbV9jb250cm9sczsKK307CisKK2Ns
YXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQgOiBw
dWJsaWMgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlF
bGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KERvY3VtZW50Kik7CisgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7
Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxl
bWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURp
c3BsYXlFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVudCopOworICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJS
SURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sc0JsYWNrQmVycnkgOiBwdWJsaWMgTWVkaWFD
b250cm9scyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0Js
YWNrQmVycnk+IGNyZWF0ZUNvbnRyb2xzKERvY3VtZW50Kik7CisKKyAgICAvLyBNZWRpYUNvbnRy
b2xzIGltcGxlbWVudGF0aW9uLgorICAgIHZvaWQgc2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29u
dHJvbGxlckludGVyZmFjZSopIE9WRVJSSURFOworCisgICAgdm9pZCBzaG93KCkgT1ZFUlJJREU7
CisgICAgdm9pZCBoaWRlKCkgT1ZFUlJJREU7CisgICAgdm9pZCBtYWtlT3BhcXVlKCkgT1ZFUlJJ
REU7CisgICAgdm9pZCBtYWtlVHJhbnNwYXJlbnQoKSBPVkVSUklERTsKKworICAgIHZvaWQgcmVz
ZXQoKSBPVkVSUklERTsKKworICAgIHZvaWQgYnVmZmVyaW5nUHJvZ3Jlc3NlZCgpIE9WRVJSSURF
OworICAgIHZvaWQgcGxheWJhY2tQcm9ncmVzc2VkKCkgT1ZFUlJJREU7CisgICAgdm9pZCBwbGF5
YmFja1N0YXJ0ZWQoKSBPVkVSUklERTsKKyAgICB2b2lkIHBsYXliYWNrU3RvcHBlZCgpIE9WRVJS
SURFOworCisgICAgdm9pZCBjaGFuZ2VkTXV0ZSgpIE9WRVJSSURFOworCisgICAgdm9pZCBlbnRl
cmVkRnVsbHNjcmVlbigpIE9WRVJSSURFOworICAgIHZvaWQgZXhpdGVkRnVsbHNjcmVlbigpIE9W
RVJSSURFOworCisgICAgdm9pZCByZXBvcnRlZEVycm9yKCkgT1ZFUlJJREU7CisKKyAgICB2b2lk
IHNob3dWb2x1bWVTbGlkZXIoKSBPVkVSUklERTsKKyAgICB2b2lkIHRvZ2dsZVZvbHVtZVNsaWRl
cigpIE9WRVJSSURFOworICAgIHZvaWQgdXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCkgT1ZFUlJJ
REU7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSGlkZUNvbnRyb2xzKCkgT1ZFUlJJREU7CisK
K3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sc0JsYWNrQmVycnkoRG9jdW1lbnQqKTsKKworICAg
IE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudCogbV9idXR0b25Db250YWlu
ZXI7CisgICAgTWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50KiBtX3RpbWVE
aXNwbGF5Q29udGFpbmVyOworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNv
bnRhaW5lckVsZW1lbnQqIG1fZnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyOworICAgIE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudCogbV9mdWxsc2NyZWVuUGxheUJ1
dHRvbjsKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVu
dCogbV9mdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5OworICAgIE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5UaW1lbGluZUVsZW1lbnQqIG1fZnVsbHNjcmVlblRpbWVsaW5lOworICAgIE1lZGlhQ29u
dHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudCogbV90aW1lUmVtYWluaW5nRGlzcGxheTsK
KyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KiBt
X2Z1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheTsKKyAgICBNZWRpYUNvbnRyb2xUaW1lbGlu
ZUNvbnRhaW5lckVsZW1lbnQqIG1fdGltZWxpbmVDb250YWluZXI7CisgICAgTWVkaWFDb250cm9s
RnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyRWxlbWVudCogbV9mdWxsc2NyZWVuVGltZWxpbmVD
b250YWluZXI7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50
KiBtX2Z1bGxTY3JlZW5EaXZpZGVyOworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2Ny
ZWVuQnV0dG9uRWxlbWVudCogbV9mdWxsc2NyZWVuRnVsbFNjcmVlbkJ1dHRvbjsKKyAgICBNZWRp
YUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50KiBtX211dGVCdXR0b247CisgICAgTWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudCogbV92b2x1bWVTbGlkZXJDb250YWlu
ZXI7CisgICAgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQqIG1fZW1iZWRkZWRQYW5l
bDsKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudCogbV9m
dWxsU2NyZWVuQnV0dG9uQ29udGFpbmVyOworICAgIE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250
YWluZXJFbGVtZW50KiBtX3BsYXlCdXR0b25Db250YWluZXI7CisgICAgTWVkaWFDb250cm9sUGxh
Y2Vob2xkZXJFbGVtZW50KiBtX3BsYWNlaG9sZGVyOworfTsKKworfQorCisjZW5kaWYKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJU
aGVtZUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9S
ZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwCmluZGV4IDk3NWQxZTRmMDE1ZGFlYjQxM2M5YmU1YTdi
ZDMxMjQyYTY5Mzg0NzIuLmIxNjhiODAwM2JmMTJmNTFhYWUyZWQ0MmFjYWM0ZjI0ZmIzYjBkNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhl
bWVCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIb3N0V2lu
ZG93LmgiCisjaW5jbHVkZSAiSW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxl
bWVudHMuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgpAQCAtNDQsMTAgKzQ1LDEzIEBAIGNvbnN0IHVuc2lnbmVkIHNtYWxsUmFk
aXVzID0gMTsKIGNvbnN0IHVuc2lnbmVkIGxhcmdlUmFkaXVzID0gMzsKIGNvbnN0IHVuc2lnbmVk
IGxpbmVXaWR0aCA9IDE7CiBjb25zdCBmbG9hdCBtYXJnaW5TaXplID0gNDsKLWNvbnN0IGZsb2F0
IG1lZGlhQ29udHJvbHNIZWlnaHQgPSAzMjsKLWNvbnN0IGZsb2F0IG1lZGlhU2xpZGVyVGh1bWJX
aWR0aCA9IDQwOwotY29uc3QgZmxvYXQgbWVkaWFTbGlkZXJUaHVtYkhlaWdodCA9IDEzOwotY29u
c3QgZmxvYXQgbWVkaWFTbGlkZXJUaHVtYlJhZGl1cyA9IDU7Citjb25zdCBmbG9hdCBtZWRpYUNv
bnRyb2xzSGVpZ2h0ID0gNDQ7Citjb25zdCBmbG9hdCBtZWRpYUJhY2tCdXR0b25IZWlnaHQgPSAz
MzsKK2NvbnN0IGZsb2F0IG1lZGlhU2xpZGVyT3V0bGluZVdpZHRoID0gMjsKK2NvbnN0IGZsb2F0
IG1lZGlhU2xpZGVyVHJhY2tSYWRpdXMgPSAzOworY29uc3QgZmxvYXQgbWVkaWFTbGlkZXJUaHVt
YldpZHRoID0gMjU7Citjb25zdCBmbG9hdCBtZWRpYVNsaWRlclRodW1iSGVpZ2h0ID0gMjU7Citj
b25zdCBmbG9hdCBtZWRpYVNsaWRlclRodW1iUmFkaXVzID0gMzsKIGNvbnN0IGZsb2F0IHNsaWRl
clRodW1iV2lkdGggPSAxNTsKIGNvbnN0IGZsb2F0IHNsaWRlclRodW1iSGVpZ2h0ID0gMjU7CiAK
QEAgLTEyNCw2ICsxMjgsMTIgQEAgY29uc3QgUkdCQTMyIGRyYWdSb2xsRGFyayA9IDB4ZmY2OWE4
ZmY7CiBjb25zdCBSR0JBMzIgYmxhY2tQZW4gPSBDb2xvcjo6YmxhY2s7CiBjb25zdCBSR0JBMzIg
Zm9jdXNSaW5nUGVuID0gMHhmZmEzYzhmZTsKIAorY29uc3QgUkdCQTMyIG1lZGlhU2xpZGVyVHJh
Y2tPdXRsaW5lID0gMHhmZjg0ODU4NzsKK2NvbnN0IFJHQkEzMiBtZWRpYVNsaWRlclRyYWNrUGxh
eWVkID0gMHhmZjJiOGZmZjsKK2NvbnN0IFJHQkEzMiBtZWRpYVNsaWRlclRyYWNrQnVmZmVyZWQg
PSAweGZmYmJiZGJmOworCitjb25zdCBSR0JBMzIgc2VsZWN0aW9uID0gMHhmZjJiOGZmZjsKKwog
ZmxvYXQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpkZWZhdWx0Rm9udFNpemUgPSAxNjsKIAogY29u
c3QgU3RyaW5nJiBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmRlZmF1bHRHVUlGb250KCkKQEAgLTE2
Myw3ICsxNzMsNyBAQCBzdGF0aWMgZmxvYXQgZGV0ZXJtaW5lRnVsbFNjcmVlbk11bHRpcGxpZXIo
RWxlbWVudCogZWxlbWVudCkKICAgICAgICAgLy8gdmlld3BvcnQgc2l6ZSwgYW5kIHRoZSB2aWV3
cG9ydCBzaXplIG1pZ2h0IGdldCBvdXRzdHJldGNoZWQgdG8gZml0IHRvIHRoZSBzY3JlZW4gZGlt
ZW5zaW9ucy4KICAgICAgICAgLy8gVG8gZml4IHRoYXQsIGxldHMgc3RyaXBzIG91dCB0aGUgUGFn
ZSBzY2FsZSBmYWN0b3IgZnJvbSB0aGUgbWVkaWEgY29udHJvbHMgbXVsdGlwbGllci4KICAgICAg
ICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBlbGVtZW50LT5kb2N1bWVudCgpLT52aWV3KCktPmhvc3RX
aW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCktPmN1cnJlbnRab29tRmFjdG9yKCk7Ci0gICAg
ICAgIHN0YXRpYyBWaWV3cG9ydEFyZ3VtZW50cyBkZWZhdWx0Vmlld3BvcnRBcmd1bWVudHM7CisK
ICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3JGdWRnZSA9IDEgLyBlbGVtZW50LT5kb2N1bWVudCgp
LT5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgICAgIGZ1bGxTY3JlZW5NdWx0aXBs
aWVyIC89IHNjYWxlRmFjdG9yICogc2NhbGVGYWN0b3JGdWRnZTsKICAgICB9CkBAIC0yOTYsMTIg
KzMwNiwxMiBAQCBTdHJpbmcgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpleHRyYU1lZGlhQ29udHJv
bHNTdHlsZVNoZWV0KCkKIHsKICAgICByZXR1cm4gU3RyaW5nKG1lZGlhQ29udHJvbHNCbGFja0Jl
cnJ5VXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKG1lZGlhQ29udHJvbHNCbGFja0JlcnJ5VXNl
ckFnZW50U3R5bGVTaGVldCkpOwogfQorI2VuZGlmCiAKLVN0cmluZyBSZW5kZXJUaGVtZUJsYWNr
QmVycnk6OmZvcm1hdE1lZGlhQ29udHJvbHNSZW1haW5pbmdUaW1lKGZsb2F0LCBmbG9hdCBkdXJh
dGlvbikgY29uc3QKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCitTdHJpbmcgUmVuZGVyVGhl
bWVCbGFja0JlcnJ5OjpleHRyYUZ1bGxTY3JlZW5TdHlsZVNoZWV0KCkKIHsKLSAgICAvLyBUaGlz
IGlzIGEgd29ya2Fyb3VuZCB0byBtYWtlIHRoZSBhcHBlYXJhbmNlIG9mIG1lZGlhIHRpbWUgY29u
dHJvbGxlciBpbgotICAgIC8vIGluLXBhZ2UgbW9kZSB0aGUgc2FtZSBhcyBpbiBmdWxsc2NyZWVu
IG1vZGUuCi0gICAgcmV0dXJuIGZvcm1hdE1lZGlhQ29udHJvbHNUaW1lKGR1cmF0aW9uKTsKKyAg
ICByZXR1cm4gU3RyaW5nKG1lZGlhQ29udHJvbHNCbGFja0JlcnJ5RnVsbHNjcmVlblVzZXJBZ2Vu
dFN0eWxlU2hlZXQsIHNpemVvZihtZWRpYUNvbnRyb2xzQmxhY2tCZXJyeUZ1bGxzY3JlZW5Vc2Vy
QWdlbnRTdHlsZVNoZWV0KSk7CiB9CiAjZW5kaWYKIApAQCAtMzkzLDEyICs0MDMsMjIgQEAgdm9p
ZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNv
bHZlciosIFJlbmRlclN0eWxlKgogICAgIHNldEJ1dHRvblN0eWxlKHN0eWxlKTsKIH0KIAotdm9p
ZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5
bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit2
b2lkIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25T
dHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25z
dAogewogICAgIHN0YXRpYyBjb25zdCBmbG9hdCBkZWZhdWx0Q29udHJvbEZvbnRQaXhlbFNpemUg
PSAxMDsKICAgICBzdGF0aWMgY29uc3QgZmxvYXQgZGVmYXVsdENhbmNlbEJ1dHRvblNpemUgPSAx
MzsKICAgICBzdGF0aWMgY29uc3QgZmxvYXQgbWluQ2FuY2VsQnV0dG9uU2l6ZSA9IDU7CiAKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIGJiU2hvd0NhbmNlbCwgKG51bGxB
dG9tLCAiZGF0YS1ibGFja2JlcnJ5LWhpZGUtY2FuY2VsIiwgbnVsbEF0b20pKTsKKworICAgIC8v
IGlmIHdlIGhhdmUgZGF0YS1ibGFja2JlcnJ5LWhpZGUtY2FuY2VsIGFjdGl2ZSwgbWFrZSB0aGUg
J1gnIHRha2Ugbm8gc3BhY2UKKyAgICBpZiAoZSAmJiBlLT5zaGFkb3dIb3N0KCktPmZhc3RHZXRB
dHRyaWJ1dGUoYmJTaG93Q2FuY2VsKSA9PSAidHJ1ZSIpIHsKKyAgICAgICAgTGVuZ3RoIGxlbmd0
aCgwLCBGaXhlZCk7CisgICAgICAgIHN0eWxlLT5zZXRXaWR0aChsZW5ndGgpOworICAgICAgICBz
dHlsZS0+c2V0SGVpZ2h0KGxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAv
LyBTY2FsZSB0aGUgYnV0dG9uIHNpemUgYmFzZWQgb24gdGhlIGZvbnQgc2l6ZQogICAgIGZsb2F0
IGZvbnRTY2FsZSA9IHN0eWxlLT5mb250U2l6ZSgpIC8gZGVmYXVsdENvbnRyb2xGb250UGl4ZWxT
aXplOwogICAgIGludCBjYW5jZWxCdXR0b25TaXplID0gbHJvdW5kZihzdGQ6Om1heChtaW5DYW5j
ZWxCdXR0b25TaXplLCBkZWZhdWx0Q2FuY2VsQnV0dG9uU2l6ZSAqIGZvbnRTY2FsZSkpOwpAQCAt
NDMxLDYgKzQ1MSwxMCBAQCBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRTZWFyY2hG
aWVsZENhbmNlbEJ1dHRvbihSZW5kZXJPYmplY3QqIGNhbmNlbEJ1dAogICAgIGlmICghaW5wdXQt
PnJlbmRlcmVyKCktPmlzQm94KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIC8vIGlm
IHdlIGhhdmUgZGF0YS1ibGFja2JlcnJ5LWhpZGUtY2FuY2VsIGFjdGl2ZSwgZG9uJ3QgZHJhdyB0
aGUgJ1gnCisgICAgaWYgKGNhbmNlbEJ1dHRvbk9iamVjdC0+c3R5bGUoKS0+dmlzaWJpbGl0eSgp
ID09IEhJRERFTikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgUmVuZGVyQm94KiBpbnB1
dFJlbmRlckJveCA9IHRvUmVuZGVyQm94KGlucHV0LT5yZW5kZXJlcigpKTsKICAgICBMYXlvdXRS
ZWN0IGlucHV0Q29udGVudEJveCA9IGlucHV0UmVuZGVyQm94LT5jb250ZW50Qm94UmVjdCgpOwog
CkBAIC02ODksMTAgKzcxMywxMCBAQCB2b2lkIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0
U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZQogICAgICAgICAg
ICAgZnVsbFNjcmVlbk11bHRpcGxpZXIgPSBkZXRlcm1pbmVGdWxsU2NyZWVuTXVsdGlwbGllcih0
b0VsZW1lbnQoc2xpZGVyLT5ub2RlKCkpKTsKICAgICB9CiAKLSAgICBpZiAocGFydCA9PSBNZWRp
YVZvbHVtZVNsaWRlclRodW1iUGFydCB8fCBwYXJ0ID09IFNsaWRlclRodW1iSG9yaXpvbnRhbFBh
cnQgfHwgcGFydCA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCkgeworICAgIGlmIChwYXJ0ID09
IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQgfHwgcGFydCA9PSBTbGlkZXJUaHVtYlZlcnRpY2Fs
UGFydCkgewogICAgICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKChwYXJ0ID09IFNsaWRlclRo
dW1iVmVydGljYWxQYXJ0ID8gc2xpZGVyVGh1bWJIZWlnaHQgOiBzbGlkZXJUaHVtYldpZHRoKSAq
IGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCkpOwogICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0
KExlbmd0aCgocGFydCA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCA/IHNsaWRlclRodW1iV2lk
dGggOiBzbGlkZXJUaHVtYkhlaWdodCkgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpKTsK
LSAgICB9IGVsc2UgaWYgKHBhcnQgPT0gTWVkaWFTbGlkZXJUaHVtYlBhcnQpIHsKKyAgICB9IGVs
c2UgaWYgKHBhcnQgPT0gTWVkaWFWb2x1bWVTbGlkZXJUaHVtYlBhcnQgfHwgcGFydCA9PSBNZWRp
YVNsaWRlclRodW1iUGFydCkgewogICAgICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKG1lZGlh
U2xpZGVyVGh1bWJXaWR0aCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCkpOwogICAgICAg
ICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChtZWRpYVNsaWRlclRodW1iSGVpZ2h0ICogZnVsbFNj
cmVlbk11bHRpcGxpZXIsIEZpeGVkKSk7CiAgICAgfQpAQCAtNzE4LDEwICs3NDIsMzEgQEAgYm9v
bCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBv
YmplY3QsIGNvbnN0IFBhaW50SW4KIAogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50
U2xpZGVyVHJhY2tSZWN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGlu
Zm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZT4gYmFj
a2dyb3VuZDsKLSAgICBpZiAoIWJhY2tncm91bmQpCi0gICAgICAgIGJhY2tncm91bmQgPSBsb2Fk
SW1hZ2UoImNvcmVfc2xpZGVyX2JnIik7Ci0gICAgcmV0dXJuIHBhaW50U2xpZGVyVHJhY2tSZWN0
KG9iamVjdCwgaW5mbywgcmVjdCwgYmFja2dyb3VuZC5nZXQoKSk7CisgICAgcmV0dXJuIHBhaW50
U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgaW5mbywgcmVjdCwgcmFuZ2VTbGlkZXJSZWd1bGFyVG9w
T3V0bGluZSwgcmFuZ2VTbGlkZXJSZWd1bGFyQm90dG9tT3V0bGluZSwgcmFuZ2VTbGlkZXJSZWd1
bGFyVG9wLCByYW5nZVNsaWRlclJlZ3VsYXJCb3R0b20pOworfQorCitib29sIFJlbmRlclRoZW1l
QmxhY2tCZXJyeTo6cGFpbnRTbGlkZXJUcmFja1JlY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNv
bnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCwgUkdCQTMyIHN0cm9rZUNv
bG9yU3RhcnQsIFJHQkEzMiBzdHJva2VDb2xvckVuZCwgUkdCQTMyIGZpbGxDb2xvclN0YXJ0LCBS
R0JBMzIgZmlsbENvbG9yRW5kKQoreworICAgIEZsb2F0U2l6ZSBzbWFsbENvcm5lcihtZWRpYVNs
aWRlclRyYWNrUmFkaXVzLCBtZWRpYVNsaWRlclRyYWNrUmFkaXVzKTsKKworICAgIGluZm8uY29u
dGV4dC0+c2F2ZSgpOworICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJv
a2UpOworICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVXaWR0aCk7CisK
KyNpZiBVU0UoU0tJQSkKKyAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KGNyZWF0
ZUxpbmVhckdyYWRpZW50KHN0cm9rZUNvbG9yU3RhcnQsIHN0cm9rZUNvbG9yRW5kLCByZWN0Lm1h
eFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSkpOworICAgIGluZm8uY29udGV4
dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KGZpbGxDb2xvclN0YXJ0LCBm
aWxsQ29sb3JFbmQsIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigp
KSk7CisjZWxzZQorICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3Ryb2tlQ29sb3JT
dGFydCwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgaW5mby5jb250ZXh0LT5zZXRGaWxsQ29s
b3IoZmlsbENvbG9yU3RhcnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworI2VuZGlmCisKKyAgICBQ
YXRoIHBhdGg7CisgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0LCBzbWFsbENvcm5lcik7Cisg
ICAgaW5mby5jb250ZXh0LT5maWxsUGF0aChwYXRoKTsKKworICAgIGluZm8uY29udGV4dC0+cmVz
dG9yZSgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVy
cnk6OnBhaW50U2xpZGVyVHJhY2tSZWN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWlu
dEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QsIEltYWdlKiBpbmFjdGl2ZSkKQEAgLTgw
NSwyOSArODUwLDQ3IEBAIHZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RNZWRpYUNv
bnRyb2xTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqCiAgICAgLy8gV2UgdXNlIG11
bHRpcGxlcyBvZiBtZWRpYUNvbnRyb2xzSGVpZ2h0IHRvIG1ha2UgYWxsIG9iamVjdHMgc2NhbGUg
ZXZlbmx5CiAgICAgTGVuZ3RoIHplcm8oMCwgRml4ZWQpOwogICAgIExlbmd0aCBjb250cm9sc0hl
aWdodChtZWRpYUNvbnRyb2xzSGVpZ2h0ICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIEZpeGVkKTsK
LSAgICBMZW5ndGggdGltZVdpZHRoKG1lZGlhQ29udHJvbHNIZWlnaHQgKiAzIC8gMiAqIGZ1bGxT
Y3JlZW5NdWx0aXBsaWVyLCBGaXhlZCk7Ci0gICAgTGVuZ3RoIHZvbHVtZUhlaWdodChtZWRpYUNv
bnRyb2xzSGVpZ2h0ICogNCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCk7Ci0gICAgTGVu
Z3RoIHBhZGRpbmcobWVkaWFDb250cm9sc0hlaWdodCAvIDggKiBmdWxsU2NyZWVuTXVsdGlwbGll
ciwgRml4ZWQpOwotICAgIGZsb2F0IGZvbnRTaXplID0gbWVkaWFDb250cm9sc0hlaWdodCAvIDIg
KiBmdWxsU2NyZWVuTXVsdGlwbGllcjsKKyAgICBMZW5ndGggaGFsZkNvbnRyb2xzV2lkdGgobWVk
aWFDb250cm9sc0hlaWdodCAvIDIgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpOworICAg
IExlbmd0aCBkaXNwbGF5SGVpZ2h0KG1lZGlhQ29udHJvbHNIZWlnaHQgLyAzICogZnVsbFNjcmVl
bk11bHRpcGxpZXIsIEZpeGVkKTsKKyAgICBMZW5ndGggcGFkZGluZyhtZWRpYUNvbnRyb2xzSGVp
Z2h0IC8gMTAgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpOworICAgIGZsb2F0IGZvbnRT
aXplID0gbWVkaWFDb250cm9sc0hlaWdodCAvIDMgKiBmdWxsU2NyZWVuTXVsdGlwbGllcjsKIAog
ICAgIHN3aXRjaCAoc3R5bGUtPmFwcGVhcmFuY2UoKSkgewogICAgIGNhc2UgTWVkaWFQbGF5QnV0
dG9uUGFydDoKKyAgICAgICAgc3R5bGUtPnNldFdpZHRoKGNvbnRyb2xzSGVpZ2h0KTsKKyAgICAg
ICAgc3R5bGUtPnNldEhlaWdodChjb250cm9sc0hlaWdodCk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgTWVkaWFNdXRlQnV0dG9uUGFydDoKKyAgICAgICAgc3R5bGUtPnNldFBhZGRpbmdMZWZ0
KHBhZGRpbmcpOworICAgICAgICBzdHlsZS0+c2V0V2lkdGgoY29udHJvbHNIZWlnaHQpOworICAg
ICAgICBzdHlsZS0+c2V0SGVpZ2h0KGNvbnRyb2xzSGVpZ2h0KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBNZWRpYVJld2luZEJ1dHRvblBhcnQ6CisgICAgICAgIC8vIFdlIGhpLWphY2sgdGhl
IFJld2luZCBCdXR0b24gSUQgdG8gdXNlIGl0IGZvciB0aGUgZGl2aWRlciBpbWFnZQorICAgICAg
ICBzdHlsZS0+c2V0V2lkdGgoaGFsZkNvbnRyb2xzV2lkdGgpOworICAgICAgICBzdHlsZS0+c2V0
SGVpZ2h0KGNvbnRyb2xzSGVpZ2h0KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYUVu
dGVyRnVsbHNjcmVlbkJ1dHRvblBhcnQ6CisgICAgICAgIHN0eWxlLT5zZXRQYWRkaW5nUmlnaHQo
cGFkZGluZyk7CisgICAgICAgIHN0eWxlLT5zZXRXaWR0aChjb250cm9sc0hlaWdodCk7CisgICAg
ICAgIHN0eWxlLT5zZXRIZWlnaHQoY29udHJvbHNIZWlnaHQpOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIE1lZGlhRXhpdEZ1bGxzY3JlZW5CdXR0b25QYXJ0OgotICAgIGNhc2UgTWVkaWFNdXRl
QnV0dG9uUGFydDoKKyAgICAgICAgc3R5bGUtPnNldExlZnQoemVybyk7CiAgICAgICAgIHN0eWxl
LT5zZXRXaWR0aChjb250cm9sc0hlaWdodCk7CiAgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoY29u
dHJvbHNIZWlnaHQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhQ3VycmVudFRpbWVQ
YXJ0OgogICAgIGNhc2UgTWVkaWFUaW1lUmVtYWluaW5nUGFydDoKLSAgICAgICAgc3R5bGUtPnNl
dFdpZHRoKHRpbWVXaWR0aCk7Ci0gICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoY29udHJvbHNIZWln
aHQpOworICAgICAgICBzdHlsZS0+c2V0V2lkdGgoY29udHJvbHNIZWlnaHQpOworICAgICAgICBz
dHlsZS0+c2V0SGVpZ2h0KGRpc3BsYXlIZWlnaHQpOwogICAgICAgICBzdHlsZS0+c2V0UGFkZGlu
Z1JpZ2h0KHBhZGRpbmcpOworICAgICAgICBzdHlsZS0+c2V0UGFkZGluZ0xlZnQocGFkZGluZyk7
CisgICAgICAgIHN0eWxlLT5zZXRQYWRkaW5nQm90dG9tKHBhZGRpbmcpOwogICAgICAgICBzdHls
ZS0+c2V0Rm9udFNpemUoc3RhdGljX2Nhc3Q8aW50Pihmb250U2l6ZSkpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIE1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyUGFydDoKLSAgICAgICAgc3R5
bGUtPnNldFdpZHRoKGNvbnRyb2xzSGVpZ2h0KTsKLSAgICAgICAgc3R5bGUtPnNldEhlaWdodCh2
b2x1bWVIZWlnaHQpOworICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KGNvbnRyb2xzSGVpZ2h0KTsK
ICAgICAgICAgc3R5bGUtPnNldEJvdHRvbShjb250cm9sc0hlaWdodCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CkBAIC04NDQsMTIgKzkwNywxNCBAQCB2b2lkIFJlbmRlclRoZW1lQmxh
Y2tCZXJyeTo6YWRqdXN0TWVkaWFDb250cm9sU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0
eWxlKgogICAgICAgICBjYXNlIE1lZGlhRXhpdEZ1bGxzY3JlZW5CdXR0b25QYXJ0OgogICAgICAg
ICAgICAgc3R5bGUtPnNldFBvc2l0aW9uKEFic29sdXRlUG9zaXRpb24pOwogICAgICAgICAgICAg
c3R5bGUtPnNldEJvdHRvbSh6ZXJvKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRMZWZ0KHplcm8p
OwogICAgICAgICAgICAgc3R5bGUtPnNldFJpZ2h0KGNvbnRyb2xzSGVpZ2h0KTsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1lZGlhTXV0ZUJ1dHRvblBhcnQ6CisgICAgICAgIGNh
c2UgTWVkaWFSZXdpbmRCdXR0b25QYXJ0OgorICAgICAgICAgICAgLy8gV2UgaGktamFjayB0aGUg
UmV3aW5kIEJ1dHRvbiBJRCB0byB1c2UgaXQgZm9yIHRoZSBkaXZpZGVyIGltYWdlCiAgICAgICAg
ICAgICBzdHlsZS0+c2V0UG9zaXRpb24oQWJzb2x1dGVQb3NpdGlvbik7CiAgICAgICAgICAgICBz
dHlsZS0+c2V0Qm90dG9tKHplcm8pOwotICAgICAgICAgICAgc3R5bGUtPnNldFJpZ2h0KHplcm8p
OworICAgICAgICAgICAgc3R5bGUtPnNldExlZnQoY29udHJvbHNIZWlnaHQpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKQEAgLTg2Miwx
NyArOTI3LDEyIEBAIHZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RTbGlkZXJUcmFj
a1N0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSoKICAgICBmbG9hdCBmdWxsU2NyZWVu
TXVsdGlwbGllciA9IGRldGVybWluZUZ1bGxTY3JlZW5NdWx0aXBsaWVyKGVsZW1lbnQpOwogCiAg
ICAgLy8gV2UgdXNlIG11bHRpcGxlcyBvZiBtZWRpYUNvbnRyb2xzSGVpZ2h0IHRvIG1ha2UgYWxs
IG9iamVjdHMgc2NhbGUgZXZlbmx5Ci0gICAgTGVuZ3RoIGNvbnRyb2xzSGVpZ2h0KG1lZGlhQ29u
dHJvbHNIZWlnaHQgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpOwotICAgIExlbmd0aCB2
b2x1bWVIZWlnaHQobWVkaWFDb250cm9sc0hlaWdodCAqIDQgKiBmdWxsU2NyZWVuTXVsdGlwbGll
ciwgRml4ZWQpOworICAgIExlbmd0aCBjb250cm9sc0hlaWdodChtZWRpYUNvbnRyb2xzSGVpZ2h0
IC8gMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCk7CiAgICAgc3dpdGNoIChzdHlsZS0+
YXBwZWFyYW5jZSgpKSB7CiAgICAgY2FzZSBNZWRpYVNsaWRlclBhcnQ6Ci0gICAgICAgIHN0eWxl
LT5zZXRIZWlnaHQoY29udHJvbHNIZWlnaHQpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIE1l
ZGlhVm9sdW1lU2xpZGVyUGFydDoKLSAgICAgICAgc3R5bGUtPnNldFdpZHRoKGNvbnRyb2xzSGVp
Z2h0KTsKLSAgICAgICAgc3R5bGUtPnNldEhlaWdodCh2b2x1bWVIZWlnaHQpOworICAgICAgICBz
dHlsZS0+c2V0SGVpZ2h0KGNvbnRyb2xzSGVpZ2h0KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXJQYXJ0OgogICAgIGRlZmF1bHQ6CiAgICAgICAg
IGJyZWFrOwogICAgIH0KQEAgLTkwNCw2ICs5NjQsMjkgQEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNr
QmVycnk6OnBhaW50TWVkaWFQbGF5QnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQ
YWkKICNlbmRpZgogfQogCisvLyBXZSBoaS1qYWNrIHRoZSBSZXdpbmQgQnV0dG9uIGNvZGUgdG8g
dXNlIGl0IGZvciB0aGUgZGl2aWRlciBpbWFnZQorYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6
OnBhaW50TWVkaWFSZXdpbmRCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworI2lmIEVOQUJMRShWSURF
TykKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0b1BhcmVudE1lZGlhRWxl
bWVudChvYmplY3QpOworCisgICAgaWYgKCFtZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmICghbWVkaWFFbGVtZW50LT5pc0Z1bGxzY3JlZW4oKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgc3RhdGljIEltYWdlKiBkaXZpZGVyID0gSW1hZ2U6OmxvYWRQ
bGF0Zm9ybVJlc291cmNlKCJkaXZpZGVyIikubGVha1JlZigpOworCisgICAgcmV0dXJuIHBhaW50
TWVkaWFCdXR0b24ocGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIGRpdmlkZXIpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0ocGFpbnRJbmZvKTsKKyAg
ICBVTlVTRURfUEFSQU0ocmVjdCk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIGJv
b2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmpl
Y3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB7CiAjaWYgRU5BQkxFKFZJREVPKQpAQCAtOTEyLDEwICs5OTUsOSBAQCBib29sIFJlbmRl
clRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIGNvbnN0IFBhaQogICAgIGlmICghbWVkaWFFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBzdGF0aWMgSW1hZ2UqIG1lZGlhTXV0ZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgic3BlYWtlciIpLmxlYWtSZWYoKTsKLSAgICBzdGF0aWMgSW1hZ2UqIG1lZGlhVW5t
dXRlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJzcGVha2VyX211dGUiKS5sZWFrUmVm
KCk7CisgICAgc3RhdGljIEltYWdlKiBkaXZpZGVyID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291
cmNlKCJzcGVha2VyIikubGVha1JlZigpOwogCi0gICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24o
cGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIG1lZGlhRWxlbWVudC0+bXV0ZWQoKSB8fCAhbWVkaWFF
bGVtZW50LT52b2x1bWUoKSA/IG1lZGlhVW5tdXRlIDogbWVkaWFNdXRlKTsKKyAgICByZXR1cm4g
cGFpbnRNZWRpYUJ1dHRvbihwYWludEluZm8uY29udGV4dCwgcmVjdCwgZGl2aWRlcik7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOwogICAgIFVOVVNFRF9QQVJBTShwYWludEluZm8p
OwpAQCAtOTMyLDcgKzEwMTQsNyBAQCBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRN
ZWRpYUZ1bGxzY3JlZW5CdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbgogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBzdGF0aWMgSW1hZ2UqIG1lZGlhRW50ZXJGdWxsc2NyZWVuID0g
SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJmdWxsc2NyZWVuIikubGVha1JlZigpOwotICAg
IHN0YXRpYyBJbWFnZSogbWVkaWFFeGl0RnVsbHNjcmVlbiA9IEltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgiZXhpdF9mdWxsc2NyZWVuIikubGVha1JlZigpOworICAgIHN0YXRpYyBJbWFnZSog
bWVkaWFFeGl0RnVsbHNjcmVlbiA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgiYmFjayIp
LmxlYWtSZWYoKTsKIAogICAgIEltYWdlKiBidXR0b25JbWFnZSA9IG1lZGlhRW50ZXJGdWxsc2Ny
ZWVuOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTk1OSwzOCArMTA0MSwzMCBAQCBi
b29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRlck9i
amVjdCogb2JqZWN0LCBjb25zdCBQYQogICAgIGZsb2F0IGxvYWRlZCA9IG1lZGlhRWxlbWVudC0+
cGVyY2VudExvYWRlZCgpOwogICAgIGZsb2F0IHBvc2l0aW9uID0gbWVkaWFFbGVtZW50LT5kdXJh
dGlvbigpID4gMCA/IChtZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCkgLyBtZWRpYUVsZW1lbnQt
PmR1cmF0aW9uKCkpIDogMDsKIAotICAgIGludCB4ID0gY2VpbChyZWN0LngoKSArIDIgKiBmdWxs
U2NyZWVuTXVsdGlwbGllciAtIGZ1bGxTY3JlZW5NdWx0aXBsaWVyIC8gMik7Ci0gICAgaW50IHkg
PSBjZWlsKHJlY3QueSgpICsgMTQgKiBmdWxsU2NyZWVuTXVsdGlwbGllciArIGZ1bGxTY3JlZW5N
dWx0aXBsaWVyIC8gMik7Ci0gICAgaW50IHcgPSBjZWlsKHJlY3Qud2lkdGgoKSAtIDQgKiBmdWxs
U2NyZWVuTXVsdGlwbGllciArIGZ1bGxTY3JlZW5NdWx0aXBsaWVyIC8gMik7Ci0gICAgaW50IGgg
PSBjZWlsKDIgKiBmdWxsU2NyZWVuTXVsdGlwbGllcik7CisgICAgaW50IGludHJpbnNpY0hlaWdo
dCA9IGNlaWwobWVkaWFTbGlkZXJUaHVtYkhlaWdodCAvIDQpOworICAgIGludCB4ID0gY2VpbChy
ZWN0LngoKSArIChtZWRpYUNvbnRyb2xzSGVpZ2h0IC0gaW50cmluc2ljSGVpZ2h0KSAvIDIgKiBm
dWxsU2NyZWVuTXVsdGlwbGllciAtIGZ1bGxTY3JlZW5NdWx0aXBsaWVyIC8gMik7CisgICAgaW50
IHkgPSBjZWlsKHJlY3QueSgpICsgKG1lZGlhQ29udHJvbHNIZWlnaHQgLyAyIC0gaW50cmluc2lj
SGVpZ2h0KSAvIDIgKiBmdWxsU2NyZWVuTXVsdGlwbGllciArIGZ1bGxTY3JlZW5NdWx0aXBsaWVy
IC8gMik7CisgICAgaW50IHcgPSBjZWlsKHJlY3Qud2lkdGgoKSAtIChtZWRpYUNvbnRyb2xzSGVp
Z2h0IC0gaW50cmluc2ljSGVpZ2h0KSAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyICsgZnVsbFNjcmVl
bk11bHRpcGxpZXIgLyAyKTsKKyAgICBpbnQgaCA9IGNlaWwoaW50cmluc2ljSGVpZ2h0ICogZnVs
bFNjcmVlbk11bHRpcGxpZXIpOwogICAgIEludFJlY3QgcmVjdDIoeCwgeSwgdywgaCk7CiAKICAg
ICBpbnQgd1BsYXllZCA9IGNlaWwodyAqIHBvc2l0aW9uKTsKICAgICBpbnQgd0xvYWRlZCA9IGNl
aWwoKHcgLSBtZWRpYVNsaWRlclRodW1iV2lkdGggKiBmdWxsU2NyZWVuTXVsdGlwbGllcikgKiBs
b2FkZWQgKyBtZWRpYVNsaWRlclRodW1iV2lkdGggKiBmdWxsU2NyZWVuTXVsdGlwbGllcik7CiAK
ICAgICBJbnRSZWN0IHBsYXllZCh4LCB5LCB3UGxheWVkLCBoKTsKLSAgICBJbnRSZWN0IGJ1ZmZl
cmVkKHgsIHksIHdMb2FkZWQsIGgpOworICAgIEludFJlY3QgYnVmZmVyZWQoeCwgY2VpbCh5ICsg
bWVkaWFTbGlkZXJPdXRsaW5lV2lkdGgpLCB3TG9hZGVkLCBjZWlsKGggLSAyICogbWVkaWFTbGlk
ZXJPdXRsaW5lV2lkdGgpKTsKIAogICAgIC8vIFRoaXMgaXMgdG8gcGFpbnQgbWFpbiBzbGlkZXIg
YmFyLgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHRyYWNrSW1hZ2U7Ci0gICAgaWYgKCF0cmFj
a0ltYWdlKQotICAgICAgICB0cmFja0ltYWdlID0gbG9hZEltYWdlKCJjb3JlX3NsaWRlcl9tZWRp
YV9iZyIpOwotICAgIGJvb2wgcmVzdWx0ID0gcGFpbnRTbGlkZXJUcmFja1JlY3Qob2JqZWN0LCBw
YWludEluZm8sIHJlY3QyLCB0cmFja0ltYWdlLmdldCgpKTsKKyAgICBib29sIHJlc3VsdCA9IHBh
aW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJbmZvLCByZWN0Mik7CiAKICAgICBpZiAo
bG9hZGVkID4gMCB8fCBwb3NpdGlvbiA+IDApIHsKICAgICAgICAgLy8gVGhpcyBpcyB0byBwYWlu
dCBidWZmZXJlZCBiYXIuCi0gICAgICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGJ1ZmZlcmVkSW1h
Z2UsIHBsYXllZEltYWdlOwotICAgICAgICBpZiAoIWJ1ZmZlcmVkSW1hZ2UpIHsKLSAgICAgICAg
ICAgIGJ1ZmZlcmVkSW1hZ2UgPSBsb2FkSW1hZ2UoImNvcmVfc2xpZGVyX2J1ZmZlcmVkX2JnIik7
Ci0gICAgICAgICAgICBwbGF5ZWRJbWFnZSA9IGxvYWRJbWFnZSgiY29yZV9zbGlkZXJfcGxheWVk
X2JnIik7Ci0gICAgICAgIH0KLSAgICAgICAgcGFpbnRTbGlkZXJUcmFja1JlY3Qob2JqZWN0LCBw
YWludEluZm8sIGJ1ZmZlcmVkLCBidWZmZXJlZEltYWdlLmdldCgpKTsKKyAgICAgICAgcGFpbnRT
bGlkZXJUcmFja1JlY3Qob2JqZWN0LCBwYWludEluZm8sIGJ1ZmZlcmVkLCBDb2xvcjo6ZGFya0dy
YXksIENvbG9yOjpkYXJrR3JheSwgQ29sb3I6OmRhcmtHcmF5LCBDb2xvcjo6ZGFya0dyYXkpOwog
CiAgICAgICAgIC8vIFRoaXMgaXMgdG8gcGFpbnQgcGxheWVkIHBhcnQgb2YgYmFyIChsZWZ0IG9m
IHNsaWRlciB0aHVtYikgdXNpbmcgc2VsZWN0aW9uIGNvbG9yLgotICAgICAgICBwYWludFNsaWRl
clRyYWNrUmVjdChvYmplY3QsIHBhaW50SW5mbywgcGxheWVkLCBwbGF5ZWRJbWFnZS5nZXQoKSk7
CisgICAgICAgIHBhaW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJbmZvLCBwbGF5ZWQs
IHNlbGVjdGlvbiwgc2VsZWN0aW9uLCBzZWxlY3Rpb24sIHNlbGVjdGlvbik7CiAgICAgfQogICAg
IHJldHVybiByZXN1bHQ7Ci0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7CiAgICAg
VU5VU0VEX1BBUkFNKHBhaW50SW5mbyk7CkBAIC0xMDAyLDE1ICsxMDc2LDM0IEBAIGJvb2wgUmVu
ZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBv
YmplY3QsIGNvbnN0IFBhCiBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNs
aWRlclRodW1iKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICNpZiBFTkFCTEUoVklERU8pCisjaWYgVVNFKFNL
SUEpCiAgICAgUmVuZGVyU2xpZGVyKiBzbGlkZXIgPSBkZXRlcm1pbmVSZW5kZXJTbGlkZXIob2Jq
ZWN0KTsKICAgICBpZiAoIXNsaWRlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3Rh
dGljIEltYWdlKiBtZWRpYVZvbHVtZVRodW1iID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNl
KCJ2b2x1bWVfdGh1bWIiKS5sZWFrUmVmKCk7CisgICAgZmxvYXQgZnVsbFNjcmVlbk11bHRpcGxp
ZXIgPSBkZXRlcm1pbmVGdWxsU2NyZWVuTXVsdGlwbGllcih0b0VsZW1lbnQoc2xpZGVyLT5ub2Rl
KCkpKTsKKworICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgUGF0aCBtZWRpYVRo
dW1iUm91bmRlZFJlY3RhbmdsZTsKKyAgICBtZWRpYVRodW1iUm91bmRlZFJlY3RhbmdsZS5hZGRS
b3VuZGVkUmVjdChyZWN0LCBGbG9hdFNpemUobWVkaWFTbGlkZXJUaHVtYlJhZGl1cyAqIGZ1bGxT
Y3JlZW5NdWx0aXBsaWVyLCBtZWRpYVNsaWRlclRodW1iUmFkaXVzICogZnVsbFNjcmVlbk11bHRp
cGxpZXIpKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJv
a2UpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoMC41KTsKKyAg
ICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKworICAgIGlmIChpc1ByZXNzZWQob2JqZWN0KSB8fCBpc0hvdmVyZWQo
b2JqZWN0KSB8fCBzbGlkZXItPmluRHJhZ01vZGUoKSkKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPnNldEZpbGxHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChzZWxlY3Rpb24sIENvbG9y
KHNlbGVjdGlvbikuZGFyaygpLnJnYigpLCByZWN0Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4
WE1heFlDb3JuZXIoKSkpOworICAgIGVsc2UKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNl
dEZpbGxHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChDb2xvcjo6d2hpdGUsIENvbG9yKENv
bG9yOjp3aGl0ZSkuZGFyaygpLnJnYigpLCByZWN0Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4
WE1heFlDb3JuZXIoKSkpOwogCi0gICAgZHJhd0NvbnRyb2wocGFpbnRJbmZvLmNvbnRleHQsIHJl
Y3QsIG1lZGlhVm9sdW1lVGh1bWIpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUGF0aCht
ZWRpYVRodW1iUm91bmRlZFJlY3RhbmdsZSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3Rv
cmUoKTsKIAogICAgIHJldHVybiB0cnVlOworI2Vsc2UgLy8gR0wgcmVuZGVyZXIKKyAgICBzdGF0
aWMgSW1hZ2UqIG1lZGlhU2xpZGVyVGh1bWIgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2Uo
ImNvcmVfc2xpZGVyX2hhbmRsZV9kaXNhYmxlZCIpLmxlYWtSZWYoKTsKKworICAgIHJldHVybiBw
YWludE1lZGlhQnV0dG9uKHBhaW50SW5mby5jb250ZXh0LCByZWN0LCBtZWRpYVNsaWRlclRodW1i
KTsKKyNlbmRpZiAvLyBVU0UoU0tJQSkKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7
CiAgICAgVU5VU0VEX1BBUkFNKHBhaW50SW5mbyk7CkBAIC0xMDIyLDE5ICsxMTE1LDI5IEBAIGJv
b2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhU2xpZGVyVGh1bWIoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QsIGNvbnN0IFBhCiBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRN
ZWRpYVZvbHVtZVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICNpZiBFTkFCTEUoVklERU8p
Ci0gICAgZmxvYXQgcGFkID0gcmVjdC53aWR0aCgpICogMC40NTsKLSAgICBmbG9hdCB4ID0gcmVj
dC54KCkgKyBwYWQ7Ci0gICAgZmxvYXQgeSA9IHJlY3QueSgpICsgcGFkOwotICAgIGZsb2F0IHdp
ZHRoID0gcmVjdC53aWR0aCgpICogMC4xOwotICAgIGZsb2F0IGhlaWdodCA9IHJlY3QuaGVpZ2h0
KCkgLSAoMi4wICogcGFkKTsKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0
b1BhcmVudE1lZGlhRWxlbWVudChvYmplY3QpOworICAgIGlmICghbWVkaWFFbGVtZW50KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBJbnRSZWN0IHJlY3QyKHgsIHksIHdpZHRoLCBoZWln
aHQpOworICAgIGZsb2F0IGZ1bGxTY3JlZW5NdWx0aXBsaWVyID0gZGV0ZXJtaW5lRnVsbFNjcmVl
bk11bHRpcGxpZXIobWVkaWFFbGVtZW50KTsKKyAgICBmbG9hdCB2b2x1bWUgPSBtZWRpYUVsZW1l
bnQtPnZvbHVtZSgpID4gMCA/IG1lZGlhRWxlbWVudC0+dm9sdW1lKCkgOiAwOwogCi0gICAgc3Rh
dGljIFJlZlB0cjxJbWFnZT4gdHJhY2tJbWFnZTsKLSAgICBpZiAoIXRyYWNrSW1hZ2UpCi0gICAg
ICAgIHRyYWNrSW1hZ2UgPSBsb2FkSW1hZ2UoImNvcmVfc2xpZGVyX21lZGlhX2JnIik7CisgICAg
aW50IGludHJpbnNpY0hlaWdodCA9IGNlaWwobWVkaWFTbGlkZXJUaHVtYkhlaWdodCAvIDQpOwor
ICAgIGludCB4ID0gY2VpbChyZWN0LngoKSArIChtZWRpYUNvbnRyb2xzSGVpZ2h0IC0gaW50cmlu
c2ljSGVpZ2h0KSAvIDIgKiBmdWxsU2NyZWVuTXVsdGlwbGllciAtIGZ1bGxTY3JlZW5NdWx0aXBs
aWVyIC8gMik7CisgICAgaW50IHkgPSBjZWlsKHJlY3QueSgpICsgKG1lZGlhQ29udHJvbHNIZWln
aHQgLyAyIC0gaW50cmluc2ljSGVpZ2h0KSAvIDIgKiBmdWxsU2NyZWVuTXVsdGlwbGllciArIGZ1
bGxTY3JlZW5NdWx0aXBsaWVyIC8gMik7CisgICAgaW50IHcgPSBjZWlsKHJlY3Qud2lkdGgoKSAt
IChtZWRpYUNvbnRyb2xzSGVpZ2h0IC0gaW50cmluc2ljSGVpZ2h0KSAqIGZ1bGxTY3JlZW5NdWx0
aXBsaWVyICsgZnVsbFNjcmVlbk11bHRpcGxpZXIgLyAyKTsKKyAgICBpbnQgaCA9IGNlaWwoaW50
cmluc2ljSGVpZ2h0ICogZnVsbFNjcmVlbk11bHRpcGxpZXIpOworICAgIEludFJlY3QgcmVjdDIo
eCwgeSwgdywgaCk7CisgICAgSW50UmVjdCB2b2x1bWVSZWN0KHgsIHksIGNlaWwodyAqIHZvbHVt
ZSksIGgpOwogCi0gICAgcmV0dXJuIHBhaW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJ
bmZvLCByZWN0MiwgdHJhY2tJbWFnZS5nZXQoKSk7CisgICAgLy8gVGhpcyBpcyB0byBwYWludCBt
YWluIHZvbHVtZSBzbGlkZXIgYmFyLgorICAgIGJvb2wgcmVzdWx0ID0gcGFpbnRTbGlkZXJUcmFj
a1JlY3Qob2JqZWN0LCBwYWludEluZm8sIHJlY3QyLCBDb2xvcihtZWRpYVNsaWRlclRyYWNrT3V0
bGluZSkucmdiKCksIENvbG9yKG1lZGlhU2xpZGVyVHJhY2tPdXRsaW5lKS5yZ2IoKSwgcmFuZ2VT
bGlkZXJSZWd1bGFyVG9wLCByYW5nZVNsaWRlclJlZ3VsYXJUb3ApOworCisgICAgaWYgKHZvbHVt
ZSA+IDApIHsKKyAgICAgICAgLy8gVGhpcyBpcyB0byBwYWludCB2b2x1bWUgYmFyIChsZWZ0IG9m
IHZvbHVtZSBzbGlkZXIgdGh1bWIpIHVzaW5nIHNlbGVjdGlvbiBjb2xvci4KKyAgICAgICAgcGFp
bnRTbGlkZXJUcmFja1JlY3Qob2JqZWN0LCBwYWludEluZm8sIHZvbHVtZVJlY3QsIENvbG9yKG1l
ZGlhU2xpZGVyVHJhY2tPdXRsaW5lKS5yZ2IoKSwgQ29sb3IobWVkaWFTbGlkZXJUcmFja091dGxp
bmUpLnJnYigpLCBzZWxlY3Rpb24sIHNlbGVjdGlvbik7CisgICAgfQorICAgIHJldHVybiByZXN1
bHQ7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOwogICAgIFVOVVNFRF9QQVJBTShw
YWludEluZm8pOwpAQCAtMTA0Niw5ICsxMTQ5LDI5IEBAIGJvb2wgUmVuZGVyVGhlbWVCbGFja0Jl
cnJ5OjpwYWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNv
CiBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRodW1i
KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIHsKICNpZiBFTkFCTEUoVklERU8pCi0gICAgc3RhdGljIEltYWdlKiBt
ZWRpYVZvbHVtZVRodW1iID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJ2b2x1bWVfdGh1
bWIiKS5sZWFrUmVmKCk7CisjaWYgVVNFKFNLSUEpCisgICAgUmVuZGVyU2xpZGVyKiBzbGlkZXIg
PSBkZXRlcm1pbmVSZW5kZXJTbGlkZXIob2JqZWN0KTsKKyAgICBpZiAoIXNsaWRlcikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocGFpbnRJbmZv
LmNvbnRleHQsIHJlY3QsIG1lZGlhVm9sdW1lVGh1bWIpOworICAgIGZsb2F0IGZ1bGxTY3JlZW5N
dWx0aXBsaWVyID0gZGV0ZXJtaW5lRnVsbFNjcmVlbk11bHRpcGxpZXIodG9FbGVtZW50KHNsaWRl
ci0+bm9kZSgpKSk7CisKKyAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOworICAgIFBhdGgg
bWVkaWFUaHVtYlJvdW5kZWRSZWN0YW5nbGU7CisgICAgbWVkaWFUaHVtYlJvdW5kZWRSZWN0YW5n
bGUuYWRkUm91bmRlZFJlY3QocmVjdCwgRmxvYXRTaXplKG1lZGlhU2xpZGVyVGh1bWJIZWlnaHQg
LyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIG1lZGlhU2xpZGVyVGh1bWJIZWlnaHQgLyAyICog
ZnVsbFNjcmVlbk11bHRpcGxpZXIpKTsKKworICAgIGlmIChpc1ByZXNzZWQob2JqZWN0KSB8fCBp
c0hvdmVyZWQob2JqZWN0KSB8fCBzbGlkZXItPmluRHJhZ01vZGUoKSkKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPnNldEZpbGxHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChzZWxlY3Rp
b24sIENvbG9yKHNlbGVjdGlvbikuZGFyaygpLnJnYigpLCByZWN0Lm1heFhNaW5ZQ29ybmVyKCks
IHJlY3QubWF4WE1heFlDb3JuZXIoKSkpOworICAgIGVsc2UKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPnNldEZpbGxHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChtZWRpYVNsaWRlclRy
YWNrT3V0bGluZSwgQ29sb3I6OmJsYWNrLCByZWN0Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4
WE1heFlDb3JuZXIoKSkpOworCisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxQYXRoKG1lZGlh
VGh1bWJSb3VuZGVkUmVjdGFuZ2xlKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgp
OworCisgICAgcmV0dXJuIHRydWU7CisjZWxzZSAvLyBHTCByZW5kZXJlcgorICAgIHJldHVybiBw
YWludE1lZGlhU2xpZGVyVGh1bWIob2JqZWN0LCBwYWludEluZm8sIHJlY3QpOworI2VuZGlmIC8v
IFVTRShTS0lBKQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKICAgICBVTlVTRURf
UEFSQU0ocGFpbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oCmluZGV4IDUwN2Q0NTEzNDhkMzVm
ZTQ1NDY1NDAxMDliYTM3NTZkNjM2ODVlZTUuLjFlZWI1NWI5OTIxYzBhODIzZTdiMzdlMTNkNjBk
M2Y3NzhiNzUxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuaApAQCAtMzIsNyArMzIsMTAgQEAgcHVi
bGljOgogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhTWVkaWFD
b250cm9sc1N0eWxlU2hlZXQoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBmb3JtYXRNZWRpYUNvbnRy
b2xzUmVtYWluaW5nVGltZShmbG9hdCBjdXJyZW50VGltZSwgZmxvYXQgZHVyYXRpb24pIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCB1c2VzVmVydGljYWxWb2x1bWVTbGlkZXIoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorI2VuZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIHZp
cnR1YWwgU3RyaW5nIGV4dHJhRnVsbFNjcmVlblN0eWxlU2hlZXQoKTsKICNlbmRpZgogICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c0hvdmVyKGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogCkBAIC04Miw2ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRodW1iKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVBsYXlCdXR0
b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAg
IHZpcnR1YWwgYm9vbCBwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFS
ZXdpbmRCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpOwogICAgIHZpcnR1YWwgYm9vbCBwYWludFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCosIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIGRvdWJsZSBhbmlt
YXRpb25SZXBlYXRJbnRlcnZhbEZvclByb2dyZXNzQmFyKFJlbmRlclByb2dyZXNzKikgY29uc3Q7
CiAgICAgdmlydHVhbCBkb3VibGUgYW5pbWF0aW9uRHVyYXRpb25Gb3JQcm9ncmVzc0JhcihSZW5k
ZXJQcm9ncmVzcyopIGNvbnN0OwpAQCAtMTA0LDkgKzEwOCwxMyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0QnV0dG9uU3R5bGUoUmVuZGVyU3R5bGUqKSBjb25zdDsKIAogICAgIGJvb2wgcGFpbnRU
ZXh0RmllbGRPclRleHRBcmVhT3JTZWFyY2hGaWVsZChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisKICAgICBib29sIHBhaW50U2xpZGVyVHJhY2tSZWN0
KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAorICAg
IGJvb2wgcGFpbnRTbGlkZXJUcmFja1JlY3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYsIFJHQkEzMiwgUkdCQTMyLCBSR0JBMzIsIFJHQkEzMik7CisKICAg
ICBib29sIHBhaW50U2xpZGVyVHJhY2tSZWN0KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmLCBJbWFnZSopOworCiAgICAgSW50UmVjdCBjb252ZXJ0VG9QYWlu
dGluZ1JlY3QoUmVuZGVyT2JqZWN0KiBpbnB1dFJlbmRlcmVyLCBjb25zdCBSZW5kZXJPYmplY3Qq
IHBhcnRSZW5kZXJlciwgTGF5b3V0UmVjdCBwYXJ0UmVjdCwgY29uc3QgSW50UmVjdCYgbG9jYWxP
ZmZzZXQpIGNvbnN0OwogCiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178866</attachid>
            <date>2012-12-11 13:50:23 -0800</date>
            <delta_ts>2012-12-12 07:55:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104443-20121211164742.patch</filename>
            <type>text/plain</type>
            <size>110433</size>
            <attacher name="John Griggs">jgriggs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2E4YzNlZDdkZTUxMmJh
NDE1NTE2OTBlZTIxM2I2ODYzYWQ2NGE1MC4uZmI0ZDMxYTEwMjBlMzkwOWVjOWI3ZjJmMjI5NzNh
ZjhiNjc4NzFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwNyBAQAorMjAxMi0xMi0xMSAgSm9o
biBHcmlnZ3MgIDxqZ3JpZ2dzQHJpbS5jb20+CisKKyAgICAgICAgMjAxMi0xMi0xMSAgSm9obiBH
cmlnZ3MgIDxqZ3JpZ2dzQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFVwZGF0ZSBC
bGFja0JlcnJ5IE1lZGlhIENvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDQ0NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBQbGF0Zm9ybSBzcGVjaWZpYyB1cGRhdGUgdG8gbWVkaWEgY29udHJv
bHMgYXBwZWFyYW5jZSAtIE5vIG5ldyB0ZXN0cyByZXF1aXJlZC4KKworICAgICAgICBVcGRhdGUg
c2hhZG93IERPTSwgcGxhdGZvcm0gQ1NTIGFuZCByZW5kZXJpbmcgY29kZSBmb3IgbmV3IGxheW91
dCBvZiBtZWRpYSBjb250cm9scyBvbiBCbGFja0JlcnJ5IHBsYXRmb3JtLgorCisgICAgICAgICog
UGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlOgorICAgICAgICAqIGNzcy9tZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeS5jc3M6CisgICAgICAgIChhdWRpbyk6CisgICAgICAgIChhdWRpbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXBhbmVsLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1mdWxsc2NyZWVuLXBhbmVsKToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXBhbmVsLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCk6CisgICAg
ICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAtY29udGFpbmVy
LCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAtY29udGFpbmVyKToK
KyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1k
aXNwbGF5LWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVl
bi10aW1lLWRpc3BsYXktY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIpOgorICAgICAgICAodmlkZW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbiwgYXVkaW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbik6CisgICAgICAgICh2aWRlbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtcGxheS1idXR0b24pOgorICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtZnVsbHNjcmVlbi10aW1lbGluZS1jb250YWluZXIsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUtY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyKToKKyAgICAgICAgKGF1ZGlvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10aW1lLWRpc3BsYXksIHZpZGVv
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10aW1lLWRpc3BsYXkp
OgorICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtY3VycmVudC10aW1lLWRp
c3BsYXksIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWN1cnJlbnQtdGltZS1kaXNwbGF5
KToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGlt
ZS1yZW1haW5pbmctZGlzcGxheSwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNj
cmVlbi10aW1lLXJlbWFpbmluZy1kaXNwbGF5KToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXksIGF1ZGlvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkpOgorICAgICAgICAoYXVkaW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZSwgdmlkZW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZSk6CisgICAgICAgICh2aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uLCBhdWRpbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uKToKKyAgICAg
ICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uKToKKyAg
ICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uKToK
KyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uKToKKyAg
ICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uKToKKyAgICAg
ICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXItY29udGFpbmVy
KToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXIt
Y29udGFpbmVyKToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVt
ZS1zbGlkZXIpOgorICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1l
LXNsaWRlcik6CisgICAgICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2Ny
ZWVuLWJ1dHRvbi1kaXZpZGVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2Ny
ZWVuLWJ1dHRvbi1kaXZpZGVyKToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLWZ1bGxzY3JlZW4tYnV0dG9uLWNvbnRhaW5lciwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtcGxheS1idXR0b24tY29udGFpbmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1mdWxsc2NyZWVuLWJ1dHRvbi1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lcik6CisgICAgICAgICogY3NzL21lZGlhQ29udHJvbHNC
bGFja0JlcnJ5RnVsbHNjcmVlbi5jc3M6IEFkZGVkLgorICAgICAgICAoYm9keTotd2Via2l0LWZ1
bGwtcGFnZS1tZWRpYSk6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tcGFuZWwpOgorICAgICAgICAodmlkZW86LXdl
YmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCk6CisgICAgICAg
ICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWJ1dHRv
bi1ncm91cC1jb250YWluZXIpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtZGlzcGxheS1jb250YWluZXIp
OgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy10aW1lLWRpc3BsYXktY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVs
bC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbik6
CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXBsYXktYnV0dG9uKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZS1jb250YWluZXIpOgorICAg
ICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10
aW1lbGluZS1jb250YWluZXIpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWN1cnJlbnQtdGltZS1kaXNwbGF5KToK
KyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtY3VycmVudC10aW1lLWRpc3BsYXkpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNj
cmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtcmVtYWluaW5nLWRp
c3BsYXkpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy10aW1lLXJlbWFpbmluZy1kaXNwbGF5KToKKyAgICAgICAgKHZpZGVvOi13ZWJr
aXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGlu
ZSk6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXRpbWVsaW5lKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1mdWxsc2NyZWVuLWJ1dHRvbik6CisgICAg
ICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1
bGxzY3JlZW4tYnV0dG9uKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0b24pOgorICAgICAgICAodmlkZW86LXdlYmtp
dC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRh
aW5lcik6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXZvbHVtZS1zbGlkZXIpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNj
cmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1kaXZpZGVyKToK
KyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtZnVsbHNjcmVlbi1idXR0b24tY29udGFpbmVyLCB2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVu
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lcik6CisgICAgICAg
ICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxz
Y3JlZW4tYnV0dG9uLWNvbnRhaW5lcik6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2Ny
ZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lcik6CisgICAg
ICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBs
YWNlaG9sZGVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlw
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudFR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xD
bG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpyZWJ1
aWxkVHJhY2tMaXN0TWVudSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJh
Y2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVTdWJ0cmVlcyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVw
ZGF0ZVNpemVzKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEJ1dHRvbkdy
b3VwQ29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xCdXR0
b25Hcm91cENvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6
TWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6
c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVl
blBhbmVsRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBhbmVsRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGFuZWxFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBhbmVsRWxlbWVudDo6
c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVl
blBhbmVsRWxlbWVudDo6c3RhcnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5QYW5lbEVsZW1lbnQ6OmNvbnRpbnVlRHJhZyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGFuZWxFbGVtZW50OjplbmREcmFnKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QYW5lbEVsZW1lbnQ6OnN0YXJ0VGltZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBhbmVsRWxlbWVudDo6
c3RvcFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QYW5l
bEVsZW1lbnQ6OnRyYW5zaXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5QYW5lbEVsZW1lbnQ6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QYW5lbEVsZW1lbnQ6OnJlc2V0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBhbmVsRWxlbWVudDo6
bWFrZU9wYXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGFu
ZWxFbGVtZW50OjptYWtlVHJhbnNwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sRnVsbHNjcmVlblBhbmVsRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGFuZWxFbGVtZW50OjpzZXRDYW5CZURy
YWdnZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBhbmVsRWxl
bWVudDo6c2V0SXNEaXNwbGF5ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVs
bHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVl
blRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVy
RWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5C
dXR0b25Db250YWluZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1Bz
ZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25E
aXZpZGVyRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVy
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5CdXR0b25EaXZpZGVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBs
YXlCdXR0b25Db250YWluZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6TWVkaWFD
b250cm9sUGxhY2Vob2xkZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0
dG9uRWxlbWVudDo6dXBkYXRlRGlzcGxheVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1l
bnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1l
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVs
bHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVs
bHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OnNldElzRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50OjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250
YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGlt
ZWxpbmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lbGluZUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OndpbGxSZXNw
b25kVG9Nb3VzZUNsaWNrRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OnNo
YWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6
OnNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sRnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6
TWVkaWFDb250cm9sc0JsYWNrQmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
czo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojpj
cmVhdGVDb250cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eTo6c2V0TWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNC
bGFja0JlcnJ5OjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0Jl
cnJ5OjpoaWRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojpt
YWtlT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojpt
YWtlVHJhbnNwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0JsYWNrQmVy
cnk6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojpi
dWZmZXJpbmdQcm9ncmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFj
a0JlcnJ5OjpwbGF5YmFja1N0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
c0JsYWNrQmVycnk6OnBsYXliYWNrUHJvZ3Jlc3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xzQmxhY2tCZXJyeTo6cGxheWJhY2tTdG9wcGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojp1cGRhdGVDdXJyZW50VGltZURpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnJlcG9ydGVkRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0JsYWNrQmVycnk6OmNoYW5nZWRNdXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjplbnRlcmVkRnVsbHNj
cmVlbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6ZXhpdGVk
RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6
c2hvd1ZvbHVtZVNsaWRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tC
ZXJyeTo6dG9nZ2xlVm9sdW1lU2xpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNCbGFja0JlcnJ5OjpzaG91bGRIaWRlQ29udHJvbHMpOgorICAgICAgICAqIGh0bWwvc2hhZG93
L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQpOgorICAgICAg
ICAoTWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5QYW5lbEVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9s
RnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250
cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sUGxh
Y2Vob2xkZXJFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0
dG9uRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1
dHRvbkVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29u
dGFpbmVyRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVF
bGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlz
cGxheUVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sRnVsbHNjcmVlbkN1cnJlbnRUaW1l
RGlzcGxheUVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sc0JsYWNrQmVycnkpOgorICAg
ICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lRnVsbFNjcmVlbk11
bHRpcGxpZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpleHRy
YUZ1bGxTY3JlZW5TdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxh
Y2tCZXJyeTo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0
b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RTbGlk
ZXJUaHVtYlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5Ojpw
YWludFNsaWRlclRyYWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNr
QmVycnk6OmFkanVzdE1lZGlhQ29udHJvbFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0U2xpZGVyVHJhY2tTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFSZXdpbmRCdXR0b24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhTXV0ZUJ1dHRv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFG
dWxsc2NyZWVuQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJy
eTo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
QmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVZvbHVtZVNsaWRl
clRodW1iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tC
ZXJyeS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5Ojp1c2VzVmVy
dGljYWxWb2x1bWVTbGlkZXIpOgorICAgICAgICAoUmVuZGVyVGhlbWVCbGFja0JlcnJ5KToKKwog
MjAxMi0xMi0xMSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBkaWdpYS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBRdCBidWlsZCBmaXg6IERvbid0IGVycm9yIG91dCBpZiBTUUxJ
VEUzU1JDRElSIGlzbid0IHNldCBidXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtQmxhY2tCZXJyeS5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5j
bWFrZQppbmRleCBjYjllOWFlM2IyMzViNTMyNjVhNTlmODA1YWZkZDQ5ODNkMGM5YTkzLi44Mzhm
NmQ3NzJkNGU3NGYwNjM3OTM0Nzg3NDA4MWI2YmEzYjczNjdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC0zLDYgKzMsMTAgQEAgbGlzdChJTlNFUlQgV2ViQ29y
ZV9JTkNMVURFX0RJUkVDVE9SSUVTIDAKICAgICAiJHtCTEFDS0JFUlJZX1RISVJEX1BBUlRZX0RJ
Un0vaWN1IgogKQogCitsaXN0KFJFTU9WRV9JVEVNIFdlYkNvcmVfU09VUkNFUworICAgIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKKykKKwogbGlzdChBUFBFTkQgV2ViQ29yZV9J
TkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2NwcCIKICAg
ICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVEYXRhYmFzZUJhY2tp
bmdTdG9yZSIKQEAgLTEwNSw2ICsxMDksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
IAogbGlzdChBUFBFTkQgV2ViQ29yZV9VU0VSX0FHRU5UX1NUWUxFX1NIRUVUUwogICAgICR7V0VC
Q09SRV9ESVJ9L2Nzcy9tZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5jc3MKKyAgICAke1dFQkNPUkVf
RElSfS9jc3MvbWVkaWFDb250cm9sc0JsYWNrQmVycnlGdWxsc2NyZWVuLmNzcwogICAgICR7V0VC
Q09SRV9ESVJ9L2Nzcy90aGVtZUJsYWNrQmVycnkuY3NzCiApCiAKQEAgLTEzMSw2ICsxMzYsNyBA
QCBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgIGVkaXRpbmcvYmxhY2tiZXJyeS9FZGl0b3JCbGFja0JlcnJ5LmNw
cAogICAgIGVkaXRpbmcvYmxhY2tiZXJyeS9TbWFydFJlcGxhY2VCbGFja0JlcnJ5LmNwcAorICAg
IGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcAogICAgIGxvYWRlci9ibGFj
a2JlcnJ5L0Nvb2tpZUphckJsYWNrQmVycnkuY3BwCiAgICAgcGFnZS9ibGFja2JlcnJ5L0FjY2Vz
c2liaWxpdHlPYmplY3RCbGFja0JlcnJ5LmNwcAogICAgIHBhZ2UvYmxhY2tiZXJyeS9EcmFnQ29u
dHJvbGxlckJsYWNrQmVycnkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVk
aWFDb250cm9sc0JsYWNrQmVycnkuY3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJv
bHNCbGFja0JlcnJ5LmNzcwppbmRleCA0YzAwYTcyNWNkNWEwMTNlOTk4YjIzZmI0Yjc2NDM5YThh
Nzg4NDUxLi4zOGVlZjYzNWQ5ZTZhNDBlYzZlYTJlNTQxYWY1OGRjNzk1NjBjODUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3NzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5jc3MKQEAgLTI4LDQz
ICsyOCw3MSBAQAogIC8qIEJsYWNrQmVycnkgZGVmYXVsdCBtZWRpYSBjb250cm9scy4gKi8KIAog
YXVkaW8geworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCAwLCAwKTsKICAgICB3aWR0aDog
MzAwcHg7CiAgICAgaGVpZ2h0OiAzMnB4OwogfQogCi1hdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1wYW5lbCwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwgeworYXVkaW86
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZW1iZWRkZWQtcGFuZWwsIHZpZGVvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWVtYmVkZGVkLXBhbmVsIHsKICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsK
ICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAgLXdlYmtpdC1ib3gtYWxp
Z246IGNlbnRlcjsKLSAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKICAgICBib3R0b206IDA7CiAgICAgd2lkdGg6IDEwMCU7Ci0gICAgei1pbmRl
eDogMDsKLSAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICBoZWlnaHQ6IGF1dG87Ci0gICAgdGV4
dC1hbGlnbjogY2VudGVyOwotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC42
KTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7CiB9CiAKLXZpZGVvOi13ZWJr
aXQtZnVsbC1wYWdlLW1lZGlhOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIHsKLSAgICBi
b3R0b206IDBweDsKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsLCB2aWRlbzo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCB7CisgICAgZGlzcGxheTogbm9uZTsKIH0KIAot
YXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24sIHZpZGVvOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uIHsKLSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1l
ZGlhLXBsYXktYnV0dG9uOwotICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwordmlkZW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtYnV0dG9uLWdyb3VwLWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtYnV0dG9uLWdyb3VwLWNvbnRhaW5lciB7CisgICAgZGlzcGxheTogbm9u
ZTsKIH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVy
LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZS1jb250YWluZXIgewordmlk
ZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lLWRpc3BsYXktY29udGFp
bmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtZGlzcGxh
eS1jb250YWluZXIgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIgewogICAgIC13ZWJraXQtYXBwZWFyYW5j
ZTogbWVkaWEtY29udHJvbHMtYmFja2dyb3VuZDsKICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsK
ICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAgLXdlYmtpdC1ib3gtYWxp
Z246IGNlbnRlcjsKLSAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CisgICAgLXdlYmtpdC1ib3gt
cGFjazoganVzdGlmeTsKKyAgICAtd2Via2l0LWJveC1mbGV4OiAxOworICAgIGJhY2tncm91bmQt
Y29sb3I6IHJnYigwLCAwLCAwKTsKK30KKwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
ZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbiwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVs
bHNjcmVlbi1wbGF5LWJ1dHRvbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24sIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXBsYXktYnV0dG9uIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLXBsYXkt
YnV0dG9uOworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworfQorCithdWRpbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWVsaW5lLWNvbnRhaW5lciwgdmlkZW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZS1jb250YWluZXIgeworICAgIGRp
c3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5l
LWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFp
bmVyIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLWNvbnRyb2xzLWJhY2tncm91bmQ7
CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0
aWNhbDsKKyAgICAtd2Via2l0LWJveC1hbGlnbjogc3RyZXRjaDsKKyAgICAtd2Via2l0LWJveC1w
YWNrOiBjZW50ZXI7CiAgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKLSAgICAtd2Via2l0LXVzZXIt
c2VsZWN0OiBub25lOwogICAgIGhlaWdodDogYXV0bzsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBi
YWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7Cit9CisKK2F1ZGlvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10aW1lLWRpc3BsYXksIHZpZGVvOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10aW1lLWRpc3BsYXkgeworICAgIGRp
c3BsYXk6IG5vbmU7CiB9CiAKIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWN1cnJlbnQt
dGltZS1kaXNwbGF5LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUt
ZGlzcGxheSB7CkBAIC03NCwxOSArMTAyLDI3IEBAIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLWN1cnJlbnQtdGltZS1kaXNwbGF5LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9sCiAg
ICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7
CiAgICAgLXdlYmtpdC1ib3gtZmxleDogMDsKLSAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25l
OwotICAgIGNvbG9yOiB3aGl0ZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7
CisgICAgY29sb3I6ICNmYWZhZmE7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LWZ1bGxzY3JlZW4tdGltZS1yZW1haW5pbmctZGlzcGxheSwgYXVkaW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtZnVsbHNjcmVlbi10aW1lLXJlbWFpbmluZy1kaXNwbGF5IHsKKyAgICBkaXNwbGF5
OiBub25lOwogfQogCi1hdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmlu
Zy1kaXNwbGF5LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmluZy1k
aXNwbGF5IHsKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRp
c3BsYXksIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3Bs
YXkgewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtdGltZS1yZW1haW5pbmctZGlzcGxh
eTsKICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhv
cml6b250YWw7CiAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgICAtd2Via2l0LWJv
eC1wYWNrOiBlbmQ7CiAgICAgLXdlYmtpdC1ib3gtZmxleDogMDsKLSAgICAtd2Via2l0LXVzZXIt
c2VsZWN0OiBub25lOwotICAgIGNvbG9yOiB3aGl0ZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2IoMCwgMCwgMCk7CisgICAgY29sb3I6ICNmYWZhZmE7Cit9CisKK2F1ZGlvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUgeworICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKIGF1
ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLCB2aWRlbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy10aW1lbGluZSB7CkBAIC05NSw0MSArMTMxLDYzIEBAIGF1ZGlvOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10
aW1lbGluZSB7CiAgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKIH0KIAotYXVkaW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24sIHZpZGVvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uIHsKLSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlh
LWZ1bGxzY3JlZW4tYnV0dG9uOwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNj
cmVlbi1mdWxsc2NyZWVuLWJ1dHRvbiwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVs
bHNjcmVlbi1mdWxsc2NyZWVuLWJ1dHRvbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlk
ZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24geworICAgIC13ZWJr
aXQtYXBwZWFyYW5jZTogbWVkaWEtZW50ZXItZnVsbHNjcmVlbi1idXR0b247CiAgICAgZGlzcGxh
eTogLXdlYmtpdC1ib3g7CiB9CiAKLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUt
YnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1tdXRlLWJ1dHRvbiB7CithdWRp
bzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbiB7CisgICAgZGlzcGxh
eTogbm9uZTsKK30KKworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0b24g
ewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtbXV0ZS1idXR0b247CiAgICAgZGlzcGxh
eTogLXdlYmtpdC1ib3g7CiB9CiAKLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVt
ZS1zbGlkZXItY29udGFpbmVyLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUt
c2xpZGVyLWNvbnRhaW5lciB7Cit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1tdXRlLWJ1
dHRvbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtdm9sdW1lLXNsaWRlci1jb250YWluZXIgewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTog
bWVkaWEtdm9sdW1lLXNsaWRlci1jb250YWluZXI7CiAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7
Ci0gICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOworICAgIC13ZWJraXQtYm94LW9y
aWVudDogdmVydGljYWw7CiAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgICAtd2Vi
a2l0LWJveC1wYWNrOiBlbmQ7CiAgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKICAgICAtd2Via2l0
LXVzZXItc2VsZWN0OiBub25lOwogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAw
cHg7CiAgICAgcmlnaHQ6IDBweDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAs
IDAuNik7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMCwwKTsKIH0KIAotYXVkaW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlciwgdmlkZW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtdm9sdW1lLXNsaWRlciB7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS12
b2x1bWUtc2xpZGVyOwotICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwotICAgIC13ZWJraXQtYm94
LWZsZXg6IDE7Cit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNv
bnRhaW5lciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworYXVkaW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtdm9sdW1lLXNsaWRlciB7CisgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEt
dm9sdW1lLXNsaWRlcjsKKyAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgIC13ZWJraXQt
Ym94LWZsZXg6IDE7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDMlOworICAg
IHJpZ2h0OiAzJTsKK30KKwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNs
aWRlciB7CisgICAgZGlzcGxheTogbm9uZTsKIH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtc2Vlay1iYWNrLWJ1dHRvbiwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtc2Vl
ay1iYWNrLWJ1dHRvbiB7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1zZWVrLWJhY2st
YnV0dG9uOwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24t
ZGl2aWRlciwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24t
ZGl2aWRlciB7CiAgICAgZGlzcGxheTogbm9uZTsKIH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtc2Vlay1mb3J3YXJkLWJ1dHRvbiwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtc2Vlay1mb3J3YXJkLWJ1dHRvbiB7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1z
ZWVrLWZvcndhcmQtYnV0dG9uOwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNj
cmVlbi1idXR0b24tY29udGFpbmVyLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5
LWJ1dHRvbi1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3Jl
ZW4tYnV0dG9uLWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1i
dXR0b24tY29udGFpbmVyIHsKICAgICBkaXNwbGF5OiBub25lOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHNCbGFja0JlcnJ5RnVsbHNjcmVlbi5jc3MgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9sc0JsYWNrQmVycnlGdWxsc2NyZWVuLmNzcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MDQxMjM3YTgxOGM0MTc1ZWY3ZmUyMTkzNDA2MzkxMjlhMDFmOGM2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHNCbGFja0JlcnJ5
RnVsbHNjcmVlbi5jc3MKQEAgLTAsMCArMSwxODggQEAKKy8qCisgKiBCbGFja0JlcnJ5IHNwZWNp
ZmljIG92ZXJyaWRlcyBmb3IgSFRNTDUgbWVkaWEgZWxlbWVudHMuCisgKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyAvKiBCbGFja0JlcnJ5IGZ1bGxzY3JlZW4gdmlkZW8gY29udHJvbHMuICovCisKK2Jv
ZHk6LXdlYmtpdC1mdWxsLXBhZ2UtbWVkaWEgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigw
LCAwLCAwKTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1lbWJlZGRlZC1wYW5lbCB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86
LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCB7CisgICAg
ZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsK
KyAgICAtd2Via2l0LWJveC1hbGlnbjogc3RyZXRjaDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgYm90dG9tOiAwcHg7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiBhdXRvOwor
ICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzgsIDM4LCAzOCwgMC41KTsKK30KKwordmlkZW86
LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAt
Y29udGFpbmVyIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLWNvbnRyb2xzLWJhY2tn
cm91bmQ7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50
OiBob3Jpem9udGFsOworICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CisgICAgLXdlYmtp
dC1ib3gtcGFjazoganVzdGlmeTsKKyAgICAtd2Via2l0LWJveC1mbGV4OiAxOworICAgIGJhY2tn
cm91bmQtY29sb3I6IHJnYigwLCAwLCAwKTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVl
bjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtZGlzcGxheS1jb250YWlu
ZXIgeworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtY29udHJvbHMtYmFja2dyb3VuZDsK
KyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6
b250YWw7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKKyAgICAtd2Via2l0LWJveC1w
YWNrOiBqdXN0aWZ5OworICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogcmdiYSgzOCwgMzgsIDM4LCAwLjUpOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2Ny
ZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIgeworICAg
IGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbiB7CisgICAgLXdlYmtpdC1hcHBl
YXJhbmNlOiBtZWRpYS1wbGF5LWJ1dHRvbjsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKK30K
KwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5
LWJ1dHRvbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNj
cmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWVsaW5lLWNvbnRhaW5l
ciB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1jb250cm9scy1iYWNrZ3JvdW5kOwor
ICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGlj
YWw7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0cmV0Y2g7CisgICAgLXdlYmtpdC1ib3gtcGFj
azogY2VudGVyOworICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CisgICAgaGVpZ2h0OiBhdXRvOwor
ICAgIHdpZHRoOiAxMDAlOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzgsIDM4LCAzOCwg
MC41KTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy10aW1lbGluZS1jb250YWluZXIgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVv
Oi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1j
dXJyZW50LXRpbWUtZGlzcGxheSB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1jdXJy
ZW50LXRpbWUtZGlzcGxheTsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0
LWJveC1vcmllbnQ6IGhvcml6b250YWw7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsK
KyAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CisgICAgLXdlYmtpdC1ib3gtZmxleDogMDsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM4LCAzOCwgMzgsIDAuNSk7CisgICAgY29sb3I6ICNm
YWZhZmE7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtY3VycmVudC10aW1lLWRpc3BsYXkgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3Zp
ZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVl
bi10aW1lLXJlbWFpbmluZy1kaXNwbGF5IHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlh
LXRpbWUtcmVtYWluaW5nLWRpc3BsYXk7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAg
LXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOworICAgIC13ZWJraXQtYm94LWFsaWduOiBj
ZW50ZXI7CisgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOworICAgIC13ZWJraXQtYm94LWZsZXg6
IDA7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzOCwgMzgsIDM4LCAwLjUpOworICAgIGNv
bG9yOiAjZmFmYWZhOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkgeworICAgIGRpc3BsYXk6IG5vbmU7
Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
ZnVsbHNjcmVlbi10aW1lbGluZSB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1zbGlk
ZXI7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtZmxleDogMTsK
K30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10
aW1lbGluZSB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNj
cmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9u
IHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLWV4aXQtZnVsbHNjcmVlbi1idXR0b247
CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3Jl
ZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24geworICAgIGRpc3Bs
YXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtbXV0ZS1idXR0b24geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13
ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlci1j
b250YWluZXIgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1z
Y3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlciB7CisgICAgZGlzcGxh
eTogbm9uZTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1kaXZpZGVyIHsKKyAgICAtd2Via2l0LWFwcGVhcmFu
Y2U6IG1lZGlhLXJld2luZC1idXR0b247CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Cit9CisK
K3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNj
cmVlbi1idXR0b24tY29udGFpbmVyLCB2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lciB7CisgICAgLXdlYmtpdC1hcHBl
YXJhbmNlOiBtZWRpYS1jb250cm9scy1iYWNrZ3JvdW5kOworICAgIGRpc3BsYXk6IC13ZWJraXQt
Ym94OworICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKKyAgICAtd2Via2l0LWJv
eC1hbGlnbjogY2VudGVyOworICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CisgICAgbWluLXdpZHRo
OiAxMDAlOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCAwLCAwKTsKK30KKwordmlkZW86
LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1
dHRvbi1jb250YWluZXIgeworICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0OworfQorCit2aWRl
bzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9u
LWNvbnRhaW5lciB7CisgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOworfQorCit2aWRlbzot
d2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYWNlaG9sZGVyIHsK
KyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLWNvbnRyb2xzLWJhY2tncm91bmQ7CisgICAg
ZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKKyAgICBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7CisgICAgbWluLXdpZHRoOiAxMDAlOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5
cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRU
eXBlcy5jcHAKaW5kZXggN2MxMjBjMjFhMzhhMzkxOTZlODQ3NDNlNDViMDM5Y2Y4Y2FmZjBmYi4u
ZWZjMzg1NDRjZGJiNzkxNjMzOWQzZmU5ODYzOTgyZWFmNjk5ZWI1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3Bw
CkBAIC03NCw2ICs3NCw3IEBAIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIG1lZGlhQ29udHJvbEVs
ZW1lbnRUeXBlKE5vZGUqIG5vZGUpCiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaWYg
IVBMQVRGT1JNKEJMQUNLQkVSUlkpCiBjb25zdCBBdG9taWNTdHJpbmcmIHRyYWNrSW5kZXhBdHRy
aWJ1dGVOYW1lKCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFt
ZSwgKCJ4LXdlYmtpdC10cmFjay1pbmRleCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKQEAgLTkyLDYgKzkzLDcgQEAgaW50IHRyYWNrTGlzdEluZGV4Rm9yRWxlbWVudChF
bGVtZW50KiBlbGVtZW50KQogICAgIHJldHVybiB0cmFja0luZGV4OwogfQogI2VuZGlmCisjZW5k
aWYKIAogTWVkaWFDb250cm9sRWxlbWVudDo6TWVkaWFDb250cm9sRWxlbWVudChNZWRpYUNvbnRy
b2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSwgSFRNTEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgOiBt
X21lZGlhQ29udHJvbGxlcigwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaAppbmRleCA5MWIwYzhhMzUxZWEwMmJiNjFkM2Y1
NzAxYTZkNDczODgwNWZhNjQzLi42YTMyZGI0NTdkMzExYzZjZTgzMWQwN2VkODhhZGFhMzhkZGUz
YTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50VHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xFbGVtZW50VHlwZXMuaApAQCAtODAsOSArODAsMTEgQEAgaW5saW5lIEhUTUxNZWRpYUVsZW1l
bnQqIHRvUGFyZW50TWVkaWFFbGVtZW50KFJlbmRlck9iamVjdCogcmVuZGVyZXIpIHsgcmV0dXJu
IHQKIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIG1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKE5vZGUq
KTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkK
IGNvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJbmRleEF0dHJpYnV0ZU5hbWUoKTsKIGludCB0cmFj
a0xpc3RJbmRleEZvckVsZW1lbnQoRWxlbWVudCopOwogI2VuZGlmCisjZW5kaWYKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggOGI4ZTczZjExZDgxMDgxZjk2
YWVmOWRiZDVjYThiMGU2NmMyNjMwMi4uNmRiZGI1MzUxYzljOGE2MDk1ZjdkZjYyODc2ZDkzZGIy
Y2I0MDVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcApAQCAtNDI5LDYgKzQyOSwxNSBAQCBQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVs
ZW1lbgogCiB2b2lkIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogeworI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCisg
ICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KSB7Cisg
ICAgICAgIC8vIFdlIGRvIG5vdCBtdXRlIHdoZW4gdGhlIG1lZGlhIHBsYXllciB2b2x1bWUvbXV0
ZSBjb250cm9sIGlzIHRvdWNoZWQKKyAgICAgICAgLy8gb24gUGxheWJvb2suIEluc3RlYWQgd2Ug
c2hvdy9oaWRlIHRoZSB2b2x1bWUgc2xpZGVyLgorICAgICAgICBtX2NvbnRyb2xzLT50b2dnbGVW
b2x1bWVTbGlkZXIoKTsKKyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkubW91c2VvdmVyRXZlbnQpCiAgICAgICAgIG1fY29udHJvbHMtPnNob3dWb2x1bWVT
bGlkZXIoKTsKIApAQCAtNzIzLDcgKzczMiw2IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFD
b250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpCiB9
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQogTWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNr
TGlzdEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250cm9scykK
ICAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhQ2xvc2VkQ2FwdGlv
bnNUcmFja0xpc3QpCiAgICAgLCBtX2NvbnRyb2xzKGNvbnRyb2xzKQpAQCAtNzQwLDYgKzc0OCw3
IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50
PiBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uCiAKIHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2Fw
dGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkK
IHsKKyNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAg
ICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAg
ICAgLy8gRklYTUU6IEFkZCBtb2RpZmllciBrZXkgZm9yIGV4Y2x1c2l2aXR5IG92ZXJyaWRlLgpA
QCAtNzcxLDYgKzc4MCw3IEBAIHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xp
c3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVuCiAKICAgICBNZWRpYUNv
bnRyb2xEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKICNlbmRpZgorI2Vu
ZGlmIC8vICFQTEFURk9STShCTEFDS0JFUlJZKQogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1l
ZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6c2hhZG93UHNldWRvSWQo
KSBjb25zdApAQCAtNzgxLDYgKzc5MSw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250
cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpCiAKIHZv
aWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50Ojp1cGRhdGVEaXNw
bGF5KCkKIHsKKyNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNlbGVjdGVkQ2xhc3NW
YWx1ZSwgKCJzZWxlY3RlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
IApAQCAtODIxLDEwICs4MzIsMTIgQEAgdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1Ry
YWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQogICAgICAgICB9CiAgICAgfQogI2VuZGlm
CisjZW5kaWYgLy8gIVBMQVRGT1JNKEJMQUNLQkVSUlkpCiB9CiAKIHZvaWQgTWVkaWFDb250cm9s
Q2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpyZWJ1aWxkVHJhY2tMaXN0TWVudSgpCiB7
CisjaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAg
IC8vIFJlbW92ZSBhbnkgZXhpc3RpbmcgY29udGVudC4KICAgICByZW1vdmVDaGlsZHJlbigpOwpA
QCAtOTEzLDYgKzkyNiw3IEBAIHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xp
c3RFbGVtZW50OjpyZWJ1aWxkVHJhY2tMaXN0TWVudSgpCiAKICAgICB1cGRhdGVEaXNwbGF5KCk7
CiAjZW5kaWYKKyNlbmRpZiAvLyAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKIH0KIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTE5NSwxMCArMTIwOSwxMiBAQCBNZWRpYUNvbnRy
b2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWlu
ZXJFbGVtZW50KERvYwogICAgIAogdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJF
bGVtZW50OjpjcmVhdGVTdWJ0cmVlcyhEb2N1bWVudCogZG9jdW1lbnQpCiB7CisjaWYgIVBMQVRG
T1JNKEJMQUNLQkVSUlkpCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIGN1ZSwgKCJjdWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAg
ICAgbV9jdWVDb250YWluZXIgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKHNwYW5UYWcsIGRvY3VtZW50
KTsKICAgICBtX2N1ZUNvbnRhaW5lci0+c2V0UHNldWRvKGN1ZSk7CiAgICAgYXBwZW5kQ2hpbGQo
bV9jdWVDb250YWluZXIsIEFTU0VSVF9OT19FWENFUFRJT04sIGZhbHNlKTsKKyNlbmRpZgogfQog
CiBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ+IE1lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1l
bnQpCkBAIC0xMjIxLDYgKzEyMzcsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29ucwogCiB2b2lk
IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQog
eworI2lmICFQTEFURk9STShCTEFDS0JFUlJZKQogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlh
RWxlbWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50KHRoaXMpOwogCiAgICAgLy8gMS4gSWYgdGhl
IG1lZGlhIGVsZW1lbnQgaXMgYW4gYXVkaW8gZWxlbWVudCwgb3IgaXMgYW5vdGhlciBwbGF5YmFj
awpAQCAtMTI4MywxMCArMTMwMCwxMiBAQCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQogCiAgICAgLy8gMTEuIFJldHVybiBvdXRwdXQu
CiAgICAgaGFzQ2hpbGROb2RlcygpID8gc2hvdygpIDogaGlkZSgpOworI2VuZGlmIC8vICFQTEFU
Rk9STShCTEFDS0JFUlJZKQogfQogCiB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5l
ckVsZW1lbnQ6OnVwZGF0ZVNpemVzKCkKIHsKKyNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKICAg
ICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0b1BhcmVudE1lZGlhRWxlbWVudCh0
aGlzKTsKICAgICBpZiAoIW1lZGlhRWxlbWVudCB8fCAhbWVkaWFFbGVtZW50LT5yZW5kZXJlcigp
IHx8ICFtZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCktPmlzVmlkZW8oKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTMwMSw2ICsxMzIwLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWlu
ZXJFbGVtZW50Ojp1cGRhdGVTaXplcygpCiAgICAgICAgIG1fZm9udFNpemUgPSBmb250U2l6ZTsK
ICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBTdHJp
bmc6Om51bWJlcihmb250U2l6ZSkgKyAicHgiKTsKICAgICB9CisjZW5kaWYgLy8gIVBMQVRGT1JN
KEJMQUNLQkVSUlkpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgKaW5kZXggZmE1ZDBiZDAwZDM2ZTgw
OWIwOGU1NzczNTA0MjBlY2E4MmQ2MjJjOC4uZDRiYTAxZGI4MDU2ZDJkMGRhMTQwOWM0MDJlYTI4
NWJiZTZhZWIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9scy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMu
aApAQCAtODMsNiArODMsOSBAQCBjbGFzcyBNZWRpYUNvbnRyb2xzIDogcHVibGljIEhUTUxEaXZF
bGVtZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3RhdHVzRGlzcGxheSgpIHsgfTsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCk7CiAgICAgdmlydHVhbCB2
b2lkIHNob3dWb2x1bWVTbGlkZXIoKTsKKyNpZiBQTEFURk9STShCTEFDS0JFUlJZKQorICAgIHZp
cnR1YWwgdm9pZCB0b2dnbGVWb2x1bWVTbGlkZXIoKSB7IH07CisjZW5kaWYKIAogICAgIHZpcnR1
YWwgdm9pZCBjaGFuZ2VkTXV0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VkVm9sdW1lKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDg5NzViNzdiZmUxNDJkZGFmOGU4MTQ4NDU1NzRkMTVl
MzBkNzA4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDEwODEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIk1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Lmgi
CisKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKKyNpbmNs
dWRlICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkhU
TUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJNZWRp
YUNvbnRyb2xFbGVtZW50cy5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQ
YWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgiCisjaW5jbHVk
ZSAiUmVuZGVyU2xpZGVyLmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKKyNpbmNsdWRlICJT
ZXR0aW5ncy5oIgorI2luY2x1ZGUgIlRleHQuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykK
KyNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2Ugc3Rk
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisK
K3N0YXRpYyBjb25zdCBkb3VibGUgdGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5n
Q29udHJvbHMgPSAzOworCitpbmxpbmUgTWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJF
bGVtZW50OjpNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQq
IGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFD
b250cm9sc1BhbmVsKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEJ1dHRvbkdyb3Vw
Q29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50
OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xC
dXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFD
b250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgcmV0dXJu
IGVsZW1lbnQucmVsZWFzZSgpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJv
bEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlh
LWNvbnRyb2xzLWJ1dHRvbi1ncm91cC1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlkOworfQorCitpbmxpbmUgTWVkaWFDb250cm9s
VGltZURpc3BsYXlDb250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRh
aW5lckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxl
bWVudChkb2N1bWVudCwgTWVkaWFDb250cm9sc1BhbmVsKQoreworfQorCitQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sVGltZURp
c3BsYXlDb250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAg
IFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQg
PSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50KGRv
Y3VtZW50KSk7CisgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgpOworfQorCitjb25zdCBBdG9t
aWNTdHJpbmcmIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6c2hhZG93
UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlkOworfQor
CitNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6TWVkaWFDb250cm9sRW1iZWRkZWRQ
YW5lbEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxl
bWVudChkb2N1bWVudCwgTWVkaWFDb250cm9sc1BhbmVsKQorICAgICwgbV9jYW5CZURyYWdnZWQo
ZmFsc2UpCisgICAgLCBtX2lzQmVpbmdEcmFnZ2VkKGZhbHNlKQorICAgICwgbV9pc0Rpc3BsYXll
ZChmYWxzZSkKKyAgICAsIG1fb3BhcXVlKHRydWUpCisgICAgLCBtX3RyYW5zaXRpb25UaW1lcih0
aGlzLCAmTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnRyYW5zaXRpb25UaW1lckZp
cmVkKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50
PiBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEVtYmVkZGVkUGFu
ZWxFbGVtZW50KGRvY3VtZW50KSk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250
cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250
cm9scy1lbWJlZGRlZC1wYW5lbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVs
ZW1lbnQ6OnN0YXJ0RHJhZyhjb25zdCBMYXlvdXRQb2ludCYgZXZlbnRMb2NhdGlvbikKK3sKKyAg
ICBpZiAoIW1fY2FuQmVEcmFnZ2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9pc0Jl
aW5nRHJhZ2dlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlz
Qm94KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkt
PmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sYXN0
RHJhZ0V2ZW50TG9jYXRpb24gPSBldmVudExvY2F0aW9uOworCisgICAgZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUodGhpcyk7CisKKyAgICBtX2lzQmVp
bmdEcmFnZ2VkID0gdHJ1ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxl
bWVudDo6Y29udGludWVEcmFnKGNvbnN0IExheW91dFBvaW50JiBldmVudExvY2F0aW9uKQorewor
ICAgIGlmICghbV9pc0JlaW5nRHJhZ2dlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTGF5b3V0
U2l6ZSBkaXN0YW5jZURyYWdnZWQgPSBldmVudExvY2F0aW9uIC0gbV9sYXN0RHJhZ0V2ZW50TG9j
YXRpb247CisgICAgbV9jdW11bGF0aXZlRHJhZ09mZnNldC5tb3ZlKGRpc3RhbmNlRHJhZ2dlZCk7
CisgICAgbV9sYXN0RHJhZ0V2ZW50TG9jYXRpb24gPSBldmVudExvY2F0aW9uOworICAgIHNldFBv
c2l0aW9uKG1fY3VtdWxhdGl2ZURyYWdPZmZzZXQpOworfQorCit2b2lkIE1lZGlhQ29udHJvbEVt
YmVkZGVkUGFuZWxFbGVtZW50OjplbmREcmFnKCkKK3sKKyAgICBpZiAoIW1faXNCZWluZ0RyYWdn
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNCZWluZ0RyYWdnZWQgPSBmYWxzZTsKKwor
ICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJp
bmdNb3VzZUV2ZW50c05vZGUoMCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5l
bEVsZW1lbnQ6OnN0YXJ0VGltZXIoKQoreworICAgIHN0b3BUaW1lcigpOworCisgICAgLy8gVGhl
IHRpbWVyIGlzIHJlcXVpcmVkIHRvIHNldCB0aGUgcHJvcGVydHkgZGlzcGxheTonbm9uZScgb24g
dGhlIHBhbmVsLAorICAgIC8vIHN1Y2ggdGhhdCBjYXB0aW9ucyBhcmUgY29ycmVjdGx5IGRpc3Bs
YXllZCBhdCB0aGUgYm90dG9tIG9mIHRoZSB2aWRlbworICAgIC8vIGF0IHRoZSBlbmQgb2YgdGhl
IGZhZGVvdXQgdHJhbnNpdGlvbi4KKyAgICBkb3VibGUgZHVyYXRpb24gPSBkb2N1bWVudCgpLT5w
YWdlKCkgPyBkb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCktPm1lZGlhQ29udHJvbHNGYWRlT3V0
RHVyYXRpb24oKSA6IDA7CisgICAgbV90cmFuc2l0aW9uVGltZXIuc3RhcnRPbmVTaG90KGR1cmF0
aW9uKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6c3RvcFRp
bWVyKCkKK3sKKyAgICBpZiAobV90cmFuc2l0aW9uVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAg
bV90cmFuc2l0aW9uVGltZXIuc3RvcCgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVk
UGFuZWxFbGVtZW50Ojp0cmFuc2l0aW9uVGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xFbWJl
ZGRlZFBhbmVsRWxlbWVudD4qKQoreworICAgIGlmICghbV9vcGFxdWUpCisgICAgICAgIGhpZGUo
KTsKKworICAgIHN0b3BUaW1lcigpOworfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFu
ZWxFbGVtZW50OjpzZXRQb3NpdGlvbihjb25zdCBMYXlvdXRQb2ludCYgcG9zaXRpb24pCit7Cisg
ICAgZG91YmxlIGxlZnQgPSBwb3NpdGlvbi54KCk7CisgICAgZG91YmxlIHRvcCA9IHBvc2l0aW9u
LnkoKTsKKworICAgIC8vIFNldCB0aGUgbGVmdCBhbmQgdG9wIHRvIGNvbnRyb2wgdGhlIHBhbmVs
J3MgcG9zaXRpb247IHRoaXMgZGVwZW5kcyBvbiBpdCBiZWluZyBhYnNvbHV0ZSBwb3NpdGlvbmVk
LgorICAgIC8vIFNldCB0aGUgbWFyZ2luIHRvIHplcm8gc2luY2UgdGhlIHBvc2l0aW9uIHBhc3Nl
ZCBpbiB3aWxsIGFscmVhZHkgaW5jbHVkZSB0aGUgZWZmZWN0IG9mIHRoZSBtYXJnaW4uCisgICAg
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIGxlZnQsIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUFgpOworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlU
b3AsIHRvcCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgc2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIDAuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QWCk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblRvcCwg
MC4wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgaWdu
b3JlZDsKKyAgICBjbGFzc0xpc3QoKS0+YWRkKCJkcmFnZ2VkIiwgaWdub3JlZCk7Cit9CisKK3Zv
aWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnJlc2V0UG9zaXRpb24oKQorewor
ICAgIHJlbW92ZUlubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0KTsKKyAgICByZW1v
dmVJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wKTsKKyAgICByZW1vdmVJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luTGVmdCk7CisgICAgcmVtb3ZlSW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblRvcCk7CisKKyAgICBFeGNlcHRpb25Db2RlIGln
bm9yZWQ7CisgICAgY2xhc3NMaXN0KCktPnJlbW92ZSgiZHJhZ2dlZCIsIGlnbm9yZWQpOworCisg
ICAgbV9jdW11bGF0aXZlRHJhZ09mZnNldC5zZXRYKDApOworICAgIG1fY3VtdWxhdGl2ZURyYWdP
ZmZzZXQuc2V0WSgwKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVu
dDo6bWFrZU9wYXF1ZSgpCit7CisgICAgaWYgKG1fb3BhcXVlKQorICAgICAgICByZXR1cm47CisK
KyAgICBkb3VibGUgZHVyYXRpb24gPSBkb2N1bWVudCgpLT5wYWdlKCkgPyBkb2N1bWVudCgpLT5w
YWdlKCktPnRoZW1lKCktPm1lZGlhQ29udHJvbHNGYWRlSW5EdXJhdGlvbigpIDogMDsKKworICAg
IHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVy
dHksIENTU1Byb3BlcnR5T3BhY2l0eSk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiwgZHVyYXRpb24sIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUyk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNp
dHksIDEuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworCisgICAgbV9vcGFxdWUg
PSB0cnVlOworCisgICAgaWYgKG1faXNEaXNwbGF5ZWQpCisgICAgICAgIHNob3coKTsKK30KKwor
dm9pZCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6bWFrZVRyYW5zcGFyZW50KCkK
K3sKKyAgICBpZiAoIW1fb3BhcXVlKQorICAgICAgICByZXR1cm47CisKKyAgICBkb3VibGUgZHVy
YXRpb24gPSBkb2N1bWVudCgpLT5wYWdlKCkgPyBkb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkt
Pm1lZGlhQ29udHJvbHNGYWRlT3V0RHVyYXRpb24oKSA6IDA7CisKKyAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCBDU1NQcm9wZXJ0
eU9wYWNpdHkpOworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2l0aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpOwor
ICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5LCAwLjAsIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKworICAgIG1fb3BhcXVlID0gZmFsc2U7CisgICAg
c3RhcnRUaW1lcigpOworfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3sKKyAgICBNZWRpYUNvbnRyb2xE
aXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKKworICAgIGlmIChldmVudC0+
aXNNb3VzZUV2ZW50KCkpIHsKKyAgICAgICAgTGF5b3V0UG9pbnQgbG9jYXRpb24gPSBzdGF0aWNf
Y2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5hYnNvbHV0ZUxvY2F0aW9uKCk7CisgICAgICAgIGlm
IChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiBldmVudC0+
dGFyZ2V0KCkgPT0gdGhpcykgeworICAgICAgICAgICAgc3RhcnREcmFnKGxvY2F0aW9uKTsKKyAg
ICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgICAgICB9IGVsc2UgaWYg
KGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50ICYmIG1faXNCZWlu
Z0RyYWdnZWQpCisgICAgICAgICAgICBjb250aW51ZURyYWcobG9jYXRpb24pOworICAgICAgICBl
bHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQgJiYgbV9p
c0JlaW5nRHJhZ2dlZCkgeworICAgICAgICAgICAgY29udGludWVEcmFnKGxvY2F0aW9uKTsKKyAg
ICAgICAgICAgIGVuZERyYWcoKTsKKyAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFu
ZWxFbGVtZW50OjpzZXRDYW5CZURyYWdnZWQoYm9vbCBjYW5CZURyYWdnZWQpCit7CisgICAgaWYg
KG1fY2FuQmVEcmFnZ2VkID09IGNhbkJlRHJhZ2dlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9jYW5CZURyYWdnZWQgPSBjYW5CZURyYWdnZWQ7CisKKyAgICBpZiAoIWNhbkJlRHJhZ2dlZCkK
KyAgICAgICAgZW5kRHJhZygpOworfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxF
bGVtZW50OjpzZXRJc0Rpc3BsYXllZChib29sIGlzRGlzcGxheWVkKQoreworICAgIG1faXNEaXNw
bGF5ZWQgPSBpc0Rpc3BsYXllZDsKK30KKworaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlz
cGxheUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250
cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFDb250cm9sc1BhbmVsKQoreworfQorCitQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ+
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0
ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVk
aWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudChkb2N1bWVudCkp
OworICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lLWRpc3BsYXkt
Y29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJl
dHVybiBpZDsKK30KKworaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWlu
ZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudChE
b2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50
LCBNZWRpYUNvbnRyb2xzUGFuZWwpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVs
bHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0
b25Db250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudD4gZWxlbWVu
dCA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxl
bWVudChkb2N1bWVudCkpOworICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKK30KKworY29u
c3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxl
bWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0
dG9uLWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICByZXR1cm4gaWQ7Cit9CisKK2lubGluZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2
aWRlckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudChE
b2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50
LCBNZWRpYVJld2luZEJ1dHRvbikKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25E
aXZpZGVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBSZWZQdHI8
TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50PiBlbGVtZW50ID0gYWRv
cHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudChkb2N1
bWVudCkpOworICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKK30KKworY29uc3QgQXRvbWlj
U3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQ6OnNoYWRv
d1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1kaXZpZGVy
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsK
K30KKworaW5saW5lIE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50OjpNZWRp
YUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisg
ICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwp
Cit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1l
bnQ+IE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFp
bmVyRWxlbWVudD4gZWxlbWVudCA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xQbGF5QnV0dG9u
Q29udGFpbmVyRWxlbWVudChkb2N1bWVudCkpOworICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2Uo
KTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFp
bmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0
dG9uLWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICByZXR1cm4gaWQ7Cit9CisKK2lubGluZSBNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6
Ok1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAg
OiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwpCit7
Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50PiBNZWRpYUNv
bnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7Cisg
ICAgUmVmUHRyPE1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudD4gZWxlbWVudCA9IGFkb3B0
UmVmKG5ldyBNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQoZG9jdW1lbnQpKTsKKyAgICBy
ZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFD
b250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtcGxhY2Vob2xkZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgcmV0dXJuIGlkOworfQorCitpbmxpbmUgTWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlC
dXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50
LCBNZWRpYVBsYXlCdXR0b24pCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNj
cmVlblBsYXlCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudChkb2N1bWVudCkpOworICAgIGJ1
dHRvbi0+Y3JlYXRlU2hhZG93U3VidHJlZSgpOworICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0dG9u
Iik7CisgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9s
RnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBl
dmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVu
dCkgeworICAgICAgICBpZiAobWVkaWFDb250cm9sbGVyKCktPmNhblBsYXkoKSkKKyAgICAgICAg
ICAgIG1lZGlhQ29udHJvbGxlcigpLT5wbGF5KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1lZGlhQ29udHJvbGxlcigpLT5wYXVzZSgpOworICAgICAgICB1cGRhdGVEaXNwbGF5VHlwZSgp
OworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICB9CisgICAgSFRNTElu
cHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Cit9CisKK3ZvaWQgTWVkaWFD
b250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50Ojp1cGRhdGVEaXNwbGF5VHlwZSgpCit7
CisgICAgc2V0RGlzcGxheVR5cGUobWVkaWFDb250cm9sbGVyKCktPmNhblBsYXkoKSA/IE1lZGlh
UGxheUJ1dHRvbiA6IE1lZGlhUGF1c2VCdXR0b24pOworfQorCitjb25zdCBBdG9taWNTdHJpbmcm
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQo
KSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCIt
d2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tcGxheS1idXR0b24iLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlkOworfQorCitpbmxpbmUg
TWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQor
ICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50LCBNZWRpYUV4aXRGdWxsc2Ny
ZWVuQnV0dG9uKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxs
c2NyZWVuQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0
b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0
UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoZG9j
dW1lbnQpKTsKKyAgICBidXR0b24tPmNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKKyAgICBidXR0b24t
PnNldFR5cGUoImJ1dHRvbiIpOworICAgIGJ1dHRvbi0+aGlkZSgpOworICAgIHJldHVybiBidXR0
b24ucmVsZWFzZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVu
QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit7CisgICAg
aWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCisgICAgICAgIC8vIE9ubHkgdXNlIHRoZSBuZXcgZnVsbCBzY3Jl
ZW4gQVBJIGlmIHRoZSBmdWxsU2NyZWVuRW5hYmxlZCBzZXR0aW5nIGhhcyAKKyAgICAgICAgLy8g
YmVlbiBleHBsaWNpdGx5IGVuYWJsZWQuIE90aGVyd2lzZSwgdXNlIHRoZSBvbGQgZnVsbHNjcmVl
biBBUEkuIFRoaXMKKyAgICAgICAgLy8gYWxsb3dzIGFwcHMgd2hpY2ggZW1iZWQgYSBXZWJWaWV3
IHRvIHJldGFpbiB0aGUgZXhpc3RpbmcgZnVsbCBzY3JlZW4KKyAgICAgICAgLy8gdmlkZW8gaW1w
bGVtZW50YXRpb24gd2l0aG91dCByZXF1aXJpbmcgdGhlbSB0byBpbXBsZW1lbnQgdGhlaXIgb3du
IGZ1bGwgCisgICAgICAgIC8vIHNjcmVlbiBiZWhhdmlvci4KKyAgICAgICAgaWYgKGRvY3VtZW50
KCktPnNldHRpbmdzKCkgJiYgZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJs
ZWQoKSkgeworICAgICAgICAgICAgaWYgKGRvY3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigp
ICYmIGRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpID09IHRvUGFy
ZW50TWVkaWFFbGVtZW50KHRoaXMpKQorICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPndlYmtp
dENhbmNlbEZ1bGxTY3JlZW4oKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBk
b2N1bWVudCgpLT5yZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnQodG9QYXJlbnRNZWRpYUVsZW1l
bnQodGhpcyksIDAsIERvY3VtZW50OjpFeGVtcHRJRnJhbWVBbGxvd0Z1bGxTY3JlZW5SZXF1aXJl
bWVudCk7CisgICAgICAgIH0gZWxzZQorI2VuZGlmCisgICAgICAgICAgICBtZWRpYUNvbnRyb2xs
ZXIoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOworICAgIH0KKyAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2
ZW50KTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVs
bHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9s
cy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OnNldElzRnVsbHNjcmVlbihib29sIGlzRnVs
bHNjcmVlbikKK3sKKyAgICBzZXREaXNwbGF5VHlwZShNZWRpYUV4aXRGdWxsc2NyZWVuQnV0dG9u
KTsKK30KKworaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVs
ZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwg
TWVkaWFUaW1lbGluZUNvbnRhaW5lcikKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
VGltZWxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQorewor
ICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50
PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNv
bnRhaW5lckVsZW1lbnQoZG9jdW1lbnQpKTsKKyAgICBlbGVtZW50LT5oaWRlKCk7CisgICAgcmV0
dXJuIGVsZW1lbnQucmVsZWFzZSgpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkg
Y29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdl
YmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWVsaW5lLWNvbnRhaW5lciIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK01l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5UaW1lbGluZUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250
cm9scykKKyAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgTWVkaWFTbGlk
ZXIpCisgICAgLCBtX2NvbnRyb2xzKGNvbnRyb2xzKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lbGluZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbHMq
IGNvbnRyb2xzKQoreworICAgIEFTU0VSVChjb250cm9scyk7CisKKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudD4gdGltZWxpbmUgPSBhZG9wdFJlZihuZXcg
TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudChkb2N1bWVudCwgY29udHJvbHMp
KTsKKyAgICB0aW1lbGluZS0+Y3JlYXRlU2hhZG93U3VidHJlZSgpOworICAgIHRpbWVsaW5lLT5z
ZXRUeXBlKCJyYW5nZSIpOworICAgIHRpbWVsaW5lLT5zZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0
ciwgImZsb2F0Iik7CisgICAgcmV0dXJuIHRpbWVsaW5lLnJlbGVhc2UoKTsKK30KKwordm9pZCBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50KiBldmVudCkKK3sKKyAgICAvLyBMZWZ0IGJ1dHRvbiBpcyAwLiBSZWplY3RzIG1vdXNl
IGV2ZW50cyBub3QgZnJvbSBsZWZ0IGJ1dHRvbi4KKyAgICBpZiAoZXZlbnQtPmlzTW91c2VFdmVu
dCgpICYmIHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCktPmJ1dHRvbigpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoIWF0dGFjaGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCkKKyAgICAg
ICAgbWVkaWFDb250cm9sbGVyKCktPmJlZ2luU2NydWJiaW5nKCk7CisKKyAgICBpZiAoZXZlbnQt
PnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KQorICAgICAgICBtZWRpYUNvbnRy
b2xsZXIoKS0+ZW5kU2NydWJiaW5nKCk7CisKKyAgICBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLm1vdXNlb3V0RXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vt
b3ZlRXZlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IHRpbWUgPSBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KHZhbHVlKCkudG9Eb3VibGUoKSk7CisgICAgaWYgKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmlucHV0RXZlbnQgJiYgdGltZSAhPSBtZWRpYUNvbnRyb2xsZXIoKS0+
Y3VycmVudFRpbWUoKSkgeworICAgICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAgICBtZWRp
YUNvbnRyb2xsZXIoKS0+c2V0Q3VycmVudFRpbWUodGltZSwgZWMpOworICAgIH0KKworICAgIFJl
bmRlclNsaWRlciogc2xpZGVyID0gdG9SZW5kZXJTbGlkZXIocmVuZGVyZXIoKSk7CisgICAgaWYg
KHNsaWRlciAmJiBzbGlkZXItPmluRHJhZ01vZGUoKSkKKyAgICAgICAgbV9jb250cm9scy0+dXBk
YXRlQ3VycmVudFRpbWVEaXNwbGF5KCk7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sRnVsbHNjcmVl
blRpbWVsaW5lRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQoreworICAg
IGlmICghYXR0YWNoZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6c2V0
UG9zaXRpb24oZmxvYXQgY3VycmVudFRpbWUpCit7CisgICAgc2V0VmFsdWUoU3RyaW5nOjpudW1i
ZXIoY3VycmVudFRpbWUpKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxp
bmVFbGVtZW50OjpzZXREdXJhdGlvbihmbG9hdCBkdXJhdGlvbikKK3sKKyAgICBzZXRBdHRyaWJ1
dGUobWF4QXR0ciwgU3RyaW5nOjpudW1iZXIoaXNmaW5pdGUoZHVyYXRpb24pID8gZHVyYXRpb24g
OiAwKSk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlblRp
bWVsaW5lRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxz
Y3JlZW4tdGltZWxpbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgcmV0dXJuIGlkOworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1l
UmVtYWluaW5nRGlzcGxheUVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWlu
aW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3Bs
YXlFbGVtZW50KGRvY3VtZW50KSk7Cit9CisKK01lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVt
YWluaW5nRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5n
RGlzcGxheUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sVGlt
ZURpc3BsYXlFbGVtZW50KGRvY3VtZW50LCBNZWRpYVRpbWVSZW1haW5pbmdEaXNwbGF5KQorewor
fQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWlu
aW5nRGlzcGxheUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1m
dWxsc2NyZWVuLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlkOworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJy
ZW50VGltZURpc3BsYXlFbGVtZW50KGRvY3VtZW50KSk7Cit9CisKK01lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3Vy
cmVudFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNv
bnRyb2xUaW1lRGlzcGxheUVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhQ3VycmVudFRpbWVEaXNwbGF5
KQoreworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJy
ZW50VGltZURpc3BsYXlFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJv
bHMtZnVsbHNjcmVlbi1jdXJyZW50LXRpbWUtZGlzcGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK01lZGlhQ29udHJvbHNCbGFj
a0JlcnJ5OjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeShEb2N1bWVudCogZG9jdW1lbnQpCisgICAg
OiBNZWRpYUNvbnRyb2xzKGRvY3VtZW50KQorICAgICwgbV9idXR0b25Db250YWluZXIoMCkKKyAg
ICAsIG1fdGltZURpc3BsYXlDb250YWluZXIoMCkKKyAgICAsIG1fZnVsbHNjcmVlblRpbWVEaXNw
bGF5Q29udGFpbmVyKDApCisgICAgLCBtX2Z1bGxzY3JlZW5QbGF5QnV0dG9uKDApCisgICAgLCBt
X2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXkoMCkKKyAgICAsIG1fZnVsbHNjcmVlblRpbWVs
aW5lKDApCisgICAgLCBtX3RpbWVSZW1haW5pbmdEaXNwbGF5KDApCisgICAgLCBtX2Z1bGxzY3Jl
ZW5UaW1lUmVtYWluaW5nRGlzcGxheSgwKQorICAgICwgbV90aW1lbGluZUNvbnRhaW5lcigwKQor
ICAgICwgbV9mdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXIoMCkKKyAgICAsIG1fZnVsbFNjcmVl
bkRpdmlkZXIoMCkKKyAgICAsIG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24oMCkKKyAgICAs
IG1fbXV0ZUJ1dHRvbigwKQorICAgICwgbV92b2x1bWVTbGlkZXJDb250YWluZXIoMCkKKyAgICAs
IG1fZW1iZWRkZWRQYW5lbCgwKQorICAgICwgbV9mdWxsU2NyZWVuQnV0dG9uQ29udGFpbmVyKDAp
CisgICAgLCBtX3BsYXlCdXR0b25Db250YWluZXIoMCkKKyAgICAsIG1fcGxhY2Vob2xkZXIoMCkK
K3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzPiBNZWRpYUNvbnRyb2xzOjpjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIHJldHVybiBNZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eTo6Y3JlYXRlQ29udHJvbHMoZG9jdW1lbnQpOworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJv
bHNCbGFja0JlcnJ5PiBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6Y3JlYXRlQ29udHJvbHMoRG9j
dW1lbnQqIGRvY3VtZW50KQoreworICAgIGlmICghZG9jdW1lbnQtPnBhZ2UoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sc0JsYWNrQmVycnk+IGNvbnRyb2xz
ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5KGRvY3VtZW50KSk7CisKKyAg
ICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxFbGVtZW50PiBwYW5lbCA9IE1lZGlhQ29udHJvbFBh
bmVsRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRW1i
ZWRkZWRQYW5lbEVsZW1lbnQ+IGVtYmVkUGFuZWwgPSBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVs
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisKKyAg
ICBSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ+IHBsYXlCdXR0b24gPSBNZWRp
YUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9s
cy0+bV9wbGF5QnV0dG9uID0gcGxheUJ1dHRvbi5nZXQoKTsKKyAgICBlbWJlZFBhbmVsLT5hcHBl
bmRDaGlsZChwbGF5QnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVDb250YWlu
ZXJFbGVtZW50PiB0aW1lbGluZUNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFp
bmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xU
aW1lbGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQsIGNvbnRyb2xzLmdldCgpKTsKKyAgICBjb250cm9scy0+bV90aW1lbGlu
ZSA9IHRpbWVsaW5lLmdldCgpOworICAgIHRpbWVsaW5lQ29udGFpbmVyLT5hcHBlbmRDaGlsZCh0
aW1lbGluZS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVy
biAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVu
dD4gdGltZURpc3BsYXlDb250YWluZXIgPSBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5l
ckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sQ3Vy
cmVudFRpbWVEaXNwbGF5RWxlbWVudD4gY3VycmVudFRpbWVEaXNwbGF5ID0gTWVkaWFDb250cm9s
Q3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9s
cy0+bV9jdXJyZW50VGltZURpc3BsYXkgPSBjdXJyZW50VGltZURpc3BsYXkuZ2V0KCk7CisgICAg
dGltZURpc3BsYXlDb250YWluZXItPmFwcGVuZENoaWxkKGN1cnJlbnRUaW1lRGlzcGxheS5yZWxl
YXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAg
UmVmUHRyPE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudD4gdGltZVJlbWFp
bmluZ0Rpc3BsYXkgPSBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCk7CisgICAgY29udHJvbHMtPm1fdGltZVJlbWFpbmluZ0Rpc3BsYXkgPSB0
aW1lUmVtYWluaW5nRGlzcGxheS5nZXQoKTsKKyAgICB0aW1lRGlzcGxheUNvbnRhaW5lci0+YXBw
ZW5kQ2hpbGQodGltZVJlbWFpbmluZ0Rpc3BsYXkucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAg
aWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnRyb2xzLT5tX3RpbWVEaXNwbGF5
Q29udGFpbmVyID0gdGltZURpc3BsYXlDb250YWluZXIuZ2V0KCk7CisgICAgdGltZWxpbmVDb250
YWluZXItPmFwcGVuZENoaWxkKHRpbWVEaXNwbGF5Q29udGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRy
dWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb250cm9scy0+bV90
aW1lbGluZUNvbnRhaW5lciA9IHRpbWVsaW5lQ29udGFpbmVyLmdldCgpOworICAgIGVtYmVkUGFu
ZWwtPmFwcGVuZENoaWxkKHRpbWVsaW5lQ29udGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOwor
ICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGZ1bGxTY3JlZW5CdXR0b24gPSBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+
bV9mdWxsU2NyZWVuQnV0dG9uID0gZnVsbFNjcmVlbkJ1dHRvbi5nZXQoKTsKKyAgICBlbWJlZFBh
bmVsLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwor
ICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoZG9jdW1lbnQtPnBhZ2Uo
KS0+dGhlbWUoKS0+dXNlc01lZGlhQ29udHJvbFZvbHVtZVNsaWRlcigpKSB7CisgICAgICAgIC8v
IFRoZSBtdXRlIGJ1dHRvbiBhbmQgdGhlIHNsaWRlciBlbGVtZW50IHNob3VsZCBiZSBpbiB0aGUg
c2FtZSBkaXYuCisgICAgICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gdm9sdW1lQ29udHJvbENv
bnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworCisgICAgICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiB2b2x1bWVTbGlk
ZXJDb250YWluZXIgPSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOworCisgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbFZvbHVt
ZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICAgICAgY29udHJvbHMtPm1fdm9sdW1lU2xpZGVy
ID0gc2xpZGVyLmdldCgpOworICAgICAgICB2b2x1bWVTbGlkZXJDb250YWluZXItPmFwcGVuZENo
aWxkKHNsaWRlci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICAgICAgaWYgKGVjKQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY29udHJvbHMtPm1fdm9sdW1lU2xpZGVyQ29udGFp
bmVyID0gdm9sdW1lU2xpZGVyQ29udGFpbmVyLmdldCgpOworICAgICAgICB2b2x1bWVDb250cm9s
Q29udGFpbmVyLT5hcHBlbmRDaGlsZCh2b2x1bWVTbGlkZXJDb250YWluZXIucmVsZWFzZSgpLCBl
YywgdHJ1ZSk7CisgICAgICAgIGlmIChlYykKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudD4gbXV0ZUJ1dHRvbiA9
IE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgY29u
dHJvbHMuZ2V0KCkpOworICAgICAgICBjb250cm9scy0+bV9tdXRlQnV0dG9uID0gbXV0ZUJ1dHRv
bi5nZXQoKTsKKyAgICAgICAgdm9sdW1lQ29udHJvbENvbnRhaW5lci0+YXBwZW5kQ2hpbGQobXV0
ZUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICAgICAgZW1iZWRQYW5lbC0+YXBwZW5kQ2hpbGQodm9sdW1lQ29u
dHJvbENvbnRhaW5lci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICAgICAgaWYgKGVjKQorICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IGZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5l
ciA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0
ZShkb2N1bWVudCk7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5l
RWxlbWVudD4gZnVsbHNjcmVlblRpbWVsaW5lID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVs
aW5lRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBjb250cm9scy5nZXQoKSk7CisgICAgY29udHJv
bHMtPm1fZnVsbHNjcmVlblRpbWVsaW5lID0gZnVsbHNjcmVlblRpbWVsaW5lLmdldCgpOworICAg
IGZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoZnVsbHNjcmVlblRpbWVs
aW5lLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVy
RWxlbWVudD4gZnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyID0gTWVkaWFDb250cm9sRnVs
bHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKwor
ICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVu
dD4gZnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheSA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5D
dXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIGNvbnRyb2xz
LT5tX2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXkgPSBmdWxsc2NyZWVuQ3VycmVudFRpbWVE
aXNwbGF5LmdldCgpOworICAgIGZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lci0+YXBwZW5k
Q2hpbGQoZnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheS5yZWxlYXNlKCksIGVjLCB0cnVlKTsK
KyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ+IGZ1bGxzY3JlZW5UaW1lUmVt
YWluaW5nRGlzcGxheSA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxh
eUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgY29udHJvbHMtPm1fZnVsbHNjcmVlblRp
bWVSZW1haW5pbmdEaXNwbGF5ID0gZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5LmdldCgp
OworICAgIGZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoZnVsbHNj
cmVlblRpbWVSZW1haW5pbmdEaXNwbGF5LnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChl
YykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb250cm9scy0+bV9mdWxsc2NyZWVuVGltZURp
c3BsYXlDb250YWluZXIgPSBmdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXIuZ2V0KCk7Cisg
ICAgZnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyLT5hcHBlbmRDaGlsZChmdWxsc2NyZWVuVGlt
ZURpc3BsYXlDb250YWluZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIGNvbnRyb2xzLT5tX2Z1bGxzY3JlZW5UaW1lbGluZUNvbnRh
aW5lciA9IGZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lci5nZXQoKTsKKyAgICBwYW5lbC0+YXBw
ZW5kQ2hpbGQoZnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUp
OworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250
cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50PiBidXR0b25Hcm91cENvbnRhaW5lciA9IE1l
ZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
KworICAgIC8vIEZJWE1FOiBPbmx5IGNyZWF0ZSB3aGVuIG5lZWRlZCA8aHR0cDovL3dlYmtpdC5v
cmcvYi81NzE2Mz4KKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkNvbnRh
aW5lckVsZW1lbnQ+IGZ1bGxTY3JlZW5CdXR0b25Db250YWluZXIgPSBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250
cm9scy0+bV9mdWxsU2NyZWVuQnV0dG9uQ29udGFpbmVyID0gZnVsbFNjcmVlbkJ1dHRvbkNvbnRh
aW5lci5nZXQoKTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5C
dXR0b25FbGVtZW50PiBmdWxsc2NyZWVuRnVsbFNjcmVlbkJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBj
b250cm9scy0+bV9mdWxsc2NyZWVuRnVsbFNjcmVlbkJ1dHRvbiA9IGZ1bGxzY3JlZW5GdWxsU2Ny
ZWVuQnV0dG9uLmdldCgpOworICAgIGZ1bGxTY3JlZW5CdXR0b25Db250YWluZXItPmFwcGVuZENo
aWxkKGZ1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAg
IGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudD4gZnVsbFNjcmVlbkRpdmlkZXIgPSBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAg
Y29udHJvbHMtPm1fZnVsbFNjcmVlbkRpdmlkZXIgPSBmdWxsU2NyZWVuRGl2aWRlci5nZXQoKTsK
KyAgICBmdWxsU2NyZWVuQnV0dG9uQ29udGFpbmVyLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuRGl2
aWRlci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAw
OworICAgIGJ1dHRvbkdyb3VwQ29udGFpbmVyLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuQnV0dG9u
Q29udGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1l
bnQ+IHBsYXlCdXR0b25Db250YWluZXIgPSBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVy
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9wbGF5QnV0dG9uQ29u
dGFpbmVyID0gcGxheUJ1dHRvbkNvbnRhaW5lci5nZXQoKTsKKyAgICBSZWZQdHI8TWVkaWFDb250
cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50PiBmdWxsc2NyZWVuUGxheUJ1dHRvbiA9IE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
KyAgICBjb250cm9scy0+bV9mdWxsc2NyZWVuUGxheUJ1dHRvbiA9IGZ1bGxzY3JlZW5QbGF5QnV0
dG9uLmdldCgpOworICAgIHBsYXlCdXR0b25Db250YWluZXItPmFwcGVuZENoaWxkKGZ1bGxzY3Jl
ZW5QbGF5QnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgYnV0dG9uR3JvdXBDb250YWluZXItPmFwcGVuZENoaWxkKHBsYXlCdXR0
b25Db250YWluZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ+IHBs
YWNlaG9sZGVyID0gTWVkaWFDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQpOworICAgIGNvbnRyb2xzLT5tX3BsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXIuZ2V0KCk7Cisg
ICAgYnV0dG9uR3JvdXBDb250YWluZXItPmFwcGVuZENoaWxkKHBsYWNlaG9sZGVyLnJlbGVhc2Uo
KSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb250
cm9scy0+bV9idXR0b25Db250YWluZXIgPSBidXR0b25Hcm91cENvbnRhaW5lci5nZXQoKTsKKyAg
ICBwYW5lbC0+YXBwZW5kQ2hpbGQoYnV0dG9uR3JvdXBDb250YWluZXIucmVsZWFzZSgpLCBlYywg
dHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChkb2N1bWVu
dC0+cGFnZSgpLT50aGVtZSgpLT5zdXBwb3J0c0Nsb3NlZENhcHRpb25pbmcoKSkgeworICAgICAg
ICBSZWZQdHI8TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiB0
b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA9IE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRp
b25zQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBjb250cm9scy5nZXQoKSk7CisgICAg
ICAgIGNvbnRyb2xzLT5tX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uID0gdG9nZ2xlQ2xvc2Vk
Q2FwdGlvbnNCdXR0b24uZ2V0KCk7CisgICAgICAgIHBhbmVsLT5hcHBlbmRDaGlsZCh0b2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICAgICAgaWYgKGVj
KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgY29udHJvbHMtPm1fcGFuZWwg
PSBwYW5lbC5nZXQoKTsKKyAgICBjb250cm9scy0+YXBwZW5kQ2hpbGQocGFuZWwucmVsZWFzZSgp
LCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnRy
b2xzLT5tX2VtYmVkZGVkUGFuZWwgPSBlbWJlZFBhbmVsLmdldCgpOworICAgIGNvbnRyb2xzLT5h
cHBlbmRDaGlsZChlbWJlZFBhbmVsLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gY29udHJvbHMucmVsZWFzZSgpOworfQor
Cit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlKiBjb250cm9sbGVyKQoreworICAgIGlmIChtX21lZGlhQ29udHJv
bGxlciA9PSBjb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBNZWRpYUNvbnRyb2xz
OjpzZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisKKyAgICBpZiAobV9idXR0b25Db250
YWluZXIpCisgICAgICAgIG1fYnV0dG9uQ29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29u
dHJvbGxlcik7CisgICAgaWYgKG1fdGltZURpc3BsYXlDb250YWluZXIpCisgICAgICAgIG1fdGlt
ZURpc3BsYXlDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBp
ZiAobV9mdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXIpCisgICAgICAgIG1fZnVsbHNjcmVl
blRpbWVEaXNwbGF5Q29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Cisg
ICAgaWYgKG1fZnVsbHNjcmVlblBsYXlCdXR0b24pCisgICAgICAgIG1fZnVsbHNjcmVlblBsYXlC
dXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsc2Ny
ZWVuQ3VycmVudFRpbWVEaXNwbGF5KQorICAgICAgICBtX2Z1bGxzY3JlZW5DdXJyZW50VGltZURp
c3BsYXktPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsc2Ny
ZWVuVGltZWxpbmUpCisgICAgICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lLT5zZXRNZWRpYUNvbnRy
b2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fdGltZVJlbWFpbmluZ0Rpc3BsYXkpCisgICAg
ICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVy
KTsKKyAgICBpZiAobV9mdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXkpCisgICAgICAgIG1f
ZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5LT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJv
bGxlcik7CisgICAgaWYgKG1fdGltZWxpbmVDb250YWluZXIpCisgICAgICAgIG1fdGltZWxpbmVD
b250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9mdWxs
c2NyZWVuVGltZWxpbmVDb250YWluZXIpCisgICAgICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lQ29u
dGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fZnVsbHNj
cmVlbkZ1bGxTY3JlZW5CdXR0b24pCisgICAgICAgIG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0
b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9tdXRlQnV0dG9u
KQorICAgICAgICBtX211dGVCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsK
KyAgICBpZiAobV92b2x1bWVTbGlkZXJDb250YWluZXIpCisgICAgICAgIG1fdm9sdW1lU2xpZGVy
Q29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fZW1i
ZWRkZWRQYW5lbCkKKyAgICAgICAgbV9lbWJlZGRlZFBhbmVsLT5zZXRNZWRpYUNvbnRyb2xsZXIo
Y29udHJvbGxlcik7CisgICAgcmVzZXQoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tC
ZXJyeTo6c2hvdygpCit7CisgICAgaWYgKG1faXNGdWxsc2NyZWVuKSB7CisgICAgICAgIG1fcGFu
ZWwtPnNldElzRGlzcGxheWVkKHRydWUpOworICAgICAgICBtX3BhbmVsLT5zaG93KCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgbV9lbWJlZGRlZFBhbmVsLT5zZXRJc0Rpc3BsYXllZCh0cnVlKTsK
KyAgICAgICAgbV9lbWJlZGRlZFBhbmVsLT5zaG93KCk7CisgICAgfQorfQorCit2b2lkIE1lZGlh
Q29udHJvbHNCbGFja0JlcnJ5OjpoaWRlKCkKK3sKKyAgICBpZiAobV9pc0Z1bGxzY3JlZW4pIHsK
KyAgICAgICAgbV9wYW5lbC0+c2V0SXNEaXNwbGF5ZWQoZmFsc2UpOworICAgICAgICBtX3BhbmVs
LT5oaWRlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9lbWJlZGRlZFBhbmVsLT5zZXRJc0Rp
c3BsYXllZChmYWxzZSk7CisgICAgICAgIG1fZW1iZWRkZWRQYW5lbC0+aGlkZSgpOworICAgICAg
ICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+aGlkZSgpOworICAgIH0KK30KKwordm9pZCBNZWRp
YUNvbnRyb2xzQmxhY2tCZXJyeTo6bWFrZU9wYXF1ZSgpCit7CisgICAgaWYgKG1faXNGdWxsc2Ny
ZWVuKQorICAgICAgICBtX3BhbmVsLT5tYWtlT3BhcXVlKCk7CisgICAgZWxzZQorICAgICAgICBt
X2VtYmVkZGVkUGFuZWwtPm1ha2VPcGFxdWUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeTo6bWFrZVRyYW5zcGFyZW50KCkKK3sKKyAgICBpZiAobV9pc0Z1bGxzY3JlZW4pCisg
ICAgICAgIG1fcGFuZWwtPm1ha2VUcmFuc3BhcmVudCgpOworICAgIGVsc2UgeworICAgICAgICBt
X2VtYmVkZGVkUGFuZWwtPm1ha2VUcmFuc3BhcmVudCgpOworICAgICAgICBtX3ZvbHVtZVNsaWRl
ckNvbnRhaW5lci0+aGlkZSgpOworICAgIH0KK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tC
ZXJyeTo6cmVzZXQoKQoreworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7Cisg
ICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVTdGF0dXNEaXNwbGF5
KCk7CisKKyAgICBpZiAobV9mdWxsU2NyZWVuQnV0dG9uKSB7CisgICAgICAgIGlmIChtX21lZGlh
Q29udHJvbGxlci0+c3VwcG9ydHNGdWxsc2NyZWVuKCkpCisgICAgICAgICAgICBtX2Z1bGxTY3Jl
ZW5CdXR0b24tPnNob3coKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9mdWxsU2NyZWVu
QnV0dG9uLT5oaWRlKCk7CisgICAgfQorICAgIGlmIChtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0
dG9uKSB7CisgICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+c3VwcG9ydHNGdWxsc2NyZWVu
KCkpCisgICAgICAgICAgICBtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLT5zaG93KCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24tPmhp
ZGUoKTsKKyAgICB9CisgICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+ZHVy
YXRpb24oKTsKKyAgICBpZiAoaXNmaW5pdGUoZHVyYXRpb24pIHx8IHBhZ2UtPnRoZW1lKCktPmhh
c093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBhcnQpKSB7CisgICAgICAg
IGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgICAgICBt
X3RpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CisgICAgICAgIG1fZnVsbHNjcmVlblRp
bWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CisgICAgICAgIG1fdGltZWxpbmVDb250YWlu
ZXItPnNob3coKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXItPnNob3co
KTsKKyAgICAgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKKyAgICAgICAgbV9mdWxs
c2NyZWVuVGltZWxpbmUtPnNldFBvc2l0aW9uKG5vdyk7CisgICAgICAgIHVwZGF0ZUN1cnJlbnRU
aW1lRGlzcGxheSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fdGltZWxpbmVDb250YWluZXIt
PmhpZGUoKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXItPmhpZGUoKTsK
KyAgICB9CisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPmhhc0F1ZGlvKCkgfHwgcGFnZS0+
dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBh
cnQpKQorICAgICAgICBtX211dGVCdXR0b24tPnNob3coKTsKKyAgICBlbHNlCisgICAgICAgIG1f
bXV0ZUJ1dHRvbi0+aGlkZSgpOworCisgICAgaWYgKG1fdm9sdW1lU2xpZGVyKQorICAgICAgICBt
X3ZvbHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7CisK
KyAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbikgeworICAgICAgICBpZiAobV9t
ZWRpYUNvbnRyb2xsZXItPmhhc0Nsb3NlZENhcHRpb25zKCkpCisgICAgICAgICAgICBtX3RvZ2ds
ZUNsb3NlZENhcHRpb25zQnV0dG9uLT5zaG93KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPmhpZGUoKTsKKyAgICB9CisKKyAgICBpZiAo
bV9wbGF5QnV0dG9uKQorICAgICAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7
CisKKyAgICBpZiAobV9mdWxsc2NyZWVuUGxheUJ1dHRvbikKKyAgICAgICAgbV9mdWxsc2NyZWVu
UGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKKworICAgIG1ha2VPcGFxdWUoKTsKK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6YnVmZmVyaW5nUHJvZ3Jlc3NlZCgpCit7
CisgICAgLy8gV2Ugb25seSBuZWVkIHRvIHVwZGF0ZSBidWZmZXJpbmcgcHJvZ3Jlc3Mgd2hlbiBw
YXVzZWQsIGR1cmluZyBub3JtYWwKKyAgICAvLyBwbGF5YmFjayBwbGF5YmFja1Byb2dyZXNzZWQo
KSB3aWxsIHRha2UgY2FyZSBvZiBpdC4KKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPnBhdXNl
ZCgpKSB7CisgICAgICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGlt
ZSgpOworICAgICAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOworICAgICAgICBtX2Z1
bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKKyAgICB9Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sc0JsYWNrQmVycnk6OnBsYXliYWNrU3RhcnRlZCgpCit7CisgICAgZmxvYXQgbm93
ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CisgICAgbV9wbGF5QnV0dG9uLT51
cGRhdGVEaXNwbGF5VHlwZSgpOworICAgIG1fZnVsbHNjcmVlblBsYXlCdXR0b24tPnVwZGF0ZURp
c3BsYXlUeXBlKCk7CisgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKKyAgICBtX2Z1
bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKKyAgICB1cGRhdGVDdXJyZW50VGlt
ZURpc3BsYXkoKTsKKworICAgIGlmIChtX2lzRnVsbHNjcmVlbikKKyAgICAgICAgc3RhcnRIaWRl
RnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tC
ZXJyeTo6cGxheWJhY2tQcm9ncmVzc2VkKCkKK3sKKyAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29u
dHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cp
OworICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOworICAgIHVwZGF0
ZUN1cnJlbnRUaW1lRGlzcGxheSgpOworICAgIAorICAgIGlmICghbV9pc01vdXNlT3ZlckNvbnRy
b2xzICYmIG1fbWVkaWFDb250cm9sbGVyLT5oYXNWaWRlbygpKQorICAgICAgICBtYWtlVHJhbnNw
YXJlbnQoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cGxheWJhY2tTdG9w
cGVkKCkKK3sKKyAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUo
KTsKKyAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CisgICAgbV9mdWxsc2Ny
ZWVuUGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKKyAgICBtX3RpbWVsaW5lLT5zZXRQ
b3NpdGlvbihub3cpOworICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cp
OworICAgIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpOworICAgIG1ha2VPcGFxdWUoKTsKKyAg
ICAKKyAgICBzdG9wSGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sc0JsYWNrQmVycnk6OnVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpCit7CisgICAg
ZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CisgICAgZmxvYXQg
ZHVyYXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24oKTsKKworICAgIFBhZ2UqIHBh
Z2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBBbGxvdyB0aGUgdGhlbWUgdG8gZm9ybWF0IHRoZSB0aW1lLgorICAgIEV4Y2Vw
dGlvbkNvZGUgZWM7CisgICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNldElubmVyVGV4dChwYWdl
LT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzQ3VycmVudFRpbWUobm93LCBkdXJhdGlvbiks
IGVjKTsKKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKG5vdyk7Cisg
ICAgbV9mdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhl
bWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc0N1cnJlbnRUaW1lKG5vdywgZHVyYXRpb24pLCBlYyk7
CisgICAgbV9mdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5LT5zZXRDdXJyZW50VmFsdWUobm93
KTsKKyAgICBtX3RpbWVSZW1haW5pbmdEaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUo
KS0+Zm9ybWF0TWVkaWFDb250cm9sc1JlbWFpbmluZ1RpbWUobm93LCBkdXJhdGlvbiksIGVjKTsK
KyAgICBtX3RpbWVSZW1haW5pbmdEaXNwbGF5LT5zZXRDdXJyZW50VmFsdWUobm93IC0gZHVyYXRp
b24pOworICAgIG1fZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5LT5zZXRJbm5lclRleHQo
cGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc1JlbWFpbmluZ1RpbWUobm93LCBkdXJh
dGlvbiksIGVjKTsKKyAgICBtX2Z1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheS0+c2V0Q3Vy
cmVudFZhbHVlKG5vdyAtIGR1cmF0aW9uKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tC
ZXJyeTo6cmVwb3J0ZWRFcnJvcigpCit7CisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBh
Z2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghcGFnZS0+
dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhU2xpZGVyUGFydCkp
IHsKKyAgICAgICAgbV90aW1lbGluZUNvbnRhaW5lci0+aGlkZSgpOworICAgICAgICBtX2Z1bGxz
Y3JlZW5UaW1lbGluZUNvbnRhaW5lci0+aGlkZSgpOworICAgIH0KKworICAgIGlmICghcGFnZS0+
dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBh
cnQpKQorICAgICAgICBtX211dGVCdXR0b24tPmhpZGUoKTsKKworICAgIGlmIChtX2Z1bGxTY3Jl
ZW5CdXR0b24pCisgICAgICAgIG1fZnVsbFNjcmVlbkJ1dHRvbi0+aGlkZSgpOworCisgICAgaWYg
KG1fZnVsbFNjcmVlbkRpdmlkZXIpCisgICAgICAgIG1fZnVsbFNjcmVlbkRpdmlkZXItPmhpZGUo
KTsKKworICAgIGlmIChtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uKQorICAgICAgICBtX2Z1
bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CisKKyAgICBpZiAobV92b2x1bWVTbGlk
ZXJDb250YWluZXIpCisgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5oaWRlKCk7CisK
KyAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiAmJiAhcGFnZS0+dGhlbWUoKS0+
aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNC
dXR0b25QYXJ0KSkKKyAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgp
OworfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpjaGFuZ2VkTXV0ZSgpCit7Cisg
ICAgbV9tdXRlQnV0dG9uLT5jaGFuZ2VkTXV0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNC
bGFja0JlcnJ5OjplbnRlcmVkRnVsbHNjcmVlbigpCit7CisgICAgTWVkaWFDb250cm9sczo6ZW50
ZXJlZEZ1bGxzY3JlZW4oKTsKKworICAgIG1fcGFuZWwtPnNldENhbkJlRHJhZ2dlZCh0cnVlKTsK
KyAgICBtX2VtYmVkZGVkUGFuZWwtPnNldENhbkJlRHJhZ2dlZCh0cnVlKTsKKworICAgIGlmICht
X2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uKQorICAgICAgICBtX2Z1bGxzY3JlZW5GdWxsU2Ny
ZWVuQnV0dG9uLT5zZXRJc0Z1bGxzY3JlZW4odHJ1ZSk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9s
c0JsYWNrQmVycnk6OmV4aXRlZEZ1bGxzY3JlZW4oKQoreworICAgIG1fcGFuZWwtPnNldENhbkJl
RHJhZ2dlZChmYWxzZSk7CisgICAgbV9lbWJlZGRlZFBhbmVsLT5zZXRDYW5CZURyYWdnZWQoZmFs
c2UpOworCisgICAgaWYgKG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24pCisgICAgICAgIG1f
ZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24tPnNldElzRnVsbHNjcmVlbihmYWxzZSk7CisKKyAg
ICAvLyBXZSB3aWxsIGtlZXAgdXNpbmcgdGhlIHBhbmVsLCBidXQgd2Ugd2FudCBpdCB0byBnbyBi
YWNrIHRvIHRoZSBzdGFuZGFyZCBwb3NpdGlvbi4KKyAgICAvLyBUaGlzIHdpbGwgbWF0dGVyIHJp
Z2h0IGF3YXkgYmVjYXVzZSB3ZSB1c2UgdGhlIHBhbmVsIGV2ZW4gd2hlbiBub3QgZnVsbHNjcmVl
bi4KKyAgICAvLyBBbmQgaWYgd2UgcmVlbnRlciBmdWxsc2NyZWVuIHdlIGFsc28gd2FudCB0aGUg
cGFuZWwgaW4gdGhlIHN0YW5kYXJkIHBvc2l0aW9uLgorICAgIG1fcGFuZWwtPnJlc2V0UG9zaXRp
b24oKTsKKyAgICBtX2VtYmVkZGVkUGFuZWwtPnJlc2V0UG9zaXRpb24oKTsKKworICAgIE1lZGlh
Q29udHJvbHM6OmV4aXRlZEZ1bGxzY3JlZW4oKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeTo6c2hvd1ZvbHVtZVNsaWRlcigpCit7CisgICAgaWYgKCFtX21lZGlhQ29udHJvbGxl
ci0+aGFzQXVkaW8oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fdm9sdW1lU2xpZGVy
Q29udGFpbmVyKQorICAgICAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+c2hvdygpOworfQor
Cit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojp0b2dnbGVWb2x1bWVTbGlkZXIoKQorewor
ICAgIGlmICghbV9tZWRpYUNvbnRyb2xsZXItPmhhc0F1ZGlvKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChtX3ZvbHVtZVNsaWRlckNvbnRhaW5lcikgeworICAgICAgICBpZiAobV92b2x1
bWVTbGlkZXJDb250YWluZXItPnJlbmRlcmVyKCkgJiYgbV92b2x1bWVTbGlkZXJDb250YWluZXIt
PnJlbmRlcmVyKCktPnZpc2libGVUb0hpdFRlc3RpbmcoKSkKKyAgICAgICAgICAgIG1fdm9sdW1l
U2xpZGVyQ29udGFpbmVyLT5oaWRlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fdm9s
dW1lU2xpZGVyQ29udGFpbmVyLT5zaG93KCk7CisgICAgfQorfQorCitib29sIE1lZGlhQ29udHJv
bHNCbGFja0JlcnJ5OjpzaG91bGRIaWRlQ29udHJvbHMoKQoreworICAgIGlmIChtX2lzRnVsbHNj
cmVlbikKKyAgICAgICAgcmV0dXJuICFtX3BhbmVsLT5ob3ZlcmVkKCk7CisgICAgcmV0dXJuICFt
X2VtYmVkZGVkUGFuZWwtPmhvdmVyZWQoKTsKK30KK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lNTI2OWYxZTYyZWQxMjE4NDU3NDcyOWNhZjBkNDE2ZGI3MjkxNzFhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVy
cnkuaApAQCAtMCwwICsxLDI4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5X2gKKyNkZWZpbmUg
TWVkaWFDb250cm9sc0JsYWNrQmVycnlfaAorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVk
ZSAiTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxl
bWVudHMuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xzLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7Citj
bGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3MgRXZlbnQ7CitjbGFzcyBNZWRpYVBsYXllcjsK
KworY2xhc3MgUmVuZGVyQm94OworY2xhc3MgUmVuZGVyTWVkaWE7CisKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCitjbGFzcyBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Owor
Y2xhc3MgTWVkaWFDb250cm9sVGV4dFRyYWNrRGlzcGxheUVsZW1lbnQ7CisjZW5kaWYKKworY2xh
c3MgTWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlh
Q29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisK
K3Byb3RlY3RlZDoKKyAgICBNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQo
RG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRv
SWQoKSBjb25zdCBPVkVSUklERTsKK307CisKK2NsYXNzIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5
Q29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5l
ckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworCitwcm90ZWN0ZWQ6CisgICAgTWVkaWFDb250
cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7Cit9Owor
CitjbGFzcyBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNv
bnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNv
bnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisKKyAgICB2b2lk
IHNldENhbkJlRHJhZ2dlZChib29sKTsKKyAgICB2b2lkIHNldElzRGlzcGxheWVkKGJvb2wpOwor
CisgICAgdm9pZCByZXNldFBvc2l0aW9uKCk7CisgICAgdm9pZCBtYWtlT3BhcXVlKCk7CisgICAg
dm9pZCBtYWtlVHJhbnNwYXJlbnQoKTsKKworICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRv
TW91c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRy
dWU7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVs
RWxlbWVudChEb2N1bWVudCopOworCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNo
YWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsKKworICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0
IExheW91dFBvaW50JiBldmVudExvY2F0aW9uKTsKKyAgICB2b2lkIGNvbnRpbnVlRHJhZyhjb25z
dCBMYXlvdXRQb2ludCYgZXZlbnRMb2NhdGlvbik7CisgICAgdm9pZCBlbmREcmFnKCk7CisKKyAg
ICB2b2lkIHN0YXJ0VGltZXIoKTsKKyAgICB2b2lkIHN0b3BUaW1lcigpOworICAgIHZvaWQgdHJh
bnNpdGlvblRpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ+
Kik7CisKKyAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IExheW91dFBvaW50Jik7CisKKyAgICBi
b29sIG1fY2FuQmVEcmFnZ2VkOworICAgIGJvb2wgbV9pc0JlaW5nRHJhZ2dlZDsKKyAgICBib29s
IG1faXNEaXNwbGF5ZWQ7CisgICAgYm9vbCBtX29wYXF1ZTsKKyAgICBMYXlvdXRQb2ludCBtX2xh
c3REcmFnRXZlbnRMb2NhdGlvbjsKKyAgICBMYXlvdXRQb2ludCBtX2N1bXVsYXRpdmVEcmFnT2Zm
c2V0OworCisgICAgVGltZXI8TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ+IG1fdHJh
bnNpdGlvblRpbWVyOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNw
bGF5Q29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZURp
c3BsYXlDb250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworcHJvdGVjdGVkOgor
ICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQoRG9j
dW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQo
KSBjb25zdCBPVkVSUklERTsKK307CisKK2NsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0
b25Db250YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25D
b250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCopOworICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJS
SURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVt
ZW50IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudD4g
Y3JlYXRlKERvY3VtZW50Kik7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVl
bkJ1dHRvbkRpdmlkZXJFbGVtZW50KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7Cit9OworCitjbGFzcyBN
ZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRy
b2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisKK3ByaXZh
dGU6CisgICAgTWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQq
KTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25z
dCBPVkVSUklERTsKK307CisKK2NsYXNzIE1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudCA6
IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCop
OworCitwcml2YXRlOgorICAgIE1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVu
dCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNv
bnN0IE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0
b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVt
ZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRv
TW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRGlzcGxheVR5cGUoKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIE9WRVJSSURFOwor
fTsKKworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50
IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50
PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91
c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIHNldElz
RnVsbHNjcmVlbihib29sKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
RnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIE9WRVJSSURFOworfTsKKworY2xhc3Mg
TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBN
ZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVD
b250YWluZXJFbGVtZW50KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7Cit9OworCitjbGFzcyBNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0
RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVs
bHNjcmVlblRpbWVsaW5lRWxlbWVudD4gY3JlYXRlKERvY3VtZW50KiwgTWVkaWFDb250cm9scyop
OworCisgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZF
UlJJREU7CisgICAgdm9pZCBzZXRQb3NpdGlvbihmbG9hdCk7CisgICAgdm9pZCBzZXREdXJhdGlv
bihmbG9hdCk7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5l
RWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbHMqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIE9WRVJSSURFOworCisgICAgTWVkaWFD
b250cm9scyogbV9jb250cm9sczsKK307CisKK2NsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sVGltZURpc3Bs
YXlFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsK
KworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3Bs
YXlFbGVtZW50KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNo
YWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xU
aW1lRGlzcGxheUVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBjcmVhdGUoRG9jdW1l
bnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVE
aXNwbGF5RWxlbWVudChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250
cm9sc0JsYWNrQmVycnkgOiBwdWJsaWMgTWVkaWFDb250cm9scyB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0JsYWNrQmVycnk+IGNyZWF0ZUNvbnRyb2xzKERv
Y3VtZW50Kik7CisKKyAgICAvLyBNZWRpYUNvbnRyb2xzIGltcGxlbWVudGF0aW9uLgorICAgIHZv
aWQgc2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxlckludGVyZmFjZSopIE9WRVJSSURF
OworCisgICAgdm9pZCBzaG93KCkgT1ZFUlJJREU7CisgICAgdm9pZCBoaWRlKCkgT1ZFUlJJREU7
CisgICAgdm9pZCBtYWtlT3BhcXVlKCkgT1ZFUlJJREU7CisgICAgdm9pZCBtYWtlVHJhbnNwYXJl
bnQoKSBPVkVSUklERTsKKworICAgIHZvaWQgcmVzZXQoKSBPVkVSUklERTsKKworICAgIHZvaWQg
YnVmZmVyaW5nUHJvZ3Jlc3NlZCgpIE9WRVJSSURFOworICAgIHZvaWQgcGxheWJhY2tQcm9ncmVz
c2VkKCkgT1ZFUlJJREU7CisgICAgdm9pZCBwbGF5YmFja1N0YXJ0ZWQoKSBPVkVSUklERTsKKyAg
ICB2b2lkIHBsYXliYWNrU3RvcHBlZCgpIE9WRVJSSURFOworCisgICAgdm9pZCBjaGFuZ2VkTXV0
ZSgpIE9WRVJSSURFOworCisgICAgdm9pZCBlbnRlcmVkRnVsbHNjcmVlbigpIE9WRVJSSURFOwor
ICAgIHZvaWQgZXhpdGVkRnVsbHNjcmVlbigpIE9WRVJSSURFOworCisgICAgdm9pZCByZXBvcnRl
ZEVycm9yKCkgT1ZFUlJJREU7CisKKyAgICB2b2lkIHNob3dWb2x1bWVTbGlkZXIoKSBPVkVSUklE
RTsKKyAgICB2b2lkIHRvZ2dsZVZvbHVtZVNsaWRlcigpIE9WRVJSSURFOworICAgIHZvaWQgdXBk
YXRlQ3VycmVudFRpbWVEaXNwbGF5KCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkSGlkZUNvbnRyb2xzKCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9s
c0JsYWNrQmVycnkoRG9jdW1lbnQqKTsKKworICAgIE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29u
dGFpbmVyRWxlbWVudCogbV9idXR0b25Db250YWluZXI7CisgICAgTWVkaWFDb250cm9sVGltZURp
c3BsYXlDb250YWluZXJFbGVtZW50KiBtX3RpbWVEaXNwbGF5Q29udGFpbmVyOworICAgIE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQqIG1fZnVsbHNjcmVl
blRpbWVEaXNwbGF5Q29udGFpbmVyOworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0
dG9uRWxlbWVudCogbV9mdWxsc2NyZWVuUGxheUJ1dHRvbjsKKyAgICBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudCogbV9mdWxsc2NyZWVuQ3VycmVudFRpbWVE
aXNwbGF5OworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQqIG1fZnVs
bHNjcmVlblRpbWVsaW5lOworICAgIE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxl
bWVudCogbV90aW1lUmVtYWluaW5nRGlzcGxheTsKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
VGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KiBtX2Z1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlz
cGxheTsKKyAgICBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQqIG1fdGltZWxp
bmVDb250YWluZXI7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVy
RWxlbWVudCogbV9mdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXI7CisgICAgTWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50KiBtX2Z1bGxTY3JlZW5EaXZpZGVyOworICAg
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudCogbV9mdWxsc2Ny
ZWVuRnVsbFNjcmVlbkJ1dHRvbjsKKyAgICBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVt
ZW50KiBtX211dGVCdXR0b247CisgICAgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVy
RWxlbWVudCogbV92b2x1bWVTbGlkZXJDb250YWluZXI7CisgICAgTWVkaWFDb250cm9sRW1iZWRk
ZWRQYW5lbEVsZW1lbnQqIG1fZW1iZWRkZWRQYW5lbDsKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudCogbV9mdWxsU2NyZWVuQnV0dG9uQ29udGFpbmVyOwor
ICAgIE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50KiBtX3BsYXlCdXR0b25D
b250YWluZXI7CisgICAgTWVkaWFDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50KiBtX3BsYWNlaG9s
ZGVyOworfTsKKworfQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwCmlu
ZGV4IDk3NWQxZTRmMDE1ZGFlYjQxM2M5YmU1YTdiZDMxMjQyYTY5Mzg0NzIuLjg1ZmQ5MjAzZTE3
Yzk0NGYwZDRjYmM5ZWY4ZTdmMTE3ZDhhNmU4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAK
QEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxNZWRp
YUVsZW1lbnQuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCisjaW5jbHVkZSAiSW5wdXRUeXBl
LmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudHMuaCIKICNpbmNsdWRlICJNZWRpYVBs
YXllclByaXZhdGVCbGFja0JlcnJ5LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNDQsMTAgKzQ1
LDEzIEBAIGNvbnN0IHVuc2lnbmVkIHNtYWxsUmFkaXVzID0gMTsKIGNvbnN0IHVuc2lnbmVkIGxh
cmdlUmFkaXVzID0gMzsKIGNvbnN0IHVuc2lnbmVkIGxpbmVXaWR0aCA9IDE7CiBjb25zdCBmbG9h
dCBtYXJnaW5TaXplID0gNDsKLWNvbnN0IGZsb2F0IG1lZGlhQ29udHJvbHNIZWlnaHQgPSAzMjsK
LWNvbnN0IGZsb2F0IG1lZGlhU2xpZGVyVGh1bWJXaWR0aCA9IDQwOwotY29uc3QgZmxvYXQgbWVk
aWFTbGlkZXJUaHVtYkhlaWdodCA9IDEzOwotY29uc3QgZmxvYXQgbWVkaWFTbGlkZXJUaHVtYlJh
ZGl1cyA9IDU7Citjb25zdCBmbG9hdCBtZWRpYUNvbnRyb2xzSGVpZ2h0ID0gNDQ7Citjb25zdCBm
bG9hdCBtZWRpYUJhY2tCdXR0b25IZWlnaHQgPSAzMzsKK2NvbnN0IGZsb2F0IG1lZGlhU2xpZGVy
T3V0bGluZVdpZHRoID0gMjsKK2NvbnN0IGZsb2F0IG1lZGlhU2xpZGVyVHJhY2tSYWRpdXMgPSAz
OworY29uc3QgZmxvYXQgbWVkaWFTbGlkZXJUaHVtYldpZHRoID0gMjU7Citjb25zdCBmbG9hdCBt
ZWRpYVNsaWRlclRodW1iSGVpZ2h0ID0gMjU7Citjb25zdCBmbG9hdCBtZWRpYVNsaWRlclRodW1i
UmFkaXVzID0gMzsKIGNvbnN0IGZsb2F0IHNsaWRlclRodW1iV2lkdGggPSAxNTsKIGNvbnN0IGZs
b2F0IHNsaWRlclRodW1iSGVpZ2h0ID0gMjU7CiAKQEAgLTEyNCw2ICsxMjgsMTIgQEAgY29uc3Qg
UkdCQTMyIGRyYWdSb2xsRGFyayA9IDB4ZmY2OWE4ZmY7CiBjb25zdCBSR0JBMzIgYmxhY2tQZW4g
PSBDb2xvcjo6YmxhY2s7CiBjb25zdCBSR0JBMzIgZm9jdXNSaW5nUGVuID0gMHhmZmEzYzhmZTsK
IAorY29uc3QgUkdCQTMyIG1lZGlhU2xpZGVyVHJhY2tPdXRsaW5lID0gMHhmZjg0ODU4NzsKK2Nv
bnN0IFJHQkEzMiBtZWRpYVNsaWRlclRyYWNrUGxheWVkID0gMHhmZjJiOGZmZjsKK2NvbnN0IFJH
QkEzMiBtZWRpYVNsaWRlclRyYWNrQnVmZmVyZWQgPSAweGZmYmJiZGJmOworCitjb25zdCBSR0JB
MzIgc2VsZWN0aW9uID0gMHhmZjJiOGZmZjsKKwogZmxvYXQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5
OjpkZWZhdWx0Rm9udFNpemUgPSAxNjsKIAogY29uc3QgU3RyaW5nJiBSZW5kZXJUaGVtZUJsYWNr
QmVycnk6OmRlZmF1bHRHVUlGb250KCkKQEAgLTE2Myw3ICsxNzMsNyBAQCBzdGF0aWMgZmxvYXQg
ZGV0ZXJtaW5lRnVsbFNjcmVlbk11bHRpcGxpZXIoRWxlbWVudCogZWxlbWVudCkKICAgICAgICAg
Ly8gdmlld3BvcnQgc2l6ZSwgYW5kIHRoZSB2aWV3cG9ydCBzaXplIG1pZ2h0IGdldCBvdXRzdHJl
dGNoZWQgdG8gZml0IHRvIHRoZSBzY3JlZW4gZGltZW5zaW9ucy4KICAgICAgICAgLy8gVG8gZml4
IHRoYXQsIGxldHMgc3RyaXBzIG91dCB0aGUgUGFnZSBzY2FsZSBmYWN0b3IgZnJvbSB0aGUgbWVk
aWEgY29udHJvbHMgbXVsdGlwbGllci4KICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBlbGVt
ZW50LT5kb2N1bWVudCgpLT52aWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50
KCktPmN1cnJlbnRab29tRmFjdG9yKCk7Ci0gICAgICAgIHN0YXRpYyBWaWV3cG9ydEFyZ3VtZW50
cyBkZWZhdWx0Vmlld3BvcnRBcmd1bWVudHM7CisKICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3JG
dWRnZSA9IDEgLyBlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9y
KCk7CiAgICAgICAgIGZ1bGxTY3JlZW5NdWx0aXBsaWVyIC89IHNjYWxlRmFjdG9yICogc2NhbGVG
YWN0b3JGdWRnZTsKICAgICB9CkBAIC0yOTYsMTIgKzMwNiwxMiBAQCBTdHJpbmcgUmVuZGVyVGhl
bWVCbGFja0JlcnJ5OjpleHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCkKIHsKICAgICByZXR1
cm4gU3RyaW5nKG1lZGlhQ29udHJvbHNCbGFja0JlcnJ5VXNlckFnZW50U3R5bGVTaGVldCwgc2l6
ZW9mKG1lZGlhQ29udHJvbHNCbGFja0JlcnJ5VXNlckFnZW50U3R5bGVTaGVldCkpOwogfQorI2Vu
ZGlmCiAKLVN0cmluZyBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmZvcm1hdE1lZGlhQ29udHJvbHNS
ZW1haW5pbmdUaW1lKGZsb2F0LCBmbG9hdCBkdXJhdGlvbikgY29uc3QKKyNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCitTdHJpbmcgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpleHRyYUZ1bGxTY3Jl
ZW5TdHlsZVNoZWV0KCkKIHsKLSAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCB0byBtYWtlIHRo
ZSBhcHBlYXJhbmNlIG9mIG1lZGlhIHRpbWUgY29udHJvbGxlciBpbgotICAgIC8vIGluLXBhZ2Ug
bW9kZSB0aGUgc2FtZSBhcyBpbiBmdWxsc2NyZWVuIG1vZGUuCi0gICAgcmV0dXJuIGZvcm1hdE1l
ZGlhQ29udHJvbHNUaW1lKGR1cmF0aW9uKTsKKyAgICByZXR1cm4gU3RyaW5nKG1lZGlhQ29udHJv
bHNCbGFja0JlcnJ5RnVsbHNjcmVlblVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRpYUNv
bnRyb2xzQmxhY2tCZXJyeUZ1bGxzY3JlZW5Vc2VyQWdlbnRTdHlsZVNoZWV0KSk7CiB9CiAjZW5k
aWYKIApAQCAtNjg5LDEwICs2OTksMTAgQEAgdm9pZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFk
anVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUKICAgICAg
ICAgICAgIGZ1bGxTY3JlZW5NdWx0aXBsaWVyID0gZGV0ZXJtaW5lRnVsbFNjcmVlbk11bHRpcGxp
ZXIodG9FbGVtZW50KHNsaWRlci0+bm9kZSgpKSk7CiAgICAgfQogCi0gICAgaWYgKHBhcnQgPT0g
TWVkaWFWb2x1bWVTbGlkZXJUaHVtYlBhcnQgfHwgcGFydCA9PSBTbGlkZXJUaHVtYkhvcml6b250
YWxQYXJ0IHx8IHBhcnQgPT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQpIHsKKyAgICBpZiAocGFy
dCA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0IHx8IHBhcnQgPT0gU2xpZGVyVGh1bWJWZXJ0
aWNhbFBhcnQpIHsKICAgICAgICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aCgocGFydCA9PSBTbGlk
ZXJUaHVtYlZlcnRpY2FsUGFydCA/IHNsaWRlclRodW1iSGVpZ2h0IDogc2xpZGVyVGh1bWJXaWR0
aCkgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpKTsKICAgICAgICAgc3R5bGUtPnNldEhl
aWdodChMZW5ndGgoKHBhcnQgPT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQgPyBzbGlkZXJUaHVt
YldpZHRoIDogc2xpZGVyVGh1bWJIZWlnaHQpICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIEZpeGVk
KSk7Ci0gICAgfSBlbHNlIGlmIChwYXJ0ID09IE1lZGlhU2xpZGVyVGh1bWJQYXJ0KSB7CisgICAg
fSBlbHNlIGlmIChwYXJ0ID09IE1lZGlhVm9sdW1lU2xpZGVyVGh1bWJQYXJ0IHx8IHBhcnQgPT0g
TWVkaWFTbGlkZXJUaHVtYlBhcnQpIHsKICAgICAgICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aCht
ZWRpYVNsaWRlclRodW1iV2lkdGggKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpKTsKICAg
ICAgICAgc3R5bGUtPnNldEhlaWdodChMZW5ndGgobWVkaWFTbGlkZXJUaHVtYkhlaWdodCAqIGZ1
bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCkpOwogICAgIH0KQEAgLTcxOCwxMCArNzI4LDMxIEBA
IGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVj
dCogb2JqZWN0LCBjb25zdCBQYWludEluCiAKIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5Ojpw
YWludFNsaWRlclRyYWNrUmVjdChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZv
JiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+
IGJhY2tncm91bmQ7Ci0gICAgaWYgKCFiYWNrZ3JvdW5kKQotICAgICAgICBiYWNrZ3JvdW5kID0g
bG9hZEltYWdlKCJjb3JlX3NsaWRlcl9iZyIpOwotICAgIHJldHVybiBwYWludFNsaWRlclRyYWNr
UmVjdChvYmplY3QsIGluZm8sIHJlY3QsIGJhY2tncm91bmQuZ2V0KCkpOworICAgIHJldHVybiBw
YWludFNsaWRlclRyYWNrUmVjdChvYmplY3QsIGluZm8sIHJlY3QsIHJhbmdlU2xpZGVyUmVndWxh
clRvcE91dGxpbmUsIHJhbmdlU2xpZGVyUmVndWxhckJvdHRvbU91dGxpbmUsIHJhbmdlU2xpZGVy
UmVndWxhclRvcCwgcmFuZ2VTbGlkZXJSZWd1bGFyQm90dG9tKTsKK30KKworYm9vbCBSZW5kZXJU
aGVtZUJsYWNrQmVycnk6OnBhaW50U2xpZGVyVHJhY2tSZWN0KFJlbmRlck9iamVjdCogb2JqZWN0
LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QsIFJHQkEzMiBzdHJv
a2VDb2xvclN0YXJ0LCBSR0JBMzIgc3Ryb2tlQ29sb3JFbmQsIFJHQkEzMiBmaWxsQ29sb3JTdGFy
dCwgUkdCQTMyIGZpbGxDb2xvckVuZCkKK3sKKyAgICBGbG9hdFNpemUgc21hbGxDb3JuZXIobWVk
aWFTbGlkZXJUcmFja1JhZGl1cywgbWVkaWFTbGlkZXJUcmFja1JhZGl1cyk7CisKKyAgICBpbmZv
LmNvbnRleHQtPnNhdmUoKTsKKyAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlk
U3Ryb2tlKTsKKyAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhsaW5lV2lkdGgp
OworCisjaWYgVVNFKFNLSUEpCisgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VHcmFkaWVudChj
cmVhdGVMaW5lYXJHcmFkaWVudChzdHJva2VDb2xvclN0YXJ0LCBzdHJva2VDb2xvckVuZCwgcmVj
dC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29ybmVyKCkpKTsKKyAgICBpbmZvLmNv
bnRleHQtPnNldEZpbGxHcmFkaWVudChjcmVhdGVMaW5lYXJHcmFkaWVudChmaWxsQ29sb3JTdGFy
dCwgZmlsbENvbG9yRW5kLCByZWN0Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4WE1heFlDb3Ju
ZXIoKSkpOworI2Vsc2UKKyAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHN0cm9rZUNv
bG9yU3RhcnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGluZm8uY29udGV4dC0+c2V0Rmls
bENvbG9yKGZpbGxDb2xvclN0YXJ0LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyNlbmRpZgorCisg
ICAgUGF0aCBwYXRoOworICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgc21hbGxDb3JuZXIp
OworICAgIGluZm8uY29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CisKKyAgICBpbmZvLmNvbnRleHQt
PnJlc3RvcmUoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVCbGFj
a0JlcnJ5OjpwYWludFNsaWRlclRyYWNrUmVjdChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3Qg
UGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0LCBJbWFnZSogaW5hY3RpdmUpCkBA
IC04MDUsMjkgKzgzNiw0NyBAQCB2b2lkIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0TWVk
aWFDb250cm9sU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKgogICAgIC8vIFdlIHVz
ZSBtdWx0aXBsZXMgb2YgbWVkaWFDb250cm9sc0hlaWdodCB0byBtYWtlIGFsbCBvYmplY3RzIHNj
YWxlIGV2ZW5seQogICAgIExlbmd0aCB6ZXJvKDAsIEZpeGVkKTsKICAgICBMZW5ndGggY29udHJv
bHNIZWlnaHQobWVkaWFDb250cm9sc0hlaWdodCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhl
ZCk7Ci0gICAgTGVuZ3RoIHRpbWVXaWR0aChtZWRpYUNvbnRyb2xzSGVpZ2h0ICogMyAvIDIgKiBm
dWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpOwotICAgIExlbmd0aCB2b2x1bWVIZWlnaHQobWVk
aWFDb250cm9sc0hlaWdodCAqIDQgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpOwotICAg
IExlbmd0aCBwYWRkaW5nKG1lZGlhQ29udHJvbHNIZWlnaHQgLyA4ICogZnVsbFNjcmVlbk11bHRp
cGxpZXIsIEZpeGVkKTsKLSAgICBmbG9hdCBmb250U2l6ZSA9IG1lZGlhQ29udHJvbHNIZWlnaHQg
LyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXI7CisgICAgTGVuZ3RoIGhhbGZDb250cm9sc1dpZHRo
KG1lZGlhQ29udHJvbHNIZWlnaHQgLyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIEZpeGVkKTsK
KyAgICBMZW5ndGggZGlzcGxheUhlaWdodChtZWRpYUNvbnRyb2xzSGVpZ2h0IC8gMyAqIGZ1bGxT
Y3JlZW5NdWx0aXBsaWVyLCBGaXhlZCk7CisgICAgTGVuZ3RoIHBhZGRpbmcobWVkaWFDb250cm9s
c0hlaWdodCAvIDEwICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIEZpeGVkKTsKKyAgICBmbG9hdCBm
b250U2l6ZSA9IG1lZGlhQ29udHJvbHNIZWlnaHQgLyAzICogZnVsbFNjcmVlbk11bHRpcGxpZXI7
CiAKICAgICBzd2l0Y2ggKHN0eWxlLT5hcHBlYXJhbmNlKCkpIHsKICAgICBjYXNlIE1lZGlhUGxh
eUJ1dHRvblBhcnQ6CisgICAgICAgIHN0eWxlLT5zZXRXaWR0aChjb250cm9sc0hlaWdodCk7Cisg
ICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoY29udHJvbHNIZWlnaHQpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIE1lZGlhTXV0ZUJ1dHRvblBhcnQ6CisgICAgICAgIHN0eWxlLT5zZXRQYWRkaW5n
TGVmdChwYWRkaW5nKTsKKyAgICAgICAgc3R5bGUtPnNldFdpZHRoKGNvbnRyb2xzSGVpZ2h0KTsK
KyAgICAgICAgc3R5bGUtPnNldEhlaWdodChjb250cm9sc0hlaWdodCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgTWVkaWFSZXdpbmRCdXR0b25QYXJ0OgorICAgICAgICAvLyBXZSBoaS1qYWNr
IHRoZSBSZXdpbmQgQnV0dG9uIElEIHRvIHVzZSBpdCBmb3IgdGhlIGRpdmlkZXIgaW1hZ2UKKyAg
ICAgICAgc3R5bGUtPnNldFdpZHRoKGhhbGZDb250cm9sc1dpZHRoKTsKKyAgICAgICAgc3R5bGUt
PnNldEhlaWdodChjb250cm9sc0hlaWdodCk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVk
aWFFbnRlckZ1bGxzY3JlZW5CdXR0b25QYXJ0OgorICAgICAgICBzdHlsZS0+c2V0UGFkZGluZ1Jp
Z2h0KHBhZGRpbmcpOworICAgICAgICBzdHlsZS0+c2V0V2lkdGgoY29udHJvbHNIZWlnaHQpOwor
ICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KGNvbnRyb2xzSGVpZ2h0KTsKKyAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBNZWRpYUV4aXRGdWxsc2NyZWVuQnV0dG9uUGFydDoKLSAgICBjYXNlIE1lZGlh
TXV0ZUJ1dHRvblBhcnQ6CisgICAgICAgIHN0eWxlLT5zZXRMZWZ0KHplcm8pOwogICAgICAgICBz
dHlsZS0+c2V0V2lkdGgoY29udHJvbHNIZWlnaHQpOwogICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0
KGNvbnRyb2xzSGVpZ2h0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYUN1cnJlbnRU
aW1lUGFydDoKICAgICBjYXNlIE1lZGlhVGltZVJlbWFpbmluZ1BhcnQ6Ci0gICAgICAgIHN0eWxl
LT5zZXRXaWR0aCh0aW1lV2lkdGgpOwotICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KGNvbnRyb2xz
SGVpZ2h0KTsKKyAgICAgICAgc3R5bGUtPnNldFdpZHRoKGNvbnRyb2xzSGVpZ2h0KTsKKyAgICAg
ICAgc3R5bGUtPnNldEhlaWdodChkaXNwbGF5SGVpZ2h0KTsKICAgICAgICAgc3R5bGUtPnNldFBh
ZGRpbmdSaWdodChwYWRkaW5nKTsKKyAgICAgICAgc3R5bGUtPnNldFBhZGRpbmdMZWZ0KHBhZGRp
bmcpOworICAgICAgICBzdHlsZS0+c2V0UGFkZGluZ0JvdHRvbShwYWRkaW5nKTsKICAgICAgICAg
c3R5bGUtPnNldEZvbnRTaXplKHN0YXRpY19jYXN0PGludD4oZm9udFNpemUpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lclBhcnQ6Ci0gICAgICAg
IHN0eWxlLT5zZXRXaWR0aChjb250cm9sc0hlaWdodCk7Ci0gICAgICAgIHN0eWxlLT5zZXRIZWln
aHQodm9sdW1lSGVpZ2h0KTsKKyAgICAgICAgc3R5bGUtPnNldEhlaWdodChjb250cm9sc0hlaWdo
dCk7CiAgICAgICAgIHN0eWxlLT5zZXRCb3R0b20oY29udHJvbHNIZWlnaHQpOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgpAQCAtODQ0LDEyICs4OTMsMTQgQEAgdm9pZCBSZW5kZXJUaGVt
ZUJsYWNrQmVycnk6OmFkanVzdE1lZGlhQ29udHJvbFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5k
ZXJTdHlsZSoKICAgICAgICAgY2FzZSBNZWRpYUV4aXRGdWxsc2NyZWVuQnV0dG9uUGFydDoKICAg
ICAgICAgICAgIHN0eWxlLT5zZXRQb3NpdGlvbihBYnNvbHV0ZVBvc2l0aW9uKTsKICAgICAgICAg
ICAgIHN0eWxlLT5zZXRCb3R0b20oemVybyk7CisgICAgICAgICAgICBzdHlsZS0+c2V0TGVmdCh6
ZXJvKTsKICAgICAgICAgICAgIHN0eWxlLT5zZXRSaWdodChjb250cm9sc0hlaWdodCk7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNZWRpYU11dGVCdXR0b25QYXJ0OgorICAgICAg
ICBjYXNlIE1lZGlhUmV3aW5kQnV0dG9uUGFydDoKKyAgICAgICAgICAgIC8vIFdlIGhpLWphY2sg
dGhlIFJld2luZCBCdXR0b24gSUQgdG8gdXNlIGl0IGZvciB0aGUgZGl2aWRlciBpbWFnZQogICAg
ICAgICAgICAgc3R5bGUtPnNldFBvc2l0aW9uKEFic29sdXRlUG9zaXRpb24pOwogICAgICAgICAg
ICAgc3R5bGUtPnNldEJvdHRvbSh6ZXJvKTsKLSAgICAgICAgICAgIHN0eWxlLT5zZXRSaWdodCh6
ZXJvKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRMZWZ0KGNvbnRyb2xzSGVpZ2h0KTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CkBAIC04
NjIsMTcgKzkxMywxMiBAQCB2b2lkIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0U2xpZGVy
VHJhY2tTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqCiAgICAgZmxvYXQgZnVsbFNj
cmVlbk11bHRpcGxpZXIgPSBkZXRlcm1pbmVGdWxsU2NyZWVuTXVsdGlwbGllcihlbGVtZW50KTsK
IAogICAgIC8vIFdlIHVzZSBtdWx0aXBsZXMgb2YgbWVkaWFDb250cm9sc0hlaWdodCB0byBtYWtl
IGFsbCBvYmplY3RzIHNjYWxlIGV2ZW5seQotICAgIExlbmd0aCBjb250cm9sc0hlaWdodChtZWRp
YUNvbnRyb2xzSGVpZ2h0ICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIEZpeGVkKTsKLSAgICBMZW5n
dGggdm9sdW1lSGVpZ2h0KG1lZGlhQ29udHJvbHNIZWlnaHQgKiA0ICogZnVsbFNjcmVlbk11bHRp
cGxpZXIsIEZpeGVkKTsKKyAgICBMZW5ndGggY29udHJvbHNIZWlnaHQobWVkaWFDb250cm9sc0hl
aWdodCAvIDIgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpOwogICAgIHN3aXRjaCAoc3R5
bGUtPmFwcGVhcmFuY2UoKSkgewogICAgIGNhc2UgTWVkaWFTbGlkZXJQYXJ0OgotICAgICAgICBz
dHlsZS0+c2V0SGVpZ2h0KGNvbnRyb2xzSGVpZ2h0KTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBNZWRpYVZvbHVtZVNsaWRlclBhcnQ6Ci0gICAgICAgIHN0eWxlLT5zZXRXaWR0aChjb250cm9s
c0hlaWdodCk7Ci0gICAgICAgIHN0eWxlLT5zZXRIZWlnaHQodm9sdW1lSGVpZ2h0KTsKKyAgICAg
ICAgc3R5bGUtPnNldEhlaWdodChjb250cm9sc0hlaWdodCk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTWVkaWFGdWxsU2NyZWVuVm9sdW1lU2xpZGVyUGFydDoKICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKICAgICB9CkBAIC05MDQsNiArOTUwLDI5IEBAIGJvb2wgUmVuZGVyVGhlbWVC
bGFja0JlcnJ5OjpwYWludE1lZGlhUGxheUJ1dHRvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29u
c3QgUGFpCiAjZW5kaWYKIH0KIAorLy8gV2UgaGktamFjayB0aGUgUmV3aW5kIEJ1dHRvbiBjb2Rl
IHRvIHVzZSBpdCBmb3IgdGhlIGRpdmlkZXIgaW1hZ2UKK2Jvb2wgUmVuZGVyVGhlbWVCbGFja0Jl
cnJ5OjpwYWludE1lZGlhUmV3aW5kQnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyNpZiBFTkFCTEUo
VklERU8pCisgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gdG9QYXJlbnRNZWRp
YUVsZW1lbnQob2JqZWN0KTsKKworICAgIGlmICghbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoIW1lZGlhRWxlbWVudC0+aXNGdWxsc2NyZWVuKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0YXRpYyBJbWFnZSogZGl2aWRlciA9IEltYWdlOjps
b2FkUGxhdGZvcm1SZXNvdXJjZSgiZGl2aWRlciIpLmxlYWtSZWYoKTsKKworICAgIHJldHVybiBw
YWludE1lZGlhQnV0dG9uKHBhaW50SW5mby5jb250ZXh0LCByZWN0LCBkaXZpZGVyKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7CisgICAgVU5VU0VEX1BBUkFNKHBhaW50SW5mbyk7
CisgICAgVU5VU0VEX1BBUkFNKHJlY3QpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQor
CiBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVy
T2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0
JiByZWN0KQogewogI2lmIEVOQUJMRShWSURFTykKQEAgLTkxMiwxMCArOTgxLDkgQEAgYm9vbCBS
ZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCog
b2JqZWN0LCBjb25zdCBQYWkKICAgICBpZiAoIW1lZGlhRWxlbWVudCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgc3RhdGljIEltYWdlKiBtZWRpYU11dGUgPSBJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoInNwZWFrZXIiKS5sZWFrUmVmKCk7Ci0gICAgc3RhdGljIEltYWdlKiBtZWRp
YVVubXV0ZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgic3BlYWtlcl9tdXRlIikubGVh
a1JlZigpOworICAgIHN0YXRpYyBJbWFnZSogZGl2aWRlciA9IEltYWdlOjpsb2FkUGxhdGZvcm1S
ZXNvdXJjZSgic3BlYWtlciIpLmxlYWtSZWYoKTsKIAotICAgIHJldHVybiBwYWludE1lZGlhQnV0
dG9uKHBhaW50SW5mby5jb250ZXh0LCByZWN0LCBtZWRpYUVsZW1lbnQtPm11dGVkKCkgfHwgIW1l
ZGlhRWxlbWVudC0+dm9sdW1lKCkgPyBtZWRpYVVubXV0ZSA6IG1lZGlhTXV0ZSk7CisgICAgcmV0
dXJuIHBhaW50TWVkaWFCdXR0b24ocGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIGRpdmlkZXIpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKICAgICBVTlVTRURfUEFSQU0ocGFpbnRJ
bmZvKTsKQEAgLTkzMiw3ICsxMDAwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBh
aW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb24KICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3RhdGljIEltYWdlKiBtZWRpYUVudGVyRnVsbHNjcmVl
biA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgiZnVsbHNjcmVlbiIpLmxlYWtSZWYoKTsK
LSAgICBzdGF0aWMgSW1hZ2UqIG1lZGlhRXhpdEZ1bGxzY3JlZW4gPSBJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoImV4aXRfZnVsbHNjcmVlbiIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgSW1h
Z2UqIG1lZGlhRXhpdEZ1bGxzY3JlZW4gPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImJh
Y2siKS5sZWFrUmVmKCk7CiAKICAgICBJbWFnZSogYnV0dG9uSW1hZ2UgPSBtZWRpYUVudGVyRnVs
bHNjcmVlbjsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBAIC05NTksMzggKzEwMjcsMzAg
QEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFTbGlkZXJUcmFjayhSZW5k
ZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGEKICAgICBmbG9hdCBsb2FkZWQgPSBtZWRpYUVsZW1l
bnQtPnBlcmNlbnRMb2FkZWQoKTsKICAgICBmbG9hdCBwb3NpdGlvbiA9IG1lZGlhRWxlbWVudC0+
ZHVyYXRpb24oKSA+IDAgPyAobWVkaWFFbGVtZW50LT5jdXJyZW50VGltZSgpIC8gbWVkaWFFbGVt
ZW50LT5kdXJhdGlvbigpKSA6IDA7CiAKLSAgICBpbnQgeCA9IGNlaWwocmVjdC54KCkgKyAyICog
ZnVsbFNjcmVlbk11bHRpcGxpZXIgLSBmdWxsU2NyZWVuTXVsdGlwbGllciAvIDIpOwotICAgIGlu
dCB5ID0gY2VpbChyZWN0LnkoKSArIDE0ICogZnVsbFNjcmVlbk11bHRpcGxpZXIgKyBmdWxsU2Ny
ZWVuTXVsdGlwbGllciAvIDIpOwotICAgIGludCB3ID0gY2VpbChyZWN0LndpZHRoKCkgLSA0ICog
ZnVsbFNjcmVlbk11bHRpcGxpZXIgKyBmdWxsU2NyZWVuTXVsdGlwbGllciAvIDIpOwotICAgIGlu
dCBoID0gY2VpbCgyICogZnVsbFNjcmVlbk11bHRpcGxpZXIpOworICAgIGludCBpbnRyaW5zaWNI
ZWlnaHQgPSBjZWlsKG1lZGlhU2xpZGVyVGh1bWJIZWlnaHQgLyA0KTsKKyAgICBpbnQgeCA9IGNl
aWwocmVjdC54KCkgKyAobWVkaWFDb250cm9sc0hlaWdodCAtIGludHJpbnNpY0hlaWdodCkgLyAy
ICogZnVsbFNjcmVlbk11bHRpcGxpZXIgLSBmdWxsU2NyZWVuTXVsdGlwbGllciAvIDIpOworICAg
IGludCB5ID0gY2VpbChyZWN0LnkoKSArIChtZWRpYUNvbnRyb2xzSGVpZ2h0IC8gMiAtIGludHJp
bnNpY0hlaWdodCkgLyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIgKyBmdWxsU2NyZWVuTXVsdGlw
bGllciAvIDIpOworICAgIGludCB3ID0gY2VpbChyZWN0LndpZHRoKCkgLSAobWVkaWFDb250cm9s
c0hlaWdodCAtIGludHJpbnNpY0hlaWdodCkgKiBmdWxsU2NyZWVuTXVsdGlwbGllciArIGZ1bGxT
Y3JlZW5NdWx0aXBsaWVyIC8gMik7CisgICAgaW50IGggPSBjZWlsKGludHJpbnNpY0hlaWdodCAq
IGZ1bGxTY3JlZW5NdWx0aXBsaWVyKTsKICAgICBJbnRSZWN0IHJlY3QyKHgsIHksIHcsIGgpOwog
CiAgICAgaW50IHdQbGF5ZWQgPSBjZWlsKHcgKiBwb3NpdGlvbik7CiAgICAgaW50IHdMb2FkZWQg
PSBjZWlsKCh3IC0gbWVkaWFTbGlkZXJUaHVtYldpZHRoICogZnVsbFNjcmVlbk11bHRpcGxpZXIp
ICogbG9hZGVkICsgbWVkaWFTbGlkZXJUaHVtYldpZHRoICogZnVsbFNjcmVlbk11bHRpcGxpZXIp
OwogCiAgICAgSW50UmVjdCBwbGF5ZWQoeCwgeSwgd1BsYXllZCwgaCk7Ci0gICAgSW50UmVjdCBi
dWZmZXJlZCh4LCB5LCB3TG9hZGVkLCBoKTsKKyAgICBJbnRSZWN0IGJ1ZmZlcmVkKHgsIGNlaWwo
eSArIG1lZGlhU2xpZGVyT3V0bGluZVdpZHRoKSwgd0xvYWRlZCwgY2VpbChoIC0gMiAqIG1lZGlh
U2xpZGVyT3V0bGluZVdpZHRoKSk7CiAKICAgICAvLyBUaGlzIGlzIHRvIHBhaW50IG1haW4gc2xp
ZGVyIGJhci4KLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlPiB0cmFja0ltYWdlOwotICAgIGlmICgh
dHJhY2tJbWFnZSkKLSAgICAgICAgdHJhY2tJbWFnZSA9IGxvYWRJbWFnZSgiY29yZV9zbGlkZXJf
bWVkaWFfYmciKTsKLSAgICBib29sIHJlc3VsdCA9IHBhaW50U2xpZGVyVHJhY2tSZWN0KG9iamVj
dCwgcGFpbnRJbmZvLCByZWN0MiwgdHJhY2tJbWFnZS5nZXQoKSk7CisgICAgYm9vbCByZXN1bHQg
PSBwYWludFNsaWRlclRyYWNrUmVjdChvYmplY3QsIHBhaW50SW5mbywgcmVjdDIpOwogCiAgICAg
aWYgKGxvYWRlZCA+IDAgfHwgcG9zaXRpb24gPiAwKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgdG8g
cGFpbnQgYnVmZmVyZWQgYmFyLgotICAgICAgICBzdGF0aWMgUmVmUHRyPEltYWdlPiBidWZmZXJl
ZEltYWdlLCBwbGF5ZWRJbWFnZTsKLSAgICAgICAgaWYgKCFidWZmZXJlZEltYWdlKSB7Ci0gICAg
ICAgICAgICBidWZmZXJlZEltYWdlID0gbG9hZEltYWdlKCJjb3JlX3NsaWRlcl9idWZmZXJlZF9i
ZyIpOwotICAgICAgICAgICAgcGxheWVkSW1hZ2UgPSBsb2FkSW1hZ2UoImNvcmVfc2xpZGVyX3Bs
YXllZF9iZyIpOwotICAgICAgICB9Ci0gICAgICAgIHBhaW50U2xpZGVyVHJhY2tSZWN0KG9iamVj
dCwgcGFpbnRJbmZvLCBidWZmZXJlZCwgYnVmZmVyZWRJbWFnZS5nZXQoKSk7CisgICAgICAgIHBh
aW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJbmZvLCBidWZmZXJlZCwgQ29sb3I6OmRh
cmtHcmF5LCBDb2xvcjo6ZGFya0dyYXksIENvbG9yOjpkYXJrR3JheSwgQ29sb3I6OmRhcmtHcmF5
KTsKIAogICAgICAgICAvLyBUaGlzIGlzIHRvIHBhaW50IHBsYXllZCBwYXJ0IG9mIGJhciAobGVm
dCBvZiBzbGlkZXIgdGh1bWIpIHVzaW5nIHNlbGVjdGlvbiBjb2xvci4KLSAgICAgICAgcGFpbnRT
bGlkZXJUcmFja1JlY3Qob2JqZWN0LCBwYWludEluZm8sIHBsYXllZCwgcGxheWVkSW1hZ2UuZ2V0
KCkpOworICAgICAgICBwYWludFNsaWRlclRyYWNrUmVjdChvYmplY3QsIHBhaW50SW5mbywgcGxh
eWVkLCBzZWxlY3Rpb24sIHNlbGVjdGlvbiwgc2VsZWN0aW9uLCBzZWxlY3Rpb24pOwogICAgIH0K
ICAgICByZXR1cm4gcmVzdWx0OwotCiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOwog
ICAgIFVOVVNFRF9QQVJBTShwYWludEluZm8pOwpAQCAtMTAwMiwxNSArMTA2MiwzNCBAQCBib29s
IFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRlck9iamVj
dCogb2JqZWN0LCBjb25zdCBQYQogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVk
aWFTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAjaWYgRU5BQkxFKFZJREVPKQorI2lmIFVT
RShTS0lBKQogICAgIFJlbmRlclNsaWRlciogc2xpZGVyID0gZGV0ZXJtaW5lUmVuZGVyU2xpZGVy
KG9iamVjdCk7CiAgICAgaWYgKCFzbGlkZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IHN0YXRpYyBJbWFnZSogbWVkaWFWb2x1bWVUaHVtYiA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZSgidm9sdW1lX3RodW1iIikubGVha1JlZigpOworICAgIGZsb2F0IGZ1bGxTY3JlZW5NdWx0
aXBsaWVyID0gZGV0ZXJtaW5lRnVsbFNjcmVlbk11bHRpcGxpZXIodG9FbGVtZW50KHNsaWRlci0+
bm9kZSgpKSk7CisKKyAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOworICAgIFBhdGggbWVk
aWFUaHVtYlJvdW5kZWRSZWN0YW5nbGU7CisgICAgbWVkaWFUaHVtYlJvdW5kZWRSZWN0YW5nbGUu
YWRkUm91bmRlZFJlY3QocmVjdCwgRmxvYXRTaXplKG1lZGlhU2xpZGVyVGh1bWJSYWRpdXMgKiBm
dWxsU2NyZWVuTXVsdGlwbGllciwgbWVkaWFTbGlkZXJUaHVtYlJhZGl1cyAqIGZ1bGxTY3JlZW5N
dWx0aXBsaWVyKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlk
U3Ryb2tlKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDAuNSk7
CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjaywgQ29s
b3JTcGFjZURldmljZVJHQik7CiAKLSAgICBkcmF3Q29udHJvbChwYWludEluZm8uY29udGV4dCwg
cmVjdCwgbWVkaWFWb2x1bWVUaHVtYik7CisgICAgaWYgKGlzUHJlc3NlZChvYmplY3QpIHx8IGlz
SG92ZXJlZChvYmplY3QpIHx8IHNsaWRlci0+aW5EcmFnTW9kZSgpKQorICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KHNlbGVjdGlv
biwgQ29sb3Ioc2VsZWN0aW9uKS5kYXJrKCkucmdiKCksIHJlY3QubWF4WE1pbllDb3JuZXIoKSwg
cmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7CisgICAgZWxzZQorICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KENvbG9yOjp3aGl0ZSwg
Q29sb3IoQ29sb3I6OndoaXRlKS5kYXJrKCkucmdiKCksIHJlY3QubWF4WE1pbllDb3JuZXIoKSwg
cmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7CisKKyAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFBh
dGgobWVkaWFUaHVtYlJvdW5kZWRSZWN0YW5nbGUpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5y
ZXN0b3JlKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlIC8vIEdMIHJlbmRlcmVyCisgICAg
c3RhdGljIEltYWdlKiBtZWRpYVNsaWRlclRodW1iID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291
cmNlKCJjb3JlX3NsaWRlcl9oYW5kbGVfZGlzYWJsZWQiKS5sZWFrUmVmKCk7CisKKyAgICByZXR1
cm4gcGFpbnRNZWRpYUJ1dHRvbihwYWludEluZm8uY29udGV4dCwgcmVjdCwgbWVkaWFTbGlkZXJU
aHVtYik7CisjZW5kaWYgLy8gVVNFKFNLSUEpCiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShvYmpl
Y3QpOwogICAgIFVOVVNFRF9QQVJBTShwYWludEluZm8pOwpAQCAtMTAyMiwxOSArMTEwMSwyOSBA
QCBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNsaWRlclRodW1iKFJlbmRl
ck9iamVjdCogb2JqZWN0LCBjb25zdCBQYQogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBh
aW50TWVkaWFWb2x1bWVTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAjaWYgRU5BQkxFKFZJ
REVPKQotICAgIGZsb2F0IHBhZCA9IHJlY3Qud2lkdGgoKSAqIDAuNDU7Ci0gICAgZmxvYXQgeCA9
IHJlY3QueCgpICsgcGFkOwotICAgIGZsb2F0IHkgPSByZWN0LnkoKSArIHBhZDsKLSAgICBmbG9h
dCB3aWR0aCA9IHJlY3Qud2lkdGgoKSAqIDAuMTsKLSAgICBmbG9hdCBoZWlnaHQgPSByZWN0Lmhl
aWdodCgpIC0gKDIuMCAqIHBhZCk7CisgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50
ID0gdG9QYXJlbnRNZWRpYUVsZW1lbnQob2JqZWN0KTsKKyAgICBpZiAoIW1lZGlhRWxlbWVudCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSW50UmVjdCByZWN0Mih4LCB5LCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICBmbG9hdCBmdWxsU2NyZWVuTXVsdGlwbGllciA9IGRldGVybWluZUZ1bGxT
Y3JlZW5NdWx0aXBsaWVyKG1lZGlhRWxlbWVudCk7CisgICAgZmxvYXQgdm9sdW1lID0gbWVkaWFF
bGVtZW50LT52b2x1bWUoKSA+IDAgPyBtZWRpYUVsZW1lbnQtPnZvbHVtZSgpIDogMDsKKworICAg
IGludCBpbnRyaW5zaWNIZWlnaHQgPSBjZWlsKG1lZGlhU2xpZGVyVGh1bWJIZWlnaHQgLyA0KTsK
KyAgICBpbnQgeCA9IGNlaWwocmVjdC54KCkgKyAobWVkaWFDb250cm9sc0hlaWdodCAtIGludHJp
bnNpY0hlaWdodCkgLyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIgLSBmdWxsU2NyZWVuTXVsdGlw
bGllciAvIDIpOworICAgIGludCB5ID0gY2VpbChyZWN0LnkoKSArIChtZWRpYUNvbnRyb2xzSGVp
Z2h0IC8gMiAtIGludHJpbnNpY0hlaWdodCkgLyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIgKyBm
dWxsU2NyZWVuTXVsdGlwbGllciAvIDIpOworICAgIGludCB3ID0gY2VpbChyZWN0LndpZHRoKCkg
LSAobWVkaWFDb250cm9sc0hlaWdodCAtIGludHJpbnNpY0hlaWdodCkgKiBmdWxsU2NyZWVuTXVs
dGlwbGllciArIGZ1bGxTY3JlZW5NdWx0aXBsaWVyIC8gMik7CisgICAgaW50IGggPSBjZWlsKGlu
dHJpbnNpY0hlaWdodCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyKTsKKyAgICBJbnRSZWN0IHJlY3Qy
KHgsIHksIHcsIGgpOworICAgIEludFJlY3Qgdm9sdW1lUmVjdCh4LCB5LCBjZWlsKHcgKiB2b2x1
bWUpLCBoKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHRyYWNrSW1hZ2U7Ci0gICAgaWYg
KCF0cmFja0ltYWdlKQotICAgICAgICB0cmFja0ltYWdlID0gbG9hZEltYWdlKCJjb3JlX3NsaWRl
cl9tZWRpYV9iZyIpOworICAgIC8vIFRoaXMgaXMgdG8gcGFpbnQgbWFpbiB2b2x1bWUgc2xpZGVy
IGJhci4KKyAgICBib29sIHJlc3VsdCA9IHBhaW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFp
bnRJbmZvLCByZWN0MiwgQ29sb3IobWVkaWFTbGlkZXJUcmFja091dGxpbmUpLnJnYigpLCBDb2xv
cihtZWRpYVNsaWRlclRyYWNrT3V0bGluZSkucmdiKCksIHJhbmdlU2xpZGVyUmVndWxhclRvcCwg
cmFuZ2VTbGlkZXJSZWd1bGFyVG9wKTsKIAotICAgIHJldHVybiBwYWludFNsaWRlclRyYWNrUmVj
dChvYmplY3QsIHBhaW50SW5mbywgcmVjdDIsIHRyYWNrSW1hZ2UuZ2V0KCkpOworICAgIGlmICh2
b2x1bWUgPiAwKSB7CisgICAgICAgIC8vIFRoaXMgaXMgdG8gcGFpbnQgdm9sdW1lIGJhciAobGVm
dCBvZiB2b2x1bWUgc2xpZGVyIHRodW1iKSB1c2luZyBzZWxlY3Rpb24gY29sb3IuCisgICAgICAg
IHBhaW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJbmZvLCB2b2x1bWVSZWN0LCBDb2xv
cihtZWRpYVNsaWRlclRyYWNrT3V0bGluZSkucmdiKCksIENvbG9yKG1lZGlhU2xpZGVyVHJhY2tP
dXRsaW5lKS5yZ2IoKSwgc2VsZWN0aW9uLCBzZWxlY3Rpb24pOworICAgIH0KKyAgICByZXR1cm4g
cmVzdWx0OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKICAgICBVTlVTRURfUEFS
QU0ocGFpbnRJbmZvKTsKQEAgLTEwNDYsOSArMTEzNSwyOSBAQCBib29sIFJlbmRlclRoZW1lQmxh
Y2tCZXJyeTo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogb2JqZWN0
LCBjbwogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJU
aHVtYihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IEludFJlY3QmIHJlY3QpCiB7CiAjaWYgRU5BQkxFKFZJREVPKQotICAgIHN0YXRpYyBJbWFn
ZSogbWVkaWFWb2x1bWVUaHVtYiA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidm9sdW1l
X3RodW1iIikubGVha1JlZigpOworI2lmIFVTRShTS0lBKQorICAgIFJlbmRlclNsaWRlciogc2xp
ZGVyID0gZGV0ZXJtaW5lUmVuZGVyU2xpZGVyKG9iamVjdCk7CisgICAgaWYgKCFzbGlkZXIpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHBhaW50
SW5mby5jb250ZXh0LCByZWN0LCBtZWRpYVZvbHVtZVRodW1iKTsKKyAgICBmbG9hdCBmdWxsU2Ny
ZWVuTXVsdGlwbGllciA9IGRldGVybWluZUZ1bGxTY3JlZW5NdWx0aXBsaWVyKHRvRWxlbWVudChz
bGlkZXItPm5vZGUoKSkpOworCisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICBQ
YXRoIG1lZGlhVGh1bWJSb3VuZGVkUmVjdGFuZ2xlOworICAgIG1lZGlhVGh1bWJSb3VuZGVkUmVj
dGFuZ2xlLmFkZFJvdW5kZWRSZWN0KHJlY3QsIEZsb2F0U2l6ZShtZWRpYVNsaWRlclRodW1iSGVp
Z2h0IC8gMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBtZWRpYVNsaWRlclRodW1iSGVpZ2h0IC8g
MiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyKSk7CisKKyAgICBpZiAoaXNQcmVzc2VkKG9iamVjdCkg
fHwgaXNIb3ZlcmVkKG9iamVjdCkgfHwgc2xpZGVyLT5pbkRyYWdNb2RlKCkpCisgICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQoc2Vs
ZWN0aW9uLCBDb2xvcihzZWxlY3Rpb24pLmRhcmsoKS5yZ2IoKSwgcmVjdC5tYXhYTWluWUNvcm5l
cigpLCByZWN0Lm1heFhNYXhZQ29ybmVyKCkpKTsKKyAgICBlbHNlCisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQobWVkaWFTbGlk
ZXJUcmFja091dGxpbmUsIENvbG9yOjpibGFjaywgcmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0
Lm1heFhNYXhZQ29ybmVyKCkpKTsKKworICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUGF0aCht
ZWRpYVRodW1iUm91bmRlZFJlY3RhbmdsZSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3Rv
cmUoKTsKKworICAgIHJldHVybiB0cnVlOworI2Vsc2UgLy8gR0wgcmVuZGVyZXIKKyAgICByZXR1
cm4gcGFpbnRNZWRpYVNsaWRlclRodW1iKG9iamVjdCwgcGFpbnRJbmZvLCByZWN0KTsKKyNlbmRp
ZiAvLyBVU0UoU0tJQSkKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7CiAgICAgVU5V
U0VEX1BBUkFNKHBhaW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuaAppbmRleCA1MDdkNDUxMzQ4
ZDM1ZmU0NTQ2NTQwMTA5YmEzNzU2ZDYzNjg1ZWU1Li4xZWViNTViOTkyMWMwYTgyM2U3YjM3ZTEz
ZDYwZDNmNzc4Yjc1MWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFj
a2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmgKQEAgLTMyLDcgKzMyLDEwIEBA
IHB1YmxpYzoKIAogI2lmIEVOQUJMRShWSURFTykKICAgICB2aXJ0dWFsIFN0cmluZyBleHRyYU1l
ZGlhQ29udHJvbHNTdHlsZVNoZWV0KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgZm9ybWF0TWVkaWFD
b250cm9sc1JlbWFpbmluZ1RpbWUoZmxvYXQgY3VycmVudFRpbWUsIGZsb2F0IGR1cmF0aW9uKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgdXNlc1ZlcnRpY2FsVm9sdW1lU2xpZGVyKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAg
ICB2aXJ0dWFsIFN0cmluZyBleHRyYUZ1bGxTY3JlZW5TdHlsZVNoZWV0KCk7CiAjZW5kaWYKICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNIb3Zlcihjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KIApAQCAtODIsNiArODUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIHBhaW50TWVkaWFWb2x1bWVTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFQbGF5
QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsK
ICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1l
ZGlhUmV3aW5kQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3Qq
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCBkb3VibGUg
YW5pbWF0aW9uUmVwZWF0SW50ZXJ2YWxGb3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyopIGNv
bnN0OwogICAgIHZpcnR1YWwgZG91YmxlIGFuaW1hdGlvbkR1cmF0aW9uRm9yUHJvZ3Jlc3NCYXIo
UmVuZGVyUHJvZ3Jlc3MqKSBjb25zdDsKQEAgLTEwNCw5ICsxMDgsMTMgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldEJ1dHRvblN0eWxlKFJlbmRlclN0eWxlKikgY29uc3Q7CiAKICAgICBib29sIHBh
aW50VGV4dEZpZWxkT3JUZXh0QXJlYU9yU2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworCiAgICAgYm9vbCBwYWludFNsaWRlclRyYWNr
UmVjdChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAK
KyAgICBib29sIHBhaW50U2xpZGVyVHJhY2tSZWN0KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmLCBSR0JBMzIsIFJHQkEzMiwgUkdCQTMyLCBSR0JBMzIpOwor
CiAgICAgYm9vbCBwYWludFNsaWRlclRyYWNrUmVjdChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0JiwgSW1hZ2UqKTsKKwogICAgIEludFJlY3QgY29udmVydFRv
UGFpbnRpbmdSZWN0KFJlbmRlck9iamVjdCogaW5wdXRSZW5kZXJlciwgY29uc3QgUmVuZGVyT2Jq
ZWN0KiBwYXJ0UmVuZGVyZXIsIExheW91dFJlY3QgcGFydFJlY3QsIGNvbnN0IEludFJlY3QmIGxv
Y2FsT2Zmc2V0KSBjb25zdDsKIAogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179044</attachid>
            <date>2012-12-12 07:55:03 -0800</date>
            <delta_ts>2012-12-12 09:02:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104443-20121212105224.patch</filename>
            <type>text/plain</type>
            <size>110430</size>
            <attacher name="John Griggs">jgriggs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2E4YzNlZDdkZTUxMmJh
NDE1NTE2OTBlZTIxM2I2ODYzYWQ2NGE1MC4uZmI0ZDMxYTEwMjBlMzkwOWVjOWI3ZjJmMjI5NzNh
ZjhiNjc4NzFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwNyBAQAorMjAxMi0xMi0xMSAgSm9o
biBHcmlnZ3MgIDxqZ3JpZ2dzQHJpbS5jb20+CisKKyAgICAgICAgMjAxMi0xMi0xMSAgSm9obiBH
cmlnZ3MgIDxqZ3JpZ2dzQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFVwZGF0ZSBC
bGFja0JlcnJ5IE1lZGlhIENvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDQ0NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBQbGF0Zm9ybSBzcGVjaWZpYyB1cGRhdGUgdG8gbWVkaWEgY29udHJv
bHMgYXBwZWFyYW5jZSAtIE5vIG5ldyB0ZXN0cyByZXF1aXJlZC4KKworICAgICAgICBVcGRhdGUg
c2hhZG93IERPTSwgcGxhdGZvcm0gQ1NTIGFuZCByZW5kZXJpbmcgY29kZSBmb3IgbmV3IGxheW91
dCBvZiBtZWRpYSBjb250cm9scyBvbiBCbGFja0JlcnJ5IHBsYXRmb3JtLgorCisgICAgICAgICog
UGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlOgorICAgICAgICAqIGNzcy9tZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeS5jc3M6CisgICAgICAgIChhdWRpbyk6CisgICAgICAgIChhdWRpbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXBhbmVsLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1mdWxsc2NyZWVuLXBhbmVsKToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXBhbmVsLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCk6CisgICAg
ICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAtY29udGFpbmVy
LCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAtY29udGFpbmVyKToK
KyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1k
aXNwbGF5LWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVl
bi10aW1lLWRpc3BsYXktY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIpOgorICAgICAgICAodmlkZW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbiwgYXVkaW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbik6CisgICAgICAgICh2aWRlbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtcGxheS1idXR0b24pOgorICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtZnVsbHNjcmVlbi10aW1lbGluZS1jb250YWluZXIsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUtY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyKToKKyAgICAgICAgKGF1ZGlvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10aW1lLWRpc3BsYXksIHZpZGVv
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10aW1lLWRpc3BsYXkp
OgorICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtY3VycmVudC10aW1lLWRp
c3BsYXksIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWN1cnJlbnQtdGltZS1kaXNwbGF5
KToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGlt
ZS1yZW1haW5pbmctZGlzcGxheSwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNj
cmVlbi10aW1lLXJlbWFpbmluZy1kaXNwbGF5KToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXksIGF1ZGlvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkpOgorICAgICAgICAoYXVkaW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZSwgdmlkZW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZSk6CisgICAgICAgICh2aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uLCBhdWRpbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uKToKKyAgICAg
ICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uKToKKyAg
ICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uKToK
KyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uKToKKyAg
ICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uKToKKyAgICAg
ICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXItY29udGFpbmVy
KToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXIt
Y29udGFpbmVyKToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVt
ZS1zbGlkZXIpOgorICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1l
LXNsaWRlcik6CisgICAgICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2Ny
ZWVuLWJ1dHRvbi1kaXZpZGVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2Ny
ZWVuLWJ1dHRvbi1kaXZpZGVyKToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLWZ1bGxzY3JlZW4tYnV0dG9uLWNvbnRhaW5lciwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtcGxheS1idXR0b24tY29udGFpbmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1mdWxsc2NyZWVuLWJ1dHRvbi1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lcik6CisgICAgICAgICogY3NzL21lZGlhQ29udHJvbHNC
bGFja0JlcnJ5RnVsbHNjcmVlbi5jc3M6IEFkZGVkLgorICAgICAgICAoYm9keTotd2Via2l0LWZ1
bGwtcGFnZS1tZWRpYSk6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tcGFuZWwpOgorICAgICAgICAodmlkZW86LXdl
YmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCk6CisgICAgICAg
ICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWJ1dHRv
bi1ncm91cC1jb250YWluZXIpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtZGlzcGxheS1jb250YWluZXIp
OgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy10aW1lLWRpc3BsYXktY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVs
bC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbik6
CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXBsYXktYnV0dG9uKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZS1jb250YWluZXIpOgorICAg
ICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10
aW1lbGluZS1jb250YWluZXIpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWN1cnJlbnQtdGltZS1kaXNwbGF5KToK
KyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtY3VycmVudC10aW1lLWRpc3BsYXkpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNj
cmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtcmVtYWluaW5nLWRp
c3BsYXkpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy10aW1lLXJlbWFpbmluZy1kaXNwbGF5KToKKyAgICAgICAgKHZpZGVvOi13ZWJr
aXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGlu
ZSk6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXRpbWVsaW5lKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1mdWxsc2NyZWVuLWJ1dHRvbik6CisgICAg
ICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1
bGxzY3JlZW4tYnV0dG9uKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0b24pOgorICAgICAgICAodmlkZW86LXdlYmtp
dC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRh
aW5lcik6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXZvbHVtZS1zbGlkZXIpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNj
cmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1kaXZpZGVyKToK
KyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtZnVsbHNjcmVlbi1idXR0b24tY29udGFpbmVyLCB2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVu
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lcik6CisgICAgICAg
ICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxz
Y3JlZW4tYnV0dG9uLWNvbnRhaW5lcik6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2Ny
ZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lcik6CisgICAg
ICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBs
YWNlaG9sZGVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlw
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudFR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xD
bG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpyZWJ1
aWxkVHJhY2tMaXN0TWVudSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJh
Y2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVTdWJ0cmVlcyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVw
ZGF0ZVNpemVzKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEJ1dHRvbkdy
b3VwQ29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xCdXR0
b25Hcm91cENvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6
TWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6
c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVl
blBhbmVsRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBhbmVsRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGFuZWxFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBhbmVsRWxlbWVudDo6
c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVl
blBhbmVsRWxlbWVudDo6c3RhcnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5QYW5lbEVsZW1lbnQ6OmNvbnRpbnVlRHJhZyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGFuZWxFbGVtZW50OjplbmREcmFnKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QYW5lbEVsZW1lbnQ6OnN0YXJ0VGltZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBhbmVsRWxlbWVudDo6
c3RvcFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QYW5l
bEVsZW1lbnQ6OnRyYW5zaXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5QYW5lbEVsZW1lbnQ6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QYW5lbEVsZW1lbnQ6OnJlc2V0UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBhbmVsRWxlbWVudDo6
bWFrZU9wYXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGFu
ZWxFbGVtZW50OjptYWtlVHJhbnNwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sRnVsbHNjcmVlblBhbmVsRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGFuZWxFbGVtZW50OjpzZXRDYW5CZURy
YWdnZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBhbmVsRWxl
bWVudDo6c2V0SXNEaXNwbGF5ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVs
bHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVl
blRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVy
RWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5C
dXR0b25Db250YWluZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1Bz
ZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25E
aXZpZGVyRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVy
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5CdXR0b25EaXZpZGVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBs
YXlCdXR0b25Db250YWluZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6TWVkaWFD
b250cm9sUGxhY2Vob2xkZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0
dG9uRWxlbWVudDo6dXBkYXRlRGlzcGxheVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1l
bnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1l
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVs
bHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVs
bHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OnNldElzRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50OjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250
YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGlt
ZWxpbmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lbGluZUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OndpbGxSZXNw
b25kVG9Nb3VzZUNsaWNrRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OnNo
YWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6
OnNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sRnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6
TWVkaWFDb250cm9sc0JsYWNrQmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
czo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojpj
cmVhdGVDb250cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eTo6c2V0TWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNC
bGFja0JlcnJ5OjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0Jl
cnJ5OjpoaWRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojpt
YWtlT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojpt
YWtlVHJhbnNwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0JsYWNrQmVy
cnk6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojpi
dWZmZXJpbmdQcm9ncmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFj
a0JlcnJ5OjpwbGF5YmFja1N0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
c0JsYWNrQmVycnk6OnBsYXliYWNrUHJvZ3Jlc3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xzQmxhY2tCZXJyeTo6cGxheWJhY2tTdG9wcGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojp1cGRhdGVDdXJyZW50VGltZURpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnJlcG9ydGVkRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0JsYWNrQmVycnk6OmNoYW5nZWRNdXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjplbnRlcmVkRnVsbHNj
cmVlbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6ZXhpdGVk
RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6
c2hvd1ZvbHVtZVNsaWRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tC
ZXJyeTo6dG9nZ2xlVm9sdW1lU2xpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bHNCbGFja0JlcnJ5OjpzaG91bGRIaWRlQ29udHJvbHMpOgorICAgICAgICAqIGh0bWwvc2hhZG93
L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQpOgorICAgICAg
ICAoTWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5QYW5lbEVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9s
RnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250
cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sUGxh
Y2Vob2xkZXJFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0
dG9uRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1
dHRvbkVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29u
dGFpbmVyRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVF
bGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlz
cGxheUVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sRnVsbHNjcmVlbkN1cnJlbnRUaW1l
RGlzcGxheUVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sc0JsYWNrQmVycnkpOgorICAg
ICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lRnVsbFNjcmVlbk11
bHRpcGxpZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpleHRy
YUZ1bGxTY3JlZW5TdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxh
Y2tCZXJyeTo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0
b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RTbGlk
ZXJUaHVtYlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5Ojpw
YWludFNsaWRlclRyYWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNr
QmVycnk6OmFkanVzdE1lZGlhQ29udHJvbFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0U2xpZGVyVHJhY2tTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFSZXdpbmRCdXR0b24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhTXV0ZUJ1dHRv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFG
dWxsc2NyZWVuQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJy
eTo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
QmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVZvbHVtZVNsaWRl
clRodW1iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tC
ZXJyeS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5Ojp1c2VzVmVy
dGljYWxWb2x1bWVTbGlkZXIpOgorICAgICAgICAoUmVuZGVyVGhlbWVCbGFja0JlcnJ5KToKKwog
MjAxMi0xMi0xMSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBkaWdpYS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBRdCBidWlsZCBmaXg6IERvbid0IGVycm9yIG91dCBpZiBTUUxJ
VEUzU1JDRElSIGlzbid0IHNldCBidXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtQmxhY2tCZXJyeS5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5j
bWFrZQppbmRleCBjYjllOWFlM2IyMzViNTMyNjVhNTlmODA1YWZkZDQ5ODNkMGM5YTkzLi44Mzhm
NmQ3NzJkNGU3NGYwNjM3OTM0Nzg3NDA4MWI2YmEzYjczNjdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC0zLDYgKzMsMTAgQEAgbGlzdChJTlNFUlQgV2ViQ29y
ZV9JTkNMVURFX0RJUkVDVE9SSUVTIDAKICAgICAiJHtCTEFDS0JFUlJZX1RISVJEX1BBUlRZX0RJ
Un0vaWN1IgogKQogCitsaXN0KFJFTU9WRV9JVEVNIFdlYkNvcmVfU09VUkNFUworICAgIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKKykKKwogbGlzdChBUFBFTkQgV2ViQ29yZV9J
TkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2NwcCIKICAg
ICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVEYXRhYmFzZUJhY2tp
bmdTdG9yZSIKQEAgLTEwNSw2ICsxMDksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
IAogbGlzdChBUFBFTkQgV2ViQ29yZV9VU0VSX0FHRU5UX1NUWUxFX1NIRUVUUwogICAgICR7V0VC
Q09SRV9ESVJ9L2Nzcy9tZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5jc3MKKyAgICAke1dFQkNPUkVf
RElSfS9jc3MvbWVkaWFDb250cm9sc0JsYWNrQmVycnlGdWxsc2NyZWVuLmNzcwogICAgICR7V0VC
Q09SRV9ESVJ9L2Nzcy90aGVtZUJsYWNrQmVycnkuY3NzCiApCiAKQEAgLTEzMSw2ICsxMzYsNyBA
QCBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgIGVkaXRpbmcvYmxhY2tiZXJyeS9FZGl0b3JCbGFja0JlcnJ5LmNw
cAogICAgIGVkaXRpbmcvYmxhY2tiZXJyeS9TbWFydFJlcGxhY2VCbGFja0JlcnJ5LmNwcAorICAg
IGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcAogICAgIGxvYWRlci9ibGFj
a2JlcnJ5L0Nvb2tpZUphckJsYWNrQmVycnkuY3BwCiAgICAgcGFnZS9ibGFja2JlcnJ5L0FjY2Vz
c2liaWxpdHlPYmplY3RCbGFja0JlcnJ5LmNwcAogICAgIHBhZ2UvYmxhY2tiZXJyeS9EcmFnQ29u
dHJvbGxlckJsYWNrQmVycnkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVk
aWFDb250cm9sc0JsYWNrQmVycnkuY3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJv
bHNCbGFja0JlcnJ5LmNzcwppbmRleCA0YzAwYTcyNWNkNWEwMTNlOTk4YjIzZmI0Yjc2NDM5YThh
Nzg4NDUxLi4zOGVlZjYzNWQ5ZTZhNDBlYzZlYTJlNTQxYWY1OGRjNzk1NjBjODUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3NzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5jc3MKQEAgLTI4LDQz
ICsyOCw3MSBAQAogIC8qIEJsYWNrQmVycnkgZGVmYXVsdCBtZWRpYSBjb250cm9scy4gKi8KIAog
YXVkaW8geworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCAwLCAwKTsKICAgICB3aWR0aDog
MzAwcHg7CiAgICAgaGVpZ2h0OiAzMnB4OwogfQogCi1hdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1wYW5lbCwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwgeworYXVkaW86
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZW1iZWRkZWQtcGFuZWwsIHZpZGVvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWVtYmVkZGVkLXBhbmVsIHsKICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsK
ICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAgLXdlYmtpdC1ib3gtYWxp
Z246IGNlbnRlcjsKLSAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKICAgICBib3R0b206IDA7CiAgICAgd2lkdGg6IDEwMCU7Ci0gICAgei1pbmRl
eDogMDsKLSAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICBoZWlnaHQ6IGF1dG87Ci0gICAgdGV4
dC1hbGlnbjogY2VudGVyOwotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC42
KTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7CiB9CiAKLXZpZGVvOi13ZWJr
aXQtZnVsbC1wYWdlLW1lZGlhOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIHsKLSAgICBi
b3R0b206IDBweDsKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsLCB2aWRlbzo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCB7CisgICAgZGlzcGxheTogbm9uZTsKIH0KIAot
YXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24sIHZpZGVvOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uIHsKLSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1l
ZGlhLXBsYXktYnV0dG9uOwotICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwordmlkZW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtYnV0dG9uLWdyb3VwLWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtYnV0dG9uLWdyb3VwLWNvbnRhaW5lciB7CisgICAgZGlzcGxheTogbm9u
ZTsKIH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVy
LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZS1jb250YWluZXIgewordmlk
ZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lLWRpc3BsYXktY29udGFp
bmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtZGlzcGxh
eS1jb250YWluZXIgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIgewogICAgIC13ZWJraXQtYXBwZWFyYW5j
ZTogbWVkaWEtY29udHJvbHMtYmFja2dyb3VuZDsKICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsK
ICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgICAgLXdlYmtpdC1ib3gtYWxp
Z246IGNlbnRlcjsKLSAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CisgICAgLXdlYmtpdC1ib3gt
cGFjazoganVzdGlmeTsKKyAgICAtd2Via2l0LWJveC1mbGV4OiAxOworICAgIGJhY2tncm91bmQt
Y29sb3I6IHJnYigwLCAwLCAwKTsKK30KKwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
ZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbiwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVs
bHNjcmVlbi1wbGF5LWJ1dHRvbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24sIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXBsYXktYnV0dG9uIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLXBsYXkt
YnV0dG9uOworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworfQorCithdWRpbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWVsaW5lLWNvbnRhaW5lciwgdmlkZW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZS1jb250YWluZXIgeworICAgIGRp
c3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5l
LWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFp
bmVyIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLWNvbnRyb2xzLWJhY2tncm91bmQ7
CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0
aWNhbDsKKyAgICAtd2Via2l0LWJveC1hbGlnbjogc3RyZXRjaDsKKyAgICAtd2Via2l0LWJveC1w
YWNrOiBjZW50ZXI7CiAgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKLSAgICAtd2Via2l0LXVzZXIt
c2VsZWN0OiBub25lOwogICAgIGhlaWdodDogYXV0bzsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBi
YWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7Cit9CisKK2F1ZGlvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10aW1lLWRpc3BsYXksIHZpZGVvOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10aW1lLWRpc3BsYXkgeworICAgIGRp
c3BsYXk6IG5vbmU7CiB9CiAKIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWN1cnJlbnQt
dGltZS1kaXNwbGF5LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUt
ZGlzcGxheSB7CkBAIC03NCwxOSArMTAyLDI3IEBAIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLWN1cnJlbnQtdGltZS1kaXNwbGF5LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9sCiAg
ICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7
CiAgICAgLXdlYmtpdC1ib3gtZmxleDogMDsKLSAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25l
OwotICAgIGNvbG9yOiB3aGl0ZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7
CisgICAgY29sb3I6ICNmYWZhZmE7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LWZ1bGxzY3JlZW4tdGltZS1yZW1haW5pbmctZGlzcGxheSwgYXVkaW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtZnVsbHNjcmVlbi10aW1lLXJlbWFpbmluZy1kaXNwbGF5IHsKKyAgICBkaXNwbGF5
OiBub25lOwogfQogCi1hdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmlu
Zy1kaXNwbGF5LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmluZy1k
aXNwbGF5IHsKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRp
c3BsYXksIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3Bs
YXkgewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtdGltZS1yZW1haW5pbmctZGlzcGxh
eTsKICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhv
cml6b250YWw7CiAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgICAtd2Via2l0LWJv
eC1wYWNrOiBlbmQ7CiAgICAgLXdlYmtpdC1ib3gtZmxleDogMDsKLSAgICAtd2Via2l0LXVzZXIt
c2VsZWN0OiBub25lOwotICAgIGNvbG9yOiB3aGl0ZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2IoMCwgMCwgMCk7CisgICAgY29sb3I6ICNmYWZhZmE7Cit9CisKK2F1ZGlvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUgeworICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKIGF1
ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLCB2aWRlbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy10aW1lbGluZSB7CkBAIC05NSw0MSArMTMxLDYzIEBAIGF1ZGlvOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10
aW1lbGluZSB7CiAgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKIH0KIAotYXVkaW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24sIHZpZGVvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uIHsKLSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlh
LWZ1bGxzY3JlZW4tYnV0dG9uOwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNj
cmVlbi1mdWxsc2NyZWVuLWJ1dHRvbiwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVs
bHNjcmVlbi1mdWxsc2NyZWVuLWJ1dHRvbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlk
ZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24geworICAgIC13ZWJr
aXQtYXBwZWFyYW5jZTogbWVkaWEtZW50ZXItZnVsbHNjcmVlbi1idXR0b247CiAgICAgZGlzcGxh
eTogLXdlYmtpdC1ib3g7CiB9CiAKLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUt
YnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1tdXRlLWJ1dHRvbiB7CithdWRp
bzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbiB7CisgICAgZGlzcGxh
eTogbm9uZTsKK30KKworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0b24g
ewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtbXV0ZS1idXR0b247CiAgICAgZGlzcGxh
eTogLXdlYmtpdC1ib3g7CiB9CiAKLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVt
ZS1zbGlkZXItY29udGFpbmVyLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUt
c2xpZGVyLWNvbnRhaW5lciB7Cit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1tdXRlLWJ1
dHRvbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtdm9sdW1lLXNsaWRlci1jb250YWluZXIgewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTog
bWVkaWEtdm9sdW1lLXNsaWRlci1jb250YWluZXI7CiAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7
Ci0gICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOworICAgIC13ZWJraXQtYm94LW9y
aWVudDogdmVydGljYWw7CiAgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgICAtd2Vi
a2l0LWJveC1wYWNrOiBlbmQ7CiAgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKICAgICAtd2Via2l0
LXVzZXItc2VsZWN0OiBub25lOwogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAw
cHg7CiAgICAgcmlnaHQ6IDBweDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAs
IDAuNik7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMCwwKTsKIH0KIAotYXVkaW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlciwgdmlkZW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtdm9sdW1lLXNsaWRlciB7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS12
b2x1bWUtc2xpZGVyOwotICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwotICAgIC13ZWJraXQtYm94
LWZsZXg6IDE7Cit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNv
bnRhaW5lciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworYXVkaW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtdm9sdW1lLXNsaWRlciB7CisgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEt
dm9sdW1lLXNsaWRlcjsKKyAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgIC13ZWJraXQt
Ym94LWZsZXg6IDE7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGxlZnQ6IDMlOworICAg
IHJpZ2h0OiAzJTsKK30KKwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNs
aWRlciB7CisgICAgZGlzcGxheTogbm9uZTsKIH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtc2Vlay1iYWNrLWJ1dHRvbiwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtc2Vl
ay1iYWNrLWJ1dHRvbiB7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1zZWVrLWJhY2st
YnV0dG9uOwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24t
ZGl2aWRlciwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24t
ZGl2aWRlciB7CiAgICAgZGlzcGxheTogbm9uZTsKIH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtc2Vlay1mb3J3YXJkLWJ1dHRvbiwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtc2Vlay1mb3J3YXJkLWJ1dHRvbiB7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1z
ZWVrLWZvcndhcmQtYnV0dG9uOwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNj
cmVlbi1idXR0b24tY29udGFpbmVyLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5
LWJ1dHRvbi1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3Jl
ZW4tYnV0dG9uLWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1i
dXR0b24tY29udGFpbmVyIHsKICAgICBkaXNwbGF5OiBub25lOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHNCbGFja0JlcnJ5RnVsbHNjcmVlbi5jc3MgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9sc0JsYWNrQmVycnlGdWxsc2NyZWVuLmNzcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MDQxMjM3YTgxOGM0MTc1ZWY3ZmUyMTkzNDA2MzkxMjlhMDFmOGM2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHNCbGFja0JlcnJ5
RnVsbHNjcmVlbi5jc3MKQEAgLTAsMCArMSwxODggQEAKKy8qCisgKiBCbGFja0JlcnJ5IHNwZWNp
ZmljIG92ZXJyaWRlcyBmb3IgSFRNTDUgbWVkaWEgZWxlbWVudHMuCisgKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyAvKiBCbGFja0JlcnJ5IGZ1bGxzY3JlZW4gdmlkZW8gY29udHJvbHMuICovCisKK2Jv
ZHk6LXdlYmtpdC1mdWxsLXBhZ2UtbWVkaWEgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigw
LCAwLCAwKTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1lbWJlZGRlZC1wYW5lbCB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86
LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCB7CisgICAg
ZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsK
KyAgICAtd2Via2l0LWJveC1hbGlnbjogc3RyZXRjaDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgYm90dG9tOiAwcHg7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiBhdXRvOwor
ICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzgsIDM4LCAzOCwgMC41KTsKK30KKwordmlkZW86
LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAt
Y29udGFpbmVyIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLWNvbnRyb2xzLWJhY2tn
cm91bmQ7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50
OiBob3Jpem9udGFsOworICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CisgICAgLXdlYmtp
dC1ib3gtcGFjazoganVzdGlmeTsKKyAgICAtd2Via2l0LWJveC1mbGV4OiAxOworICAgIGJhY2tn
cm91bmQtY29sb3I6IHJnYigwLCAwLCAwKTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVl
bjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtZGlzcGxheS1jb250YWlu
ZXIgeworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtY29udHJvbHMtYmFja2dyb3VuZDsK
KyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6
b250YWw7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKKyAgICAtd2Via2l0LWJveC1w
YWNrOiBqdXN0aWZ5OworICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogcmdiYSgzOCwgMzgsIDM4LCAwLjUpOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2Ny
ZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIgeworICAg
IGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbiB7CisgICAgLXdlYmtpdC1hcHBl
YXJhbmNlOiBtZWRpYS1wbGF5LWJ1dHRvbjsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKK30K
KwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5
LWJ1dHRvbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNj
cmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWVsaW5lLWNvbnRhaW5l
ciB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1jb250cm9scy1iYWNrZ3JvdW5kOwor
ICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGlj
YWw7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0cmV0Y2g7CisgICAgLXdlYmtpdC1ib3gtcGFj
azogY2VudGVyOworICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CisgICAgaGVpZ2h0OiBhdXRvOwor
ICAgIHdpZHRoOiAxMDAlOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzgsIDM4LCAzOCwg
MC41KTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy10aW1lbGluZS1jb250YWluZXIgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVv
Oi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1j
dXJyZW50LXRpbWUtZGlzcGxheSB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1jdXJy
ZW50LXRpbWUtZGlzcGxheTsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0
LWJveC1vcmllbnQ6IGhvcml6b250YWw7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsK
KyAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CisgICAgLXdlYmtpdC1ib3gtZmxleDogMDsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM4LCAzOCwgMzgsIDAuNSk7CisgICAgY29sb3I6ICNm
YWZhZmE7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtY3VycmVudC10aW1lLWRpc3BsYXkgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3Zp
ZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVl
bi10aW1lLXJlbWFpbmluZy1kaXNwbGF5IHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlh
LXRpbWUtcmVtYWluaW5nLWRpc3BsYXk7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAg
LXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOworICAgIC13ZWJraXQtYm94LWFsaWduOiBj
ZW50ZXI7CisgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOworICAgIC13ZWJraXQtYm94LWZsZXg6
IDA7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzOCwgMzgsIDM4LCAwLjUpOworICAgIGNv
bG9yOiAjZmFmYWZhOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkgeworICAgIGRpc3BsYXk6IG5vbmU7
Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
ZnVsbHNjcmVlbi10aW1lbGluZSB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1zbGlk
ZXI7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtZmxleDogMTsK
K30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10
aW1lbGluZSB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNj
cmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9u
IHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLWV4aXQtZnVsbHNjcmVlbi1idXR0b247
CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3Jl
ZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24geworICAgIGRpc3Bs
YXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtbXV0ZS1idXR0b24geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13
ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlci1j
b250YWluZXIgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1z
Y3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlciB7CisgICAgZGlzcGxh
eTogbm9uZTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1kaXZpZGVyIHsKKyAgICAtd2Via2l0LWFwcGVhcmFu
Y2U6IG1lZGlhLXJld2luZC1idXR0b247CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Cit9CisK
K3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNj
cmVlbi1idXR0b24tY29udGFpbmVyLCB2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lciB7CisgICAgLXdlYmtpdC1hcHBl
YXJhbmNlOiBtZWRpYS1jb250cm9scy1iYWNrZ3JvdW5kOworICAgIGRpc3BsYXk6IC13ZWJraXQt
Ym94OworICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKKyAgICAtd2Via2l0LWJv
eC1hbGlnbjogY2VudGVyOworICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CisgICAgbWluLXdpZHRo
OiAxMDAlOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCAwLCAwKTsKK30KKwordmlkZW86
LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1
dHRvbi1jb250YWluZXIgeworICAgIC13ZWJraXQtYm94LXBhY2s6IHN0YXJ0OworfQorCit2aWRl
bzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9u
LWNvbnRhaW5lciB7CisgICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOworfQorCit2aWRlbzot
d2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYWNlaG9sZGVyIHsK
KyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLWNvbnRyb2xzLWJhY2tncm91bmQ7CisgICAg
ZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKKyAgICBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7CisgICAgbWluLXdpZHRoOiAxMDAlOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5
cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRU
eXBlcy5jcHAKaW5kZXggN2MxMjBjMjFhMzhhMzkxOTZlODQ3NDNlNDViMDM5Y2Y4Y2FmZjBmYi4u
ZWZjMzg1NDRjZGJiNzkxNjMzOWQzZmU5ODYzOTgyZWFmNjk5ZWI1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3Bw
CkBAIC03NCw2ICs3NCw3IEBAIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIG1lZGlhQ29udHJvbEVs
ZW1lbnRUeXBlKE5vZGUqIG5vZGUpCiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaWYg
IVBMQVRGT1JNKEJMQUNLQkVSUlkpCiBjb25zdCBBdG9taWNTdHJpbmcmIHRyYWNrSW5kZXhBdHRy
aWJ1dGVOYW1lKCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFt
ZSwgKCJ4LXdlYmtpdC10cmFjay1pbmRleCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKQEAgLTkyLDYgKzkzLDcgQEAgaW50IHRyYWNrTGlzdEluZGV4Rm9yRWxlbWVudChF
bGVtZW50KiBlbGVtZW50KQogICAgIHJldHVybiB0cmFja0luZGV4OwogfQogI2VuZGlmCisjZW5k
aWYKIAogTWVkaWFDb250cm9sRWxlbWVudDo6TWVkaWFDb250cm9sRWxlbWVudChNZWRpYUNvbnRy
b2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSwgSFRNTEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgOiBt
X21lZGlhQ29udHJvbGxlcigwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaAppbmRleCA5MWIwYzhhMzUxZWEwMmJiNjFkM2Y1
NzAxYTZkNDczODgwNWZhNjQzLi42YTMyZGI0NTdkMzExYzZjZTgzMWQwN2VkODhhZGFhMzhkZGUz
YTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50VHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xFbGVtZW50VHlwZXMuaApAQCAtODAsOSArODAsMTEgQEAgaW5saW5lIEhUTUxNZWRpYUVsZW1l
bnQqIHRvUGFyZW50TWVkaWFFbGVtZW50KFJlbmRlck9iamVjdCogcmVuZGVyZXIpIHsgcmV0dXJu
IHQKIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIG1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKE5vZGUq
KTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkK
IGNvbnN0IEF0b21pY1N0cmluZyYgdHJhY2tJbmRleEF0dHJpYnV0ZU5hbWUoKTsKIGludCB0cmFj
a0xpc3RJbmRleEZvckVsZW1lbnQoRWxlbWVudCopOwogI2VuZGlmCisjZW5kaWYKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggOGI4ZTczZjExZDgxMDgxZjk2
YWVmOWRiZDVjYThiMGU2NmMyNjMwMi4uNmRiZGI1MzUxYzljOGE2MDk1ZjdkZjYyODc2ZDkzZGIy
Y2I0MDVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcApAQCAtNDI5LDYgKzQyOSwxNSBAQCBQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVs
ZW1lbgogCiB2b2lkIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogeworI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCisg
ICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KSB7Cisg
ICAgICAgIC8vIFdlIGRvIG5vdCBtdXRlIHdoZW4gdGhlIG1lZGlhIHBsYXllciB2b2x1bWUvbXV0
ZSBjb250cm9sIGlzIHRvdWNoZWQKKyAgICAgICAgLy8gb24gUGxheWJvb2suIEluc3RlYWQgd2Ug
c2hvdy9oaWRlIHRoZSB2b2x1bWUgc2xpZGVyLgorICAgICAgICBtX2NvbnRyb2xzLT50b2dnbGVW
b2x1bWVTbGlkZXIoKTsKKyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkubW91c2VvdmVyRXZlbnQpCiAgICAgICAgIG1fY29udHJvbHMtPnNob3dWb2x1bWVT
bGlkZXIoKTsKIApAQCAtNzIzLDcgKzczMiw2IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFD
b250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpCiB9
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQogTWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNr
TGlzdEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250cm9scykK
ICAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhQ2xvc2VkQ2FwdGlv
bnNUcmFja0xpc3QpCiAgICAgLCBtX2NvbnRyb2xzKGNvbnRyb2xzKQpAQCAtNzQwLDYgKzc0OCw3
IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50
PiBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uCiAKIHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2Fw
dGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkK
IHsKKyNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAg
ICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAg
ICAgLy8gRklYTUU6IEFkZCBtb2RpZmllciBrZXkgZm9yIGV4Y2x1c2l2aXR5IG92ZXJyaWRlLgpA
QCAtNzcxLDYgKzc4MCw3IEBAIHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xp
c3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVuCiAKICAgICBNZWRpYUNv
bnRyb2xEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKICNlbmRpZgorI2Vu
ZGlmIC8vICFQTEFURk9STShCTEFDS0JFUlJZKQogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1l
ZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6c2hhZG93UHNldWRvSWQo
KSBjb25zdApAQCAtNzgxLDYgKzc5MSw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250
cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpCiAKIHZv
aWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50Ojp1cGRhdGVEaXNw
bGF5KCkKIHsKKyNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNlbGVjdGVkQ2xhc3NW
YWx1ZSwgKCJzZWxlY3RlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
IApAQCAtODIxLDEwICs4MzIsMTIgQEAgdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1Ry
YWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQogICAgICAgICB9CiAgICAgfQogI2VuZGlm
CisjZW5kaWYgLy8gIVBMQVRGT1JNKEJMQUNLQkVSUlkpCiB9CiAKIHZvaWQgTWVkaWFDb250cm9s
Q2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpyZWJ1aWxkVHJhY2tMaXN0TWVudSgpCiB7
CisjaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAg
IC8vIFJlbW92ZSBhbnkgZXhpc3RpbmcgY29udGVudC4KICAgICByZW1vdmVDaGlsZHJlbigpOwpA
QCAtOTEzLDYgKzkyNiw3IEBAIHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xp
c3RFbGVtZW50OjpyZWJ1aWxkVHJhY2tMaXN0TWVudSgpCiAKICAgICB1cGRhdGVEaXNwbGF5KCk7
CiAjZW5kaWYKKyNlbmRpZiAvLyAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKIH0KIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTE5NSwxMCArMTIwOSwxMiBAQCBNZWRpYUNvbnRy
b2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWlu
ZXJFbGVtZW50KERvYwogICAgIAogdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJF
bGVtZW50OjpjcmVhdGVTdWJ0cmVlcyhEb2N1bWVudCogZG9jdW1lbnQpCiB7CisjaWYgIVBMQVRG
T1JNKEJMQUNLQkVSUlkpCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIGN1ZSwgKCJjdWUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAg
ICAgbV9jdWVDb250YWluZXIgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKHNwYW5UYWcsIGRvY3VtZW50
KTsKICAgICBtX2N1ZUNvbnRhaW5lci0+c2V0UHNldWRvKGN1ZSk7CiAgICAgYXBwZW5kQ2hpbGQo
bV9jdWVDb250YWluZXIsIEFTU0VSVF9OT19FWENFUFRJT04sIGZhbHNlKTsKKyNlbmRpZgogfQog
CiBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ+IE1lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1l
bnQpCkBAIC0xMjIxLDYgKzEyMzcsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29ucwogCiB2b2lk
IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQog
eworI2lmICFQTEFURk9STShCTEFDS0JFUlJZKQogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlh
RWxlbWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50KHRoaXMpOwogCiAgICAgLy8gMS4gSWYgdGhl
IG1lZGlhIGVsZW1lbnQgaXMgYW4gYXVkaW8gZWxlbWVudCwgb3IgaXMgYW5vdGhlciBwbGF5YmFj
awpAQCAtMTI4MywxMCArMTMwMCwxMiBAQCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQogCiAgICAgLy8gMTEuIFJldHVybiBvdXRwdXQu
CiAgICAgaGFzQ2hpbGROb2RlcygpID8gc2hvdygpIDogaGlkZSgpOworI2VuZGlmIC8vICFQTEFU
Rk9STShCTEFDS0JFUlJZKQogfQogCiB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5l
ckVsZW1lbnQ6OnVwZGF0ZVNpemVzKCkKIHsKKyNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKICAg
ICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0b1BhcmVudE1lZGlhRWxlbWVudCh0
aGlzKTsKICAgICBpZiAoIW1lZGlhRWxlbWVudCB8fCAhbWVkaWFFbGVtZW50LT5yZW5kZXJlcigp
IHx8ICFtZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCktPmlzVmlkZW8oKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTMwMSw2ICsxMzIwLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWlu
ZXJFbGVtZW50Ojp1cGRhdGVTaXplcygpCiAgICAgICAgIG1fZm9udFNpemUgPSBmb250U2l6ZTsK
ICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBTdHJp
bmc6Om51bWJlcihmb250U2l6ZSkgKyAicHgiKTsKICAgICB9CisjZW5kaWYgLy8gIVBMQVRGT1JN
KEJMQUNLQkVSUlkpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgKaW5kZXggZmE1ZDBiZDAwZDM2ZTgw
OWIwOGU1NzczNTA0MjBlY2E4MmQ2MjJjOC4uZDRiYTAxZGI4MDU2ZDJkMGRhMTQwOWM0MDJlYTI4
NWJiZTZhZWIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9scy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMu
aApAQCAtODMsNiArODMsOSBAQCBjbGFzcyBNZWRpYUNvbnRyb2xzIDogcHVibGljIEhUTUxEaXZF
bGVtZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3RhdHVzRGlzcGxheSgpIHsgfTsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCk7CiAgICAgdmlydHVhbCB2
b2lkIHNob3dWb2x1bWVTbGlkZXIoKTsKKyNpZiBQTEFURk9STShCTEFDS0JFUlJZKQorICAgIHZp
cnR1YWwgdm9pZCB0b2dnbGVWb2x1bWVTbGlkZXIoKSB7IH07CisjZW5kaWYKIAogICAgIHZpcnR1
YWwgdm9pZCBjaGFuZ2VkTXV0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VkVm9sdW1lKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDg5NzViNzdiZmUxNDJkZGFmOGU4MTQ4NDU1NzRkMTVl
MzBkNzA4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDEwODEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIk1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Lmgi
CisKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKKyNpbmNs
dWRlICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkhU
TUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJNZWRp
YUNvbnRyb2xFbGVtZW50cy5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQ
YWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmgiCisjaW5jbHVk
ZSAiUmVuZGVyU2xpZGVyLmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKKyNpbmNsdWRlICJT
ZXR0aW5ncy5oIgorI2luY2x1ZGUgIlRleHQuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykK
KyNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2Ugc3Rk
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisK
K3N0YXRpYyBjb25zdCBkb3VibGUgdGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5n
Q29udHJvbHMgPSAzOworCitpbmxpbmUgTWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJF
bGVtZW50OjpNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQq
IGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFD
b250cm9sc1BhbmVsKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEJ1dHRvbkdyb3Vw
Q29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50
OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xC
dXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFD
b250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgcmV0dXJu
IGVsZW1lbnQucmVsZWFzZSgpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJv
bEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlh
LWNvbnRyb2xzLWJ1dHRvbi1ncm91cC1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlkOworfQorCitpbmxpbmUgTWVkaWFDb250cm9s
VGltZURpc3BsYXlDb250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRh
aW5lckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxl
bWVudChkb2N1bWVudCwgTWVkaWFDb250cm9sc1BhbmVsKQoreworfQorCitQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sVGltZURp
c3BsYXlDb250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAg
IFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQg
PSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50KGRv
Y3VtZW50KSk7CisgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgpOworfQorCitjb25zdCBBdG9t
aWNTdHJpbmcmIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6c2hhZG93
UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlkOworfQor
CitNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6TWVkaWFDb250cm9sRW1iZWRkZWRQ
YW5lbEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxl
bWVudChkb2N1bWVudCwgTWVkaWFDb250cm9sc1BhbmVsKQorICAgICwgbV9jYW5CZURyYWdnZWQo
ZmFsc2UpCisgICAgLCBtX2lzQmVpbmdEcmFnZ2VkKGZhbHNlKQorICAgICwgbV9pc0Rpc3BsYXll
ZChmYWxzZSkKKyAgICAsIG1fb3BhcXVlKHRydWUpCisgICAgLCBtX3RyYW5zaXRpb25UaW1lcih0
aGlzLCAmTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnRyYW5zaXRpb25UaW1lckZp
cmVkKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50
PiBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEVtYmVkZGVkUGFu
ZWxFbGVtZW50KGRvY3VtZW50KSk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250
cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250
cm9scy1lbWJlZGRlZC1wYW5lbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVs
ZW1lbnQ6OnN0YXJ0RHJhZyhjb25zdCBMYXlvdXRQb2ludCYgZXZlbnRMb2NhdGlvbikKK3sKKyAg
ICBpZiAoIW1fY2FuQmVEcmFnZ2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9pc0Jl
aW5nRHJhZ2dlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlz
Qm94KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkt
PmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sYXN0
RHJhZ0V2ZW50TG9jYXRpb24gPSBldmVudExvY2F0aW9uOworCisgICAgZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUodGhpcyk7CisKKyAgICBtX2lzQmVp
bmdEcmFnZ2VkID0gdHJ1ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxl
bWVudDo6Y29udGludWVEcmFnKGNvbnN0IExheW91dFBvaW50JiBldmVudExvY2F0aW9uKQorewor
ICAgIGlmICghbV9pc0JlaW5nRHJhZ2dlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTGF5b3V0
U2l6ZSBkaXN0YW5jZURyYWdnZWQgPSBldmVudExvY2F0aW9uIC0gbV9sYXN0RHJhZ0V2ZW50TG9j
YXRpb247CisgICAgbV9jdW11bGF0aXZlRHJhZ09mZnNldC5tb3ZlKGRpc3RhbmNlRHJhZ2dlZCk7
CisgICAgbV9sYXN0RHJhZ0V2ZW50TG9jYXRpb24gPSBldmVudExvY2F0aW9uOworICAgIHNldFBv
c2l0aW9uKG1fY3VtdWxhdGl2ZURyYWdPZmZzZXQpOworfQorCit2b2lkIE1lZGlhQ29udHJvbEVt
YmVkZGVkUGFuZWxFbGVtZW50OjplbmREcmFnKCkKK3sKKyAgICBpZiAoIW1faXNCZWluZ0RyYWdn
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNCZWluZ0RyYWdnZWQgPSBmYWxzZTsKKwor
ICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJp
bmdNb3VzZUV2ZW50c05vZGUoMCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5l
bEVsZW1lbnQ6OnN0YXJ0VGltZXIoKQoreworICAgIHN0b3BUaW1lcigpOworCisgICAgLy8gVGhl
IHRpbWVyIGlzIHJlcXVpcmVkIHRvIHNldCB0aGUgcHJvcGVydHkgZGlzcGxheTonbm9uZScgb24g
dGhlIHBhbmVsLAorICAgIC8vIHN1Y2ggdGhhdCBjYXB0aW9ucyBhcmUgY29ycmVjdGx5IGRpc3Bs
YXllZCBhdCB0aGUgYm90dG9tIG9mIHRoZSB2aWRlbworICAgIC8vIGF0IHRoZSBlbmQgb2YgdGhl
IGZhZGVvdXQgdHJhbnNpdGlvbi4KKyAgICBkb3VibGUgZHVyYXRpb24gPSBkb2N1bWVudCgpLT5w
YWdlKCkgPyBkb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCktPm1lZGlhQ29udHJvbHNGYWRlT3V0
RHVyYXRpb24oKSA6IDA7CisgICAgbV90cmFuc2l0aW9uVGltZXIuc3RhcnRPbmVTaG90KGR1cmF0
aW9uKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6c3RvcFRp
bWVyKCkKK3sKKyAgICBpZiAobV90cmFuc2l0aW9uVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAg
bV90cmFuc2l0aW9uVGltZXIuc3RvcCgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVk
UGFuZWxFbGVtZW50Ojp0cmFuc2l0aW9uVGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xFbWJl
ZGRlZFBhbmVsRWxlbWVudD4qKQoreworICAgIGlmICghbV9vcGFxdWUpCisgICAgICAgIGhpZGUo
KTsKKworICAgIHN0b3BUaW1lcigpOworfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFu
ZWxFbGVtZW50OjpzZXRQb3NpdGlvbihjb25zdCBMYXlvdXRQb2ludCYgcG9zaXRpb24pCit7Cisg
ICAgZG91YmxlIGxlZnQgPSBwb3NpdGlvbi54KCk7CisgICAgZG91YmxlIHRvcCA9IHBvc2l0aW9u
LnkoKTsKKworICAgIC8vIFNldCB0aGUgbGVmdCBhbmQgdG9wIHRvIGNvbnRyb2wgdGhlIHBhbmVs
J3MgcG9zaXRpb247IHRoaXMgZGVwZW5kcyBvbiBpdCBiZWluZyBhYnNvbHV0ZSBwb3NpdGlvbmVk
LgorICAgIC8vIFNldCB0aGUgbWFyZ2luIHRvIHplcm8gc2luY2UgdGhlIHBvc2l0aW9uIHBhc3Nl
ZCBpbiB3aWxsIGFscmVhZHkgaW5jbHVkZSB0aGUgZWZmZWN0IG9mIHRoZSBtYXJnaW4uCisgICAg
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIGxlZnQsIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUFgpOworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlU
b3AsIHRvcCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgc2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIDAuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QWCk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblRvcCwg
MC4wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgaWdu
b3JlZDsKKyAgICBjbGFzc0xpc3QoKS0+YWRkKCJkcmFnZ2VkIiwgaWdub3JlZCk7Cit9CisKK3Zv
aWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnJlc2V0UG9zaXRpb24oKQorewor
ICAgIHJlbW92ZUlubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0KTsKKyAgICByZW1v
dmVJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wKTsKKyAgICByZW1vdmVJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luTGVmdCk7CisgICAgcmVtb3ZlSW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblRvcCk7CisKKyAgICBFeGNlcHRpb25Db2RlIGln
bm9yZWQ7CisgICAgY2xhc3NMaXN0KCktPnJlbW92ZSgiZHJhZ2dlZCIsIGlnbm9yZWQpOworCisg
ICAgbV9jdW11bGF0aXZlRHJhZ09mZnNldC5zZXRYKDApOworICAgIG1fY3VtdWxhdGl2ZURyYWdP
ZmZzZXQuc2V0WSgwKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVu
dDo6bWFrZU9wYXF1ZSgpCit7CisgICAgaWYgKG1fb3BhcXVlKQorICAgICAgICByZXR1cm47CisK
KyAgICBkb3VibGUgZHVyYXRpb24gPSBkb2N1bWVudCgpLT5wYWdlKCkgPyBkb2N1bWVudCgpLT5w
YWdlKCktPnRoZW1lKCktPm1lZGlhQ29udHJvbHNGYWRlSW5EdXJhdGlvbigpIDogMDsKKworICAg
IHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVy
dHksIENTU1Byb3BlcnR5T3BhY2l0eSk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiwgZHVyYXRpb24sIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUyk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNp
dHksIDEuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworCisgICAgbV9vcGFxdWUg
PSB0cnVlOworCisgICAgaWYgKG1faXNEaXNwbGF5ZWQpCisgICAgICAgIHNob3coKTsKK30KKwor
dm9pZCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6bWFrZVRyYW5zcGFyZW50KCkK
K3sKKyAgICBpZiAoIW1fb3BhcXVlKQorICAgICAgICByZXR1cm47CisKKyAgICBkb3VibGUgZHVy
YXRpb24gPSBkb2N1bWVudCgpLT5wYWdlKCkgPyBkb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkt
Pm1lZGlhQ29udHJvbHNGYWRlT3V0RHVyYXRpb24oKSA6IDA7CisKKyAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCBDU1NQcm9wZXJ0
eU9wYWNpdHkpOworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2l0aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpOwor
ICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5LCAwLjAsIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKworICAgIG1fb3BhcXVlID0gZmFsc2U7CisgICAg
c3RhcnRUaW1lcigpOworfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3sKKyAgICBNZWRpYUNvbnRyb2xE
aXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKKworICAgIGlmIChldmVudC0+
aXNNb3VzZUV2ZW50KCkpIHsKKyAgICAgICAgTGF5b3V0UG9pbnQgbG9jYXRpb24gPSBzdGF0aWNf
Y2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5hYnNvbHV0ZUxvY2F0aW9uKCk7CisgICAgICAgIGlm
IChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiBldmVudC0+
dGFyZ2V0KCkgPT0gdGhpcykgeworICAgICAgICAgICAgc3RhcnREcmFnKGxvY2F0aW9uKTsKKyAg
ICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgICAgICB9IGVsc2UgaWYg
KGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50ICYmIG1faXNCZWlu
Z0RyYWdnZWQpCisgICAgICAgICAgICBjb250aW51ZURyYWcobG9jYXRpb24pOworICAgICAgICBl
bHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQgJiYgbV9p
c0JlaW5nRHJhZ2dlZCkgeworICAgICAgICAgICAgY29udGludWVEcmFnKGxvY2F0aW9uKTsKKyAg
ICAgICAgICAgIGVuZERyYWcoKTsKKyAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFu
ZWxFbGVtZW50OjpzZXRDYW5CZURyYWdnZWQoYm9vbCBjYW5CZURyYWdnZWQpCit7CisgICAgaWYg
KG1fY2FuQmVEcmFnZ2VkID09IGNhbkJlRHJhZ2dlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9jYW5CZURyYWdnZWQgPSBjYW5CZURyYWdnZWQ7CisKKyAgICBpZiAoIWNhbkJlRHJhZ2dlZCkK
KyAgICAgICAgZW5kRHJhZygpOworfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxF
bGVtZW50OjpzZXRJc0Rpc3BsYXllZChib29sIGlzRGlzcGxheWVkKQoreworICAgIG1faXNEaXNw
bGF5ZWQgPSBpc0Rpc3BsYXllZDsKK30KKworaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlz
cGxheUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250
cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFDb250cm9sc1BhbmVsKQoreworfQorCitQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ+
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0
ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVk
aWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudChkb2N1bWVudCkp
OworICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lLWRpc3BsYXkt
Y29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJl
dHVybiBpZDsKK30KKworaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWlu
ZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudChE
b2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50
LCBNZWRpYUNvbnRyb2xzUGFuZWwpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVs
bHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0
b25Db250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudD4gZWxlbWVu
dCA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxl
bWVudChkb2N1bWVudCkpOworICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKK30KKworY29u
c3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxl
bWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0
dG9uLWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICByZXR1cm4gaWQ7Cit9CisKK2lubGluZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2
aWRlckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudChE
b2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50
LCBNZWRpYVJld2luZEJ1dHRvbikKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25E
aXZpZGVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBSZWZQdHI8
TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50PiBlbGVtZW50ID0gYWRv
cHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudChkb2N1
bWVudCkpOworICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKK30KKworY29uc3QgQXRvbWlj
U3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQ6OnNoYWRv
d1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1kaXZpZGVy
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsK
K30KKworaW5saW5lIE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50OjpNZWRp
YUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisg
ICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwp
Cit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1l
bnQ+IE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFp
bmVyRWxlbWVudD4gZWxlbWVudCA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xQbGF5QnV0dG9u
Q29udGFpbmVyRWxlbWVudChkb2N1bWVudCkpOworICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2Uo
KTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFp
bmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0
dG9uLWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAg
ICByZXR1cm4gaWQ7Cit9CisKK2lubGluZSBNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6
Ok1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAg
OiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwpCit7
Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50PiBNZWRpYUNv
bnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7Cisg
ICAgUmVmUHRyPE1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudD4gZWxlbWVudCA9IGFkb3B0
UmVmKG5ldyBNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQoZG9jdW1lbnQpKTsKKyAgICBy
ZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFD
b250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtcGxhY2Vob2xkZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgcmV0dXJuIGlkOworfQorCitpbmxpbmUgTWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlC
dXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50
LCBNZWRpYVBsYXlCdXR0b24pCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNj
cmVlblBsYXlCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudChkb2N1bWVudCkpOworICAgIGJ1
dHRvbi0+Y3JlYXRlU2hhZG93U3VidHJlZSgpOworICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0dG9u
Iik7CisgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9s
RnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBl
dmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVu
dCkgeworICAgICAgICBpZiAobWVkaWFDb250cm9sbGVyKCktPmNhblBsYXkoKSkKKyAgICAgICAg
ICAgIG1lZGlhQ29udHJvbGxlcigpLT5wbGF5KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1lZGlhQ29udHJvbGxlcigpLT5wYXVzZSgpOworICAgICAgICB1cGRhdGVEaXNwbGF5VHlwZSgp
OworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICB9CisgICAgSFRNTElu
cHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Cit9CisKK3ZvaWQgTWVkaWFD
b250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50Ojp1cGRhdGVEaXNwbGF5VHlwZSgpCit7
CisgICAgc2V0RGlzcGxheVR5cGUobWVkaWFDb250cm9sbGVyKCktPmNhblBsYXkoKSA/IE1lZGlh
UGxheUJ1dHRvbiA6IE1lZGlhUGF1c2VCdXR0b24pOworfQorCitjb25zdCBBdG9taWNTdHJpbmcm
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQo
KSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCIt
d2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tcGxheS1idXR0b24iLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlkOworfQorCitpbmxpbmUg
TWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQor
ICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50LCBNZWRpYUV4aXRGdWxsc2Ny
ZWVuQnV0dG9uKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxs
c2NyZWVuQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0
b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0
UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoZG9j
dW1lbnQpKTsKKyAgICBidXR0b24tPmNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKKyAgICBidXR0b24t
PnNldFR5cGUoImJ1dHRvbiIpOworICAgIGJ1dHRvbi0+aGlkZSgpOworICAgIHJldHVybiBidXR0
b24ucmVsZWFzZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVu
QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit7CisgICAg
aWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCisgICAgICAgIC8vIE9ubHkgdXNlIHRoZSBuZXcgZnVsbCBzY3Jl
ZW4gQVBJIGlmIHRoZSBmdWxsU2NyZWVuRW5hYmxlZCBzZXR0aW5nIGhhcyAKKyAgICAgICAgLy8g
YmVlbiBleHBsaWNpdGx5IGVuYWJsZWQuIE90aGVyd2lzZSwgdXNlIHRoZSBvbGQgZnVsbHNjcmVl
biBBUEkuIFRoaXMKKyAgICAgICAgLy8gYWxsb3dzIGFwcHMgd2hpY2ggZW1iZWQgYSBXZWJWaWV3
IHRvIHJldGFpbiB0aGUgZXhpc3RpbmcgZnVsbCBzY3JlZW4KKyAgICAgICAgLy8gdmlkZW8gaW1w
bGVtZW50YXRpb24gd2l0aG91dCByZXF1aXJpbmcgdGhlbSB0byBpbXBsZW1lbnQgdGhlaXIgb3du
IGZ1bGwgCisgICAgICAgIC8vIHNjcmVlbiBiZWhhdmlvci4KKyAgICAgICAgaWYgKGRvY3VtZW50
KCktPnNldHRpbmdzKCkgJiYgZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJs
ZWQoKSkgeworICAgICAgICAgICAgaWYgKGRvY3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigp
ICYmIGRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpID09IHRvUGFy
ZW50TWVkaWFFbGVtZW50KHRoaXMpKQorICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPndlYmtp
dENhbmNlbEZ1bGxTY3JlZW4oKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBk
b2N1bWVudCgpLT5yZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnQodG9QYXJlbnRNZWRpYUVsZW1l
bnQodGhpcyksIDAsIERvY3VtZW50OjpFeGVtcHRJRnJhbWVBbGxvd0Z1bGxTY3JlZW5SZXF1aXJl
bWVudCk7CisgICAgICAgIH0gZWxzZQorI2VuZGlmCisgICAgICAgICAgICBtZWRpYUNvbnRyb2xs
ZXIoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOworICAgIH0KKyAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2
ZW50KTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVs
bHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9s
cy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OnNldElzRnVsbHNjcmVlbihib29sIGlzRnVs
bHNjcmVlbikKK3sKKyAgICBzZXREaXNwbGF5VHlwZShNZWRpYUV4aXRGdWxsc2NyZWVuQnV0dG9u
KTsKK30KKworaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVs
ZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwg
TWVkaWFUaW1lbGluZUNvbnRhaW5lcikKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
VGltZWxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQorewor
ICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50
PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNv
bnRhaW5lckVsZW1lbnQoZG9jdW1lbnQpKTsKKyAgICBlbGVtZW50LT5oaWRlKCk7CisgICAgcmV0
dXJuIGVsZW1lbnQucmVsZWFzZSgpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkg
Y29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdl
YmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWVsaW5lLWNvbnRhaW5lciIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK01l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5UaW1lbGluZUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250
cm9scykKKyAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgTWVkaWFTbGlk
ZXIpCisgICAgLCBtX2NvbnRyb2xzKGNvbnRyb2xzKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lbGluZUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbHMq
IGNvbnRyb2xzKQoreworICAgIEFTU0VSVChjb250cm9scyk7CisKKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudD4gdGltZWxpbmUgPSBhZG9wdFJlZihuZXcg
TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudChkb2N1bWVudCwgY29udHJvbHMp
KTsKKyAgICB0aW1lbGluZS0+Y3JlYXRlU2hhZG93U3VidHJlZSgpOworICAgIHRpbWVsaW5lLT5z
ZXRUeXBlKCJyYW5nZSIpOworICAgIHRpbWVsaW5lLT5zZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0
ciwgImZsb2F0Iik7CisgICAgcmV0dXJuIHRpbWVsaW5lLnJlbGVhc2UoKTsKK30KKwordm9pZCBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50KiBldmVudCkKK3sKKyAgICAvLyBMZWZ0IGJ1dHRvbiBpcyAwLiBSZWplY3RzIG1vdXNl
IGV2ZW50cyBub3QgZnJvbSBsZWZ0IGJ1dHRvbi4KKyAgICBpZiAoZXZlbnQtPmlzTW91c2VFdmVu
dCgpICYmIHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCktPmJ1dHRvbigpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoIWF0dGFjaGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCkKKyAgICAg
ICAgbWVkaWFDb250cm9sbGVyKCktPmJlZ2luU2NydWJiaW5nKCk7CisKKyAgICBpZiAoZXZlbnQt
PnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KQorICAgICAgICBtZWRpYUNvbnRy
b2xsZXIoKS0+ZW5kU2NydWJiaW5nKCk7CisKKyAgICBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLm1vdXNlb3V0RXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vt
b3ZlRXZlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IHRpbWUgPSBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KHZhbHVlKCkudG9Eb3VibGUoKSk7CisgICAgaWYgKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmlucHV0RXZlbnQgJiYgdGltZSAhPSBtZWRpYUNvbnRyb2xsZXIoKS0+
Y3VycmVudFRpbWUoKSkgeworICAgICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAgICBtZWRp
YUNvbnRyb2xsZXIoKS0+c2V0Q3VycmVudFRpbWUodGltZSwgZWMpOworICAgIH0KKworICAgIFJl
bmRlclNsaWRlciogc2xpZGVyID0gdG9SZW5kZXJTbGlkZXIocmVuZGVyZXIoKSk7CisgICAgaWYg
KHNsaWRlciAmJiBzbGlkZXItPmluRHJhZ01vZGUoKSkKKyAgICAgICAgbV9jb250cm9scy0+dXBk
YXRlQ3VycmVudFRpbWVEaXNwbGF5KCk7Cit9CisKK2Jvb2wgTWVkaWFDb250cm9sRnVsbHNjcmVl
blRpbWVsaW5lRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQoreworICAg
IGlmICghYXR0YWNoZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6c2V0
UG9zaXRpb24oZmxvYXQgY3VycmVudFRpbWUpCit7CisgICAgc2V0VmFsdWUoU3RyaW5nOjpudW1i
ZXIoY3VycmVudFRpbWUpKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxp
bmVFbGVtZW50OjpzZXREdXJhdGlvbihmbG9hdCBkdXJhdGlvbikKK3sKKyAgICBzZXRBdHRyaWJ1
dGUobWF4QXR0ciwgU3RyaW5nOjpudW1iZXIoaXNmaW5pdGUoZHVyYXRpb24pID8gZHVyYXRpb24g
OiAwKSk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlblRp
bWVsaW5lRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxz
Y3JlZW4tdGltZWxpbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgcmV0dXJuIGlkOworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1l
UmVtYWluaW5nRGlzcGxheUVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWlu
aW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3Bs
YXlFbGVtZW50KGRvY3VtZW50KSk7Cit9CisKK01lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVt
YWluaW5nRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5n
RGlzcGxheUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sVGlt
ZURpc3BsYXlFbGVtZW50KGRvY3VtZW50LCBNZWRpYVRpbWVSZW1haW5pbmdEaXNwbGF5KQorewor
fQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWlu
aW5nRGlzcGxheUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1m
dWxsc2NyZWVuLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlkOworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJy
ZW50VGltZURpc3BsYXlFbGVtZW50KGRvY3VtZW50KSk7Cit9CisKK01lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3Vy
cmVudFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNv
bnRyb2xUaW1lRGlzcGxheUVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhQ3VycmVudFRpbWVEaXNwbGF5
KQoreworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJy
ZW50VGltZURpc3BsYXlFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJv
bHMtZnVsbHNjcmVlbi1jdXJyZW50LXRpbWUtZGlzcGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK01lZGlhQ29udHJvbHNCbGFj
a0JlcnJ5OjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeShEb2N1bWVudCogZG9jdW1lbnQpCisgICAg
OiBNZWRpYUNvbnRyb2xzKGRvY3VtZW50KQorICAgICwgbV9idXR0b25Db250YWluZXIoMCkKKyAg
ICAsIG1fdGltZURpc3BsYXlDb250YWluZXIoMCkKKyAgICAsIG1fZnVsbHNjcmVlblRpbWVEaXNw
bGF5Q29udGFpbmVyKDApCisgICAgLCBtX2Z1bGxzY3JlZW5QbGF5QnV0dG9uKDApCisgICAgLCBt
X2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXkoMCkKKyAgICAsIG1fZnVsbHNjcmVlblRpbWVs
aW5lKDApCisgICAgLCBtX3RpbWVSZW1haW5pbmdEaXNwbGF5KDApCisgICAgLCBtX2Z1bGxzY3Jl
ZW5UaW1lUmVtYWluaW5nRGlzcGxheSgwKQorICAgICwgbV90aW1lbGluZUNvbnRhaW5lcigwKQor
ICAgICwgbV9mdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXIoMCkKKyAgICAsIG1fZnVsbFNjcmVl
bkRpdmlkZXIoMCkKKyAgICAsIG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24oMCkKKyAgICAs
IG1fbXV0ZUJ1dHRvbigwKQorICAgICwgbV92b2x1bWVTbGlkZXJDb250YWluZXIoMCkKKyAgICAs
IG1fZW1iZWRkZWRQYW5lbCgwKQorICAgICwgbV9mdWxsU2NyZWVuQnV0dG9uQ29udGFpbmVyKDAp
CisgICAgLCBtX3BsYXlCdXR0b25Db250YWluZXIoMCkKKyAgICAsIG1fcGxhY2Vob2xkZXIoMCkK
K3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzPiBNZWRpYUNvbnRyb2xzOjpjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIHJldHVybiBNZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eTo6Y3JlYXRlQ29udHJvbHMoZG9jdW1lbnQpOworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJv
bHNCbGFja0JlcnJ5PiBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6Y3JlYXRlQ29udHJvbHMoRG9j
dW1lbnQqIGRvY3VtZW50KQoreworICAgIGlmICghZG9jdW1lbnQtPnBhZ2UoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sc0JsYWNrQmVycnk+IGNvbnRyb2xz
ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5KGRvY3VtZW50KSk7CisKKyAg
ICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxFbGVtZW50PiBwYW5lbCA9IE1lZGlhQ29udHJvbFBh
bmVsRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRW1i
ZWRkZWRQYW5lbEVsZW1lbnQ+IGVtYmVkUGFuZWwgPSBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVs
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisKKyAg
ICBSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ+IHBsYXlCdXR0b24gPSBNZWRp
YUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9s
cy0+bV9wbGF5QnV0dG9uID0gcGxheUJ1dHRvbi5nZXQoKTsKKyAgICBlbWJlZFBhbmVsLT5hcHBl
bmRDaGlsZChwbGF5QnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVDb250YWlu
ZXJFbGVtZW50PiB0aW1lbGluZUNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFp
bmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xU
aW1lbGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQsIGNvbnRyb2xzLmdldCgpKTsKKyAgICBjb250cm9scy0+bV90aW1lbGlu
ZSA9IHRpbWVsaW5lLmdldCgpOworICAgIHRpbWVsaW5lQ29udGFpbmVyLT5hcHBlbmRDaGlsZCh0
aW1lbGluZS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVy
biAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVu
dD4gdGltZURpc3BsYXlDb250YWluZXIgPSBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5l
ckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sQ3Vy
cmVudFRpbWVEaXNwbGF5RWxlbWVudD4gY3VycmVudFRpbWVEaXNwbGF5ID0gTWVkaWFDb250cm9s
Q3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9s
cy0+bV9jdXJyZW50VGltZURpc3BsYXkgPSBjdXJyZW50VGltZURpc3BsYXkuZ2V0KCk7CisgICAg
dGltZURpc3BsYXlDb250YWluZXItPmFwcGVuZENoaWxkKGN1cnJlbnRUaW1lRGlzcGxheS5yZWxl
YXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAg
UmVmUHRyPE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudD4gdGltZVJlbWFp
bmluZ0Rpc3BsYXkgPSBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCk7CisgICAgY29udHJvbHMtPm1fdGltZVJlbWFpbmluZ0Rpc3BsYXkgPSB0
aW1lUmVtYWluaW5nRGlzcGxheS5nZXQoKTsKKyAgICB0aW1lRGlzcGxheUNvbnRhaW5lci0+YXBw
ZW5kQ2hpbGQodGltZVJlbWFpbmluZ0Rpc3BsYXkucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAg
aWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnRyb2xzLT5tX3RpbWVEaXNwbGF5
Q29udGFpbmVyID0gdGltZURpc3BsYXlDb250YWluZXIuZ2V0KCk7CisgICAgdGltZWxpbmVDb250
YWluZXItPmFwcGVuZENoaWxkKHRpbWVEaXNwbGF5Q29udGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRy
dWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb250cm9scy0+bV90
aW1lbGluZUNvbnRhaW5lciA9IHRpbWVsaW5lQ29udGFpbmVyLmdldCgpOworICAgIGVtYmVkUGFu
ZWwtPmFwcGVuZENoaWxkKHRpbWVsaW5lQ29udGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOwor
ICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGZ1bGxTY3JlZW5CdXR0b24gPSBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+
bV9mdWxsU2NyZWVuQnV0dG9uID0gZnVsbFNjcmVlbkJ1dHRvbi5nZXQoKTsKKyAgICBlbWJlZFBh
bmVsLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwor
ICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoZG9jdW1lbnQtPnBhZ2Uo
KS0+dGhlbWUoKS0+dXNlc01lZGlhQ29udHJvbFZvbHVtZVNsaWRlcigpKSB7CisgICAgICAgIC8v
IFRoZSBtdXRlIGJ1dHRvbiBhbmQgdGhlIHNsaWRlciBlbGVtZW50IHNob3VsZCBiZSBpbiB0aGUg
c2FtZSBkaXYuCisgICAgICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gdm9sdW1lQ29udHJvbENv
bnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworCisgICAgICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiB2b2x1bWVTbGlk
ZXJDb250YWluZXIgPSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOworCisgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbFZvbHVt
ZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICAgICAgY29udHJvbHMtPm1fdm9sdW1lU2xpZGVy
ID0gc2xpZGVyLmdldCgpOworICAgICAgICB2b2x1bWVTbGlkZXJDb250YWluZXItPmFwcGVuZENo
aWxkKHNsaWRlci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICAgICAgaWYgKGVjKQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY29udHJvbHMtPm1fdm9sdW1lU2xpZGVyQ29udGFp
bmVyID0gdm9sdW1lU2xpZGVyQ29udGFpbmVyLmdldCgpOworICAgICAgICB2b2x1bWVDb250cm9s
Q29udGFpbmVyLT5hcHBlbmRDaGlsZCh2b2x1bWVTbGlkZXJDb250YWluZXIucmVsZWFzZSgpLCBl
YywgdHJ1ZSk7CisgICAgICAgIGlmIChlYykKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudD4gbXV0ZUJ1dHRvbiA9
IE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgY29u
dHJvbHMuZ2V0KCkpOworICAgICAgICBjb250cm9scy0+bV9tdXRlQnV0dG9uID0gbXV0ZUJ1dHRv
bi5nZXQoKTsKKyAgICAgICAgdm9sdW1lQ29udHJvbENvbnRhaW5lci0+YXBwZW5kQ2hpbGQobXV0
ZUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICAgICAgZW1iZWRQYW5lbC0+YXBwZW5kQ2hpbGQodm9sdW1lQ29u
dHJvbENvbnRhaW5lci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICAgICAgaWYgKGVjKQorICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IGZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5l
ciA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0
ZShkb2N1bWVudCk7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5l
RWxlbWVudD4gZnVsbHNjcmVlblRpbWVsaW5lID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVs
aW5lRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBjb250cm9scy5nZXQoKSk7CisgICAgY29udHJv
bHMtPm1fZnVsbHNjcmVlblRpbWVsaW5lID0gZnVsbHNjcmVlblRpbWVsaW5lLmdldCgpOworICAg
IGZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoZnVsbHNjcmVlblRpbWVs
aW5lLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVy
RWxlbWVudD4gZnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyID0gTWVkaWFDb250cm9sRnVs
bHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKwor
ICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVu
dD4gZnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheSA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5D
dXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIGNvbnRyb2xz
LT5tX2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXkgPSBmdWxsc2NyZWVuQ3VycmVudFRpbWVE
aXNwbGF5LmdldCgpOworICAgIGZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lci0+YXBwZW5k
Q2hpbGQoZnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheS5yZWxlYXNlKCksIGVjLCB0cnVlKTsK
KyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ+IGZ1bGxzY3JlZW5UaW1lUmVt
YWluaW5nRGlzcGxheSA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxh
eUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgY29udHJvbHMtPm1fZnVsbHNjcmVlblRp
bWVSZW1haW5pbmdEaXNwbGF5ID0gZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5LmdldCgp
OworICAgIGZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoZnVsbHNj
cmVlblRpbWVSZW1haW5pbmdEaXNwbGF5LnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChl
YykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb250cm9scy0+bV9mdWxsc2NyZWVuVGltZURp
c3BsYXlDb250YWluZXIgPSBmdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXIuZ2V0KCk7Cisg
ICAgZnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyLT5hcHBlbmRDaGlsZChmdWxsc2NyZWVuVGlt
ZURpc3BsYXlDb250YWluZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIGNvbnRyb2xzLT5tX2Z1bGxzY3JlZW5UaW1lbGluZUNvbnRh
aW5lciA9IGZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lci5nZXQoKTsKKyAgICBwYW5lbC0+YXBw
ZW5kQ2hpbGQoZnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUp
OworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250
cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50PiBidXR0b25Hcm91cENvbnRhaW5lciA9IE1l
ZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
KworICAgIC8vIEZJWE1FOiBPbmx5IGNyZWF0ZSB3aGVuIG5lZWRlZCA8aHR0cDovL3dlYmtpdC5v
cmcvYi81NzE2Mz4KKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkNvbnRh
aW5lckVsZW1lbnQ+IGZ1bGxTY3JlZW5CdXR0b25Db250YWluZXIgPSBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250
cm9scy0+bV9mdWxsU2NyZWVuQnV0dG9uQ29udGFpbmVyID0gZnVsbFNjcmVlbkJ1dHRvbkNvbnRh
aW5lci5nZXQoKTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5C
dXR0b25FbGVtZW50PiBmdWxsc2NyZWVuRnVsbFNjcmVlbkJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBj
b250cm9scy0+bV9mdWxsc2NyZWVuRnVsbFNjcmVlbkJ1dHRvbiA9IGZ1bGxzY3JlZW5GdWxsU2Ny
ZWVuQnV0dG9uLmdldCgpOworICAgIGZ1bGxTY3JlZW5CdXR0b25Db250YWluZXItPmFwcGVuZENo
aWxkKGZ1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAg
IGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudD4gZnVsbFNjcmVlbkRpdmlkZXIgPSBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAg
Y29udHJvbHMtPm1fZnVsbFNjcmVlbkRpdmlkZXIgPSBmdWxsU2NyZWVuRGl2aWRlci5nZXQoKTsK
KyAgICBmdWxsU2NyZWVuQnV0dG9uQ29udGFpbmVyLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuRGl2
aWRlci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAw
OworICAgIGJ1dHRvbkdyb3VwQ29udGFpbmVyLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuQnV0dG9u
Q29udGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1l
bnQ+IHBsYXlCdXR0b25Db250YWluZXIgPSBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVy
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9wbGF5QnV0dG9uQ29u
dGFpbmVyID0gcGxheUJ1dHRvbkNvbnRhaW5lci5nZXQoKTsKKyAgICBSZWZQdHI8TWVkaWFDb250
cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50PiBmdWxsc2NyZWVuUGxheUJ1dHRvbiA9IE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
KyAgICBjb250cm9scy0+bV9mdWxsc2NyZWVuUGxheUJ1dHRvbiA9IGZ1bGxzY3JlZW5QbGF5QnV0
dG9uLmdldCgpOworICAgIHBsYXlCdXR0b25Db250YWluZXItPmFwcGVuZENoaWxkKGZ1bGxzY3Jl
ZW5QbGF5QnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgYnV0dG9uR3JvdXBDb250YWluZXItPmFwcGVuZENoaWxkKHBsYXlCdXR0
b25Db250YWluZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ+IHBs
YWNlaG9sZGVyID0gTWVkaWFDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQpOworICAgIGNvbnRyb2xzLT5tX3BsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXIuZ2V0KCk7Cisg
ICAgYnV0dG9uR3JvdXBDb250YWluZXItPmFwcGVuZENoaWxkKHBsYWNlaG9sZGVyLnJlbGVhc2Uo
KSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb250
cm9scy0+bV9idXR0b25Db250YWluZXIgPSBidXR0b25Hcm91cENvbnRhaW5lci5nZXQoKTsKKyAg
ICBwYW5lbC0+YXBwZW5kQ2hpbGQoYnV0dG9uR3JvdXBDb250YWluZXIucmVsZWFzZSgpLCBlYywg
dHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChkb2N1bWVu
dC0+cGFnZSgpLT50aGVtZSgpLT5zdXBwb3J0c0Nsb3NlZENhcHRpb25pbmcoKSkgeworICAgICAg
ICBSZWZQdHI8TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiB0
b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA9IE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRp
b25zQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBjb250cm9scy5nZXQoKSk7CisgICAg
ICAgIGNvbnRyb2xzLT5tX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uID0gdG9nZ2xlQ2xvc2Vk
Q2FwdGlvbnNCdXR0b24uZ2V0KCk7CisgICAgICAgIHBhbmVsLT5hcHBlbmRDaGlsZCh0b2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICAgICAgaWYgKGVj
KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgY29udHJvbHMtPm1fcGFuZWwg
PSBwYW5lbC5nZXQoKTsKKyAgICBjb250cm9scy0+YXBwZW5kQ2hpbGQocGFuZWwucmVsZWFzZSgp
LCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnRy
b2xzLT5tX2VtYmVkZGVkUGFuZWwgPSBlbWJlZFBhbmVsLmdldCgpOworICAgIGNvbnRyb2xzLT5h
cHBlbmRDaGlsZChlbWJlZFBhbmVsLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gY29udHJvbHMucmVsZWFzZSgpOworfQor
Cit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlKiBjb250cm9sbGVyKQoreworICAgIGlmIChtX21lZGlhQ29udHJv
bGxlciA9PSBjb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBNZWRpYUNvbnRyb2xz
OjpzZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisKKyAgICBpZiAobV9idXR0b25Db250
YWluZXIpCisgICAgICAgIG1fYnV0dG9uQ29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29u
dHJvbGxlcik7CisgICAgaWYgKG1fdGltZURpc3BsYXlDb250YWluZXIpCisgICAgICAgIG1fdGlt
ZURpc3BsYXlDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBp
ZiAobV9mdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXIpCisgICAgICAgIG1fZnVsbHNjcmVl
blRpbWVEaXNwbGF5Q29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Cisg
ICAgaWYgKG1fZnVsbHNjcmVlblBsYXlCdXR0b24pCisgICAgICAgIG1fZnVsbHNjcmVlblBsYXlC
dXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsc2Ny
ZWVuQ3VycmVudFRpbWVEaXNwbGF5KQorICAgICAgICBtX2Z1bGxzY3JlZW5DdXJyZW50VGltZURp
c3BsYXktPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsc2Ny
ZWVuVGltZWxpbmUpCisgICAgICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lLT5zZXRNZWRpYUNvbnRy
b2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fdGltZVJlbWFpbmluZ0Rpc3BsYXkpCisgICAg
ICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVy
KTsKKyAgICBpZiAobV9mdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXkpCisgICAgICAgIG1f
ZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5LT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJv
bGxlcik7CisgICAgaWYgKG1fdGltZWxpbmVDb250YWluZXIpCisgICAgICAgIG1fdGltZWxpbmVD
b250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9mdWxs
c2NyZWVuVGltZWxpbmVDb250YWluZXIpCisgICAgICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lQ29u
dGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fZnVsbHNj
cmVlbkZ1bGxTY3JlZW5CdXR0b24pCisgICAgICAgIG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0
b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9tdXRlQnV0dG9u
KQorICAgICAgICBtX211dGVCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsK
KyAgICBpZiAobV92b2x1bWVTbGlkZXJDb250YWluZXIpCisgICAgICAgIG1fdm9sdW1lU2xpZGVy
Q29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fZW1i
ZWRkZWRQYW5lbCkKKyAgICAgICAgbV9lbWJlZGRlZFBhbmVsLT5zZXRNZWRpYUNvbnRyb2xsZXIo
Y29udHJvbGxlcik7CisgICAgcmVzZXQoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tC
ZXJyeTo6c2hvdygpCit7CisgICAgaWYgKG1faXNGdWxsc2NyZWVuKSB7CisgICAgICAgIG1fcGFu
ZWwtPnNldElzRGlzcGxheWVkKHRydWUpOworICAgICAgICBtX3BhbmVsLT5zaG93KCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgbV9lbWJlZGRlZFBhbmVsLT5zZXRJc0Rpc3BsYXllZCh0cnVlKTsK
KyAgICAgICAgbV9lbWJlZGRlZFBhbmVsLT5zaG93KCk7CisgICAgfQorfQorCit2b2lkIE1lZGlh
Q29udHJvbHNCbGFja0JlcnJ5OjpoaWRlKCkKK3sKKyAgICBpZiAobV9pc0Z1bGxzY3JlZW4pIHsK
KyAgICAgICAgbV9wYW5lbC0+c2V0SXNEaXNwbGF5ZWQoZmFsc2UpOworICAgICAgICBtX3BhbmVs
LT5oaWRlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9lbWJlZGRlZFBhbmVsLT5zZXRJc0Rp
c3BsYXllZChmYWxzZSk7CisgICAgICAgIG1fZW1iZWRkZWRQYW5lbC0+aGlkZSgpOworICAgICAg
ICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+aGlkZSgpOworICAgIH0KK30KKwordm9pZCBNZWRp
YUNvbnRyb2xzQmxhY2tCZXJyeTo6bWFrZU9wYXF1ZSgpCit7CisgICAgaWYgKG1faXNGdWxsc2Ny
ZWVuKQorICAgICAgICBtX3BhbmVsLT5tYWtlT3BhcXVlKCk7CisgICAgZWxzZQorICAgICAgICBt
X2VtYmVkZGVkUGFuZWwtPm1ha2VPcGFxdWUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeTo6bWFrZVRyYW5zcGFyZW50KCkKK3sKKyAgICBpZiAobV9pc0Z1bGxzY3JlZW4pCisg
ICAgICAgIG1fcGFuZWwtPm1ha2VUcmFuc3BhcmVudCgpOworICAgIGVsc2UgeworICAgICAgICBt
X2VtYmVkZGVkUGFuZWwtPm1ha2VUcmFuc3BhcmVudCgpOworICAgICAgICBtX3ZvbHVtZVNsaWRl
ckNvbnRhaW5lci0+aGlkZSgpOworICAgIH0KK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tC
ZXJyeTo6cmVzZXQoKQoreworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7Cisg
ICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVTdGF0dXNEaXNwbGF5
KCk7CisKKyAgICBpZiAobV9mdWxsU2NyZWVuQnV0dG9uKSB7CisgICAgICAgIGlmIChtX21lZGlh
Q29udHJvbGxlci0+c3VwcG9ydHNGdWxsc2NyZWVuKCkpCisgICAgICAgICAgICBtX2Z1bGxTY3Jl
ZW5CdXR0b24tPnNob3coKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9mdWxsU2NyZWVu
QnV0dG9uLT5oaWRlKCk7CisgICAgfQorICAgIGlmIChtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0
dG9uKSB7CisgICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+c3VwcG9ydHNGdWxsc2NyZWVu
KCkpCisgICAgICAgICAgICBtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLT5zaG93KCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24tPmhp
ZGUoKTsKKyAgICB9CisgICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+ZHVy
YXRpb24oKTsKKyAgICBpZiAoaXNmaW5pdGUoZHVyYXRpb24pIHx8IHBhZ2UtPnRoZW1lKCktPmhh
c093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBhcnQpKSB7CisgICAgICAg
IGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgICAgICBt
X3RpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CisgICAgICAgIG1fZnVsbHNjcmVlblRp
bWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CisgICAgICAgIG1fdGltZWxpbmVDb250YWlu
ZXItPnNob3coKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXItPnNob3co
KTsKKyAgICAgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKKyAgICAgICAgbV9mdWxs
c2NyZWVuVGltZWxpbmUtPnNldFBvc2l0aW9uKG5vdyk7CisgICAgICAgIHVwZGF0ZUN1cnJlbnRU
aW1lRGlzcGxheSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fdGltZWxpbmVDb250YWluZXIt
PmhpZGUoKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXItPmhpZGUoKTsK
KyAgICB9CisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPmhhc0F1ZGlvKCkgfHwgcGFnZS0+
dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBh
cnQpKQorICAgICAgICBtX211dGVCdXR0b24tPnNob3coKTsKKyAgICBlbHNlCisgICAgICAgIG1f
bXV0ZUJ1dHRvbi0+aGlkZSgpOworCisgICAgaWYgKG1fdm9sdW1lU2xpZGVyKQorICAgICAgICBt
X3ZvbHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7CisK
KyAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbikgeworICAgICAgICBpZiAobV9t
ZWRpYUNvbnRyb2xsZXItPmhhc0Nsb3NlZENhcHRpb25zKCkpCisgICAgICAgICAgICBtX3RvZ2ds
ZUNsb3NlZENhcHRpb25zQnV0dG9uLT5zaG93KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPmhpZGUoKTsKKyAgICB9CisKKyAgICBpZiAo
bV9wbGF5QnV0dG9uKQorICAgICAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7
CisKKyAgICBpZiAobV9mdWxsc2NyZWVuUGxheUJ1dHRvbikKKyAgICAgICAgbV9mdWxsc2NyZWVu
UGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKKworICAgIG1ha2VPcGFxdWUoKTsKK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6YnVmZmVyaW5nUHJvZ3Jlc3NlZCgpCit7
CisgICAgLy8gV2Ugb25seSBuZWVkIHRvIHVwZGF0ZSBidWZmZXJpbmcgcHJvZ3Jlc3Mgd2hlbiBw
YXVzZWQsIGR1cmluZyBub3JtYWwKKyAgICAvLyBwbGF5YmFjayBwbGF5YmFja1Byb2dyZXNzZWQo
KSB3aWxsIHRha2UgY2FyZSBvZiBpdC4KKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPnBhdXNl
ZCgpKSB7CisgICAgICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGlt
ZSgpOworICAgICAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOworICAgICAgICBtX2Z1
bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKKyAgICB9Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sc0JsYWNrQmVycnk6OnBsYXliYWNrU3RhcnRlZCgpCit7CisgICAgZmxvYXQgbm93
ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CisgICAgbV9wbGF5QnV0dG9uLT51
cGRhdGVEaXNwbGF5VHlwZSgpOworICAgIG1fZnVsbHNjcmVlblBsYXlCdXR0b24tPnVwZGF0ZURp
c3BsYXlUeXBlKCk7CisgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKKyAgICBtX2Z1
bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKKyAgICB1cGRhdGVDdXJyZW50VGlt
ZURpc3BsYXkoKTsKKworICAgIGlmIChtX2lzRnVsbHNjcmVlbikKKyAgICAgICAgc3RhcnRIaWRl
RnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tC
ZXJyeTo6cGxheWJhY2tQcm9ncmVzc2VkKCkKK3sKKyAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29u
dHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cp
OworICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOworICAgIHVwZGF0
ZUN1cnJlbnRUaW1lRGlzcGxheSgpOworICAgIAorICAgIGlmICghbV9pc01vdXNlT3ZlckNvbnRy
b2xzICYmIG1fbWVkaWFDb250cm9sbGVyLT5oYXNWaWRlbygpKQorICAgICAgICBtYWtlVHJhbnNw
YXJlbnQoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cGxheWJhY2tTdG9w
cGVkKCkKK3sKKyAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUo
KTsKKyAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CisgICAgbV9mdWxsc2Ny
ZWVuUGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKKyAgICBtX3RpbWVsaW5lLT5zZXRQ
b3NpdGlvbihub3cpOworICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cp
OworICAgIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpOworICAgIG1ha2VPcGFxdWUoKTsKKyAg
ICAKKyAgICBzdG9wSGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sc0JsYWNrQmVycnk6OnVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpCit7CisgICAg
ZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CisgICAgZmxvYXQg
ZHVyYXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24oKTsKKworICAgIFBhZ2UqIHBh
Z2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBBbGxvdyB0aGUgdGhlbWUgdG8gZm9ybWF0IHRoZSB0aW1lLgorICAgIEV4Y2Vw
dGlvbkNvZGUgZWM7CisgICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNldElubmVyVGV4dChwYWdl
LT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzQ3VycmVudFRpbWUobm93LCBkdXJhdGlvbiks
IGVjKTsKKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKG5vdyk7Cisg
ICAgbV9mdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhl
bWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc0N1cnJlbnRUaW1lKG5vdywgZHVyYXRpb24pLCBlYyk7
CisgICAgbV9mdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5LT5zZXRDdXJyZW50VmFsdWUobm93
KTsKKyAgICBtX3RpbWVSZW1haW5pbmdEaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUo
KS0+Zm9ybWF0TWVkaWFDb250cm9sc1JlbWFpbmluZ1RpbWUobm93LCBkdXJhdGlvbiksIGVjKTsK
KyAgICBtX3RpbWVSZW1haW5pbmdEaXNwbGF5LT5zZXRDdXJyZW50VmFsdWUobm93IC0gZHVyYXRp
b24pOworICAgIG1fZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5LT5zZXRJbm5lclRleHQo
cGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc1JlbWFpbmluZ1RpbWUobm93LCBkdXJh
dGlvbiksIGVjKTsKKyAgICBtX2Z1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheS0+c2V0Q3Vy
cmVudFZhbHVlKG5vdyAtIGR1cmF0aW9uKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tC
ZXJyeTo6cmVwb3J0ZWRFcnJvcigpCit7CisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBh
Z2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghcGFnZS0+
dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhU2xpZGVyUGFydCkp
IHsKKyAgICAgICAgbV90aW1lbGluZUNvbnRhaW5lci0+aGlkZSgpOworICAgICAgICBtX2Z1bGxz
Y3JlZW5UaW1lbGluZUNvbnRhaW5lci0+aGlkZSgpOworICAgIH0KKworICAgIGlmICghcGFnZS0+
dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBh
cnQpKQorICAgICAgICBtX211dGVCdXR0b24tPmhpZGUoKTsKKworICAgIGlmIChtX2Z1bGxTY3Jl
ZW5CdXR0b24pCisgICAgICAgIG1fZnVsbFNjcmVlbkJ1dHRvbi0+aGlkZSgpOworCisgICAgaWYg
KG1fZnVsbFNjcmVlbkRpdmlkZXIpCisgICAgICAgIG1fZnVsbFNjcmVlbkRpdmlkZXItPmhpZGUo
KTsKKworICAgIGlmIChtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uKQorICAgICAgICBtX2Z1
bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CisKKyAgICBpZiAobV92b2x1bWVTbGlk
ZXJDb250YWluZXIpCisgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5oaWRlKCk7CisK
KyAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiAmJiAhcGFnZS0+dGhlbWUoKS0+
aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNC
dXR0b25QYXJ0KSkKKyAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgp
OworfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpjaGFuZ2VkTXV0ZSgpCit7Cisg
ICAgbV9tdXRlQnV0dG9uLT5jaGFuZ2VkTXV0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNC
bGFja0JlcnJ5OjplbnRlcmVkRnVsbHNjcmVlbigpCit7CisgICAgTWVkaWFDb250cm9sczo6ZW50
ZXJlZEZ1bGxzY3JlZW4oKTsKKworICAgIG1fcGFuZWwtPnNldENhbkJlRHJhZ2dlZCh0cnVlKTsK
KyAgICBtX2VtYmVkZGVkUGFuZWwtPnNldENhbkJlRHJhZ2dlZCh0cnVlKTsKKworICAgIGlmICht
X2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uKQorICAgICAgICBtX2Z1bGxzY3JlZW5GdWxsU2Ny
ZWVuQnV0dG9uLT5zZXRJc0Z1bGxzY3JlZW4odHJ1ZSk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9s
c0JsYWNrQmVycnk6OmV4aXRlZEZ1bGxzY3JlZW4oKQoreworICAgIG1fcGFuZWwtPnNldENhbkJl
RHJhZ2dlZChmYWxzZSk7CisgICAgbV9lbWJlZGRlZFBhbmVsLT5zZXRDYW5CZURyYWdnZWQoZmFs
c2UpOworCisgICAgaWYgKG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24pCisgICAgICAgIG1f
ZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24tPnNldElzRnVsbHNjcmVlbihmYWxzZSk7CisKKyAg
ICAvLyBXZSB3aWxsIGtlZXAgdXNpbmcgdGhlIHBhbmVsLCBidXQgd2Ugd2FudCBpdCB0byBnbyBi
YWNrIHRvIHRoZSBzdGFuZGFyZCBwb3NpdGlvbi4KKyAgICAvLyBUaGlzIHdpbGwgbWF0dGVyIHJp
Z2h0IGF3YXkgYmVjYXVzZSB3ZSB1c2UgdGhlIHBhbmVsIGV2ZW4gd2hlbiBub3QgZnVsbHNjcmVl
bi4KKyAgICAvLyBBbmQgaWYgd2UgcmVlbnRlciBmdWxsc2NyZWVuIHdlIGFsc28gd2FudCB0aGUg
cGFuZWwgaW4gdGhlIHN0YW5kYXJkIHBvc2l0aW9uLgorICAgIG1fcGFuZWwtPnJlc2V0UG9zaXRp
b24oKTsKKyAgICBtX2VtYmVkZGVkUGFuZWwtPnJlc2V0UG9zaXRpb24oKTsKKworICAgIE1lZGlh
Q29udHJvbHM6OmV4aXRlZEZ1bGxzY3JlZW4oKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeTo6c2hvd1ZvbHVtZVNsaWRlcigpCit7CisgICAgaWYgKCFtX21lZGlhQ29udHJvbGxl
ci0+aGFzQXVkaW8oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fdm9sdW1lU2xpZGVy
Q29udGFpbmVyKQorICAgICAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+c2hvdygpOworfQor
Cit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojp0b2dnbGVWb2x1bWVTbGlkZXIoKQorewor
ICAgIGlmICghbV9tZWRpYUNvbnRyb2xsZXItPmhhc0F1ZGlvKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChtX3ZvbHVtZVNsaWRlckNvbnRhaW5lcikgeworICAgICAgICBpZiAobV92b2x1
bWVTbGlkZXJDb250YWluZXItPnJlbmRlcmVyKCkgJiYgbV92b2x1bWVTbGlkZXJDb250YWluZXIt
PnJlbmRlcmVyKCktPnZpc2libGVUb0hpdFRlc3RpbmcoKSkKKyAgICAgICAgICAgIG1fdm9sdW1l
U2xpZGVyQ29udGFpbmVyLT5oaWRlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fdm9s
dW1lU2xpZGVyQ29udGFpbmVyLT5zaG93KCk7CisgICAgfQorfQorCitib29sIE1lZGlhQ29udHJv
bHNCbGFja0JlcnJ5OjpzaG91bGRIaWRlQ29udHJvbHMoKQoreworICAgIGlmIChtX2lzRnVsbHNj
cmVlbikKKyAgICAgICAgcmV0dXJuICFtX3BhbmVsLT5ob3ZlcmVkKCk7CisgICAgcmV0dXJuICFt
X2VtYmVkZGVkUGFuZWwtPmhvdmVyZWQoKTsKK30KK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lNTI2OWYxZTYyZWQxMjE4NDU3NDcyOWNhZjBkNDE2ZGI3MjkxNzFhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVy
cnkuaApAQCAtMCwwICsxLDI4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5X2gKKyNkZWZpbmUg
TWVkaWFDb250cm9sc0JsYWNrQmVycnlfaAorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVk
ZSAiTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxl
bWVudHMuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xzLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7Citj
bGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3MgRXZlbnQ7CitjbGFzcyBNZWRpYVBsYXllcjsK
KworY2xhc3MgUmVuZGVyQm94OworY2xhc3MgUmVuZGVyTWVkaWE7CisKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCitjbGFzcyBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Owor
Y2xhc3MgTWVkaWFDb250cm9sVGV4dFRyYWNrRGlzcGxheUVsZW1lbnQ7CisjZW5kaWYKKworY2xh
c3MgTWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlh
Q29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisK
K3Byb3RlY3RlZDoKKyAgICBNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQo
RG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRv
SWQoKSBjb25zdCBPVkVSUklERTsKK307CisKK2NsYXNzIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5
Q29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5l
ckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworCitwcm90ZWN0ZWQ6CisgICAgTWVkaWFDb250
cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7Cit9Owor
CitjbGFzcyBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNv
bnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNv
bnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisKKyAgICB2b2lk
IHNldENhbkJlRHJhZ2dlZChib29sKTsKKyAgICB2b2lkIHNldElzRGlzcGxheWVkKGJvb2wpOwor
CisgICAgdm9pZCByZXNldFBvc2l0aW9uKCk7CisgICAgdm9pZCBtYWtlT3BhcXVlKCk7CisgICAg
dm9pZCBtYWtlVHJhbnNwYXJlbnQoKTsKKworICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRv
TW91c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRy
dWU7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVs
RWxlbWVudChEb2N1bWVudCopOworCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNo
YWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsKKworICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0
IExheW91dFBvaW50JiBldmVudExvY2F0aW9uKTsKKyAgICB2b2lkIGNvbnRpbnVlRHJhZyhjb25z
dCBMYXlvdXRQb2ludCYgZXZlbnRMb2NhdGlvbik7CisgICAgdm9pZCBlbmREcmFnKCk7CisKKyAg
ICB2b2lkIHN0YXJ0VGltZXIoKTsKKyAgICB2b2lkIHN0b3BUaW1lcigpOworICAgIHZvaWQgdHJh
bnNpdGlvblRpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ+
Kik7CisKKyAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IExheW91dFBvaW50Jik7CisKKyAgICBi
b29sIG1fY2FuQmVEcmFnZ2VkOworICAgIGJvb2wgbV9pc0JlaW5nRHJhZ2dlZDsKKyAgICBib29s
IG1faXNEaXNwbGF5ZWQ7CisgICAgYm9vbCBtX29wYXF1ZTsKKyAgICBMYXlvdXRQb2ludCBtX2xh
c3REcmFnRXZlbnRMb2NhdGlvbjsKKyAgICBMYXlvdXRQb2ludCBtX2N1bXVsYXRpdmVEcmFnT2Zm
c2V0OworCisgICAgVGltZXI8TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ+IG1fdHJh
bnNpdGlvblRpbWVyOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNw
bGF5Q29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZURp
c3BsYXlDb250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworcHJvdGVjdGVkOgor
ICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQoRG9j
dW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQo
KSBjb25zdCBPVkVSUklERTsKK307CisKK2NsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0
b25Db250YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25D
b250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCopOworICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJS
SURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVt
ZW50IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudD4g
Y3JlYXRlKERvY3VtZW50Kik7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVl
bkJ1dHRvbkRpdmlkZXJFbGVtZW50KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7Cit9OworCitjbGFzcyBN
ZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRy
b2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisKK3ByaXZh
dGU6CisgICAgTWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQq
KTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25z
dCBPVkVSUklERTsKK307CisKK2NsYXNzIE1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudCA6
IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCop
OworCitwcml2YXRlOgorICAgIE1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVu
dCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNv
bnN0IE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0
b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVt
ZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRv
TW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRGlzcGxheVR5cGUoKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIE9WRVJSSURFOwor
fTsKKworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50
IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50
PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91
c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIHNldElz
RnVsbHNjcmVlbihib29sKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
RnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIE9WRVJSSURFOworfTsKKworY2xhc3Mg
TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBN
ZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVD
b250YWluZXJFbGVtZW50KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7Cit9OworCitjbGFzcyBNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0
RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVs
bHNjcmVlblRpbWVsaW5lRWxlbWVudD4gY3JlYXRlKERvY3VtZW50KiwgTWVkaWFDb250cm9scyop
OworCisgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZF
UlJJREU7CisgICAgdm9pZCBzZXRQb3NpdGlvbihmbG9hdCk7CisgICAgdm9pZCBzZXREdXJhdGlv
bihmbG9hdCk7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5l
RWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbHMqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIE9WRVJSSURFOworCisgICAgTWVkaWFD
b250cm9scyogbV9jb250cm9sczsKK307CisKK2NsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sVGltZURpc3Bs
YXlFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsK
KworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3Bs
YXlFbGVtZW50KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNo
YWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xU
aW1lRGlzcGxheUVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBjcmVhdGUoRG9jdW1l
bnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVE
aXNwbGF5RWxlbWVudChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250
cm9sc0JsYWNrQmVycnkgOiBwdWJsaWMgTWVkaWFDb250cm9scyB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0JsYWNrQmVycnk+IGNyZWF0ZUNvbnRyb2xzKERv
Y3VtZW50Kik7CisKKyAgICAvLyBNZWRpYUNvbnRyb2xzIGltcGxlbWVudGF0aW9uLgorICAgIHZv
aWQgc2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxlckludGVyZmFjZSopIE9WRVJSSURF
OworCisgICAgdm9pZCBzaG93KCkgT1ZFUlJJREU7CisgICAgdm9pZCBoaWRlKCkgT1ZFUlJJREU7
CisgICAgdm9pZCBtYWtlT3BhcXVlKCkgT1ZFUlJJREU7CisgICAgdm9pZCBtYWtlVHJhbnNwYXJl
bnQoKSBPVkVSUklERTsKKworICAgIHZvaWQgcmVzZXQoKSBPVkVSUklERTsKKworICAgIHZvaWQg
YnVmZmVyaW5nUHJvZ3Jlc3NlZCgpIE9WRVJSSURFOworICAgIHZvaWQgcGxheWJhY2tQcm9ncmVz
c2VkKCkgT1ZFUlJJREU7CisgICAgdm9pZCBwbGF5YmFja1N0YXJ0ZWQoKSBPVkVSUklERTsKKyAg
ICB2b2lkIHBsYXliYWNrU3RvcHBlZCgpIE9WRVJSSURFOworCisgICAgdm9pZCBjaGFuZ2VkTXV0
ZSgpIE9WRVJSSURFOworCisgICAgdm9pZCBlbnRlcmVkRnVsbHNjcmVlbigpIE9WRVJSSURFOwor
ICAgIHZvaWQgZXhpdGVkRnVsbHNjcmVlbigpIE9WRVJSSURFOworCisgICAgdm9pZCByZXBvcnRl
ZEVycm9yKCkgT1ZFUlJJREU7CisKKyAgICB2b2lkIHNob3dWb2x1bWVTbGlkZXIoKSBPVkVSUklE
RTsKKyAgICB2b2lkIHRvZ2dsZVZvbHVtZVNsaWRlcigpIE9WRVJSSURFOworICAgIHZvaWQgdXBk
YXRlQ3VycmVudFRpbWVEaXNwbGF5KCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkSGlkZUNvbnRyb2xzKCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9s
c0JsYWNrQmVycnkoRG9jdW1lbnQqKTsKKworICAgIE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29u
dGFpbmVyRWxlbWVudCogbV9idXR0b25Db250YWluZXI7CisgICAgTWVkaWFDb250cm9sVGltZURp
c3BsYXlDb250YWluZXJFbGVtZW50KiBtX3RpbWVEaXNwbGF5Q29udGFpbmVyOworICAgIE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQqIG1fZnVsbHNjcmVl
blRpbWVEaXNwbGF5Q29udGFpbmVyOworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0
dG9uRWxlbWVudCogbV9mdWxsc2NyZWVuUGxheUJ1dHRvbjsKKyAgICBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudCogbV9mdWxsc2NyZWVuQ3VycmVudFRpbWVE
aXNwbGF5OworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQqIG1fZnVs
bHNjcmVlblRpbWVsaW5lOworICAgIE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxl
bWVudCogbV90aW1lUmVtYWluaW5nRGlzcGxheTsKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
VGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KiBtX2Z1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlz
cGxheTsKKyAgICBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQqIG1fdGltZWxp
bmVDb250YWluZXI7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVy
RWxlbWVudCogbV9mdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXI7CisgICAgTWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50KiBtX2Z1bGxTY3JlZW5EaXZpZGVyOworICAg
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudCogbV9mdWxsc2Ny
ZWVuRnVsbFNjcmVlbkJ1dHRvbjsKKyAgICBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVt
ZW50KiBtX211dGVCdXR0b247CisgICAgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVy
RWxlbWVudCogbV92b2x1bWVTbGlkZXJDb250YWluZXI7CisgICAgTWVkaWFDb250cm9sRW1iZWRk
ZWRQYW5lbEVsZW1lbnQqIG1fZW1iZWRkZWRQYW5lbDsKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudCogbV9mdWxsU2NyZWVuQnV0dG9uQ29udGFpbmVyOwor
ICAgIE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50KiBtX3BsYXlCdXR0b25D
b250YWluZXI7CisgICAgTWVkaWFDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50KiBtX3BsYWNlaG9s
ZGVyOworfTsKKworfQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwCmlu
ZGV4IDk3NWQxZTRmMDE1ZGFlYjQxM2M5YmU1YTdiZDMxMjQyYTY5Mzg0NzIuLmE0NTNkNDA3NDkw
YTBiMjRjNzFhYzA5NzNlYzJkYjRlYTI3NDU5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAK
QEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxNZWRp
YUVsZW1lbnQuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCisjaW5jbHVkZSAiSW5wdXRUeXBl
LmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudHMuaCIKICNpbmNsdWRlICJNZWRpYVBs
YXllclByaXZhdGVCbGFja0JlcnJ5LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNDQsMTAgKzQ1
LDEzIEBAIGNvbnN0IHVuc2lnbmVkIHNtYWxsUmFkaXVzID0gMTsKIGNvbnN0IHVuc2lnbmVkIGxh
cmdlUmFkaXVzID0gMzsKIGNvbnN0IHVuc2lnbmVkIGxpbmVXaWR0aCA9IDE7CiBjb25zdCBmbG9h
dCBtYXJnaW5TaXplID0gNDsKLWNvbnN0IGZsb2F0IG1lZGlhQ29udHJvbHNIZWlnaHQgPSAzMjsK
LWNvbnN0IGZsb2F0IG1lZGlhU2xpZGVyVGh1bWJXaWR0aCA9IDQwOwotY29uc3QgZmxvYXQgbWVk
aWFTbGlkZXJUaHVtYkhlaWdodCA9IDEzOwotY29uc3QgZmxvYXQgbWVkaWFTbGlkZXJUaHVtYlJh
ZGl1cyA9IDU7Citjb25zdCBmbG9hdCBtZWRpYUNvbnRyb2xzSGVpZ2h0ID0gNDQ7Citjb25zdCBm
bG9hdCBtZWRpYUJhY2tCdXR0b25IZWlnaHQgPSAzMzsKK2NvbnN0IGZsb2F0IG1lZGlhU2xpZGVy
T3V0bGluZVdpZHRoID0gMjsKK2NvbnN0IGZsb2F0IG1lZGlhU2xpZGVyVHJhY2tSYWRpdXMgPSAz
OworY29uc3QgZmxvYXQgbWVkaWFTbGlkZXJUaHVtYldpZHRoID0gMjU7Citjb25zdCBmbG9hdCBt
ZWRpYVNsaWRlclRodW1iSGVpZ2h0ID0gMjU7Citjb25zdCBmbG9hdCBtZWRpYVNsaWRlclRodW1i
UmFkaXVzID0gMzsKIGNvbnN0IGZsb2F0IHNsaWRlclRodW1iV2lkdGggPSAxNTsKIGNvbnN0IGZs
b2F0IHNsaWRlclRodW1iSGVpZ2h0ID0gMjU7CiAKQEAgLTEyNCw2ICsxMjgsMTIgQEAgY29uc3Qg
UkdCQTMyIGRyYWdSb2xsRGFyayA9IDB4ZmY2OWE4ZmY7CiBjb25zdCBSR0JBMzIgYmxhY2tQZW4g
PSBDb2xvcjo6YmxhY2s7CiBjb25zdCBSR0JBMzIgZm9jdXNSaW5nUGVuID0gMHhmZmEzYzhmZTsK
IAorY29uc3QgUkdCQTMyIG1lZGlhU2xpZGVyVHJhY2tPdXRsaW5lID0gMHhmZjg0ODU4NzsKK2Nv
bnN0IFJHQkEzMiBtZWRpYVNsaWRlclRyYWNrUGxheWVkID0gMHhmZjJiOGZmZjsKK2NvbnN0IFJH
QkEzMiBtZWRpYVNsaWRlclRyYWNrQnVmZmVyZWQgPSAweGZmYmJiZGJmOworCitjb25zdCBSR0JB
MzIgc2VsZWN0aW9uID0gMHhmZjJiOGZmZjsKKwogZmxvYXQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5
OjpkZWZhdWx0Rm9udFNpemUgPSAxNjsKIAogY29uc3QgU3RyaW5nJiBSZW5kZXJUaGVtZUJsYWNr
QmVycnk6OmRlZmF1bHRHVUlGb250KCkKQEAgLTE2Myw3ICsxNzMsNiBAQCBzdGF0aWMgZmxvYXQg
ZGV0ZXJtaW5lRnVsbFNjcmVlbk11bHRpcGxpZXIoRWxlbWVudCogZWxlbWVudCkKICAgICAgICAg
Ly8gdmlld3BvcnQgc2l6ZSwgYW5kIHRoZSB2aWV3cG9ydCBzaXplIG1pZ2h0IGdldCBvdXRzdHJl
dGNoZWQgdG8gZml0IHRvIHRoZSBzY3JlZW4gZGltZW5zaW9ucy4KICAgICAgICAgLy8gVG8gZml4
IHRoYXQsIGxldHMgc3RyaXBzIG91dCB0aGUgUGFnZSBzY2FsZSBmYWN0b3IgZnJvbSB0aGUgbWVk
aWEgY29udHJvbHMgbXVsdGlwbGllci4KICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBlbGVt
ZW50LT5kb2N1bWVudCgpLT52aWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50
KCktPmN1cnJlbnRab29tRmFjdG9yKCk7Ci0gICAgICAgIHN0YXRpYyBWaWV3cG9ydEFyZ3VtZW50
cyBkZWZhdWx0Vmlld3BvcnRBcmd1bWVudHM7CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yRnVk
Z2UgPSAxIC8gZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3Rvcigp
OwogICAgICAgICBmdWxsU2NyZWVuTXVsdGlwbGllciAvPSBzY2FsZUZhY3RvciAqIHNjYWxlRmFj
dG9yRnVkZ2U7CiAgICAgfQpAQCAtMjk2LDEyICszMDUsMTIgQEAgU3RyaW5nIFJlbmRlclRoZW1l
QmxhY2tCZXJyeTo6ZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpCiB7CiAgICAgcmV0dXJu
IFN0cmluZyhtZWRpYUNvbnRyb2xzQmxhY2tCZXJyeVVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVv
ZihtZWRpYUNvbnRyb2xzQmxhY2tCZXJyeVVzZXJBZ2VudFN0eWxlU2hlZXQpKTsKIH0KKyNlbmRp
ZgogCi1TdHJpbmcgUmVuZGVyVGhlbWVCbGFja0JlcnJ5Ojpmb3JtYXRNZWRpYUNvbnRyb2xzUmVt
YWluaW5nVGltZShmbG9hdCwgZmxvYXQgZHVyYXRpb24pIGNvbnN0CisjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQorU3RyaW5nIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6ZXh0cmFGdWxsU2NyZWVu
U3R5bGVTaGVldCgpCiB7Ci0gICAgLy8gVGhpcyBpcyBhIHdvcmthcm91bmQgdG8gbWFrZSB0aGUg
YXBwZWFyYW5jZSBvZiBtZWRpYSB0aW1lIGNvbnRyb2xsZXIgaW4KLSAgICAvLyBpbi1wYWdlIG1v
ZGUgdGhlIHNhbWUgYXMgaW4gZnVsbHNjcmVlbiBtb2RlLgotICAgIHJldHVybiBmb3JtYXRNZWRp
YUNvbnRyb2xzVGltZShkdXJhdGlvbik7CisgICAgcmV0dXJuIFN0cmluZyhtZWRpYUNvbnRyb2xz
QmxhY2tCZXJyeUZ1bGxzY3JlZW5Vc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YobWVkaWFDb250
cm9sc0JsYWNrQmVycnlGdWxsc2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCkpOwogfQogI2VuZGlm
CiAKQEAgLTY4OSwxMCArNjk4LDEwIEBAIHZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1
c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlCiAgICAgICAg
ICAgICBmdWxsU2NyZWVuTXVsdGlwbGllciA9IGRldGVybWluZUZ1bGxTY3JlZW5NdWx0aXBsaWVy
KHRvRWxlbWVudChzbGlkZXItPm5vZGUoKSkpOwogICAgIH0KIAotICAgIGlmIChwYXJ0ID09IE1l
ZGlhVm9sdW1lU2xpZGVyVGh1bWJQYXJ0IHx8IHBhcnQgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFs
UGFydCB8fCBwYXJ0ID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0KSB7CisgICAgaWYgKHBhcnQg
PT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCB8fCBwYXJ0ID09IFNsaWRlclRodW1iVmVydGlj
YWxQYXJ0KSB7CiAgICAgICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgoKHBhcnQgPT0gU2xpZGVy
VGh1bWJWZXJ0aWNhbFBhcnQgPyBzbGlkZXJUaHVtYkhlaWdodCA6IHNsaWRlclRodW1iV2lkdGgp
ICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIEZpeGVkKSk7CiAgICAgICAgIHN0eWxlLT5zZXRIZWln
aHQoTGVuZ3RoKChwYXJ0ID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0ID8gc2xpZGVyVGh1bWJX
aWR0aCA6IHNsaWRlclRodW1iSGVpZ2h0KSAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCkp
OwotICAgIH0gZWxzZSBpZiAocGFydCA9PSBNZWRpYVNsaWRlclRodW1iUGFydCkgeworICAgIH0g
ZWxzZSBpZiAocGFydCA9PSBNZWRpYVZvbHVtZVNsaWRlclRodW1iUGFydCB8fCBwYXJ0ID09IE1l
ZGlhU2xpZGVyVGh1bWJQYXJ0KSB7CiAgICAgICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgobWVk
aWFTbGlkZXJUaHVtYldpZHRoICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIEZpeGVkKSk7CiAgICAg
ICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKG1lZGlhU2xpZGVyVGh1bWJIZWlnaHQgKiBmdWxs
U2NyZWVuTXVsdGlwbGllciwgRml4ZWQpKTsKICAgICB9CkBAIC03MTgsMTAgKzcyNywzMSBAQCBi
b29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3Qq
IG9iamVjdCwgY29uc3QgUGFpbnRJbgogCiBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFp
bnRTbGlkZXJUcmFja1JlY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYg
aW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlPiBi
YWNrZ3JvdW5kOwotICAgIGlmICghYmFja2dyb3VuZCkKLSAgICAgICAgYmFja2dyb3VuZCA9IGxv
YWRJbWFnZSgiY29yZV9zbGlkZXJfYmciKTsKLSAgICByZXR1cm4gcGFpbnRTbGlkZXJUcmFja1Jl
Y3Qob2JqZWN0LCBpbmZvLCByZWN0LCBiYWNrZ3JvdW5kLmdldCgpKTsKKyAgICByZXR1cm4gcGFp
bnRTbGlkZXJUcmFja1JlY3Qob2JqZWN0LCBpbmZvLCByZWN0LCByYW5nZVNsaWRlclJlZ3VsYXJU
b3BPdXRsaW5lLCByYW5nZVNsaWRlclJlZ3VsYXJCb3R0b21PdXRsaW5lLCByYW5nZVNsaWRlclJl
Z3VsYXJUb3AsIHJhbmdlU2xpZGVyUmVndWxhckJvdHRvbSk7Cit9CisKK2Jvb2wgUmVuZGVyVGhl
bWVCbGFja0JlcnJ5OjpwYWludFNsaWRlclRyYWNrUmVjdChSZW5kZXJPYmplY3QqIG9iamVjdCwg
Y29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0LCBSR0JBMzIgc3Ryb2tl
Q29sb3JTdGFydCwgUkdCQTMyIHN0cm9rZUNvbG9yRW5kLCBSR0JBMzIgZmlsbENvbG9yU3RhcnQs
IFJHQkEzMiBmaWxsQ29sb3JFbmQpCit7CisgICAgRmxvYXRTaXplIHNtYWxsQ29ybmVyKG1lZGlh
U2xpZGVyVHJhY2tSYWRpdXMsIG1lZGlhU2xpZGVyVHJhY2tSYWRpdXMpOworCisgICAgaW5mby5j
b250ZXh0LT5zYXZlKCk7CisgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0
cm9rZSk7CisgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MobGluZVdpZHRoKTsK
KworI2lmIFVTRShTS0lBKQorICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoY3Jl
YXRlTGluZWFyR3JhZGllbnQoc3Ryb2tlQ29sb3JTdGFydCwgc3Ryb2tlQ29sb3JFbmQsIHJlY3Qu
bWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7CisgICAgaW5mby5jb250
ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQoZmlsbENvbG9yU3RhcnQs
IGZpbGxDb2xvckVuZCwgcmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29ybmVy
KCkpKTsKKyNlbHNlCisgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihzdHJva2VDb2xv
clN0YXJ0LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBpbmZvLmNvbnRleHQtPnNldEZpbGxD
b2xvcihmaWxsQ29sb3JTdGFydCwgQ29sb3JTcGFjZURldmljZVJHQik7CisjZW5kaWYKKworICAg
IFBhdGggcGF0aDsKKyAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIHNtYWxsQ29ybmVyKTsK
KyAgICBpbmZvLmNvbnRleHQtPmZpbGxQYXRoKHBhdGgpOworCisgICAgaW5mby5jb250ZXh0LT5y
ZXN0b3JlKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIFJlbmRlclRoZW1lQmxhY2tC
ZXJyeTo6cGFpbnRTbGlkZXJUcmFja1JlY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBh
aW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCwgSW1hZ2UqIGluYWN0aXZlKQpAQCAt
ODA1LDI5ICs4MzUsNDcgQEAgdm9pZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFkanVzdE1lZGlh
Q29udHJvbFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSoKICAgICAvLyBXZSB1c2Ug
bXVsdGlwbGVzIG9mIG1lZGlhQ29udHJvbHNIZWlnaHQgdG8gbWFrZSBhbGwgb2JqZWN0cyBzY2Fs
ZSBldmVubHkKICAgICBMZW5ndGggemVybygwLCBGaXhlZCk7CiAgICAgTGVuZ3RoIGNvbnRyb2xz
SGVpZ2h0KG1lZGlhQ29udHJvbHNIZWlnaHQgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQp
OwotICAgIExlbmd0aCB0aW1lV2lkdGgobWVkaWFDb250cm9sc0hlaWdodCAqIDMgLyAyICogZnVs
bFNjcmVlbk11bHRpcGxpZXIsIEZpeGVkKTsKLSAgICBMZW5ndGggdm9sdW1lSGVpZ2h0KG1lZGlh
Q29udHJvbHNIZWlnaHQgKiA0ICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIEZpeGVkKTsKLSAgICBM
ZW5ndGggcGFkZGluZyhtZWRpYUNvbnRyb2xzSGVpZ2h0IC8gOCAqIGZ1bGxTY3JlZW5NdWx0aXBs
aWVyLCBGaXhlZCk7Ci0gICAgZmxvYXQgZm9udFNpemUgPSBtZWRpYUNvbnRyb2xzSGVpZ2h0IC8g
MiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyOworICAgIExlbmd0aCBoYWxmQ29udHJvbHNXaWR0aCht
ZWRpYUNvbnRyb2xzSGVpZ2h0IC8gMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCk7Cisg
ICAgTGVuZ3RoIGRpc3BsYXlIZWlnaHQobWVkaWFDb250cm9sc0hlaWdodCAvIDMgKiBmdWxsU2Ny
ZWVuTXVsdGlwbGllciwgRml4ZWQpOworICAgIExlbmd0aCBwYWRkaW5nKG1lZGlhQ29udHJvbHNI
ZWlnaHQgLyAxMCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCk7CisgICAgZmxvYXQgZm9u
dFNpemUgPSBtZWRpYUNvbnRyb2xzSGVpZ2h0IC8gMyAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyOwog
CiAgICAgc3dpdGNoIChzdHlsZS0+YXBwZWFyYW5jZSgpKSB7CiAgICAgY2FzZSBNZWRpYVBsYXlC
dXR0b25QYXJ0OgorICAgICAgICBzdHlsZS0+c2V0V2lkdGgoY29udHJvbHNIZWlnaHQpOworICAg
ICAgICBzdHlsZS0+c2V0SGVpZ2h0KGNvbnRyb2xzSGVpZ2h0KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBNZWRpYU11dGVCdXR0b25QYXJ0OgorICAgICAgICBzdHlsZS0+c2V0UGFkZGluZ0xl
ZnQocGFkZGluZyk7CisgICAgICAgIHN0eWxlLT5zZXRXaWR0aChjb250cm9sc0hlaWdodCk7Cisg
ICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoY29udHJvbHNIZWlnaHQpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIE1lZGlhUmV3aW5kQnV0dG9uUGFydDoKKyAgICAgICAgLy8gV2UgaGktamFjayB0
aGUgUmV3aW5kIEJ1dHRvbiBJRCB0byB1c2UgaXQgZm9yIHRoZSBkaXZpZGVyIGltYWdlCisgICAg
ICAgIHN0eWxlLT5zZXRXaWR0aChoYWxmQ29udHJvbHNXaWR0aCk7CisgICAgICAgIHN0eWxlLT5z
ZXRIZWlnaHQoY29udHJvbHNIZWlnaHQpOworICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlh
RW50ZXJGdWxsc2NyZWVuQnV0dG9uUGFydDoKKyAgICAgICAgc3R5bGUtPnNldFBhZGRpbmdSaWdo
dChwYWRkaW5nKTsKKyAgICAgICAgc3R5bGUtPnNldFdpZHRoKGNvbnRyb2xzSGVpZ2h0KTsKKyAg
ICAgICAgc3R5bGUtPnNldEhlaWdodChjb250cm9sc0hlaWdodCk7CisgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgTWVkaWFFeGl0RnVsbHNjcmVlbkJ1dHRvblBhcnQ6Ci0gICAgY2FzZSBNZWRpYU11
dGVCdXR0b25QYXJ0OgorICAgICAgICBzdHlsZS0+c2V0TGVmdCh6ZXJvKTsKICAgICAgICAgc3R5
bGUtPnNldFdpZHRoKGNvbnRyb2xzSGVpZ2h0KTsKICAgICAgICAgc3R5bGUtPnNldEhlaWdodChj
b250cm9sc0hlaWdodCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFDdXJyZW50VGlt
ZVBhcnQ6CiAgICAgY2FzZSBNZWRpYVRpbWVSZW1haW5pbmdQYXJ0OgotICAgICAgICBzdHlsZS0+
c2V0V2lkdGgodGltZVdpZHRoKTsKLSAgICAgICAgc3R5bGUtPnNldEhlaWdodChjb250cm9sc0hl
aWdodCk7CisgICAgICAgIHN0eWxlLT5zZXRXaWR0aChjb250cm9sc0hlaWdodCk7CisgICAgICAg
IHN0eWxlLT5zZXRIZWlnaHQoZGlzcGxheUhlaWdodCk7CiAgICAgICAgIHN0eWxlLT5zZXRQYWRk
aW5nUmlnaHQocGFkZGluZyk7CisgICAgICAgIHN0eWxlLT5zZXRQYWRkaW5nTGVmdChwYWRkaW5n
KTsKKyAgICAgICAgc3R5bGUtPnNldFBhZGRpbmdCb3R0b20ocGFkZGluZyk7CiAgICAgICAgIHN0
eWxlLT5zZXRGb250U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGZvbnRTaXplKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXJQYXJ0OgotICAgICAgICBz
dHlsZS0+c2V0V2lkdGgoY29udHJvbHNIZWlnaHQpOwotICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0
KHZvbHVtZUhlaWdodCk7CisgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoY29udHJvbHNIZWlnaHQp
OwogICAgICAgICBzdHlsZS0+c2V0Qm90dG9tKGNvbnRyb2xzSGVpZ2h0KTsKICAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKQEAgLTg0NCwxMiArODkyLDE0IEBAIHZvaWQgUmVuZGVyVGhlbWVC
bGFja0JlcnJ5OjphZGp1c3RNZWRpYUNvbnRyb2xTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVy
U3R5bGUqCiAgICAgICAgIGNhc2UgTWVkaWFFeGl0RnVsbHNjcmVlbkJ1dHRvblBhcnQ6CiAgICAg
ICAgICAgICBzdHlsZS0+c2V0UG9zaXRpb24oQWJzb2x1dGVQb3NpdGlvbik7CiAgICAgICAgICAg
ICBzdHlsZS0+c2V0Qm90dG9tKHplcm8pOworICAgICAgICAgICAgc3R5bGUtPnNldExlZnQoemVy
byk7CiAgICAgICAgICAgICBzdHlsZS0+c2V0UmlnaHQoY29udHJvbHNIZWlnaHQpOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWVkaWFNdXRlQnV0dG9uUGFydDoKKyAgICAgICAg
Y2FzZSBNZWRpYVJld2luZEJ1dHRvblBhcnQ6CisgICAgICAgICAgICAvLyBXZSBoaS1qYWNrIHRo
ZSBSZXdpbmQgQnV0dG9uIElEIHRvIHVzZSBpdCBmb3IgdGhlIGRpdmlkZXIgaW1hZ2UKICAgICAg
ICAgICAgIHN0eWxlLT5zZXRQb3NpdGlvbihBYnNvbHV0ZVBvc2l0aW9uKTsKICAgICAgICAgICAg
IHN0eWxlLT5zZXRCb3R0b20oemVybyk7Ci0gICAgICAgICAgICBzdHlsZS0+c2V0UmlnaHQoemVy
byk7CisgICAgICAgICAgICBzdHlsZS0+c2V0TGVmdChjb250cm9sc0hlaWdodCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtODYy
LDE3ICs5MTIsMTIgQEAgdm9pZCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFkanVzdFNsaWRlclRy
YWNrU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKgogICAgIGZsb2F0IGZ1bGxTY3Jl
ZW5NdWx0aXBsaWVyID0gZGV0ZXJtaW5lRnVsbFNjcmVlbk11bHRpcGxpZXIoZWxlbWVudCk7CiAK
ICAgICAvLyBXZSB1c2UgbXVsdGlwbGVzIG9mIG1lZGlhQ29udHJvbHNIZWlnaHQgdG8gbWFrZSBh
bGwgb2JqZWN0cyBzY2FsZSBldmVubHkKLSAgICBMZW5ndGggY29udHJvbHNIZWlnaHQobWVkaWFD
b250cm9sc0hlaWdodCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCk7Ci0gICAgTGVuZ3Ro
IHZvbHVtZUhlaWdodChtZWRpYUNvbnRyb2xzSGVpZ2h0ICogNCAqIGZ1bGxTY3JlZW5NdWx0aXBs
aWVyLCBGaXhlZCk7CisgICAgTGVuZ3RoIGNvbnRyb2xzSGVpZ2h0KG1lZGlhQ29udHJvbHNIZWln
aHQgLyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIEZpeGVkKTsKICAgICBzd2l0Y2ggKHN0eWxl
LT5hcHBlYXJhbmNlKCkpIHsKICAgICBjYXNlIE1lZGlhU2xpZGVyUGFydDoKLSAgICAgICAgc3R5
bGUtPnNldEhlaWdodChjb250cm9sc0hlaWdodCk7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TWVkaWFWb2x1bWVTbGlkZXJQYXJ0OgotICAgICAgICBzdHlsZS0+c2V0V2lkdGgoY29udHJvbHNI
ZWlnaHQpOwotICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KHZvbHVtZUhlaWdodCk7CisgICAgICAg
IHN0eWxlLT5zZXRIZWlnaHQoY29udHJvbHNIZWlnaHQpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIE1lZGlhRnVsbFNjcmVlblZvbHVtZVNsaWRlclBhcnQ6CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgYnJlYWs7CiAgICAgfQpAQCAtOTA0LDYgKzk0OSwyOSBAQCBib29sIFJlbmRlclRoZW1lQmxh
Y2tCZXJyeTo6cGFpbnRNZWRpYVBsYXlCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0
IFBhaQogI2VuZGlmCiB9CiAKKy8vIFdlIGhpLWphY2sgdGhlIFJld2luZCBCdXR0b24gY29kZSB0
byB1c2UgaXQgZm9yIHRoZSBkaXZpZGVyIGltYWdlCitib29sIFJlbmRlclRoZW1lQmxhY2tCZXJy
eTo6cGFpbnRNZWRpYVJld2luZEJ1dHRvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisjaWYgRU5BQkxFKFZJ
REVPKQorICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50TWVkaWFF
bGVtZW50KG9iamVjdCk7CisKKyAgICBpZiAoIW1lZGlhRWxlbWVudCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFtZWRpYUVsZW1lbnQtPmlzRnVsbHNjcmVlbigpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0aWMgSW1hZ2UqIGRpdmlkZXIgPSBJbWFnZTo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UoImRpdmlkZXIiKS5sZWFrUmVmKCk7CisKKyAgICByZXR1cm4gcGFp
bnRNZWRpYUJ1dHRvbihwYWludEluZm8uY29udGV4dCwgcmVjdCwgZGl2aWRlcik7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOworICAgIFVOVVNFRF9QQVJBTShwYWludEluZm8pOwor
ICAgIFVOVVNFRF9QQVJBTShyZWN0KTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwog
Ym9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9i
amVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYg
cmVjdCkKIHsKICNpZiBFTkFCTEUoVklERU8pCkBAIC05MTIsMTAgKzk4MCw5IEBAIGJvb2wgUmVu
ZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmplY3QqIG9i
amVjdCwgY29uc3QgUGFpCiAgICAgaWYgKCFtZWRpYUVsZW1lbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIHN0YXRpYyBJbWFnZSogbWVkaWFNdXRlID0gSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKCJzcGVha2VyIikubGVha1JlZigpOwotICAgIHN0YXRpYyBJbWFnZSogbWVkaWFV
bm11dGUgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInNwZWFrZXJfbXV0ZSIpLmxlYWtS
ZWYoKTsKKyAgICBzdGF0aWMgSW1hZ2UqIGRpdmlkZXIgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoInNwZWFrZXIiKS5sZWFrUmVmKCk7CiAKLSAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRv
bihwYWludEluZm8uY29udGV4dCwgcmVjdCwgbWVkaWFFbGVtZW50LT5tdXRlZCgpIHx8ICFtZWRp
YUVsZW1lbnQtPnZvbHVtZSgpID8gbWVkaWFVbm11dGUgOiBtZWRpYU11dGUpOworICAgIHJldHVy
biBwYWludE1lZGlhQnV0dG9uKHBhaW50SW5mby5jb250ZXh0LCByZWN0LCBkaXZpZGVyKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhaW50SW5m
byk7CkBAIC05MzIsNyArOTk5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50
TWVkaWFGdWxsc2NyZWVuQnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb24KICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgc3RhdGljIEltYWdlKiBtZWRpYUVudGVyRnVsbHNjcmVlbiA9
IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgiZnVsbHNjcmVlbiIpLmxlYWtSZWYoKTsKLSAg
ICBzdGF0aWMgSW1hZ2UqIG1lZGlhRXhpdEZ1bGxzY3JlZW4gPSBJbWFnZTo6bG9hZFBsYXRmb3Jt
UmVzb3VyY2UoImV4aXRfZnVsbHNjcmVlbiIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgSW1hZ2Uq
IG1lZGlhRXhpdEZ1bGxzY3JlZW4gPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImJhY2si
KS5sZWFrUmVmKCk7CiAKICAgICBJbWFnZSogYnV0dG9uSW1hZ2UgPSBtZWRpYUVudGVyRnVsbHNj
cmVlbjsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBAIC05NTksMzggKzEwMjYsMzAgQEAg
Ym9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFTbGlkZXJUcmFjayhSZW5kZXJP
YmplY3QqIG9iamVjdCwgY29uc3QgUGEKICAgICBmbG9hdCBsb2FkZWQgPSBtZWRpYUVsZW1lbnQt
PnBlcmNlbnRMb2FkZWQoKTsKICAgICBmbG9hdCBwb3NpdGlvbiA9IG1lZGlhRWxlbWVudC0+ZHVy
YXRpb24oKSA+IDAgPyAobWVkaWFFbGVtZW50LT5jdXJyZW50VGltZSgpIC8gbWVkaWFFbGVtZW50
LT5kdXJhdGlvbigpKSA6IDA7CiAKLSAgICBpbnQgeCA9IGNlaWwocmVjdC54KCkgKyAyICogZnVs
bFNjcmVlbk11bHRpcGxpZXIgLSBmdWxsU2NyZWVuTXVsdGlwbGllciAvIDIpOwotICAgIGludCB5
ID0gY2VpbChyZWN0LnkoKSArIDE0ICogZnVsbFNjcmVlbk11bHRpcGxpZXIgKyBmdWxsU2NyZWVu
TXVsdGlwbGllciAvIDIpOwotICAgIGludCB3ID0gY2VpbChyZWN0LndpZHRoKCkgLSA0ICogZnVs
bFNjcmVlbk11bHRpcGxpZXIgKyBmdWxsU2NyZWVuTXVsdGlwbGllciAvIDIpOwotICAgIGludCBo
ID0gY2VpbCgyICogZnVsbFNjcmVlbk11bHRpcGxpZXIpOworICAgIGludCBpbnRyaW5zaWNIZWln
aHQgPSBjZWlsKG1lZGlhU2xpZGVyVGh1bWJIZWlnaHQgLyA0KTsKKyAgICBpbnQgeCA9IGNlaWwo
cmVjdC54KCkgKyAobWVkaWFDb250cm9sc0hlaWdodCAtIGludHJpbnNpY0hlaWdodCkgLyAyICog
ZnVsbFNjcmVlbk11bHRpcGxpZXIgLSBmdWxsU2NyZWVuTXVsdGlwbGllciAvIDIpOworICAgIGlu
dCB5ID0gY2VpbChyZWN0LnkoKSArIChtZWRpYUNvbnRyb2xzSGVpZ2h0IC8gMiAtIGludHJpbnNp
Y0hlaWdodCkgLyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIgKyBmdWxsU2NyZWVuTXVsdGlwbGll
ciAvIDIpOworICAgIGludCB3ID0gY2VpbChyZWN0LndpZHRoKCkgLSAobWVkaWFDb250cm9sc0hl
aWdodCAtIGludHJpbnNpY0hlaWdodCkgKiBmdWxsU2NyZWVuTXVsdGlwbGllciArIGZ1bGxTY3Jl
ZW5NdWx0aXBsaWVyIC8gMik7CisgICAgaW50IGggPSBjZWlsKGludHJpbnNpY0hlaWdodCAqIGZ1
bGxTY3JlZW5NdWx0aXBsaWVyKTsKICAgICBJbnRSZWN0IHJlY3QyKHgsIHksIHcsIGgpOwogCiAg
ICAgaW50IHdQbGF5ZWQgPSBjZWlsKHcgKiBwb3NpdGlvbik7CiAgICAgaW50IHdMb2FkZWQgPSBj
ZWlsKCh3IC0gbWVkaWFTbGlkZXJUaHVtYldpZHRoICogZnVsbFNjcmVlbk11bHRpcGxpZXIpICog
bG9hZGVkICsgbWVkaWFTbGlkZXJUaHVtYldpZHRoICogZnVsbFNjcmVlbk11bHRpcGxpZXIpOwog
CiAgICAgSW50UmVjdCBwbGF5ZWQoeCwgeSwgd1BsYXllZCwgaCk7Ci0gICAgSW50UmVjdCBidWZm
ZXJlZCh4LCB5LCB3TG9hZGVkLCBoKTsKKyAgICBJbnRSZWN0IGJ1ZmZlcmVkKHgsIGNlaWwoeSAr
IG1lZGlhU2xpZGVyT3V0bGluZVdpZHRoKSwgd0xvYWRlZCwgY2VpbChoIC0gMiAqIG1lZGlhU2xp
ZGVyT3V0bGluZVdpZHRoKSk7CiAKICAgICAvLyBUaGlzIGlzIHRvIHBhaW50IG1haW4gc2xpZGVy
IGJhci4KLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlPiB0cmFja0ltYWdlOwotICAgIGlmICghdHJh
Y2tJbWFnZSkKLSAgICAgICAgdHJhY2tJbWFnZSA9IGxvYWRJbWFnZSgiY29yZV9zbGlkZXJfbWVk
aWFfYmciKTsKLSAgICBib29sIHJlc3VsdCA9IHBhaW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwg
cGFpbnRJbmZvLCByZWN0MiwgdHJhY2tJbWFnZS5nZXQoKSk7CisgICAgYm9vbCByZXN1bHQgPSBw
YWludFNsaWRlclRyYWNrUmVjdChvYmplY3QsIHBhaW50SW5mbywgcmVjdDIpOwogCiAgICAgaWYg
KGxvYWRlZCA+IDAgfHwgcG9zaXRpb24gPiAwKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgdG8gcGFp
bnQgYnVmZmVyZWQgYmFyLgotICAgICAgICBzdGF0aWMgUmVmUHRyPEltYWdlPiBidWZmZXJlZElt
YWdlLCBwbGF5ZWRJbWFnZTsKLSAgICAgICAgaWYgKCFidWZmZXJlZEltYWdlKSB7Ci0gICAgICAg
ICAgICBidWZmZXJlZEltYWdlID0gbG9hZEltYWdlKCJjb3JlX3NsaWRlcl9idWZmZXJlZF9iZyIp
OwotICAgICAgICAgICAgcGxheWVkSW1hZ2UgPSBsb2FkSW1hZ2UoImNvcmVfc2xpZGVyX3BsYXll
ZF9iZyIpOwotICAgICAgICB9Ci0gICAgICAgIHBhaW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwg
cGFpbnRJbmZvLCBidWZmZXJlZCwgYnVmZmVyZWRJbWFnZS5nZXQoKSk7CisgICAgICAgIHBhaW50
U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJbmZvLCBidWZmZXJlZCwgQ29sb3I6OmRhcmtH
cmF5LCBDb2xvcjo6ZGFya0dyYXksIENvbG9yOjpkYXJrR3JheSwgQ29sb3I6OmRhcmtHcmF5KTsK
IAogICAgICAgICAvLyBUaGlzIGlzIHRvIHBhaW50IHBsYXllZCBwYXJ0IG9mIGJhciAobGVmdCBv
ZiBzbGlkZXIgdGh1bWIpIHVzaW5nIHNlbGVjdGlvbiBjb2xvci4KLSAgICAgICAgcGFpbnRTbGlk
ZXJUcmFja1JlY3Qob2JqZWN0LCBwYWludEluZm8sIHBsYXllZCwgcGxheWVkSW1hZ2UuZ2V0KCkp
OworICAgICAgICBwYWludFNsaWRlclRyYWNrUmVjdChvYmplY3QsIHBhaW50SW5mbywgcGxheWVk
LCBzZWxlY3Rpb24sIHNlbGVjdGlvbiwgc2VsZWN0aW9uLCBzZWxlY3Rpb24pOwogICAgIH0KICAg
ICByZXR1cm4gcmVzdWx0OwotCiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOwogICAg
IFVOVVNFRF9QQVJBTShwYWludEluZm8pOwpAQCAtMTAwMiwxNSArMTA2MSwzNCBAQCBib29sIFJl
bmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCog
b2JqZWN0LCBjb25zdCBQYQogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFT
bGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAjaWYgRU5BQkxFKFZJREVPKQorI2lmIFVTRShT
S0lBKQogICAgIFJlbmRlclNsaWRlciogc2xpZGVyID0gZGV0ZXJtaW5lUmVuZGVyU2xpZGVyKG9i
amVjdCk7CiAgICAgaWYgKCFzbGlkZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0
YXRpYyBJbWFnZSogbWVkaWFWb2x1bWVUaHVtYiA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJj
ZSgidm9sdW1lX3RodW1iIikubGVha1JlZigpOworICAgIGZsb2F0IGZ1bGxTY3JlZW5NdWx0aXBs
aWVyID0gZGV0ZXJtaW5lRnVsbFNjcmVlbk11bHRpcGxpZXIodG9FbGVtZW50KHNsaWRlci0+bm9k
ZSgpKSk7CisKKyAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOworICAgIFBhdGggbWVkaWFU
aHVtYlJvdW5kZWRSZWN0YW5nbGU7CisgICAgbWVkaWFUaHVtYlJvdW5kZWRSZWN0YW5nbGUuYWRk
Um91bmRlZFJlY3QocmVjdCwgRmxvYXRTaXplKG1lZGlhU2xpZGVyVGh1bWJSYWRpdXMgKiBmdWxs
U2NyZWVuTXVsdGlwbGllciwgbWVkaWFTbGlkZXJUaHVtYlJhZGl1cyAqIGZ1bGxTY3JlZW5NdWx0
aXBsaWVyKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ry
b2tlKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDAuNSk7Cisg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjaywgQ29sb3JT
cGFjZURldmljZVJHQik7CisKKyAgICBpZiAoaXNQcmVzc2VkKG9iamVjdCkgfHwgaXNIb3ZlcmVk
KG9iamVjdCkgfHwgc2xpZGVyLT5pbkRyYWdNb2RlKCkpCisgICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQoc2VsZWN0aW9uLCBDb2xv
cihzZWxlY3Rpb24pLmRhcmsoKS5yZ2IoKSwgcmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1h
eFhNYXhZQ29ybmVyKCkpKTsKKyAgICBlbHNlCisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5z
ZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQoQ29sb3I6OndoaXRlLCBDb2xvcihD
b2xvcjo6d2hpdGUpLmRhcmsoKS5yZ2IoKSwgcmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1h
eFhNYXhZQ29ybmVyKCkpKTsKIAotICAgIGRyYXdDb250cm9sKHBhaW50SW5mby5jb250ZXh0LCBy
ZWN0LCBtZWRpYVZvbHVtZVRodW1iKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFBhdGgo
bWVkaWFUaHVtYlJvdW5kZWRSZWN0YW5nbGUpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0
b3JlKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlIC8vIEdMIHJlbmRlcmVyCisgICAgc3Rh
dGljIEltYWdlKiBtZWRpYVNsaWRlclRodW1iID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNl
KCJjb3JlX3NsaWRlcl9oYW5kbGVfZGlzYWJsZWQiKS5sZWFrUmVmKCk7CisKKyAgICByZXR1cm4g
cGFpbnRNZWRpYUJ1dHRvbihwYWludEluZm8uY29udGV4dCwgcmVjdCwgbWVkaWFTbGlkZXJUaHVt
Yik7CisjZW5kaWYgLy8gVVNFKFNLSUEpCiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShvYmplY3Qp
OwogICAgIFVOVVNFRF9QQVJBTShwYWludEluZm8pOwpAQCAtMTAyMiwxOSArMTEwMCwyOSBAQCBi
b29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNsaWRlclRodW1iKFJlbmRlck9i
amVjdCogb2JqZWN0LCBjb25zdCBQYQogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50
TWVkaWFWb2x1bWVTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAjaWYgRU5BQkxFKFZJREVP
KQotICAgIGZsb2F0IHBhZCA9IHJlY3Qud2lkdGgoKSAqIDAuNDU7Ci0gICAgZmxvYXQgeCA9IHJl
Y3QueCgpICsgcGFkOwotICAgIGZsb2F0IHkgPSByZWN0LnkoKSArIHBhZDsKLSAgICBmbG9hdCB3
aWR0aCA9IHJlY3Qud2lkdGgoKSAqIDAuMTsKLSAgICBmbG9hdCBoZWlnaHQgPSByZWN0LmhlaWdo
dCgpIC0gKDIuMCAqIHBhZCk7CisgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0g
dG9QYXJlbnRNZWRpYUVsZW1lbnQob2JqZWN0KTsKKyAgICBpZiAoIW1lZGlhRWxlbWVudCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSW50UmVjdCByZWN0Mih4LCB5LCB3aWR0aCwgaGVp
Z2h0KTsKKyAgICBmbG9hdCBmdWxsU2NyZWVuTXVsdGlwbGllciA9IGRldGVybWluZUZ1bGxTY3Jl
ZW5NdWx0aXBsaWVyKG1lZGlhRWxlbWVudCk7CisgICAgZmxvYXQgdm9sdW1lID0gbWVkaWFFbGVt
ZW50LT52b2x1bWUoKSA+IDAgPyBtZWRpYUVsZW1lbnQtPnZvbHVtZSgpIDogMDsKKworICAgIGlu
dCBpbnRyaW5zaWNIZWlnaHQgPSBjZWlsKG1lZGlhU2xpZGVyVGh1bWJIZWlnaHQgLyA0KTsKKyAg
ICBpbnQgeCA9IGNlaWwocmVjdC54KCkgKyAobWVkaWFDb250cm9sc0hlaWdodCAtIGludHJpbnNp
Y0hlaWdodCkgLyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIgLSBmdWxsU2NyZWVuTXVsdGlwbGll
ciAvIDIpOworICAgIGludCB5ID0gY2VpbChyZWN0LnkoKSArIChtZWRpYUNvbnRyb2xzSGVpZ2h0
IC8gMiAtIGludHJpbnNpY0hlaWdodCkgLyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIgKyBmdWxs
U2NyZWVuTXVsdGlwbGllciAvIDIpOworICAgIGludCB3ID0gY2VpbChyZWN0LndpZHRoKCkgLSAo
bWVkaWFDb250cm9sc0hlaWdodCAtIGludHJpbnNpY0hlaWdodCkgKiBmdWxsU2NyZWVuTXVsdGlw
bGllciArIGZ1bGxTY3JlZW5NdWx0aXBsaWVyIC8gMik7CisgICAgaW50IGggPSBjZWlsKGludHJp
bnNpY0hlaWdodCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyKTsKKyAgICBJbnRSZWN0IHJlY3QyKHgs
IHksIHcsIGgpOworICAgIEludFJlY3Qgdm9sdW1lUmVjdCh4LCB5LCBjZWlsKHcgKiB2b2x1bWUp
LCBoKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHRyYWNrSW1hZ2U7Ci0gICAgaWYgKCF0
cmFja0ltYWdlKQotICAgICAgICB0cmFja0ltYWdlID0gbG9hZEltYWdlKCJjb3JlX3NsaWRlcl9t
ZWRpYV9iZyIpOworICAgIC8vIFRoaXMgaXMgdG8gcGFpbnQgbWFpbiB2b2x1bWUgc2xpZGVyIGJh
ci4KKyAgICBib29sIHJlc3VsdCA9IHBhaW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJ
bmZvLCByZWN0MiwgQ29sb3IobWVkaWFTbGlkZXJUcmFja091dGxpbmUpLnJnYigpLCBDb2xvciht
ZWRpYVNsaWRlclRyYWNrT3V0bGluZSkucmdiKCksIHJhbmdlU2xpZGVyUmVndWxhclRvcCwgcmFu
Z2VTbGlkZXJSZWd1bGFyVG9wKTsKIAotICAgIHJldHVybiBwYWludFNsaWRlclRyYWNrUmVjdChv
YmplY3QsIHBhaW50SW5mbywgcmVjdDIsIHRyYWNrSW1hZ2UuZ2V0KCkpOworICAgIGlmICh2b2x1
bWUgPiAwKSB7CisgICAgICAgIC8vIFRoaXMgaXMgdG8gcGFpbnQgdm9sdW1lIGJhciAobGVmdCBv
ZiB2b2x1bWUgc2xpZGVyIHRodW1iKSB1c2luZyBzZWxlY3Rpb24gY29sb3IuCisgICAgICAgIHBh
aW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJbmZvLCB2b2x1bWVSZWN0LCBDb2xvciht
ZWRpYVNsaWRlclRyYWNrT3V0bGluZSkucmdiKCksIENvbG9yKG1lZGlhU2xpZGVyVHJhY2tPdXRs
aW5lKS5yZ2IoKSwgc2VsZWN0aW9uLCBzZWxlY3Rpb24pOworICAgIH0KKyAgICByZXR1cm4gcmVz
dWx0OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKICAgICBVTlVTRURfUEFSQU0o
cGFpbnRJbmZvKTsKQEAgLTEwNDYsOSArMTEzNCwyOSBAQCBib29sIFJlbmRlclRoZW1lQmxhY2tC
ZXJyeTo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogb2JqZWN0LCBj
bwogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUaHVt
YihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEludFJlY3QmIHJlY3QpCiB7CiAjaWYgRU5BQkxFKFZJREVPKQotICAgIHN0YXRpYyBJbWFnZSog
bWVkaWFWb2x1bWVUaHVtYiA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidm9sdW1lX3Ro
dW1iIikubGVha1JlZigpOworI2lmIFVTRShTS0lBKQorICAgIFJlbmRlclNsaWRlciogc2xpZGVy
ID0gZGV0ZXJtaW5lUmVuZGVyU2xpZGVyKG9iamVjdCk7CisgICAgaWYgKCFzbGlkZXIpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHBhaW50SW5m
by5jb250ZXh0LCByZWN0LCBtZWRpYVZvbHVtZVRodW1iKTsKKyAgICBmbG9hdCBmdWxsU2NyZWVu
TXVsdGlwbGllciA9IGRldGVybWluZUZ1bGxTY3JlZW5NdWx0aXBsaWVyKHRvRWxlbWVudChzbGlk
ZXItPm5vZGUoKSkpOworCisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICBQYXRo
IG1lZGlhVGh1bWJSb3VuZGVkUmVjdGFuZ2xlOworICAgIG1lZGlhVGh1bWJSb3VuZGVkUmVjdGFu
Z2xlLmFkZFJvdW5kZWRSZWN0KHJlY3QsIEZsb2F0U2l6ZShtZWRpYVNsaWRlclRodW1iSGVpZ2h0
IC8gMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBtZWRpYVNsaWRlclRodW1iSGVpZ2h0IC8gMiAq
IGZ1bGxTY3JlZW5NdWx0aXBsaWVyKSk7CisKKyAgICBpZiAoaXNQcmVzc2VkKG9iamVjdCkgfHwg
aXNIb3ZlcmVkKG9iamVjdCkgfHwgc2xpZGVyLT5pbkRyYWdNb2RlKCkpCisgICAgICAgIHBhaW50
SW5mby5jb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQoc2VsZWN0
aW9uLCBDb2xvcihzZWxlY3Rpb24pLmRhcmsoKS5yZ2IoKSwgcmVjdC5tYXhYTWluWUNvcm5lcigp
LCByZWN0Lm1heFhNYXhZQ29ybmVyKCkpKTsKKyAgICBlbHNlCisgICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQobWVkaWFTbGlkZXJU
cmFja091dGxpbmUsIENvbG9yOjpibGFjaywgcmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1h
eFhNYXhZQ29ybmVyKCkpKTsKKworICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUGF0aChtZWRp
YVRodW1iUm91bmRlZFJlY3RhbmdsZSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUo
KTsKKworICAgIHJldHVybiB0cnVlOworI2Vsc2UgLy8gR0wgcmVuZGVyZXIKKyAgICByZXR1cm4g
cGFpbnRNZWRpYVNsaWRlclRodW1iKG9iamVjdCwgcGFpbnRJbmZvLCByZWN0KTsKKyNlbmRpZiAv
LyBVU0UoU0tJQSkKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7CiAgICAgVU5VU0VE
X1BBUkFNKHBhaW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuaAppbmRleCA1MDdkNDUxMzQ4ZDM1
ZmU0NTQ2NTQwMTA5YmEzNzU2ZDYzNjg1ZWU1Li4xZWViNTViOTkyMWMwYTgyM2U3YjM3ZTEzZDYw
ZDNmNzc4Yjc1MWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmgKQEAgLTMyLDcgKzMyLDEwIEBAIHB1
YmxpYzoKIAogI2lmIEVOQUJMRShWSURFTykKICAgICB2aXJ0dWFsIFN0cmluZyBleHRyYU1lZGlh
Q29udHJvbHNTdHlsZVNoZWV0KCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgZm9ybWF0TWVkaWFDb250
cm9sc1JlbWFpbmluZ1RpbWUoZmxvYXQgY3VycmVudFRpbWUsIGZsb2F0IGR1cmF0aW9uKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgdXNlc1ZlcnRpY2FsVm9sdW1lU2xpZGVyKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICB2
aXJ0dWFsIFN0cmluZyBleHRyYUZ1bGxTY3JlZW5TdHlsZVNoZWV0KCk7CiAjZW5kaWYKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNIb3Zlcihjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KIApAQCAtODIsNiArODUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IHBhaW50TWVkaWFWb2x1bWVTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFQbGF5QnV0
dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlh
UmV3aW5kQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCBkb3VibGUgYW5p
bWF0aW9uUmVwZWF0SW50ZXJ2YWxGb3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyopIGNvbnN0
OwogICAgIHZpcnR1YWwgZG91YmxlIGFuaW1hdGlvbkR1cmF0aW9uRm9yUHJvZ3Jlc3NCYXIoUmVu
ZGVyUHJvZ3Jlc3MqKSBjb25zdDsKQEAgLTEwNCw5ICsxMDgsMTMgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldEJ1dHRvblN0eWxlKFJlbmRlclN0eWxlKikgY29uc3Q7CiAKICAgICBib29sIHBhaW50
VGV4dEZpZWxkT3JUZXh0QXJlYU9yU2VhcmNoRmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworCiAgICAgYm9vbCBwYWludFNsaWRlclRyYWNrUmVj
dChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAKKyAg
ICBib29sIHBhaW50U2xpZGVyVHJhY2tSZWN0KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmLCBSR0JBMzIsIFJHQkEzMiwgUkdCQTMyLCBSR0JBMzIpOworCiAg
ICAgYm9vbCBwYWludFNsaWRlclRyYWNrUmVjdChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0JiwgSW1hZ2UqKTsKKwogICAgIEludFJlY3QgY29udmVydFRvUGFp
bnRpbmdSZWN0KFJlbmRlck9iamVjdCogaW5wdXRSZW5kZXJlciwgY29uc3QgUmVuZGVyT2JqZWN0
KiBwYXJ0UmVuZGVyZXIsIExheW91dFJlY3QgcGFydFJlY3QsIGNvbnN0IEludFJlY3QmIGxvY2Fs
T2Zmc2V0KSBjb25zdDsKIAogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179061</attachid>
            <date>2012-12-12 09:02:09 -0800</date>
            <delta_ts>2012-12-12 12:58:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104443-20121212115930.patch</filename>
            <type>text/plain</type>
            <size>100875</size>
            <attacher name="John Griggs">jgriggs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjlkMDUzZTQ2MDQwZmE5
NmZhNzgzOTQ1ZWI1MzcxODc5N2IxNTNlNi4uYjA1MzE5ODgxNmMzZmFlODgwMTFjMDBhMjVkMTg2
ZGIxMDJiMmM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTEyLTEyICBKb2hu
IEdyaWdncyAgPGpncmlnZ3NAcmltLmNvbT4KKworICAgICAgICAyMDEyLTEyLTEyICBKb2huIEdy
aWdncyAgPGpncmlnZ3NAcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gVXBkYXRlIE1l
ZGlhIENvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDQ0NDMKKyAgICAgICAgaHR0cHM6Ly9wcnppbGxhLm90dC5xbnguY29tL2J1Z3ppbGxh
L3Nob3dfYnVnLmNnaT9pZD0yMDQ3NDgKKworICAgICAgICBVcGRhdGUgTWVkaWEgQ29udHJvbHMg
Zm9yIEJsYWNrQmVycnkgcGxhdGZvcm0gdG8gYWxsb3cgYXVkaW8sIGVtYmVkZGVkIHZpZGVvIGFu
ZCBmdWxsc2NyZWVuIHZpZGVvIGNvbnRyb2xzIHRvIGJlIHBvc2l0aW9uZWQgYW5kIHN0eWxlZCBk
aWZmZXJlbnRseS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBCbGFja0JlcnJ5LXNwZWNpZmljIHVwZGF0ZSB0byBNZWRpYSBDb250cm9scyAtIE5vIG5l
dyB0ZXN0cyByZXF1aXJlZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZToKKyAgICAgICAgKiBjc3MvbWVkaWFDb250cm9sc0Js
YWNrQmVycnkuY3NzOgorICAgICAgICAoYXVkaW8pOgorICAgICAgICAoYXVkaW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZW1iZWRkZWQtcGFuZWwsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLWVtYmVkZGVkLXBhbmVsKToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXBhbmVsLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCk6CisgICAgICAg
ICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAtY29udGFpbmVyLCBh
dWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAtY29udGFpbmVyKToKKyAg
ICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1kaXNw
bGF5LWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10
aW1lLWRpc3BsYXktY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIpOgorICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbiwgYXVkaW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbik6CisgICAgICAgICh2aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtcGxheS1idXR0b24pOgorICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
ZnVsbHNjcmVlbi10aW1lbGluZS1jb250YWluZXIsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUtY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyKToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10aW1lLWRpc3BsYXksIHZpZGVvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10aW1lLWRpc3BsYXkpOgor
ICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtY3VycmVudC10aW1lLWRpc3Bs
YXksIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWN1cnJlbnQtdGltZS1kaXNwbGF5KToK
KyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1y
ZW1haW5pbmctZGlzcGxheSwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVl
bi10aW1lLXJlbWFpbmluZy1kaXNwbGF5KToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXksIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkpOgorICAgICAgICAoYXVkaW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZSwgdmlkZW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZSk6CisgICAgICAgICh2aWRlbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uLCBhdWRpbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uKToKKyAgICAgICAg
KHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uKToKKyAgICAg
ICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uKToKKyAg
ICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uKToKKyAgICAg
ICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uKToKKyAgICAgICAg
KGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXItY29udGFpbmVyKToK
KyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXItY29u
dGFpbmVyKToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1z
bGlkZXIpOgorICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNs
aWRlcik6CisgICAgICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVu
LWJ1dHRvbi1kaXZpZGVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVu
LWJ1dHRvbi1kaXZpZGVyKToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LWZ1bGxzY3JlZW4tYnV0dG9uLWNvbnRhaW5lciwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtcGxheS1idXR0b24tY29udGFpbmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1m
dWxsc2NyZWVuLWJ1dHRvbi1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXBsYXktYnV0dG9uLWNvbnRhaW5lcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudFR5cGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVs
ZW1lbnQ6OnVwZGF0ZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sQ2xv
c2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpyZWJ1aWxkVHJhY2tMaXN0TWVudSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVh
dGVTdWJ0cmVlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250
YWluZXJFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKToKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmg6CisgICAgICAgIChNZWRpYUNvbnRyb2xzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OnRvZ2dsZVZvbHVtZVNsaWRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6
OmV4dHJhRnVsbFNjcmVlblN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVCbGFja0JlcnJ5OjphZGp1c3RTbGlkZXJUaHVtYlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludFNsaWRlclRyYWNrUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFkanVzdE1lZGlhQ29udHJvbFN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0U2xpZGVyVHJh
Y2tTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50
TWVkaWFSZXdpbmRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0Jl
cnJ5OjpwYWludE1lZGlhTXV0ZUJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUJsYWNrQmVycnk6OnBhaW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNsaWRlclRodW1i
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVZv
bHVtZVNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJy
eTo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRodW1iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFj
a2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVCbGFja0JlcnJ5Ojp1c2VzVmVydGljYWxWb2x1bWVTbGlkZXIpOgorICAgICAgICAoUmVu
ZGVyVGhlbWVCbGFja0JlcnJ5KToKKwogMjAxMi0xMi0xMiAgSWx5YSBUaWtob25vdnNreSAgPGxv
aXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTmF0aXZlIE1lbW9y
eSBJbnN0cnVtZW50YXRpb246IHJlbW92ZSBmYWtlIHJvb3QgTWVtb3J5T2JqZWN0SW5mby4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggODcyYzI1MGI0YjJiNTRiMjQ5ODQwMWE2ZmFjMjE0ZTA4MTMw
NThlMy4uZTNjYTljOWU4YTg3ZDVkZDRmYThiZmRmOWI5MzBjNDNhYTg3YzU1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTE5OTQsNiArMTk5NCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKIAog
ICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcAogICAgIHBsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcAorICAgIHBsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1CbGFja0JlcnJ5LmNtYWtlCmluZGV4IGNiOWU5YWUzYjIzNWI1MzI2NWE1OWY4MDVhZmRkNDk4
M2QwYzlhOTMuLjgzOGY2ZDc3MmQ0ZTc0ZjA2Mzc5MzQ3ODc0MDgxYjZiYTNiNzM2N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKQEAgLTMsNiArMywxMCBAQCBsaXN0
KElOU0VSVCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMgMAogICAgICIke0JMQUNLQkVSUllf
VEhJUkRfUEFSVFlfRElSfS9pY3UiCiApCiAKK2xpc3QoUkVNT1ZFX0lURU0gV2ViQ29yZV9TT1VS
Q0VTCisgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcAorKQorCiBsaXN0KEFQ
UEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vYmlu
ZGluZ3MvY3BwIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tp
ZURhdGFiYXNlQmFja2luZ1N0b3JlIgpAQCAtMTA1LDYgKzEwOSw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogCiBsaXN0KEFQUEVORCBXZWJDb3JlX1VTRVJfQUdFTlRfU1RZTEVfU0hF
RVRTCiAgICAgJHtXRUJDT1JFX0RJUn0vY3NzL21lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNzcwor
ICAgICR7V0VCQ09SRV9ESVJ9L2Nzcy9tZWRpYUNvbnRyb2xzQmxhY2tCZXJyeUZ1bGxzY3JlZW4u
Y3NzCiAgICAgJHtXRUJDT1JFX0RJUn0vY3NzL3RoZW1lQmxhY2tCZXJyeS5jc3MKICkKIApAQCAt
MTMxLDYgKzEzNiw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwog
bGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgZWRpdGluZy9ibGFja2JlcnJ5L0VkaXRv
ckJsYWNrQmVycnkuY3BwCiAgICAgZWRpdGluZy9ibGFja2JlcnJ5L1NtYXJ0UmVwbGFjZUJsYWNr
QmVycnkuY3BwCisgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3BwCiAg
ICAgbG9hZGVyL2JsYWNrYmVycnkvQ29va2llSmFyQmxhY2tCZXJyeS5jcHAKICAgICBwYWdlL2Js
YWNrYmVycnkvQWNjZXNzaWJpbGl0eU9iamVjdEJsYWNrQmVycnkuY3BwCiAgICAgcGFnZS9ibGFj
a2JlcnJ5L0RyYWdDb250cm9sbGVyQmxhY2tCZXJyeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvbWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3NzCmluZGV4IDRjMDBhNzI1Y2Q1YTAxM2U5OThi
MjNmYjRiNzY0MzlhOGE3ODg0NTEuLjM4ZWVmNjM1ZDllNmE0MGVjNmVhMmU1NDFhZjU4ZGM3OTU2
MGM4NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzQmxhY2tC
ZXJyeS5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHNCbGFja0JlcnJ5
LmNzcwpAQCAtMjgsNDMgKzI4LDcxIEBACiAgLyogQmxhY2tCZXJyeSBkZWZhdWx0IG1lZGlhIGNv
bnRyb2xzLiAqLwogCiBhdWRpbyB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDAsIDAp
OwogICAgIHdpZHRoOiAzMDBweDsKICAgICBoZWlnaHQ6IDMycHg7CiB9CiAKLWF1ZGlvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1w
YW5lbCB7CithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1lbWJlZGRlZC1wYW5lbCwgdmlk
ZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZW1iZWRkZWQtcGFuZWwgewogICAgIGRpc3BsYXk6
IC13ZWJraXQtYm94OwogICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAt
d2Via2l0LWJveC1hbGlnbjogY2VudGVyOwotICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7
CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgIGJvdHRvbTogMDsKICAgICB3aWR0aDogMTAw
JTsKLSAgICB6LWluZGV4OiAwOwotICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgIGhlaWdodDog
YXV0bzsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdi
YSgwLCAwLCAwLCAwLjYpOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCAwLCAwKTsKIH0K
IAotdmlkZW86LXdlYmtpdC1mdWxsLXBhZ2UtbWVkaWE6Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
cGFuZWwgewotICAgIGJvdHRvbTogMHB4OworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
cGFuZWwsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIHsKKyAgICBkaXNwbGF5
OiBub25lOwogfQogCi1hdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiwg
dmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24gewotICAgIC13ZWJraXQt
YXBwZWFyYW5jZTogbWVkaWEtcGxheS1idXR0b247Ci0gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7
Cit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAtY29udGFpbmVyLCBh
dWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAtY29udGFpbmVyIHsKKyAg
ICBkaXNwbGF5OiBub25lOwogfQogCi1hdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1l
bGluZS1jb250YWluZXIsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNv
bnRhaW5lciB7Cit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUt
ZGlzcGxheS1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3Jl
ZW4tdGltZS1kaXNwbGF5LWNvbnRhaW5lciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlk
ZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1kaXNwbGF5LWNvbnRhaW5lciwgYXVkaW86
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1kaXNwbGF5LWNvbnRhaW5lciB7CiAgICAgLXdl
YmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1jb250cm9scy1iYWNrZ3JvdW5kOwogICAgIGRpc3BsYXk6
IC13ZWJraXQtYm94OwogICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAt
d2Via2l0LWJveC1hbGlnbjogY2VudGVyOwotICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKKyAg
ICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5OworICAgIC13ZWJraXQtYm94LWZsZXg6IDE7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDAsIDApOworfQorCit2aWRlbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXBsYXktYnV0dG9uLCBhdWRpbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1mdWxsc2NyZWVuLXBsYXktYnV0dG9uIHsKKyAgICBkaXNwbGF5OiBub25lOwor
fQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiwgYXVkaW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24geworICAgIC13ZWJraXQtYXBwZWFyYW5j
ZTogbWVkaWEtcGxheS1idXR0b247CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Cit9CisKK2F1
ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUtY29udGFpbmVy
LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWVsaW5lLWNvbnRh
aW5lciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtdGltZWxpbmUtY29udGFpbmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10
aW1lbGluZS1jb250YWluZXIgeworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtY29udHJv
bHMtYmFja2dyb3VuZDsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0LWJv
eC1vcmllbnQ6IHZlcnRpY2FsOworICAgIC13ZWJraXQtYm94LWFsaWduOiBzdHJldGNoOworICAg
IC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgICAtd2Via2l0LWJveC1mbGV4OiAxOwotICAg
IC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgaGVpZ2h0OiBhdXRvOworICAgIHdpZHRo
OiAxMDAlOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCAwLCAwKTsKK30KKworYXVkaW86
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1jdXJyZW50LXRpbWUtZGlzcGxheSwg
dmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1jdXJyZW50LXRpbWUtZGlz
cGxheSB7CisgICAgZGlzcGxheTogbm9uZTsKIH0KIAogYXVkaW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtY3VycmVudC10aW1lLWRpc3BsYXksIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LWN1cnJlbnQtdGltZS1kaXNwbGF5IHsKQEAgLTc0LDE5ICsxMDIsMjcgQEAgYXVkaW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtY3VycmVudC10aW1lLWRpc3BsYXksIHZpZGVvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2wKICAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgIC13ZWJraXQt
Ym94LXBhY2s6IGVuZDsKICAgICAtd2Via2l0LWJveC1mbGV4OiAwOwotICAgIC13ZWJraXQtdXNl
ci1zZWxlY3Q6IG5vbmU7Ci0gICAgY29sb3I6IHdoaXRlOworICAgIGJhY2tncm91bmQtY29sb3I6
IHJnYigwLCAwLCAwKTsKKyAgICBjb2xvcjogI2ZhZmFmYTsKK30KKwordmlkZW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lLXJlbWFpbmluZy1kaXNwbGF5LCBhdWRpbzo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkg
eworICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXRpbWUtcmVtYWluaW5nLWRpc3BsYXksIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRp
bWUtcmVtYWluaW5nLWRpc3BsYXkgewordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGlt
ZS1yZW1haW5pbmctZGlzcGxheSwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1y
ZW1haW5pbmctZGlzcGxheSB7CiAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS10aW1lLXJl
bWFpbmluZy1kaXNwbGF5OwogICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgIC13ZWJraXQt
Ym94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwog
ICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgICAtd2Via2l0LWJveC1mbGV4OiAwOwotICAg
IC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ci0gICAgY29sb3I6IHdoaXRlOworICAgIGJhY2tn
cm91bmQtY29sb3I6IHJnYigwLCAwLCAwKTsKKyAgICBjb2xvcjogI2ZhZmFmYTsKK30KKworYXVk
aW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZSwgdmlkZW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZSB7CisgICAgZGlzcGxheTog
bm9uZTsKIH0KIAogYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUsIHZpZGVv
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lIHsKQEAgLTk1LDQxICsxMzEsNjMgQEAg
YXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUsIHZpZGVvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXRpbWVsaW5lIHsKICAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogfQogCi1h
dWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbiwgdmlkZW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24gewotICAgIC13ZWJraXQtYXBw
ZWFyYW5jZTogbWVkaWEtZnVsbHNjcmVlbi1idXR0b247Cit2aWRlbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uLCBhdWRpbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uIHsKKyAgICBkaXNwbGF5OiBu
b25lOworfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRv
biB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1lbnRlci1mdWxsc2NyZWVuLWJ1dHRv
bjsKICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKIH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtbXV0ZS1idXR0b24sIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUt
YnV0dG9uIHsKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9u
IHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1tdXRlLWJ1dHRvbiB7CiAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1tdXRlLWJ1dHRv
bjsKICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKIH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtdm9sdW1lLXNsaWRlci1jb250YWluZXIsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXZvbHVtZS1zbGlkZXItY29udGFpbmVyIHsKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLW11dGUtYnV0dG9uIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCithdWRpbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRhaW5lciB7CiAgICAgLXdlYmtp
dC1hcHBlYXJhbmNlOiBtZWRpYS12b2x1bWUtc2xpZGVyLWNvbnRhaW5lcjsKICAgICBkaXNwbGF5
OiAtd2Via2l0LWJveDsKLSAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CisgICAg
LXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgICAtd2Via2l0LWJveC1hbGlnbjogY2Vu
dGVyOwogICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgICAtd2Via2l0LWJveC1mbGV4OiAx
OwogICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgIGxlZnQ6IDBweDsKICAgICByaWdodDogMHB4OwotICAgIGJhY2tncm91bmQtY29sb3I6
IHJnYmEoMCwgMCwgMCwgMC42KTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwwLDApOwog
fQogCi1hdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLCB2aWRlbzo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyIHsKLSAgICAtd2Via2l0LWFwcGVh
cmFuY2U6IG1lZGlhLXZvbHVtZS1zbGlkZXI7Ci0gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Ci0g
ICAgLXdlYmtpdC1ib3gtZmxleDogMTsKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZv
bHVtZS1zbGlkZXItY29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCithdWRpbzo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyIHsKKyAgICAgLXdlYmtpdC1hcHBl
YXJhbmNlOiBtZWRpYS12b2x1bWUtc2xpZGVyOworICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsK
KyAgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
bGVmdDogMyU7CisgICAgcmlnaHQ6IDMlOworfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy12b2x1bWUtc2xpZGVyIHsKKyAgICBkaXNwbGF5OiBub25lOwogfQogCi1hdWRpbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWJhY2stYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1zZWVrLWJhY2stYnV0dG9uIHsKLSAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1l
ZGlhLXNlZWstYmFjay1idXR0b247Cit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxs
c2NyZWVuLWJ1dHRvbi1kaXZpZGVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxs
c2NyZWVuLWJ1dHRvbi1kaXZpZGVyIHsKICAgICBkaXNwbGF5OiBub25lOwogfQogCi1hdWRpbzo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWZvcndhcmQtYnV0dG9uLCB2aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1zZWVrLWZvcndhcmQtYnV0dG9uIHsKLSAgICAtd2Via2l0LWFwcGVh
cmFuY2U6IG1lZGlhLXNlZWstZm9yd2FyZC1idXR0b247Cit2aWRlbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1jb250YWluZXIsIHZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtZnVsbHNjcmVlbi1idXR0b24tY29udGFpbmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1wbGF5LWJ1dHRvbi1jb250YWluZXIgewogICAgIGRpc3BsYXk6IG5vbmU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9sc0JsYWNrQmVycnlGdWxs
c2NyZWVuLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzQmxhY2tCZXJyeUZ1
bGxzY3JlZW4uY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwNDEyMzdhODE4YzQxNzVlZjdmZTIxOTM0MDYzOTEy
OWEwMWY4YzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250
cm9sc0JsYWNrQmVycnlGdWxsc2NyZWVuLmNzcwpAQCAtMCwwICsxLDE4OCBAQAorLyoKKyAqIEJs
YWNrQmVycnkgc3BlY2lmaWMgb3ZlcnJpZGVzIGZvciBIVE1MNSBtZWRpYSBlbGVtZW50cy4KKyAq
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworIC8qIEJsYWNrQmVycnkgZnVsbHNjcmVlbiB2aWRlbyBjb250
cm9scy4gKi8KKworYm9keTotd2Via2l0LWZ1bGwtcGFnZS1tZWRpYSB7CisgICAgYmFja2dyb3Vu
ZC1jb2xvcjogcmdiKDAsIDAsIDApOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLWVtYmVkZGVkLXBhbmVsIHsKKyAgICBkaXNwbGF5OiBub25l
OworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXBhbmVsIHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0LWJveC1vcmll
bnQ6IHZlcnRpY2FsOworICAgIC13ZWJraXQtYm94LWFsaWduOiBzdHJldGNoOworICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICBib3R0b206IDBweDsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBo
ZWlnaHQ6IGF1dG87CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzOCwgMzgsIDM4LCAwLjUp
OworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LWJ1dHRvbi1ncm91cC1jb250YWluZXIgeworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEt
Y29udHJvbHMtYmFja2dyb3VuZDsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Vi
a2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRl
cjsKKyAgICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5OworICAgIC13ZWJraXQtYm94LWZsZXg6
IDE7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDAsIDApOworfQorCit2aWRlbzotd2Vi
a2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1k
aXNwbGF5LWNvbnRhaW5lciB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1jb250cm9s
cy1iYWNrZ3JvdW5kOworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIC13ZWJraXQtYm94
LW9yaWVudDogaG9yaXpvbnRhbDsKKyAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOworICAg
IC13ZWJraXQtYm94LXBhY2s6IGp1c3RpZnk7CisgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM4LCAzOCwgMzgsIDAuNSk7Cit9CisKK3ZpZGVvOi13
ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1kaXNwbGF5LWNv
bnRhaW5lciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNj
cmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXBsYXktYnV0dG9uIHsKKyAg
ICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLXBsYXktYnV0dG9uOworICAgIGRpc3BsYXk6IC13
ZWJraXQtYm94OworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXBsYXktYnV0dG9uIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCit2aWRlbzot
d2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGlt
ZWxpbmUtY29udGFpbmVyIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLWNvbnRyb2xz
LWJhY2tncm91bmQ7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gt
b3JpZW50OiB2ZXJ0aWNhbDsKKyAgICAtd2Via2l0LWJveC1hbGlnbjogc3RyZXRjaDsKKyAgICAt
d2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CisgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKKyAgICBo
ZWlnaHQ6IGF1dG87CisgICAgd2lkdGg6IDEwMCU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdi
YSgzOCwgMzgsIDM4LCAwLjUpOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNvbnRhaW5lciB7CisgICAgZGlzcGxheTogbm9u
ZTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1mdWxsc2NyZWVuLWN1cnJlbnQtdGltZS1kaXNwbGF5IHsKKyAgICAtd2Via2l0LWFwcGVhcmFu
Y2U6IG1lZGlhLWN1cnJlbnQtdGltZS1kaXNwbGF5OworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94
OworICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKKyAgICAtd2Via2l0LWJveC1h
bGlnbjogY2VudGVyOworICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKKyAgICAtd2Via2l0LWJv
eC1mbGV4OiAwOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzgsIDM4LCAzOCwgMC41KTsK
KyAgICBjb2xvcjogI2ZhZmFmYTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUtZGlzcGxheSB7CisgICAgZGlzcGxheTog
bm9uZTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1mdWxsc2NyZWVuLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkgeworICAgIC13ZWJraXQtYXBw
ZWFyYW5jZTogbWVkaWEtdGltZS1yZW1haW5pbmctZGlzcGxheTsKKyAgICBkaXNwbGF5OiAtd2Vi
a2l0LWJveDsKKyAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CisgICAgLXdlYmtp
dC1ib3gtYWxpZ246IGNlbnRlcjsKKyAgICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7CisgICAgLXdl
YmtpdC1ib3gtZmxleDogMDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM4LCAzOCwgMzgs
IDAuNSk7CisgICAgY29sb3I6ICNmYWZhZmE7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3Jl
ZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1yZW1haW5pbmctZGlzcGxheSB7CisgICAg
ZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWVsaW5lIHsKKyAgICAtd2Via2l0LWFwcGVhcmFu
Y2U6IG1lZGlhLXNsaWRlcjsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0
LWJveC1mbGV4OiAxOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXRpbWVsaW5lIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCit2aWRlbzot
d2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tZnVs
bHNjcmVlbi1idXR0b24geworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtZXhpdC1mdWxs
c2NyZWVuLWJ1dHRvbjsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKK30KKwordmlkZW86LXdl
YmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRv
biB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1tdXRlLWJ1dHRvbiB7CisgICAgZGlzcGxheTogbm9uZTsK
K30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12
b2x1bWUtc2xpZGVyLWNvbnRhaW5lciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86
LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVy
IHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uLWRpdmlkZXIgeworICAgIC13
ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtcmV3aW5kLWJ1dHRvbjsKKyAgICBkaXNwbGF5OiAtd2Vi
a2l0LWJveDsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1jb250YWluZXIsIHZpZGVvOi13ZWJraXQtZnVsbC1z
Y3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24tY29udGFpbmVyIHsKKyAg
ICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLWNvbnRyb2xzLWJhY2tncm91bmQ7CisgICAgZGlz
cGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwor
ICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CisgICAgLXdlYmtpdC1ib3gtZmxleDogMTsK
KyAgICBtaW4td2lkdGg6IDEwMCU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDAsIDAp
OworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LWZ1bGxzY3JlZW4tYnV0dG9uLWNvbnRhaW5lciB7CisgICAgLXdlYmtpdC1ib3gtcGFjazogc3Rh
cnQ7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtcGxheS1idXR0b24tY29udGFpbmVyIHsKKyAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7
Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
cGxhY2Vob2xkZXIgeworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtY29udHJvbHMtYmFj
a2dyb3VuZDsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0LWJveC1mbGV4
OiAxOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCAwLCAwKTsKKyAgICBtaW4td2lkdGg6
IDEwMCU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50VHlwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudFR5cGVzLmNwcAppbmRleCA3YzEyMGMyMWEzOGEzOTE5NmU4NDc0M2U0NWIw
MzljZjhjYWZmMGZiLi5lZmMzODU0NGNkYmI3OTE2MzM5ZDNmZTk4NjM5ODJlYWY2OTllYjU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50
VHlwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRUeXBlcy5jcHAKQEAgLTc0LDYgKzc0LDcgQEAgTWVkaWFDb250cm9sRWxlbWVudFR5cGUg
bWVkaWFDb250cm9sRWxlbWVudFR5cGUoTm9kZSogbm9kZSkKIH0KIAogI2lmIEVOQUJMRShWSURF
T19UUkFDSykKKyNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKIGNvbnN0IEF0b21pY1N0cmluZyYg
dHJhY2tJbmRleEF0dHJpYnV0ZU5hbWUoKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBuYW1lLCAoIngtd2Via2l0LXRyYWNrLWluZGV4IiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwpAQCAtOTIsNiArOTMsNyBAQCBpbnQgdHJhY2tMaXN0SW5k
ZXhGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgcmV0dXJuIHRyYWNrSW5kZXg7CiB9
CiAjZW5kaWYKKyNlbmRpZgogCiBNZWRpYUNvbnRyb2xFbGVtZW50OjpNZWRpYUNvbnRyb2xFbGVt
ZW50KE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlLCBIVE1MRWxlbWVudCogZWxl
bWVudCkKICAgICA6IG1fbWVkaWFDb250cm9sbGVyKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oCmluZGV4IDkxYjBjOGEz
NTFlYTAyYmI2MWQzZjU3MDFhNmQ0NzM4ODA1ZmE2NDMuLjZhMzJkYjQ1N2QzMTFjNmNlODMxZDA3
ZWQ4OGFkYWEzOGRkZTNhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oCkBAIC04MCw5ICs4MCwxMSBAQCBpbmxpbmUg
SFRNTE1lZGlhRWxlbWVudCogdG9QYXJlbnRNZWRpYUVsZW1lbnQoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlcikgeyByZXR1cm4gdAogTWVkaWFDb250cm9sRWxlbWVudFR5cGUgbWVkaWFDb250cm9sRWxl
bWVudFR5cGUoTm9kZSopOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2lmICFQTEFURk9S
TShCTEFDS0JFUlJZKQogY29uc3QgQXRvbWljU3RyaW5nJiB0cmFja0luZGV4QXR0cmlidXRlTmFt
ZSgpOwogaW50IHRyYWNrTGlzdEluZGV4Rm9yRWxlbWVudChFbGVtZW50Kik7CiAjZW5kaWYKKyNl
bmRpZgogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCA4Yjhl
NzNmMTFkODEwODFmOTZhZWY5ZGJkNWNhOGIwZTY2YzI2MzAyLi42ZGJkYjUzNTFjOWM4YTYwOTVm
N2RmNjI4NzZkOTNkYjJjYjQwNWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC00MjksNiArNDI5LDE1IEBAIFBhc3NS
ZWZQdHI8TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sUGFu
ZWxNdXRlQnV0dG9uRWxlbWVuCiAKIHZvaWQgTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CisjaWYgUExBVEZPUk0o
QkxBQ0tCRVJSWSkKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vk
b3duRXZlbnQpIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IG11dGUgd2hlbiB0aGUgbWVkaWEgcGxh
eWVyIHZvbHVtZS9tdXRlIGNvbnRyb2wgaXMgdG91Y2hlZAorICAgICAgICAvLyBvbiBQbGF5Ym9v
ay4gSW5zdGVhZCB3ZSBzaG93L2hpZGUgdGhlIHZvbHVtZSBzbGlkZXIuCisgICAgICAgIG1fY29u
dHJvbHMtPnRvZ2dsZVZvbHVtZVNsaWRlcigpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhh
bmRsZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogICAgIGlmIChldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCkKICAgICAgICAgbV9jb250cm9s
cy0+c2hvd1ZvbHVtZVNsaWRlcigpOwogCkBAIC03MjMsNyArNzMyLDYgQEAgY29uc3QgQXRvbWlj
U3RyaW5nJiBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQ6OnNoYWRv
d1BzZXVkb0lkKCkKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCiBNZWRp
YUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6Ok1lZGlhQ29udHJvbENsb3Nl
ZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJv
bHMqIGNvbnRyb2xzKQogICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVk
aWFDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdCkKICAgICAsIG1fY29udHJvbHMoY29udHJvbHMpCkBA
IC03NDAsNiArNzQ4LDcgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1Ry
YWNrTGlzdEVsZW1lbnQ+IE1lZGlhQ29udHJvbENsb3NlZENhcHRpb24KIAogdm9pZCBNZWRpYUNv
bnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2ZW50KQogeworI2lmICFQTEFURk9STShCTEFDS0JFUlJZKQogI2lmIEVOQUJMRShW
SURFT19UUkFDSykKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tF
dmVudCkgewogICAgICAgICAvLyBGSVhNRTogQWRkIG1vZGlmaWVyIGtleSBmb3IgZXhjbHVzaXZp
dHkgb3ZlcnJpZGUuCkBAIC03NzEsNiArNzgwLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRD
YXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW4K
IAogICAgIE1lZGlhQ29udHJvbERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQp
OwogI2VuZGlmCisjZW5kaWYgLy8gIVBMQVRGT1JNKEJMQUNLQkVSUlkpCiB9CiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50Ojpz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0CkBAIC03ODEsNiArNzkxLDcgQEAgY29uc3QgQXRvbWljU3Ry
aW5nJiBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnNoYWRvd1Bz
ZXVkb0lkKCkKIAogdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1l
bnQ6OnVwZGF0ZURpc3BsYXkoKQogeworI2lmICFQTEFURk9STShCTEFDS0JFUlJZKQogI2lmIEVO
QUJMRShWSURFT19UUkFDSykKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
c2VsZWN0ZWRDbGFzc1ZhbHVlLCAoInNlbGVjdGVkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOwogCkBAIC04MjEsMTAgKzgzMiwxMiBAQCB2b2lkIE1lZGlhQ29udHJvbENs
b3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6dXBkYXRlRGlzcGxheSgpCiAgICAgICAgIH0K
ICAgICB9CiAjZW5kaWYKKyNlbmRpZiAvLyAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKIH0KIAogdm9p
ZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnJlYnVpbGRUcmFj
a0xpc3RNZW51KCkKIHsKKyNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAgICAgLy8gUmVtb3ZlIGFueSBleGlzdGluZyBjb250ZW50LgogICAgIHJlbW92
ZUNoaWxkcmVuKCk7CkBAIC05MTMsNiArOTI2LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRD
YXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnJlYnVpbGRUcmFja0xpc3RNZW51KCkKIAogICAgIHVw
ZGF0ZURpc3BsYXkoKTsKICNlbmRpZgorI2VuZGlmIC8vICFQTEFURk9STShCTEFDS0JFUlJZKQog
fQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMTk1LDEwICsxMjA5LDEy
IEBAIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQoRG9jCiAgICAgCiB2b2lkIE1lZGlhQ29udHJvbFRleHRU
cmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVN1YnRyZWVzKERvY3VtZW50KiBkb2N1bWVudCkK
IHsKKyNpZiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IEF0b21pY1N0cmluZywgY3VlLCAoImN1ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKICAgICBtX2N1ZUNvbnRhaW5lciA9IEhUTUxFbGVtZW50OjpjcmVhdGUoc3Bh
blRhZywgZG9jdW1lbnQpOwogICAgIG1fY3VlQ29udGFpbmVyLT5zZXRQc2V1ZG8oY3VlKTsKICAg
ICBhcHBlbmRDaGlsZChtX2N1ZUNvbnRhaW5lciwgQVNTRVJUX05PX0VYQ0VQVElPTiwgZmFsc2Up
OworI2VuZGlmCiB9CiAKIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudD4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKERv
Y3VtZW50KiBkb2N1bWVudCkKQEAgLTEyMjEsNiArMTIzNyw3IEBAIGNvbnN0IEF0b21pY1N0cmlu
ZyYgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQo
KSBjb25zCiAKIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBk
YXRlRGlzcGxheSgpCiB7CisjaWYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCiAgICAgSFRNTE1lZGlh
RWxlbWVudCogbWVkaWFFbGVtZW50ID0gdG9QYXJlbnRNZWRpYUVsZW1lbnQodGhpcyk7CiAKICAg
ICAvLyAxLiBJZiB0aGUgbWVkaWEgZWxlbWVudCBpcyBhbiBhdWRpbyBlbGVtZW50LCBvciBpcyBh
bm90aGVyIHBsYXliYWNrCkBAIC0xMjgzLDEwICsxMzAwLDEyIEBAIHZvaWQgTWVkaWFDb250cm9s
VGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlRGlzcGxheSgpCiAKICAgICAvLyAxMS4g
UmV0dXJuIG91dHB1dC4KICAgICBoYXNDaGlsZE5vZGVzKCkgPyBzaG93KCkgOiBoaWRlKCk7Cisj
ZW5kaWYgLy8gIVBMQVRGT1JNKEJMQUNLQkVSUlkpCiB9CiAKIHZvaWQgTWVkaWFDb250cm9sVGV4
dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlU2l6ZXMoKQogeworI2lmICFQTEFURk9STShC
TEFDS0JFUlJZKQogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50
TWVkaWFFbGVtZW50KHRoaXMpOwogICAgIGlmICghbWVkaWFFbGVtZW50IHx8ICFtZWRpYUVsZW1l
bnQtPnJlbmRlcmVyKCkgfHwgIW1lZGlhRWxlbWVudC0+cmVuZGVyZXIoKS0+aXNWaWRlbygpKQog
ICAgICAgICByZXR1cm47CkBAIC0xMzAxLDYgKzEzMjAsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKCkKICAgICAgICAgbV9mb250U2l6
ZSA9IGZvbnRTaXplOwogICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
Rm9udFNpemUsIFN0cmluZzo6bnVtYmVyKGZvbnRTaXplKSArICJweCIpOwogICAgIH0KKyNlbmRp
ZiAvLyAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShWSURFT19U
UkFDSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaAppbmRleCBm
YTVkMGJkMDBkMzZlODA5YjA4ZTU3NzM1MDQyMGVjYTgyZDYyMmM4Li5kNGJhMDFkYjgwNTZkMmQw
ZGExNDA5YzQwMmVhMjg1YmJlNmFlYjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9scy5oCkBAIC04Myw2ICs4Myw5IEBAIGNsYXNzIE1lZGlhQ29udHJvbHMgOiBw
dWJsaWMgSFRNTERpdkVsZW1lbnQgewogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdGF0dXNEaXNw
bGF5KCkgeyB9OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd1ZvbHVtZVNsaWRlcigpOworI2lmIFBMQVRGT1JNKEJMQUNL
QkVSUlkpCisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZVZvbHVtZVNsaWRlcigpIHsgfTsKKyNlbmRp
ZgogCiAgICAgdmlydHVhbCB2b2lkIGNoYW5nZWRNdXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIGNo
YW5nZWRWb2x1bWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODk3NWI3N2JmZTE0MmRkYWY4
ZTgxNDg0NTU3NGQxNWUzMGQ3MDgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3BwCkBAIC0wLDAgKzEsMTA4MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU8pCisjaW5jbHVkZSAiTWVkaWFDb250cm9s
c0JsYWNrQmVycnkuaCIKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkRPTVRva2Vu
TGlzdC5oIgorI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgorI2luY2x1ZGUgIkZyYW1lLmgi
CisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgor
I2luY2x1ZGUgIk1lZGlhQ29udHJvbEVsZW1lbnRzLmgiCisjaW5jbHVkZSAiTW91c2VFdmVudC5o
IgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3guaCIKKyNpbmNsdWRlICJSZW5kZXJTbGlkZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJUaGVtZS5o
IgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiVGV4dC5oIgorCisjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgorI2VuZGlmCisKK3VzaW5n
IG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKKworc3RhdGljIGNvbnN0IGRvdWJsZSB0aW1lV2l0aG91dE1vdXNlTW92ZW1l
bnRCZWZvcmVIaWRpbmdDb250cm9scyA9IDM7CisKK2lubGluZSBNZWRpYUNvbnRyb2xCdXR0b25H
cm91cENvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxl
bWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRv
Y3VtZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250
cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENv
bnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVmUHRy
PE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudD4gZWxlbWVudCA9IGFkb3B0
UmVmKG5ldyBNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQoZG9jdW1lbnQp
KTsKKyAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgTWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9J
ZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAo
Ii13ZWJraXQtbWVkaWEtY29udHJvbHMtYnV0dG9uLWdyb3VwLWNvbnRhaW5lciIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK2lubGlu
ZSBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRp
bWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRp
YUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwpCit7Cit9CisK
K1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50PiBNZWRp
YUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9j
dW1lbnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxl
bWVudD4gZWxlbWVudCA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRh
aW5lckVsZW1lbnQoZG9jdW1lbnQpKTsKKyAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7Cit9
CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJF
bGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1kaXNwbGF5
LWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBy
ZXR1cm4gaWQ7Cit9CisKK01lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjpNZWRpYUNv
bnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRp
YUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwpCisgICAgLCBt
X2NhbkJlRHJhZ2dlZChmYWxzZSkKKyAgICAsIG1faXNCZWluZ0RyYWdnZWQoZmFsc2UpCisgICAg
LCBtX2lzRGlzcGxheWVkKGZhbHNlKQorICAgICwgbV9vcGFxdWUodHJ1ZSkKKyAgICAsIG1fdHJh
bnNpdGlvblRpbWVyKHRoaXMsICZNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6dHJh
bnNpdGlvblRpbWVyRmlyZWQpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRW1iZWRk
ZWRQYW5lbEVsZW1lbnQ+IE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250
cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQoZG9jdW1lbnQpKTsKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBj
b25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLWVtYmVkZGVkLXBhbmVsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xF
bWJlZGRlZFBhbmVsRWxlbWVudDo6c3RhcnREcmFnKGNvbnN0IExheW91dFBvaW50JiBldmVudExv
Y2F0aW9uKQoreworICAgIGlmICghbV9jYW5CZURyYWdnZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChtX2lzQmVpbmdEcmFnZ2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyIHx8
ICFyZW5kZXJlci0+aXNCb3goKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRnJhbWUqIGZyYW1l
ID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2xhc3REcmFnRXZlbnRMb2NhdGlvbiA9IGV2ZW50TG9jYXRpb247CisKKyAgICBm
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSh0aGlzKTsK
KworICAgIG1faXNCZWluZ0RyYWdnZWQgPSB0cnVlOworfQorCit2b2lkIE1lZGlhQ29udHJvbEVt
YmVkZGVkUGFuZWxFbGVtZW50Ojpjb250aW51ZURyYWcoY29uc3QgTGF5b3V0UG9pbnQmIGV2ZW50
TG9jYXRpb24pCit7CisgICAgaWYgKCFtX2lzQmVpbmdEcmFnZ2VkKQorICAgICAgICByZXR1cm47
CisKKyAgICBMYXlvdXRTaXplIGRpc3RhbmNlRHJhZ2dlZCA9IGV2ZW50TG9jYXRpb24gLSBtX2xh
c3REcmFnRXZlbnRMb2NhdGlvbjsKKyAgICBtX2N1bXVsYXRpdmVEcmFnT2Zmc2V0Lm1vdmUoZGlz
dGFuY2VEcmFnZ2VkKTsKKyAgICBtX2xhc3REcmFnRXZlbnRMb2NhdGlvbiA9IGV2ZW50TG9jYXRp
b247CisgICAgc2V0UG9zaXRpb24obV9jdW11bGF0aXZlRHJhZ09mZnNldCk7Cit9CisKK3ZvaWQg
TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OmVuZERyYWcoKQoreworICAgIGlmICgh
bV9pc0JlaW5nRHJhZ2dlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc0JlaW5nRHJhZ2dl
ZCA9IGZhbHNlOworCisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAg
ICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBmcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKK30KKwordm9pZCBNZWRpYUNvbnRy
b2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6c3RhcnRUaW1lcigpCit7CisgICAgc3RvcFRpbWVyKCk7
CisKKyAgICAvLyBUaGUgdGltZXIgaXMgcmVxdWlyZWQgdG8gc2V0IHRoZSBwcm9wZXJ0eSBkaXNw
bGF5Oidub25lJyBvbiB0aGUgcGFuZWwsCisgICAgLy8gc3VjaCB0aGF0IGNhcHRpb25zIGFyZSBj
b3JyZWN0bHkgZGlzcGxheWVkIGF0IHRoZSBib3R0b20gb2YgdGhlIHZpZGVvCisgICAgLy8gYXQg
dGhlIGVuZCBvZiB0aGUgZmFkZW91dCB0cmFuc2l0aW9uLgorICAgIGRvdWJsZSBkdXJhdGlvbiA9
IGRvY3VtZW50KCktPnBhZ2UoKSA/IGRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+bWVkaWFD
b250cm9sc0ZhZGVPdXREdXJhdGlvbigpIDogMDsKKyAgICBtX3RyYW5zaXRpb25UaW1lci5zdGFy
dE9uZVNob3QoZHVyYXRpb24pOworfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxF
bGVtZW50OjpzdG9wVGltZXIoKQoreworICAgIGlmIChtX3RyYW5zaXRpb25UaW1lci5pc0FjdGl2
ZSgpKQorICAgICAgICBtX3RyYW5zaXRpb25UaW1lci5zdG9wKCk7Cit9CisKK3ZvaWQgTWVkaWFD
b250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnRyYW5zaXRpb25UaW1lckZpcmVkKFRpbWVyPE1l
ZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50PiopCit7CisgICAgaWYgKCFtX29wYXF1ZSkK
KyAgICAgICAgaGlkZSgpOworCisgICAgc3RvcFRpbWVyKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250
cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnNldFBvc2l0aW9uKGNvbnN0IExheW91dFBvaW50JiBw
b3NpdGlvbikKK3sKKyAgICBkb3VibGUgbGVmdCA9IHBvc2l0aW9uLngoKTsKKyAgICBkb3VibGUg
dG9wID0gcG9zaXRpb24ueSgpOworCisgICAgLy8gU2V0IHRoZSBsZWZ0IGFuZCB0b3AgdG8gY29u
dHJvbCB0aGUgcGFuZWwncyBwb3NpdGlvbjsgdGhpcyBkZXBlbmRzIG9uIGl0IGJlaW5nIGFic29s
dXRlIHBvc2l0aW9uZWQuCisgICAgLy8gU2V0IHRoZSBtYXJnaW4gdG8gemVybyBzaW5jZSB0aGUg
cG9zaXRpb24gcGFzc2VkIGluIHdpbGwgYWxyZWFkeSBpbmNsdWRlIHRoZSBlZmZlY3Qgb2YgdGhl
IG1hcmdpbi4KKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgbGVm
dCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eVRvcCwgdG9wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgMC4wLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5TWFyZ2luVG9wLCAwLjAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworCisgICAgRXhj
ZXB0aW9uQ29kZSBpZ25vcmVkOworICAgIGNsYXNzTGlzdCgpLT5hZGQoImRyYWdnZWQiLCBpZ25v
cmVkKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6cmVzZXRQ
b3NpdGlvbigpCit7CisgICAgcmVtb3ZlSW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxl
ZnQpOworICAgIHJlbW92ZUlubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3ApOworICAg
IHJlbW92ZUlubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0KTsKKyAgICBy
ZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luVG9wKTsKKworICAgIEV4
Y2VwdGlvbkNvZGUgaWdub3JlZDsKKyAgICBjbGFzc0xpc3QoKS0+cmVtb3ZlKCJkcmFnZ2VkIiwg
aWdub3JlZCk7CisKKyAgICBtX2N1bXVsYXRpdmVEcmFnT2Zmc2V0LnNldFgoMCk7CisgICAgbV9j
dW11bGF0aXZlRHJhZ09mZnNldC5zZXRZKDApOworfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVk
ZGVkUGFuZWxFbGVtZW50OjptYWtlT3BhcXVlKCkKK3sKKyAgICBpZiAobV9vcGFxdWUpCisgICAg
ICAgIHJldHVybjsKKworICAgIGRvdWJsZSBkdXJhdGlvbiA9IGRvY3VtZW50KCktPnBhZ2UoKSA/
IGRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+bWVkaWFDb250cm9sc0ZhZGVJbkR1cmF0aW9u
KCkgOiAwOworCisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zaXRpb25Qcm9wZXJ0eSwgQ1NTUHJvcGVydHlPcGFjaXR5KTsKKyAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLCBkdXJhdGlvbiwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKTsKKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5T3BhY2l0eSwgMS4wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisK
KyAgICBtX29wYXF1ZSA9IHRydWU7CisKKyAgICBpZiAobV9pc0Rpc3BsYXllZCkKKyAgICAgICAg
c2hvdygpOworfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjptYWtl
VHJhbnNwYXJlbnQoKQoreworICAgIGlmICghbV9vcGFxdWUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGRvdWJsZSBkdXJhdGlvbiA9IGRvY3VtZW50KCktPnBhZ2UoKSA/IGRvY3VtZW50KCktPnBh
Z2UoKS0+dGhlbWUoKS0+bWVkaWFDb250cm9sc0ZhZGVPdXREdXJhdGlvbigpIDogMDsKKworICAg
IHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVy
dHksIENTU1Byb3BlcnR5T3BhY2l0eSk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiwgZHVyYXRpb24sIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUyk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNp
dHksIDAuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworCisgICAgbV9vcGFxdWUg
PSBmYWxzZTsKKyAgICBzdGFydFRpbWVyKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRW1iZWRk
ZWRQYW5lbEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQoreworICAg
IE1lZGlhQ29udHJvbERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworCisg
ICAgaWYgKGV2ZW50LT5pc01vdXNlRXZlbnQoKSkgeworICAgICAgICBMYXlvdXRQb2ludCBsb2Nh
dGlvbiA9IHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCktPmFic29sdXRlTG9jYXRpb24o
KTsKKyAgICAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2
ZW50ICYmIGV2ZW50LT50YXJnZXQoKSA9PSB0aGlzKSB7CisgICAgICAgICAgICBzdGFydERyYWco
bG9jYXRpb24pOworICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAg
ICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZl
bnQgJiYgbV9pc0JlaW5nRHJhZ2dlZCkKKyAgICAgICAgICAgIGNvbnRpbnVlRHJhZyhsb2NhdGlv
bik7CisgICAgICAgIGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNl
dXBFdmVudCAmJiBtX2lzQmVpbmdEcmFnZ2VkKSB7CisgICAgICAgICAgICBjb250aW51ZURyYWco
bG9jYXRpb24pOworICAgICAgICAgICAgZW5kRHJhZygpOworICAgICAgICAgICAgZXZlbnQtPnNl
dERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFDb250
cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnNldENhbkJlRHJhZ2dlZChib29sIGNhbkJlRHJhZ2dl
ZCkKK3sKKyAgICBpZiAobV9jYW5CZURyYWdnZWQgPT0gY2FuQmVEcmFnZ2VkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2NhbkJlRHJhZ2dlZCA9IGNhbkJlRHJhZ2dlZDsKKworICAgIGlmICgh
Y2FuQmVEcmFnZ2VkKQorICAgICAgICBlbmREcmFnKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9s
RW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnNldElzRGlzcGxheWVkKGJvb2wgaXNEaXNwbGF5ZWQpCit7
CisgICAgbV9pc0Rpc3BsYXllZCA9IGlzRGlzcGxheWVkOworfQorCitpbmxpbmUgTWVkaWFDb250
cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sRnVs
bHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisg
ICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwp
Cit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29u
dGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVy
RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudD4gZWxlbWVudCA9IGFk
b3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXJFbGVt
ZW50KGRvY3VtZW50KSk7CisgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgpOworfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5l
ckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVu
LXRpbWUtZGlzcGxheS1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgcmV0dXJuIGlkOworfQorCitpbmxpbmUgTWVkaWFDb250cm9sRnVsbHNjcmVl
bkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250
YWluZXJFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbERpdkVs
ZW1lbnQoZG9jdW1lbnQsIE1lZGlhQ29udHJvbHNQYW5lbCkKK3sKK30KKworUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1l
bnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJF
bGVtZW50PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0
b25Db250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFz
ZSgpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0
b25Db250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMt
ZnVsbHNjcmVlbi1idXR0b24tY29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKworaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRp
dmlkZXJFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbERpdkVs
ZW1lbnQoZG9jdW1lbnQsIE1lZGlhUmV3aW5kQnV0dG9uKQoreworfQorCitQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudD4gTWVkaWFDb250cm9sRnVs
bHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQor
eworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQ+
IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlk
ZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgpOworfQor
Citjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVy
RWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4t
YnV0dG9uLWRpdmlkZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Cisg
ICAgcmV0dXJuIGlkOworfQorCitpbmxpbmUgTWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5l
ckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50KERvY3VtZW50
KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlh
Q29udHJvbHNQYW5lbCkKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9u
Q29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6
OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFBs
YXlCdXR0b25Db250YWluZXJFbGVtZW50PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29u
dHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgcmV0dXJuIGVs
ZW1lbnQucmVsZWFzZSgpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFBs
YXlCdXR0b25Db250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtcGxheS1idXR0b24tY29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKworaW5saW5lIE1lZGlhQ29udHJvbFBsYWNl
aG9sZGVyRWxlbWVudDo6TWVkaWFDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50KERvY3VtZW50KiBk
b2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhQ29u
dHJvbHNQYW5lbCkKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVs
ZW1lbnQ+IE1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBk
b2N1bWVudCkKK3sKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50PiBl
bGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudChkb2N1
bWVudCkpOworICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKK30KKworY29uc3QgQXRvbWlj
U3RyaW5nJiBNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkg
Y29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdl
YmtpdC1tZWRpYS1jb250cm9scy1wbGFjZWhvbGRlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK2lubGluZSBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0
dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVs
ZW1lbnQoZG9jdW1lbnQsIE1lZGlhUGxheUJ1dHRvbikKK3sKK30KKworUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5QbGF5QnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBS
ZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50PiBidXR0b24gPSBh
ZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50KGRvY3Vt
ZW50KSk7CisgICAgYnV0dG9uLT5jcmVhdGVTaGFkb3dTdWJ0cmVlKCk7CisgICAgYnV0dG9uLT5z
ZXRUeXBlKCJidXR0b24iKTsKKyAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKK30KKwordm9p
ZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5jbGlja0V2ZW50KSB7CisgICAgICAgIGlmIChtZWRpYUNvbnRyb2xsZXIoKS0+Y2FuUGxh
eSgpKQorICAgICAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnBsYXkoKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnBhdXNlKCk7CisgICAgICAgIHVwZGF0
ZURpc3BsYXlUeXBlKCk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAg
IH0KKyAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQ6OnVwZGF0ZURp
c3BsYXlUeXBlKCkKK3sKKyAgICBzZXREaXNwbGF5VHlwZShtZWRpYUNvbnRyb2xsZXIoKS0+Y2Fu
UGxheSgpID8gTWVkaWFQbGF5QnV0dG9uIDogTWVkaWFQYXVzZUJ1dHRvbik7Cit9CisKK2NvbnN0
IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50Ojpz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRv
biIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7
Cit9CisKK2lubGluZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1l
bnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudChEb2N1bWVu
dCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1l
ZGlhRXhpdEZ1bGxzY3JlZW5CdXR0b24pCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9s
RnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
RnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7Cisg
ICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4g
YnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0
dG9uRWxlbWVudChkb2N1bWVudCkpOworICAgIGJ1dHRvbi0+Y3JlYXRlU2hhZG93U3VidHJlZSgp
OworICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7CisgICAgYnV0dG9uLT5oaWRlKCk7Cisg
ICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRnVsbHNj
cmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBl
dmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVu
dCkgeworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAgICAgLy8gT25seSB1c2UgdGhl
IG5ldyBmdWxsIHNjcmVlbiBBUEkgaWYgdGhlIGZ1bGxTY3JlZW5FbmFibGVkIHNldHRpbmcgaGFz
IAorICAgICAgICAvLyBiZWVuIGV4cGxpY2l0bHkgZW5hYmxlZC4gT3RoZXJ3aXNlLCB1c2UgdGhl
IG9sZCBmdWxsc2NyZWVuIEFQSS4gVGhpcworICAgICAgICAvLyBhbGxvd3MgYXBwcyB3aGljaCBl
bWJlZCBhIFdlYlZpZXcgdG8gcmV0YWluIHRoZSBleGlzdGluZyBmdWxsIHNjcmVlbgorICAgICAg
ICAvLyB2aWRlbyBpbXBsZW1lbnRhdGlvbiB3aXRob3V0IHJlcXVpcmluZyB0aGVtIHRvIGltcGxl
bWVudCB0aGVpciBvd24gZnVsbCAKKyAgICAgICAgLy8gc2NyZWVuIGJlaGF2aW9yLgorICAgICAg
ICBpZiAoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSAmJiBkb2N1bWVudCgpLT5zZXR0aW5ncygpLT5m
dWxsU2NyZWVuRW5hYmxlZCgpKSB7CisgICAgICAgICAgICBpZiAoZG9jdW1lbnQoKS0+d2Via2l0
SXNGdWxsU2NyZWVuKCkgJiYgZG9jdW1lbnQoKS0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVt
ZW50KCkgPT0gdG9QYXJlbnRNZWRpYUVsZW1lbnQodGhpcykpCisgICAgICAgICAgICAgICAgZG9j
dW1lbnQoKS0+d2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGRvY3VtZW50KCktPnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudCh0b1Bh
cmVudE1lZGlhRWxlbWVudCh0aGlzKSwgMCwgRG9jdW1lbnQ6OkV4ZW1wdElGcmFtZUFsbG93RnVs
bFNjcmVlblJlcXVpcmVtZW50KTsKKyAgICAgICAgfSBlbHNlCisjZW5kaWYKKyAgICAgICAgICAg
IG1lZGlhQ29udHJvbGxlcigpLT5lbnRlckZ1bGxzY3JlZW4oKTsKKyAgICAgICAgZXZlbnQtPnNl
dERlZmF1bHRIYW5kbGVkKCk7CisgICAgfQorICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoZXZlbnQpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25z
dAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0
LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tZnVsbHNjcmVlbi1idXR0b24iLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlkOworfQorCit2b2lkIE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6c2V0SXNGdWxsc2Ny
ZWVuKGJvb2wgaXNGdWxsc2NyZWVuKQoreworICAgIHNldERpc3BsYXlUeXBlKE1lZGlhRXhpdEZ1
bGxzY3JlZW5CdXR0b24pOworfQorCitpbmxpbmUgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVs
aW5lQ29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29udGFp
bmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVt
ZW50KGRvY3VtZW50LCBNZWRpYVRpbWVsaW5lQ29udGFpbmVyKQoreworfQorCitQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCog
ZG9jdW1lbnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNv
bnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNj
cmVlblRpbWVsaW5lQ29udGFpbmVyRWxlbWVudChkb2N1bWVudCkpOworICAgIGVsZW1lbnQtPmhp
ZGUoKTsKKyAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7Cit9CisKK2NvbnN0IEF0b21pY1N0
cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6c2hh
ZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUtY29u
dGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVy
biBpZDsKK30KKworTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6TWVkaWFD
b250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlh
Q29udHJvbHMqIGNvbnRyb2xzKQorICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRvY3Vt
ZW50LCBNZWRpYVNsaWRlcikKKyAgICAsIG1fY29udHJvbHMoY29udHJvbHMpCit7Cit9CisKK1Bh
c3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudD4gTWVkaWFDb250
cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwg
TWVkaWFDb250cm9scyogY29udHJvbHMpCit7CisgICAgQVNTRVJUKGNvbnRyb2xzKTsKKworICAg
IFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50PiB0aW1lbGluZSA9
IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50KGRvY3Vt
ZW50LCBjb250cm9scykpOworICAgIHRpbWVsaW5lLT5jcmVhdGVTaGFkb3dTdWJ0cmVlKCk7Cisg
ICAgdGltZWxpbmUtPnNldFR5cGUoInJhbmdlIik7CisgICAgdGltZWxpbmUtPnNldEF0dHJpYnV0
ZShwcmVjaXNpb25BdHRyLCAiZmxvYXQiKTsKKyAgICByZXR1cm4gdGltZWxpbmUucmVsZWFzZSgp
OworfQorCit2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQoreworICAgIC8vIExlZnQgYnV0dG9uIGlzIDAu
IFJlamVjdHMgbW91c2UgZXZlbnRzIG5vdCBmcm9tIGxlZnQgYnV0dG9uLgorICAgIGlmIChldmVu
dC0+aXNNb3VzZUV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+YnV0
dG9uKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghYXR0YWNoZWQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93
bkV2ZW50KQorICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+YmVnaW5TY3J1YmJpbmcoKTsKKwor
ICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpCisgICAg
ICAgIG1lZGlhQ29udHJvbGxlcigpLT5lbmRTY3J1YmJpbmcoKTsKKworICAgIE1lZGlhQ29udHJv
bElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CisKKyAgICBpZiAoZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQgfHwgZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQgdGlt
ZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodmFsdWUoKS50b0RvdWJsZSgpKTsKKyAgICBpZiAo
ZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuaW5wdXRFdmVudCAmJiB0aW1lICE9IG1lZGlh
Q29udHJvbGxlcigpLT5jdXJyZW50VGltZSgpKSB7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7
CisgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRDdXJyZW50VGltZSh0aW1lLCBlYyk7Cisg
ICAgfQorCisgICAgUmVuZGVyU2xpZGVyKiBzbGlkZXIgPSB0b1JlbmRlclNsaWRlcihyZW5kZXJl
cigpKTsKKyAgICBpZiAoc2xpZGVyICYmIHNsaWRlci0+aW5EcmFnTW9kZSgpKQorICAgICAgICBt
X2NvbnRyb2xzLT51cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKTsKK30KKworYm9vbCBNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2
ZW50cygpCit7CisgICAgaWYgKCFhdHRhY2hlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxp
bmVFbGVtZW50OjpzZXRQb3NpdGlvbihmbG9hdCBjdXJyZW50VGltZSkKK3sKKyAgICBzZXRWYWx1
ZShTdHJpbmc6Om51bWJlcihjdXJyZW50VGltZSkpOworfQorCit2b2lkIE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKGZsb2F0IGR1cmF0aW9uKQorewor
ICAgIHNldEF0dHJpYnV0ZShtYXhBdHRyLCBTdHJpbmc6Om51bWJlcihpc2Zpbml0ZShkdXJhdGlv
bikgPyBkdXJhdGlvbiA6IDApKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9s
RnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNj
cmVlblRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1l
UmVtYWluaW5nRGlzcGxheUVsZW1lbnQoZG9jdW1lbnQpKTsKK30KKworTWVkaWFDb250cm9sRnVs
bHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVl
blRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBN
ZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhVGltZVJlbWFpbmlu
Z0Rpc3BsYXkpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRnVsbHNj
cmVlblRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1yZW1haW5pbmctZGlzcGxheSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK1Bhc3NS
ZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ+IE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUoRG9j
dW1lbnQqIGRvY3VtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9s
RnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQoZG9jdW1lbnQpKTsKK30KKworTWVk
aWFDb250cm9sRnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkK
KyAgICA6IE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChkb2N1bWVudCwgTWVkaWFDdXJy
ZW50VGltZURpc3BsYXkpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9s
RnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29u
c3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtp
dC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWN1cnJlbnQtdGltZS1kaXNwbGF5IiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKworTWVk
aWFDb250cm9sc0JsYWNrQmVycnk6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5KERvY3VtZW50KiBk
b2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbHMoZG9jdW1lbnQpCisgICAgLCBtX2J1dHRvbkNv
bnRhaW5lcigwKQorICAgICwgbV90aW1lRGlzcGxheUNvbnRhaW5lcigwKQorICAgICwgbV9mdWxs
c2NyZWVuVGltZURpc3BsYXlDb250YWluZXIoMCkKKyAgICAsIG1fZnVsbHNjcmVlblBsYXlCdXR0
b24oMCkKKyAgICAsIG1fZnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheSgwKQorICAgICwgbV9m
dWxsc2NyZWVuVGltZWxpbmUoMCkKKyAgICAsIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXkoMCkKKyAg
ICAsIG1fZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5KDApCisgICAgLCBtX3RpbWVsaW5l
Q29udGFpbmVyKDApCisgICAgLCBtX2Z1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lcigwKQorICAg
ICwgbV9mdWxsU2NyZWVuRGl2aWRlcigwKQorICAgICwgbV9mdWxsc2NyZWVuRnVsbFNjcmVlbkJ1
dHRvbigwKQorICAgICwgbV9tdXRlQnV0dG9uKDApCisgICAgLCBtX3ZvbHVtZVNsaWRlckNvbnRh
aW5lcigwKQorICAgICwgbV9lbWJlZGRlZFBhbmVsKDApCisgICAgLCBtX2Z1bGxTY3JlZW5CdXR0
b25Db250YWluZXIoMCkKKyAgICAsIG1fcGxheUJ1dHRvbkNvbnRhaW5lcigwKQorICAgICwgbV9w
bGFjZWhvbGRlcigwKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbHM+IE1lZGlhQ29u
dHJvbHM6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIE1lZGlhQ29u
dHJvbHNCbGFja0JlcnJ5OjpjcmVhdGVDb250cm9scyhkb2N1bWVudCk7Cit9CisKK1Bhc3NSZWZQ
dHI8TWVkaWFDb250cm9sc0JsYWNrQmVycnk+IE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpjcmVh
dGVDb250cm9scyhEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgaWYgKCFkb2N1bWVudC0+cGFn
ZSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xzQmxhY2tC
ZXJyeT4gY29udHJvbHMgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sc0JsYWNrQmVycnkoZG9j
dW1lbnQpKTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ+IHBhbmVsID0g
TWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudD4gZW1iZWRQYW5lbCA9IE1lZGlhQ29udHJv
bEVtYmVkZGVkUGFuZWxFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworCisgICAgRXhjZXB0aW9u
Q29kZSBlYzsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudD4gcGxh
eUJ1dHRvbiA9IE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OworICAgIGNvbnRyb2xzLT5tX3BsYXlCdXR0b24gPSBwbGF5QnV0dG9uLmdldCgpOworICAgIGVt
YmVkUGFuZWwtPmFwcGVuZENoaWxkKHBsYXlCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Cisg
ICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xU
aW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IHRpbWVsaW5lQ29udGFpbmVyID0gTWVkaWFDb250cm9s
VGltZWxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworCisgICAgUmVmUHRy
PE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudD4gdGltZWxpbmUgPSBNZWRpYUNvbnRyb2xUaW1l
bGluZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgY29udHJvbHMuZ2V0KCkpOworICAgIGNvbnRy
b2xzLT5tX3RpbWVsaW5lID0gdGltZWxpbmUuZ2V0KCk7CisgICAgdGltZWxpbmVDb250YWluZXIt
PmFwcGVuZENoaWxkKHRpbWVsaW5lLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZURpc3BsYXlD
b250YWluZXJFbGVtZW50PiB0aW1lRGlzcGxheUNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFRpbWVE
aXNwbGF5Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBjdXJyZW50VGltZURpc3BsYXkg
PSBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OworICAgIGNvbnRyb2xzLT5tX2N1cnJlbnRUaW1lRGlzcGxheSA9IGN1cnJlbnRUaW1lRGlzcGxh
eS5nZXQoKTsKKyAgICB0aW1lRGlzcGxheUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoY3VycmVudFRp
bWVEaXNwbGF5LnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVt
ZW50PiB0aW1lUmVtYWluaW5nRGlzcGxheSA9IE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNw
bGF5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV90aW1lUmVtYWlu
aW5nRGlzcGxheSA9IHRpbWVSZW1haW5pbmdEaXNwbGF5LmdldCgpOworICAgIHRpbWVEaXNwbGF5
Q29udGFpbmVyLT5hcHBlbmRDaGlsZCh0aW1lUmVtYWluaW5nRGlzcGxheS5yZWxlYXNlKCksIGVj
LCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgY29udHJvbHMt
Pm1fdGltZURpc3BsYXlDb250YWluZXIgPSB0aW1lRGlzcGxheUNvbnRhaW5lci5nZXQoKTsKKyAg
ICB0aW1lbGluZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodGltZURpc3BsYXlDb250YWluZXIucmVs
ZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IGNvbnRyb2xzLT5tX3RpbWVsaW5lQ29udGFpbmVyID0gdGltZWxpbmVDb250YWluZXIuZ2V0KCk7
CisgICAgZW1iZWRQYW5lbC0+YXBwZW5kQ2hpbGQodGltZWxpbmVDb250YWluZXIucmVsZWFzZSgp
LCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4gZnVsbFNjcmVlbkJ1dHRvbiA9
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwor
ICAgIGNvbnRyb2xzLT5tX2Z1bGxTY3JlZW5CdXR0b24gPSBmdWxsU2NyZWVuQnV0dG9uLmdldCgp
OworICAgIGVtYmVkUGFuZWwtPmFwcGVuZENoaWxkKGZ1bGxTY3JlZW5CdXR0b24ucmVsZWFzZSgp
LCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChk
b2N1bWVudC0+cGFnZSgpLT50aGVtZSgpLT51c2VzTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyKCkp
IHsKKyAgICAgICAgLy8gVGhlIG11dGUgYnV0dG9uIGFuZCB0aGUgc2xpZGVyIGVsZW1lbnQgc2hv
dWxkIGJlIGluIHRoZSBzYW1lIGRpdi4KKyAgICAgICAgUmVmUHRyPEhUTUxEaXZFbGVtZW50PiB2
b2x1bWVDb250cm9sQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
CisKKyAgICAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1l
bnQ+IHZvbHVtZVNsaWRlckNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRh
aW5lckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisKKyAgICAgICAgUmVmUHRyPE1lZGlhQ29u
dHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudD4gc2xpZGVyID0gTWVkaWFDb250cm9sUGFuZWxW
b2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgICAgICBjb250cm9scy0+
bV92b2x1bWVTbGlkZXIgPSBzbGlkZXIuZ2V0KCk7CisgICAgICAgIHZvbHVtZVNsaWRlckNvbnRh
aW5lci0+YXBwZW5kQ2hpbGQoc2xpZGVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgICAgICBp
ZiAoZWMpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjb250cm9scy0+bV92b2x1
bWVTbGlkZXJDb250YWluZXIgPSB2b2x1bWVTbGlkZXJDb250YWluZXIuZ2V0KCk7CisgICAgICAg
IHZvbHVtZUNvbnRyb2xDb250YWluZXItPmFwcGVuZENoaWxkKHZvbHVtZVNsaWRlckNvbnRhaW5l
ci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50
PiBtdXRlQnV0dG9uID0gTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50LCBjb250cm9scy5nZXQoKSk7CisgICAgICAgIGNvbnRyb2xzLT5tX211dGVCdXR0
b24gPSBtdXRlQnV0dG9uLmdldCgpOworICAgICAgICB2b2x1bWVDb250cm9sQ29udGFpbmVyLT5h
cHBlbmRDaGlsZChtdXRlQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgICAgICBpZiAo
ZWMpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBlbWJlZFBhbmVsLT5hcHBlbmRD
aGlsZCh2b2x1bWVDb250cm9sQ29udGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgICAg
ICBpZiAoZWMpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBSZWZQdHI8TWVk
aWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyRWxlbWVudD4gZnVsbHNjcmVlblRp
bWVsaW5lQ29udGFpbmVyID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVy
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVGltZWxpbmVFbGVtZW50PiBmdWxsc2NyZWVuVGltZWxpbmUgPSBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGNvbnRyb2xzLmdldCgp
KTsKKyAgICBjb250cm9scy0+bV9mdWxsc2NyZWVuVGltZWxpbmUgPSBmdWxsc2NyZWVuVGltZWxp
bmUuZ2V0KCk7CisgICAgZnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyLT5hcHBlbmRDaGlsZChm
dWxsc2NyZWVuVGltZWxpbmUucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZURp
c3BsYXlDb250YWluZXJFbGVtZW50PiBmdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXIgPSBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQpOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGlt
ZURpc3BsYXlFbGVtZW50PiBmdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5ID0gTWVkaWFDb250
cm9sRnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
CisgICAgY29udHJvbHMtPm1fZnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheSA9IGZ1bGxzY3Jl
ZW5DdXJyZW50VGltZURpc3BsYXkuZ2V0KCk7CisgICAgZnVsbHNjcmVlblRpbWVEaXNwbGF5Q29u
dGFpbmVyLT5hcHBlbmRDaGlsZChmdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5LnJlbGVhc2Uo
KSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQ
dHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudD4gZnVs
bHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5ID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVS
ZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+
bV9mdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXkgPSBmdWxsc2NyZWVuVGltZVJlbWFpbmlu
Z0Rpc3BsYXkuZ2V0KCk7CisgICAgZnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyLT5hcHBl
bmRDaGlsZChmdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXkucmVsZWFzZSgpLCBlYywgdHJ1
ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnRyb2xzLT5tX2Z1
bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lciA9IGZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRh
aW5lci5nZXQoKTsKKyAgICBmdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXItPmFwcGVuZENoaWxk
KGZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAg
ICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgY29udHJvbHMtPm1fZnVsbHNjcmVl
blRpbWVsaW5lQ29udGFpbmVyID0gZnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyLmdldCgpOwor
ICAgIHBhbmVsLT5hcHBlbmRDaGlsZChmdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXIucmVsZWFz
ZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQ+IGJ1dHRvbkdyb3Vw
Q29udGFpbmVyID0gTWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOworCisgICAgLy8gRklYTUU6IE9ubHkgY3JlYXRlIHdoZW4gbmVlZGVkIDxo
dHRwOi8vd2Via2l0Lm9yZy9iLzU3MTYzPgorICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudD4gZnVsbFNjcmVlbkJ1dHRvbkNvbnRhaW5lciA9IE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQpOworICAgIGNvbnRyb2xzLT5tX2Z1bGxTY3JlZW5CdXR0b25Db250YWluZXIgPSBmdWxsU2Ny
ZWVuQnV0dG9uQ29udGFpbmVyLmdldCgpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGZ1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uID0g
TWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQpOworICAgIGNvbnRyb2xzLT5tX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uID0gZnVs
bHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24uZ2V0KCk7CisgICAgZnVsbFNjcmVlbkJ1dHRvbkNvbnRh
aW5lci0+YXBwZW5kQ2hpbGQoZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24ucmVsZWFzZSgpLCBl
YywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKyAgICBSZWZQdHI8TWVk
aWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50PiBmdWxsU2NyZWVuRGl2aWRl
ciA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KTsKKyAgICBjb250cm9scy0+bV9mdWxsU2NyZWVuRGl2aWRlciA9IGZ1bGxTY3JlZW5E
aXZpZGVyLmdldCgpOworICAgIGZ1bGxTY3JlZW5CdXR0b25Db250YWluZXItPmFwcGVuZENoaWxk
KGZ1bGxTY3JlZW5EaXZpZGVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgYnV0dG9uR3JvdXBDb250YWluZXItPmFwcGVuZENoaWxkKGZ1
bGxTY3JlZW5CdXR0b25Db250YWluZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVj
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9u
Q29udGFpbmVyRWxlbWVudD4gcGxheUJ1dHRvbkNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFBsYXlC
dXR0b25Db250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIGNvbnRyb2xzLT5t
X3BsYXlCdXR0b25Db250YWluZXIgPSBwbGF5QnV0dG9uQ29udGFpbmVyLmdldCgpOworICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQ+IGZ1bGxzY3JlZW5Q
bGF5QnV0dG9uID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOworICAgIGNvbnRyb2xzLT5tX2Z1bGxzY3JlZW5QbGF5QnV0dG9uID0gZnVs
bHNjcmVlblBsYXlCdXR0b24uZ2V0KCk7CisgICAgcGxheUJ1dHRvbkNvbnRhaW5lci0+YXBwZW5k
Q2hpbGQoZnVsbHNjcmVlblBsYXlCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYg
KGVjKQorICAgICAgICByZXR1cm4gMDsKKyAgICBidXR0b25Hcm91cENvbnRhaW5lci0+YXBwZW5k
Q2hpbGQocGxheUJ1dHRvbkNvbnRhaW5lci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAo
ZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFBsYWNlaG9s
ZGVyRWxlbWVudD4gcGxhY2Vob2xkZXIgPSBNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudCk7CisgICAgY29udHJvbHMtPm1fcGxhY2Vob2xkZXIgPSBwbGFjZWhv
bGRlci5nZXQoKTsKKyAgICBidXR0b25Hcm91cENvbnRhaW5lci0+YXBwZW5kQ2hpbGQocGxhY2Vo
b2xkZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIGNvbnRyb2xzLT5tX2J1dHRvbkNvbnRhaW5lciA9IGJ1dHRvbkdyb3VwQ29udGFp
bmVyLmdldCgpOworICAgIHBhbmVsLT5hcHBlbmRDaGlsZChidXR0b25Hcm91cENvbnRhaW5lci5y
ZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgaWYgKGRvY3VtZW50LT5wYWdlKCktPnRoZW1lKCktPnN1cHBvcnRzQ2xvc2VkQ2FwdGlvbmlu
ZygpKSB7CisgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1
dHRvbkVsZW1lbnQ+IHRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uID0gTWVkaWFDb250cm9sVG9n
Z2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGNvbnRyb2xz
LmdldCgpKTsKKyAgICAgICAgY29udHJvbHMtPm1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24g
PSB0b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi5nZXQoKTsKKyAgICAgICAgcGFuZWwtPmFwcGVu
ZENoaWxkKHRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwor
ICAgICAgICBpZiAoZWMpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBjb250
cm9scy0+bV9wYW5lbCA9IHBhbmVsLmdldCgpOworICAgIGNvbnRyb2xzLT5hcHBlbmRDaGlsZChw
YW5lbC5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAw
OworCisgICAgY29udHJvbHMtPm1fZW1iZWRkZWRQYW5lbCA9IGVtYmVkUGFuZWwuZ2V0KCk7Cisg
ICAgY29udHJvbHMtPmFwcGVuZENoaWxkKGVtYmVkUGFuZWwucmVsZWFzZSgpLCBlYywgdHJ1ZSk7
CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBjb250cm9scy5y
ZWxlYXNlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnNldE1lZGlhQ29u
dHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIGNvbnRyb2xsZXIpCit7CisgICAgaWYg
KG1fbWVkaWFDb250cm9sbGVyID09IGNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IE1lZGlhQ29udHJvbHM6OnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKworICAgIGlm
IChtX2J1dHRvbkNvbnRhaW5lcikKKyAgICAgICAgbV9idXR0b25Db250YWluZXItPnNldE1lZGlh
Q29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV90aW1lRGlzcGxheUNvbnRhaW5lcikK
KyAgICAgICAgbV90aW1lRGlzcGxheUNvbnRhaW5lci0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRy
b2xsZXIpOworICAgIGlmIChtX2Z1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lcikKKyAgICAg
ICAgbV9mdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihj
b250cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuUGxheUJ1dHRvbikKKyAgICAgICAgbV9m
dWxsc2NyZWVuUGxheUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAg
IGlmIChtX2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXkpCisgICAgICAgIG1fZnVsbHNjcmVl
bkN1cnJlbnRUaW1lRGlzcGxheS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAg
IGlmIChtX2Z1bGxzY3JlZW5UaW1lbGluZSkKKyAgICAgICAgbV9mdWxsc2NyZWVuVGltZWxpbmUt
PnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV90aW1lUmVtYWluaW5n
RGlzcGxheSkKKyAgICAgICAgbV90aW1lUmVtYWluaW5nRGlzcGxheS0+c2V0TWVkaWFDb250cm9s
bGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX2Z1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxh
eSkKKyAgICAgICAgbV9mdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldE1lZGlhQ29u
dHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV90aW1lbGluZUNvbnRhaW5lcikKKyAgICAg
ICAgbV90aW1lbGluZUNvbnRhaW5lci0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwor
ICAgIGlmIChtX2Z1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lcikKKyAgICAgICAgbV9mdWxsc2Ny
ZWVuVGltZWxpbmVDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAg
ICBpZiAobV9mdWxsc2NyZWVuRnVsbFNjcmVlbkJ1dHRvbikKKyAgICAgICAgbV9mdWxsc2NyZWVu
RnVsbFNjcmVlbkJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlm
IChtX211dGVCdXR0b24pCisgICAgICAgIG1fbXV0ZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVy
KGNvbnRyb2xsZXIpOworICAgIGlmIChtX3ZvbHVtZVNsaWRlckNvbnRhaW5lcikKKyAgICAgICAg
bV92b2x1bWVTbGlkZXJDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsK
KyAgICBpZiAobV9lbWJlZGRlZFBhbmVsKQorICAgICAgICBtX2VtYmVkZGVkUGFuZWwtPnNldE1l
ZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICByZXNldCgpOworfQorCit2b2lkIE1lZGlh
Q29udHJvbHNCbGFja0JlcnJ5OjpzaG93KCkKK3sKKyAgICBpZiAobV9pc0Z1bGxzY3JlZW4pIHsK
KyAgICAgICAgbV9wYW5lbC0+c2V0SXNEaXNwbGF5ZWQodHJ1ZSk7CisgICAgICAgIG1fcGFuZWwt
PnNob3coKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2VtYmVkZGVkUGFuZWwtPnNldElzRGlz
cGxheWVkKHRydWUpOworICAgICAgICBtX2VtYmVkZGVkUGFuZWwtPnNob3coKTsKKyAgICB9Cit9
CisKK3ZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OmhpZGUoKQoreworICAgIGlmIChtX2lz
RnVsbHNjcmVlbikgeworICAgICAgICBtX3BhbmVsLT5zZXRJc0Rpc3BsYXllZChmYWxzZSk7Cisg
ICAgICAgIG1fcGFuZWwtPmhpZGUoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2VtYmVkZGVk
UGFuZWwtPnNldElzRGlzcGxheWVkKGZhbHNlKTsKKyAgICAgICAgbV9lbWJlZGRlZFBhbmVsLT5o
aWRlKCk7CisgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5oaWRlKCk7CisgICAgfQor
fQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjptYWtlT3BhcXVlKCkKK3sKKyAgICBp
ZiAobV9pc0Z1bGxzY3JlZW4pCisgICAgICAgIG1fcGFuZWwtPm1ha2VPcGFxdWUoKTsKKyAgICBl
bHNlCisgICAgICAgIG1fZW1iZWRkZWRQYW5lbC0+bWFrZU9wYXF1ZSgpOworfQorCit2b2lkIE1l
ZGlhQ29udHJvbHNCbGFja0JlcnJ5OjptYWtlVHJhbnNwYXJlbnQoKQoreworICAgIGlmIChtX2lz
RnVsbHNjcmVlbikKKyAgICAgICAgbV9wYW5lbC0+bWFrZVRyYW5zcGFyZW50KCk7CisgICAgZWxz
ZSB7CisgICAgICAgIG1fZW1iZWRkZWRQYW5lbC0+bWFrZVRyYW5zcGFyZW50KCk7CisgICAgICAg
IG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5oaWRlKCk7CisgICAgfQorfQorCit2b2lkIE1lZGlh
Q29udHJvbHNCbGFja0JlcnJ5OjpyZXNldCgpCit7CisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50
KCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHVwZGF0
ZVN0YXR1c0Rpc3BsYXkoKTsKKworICAgIGlmIChtX2Z1bGxTY3JlZW5CdXR0b24pIHsKKyAgICAg
ICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5zdXBwb3J0c0Z1bGxzY3JlZW4oKSkKKyAgICAgICAg
ICAgIG1fZnVsbFNjcmVlbkJ1dHRvbi0+c2hvdygpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX2Z1bGxTY3JlZW5CdXR0b24tPmhpZGUoKTsKKyAgICB9CisgICAgaWYgKG1fZnVsbHNjcmVl
bkZ1bGxTY3JlZW5CdXR0b24pIHsKKyAgICAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5zdXBw
b3J0c0Z1bGxzY3JlZW4oKSkKKyAgICAgICAgICAgIG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0
b24tPnNob3coKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9mdWxsc2NyZWVuRnVsbFNj
cmVlbkJ1dHRvbi0+aGlkZSgpOworICAgIH0KKyAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFD
b250cm9sbGVyLT5kdXJhdGlvbigpOworICAgIGlmIChpc2Zpbml0ZShkdXJhdGlvbikgfHwgcGFn
ZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhU2xpZGVyUGFy
dCkpIHsKKyAgICAgICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1l
KCk7CisgICAgICAgIG1fdGltZWxpbmUtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKKyAgICAgICAg
bV9mdWxsc2NyZWVuVGltZWxpbmUtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKKyAgICAgICAgbV90
aW1lbGluZUNvbnRhaW5lci0+c2hvdygpOworICAgICAgICBtX2Z1bGxzY3JlZW5UaW1lbGluZUNv
bnRhaW5lci0+c2hvdygpOworICAgICAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOwor
ICAgICAgICBtX2Z1bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKKyAgICAgICAg
dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV90aW1l
bGluZUNvbnRhaW5lci0+aGlkZSgpOworICAgICAgICBtX2Z1bGxzY3JlZW5UaW1lbGluZUNvbnRh
aW5lci0+aGlkZSgpOworICAgIH0KKworICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aGFzQXVk
aW8oKSB8fCBwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVk
aWFNdXRlQnV0dG9uUGFydCkpCisgICAgICAgIG1fbXV0ZUJ1dHRvbi0+c2hvdygpOworICAgIGVs
c2UKKyAgICAgICAgbV9tdXRlQnV0dG9uLT5oaWRlKCk7CisKKyAgICBpZiAobV92b2x1bWVTbGlk
ZXIpCisgICAgICAgIG1fdm9sdW1lU2xpZGVyLT5zZXRWb2x1bWUobV9tZWRpYUNvbnRyb2xsZXIt
PnZvbHVtZSgpKTsKKworICAgIGlmIChtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKSB7Cisg
ICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKKyAgICAg
ICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPnNob3coKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOworICAg
IH0KKworICAgIGlmIChtX3BsYXlCdXR0b24pCisgICAgICAgIG1fcGxheUJ1dHRvbi0+dXBkYXRl
RGlzcGxheVR5cGUoKTsKKworICAgIGlmIChtX2Z1bGxzY3JlZW5QbGF5QnV0dG9uKQorICAgICAg
ICBtX2Z1bGxzY3JlZW5QbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOworCisgICAgbWFr
ZU9wYXF1ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpidWZmZXJpbmdQ
cm9ncmVzc2VkKCkKK3sKKyAgICAvLyBXZSBvbmx5IG5lZWQgdG8gdXBkYXRlIGJ1ZmZlcmluZyBw
cm9ncmVzcyB3aGVuIHBhdXNlZCwgZHVyaW5nIG5vcm1hbAorICAgIC8vIHBsYXliYWNrIHBsYXli
YWNrUHJvZ3Jlc3NlZCgpIHdpbGwgdGFrZSBjYXJlIG9mIGl0LgorICAgIGlmIChtX21lZGlhQ29u
dHJvbGxlci0+cGF1c2VkKCkpIHsKKyAgICAgICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xs
ZXItPmN1cnJlbnRUaW1lKCk7CisgICAgICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG5vdyk7
CisgICAgICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOworICAgIH0K
K30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cGxheWJhY2tTdGFydGVkKCkKK3sK
KyAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBt
X3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CisgICAgbV9mdWxsc2NyZWVuUGxheUJ1
dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKKyAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihu
b3cpOworICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOworICAgIHVw
ZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpOworCisgICAgaWYgKG1faXNGdWxsc2NyZWVuKQorICAg
ICAgICBzdGFydEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOworfQorCit2b2lkIE1lZGlh
Q29udHJvbHNCbGFja0JlcnJ5OjpwbGF5YmFja1Byb2dyZXNzZWQoKQoreworICAgIGZsb2F0IG5v
dyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgIG1fdGltZWxpbmUtPnNl
dFBvc2l0aW9uKG5vdyk7CisgICAgbV9mdWxsc2NyZWVuVGltZWxpbmUtPnNldFBvc2l0aW9uKG5v
dyk7CisgICAgdXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCk7CisgICAgCisgICAgaWYgKCFtX2lz
TW91c2VPdmVyQ29udHJvbHMgJiYgbV9tZWRpYUNvbnRyb2xsZXItPmhhc1ZpZGVvKCkpCisgICAg
ICAgIG1ha2VUcmFuc3BhcmVudCgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5
OjpwbGF5YmFja1N0b3BwZWQoKQoreworICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVy
LT5jdXJyZW50VGltZSgpOworICAgIG1fcGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsK
KyAgICBtX2Z1bGxzY3JlZW5QbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOworICAgIG1f
dGltZWxpbmUtPnNldFBvc2l0aW9uKG5vdyk7CisgICAgbV9mdWxsc2NyZWVuVGltZWxpbmUtPnNl
dFBvc2l0aW9uKG5vdyk7CisgICAgdXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCk7CisgICAgbWFr
ZU9wYXF1ZSgpOworICAgIAorICAgIHN0b3BIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6dXBkYXRlQ3VycmVudFRpbWVEaXNw
bGF5KCkKK3sKKyAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUo
KTsKKyAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwor
CisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIEFsbG93IHRoZSB0aGVtZSB0byBmb3JtYXQgdGhlIHRp
bWUuCisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0
SW5uZXJUZXh0KHBhZ2UtPnRoZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50VGltZShu
b3csIGR1cmF0aW9uKSwgZWMpOworICAgIG1fY3VycmVudFRpbWVEaXNwbGF5LT5zZXRDdXJyZW50
VmFsdWUobm93KTsKKyAgICBtX2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXktPnNldElubmVy
VGV4dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzQ3VycmVudFRpbWUobm93LCBk
dXJhdGlvbiksIGVjKTsKKyAgICBtX2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXktPnNldEN1
cnJlbnRWYWx1ZShub3cpOworICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldElubmVyVGV4
dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzUmVtYWluaW5nVGltZShub3csIGR1
cmF0aW9uKSwgZWMpOworICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldEN1cnJlbnRWYWx1
ZShub3cgLSBkdXJhdGlvbik7CisgICAgbV9mdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXkt
PnNldElubmVyVGV4dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzUmVtYWluaW5n
VGltZShub3csIGR1cmF0aW9uKSwgZWMpOworICAgIG1fZnVsbHNjcmVlblRpbWVSZW1haW5pbmdE
aXNwbGF5LT5zZXRDdXJyZW50VmFsdWUobm93IC0gZHVyYXRpb24pOworfQorCit2b2lkIE1lZGlh
Q29udHJvbHNCbGFja0JlcnJ5OjpyZXBvcnRlZEVycm9yKCkKK3sKKyAgICBQYWdlKiBwYWdlID0g
ZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVk
aWFTbGlkZXJQYXJ0KSkgeworICAgICAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5oaWRlKCk7Cisg
ICAgICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyLT5oaWRlKCk7CisgICAgfQorCisg
ICAgaWYgKCFwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVk
aWFNdXRlQnV0dG9uUGFydCkpCisgICAgICAgIG1fbXV0ZUJ1dHRvbi0+aGlkZSgpOworCisgICAg
aWYgKG1fZnVsbFNjcmVlbkJ1dHRvbikKKyAgICAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRl
KCk7CisKKyAgICBpZiAobV9mdWxsU2NyZWVuRGl2aWRlcikKKyAgICAgICAgbV9mdWxsU2NyZWVu
RGl2aWRlci0+aGlkZSgpOworCisgICAgaWYgKG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24p
CisgICAgICAgIG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24tPmhpZGUoKTsKKworICAgIGlm
IChtX3ZvbHVtZVNsaWRlckNvbnRhaW5lcikKKyAgICAgICAgbV92b2x1bWVTbGlkZXJDb250YWlu
ZXItPmhpZGUoKTsKKworICAgIGlmIChtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uICYmICFw
YWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFUb2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvblBhcnQpKQorICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25z
QnV0dG9uLT5oaWRlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OmNoYW5n
ZWRNdXRlKCkKK3sKKyAgICBtX211dGVCdXR0b24tPmNoYW5nZWRNdXRlKCk7Cit9CisKK3ZvaWQg
TWVkaWFDb250cm9sc0JsYWNrQmVycnk6OmVudGVyZWRGdWxsc2NyZWVuKCkKK3sKKyAgICBNZWRp
YUNvbnRyb2xzOjplbnRlcmVkRnVsbHNjcmVlbigpOworCisgICAgbV9wYW5lbC0+c2V0Q2FuQmVE
cmFnZ2VkKHRydWUpOworICAgIG1fZW1iZWRkZWRQYW5lbC0+c2V0Q2FuQmVEcmFnZ2VkKHRydWUp
OworCisgICAgaWYgKG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24pCisgICAgICAgIG1fZnVs
bHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24tPnNldElzRnVsbHNjcmVlbih0cnVlKTsKK30KKwordm9p
ZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6ZXhpdGVkRnVsbHNjcmVlbigpCit7CisgICAgbV9w
YW5lbC0+c2V0Q2FuQmVEcmFnZ2VkKGZhbHNlKTsKKyAgICBtX2VtYmVkZGVkUGFuZWwtPnNldENh
bkJlRHJhZ2dlZChmYWxzZSk7CisKKyAgICBpZiAobV9mdWxsc2NyZWVuRnVsbFNjcmVlbkJ1dHRv
bikKKyAgICAgICAgbV9mdWxsc2NyZWVuRnVsbFNjcmVlbkJ1dHRvbi0+c2V0SXNGdWxsc2NyZWVu
KGZhbHNlKTsKKworICAgIC8vIFdlIHdpbGwga2VlcCB1c2luZyB0aGUgcGFuZWwsIGJ1dCB3ZSB3
YW50IGl0IHRvIGdvIGJhY2sgdG8gdGhlIHN0YW5kYXJkIHBvc2l0aW9uLgorICAgIC8vIFRoaXMg
d2lsbCBtYXR0ZXIgcmlnaHQgYXdheSBiZWNhdXNlIHdlIHVzZSB0aGUgcGFuZWwgZXZlbiB3aGVu
IG5vdCBmdWxsc2NyZWVuLgorICAgIC8vIEFuZCBpZiB3ZSByZWVudGVyIGZ1bGxzY3JlZW4gd2Ug
YWxzbyB3YW50IHRoZSBwYW5lbCBpbiB0aGUgc3RhbmRhcmQgcG9zaXRpb24uCisgICAgbV9wYW5l
bC0+cmVzZXRQb3NpdGlvbigpOworICAgIG1fZW1iZWRkZWRQYW5lbC0+cmVzZXRQb3NpdGlvbigp
OworCisgICAgTWVkaWFDb250cm9sczo6ZXhpdGVkRnVsbHNjcmVlbigpOworfQorCit2b2lkIE1l
ZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpzaG93Vm9sdW1lU2xpZGVyKCkKK3sKKyAgICBpZiAoIW1f
bWVkaWFDb250cm9sbGVyLT5oYXNBdWRpbygpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
bV92b2x1bWVTbGlkZXJDb250YWluZXIpCisgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVy
LT5zaG93KCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnRvZ2dsZVZvbHVt
ZVNsaWRlcigpCit7CisgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlci0+aGFzQXVkaW8oKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyKSB7CisgICAg
ICAgIGlmIChtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+cmVuZGVyZXIoKSAmJiBtX3ZvbHVtZVNs
aWRlckNvbnRhaW5lci0+cmVuZGVyZXIoKS0+dmlzaWJsZVRvSGl0VGVzdGluZygpKQorICAgICAg
ICAgICAgbV92b2x1bWVTbGlkZXJDb250YWluZXItPmhpZGUoKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgbV92b2x1bWVTbGlkZXJDb250YWluZXItPnNob3coKTsKKyAgICB9Cit9CisKK2Jv
b2wgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnNob3VsZEhpZGVDb250cm9scygpCit7CisgICAg
aWYgKG1faXNGdWxsc2NyZWVuKQorICAgICAgICByZXR1cm4gIW1fcGFuZWwtPmhvdmVyZWQoKTsK
KyAgICByZXR1cm4gIW1fZW1iZWRkZWRQYW5lbC0+aG92ZXJlZCgpOworfQorfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFj
a0JlcnJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tC
ZXJyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU1MjY5ZjFlNjJlZDEyMTg0NTc0NzI5Y2FmMGQ0MTZkYjcyOTE3
MWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xzQmxhY2tCZXJyeS5oCkBAIC0wLDAgKzEsMjgzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFDb250cm9sc0JsYWNrQmVy
cnlfaAorI2RlZmluZSBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeV9oCisKKyNpZiBFTkFCTEUoVklE
RU8pCisKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaCIKKyNpbmNsdWRlICJN
ZWRpYUNvbnRyb2xFbGVtZW50cy5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbHMuaCIKKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFRNTElu
cHV0RWxlbWVudDsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBFdmVudDsKK2NsYXNz
IE1lZGlhUGxheWVyOworCitjbGFzcyBSZW5kZXJCb3g7CitjbGFzcyBSZW5kZXJNZWRpYTsKKwor
I2lmIEVOQUJMRShWSURFT19UUkFDSykKK2NsYXNzIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQ7CitjbGFzcyBNZWRpYUNvbnRyb2xUZXh0VHJhY2tEaXNwbGF5RWxlbWVudDsK
KyNlbmRpZgorCitjbGFzcyBNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQg
OiBwdWJsaWMgTWVkaWFDb250cm9sRGl2RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8TWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50PiBjcmVhdGUo
RG9jdW1lbnQqKTsKKworcHJvdGVjdGVkOgorICAgIE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29u
dGFpbmVyRWxlbWVudChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250
cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVs
ZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVE
aXNwbGF5Q29udGFpbmVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisKK3Byb3RlY3RlZDoK
KyAgICBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqKTsK
KyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBP
VkVSUklERTsKK307CisKK2NsYXNzIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50IDog
cHVibGljIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQq
KTsKKworICAgIHZvaWQgc2V0Q2FuQmVEcmFnZ2VkKGJvb2wpOworICAgIHZvaWQgc2V0SXNEaXNw
bGF5ZWQoYm9vbCk7CisKKyAgICB2b2lkIHJlc2V0UG9zaXRpb24oKTsKKyAgICB2b2lkIG1ha2VP
cGFxdWUoKTsKKyAgICB2b2lkIG1ha2VUcmFuc3BhcmVudCgpOworCisgICAgdmlydHVhbCBib29s
IHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJ
REUgeyByZXR1cm4gdHJ1ZTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IE1lZGlhQ29udHJv
bEVtYmVkZGVkUGFuZWxFbGVtZW50KERvY3VtZW50Kik7CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIE9WRVJSSURFOworCisgICAgdm9pZCBz
dGFydERyYWcoY29uc3QgTGF5b3V0UG9pbnQmIGV2ZW50TG9jYXRpb24pOworICAgIHZvaWQgY29u
dGludWVEcmFnKGNvbnN0IExheW91dFBvaW50JiBldmVudExvY2F0aW9uKTsKKyAgICB2b2lkIGVu
ZERyYWcoKTsKKworICAgIHZvaWQgc3RhcnRUaW1lcigpOworICAgIHZvaWQgc3RvcFRpbWVyKCk7
CisgICAgdm9pZCB0cmFuc2l0aW9uVGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xFbWJlZGRl
ZFBhbmVsRWxlbWVudD4qKTsKKworICAgIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgTGF5b3V0UG9p
bnQmKTsKKworICAgIGJvb2wgbV9jYW5CZURyYWdnZWQ7CisgICAgYm9vbCBtX2lzQmVpbmdEcmFn
Z2VkOworICAgIGJvb2wgbV9pc0Rpc3BsYXllZDsKKyAgICBib29sIG1fb3BhcXVlOworICAgIExh
eW91dFBvaW50IG1fbGFzdERyYWdFdmVudExvY2F0aW9uOworICAgIExheW91dFBvaW50IG1fY3Vt
dWxhdGl2ZURyYWdPZmZzZXQ7CisKKyAgICBUaW1lcjxNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVs
RWxlbWVudD4gbV90cmFuc2l0aW9uVGltZXI7Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbERp
dkVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwor
Citwcm90ZWN0ZWQ6CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFp
bmVyRWxlbWVudChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRGl2
RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVs
bHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworCitwcml2
YXRlOgorICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50KERv
Y3VtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lk
KCkgY29uc3QgT1ZFUlJJREU7Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0
dG9uRGl2aWRlckVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRGl2RWxlbWVudCB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRp
dmlkZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsK
K307CisKK2NsYXNzIE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50IDogcHVi
bGljIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1l
bnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxl
bWVudChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQ
c2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sUGxhY2Vo
b2xkZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudD4gY3Jl
YXRlKERvY3VtZW50Kik7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sUGxhY2Vob2xkZXJF
bGVtZW50KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRv
d1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
UGxheUJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworCisgICAgdmlydHVhbCBib29s
IHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5VHlwZSgpIE9WRVJSSURFOworCitwcml2
YXRlOgorICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudChEb2N1bWVu
dCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
KikgT1ZFUlJJREU7Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVl
bkJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVl
bkJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworCisgICAgdmlydHVhbCBib29sIHdp
bGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIHZvaWQgc2V0SXNGdWxsc2NyZWVuKGJvb2wpOworCitwcml2YXRlOgorICAgIE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudChEb2N1bWVudCopOworICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7
Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVt
ZW50IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1l
bnQ+IGNyZWF0ZShEb2N1bWVudCopOworCitwcml2YXRlOgorICAgIE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKK307CisK
K2NsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQgOiBwdWJsaWMgTWVk
aWFDb250cm9sSW5wdXRFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqLCBN
ZWRpYUNvbnRyb2xzKik7CisKKyAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xp
Y2tFdmVudHMoKSBPVkVSUklERTsKKyAgICB2b2lkIHNldFBvc2l0aW9uKGZsb2F0KTsKKyAgICB2
b2lkIHNldER1cmF0aW9uKGZsb2F0KTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVGltZWxpbmVFbGVtZW50KERvY3VtZW50KiwgTWVkaWFDb250cm9scyopOworICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7
CisKKyAgICBNZWRpYUNvbnRyb2xzKiBtX2NvbnRyb2xzOworfTsKKworY2xhc3MgTWVkaWFDb250
cm9sRnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNv
bnRyb2xUaW1lRGlzcGxheUVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ+IGNyZWF0
ZShEb2N1bWVudCopOworCitwcml2YXRlOgorICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1l
UmVtYWluaW5nRGlzcGxheUVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKK307CisKK2NsYXNz
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50IDogcHVibGlj
IE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ+
IGNyZWF0ZShEb2N1bWVudCopOworCitwcml2YXRlOgorICAgIE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7Cit9OworCitj
bGFzcyBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeSA6IHB1YmxpYyBNZWRpYUNvbnRyb2xzIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeT4gY3Jl
YXRlQ29udHJvbHMoRG9jdW1lbnQqKTsKKworICAgIC8vIE1lZGlhQ29udHJvbHMgaW1wbGVtZW50
YXRpb24uCisgICAgdm9pZCBzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJm
YWNlKikgT1ZFUlJJREU7CisKKyAgICB2b2lkIHNob3coKSBPVkVSUklERTsKKyAgICB2b2lkIGhp
ZGUoKSBPVkVSUklERTsKKyAgICB2b2lkIG1ha2VPcGFxdWUoKSBPVkVSUklERTsKKyAgICB2b2lk
IG1ha2VUcmFuc3BhcmVudCgpIE9WRVJSSURFOworCisgICAgdm9pZCByZXNldCgpIE9WRVJSSURF
OworCisgICAgdm9pZCBidWZmZXJpbmdQcm9ncmVzc2VkKCkgT1ZFUlJJREU7CisgICAgdm9pZCBw
bGF5YmFja1Byb2dyZXNzZWQoKSBPVkVSUklERTsKKyAgICB2b2lkIHBsYXliYWNrU3RhcnRlZCgp
IE9WRVJSSURFOworICAgIHZvaWQgcGxheWJhY2tTdG9wcGVkKCkgT1ZFUlJJREU7CisKKyAgICB2
b2lkIGNoYW5nZWRNdXRlKCkgT1ZFUlJJREU7CisKKyAgICB2b2lkIGVudGVyZWRGdWxsc2NyZWVu
KCkgT1ZFUlJJREU7CisgICAgdm9pZCBleGl0ZWRGdWxsc2NyZWVuKCkgT1ZFUlJJREU7CisKKyAg
ICB2b2lkIHJlcG9ydGVkRXJyb3IoKSBPVkVSUklERTsKKworICAgIHZvaWQgc2hvd1ZvbHVtZVNs
aWRlcigpIE9WRVJSSURFOworICAgIHZvaWQgdG9nZ2xlVm9sdW1lU2xpZGVyKCkgT1ZFUlJJREU7
CisgICAgdm9pZCB1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKSBPVkVSUklERTsKKworICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRIaWRlQ29udHJvbHMoKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAg
ICBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeShEb2N1bWVudCopOworCisgICAgTWVkaWFDb250cm9s
QnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50KiBtX2J1dHRvbkNvbnRhaW5lcjsKKyAgICBNZWRp
YUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQqIG1fdGltZURpc3BsYXlDb250YWlu
ZXI7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVu
dCogbV9mdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXI7CisgICAgTWVkaWFDb250cm9sRnVs
bHNjcmVlblBsYXlCdXR0b25FbGVtZW50KiBtX2Z1bGxzY3JlZW5QbGF5QnV0dG9uOworICAgIE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50KiBtX2Z1bGxzY3Jl
ZW5DdXJyZW50VGltZURpc3BsYXk7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5l
RWxlbWVudCogbV9mdWxsc2NyZWVuVGltZWxpbmU7CisgICAgTWVkaWFDb250cm9sVGltZVJlbWFp
bmluZ0Rpc3BsYXlFbGVtZW50KiBtX3RpbWVSZW1haW5pbmdEaXNwbGF5OworICAgIE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQqIG1fZnVsbHNjcmVlblRp
bWVSZW1haW5pbmdEaXNwbGF5OworICAgIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxl
bWVudCogbV90aW1lbGluZUNvbnRhaW5lcjsKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGlt
ZWxpbmVDb250YWluZXJFbGVtZW50KiBtX2Z1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lcjsKKyAg
ICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQqIG1fZnVsbFNjcmVl
bkRpdmlkZXI7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVt
ZW50KiBtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uOworICAgIE1lZGlhQ29udHJvbFBhbmVs
TXV0ZUJ1dHRvbkVsZW1lbnQqIG1fbXV0ZUJ1dHRvbjsKKyAgICBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJDb250YWluZXJFbGVtZW50KiBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lcjsKKyAgICBNZWRp
YUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudCogbV9lbWJlZGRlZFBhbmVsOworICAgIE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50KiBtX2Z1bGxTY3JlZW5CdXR0
b25Db250YWluZXI7CisgICAgTWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQq
IG1fcGxheUJ1dHRvbkNvbnRhaW5lcjsKKyAgICBNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1l
bnQqIG1fcGxhY2Vob2xkZXI7Cit9OworCit9CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJy
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxh
Y2tCZXJyeS5jcHAKaW5kZXggMWRkZjFhODY3NGRjODBlOWM1YzYxMjc3NTIxZGVkNTZkNTAwMjI1
NC4uYTQ1M2Q0MDc0OTBhMGIyNGM3MWFjMDk3M2VjMmRiNGVhMjc0NTkyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVC
bGFja0JlcnJ5LmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKKyNpbmNs
dWRlICJJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuaCIKICNpbmNsdWRlICJQYWdlLmgi
CkBAIC00NCwxMCArNDUsMTMgQEAgY29uc3QgdW5zaWduZWQgc21hbGxSYWRpdXMgPSAxOwogY29u
c3QgdW5zaWduZWQgbGFyZ2VSYWRpdXMgPSAzOwogY29uc3QgdW5zaWduZWQgbGluZVdpZHRoID0g
MTsKIGNvbnN0IGZsb2F0IG1hcmdpblNpemUgPSA0OwotY29uc3QgZmxvYXQgbWVkaWFDb250cm9s
c0hlaWdodCA9IDMyOwotY29uc3QgZmxvYXQgbWVkaWFTbGlkZXJUaHVtYldpZHRoID0gNDA7Ci1j
b25zdCBmbG9hdCBtZWRpYVNsaWRlclRodW1iSGVpZ2h0ID0gMTM7Ci1jb25zdCBmbG9hdCBtZWRp
YVNsaWRlclRodW1iUmFkaXVzID0gNTsKK2NvbnN0IGZsb2F0IG1lZGlhQ29udHJvbHNIZWlnaHQg
PSA0NDsKK2NvbnN0IGZsb2F0IG1lZGlhQmFja0J1dHRvbkhlaWdodCA9IDMzOworY29uc3QgZmxv
YXQgbWVkaWFTbGlkZXJPdXRsaW5lV2lkdGggPSAyOworY29uc3QgZmxvYXQgbWVkaWFTbGlkZXJU
cmFja1JhZGl1cyA9IDM7Citjb25zdCBmbG9hdCBtZWRpYVNsaWRlclRodW1iV2lkdGggPSAyNTsK
K2NvbnN0IGZsb2F0IG1lZGlhU2xpZGVyVGh1bWJIZWlnaHQgPSAyNTsKK2NvbnN0IGZsb2F0IG1l
ZGlhU2xpZGVyVGh1bWJSYWRpdXMgPSAzOwogY29uc3QgZmxvYXQgc2xpZGVyVGh1bWJXaWR0aCA9
IDE1OwogY29uc3QgZmxvYXQgc2xpZGVyVGh1bWJIZWlnaHQgPSAyNTsKIApAQCAtMTI0LDYgKzEy
OCwxMiBAQCBjb25zdCBSR0JBMzIgZHJhZ1JvbGxEYXJrID0gMHhmZjY5YThmZjsKIGNvbnN0IFJH
QkEzMiBibGFja1BlbiA9IENvbG9yOjpibGFjazsKIGNvbnN0IFJHQkEzMiBmb2N1c1JpbmdQZW4g
PSAweGZmYTNjOGZlOwogCitjb25zdCBSR0JBMzIgbWVkaWFTbGlkZXJUcmFja091dGxpbmUgPSAw
eGZmODQ4NTg3OworY29uc3QgUkdCQTMyIG1lZGlhU2xpZGVyVHJhY2tQbGF5ZWQgPSAweGZmMmI4
ZmZmOworY29uc3QgUkdCQTMyIG1lZGlhU2xpZGVyVHJhY2tCdWZmZXJlZCA9IDB4ZmZiYmJkYmY7
CisKK2NvbnN0IFJHQkEzMiBzZWxlY3Rpb24gPSAweGZmMmI4ZmZmOworCiBmbG9hdCBSZW5kZXJU
aGVtZUJsYWNrQmVycnk6OmRlZmF1bHRGb250U2l6ZSA9IDE2OwogCiBjb25zdCBTdHJpbmcmIFJl
bmRlclRoZW1lQmxhY2tCZXJyeTo6ZGVmYXVsdEdVSUZvbnQoKQpAQCAtMjk1LDEyICszMDUsMTIg
QEAgU3RyaW5nIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6ZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVT
aGVldCgpCiB7CiAgICAgcmV0dXJuIFN0cmluZyhtZWRpYUNvbnRyb2xzQmxhY2tCZXJyeVVzZXJB
Z2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRpYUNvbnRyb2xzQmxhY2tCZXJyeVVzZXJBZ2VudFN0
eWxlU2hlZXQpKTsKIH0KKyNlbmRpZgogCi1TdHJpbmcgUmVuZGVyVGhlbWVCbGFja0JlcnJ5Ojpm
b3JtYXRNZWRpYUNvbnRyb2xzUmVtYWluaW5nVGltZShmbG9hdCwgZmxvYXQgZHVyYXRpb24pIGNv
bnN0CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorU3RyaW5nIFJlbmRlclRoZW1lQmxhY2tC
ZXJyeTo6ZXh0cmFGdWxsU2NyZWVuU3R5bGVTaGVldCgpCiB7Ci0gICAgLy8gVGhpcyBpcyBhIHdv
cmthcm91bmQgdG8gbWFrZSB0aGUgYXBwZWFyYW5jZSBvZiBtZWRpYSB0aW1lIGNvbnRyb2xsZXIg
aW4KLSAgICAvLyBpbi1wYWdlIG1vZGUgdGhlIHNhbWUgYXMgaW4gZnVsbHNjcmVlbiBtb2RlLgot
ICAgIHJldHVybiBmb3JtYXRNZWRpYUNvbnRyb2xzVGltZShkdXJhdGlvbik7CisgICAgcmV0dXJu
IFN0cmluZyhtZWRpYUNvbnRyb2xzQmxhY2tCZXJyeUZ1bGxzY3JlZW5Vc2VyQWdlbnRTdHlsZVNo
ZWV0LCBzaXplb2YobWVkaWFDb250cm9sc0JsYWNrQmVycnlGdWxsc2NyZWVuVXNlckFnZW50U3R5
bGVTaGVldCkpOwogfQogI2VuZGlmCiAKQEAgLTY4OCwxMCArNjk4LDEwIEBAIHZvaWQgUmVuZGVy
VGhlbWVCbGFja0JlcnJ5OjphZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KiBlCiAgICAgICAgICAgICBmdWxsU2NyZWVuTXVsdGlwbGllciA9IGRldGVybWlu
ZUZ1bGxTY3JlZW5NdWx0aXBsaWVyKHRvRWxlbWVudChzbGlkZXItPm5vZGUoKSkpOwogICAgIH0K
IAotICAgIGlmIChwYXJ0ID09IE1lZGlhVm9sdW1lU2xpZGVyVGh1bWJQYXJ0IHx8IHBhcnQgPT0g
U2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCB8fCBwYXJ0ID09IFNsaWRlclRodW1iVmVydGljYWxQ
YXJ0KSB7CisgICAgaWYgKHBhcnQgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCB8fCBwYXJ0
ID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0KSB7CiAgICAgICAgIHN0eWxlLT5zZXRXaWR0aChM
ZW5ndGgoKHBhcnQgPT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQgPyBzbGlkZXJUaHVtYkhlaWdo
dCA6IHNsaWRlclRodW1iV2lkdGgpICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIEZpeGVkKSk7CiAg
ICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKChwYXJ0ID09IFNsaWRlclRodW1iVmVydGlj
YWxQYXJ0ID8gc2xpZGVyVGh1bWJXaWR0aCA6IHNsaWRlclRodW1iSGVpZ2h0KSAqIGZ1bGxTY3Jl
ZW5NdWx0aXBsaWVyLCBGaXhlZCkpOwotICAgIH0gZWxzZSBpZiAocGFydCA9PSBNZWRpYVNsaWRl
clRodW1iUGFydCkgeworICAgIH0gZWxzZSBpZiAocGFydCA9PSBNZWRpYVZvbHVtZVNsaWRlclRo
dW1iUGFydCB8fCBwYXJ0ID09IE1lZGlhU2xpZGVyVGh1bWJQYXJ0KSB7CiAgICAgICAgIHN0eWxl
LT5zZXRXaWR0aChMZW5ndGgobWVkaWFTbGlkZXJUaHVtYldpZHRoICogZnVsbFNjcmVlbk11bHRp
cGxpZXIsIEZpeGVkKSk7CiAgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKG1lZGlhU2xp
ZGVyVGh1bWJIZWlnaHQgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpKTsKICAgICB9CkBA
IC03MTcsMTAgKzcyNywzMSBAQCBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRTbGlk
ZXJUcmFjayhSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbgogCiBib29sIFJlbmRl
clRoZW1lQmxhY2tCZXJyeTo6cGFpbnRTbGlkZXJUcmFja1JlY3QoUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBz
dGF0aWMgUmVmUHRyPEltYWdlPiBiYWNrZ3JvdW5kOwotICAgIGlmICghYmFja2dyb3VuZCkKLSAg
ICAgICAgYmFja2dyb3VuZCA9IGxvYWRJbWFnZSgiY29yZV9zbGlkZXJfYmciKTsKLSAgICByZXR1
cm4gcGFpbnRTbGlkZXJUcmFja1JlY3Qob2JqZWN0LCBpbmZvLCByZWN0LCBiYWNrZ3JvdW5kLmdl
dCgpKTsKKyAgICByZXR1cm4gcGFpbnRTbGlkZXJUcmFja1JlY3Qob2JqZWN0LCBpbmZvLCByZWN0
LCByYW5nZVNsaWRlclJlZ3VsYXJUb3BPdXRsaW5lLCByYW5nZVNsaWRlclJlZ3VsYXJCb3R0b21P
dXRsaW5lLCByYW5nZVNsaWRlclJlZ3VsYXJUb3AsIHJhbmdlU2xpZGVyUmVndWxhckJvdHRvbSk7
Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludFNsaWRlclRyYWNrUmVjdChS
ZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0
JiByZWN0LCBSR0JBMzIgc3Ryb2tlQ29sb3JTdGFydCwgUkdCQTMyIHN0cm9rZUNvbG9yRW5kLCBS
R0JBMzIgZmlsbENvbG9yU3RhcnQsIFJHQkEzMiBmaWxsQ29sb3JFbmQpCit7CisgICAgRmxvYXRT
aXplIHNtYWxsQ29ybmVyKG1lZGlhU2xpZGVyVHJhY2tSYWRpdXMsIG1lZGlhU2xpZGVyVHJhY2tS
YWRpdXMpOworCisgICAgaW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgaW5mby5jb250ZXh0LT5z
ZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VU
aGlja25lc3MobGluZVdpZHRoKTsKKworI2lmIFVTRShTS0lBKQorICAgIGluZm8uY29udGV4dC0+
c2V0U3Ryb2tlR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQoc3Ryb2tlQ29sb3JTdGFydCwg
c3Ryb2tlQ29sb3JFbmQsIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5l
cigpKSk7CisgICAgaW5mby5jb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3Jh
ZGllbnQoZmlsbENvbG9yU3RhcnQsIGZpbGxDb2xvckVuZCwgcmVjdC5tYXhYTWluWUNvcm5lcigp
LCByZWN0Lm1heFhNYXhZQ29ybmVyKCkpKTsKKyNlbHNlCisgICAgaW5mby5jb250ZXh0LT5zZXRT
dHJva2VDb2xvcihzdHJva2VDb2xvclN0YXJ0LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBp
bmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihmaWxsQ29sb3JTdGFydCwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisjZW5kaWYKKworICAgIFBhdGggcGF0aDsKKyAgICBwYXRoLmFkZFJvdW5kZWRSZWN0
KHJlY3QsIHNtYWxsQ29ybmVyKTsKKyAgICBpbmZvLmNvbnRleHQtPmZpbGxQYXRoKHBhdGgpOwor
CisgICAgaW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBi
b29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRTbGlkZXJUcmFja1JlY3QoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCwg
SW1hZ2UqIGluYWN0aXZlKQpAQCAtODA0LDI5ICs4MzUsNDcgQEAgdm9pZCBSZW5kZXJUaGVtZUJs
YWNrQmVycnk6OmFkanVzdE1lZGlhQ29udHJvbFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJT
dHlsZSoKICAgICAvLyBXZSB1c2UgbXVsdGlwbGVzIG9mIG1lZGlhQ29udHJvbHNIZWlnaHQgdG8g
bWFrZSBhbGwgb2JqZWN0cyBzY2FsZSBldmVubHkKICAgICBMZW5ndGggemVybygwLCBGaXhlZCk7
CiAgICAgTGVuZ3RoIGNvbnRyb2xzSGVpZ2h0KG1lZGlhQ29udHJvbHNIZWlnaHQgKiBmdWxsU2Ny
ZWVuTXVsdGlwbGllciwgRml4ZWQpOwotICAgIExlbmd0aCB0aW1lV2lkdGgobWVkaWFDb250cm9s
c0hlaWdodCAqIDMgLyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIEZpeGVkKTsKLSAgICBMZW5n
dGggdm9sdW1lSGVpZ2h0KG1lZGlhQ29udHJvbHNIZWlnaHQgKiA0ICogZnVsbFNjcmVlbk11bHRp
cGxpZXIsIEZpeGVkKTsKLSAgICBMZW5ndGggcGFkZGluZyhtZWRpYUNvbnRyb2xzSGVpZ2h0IC8g
OCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCk7Ci0gICAgZmxvYXQgZm9udFNpemUgPSBt
ZWRpYUNvbnRyb2xzSGVpZ2h0IC8gMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyOworICAgIExlbmd0
aCBoYWxmQ29udHJvbHNXaWR0aChtZWRpYUNvbnRyb2xzSGVpZ2h0IC8gMiAqIGZ1bGxTY3JlZW5N
dWx0aXBsaWVyLCBGaXhlZCk7CisgICAgTGVuZ3RoIGRpc3BsYXlIZWlnaHQobWVkaWFDb250cm9s
c0hlaWdodCAvIDMgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpOworICAgIExlbmd0aCBw
YWRkaW5nKG1lZGlhQ29udHJvbHNIZWlnaHQgLyAxMCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBG
aXhlZCk7CisgICAgZmxvYXQgZm9udFNpemUgPSBtZWRpYUNvbnRyb2xzSGVpZ2h0IC8gMyAqIGZ1
bGxTY3JlZW5NdWx0aXBsaWVyOwogCiAgICAgc3dpdGNoIChzdHlsZS0+YXBwZWFyYW5jZSgpKSB7
CiAgICAgY2FzZSBNZWRpYVBsYXlCdXR0b25QYXJ0OgorICAgICAgICBzdHlsZS0+c2V0V2lkdGgo
Y29udHJvbHNIZWlnaHQpOworICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KGNvbnRyb2xzSGVpZ2h0
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNZWRpYU11dGVCdXR0b25QYXJ0OgorICAgICAg
ICBzdHlsZS0+c2V0UGFkZGluZ0xlZnQocGFkZGluZyk7CisgICAgICAgIHN0eWxlLT5zZXRXaWR0
aChjb250cm9sc0hlaWdodCk7CisgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoY29udHJvbHNIZWln
aHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1lZGlhUmV3aW5kQnV0dG9uUGFydDoKKyAg
ICAgICAgLy8gV2UgaGktamFjayB0aGUgUmV3aW5kIEJ1dHRvbiBJRCB0byB1c2UgaXQgZm9yIHRo
ZSBkaXZpZGVyIGltYWdlCisgICAgICAgIHN0eWxlLT5zZXRXaWR0aChoYWxmQ29udHJvbHNXaWR0
aCk7CisgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoY29udHJvbHNIZWlnaHQpOworICAgICAgICBi
cmVhazsKICAgICBjYXNlIE1lZGlhRW50ZXJGdWxsc2NyZWVuQnV0dG9uUGFydDoKKyAgICAgICAg
c3R5bGUtPnNldFBhZGRpbmdSaWdodChwYWRkaW5nKTsKKyAgICAgICAgc3R5bGUtPnNldFdpZHRo
KGNvbnRyb2xzSGVpZ2h0KTsKKyAgICAgICAgc3R5bGUtPnNldEhlaWdodChjb250cm9sc0hlaWdo
dCk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFFeGl0RnVsbHNjcmVlbkJ1dHRvblBh
cnQ6Ci0gICAgY2FzZSBNZWRpYU11dGVCdXR0b25QYXJ0OgorICAgICAgICBzdHlsZS0+c2V0TGVm
dCh6ZXJvKTsKICAgICAgICAgc3R5bGUtPnNldFdpZHRoKGNvbnRyb2xzSGVpZ2h0KTsKICAgICAg
ICAgc3R5bGUtPnNldEhlaWdodChjb250cm9sc0hlaWdodCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTWVkaWFDdXJyZW50VGltZVBhcnQ6CiAgICAgY2FzZSBNZWRpYVRpbWVSZW1haW5pbmdQ
YXJ0OgotICAgICAgICBzdHlsZS0+c2V0V2lkdGgodGltZVdpZHRoKTsKLSAgICAgICAgc3R5bGUt
PnNldEhlaWdodChjb250cm9sc0hlaWdodCk7CisgICAgICAgIHN0eWxlLT5zZXRXaWR0aChjb250
cm9sc0hlaWdodCk7CisgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoZGlzcGxheUhlaWdodCk7CiAg
ICAgICAgIHN0eWxlLT5zZXRQYWRkaW5nUmlnaHQocGFkZGluZyk7CisgICAgICAgIHN0eWxlLT5z
ZXRQYWRkaW5nTGVmdChwYWRkaW5nKTsKKyAgICAgICAgc3R5bGUtPnNldFBhZGRpbmdCb3R0b20o
cGFkZGluZyk7CiAgICAgICAgIHN0eWxlLT5zZXRGb250U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGZv
bnRTaXplKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFWb2x1bWVTbGlkZXJDb250
YWluZXJQYXJ0OgotICAgICAgICBzdHlsZS0+c2V0V2lkdGgoY29udHJvbHNIZWlnaHQpOwotICAg
ICAgICBzdHlsZS0+c2V0SGVpZ2h0KHZvbHVtZUhlaWdodCk7CisgICAgICAgIHN0eWxlLT5zZXRI
ZWlnaHQoY29udHJvbHNIZWlnaHQpOwogICAgICAgICBzdHlsZS0+c2V0Qm90dG9tKGNvbnRyb2xz
SGVpZ2h0KTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTg0MywxMiArODkyLDE0
IEBAIHZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RNZWRpYUNvbnRyb2xTdHlsZShT
dHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqCiAgICAgICAgIGNhc2UgTWVkaWFFeGl0RnVsbHNj
cmVlbkJ1dHRvblBhcnQ6CiAgICAgICAgICAgICBzdHlsZS0+c2V0UG9zaXRpb24oQWJzb2x1dGVQ
b3NpdGlvbik7CiAgICAgICAgICAgICBzdHlsZS0+c2V0Qm90dG9tKHplcm8pOworICAgICAgICAg
ICAgc3R5bGUtPnNldExlZnQoemVybyk7CiAgICAgICAgICAgICBzdHlsZS0+c2V0UmlnaHQoY29u
dHJvbHNIZWlnaHQpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWVkaWFNdXRl
QnV0dG9uUGFydDoKKyAgICAgICAgY2FzZSBNZWRpYVJld2luZEJ1dHRvblBhcnQ6CisgICAgICAg
ICAgICAvLyBXZSBoaS1qYWNrIHRoZSBSZXdpbmQgQnV0dG9uIElEIHRvIHVzZSBpdCBmb3IgdGhl
IGRpdmlkZXIgaW1hZ2UKICAgICAgICAgICAgIHN0eWxlLT5zZXRQb3NpdGlvbihBYnNvbHV0ZVBv
c2l0aW9uKTsKICAgICAgICAgICAgIHN0eWxlLT5zZXRCb3R0b20oemVybyk7Ci0gICAgICAgICAg
ICBzdHlsZS0+c2V0UmlnaHQoemVybyk7CisgICAgICAgICAgICBzdHlsZS0+c2V0TGVmdChjb250
cm9sc0hlaWdodCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtODYxLDE3ICs5MTIsMTIgQEAgdm9pZCBSZW5kZXJUaGVtZUJsYWNr
QmVycnk6OmFkanVzdFNsaWRlclRyYWNrU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxl
KgogICAgIGZsb2F0IGZ1bGxTY3JlZW5NdWx0aXBsaWVyID0gZGV0ZXJtaW5lRnVsbFNjcmVlbk11
bHRpcGxpZXIoZWxlbWVudCk7CiAKICAgICAvLyBXZSB1c2UgbXVsdGlwbGVzIG9mIG1lZGlhQ29u
dHJvbHNIZWlnaHQgdG8gbWFrZSBhbGwgb2JqZWN0cyBzY2FsZSBldmVubHkKLSAgICBMZW5ndGgg
Y29udHJvbHNIZWlnaHQobWVkaWFDb250cm9sc0hlaWdodCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVy
LCBGaXhlZCk7Ci0gICAgTGVuZ3RoIHZvbHVtZUhlaWdodChtZWRpYUNvbnRyb2xzSGVpZ2h0ICog
NCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCk7CisgICAgTGVuZ3RoIGNvbnRyb2xzSGVp
Z2h0KG1lZGlhQ29udHJvbHNIZWlnaHQgLyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIEZpeGVk
KTsKICAgICBzd2l0Y2ggKHN0eWxlLT5hcHBlYXJhbmNlKCkpIHsKICAgICBjYXNlIE1lZGlhU2xp
ZGVyUGFydDoKLSAgICAgICAgc3R5bGUtPnNldEhlaWdodChjb250cm9sc0hlaWdodCk7Ci0gICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFWb2x1bWVTbGlkZXJQYXJ0OgotICAgICAgICBzdHls
ZS0+c2V0V2lkdGgoY29udHJvbHNIZWlnaHQpOwotICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KHZv
bHVtZUhlaWdodCk7CisgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoY29udHJvbHNIZWlnaHQpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhRnVsbFNjcmVlblZvbHVtZVNsaWRlclBhcnQ6
CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtOTAzLDYgKzk0OSwyOSBA
QCBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVBsYXlCdXR0b24oUmVuZGVy
T2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaQogI2VuZGlmCiB9CiAKKy8vIFdlIGhpLWphY2sgdGhl
IFJld2luZCBCdXR0b24gY29kZSB0byB1c2UgaXQgZm9yIHRoZSBkaXZpZGVyIGltYWdlCitib29s
IFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVJld2luZEJ1dHRvbihSZW5kZXJPYmpl
Y3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJl
Y3QpCit7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxl
bWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50KG9iamVjdCk7CisKKyAgICBpZiAoIW1lZGlhRWxl
bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtZWRpYUVsZW1lbnQtPmlz
RnVsbHNjcmVlbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0aWMgSW1hZ2Uq
IGRpdmlkZXIgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImRpdmlkZXIiKS5sZWFrUmVm
KCk7CisKKyAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihwYWludEluZm8uY29udGV4dCwgcmVj
dCwgZGl2aWRlcik7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOworICAgIFVOVVNF
RF9QQVJBTShwYWludEluZm8pOworICAgIFVOVVNFRF9QQVJBTShyZWN0KTsKKyAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKK30KKwogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVk
aWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICNpZiBFTkFCTEUoVklERU8pCkBAIC05MTEs
MTAgKzk4MCw5IEBAIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhTXV0ZUJ1
dHRvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpCiAgICAgaWYgKCFtZWRpYUVsZW1l
bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0YXRpYyBJbWFnZSogbWVkaWFNdXRl
ID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJzcGVha2VyIikubGVha1JlZigpOwotICAg
IHN0YXRpYyBJbWFnZSogbWVkaWFVbm11dGUgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2Uo
InNwZWFrZXJfbXV0ZSIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgSW1hZ2UqIGRpdmlkZXIgPSBJ
bWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInNwZWFrZXIiKS5sZWFrUmVmKCk7CiAKLSAgICBy
ZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihwYWludEluZm8uY29udGV4dCwgcmVjdCwgbWVkaWFFbGVt
ZW50LT5tdXRlZCgpIHx8ICFtZWRpYUVsZW1lbnQtPnZvbHVtZSgpID8gbWVkaWFVbm11dGUgOiBt
ZWRpYU11dGUpOworICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHBhaW50SW5mby5jb250ZXh0
LCByZWN0LCBkaXZpZGVyKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7CiAgICAg
VU5VU0VEX1BBUkFNKHBhaW50SW5mbyk7CkBAIC05MzEsNyArOTk5LDcgQEAgYm9vbCBSZW5kZXJU
aGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKFJlbmRlck9iamVjdCog
b2JqZWN0LCBjb24KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3RhdGljIEltYWdlKiBt
ZWRpYUVudGVyRnVsbHNjcmVlbiA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgiZnVsbHNj
cmVlbiIpLmxlYWtSZWYoKTsKLSAgICBzdGF0aWMgSW1hZ2UqIG1lZGlhRXhpdEZ1bGxzY3JlZW4g
PSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImV4aXRfZnVsbHNjcmVlbiIpLmxlYWtSZWYo
KTsKKyAgICBzdGF0aWMgSW1hZ2UqIG1lZGlhRXhpdEZ1bGxzY3JlZW4gPSBJbWFnZTo6bG9hZFBs
YXRmb3JtUmVzb3VyY2UoImJhY2siKS5sZWFrUmVmKCk7CiAKICAgICBJbWFnZSogYnV0dG9uSW1h
Z2UgPSBtZWRpYUVudGVyRnVsbHNjcmVlbjsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBA
IC05NTgsMzggKzEwMjYsMzAgQEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVk
aWFTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGEKICAgICBmbG9hdCBs
b2FkZWQgPSBtZWRpYUVsZW1lbnQtPnBlcmNlbnRMb2FkZWQoKTsKICAgICBmbG9hdCBwb3NpdGlv
biA9IG1lZGlhRWxlbWVudC0+ZHVyYXRpb24oKSA+IDAgPyAobWVkaWFFbGVtZW50LT5jdXJyZW50
VGltZSgpIC8gbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpKSA6IDA7CiAKLSAgICBpbnQgeCA9IGNl
aWwocmVjdC54KCkgKyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIgLSBmdWxsU2NyZWVuTXVsdGlw
bGllciAvIDIpOwotICAgIGludCB5ID0gY2VpbChyZWN0LnkoKSArIDE0ICogZnVsbFNjcmVlbk11
bHRpcGxpZXIgKyBmdWxsU2NyZWVuTXVsdGlwbGllciAvIDIpOwotICAgIGludCB3ID0gY2VpbChy
ZWN0LndpZHRoKCkgLSA0ICogZnVsbFNjcmVlbk11bHRpcGxpZXIgKyBmdWxsU2NyZWVuTXVsdGlw
bGllciAvIDIpOwotICAgIGludCBoID0gY2VpbCgyICogZnVsbFNjcmVlbk11bHRpcGxpZXIpOwor
ICAgIGludCBpbnRyaW5zaWNIZWlnaHQgPSBjZWlsKG1lZGlhU2xpZGVyVGh1bWJIZWlnaHQgLyA0
KTsKKyAgICBpbnQgeCA9IGNlaWwocmVjdC54KCkgKyAobWVkaWFDb250cm9sc0hlaWdodCAtIGlu
dHJpbnNpY0hlaWdodCkgLyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIgLSBmdWxsU2NyZWVuTXVs
dGlwbGllciAvIDIpOworICAgIGludCB5ID0gY2VpbChyZWN0LnkoKSArIChtZWRpYUNvbnRyb2xz
SGVpZ2h0IC8gMiAtIGludHJpbnNpY0hlaWdodCkgLyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIg
KyBmdWxsU2NyZWVuTXVsdGlwbGllciAvIDIpOworICAgIGludCB3ID0gY2VpbChyZWN0LndpZHRo
KCkgLSAobWVkaWFDb250cm9sc0hlaWdodCAtIGludHJpbnNpY0hlaWdodCkgKiBmdWxsU2NyZWVu
TXVsdGlwbGllciArIGZ1bGxTY3JlZW5NdWx0aXBsaWVyIC8gMik7CisgICAgaW50IGggPSBjZWls
KGludHJpbnNpY0hlaWdodCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyKTsKICAgICBJbnRSZWN0IHJl
Y3QyKHgsIHksIHcsIGgpOwogCiAgICAgaW50IHdQbGF5ZWQgPSBjZWlsKHcgKiBwb3NpdGlvbik7
CiAgICAgaW50IHdMb2FkZWQgPSBjZWlsKCh3IC0gbWVkaWFTbGlkZXJUaHVtYldpZHRoICogZnVs
bFNjcmVlbk11bHRpcGxpZXIpICogbG9hZGVkICsgbWVkaWFTbGlkZXJUaHVtYldpZHRoICogZnVs
bFNjcmVlbk11bHRpcGxpZXIpOwogCiAgICAgSW50UmVjdCBwbGF5ZWQoeCwgeSwgd1BsYXllZCwg
aCk7Ci0gICAgSW50UmVjdCBidWZmZXJlZCh4LCB5LCB3TG9hZGVkLCBoKTsKKyAgICBJbnRSZWN0
IGJ1ZmZlcmVkKHgsIGNlaWwoeSArIG1lZGlhU2xpZGVyT3V0bGluZVdpZHRoKSwgd0xvYWRlZCwg
Y2VpbChoIC0gMiAqIG1lZGlhU2xpZGVyT3V0bGluZVdpZHRoKSk7CiAKICAgICAvLyBUaGlzIGlz
IHRvIHBhaW50IG1haW4gc2xpZGVyIGJhci4KLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlPiB0cmFj
a0ltYWdlOwotICAgIGlmICghdHJhY2tJbWFnZSkKLSAgICAgICAgdHJhY2tJbWFnZSA9IGxvYWRJ
bWFnZSgiY29yZV9zbGlkZXJfbWVkaWFfYmciKTsKLSAgICBib29sIHJlc3VsdCA9IHBhaW50U2xp
ZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJbmZvLCByZWN0MiwgdHJhY2tJbWFnZS5nZXQoKSk7
CisgICAgYm9vbCByZXN1bHQgPSBwYWludFNsaWRlclRyYWNrUmVjdChvYmplY3QsIHBhaW50SW5m
bywgcmVjdDIpOwogCiAgICAgaWYgKGxvYWRlZCA+IDAgfHwgcG9zaXRpb24gPiAwKSB7CiAgICAg
ICAgIC8vIFRoaXMgaXMgdG8gcGFpbnQgYnVmZmVyZWQgYmFyLgotICAgICAgICBzdGF0aWMgUmVm
UHRyPEltYWdlPiBidWZmZXJlZEltYWdlLCBwbGF5ZWRJbWFnZTsKLSAgICAgICAgaWYgKCFidWZm
ZXJlZEltYWdlKSB7Ci0gICAgICAgICAgICBidWZmZXJlZEltYWdlID0gbG9hZEltYWdlKCJjb3Jl
X3NsaWRlcl9idWZmZXJlZF9iZyIpOwotICAgICAgICAgICAgcGxheWVkSW1hZ2UgPSBsb2FkSW1h
Z2UoImNvcmVfc2xpZGVyX3BsYXllZF9iZyIpOwotICAgICAgICB9Ci0gICAgICAgIHBhaW50U2xp
ZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJbmZvLCBidWZmZXJlZCwgYnVmZmVyZWRJbWFnZS5n
ZXQoKSk7CisgICAgICAgIHBhaW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJbmZvLCBi
dWZmZXJlZCwgQ29sb3I6OmRhcmtHcmF5LCBDb2xvcjo6ZGFya0dyYXksIENvbG9yOjpkYXJrR3Jh
eSwgQ29sb3I6OmRhcmtHcmF5KTsKIAogICAgICAgICAvLyBUaGlzIGlzIHRvIHBhaW50IHBsYXll
ZCBwYXJ0IG9mIGJhciAobGVmdCBvZiBzbGlkZXIgdGh1bWIpIHVzaW5nIHNlbGVjdGlvbiBjb2xv
ci4KLSAgICAgICAgcGFpbnRTbGlkZXJUcmFja1JlY3Qob2JqZWN0LCBwYWludEluZm8sIHBsYXll
ZCwgcGxheWVkSW1hZ2UuZ2V0KCkpOworICAgICAgICBwYWludFNsaWRlclRyYWNrUmVjdChvYmpl
Y3QsIHBhaW50SW5mbywgcGxheWVkLCBzZWxlY3Rpb24sIHNlbGVjdGlvbiwgc2VsZWN0aW9uLCBz
ZWxlY3Rpb24pOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwotCiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShvYmplY3QpOwogICAgIFVOVVNFRF9QQVJBTShwYWludEluZm8pOwpAQCAtMTAwMSwx
NSArMTA2MSwzNCBAQCBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNsaWRl
clRyYWNrKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYQogYm9vbCBSZW5kZXJUaGVtZUJs
YWNrQmVycnk6OnBhaW50TWVkaWFTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAjaWYgRU5B
QkxFKFZJREVPKQorI2lmIFVTRShTS0lBKQogICAgIFJlbmRlclNsaWRlciogc2xpZGVyID0gZGV0
ZXJtaW5lUmVuZGVyU2xpZGVyKG9iamVjdCk7CiAgICAgaWYgKCFzbGlkZXIpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHN0YXRpYyBJbWFnZSogbWVkaWFWb2x1bWVUaHVtYiA9IEltYWdl
Ojpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidm9sdW1lX3RodW1iIikubGVha1JlZigpOworICAgIGZs
b2F0IGZ1bGxTY3JlZW5NdWx0aXBsaWVyID0gZGV0ZXJtaW5lRnVsbFNjcmVlbk11bHRpcGxpZXIo
dG9FbGVtZW50KHNsaWRlci0+bm9kZSgpKSk7CisKKyAgICBwYWludEluZm8uY29udGV4dC0+c2F2
ZSgpOworICAgIFBhdGggbWVkaWFUaHVtYlJvdW5kZWRSZWN0YW5nbGU7CisgICAgbWVkaWFUaHVt
YlJvdW5kZWRSZWN0YW5nbGUuYWRkUm91bmRlZFJlY3QocmVjdCwgRmxvYXRTaXplKG1lZGlhU2xp
ZGVyVGh1bWJSYWRpdXMgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgbWVkaWFTbGlkZXJUaHVtYlJh
ZGl1cyAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNl
dFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ry
b2tlVGhpY2tuZXNzKDAuNSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9y
KENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisKKyAgICBpZiAoaXNQcmVzc2Vk
KG9iamVjdCkgfHwgaXNIb3ZlcmVkKG9iamVjdCkgfHwgc2xpZGVyLT5pbkRyYWdNb2RlKCkpCisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3Jh
ZGllbnQoc2VsZWN0aW9uLCBDb2xvcihzZWxlY3Rpb24pLmRhcmsoKS5yZ2IoKSwgcmVjdC5tYXhY
TWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29ybmVyKCkpKTsKKyAgICBlbHNlCisgICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQo
Q29sb3I6OndoaXRlLCBDb2xvcihDb2xvcjo6d2hpdGUpLmRhcmsoKS5yZ2IoKSwgcmVjdC5tYXhY
TWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29ybmVyKCkpKTsKIAotICAgIGRyYXdDb250cm9s
KHBhaW50SW5mby5jb250ZXh0LCByZWN0LCBtZWRpYVZvbHVtZVRodW1iKTsKKyAgICBwYWludElu
Zm8uY29udGV4dC0+ZmlsbFBhdGgobWVkaWFUaHVtYlJvdW5kZWRSZWN0YW5nbGUpOworICAgIHBh
aW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlIC8v
IEdMIHJlbmRlcmVyCisgICAgc3RhdGljIEltYWdlKiBtZWRpYVNsaWRlclRodW1iID0gSW1hZ2U6
OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJjb3JlX3NsaWRlcl9oYW5kbGVfZGlzYWJsZWQiKS5sZWFr
UmVmKCk7CisKKyAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihwYWludEluZm8uY29udGV4dCwg
cmVjdCwgbWVkaWFTbGlkZXJUaHVtYik7CisjZW5kaWYgLy8gVVNFKFNLSUEpCiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShvYmplY3QpOwogICAgIFVOVVNFRF9QQVJBTShwYWludEluZm8pOwpAQCAt
MTAyMSwxOSArMTEwMCwyOSBAQCBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRp
YVNsaWRlclRodW1iKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYQogYm9vbCBSZW5kZXJU
aGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUcmFjayhSZW5kZXJPYmplY3Qq
IG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3Qp
CiB7CiAjaWYgRU5BQkxFKFZJREVPKQotICAgIGZsb2F0IHBhZCA9IHJlY3Qud2lkdGgoKSAqIDAu
NDU7Ci0gICAgZmxvYXQgeCA9IHJlY3QueCgpICsgcGFkOwotICAgIGZsb2F0IHkgPSByZWN0Lnko
KSArIHBhZDsKLSAgICBmbG9hdCB3aWR0aCA9IHJlY3Qud2lkdGgoKSAqIDAuMTsKLSAgICBmbG9h
dCBoZWlnaHQgPSByZWN0LmhlaWdodCgpIC0gKDIuMCAqIHBhZCk7CisgICAgSFRNTE1lZGlhRWxl
bWVudCogbWVkaWFFbGVtZW50ID0gdG9QYXJlbnRNZWRpYUVsZW1lbnQob2JqZWN0KTsKKyAgICBp
ZiAoIW1lZGlhRWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSW50UmVjdCBy
ZWN0Mih4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBmbG9hdCBmdWxsU2NyZWVuTXVsdGlwbGll
ciA9IGRldGVybWluZUZ1bGxTY3JlZW5NdWx0aXBsaWVyKG1lZGlhRWxlbWVudCk7CisgICAgZmxv
YXQgdm9sdW1lID0gbWVkaWFFbGVtZW50LT52b2x1bWUoKSA+IDAgPyBtZWRpYUVsZW1lbnQtPnZv
bHVtZSgpIDogMDsKKworICAgIGludCBpbnRyaW5zaWNIZWlnaHQgPSBjZWlsKG1lZGlhU2xpZGVy
VGh1bWJIZWlnaHQgLyA0KTsKKyAgICBpbnQgeCA9IGNlaWwocmVjdC54KCkgKyAobWVkaWFDb250
cm9sc0hlaWdodCAtIGludHJpbnNpY0hlaWdodCkgLyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIg
LSBmdWxsU2NyZWVuTXVsdGlwbGllciAvIDIpOworICAgIGludCB5ID0gY2VpbChyZWN0LnkoKSAr
IChtZWRpYUNvbnRyb2xzSGVpZ2h0IC8gMiAtIGludHJpbnNpY0hlaWdodCkgLyAyICogZnVsbFNj
cmVlbk11bHRpcGxpZXIgKyBmdWxsU2NyZWVuTXVsdGlwbGllciAvIDIpOworICAgIGludCB3ID0g
Y2VpbChyZWN0LndpZHRoKCkgLSAobWVkaWFDb250cm9sc0hlaWdodCAtIGludHJpbnNpY0hlaWdo
dCkgKiBmdWxsU2NyZWVuTXVsdGlwbGllciArIGZ1bGxTY3JlZW5NdWx0aXBsaWVyIC8gMik7Cisg
ICAgaW50IGggPSBjZWlsKGludHJpbnNpY0hlaWdodCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyKTsK
KyAgICBJbnRSZWN0IHJlY3QyKHgsIHksIHcsIGgpOworICAgIEludFJlY3Qgdm9sdW1lUmVjdCh4
LCB5LCBjZWlsKHcgKiB2b2x1bWUpLCBoKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHRy
YWNrSW1hZ2U7Ci0gICAgaWYgKCF0cmFja0ltYWdlKQotICAgICAgICB0cmFja0ltYWdlID0gbG9h
ZEltYWdlKCJjb3JlX3NsaWRlcl9tZWRpYV9iZyIpOworICAgIC8vIFRoaXMgaXMgdG8gcGFpbnQg
bWFpbiB2b2x1bWUgc2xpZGVyIGJhci4KKyAgICBib29sIHJlc3VsdCA9IHBhaW50U2xpZGVyVHJh
Y2tSZWN0KG9iamVjdCwgcGFpbnRJbmZvLCByZWN0MiwgQ29sb3IobWVkaWFTbGlkZXJUcmFja091
dGxpbmUpLnJnYigpLCBDb2xvcihtZWRpYVNsaWRlclRyYWNrT3V0bGluZSkucmdiKCksIHJhbmdl
U2xpZGVyUmVndWxhclRvcCwgcmFuZ2VTbGlkZXJSZWd1bGFyVG9wKTsKIAotICAgIHJldHVybiBw
YWludFNsaWRlclRyYWNrUmVjdChvYmplY3QsIHBhaW50SW5mbywgcmVjdDIsIHRyYWNrSW1hZ2Uu
Z2V0KCkpOworICAgIGlmICh2b2x1bWUgPiAwKSB7CisgICAgICAgIC8vIFRoaXMgaXMgdG8gcGFp
bnQgdm9sdW1lIGJhciAobGVmdCBvZiB2b2x1bWUgc2xpZGVyIHRodW1iKSB1c2luZyBzZWxlY3Rp
b24gY29sb3IuCisgICAgICAgIHBhaW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJbmZv
LCB2b2x1bWVSZWN0LCBDb2xvcihtZWRpYVNsaWRlclRyYWNrT3V0bGluZSkucmdiKCksIENvbG9y
KG1lZGlhU2xpZGVyVHJhY2tPdXRsaW5lKS5yZ2IoKSwgc2VsZWN0aW9uLCBzZWxlY3Rpb24pOwor
ICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ob2JqZWN0
KTsKICAgICBVTlVTRURfUEFSQU0ocGFpbnRJbmZvKTsKQEAgLTEwNDUsOSArMTEzNCwyOSBAQCBi
b29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKFJl
bmRlck9iamVjdCogb2JqZWN0LCBjbwogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50
TWVkaWFWb2x1bWVTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAjaWYgRU5BQkxFKFZJREVP
KQotICAgIHN0YXRpYyBJbWFnZSogbWVkaWFWb2x1bWVUaHVtYiA9IEltYWdlOjpsb2FkUGxhdGZv
cm1SZXNvdXJjZSgidm9sdW1lX3RodW1iIikubGVha1JlZigpOworI2lmIFVTRShTS0lBKQorICAg
IFJlbmRlclNsaWRlciogc2xpZGVyID0gZGV0ZXJtaW5lUmVuZGVyU2xpZGVyKG9iamVjdCk7Cisg
ICAgaWYgKCFzbGlkZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBwYWlu
dE1lZGlhQnV0dG9uKHBhaW50SW5mby5jb250ZXh0LCByZWN0LCBtZWRpYVZvbHVtZVRodW1iKTsK
KyAgICBmbG9hdCBmdWxsU2NyZWVuTXVsdGlwbGllciA9IGRldGVybWluZUZ1bGxTY3JlZW5NdWx0
aXBsaWVyKHRvRWxlbWVudChzbGlkZXItPm5vZGUoKSkpOworCisgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPnNhdmUoKTsKKyAgICBQYXRoIG1lZGlhVGh1bWJSb3VuZGVkUmVjdGFuZ2xlOworICAgIG1l
ZGlhVGh1bWJSb3VuZGVkUmVjdGFuZ2xlLmFkZFJvdW5kZWRSZWN0KHJlY3QsIEZsb2F0U2l6ZSht
ZWRpYVNsaWRlclRodW1iSGVpZ2h0IC8gMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBtZWRpYVNs
aWRlclRodW1iSGVpZ2h0IC8gMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyKSk7CisKKyAgICBpZiAo
aXNQcmVzc2VkKG9iamVjdCkgfHwgaXNIb3ZlcmVkKG9iamVjdCkgfHwgc2xpZGVyLT5pbkRyYWdN
b2RlKCkpCisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRl
TGluZWFyR3JhZGllbnQoc2VsZWN0aW9uLCBDb2xvcihzZWxlY3Rpb24pLmRhcmsoKS5yZ2IoKSwg
cmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29ybmVyKCkpKTsKKyAgICBlbHNl
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFy
R3JhZGllbnQobWVkaWFTbGlkZXJUcmFja091dGxpbmUsIENvbG9yOjpibGFjaywgcmVjdC5tYXhY
TWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29ybmVyKCkpKTsKKworICAgIHBhaW50SW5mby5j
b250ZXh0LT5maWxsUGF0aChtZWRpYVRodW1iUm91bmRlZFJlY3RhbmdsZSk7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKworICAgIHJldHVybiB0cnVlOworI2Vsc2UgLy8gR0wg
cmVuZGVyZXIKKyAgICByZXR1cm4gcGFpbnRNZWRpYVNsaWRlclRodW1iKG9iamVjdCwgcGFpbnRJ
bmZvLCByZWN0KTsKKyNlbmRpZiAvLyBVU0UoU0tJQSkKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KG9iamVjdCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhaW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnku
aAppbmRleCA1MDdkNDUxMzQ4ZDM1ZmU0NTQ2NTQwMTA5YmEzNzU2ZDYzNjg1ZWU1Li4xZWViNTVi
OTkyMWMwYTgyM2U3YjM3ZTEzZDYwZDNmNzc4Yjc1MWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmgK
QEAgLTMyLDcgKzMyLDEwIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShWSURFTykKICAgICB2aXJ0
dWFsIFN0cmluZyBleHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCk7Ci0gICAgdmlydHVhbCBT
dHJpbmcgZm9ybWF0TWVkaWFDb250cm9sc1JlbWFpbmluZ1RpbWUoZmxvYXQgY3VycmVudFRpbWUs
IGZsb2F0IGR1cmF0aW9uKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgdXNlc1ZlcnRpY2FsVm9s
dW1lU2xpZGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKKyAgICB2aXJ0dWFsIFN0cmluZyBleHRyYUZ1bGxTY3JlZW5TdHlsZVNo
ZWV0KCk7CiAjZW5kaWYKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNIb3Zlcihjb25zdCBSZW5k
ZXJTdHlsZSopIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApAQCAtODIsNiArODUsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFWb2x1bWVTbGlkZXJUaHVtYihSZW5kZXJP
YmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCBi
b29sIHBhaW50TWVkaWFQbGF5QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYU11dGVCdXR0b24o
UmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZp
cnR1YWwgYm9vbCBwYWludE1lZGlhUmV3aW5kQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRQcm9ncmVz
c0JhcihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAg
ICAgdmlydHVhbCBkb3VibGUgYW5pbWF0aW9uUmVwZWF0SW50ZXJ2YWxGb3JQcm9ncmVzc0JhcihS
ZW5kZXJQcm9ncmVzcyopIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIGFuaW1hdGlvbkR1cmF0
aW9uRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MqKSBjb25zdDsKQEAgLTEwNCw5ICsxMDgs
MTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEJ1dHRvblN0eWxlKFJlbmRlclN0eWxlKikgY29u
c3Q7CiAKICAgICBib29sIHBhaW50VGV4dEZpZWxkT3JUZXh0QXJlYU9yU2VhcmNoRmllbGQoUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworCiAgICAgYm9v
bCBwYWludFNsaWRlclRyYWNrUmVjdChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jik7CiAKKyAgICBib29sIHBhaW50U2xpZGVyVHJhY2tSZWN0KFJlbmRlck9i
amVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmLCBSR0JBMzIsIFJHQkEzMiwg
UkdCQTMyLCBSR0JBMzIpOworCiAgICAgYm9vbCBwYWludFNsaWRlclRyYWNrUmVjdChSZW5kZXJP
YmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JiwgSW1hZ2UqKTsKKwogICAg
IEludFJlY3QgY29udmVydFRvUGFpbnRpbmdSZWN0KFJlbmRlck9iamVjdCogaW5wdXRSZW5kZXJl
ciwgY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJ0UmVuZGVyZXIsIExheW91dFJlY3QgcGFydFJlY3Qs
IGNvbnN0IEludFJlY3QmIGxvY2FsT2Zmc2V0KSBjb25zdDsKIAogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179108</attachid>
            <date>2012-12-12 12:58:33 -0800</date>
            <delta_ts>2012-12-12 13:40:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104443-20121212155554.patch</filename>
            <type>text/plain</type>
            <size>99158</size>
            <attacher name="John Griggs">jgriggs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjlkMDUzZTQ2MDQwZmE5
NmZhNzgzOTQ1ZWI1MzcxODc5N2IxNTNlNi4uYjA1MzE5ODgxNmMzZmFlODgwMTFjMDBhMjVkMTg2
ZGIxMDJiMmM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTEyLTEyICBKb2hu
IEdyaWdncyAgPGpncmlnZ3NAcmltLmNvbT4KKworICAgICAgICAyMDEyLTEyLTEyICBKb2huIEdy
aWdncyAgPGpncmlnZ3NAcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gVXBkYXRlIE1l
ZGlhIENvbnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDQ0NDMKKyAgICAgICAgaHR0cHM6Ly9wcnppbGxhLm90dC5xbnguY29tL2J1Z3ppbGxh
L3Nob3dfYnVnLmNnaT9pZD0yMDQ3NDgKKworICAgICAgICBVcGRhdGUgTWVkaWEgQ29udHJvbHMg
Zm9yIEJsYWNrQmVycnkgcGxhdGZvcm0gdG8gYWxsb3cgYXVkaW8sIGVtYmVkZGVkIHZpZGVvIGFu
ZCBmdWxsc2NyZWVuIHZpZGVvIGNvbnRyb2xzIHRvIGJlIHBvc2l0aW9uZWQgYW5kIHN0eWxlZCBk
aWZmZXJlbnRseS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBCbGFja0JlcnJ5LXNwZWNpZmljIHVwZGF0ZSB0byBNZWRpYSBDb250cm9scyAtIE5vIG5l
dyB0ZXN0cyByZXF1aXJlZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZToKKyAgICAgICAgKiBjc3MvbWVkaWFDb250cm9sc0Js
YWNrQmVycnkuY3NzOgorICAgICAgICAoYXVkaW8pOgorICAgICAgICAoYXVkaW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZW1iZWRkZWQtcGFuZWwsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLWVtYmVkZGVkLXBhbmVsKToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXBhbmVsLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCk6CisgICAgICAg
ICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAtY29udGFpbmVyLCBh
dWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAtY29udGFpbmVyKToKKyAg
ICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1kaXNw
bGF5LWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10
aW1lLWRpc3BsYXktY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIpOgorICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbiwgYXVkaW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbik6CisgICAgICAgICh2aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtcGxheS1idXR0b24pOgorICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
ZnVsbHNjcmVlbi10aW1lbGluZS1jb250YWluZXIsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUtY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyKToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10aW1lLWRpc3BsYXksIHZpZGVvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10aW1lLWRpc3BsYXkpOgor
ICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtY3VycmVudC10aW1lLWRpc3Bs
YXksIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWN1cnJlbnQtdGltZS1kaXNwbGF5KToK
KyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1y
ZW1haW5pbmctZGlzcGxheSwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVl
bi10aW1lLXJlbWFpbmluZy1kaXNwbGF5KToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXksIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkpOgorICAgICAgICAoYXVkaW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZSwgdmlkZW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZSk6CisgICAgICAgICh2aWRlbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uLCBhdWRpbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uKToKKyAgICAgICAg
KHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uKToKKyAgICAg
ICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uKToKKyAg
ICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uKToKKyAgICAg
ICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUtYnV0dG9uKToKKyAgICAgICAg
KGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXItY29udGFpbmVyKToK
KyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXItY29u
dGFpbmVyKToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1z
bGlkZXIpOgorICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNs
aWRlcik6CisgICAgICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVu
LWJ1dHRvbi1kaXZpZGVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVu
LWJ1dHRvbi1kaXZpZGVyKToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LWZ1bGxzY3JlZW4tYnV0dG9uLWNvbnRhaW5lciwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtcGxheS1idXR0b24tY29udGFpbmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1m
dWxsc2NyZWVuLWJ1dHRvbi1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXBsYXktYnV0dG9uLWNvbnRhaW5lcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudFR5cGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVs
ZW1lbnQ6OnVwZGF0ZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sQ2xv
c2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpyZWJ1aWxkVHJhY2tMaXN0TWVudSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVh
dGVTdWJ0cmVlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250
YWluZXJFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKToKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmg6CisgICAgICAgIChNZWRpYUNvbnRyb2xzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OnRvZ2dsZVZvbHVtZVNsaWRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6
OmV4dHJhRnVsbFNjcmVlblN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVCbGFja0JlcnJ5OjphZGp1c3RTbGlkZXJUaHVtYlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludFNsaWRlclRyYWNrUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFkanVzdE1lZGlhQ29udHJvbFN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0U2xpZGVyVHJh
Y2tTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50
TWVkaWFSZXdpbmRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0Jl
cnJ5OjpwYWludE1lZGlhTXV0ZUJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUJsYWNrQmVycnk6OnBhaW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNsaWRlclRodW1i
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVZv
bHVtZVNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJy
eTo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRodW1iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFj
a2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVCbGFja0JlcnJ5Ojp1c2VzVmVydGljYWxWb2x1bWVTbGlkZXIpOgorICAgICAgICAoUmVu
ZGVyVGhlbWVCbGFja0JlcnJ5KToKKwogMjAxMi0xMi0xMiAgSWx5YSBUaWtob25vdnNreSAgPGxv
aXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTmF0aXZlIE1lbW9y
eSBJbnN0cnVtZW50YXRpb246IHJlbW92ZSBmYWtlIHJvb3QgTWVtb3J5T2JqZWN0SW5mby4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggODcyYzI1MGI0YjJiNTRiMjQ5ODQwMWE2ZmFjMjE0ZTA4MTMw
NThlMy4uZTNjYTljOWU4YTg3ZDVkZDRmYThiZmRmOWI5MzBjNDNhYTg3YzU1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTE5OTQsNiArMTk5NCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKIAog
ICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcAogICAgIHBsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcAorICAgIHBsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsRGVzY3JpcHRvci5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1CbGFja0JlcnJ5LmNtYWtlCmluZGV4IGNiOWU5YWUzYjIzNWI1MzI2NWE1OWY4MDVhZmRkNDk4
M2QwYzlhOTMuLjgzOGY2ZDc3MmQ0ZTc0ZjA2Mzc5MzQ3ODc0MDgxYjZiYTNiNzM2N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKQEAgLTMsNiArMywxMCBAQCBsaXN0
KElOU0VSVCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMgMAogICAgICIke0JMQUNLQkVSUllf
VEhJUkRfUEFSVFlfRElSfS9pY3UiCiApCiAKK2xpc3QoUkVNT1ZFX0lURU0gV2ViQ29yZV9TT1VS
Q0VTCisgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcAorKQorCiBsaXN0KEFQ
UEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vYmlu
ZGluZ3MvY3BwIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tp
ZURhdGFiYXNlQmFja2luZ1N0b3JlIgpAQCAtMTA1LDYgKzEwOSw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogCiBsaXN0KEFQUEVORCBXZWJDb3JlX1VTRVJfQUdFTlRfU1RZTEVfU0hF
RVRTCiAgICAgJHtXRUJDT1JFX0RJUn0vY3NzL21lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNzcwor
ICAgICR7V0VCQ09SRV9ESVJ9L2Nzcy9tZWRpYUNvbnRyb2xzQmxhY2tCZXJyeUZ1bGxzY3JlZW4u
Y3NzCiAgICAgJHtXRUJDT1JFX0RJUn0vY3NzL3RoZW1lQmxhY2tCZXJyeS5jc3MKICkKIApAQCAt
MTMxLDYgKzEzNiw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwog
bGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgZWRpdGluZy9ibGFja2JlcnJ5L0VkaXRv
ckJsYWNrQmVycnkuY3BwCiAgICAgZWRpdGluZy9ibGFja2JlcnJ5L1NtYXJ0UmVwbGFjZUJsYWNr
QmVycnkuY3BwCisgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3BwCiAg
ICAgbG9hZGVyL2JsYWNrYmVycnkvQ29va2llSmFyQmxhY2tCZXJyeS5jcHAKICAgICBwYWdlL2Js
YWNrYmVycnkvQWNjZXNzaWJpbGl0eU9iamVjdEJsYWNrQmVycnkuY3BwCiAgICAgcGFnZS9ibGFj
a2JlcnJ5L0RyYWdDb250cm9sbGVyQmxhY2tCZXJyeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvbWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3NzCmluZGV4IDRjMDBhNzI1Y2Q1YTAxM2U5OThi
MjNmYjRiNzY0MzlhOGE3ODg0NTEuLjM2NTEwMjEzOTY5Mjk1MjlmYjMzMzY3NzQ4YjM4YTE2MGNh
NzYzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzQmxhY2tC
ZXJyeS5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHNCbGFja0JlcnJ5
LmNzcwpAQCAtMjgsNDMgKzI4LDcxIEBACiAgLyogQmxhY2tCZXJyeSBkZWZhdWx0IG1lZGlhIGNv
bnRyb2xzLiAqLwogCiBhdWRpbyB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDAsIDAp
OwogICAgIHdpZHRoOiAzMDBweDsKICAgICBoZWlnaHQ6IDMycHg7CiB9CiAKLWF1ZGlvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1w
YW5lbCB7CithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1lbWJlZGRlZC1wYW5lbCwgdmlk
ZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZW1iZWRkZWQtcGFuZWwgewogICAgIGRpc3BsYXk6
IC13ZWJraXQtYm94OwogICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAt
d2Via2l0LWJveC1hbGlnbjogY2VudGVyOwotICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7
CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgIGJvdHRvbTogMDsKICAgICB3aWR0aDogMTAw
JTsKLSAgICB6LWluZGV4OiAwOwotICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgIGhlaWdodDog
YXV0bzsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdi
YSgwLCAwLCAwLCAwLjYpOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCAwLCAwKTsKIH0K
IAotdmlkZW86LXdlYmtpdC1mdWxsLXBhZ2UtbWVkaWE6Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
cGFuZWwgewotICAgIGJvdHRvbTogMHB4OworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
cGFuZWwsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIHsKKyAgICBkaXNwbGF5
OiBub25lOwogfQogCi1hdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiwg
dmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24gewotICAgIC13ZWJraXQt
YXBwZWFyYW5jZTogbWVkaWEtcGxheS1idXR0b247Ci0gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7
Cit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAtY29udGFpbmVyLCBh
dWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAtY29udGFpbmVyIHsKKyAg
ICBkaXNwbGF5OiBub25lOwogfQogCi1hdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1l
bGluZS1jb250YWluZXIsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNv
bnRhaW5lciB7Cit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUt
ZGlzcGxheS1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3Jl
ZW4tdGltZS1kaXNwbGF5LWNvbnRhaW5lciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlk
ZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1kaXNwbGF5LWNvbnRhaW5lciwgYXVkaW86
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1kaXNwbGF5LWNvbnRhaW5lciB7CiAgICAgLXdl
YmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1jb250cm9scy1iYWNrZ3JvdW5kOwogICAgIGRpc3BsYXk6
IC13ZWJraXQtYm94OwogICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAt
d2Via2l0LWJveC1hbGlnbjogY2VudGVyOwotICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKKyAg
ICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5OworICAgIC13ZWJraXQtYm94LWZsZXg6IDE7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDAsIDApOworfQorCit2aWRlbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXBsYXktYnV0dG9uLCBhdWRpbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1mdWxsc2NyZWVuLXBsYXktYnV0dG9uIHsKKyAgICBkaXNwbGF5OiBub25lOwor
fQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiwgYXVkaW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24geworICAgIC13ZWJraXQtYXBwZWFyYW5j
ZTogbWVkaWEtcGxheS1idXR0b247CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Cit9CisKK2F1
ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUtY29udGFpbmVy
LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWVsaW5lLWNvbnRh
aW5lciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtdGltZWxpbmUtY29udGFpbmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10
aW1lbGluZS1jb250YWluZXIgeworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtY29udHJv
bHMtYmFja2dyb3VuZDsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0LWJv
eC1vcmllbnQ6IHZlcnRpY2FsOworICAgIC13ZWJraXQtYm94LWFsaWduOiBzdHJldGNoOworICAg
IC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKICAgICAtd2Via2l0LWJveC1mbGV4OiAxOwotICAg
IC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgaGVpZ2h0OiBhdXRvOworICAgIHdpZHRo
OiAxMDAlOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCAwLCAwKTsKK30KKworYXVkaW86
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1jdXJyZW50LXRpbWUtZGlzcGxheSwg
dmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1jdXJyZW50LXRpbWUtZGlz
cGxheSB7CisgICAgZGlzcGxheTogbm9uZTsKIH0KIAogYXVkaW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtY3VycmVudC10aW1lLWRpc3BsYXksIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LWN1cnJlbnQtdGltZS1kaXNwbGF5IHsKQEAgLTc0LDE5ICsxMDIsMjcgQEAgYXVkaW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtY3VycmVudC10aW1lLWRpc3BsYXksIHZpZGVvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2wKICAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAgIC13ZWJraXQt
Ym94LXBhY2s6IGVuZDsKICAgICAtd2Via2l0LWJveC1mbGV4OiAwOwotICAgIC13ZWJraXQtdXNl
ci1zZWxlY3Q6IG5vbmU7Ci0gICAgY29sb3I6IHdoaXRlOworICAgIGJhY2tncm91bmQtY29sb3I6
IHJnYigwLCAwLCAwKTsKKyAgICBjb2xvcjogI2ZhZmFmYTsKK30KKwordmlkZW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lLXJlbWFpbmluZy1kaXNwbGF5LCBhdWRpbzo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkg
eworICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXRpbWUtcmVtYWluaW5nLWRpc3BsYXksIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRp
bWUtcmVtYWluaW5nLWRpc3BsYXkgewordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGlt
ZS1yZW1haW5pbmctZGlzcGxheSwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1y
ZW1haW5pbmctZGlzcGxheSB7CiAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS10aW1lLXJl
bWFpbmluZy1kaXNwbGF5OwogICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgIC13ZWJraXQt
Ym94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwog
ICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgICAtd2Via2l0LWJveC1mbGV4OiAwOwotICAg
IC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ci0gICAgY29sb3I6IHdoaXRlOworICAgIGJhY2tn
cm91bmQtY29sb3I6IHJnYigwLCAwLCAwKTsKKyAgICBjb2xvcjogI2ZhZmFmYTsKK30KKworYXVk
aW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZSwgdmlkZW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZSB7CisgICAgZGlzcGxheTog
bm9uZTsKIH0KIAogYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUsIHZpZGVv
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lIHsKQEAgLTk1LDQxICsxMzEsNjMgQEAg
YXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUsIHZpZGVvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXRpbWVsaW5lIHsKICAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogfQogCi1h
dWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbiwgdmlkZW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24gewotICAgIC13ZWJraXQtYXBw
ZWFyYW5jZTogbWVkaWEtZnVsbHNjcmVlbi1idXR0b247Cit2aWRlbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uLCBhdWRpbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uIHsKKyAgICBkaXNwbGF5OiBu
b25lOworfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRv
biB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1lbnRlci1mdWxsc2NyZWVuLWJ1dHRv
bjsKICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKIH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtbXV0ZS1idXR0b24sIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11dGUt
YnV0dG9uIHsKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9u
IHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1hdWRpby1tdXRlLWJ1dHRvbiB7CiAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1tdXRl
LWJ1dHRvbjsKICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKIH0KIAotYXVkaW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlci1jb250YWluZXIsIHZpZGVvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXItY29udGFpbmVyIHsKK3ZpZGVvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWF1ZGlvLW11dGUtYnV0dG9uIHsKKyAgICBkaXNwbGF5OiBub25lOworfQor
CithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRhaW5lciB7
CiAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS12b2x1bWUtc2xpZGVyLWNvbnRhaW5lcjsK
ICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKLSAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6
b250YWw7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgICAtd2Via2l0LWJv
eC1hbGlnbjogY2VudGVyOwogICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKICAgICAtd2Via2l0
LWJveC1mbGV4OiAxOwogICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgIGxlZnQ6IDBweDsKICAgICByaWdodDogMHB4OwotICAgIGJhY2tn
cm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC42KTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2IoMCwwLDApOwogfQogCi1hdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xp
ZGVyLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyIHsKLSAgICAt
d2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLXZvbHVtZS1zbGlkZXI7Ci0gICAgZGlzcGxheTogLXdl
YmtpdC1ib3g7Ci0gICAgLXdlYmtpdC1ib3gtZmxleDogMTsKK3ZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXZvbHVtZS1zbGlkZXItY29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiBub25lOwor
fQorCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyIHsKKyAgICAg
LXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS12b2x1bWUtc2xpZGVyOworICAgICBkaXNwbGF5OiAt
d2Via2l0LWJveDsKKyAgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKKyAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CisgICAgbGVmdDogMyU7CisgICAgcmlnaHQ6IDMlOworfQorCit2aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyIHsKKyAgICBkaXNwbGF5OiBub25lOwogfQog
Ci1hdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWJhY2stYnV0dG9uLCB2aWRlbzo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWJhY2stYnV0dG9uIHsKLSAgICAtd2Via2l0LWFw
cGVhcmFuY2U6IG1lZGlhLXNlZWstYmFjay1idXR0b247Cit2aWRlbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1kaXZpZGVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1kaXZpZGVyIHsKICAgICBkaXNwbGF5OiBub25lOwog
fQogCi1hdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWZvcndhcmQtYnV0dG9uLCB2
aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWZvcndhcmQtYnV0dG9uIHsKLSAgICAt
d2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLXNlZWstZm9yd2FyZC1idXR0b247Cit2aWRlbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1jb250YWluZXIsIHZpZGVvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lciwgYXVkaW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24tY29udGFpbmVyLCBhdWRpbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbi1jb250YWluZXIgewogICAgIGRpc3BsYXk6
IG5vbmU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9sc0Js
YWNrQmVycnlGdWxsc2NyZWVuLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xz
QmxhY2tCZXJyeUZ1bGxzY3JlZW4uY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxNTRjOTQwZjYzYzU2NGFkMzBh
M2RkZTFjZjE5ZjJiY2FlOWE4OTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvbWVkaWFDb250cm9sc0JsYWNrQmVycnlGdWxsc2NyZWVuLmNzcwpAQCAtMCwwICsxLDE4OCBA
QAorLyoKKyAqIEJsYWNrQmVycnkgc3BlY2lmaWMgb3ZlcnJpZGVzIGZvciBIVE1MNSBtZWRpYSBl
bGVtZW50cy4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworIC8qIEJsYWNrQmVycnkgZnVsbHNjcmVl
biB2aWRlbyBjb250cm9scy4gKi8KKworYm9keTotd2Via2l0LWZ1bGwtcGFnZS1tZWRpYSB7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDAsIDApOworfQorCit2aWRlbzotd2Via2l0LWZ1
bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWVtYmVkZGVkLXBhbmVsIHsKKyAgICBk
aXNwbGF5OiBub25lOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXBhbmVsIHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Vi
a2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOworICAgIC13ZWJraXQtYm94LWFsaWduOiBzdHJldGNo
OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBib3R0b206IDBweDsKKyAgICB3aWR0aDog
MTAwJTsKKyAgICBoZWlnaHQ6IGF1dG87CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzOCwg
MzgsIDM4LCAwLjUpOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWJ1dHRvbi1ncm91cC1jb250YWluZXIgeworICAgIC13ZWJraXQtYXBwZWFy
YW5jZTogbWVkaWEtY29udHJvbHMtYmFja2dyb3VuZDsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJv
eDsKKyAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CisgICAgLXdlYmtpdC1ib3gt
YWxpZ246IGNlbnRlcjsKKyAgICAtd2Via2l0LWJveC1wYWNrOiBqdXN0aWZ5OworICAgIC13ZWJr
aXQtYm94LWZsZXg6IDE7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDAsIDApOworfQor
Cit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxz
Y3JlZW4tdGltZS1kaXNwbGF5LWNvbnRhaW5lciB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBt
ZWRpYS1jb250cm9scy1iYWNrZ3JvdW5kOworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAg
IC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKKyAgICAtd2Via2l0LWJveC1hbGlnbjog
Y2VudGVyOworICAgIC13ZWJraXQtYm94LXBhY2s6IGp1c3RpZnk7CisgICAgLXdlYmtpdC1ib3gt
ZmxleDogMTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM4LCAzOCwgMzgsIDAuNSk7Cit9
CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGlt
ZS1kaXNwbGF5LWNvbnRhaW5lciB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86LXdl
YmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXBsYXkt
YnV0dG9uIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLXBsYXktYnV0dG9uOworICAg
IGRpc3BsYXk6IC13ZWJraXQtYm94OworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uIHsKKyAgICBkaXNwbGF5OiBub25lOwor
fQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1
bGxzY3JlZW4tdGltZWxpbmUtY29udGFpbmVyIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1l
ZGlhLWNvbnRyb2xzLWJhY2tncm91bmQ7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAg
LXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKKyAgICAtd2Via2l0LWJveC1hbGlnbjogc3Ry
ZXRjaDsKKyAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CisgICAgLXdlYmtpdC1ib3gtZmxl
eDogMTsKKyAgICBoZWlnaHQ6IGF1dG87CisgICAgd2lkdGg6IDEwMCU7CisgICAgYmFja2dyb3Vu
ZC1jb2xvcjogcmdiYSgzOCwgMzgsIDM4LCAwLjUpOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwt
c2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNvbnRhaW5lciB7CisgICAg
ZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWN1cnJlbnQtdGltZS1kaXNwbGF5IHsKKyAgICAtd2Vi
a2l0LWFwcGVhcmFuY2U6IG1lZGlhLWN1cnJlbnQtdGltZS1kaXNwbGF5OworICAgIGRpc3BsYXk6
IC13ZWJraXQtYm94OworICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKKyAgICAt
d2Via2l0LWJveC1hbGlnbjogY2VudGVyOworICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKKyAg
ICAtd2Via2l0LWJveC1mbGV4OiAwOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzgsIDM4
LCAzOCwgMC41KTsKKyAgICBjb2xvcjogI2ZhZmFmYTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxs
LXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUtZGlzcGxheSB7Cisg
ICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkgeworICAg
IC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtdGltZS1yZW1haW5pbmctZGlzcGxheTsKKyAgICBk
aXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7
CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKKyAgICAtd2Via2l0LWJveC1wYWNrOiBl
bmQ7CisgICAgLXdlYmtpdC1ib3gtZmxleDogMDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Jh
KDM4LCAzOCwgMzgsIDAuNSk7CisgICAgY29sb3I6ICNmYWZhZmE7Cit9CisKK3ZpZGVvOi13ZWJr
aXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1yZW1haW5pbmctZGlz
cGxheSB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVl
bjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWVsaW5lIHsKKyAgICAtd2Vi
a2l0LWFwcGVhcmFuY2U6IG1lZGlhLXNsaWRlcjsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsK
KyAgICAtd2Via2l0LWJveC1mbGV4OiAxOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVu
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lIHsKKyAgICBkaXNwbGF5OiBub25lOwor
fQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1
bGxzY3JlZW4tZnVsbHNjcmVlbi1idXR0b24geworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVk
aWEtZXhpdC1mdWxsc2NyZWVuLWJ1dHRvbjsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKK30K
KwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxs
c2NyZWVuLWJ1dHRvbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86LXdlYmtpdC1m
dWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1hdWRpby1tdXRlLWJ1dHRvbiB7Cisg
ICAgZGlzcGxheTogbm9uZTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRhaW5lciB7CisgICAgZGlzcGxheTog
bm9uZTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy12b2x1bWUtc2xpZGVyIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCit2aWRlbzotd2Vi
a2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9u
LWRpdmlkZXIgeworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtcmV3aW5kLWJ1dHRvbjsK
KyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVl
bjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1jb250YWluZXIsIHZp
ZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0
b24tY29udGFpbmVyIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLWNvbnRyb2xzLWJh
Y2tncm91bmQ7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtb3Jp
ZW50OiBob3Jpem9udGFsOworICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CisgICAgLXdl
YmtpdC1ib3gtZmxleDogMTsKKyAgICBtaW4td2lkdGg6IDEwMCU7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogcmdiKDAsIDAsIDApOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uLWNvbnRhaW5lciB7CisgICAgLXdl
YmtpdC1ib3gtcGFjazogc3RhcnQ7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24tY29udGFpbmVyIHsKKyAgICAtd2Via2l0
LWJveC1wYWNrOiBjZW50ZXI7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtcGxhY2Vob2xkZXIgeworICAgIC13ZWJraXQtYXBwZWFyYW5jZTog
bWVkaWEtY29udHJvbHMtYmFja2dyb3VuZDsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAg
ICAtd2Via2l0LWJveC1mbGV4OiAxOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLCAwLCAw
KTsKKyAgICBtaW4td2lkdGg6IDEwMCU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggOGI4ZTczZjExZDgxMDgxZjk2
YWVmOWRiZDVjYThiMGU2NmMyNjMwMi4uYTQzN2ZlYjAzYzlhMmYwNjQxNzI4MzU3YTlhZTViN2Vk
ZjIxNmM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcApAQCAtNzIzLDcgKzcyMyw2IEBAIGNvbnN0IEF0b21pY1N0cmluZyYg
TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9J
ZCgpCiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQogTWVkaWFDb250cm9s
Q2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9u
c1RyYWNrTGlzdEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250
cm9scykKICAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhQ2xvc2Vk
Q2FwdGlvbnNUcmFja0xpc3QpCiAgICAgLCBtX2NvbnRyb2xzKGNvbnRyb2xzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oCmluZGV4IGZhNWQwYmQwMGQzNmU4MDli
MDhlNTc3MzUwNDIwZWNhODJkNjIyYzguLmQ0YmEwMWRiODA1NmQyZDBkYTE0MDljNDAyZWEyODVi
YmU2YWViMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgK
QEAgLTgzLDYgKzgzLDkgQEAgY2xhc3MgTWVkaWFDb250cm9scyA6IHB1YmxpYyBIVE1MRGl2RWxl
bWVudCB7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVN0YXR1c0Rpc3BsYXkoKSB7IH07CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpOwogICAgIHZpcnR1YWwgdm9p
ZCBzaG93Vm9sdW1lU2xpZGVyKCk7CisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKKyAgICB2aXJ0
dWFsIHZvaWQgdG9nZ2xlVm9sdW1lU2xpZGVyKCkgeyB9OworI2VuZGlmCiAKICAgICB2aXJ0dWFs
IHZvaWQgY2hhbmdlZE11dGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlZFZvbHVtZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNr
QmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNr
QmVycnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4ZjQ2Y2ZjYjNmYmIwZDg1MzJiMGU1MjU3NWNkN2RmNDU1
MDgxZDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xzQmxhY2tCZXJyeS5jcHAKQEAgLTAsMCArMSwxMTE4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5oIgor
CisjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCisjaW5jbHVk
ZSAiRmxvYXRDb252ZXJzaW9uLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1M
TWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTWVkaWFD
b250cm9sRWxlbWVudHMuaCIKKyNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiUGFn
ZS5oIgorI2luY2x1ZGUgIlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5oIgorI2luY2x1ZGUg
IlJlbmRlclNsaWRlci5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKKyNpbmNsdWRlICJUZXh0LmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisj
aW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCitz
dGF0aWMgY29uc3QgZG91YmxlIHRpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0Nv
bnRyb2xzID0gMzsKKworaW5saW5lIE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxl
bWVudDo6TWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50KERvY3VtZW50KiBk
b2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhQ29u
dHJvbHNQYW5lbCkKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENv
bnRhaW5lckVsZW1lbnQ+IE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudDo6
Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sQnV0
dG9uR3JvdXBDb250YWluZXJFbGVtZW50PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29u
dHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudChkb2N1bWVudCkpOworICAgIHJldHVybiBl
bGVtZW50LnJlbGVhc2UoKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xC
dXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1j
b250cm9scy1idXR0b24tZ3JvdXAtY29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKworaW5saW5lIE1lZGlhQ29udHJvbFRp
bWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWlu
ZXJFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1l
bnQoZG9jdW1lbnQsIE1lZGlhQ29udHJvbHNQYW5lbCkKK3sKK30KKworUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ+IE1lZGlhQ29udHJvbFRpbWVEaXNw
bGF5Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBS
ZWZQdHI8TWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50PiBlbGVtZW50ID0g
YWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudChkb2N1
bWVudCkpOworICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKK30KKworY29uc3QgQXRvbWlj
U3RyaW5nJiBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
aWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLWRpc3BsYXktY29udGFpbmVyIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKwor
TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6Ok1lZGlhQ29udHJvbEVtYmVkZGVkUGFu
ZWxFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1l
bnQoZG9jdW1lbnQsIE1lZGlhQ29udHJvbHNQYW5lbCkKKyAgICAsIG1fY2FuQmVEcmFnZ2VkKGZh
bHNlKQorICAgICwgbV9pc0JlaW5nRHJhZ2dlZChmYWxzZSkKKyAgICAsIG1faXNEaXNwbGF5ZWQo
ZmFsc2UpCisgICAgLCBtX29wYXF1ZSh0cnVlKQorICAgICwgbV90cmFuc2l0aW9uVGltZXIodGhp
cywgJk1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50Ojp0cmFuc2l0aW9uVGltZXJGaXJl
ZCkKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudD4g
TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1l
bnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVs
RWxlbWVudChkb2N1bWVudCkpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJv
bEVtYmVkZGVkUGFuZWxFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJv
bHMtZW1iZWRkZWQtcGFuZWwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgcmV0dXJuIGlkOworfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVt
ZW50OjpzdGFydERyYWcoY29uc3QgTGF5b3V0UG9pbnQmIGV2ZW50TG9jYXRpb24pCit7CisgICAg
aWYgKCFtX2NhbkJlRHJhZ2dlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1faXNCZWlu
Z0RyYWdnZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc0Jv
eCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5m
cmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGFzdERy
YWdFdmVudExvY2F0aW9uID0gZXZlbnRMb2NhdGlvbjsKKworICAgIGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKHRoaXMpOworCisgICAgbV9pc0JlaW5n
RHJhZ2dlZCA9IHRydWU7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1l
bnQ6OmNvbnRpbnVlRHJhZyhjb25zdCBMYXlvdXRQb2ludCYgZXZlbnRMb2NhdGlvbikKK3sKKyAg
ICBpZiAoIW1faXNCZWluZ0RyYWdnZWQpCisgICAgICAgIHJldHVybjsKKworICAgIExheW91dFNp
emUgZGlzdGFuY2VEcmFnZ2VkID0gZXZlbnRMb2NhdGlvbiAtIG1fbGFzdERyYWdFdmVudExvY2F0
aW9uOworICAgIG1fY3VtdWxhdGl2ZURyYWdPZmZzZXQubW92ZShkaXN0YW5jZURyYWdnZWQpOwor
ICAgIG1fbGFzdERyYWdFdmVudExvY2F0aW9uID0gZXZlbnRMb2NhdGlvbjsKKyAgICBzZXRQb3Np
dGlvbihtX2N1bXVsYXRpdmVEcmFnT2Zmc2V0KTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xFbWJl
ZGRlZFBhbmVsRWxlbWVudDo6ZW5kRHJhZygpCit7CisgICAgaWYgKCFtX2lzQmVpbmdEcmFnZ2Vk
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzQmVpbmdEcmFnZ2VkID0gZmFsc2U7CisKKyAg
ICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisg
ICAgICAgIHJldHVybjsKKworICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5n
TW91c2VFdmVudHNOb2RlKDApOworfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxF
bGVtZW50OjpzdGFydFRpbWVyKCkKK3sKKyAgICBzdG9wVGltZXIoKTsKKworICAgIC8vIFRoZSB0
aW1lciBpcyByZXF1aXJlZCB0byBzZXQgdGhlIHByb3BlcnR5IGRpc3BsYXk6J25vbmUnIG9uIHRo
ZSBwYW5lbCwKKyAgICAvLyBzdWNoIHRoYXQgY2FwdGlvbnMgYXJlIGNvcnJlY3RseSBkaXNwbGF5
ZWQgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdmlkZW8KKyAgICAvLyBhdCB0aGUgZW5kIG9mIHRoZSBm
YWRlb3V0IHRyYW5zaXRpb24uCisgICAgZG91YmxlIGR1cmF0aW9uID0gZG9jdW1lbnQoKS0+cGFn
ZSgpID8gZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpLT5tZWRpYUNvbnRyb2xzRmFkZU91dER1
cmF0aW9uKCkgOiAwOworICAgIG1fdHJhbnNpdGlvblRpbWVyLnN0YXJ0T25lU2hvdChkdXJhdGlv
bik7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnN0b3BUaW1l
cigpCit7CisgICAgaWYgKG1fdHJhbnNpdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1f
dHJhbnNpdGlvblRpbWVyLnN0b3AoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBh
bmVsRWxlbWVudDo6dHJhbnNpdGlvblRpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sRW1iZWRk
ZWRQYW5lbEVsZW1lbnQ+KikKK3sKKyAgICBpZiAoIW1fb3BhcXVlKQorICAgICAgICBoaWRlKCk7
CisKKyAgICBzdG9wVGltZXIoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVs
RWxlbWVudDo6c2V0UG9zaXRpb24oY29uc3QgTGF5b3V0UG9pbnQmIHBvc2l0aW9uKQoreworICAg
IGRvdWJsZSBsZWZ0ID0gcG9zaXRpb24ueCgpOworICAgIGRvdWJsZSB0b3AgPSBwb3NpdGlvbi55
KCk7CisKKyAgICAvLyBTZXQgdGhlIGxlZnQgYW5kIHRvcCB0byBjb250cm9sIHRoZSBwYW5lbCdz
IHBvc2l0aW9uOyB0aGlzIGRlcGVuZHMgb24gaXQgYmVpbmcgYWJzb2x1dGUgcG9zaXRpb25lZC4K
KyAgICAvLyBTZXQgdGhlIG1hcmdpbiB0byB6ZXJvIHNpbmNlIHRoZSBwb3NpdGlvbiBwYXNzZWQg
aW4gd2lsbCBhbHJlYWR5IGluY2x1ZGUgdGhlIGVmZmVjdCBvZiB0aGUgbWFyZ2luLgorICAgIHNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBsZWZ0LCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BYKTsKKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9w
LCB0b3AsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgIHNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCAwLjAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpOworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIDAu
MCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisKKyAgICBFeGNlcHRpb25Db2RlIGlnbm9y
ZWQ7CisgICAgY2xhc3NMaXN0KCktPmFkZCgiZHJhZ2dlZCIsIGlnbm9yZWQpOworfQorCit2b2lk
IE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjpyZXNldFBvc2l0aW9uKCkKK3sKKyAg
ICByZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCk7CisgICAgcmVtb3Zl
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCk7CisgICAgcmVtb3ZlSW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpbkxlZnQpOworICAgIHJlbW92ZUlubGluZVN0eWxl
UHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5Ub3ApOworCisgICAgRXhjZXB0aW9uQ29kZSBpZ25v
cmVkOworICAgIGNsYXNzTGlzdCgpLT5yZW1vdmUoImRyYWdnZWQiLCBpZ25vcmVkKTsKKworICAg
IG1fY3VtdWxhdGl2ZURyYWdPZmZzZXQuc2V0WCgwKTsKKyAgICBtX2N1bXVsYXRpdmVEcmFnT2Zm
c2V0LnNldFkoMCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6
Om1ha2VPcGFxdWUoKQoreworICAgIGlmIChtX29wYXF1ZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZG91YmxlIGR1cmF0aW9uID0gZG9jdW1lbnQoKS0+cGFnZSgpID8gZG9jdW1lbnQoKS0+cGFn
ZSgpLT50aGVtZSgpLT5tZWRpYUNvbnRyb2xzRmFkZUluRHVyYXRpb24oKSA6IDA7CisKKyAgICBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5
LCBDU1NQcm9wZXJ0eU9wYWNpdHkpOworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1MpOworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5
LCAxLjAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKworICAgIG1fb3BhcXVlID0g
dHJ1ZTsKKworICAgIGlmIChtX2lzRGlzcGxheWVkKQorICAgICAgICBzaG93KCk7Cit9CisKK3Zv
aWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6Om1ha2VUcmFuc3BhcmVudCgpCit7
CisgICAgaWYgKCFtX29wYXF1ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZG91YmxlIGR1cmF0
aW9uID0gZG9jdW1lbnQoKS0+cGFnZSgpID8gZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpLT5t
ZWRpYUNvbnRyb2xzRmFkZU91dER1cmF0aW9uKCkgOiAwOworCisgICAgc2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwgQ1NTUHJvcGVydHlP
cGFjaXR5KTsKKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJh
bnNpdGlvbkR1cmF0aW9uLCBkdXJhdGlvbiwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKTsKKyAg
ICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5T3BhY2l0eSwgMC4wLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisKKyAgICBtX29wYXF1ZSA9IGZhbHNlOworICAgIHN0
YXJ0VGltZXIoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit7CisgICAgTWVkaWFDb250cm9sRGl2
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CisKKyAgICBpZiAoZXZlbnQtPmlz
TW91c2VFdmVudCgpKSB7CisgICAgICAgIExheW91dFBvaW50IGxvY2F0aW9uID0gc3RhdGljX2Nh
c3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+YWJzb2x1dGVMb2NhdGlvbigpOworICAgICAgICBpZiAo
ZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgJiYgZXZlbnQtPnRh
cmdldCgpID09IHRoaXMpIHsKKyAgICAgICAgICAgIHN0YXJ0RHJhZyhsb2NhdGlvbik7CisgICAg
ICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAgICAgfSBlbHNlIGlmIChl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCAmJiBtX2lzQmVpbmdE
cmFnZ2VkKQorICAgICAgICAgICAgY29udGludWVEcmFnKGxvY2F0aW9uKTsKKyAgICAgICAgZWxz
ZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50ICYmIG1faXNC
ZWluZ0RyYWdnZWQpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlRHJhZyhsb2NhdGlvbik7CisgICAg
ICAgICAgICBlbmREcmFnKCk7CisgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQo
KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVs
RWxlbWVudDo6c2V0Q2FuQmVEcmFnZ2VkKGJvb2wgY2FuQmVEcmFnZ2VkKQoreworICAgIGlmICht
X2NhbkJlRHJhZ2dlZCA9PSBjYW5CZURyYWdnZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
Y2FuQmVEcmFnZ2VkID0gY2FuQmVEcmFnZ2VkOworCisgICAgaWYgKCFjYW5CZURyYWdnZWQpCisg
ICAgICAgIGVuZERyYWcoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxl
bWVudDo6c2V0SXNEaXNwbGF5ZWQoYm9vbCBpc0Rpc3BsYXllZCkKK3sKKyAgICBtX2lzRGlzcGxh
eWVkID0gaXNEaXNwbGF5ZWQ7Cit9CisKK2lubGluZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGlt
ZURpc3BsYXlDb250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZURpc3Bs
YXlDb250YWluZXJFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJv
bERpdkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhQ29udHJvbHNQYW5lbCkKK3sKK30KKworUGFzc1Jl
ZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50PiBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
VGltZURpc3BsYXlDb250YWluZXJFbGVtZW50PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQoZG9jdW1lbnQpKTsK
KyAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYg
TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6c2hhZG93
UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1kaXNwbGF5LWNv
bnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1
cm4gaWQ7Cit9CisKK2lubGluZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVy
RWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwg
TWVkaWFDb250cm9sc1BhbmVsKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9u
Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBSZWZQ
dHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQg
PSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1l
bnQoZG9jdW1lbnQpKTsKKyAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7Cit9CisKK2NvbnN0
IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1l
bnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRv
bi1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
cmV0dXJuIGlkOworfQorCitpbmxpbmUgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlk
ZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwg
TWVkaWFSZXdpbmRCdXR0b24pCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNj
cmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2
aWRlckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVmUHRyPE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudD4gZWxlbWVudCA9IGFkb3B0
UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQoZG9jdW1l
bnQpKTsKKyAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7Cit9CisKK2NvbnN0IEF0b21pY1N0
cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50OjpzaGFkb3dQ
c2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24tZGl2aWRlciIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9
CisKK2lubGluZSBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudDo6TWVkaWFD
b250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAg
IDogTWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFDb250cm9sc1BhbmVsKQor
eworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50
PiBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50
KiBkb2N1bWVudCkKK3sKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5l
ckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sUGxheUJ1dHRvbkNv
bnRhaW5lckVsZW1lbnQoZG9jdW1lbnQpKTsKKyAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7
Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5l
ckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRv
bi1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
cmV0dXJuIGlkOworfQorCitpbmxpbmUgTWVkaWFDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpN
ZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDog
TWVkaWFDb250cm9sRGl2RWxlbWVudChkb2N1bWVudCwgTWVkaWFDb250cm9sc1BhbmVsKQorewor
fQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudD4gTWVkaWFDb250
cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAg
IFJlZlB0cjxNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJl
ZihuZXcgTWVkaWFDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgcmV0
dXJuIGVsZW1lbnQucmVsZWFzZSgpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29u
dHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXBsYWNlaG9sZGVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIHJldHVybiBpZDsKK30KKworaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0
dG9uRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50KERvY3Vt
ZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVudCwg
TWVkaWFQbGF5QnV0dG9uKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5QbGF5QnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsKKyAgICBidXR0
b24tPmNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKKyAgICBidXR0b24tPnNldFR5cGUoImJ1dHRvbiIp
OworICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZl
bnQpCit7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQp
IHsKKyAgICAgICAgaWYgKG1lZGlhQ29udHJvbGxlcigpLT5jYW5QbGF5KCkpCisgICAgICAgICAg
ICBtZWRpYUNvbnRyb2xsZXIoKS0+cGxheSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
ZWRpYUNvbnRyb2xsZXIoKS0+cGF1c2UoKTsKKyAgICAgICAgdXBkYXRlRGlzcGxheVR5cGUoKTsK
KyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgfQorICAgIEhUTUxJbnB1
dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworfQorCit2b2lkIE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudDo6dXBkYXRlRGlzcGxheVR5cGUoKQorewor
ICAgIHNldERpc3BsYXlUeXBlKG1lZGlhQ29udHJvbGxlcigpLT5jYW5QbGF5KCkgPyBNZWRpYVBs
YXlCdXR0b24gOiBNZWRpYVBhdXNlQnV0dG9uKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkg
Y29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdl
YmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXBsYXktYnV0dG9uIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKworaW5saW5lIE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9s
RnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAg
ICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgTWVkaWFFeGl0RnVsbHNjcmVl
bkJ1dHRvbikKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNj
cmVlbkJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9u
RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJl
ZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KGRvY3Vt
ZW50KSk7CisgICAgYnV0dG9uLT5jcmVhdGVTaGFkb3dTdWJ0cmVlKCk7CisgICAgYnV0dG9uLT5z
ZXRUeXBlKCJidXR0b24iKTsKKyAgICBidXR0b24tPmhpZGUoKTsKKyAgICByZXR1cm4gYnV0dG9u
LnJlbGVhc2UoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1
dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQoreworICAgIGlm
IChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CisjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQorICAgICAgICAvLyBPbmx5IHVzZSB0aGUgbmV3IGZ1bGwgc2NyZWVu
IEFQSSBpZiB0aGUgZnVsbFNjcmVlbkVuYWJsZWQgc2V0dGluZyBoYXMgCisgICAgICAgIC8vIGJl
ZW4gZXhwbGljaXRseSBlbmFibGVkLiBPdGhlcndpc2UsIHVzZSB0aGUgb2xkIGZ1bGxzY3JlZW4g
QVBJLiBUaGlzCisgICAgICAgIC8vIGFsbG93cyBhcHBzIHdoaWNoIGVtYmVkIGEgV2ViVmlldyB0
byByZXRhaW4gdGhlIGV4aXN0aW5nIGZ1bGwgc2NyZWVuCisgICAgICAgIC8vIHZpZGVvIGltcGxl
bWVudGF0aW9uIHdpdGhvdXQgcmVxdWlyaW5nIHRoZW0gdG8gaW1wbGVtZW50IHRoZWlyIG93biBm
dWxsIAorICAgICAgICAvLyBzY3JlZW4gYmVoYXZpb3IuCisgICAgICAgIGlmIChkb2N1bWVudCgp
LT5zZXR0aW5ncygpICYmIGRvY3VtZW50KCktPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVk
KCkpIHsKKyAgICAgICAgICAgIGlmIChkb2N1bWVudCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSAm
JiBkb2N1bWVudCgpLT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSA9PSB0b1BhcmVu
dE1lZGlhRWxlbWVudCh0aGlzKSkKKyAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT53ZWJraXRD
YW5jZWxGdWxsU2NyZWVuKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZG9j
dW1lbnQoKS0+cmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KHRvUGFyZW50TWVkaWFFbGVtZW50
KHRoaXMpLCAwLCBEb2N1bWVudDo6RXhlbXB0SUZyYW1lQWxsb3dGdWxsU2NyZWVuUmVxdWlyZW1l
bnQpOworICAgICAgICB9IGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgbWVkaWFDb250cm9sbGVy
KCktPmVudGVyRnVsbHNjcmVlbigpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQo
KTsKKyAgICB9CisgICAgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVu
dCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxz
Y3JlZW5CdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMt
ZnVsbHNjcmVlbi1mdWxsc2NyZWVuLWJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRnVsbHNj
cmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpzZXRJc0Z1bGxzY3JlZW4oYm9vbCBpc0Z1bGxz
Y3JlZW4pCit7CisgICAgc2V0RGlzcGxheVR5cGUoTWVkaWFFeGl0RnVsbHNjcmVlbkJ1dHRvbik7
Cit9CisKK2lubGluZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVt
ZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50KERvY3Vt
ZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1lbnQoZG9jdW1lbnQsIE1l
ZGlhVGltZWxpbmVDb250YWluZXIpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVs
bHNjcmVlblRpbWVsaW5lQ29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlblRp
bWVsaW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAg
ICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyRWxlbWVudD4g
ZWxlbWVudCA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250
YWluZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgZWxlbWVudC0+aGlkZSgpOworICAgIHJldHVy
biBlbGVtZW50LnJlbGVhc2UoKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNv
bnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZS1jb250YWluZXIiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlkOworfQorCitNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
VGltZWxpbmVFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9scyogY29udHJv
bHMpCisgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhU2xpZGVy
KQorICAgICwgbV9jb250cm9scyhjb250cm9scykKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGlt
ZWxpbmVFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzKiBj
b250cm9scykKK3sKKyAgICBBU1NFUlQoY29udHJvbHMpOworCisgICAgUmVmUHRyPE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gYWRvcHRSZWYobmV3IE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQoZG9jdW1lbnQsIGNvbnRyb2xzKSk7
CisgICAgdGltZWxpbmUtPmNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKKyAgICB0aW1lbGluZS0+c2V0
VHlwZSgicmFuZ2UiKTsKKyAgICB0aW1lbGluZS0+c2V0QXR0cmlidXRlKHByZWNpc2lvbkF0dHIs
ICJmbG9hdCIpOworICAgIHJldHVybiB0aW1lbGluZS5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCogZXZlbnQpCit7CisgICAgLy8gTGVmdCBidXR0b24gaXMgMC4gUmVqZWN0cyBtb3VzZSBl
dmVudHMgbm90IGZyb20gbGVmdCBidXR0b24uCisgICAgaWYgKGV2ZW50LT5pc01vdXNlRXZlbnQo
KSAmJiBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5idXR0b24oKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKCFhdHRhY2hlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQpCisgICAgICAg
IG1lZGlhQ29udHJvbGxlcigpLT5iZWdpblNjcnViYmluZygpOworCisgICAgaWYgKGV2ZW50LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCkKKyAgICAgICAgbWVkaWFDb250cm9s
bGVyKCktPmVuZFNjcnViYmluZygpOworCisgICAgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKKworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS5tb3VzZW91dEV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92
ZUV2ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCB0aW1lID0gbmFycm93UHJlY2lz
aW9uVG9GbG9hdCh2YWx1ZSgpLnRvRG91YmxlKCkpOworICAgIGlmIChldmVudC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS5pbnB1dEV2ZW50ICYmIHRpbWUgIT0gbWVkaWFDb250cm9sbGVyKCktPmN1
cnJlbnRUaW1lKCkpIHsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgbWVkaWFD
b250cm9sbGVyKCktPnNldEN1cnJlbnRUaW1lKHRpbWUsIGVjKTsKKyAgICB9CisKKyAgICBSZW5k
ZXJTbGlkZXIqIHNsaWRlciA9IHRvUmVuZGVyU2xpZGVyKHJlbmRlcmVyKCkpOworICAgIGlmIChz
bGlkZXIgJiYgc2xpZGVyLT5pbkRyYWdNb2RlKCkpCisgICAgICAgIG1fY29udHJvbHMtPnVwZGF0
ZUN1cnJlbnRUaW1lRGlzcGxheSgpOworfQorCitib29sIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5U
aW1lbGluZUVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKK3sKKyAgICBp
ZiAoIWF0dGFjaGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVl
OworfQorCit2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OnNldFBv
c2l0aW9uKGZsb2F0IGN1cnJlbnRUaW1lKQoreworICAgIHNldFZhbHVlKFN0cmluZzo6bnVtYmVy
KGN1cnJlbnRUaW1lKSk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5l
RWxlbWVudDo6c2V0RHVyYXRpb24oZmxvYXQgZHVyYXRpb24pCit7CisgICAgc2V0QXR0cmlidXRl
KG1heEF0dHIsIFN0cmluZzo6bnVtYmVyKGlzZmluaXRlKGR1cmF0aW9uKSA/IGR1cmF0aW9uIDog
MCkpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1l
bGluZUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2Ny
ZWVuLXRpbWVsaW5lIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAg
IHJldHVybiBpZDsKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJl
bWFpbmluZ0Rpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmlu
Z0Rpc3BsYXlFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5
RWxlbWVudChkb2N1bWVudCkpOworfQorCitNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFp
bmluZ0Rpc3BsYXlFbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rp
c3BsYXlFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbFRpbWVE
aXNwbGF5RWxlbWVudChkb2N1bWVudCwgTWVkaWFUaW1lUmVtYWluaW5nRGlzcGxheSkKK3sKK30K
KworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmlu
Z0Rpc3BsYXlFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVs
bHNjcmVlbi10aW1lLXJlbWFpbmluZy1kaXNwbGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNj
cmVlbkN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVu
dFRpbWVEaXNwbGF5RWxlbWVudChkb2N1bWVudCkpOworfQorCitNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkN1cnJl
bnRUaW1lRGlzcGxheUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250
cm9sVGltZURpc3BsYXlFbGVtZW50KGRvY3VtZW50LCBNZWRpYUN1cnJlbnRUaW1lRGlzcGxheSkK
K3sKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVu
dFRpbWVEaXNwbGF5RWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xz
LWZ1bGxzY3JlZW4tY3VycmVudC10aW1lLWRpc3BsYXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlkOworfQorCitNZWRpYUNvbnRyb2xBdWRpb011
dGVCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xBdWRpb011dGVCdXR0b25FbGVtZW50KERvY3Vt
ZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCisgICAgOiBNZWRpYUNvbnRy
b2xNdXRlQnV0dG9uRWxlbWVudChkb2N1bWVudCwgTWVkaWFNdXRlQnV0dG9uKQorICAgICwgbV9j
b250cm9scyhjb250cm9scykKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xBdWRpb011
dGVCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xBdWRpb011dGVCdXR0b25FbGVtZW50OjpjcmVh
dGUoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250cm9scykKK3sKKyAgICBB
U1NFUlQoY29udHJvbHMpOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEF1ZGlvTXV0ZUJ1dHRv
bkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xBdWRpb011dGVCdXR0
b25FbGVtZW50KGRvY3VtZW50LCBjb250cm9scykpOworICAgIGJ1dHRvbi0+Y3JlYXRlU2hhZG93
U3VidHJlZSgpOworICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7CisgICAgcmV0dXJuIGJ1
dHRvbi5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sQXVkaW9NdXRlQnV0dG9uRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KSB7CisgICAgICAgIC8vIFdl
IGRvIG5vdCBtdXRlIHdoZW4gdGhlIG1lZGlhIHBsYXllciB2b2x1bWUvbXV0ZSBjb250cm9sIGlz
IHRvdWNoZWQuCisgICAgICAgIC8vIEluc3RlYWQgd2Ugc2hvdy9oaWRlIHRoZSB2b2x1bWUgc2xp
ZGVyLgorICAgICAgICBtX2NvbnRyb2xzLT50b2dnbGVWb2x1bWVTbGlkZXIoKTsKKyAgICAgICAg
ZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50KQorICAgICAg
ICBtX2NvbnRyb2xzLT5zaG93Vm9sdW1lU2xpZGVyKCk7CisKKyAgICBNZWRpYUNvbnRyb2xNdXRl
QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Cit9CisKK2NvbnN0IEF0
b21pY1N0cmluZyYgTWVkaWFDb250cm9sQXVkaW9NdXRlQnV0dG9uRWxlbWVudDo6c2hhZG93UHNl
dWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBp
ZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWF1ZGlvLW11dGUtYnV0dG9uIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKworTWVkaWFD
b250cm9sc0JsYWNrQmVycnk6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5KERvY3VtZW50KiBkb2N1
bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbHMoZG9jdW1lbnQpCisgICAgLCBtX2J1dHRvbkNvbnRh
aW5lcigwKQorICAgICwgbV90aW1lRGlzcGxheUNvbnRhaW5lcigwKQorICAgICwgbV9mdWxsc2Ny
ZWVuVGltZURpc3BsYXlDb250YWluZXIoMCkKKyAgICAsIG1fZnVsbHNjcmVlblBsYXlCdXR0b24o
MCkKKyAgICAsIG1fZnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheSgwKQorICAgICwgbV9mdWxs
c2NyZWVuVGltZWxpbmUoMCkKKyAgICAsIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXkoMCkKKyAgICAs
IG1fZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5KDApCisgICAgLCBtX3RpbWVsaW5lQ29u
dGFpbmVyKDApCisgICAgLCBtX2Z1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lcigwKQorICAgICwg
bV9mdWxsU2NyZWVuRGl2aWRlcigwKQorICAgICwgbV9mdWxsc2NyZWVuRnVsbFNjcmVlbkJ1dHRv
bigwKQorICAgICwgbV9tdXRlQnV0dG9uKDApCisgICAgLCBtX3ZvbHVtZVNsaWRlckNvbnRhaW5l
cigwKQorICAgICwgbV9lbWJlZGRlZFBhbmVsKDApCisgICAgLCBtX2Z1bGxTY3JlZW5CdXR0b25D
b250YWluZXIoMCkKKyAgICAsIG1fcGxheUJ1dHRvbkNvbnRhaW5lcigwKQorICAgICwgbV9wbGFj
ZWhvbGRlcigwKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbHM+IE1lZGlhQ29udHJv
bHM6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIE1lZGlhQ29udHJv
bHNCbGFja0JlcnJ5OjpjcmVhdGVDb250cm9scyhkb2N1bWVudCk7Cit9CisKK1Bhc3NSZWZQdHI8
TWVkaWFDb250cm9sc0JsYWNrQmVycnk+IE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpjcmVhdGVD
b250cm9scyhEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgaWYgKCFkb2N1bWVudC0+cGFnZSgp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eT4gY29udHJvbHMgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sc0JsYWNrQmVycnkoZG9jdW1l
bnQpKTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ+IHBhbmVsID0gTWVk
aWFDb250cm9sUGFuZWxFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIFJlZlB0cjxNZWRp
YUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudD4gZW1iZWRQYW5lbCA9IE1lZGlhQ29udHJvbEVt
YmVkZGVkUGFuZWxFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworCisgICAgRXhjZXB0aW9uQ29k
ZSBlYzsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudD4gcGxheUJ1
dHRvbiA9IE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwor
ICAgIGNvbnRyb2xzLT5tX3BsYXlCdXR0b24gPSBwbGF5QnV0dG9uLmdldCgpOworICAgIGVtYmVk
UGFuZWwtPmFwcGVuZENoaWxkKHBsYXlCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAg
aWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1l
bGluZUNvbnRhaW5lckVsZW1lbnQ+IHRpbWVsaW5lQ29udGFpbmVyID0gTWVkaWFDb250cm9sVGlt
ZWxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworCisgICAgUmVmUHRyPE1l
ZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudD4gdGltZWxpbmUgPSBNZWRpYUNvbnRyb2xUaW1lbGlu
ZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgY29udHJvbHMuZ2V0KCkpOworICAgIGNvbnRyb2xz
LT5tX3RpbWVsaW5lID0gdGltZWxpbmUuZ2V0KCk7CisgICAgdGltZWxpbmVDb250YWluZXItPmFw
cGVuZENoaWxkKHRpbWVsaW5lLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZURpc3BsYXlDb250
YWluZXJFbGVtZW50PiB0aW1lRGlzcGxheUNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFRpbWVEaXNw
bGF5Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIFJlZlB0cjxNZWRp
YUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBjdXJyZW50VGltZURpc3BsYXkgPSBN
ZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwor
ICAgIGNvbnRyb2xzLT5tX2N1cnJlbnRUaW1lRGlzcGxheSA9IGN1cnJlbnRUaW1lRGlzcGxheS5n
ZXQoKTsKKyAgICB0aW1lRGlzcGxheUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoY3VycmVudFRpbWVE
aXNwbGF5LnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50
PiB0aW1lUmVtYWluaW5nRGlzcGxheSA9IE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV90aW1lUmVtYWluaW5n
RGlzcGxheSA9IHRpbWVSZW1haW5pbmdEaXNwbGF5LmdldCgpOworICAgIHRpbWVEaXNwbGF5Q29u
dGFpbmVyLT5hcHBlbmRDaGlsZCh0aW1lUmVtYWluaW5nRGlzcGxheS5yZWxlYXNlKCksIGVjLCB0
cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgY29udHJvbHMtPm1f
dGltZURpc3BsYXlDb250YWluZXIgPSB0aW1lRGlzcGxheUNvbnRhaW5lci5nZXQoKTsKKyAgICB0
aW1lbGluZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodGltZURpc3BsYXlDb250YWluZXIucmVsZWFz
ZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNv
bnRyb2xzLT5tX3RpbWVsaW5lQ29udGFpbmVyID0gdGltZWxpbmVDb250YWluZXIuZ2V0KCk7Cisg
ICAgZW1iZWRQYW5lbC0+YXBwZW5kQ2hpbGQodGltZWxpbmVDb250YWluZXIucmVsZWFzZSgpLCBl
YywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4gZnVsbFNjcmVlbkJ1dHRvbiA9IE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAg
IGNvbnRyb2xzLT5tX2Z1bGxTY3JlZW5CdXR0b24gPSBmdWxsU2NyZWVuQnV0dG9uLmdldCgpOwor
ICAgIGVtYmVkUGFuZWwtPmFwcGVuZENoaWxkKGZ1bGxTY3JlZW5CdXR0b24ucmVsZWFzZSgpLCBl
YywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChkb2N1
bWVudC0+cGFnZSgpLT50aGVtZSgpLT51c2VzTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyKCkpIHsK
KyAgICAgICAgLy8gVGhlIG11dGUgYnV0dG9uIGFuZCB0aGUgc2xpZGVyIGVsZW1lbnQgc2hvdWxk
IGJlIGluIHRoZSBzYW1lIGRpdi4KKyAgICAgICAgUmVmUHRyPEhUTUxEaXZFbGVtZW50PiB2b2x1
bWVDb250cm9sQ29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisK
KyAgICAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ+
IHZvbHVtZVNsaWRlckNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5l
ckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisKKyAgICAgICAgUmVmUHRyPE1lZGlhQ29udHJv
bFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudD4gc2xpZGVyID0gTWVkaWFDb250cm9sUGFuZWxWb2x1
bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgICAgICBjb250cm9scy0+bV92
b2x1bWVTbGlkZXIgPSBzbGlkZXIuZ2V0KCk7CisgICAgICAgIHZvbHVtZVNsaWRlckNvbnRhaW5l
ci0+YXBwZW5kQ2hpbGQoc2xpZGVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgICAgICBpZiAo
ZWMpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjb250cm9scy0+bV92b2x1bWVT
bGlkZXJDb250YWluZXIgPSB2b2x1bWVTbGlkZXJDb250YWluZXIuZ2V0KCk7CisgICAgICAgIHZv
bHVtZUNvbnRyb2xDb250YWluZXItPmFwcGVuZENoaWxkKHZvbHVtZVNsaWRlckNvbnRhaW5lci5y
ZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xBdWRpb011dGVCdXR0b25FbGVtZW50PiBt
dXRlQnV0dG9uID0gTWVkaWFDb250cm9sQXVkaW9NdXRlQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50LCBjb250cm9scy5nZXQoKSk7CisgICAgICAgIGNvbnRyb2xzLT5tX211dGVCdXR0b24g
PSBtdXRlQnV0dG9uLmdldCgpOworICAgICAgICB2b2x1bWVDb250cm9sQ29udGFpbmVyLT5hcHBl
bmRDaGlsZChtdXRlQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgICAgICBpZiAoZWMp
CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBlbWJlZFBhbmVsLT5hcHBlbmRDaGls
ZCh2b2x1bWVDb250cm9sQ29udGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgICAgICBp
ZiAoZWMpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyRWxlbWVudD4gZnVsbHNjcmVlblRpbWVs
aW5lQ29udGFpbmVyID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuVGltZWxpbmVFbGVtZW50PiBmdWxsc2NyZWVuVGltZWxpbmUgPSBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVGltZWxpbmVFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGNvbnRyb2xzLmdldCgpKTsK
KyAgICBjb250cm9scy0+bV9mdWxsc2NyZWVuVGltZWxpbmUgPSBmdWxsc2NyZWVuVGltZWxpbmUu
Z2V0KCk7CisgICAgZnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyLT5hcHBlbmRDaGlsZChmdWxs
c2NyZWVuVGltZWxpbmUucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZURpc3Bs
YXlDb250YWluZXJFbGVtZW50PiBmdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXIgPSBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQpOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURp
c3BsYXlFbGVtZW50PiBmdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5ID0gTWVkaWFDb250cm9s
RnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Cisg
ICAgY29udHJvbHMtPm1fZnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheSA9IGZ1bGxzY3JlZW5D
dXJyZW50VGltZURpc3BsYXkuZ2V0KCk7CisgICAgZnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFp
bmVyLT5hcHBlbmRDaGlsZChmdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5LnJlbGVhc2UoKSwg
ZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8
TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudD4gZnVsbHNj
cmVlblRpbWVSZW1haW5pbmdEaXNwbGF5ID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVSZW1h
aW5pbmdEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9m
dWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXkgPSBmdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rp
c3BsYXkuZ2V0KCk7CisgICAgZnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyLT5hcHBlbmRD
aGlsZChmdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXkucmVsZWFzZSgpLCBlYywgdHJ1ZSk7
CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnRyb2xzLT5tX2Z1bGxz
Y3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lciA9IGZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5l
ci5nZXQoKTsKKyAgICBmdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXItPmFwcGVuZENoaWxkKGZ1
bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBp
ZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgY29udHJvbHMtPm1fZnVsbHNjcmVlblRp
bWVsaW5lQ29udGFpbmVyID0gZnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyLmdldCgpOworICAg
IHBhbmVsLT5hcHBlbmRDaGlsZChmdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXIucmVsZWFzZSgp
LCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQ+IGJ1dHRvbkdyb3VwQ29u
dGFpbmVyID0gTWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQpOworCisgICAgLy8gRklYTUU6IE9ubHkgY3JlYXRlIHdoZW4gbmVlZGVkIDxodHRw
Oi8vd2Via2l0Lm9yZy9iLzU3MTYzPgorICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
QnV0dG9uQ29udGFpbmVyRWxlbWVudD4gZnVsbFNjcmVlbkJ1dHRvbkNvbnRhaW5lciA9IE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OworICAgIGNvbnRyb2xzLT5tX2Z1bGxTY3JlZW5CdXR0b25Db250YWluZXIgPSBmdWxsU2NyZWVu
QnV0dG9uQ29udGFpbmVyLmdldCgpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
RnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGZ1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uID0gTWVk
aWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQpOworICAgIGNvbnRyb2xzLT5tX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uID0gZnVsbHNj
cmVlbkZ1bGxTY3JlZW5CdXR0b24uZ2V0KCk7CisgICAgZnVsbFNjcmVlbkJ1dHRvbkNvbnRhaW5l
ci0+YXBwZW5kQ2hpbGQoZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24ucmVsZWFzZSgpLCBlYywg
dHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50PiBmdWxsU2NyZWVuRGl2aWRlciA9
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KTsKKyAgICBjb250cm9scy0+bV9mdWxsU2NyZWVuRGl2aWRlciA9IGZ1bGxTY3JlZW5EaXZp
ZGVyLmdldCgpOworICAgIGZ1bGxTY3JlZW5CdXR0b25Db250YWluZXItPmFwcGVuZENoaWxkKGZ1
bGxTY3JlZW5EaXZpZGVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgYnV0dG9uR3JvdXBDb250YWluZXItPmFwcGVuZENoaWxkKGZ1bGxT
Y3JlZW5CdXR0b25Db250YWluZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29u
dGFpbmVyRWxlbWVudD4gcGxheUJ1dHRvbkNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFBsYXlCdXR0
b25Db250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIGNvbnRyb2xzLT5tX3Bs
YXlCdXR0b25Db250YWluZXIgPSBwbGF5QnV0dG9uQ29udGFpbmVyLmdldCgpOworICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQ+IGZ1bGxzY3JlZW5QbGF5
QnV0dG9uID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQpOworICAgIGNvbnRyb2xzLT5tX2Z1bGxzY3JlZW5QbGF5QnV0dG9uID0gZnVsbHNj
cmVlblBsYXlCdXR0b24uZ2V0KCk7CisgICAgcGxheUJ1dHRvbkNvbnRhaW5lci0+YXBwZW5kQ2hp
bGQoZnVsbHNjcmVlblBsYXlCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVj
KQorICAgICAgICByZXR1cm4gMDsKKyAgICBidXR0b25Hcm91cENvbnRhaW5lci0+YXBwZW5kQ2hp
bGQocGxheUJ1dHRvbkNvbnRhaW5lci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMp
CisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFBsYWNlaG9sZGVy
RWxlbWVudD4gcGxhY2Vob2xkZXIgPSBNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCk7CisgICAgY29udHJvbHMtPm1fcGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRl
ci5nZXQoKTsKKyAgICBidXR0b25Hcm91cENvbnRhaW5lci0+YXBwZW5kQ2hpbGQocGxhY2Vob2xk
ZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIGNvbnRyb2xzLT5tX2J1dHRvbkNvbnRhaW5lciA9IGJ1dHRvbkdyb3VwQ29udGFpbmVy
LmdldCgpOworICAgIHBhbmVsLT5hcHBlbmRDaGlsZChidXR0b25Hcm91cENvbnRhaW5lci5yZWxl
YXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAg
aWYgKGRvY3VtZW50LT5wYWdlKCktPnRoZW1lKCktPnN1cHBvcnRzQ2xvc2VkQ2FwdGlvbmluZygp
KSB7CisgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRv
bkVsZW1lbnQ+IHRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uID0gTWVkaWFDb250cm9sVG9nZ2xl
Q2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGNvbnRyb2xzLmdl
dCgpKTsKKyAgICAgICAgY29udHJvbHMtPm1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24gPSB0
b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi5nZXQoKTsKKyAgICAgICAgcGFuZWwtPmFwcGVuZENo
aWxkKHRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAg
ICAgICBpZiAoZWMpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBjb250cm9s
cy0+bV9wYW5lbCA9IHBhbmVsLmdldCgpOworICAgIGNvbnRyb2xzLT5hcHBlbmRDaGlsZChwYW5l
bC5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgY29udHJvbHMtPm1fZW1iZWRkZWRQYW5lbCA9IGVtYmVkUGFuZWwuZ2V0KCk7CisgICAg
Y29udHJvbHMtPmFwcGVuZENoaWxkKGVtYmVkUGFuZWwucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Cisg
ICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBjb250cm9scy5yZWxl
YXNlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnNldE1lZGlhQ29udHJv
bGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIGNvbnRyb2xsZXIpCit7CisgICAgaWYgKG1f
bWVkaWFDb250cm9sbGVyID09IGNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKworICAgIE1l
ZGlhQ29udHJvbHM6OnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKworICAgIGlmICht
X2J1dHRvbkNvbnRhaW5lcikKKyAgICAgICAgbV9idXR0b25Db250YWluZXItPnNldE1lZGlhQ29u
dHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV90aW1lRGlzcGxheUNvbnRhaW5lcikKKyAg
ICAgICAgbV90aW1lRGlzcGxheUNvbnRhaW5lci0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xs
ZXIpOworICAgIGlmIChtX2Z1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lcikKKyAgICAgICAg
bV9mdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250
cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuUGxheUJ1dHRvbikKKyAgICAgICAgbV9mdWxs
c2NyZWVuUGxheUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlm
IChtX2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXkpCisgICAgICAgIG1fZnVsbHNjcmVlbkN1
cnJlbnRUaW1lRGlzcGxheS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlm
IChtX2Z1bGxzY3JlZW5UaW1lbGluZSkKKyAgICAgICAgbV9mdWxsc2NyZWVuVGltZWxpbmUtPnNl
dE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV90aW1lUmVtYWluaW5nRGlz
cGxheSkKKyAgICAgICAgbV90aW1lUmVtYWluaW5nRGlzcGxheS0+c2V0TWVkaWFDb250cm9sbGVy
KGNvbnRyb2xsZXIpOworICAgIGlmIChtX2Z1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheSkK
KyAgICAgICAgbV9mdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldE1lZGlhQ29udHJv
bGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV90aW1lbGluZUNvbnRhaW5lcikKKyAgICAgICAg
bV90aW1lbGluZUNvbnRhaW5lci0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAg
IGlmIChtX2Z1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lcikKKyAgICAgICAgbV9mdWxsc2NyZWVu
VGltZWxpbmVDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBp
ZiAobV9mdWxsc2NyZWVuRnVsbFNjcmVlbkJ1dHRvbikKKyAgICAgICAgbV9mdWxsc2NyZWVuRnVs
bFNjcmVlbkJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmICht
X211dGVCdXR0b24pCisgICAgICAgIG1fbXV0ZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNv
bnRyb2xsZXIpOworICAgIGlmIChtX3ZvbHVtZVNsaWRlckNvbnRhaW5lcikKKyAgICAgICAgbV92
b2x1bWVTbGlkZXJDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAg
ICBpZiAobV9lbWJlZGRlZFBhbmVsKQorICAgICAgICBtX2VtYmVkZGVkUGFuZWwtPnNldE1lZGlh
Q29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICByZXNldCgpOworfQorCit2b2lkIE1lZGlhQ29u
dHJvbHNCbGFja0JlcnJ5OjpzaG93KCkKK3sKKyAgICBpZiAobV9pc0Z1bGxzY3JlZW4pIHsKKyAg
ICAgICAgbV9wYW5lbC0+c2V0SXNEaXNwbGF5ZWQodHJ1ZSk7CisgICAgICAgIG1fcGFuZWwtPnNo
b3coKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2VtYmVkZGVkUGFuZWwtPnNldElzRGlzcGxh
eWVkKHRydWUpOworICAgICAgICBtX2VtYmVkZGVkUGFuZWwtPnNob3coKTsKKyAgICB9Cit9CisK
K3ZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OmhpZGUoKQoreworICAgIGlmIChtX2lzRnVs
bHNjcmVlbikgeworICAgICAgICBtX3BhbmVsLT5zZXRJc0Rpc3BsYXllZChmYWxzZSk7CisgICAg
ICAgIG1fcGFuZWwtPmhpZGUoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2VtYmVkZGVkUGFu
ZWwtPnNldElzRGlzcGxheWVkKGZhbHNlKTsKKyAgICAgICAgbV9lbWJlZGRlZFBhbmVsLT5oaWRl
KCk7CisgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5oaWRlKCk7CisgICAgfQorfQor
Cit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjptYWtlT3BhcXVlKCkKK3sKKyAgICBpZiAo
bV9pc0Z1bGxzY3JlZW4pCisgICAgICAgIG1fcGFuZWwtPm1ha2VPcGFxdWUoKTsKKyAgICBlbHNl
CisgICAgICAgIG1fZW1iZWRkZWRQYW5lbC0+bWFrZU9wYXF1ZSgpOworfQorCit2b2lkIE1lZGlh
Q29udHJvbHNCbGFja0JlcnJ5OjptYWtlVHJhbnNwYXJlbnQoKQoreworICAgIGlmIChtX2lzRnVs
bHNjcmVlbikKKyAgICAgICAgbV9wYW5lbC0+bWFrZVRyYW5zcGFyZW50KCk7CisgICAgZWxzZSB7
CisgICAgICAgIG1fZW1iZWRkZWRQYW5lbC0+bWFrZVRyYW5zcGFyZW50KCk7CisgICAgICAgIG1f
dm9sdW1lU2xpZGVyQ29udGFpbmVyLT5oaWRlKCk7CisgICAgfQorfQorCit2b2lkIE1lZGlhQ29u
dHJvbHNCbGFja0JlcnJ5OjpyZXNldCgpCit7CisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCkt
PnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHVwZGF0ZVN0
YXR1c0Rpc3BsYXkoKTsKKworICAgIGlmIChtX2Z1bGxTY3JlZW5CdXR0b24pIHsKKyAgICAgICAg
aWYgKG1fbWVkaWFDb250cm9sbGVyLT5zdXBwb3J0c0Z1bGxzY3JlZW4oKSkKKyAgICAgICAgICAg
IG1fZnVsbFNjcmVlbkJ1dHRvbi0+c2hvdygpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X2Z1bGxTY3JlZW5CdXR0b24tPmhpZGUoKTsKKyAgICB9CisgICAgaWYgKG1fZnVsbHNjcmVlbkZ1
bGxTY3JlZW5CdXR0b24pIHsKKyAgICAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5zdXBwb3J0
c0Z1bGxzY3JlZW4oKSkKKyAgICAgICAgICAgIG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24t
PnNob3coKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9mdWxsc2NyZWVuRnVsbFNjcmVl
bkJ1dHRvbi0+aGlkZSgpOworICAgIH0KKyAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFDb250
cm9sbGVyLT5kdXJhdGlvbigpOworICAgIGlmIChpc2Zpbml0ZShkdXJhdGlvbikgfHwgcGFnZS0+
dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhU2xpZGVyUGFydCkp
IHsKKyAgICAgICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7
CisgICAgICAgIG1fdGltZWxpbmUtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKKyAgICAgICAgbV9m
dWxsc2NyZWVuVGltZWxpbmUtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKKyAgICAgICAgbV90aW1l
bGluZUNvbnRhaW5lci0+c2hvdygpOworICAgICAgICBtX2Z1bGxzY3JlZW5UaW1lbGluZUNvbnRh
aW5lci0+c2hvdygpOworICAgICAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOworICAg
ICAgICBtX2Z1bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKKyAgICAgICAgdXBk
YXRlQ3VycmVudFRpbWVEaXNwbGF5KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV90aW1lbGlu
ZUNvbnRhaW5lci0+aGlkZSgpOworICAgICAgICBtX2Z1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5l
ci0+aGlkZSgpOworICAgIH0KKworICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aGFzQXVkaW8o
KSB8fCBwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFN
dXRlQnV0dG9uUGFydCkpCisgICAgICAgIG1fbXV0ZUJ1dHRvbi0+c2hvdygpOworICAgIGVsc2UK
KyAgICAgICAgbV9tdXRlQnV0dG9uLT5oaWRlKCk7CisKKyAgICBpZiAobV92b2x1bWVTbGlkZXIp
CisgICAgICAgIG1fdm9sdW1lU2xpZGVyLT5zZXRWb2x1bWUobV9tZWRpYUNvbnRyb2xsZXItPnZv
bHVtZSgpKTsKKworICAgIGlmIChtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKSB7CisgICAg
ICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKKyAgICAgICAg
ICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPnNob3coKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOworICAgIH0K
KworICAgIGlmIChtX3BsYXlCdXR0b24pCisgICAgICAgIG1fcGxheUJ1dHRvbi0+dXBkYXRlRGlz
cGxheVR5cGUoKTsKKworICAgIGlmIChtX2Z1bGxzY3JlZW5QbGF5QnV0dG9uKQorICAgICAgICBt
X2Z1bGxzY3JlZW5QbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOworCisgICAgbWFrZU9w
YXF1ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpidWZmZXJpbmdQcm9n
cmVzc2VkKCkKK3sKKyAgICAvLyBXZSBvbmx5IG5lZWQgdG8gdXBkYXRlIGJ1ZmZlcmluZyBwcm9n
cmVzcyB3aGVuIHBhdXNlZCwgZHVyaW5nIG5vcm1hbAorICAgIC8vIHBsYXliYWNrIHBsYXliYWNr
UHJvZ3Jlc3NlZCgpIHdpbGwgdGFrZSBjYXJlIG9mIGl0LgorICAgIGlmIChtX21lZGlhQ29udHJv
bGxlci0+cGF1c2VkKCkpIHsKKyAgICAgICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXIt
PmN1cnJlbnRUaW1lKCk7CisgICAgICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG5vdyk7Cisg
ICAgICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOworICAgIH0KK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cGxheWJhY2tTdGFydGVkKCkKK3sKKyAg
ICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBtX3Bs
YXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CisgICAgbV9mdWxsc2NyZWVuUGxheUJ1dHRv
bi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKKyAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cp
OworICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOworICAgIHVwZGF0
ZUN1cnJlbnRUaW1lRGlzcGxheSgpOworCisgICAgaWYgKG1faXNGdWxsc2NyZWVuKQorICAgICAg
ICBzdGFydEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOworfQorCit2b2lkIE1lZGlhQ29u
dHJvbHNCbGFja0JlcnJ5OjpwbGF5YmFja1Byb2dyZXNzZWQoKQoreworICAgIGZsb2F0IG5vdyA9
IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgIG1fdGltZWxpbmUtPnNldFBv
c2l0aW9uKG5vdyk7CisgICAgbV9mdWxsc2NyZWVuVGltZWxpbmUtPnNldFBvc2l0aW9uKG5vdyk7
CisgICAgdXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCk7CisgICAgCisgICAgaWYgKCFtX2lzTW91
c2VPdmVyQ29udHJvbHMgJiYgbV9tZWRpYUNvbnRyb2xsZXItPmhhc1ZpZGVvKCkpCisgICAgICAg
IG1ha2VUcmFuc3BhcmVudCgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojpw
bGF5YmFja1N0b3BwZWQoKQoreworICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5j
dXJyZW50VGltZSgpOworICAgIG1fcGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKKyAg
ICBtX2Z1bGxzY3JlZW5QbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOworICAgIG1fdGlt
ZWxpbmUtPnNldFBvc2l0aW9uKG5vdyk7CisgICAgbV9mdWxsc2NyZWVuVGltZWxpbmUtPnNldFBv
c2l0aW9uKG5vdyk7CisgICAgdXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCk7CisgICAgbWFrZU9w
YXF1ZSgpOworICAgIAorICAgIHN0b3BIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6dXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5
KCkKK3sKKyAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsK
KyAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOworCisg
ICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIEFsbG93IHRoZSB0aGVtZSB0byBmb3JtYXQgdGhlIHRpbWUu
CisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0SW5u
ZXJUZXh0KHBhZ2UtPnRoZW1lKCktPmZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50VGltZShub3cs
IGR1cmF0aW9uKSwgZWMpOworICAgIG1fY3VycmVudFRpbWVEaXNwbGF5LT5zZXRDdXJyZW50VmFs
dWUobm93KTsKKyAgICBtX2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXktPnNldElubmVyVGV4
dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzQ3VycmVudFRpbWUobm93LCBkdXJh
dGlvbiksIGVjKTsKKyAgICBtX2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXktPnNldEN1cnJl
bnRWYWx1ZShub3cpOworICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldElubmVyVGV4dChw
YWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzUmVtYWluaW5nVGltZShub3csIGR1cmF0
aW9uKSwgZWMpOworICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldEN1cnJlbnRWYWx1ZShu
b3cgLSBkdXJhdGlvbik7CisgICAgbV9mdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXktPnNl
dElubmVyVGV4dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzUmVtYWluaW5nVGlt
ZShub3csIGR1cmF0aW9uKSwgZWMpOworICAgIG1fZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNw
bGF5LT5zZXRDdXJyZW50VmFsdWUobm93IC0gZHVyYXRpb24pOworfQorCit2b2lkIE1lZGlhQ29u
dHJvbHNCbGFja0JlcnJ5OjpyZXBvcnRlZEVycm9yKCkKK3sKKyAgICBQYWdlKiBwYWdlID0gZG9j
dW1lbnQoKS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKCFwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFT
bGlkZXJQYXJ0KSkgeworICAgICAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5oaWRlKCk7CisgICAg
ICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyLT5oaWRlKCk7CisgICAgfQorCisgICAg
aWYgKCFwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFN
dXRlQnV0dG9uUGFydCkpCisgICAgICAgIG1fbXV0ZUJ1dHRvbi0+aGlkZSgpOworCisgICAgaWYg
KG1fZnVsbFNjcmVlbkJ1dHRvbikKKyAgICAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7
CisKKyAgICBpZiAobV9mdWxsU2NyZWVuRGl2aWRlcikKKyAgICAgICAgbV9mdWxsU2NyZWVuRGl2
aWRlci0+aGlkZSgpOworCisgICAgaWYgKG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24pCisg
ICAgICAgIG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24tPmhpZGUoKTsKKworICAgIGlmICht
X3ZvbHVtZVNsaWRlckNvbnRhaW5lcikKKyAgICAgICAgbV92b2x1bWVTbGlkZXJDb250YWluZXIt
PmhpZGUoKTsKKworICAgIGlmIChtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uICYmICFwYWdl
LT50aGVtZSgpLT5oYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFUb2dnbGVDbG9z
ZWRDYXB0aW9uc0J1dHRvblBhcnQpKQorICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0
dG9uLT5oaWRlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OmNoYW5nZWRN
dXRlKCkKK3sKKyAgICBtX211dGVCdXR0b24tPmNoYW5nZWRNdXRlKCk7Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sc0JsYWNrQmVycnk6OmVudGVyZWRGdWxsc2NyZWVuKCkKK3sKKyAgICBNZWRpYUNv
bnRyb2xzOjplbnRlcmVkRnVsbHNjcmVlbigpOworCisgICAgbV9wYW5lbC0+c2V0Q2FuQmVEcmFn
Z2VkKHRydWUpOworICAgIG1fZW1iZWRkZWRQYW5lbC0+c2V0Q2FuQmVEcmFnZ2VkKHRydWUpOwor
CisgICAgaWYgKG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24pCisgICAgICAgIG1fZnVsbHNj
cmVlbkZ1bGxTY3JlZW5CdXR0b24tPnNldElzRnVsbHNjcmVlbih0cnVlKTsKK30KKwordm9pZCBN
ZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6ZXhpdGVkRnVsbHNjcmVlbigpCit7CisgICAgbV9wYW5l
bC0+c2V0Q2FuQmVEcmFnZ2VkKGZhbHNlKTsKKyAgICBtX2VtYmVkZGVkUGFuZWwtPnNldENhbkJl
RHJhZ2dlZChmYWxzZSk7CisKKyAgICBpZiAobV9mdWxsc2NyZWVuRnVsbFNjcmVlbkJ1dHRvbikK
KyAgICAgICAgbV9mdWxsc2NyZWVuRnVsbFNjcmVlbkJ1dHRvbi0+c2V0SXNGdWxsc2NyZWVuKGZh
bHNlKTsKKworICAgIC8vIFdlIHdpbGwga2VlcCB1c2luZyB0aGUgcGFuZWwsIGJ1dCB3ZSB3YW50
IGl0IHRvIGdvIGJhY2sgdG8gdGhlIHN0YW5kYXJkIHBvc2l0aW9uLgorICAgIC8vIFRoaXMgd2ls
bCBtYXR0ZXIgcmlnaHQgYXdheSBiZWNhdXNlIHdlIHVzZSB0aGUgcGFuZWwgZXZlbiB3aGVuIG5v
dCBmdWxsc2NyZWVuLgorICAgIC8vIEFuZCBpZiB3ZSByZWVudGVyIGZ1bGxzY3JlZW4gd2UgYWxz
byB3YW50IHRoZSBwYW5lbCBpbiB0aGUgc3RhbmRhcmQgcG9zaXRpb24uCisgICAgbV9wYW5lbC0+
cmVzZXRQb3NpdGlvbigpOworICAgIG1fZW1iZWRkZWRQYW5lbC0+cmVzZXRQb3NpdGlvbigpOwor
CisgICAgTWVkaWFDb250cm9sczo6ZXhpdGVkRnVsbHNjcmVlbigpOworfQorCit2b2lkIE1lZGlh
Q29udHJvbHNCbGFja0JlcnJ5OjpzaG93Vm9sdW1lU2xpZGVyKCkKK3sKKyAgICBpZiAoIW1fbWVk
aWFDb250cm9sbGVyLT5oYXNBdWRpbygpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV92
b2x1bWVTbGlkZXJDb250YWluZXIpCisgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5z
aG93KCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnRvZ2dsZVZvbHVtZVNs
aWRlcigpCit7CisgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlci0+aGFzQXVkaW8oKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyKSB7CisgICAgICAg
IGlmIChtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+cmVuZGVyZXIoKSAmJiBtX3ZvbHVtZVNsaWRl
ckNvbnRhaW5lci0+cmVuZGVyZXIoKS0+dmlzaWJsZVRvSGl0VGVzdGluZygpKQorICAgICAgICAg
ICAgbV92b2x1bWVTbGlkZXJDb250YWluZXItPmhpZGUoKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbV92b2x1bWVTbGlkZXJDb250YWluZXItPnNob3coKTsKKyAgICB9Cit9CisKK2Jvb2wg
TWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnNob3VsZEhpZGVDb250cm9scygpCit7CisgICAgaWYg
KG1faXNGdWxsc2NyZWVuKQorICAgICAgICByZXR1cm4gIW1fcGFuZWwtPmhvdmVyZWQoKTsKKyAg
ICByZXR1cm4gIW1fZW1iZWRkZWRQYW5lbC0+aG92ZXJlZCgpOworfQorfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0Jl
cnJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNhNjQ2MjI3YzhhOWFmZDRjNjBiMTgzNDFmOWU5ZDUwOWQ3ZTdjOGMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzQmxhY2tCZXJyeS5oCkBAIC0wLDAgKzEsMjk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFDb250cm9sc0JsYWNrQmVycnlf
aAorI2RlZmluZSBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeV9oCisKKyNpZiBFTkFCTEUoVklERU8p
CisKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaCIKKyNpbmNsdWRlICJNZWRp
YUNvbnRyb2xFbGVtZW50cy5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbHMuaCIKKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFRNTElucHV0
RWxlbWVudDsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBFdmVudDsKK2NsYXNzIE1l
ZGlhUGxheWVyOworCitjbGFzcyBSZW5kZXJCb3g7CitjbGFzcyBSZW5kZXJNZWRpYTsKKworI2lm
IEVOQUJMRShWSURFT19UUkFDSykKK2NsYXNzIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5l
ckVsZW1lbnQ7CitjbGFzcyBNZWRpYUNvbnRyb2xUZXh0VHJhY2tEaXNwbGF5RWxlbWVudDsKKyNl
bmRpZgorCitjbGFzcyBNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQgOiBw
dWJsaWMgTWVkaWFDb250cm9sRGl2RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8TWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQqKTsKKworcHJvdGVjdGVkOgorICAgIE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFp
bmVyRWxlbWVudChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9s
VGltZURpc3BsYXlDb250YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVsZW1l
bnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVEaXNw
bGF5Q29udGFpbmVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisKK3Byb3RlY3RlZDoKKyAg
ICBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqKTsKKyAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVS
UklERTsKK307CisKK2NsYXNzIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50IDogcHVi
bGljIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsK
KworICAgIHZvaWQgc2V0Q2FuQmVEcmFnZ2VkKGJvb2wpOworICAgIHZvaWQgc2V0SXNEaXNwbGF5
ZWQoYm9vbCk7CisKKyAgICB2b2lkIHJlc2V0UG9zaXRpb24oKTsKKyAgICB2b2lkIG1ha2VPcGFx
dWUoKTsKKyAgICB2b2lkIG1ha2VUcmFuc3BhcmVudCgpOworCisgICAgdmlydHVhbCBib29sIHdp
bGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9Cisg
ICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUg
eyByZXR1cm4gdHJ1ZTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbEVt
YmVkZGVkUGFuZWxFbGVtZW50KERvY3VtZW50Kik7CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIE9WRVJSSURFOworCisgICAgdm9pZCBzdGFy
dERyYWcoY29uc3QgTGF5b3V0UG9pbnQmIGV2ZW50TG9jYXRpb24pOworICAgIHZvaWQgY29udGlu
dWVEcmFnKGNvbnN0IExheW91dFBvaW50JiBldmVudExvY2F0aW9uKTsKKyAgICB2b2lkIGVuZERy
YWcoKTsKKworICAgIHZvaWQgc3RhcnRUaW1lcigpOworICAgIHZvaWQgc3RvcFRpbWVyKCk7Cisg
ICAgdm9pZCB0cmFuc2l0aW9uVGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xFbWJlZGRlZFBh
bmVsRWxlbWVudD4qKTsKKworICAgIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgTGF5b3V0UG9pbnQm
KTsKKworICAgIGJvb2wgbV9jYW5CZURyYWdnZWQ7CisgICAgYm9vbCBtX2lzQmVpbmdEcmFnZ2Vk
OworICAgIGJvb2wgbV9pc0Rpc3BsYXllZDsKKyAgICBib29sIG1fb3BhcXVlOworICAgIExheW91
dFBvaW50IG1fbGFzdERyYWdFdmVudExvY2F0aW9uOworICAgIExheW91dFBvaW50IG1fY3VtdWxh
dGl2ZURyYWdPZmZzZXQ7CisKKyAgICBUaW1lcjxNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxl
bWVudD4gbV90cmFuc2l0aW9uVGltZXI7Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVs
ZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworCitw
cm90ZWN0ZWQ6CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVy
RWxlbWVudChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFk
b3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sRnVs
bHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRGl2RWxl
bWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNj
cmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworCitwcml2YXRl
OgorICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50KERvY3Vt
ZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkg
Y29uc3QgT1ZFUlJJREU7Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9u
RGl2aWRlckVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRGl2RWxlbWVudCB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlk
ZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKK307
CisKK2NsYXNzIE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50IDogcHVibGlj
IE1lZGlhQ29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQq
KTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVu
dChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1
ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sUGxhY2Vob2xk
ZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudD4gY3JlYXRl
KERvY3VtZW50Kik7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sUGxhY2Vob2xkZXJFbGVt
ZW50KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuUGxheUJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxh
eUJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworCisgICAgdmlydHVhbCBib29sIHdp
bGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5VHlwZSgpIE9WRVJSSURFOworCitwcml2YXRl
OgorICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudChEb2N1bWVudCop
OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikg
T1ZFUlJJREU7Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1
dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1
dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworCisgICAgdmlydHVhbCBib29sIHdpbGxS
ZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IHZvaWQgc2V0SXNGdWxsc2NyZWVuKGJvb2wpOworCitwcml2YXRlOgorICAgIE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudChEb2N1bWVudCopOworICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7Cit9
OworCitjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50
IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+
IGNyZWF0ZShEb2N1bWVudCopOworCitwcml2YXRlOgorICAgIE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKK307CisKK2Ns
YXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFD
b250cm9sSW5wdXRFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqLCBNZWRp
YUNvbnRyb2xzKik7CisKKyAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tF
dmVudHMoKSBPVkVSUklERTsKKyAgICB2b2lkIHNldFBvc2l0aW9uKGZsb2F0KTsKKyAgICB2b2lk
IHNldER1cmF0aW9uKGZsb2F0KTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuVGltZWxpbmVFbGVtZW50KERvY3VtZW50KiwgTWVkaWFDb250cm9scyopOworICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7CisK
KyAgICBNZWRpYUNvbnRyb2xzKiBtX2NvbnRyb2xzOworfTsKKworY2xhc3MgTWVkaWFDb250cm9s
RnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRy
b2xUaW1lRGlzcGxheUVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ+IGNyZWF0ZShE
b2N1bWVudCopOworCitwcml2YXRlOgorICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVt
YWluaW5nRGlzcGxheUVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKK307CisKK2NsYXNzIE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50IDogcHVibGljIE1l
ZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ+IGNy
ZWF0ZShEb2N1bWVudCopOworCitwcml2YXRlOgorICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5D
dXJyZW50VGltZURpc3BsYXlFbGVtZW50KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7Cit9OworCitjbGFz
cyBNZWRpYUNvbnRyb2xBdWRpb011dGVCdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJv
bE11dGVCdXR0b25FbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xBdWRpb011dGVCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqLCBNZWRpYUNv
bnRyb2xzKik7CisKKyAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50
cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBN
ZWRpYUNvbnRyb2xBdWRpb011dGVCdXR0b25FbGVtZW50KERvY3VtZW50KiwgTWVkaWFDb250cm9s
cyopOworCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZl
bnQqKSBPVkVSUklERTsKKworICAgIE1lZGlhQ29udHJvbHMqIG1fY29udHJvbHM7Cit9OworCitj
bGFzcyBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeSA6IHB1YmxpYyBNZWRpYUNvbnRyb2xzIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeT4gY3Jl
YXRlQ29udHJvbHMoRG9jdW1lbnQqKTsKKworICAgIC8vIE1lZGlhQ29udHJvbHMgaW1wbGVtZW50
YXRpb24uCisgICAgdm9pZCBzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJm
YWNlKikgT1ZFUlJJREU7CisKKyAgICB2b2lkIHNob3coKSBPVkVSUklERTsKKyAgICB2b2lkIGhp
ZGUoKSBPVkVSUklERTsKKyAgICB2b2lkIG1ha2VPcGFxdWUoKSBPVkVSUklERTsKKyAgICB2b2lk
IG1ha2VUcmFuc3BhcmVudCgpIE9WRVJSSURFOworCisgICAgdm9pZCByZXNldCgpIE9WRVJSSURF
OworCisgICAgdm9pZCBidWZmZXJpbmdQcm9ncmVzc2VkKCkgT1ZFUlJJREU7CisgICAgdm9pZCBw
bGF5YmFja1Byb2dyZXNzZWQoKSBPVkVSUklERTsKKyAgICB2b2lkIHBsYXliYWNrU3RhcnRlZCgp
IE9WRVJSSURFOworICAgIHZvaWQgcGxheWJhY2tTdG9wcGVkKCkgT1ZFUlJJREU7CisKKyAgICB2
b2lkIGNoYW5nZWRNdXRlKCkgT1ZFUlJJREU7CisKKyAgICB2b2lkIGVudGVyZWRGdWxsc2NyZWVu
KCkgT1ZFUlJJREU7CisgICAgdm9pZCBleGl0ZWRGdWxsc2NyZWVuKCkgT1ZFUlJJREU7CisKKyAg
ICB2b2lkIHJlcG9ydGVkRXJyb3IoKSBPVkVSUklERTsKKworICAgIHZvaWQgc2hvd1ZvbHVtZVNs
aWRlcigpIE9WRVJSSURFOworICAgIHZvaWQgdG9nZ2xlVm9sdW1lU2xpZGVyKCkgT1ZFUlJJREU7
CisgICAgdm9pZCB1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKSBPVkVSUklERTsKKworICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRIaWRlQ29udHJvbHMoKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAg
ICBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeShEb2N1bWVudCopOworCisgICAgTWVkaWFDb250cm9s
QnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50KiBtX2J1dHRvbkNvbnRhaW5lcjsKKyAgICBNZWRp
YUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQqIG1fdGltZURpc3BsYXlDb250YWlu
ZXI7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVu
dCogbV9mdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXI7CisgICAgTWVkaWFDb250cm9sRnVs
bHNjcmVlblBsYXlCdXR0b25FbGVtZW50KiBtX2Z1bGxzY3JlZW5QbGF5QnV0dG9uOworICAgIE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50KiBtX2Z1bGxzY3Jl
ZW5DdXJyZW50VGltZURpc3BsYXk7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5l
RWxlbWVudCogbV9mdWxsc2NyZWVuVGltZWxpbmU7CisgICAgTWVkaWFDb250cm9sVGltZVJlbWFp
bmluZ0Rpc3BsYXlFbGVtZW50KiBtX3RpbWVSZW1haW5pbmdEaXNwbGF5OworICAgIE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQqIG1fZnVsbHNjcmVlblRp
bWVSZW1haW5pbmdEaXNwbGF5OworICAgIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxl
bWVudCogbV90aW1lbGluZUNvbnRhaW5lcjsKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGlt
ZWxpbmVDb250YWluZXJFbGVtZW50KiBtX2Z1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lcjsKKyAg
ICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQqIG1fZnVsbFNjcmVl
bkRpdmlkZXI7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVt
ZW50KiBtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uOworICAgIE1lZGlhQ29udHJvbEF1ZGlv
TXV0ZUJ1dHRvbkVsZW1lbnQqIG1fbXV0ZUJ1dHRvbjsKKyAgICBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJDb250YWluZXJFbGVtZW50KiBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lcjsKKyAgICBNZWRp
YUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudCogbV9lbWJlZGRlZFBhbmVsOworICAgIE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50KiBtX2Z1bGxTY3JlZW5CdXR0
b25Db250YWluZXI7CisgICAgTWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQq
IG1fcGxheUJ1dHRvbkNvbnRhaW5lcjsKKyAgICBNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1l
bnQqIG1fcGxhY2Vob2xkZXI7Cit9OworCit9CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJy
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxh
Y2tCZXJyeS5jcHAKaW5kZXggMWRkZjFhODY3NGRjODBlOWM1YzYxMjc3NTIxZGVkNTZkNTAwMjI1
NC4uYTQ1M2Q0MDc0OTBhMGIyNGM3MWFjMDk3M2VjMmRiNGVhMjc0NTkyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVC
bGFja0JlcnJ5LmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKKyNpbmNs
dWRlICJJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuaCIKICNpbmNsdWRlICJQYWdlLmgi
CkBAIC00NCwxMCArNDUsMTMgQEAgY29uc3QgdW5zaWduZWQgc21hbGxSYWRpdXMgPSAxOwogY29u
c3QgdW5zaWduZWQgbGFyZ2VSYWRpdXMgPSAzOwogY29uc3QgdW5zaWduZWQgbGluZVdpZHRoID0g
MTsKIGNvbnN0IGZsb2F0IG1hcmdpblNpemUgPSA0OwotY29uc3QgZmxvYXQgbWVkaWFDb250cm9s
c0hlaWdodCA9IDMyOwotY29uc3QgZmxvYXQgbWVkaWFTbGlkZXJUaHVtYldpZHRoID0gNDA7Ci1j
b25zdCBmbG9hdCBtZWRpYVNsaWRlclRodW1iSGVpZ2h0ID0gMTM7Ci1jb25zdCBmbG9hdCBtZWRp
YVNsaWRlclRodW1iUmFkaXVzID0gNTsKK2NvbnN0IGZsb2F0IG1lZGlhQ29udHJvbHNIZWlnaHQg
PSA0NDsKK2NvbnN0IGZsb2F0IG1lZGlhQmFja0J1dHRvbkhlaWdodCA9IDMzOworY29uc3QgZmxv
YXQgbWVkaWFTbGlkZXJPdXRsaW5lV2lkdGggPSAyOworY29uc3QgZmxvYXQgbWVkaWFTbGlkZXJU
cmFja1JhZGl1cyA9IDM7Citjb25zdCBmbG9hdCBtZWRpYVNsaWRlclRodW1iV2lkdGggPSAyNTsK
K2NvbnN0IGZsb2F0IG1lZGlhU2xpZGVyVGh1bWJIZWlnaHQgPSAyNTsKK2NvbnN0IGZsb2F0IG1l
ZGlhU2xpZGVyVGh1bWJSYWRpdXMgPSAzOwogY29uc3QgZmxvYXQgc2xpZGVyVGh1bWJXaWR0aCA9
IDE1OwogY29uc3QgZmxvYXQgc2xpZGVyVGh1bWJIZWlnaHQgPSAyNTsKIApAQCAtMTI0LDYgKzEy
OCwxMiBAQCBjb25zdCBSR0JBMzIgZHJhZ1JvbGxEYXJrID0gMHhmZjY5YThmZjsKIGNvbnN0IFJH
QkEzMiBibGFja1BlbiA9IENvbG9yOjpibGFjazsKIGNvbnN0IFJHQkEzMiBmb2N1c1JpbmdQZW4g
PSAweGZmYTNjOGZlOwogCitjb25zdCBSR0JBMzIgbWVkaWFTbGlkZXJUcmFja091dGxpbmUgPSAw
eGZmODQ4NTg3OworY29uc3QgUkdCQTMyIG1lZGlhU2xpZGVyVHJhY2tQbGF5ZWQgPSAweGZmMmI4
ZmZmOworY29uc3QgUkdCQTMyIG1lZGlhU2xpZGVyVHJhY2tCdWZmZXJlZCA9IDB4ZmZiYmJkYmY7
CisKK2NvbnN0IFJHQkEzMiBzZWxlY3Rpb24gPSAweGZmMmI4ZmZmOworCiBmbG9hdCBSZW5kZXJU
aGVtZUJsYWNrQmVycnk6OmRlZmF1bHRGb250U2l6ZSA9IDE2OwogCiBjb25zdCBTdHJpbmcmIFJl
bmRlclRoZW1lQmxhY2tCZXJyeTo6ZGVmYXVsdEdVSUZvbnQoKQpAQCAtMjk1LDEyICszMDUsMTIg
QEAgU3RyaW5nIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6ZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVT
aGVldCgpCiB7CiAgICAgcmV0dXJuIFN0cmluZyhtZWRpYUNvbnRyb2xzQmxhY2tCZXJyeVVzZXJB
Z2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRpYUNvbnRyb2xzQmxhY2tCZXJyeVVzZXJBZ2VudFN0
eWxlU2hlZXQpKTsKIH0KKyNlbmRpZgogCi1TdHJpbmcgUmVuZGVyVGhlbWVCbGFja0JlcnJ5Ojpm
b3JtYXRNZWRpYUNvbnRyb2xzUmVtYWluaW5nVGltZShmbG9hdCwgZmxvYXQgZHVyYXRpb24pIGNv
bnN0CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorU3RyaW5nIFJlbmRlclRoZW1lQmxhY2tC
ZXJyeTo6ZXh0cmFGdWxsU2NyZWVuU3R5bGVTaGVldCgpCiB7Ci0gICAgLy8gVGhpcyBpcyBhIHdv
cmthcm91bmQgdG8gbWFrZSB0aGUgYXBwZWFyYW5jZSBvZiBtZWRpYSB0aW1lIGNvbnRyb2xsZXIg
aW4KLSAgICAvLyBpbi1wYWdlIG1vZGUgdGhlIHNhbWUgYXMgaW4gZnVsbHNjcmVlbiBtb2RlLgot
ICAgIHJldHVybiBmb3JtYXRNZWRpYUNvbnRyb2xzVGltZShkdXJhdGlvbik7CisgICAgcmV0dXJu
IFN0cmluZyhtZWRpYUNvbnRyb2xzQmxhY2tCZXJyeUZ1bGxzY3JlZW5Vc2VyQWdlbnRTdHlsZVNo
ZWV0LCBzaXplb2YobWVkaWFDb250cm9sc0JsYWNrQmVycnlGdWxsc2NyZWVuVXNlckFnZW50U3R5
bGVTaGVldCkpOwogfQogI2VuZGlmCiAKQEAgLTY4OCwxMCArNjk4LDEwIEBAIHZvaWQgUmVuZGVy
VGhlbWVCbGFja0JlcnJ5OjphZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KiBlCiAgICAgICAgICAgICBmdWxsU2NyZWVuTXVsdGlwbGllciA9IGRldGVybWlu
ZUZ1bGxTY3JlZW5NdWx0aXBsaWVyKHRvRWxlbWVudChzbGlkZXItPm5vZGUoKSkpOwogICAgIH0K
IAotICAgIGlmIChwYXJ0ID09IE1lZGlhVm9sdW1lU2xpZGVyVGh1bWJQYXJ0IHx8IHBhcnQgPT0g
U2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCB8fCBwYXJ0ID09IFNsaWRlclRodW1iVmVydGljYWxQ
YXJ0KSB7CisgICAgaWYgKHBhcnQgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCB8fCBwYXJ0
ID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0KSB7CiAgICAgICAgIHN0eWxlLT5zZXRXaWR0aChM
ZW5ndGgoKHBhcnQgPT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQgPyBzbGlkZXJUaHVtYkhlaWdo
dCA6IHNsaWRlclRodW1iV2lkdGgpICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIEZpeGVkKSk7CiAg
ICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKChwYXJ0ID09IFNsaWRlclRodW1iVmVydGlj
YWxQYXJ0ID8gc2xpZGVyVGh1bWJXaWR0aCA6IHNsaWRlclRodW1iSGVpZ2h0KSAqIGZ1bGxTY3Jl
ZW5NdWx0aXBsaWVyLCBGaXhlZCkpOwotICAgIH0gZWxzZSBpZiAocGFydCA9PSBNZWRpYVNsaWRl
clRodW1iUGFydCkgeworICAgIH0gZWxzZSBpZiAocGFydCA9PSBNZWRpYVZvbHVtZVNsaWRlclRo
dW1iUGFydCB8fCBwYXJ0ID09IE1lZGlhU2xpZGVyVGh1bWJQYXJ0KSB7CiAgICAgICAgIHN0eWxl
LT5zZXRXaWR0aChMZW5ndGgobWVkaWFTbGlkZXJUaHVtYldpZHRoICogZnVsbFNjcmVlbk11bHRp
cGxpZXIsIEZpeGVkKSk7CiAgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKG1lZGlhU2xp
ZGVyVGh1bWJIZWlnaHQgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpKTsKICAgICB9CkBA
IC03MTcsMTAgKzcyNywzMSBAQCBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRTbGlk
ZXJUcmFjayhSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbgogCiBib29sIFJlbmRl
clRoZW1lQmxhY2tCZXJyeTo6cGFpbnRTbGlkZXJUcmFja1JlY3QoUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBz
dGF0aWMgUmVmUHRyPEltYWdlPiBiYWNrZ3JvdW5kOwotICAgIGlmICghYmFja2dyb3VuZCkKLSAg
ICAgICAgYmFja2dyb3VuZCA9IGxvYWRJbWFnZSgiY29yZV9zbGlkZXJfYmciKTsKLSAgICByZXR1
cm4gcGFpbnRTbGlkZXJUcmFja1JlY3Qob2JqZWN0LCBpbmZvLCByZWN0LCBiYWNrZ3JvdW5kLmdl
dCgpKTsKKyAgICByZXR1cm4gcGFpbnRTbGlkZXJUcmFja1JlY3Qob2JqZWN0LCBpbmZvLCByZWN0
LCByYW5nZVNsaWRlclJlZ3VsYXJUb3BPdXRsaW5lLCByYW5nZVNsaWRlclJlZ3VsYXJCb3R0b21P
dXRsaW5lLCByYW5nZVNsaWRlclJlZ3VsYXJUb3AsIHJhbmdlU2xpZGVyUmVndWxhckJvdHRvbSk7
Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludFNsaWRlclRyYWNrUmVjdChS
ZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0
JiByZWN0LCBSR0JBMzIgc3Ryb2tlQ29sb3JTdGFydCwgUkdCQTMyIHN0cm9rZUNvbG9yRW5kLCBS
R0JBMzIgZmlsbENvbG9yU3RhcnQsIFJHQkEzMiBmaWxsQ29sb3JFbmQpCit7CisgICAgRmxvYXRT
aXplIHNtYWxsQ29ybmVyKG1lZGlhU2xpZGVyVHJhY2tSYWRpdXMsIG1lZGlhU2xpZGVyVHJhY2tS
YWRpdXMpOworCisgICAgaW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgaW5mby5jb250ZXh0LT5z
ZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VU
aGlja25lc3MobGluZVdpZHRoKTsKKworI2lmIFVTRShTS0lBKQorICAgIGluZm8uY29udGV4dC0+
c2V0U3Ryb2tlR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQoc3Ryb2tlQ29sb3JTdGFydCwg
c3Ryb2tlQ29sb3JFbmQsIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5l
cigpKSk7CisgICAgaW5mby5jb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3Jh
ZGllbnQoZmlsbENvbG9yU3RhcnQsIGZpbGxDb2xvckVuZCwgcmVjdC5tYXhYTWluWUNvcm5lcigp
LCByZWN0Lm1heFhNYXhZQ29ybmVyKCkpKTsKKyNlbHNlCisgICAgaW5mby5jb250ZXh0LT5zZXRT
dHJva2VDb2xvcihzdHJva2VDb2xvclN0YXJ0LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBp
bmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihmaWxsQ29sb3JTdGFydCwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisjZW5kaWYKKworICAgIFBhdGggcGF0aDsKKyAgICBwYXRoLmFkZFJvdW5kZWRSZWN0
KHJlY3QsIHNtYWxsQ29ybmVyKTsKKyAgICBpbmZvLmNvbnRleHQtPmZpbGxQYXRoKHBhdGgpOwor
CisgICAgaW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBi
b29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRTbGlkZXJUcmFja1JlY3QoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCwg
SW1hZ2UqIGluYWN0aXZlKQpAQCAtODA0LDI5ICs4MzUsNDcgQEAgdm9pZCBSZW5kZXJUaGVtZUJs
YWNrQmVycnk6OmFkanVzdE1lZGlhQ29udHJvbFN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJT
dHlsZSoKICAgICAvLyBXZSB1c2UgbXVsdGlwbGVzIG9mIG1lZGlhQ29udHJvbHNIZWlnaHQgdG8g
bWFrZSBhbGwgb2JqZWN0cyBzY2FsZSBldmVubHkKICAgICBMZW5ndGggemVybygwLCBGaXhlZCk7
CiAgICAgTGVuZ3RoIGNvbnRyb2xzSGVpZ2h0KG1lZGlhQ29udHJvbHNIZWlnaHQgKiBmdWxsU2Ny
ZWVuTXVsdGlwbGllciwgRml4ZWQpOwotICAgIExlbmd0aCB0aW1lV2lkdGgobWVkaWFDb250cm9s
c0hlaWdodCAqIDMgLyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIEZpeGVkKTsKLSAgICBMZW5n
dGggdm9sdW1lSGVpZ2h0KG1lZGlhQ29udHJvbHNIZWlnaHQgKiA0ICogZnVsbFNjcmVlbk11bHRp
cGxpZXIsIEZpeGVkKTsKLSAgICBMZW5ndGggcGFkZGluZyhtZWRpYUNvbnRyb2xzSGVpZ2h0IC8g
OCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCk7Ci0gICAgZmxvYXQgZm9udFNpemUgPSBt
ZWRpYUNvbnRyb2xzSGVpZ2h0IC8gMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyOworICAgIExlbmd0
aCBoYWxmQ29udHJvbHNXaWR0aChtZWRpYUNvbnRyb2xzSGVpZ2h0IC8gMiAqIGZ1bGxTY3JlZW5N
dWx0aXBsaWVyLCBGaXhlZCk7CisgICAgTGVuZ3RoIGRpc3BsYXlIZWlnaHQobWVkaWFDb250cm9s
c0hlaWdodCAvIDMgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpOworICAgIExlbmd0aCBw
YWRkaW5nKG1lZGlhQ29udHJvbHNIZWlnaHQgLyAxMCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBG
aXhlZCk7CisgICAgZmxvYXQgZm9udFNpemUgPSBtZWRpYUNvbnRyb2xzSGVpZ2h0IC8gMyAqIGZ1
bGxTY3JlZW5NdWx0aXBsaWVyOwogCiAgICAgc3dpdGNoIChzdHlsZS0+YXBwZWFyYW5jZSgpKSB7
CiAgICAgY2FzZSBNZWRpYVBsYXlCdXR0b25QYXJ0OgorICAgICAgICBzdHlsZS0+c2V0V2lkdGgo
Y29udHJvbHNIZWlnaHQpOworICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KGNvbnRyb2xzSGVpZ2h0
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNZWRpYU11dGVCdXR0b25QYXJ0OgorICAgICAg
ICBzdHlsZS0+c2V0UGFkZGluZ0xlZnQocGFkZGluZyk7CisgICAgICAgIHN0eWxlLT5zZXRXaWR0
aChjb250cm9sc0hlaWdodCk7CisgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoY29udHJvbHNIZWln
aHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1lZGlhUmV3aW5kQnV0dG9uUGFydDoKKyAg
ICAgICAgLy8gV2UgaGktamFjayB0aGUgUmV3aW5kIEJ1dHRvbiBJRCB0byB1c2UgaXQgZm9yIHRo
ZSBkaXZpZGVyIGltYWdlCisgICAgICAgIHN0eWxlLT5zZXRXaWR0aChoYWxmQ29udHJvbHNXaWR0
aCk7CisgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoY29udHJvbHNIZWlnaHQpOworICAgICAgICBi
cmVhazsKICAgICBjYXNlIE1lZGlhRW50ZXJGdWxsc2NyZWVuQnV0dG9uUGFydDoKKyAgICAgICAg
c3R5bGUtPnNldFBhZGRpbmdSaWdodChwYWRkaW5nKTsKKyAgICAgICAgc3R5bGUtPnNldFdpZHRo
KGNvbnRyb2xzSGVpZ2h0KTsKKyAgICAgICAgc3R5bGUtPnNldEhlaWdodChjb250cm9sc0hlaWdo
dCk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFFeGl0RnVsbHNjcmVlbkJ1dHRvblBh
cnQ6Ci0gICAgY2FzZSBNZWRpYU11dGVCdXR0b25QYXJ0OgorICAgICAgICBzdHlsZS0+c2V0TGVm
dCh6ZXJvKTsKICAgICAgICAgc3R5bGUtPnNldFdpZHRoKGNvbnRyb2xzSGVpZ2h0KTsKICAgICAg
ICAgc3R5bGUtPnNldEhlaWdodChjb250cm9sc0hlaWdodCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTWVkaWFDdXJyZW50VGltZVBhcnQ6CiAgICAgY2FzZSBNZWRpYVRpbWVSZW1haW5pbmdQ
YXJ0OgotICAgICAgICBzdHlsZS0+c2V0V2lkdGgodGltZVdpZHRoKTsKLSAgICAgICAgc3R5bGUt
PnNldEhlaWdodChjb250cm9sc0hlaWdodCk7CisgICAgICAgIHN0eWxlLT5zZXRXaWR0aChjb250
cm9sc0hlaWdodCk7CisgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoZGlzcGxheUhlaWdodCk7CiAg
ICAgICAgIHN0eWxlLT5zZXRQYWRkaW5nUmlnaHQocGFkZGluZyk7CisgICAgICAgIHN0eWxlLT5z
ZXRQYWRkaW5nTGVmdChwYWRkaW5nKTsKKyAgICAgICAgc3R5bGUtPnNldFBhZGRpbmdCb3R0b20o
cGFkZGluZyk7CiAgICAgICAgIHN0eWxlLT5zZXRGb250U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGZv
bnRTaXplKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFWb2x1bWVTbGlkZXJDb250
YWluZXJQYXJ0OgotICAgICAgICBzdHlsZS0+c2V0V2lkdGgoY29udHJvbHNIZWlnaHQpOwotICAg
ICAgICBzdHlsZS0+c2V0SGVpZ2h0KHZvbHVtZUhlaWdodCk7CisgICAgICAgIHN0eWxlLT5zZXRI
ZWlnaHQoY29udHJvbHNIZWlnaHQpOwogICAgICAgICBzdHlsZS0+c2V0Qm90dG9tKGNvbnRyb2xz
SGVpZ2h0KTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTg0MywxMiArODkyLDE0
IEBAIHZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RNZWRpYUNvbnRyb2xTdHlsZShT
dHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqCiAgICAgICAgIGNhc2UgTWVkaWFFeGl0RnVsbHNj
cmVlbkJ1dHRvblBhcnQ6CiAgICAgICAgICAgICBzdHlsZS0+c2V0UG9zaXRpb24oQWJzb2x1dGVQ
b3NpdGlvbik7CiAgICAgICAgICAgICBzdHlsZS0+c2V0Qm90dG9tKHplcm8pOworICAgICAgICAg
ICAgc3R5bGUtPnNldExlZnQoemVybyk7CiAgICAgICAgICAgICBzdHlsZS0+c2V0UmlnaHQoY29u
dHJvbHNIZWlnaHQpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWVkaWFNdXRl
QnV0dG9uUGFydDoKKyAgICAgICAgY2FzZSBNZWRpYVJld2luZEJ1dHRvblBhcnQ6CisgICAgICAg
ICAgICAvLyBXZSBoaS1qYWNrIHRoZSBSZXdpbmQgQnV0dG9uIElEIHRvIHVzZSBpdCBmb3IgdGhl
IGRpdmlkZXIgaW1hZ2UKICAgICAgICAgICAgIHN0eWxlLT5zZXRQb3NpdGlvbihBYnNvbHV0ZVBv
c2l0aW9uKTsKICAgICAgICAgICAgIHN0eWxlLT5zZXRCb3R0b20oemVybyk7Ci0gICAgICAgICAg
ICBzdHlsZS0+c2V0UmlnaHQoemVybyk7CisgICAgICAgICAgICBzdHlsZS0+c2V0TGVmdChjb250
cm9sc0hlaWdodCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtODYxLDE3ICs5MTIsMTIgQEAgdm9pZCBSZW5kZXJUaGVtZUJsYWNr
QmVycnk6OmFkanVzdFNsaWRlclRyYWNrU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxl
KgogICAgIGZsb2F0IGZ1bGxTY3JlZW5NdWx0aXBsaWVyID0gZGV0ZXJtaW5lRnVsbFNjcmVlbk11
bHRpcGxpZXIoZWxlbWVudCk7CiAKICAgICAvLyBXZSB1c2UgbXVsdGlwbGVzIG9mIG1lZGlhQ29u
dHJvbHNIZWlnaHQgdG8gbWFrZSBhbGwgb2JqZWN0cyBzY2FsZSBldmVubHkKLSAgICBMZW5ndGgg
Y29udHJvbHNIZWlnaHQobWVkaWFDb250cm9sc0hlaWdodCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVy
LCBGaXhlZCk7Ci0gICAgTGVuZ3RoIHZvbHVtZUhlaWdodChtZWRpYUNvbnRyb2xzSGVpZ2h0ICog
NCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCk7CisgICAgTGVuZ3RoIGNvbnRyb2xzSGVp
Z2h0KG1lZGlhQ29udHJvbHNIZWlnaHQgLyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIEZpeGVk
KTsKICAgICBzd2l0Y2ggKHN0eWxlLT5hcHBlYXJhbmNlKCkpIHsKICAgICBjYXNlIE1lZGlhU2xp
ZGVyUGFydDoKLSAgICAgICAgc3R5bGUtPnNldEhlaWdodChjb250cm9sc0hlaWdodCk7Ci0gICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFWb2x1bWVTbGlkZXJQYXJ0OgotICAgICAgICBzdHls
ZS0+c2V0V2lkdGgoY29udHJvbHNIZWlnaHQpOwotICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KHZv
bHVtZUhlaWdodCk7CisgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoY29udHJvbHNIZWlnaHQpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIE1lZGlhRnVsbFNjcmVlblZvbHVtZVNsaWRlclBhcnQ6
CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtOTAzLDYgKzk0OSwyOSBA
QCBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVBsYXlCdXR0b24oUmVuZGVy
T2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaQogI2VuZGlmCiB9CiAKKy8vIFdlIGhpLWphY2sgdGhl
IFJld2luZCBCdXR0b24gY29kZSB0byB1c2UgaXQgZm9yIHRoZSBkaXZpZGVyIGltYWdlCitib29s
IFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVJld2luZEJ1dHRvbihSZW5kZXJPYmpl
Y3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJl
Y3QpCit7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxl
bWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50KG9iamVjdCk7CisKKyAgICBpZiAoIW1lZGlhRWxl
bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtZWRpYUVsZW1lbnQtPmlz
RnVsbHNjcmVlbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdGF0aWMgSW1hZ2Uq
IGRpdmlkZXIgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImRpdmlkZXIiKS5sZWFrUmVm
KCk7CisKKyAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihwYWludEluZm8uY29udGV4dCwgcmVj
dCwgZGl2aWRlcik7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOworICAgIFVOVVNF
RF9QQVJBTShwYWludEluZm8pOworICAgIFVOVVNFRF9QQVJBTShyZWN0KTsKKyAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKK30KKwogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVk
aWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICNpZiBFTkFCTEUoVklERU8pCkBAIC05MTEs
MTAgKzk4MCw5IEBAIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhTXV0ZUJ1
dHRvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpCiAgICAgaWYgKCFtZWRpYUVsZW1l
bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0YXRpYyBJbWFnZSogbWVkaWFNdXRl
ID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJzcGVha2VyIikubGVha1JlZigpOwotICAg
IHN0YXRpYyBJbWFnZSogbWVkaWFVbm11dGUgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2Uo
InNwZWFrZXJfbXV0ZSIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgSW1hZ2UqIGRpdmlkZXIgPSBJ
bWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInNwZWFrZXIiKS5sZWFrUmVmKCk7CiAKLSAgICBy
ZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihwYWludEluZm8uY29udGV4dCwgcmVjdCwgbWVkaWFFbGVt
ZW50LT5tdXRlZCgpIHx8ICFtZWRpYUVsZW1lbnQtPnZvbHVtZSgpID8gbWVkaWFVbm11dGUgOiBt
ZWRpYU11dGUpOworICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHBhaW50SW5mby5jb250ZXh0
LCByZWN0LCBkaXZpZGVyKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7CiAgICAg
VU5VU0VEX1BBUkFNKHBhaW50SW5mbyk7CkBAIC05MzEsNyArOTk5LDcgQEAgYm9vbCBSZW5kZXJU
aGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKFJlbmRlck9iamVjdCog
b2JqZWN0LCBjb24KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3RhdGljIEltYWdlKiBt
ZWRpYUVudGVyRnVsbHNjcmVlbiA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgiZnVsbHNj
cmVlbiIpLmxlYWtSZWYoKTsKLSAgICBzdGF0aWMgSW1hZ2UqIG1lZGlhRXhpdEZ1bGxzY3JlZW4g
PSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImV4aXRfZnVsbHNjcmVlbiIpLmxlYWtSZWYo
KTsKKyAgICBzdGF0aWMgSW1hZ2UqIG1lZGlhRXhpdEZ1bGxzY3JlZW4gPSBJbWFnZTo6bG9hZFBs
YXRmb3JtUmVzb3VyY2UoImJhY2siKS5sZWFrUmVmKCk7CiAKICAgICBJbWFnZSogYnV0dG9uSW1h
Z2UgPSBtZWRpYUVudGVyRnVsbHNjcmVlbjsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBA
IC05NTgsMzggKzEwMjYsMzAgQEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVk
aWFTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGEKICAgICBmbG9hdCBs
b2FkZWQgPSBtZWRpYUVsZW1lbnQtPnBlcmNlbnRMb2FkZWQoKTsKICAgICBmbG9hdCBwb3NpdGlv
biA9IG1lZGlhRWxlbWVudC0+ZHVyYXRpb24oKSA+IDAgPyAobWVkaWFFbGVtZW50LT5jdXJyZW50
VGltZSgpIC8gbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpKSA6IDA7CiAKLSAgICBpbnQgeCA9IGNl
aWwocmVjdC54KCkgKyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIgLSBmdWxsU2NyZWVuTXVsdGlw
bGllciAvIDIpOwotICAgIGludCB5ID0gY2VpbChyZWN0LnkoKSArIDE0ICogZnVsbFNjcmVlbk11
bHRpcGxpZXIgKyBmdWxsU2NyZWVuTXVsdGlwbGllciAvIDIpOwotICAgIGludCB3ID0gY2VpbChy
ZWN0LndpZHRoKCkgLSA0ICogZnVsbFNjcmVlbk11bHRpcGxpZXIgKyBmdWxsU2NyZWVuTXVsdGlw
bGllciAvIDIpOwotICAgIGludCBoID0gY2VpbCgyICogZnVsbFNjcmVlbk11bHRpcGxpZXIpOwor
ICAgIGludCBpbnRyaW5zaWNIZWlnaHQgPSBjZWlsKG1lZGlhU2xpZGVyVGh1bWJIZWlnaHQgLyA0
KTsKKyAgICBpbnQgeCA9IGNlaWwocmVjdC54KCkgKyAobWVkaWFDb250cm9sc0hlaWdodCAtIGlu
dHJpbnNpY0hlaWdodCkgLyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIgLSBmdWxsU2NyZWVuTXVs
dGlwbGllciAvIDIpOworICAgIGludCB5ID0gY2VpbChyZWN0LnkoKSArIChtZWRpYUNvbnRyb2xz
SGVpZ2h0IC8gMiAtIGludHJpbnNpY0hlaWdodCkgLyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIg
KyBmdWxsU2NyZWVuTXVsdGlwbGllciAvIDIpOworICAgIGludCB3ID0gY2VpbChyZWN0LndpZHRo
KCkgLSAobWVkaWFDb250cm9sc0hlaWdodCAtIGludHJpbnNpY0hlaWdodCkgKiBmdWxsU2NyZWVu
TXVsdGlwbGllciArIGZ1bGxTY3JlZW5NdWx0aXBsaWVyIC8gMik7CisgICAgaW50IGggPSBjZWls
KGludHJpbnNpY0hlaWdodCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyKTsKICAgICBJbnRSZWN0IHJl
Y3QyKHgsIHksIHcsIGgpOwogCiAgICAgaW50IHdQbGF5ZWQgPSBjZWlsKHcgKiBwb3NpdGlvbik7
CiAgICAgaW50IHdMb2FkZWQgPSBjZWlsKCh3IC0gbWVkaWFTbGlkZXJUaHVtYldpZHRoICogZnVs
bFNjcmVlbk11bHRpcGxpZXIpICogbG9hZGVkICsgbWVkaWFTbGlkZXJUaHVtYldpZHRoICogZnVs
bFNjcmVlbk11bHRpcGxpZXIpOwogCiAgICAgSW50UmVjdCBwbGF5ZWQoeCwgeSwgd1BsYXllZCwg
aCk7Ci0gICAgSW50UmVjdCBidWZmZXJlZCh4LCB5LCB3TG9hZGVkLCBoKTsKKyAgICBJbnRSZWN0
IGJ1ZmZlcmVkKHgsIGNlaWwoeSArIG1lZGlhU2xpZGVyT3V0bGluZVdpZHRoKSwgd0xvYWRlZCwg
Y2VpbChoIC0gMiAqIG1lZGlhU2xpZGVyT3V0bGluZVdpZHRoKSk7CiAKICAgICAvLyBUaGlzIGlz
IHRvIHBhaW50IG1haW4gc2xpZGVyIGJhci4KLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlPiB0cmFj
a0ltYWdlOwotICAgIGlmICghdHJhY2tJbWFnZSkKLSAgICAgICAgdHJhY2tJbWFnZSA9IGxvYWRJ
bWFnZSgiY29yZV9zbGlkZXJfbWVkaWFfYmciKTsKLSAgICBib29sIHJlc3VsdCA9IHBhaW50U2xp
ZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJbmZvLCByZWN0MiwgdHJhY2tJbWFnZS5nZXQoKSk7
CisgICAgYm9vbCByZXN1bHQgPSBwYWludFNsaWRlclRyYWNrUmVjdChvYmplY3QsIHBhaW50SW5m
bywgcmVjdDIpOwogCiAgICAgaWYgKGxvYWRlZCA+IDAgfHwgcG9zaXRpb24gPiAwKSB7CiAgICAg
ICAgIC8vIFRoaXMgaXMgdG8gcGFpbnQgYnVmZmVyZWQgYmFyLgotICAgICAgICBzdGF0aWMgUmVm
UHRyPEltYWdlPiBidWZmZXJlZEltYWdlLCBwbGF5ZWRJbWFnZTsKLSAgICAgICAgaWYgKCFidWZm
ZXJlZEltYWdlKSB7Ci0gICAgICAgICAgICBidWZmZXJlZEltYWdlID0gbG9hZEltYWdlKCJjb3Jl
X3NsaWRlcl9idWZmZXJlZF9iZyIpOwotICAgICAgICAgICAgcGxheWVkSW1hZ2UgPSBsb2FkSW1h
Z2UoImNvcmVfc2xpZGVyX3BsYXllZF9iZyIpOwotICAgICAgICB9Ci0gICAgICAgIHBhaW50U2xp
ZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJbmZvLCBidWZmZXJlZCwgYnVmZmVyZWRJbWFnZS5n
ZXQoKSk7CisgICAgICAgIHBhaW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJbmZvLCBi
dWZmZXJlZCwgQ29sb3I6OmRhcmtHcmF5LCBDb2xvcjo6ZGFya0dyYXksIENvbG9yOjpkYXJrR3Jh
eSwgQ29sb3I6OmRhcmtHcmF5KTsKIAogICAgICAgICAvLyBUaGlzIGlzIHRvIHBhaW50IHBsYXll
ZCBwYXJ0IG9mIGJhciAobGVmdCBvZiBzbGlkZXIgdGh1bWIpIHVzaW5nIHNlbGVjdGlvbiBjb2xv
ci4KLSAgICAgICAgcGFpbnRTbGlkZXJUcmFja1JlY3Qob2JqZWN0LCBwYWludEluZm8sIHBsYXll
ZCwgcGxheWVkSW1hZ2UuZ2V0KCkpOworICAgICAgICBwYWludFNsaWRlclRyYWNrUmVjdChvYmpl
Y3QsIHBhaW50SW5mbywgcGxheWVkLCBzZWxlY3Rpb24sIHNlbGVjdGlvbiwgc2VsZWN0aW9uLCBz
ZWxlY3Rpb24pOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwotCiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShvYmplY3QpOwogICAgIFVOVVNFRF9QQVJBTShwYWludEluZm8pOwpAQCAtMTAwMSwx
NSArMTA2MSwzNCBAQCBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVNsaWRl
clRyYWNrKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYQogYm9vbCBSZW5kZXJUaGVtZUJs
YWNrQmVycnk6OnBhaW50TWVkaWFTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAjaWYgRU5B
QkxFKFZJREVPKQorI2lmIFVTRShTS0lBKQogICAgIFJlbmRlclNsaWRlciogc2xpZGVyID0gZGV0
ZXJtaW5lUmVuZGVyU2xpZGVyKG9iamVjdCk7CiAgICAgaWYgKCFzbGlkZXIpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHN0YXRpYyBJbWFnZSogbWVkaWFWb2x1bWVUaHVtYiA9IEltYWdl
Ojpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidm9sdW1lX3RodW1iIikubGVha1JlZigpOworICAgIGZs
b2F0IGZ1bGxTY3JlZW5NdWx0aXBsaWVyID0gZGV0ZXJtaW5lRnVsbFNjcmVlbk11bHRpcGxpZXIo
dG9FbGVtZW50KHNsaWRlci0+bm9kZSgpKSk7CisKKyAgICBwYWludEluZm8uY29udGV4dC0+c2F2
ZSgpOworICAgIFBhdGggbWVkaWFUaHVtYlJvdW5kZWRSZWN0YW5nbGU7CisgICAgbWVkaWFUaHVt
YlJvdW5kZWRSZWN0YW5nbGUuYWRkUm91bmRlZFJlY3QocmVjdCwgRmxvYXRTaXplKG1lZGlhU2xp
ZGVyVGh1bWJSYWRpdXMgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgbWVkaWFTbGlkZXJUaHVtYlJh
ZGl1cyAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNl
dFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ry
b2tlVGhpY2tuZXNzKDAuNSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9y
KENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisKKyAgICBpZiAoaXNQcmVzc2Vk
KG9iamVjdCkgfHwgaXNIb3ZlcmVkKG9iamVjdCkgfHwgc2xpZGVyLT5pbkRyYWdNb2RlKCkpCisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3Jh
ZGllbnQoc2VsZWN0aW9uLCBDb2xvcihzZWxlY3Rpb24pLmRhcmsoKS5yZ2IoKSwgcmVjdC5tYXhY
TWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29ybmVyKCkpKTsKKyAgICBlbHNlCisgICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFyR3JhZGllbnQo
Q29sb3I6OndoaXRlLCBDb2xvcihDb2xvcjo6d2hpdGUpLmRhcmsoKS5yZ2IoKSwgcmVjdC5tYXhY
TWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29ybmVyKCkpKTsKIAotICAgIGRyYXdDb250cm9s
KHBhaW50SW5mby5jb250ZXh0LCByZWN0LCBtZWRpYVZvbHVtZVRodW1iKTsKKyAgICBwYWludElu
Zm8uY29udGV4dC0+ZmlsbFBhdGgobWVkaWFUaHVtYlJvdW5kZWRSZWN0YW5nbGUpOworICAgIHBh
aW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlIC8v
IEdMIHJlbmRlcmVyCisgICAgc3RhdGljIEltYWdlKiBtZWRpYVNsaWRlclRodW1iID0gSW1hZ2U6
OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJjb3JlX3NsaWRlcl9oYW5kbGVfZGlzYWJsZWQiKS5sZWFr
UmVmKCk7CisKKyAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihwYWludEluZm8uY29udGV4dCwg
cmVjdCwgbWVkaWFTbGlkZXJUaHVtYik7CisjZW5kaWYgLy8gVVNFKFNLSUEpCiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShvYmplY3QpOwogICAgIFVOVVNFRF9QQVJBTShwYWludEluZm8pOwpAQCAt
MTAyMSwxOSArMTEwMCwyOSBAQCBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRp
YVNsaWRlclRodW1iKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYQogYm9vbCBSZW5kZXJU
aGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUcmFjayhSZW5kZXJPYmplY3Qq
IG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3Qp
CiB7CiAjaWYgRU5BQkxFKFZJREVPKQotICAgIGZsb2F0IHBhZCA9IHJlY3Qud2lkdGgoKSAqIDAu
NDU7Ci0gICAgZmxvYXQgeCA9IHJlY3QueCgpICsgcGFkOwotICAgIGZsb2F0IHkgPSByZWN0Lnko
KSArIHBhZDsKLSAgICBmbG9hdCB3aWR0aCA9IHJlY3Qud2lkdGgoKSAqIDAuMTsKLSAgICBmbG9h
dCBoZWlnaHQgPSByZWN0LmhlaWdodCgpIC0gKDIuMCAqIHBhZCk7CisgICAgSFRNTE1lZGlhRWxl
bWVudCogbWVkaWFFbGVtZW50ID0gdG9QYXJlbnRNZWRpYUVsZW1lbnQob2JqZWN0KTsKKyAgICBp
ZiAoIW1lZGlhRWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSW50UmVjdCBy
ZWN0Mih4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBmbG9hdCBmdWxsU2NyZWVuTXVsdGlwbGll
ciA9IGRldGVybWluZUZ1bGxTY3JlZW5NdWx0aXBsaWVyKG1lZGlhRWxlbWVudCk7CisgICAgZmxv
YXQgdm9sdW1lID0gbWVkaWFFbGVtZW50LT52b2x1bWUoKSA+IDAgPyBtZWRpYUVsZW1lbnQtPnZv
bHVtZSgpIDogMDsKKworICAgIGludCBpbnRyaW5zaWNIZWlnaHQgPSBjZWlsKG1lZGlhU2xpZGVy
VGh1bWJIZWlnaHQgLyA0KTsKKyAgICBpbnQgeCA9IGNlaWwocmVjdC54KCkgKyAobWVkaWFDb250
cm9sc0hlaWdodCAtIGludHJpbnNpY0hlaWdodCkgLyAyICogZnVsbFNjcmVlbk11bHRpcGxpZXIg
LSBmdWxsU2NyZWVuTXVsdGlwbGllciAvIDIpOworICAgIGludCB5ID0gY2VpbChyZWN0LnkoKSAr
IChtZWRpYUNvbnRyb2xzSGVpZ2h0IC8gMiAtIGludHJpbnNpY0hlaWdodCkgLyAyICogZnVsbFNj
cmVlbk11bHRpcGxpZXIgKyBmdWxsU2NyZWVuTXVsdGlwbGllciAvIDIpOworICAgIGludCB3ID0g
Y2VpbChyZWN0LndpZHRoKCkgLSAobWVkaWFDb250cm9sc0hlaWdodCAtIGludHJpbnNpY0hlaWdo
dCkgKiBmdWxsU2NyZWVuTXVsdGlwbGllciArIGZ1bGxTY3JlZW5NdWx0aXBsaWVyIC8gMik7Cisg
ICAgaW50IGggPSBjZWlsKGludHJpbnNpY0hlaWdodCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyKTsK
KyAgICBJbnRSZWN0IHJlY3QyKHgsIHksIHcsIGgpOworICAgIEludFJlY3Qgdm9sdW1lUmVjdCh4
LCB5LCBjZWlsKHcgKiB2b2x1bWUpLCBoKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IHRy
YWNrSW1hZ2U7Ci0gICAgaWYgKCF0cmFja0ltYWdlKQotICAgICAgICB0cmFja0ltYWdlID0gbG9h
ZEltYWdlKCJjb3JlX3NsaWRlcl9tZWRpYV9iZyIpOworICAgIC8vIFRoaXMgaXMgdG8gcGFpbnQg
bWFpbiB2b2x1bWUgc2xpZGVyIGJhci4KKyAgICBib29sIHJlc3VsdCA9IHBhaW50U2xpZGVyVHJh
Y2tSZWN0KG9iamVjdCwgcGFpbnRJbmZvLCByZWN0MiwgQ29sb3IobWVkaWFTbGlkZXJUcmFja091
dGxpbmUpLnJnYigpLCBDb2xvcihtZWRpYVNsaWRlclRyYWNrT3V0bGluZSkucmdiKCksIHJhbmdl
U2xpZGVyUmVndWxhclRvcCwgcmFuZ2VTbGlkZXJSZWd1bGFyVG9wKTsKIAotICAgIHJldHVybiBw
YWludFNsaWRlclRyYWNrUmVjdChvYmplY3QsIHBhaW50SW5mbywgcmVjdDIsIHRyYWNrSW1hZ2Uu
Z2V0KCkpOworICAgIGlmICh2b2x1bWUgPiAwKSB7CisgICAgICAgIC8vIFRoaXMgaXMgdG8gcGFp
bnQgdm9sdW1lIGJhciAobGVmdCBvZiB2b2x1bWUgc2xpZGVyIHRodW1iKSB1c2luZyBzZWxlY3Rp
b24gY29sb3IuCisgICAgICAgIHBhaW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJbmZv
LCB2b2x1bWVSZWN0LCBDb2xvcihtZWRpYVNsaWRlclRyYWNrT3V0bGluZSkucmdiKCksIENvbG9y
KG1lZGlhU2xpZGVyVHJhY2tPdXRsaW5lKS5yZ2IoKSwgc2VsZWN0aW9uLCBzZWxlY3Rpb24pOwor
ICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ob2JqZWN0
KTsKICAgICBVTlVTRURfUEFSQU0ocGFpbnRJbmZvKTsKQEAgLTEwNDUsOSArMTEzNCwyOSBAQCBi
b29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKFJl
bmRlck9iamVjdCogb2JqZWN0LCBjbwogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50
TWVkaWFWb2x1bWVTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAjaWYgRU5BQkxFKFZJREVP
KQotICAgIHN0YXRpYyBJbWFnZSogbWVkaWFWb2x1bWVUaHVtYiA9IEltYWdlOjpsb2FkUGxhdGZv
cm1SZXNvdXJjZSgidm9sdW1lX3RodW1iIikubGVha1JlZigpOworI2lmIFVTRShTS0lBKQorICAg
IFJlbmRlclNsaWRlciogc2xpZGVyID0gZGV0ZXJtaW5lUmVuZGVyU2xpZGVyKG9iamVjdCk7Cisg
ICAgaWYgKCFzbGlkZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBwYWlu
dE1lZGlhQnV0dG9uKHBhaW50SW5mby5jb250ZXh0LCByZWN0LCBtZWRpYVZvbHVtZVRodW1iKTsK
KyAgICBmbG9hdCBmdWxsU2NyZWVuTXVsdGlwbGllciA9IGRldGVybWluZUZ1bGxTY3JlZW5NdWx0
aXBsaWVyKHRvRWxlbWVudChzbGlkZXItPm5vZGUoKSkpOworCisgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPnNhdmUoKTsKKyAgICBQYXRoIG1lZGlhVGh1bWJSb3VuZGVkUmVjdGFuZ2xlOworICAgIG1l
ZGlhVGh1bWJSb3VuZGVkUmVjdGFuZ2xlLmFkZFJvdW5kZWRSZWN0KHJlY3QsIEZsb2F0U2l6ZSht
ZWRpYVNsaWRlclRodW1iSGVpZ2h0IC8gMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBtZWRpYVNs
aWRlclRodW1iSGVpZ2h0IC8gMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyKSk7CisKKyAgICBpZiAo
aXNQcmVzc2VkKG9iamVjdCkgfHwgaXNIb3ZlcmVkKG9iamVjdCkgfHwgc2xpZGVyLT5pbkRyYWdN
b2RlKCkpCisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRl
TGluZWFyR3JhZGllbnQoc2VsZWN0aW9uLCBDb2xvcihzZWxlY3Rpb24pLmRhcmsoKS5yZ2IoKSwg
cmVjdC5tYXhYTWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29ybmVyKCkpKTsKKyAgICBlbHNl
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoY3JlYXRlTGluZWFy
R3JhZGllbnQobWVkaWFTbGlkZXJUcmFja091dGxpbmUsIENvbG9yOjpibGFjaywgcmVjdC5tYXhY
TWluWUNvcm5lcigpLCByZWN0Lm1heFhNYXhZQ29ybmVyKCkpKTsKKworICAgIHBhaW50SW5mby5j
b250ZXh0LT5maWxsUGF0aChtZWRpYVRodW1iUm91bmRlZFJlY3RhbmdsZSk7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKworICAgIHJldHVybiB0cnVlOworI2Vsc2UgLy8gR0wg
cmVuZGVyZXIKKyAgICByZXR1cm4gcGFpbnRNZWRpYVNsaWRlclRodW1iKG9iamVjdCwgcGFpbnRJ
bmZvLCByZWN0KTsKKyNlbmRpZiAvLyBVU0UoU0tJQSkKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KG9iamVjdCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhaW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnku
aAppbmRleCA1MDdkNDUxMzQ4ZDM1ZmU0NTQ2NTQwMTA5YmEzNzU2ZDYzNjg1ZWU1Li4xZWViNTVi
OTkyMWMwYTgyM2U3YjM3ZTEzZDYwZDNmNzc4Yjc1MWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmgK
QEAgLTMyLDcgKzMyLDEwIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShWSURFTykKICAgICB2aXJ0
dWFsIFN0cmluZyBleHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCk7Ci0gICAgdmlydHVhbCBT
dHJpbmcgZm9ybWF0TWVkaWFDb250cm9sc1JlbWFpbmluZ1RpbWUoZmxvYXQgY3VycmVudFRpbWUs
IGZsb2F0IGR1cmF0aW9uKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgdXNlc1ZlcnRpY2FsVm9s
dW1lU2xpZGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKKyAgICB2aXJ0dWFsIFN0cmluZyBleHRyYUZ1bGxTY3JlZW5TdHlsZVNo
ZWV0KCk7CiAjZW5kaWYKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNIb3Zlcihjb25zdCBSZW5k
ZXJTdHlsZSopIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApAQCAtODIsNiArODUsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFWb2x1bWVTbGlkZXJUaHVtYihSZW5kZXJP
YmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCBi
b29sIHBhaW50TWVkaWFQbGF5QnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYU11dGVCdXR0b24o
UmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworICAgIHZp
cnR1YWwgYm9vbCBwYWludE1lZGlhUmV3aW5kQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRQcm9ncmVz
c0JhcihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAg
ICAgdmlydHVhbCBkb3VibGUgYW5pbWF0aW9uUmVwZWF0SW50ZXJ2YWxGb3JQcm9ncmVzc0JhcihS
ZW5kZXJQcm9ncmVzcyopIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIGFuaW1hdGlvbkR1cmF0
aW9uRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MqKSBjb25zdDsKQEAgLTEwNCw5ICsxMDgs
MTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEJ1dHRvblN0eWxlKFJlbmRlclN0eWxlKikgY29u
c3Q7CiAKICAgICBib29sIHBhaW50VGV4dEZpZWxkT3JUZXh0QXJlYU9yU2VhcmNoRmllbGQoUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOworCiAgICAgYm9v
bCBwYWludFNsaWRlclRyYWNrUmVjdChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jik7CiAKKyAgICBib29sIHBhaW50U2xpZGVyVHJhY2tSZWN0KFJlbmRlck9i
amVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmLCBSR0JBMzIsIFJHQkEzMiwg
UkdCQTMyLCBSR0JBMzIpOworCiAgICAgYm9vbCBwYWludFNsaWRlclRyYWNrUmVjdChSZW5kZXJP
YmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JiwgSW1hZ2UqKTsKKwogICAg
IEludFJlY3QgY29udmVydFRvUGFpbnRpbmdSZWN0KFJlbmRlck9iamVjdCogaW5wdXRSZW5kZXJl
ciwgY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJ0UmVuZGVyZXIsIExheW91dFJlY3QgcGFydFJlY3Qs
IGNvbnN0IEludFJlY3QmIGxvY2FsT2Zmc2V0KSBjb25zdDsKIAogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9jbWFrZS9PcHRpb25zQmxhY2tCZXJyeS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25z
QmxhY2tCZXJyeS5jbWFrZQppbmRleCBkZGI4MjhiYzkyMDRjOTBlYTk3ZjNjYzE3ZTZlZjY0YWM5
N2I4YmMxLi5hZGJlYjdlN2UyMDI1NjcwZjhmNWE1YWRjZTVhYTVmMTgzYzhmYzFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0JsYWNrQmVycnkuY21ha2UKKysrIGIvU291cmNlL2Nt
YWtlL09wdGlvbnNCbGFja0JlcnJ5LmNtYWtlCkBAIC0xOTgsNyArMTk4LDcgQEAgV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RPVUNIX0VWRU5UUyBPTikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9UT1VDSF9TTElERVIgT04pCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVklCUkFUSU9OIE9OKQogV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJREVPIE9OKQotV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJREVPX1RSQUNLIE9OKQorV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJREVPX1RSQUNLIE9GRikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfVElNSU5HIE9OKQogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dPUktFUlMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfWEhSX1JFU1BPTlNFX0JMT0IgT04pCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggNmRmMGQyMDE5M2I5MTUzNDc4NTI3YzBiYWQ0
MWNjMmI0OTg5NzQ3MS4uY2Q2NzM2MzNlMjlkYmIxYzkxMDQ3MjM3OGY0ZTQ2YzQzYjdjY2E4NyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtNDIwLDcgKzQyMCw3
IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1ZJREVPIiwgZGVm
YXVsdCA9PiAoaXNBcHBsZVdlYktpdCgpIHx8IGlzR3RrKCkgfHwgaXNCbGFja0JlcnJ5KCkgfHwg
aXNFZmwoKSksIHZhbHVlID0+IFwkdmlkZW9TdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAi
dmlkZW8tdHJhY2siLCBkZXNjID0+ICJUb2dnbGUgVmlkZW8gVHJhY2sgc3VwcG9ydCIsCi0gICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9WSURFT19UUkFDSyIsIGRlZmF1bHQgPT4gKGlzQXBwbGVXZWJL
aXQoKSB8fCBpc0d0aygpIHx8IGlzRWZsKCkgfHwgaXNCbGFja0JlcnJ5KCkpLCB2YWx1ZSA9PiBc
JHZpZGVvVHJhY2tTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9WSURFT19UUkFD
SyIsIGRlZmF1bHQgPT4gKGlzQXBwbGVXZWJLaXQoKSB8fCBpc0d0aygpIHx8IGlzRWZsKCkpLCB2
YWx1ZSA9PiBcJHZpZGVvVHJhY2tTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAid2ViZ2wi
LCBkZXNjID0+ICJUb2dnbGUgV2ViR0wgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJM
RV9XRUJHTCIsIGRlZmF1bHQgPT4gKGlzQXBwbGVNYWNXZWJLaXQoKSB8fCBpc0d0aygpIHx8IGlz
RWZsKCkpLCB2YWx1ZSA9PiBcJHdlYmdsU3VwcG9ydCB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179119</attachid>
            <date>2012-12-12 13:40:26 -0800</date>
            <delta_ts>2012-12-12 13:54:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104443-20121212163747.patch</filename>
            <type>text/plain</type>
            <size>113646</size>
            <attacher name="John Griggs">jgriggs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjlkMDUzZTQ2MDQwZmE5
NmZhNzgzOTQ1ZWI1MzcxODc5N2IxNTNlNi4uYjEzZjZjNDk4ODFkZDQ2NWI2NjVlNWM2ZDY5Zjdl
NmQ3ZTIzNmNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5OCBAQAorMjAxMi0xMi0xMiAgSm9o
biBHcmlnZ3MgIDxqZ3JpZ2dzQHJpbS5jb20+CisKKyAgICAgICAgMjAxMi0xMi0xMiAgSm9obiBH
cmlnZ3MgIDxqZ3JpZ2dzQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFVwZGF0ZSBN
ZWRpYSBDb250cm9scyBmb3IgQmxhY2tCZXJyeSBQbGF0Zm9ybQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NDQzCisgICAgICAgIGh0dHBzOi8vcHJ6
aWxsYS5vdHQucW54LmNvbS9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjA0NzQ4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZv
cm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNl
IGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUJsYWNrQmVycnkuY21h
a2U6CisgICAgICAgICogY3NzL21lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNzczoKKyAgICAgICAg
KGF1ZGlvKToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWVtYmVkZGVk
LXBhbmVsLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1lbWJlZGRlZC1wYW5lbCk6Cisg
ICAgICAgIChhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCwgdmlkZW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtcGFuZWwpOgorICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtYnV0dG9uLWdyb3VwLWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtYnV0dG9uLWdyb3VwLWNvbnRhaW5lcik6CisgICAgICAgICh2aWRlbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtZGlzcGxheS1jb250YWluZXIsIGF1ZGlvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1kaXNwbGF5LWNvbnRhaW5lcik6
CisgICAgICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLWRpc3BsYXktY29u
dGFpbmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLWRpc3BsYXktY29udGFp
bmVyKToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4t
cGxheS1idXR0b24sIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tcGxh
eS1idXR0b24pOgorICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1i
dXR0b24sIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uKToKKyAgICAg
ICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUtY29u
dGFpbmVyLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWVsaW5l
LWNvbnRhaW5lcik6CisgICAgICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1l
bGluZS1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNv
bnRhaW5lcik6CisgICAgICAgIChhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2Ny
ZWVuLWN1cnJlbnQtdGltZS1kaXNwbGF5LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1m
dWxsc2NyZWVuLWN1cnJlbnQtdGltZS1kaXNwbGF5KToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLWN1cnJlbnQtdGltZS1kaXNwbGF5LCB2aWRlbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1jdXJyZW50LXRpbWUtZGlzcGxheSk6CisgICAgICAgICh2aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtcmVtYWluaW5nLWRpc3BsYXksIGF1ZGlv
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1yZW1haW5pbmctZGlzcGxh
eSk6CisgICAgICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmlu
Zy1kaXNwbGF5LCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmluZy1k
aXNwbGF5KToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3Jl
ZW4tdGltZWxpbmUsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGlt
ZWxpbmUpOgorICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVl
bi1mdWxsc2NyZWVuLWJ1dHRvbiwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNj
cmVlbi1mdWxsc2NyZWVuLWJ1dHRvbik6CisgICAgICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbik6CisgICAgICAgIChhdWRpbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbik6CisgICAgICAgIChhdWRpbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1hdWRpby1tdXRlLWJ1dHRvbik6CisgICAgICAgICh2aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1hdWRpby1tdXRlLWJ1dHRvbik6CisgICAgICAgIChhdWRpbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRhaW5lcik6CisgICAgICAgICh2
aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRhaW5lcik6Cisg
ICAgICAgIChhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyKToKKyAg
ICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXIpOgorICAg
ICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24tZGl2
aWRlciwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24tZGl2
aWRlcik6CisgICAgICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVu
LWJ1dHRvbi1jb250YWluZXIsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0
dG9uLWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1i
dXR0b24tY29udGFpbmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRv
bi1jb250YWluZXIpOgorICAgICAgICAqIGNzcy9tZWRpYUNvbnRyb2xzQmxhY2tCZXJyeUZ1bGxz
Y3JlZW4uY3NzOiBBZGRlZC4KKyAgICAgICAgKGJvZHk6LXdlYmtpdC1mdWxsLXBhZ2UtbWVkaWEp
OgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1lbWJlZGRlZC1wYW5lbCk6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVu
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQt
ZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtYnV0dG9uLWdyb3VwLWNvbnRhaW5l
cik6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1kaXNwbGF5LWNvbnRhaW5lcik6CisgICAgICAgICh2aWRl
bzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUtZGlzcGxh
eS1jb250YWluZXIpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXBsYXktYnV0dG9uKToKKyAgICAgICAgKHZpZGVv
Oi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24p
OgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1mdWxsc2NyZWVuLXRpbWVsaW5lLWNvbnRhaW5lcik6CisgICAgICAgICh2aWRlbzotd2Vi
a2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNvbnRhaW5l
cik6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10aW1lLWRpc3BsYXkpOgorICAgICAgICAodmlkZW86
LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUt
ZGlzcGxheSk6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1yZW1haW5pbmctZGlzcGxheSk6CisgICAgICAg
ICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWUt
cmVtYWluaW5nLWRpc3BsYXkpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWVsaW5lKToKKyAgICAgICAgKHZp
ZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUp
OgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uKToKKyAgICAgICAgKHZpZGVvOi13ZWJr
aXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24p
OgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1hdWRpby1tdXRlLWJ1dHRvbik6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2Ny
ZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXItY29udGFpbmVyKToKKyAg
ICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
dm9sdW1lLXNsaWRlcik6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uLWRpdmlkZXIpOgorICAgICAgICAo
dmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2Ny
ZWVuLWJ1dHRvbi1jb250YWluZXIsIHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtcGxheS1idXR0b24tY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOi13
ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0
b24tY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24tY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVv
Oi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxhY2Vob2xkZXIp
OgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEJ1
dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWlu
ZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29u
dGFpbmVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEJ1
dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRy
b2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1
ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVu
dDo6TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnN0YXJ0
RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVu
dDo6Y29udGludWVEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEVtYmVkZGVk
UGFuZWxFbGVtZW50OjplbmREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEVt
YmVkZGVkUGFuZWxFbGVtZW50OjpzdGFydFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjpzdG9wVGltZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnRyYW5zaXRpb25UaW1lckZpcmVk
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50Ojpz
ZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVs
RWxlbWVudDo6cmVzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xF
bWJlZGRlZFBhbmVsRWxlbWVudDo6bWFrZU9wYXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6bWFrZVRyYW5zcGFyZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVt
ZW50OjpzZXRDYW5CZURyYWdnZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRW1i
ZWRkZWRQYW5lbEVsZW1lbnQ6OnNldElzRGlzcGxheWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlz
cGxheUNvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVt
ZW50OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25E
aXZpZGVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
QnV0dG9uRGl2aWRlckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50OjpN
ZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVs
ZW1lbnQ6Ok1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudDo6
TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQ6OnVwZGF0ZURpc3BsYXlUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudDo6c2hhZG93UHNl
dWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3Jl
ZW5CdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3Jl
ZW5CdXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
RnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9u
RWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
RnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpzZXRJc0Z1bGxzY3JlZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyRWxl
bWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJF
bGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVl
blRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6TWVkaWFDb250cm9s
RnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVt
ZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpzZXRQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpzZXRE
dXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxp
bmVFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5RWxl
bWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rp
c3BsYXlFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVt
ZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5
RWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
QXVkaW9NdXRlQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sQXVkaW9NdXRlQnV0dG9uRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xBdWRpb011dGVCdXR0b25FbGVtZW50
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sQXVkaW9NdXRlQnV0dG9u
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xBdWRpb011dGVCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6TWVkaWFDb250cm9sc0JsYWNrQmVycnkp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpjcmVhdGVDb250cm9scyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6c2V0TWVkaWFDb250cm9sbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpzaG93KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpoaWRlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjptYWtlT3BhcXVlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjptYWtlVHJhbnNwYXJlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpidWZmZXJpbmdQcm9ncmVzc2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpwbGF5YmFja1N0YXJ0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnBsYXliYWNrUHJv
Z3Jlc3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cGxh
eWJhY2tTdG9wcGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5
Ojp1cGRhdGVDdXJyZW50VGltZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sc0JsYWNrQmVycnk6OnJlcG9ydGVkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sc0JsYWNrQmVycnk6OmNoYW5nZWRNdXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbHNCbGFja0JlcnJ5OjplbnRlcmVkRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6ZXhpdGVkRnVsbHNjcmVlbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6c2hvd1ZvbHVtZVNsaWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6dG9nZ2xlVm9sdW1lU2xpZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpzaG91bGRIaWRl
Q29udHJvbHMpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNZWRpYUNvbnRyb2xCdXR0
b25Hcm91cENvbnRhaW5lckVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sVGltZURpc3Bs
YXlDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxF
bGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRh
aW5lckVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkNvbnRh
aW5lckVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlk
ZXJFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVt
ZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudCk6CisgICAgICAg
IChNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAoTWVk
aWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KToKKyAgICAgICAgKE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQpOgorICAgICAgICAo
TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KToKKyAgICAgICAgKE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50KToKKyAgICAgICAg
KE1lZGlhQ29udHJvbEF1ZGlvTXV0ZUJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250
cm9sc0JsYWNrQmVycnkpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhl
bWVCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpleHRyYUZ1bGxTY3JlZW5TdHlsZVNoZWV0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0U2xpZGVyVGh1bWJTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRTbGlkZXJU
cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1
c3RNZWRpYUNvbnRyb2xTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNr
QmVycnk6OmFkanVzdFNsaWRlclRyYWNrU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhUmV3aW5kQnV0dG9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYU11dGVCdXR0b24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhRnVsbHNjcmVlbkJ1
dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVk
aWFTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6
OnBhaW50TWVkaWFTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJs
YWNrQmVycnk6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUaHVtYik6Cisg
ICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6dXNlc1ZlcnRpY2FsVm9sdW1l
U2xpZGVyKToKKyAgICAgICAgKFJlbmRlclRoZW1lQmxhY2tCZXJyeSk6CisKIDIwMTItMTItMTIg
IElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IE5hdGl2ZSBNZW1vcnkgSW5zdHJ1bWVudGF0aW9uOiByZW1vdmUgZmFrZSByb290
IE1lbW9yeU9iamVjdEluZm8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJs
YWNrQmVycnkuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UK
aW5kZXggY2I5ZTlhZTNiMjM1YjUzMjY1YTU5ZjgwNWFmZGQ0OTgzZDBjOWE5My4uODM4ZjZkNzcy
ZDRlNzRmMDYzNzkzNDc4NzQwODFiNmJhM2I3MzY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
QmxhY2tCZXJyeS5jbWFrZQpAQCAtMyw2ICszLDEwIEBAIGxpc3QoSU5TRVJUIFdlYkNvcmVfSU5D
TFVERV9ESVJFQ1RPUklFUyAwCiAgICAgIiR7QkxBQ0tCRVJSWV9USElSRF9QQVJUWV9ESVJ9L2lj
dSIKICkKIAorbGlzdChSRU1PVkVfSVRFTSBXZWJDb3JlX1NPVVJDRVMKKyAgICBodG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCispCisKIGxpc3QoQVBQRU5EIFdlYkNvcmVfSU5DTFVE
RV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9jcHAiCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llRGF0YWJhc2VCYWNraW5nU3Rv
cmUiCkBAIC0xMDUsNiArMTA5LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKIGxp
c3QoQVBQRU5EIFdlYkNvcmVfVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMKICAgICAke1dFQkNPUkVf
RElSfS9jc3MvbWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3NzCisgICAgJHtXRUJDT1JFX0RJUn0v
Y3NzL21lZGlhQ29udHJvbHNCbGFja0JlcnJ5RnVsbHNjcmVlbi5jc3MKICAgICAke1dFQkNPUkVf
RElSfS9jc3MvdGhlbWVCbGFja0JlcnJ5LmNzcwogKQogCkBAIC0xMzEsNiArMTM2LDcgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBlZGl0aW5nL2JsYWNrYmVycnkvRWRpdG9yQmxhY2tCZXJyeS5jcHAKICAg
ICBlZGl0aW5nL2JsYWNrYmVycnkvU21hcnRSZXBsYWNlQmxhY2tCZXJyeS5jcHAKKyAgICBodG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5jcHAKICAgICBsb2FkZXIvYmxhY2tiZXJy
eS9Db29raWVKYXJCbGFja0JlcnJ5LmNwcAogICAgIHBhZ2UvYmxhY2tiZXJyeS9BY2Nlc3NpYmls
aXR5T2JqZWN0QmxhY2tCZXJyeS5jcHAKICAgICBwYWdlL2JsYWNrYmVycnkvRHJhZ0NvbnRyb2xs
ZXJCbGFja0JlcnJ5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29u
dHJvbHNCbGFja0JlcnJ5LmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeS5jc3MKaW5kZXggNGMwMGE3MjVjZDVhMDEzZTk5OGIyM2ZiNGI3NjQzOWE4YTc4ODQ1
MS4uMzY1MTAyMTM5NjkyOTUyOWZiMzMzNjc3NDhiMzhhMTYwY2E3NjM3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNzcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3NzCkBAIC0yOCw0MyArMjgs
NzEgQEAKICAvKiBCbGFja0JlcnJ5IGRlZmF1bHQgbWVkaWEgY29udHJvbHMuICovCiAKIGF1ZGlv
IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7CiAgICAgd2lkdGg6IDMwMHB4
OwogICAgIGhlaWdodDogMzJweDsKIH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
cGFuZWwsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIHsKK2F1ZGlvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLWVtYmVkZGVkLXBhbmVsLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1lbWJlZGRlZC1wYW5lbCB7CiAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICAg
LXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgIC13ZWJraXQtYm94LWFsaWduOiBj
ZW50ZXI7Ci0gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CiAgICAgYm90dG9tOiAwOwogICAgIHdpZHRoOiAxMDAlOwotICAgIHotaW5kZXg6IDA7
Ci0gICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICAgaGVpZ2h0OiBhdXRvOwotICAgIHRleHQtYWxp
Z246IGNlbnRlcjsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNik7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDAsIDApOwogfQogCi12aWRlbzotd2Via2l0LWZ1
bGwtcGFnZS1tZWRpYTo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCB7Ci0gICAgYm90dG9t
OiAwcHg7CithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCwgdmlkZW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtcGFuZWwgeworICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKLWF1ZGlv
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1wbGF5LWJ1dHRvbiB7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1w
bGF5LWJ1dHRvbjsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKK3ZpZGVvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWJ1dHRvbi1ncm91cC1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLWJ1dHRvbi1ncm91cC1jb250YWluZXIgeworICAgIGRpc3BsYXk6IG5vbmU7CiB9
CiAKLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNvbnRhaW5lciwgdmlk
ZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyIHsKK3ZpZGVvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1kaXNwbGF5LWNvbnRhaW5lciwg
YXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lLWRpc3BsYXktY29u
dGFpbmVyIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy10aW1lLWRpc3BsYXktY29udGFpbmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy10aW1lLWRpc3BsYXktY29udGFpbmVyIHsKICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1l
ZGlhLWNvbnRyb2xzLWJhY2tncm91bmQ7CiAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICAg
LXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgIC13ZWJraXQtYm94LWFsaWduOiBj
ZW50ZXI7Ci0gICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOworICAgIC13ZWJraXQtYm94LXBhY2s6
IGp1c3RpZnk7CisgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiByZ2IoMCwgMCwgMCk7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxz
Y3JlZW4tcGxheS1idXR0b24sIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3Jl
ZW4tcGxheS1idXR0b24geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1wbGF5LWJ1dHRvbiB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1wbGF5LWJ1dHRv
bjsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKK30KKworYXVkaW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZS1jb250YWluZXIsIHZpZGVvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUtY29udGFpbmVyIHsKKyAgICBkaXNwbGF5
OiBub25lOworfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZS1jb250
YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNvbnRhaW5lciB7
CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1jb250cm9scy1iYWNrZ3JvdW5kOworICAg
IGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7
CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0cmV0Y2g7CisgICAgLXdlYmtpdC1ib3gtcGFjazog
Y2VudGVyOwogICAgIC13ZWJraXQtYm94LWZsZXg6IDE7Ci0gICAgLXdlYmtpdC11c2VyLXNlbGVj
dDogbm9uZTsKICAgICBoZWlnaHQ6IGF1dG87CisgICAgd2lkdGg6IDEwMCU7CisgICAgYmFja2dy
b3VuZC1jb2xvcjogcmdiKDAsIDAsIDApOworfQorCithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1mdWxsc2NyZWVuLWN1cnJlbnQtdGltZS1kaXNwbGF5LCB2aWRlbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1mdWxsc2NyZWVuLWN1cnJlbnQtdGltZS1kaXNwbGF5IHsKKyAgICBkaXNwbGF5
OiBub25lOwogfQogCiBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUt
ZGlzcGxheSwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtY3VycmVudC10aW1lLWRpc3Bs
YXkgewpAQCAtNzQsMTkgKzEwMiwyNyBAQCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1j
dXJyZW50LXRpbWUtZGlzcGxheSwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbAogICAgIC13
ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAg
IC13ZWJraXQtYm94LWZsZXg6IDA7Ci0gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKLSAg
ICBjb2xvcjogd2hpdGU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDAsIDApOworICAg
IGNvbG9yOiAjZmFmYWZhOworfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxs
c2NyZWVuLXRpbWUtcmVtYWluaW5nLWRpc3BsYXksIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLWZ1bGxzY3JlZW4tdGltZS1yZW1haW5pbmctZGlzcGxheSB7CisgICAgZGlzcGxheTogbm9u
ZTsKIH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1yZW1haW5pbmctZGlz
cGxheSwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1yZW1haW5pbmctZGlzcGxh
eSB7Cit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmluZy1kaXNwbGF5
LCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmluZy1kaXNwbGF5IHsK
ICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLXRpbWUtcmVtYWluaW5nLWRpc3BsYXk7CiAg
ICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9u
dGFsOwogICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAgLXdlYmtpdC1ib3gtcGFj
azogZW5kOwogICAgIC13ZWJraXQtYm94LWZsZXg6IDA7Ci0gICAgLXdlYmtpdC11c2VyLXNlbGVj
dDogbm9uZTsKLSAgICBjb2xvcjogd2hpdGU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAs
IDAsIDApOworICAgIGNvbG9yOiAjZmFmYWZhOworfQorCithdWRpbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1mdWxsc2NyZWVuLXRpbWVsaW5lLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1mdWxsc2NyZWVuLXRpbWVsaW5lIHsKKyAgICBkaXNwbGF5OiBub25lOwogfQogCiBhdWRpbzo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZSwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtdGltZWxpbmUgewpAQCAtOTUsNDEgKzEzMSw2MyBAQCBhdWRpbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy10aW1lbGluZSwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxp
bmUgewogICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiB9CiAKLWF1ZGlvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1mdWxsc2NyZWVuLWJ1dHRvbiB7Ci0gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1mdWxs
c2NyZWVuLWJ1dHRvbjsKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4t
ZnVsbHNjcmVlbi1idXR0b24sIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3Jl
ZW4tZnVsbHNjcmVlbi1idXR0b24geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uIHsKKyAgICAtd2Via2l0LWFw
cGVhcmFuY2U6IG1lZGlhLWVudGVyLWZ1bGxzY3JlZW4tYnV0dG9uOwogICAgIGRpc3BsYXk6IC13
ZWJraXQtYm94OwogfQogCi1hdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1tdXRlLWJ1dHRv
biwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0ZS1idXR0b24geworYXVkaW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24geworICAgIGRpc3BsYXk6IG5v
bmU7Cit9CisKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWF1ZGlvLW11dGUtYnV0dG9u
IHsKICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLW11dGUtYnV0dG9uOwogICAgIGRpc3Bs
YXk6IC13ZWJraXQtYm94OwogfQogCi1hdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1
bWUtc2xpZGVyLWNvbnRhaW5lciwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1l
LXNsaWRlci1jb250YWluZXIgewordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtYXVkaW8t
bXV0ZS1idXR0b24geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK2F1ZGlvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXItY29udGFpbmVyIHsKICAgICAtd2Via2l0LWFwcGVh
cmFuY2U6IG1lZGlhLXZvbHVtZS1zbGlkZXItY29udGFpbmVyOwogICAgIGRpc3BsYXk6IC13ZWJr
aXQtYm94OwotICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKKyAgICAtd2Via2l0
LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAg
ICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAg
LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
bGVmdDogMHB4OwogICAgIHJpZ2h0OiAwcHg7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgw
LCAwLCAwLCAwLjYpOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLDAsMCk7CiB9CiAKLWF1
ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXIsIHZpZGVvOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXIgewotICAgIC13ZWJraXQtYXBwZWFyYW5jZTog
bWVkaWEtdm9sdW1lLXNsaWRlcjsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKLSAgICAtd2Vi
a2l0LWJveC1mbGV4OiAxOwordmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNs
aWRlci1jb250YWluZXIgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK2F1ZGlvOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXIgeworICAgICAtd2Via2l0LWFwcGVhcmFuY2U6
IG1lZGlhLXZvbHVtZS1zbGlkZXI7CisgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgICAt
d2Via2l0LWJveC1mbGV4OiAxOworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAz
JTsKKyAgICByaWdodDogMyU7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZv
bHVtZS1zbGlkZXIgeworICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKLWF1ZGlvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXNlZWstYmFjay1idXR0b24sIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXNlZWstYmFjay1idXR0b24gewotICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtc2Vl
ay1iYWNrLWJ1dHRvbjsKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4t
YnV0dG9uLWRpdmlkZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4t
YnV0dG9uLWRpdmlkZXIgewogICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKLWF1ZGlvOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXNlZWstZm9yd2FyZC1idXR0b24sIHZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXNlZWstZm9yd2FyZC1idXR0b24gewotICAgIC13ZWJraXQtYXBwZWFyYW5jZTog
bWVkaWEtc2Vlay1mb3J3YXJkLWJ1dHRvbjsKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LWZ1bGxzY3JlZW4tYnV0dG9uLWNvbnRhaW5lciwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtcGxheS1idXR0b24tY29udGFpbmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1m
dWxsc2NyZWVuLWJ1dHRvbi1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXBsYXktYnV0dG9uLWNvbnRhaW5lciB7CiAgICAgZGlzcGxheTogbm9uZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzQmxhY2tCZXJyeUZ1bGxzY3JlZW4u
Y3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHNCbGFja0JlcnJ5RnVsbHNjcmVl
bi5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTE1NGM5NDBmNjNjNTY0YWQzMGEzZGRlMWNmMTlmMmJjYWU5YTg5
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeUZ1bGxzY3JlZW4uY3NzCkBAIC0wLDAgKzEsMTg4IEBACisvKgorICogQmxhY2tCZXJy
eSBzcGVjaWZpYyBvdmVycmlkZXMgZm9yIEhUTUw1IG1lZGlhIGVsZW1lbnRzLgorICoKKyAqIENv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisgLyogQmxhY2tCZXJyeSBmdWxsc2NyZWVuIHZpZGVvIGNvbnRyb2xzLiAq
LworCitib2R5Oi13ZWJraXQtZnVsbC1wYWdlLW1lZGlhIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiByZ2IoMCwgMCwgMCk7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZW1iZWRkZWQtcGFuZWwgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisK
K3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwg
eworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVy
dGljYWw7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0cmV0Y2g7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIGJvdHRvbTogMHB4OworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDog
YXV0bzsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM4LCAzOCwgMzgsIDAuNSk7Cit9CisK
K3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtYnV0dG9u
LWdyb3VwLWNvbnRhaW5lciB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1jb250cm9s
cy1iYWNrZ3JvdW5kOworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIC13ZWJraXQtYm94
LW9yaWVudDogaG9yaXpvbnRhbDsKKyAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOworICAg
IC13ZWJraXQtYm94LXBhY2s6IGp1c3RpZnk7CisgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKKyAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVs
bC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lLWRpc3BsYXkt
Y29udGFpbmVyIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLWNvbnRyb2xzLWJhY2tn
cm91bmQ7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50
OiBob3Jpem9udGFsOworICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CisgICAgLXdlYmtp
dC1ib3gtcGFjazoganVzdGlmeTsKKyAgICAtd2Via2l0LWJveC1mbGV4OiAxOworICAgIGJhY2tn
cm91bmQtY29sb3I6IHJnYmEoMzgsIDM4LCAzOCwgMC41KTsKK30KKwordmlkZW86LXdlYmtpdC1m
dWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLWRpc3BsYXktY29udGFpbmVy
IHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tcGxheS1idXR0b24geworICAgIC13ZWJr
aXQtYXBwZWFyYW5jZTogbWVkaWEtcGxheS1idXR0b247CisgICAgZGlzcGxheTogLXdlYmtpdC1i
b3g7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtcGxheS1idXR0b24geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQt
ZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZS1j
b250YWluZXIgeworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtY29udHJvbHMtYmFja2dy
b3VuZDsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0LWJveC1vcmllbnQ6
IHZlcnRpY2FsOworICAgIC13ZWJraXQtYm94LWFsaWduOiBzdHJldGNoOworICAgIC13ZWJraXQt
Ym94LXBhY2s6IGNlbnRlcjsKKyAgICAtd2Via2l0LWJveC1mbGV4OiAxOworICAgIGhlaWdodDog
YXV0bzsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM4LCAz
OCwgMzgsIDAuNSk7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiBub25lOworfQor
Cit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxz
Y3JlZW4tY3VycmVudC10aW1lLWRpc3BsYXkgeworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVk
aWEtY3VycmVudC10aW1lLWRpc3BsYXk7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CisgICAg
LXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOworICAgIC13ZWJraXQtYm94LWFsaWduOiBj
ZW50ZXI7CisgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOworICAgIC13ZWJraXQtYm94LWZsZXg6
IDA7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzOCwgMzgsIDM4LCAwLjUpOworICAgIGNv
bG9yOiAjZmFmYWZhOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWN1cnJlbnQtdGltZS1kaXNwbGF5IHsKKyAgICBkaXNwbGF5OiBub25lOwor
fQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1
bGxzY3JlZW4tdGltZS1yZW1haW5pbmctZGlzcGxheSB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNl
OiBtZWRpYS10aW1lLXJlbWFpbmluZy1kaXNwbGF5OworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94
OworICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKKyAgICAtd2Via2l0LWJveC1h
bGlnbjogY2VudGVyOworICAgIC13ZWJraXQtYm94LXBhY2s6IGVuZDsKKyAgICAtd2Via2l0LWJv
eC1mbGV4OiAwOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzgsIDM4LCAzOCwgMC41KTsK
KyAgICBjb2xvcjogI2ZhZmFmYTsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmluZy1kaXNwbGF5IHsKKyAgICBkaXNwbGF5
OiBub25lOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUgeworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVk
aWEtc2xpZGVyOworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIC13ZWJraXQtYm94LWZs
ZXg6IDE7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtdGltZWxpbmUgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQt
ZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1mdWxsc2NyZWVu
LWJ1dHRvbiB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1leGl0LWZ1bGxzY3JlZW4t
YnV0dG9uOworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworfQorCit2aWRlbzotd2Via2l0LWZ1
bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uIHsKKyAg
ICBkaXNwbGF5OiBub25lOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLWF1ZGlvLW11dGUtYnV0dG9uIHsKKyAgICBkaXNwbGF5OiBub25lOwor
fQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZv
bHVtZS1zbGlkZXItY29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCit2aWRlbzot
d2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXIg
eworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24tZGl2aWRlciB7CisgICAgLXdl
YmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1yZXdpbmQtYnV0dG9uOworICAgIGRpc3BsYXk6IC13ZWJr
aXQtYm94OworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uLWNvbnRhaW5lciwgdmlkZW86LXdlYmtpdC1mdWxsLXNj
cmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbi1jb250YWluZXIgeworICAg
IC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtY29udHJvbHMtYmFja2dyb3VuZDsKKyAgICBkaXNw
bGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7Cisg
ICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKKyAgICAtd2Via2l0LWJveC1mbGV4OiAxOwor
ICAgIG1pbi13aWR0aDogMTAwJTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7
Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
ZnVsbHNjcmVlbi1idXR0b24tY29udGFpbmVyIHsKKyAgICAtd2Via2l0LWJveC1wYWNrOiBzdGFy
dDsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1wbGF5LWJ1dHRvbi1jb250YWluZXIgeworICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsK
K30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1w
bGFjZWhvbGRlciB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1jb250cm9scy1iYWNr
Z3JvdW5kOworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIC13ZWJraXQtYm94LWZsZXg6
IDE7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDAsIDApOworICAgIG1pbi13aWR0aDog
MTAwJTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNCbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjBmNzA3YzMwOGEzNmE5YzcyNTNhMWRi
ZTU0ODcxMDE1ZDJkZmE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3BwCkBAIC0wLDAgKzEsMTExOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBN
b3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU8pCisjaW5jbHVkZSAiTWVkaWFDb250cm9sc0JsYWNr
QmVycnkuaCIKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5o
IgorI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1
ZGUgIk1lZGlhQ29udHJvbEVsZW1lbnRzLmgiCisjaW5jbHVkZSAiTW91c2VFdmVudC5oIgorI2lu
Y2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaCIK
KyNpbmNsdWRlICJSZW5kZXJTbGlkZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgorI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiVGV4dC5oIgorCisjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQorI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgorI2VuZGlmCisKK3VzaW5nIG5hbWVz
cGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKKworc3RhdGljIGNvbnN0IGRvdWJsZSB0aW1lV2l0aG91dE1vdXNlTW92ZW1lbnRCZWZv
cmVIaWRpbmdDb250cm9scyA9IDM7CisKK2lubGluZSBNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENv
bnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudChE
b2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50
LCBNZWRpYUNvbnRyb2xzUGFuZWwpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sQnV0
dG9uR3JvdXBDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5l
ckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVmUHRyPE1lZGlh
Q29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudD4gZWxlbWVudCA9IGFkb3B0UmVmKG5l
dyBNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQoZG9jdW1lbnQpKTsKKyAg
ICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVk
aWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNv
bnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtYnV0dG9uLWdyb3VwLWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK2lubGluZSBNZWRp
YUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVEaXNw
bGF5Q29udGFpbmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRy
b2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwpCit7Cit9CisKK1Bhc3NS
ZWZQdHI8TWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRy
b2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQp
Cit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudD4g
ZWxlbWVudCA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVs
ZW1lbnQoZG9jdW1lbnQpKTsKKyAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50
OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1kaXNwbGF5LWNvbnRh
aW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4g
aWQ7Cit9CisKK01lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjpNZWRpYUNvbnRyb2xF
bWJlZGRlZFBhbmVsRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRy
b2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwpCisgICAgLCBtX2NhbkJl
RHJhZ2dlZChmYWxzZSkKKyAgICAsIG1faXNCZWluZ0RyYWdnZWQoZmFsc2UpCisgICAgLCBtX2lz
RGlzcGxheWVkKGZhbHNlKQorICAgICwgbV9vcGFxdWUodHJ1ZSkKKyAgICAsIG1fdHJhbnNpdGlv
blRpbWVyKHRoaXMsICZNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6dHJhbnNpdGlv
blRpbWVyRmlyZWQpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRW1iZWRkZWRQYW5l
bEVsZW1lbnQ+IE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRW1i
ZWRkZWRQYW5lbEVsZW1lbnQoZG9jdW1lbnQpKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBN
ZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWVtYmVkZGVkLXBhbmVsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xFbWJlZGRl
ZFBhbmVsRWxlbWVudDo6c3RhcnREcmFnKGNvbnN0IExheW91dFBvaW50JiBldmVudExvY2F0aW9u
KQoreworICAgIGlmICghbV9jYW5CZURyYWdnZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChtX2lzQmVpbmdEcmFnZ2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5k
ZXJlci0+aXNCb3goKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRnJhbWUqIGZyYW1lID0gZG9j
dW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2xhc3REcmFnRXZlbnRMb2NhdGlvbiA9IGV2ZW50TG9jYXRpb247CisKKyAgICBmcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSh0aGlzKTsKKworICAg
IG1faXNCZWluZ0RyYWdnZWQgPSB0cnVlOworfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVk
UGFuZWxFbGVtZW50Ojpjb250aW51ZURyYWcoY29uc3QgTGF5b3V0UG9pbnQmIGV2ZW50TG9jYXRp
b24pCit7CisgICAgaWYgKCFtX2lzQmVpbmdEcmFnZ2VkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBMYXlvdXRTaXplIGRpc3RhbmNlRHJhZ2dlZCA9IGV2ZW50TG9jYXRpb24gLSBtX2xhc3REcmFn
RXZlbnRMb2NhdGlvbjsKKyAgICBtX2N1bXVsYXRpdmVEcmFnT2Zmc2V0Lm1vdmUoZGlzdGFuY2VE
cmFnZ2VkKTsKKyAgICBtX2xhc3REcmFnRXZlbnRMb2NhdGlvbiA9IGV2ZW50TG9jYXRpb247Cisg
ICAgc2V0UG9zaXRpb24obV9jdW11bGF0aXZlRHJhZ09mZnNldCk7Cit9CisKK3ZvaWQgTWVkaWFD
b250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OmVuZERyYWcoKQoreworICAgIGlmICghbV9pc0Jl
aW5nRHJhZ2dlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc0JlaW5nRHJhZ2dlZCA9IGZh
bHNlOworCisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBpZiAo
IWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNl
dENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xFbWJl
ZGRlZFBhbmVsRWxlbWVudDo6c3RhcnRUaW1lcigpCit7CisgICAgc3RvcFRpbWVyKCk7CisKKyAg
ICAvLyBUaGUgdGltZXIgaXMgcmVxdWlyZWQgdG8gc2V0IHRoZSBwcm9wZXJ0eSBkaXNwbGF5Oidu
b25lJyBvbiB0aGUgcGFuZWwsCisgICAgLy8gc3VjaCB0aGF0IGNhcHRpb25zIGFyZSBjb3JyZWN0
bHkgZGlzcGxheWVkIGF0IHRoZSBib3R0b20gb2YgdGhlIHZpZGVvCisgICAgLy8gYXQgdGhlIGVu
ZCBvZiB0aGUgZmFkZW91dCB0cmFuc2l0aW9uLgorICAgIGRvdWJsZSBkdXJhdGlvbiA9IGRvY3Vt
ZW50KCktPnBhZ2UoKSA/IGRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+bWVkaWFDb250cm9s
c0ZhZGVPdXREdXJhdGlvbigpIDogMDsKKyAgICBtX3RyYW5zaXRpb25UaW1lci5zdGFydE9uZVNo
b3QoZHVyYXRpb24pOworfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50
OjpzdG9wVGltZXIoKQoreworICAgIGlmIChtX3RyYW5zaXRpb25UaW1lci5pc0FjdGl2ZSgpKQor
ICAgICAgICBtX3RyYW5zaXRpb25UaW1lci5zdG9wKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9s
RW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnRyYW5zaXRpb25UaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29u
dHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50PiopCit7CisgICAgaWYgKCFtX29wYXF1ZSkKKyAgICAg
ICAgaGlkZSgpOworCisgICAgc3RvcFRpbWVyKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRW1i
ZWRkZWRQYW5lbEVsZW1lbnQ6OnNldFBvc2l0aW9uKGNvbnN0IExheW91dFBvaW50JiBwb3NpdGlv
bikKK3sKKyAgICBkb3VibGUgbGVmdCA9IHBvc2l0aW9uLngoKTsKKyAgICBkb3VibGUgdG9wID0g
cG9zaXRpb24ueSgpOworCisgICAgLy8gU2V0IHRoZSBsZWZ0IGFuZCB0b3AgdG8gY29udHJvbCB0
aGUgcGFuZWwncyBwb3NpdGlvbjsgdGhpcyBkZXBlbmRzIG9uIGl0IGJlaW5nIGFic29sdXRlIHBv
c2l0aW9uZWQuCisgICAgLy8gU2V0IHRoZSBtYXJnaW4gdG8gemVybyBzaW5jZSB0aGUgcG9zaXRp
b24gcGFzc2VkIGluIHdpbGwgYWxyZWFkeSBpbmNsdWRlIHRoZSBlZmZlY3Qgb2YgdGhlIG1hcmdp
bi4KKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgbGVmdCwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVRvcCwgdG9wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICBzZXRJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgMC4wLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BYKTsKKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWFy
Z2luVG9wLCAwLjAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworCisgICAgRXhjZXB0aW9u
Q29kZSBpZ25vcmVkOworICAgIGNsYXNzTGlzdCgpLT5hZGQoImRyYWdnZWQiLCBpZ25vcmVkKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6cmVzZXRQb3NpdGlv
bigpCit7CisgICAgcmVtb3ZlSW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQpOwor
ICAgIHJlbW92ZUlubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3ApOworICAgIHJlbW92
ZUlubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0KTsKKyAgICByZW1vdmVJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luVG9wKTsKKworICAgIEV4Y2VwdGlv
bkNvZGUgaWdub3JlZDsKKyAgICBjbGFzc0xpc3QoKS0+cmVtb3ZlKCJkcmFnZ2VkIiwgaWdub3Jl
ZCk7CisKKyAgICBtX2N1bXVsYXRpdmVEcmFnT2Zmc2V0LnNldFgoMCk7CisgICAgbV9jdW11bGF0
aXZlRHJhZ09mZnNldC5zZXRZKDApOworfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFu
ZWxFbGVtZW50OjptYWtlT3BhcXVlKCkKK3sKKyAgICBpZiAobV9vcGFxdWUpCisgICAgICAgIHJl
dHVybjsKKworICAgIGRvdWJsZSBkdXJhdGlvbiA9IGRvY3VtZW50KCktPnBhZ2UoKSA/IGRvY3Vt
ZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+bWVkaWFDb250cm9sc0ZhZGVJbkR1cmF0aW9uKCkgOiAw
OworCisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRp
b25Qcm9wZXJ0eSwgQ1NTUHJvcGVydHlPcGFjaXR5KTsKKyAgICBzZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLCBkdXJhdGlvbiwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19TKTsKKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5T3BhY2l0eSwgMS4wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisKKyAgICBt
X29wYXF1ZSA9IHRydWU7CisKKyAgICBpZiAobV9pc0Rpc3BsYXllZCkKKyAgICAgICAgc2hvdygp
OworfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjptYWtlVHJhbnNw
YXJlbnQoKQoreworICAgIGlmICghbV9vcGFxdWUpCisgICAgICAgIHJldHVybjsKKworICAgIGRv
dWJsZSBkdXJhdGlvbiA9IGRvY3VtZW50KCktPnBhZ2UoKSA/IGRvY3VtZW50KCktPnBhZ2UoKS0+
dGhlbWUoKS0+bWVkaWFDb250cm9sc0ZhZGVPdXREdXJhdGlvbigpIDogMDsKKworICAgIHNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHksIENT
U1Byb3BlcnR5T3BhY2l0eSk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiwgZHVyYXRpb24sIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUyk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHksIDAu
MCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworCisgICAgbV9vcGFxdWUgPSBmYWxz
ZTsKKyAgICBzdGFydFRpbWVyKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5l
bEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQoreworICAgIE1lZGlh
Q29udHJvbERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworCisgICAgaWYg
KGV2ZW50LT5pc01vdXNlRXZlbnQoKSkgeworICAgICAgICBMYXlvdXRQb2ludCBsb2NhdGlvbiA9
IHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCktPmFic29sdXRlTG9jYXRpb24oKTsKKyAg
ICAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYm
IGV2ZW50LT50YXJnZXQoKSA9PSB0aGlzKSB7CisgICAgICAgICAgICBzdGFydERyYWcobG9jYXRp
b24pOworICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgIH0g
ZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQgJiYg
bV9pc0JlaW5nRHJhZ2dlZCkKKyAgICAgICAgICAgIGNvbnRpbnVlRHJhZyhsb2NhdGlvbik7Cisg
ICAgICAgIGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVu
dCAmJiBtX2lzQmVpbmdEcmFnZ2VkKSB7CisgICAgICAgICAgICBjb250aW51ZURyYWcobG9jYXRp
b24pOworICAgICAgICAgICAgZW5kRHJhZygpOworICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1
bHRIYW5kbGVkKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRW1i
ZWRkZWRQYW5lbEVsZW1lbnQ6OnNldENhbkJlRHJhZ2dlZChib29sIGNhbkJlRHJhZ2dlZCkKK3sK
KyAgICBpZiAobV9jYW5CZURyYWdnZWQgPT0gY2FuQmVEcmFnZ2VkKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2NhbkJlRHJhZ2dlZCA9IGNhbkJlRHJhZ2dlZDsKKworICAgIGlmICghY2FuQmVE
cmFnZ2VkKQorICAgICAgICBlbmREcmFnKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRW1iZWRk
ZWRQYW5lbEVsZW1lbnQ6OnNldElzRGlzcGxheWVkKGJvb2wgaXNEaXNwbGF5ZWQpCit7CisgICAg
bV9pc0Rpc3BsYXllZCA9IGlzRGlzcGxheWVkOworfQorCitpbmxpbmUgTWVkaWFDb250cm9sRnVs
bHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVl
blRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBN
ZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwpCit7Cit9
CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVy
RWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVu
dDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBSZWZQdHI8TWVkaWFDb250cm9s
RnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudD4gZWxlbWVudCA9IGFkb3B0UmVm
KG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50KGRv
Y3VtZW50KSk7CisgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgpOworfQorCitjb25zdCBBdG9t
aWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1l
bnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUt
ZGlzcGxheS1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgcmV0dXJuIGlkOworfQorCitpbmxpbmUgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRv
bkNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJF
bGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1lbnQo
ZG9jdW1lbnQsIE1lZGlhQ29udHJvbHNQYW5lbCkKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNj
cmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7
CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50
PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250
YWluZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgpOwor
fQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250
YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNj
cmVlbi1idXR0b24tY29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHJldHVybiBpZDsKK30KKworaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5C
dXR0b25EaXZpZGVyRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJF
bGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1lbnQo
ZG9jdW1lbnQsIE1lZGlhUmV3aW5kQnV0dG9uKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVl
bkJ1dHRvbkRpdmlkZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAg
IFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQ+IGVsZW1l
bnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVt
ZW50KGRvY3VtZW50KSk7CisgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgpOworfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVu
dDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9u
LWRpdmlkZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0
dXJuIGlkOworfQorCitpbmxpbmUgTWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1l
bnQ6Ok1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50KERvY3VtZW50KiBkb2N1
bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhQ29udHJv
bHNQYW5lbCkKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFp
bmVyRWxlbWVudD4gTWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0
ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFBsYXlCdXR0
b25Db250YWluZXJFbGVtZW50PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFBs
YXlCdXR0b25Db250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgcmV0dXJuIGVsZW1lbnQu
cmVsZWFzZSgpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFBsYXlCdXR0
b25Db250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMt
cGxheS1idXR0b24tY29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHJldHVybiBpZDsKK30KKworaW5saW5lIE1lZGlhQ29udHJvbFBsYWNlaG9sZGVy
RWxlbWVudDo6TWVkaWFDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50KERvY3VtZW50KiBkb2N1bWVu
dCkKKyAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhQ29udHJvbHNQ
YW5lbCkKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ+
IE1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCkKK3sKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50PiBlbGVtZW50
ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudChkb2N1bWVudCkp
OworICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5n
JiBNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1t
ZWRpYS1jb250cm9scy1wbGFjZWhvbGRlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK2lubGluZSBNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuUGxheUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxl
bWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQo
ZG9jdW1lbnQsIE1lZGlhUGxheUJ1dHRvbikKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5
QnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBSZWZQdHI8
TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJl
ZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50KGRvY3VtZW50KSk7
CisgICAgYnV0dG9uLT5jcmVhdGVTaGFkb3dTdWJ0cmVlKCk7CisgICAgYnV0dG9uLT5zZXRUeXBl
KCJidXR0b24iKTsKKyAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKK30KKwordm9pZCBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2ZW50KQoreworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5j
bGlja0V2ZW50KSB7CisgICAgICAgIGlmIChtZWRpYUNvbnRyb2xsZXIoKS0+Y2FuUGxheSgpKQor
ICAgICAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnBsYXkoKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnBhdXNlKCk7CisgICAgICAgIHVwZGF0ZURpc3Bs
YXlUeXBlKCk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgIH0KKyAg
ICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKK30KKwordm9p
ZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQ6OnVwZGF0ZURpc3BsYXlU
eXBlKCkKK3sKKyAgICBzZXREaXNwbGF5VHlwZShtZWRpYUNvbnRyb2xsZXIoKS0+Y2FuUGxheSgp
ID8gTWVkaWFQbGF5QnV0dG9uIDogTWVkaWFQYXVzZUJ1dHRvbik7Cit9CisKK2NvbnN0IEF0b21p
Y1N0cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50OjpzaGFkb3dQ
c2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1wbGF5LWJ1dHRvbiIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisK
K2lubGluZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6Ok1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9j
dW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhRXhp
dEZ1bGxzY3JlZW5CdXR0b24pCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNj
cmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNj
cmVlbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVm
UHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4gYnV0dG9u
ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxl
bWVudChkb2N1bWVudCkpOworICAgIGJ1dHRvbi0+Y3JlYXRlU2hhZG93U3VidHJlZSgpOworICAg
IGJ1dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7CisgICAgYnV0dG9uLT5oaWRlKCk7CisgICAgcmV0
dXJuIGJ1dHRvbi5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1
bGxzY3JlZW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkK
K3sKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewor
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAgICAgLy8gT25seSB1c2UgdGhlIG5ldyBm
dWxsIHNjcmVlbiBBUEkgaWYgdGhlIGZ1bGxTY3JlZW5FbmFibGVkIHNldHRpbmcgaGFzIAorICAg
ICAgICAvLyBiZWVuIGV4cGxpY2l0bHkgZW5hYmxlZC4gT3RoZXJ3aXNlLCB1c2UgdGhlIG9sZCBm
dWxsc2NyZWVuIEFQSS4gVGhpcworICAgICAgICAvLyBhbGxvd3MgYXBwcyB3aGljaCBlbWJlZCBh
IFdlYlZpZXcgdG8gcmV0YWluIHRoZSBleGlzdGluZyBmdWxsIHNjcmVlbgorICAgICAgICAvLyB2
aWRlbyBpbXBsZW1lbnRhdGlvbiB3aXRob3V0IHJlcXVpcmluZyB0aGVtIHRvIGltcGxlbWVudCB0
aGVpciBvd24gZnVsbCAKKyAgICAgICAgLy8gc2NyZWVuIGJlaGF2aW9yLgorICAgICAgICBpZiAo
ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSAmJiBkb2N1bWVudCgpLT5zZXR0aW5ncygpLT5mdWxsU2Ny
ZWVuRW5hYmxlZCgpKSB7CisgICAgICAgICAgICBpZiAoZG9jdW1lbnQoKS0+d2Via2l0SXNGdWxs
U2NyZWVuKCkgJiYgZG9jdW1lbnQoKS0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkg
PT0gdG9QYXJlbnRNZWRpYUVsZW1lbnQodGhpcykpCisgICAgICAgICAgICAgICAgZG9jdW1lbnQo
KS0+d2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGRvY3VtZW50KCktPnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudCh0b1BhcmVudE1l
ZGlhRWxlbWVudCh0aGlzKSwgMCwgRG9jdW1lbnQ6OkV4ZW1wdElGcmFtZUFsbG93RnVsbFNjcmVl
blJlcXVpcmVtZW50KTsKKyAgICAgICAgfSBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIG1lZGlh
Q29udHJvbGxlcigpLT5lbnRlckZ1bGxzY3JlZW4oKTsKKyAgICAgICAgZXZlbnQtPnNldERlZmF1
bHRIYW5kbGVkKCk7CisgICAgfQorICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIoZXZlbnQpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlh
LWNvbnRyb2xzLWZ1bGxzY3JlZW4tZnVsbHNjcmVlbi1idXR0b24iLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlkOworfQorCit2b2lkIE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6c2V0SXNGdWxsc2NyZWVuKGJv
b2wgaXNGdWxsc2NyZWVuKQoreworICAgIHNldERpc3BsYXlUeXBlKE1lZGlhRXhpdEZ1bGxzY3Jl
ZW5CdXR0b24pOworfQorCitpbmxpbmUgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29u
dGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyRWxl
bWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRv
Y3VtZW50LCBNZWRpYVRpbWVsaW5lQ29udGFpbmVyKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1l
bnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5l
ckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlblRp
bWVsaW5lQ29udGFpbmVyRWxlbWVudChkb2N1bWVudCkpOworICAgIGVsZW1lbnQtPmhpZGUoKTsK
KyAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYg
TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNl
dWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBp
ZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUtY29udGFpbmVy
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsK
K30KKworTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6TWVkaWFDb250cm9s
RnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJv
bHMqIGNvbnRyb2xzKQorICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50LCBN
ZWRpYVNsaWRlcikKKyAgICAsIG1fY29udHJvbHMoY29udHJvbHMpCit7Cit9CisKK1Bhc3NSZWZQ
dHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudD4gTWVkaWFDb250cm9sRnVs
bHNjcmVlblRpbWVsaW5lRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFD
b250cm9scyogY29udHJvbHMpCit7CisgICAgQVNTRVJUKGNvbnRyb2xzKTsKKworICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50PiB0aW1lbGluZSA9IGFkb3B0
UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50KGRvY3VtZW50LCBj
b250cm9scykpOworICAgIHRpbWVsaW5lLT5jcmVhdGVTaGFkb3dTdWJ0cmVlKCk7CisgICAgdGlt
ZWxpbmUtPnNldFR5cGUoInJhbmdlIik7CisgICAgdGltZWxpbmUtPnNldEF0dHJpYnV0ZShwcmVj
aXNpb25BdHRyLCAiZmxvYXQiKTsKKyAgICByZXR1cm4gdGltZWxpbmUucmVsZWFzZSgpOworfQor
Cit2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqIGV2ZW50KQoreworICAgIC8vIExlZnQgYnV0dG9uIGlzIDAuIFJlamVj
dHMgbW91c2UgZXZlbnRzIG5vdCBmcm9tIGxlZnQgYnV0dG9uLgorICAgIGlmIChldmVudC0+aXNN
b3VzZUV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+YnV0dG9uKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmICghYXR0YWNoZWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50
KQorICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+YmVnaW5TY3J1YmJpbmcoKTsKKworICAgIGlm
IChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpCisgICAgICAgIG1l
ZGlhQ29udHJvbGxlcigpLT5lbmRTY3J1YmJpbmcoKTsKKworICAgIE1lZGlhQ29udHJvbElucHV0
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CisKKyAgICBpZiAoZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBl
dmVudE5hbWVzKCkubW91c2VvdXRFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS5tb3VzZW1vdmVFdmVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQgdGltZSA9IG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQodmFsdWUoKS50b0RvdWJsZSgpKTsKKyAgICBpZiAoZXZlbnQt
PnR5cGUoKSA9PSBldmVudE5hbWVzKCkuaW5wdXRFdmVudCAmJiB0aW1lICE9IG1lZGlhQ29udHJv
bGxlcigpLT5jdXJyZW50VGltZSgpKSB7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAg
ICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRDdXJyZW50VGltZSh0aW1lLCBlYyk7CisgICAgfQor
CisgICAgUmVuZGVyU2xpZGVyKiBzbGlkZXIgPSB0b1JlbmRlclNsaWRlcihyZW5kZXJlcigpKTsK
KyAgICBpZiAoc2xpZGVyICYmIHNsaWRlci0+aW5EcmFnTW9kZSgpKQorICAgICAgICBtX2NvbnRy
b2xzLT51cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKTsKK30KKworYm9vbCBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVGltZWxpbmVFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygp
Cit7CisgICAgaWYgKCFhdHRhY2hlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVt
ZW50OjpzZXRQb3NpdGlvbihmbG9hdCBjdXJyZW50VGltZSkKK3sKKyAgICBzZXRWYWx1ZShTdHJp
bmc6Om51bWJlcihjdXJyZW50VGltZSkpOworfQorCit2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5UaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKGZsb2F0IGR1cmF0aW9uKQoreworICAgIHNl
dEF0dHJpYnV0ZShtYXhBdHRyLCBTdHJpbmc6Om51bWJlcihpc2Zpbml0ZShkdXJhdGlvbikgPyBk
dXJhdGlvbiA6IDApKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVGltZWxpbmVFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJv
bHMtZnVsbHNjcmVlbi10aW1lbGluZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNj
cmVlblRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlblRp
bWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWlu
aW5nRGlzcGxheUVsZW1lbnQoZG9jdW1lbnQpKTsKK30KKworTWVkaWFDb250cm9sRnVsbHNjcmVl
blRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVS
ZW1haW5pbmdEaXNwbGF5RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNv
bnRyb2xUaW1lRGlzcGxheUVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhVGltZVJlbWFpbmluZ0Rpc3Bs
YXkpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlblRp
bWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNv
bnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1yZW1haW5pbmctZGlzcGxheSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK1Bhc3NSZWZQdHI8
TWVkaWFDb250cm9sRnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ+IE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNj
cmVlbkN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQoZG9jdW1lbnQpKTsKK30KKworTWVkaWFDb250
cm9sRnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6
IE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChkb2N1bWVudCwgTWVkaWFDdXJyZW50VGlt
ZURpc3BsYXkpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRnVsbHNj
cmVlbkN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRp
YS1jb250cm9scy1mdWxsc2NyZWVuLWN1cnJlbnQtdGltZS1kaXNwbGF5IiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKworTWVkaWFDb250
cm9sQXVkaW9NdXRlQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sQXVkaW9NdXRlQnV0dG9uRWxl
bWVudChEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbHMqIGNvbnRyb2xzKQorICAgIDog
TWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhTXV0ZUJ1dHRvbikK
KyAgICAsIG1fY29udHJvbHMoY29udHJvbHMpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250
cm9sQXVkaW9NdXRlQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sQXVkaW9NdXRlQnV0dG9uRWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMp
Cit7CisgICAgQVNTRVJUKGNvbnRyb2xzKTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xBdWRp
b011dGVCdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sQXVk
aW9NdXRlQnV0dG9uRWxlbWVudChkb2N1bWVudCwgY29udHJvbHMpKTsKKyAgICBidXR0b24tPmNy
ZWF0ZVNoYWRvd1N1YnRyZWUoKTsKKyAgICBidXR0b24tPnNldFR5cGUoImJ1dHRvbiIpOworICAg
IHJldHVybiBidXR0b24ucmVsZWFzZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbEF1ZGlvTXV0
ZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQoreworICAg
IGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCkgeworICAg
ICAgICAvLyBXZSBkbyBub3QgbXV0ZSB3aGVuIHRoZSBtZWRpYSBwbGF5ZXIgdm9sdW1lL211dGUg
Y29udHJvbCBpcyB0b3VjaGVkLgorICAgICAgICAvLyBJbnN0ZWFkIHdlIHNob3cvaGlkZSB0aGUg
dm9sdW1lIHNsaWRlci4KKyAgICAgICAgc3RhdGljX2Nhc3Q8TWVkaWFDb250cm9sc0JsYWNrQmVy
cnkqPihtX2NvbnRyb2xzKS0+dG9nZ2xlVm9sdW1lU2xpZGVyKCk7CisgICAgICAgIGV2ZW50LT5z
ZXREZWZhdWx0SGFuZGxlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCkKKyAgICAgICAgbV9jb250
cm9scy0+c2hvd1ZvbHVtZVNsaWRlcigpOworCisgICAgTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworfQorCitjb25zdCBBdG9taWNTdHJp
bmcmIE1lZGlhQ29udHJvbEF1ZGlvTXV0ZUJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkg
Y29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdl
YmtpdC1tZWRpYS1jb250cm9scy1hdWRpby1tdXRlLWJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK01lZGlhQ29udHJvbHNC
bGFja0JlcnJ5OjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeShEb2N1bWVudCogZG9jdW1lbnQpCisg
ICAgOiBNZWRpYUNvbnRyb2xzKGRvY3VtZW50KQorICAgICwgbV9idXR0b25Db250YWluZXIoMCkK
KyAgICAsIG1fdGltZURpc3BsYXlDb250YWluZXIoMCkKKyAgICAsIG1fZnVsbHNjcmVlblRpbWVE
aXNwbGF5Q29udGFpbmVyKDApCisgICAgLCBtX2Z1bGxzY3JlZW5QbGF5QnV0dG9uKDApCisgICAg
LCBtX2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXkoMCkKKyAgICAsIG1fZnVsbHNjcmVlblRp
bWVsaW5lKDApCisgICAgLCBtX3RpbWVSZW1haW5pbmdEaXNwbGF5KDApCisgICAgLCBtX2Z1bGxz
Y3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheSgwKQorICAgICwgbV90aW1lbGluZUNvbnRhaW5lcigw
KQorICAgICwgbV9mdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXIoMCkKKyAgICAsIG1fZnVsbFNj
cmVlbkRpdmlkZXIoMCkKKyAgICAsIG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24oMCkKKyAg
ICAsIG1fbXV0ZUJ1dHRvbigwKQorICAgICwgbV92b2x1bWVTbGlkZXJDb250YWluZXIoMCkKKyAg
ICAsIG1fZW1iZWRkZWRQYW5lbCgwKQorICAgICwgbV9mdWxsU2NyZWVuQnV0dG9uQ29udGFpbmVy
KDApCisgICAgLCBtX3BsYXlCdXR0b25Db250YWluZXIoMCkKKyAgICAsIG1fcGxhY2Vob2xkZXIo
MCkKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzPiBNZWRpYUNvbnRyb2xzOjpjcmVh
dGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIHJldHVybiBNZWRpYUNvbnRyb2xzQmxhY2tC
ZXJyeTo6Y3JlYXRlQ29udHJvbHMoZG9jdW1lbnQpOworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbHNCbGFja0JlcnJ5PiBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6Y3JlYXRlQ29udHJvbHMo
RG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIGlmICghZG9jdW1lbnQtPnBhZ2UoKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sc0JsYWNrQmVycnk+IGNvbnRy
b2xzID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5KGRvY3VtZW50KSk7CisK
KyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxFbGVtZW50PiBwYW5lbCA9IE1lZGlhQ29udHJv
bFBhbmVsRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9s
RW1iZWRkZWRQYW5lbEVsZW1lbnQ+IGVtYmVkUGFuZWwgPSBNZWRpYUNvbnRyb2xFbWJlZGRlZFBh
bmVsRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisK
KyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ+IHBsYXlCdXR0b24gPSBN
ZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250
cm9scy0+bV9wbGF5QnV0dG9uID0gcGxheUJ1dHRvbi5nZXQoKTsKKyAgICBlbWJlZFBhbmVsLT5h
cHBlbmRDaGlsZChwbGF5QnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVDb250
YWluZXJFbGVtZW50PiB0aW1lbGluZUNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFRpbWVsaW5lQ29u
dGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRy
b2xUaW1lbGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQsIGNvbnRyb2xzLmdldCgpKTsKKyAgICBjb250cm9scy0+bV90aW1l
bGluZSA9IHRpbWVsaW5lLmdldCgpOworICAgIHRpbWVsaW5lQ29udGFpbmVyLT5hcHBlbmRDaGls
ZCh0aW1lbGluZS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxl
bWVudD4gdGltZURpc3BsYXlDb250YWluZXIgPSBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRh
aW5lckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9s
Q3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4gY3VycmVudFRpbWVEaXNwbGF5ID0gTWVkaWFDb250
cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250
cm9scy0+bV9jdXJyZW50VGltZURpc3BsYXkgPSBjdXJyZW50VGltZURpc3BsYXkuZ2V0KCk7Cisg
ICAgdGltZURpc3BsYXlDb250YWluZXItPmFwcGVuZENoaWxkKGN1cnJlbnRUaW1lRGlzcGxheS5y
ZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudD4gdGltZVJl
bWFpbmluZ0Rpc3BsYXkgPSBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudCk7CisgICAgY29udHJvbHMtPm1fdGltZVJlbWFpbmluZ0Rpc3BsYXkg
PSB0aW1lUmVtYWluaW5nRGlzcGxheS5nZXQoKTsKKyAgICB0aW1lRGlzcGxheUNvbnRhaW5lci0+
YXBwZW5kQ2hpbGQodGltZVJlbWFpbmluZ0Rpc3BsYXkucmVsZWFzZSgpLCBlYywgdHJ1ZSk7Cisg
ICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnRyb2xzLT5tX3RpbWVEaXNw
bGF5Q29udGFpbmVyID0gdGltZURpc3BsYXlDb250YWluZXIuZ2V0KCk7CisgICAgdGltZWxpbmVD
b250YWluZXItPmFwcGVuZENoaWxkKHRpbWVEaXNwbGF5Q29udGFpbmVyLnJlbGVhc2UoKSwgZWMs
IHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb250cm9scy0+
bV90aW1lbGluZUNvbnRhaW5lciA9IHRpbWVsaW5lQ29udGFpbmVyLmdldCgpOworICAgIGVtYmVk
UGFuZWwtPmFwcGVuZENoaWxkKHRpbWVsaW5lQ29udGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUp
OworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250
cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGZ1bGxTY3JlZW5CdXR0b24gPSBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9s
cy0+bV9mdWxsU2NyZWVuQnV0dG9uID0gZnVsbFNjcmVlbkJ1dHRvbi5nZXQoKTsKKyAgICBlbWJl
ZFBhbmVsLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUp
OworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoZG9jdW1lbnQtPnBh
Z2UoKS0+dGhlbWUoKS0+dXNlc01lZGlhQ29udHJvbFZvbHVtZVNsaWRlcigpKSB7CisgICAgICAg
IC8vIFRoZSBtdXRlIGJ1dHRvbiBhbmQgdGhlIHNsaWRlciBlbGVtZW50IHNob3VsZCBiZSBpbiB0
aGUgc2FtZSBkaXYuCisgICAgICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gdm9sdW1lQ29udHJv
bENvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworCisgICAgICAg
IFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiB2b2x1bWVT
bGlkZXJDb250YWluZXIgPSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQpOworCisgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbFZv
bHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVy
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICAgICAgY29udHJvbHMtPm1fdm9sdW1lU2xp
ZGVyID0gc2xpZGVyLmdldCgpOworICAgICAgICB2b2x1bWVTbGlkZXJDb250YWluZXItPmFwcGVu
ZENoaWxkKHNsaWRlci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICAgICAgaWYgKGVjKQorICAg
ICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY29udHJvbHMtPm1fdm9sdW1lU2xpZGVyQ29u
dGFpbmVyID0gdm9sdW1lU2xpZGVyQ29udGFpbmVyLmdldCgpOworICAgICAgICB2b2x1bWVDb250
cm9sQ29udGFpbmVyLT5hcHBlbmRDaGlsZCh2b2x1bWVTbGlkZXJDb250YWluZXIucmVsZWFzZSgp
LCBlYywgdHJ1ZSk7CisgICAgICAgIGlmIChlYykKKyAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICBSZWZQdHI8TWVkaWFDb250cm9sQXVkaW9NdXRlQnV0dG9uRWxlbWVudD4gbXV0ZUJ1dHRv
biA9IE1lZGlhQ29udHJvbEF1ZGlvTXV0ZUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwg
Y29udHJvbHMuZ2V0KCkpOworICAgICAgICBjb250cm9scy0+bV9tdXRlQnV0dG9uID0gbXV0ZUJ1
dHRvbi5nZXQoKTsKKyAgICAgICAgdm9sdW1lQ29udHJvbENvbnRhaW5lci0+YXBwZW5kQ2hpbGQo
bXV0ZUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICAgICAgaWYgKGVjKQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgZW1iZWRQYW5lbC0+YXBwZW5kQ2hpbGQodm9sdW1l
Q29udHJvbENvbnRhaW5lci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICAgICAgaWYgKGVjKQor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IGZ1bGxzY3JlZW5UaW1lbGluZUNvbnRh
aW5lciA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCk7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVs
aW5lRWxlbWVudD4gZnVsbHNjcmVlblRpbWVsaW5lID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblRp
bWVsaW5lRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBjb250cm9scy5nZXQoKSk7CisgICAgY29u
dHJvbHMtPm1fZnVsbHNjcmVlblRpbWVsaW5lID0gZnVsbHNjcmVlblRpbWVsaW5lLmdldCgpOwor
ICAgIGZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoZnVsbHNjcmVlblRp
bWVsaW5lLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFp
bmVyRWxlbWVudD4gZnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyID0gTWVkaWFDb250cm9s
RnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
KworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxl
bWVudD4gZnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheSA9IE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIGNvbnRy
b2xzLT5tX2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXkgPSBmdWxsc2NyZWVuQ3VycmVudFRp
bWVEaXNwbGF5LmdldCgpOworICAgIGZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lci0+YXBw
ZW5kQ2hpbGQoZnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheS5yZWxlYXNlKCksIGVjLCB0cnVl
KTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ+IGZ1bGxzY3JlZW5UaW1l
UmVtYWluaW5nRGlzcGxheSA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlz
cGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgY29udHJvbHMtPm1fZnVsbHNjcmVl
blRpbWVSZW1haW5pbmdEaXNwbGF5ID0gZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5Lmdl
dCgpOworICAgIGZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoZnVs
bHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5LnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlm
IChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb250cm9scy0+bV9mdWxsc2NyZWVuVGlt
ZURpc3BsYXlDb250YWluZXIgPSBmdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXIuZ2V0KCk7
CisgICAgZnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyLT5hcHBlbmRDaGlsZChmdWxsc2NyZWVu
VGltZURpc3BsYXlDb250YWluZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnRyb2xzLT5tX2Z1bGxzY3JlZW5UaW1lbGluZUNv
bnRhaW5lciA9IGZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lci5nZXQoKTsKKyAgICBwYW5lbC0+
YXBwZW5kQ2hpbGQoZnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRy
dWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50PiBidXR0b25Hcm91cENvbnRhaW5lciA9
IE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
KTsKKworICAgIC8vIEZJWE1FOiBPbmx5IGNyZWF0ZSB3aGVuIG5lZWRlZCA8aHR0cDovL3dlYmtp
dC5vcmcvYi81NzE2Mz4KKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkNv
bnRhaW5lckVsZW1lbnQ+IGZ1bGxTY3JlZW5CdXR0b25Db250YWluZXIgPSBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBj
b250cm9scy0+bV9mdWxsU2NyZWVuQnV0dG9uQ29udGFpbmVyID0gZnVsbFNjcmVlbkJ1dHRvbkNv
bnRhaW5lci5nZXQoKTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3Jl
ZW5CdXR0b25FbGVtZW50PiBmdWxsc2NyZWVuRnVsbFNjcmVlbkJ1dHRvbiA9IE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAg
ICBjb250cm9scy0+bV9mdWxsc2NyZWVuRnVsbFNjcmVlbkJ1dHRvbiA9IGZ1bGxzY3JlZW5GdWxs
U2NyZWVuQnV0dG9uLmdldCgpOworICAgIGZ1bGxTY3JlZW5CdXR0b25Db250YWluZXItPmFwcGVu
ZENoaWxkKGZ1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwor
ICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudD4gZnVsbFNjcmVlbkRpdmlkZXIgPSBNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Cisg
ICAgY29udHJvbHMtPm1fZnVsbFNjcmVlbkRpdmlkZXIgPSBmdWxsU2NyZWVuRGl2aWRlci5nZXQo
KTsKKyAgICBmdWxsU2NyZWVuQnV0dG9uQ29udGFpbmVyLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVu
RGl2aWRlci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVy
biAwOworICAgIGJ1dHRvbkdyb3VwQ29udGFpbmVyLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuQnV0
dG9uQ29udGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVs
ZW1lbnQ+IHBsYXlCdXR0b25Db250YWluZXIgPSBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFp
bmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9wbGF5QnV0dG9u
Q29udGFpbmVyID0gcGxheUJ1dHRvbkNvbnRhaW5lci5nZXQoKTsKKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50PiBmdWxsc2NyZWVuUGxheUJ1dHRvbiA9
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
KTsKKyAgICBjb250cm9scy0+bV9mdWxsc2NyZWVuUGxheUJ1dHRvbiA9IGZ1bGxzY3JlZW5QbGF5
QnV0dG9uLmdldCgpOworICAgIHBsYXlCdXR0b25Db250YWluZXItPmFwcGVuZENoaWxkKGZ1bGxz
Y3JlZW5QbGF5QnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgYnV0dG9uR3JvdXBDb250YWluZXItPmFwcGVuZENoaWxkKHBsYXlC
dXR0b25Db250YWluZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ+
IHBsYWNlaG9sZGVyID0gTWVkaWFDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQpOworICAgIGNvbnRyb2xzLT5tX3BsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXIuZ2V0KCk7
CisgICAgYnV0dG9uR3JvdXBDb250YWluZXItPmFwcGVuZENoaWxkKHBsYWNlaG9sZGVyLnJlbGVh
c2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBj
b250cm9scy0+bV9idXR0b25Db250YWluZXIgPSBidXR0b25Hcm91cENvbnRhaW5lci5nZXQoKTsK
KyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoYnV0dG9uR3JvdXBDb250YWluZXIucmVsZWFzZSgpLCBl
YywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChkb2N1
bWVudC0+cGFnZSgpLT50aGVtZSgpLT5zdXBwb3J0c0Nsb3NlZENhcHRpb25pbmcoKSkgeworICAg
ICAgICBSZWZQdHI8TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50
PiB0b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA9IE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENh
cHRpb25zQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBjb250cm9scy5nZXQoKSk7Cisg
ICAgICAgIGNvbnRyb2xzLT5tX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uID0gdG9nZ2xlQ2xv
c2VkQ2FwdGlvbnNCdXR0b24uZ2V0KCk7CisgICAgICAgIHBhbmVsLT5hcHBlbmRDaGlsZCh0b2dn
bGVDbG9zZWRDYXB0aW9uc0J1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICAgICAgaWYg
KGVjKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgY29udHJvbHMtPm1fcGFu
ZWwgPSBwYW5lbC5nZXQoKTsKKyAgICBjb250cm9scy0+YXBwZW5kQ2hpbGQocGFuZWwucmVsZWFz
ZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNv
bnRyb2xzLT5tX2VtYmVkZGVkUGFuZWwgPSBlbWJlZFBhbmVsLmdldCgpOworICAgIGNvbnRyb2xz
LT5hcHBlbmRDaGlsZChlbWJlZFBhbmVsLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChl
YykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gY29udHJvbHMucmVsZWFzZSgpOwor
fQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpzZXRNZWRpYUNvbnRyb2xsZXIoTWVk
aWFDb250cm9sbGVySW50ZXJmYWNlKiBjb250cm9sbGVyKQoreworICAgIGlmIChtX21lZGlhQ29u
dHJvbGxlciA9PSBjb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBNZWRpYUNvbnRy
b2xzOjpzZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisKKyAgICBpZiAobV9idXR0b25D
b250YWluZXIpCisgICAgICAgIG1fYnV0dG9uQ29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIo
Y29udHJvbGxlcik7CisgICAgaWYgKG1fdGltZURpc3BsYXlDb250YWluZXIpCisgICAgICAgIG1f
dGltZURpc3BsYXlDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAg
ICBpZiAobV9mdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXIpCisgICAgICAgIG1fZnVsbHNj
cmVlblRpbWVEaXNwbGF5Q29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7
CisgICAgaWYgKG1fZnVsbHNjcmVlblBsYXlCdXR0b24pCisgICAgICAgIG1fZnVsbHNjcmVlblBs
YXlCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9mdWxs
c2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5KQorICAgICAgICBtX2Z1bGxzY3JlZW5DdXJyZW50VGlt
ZURpc3BsYXktPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9mdWxs
c2NyZWVuVGltZWxpbmUpCisgICAgICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lLT5zZXRNZWRpYUNv
bnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fdGltZVJlbWFpbmluZ0Rpc3BsYXkpCisg
ICAgICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9s
bGVyKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXkpCisgICAgICAg
IG1fZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5LT5zZXRNZWRpYUNvbnRyb2xsZXIoY29u
dHJvbGxlcik7CisgICAgaWYgKG1fdGltZWxpbmVDb250YWluZXIpCisgICAgICAgIG1fdGltZWxp
bmVDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9m
dWxsc2NyZWVuVGltZWxpbmVDb250YWluZXIpCisgICAgICAgIG1fZnVsbHNjcmVlblRpbWVsaW5l
Q29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fZnVs
bHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24pCisgICAgICAgIG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5C
dXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9tdXRlQnV0
dG9uKQorICAgICAgICBtX211dGVCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVy
KTsKKyAgICBpZiAobV92b2x1bWVTbGlkZXJDb250YWluZXIpCisgICAgICAgIG1fdm9sdW1lU2xp
ZGVyQ29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1f
ZW1iZWRkZWRQYW5lbCkKKyAgICAgICAgbV9lbWJlZGRlZFBhbmVsLT5zZXRNZWRpYUNvbnRyb2xs
ZXIoY29udHJvbGxlcik7CisgICAgcmVzZXQoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeTo6c2hvdygpCit7CisgICAgaWYgKG1faXNGdWxsc2NyZWVuKSB7CisgICAgICAgIG1f
cGFuZWwtPnNldElzRGlzcGxheWVkKHRydWUpOworICAgICAgICBtX3BhbmVsLT5zaG93KCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgbV9lbWJlZGRlZFBhbmVsLT5zZXRJc0Rpc3BsYXllZCh0cnVl
KTsKKyAgICAgICAgbV9lbWJlZGRlZFBhbmVsLT5zaG93KCk7CisgICAgfQorfQorCit2b2lkIE1l
ZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpoaWRlKCkKK3sKKyAgICBpZiAobV9pc0Z1bGxzY3JlZW4p
IHsKKyAgICAgICAgbV9wYW5lbC0+c2V0SXNEaXNwbGF5ZWQoZmFsc2UpOworICAgICAgICBtX3Bh
bmVsLT5oaWRlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9lbWJlZGRlZFBhbmVsLT5zZXRJ
c0Rpc3BsYXllZChmYWxzZSk7CisgICAgICAgIG1fZW1iZWRkZWRQYW5lbC0+aGlkZSgpOworICAg
ICAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+aGlkZSgpOworICAgIH0KK30KKwordm9pZCBN
ZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6bWFrZU9wYXF1ZSgpCit7CisgICAgaWYgKG1faXNGdWxs
c2NyZWVuKQorICAgICAgICBtX3BhbmVsLT5tYWtlT3BhcXVlKCk7CisgICAgZWxzZQorICAgICAg
ICBtX2VtYmVkZGVkUGFuZWwtPm1ha2VPcGFxdWUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xz
QmxhY2tCZXJyeTo6bWFrZVRyYW5zcGFyZW50KCkKK3sKKyAgICBpZiAobV9pc0Z1bGxzY3JlZW4p
CisgICAgICAgIG1fcGFuZWwtPm1ha2VUcmFuc3BhcmVudCgpOworICAgIGVsc2UgeworICAgICAg
ICBtX2VtYmVkZGVkUGFuZWwtPm1ha2VUcmFuc3BhcmVudCgpOworICAgICAgICBtX3ZvbHVtZVNs
aWRlckNvbnRhaW5lci0+aGlkZSgpOworICAgIH0KK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeTo6cmVzZXQoKQoreworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7
CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVTdGF0dXNEaXNw
bGF5KCk7CisKKyAgICBpZiAobV9mdWxsU2NyZWVuQnV0dG9uKSB7CisgICAgICAgIGlmIChtX21l
ZGlhQ29udHJvbGxlci0+c3VwcG9ydHNGdWxsc2NyZWVuKCkpCisgICAgICAgICAgICBtX2Z1bGxT
Y3JlZW5CdXR0b24tPnNob3coKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9mdWxsU2Ny
ZWVuQnV0dG9uLT5oaWRlKCk7CisgICAgfQorICAgIGlmIChtX2Z1bGxzY3JlZW5GdWxsU2NyZWVu
QnV0dG9uKSB7CisgICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+c3VwcG9ydHNGdWxsc2Ny
ZWVuKCkpCisgICAgICAgICAgICBtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLT5zaG93KCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24t
PmhpZGUoKTsKKyAgICB9CisgICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+
ZHVyYXRpb24oKTsKKyAgICBpZiAoaXNmaW5pdGUoZHVyYXRpb24pIHx8IHBhZ2UtPnRoZW1lKCkt
Pmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBhcnQpKSB7CisgICAg
ICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgICAg
ICBtX3RpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CisgICAgICAgIG1fZnVsbHNjcmVl
blRpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CisgICAgICAgIG1fdGltZWxpbmVDb250
YWluZXItPnNob3coKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXItPnNo
b3coKTsKKyAgICAgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKKyAgICAgICAgbV9m
dWxsc2NyZWVuVGltZWxpbmUtPnNldFBvc2l0aW9uKG5vdyk7CisgICAgICAgIHVwZGF0ZUN1cnJl
bnRUaW1lRGlzcGxheSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fdGltZWxpbmVDb250YWlu
ZXItPmhpZGUoKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXItPmhpZGUo
KTsKKyAgICB9CisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPmhhc0F1ZGlvKCkgfHwgcGFn
ZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRv
blBhcnQpKQorICAgICAgICBtX211dGVCdXR0b24tPnNob3coKTsKKyAgICBlbHNlCisgICAgICAg
IG1fbXV0ZUJ1dHRvbi0+aGlkZSgpOworCisgICAgaWYgKG1fdm9sdW1lU2xpZGVyKQorICAgICAg
ICBtX3ZvbHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7
CisKKyAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbikgeworICAgICAgICBpZiAo
bV9tZWRpYUNvbnRyb2xsZXItPmhhc0Nsb3NlZENhcHRpb25zKCkpCisgICAgICAgICAgICBtX3Rv
Z2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLT5zaG93KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPmhpZGUoKTsKKyAgICB9CisKKyAgICBp
ZiAobV9wbGF5QnV0dG9uKQorICAgICAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBl
KCk7CisKKyAgICBpZiAobV9mdWxsc2NyZWVuUGxheUJ1dHRvbikKKyAgICAgICAgbV9mdWxsc2Ny
ZWVuUGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKKworICAgIG1ha2VPcGFxdWUoKTsK
K30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6YnVmZmVyaW5nUHJvZ3Jlc3NlZCgp
Cit7CisgICAgLy8gV2Ugb25seSBuZWVkIHRvIHVwZGF0ZSBidWZmZXJpbmcgcHJvZ3Jlc3Mgd2hl
biBwYXVzZWQsIGR1cmluZyBub3JtYWwKKyAgICAvLyBwbGF5YmFjayBwbGF5YmFja1Byb2dyZXNz
ZWQoKSB3aWxsIHRha2UgY2FyZSBvZiBpdC4KKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPnBh
dXNlZCgpKSB7CisgICAgICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50
VGltZSgpOworICAgICAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOworICAgICAgICBt
X2Z1bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKKyAgICB9Cit9CisKK3ZvaWQg
TWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnBsYXliYWNrU3RhcnRlZCgpCit7CisgICAgZmxvYXQg
bm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CisgICAgbV9wbGF5QnV0dG9u
LT51cGRhdGVEaXNwbGF5VHlwZSgpOworICAgIG1fZnVsbHNjcmVlblBsYXlCdXR0b24tPnVwZGF0
ZURpc3BsYXlUeXBlKCk7CisgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKKyAgICBt
X2Z1bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24obm93KTsKKyAgICB1cGRhdGVDdXJyZW50
VGltZURpc3BsYXkoKTsKKworICAgIGlmIChtX2lzRnVsbHNjcmVlbikKKyAgICAgICAgc3RhcnRI
aWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeTo6cGxheWJhY2tQcm9ncmVzc2VkKCkKK3sKKyAgICBmbG9hdCBub3cgPSBtX21lZGlh
Q29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihu
b3cpOworICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOworICAgIHVw
ZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpOworICAgIAorICAgIGlmICghbV9pc01vdXNlT3ZlckNv
bnRyb2xzICYmIG1fbWVkaWFDb250cm9sbGVyLT5oYXNWaWRlbygpKQorICAgICAgICBtYWtlVHJh
bnNwYXJlbnQoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cGxheWJhY2tT
dG9wcGVkKCkKK3sKKyAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRp
bWUoKTsKKyAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CisgICAgbV9mdWxs
c2NyZWVuUGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKKyAgICBtX3RpbWVsaW5lLT5z
ZXRQb3NpdGlvbihub3cpOworICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lLT5zZXRQb3NpdGlvbihu
b3cpOworICAgIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpOworICAgIG1ha2VPcGFxdWUoKTsK
KyAgICAKKyAgICBzdG9wSGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7Cit9CisKK3ZvaWQg
TWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpCit7Cisg
ICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CisgICAgZmxv
YXQgZHVyYXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24oKTsKKworICAgIFBhZ2Uq
IHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBBbGxvdyB0aGUgdGhlbWUgdG8gZm9ybWF0IHRoZSB0aW1lLgorICAgIEV4
Y2VwdGlvbkNvZGUgZWM7CisgICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNldElubmVyVGV4dChw
YWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzQ3VycmVudFRpbWUobm93LCBkdXJhdGlv
biksIGVjKTsKKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKG5vdyk7
CisgICAgbV9mdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+
dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc0N1cnJlbnRUaW1lKG5vdywgZHVyYXRpb24pLCBl
Yyk7CisgICAgbV9mdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5LT5zZXRDdXJyZW50VmFsdWUo
bm93KTsKKyAgICBtX3RpbWVSZW1haW5pbmdEaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhl
bWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc1JlbWFpbmluZ1RpbWUobm93LCBkdXJhdGlvbiksIGVj
KTsKKyAgICBtX3RpbWVSZW1haW5pbmdEaXNwbGF5LT5zZXRDdXJyZW50VmFsdWUobm93IC0gZHVy
YXRpb24pOworICAgIG1fZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5LT5zZXRJbm5lclRl
eHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc1JlbWFpbmluZ1RpbWUobm93LCBk
dXJhdGlvbiksIGVjKTsKKyAgICBtX2Z1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheS0+c2V0
Q3VycmVudFZhbHVlKG5vdyAtIGR1cmF0aW9uKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxh
Y2tCZXJyeTo6cmVwb3J0ZWRFcnJvcigpCit7CisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCkt
PnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghcGFn
ZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhU2xpZGVyUGFy
dCkpIHsKKyAgICAgICAgbV90aW1lbGluZUNvbnRhaW5lci0+aGlkZSgpOworICAgICAgICBtX2Z1
bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lci0+aGlkZSgpOworICAgIH0KKworICAgIGlmICghcGFn
ZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRv
blBhcnQpKQorICAgICAgICBtX211dGVCdXR0b24tPmhpZGUoKTsKKworICAgIGlmIChtX2Z1bGxT
Y3JlZW5CdXR0b24pCisgICAgICAgIG1fZnVsbFNjcmVlbkJ1dHRvbi0+aGlkZSgpOworCisgICAg
aWYgKG1fZnVsbFNjcmVlbkRpdmlkZXIpCisgICAgICAgIG1fZnVsbFNjcmVlbkRpdmlkZXItPmhp
ZGUoKTsKKworICAgIGlmIChtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uKQorICAgICAgICBt
X2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CisKKyAgICBpZiAobV92b2x1bWVT
bGlkZXJDb250YWluZXIpCisgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5oaWRlKCk7
CisKKyAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiAmJiAhcGFnZS0+dGhlbWUo
KS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlv
bnNCdXR0b25QYXJ0KSkKKyAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+aGlk
ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpjaGFuZ2VkTXV0ZSgpCit7
CisgICAgbV9tdXRlQnV0dG9uLT5jaGFuZ2VkTXV0ZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJv
bHNCbGFja0JlcnJ5OjplbnRlcmVkRnVsbHNjcmVlbigpCit7CisgICAgTWVkaWFDb250cm9sczo6
ZW50ZXJlZEZ1bGxzY3JlZW4oKTsKKworICAgIG1fcGFuZWwtPnNldENhbkJlRHJhZ2dlZCh0cnVl
KTsKKyAgICBtX2VtYmVkZGVkUGFuZWwtPnNldENhbkJlRHJhZ2dlZCh0cnVlKTsKKworICAgIGlm
IChtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uKQorICAgICAgICBtX2Z1bGxzY3JlZW5GdWxs
U2NyZWVuQnV0dG9uLT5zZXRJc0Z1bGxzY3JlZW4odHJ1ZSk7Cit9CisKK3ZvaWQgTWVkaWFDb250
cm9sc0JsYWNrQmVycnk6OmV4aXRlZEZ1bGxzY3JlZW4oKQoreworICAgIG1fcGFuZWwtPnNldENh
bkJlRHJhZ2dlZChmYWxzZSk7CisgICAgbV9lbWJlZGRlZFBhbmVsLT5zZXRDYW5CZURyYWdnZWQo
ZmFsc2UpOworCisgICAgaWYgKG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24pCisgICAgICAg
IG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24tPnNldElzRnVsbHNjcmVlbihmYWxzZSk7CisK
KyAgICAvLyBXZSB3aWxsIGtlZXAgdXNpbmcgdGhlIHBhbmVsLCBidXQgd2Ugd2FudCBpdCB0byBn
byBiYWNrIHRvIHRoZSBzdGFuZGFyZCBwb3NpdGlvbi4KKyAgICAvLyBUaGlzIHdpbGwgbWF0dGVy
IHJpZ2h0IGF3YXkgYmVjYXVzZSB3ZSB1c2UgdGhlIHBhbmVsIGV2ZW4gd2hlbiBub3QgZnVsbHNj
cmVlbi4KKyAgICAvLyBBbmQgaWYgd2UgcmVlbnRlciBmdWxsc2NyZWVuIHdlIGFsc28gd2FudCB0
aGUgcGFuZWwgaW4gdGhlIHN0YW5kYXJkIHBvc2l0aW9uLgorICAgIG1fcGFuZWwtPnJlc2V0UG9z
aXRpb24oKTsKKyAgICBtX2VtYmVkZGVkUGFuZWwtPnJlc2V0UG9zaXRpb24oKTsKKworICAgIE1l
ZGlhQ29udHJvbHM6OmV4aXRlZEZ1bGxzY3JlZW4oKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xz
QmxhY2tCZXJyeTo6c2hvd1ZvbHVtZVNsaWRlcigpCit7CisgICAgaWYgKCFtX21lZGlhQ29udHJv
bGxlci0+aGFzQXVkaW8oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fdm9sdW1lU2xp
ZGVyQ29udGFpbmVyKQorICAgICAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+c2hvdygpOwor
fQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojp0b2dnbGVWb2x1bWVTbGlkZXIoKQor
eworICAgIGlmICghbV9tZWRpYUNvbnRyb2xsZXItPmhhc0F1ZGlvKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChtX3ZvbHVtZVNsaWRlckNvbnRhaW5lcikgeworICAgICAgICBpZiAobV92
b2x1bWVTbGlkZXJDb250YWluZXItPnJlbmRlcmVyKCkgJiYgbV92b2x1bWVTbGlkZXJDb250YWlu
ZXItPnJlbmRlcmVyKCktPnZpc2libGVUb0hpdFRlc3RpbmcoKSkKKyAgICAgICAgICAgIG1fdm9s
dW1lU2xpZGVyQ29udGFpbmVyLT5oaWRlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1f
dm9sdW1lU2xpZGVyQ29udGFpbmVyLT5zaG93KCk7CisgICAgfQorfQorCitib29sIE1lZGlhQ29u
dHJvbHNCbGFja0JlcnJ5OjpzaG91bGRIaWRlQ29udHJvbHMoKQoreworICAgIGlmIChtX2lzRnVs
bHNjcmVlbikKKyAgICAgICAgcmV0dXJuICFtX3BhbmVsLT5ob3ZlcmVkKCk7CisgICAgcmV0dXJu
ICFtX2VtYmVkZGVkUGFuZWwtPmhvdmVyZWQoKTsKK30KK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lNDFmYTY5MWRiZmFhMDUyNmYxZDBiNjMxNzk2NzRmMTgxN2RhNWYzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNr
QmVycnkuaApAQCAtMCwwICsxLDI5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAw
OCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5X2gKKyNkZWZp
bmUgTWVkaWFDb250cm9sc0JsYWNrQmVycnlfaAorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5j
bHVkZSAiTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmgiCisjaW5jbHVkZSAiTWVkaWFDb250cm9s
RWxlbWVudHMuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xzLmgiCisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7
CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3MgRXZlbnQ7CitjbGFzcyBNZWRpYVBsYXll
cjsKKworY2xhc3MgUmVuZGVyQm94OworY2xhc3MgUmVuZGVyTWVkaWE7CisKKyNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCitjbGFzcyBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50
OworY2xhc3MgTWVkaWFDb250cm9sVGV4dFRyYWNrRGlzcGxheUVsZW1lbnQ7CisjZW5kaWYKKwor
Y2xhc3MgTWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50IDogcHVibGljIE1l
ZGlhQ29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7
CisKK3Byb3RlY3RlZDoKKyAgICBNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1l
bnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNl
dWRvSWQoKSBjb25zdCBPVkVSUklERTsKK307CisKK2NsYXNzIE1lZGlhQ29udHJvbFRpbWVEaXNw
bGF5Q29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRh
aW5lckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworCitwcm90ZWN0ZWQ6CisgICAgTWVkaWFD
b250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50KERvY3VtZW50Kik7CisgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7Cit9
OworCitjbGFzcyBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudCA6IHB1YmxpYyBNZWRp
YUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisKKyAgICB2
b2lkIHNldENhbkJlRHJhZ2dlZChib29sKTsKKyAgICB2b2lkIHNldElzRGlzcGxheWVkKGJvb2wp
OworCisgICAgdm9pZCByZXNldFBvc2l0aW9uKCk7CisgICAgdm9pZCBtYWtlT3BhcXVlKCk7Cisg
ICAgdm9pZCBtYWtlVHJhbnNwYXJlbnQoKTsKKworICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9u
ZFRvTW91c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1
YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJu
IHRydWU7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBh
bmVsRWxlbWVudChEb2N1bWVudCopOworCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsKKworICAgIHZvaWQgc3RhcnREcmFnKGNv
bnN0IExheW91dFBvaW50JiBldmVudExvY2F0aW9uKTsKKyAgICB2b2lkIGNvbnRpbnVlRHJhZyhj
b25zdCBMYXlvdXRQb2ludCYgZXZlbnRMb2NhdGlvbik7CisgICAgdm9pZCBlbmREcmFnKCk7CisK
KyAgICB2b2lkIHN0YXJ0VGltZXIoKTsKKyAgICB2b2lkIHN0b3BUaW1lcigpOworICAgIHZvaWQg
dHJhbnNpdGlvblRpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1l
bnQ+Kik7CisKKyAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IExheW91dFBvaW50Jik7CisKKyAg
ICBib29sIG1fY2FuQmVEcmFnZ2VkOworICAgIGJvb2wgbV9pc0JlaW5nRHJhZ2dlZDsKKyAgICBi
b29sIG1faXNEaXNwbGF5ZWQ7CisgICAgYm9vbCBtX29wYXF1ZTsKKyAgICBMYXlvdXRQb2ludCBt
X2xhc3REcmFnRXZlbnRMb2NhdGlvbjsKKyAgICBMYXlvdXRQb2ludCBtX2N1bXVsYXRpdmVEcmFn
T2Zmc2V0OworCisgICAgVGltZXI8TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ+IG1f
dHJhbnNpdGlvblRpbWVyOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVE
aXNwbGF5Q29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGlt
ZURpc3BsYXlDb250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworcHJvdGVjdGVk
OgorICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQo
RG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRv
SWQoKSBjb25zdCBPVkVSUklERTsKK307CisKK2NsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5C
dXR0b25Db250YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0
b25Db250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCopOwor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9W
RVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJF
bGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVu
dD4gY3JlYXRlKERvY3VtZW50Kik7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sRnVsbHNj
cmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7Cit9OworCitjbGFz
cyBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNv
bnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNv
bnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisKK3By
aXZhdGU6CisgICAgTWVkaWFDb250cm9sUGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQoRG9jdW1l
bnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBj
b25zdCBPVkVSUklERTsKK307CisKK2NsYXNzIE1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVu
dCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVu
dCopOworCitwcml2YXRlOgorICAgIE1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudChEb2N1
bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0IE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlC
dXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25F
bGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9u
ZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRGlzcGxheVR5cGUoKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIE9WRVJSSURF
OworfTsKKworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVt
ZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVt
ZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRv
TW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIHNl
dElzRnVsbHNjcmVlbihib29sKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIE9WRVJSSURFOworfTsKKworY2xh
c3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyRWxlbWVudCA6IHB1Ymxp
YyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50PiBjcmVhdGUo
RG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxp
bmVDb250YWluZXJFbGVtZW50KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7Cit9OworCitjbGFzcyBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElu
cHV0RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9s
RnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudD4gY3JlYXRlKERvY3VtZW50KiwgTWVkaWFDb250cm9s
cyopOworCisgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkg
T1ZFUlJJREU7CisgICAgdm9pZCBzZXRQb3NpdGlvbihmbG9hdCk7CisgICAgdm9pZCBzZXREdXJh
dGlvbihmbG9hdCk7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVs
aW5lRWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbHMqKTsKKyAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIE9WRVJSSURFOworCisgICAgTWVk
aWFDb250cm9scyogbV9jb250cm9sczsKK307CisKK2NsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sVGltZURp
c3BsYXlFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQq
KTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rp
c3BsYXlFbGVtZW50KERvY3VtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7Cit9OworCitjbGFzcyBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRy
b2xUaW1lRGlzcGxheUVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVudFRp
bWVEaXNwbGF5RWxlbWVudChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFD
b250cm9sQXVkaW9NdXRlQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xNdXRlQnV0
dG9uRWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9s
QXVkaW9NdXRlQnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50KiwgTWVkaWFDb250cm9scyop
OworCisgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBPVkVS
UklERSB7IHJldHVybiB0cnVlOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgTWVkaWFDb250
cm9sQXVkaW9NdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbHMqKTsKKwor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZF
UlJJREU7CisKKyAgICBNZWRpYUNvbnRyb2xzKiBtX2NvbnRyb2xzOworfTsKKworY2xhc3MgTWVk
aWFDb250cm9sc0JsYWNrQmVycnkgOiBwdWJsaWMgTWVkaWFDb250cm9scyB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0JsYWNrQmVycnk+IGNyZWF0ZUNvbnRy
b2xzKERvY3VtZW50Kik7CisKKyAgICAvLyBNZWRpYUNvbnRyb2xzIGltcGxlbWVudGF0aW9uLgor
ICAgIHZvaWQgc2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxlckludGVyZmFjZSopIE9W
RVJSSURFOworCisgICAgdm9pZCBzaG93KCkgT1ZFUlJJREU7CisgICAgdm9pZCBoaWRlKCkgT1ZF
UlJJREU7CisgICAgdm9pZCBtYWtlT3BhcXVlKCkgT1ZFUlJJREU7CisgICAgdm9pZCBtYWtlVHJh
bnNwYXJlbnQoKSBPVkVSUklERTsKKworICAgIHZvaWQgcmVzZXQoKSBPVkVSUklERTsKKworICAg
IHZvaWQgYnVmZmVyaW5nUHJvZ3Jlc3NlZCgpIE9WRVJSSURFOworICAgIHZvaWQgcGxheWJhY2tQ
cm9ncmVzc2VkKCkgT1ZFUlJJREU7CisgICAgdm9pZCBwbGF5YmFja1N0YXJ0ZWQoKSBPVkVSUklE
RTsKKyAgICB2b2lkIHBsYXliYWNrU3RvcHBlZCgpIE9WRVJSSURFOworCisgICAgdm9pZCBjaGFu
Z2VkTXV0ZSgpIE9WRVJSSURFOworCisgICAgdm9pZCBlbnRlcmVkRnVsbHNjcmVlbigpIE9WRVJS
SURFOworICAgIHZvaWQgZXhpdGVkRnVsbHNjcmVlbigpIE9WRVJSSURFOworCisgICAgdm9pZCBy
ZXBvcnRlZEVycm9yKCkgT1ZFUlJJREU7CisKKyAgICB2b2lkIHNob3dWb2x1bWVTbGlkZXIoKSBP
VkVSUklERTsKKyAgICB2b2lkIHRvZ2dsZVZvbHVtZVNsaWRlcigpOworICAgIHZvaWQgdXBkYXRl
Q3VycmVudFRpbWVEaXNwbGF5KCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
SGlkZUNvbnRyb2xzKCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sc0Js
YWNrQmVycnkoRG9jdW1lbnQqKTsKKworICAgIE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFp
bmVyRWxlbWVudCogbV9idXR0b25Db250YWluZXI7CisgICAgTWVkaWFDb250cm9sVGltZURpc3Bs
YXlDb250YWluZXJFbGVtZW50KiBtX3RpbWVEaXNwbGF5Q29udGFpbmVyOworICAgIE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQqIG1fZnVsbHNjcmVlblRp
bWVEaXNwbGF5Q29udGFpbmVyOworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9u
RWxlbWVudCogbV9mdWxsc2NyZWVuUGxheUJ1dHRvbjsKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudCogbV9mdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNw
bGF5OworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQqIG1fZnVsbHNj
cmVlblRpbWVsaW5lOworICAgIE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVu
dCogbV90aW1lUmVtYWluaW5nRGlzcGxheTsKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGlt
ZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KiBtX2Z1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxh
eTsKKyAgICBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQqIG1fdGltZWxpbmVD
b250YWluZXI7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyRWxl
bWVudCogbV9mdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXI7CisgICAgTWVkaWFDb250cm9sRnVs
bHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50KiBtX2Z1bGxTY3JlZW5EaXZpZGVyOworICAgIE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudCogbV9mdWxsc2NyZWVu
RnVsbFNjcmVlbkJ1dHRvbjsKKyAgICBNZWRpYUNvbnRyb2xBdWRpb011dGVCdXR0b25FbGVtZW50
KiBtX211dGVCdXR0b247CisgICAgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxl
bWVudCogbV92b2x1bWVTbGlkZXJDb250YWluZXI7CisgICAgTWVkaWFDb250cm9sRW1iZWRkZWRQ
YW5lbEVsZW1lbnQqIG1fZW1iZWRkZWRQYW5lbDsKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
QnV0dG9uQ29udGFpbmVyRWxlbWVudCogbV9mdWxsU2NyZWVuQnV0dG9uQ29udGFpbmVyOworICAg
IE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50KiBtX3BsYXlCdXR0b25Db250
YWluZXI7CisgICAgTWVkaWFDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50KiBtX3BsYWNlaG9sZGVy
OworfTsKKworfQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwCmluZGV4
IDFkZGYxYTg2NzRkYzgwZTljNWM2MTI3NzUyMWRlZDU2ZDUwMDIyNTQuLmE0NTNkNDA3NDkwYTBi
MjRjNzFhYzA5NzNlYzJkYjRlYTI3NDU5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5jcHAKQEAg
LTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCisjaW5jbHVkZSAiSW5wdXRUeXBlLmgi
CiAjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudHMuaCIKICNpbmNsdWRlICJNZWRpYVBsYXll
clByaXZhdGVCbGFja0JlcnJ5LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNDQsMTAgKzQ1LDEz
IEBAIGNvbnN0IHVuc2lnbmVkIHNtYWxsUmFkaXVzID0gMTsKIGNvbnN0IHVuc2lnbmVkIGxhcmdl
UmFkaXVzID0gMzsKIGNvbnN0IHVuc2lnbmVkIGxpbmVXaWR0aCA9IDE7CiBjb25zdCBmbG9hdCBt
YXJnaW5TaXplID0gNDsKLWNvbnN0IGZsb2F0IG1lZGlhQ29udHJvbHNIZWlnaHQgPSAzMjsKLWNv
bnN0IGZsb2F0IG1lZGlhU2xpZGVyVGh1bWJXaWR0aCA9IDQwOwotY29uc3QgZmxvYXQgbWVkaWFT
bGlkZXJUaHVtYkhlaWdodCA9IDEzOwotY29uc3QgZmxvYXQgbWVkaWFTbGlkZXJUaHVtYlJhZGl1
cyA9IDU7Citjb25zdCBmbG9hdCBtZWRpYUNvbnRyb2xzSGVpZ2h0ID0gNDQ7Citjb25zdCBmbG9h
dCBtZWRpYUJhY2tCdXR0b25IZWlnaHQgPSAzMzsKK2NvbnN0IGZsb2F0IG1lZGlhU2xpZGVyT3V0
bGluZVdpZHRoID0gMjsKK2NvbnN0IGZsb2F0IG1lZGlhU2xpZGVyVHJhY2tSYWRpdXMgPSAzOwor
Y29uc3QgZmxvYXQgbWVkaWFTbGlkZXJUaHVtYldpZHRoID0gMjU7Citjb25zdCBmbG9hdCBtZWRp
YVNsaWRlclRodW1iSGVpZ2h0ID0gMjU7Citjb25zdCBmbG9hdCBtZWRpYVNsaWRlclRodW1iUmFk
aXVzID0gMzsKIGNvbnN0IGZsb2F0IHNsaWRlclRodW1iV2lkdGggPSAxNTsKIGNvbnN0IGZsb2F0
IHNsaWRlclRodW1iSGVpZ2h0ID0gMjU7CiAKQEAgLTEyNCw2ICsxMjgsMTIgQEAgY29uc3QgUkdC
QTMyIGRyYWdSb2xsRGFyayA9IDB4ZmY2OWE4ZmY7CiBjb25zdCBSR0JBMzIgYmxhY2tQZW4gPSBD
b2xvcjo6YmxhY2s7CiBjb25zdCBSR0JBMzIgZm9jdXNSaW5nUGVuID0gMHhmZmEzYzhmZTsKIAor
Y29uc3QgUkdCQTMyIG1lZGlhU2xpZGVyVHJhY2tPdXRsaW5lID0gMHhmZjg0ODU4NzsKK2NvbnN0
IFJHQkEzMiBtZWRpYVNsaWRlclRyYWNrUGxheWVkID0gMHhmZjJiOGZmZjsKK2NvbnN0IFJHQkEz
MiBtZWRpYVNsaWRlclRyYWNrQnVmZmVyZWQgPSAweGZmYmJiZGJmOworCitjb25zdCBSR0JBMzIg
c2VsZWN0aW9uID0gMHhmZjJiOGZmZjsKKwogZmxvYXQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5Ojpk
ZWZhdWx0Rm9udFNpemUgPSAxNjsKIAogY29uc3QgU3RyaW5nJiBSZW5kZXJUaGVtZUJsYWNrQmVy
cnk6OmRlZmF1bHRHVUlGb250KCkKQEAgLTI5NSwxMiArMzA1LDEyIEBAIFN0cmluZyBSZW5kZXJU
aGVtZUJsYWNrQmVycnk6OmV4dHJhTWVkaWFDb250cm9sc1N0eWxlU2hlZXQoKQogewogICAgIHJl
dHVybiBTdHJpbmcobWVkaWFDb250cm9sc0JsYWNrQmVycnlVc2VyQWdlbnRTdHlsZVNoZWV0LCBz
aXplb2YobWVkaWFDb250cm9sc0JsYWNrQmVycnlVc2VyQWdlbnRTdHlsZVNoZWV0KSk7CiB9Cisj
ZW5kaWYKIAotU3RyaW5nIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6Zm9ybWF0TWVkaWFDb250cm9s
c1JlbWFpbmluZ1RpbWUoZmxvYXQsIGZsb2F0IGR1cmF0aW9uKSBjb25zdAorI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKK1N0cmluZyBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmV4dHJhRnVsbFNj
cmVlblN0eWxlU2hlZXQoKQogewotICAgIC8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIHRvIG1ha2Ug
dGhlIGFwcGVhcmFuY2Ugb2YgbWVkaWEgdGltZSBjb250cm9sbGVyIGluCi0gICAgLy8gaW4tcGFn
ZSBtb2RlIHRoZSBzYW1lIGFzIGluIGZ1bGxzY3JlZW4gbW9kZS4KLSAgICByZXR1cm4gZm9ybWF0
TWVkaWFDb250cm9sc1RpbWUoZHVyYXRpb24pOworICAgIHJldHVybiBTdHJpbmcobWVkaWFDb250
cm9sc0JsYWNrQmVycnlGdWxsc2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKG1lZGlh
Q29udHJvbHNCbGFja0JlcnJ5RnVsbHNjcmVlblVzZXJBZ2VudFN0eWxlU2hlZXQpKTsKIH0KICNl
bmRpZgogCkBAIC02ODgsMTAgKzY5OCwxMCBAQCB2b2lkIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6
YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZQogICAg
ICAgICAgICAgZnVsbFNjcmVlbk11bHRpcGxpZXIgPSBkZXRlcm1pbmVGdWxsU2NyZWVuTXVsdGlw
bGllcih0b0VsZW1lbnQoc2xpZGVyLT5ub2RlKCkpKTsKICAgICB9CiAKLSAgICBpZiAocGFydCA9
PSBNZWRpYVZvbHVtZVNsaWRlclRodW1iUGFydCB8fCBwYXJ0ID09IFNsaWRlclRodW1iSG9yaXpv
bnRhbFBhcnQgfHwgcGFydCA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCkgeworICAgIGlmIChw
YXJ0ID09IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQgfHwgcGFydCA9PSBTbGlkZXJUaHVtYlZl
cnRpY2FsUGFydCkgewogICAgICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKChwYXJ0ID09IFNs
aWRlclRodW1iVmVydGljYWxQYXJ0ID8gc2xpZGVyVGh1bWJIZWlnaHQgOiBzbGlkZXJUaHVtYldp
ZHRoKSAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCkpOwogICAgICAgICBzdHlsZS0+c2V0
SGVpZ2h0KExlbmd0aCgocGFydCA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCA/IHNsaWRlclRo
dW1iV2lkdGggOiBzbGlkZXJUaHVtYkhlaWdodCkgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4
ZWQpKTsKLSAgICB9IGVsc2UgaWYgKHBhcnQgPT0gTWVkaWFTbGlkZXJUaHVtYlBhcnQpIHsKKyAg
ICB9IGVsc2UgaWYgKHBhcnQgPT0gTWVkaWFWb2x1bWVTbGlkZXJUaHVtYlBhcnQgfHwgcGFydCA9
PSBNZWRpYVNsaWRlclRodW1iUGFydCkgewogICAgICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3Ro
KG1lZGlhU2xpZGVyVGh1bWJXaWR0aCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCkpOwog
ICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChtZWRpYVNsaWRlclRodW1iSGVpZ2h0ICog
ZnVsbFNjcmVlbk11bHRpcGxpZXIsIEZpeGVkKSk7CiAgICAgfQpAQCAtNzE3LDEwICs3MjcsMzEg
QEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2Jq
ZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW4KIAogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6
OnBhaW50U2xpZGVyVHJhY2tSZWN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludElu
Zm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFn
ZT4gYmFja2dyb3VuZDsKLSAgICBpZiAoIWJhY2tncm91bmQpCi0gICAgICAgIGJhY2tncm91bmQg
PSBsb2FkSW1hZ2UoImNvcmVfc2xpZGVyX2JnIik7Ci0gICAgcmV0dXJuIHBhaW50U2xpZGVyVHJh
Y2tSZWN0KG9iamVjdCwgaW5mbywgcmVjdCwgYmFja2dyb3VuZC5nZXQoKSk7CisgICAgcmV0dXJu
IHBhaW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgaW5mbywgcmVjdCwgcmFuZ2VTbGlkZXJSZWd1
bGFyVG9wT3V0bGluZSwgcmFuZ2VTbGlkZXJSZWd1bGFyQm90dG9tT3V0bGluZSwgcmFuZ2VTbGlk
ZXJSZWd1bGFyVG9wLCByYW5nZVNsaWRlclJlZ3VsYXJCb3R0b20pOworfQorCitib29sIFJlbmRl
clRoZW1lQmxhY2tCZXJyeTo6cGFpbnRTbGlkZXJUcmFja1JlY3QoUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCwgUkdCQTMyIHN0
cm9rZUNvbG9yU3RhcnQsIFJHQkEzMiBzdHJva2VDb2xvckVuZCwgUkdCQTMyIGZpbGxDb2xvclN0
YXJ0LCBSR0JBMzIgZmlsbENvbG9yRW5kKQoreworICAgIEZsb2F0U2l6ZSBzbWFsbENvcm5lciht
ZWRpYVNsaWRlclRyYWNrUmFkaXVzLCBtZWRpYVNsaWRlclRyYWNrUmFkaXVzKTsKKworICAgIGlu
Zm8uY29udGV4dC0+c2F2ZSgpOworICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29s
aWRTdHJva2UpOworICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVXaWR0
aCk7CisKKyNpZiBVU0UoU0tJQSkKKyAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50
KGNyZWF0ZUxpbmVhckdyYWRpZW50KHN0cm9rZUNvbG9yU3RhcnQsIHN0cm9rZUNvbG9yRW5kLCBy
ZWN0Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSkpOworICAgIGluZm8u
Y29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KGZpbGxDb2xvclN0
YXJ0LCBmaWxsQ29sb3JFbmQsIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNv
cm5lcigpKSk7CisjZWxzZQorICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3Ryb2tl
Q29sb3JTdGFydCwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgaW5mby5jb250ZXh0LT5zZXRG
aWxsQ29sb3IoZmlsbENvbG9yU3RhcnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworI2VuZGlmCisK
KyAgICBQYXRoIHBhdGg7CisgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0LCBzbWFsbENvcm5l
cik7CisgICAgaW5mby5jb250ZXh0LT5maWxsUGF0aChwYXRoKTsKKworICAgIGluZm8uY29udGV4
dC0+cmVzdG9yZSgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUJs
YWNrQmVycnk6OnBhaW50U2xpZGVyVHJhY2tSZWN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25z
dCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QsIEltYWdlKiBpbmFjdGl2ZSkK
QEAgLTgwNCwyOSArODM1LDQ3IEBAIHZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RN
ZWRpYUNvbnRyb2xTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqCiAgICAgLy8gV2Ug
dXNlIG11bHRpcGxlcyBvZiBtZWRpYUNvbnRyb2xzSGVpZ2h0IHRvIG1ha2UgYWxsIG9iamVjdHMg
c2NhbGUgZXZlbmx5CiAgICAgTGVuZ3RoIHplcm8oMCwgRml4ZWQpOwogICAgIExlbmd0aCBjb250
cm9sc0hlaWdodChtZWRpYUNvbnRyb2xzSGVpZ2h0ICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIEZp
eGVkKTsKLSAgICBMZW5ndGggdGltZVdpZHRoKG1lZGlhQ29udHJvbHNIZWlnaHQgKiAzIC8gMiAq
IGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCk7Ci0gICAgTGVuZ3RoIHZvbHVtZUhlaWdodCht
ZWRpYUNvbnRyb2xzSGVpZ2h0ICogNCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCk7Ci0g
ICAgTGVuZ3RoIHBhZGRpbmcobWVkaWFDb250cm9sc0hlaWdodCAvIDggKiBmdWxsU2NyZWVuTXVs
dGlwbGllciwgRml4ZWQpOwotICAgIGZsb2F0IGZvbnRTaXplID0gbWVkaWFDb250cm9sc0hlaWdo
dCAvIDIgKiBmdWxsU2NyZWVuTXVsdGlwbGllcjsKKyAgICBMZW5ndGggaGFsZkNvbnRyb2xzV2lk
dGgobWVkaWFDb250cm9sc0hlaWdodCAvIDIgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQp
OworICAgIExlbmd0aCBkaXNwbGF5SGVpZ2h0KG1lZGlhQ29udHJvbHNIZWlnaHQgLyAzICogZnVs
bFNjcmVlbk11bHRpcGxpZXIsIEZpeGVkKTsKKyAgICBMZW5ndGggcGFkZGluZyhtZWRpYUNvbnRy
b2xzSGVpZ2h0IC8gMTAgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpOworICAgIGZsb2F0
IGZvbnRTaXplID0gbWVkaWFDb250cm9sc0hlaWdodCAvIDMgKiBmdWxsU2NyZWVuTXVsdGlwbGll
cjsKIAogICAgIHN3aXRjaCAoc3R5bGUtPmFwcGVhcmFuY2UoKSkgewogICAgIGNhc2UgTWVkaWFQ
bGF5QnV0dG9uUGFydDoKKyAgICAgICAgc3R5bGUtPnNldFdpZHRoKGNvbnRyb2xzSGVpZ2h0KTsK
KyAgICAgICAgc3R5bGUtPnNldEhlaWdodChjb250cm9sc0hlaWdodCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgTWVkaWFNdXRlQnV0dG9uUGFydDoKKyAgICAgICAgc3R5bGUtPnNldFBhZGRp
bmdMZWZ0KHBhZGRpbmcpOworICAgICAgICBzdHlsZS0+c2V0V2lkdGgoY29udHJvbHNIZWlnaHQp
OworICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KGNvbnRyb2xzSGVpZ2h0KTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBNZWRpYVJld2luZEJ1dHRvblBhcnQ6CisgICAgICAgIC8vIFdlIGhpLWph
Y2sgdGhlIFJld2luZCBCdXR0b24gSUQgdG8gdXNlIGl0IGZvciB0aGUgZGl2aWRlciBpbWFnZQor
ICAgICAgICBzdHlsZS0+c2V0V2lkdGgoaGFsZkNvbnRyb2xzV2lkdGgpOworICAgICAgICBzdHls
ZS0+c2V0SGVpZ2h0KGNvbnRyb2xzSGVpZ2h0KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBN
ZWRpYUVudGVyRnVsbHNjcmVlbkJ1dHRvblBhcnQ6CisgICAgICAgIHN0eWxlLT5zZXRQYWRkaW5n
UmlnaHQocGFkZGluZyk7CisgICAgICAgIHN0eWxlLT5zZXRXaWR0aChjb250cm9sc0hlaWdodCk7
CisgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoY29udHJvbHNIZWlnaHQpOworICAgICAgICBicmVh
azsKICAgICBjYXNlIE1lZGlhRXhpdEZ1bGxzY3JlZW5CdXR0b25QYXJ0OgotICAgIGNhc2UgTWVk
aWFNdXRlQnV0dG9uUGFydDoKKyAgICAgICAgc3R5bGUtPnNldExlZnQoemVybyk7CiAgICAgICAg
IHN0eWxlLT5zZXRXaWR0aChjb250cm9sc0hlaWdodCk7CiAgICAgICAgIHN0eWxlLT5zZXRIZWln
aHQoY29udHJvbHNIZWlnaHQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhQ3VycmVu
dFRpbWVQYXJ0OgogICAgIGNhc2UgTWVkaWFUaW1lUmVtYWluaW5nUGFydDoKLSAgICAgICAgc3R5
bGUtPnNldFdpZHRoKHRpbWVXaWR0aCk7Ci0gICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoY29udHJv
bHNIZWlnaHQpOworICAgICAgICBzdHlsZS0+c2V0V2lkdGgoY29udHJvbHNIZWlnaHQpOworICAg
ICAgICBzdHlsZS0+c2V0SGVpZ2h0KGRpc3BsYXlIZWlnaHQpOwogICAgICAgICBzdHlsZS0+c2V0
UGFkZGluZ1JpZ2h0KHBhZGRpbmcpOworICAgICAgICBzdHlsZS0+c2V0UGFkZGluZ0xlZnQocGFk
ZGluZyk7CisgICAgICAgIHN0eWxlLT5zZXRQYWRkaW5nQm90dG9tKHBhZGRpbmcpOwogICAgICAg
ICBzdHlsZS0+c2V0Rm9udFNpemUoc3RhdGljX2Nhc3Q8aW50Pihmb250U2l6ZSkpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIE1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyUGFydDoKLSAgICAg
ICAgc3R5bGUtPnNldFdpZHRoKGNvbnRyb2xzSGVpZ2h0KTsKLSAgICAgICAgc3R5bGUtPnNldEhl
aWdodCh2b2x1bWVIZWlnaHQpOworICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KGNvbnRyb2xzSGVp
Z2h0KTsKICAgICAgICAgc3R5bGUtPnNldEJvdHRvbShjb250cm9sc0hlaWdodCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC04NDMsMTIgKzg5MiwxNCBAQCB2b2lkIFJlbmRlclRo
ZW1lQmxhY2tCZXJyeTo6YWRqdXN0TWVkaWFDb250cm9sU3R5bGUoU3R5bGVSZXNvbHZlciosIFJl
bmRlclN0eWxlKgogICAgICAgICBjYXNlIE1lZGlhRXhpdEZ1bGxzY3JlZW5CdXR0b25QYXJ0Ogog
ICAgICAgICAgICAgc3R5bGUtPnNldFBvc2l0aW9uKEFic29sdXRlUG9zaXRpb24pOwogICAgICAg
ICAgICAgc3R5bGUtPnNldEJvdHRvbSh6ZXJvKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRMZWZ0
KHplcm8pOwogICAgICAgICAgICAgc3R5bGUtPnNldFJpZ2h0KGNvbnRyb2xzSGVpZ2h0KTsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1lZGlhTXV0ZUJ1dHRvblBhcnQ6CisgICAg
ICAgIGNhc2UgTWVkaWFSZXdpbmRCdXR0b25QYXJ0OgorICAgICAgICAgICAgLy8gV2UgaGktamFj
ayB0aGUgUmV3aW5kIEJ1dHRvbiBJRCB0byB1c2UgaXQgZm9yIHRoZSBkaXZpZGVyIGltYWdlCiAg
ICAgICAgICAgICBzdHlsZS0+c2V0UG9zaXRpb24oQWJzb2x1dGVQb3NpdGlvbik7CiAgICAgICAg
ICAgICBzdHlsZS0+c2V0Qm90dG9tKHplcm8pOwotICAgICAgICAgICAgc3R5bGUtPnNldFJpZ2h0
KHplcm8pOworICAgICAgICAgICAgc3R5bGUtPnNldExlZnQoY29udHJvbHNIZWlnaHQpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKQEAg
LTg2MSwxNyArOTEyLDEyIEBAIHZvaWQgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RTbGlk
ZXJUcmFja1N0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSoKICAgICBmbG9hdCBmdWxs
U2NyZWVuTXVsdGlwbGllciA9IGRldGVybWluZUZ1bGxTY3JlZW5NdWx0aXBsaWVyKGVsZW1lbnQp
OwogCiAgICAgLy8gV2UgdXNlIG11bHRpcGxlcyBvZiBtZWRpYUNvbnRyb2xzSGVpZ2h0IHRvIG1h
a2UgYWxsIG9iamVjdHMgc2NhbGUgZXZlbmx5Ci0gICAgTGVuZ3RoIGNvbnRyb2xzSGVpZ2h0KG1l
ZGlhQ29udHJvbHNIZWlnaHQgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpOwotICAgIExl
bmd0aCB2b2x1bWVIZWlnaHQobWVkaWFDb250cm9sc0hlaWdodCAqIDQgKiBmdWxsU2NyZWVuTXVs
dGlwbGllciwgRml4ZWQpOworICAgIExlbmd0aCBjb250cm9sc0hlaWdodChtZWRpYUNvbnRyb2xz
SGVpZ2h0IC8gMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCk7CiAgICAgc3dpdGNoIChz
dHlsZS0+YXBwZWFyYW5jZSgpKSB7CiAgICAgY2FzZSBNZWRpYVNsaWRlclBhcnQ6Ci0gICAgICAg
IHN0eWxlLT5zZXRIZWlnaHQoY29udHJvbHNIZWlnaHQpOwotICAgICAgICBicmVhazsKICAgICBj
YXNlIE1lZGlhVm9sdW1lU2xpZGVyUGFydDoKLSAgICAgICAgc3R5bGUtPnNldFdpZHRoKGNvbnRy
b2xzSGVpZ2h0KTsKLSAgICAgICAgc3R5bGUtPnNldEhlaWdodCh2b2x1bWVIZWlnaHQpOworICAg
ICAgICBzdHlsZS0+c2V0SGVpZ2h0KGNvbnRyb2xzSGVpZ2h0KTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXJQYXJ0OgogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTkwMyw2ICs5NDksMjkgQEAgYm9vbCBSZW5kZXJUaGVt
ZUJsYWNrQmVycnk6OnBhaW50TWVkaWFQbGF5QnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBj
b25zdCBQYWkKICNlbmRpZgogfQogCisvLyBXZSBoaS1qYWNrIHRoZSBSZXdpbmQgQnV0dG9uIGNv
ZGUgdG8gdXNlIGl0IGZvciB0aGUgZGl2aWRlciBpbWFnZQorYm9vbCBSZW5kZXJUaGVtZUJsYWNr
QmVycnk6OnBhaW50TWVkaWFSZXdpbmRCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0
IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworI2lmIEVOQUJM
RShWSURFTykKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0b1BhcmVudE1l
ZGlhRWxlbWVudChvYmplY3QpOworCisgICAgaWYgKCFtZWRpYUVsZW1lbnQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmICghbWVkaWFFbGVtZW50LT5pc0Z1bGxzY3JlZW4oKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3RhdGljIEltYWdlKiBkaXZpZGVyID0gSW1hZ2U6
OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJkaXZpZGVyIikubGVha1JlZigpOworCisgICAgcmV0dXJu
IHBhaW50TWVkaWFCdXR0b24ocGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIGRpdmlkZXIpOworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0ocGFpbnRJbmZv
KTsKKyAgICBVTlVTRURfUEFSQU0ocmVjdCk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9
CisKIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhTXV0ZUJ1dHRvbihSZW5k
ZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJl
Y3QmIHJlY3QpCiB7CiAjaWYgRU5BQkxFKFZJREVPKQpAQCAtOTExLDEwICs5ODAsOSBAQCBib29s
IFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0
KiBvYmplY3QsIGNvbnN0IFBhaQogICAgIGlmICghbWVkaWFFbGVtZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBzdGF0aWMgSW1hZ2UqIG1lZGlhTXV0ZSA9IEltYWdlOjpsb2FkUGxh
dGZvcm1SZXNvdXJjZSgic3BlYWtlciIpLmxlYWtSZWYoKTsKLSAgICBzdGF0aWMgSW1hZ2UqIG1l
ZGlhVW5tdXRlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJzcGVha2VyX211dGUiKS5s
ZWFrUmVmKCk7CisgICAgc3RhdGljIEltYWdlKiBkaXZpZGVyID0gSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKCJzcGVha2VyIikubGVha1JlZigpOwogCi0gICAgcmV0dXJuIHBhaW50TWVkaWFC
dXR0b24ocGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIG1lZGlhRWxlbWVudC0+bXV0ZWQoKSB8fCAh
bWVkaWFFbGVtZW50LT52b2x1bWUoKSA/IG1lZGlhVW5tdXRlIDogbWVkaWFNdXRlKTsKKyAgICBy
ZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihwYWludEluZm8uY29udGV4dCwgcmVjdCwgZGl2aWRlcik7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOwogICAgIFVOVVNFRF9QQVJBTShwYWlu
dEluZm8pOwpAQCAtOTMxLDcgKzk5OSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5Ojpw
YWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN0YXRpYyBJbWFnZSogbWVkaWFFbnRlckZ1bGxzY3Jl
ZW4gPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImZ1bGxzY3JlZW4iKS5sZWFrUmVmKCk7
Ci0gICAgc3RhdGljIEltYWdlKiBtZWRpYUV4aXRGdWxsc2NyZWVuID0gSW1hZ2U6OmxvYWRQbGF0
Zm9ybVJlc291cmNlKCJleGl0X2Z1bGxzY3JlZW4iKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIElt
YWdlKiBtZWRpYUV4aXRGdWxsc2NyZWVuID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJi
YWNrIikubGVha1JlZigpOwogCiAgICAgSW1hZ2UqIGJ1dHRvbkltYWdlID0gbWVkaWFFbnRlckZ1
bGxzY3JlZW47CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtOTU4LDM4ICsxMDI2LDMw
IEBAIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhU2xpZGVyVHJhY2soUmVu
ZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhCiAgICAgZmxvYXQgbG9hZGVkID0gbWVkaWFFbGVt
ZW50LT5wZXJjZW50TG9hZGVkKCk7CiAgICAgZmxvYXQgcG9zaXRpb24gPSBtZWRpYUVsZW1lbnQt
PmR1cmF0aW9uKCkgPiAwID8gKG1lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKSAvIG1lZGlhRWxl
bWVudC0+ZHVyYXRpb24oKSkgOiAwOwogCi0gICAgaW50IHggPSBjZWlsKHJlY3QueCgpICsgMiAq
IGZ1bGxTY3JlZW5NdWx0aXBsaWVyIC0gZnVsbFNjcmVlbk11bHRpcGxpZXIgLyAyKTsKLSAgICBp
bnQgeSA9IGNlaWwocmVjdC55KCkgKyAxNCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyICsgZnVsbFNj
cmVlbk11bHRpcGxpZXIgLyAyKTsKLSAgICBpbnQgdyA9IGNlaWwocmVjdC53aWR0aCgpIC0gNCAq
IGZ1bGxTY3JlZW5NdWx0aXBsaWVyICsgZnVsbFNjcmVlbk11bHRpcGxpZXIgLyAyKTsKLSAgICBp
bnQgaCA9IGNlaWwoMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyKTsKKyAgICBpbnQgaW50cmluc2lj
SGVpZ2h0ID0gY2VpbChtZWRpYVNsaWRlclRodW1iSGVpZ2h0IC8gNCk7CisgICAgaW50IHggPSBj
ZWlsKHJlY3QueCgpICsgKG1lZGlhQ29udHJvbHNIZWlnaHQgLSBpbnRyaW5zaWNIZWlnaHQpIC8g
MiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyIC0gZnVsbFNjcmVlbk11bHRpcGxpZXIgLyAyKTsKKyAg
ICBpbnQgeSA9IGNlaWwocmVjdC55KCkgKyAobWVkaWFDb250cm9sc0hlaWdodCAvIDIgLSBpbnRy
aW5zaWNIZWlnaHQpIC8gMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyICsgZnVsbFNjcmVlbk11bHRp
cGxpZXIgLyAyKTsKKyAgICBpbnQgdyA9IGNlaWwocmVjdC53aWR0aCgpIC0gKG1lZGlhQ29udHJv
bHNIZWlnaHQgLSBpbnRyaW5zaWNIZWlnaHQpICogZnVsbFNjcmVlbk11bHRpcGxpZXIgKyBmdWxs
U2NyZWVuTXVsdGlwbGllciAvIDIpOworICAgIGludCBoID0gY2VpbChpbnRyaW5zaWNIZWlnaHQg
KiBmdWxsU2NyZWVuTXVsdGlwbGllcik7CiAgICAgSW50UmVjdCByZWN0Mih4LCB5LCB3LCBoKTsK
IAogICAgIGludCB3UGxheWVkID0gY2VpbCh3ICogcG9zaXRpb24pOwogICAgIGludCB3TG9hZGVk
ID0gY2VpbCgodyAtIG1lZGlhU2xpZGVyVGh1bWJXaWR0aCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVy
KSAqIGxvYWRlZCArIG1lZGlhU2xpZGVyVGh1bWJXaWR0aCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVy
KTsKIAogICAgIEludFJlY3QgcGxheWVkKHgsIHksIHdQbGF5ZWQsIGgpOwotICAgIEludFJlY3Qg
YnVmZmVyZWQoeCwgeSwgd0xvYWRlZCwgaCk7CisgICAgSW50UmVjdCBidWZmZXJlZCh4LCBjZWls
KHkgKyBtZWRpYVNsaWRlck91dGxpbmVXaWR0aCksIHdMb2FkZWQsIGNlaWwoaCAtIDIgKiBtZWRp
YVNsaWRlck91dGxpbmVXaWR0aCkpOwogCiAgICAgLy8gVGhpcyBpcyB0byBwYWludCBtYWluIHNs
aWRlciBiYXIuCi0gICAgc3RhdGljIFJlZlB0cjxJbWFnZT4gdHJhY2tJbWFnZTsKLSAgICBpZiAo
IXRyYWNrSW1hZ2UpCi0gICAgICAgIHRyYWNrSW1hZ2UgPSBsb2FkSW1hZ2UoImNvcmVfc2xpZGVy
X21lZGlhX2JnIik7Ci0gICAgYm9vbCByZXN1bHQgPSBwYWludFNsaWRlclRyYWNrUmVjdChvYmpl
Y3QsIHBhaW50SW5mbywgcmVjdDIsIHRyYWNrSW1hZ2UuZ2V0KCkpOworICAgIGJvb2wgcmVzdWx0
ID0gcGFpbnRTbGlkZXJUcmFja1JlY3Qob2JqZWN0LCBwYWludEluZm8sIHJlY3QyKTsKIAogICAg
IGlmIChsb2FkZWQgPiAwIHx8IHBvc2l0aW9uID4gMCkgewogICAgICAgICAvLyBUaGlzIGlzIHRv
IHBhaW50IGJ1ZmZlcmVkIGJhci4KLSAgICAgICAgc3RhdGljIFJlZlB0cjxJbWFnZT4gYnVmZmVy
ZWRJbWFnZSwgcGxheWVkSW1hZ2U7Ci0gICAgICAgIGlmICghYnVmZmVyZWRJbWFnZSkgewotICAg
ICAgICAgICAgYnVmZmVyZWRJbWFnZSA9IGxvYWRJbWFnZSgiY29yZV9zbGlkZXJfYnVmZmVyZWRf
YmciKTsKLSAgICAgICAgICAgIHBsYXllZEltYWdlID0gbG9hZEltYWdlKCJjb3JlX3NsaWRlcl9w
bGF5ZWRfYmciKTsKLSAgICAgICAgfQotICAgICAgICBwYWludFNsaWRlclRyYWNrUmVjdChvYmpl
Y3QsIHBhaW50SW5mbywgYnVmZmVyZWQsIGJ1ZmZlcmVkSW1hZ2UuZ2V0KCkpOworICAgICAgICBw
YWludFNsaWRlclRyYWNrUmVjdChvYmplY3QsIHBhaW50SW5mbywgYnVmZmVyZWQsIENvbG9yOjpk
YXJrR3JheSwgQ29sb3I6OmRhcmtHcmF5LCBDb2xvcjo6ZGFya0dyYXksIENvbG9yOjpkYXJrR3Jh
eSk7CiAKICAgICAgICAgLy8gVGhpcyBpcyB0byBwYWludCBwbGF5ZWQgcGFydCBvZiBiYXIgKGxl
ZnQgb2Ygc2xpZGVyIHRodW1iKSB1c2luZyBzZWxlY3Rpb24gY29sb3IuCi0gICAgICAgIHBhaW50
U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJbmZvLCBwbGF5ZWQsIHBsYXllZEltYWdlLmdl
dCgpKTsKKyAgICAgICAgcGFpbnRTbGlkZXJUcmFja1JlY3Qob2JqZWN0LCBwYWludEluZm8sIHBs
YXllZCwgc2VsZWN0aW9uLCBzZWxlY3Rpb24sIHNlbGVjdGlvbiwgc2VsZWN0aW9uKTsKICAgICB9
CiAgICAgcmV0dXJuIHJlc3VsdDsKLQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsK
ICAgICBVTlVTRURfUEFSQU0ocGFpbnRJbmZvKTsKQEAgLTEwMDEsMTUgKzEwNjEsMzQgQEAgYm9v
bCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFTbGlkZXJUcmFjayhSZW5kZXJPYmpl
Y3QqIG9iamVjdCwgY29uc3QgUGEKIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1l
ZGlhU2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogI2lmIEVOQUJMRShWSURFTykKKyNpZiBV
U0UoU0tJQSkKICAgICBSZW5kZXJTbGlkZXIqIHNsaWRlciA9IGRldGVybWluZVJlbmRlclNsaWRl
cihvYmplY3QpOwogICAgIGlmICghc2xpZGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBzdGF0aWMgSW1hZ2UqIG1lZGlhVm9sdW1lVGh1bWIgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVz
b3VyY2UoInZvbHVtZV90aHVtYiIpLmxlYWtSZWYoKTsKKyAgICBmbG9hdCBmdWxsU2NyZWVuTXVs
dGlwbGllciA9IGRldGVybWluZUZ1bGxTY3JlZW5NdWx0aXBsaWVyKHRvRWxlbWVudChzbGlkZXIt
Pm5vZGUoKSkpOworCisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICBQYXRoIG1l
ZGlhVGh1bWJSb3VuZGVkUmVjdGFuZ2xlOworICAgIG1lZGlhVGh1bWJSb3VuZGVkUmVjdGFuZ2xl
LmFkZFJvdW5kZWRSZWN0KHJlY3QsIEZsb2F0U2l6ZShtZWRpYVNsaWRlclRodW1iUmFkaXVzICog
ZnVsbFNjcmVlbk11bHRpcGxpZXIsIG1lZGlhU2xpZGVyVGh1bWJSYWRpdXMgKiBmdWxsU2NyZWVu
TXVsdGlwbGllcikpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xp
ZFN0cm9rZSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygwLjUp
OworICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2ssIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworCisgICAgaWYgKGlzUHJlc3NlZChvYmplY3QpIHx8IGlzSG92
ZXJlZChvYmplY3QpIHx8IHNsaWRlci0+aW5EcmFnTW9kZSgpKQorICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KHNlbGVjdGlvbiwg
Q29sb3Ioc2VsZWN0aW9uKS5kYXJrKCkucmdiKCksIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVj
dC5tYXhYTWF4WUNvcm5lcigpKSk7CisgICAgZWxzZQorICAgICAgICBwYWludEluZm8uY29udGV4
dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KENvbG9yOjp3aGl0ZSwgQ29s
b3IoQ29sb3I6OndoaXRlKS5kYXJrKCkucmdiKCksIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVj
dC5tYXhYTWF4WUNvcm5lcigpKSk7CiAKLSAgICBkcmF3Q29udHJvbChwYWludEluZm8uY29udGV4
dCwgcmVjdCwgbWVkaWFWb2x1bWVUaHVtYik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxQ
YXRoKG1lZGlhVGh1bWJSb3VuZGVkUmVjdGFuZ2xlKTsKKyAgICBwYWludEluZm8uY29udGV4dC0+
cmVzdG9yZSgpOwogCiAgICAgcmV0dXJuIHRydWU7CisjZWxzZSAvLyBHTCByZW5kZXJlcgorICAg
IHN0YXRpYyBJbWFnZSogbWVkaWFTbGlkZXJUaHVtYiA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNv
dXJjZSgiY29yZV9zbGlkZXJfaGFuZGxlX2Rpc2FibGVkIikubGVha1JlZigpOworCisgICAgcmV0
dXJuIHBhaW50TWVkaWFCdXR0b24ocGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIG1lZGlhU2xpZGVy
VGh1bWIpOworI2VuZGlmIC8vIFVTRShTS0lBKQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ob2Jq
ZWN0KTsKICAgICBVTlVTRURfUEFSQU0ocGFpbnRJbmZvKTsKQEAgLTEwMjEsMTkgKzExMDAsMjkg
QEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFTbGlkZXJUaHVtYihSZW5k
ZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGEKIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5Ojpw
YWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogI2lmIEVOQUJMRShW
SURFTykKLSAgICBmbG9hdCBwYWQgPSByZWN0LndpZHRoKCkgKiAwLjQ1OwotICAgIGZsb2F0IHgg
PSByZWN0LngoKSArIHBhZDsKLSAgICBmbG9hdCB5ID0gcmVjdC55KCkgKyBwYWQ7Ci0gICAgZmxv
YXQgd2lkdGggPSByZWN0LndpZHRoKCkgKiAwLjE7Ci0gICAgZmxvYXQgaGVpZ2h0ID0gcmVjdC5o
ZWlnaHQoKSAtICgyLjAgKiBwYWQpOworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVu
dCA9IHRvUGFyZW50TWVkaWFFbGVtZW50KG9iamVjdCk7CisgICAgaWYgKCFtZWRpYUVsZW1lbnQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEludFJlY3QgcmVjdDIoeCwgeSwgd2lkdGgs
IGhlaWdodCk7CisgICAgZmxvYXQgZnVsbFNjcmVlbk11bHRpcGxpZXIgPSBkZXRlcm1pbmVGdWxs
U2NyZWVuTXVsdGlwbGllcihtZWRpYUVsZW1lbnQpOworICAgIGZsb2F0IHZvbHVtZSA9IG1lZGlh
RWxlbWVudC0+dm9sdW1lKCkgPiAwID8gbWVkaWFFbGVtZW50LT52b2x1bWUoKSA6IDA7CisKKyAg
ICBpbnQgaW50cmluc2ljSGVpZ2h0ID0gY2VpbChtZWRpYVNsaWRlclRodW1iSGVpZ2h0IC8gNCk7
CisgICAgaW50IHggPSBjZWlsKHJlY3QueCgpICsgKG1lZGlhQ29udHJvbHNIZWlnaHQgLSBpbnRy
aW5zaWNIZWlnaHQpIC8gMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyIC0gZnVsbFNjcmVlbk11bHRp
cGxpZXIgLyAyKTsKKyAgICBpbnQgeSA9IGNlaWwocmVjdC55KCkgKyAobWVkaWFDb250cm9sc0hl
aWdodCAvIDIgLSBpbnRyaW5zaWNIZWlnaHQpIC8gMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyICsg
ZnVsbFNjcmVlbk11bHRpcGxpZXIgLyAyKTsKKyAgICBpbnQgdyA9IGNlaWwocmVjdC53aWR0aCgp
IC0gKG1lZGlhQ29udHJvbHNIZWlnaHQgLSBpbnRyaW5zaWNIZWlnaHQpICogZnVsbFNjcmVlbk11
bHRpcGxpZXIgKyBmdWxsU2NyZWVuTXVsdGlwbGllciAvIDIpOworICAgIGludCBoID0gY2VpbChp
bnRyaW5zaWNIZWlnaHQgKiBmdWxsU2NyZWVuTXVsdGlwbGllcik7CisgICAgSW50UmVjdCByZWN0
Mih4LCB5LCB3LCBoKTsKKyAgICBJbnRSZWN0IHZvbHVtZVJlY3QoeCwgeSwgY2VpbCh3ICogdm9s
dW1lKSwgaCk7CiAKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlPiB0cmFja0ltYWdlOwotICAgIGlm
ICghdHJhY2tJbWFnZSkKLSAgICAgICAgdHJhY2tJbWFnZSA9IGxvYWRJbWFnZSgiY29yZV9zbGlk
ZXJfbWVkaWFfYmciKTsKKyAgICAvLyBUaGlzIGlzIHRvIHBhaW50IG1haW4gdm9sdW1lIHNsaWRl
ciBiYXIuCisgICAgYm9vbCByZXN1bHQgPSBwYWludFNsaWRlclRyYWNrUmVjdChvYmplY3QsIHBh
aW50SW5mbywgcmVjdDIsIENvbG9yKG1lZGlhU2xpZGVyVHJhY2tPdXRsaW5lKS5yZ2IoKSwgQ29s
b3IobWVkaWFTbGlkZXJUcmFja091dGxpbmUpLnJnYigpLCByYW5nZVNsaWRlclJlZ3VsYXJUb3As
IHJhbmdlU2xpZGVyUmVndWxhclRvcCk7CiAKLSAgICByZXR1cm4gcGFpbnRTbGlkZXJUcmFja1Jl
Y3Qob2JqZWN0LCBwYWludEluZm8sIHJlY3QyLCB0cmFja0ltYWdlLmdldCgpKTsKKyAgICBpZiAo
dm9sdW1lID4gMCkgeworICAgICAgICAvLyBUaGlzIGlzIHRvIHBhaW50IHZvbHVtZSBiYXIgKGxl
ZnQgb2Ygdm9sdW1lIHNsaWRlciB0aHVtYikgdXNpbmcgc2VsZWN0aW9uIGNvbG9yLgorICAgICAg
ICBwYWludFNsaWRlclRyYWNrUmVjdChvYmplY3QsIHBhaW50SW5mbywgdm9sdW1lUmVjdCwgQ29s
b3IobWVkaWFTbGlkZXJUcmFja091dGxpbmUpLnJnYigpLCBDb2xvcihtZWRpYVNsaWRlclRyYWNr
T3V0bGluZSkucmdiKCksIHNlbGVjdGlvbiwgc2VsZWN0aW9uKTsKKyAgICB9CisgICAgcmV0dXJu
IHJlc3VsdDsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7CiAgICAgVU5VU0VEX1BB
UkFNKHBhaW50SW5mbyk7CkBAIC0xMDQ1LDkgKzExMzQsMjkgQEAgYm9vbCBSZW5kZXJUaGVtZUJs
YWNrQmVycnk6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG9iamVj
dCwgY28KIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhVm9sdW1lU2xpZGVy
VGh1bWIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBJbnRSZWN0JiByZWN0KQogewogI2lmIEVOQUJMRShWSURFTykKLSAgICBzdGF0aWMgSW1h
Z2UqIG1lZGlhVm9sdW1lVGh1bWIgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInZvbHVt
ZV90aHVtYiIpLmxlYWtSZWYoKTsKKyNpZiBVU0UoU0tJQSkKKyAgICBSZW5kZXJTbGlkZXIqIHNs
aWRlciA9IGRldGVybWluZVJlbmRlclNsaWRlcihvYmplY3QpOworICAgIGlmICghc2xpZGVyKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihwYWlu
dEluZm8uY29udGV4dCwgcmVjdCwgbWVkaWFWb2x1bWVUaHVtYik7CisgICAgZmxvYXQgZnVsbFNj
cmVlbk11bHRpcGxpZXIgPSBkZXRlcm1pbmVGdWxsU2NyZWVuTXVsdGlwbGllcih0b0VsZW1lbnQo
c2xpZGVyLT5ub2RlKCkpKTsKKworICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAg
UGF0aCBtZWRpYVRodW1iUm91bmRlZFJlY3RhbmdsZTsKKyAgICBtZWRpYVRodW1iUm91bmRlZFJl
Y3RhbmdsZS5hZGRSb3VuZGVkUmVjdChyZWN0LCBGbG9hdFNpemUobWVkaWFTbGlkZXJUaHVtYkhl
aWdodCAvIDIgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgbWVkaWFTbGlkZXJUaHVtYkhlaWdodCAv
IDIgKiBmdWxsU2NyZWVuTXVsdGlwbGllcikpOworCisgICAgaWYgKGlzUHJlc3NlZChvYmplY3Qp
IHx8IGlzSG92ZXJlZChvYmplY3QpIHx8IHNsaWRlci0+aW5EcmFnTW9kZSgpKQorICAgICAgICBw
YWludEluZm8uY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KHNl
bGVjdGlvbiwgQ29sb3Ioc2VsZWN0aW9uKS5kYXJrKCkucmdiKCksIHJlY3QubWF4WE1pbllDb3Ju
ZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7CisgICAgZWxzZQorICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KG1lZGlhU2xp
ZGVyVHJhY2tPdXRsaW5lLCBDb2xvcjo6YmxhY2ssIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVj
dC5tYXhYTWF4WUNvcm5lcigpKSk7CisKKyAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFBhdGgo
bWVkaWFUaHVtYlJvdW5kZWRSZWN0YW5nbGUpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0
b3JlKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlIC8vIEdMIHJlbmRlcmVyCisgICAgcmV0
dXJuIHBhaW50TWVkaWFTbGlkZXJUaHVtYihvYmplY3QsIHBhaW50SW5mbywgcmVjdCk7CisjZW5k
aWYgLy8gVVNFKFNLSUEpCiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOwogICAgIFVO
VVNFRF9QQVJBTShwYWludEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmgKaW5kZXggNTA3ZDQ1MTM0
OGQzNWZlNDU0NjU0MDEwOWJhMzc1NmQ2MzY4NWVlNS4uMWVlYjU1Yjk5MjFjMGE4MjNlN2IzN2Ux
M2Q2MGQzZjc3OGI3NTFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oCkBAIC0zMiw3ICszMiwxMCBA
QCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFN
ZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGZvcm1hdE1lZGlh
Q29udHJvbHNSZW1haW5pbmdUaW1lKGZsb2F0IGN1cnJlbnRUaW1lLCBmbG9hdCBkdXJhdGlvbikg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIHVzZXNWZXJ0aWNhbFZvbHVtZVNsaWRlcigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisg
ICAgdmlydHVhbCBTdHJpbmcgZXh0cmFGdWxsU2NyZWVuU3R5bGVTaGVldCgpOwogI2VuZGlmCiAg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzSG92ZXIoY29uc3QgUmVuZGVyU3R5bGUqKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAKQEAgLTgyLDYgKzg1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBwYWludE1lZGlhVm9sdW1lU2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhUGxh
eUJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7
CiAgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCosIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRN
ZWRpYVJld2luZEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7CiAgICAgdmlydHVhbCBib29sIHBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0
KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgZG91Ymxl
IGFuaW1hdGlvblJlcGVhdEludGVydmFsRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MqKSBj
b25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBhbmltYXRpb25EdXJhdGlvbkZvclByb2dyZXNzQmFy
KFJlbmRlclByb2dyZXNzKikgY29uc3Q7CkBAIC0xMDQsOSArMTA4LDEzIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXRCdXR0b25TdHlsZShSZW5kZXJTdHlsZSopIGNvbnN0OwogCiAgICAgYm9vbCBw
YWludFRleHRGaWVsZE9yVGV4dEFyZWFPclNlYXJjaEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKwogICAgIGJvb2wgcGFpbnRTbGlkZXJUcmFj
a1JlY3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwog
CisgICAgYm9vbCBwYWludFNsaWRlclRyYWNrUmVjdChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0JiwgUkdCQTMyLCBSR0JBMzIsIFJHQkEzMiwgUkdCQTMyKTsK
KwogICAgIGJvb2wgcGFpbnRTbGlkZXJUcmFja1JlY3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYsIEltYWdlKik7CisKICAgICBJbnRSZWN0IGNvbnZlcnRU
b1BhaW50aW5nUmVjdChSZW5kZXJPYmplY3QqIGlucHV0UmVuZGVyZXIsIGNvbnN0IFJlbmRlck9i
amVjdCogcGFydFJlbmRlcmVyLCBMYXlvdXRSZWN0IHBhcnRSZWN0LCBjb25zdCBJbnRSZWN0JiBs
b2NhbE9mZnNldCkgY29uc3Q7CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9u
c0JsYWNrQmVycnkuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0JsYWNrQmVycnkuY21ha2UK
aW5kZXggZGRiODI4YmM5MjA0YzkwZWE5N2YzY2MxN2U2ZWY2NGFjOTdiOGJjMS4uYWRiZWI3ZTdl
MjAyNTY3MGY4ZjVhNWFkY2U1YWE1ZjE4M2M4ZmMxYiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtl
L09wdGlvbnNCbGFja0JlcnJ5LmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zQmxhY2tC
ZXJyeS5jbWFrZQpAQCAtMTk4LDcgKzE5OCw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9UT1VDSF9FVkVOVFMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfVE9VQ0hfU0xJREVSIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX1ZJQlJBVElPTiBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9WSURFTyBPTikKLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9WSURFT19UUkFDSyBPTikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9WSURFT19UUkFDSyBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfV0VCX1RJTUlORyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9XT1JLRVJTIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX1hIUl9SRVNQT05TRV9CTE9CIE9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDVjMWYwMGY5ZDM4MmU2M2M4NzI5ZDQzNmI5ZDY1OWJjMGQy
ZmYwODcuLmZhOWYyZjYzMjQzNWY0ZDM2YTI2MjhiZWM5NTZmMTBmNzIwYjZjMmIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAxMi0xMi0xMiAgSm9obiBHcmlnZ3MgIDxqZ3JpZ2dzQHJpbS5jb20+CisKKyAgICAgICAg
MjAxMi0xMi0xMiAgSm9obiBHcmlnZ3MgIDxqZ3JpZ2dzQHJpbS5jb20+CisKKyAgICAgICAgW0Js
YWNrQmVycnldIFVwZGF0ZSBNZWRpYSBDb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NDQzCisgICAgICAgIGh0dHBzOi8vcHJ6aWxsYS5v
dHQucW54LmNvbS9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjA0NzQ4CisKKyAgICAgICAgVXBk
YXRlIE1lZGlhIENvbnRyb2xzIGZvciBCbGFja0JlcnJ5IHBsYXRmb3JtIHRvIGFsbG93IGF1ZGlv
LCBlbWJlZGRlZCB2aWRlbyBhbmQgZnVsbHNjcmVlbiB2aWRlbyBjb250cm9scyB0byBiZSBwb3Np
dGlvbmVkIGFuZCBzdHlsZWQgZGlmZmVyZW50bHkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQmxhY2tCZXJyeS1zcGVjaWZpYyB1cGRhdGUgdG8gTWVk
aWEgQ29udHJvbHMgLSBObyBuZXcgdGVzdHMgcmVxdWlyZWQuCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06CisKIDIwMTItMTItMTIgIElseWEgVGlraG9ub3Zz
a3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5hdGl2
ZSBNZW1vcnkgSW5zdHJ1bWVudGF0aW9uOiByZW1vdmUgZmFrZSByb290IE1lbW9yeU9iamVjdElu
Zm8uCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0g
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggNmRmMGQyMDE5
M2I5MTUzNDc4NTI3YzBiYWQ0MWNjMmI0OTg5NzQ3MS4uY2Q2NzM2MzNlMjlkYmIxYzkxMDQ3MjM3
OGY0ZTQ2YzQzYjdjY2E4NyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0Zl
YXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5w
bQpAQCAtNDIwLDcgKzQyMCw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAi
RU5BQkxFX1ZJREVPIiwgZGVmYXVsdCA9PiAoaXNBcHBsZVdlYktpdCgpIHx8IGlzR3RrKCkgfHwg
aXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSksIHZhbHVlID0+IFwkdmlkZW9TdXBwb3J0IH0sCiAK
ICAgICB7IG9wdGlvbiA9PiAidmlkZW8tdHJhY2siLCBkZXNjID0+ICJUb2dnbGUgVmlkZW8gVHJh
Y2sgc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9WSURFT19UUkFDSyIsIGRlZmF1
bHQgPT4gKGlzQXBwbGVXZWJLaXQoKSB8fCBpc0d0aygpIHx8IGlzRWZsKCkgfHwgaXNCbGFja0Jl
cnJ5KCkpLCB2YWx1ZSA9PiBcJHZpZGVvVHJhY2tTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4g
IkVOQUJMRV9WSURFT19UUkFDSyIsIGRlZmF1bHQgPT4gKGlzQXBwbGVXZWJLaXQoKSB8fCBpc0d0
aygpIHx8IGlzRWZsKCkpLCB2YWx1ZSA9PiBcJHZpZGVvVHJhY2tTdXBwb3J0IH0sCiAKICAgICB7
IG9wdGlvbiA9PiAid2ViZ2wiLCBkZXNjID0+ICJUb2dnbGUgV2ViR0wgc3VwcG9ydCIsCiAgICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9XRUJHTCIsIGRlZmF1bHQgPT4gKGlzQXBwbGVNYWNXZWJLaXQo
KSB8fCBpc0d0aygpIHx8IGlzRWZsKCkpLCB2YWx1ZSA9PiBcJHdlYmdsU3VwcG9ydCB9LApkaWZm
IC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGM0NDBmMGRhZDIwNDQzNjdhMzcx
OTRiNTRiYTU3MDIxNmUwZTY1ZGMuLjNmOTlhOGEwMWMwNjdkYjcwNTdhMTQ3ODk5NWIzYTEwODhl
ODlkZTAgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4
OSBAQAorMjAxMi0xMi0xMiAgSm9obiBHcmlnZ3MgIDxqZ3JpZ2dzQHJpbS5jb20+CisKKyAgICAg
ICAgMjAxMi0xMi0xMiAgSm9obiBHcmlnZ3MgIDxqZ3JpZ2dzQHJpbS5jb20+CisKKyAgICAgICAg
ICAgICAgICBbQmxhY2tCZXJyeV0gVXBkYXRlIE1lZGlhIENvbnRyb2xzCisgICAgICAgICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDQ0MworICAgICAg
ICAgICAgICAgIGh0dHBzOi8vcHJ6aWxsYS5vdHQucW54LmNvbS9idWd6aWxsYS9zaG93X2J1Zy5j
Z2k/aWQ9MjA0NzQ4CisKKyAgICAgICAgICAgICAgICBVcGRhdGUgTWVkaWEgQ29udHJvbHMgZm9y
IEJsYWNrQmVycnkgcGxhdGZvcm0gdG8gYWxsb3cgYXVkaW8sIGVtYmVkZGVkIHZpZGVvIGFuZCBm
dWxsc2NyZWVuIHZpZGVvIGNvbnRyb2xzIHRvIGJlIHBvc2l0aW9uZWQgYW5kIHN0eWxlZCBkaWZm
ZXJlbnRseS4KKworICAgICAgICAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICAgICAgICAgQmxhY2tCZXJyeS1zcGVjaWZpYyB1cGRhdGUgdG8gTWVkaWEgQ29u
dHJvbHMgLSBObyBuZXcgdGVzdHMgcmVxdWlyZWQuCisKKyAgICAgICAgICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAgICAgICAgICogUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlOgor
ICAgICAgICAgICAgICAgICogY3NzL21lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNzczoKKyAgICAg
ICAgICAgICAgICAoYXVkaW8pOgorICAgICAgICAgICAgICAgIChhdWRpbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1lbWJlZGRlZC1wYW5lbCwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
ZW1iZWRkZWQtcGFuZWwpOgorICAgICAgICAgICAgICAgIChhdWRpbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1wYW5lbCwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwpOgorICAg
ICAgICAgICAgICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAt
Y29udGFpbmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1idXR0b24tZ3JvdXAtY29u
dGFpbmVyKToKKyAgICAgICAgICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
ZnVsbHNjcmVlbi10aW1lLWRpc3BsYXktY29udGFpbmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1mdWxsc2NyZWVuLXRpbWUtZGlzcGxheS1jb250YWluZXIpOgorICAgICAgICAgICAg
ICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLWRpc3BsYXktY29udGFpbmVy
LCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLWRpc3BsYXktY29udGFpbmVyKToK
KyAgICAgICAgICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVl
bi1wbGF5LWJ1dHRvbiwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1w
bGF5LWJ1dHRvbik6CisgICAgICAgICAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXBsYXktYnV0dG9uLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRv
bik6CisgICAgICAgICAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxz
Y3JlZW4tdGltZWxpbmUtY29udGFpbmVyLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1m
dWxsc2NyZWVuLXRpbWVsaW5lLWNvbnRhaW5lcik6CisgICAgICAgICAgICAgICAgKHZpZGVvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyKToKKyAgICAgICAgICAgICAgICAoYXVk
aW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1jdXJyZW50LXRpbWUtZGlzcGxh
eSwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1jdXJyZW50LXRpbWUt
ZGlzcGxheSk6CisgICAgICAgICAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LWN1cnJlbnQtdGltZS1kaXNwbGF5LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1jdXJy
ZW50LXRpbWUtZGlzcGxheSk6CisgICAgICAgICAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1yZW1haW5pbmctZGlzcGxheSwgYXVkaW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lLXJlbWFpbmluZy1kaXNwbGF5KToKKyAg
ICAgICAgICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1yZW1haW5p
bmctZGlzcGxheSwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1yZW1haW5pbmct
ZGlzcGxheSk6CisgICAgICAgICAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LWZ1bGxzY3JlZW4tdGltZWxpbmUsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxz
Y3JlZW4tdGltZWxpbmUpOgorICAgICAgICAgICAgICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uLCBhdWRpbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uKToKKyAgICAgICAgICAgICAg
ICAodmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24pOgorICAg
ICAgICAgICAgICAgIChhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1
dHRvbik6CisgICAgICAgICAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLW11
dGUtYnV0dG9uKToKKyAgICAgICAgICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtbXV0ZS1idXR0b24pOgorICAgICAgICAgICAgICAgIChhdWRpbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRhaW5lcik6CisgICAgICAgICAgICAgICAgKHZpZGVv
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXItY29udGFpbmVyKToKKyAgICAg
ICAgICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlcik6
CisgICAgICAgICAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1z
bGlkZXIpOgorICAgICAgICAgICAgICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1m
dWxsc2NyZWVuLWJ1dHRvbi1kaXZpZGVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1m
dWxsc2NyZWVuLWJ1dHRvbi1kaXZpZGVyKToKKyAgICAgICAgICAgICAgICAodmlkZW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24tY29udGFpbmVyLCB2aWRlbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbi1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uLWNvbnRhaW5lciwgYXVkaW86Oi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24tY29udGFpbmVyKToKKyAgICAgICAgICAgICAg
ICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHA6CisgICAgICAgICAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudFR5cGVzLmg6CisgICAgICAgICAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAg
ICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6dXBkYXRlRGlzcGxheSk6Cisg
ICAgICAgICAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tM
aXN0RWxlbWVudDo6cmVidWlsZFRyYWNrTGlzdE1lbnUpOgorICAgICAgICAgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVTdWJ0cmVl
cyk6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkpOgorICAgICAgICAgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVTaXplcyk6CisgICAg
ICAgICAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmg6CisgICAgICAgICAgICAg
ICAgKE1lZGlhQ29udHJvbHMpOgorICAgICAgICAgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xzOjp0b2dnbGVWb2x1bWVTbGlkZXIpOgorICAgICAgICAgICAgICAgICogcGxhdGZvcm0vYmxh
Y2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwOgorICAgICAgICAgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5Ojpl
eHRyYUZ1bGxTY3JlZW5TdHlsZVNoZWV0KToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1c3RTbGlkZXJUaHVtYlNpemUpOgorICAgICAgICAgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50U2xpZGVyVHJhY2tSZWN0
KToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjphZGp1
c3RNZWRpYUNvbnRyb2xTdHlsZSk6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lQmxhY2tCZXJyeTo6YWRqdXN0U2xpZGVyVHJhY2tTdHlsZSk6CisgICAgICAgICAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYVJld2luZEJ1dHRvbik6
CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRN
ZWRpYU11dGVCdXR0b24pOgorICAgICAgICAgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJs
YWNrQmVycnk6OnBhaW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKToKKyAgICAgICAgICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhU2xpZGVyVHJhY2spOgor
ICAgICAgICAgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVk
aWFTbGlkZXJUaHVtYik6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxh
Y2tCZXJyeTo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKToKKyAgICAgICAgICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhVm9sdW1lU2xpZGVyVGh1
bWIpOgorICAgICAgICAgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJs
YWNrQmVycnkuaDoKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0Jl
cnJ5Ojp1c2VzVmVydGljYWxWb2x1bWVTbGlkZXIpOgorICAgICAgICAgICAgICAgIChSZW5kZXJU
aGVtZUJsYWNrQmVycnkpOgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBVcGRhdGUgTWVkaWEgQ29u
dHJvbHMgZm9yIEJsYWNrQmVycnkgUGxhdGZvcm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDQ0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5n
ZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRl
c2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlv
bnNCbGFja0JlcnJ5LmNtYWtlOgorCiAyMDEyLTEyLTEyICBaYW4gRG9iZXJzZWsgIDx6YW5kb2Jl
cnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgW0dUS10gUmVtb3ZlIHRoZSBsYXN0IG9mIHVubmVj
ZXNzYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiBjb25maWd1cmUuYWMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179121</attachid>
            <date>2012-12-12 13:54:34 -0800</date>
            <delta_ts>2012-12-12 14:19:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104443-20121212165155.patch</filename>
            <type>text/plain</type>
            <size>108152</size>
            <attacher name="John Griggs">jgriggs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjlkMDUzZTQ2MDQwZmE5
NmZhNzgzOTQ1ZWI1MzcxODc5N2IxNTNlNi4uNmVlODBiNzBjYmFiZWJiZGIzYWNhYmVkN2ViYjk2
MTUwZTk0OTNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5OCBAQAorMjAxMi0xMi0xMiAgSm9o
biBHcmlnZ3MgIDxqZ3JpZ2dzQHJpbS5jb20+CisKKyAgICAgICAgMjAxMi0xMi0xMiAgSm9obiBH
cmlnZ3MgIDxqZ3JpZ2dzQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFVwZGF0ZSBN
ZWRpYSBDb250cm9scyBmb3IgQmxhY2tCZXJyeSBQbGF0Zm9ybQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NDQzCisgICAgICAgIGh0dHBzOi8vcHJ6
aWxsYS5vdHQucW54LmNvbS9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjA0NzQ4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIE1lZGlhIENv
bnRyb2xzIGZvciBCbGFja0JlcnJ5IHBsYXRmb3JtIHRvIGFsbG93IGF1ZGlvLCBlbWJlZGRlZCB2
aWRlbyBhbmQgZnVsbHNjcmVlbiB2aWRlbyBjb250cm9scyB0byBiZSBwb3NpdGlvbmVkIGFuZCBz
dHlsZWQgZGlmZmVyZW50bHkuCisKKyAgICAgICAgQmxhY2tCZXJyeS1zcGVjaWZpYyB1cGRhdGUg
dG8gTWVkaWEgQ29udHJvbHMgLSBObyBuZXcgdGVzdHMgcmVxdWlyZWQuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybUJsYWNrQmVycnkuY21ha2U6CisgICAgICAgICogY3NzL21lZGlhQ29udHJvbHNCbGFj
a0JlcnJ5LmNzczoKKyAgICAgICAgKGF1ZGlvKToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWVtYmVkZGVkLXBhbmVsLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1lbWJlZGRlZC1wYW5lbCk6CisgICAgICAgIChhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1wYW5lbCwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwpOgorICAgICAgICAo
dmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtYnV0dG9uLWdyb3VwLWNvbnRhaW5lciwgYXVk
aW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtYnV0dG9uLWdyb3VwLWNvbnRhaW5lcik6CisgICAg
ICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtZGlzcGxh
eS1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGlt
ZS1kaXNwbGF5LWNvbnRhaW5lcik6CisgICAgICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy10aW1lLWRpc3BsYXktY29udGFpbmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy10aW1lLWRpc3BsYXktY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLWZ1bGxzY3JlZW4tcGxheS1idXR0b24sIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLWZ1bGxzY3JlZW4tcGxheS1idXR0b24pOgorICAgICAgICAodmlkZW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtcGxheS1idXR0b24sIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXBsYXktYnV0dG9uKToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1
bGxzY3JlZW4tdGltZWxpbmUtY29udGFpbmVyLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1mdWxsc2NyZWVuLXRpbWVsaW5lLWNvbnRhaW5lcik6CisgICAgICAgICh2aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy10aW1lbGluZS1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWVsaW5lLWNvbnRhaW5lcik6CisgICAgICAgIChhdWRpbzo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWN1cnJlbnQtdGltZS1kaXNwbGF5LCB2aWRlbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWN1cnJlbnQtdGltZS1kaXNwbGF5KToKKyAg
ICAgICAgKGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWN1cnJlbnQtdGltZS1kaXNwbGF5
LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUtZGlzcGxheSk6Cisg
ICAgICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtcmVt
YWluaW5nLWRpc3BsYXksIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4t
dGltZS1yZW1haW5pbmctZGlzcGxheSk6CisgICAgICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy10aW1lLXJlbWFpbmluZy1kaXNwbGF5LCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy10aW1lLXJlbWFpbmluZy1kaXNwbGF5KToKKyAgICAgICAgKGF1ZGlvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUpOgorICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtZnVsbHNjcmVlbi1mdWxsc2NyZWVuLWJ1dHRvbiwgYXVkaW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1mdWxsc2NyZWVuLWJ1dHRvbik6CisgICAgICAgICh2
aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbik6CisgICAgICAg
IChhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbik6CisgICAg
ICAgIChhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1hdWRpby1tdXRlLWJ1dHRvbik6Cisg
ICAgICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1hdWRpby1tdXRlLWJ1dHRvbik6
CisgICAgICAgIChhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNv
bnRhaW5lcik6CisgICAgICAgICh2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUt
c2xpZGVyLWNvbnRhaW5lcik6CisgICAgICAgIChhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy12b2x1bWUtc2xpZGVyKToKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXZvbHVtZS1zbGlkZXIpOgorICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
ZnVsbHNjcmVlbi1idXR0b24tZGl2aWRlciwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
ZnVsbHNjcmVlbi1idXR0b24tZGl2aWRlcik6CisgICAgICAgICh2aWRlbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1jb250YWluZXIsIHZpZGVvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24tY29udGFpbmVyLCBhdWRpbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1wbGF5LWJ1dHRvbi1jb250YWluZXIpOgorICAgICAgICAqIGNzcy9tZWRpYUNv
bnRyb2xzQmxhY2tCZXJyeUZ1bGxzY3JlZW4uY3NzOiBBZGRlZC4KKyAgICAgICAgKGJvZHk6LXdl
YmtpdC1mdWxsLXBhZ2UtbWVkaWEpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVl
bjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1lbWJlZGRlZC1wYW5lbCk6CisgICAgICAgICh2aWRl
bzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsKToKKyAg
ICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
YnV0dG9uLWdyb3VwLWNvbnRhaW5lcik6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2Ny
ZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1kaXNwbGF5LWNvbnRh
aW5lcik6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLXRpbWUtZGlzcGxheS1jb250YWluZXIpOgorICAgICAgICAodmlkZW86LXdlYmtp
dC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXBsYXktYnV0
dG9uKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtcGxheS1idXR0b24pOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVl
bjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWVsaW5lLWNvbnRhaW5lcik6
CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLXRpbWVsaW5lLWNvbnRhaW5lcik6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2Ny
ZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10aW1lLWRpc3Bs
YXkpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1jdXJyZW50LXRpbWUtZGlzcGxheSk6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1
bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1yZW1haW5p
bmctZGlzcGxheSk6CisgICAgICAgICh2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkpOgorICAgICAgICAodmlkZW86
LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRp
bWVsaW5lKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtdGltZWxpbmUpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVl
bjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWZ1bGxzY3JlZW4tYnV0dG9uKToK
KyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtZnVsbHNjcmVlbi1idXR0b24pOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVl
bjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1hdWRpby1tdXRlLWJ1dHRvbik6CisgICAgICAgICh2
aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1z
bGlkZXItY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlcik6CisgICAgICAgICh2aWRlbzotd2Vi
a2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9u
LWRpdmlkZXIpOgorICAgICAgICAodmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1t
ZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1jb250YWluZXIsIHZpZGVvOi13ZWJraXQt
ZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24tY29udGFpbmVy
KToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtZnVsbHNjcmVlbi1idXR0b24tY29udGFpbmVyKToKKyAgICAgICAgKHZpZGVvOi13ZWJr
aXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24tY29udGFp
bmVyKToKKyAgICAgICAgKHZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEt
Y29udHJvbHMtcGxhY2Vob2xkZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJv
bHNCbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250
cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNl
dWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWlu
ZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWlu
ZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVu
dDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRW1iZWRk
ZWRQYW5lbEVsZW1lbnQ6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6Y29udGludWVEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjplbmREcmFnKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjpzdGFydFRpbWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjpzdG9wVGlt
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6
OnRyYW5zaXRpb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEVt
YmVkZGVkUGFuZWxFbGVtZW50OjpzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6cmVzZXRQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6bWFrZU9wYXF1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6bWFrZVRy
YW5zcGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxF
bGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjpzZXRDYW5CZURyYWdnZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnNldElzRGlzcGxheWVkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRh
aW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNw
bGF5Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lk
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWlu
ZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVy
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5CdXR0b25Db250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQ6
OnNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFBsYXlCdXR0
b25Db250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxl
bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFBsYXlCdXR0b25D
b250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6
OnNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5QbGF5QnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9u
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5QbGF5QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQ6OnVwZGF0ZURpc3Bs
YXlUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0
dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50Ojpz
ZXRJc0Z1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVl
blRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5l
Q29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNl
dWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5l
RWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVGltZWxpbmVFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50
OjpzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
VGltZWxpbmVFbGVtZW50OjpzZXREdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVt
ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRp
bWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVSZW1h
aW5pbmdEaXNwbGF5RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxl
bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5D
dXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVudFRp
bWVEaXNwbGF5RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sQXVkaW9NdXRlQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9s
QXVkaW9NdXRlQnV0dG9uRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xB
dWRpb011dGVCdXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sQXVkaW9NdXRlQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xBdWRpb011dGVCdXR0b25FbGVtZW50OjpzaGFkb3dQ
c2V1ZG9JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6TWVk
aWFDb250cm9sc0JsYWNrQmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpjcmVh
dGVDb250cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6
c2V0TWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFj
a0JlcnJ5OjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5
OjpoaWRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjptYWtl
T3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjptYWtl
VHJhbnNwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0JsYWNrQmVycnk6
OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpidWZm
ZXJpbmdQcm9ncmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0Jl
cnJ5OjpwbGF5YmFja1N0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0Js
YWNrQmVycnk6OnBsYXliYWNrUHJvZ3Jlc3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xzQmxhY2tCZXJyeTo6cGxheWJhY2tTdG9wcGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojp1cGRhdGVDdXJyZW50VGltZURpc3BsYXkpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnJlcG9ydGVkRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0JsYWNrQmVycnk6OmNoYW5nZWRNdXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjplbnRlcmVkRnVsbHNjcmVl
bik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6ZXhpdGVkRnVs
bHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6c2hv
d1ZvbHVtZVNsaWRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJy
eTo6dG9nZ2xlVm9sdW1lU2xpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNC
bGFja0JlcnJ5OjpzaG91bGRIaWRlQ29udHJvbHMpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNCbGFja0JlcnJ5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQpOgorICAgICAgICAo
TWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKE1lZGlh
Q29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbFBs
YXlCdXR0b25Db250YWluZXJFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbFBsYWNlaG9s
ZGVyRWxlbWVudCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVs
ZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25F
bGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5l
ckVsZW1lbnQpOgorICAgICAgICAoTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVu
dCk6CisgICAgICAgIChNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlF
bGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3Bs
YXlFbGVtZW50KToKKyAgICAgICAgKE1lZGlhQ29udHJvbEF1ZGlvTXV0ZUJ1dHRvbkVsZW1lbnQp
OgorICAgICAgICAoTWVkaWFDb250cm9sc0JsYWNrQmVycnkpOgorICAgICAgICAqIHBsYXRmb3Jt
L2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpleHRyYUZ1bGxTY3Jl
ZW5TdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6
YWRqdXN0U2xpZGVyVGh1bWJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxh
Y2tCZXJyeTo6cGFpbnRTbGlkZXJUcmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVCbGFja0JlcnJ5OjphZGp1c3RNZWRpYUNvbnRyb2xTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmFkanVzdFNsaWRlclRyYWNrU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhUmV3aW5kQnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRp
YU11dGVCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5Ojpw
YWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUJsYWNrQmVycnk6OnBhaW50TWVkaWFTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFTbGlkZXJUaHVtYik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUcmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFW
b2x1bWVTbGlkZXJUaHVtYik6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJU
aGVtZUJsYWNrQmVycnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJy
eTo6dXNlc1ZlcnRpY2FsVm9sdW1lU2xpZGVyKToKKyAgICAgICAgKFJlbmRlclRoZW1lQmxhY2tC
ZXJyeSk6CisKIDIwMTItMTItMTIgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5hdGl2ZSBNZW1vcnkgSW5zdHJ1bWVudGF0
aW9uOiByZW1vdmUgZmFrZSByb290IE1lbW9yeU9iamVjdEluZm8uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUJsYWNrQmVycnkuY21ha2UKaW5kZXggY2I5ZTlhZTNiMjM1YjUzMjY1YTU5ZjgwNWFmZGQ0
OTgzZDBjOWE5My4uODM4ZjZkNzcyZDRlNzRmMDYzNzkzNDc4NzQwODFiNmJhM2I3MzY3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQpAQCAtMyw2ICszLDEwIEBAIGxp
c3QoSU5TRVJUIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUyAwCiAgICAgIiR7QkxBQ0tCRVJS
WV9USElSRF9QQVJUWV9ESVJ9L2ljdSIKICkKIAorbGlzdChSRU1PVkVfSVRFTSBXZWJDb3JlX1NP
VVJDRVMKKyAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCispCisKIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9i
aW5kaW5ncy9jcHAiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2JsYWNrYmVycnkvQ29v
a2llRGF0YWJhc2VCYWNraW5nU3RvcmUiCkBAIC0xMDUsNiArMTA5LDcgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAKIGxpc3QoQVBQRU5EIFdlYkNvcmVfVVNFUl9BR0VOVF9TVFlMRV9T
SEVFVFMKICAgICAke1dFQkNPUkVfRElSfS9jc3MvbWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3Nz
CisgICAgJHtXRUJDT1JFX0RJUn0vY3NzL21lZGlhQ29udHJvbHNCbGFja0JlcnJ5RnVsbHNjcmVl
bi5jc3MKICAgICAke1dFQkNPUkVfRElSfS9jc3MvdGhlbWVCbGFja0JlcnJ5LmNzcwogKQogCkBA
IC0xMzEsNiArMTM2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVT
CiBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBlZGl0aW5nL2JsYWNrYmVycnkvRWRp
dG9yQmxhY2tCZXJyeS5jcHAKICAgICBlZGl0aW5nL2JsYWNrYmVycnkvU21hcnRSZXBsYWNlQmxh
Y2tCZXJyeS5jcHAKKyAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5jcHAK
ICAgICBsb2FkZXIvYmxhY2tiZXJyeS9Db29raWVKYXJCbGFja0JlcnJ5LmNwcAogICAgIHBhZ2Uv
YmxhY2tiZXJyeS9BY2Nlc3NpYmlsaXR5T2JqZWN0QmxhY2tCZXJyeS5jcHAKICAgICBwYWdlL2Js
YWNrYmVycnkvRHJhZ0NvbnRyb2xsZXJCbGFja0JlcnJ5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNzcyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9tZWRpYUNvbnRyb2xzQmxhY2tCZXJyeS5jc3MKaW5kZXggNGMwMGE3MjVjZDVhMDEzZTk5
OGIyM2ZiNGI3NjQzOWE4YTc4ODQ1MS4uMzY1MTAyMTM5NjkyOTUyOWZiMzMzNjc3NDhiMzhhMTYw
Y2E3NjM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHNCbGFj
a0JlcnJ5LmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9sc0JsYWNrQmVy
cnkuY3NzCkBAIC0yOCw0MyArMjgsNzEgQEAKICAvKiBCbGFja0JlcnJ5IGRlZmF1bHQgbWVkaWEg
Y29udHJvbHMuICovCiAKIGF1ZGlvIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwg
MCk7CiAgICAgd2lkdGg6IDMwMHB4OwogICAgIGhlaWdodDogMzJweDsKIH0KIAotYXVkaW86Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXBhbmVsIHsKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWVtYmVkZGVkLXBhbmVsLCB2
aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1lbWJlZGRlZC1wYW5lbCB7CiAgICAgZGlzcGxh
eTogLXdlYmtpdC1ib3g7CiAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAg
IC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7Ci0gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9u
ZTsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgYm90dG9tOiAwOwogICAgIHdpZHRoOiAx
MDAlOwotICAgIHotaW5kZXg6IDA7Ci0gICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICAgaGVpZ2h0
OiBhdXRvOwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2JhKDAsIDAsIDAsIDAuNik7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDAsIDApOwog
fQogCi12aWRlbzotd2Via2l0LWZ1bGwtcGFnZS1tZWRpYTo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1wYW5lbCB7Ci0gICAgYm90dG9tOiAwcHg7CithdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1wYW5lbCwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwgeworICAgIGRpc3Bs
YXk6IG5vbmU7CiB9CiAKLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9u
LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiB7Ci0gICAgLXdlYmtp
dC1hcHBlYXJhbmNlOiBtZWRpYS1wbGF5LWJ1dHRvbjsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWJv
eDsKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWJ1dHRvbi1ncm91cC1jb250YWluZXIs
IGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWJ1dHRvbi1ncm91cC1jb250YWluZXIgewor
ICAgIGRpc3BsYXk6IG5vbmU7CiB9CiAKLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRp
bWVsaW5lLWNvbnRhaW5lciwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUt
Y29udGFpbmVyIHsKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGlt
ZS1kaXNwbGF5LWNvbnRhaW5lciwgYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNj
cmVlbi10aW1lLWRpc3BsYXktY29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCit2
aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLWRpc3BsYXktY29udGFpbmVyLCBhdWRp
bzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLWRpc3BsYXktY29udGFpbmVyIHsKICAgICAt
d2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLWNvbnRyb2xzLWJhY2tncm91bmQ7CiAgICAgZGlzcGxh
eTogLXdlYmtpdC1ib3g7CiAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAg
IC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7Ci0gICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwor
ICAgIC13ZWJraXQtYm94LXBhY2s6IGp1c3RpZnk7CisgICAgLXdlYmtpdC1ib3gtZmxleDogMTsK
KyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7Cit9CisKK3ZpZGVvOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tcGxheS1idXR0b24sIGF1ZGlvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tcGxheS1idXR0b24geworICAgIGRpc3BsYXk6IG5vbmU7
Cit9CisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLCBhdWRpbzo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiB7CisgICAgLXdlYmtpdC1hcHBlYXJh
bmNlOiBtZWRpYS1wbGF5LWJ1dHRvbjsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKK30KKwor
YXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZS1jb250YWlu
ZXIsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUtY29u
dGFpbmVyIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy10aW1lbGluZS1jb250YWluZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xz
LXRpbWVsaW5lLWNvbnRhaW5lciB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1jb250
cm9scy1iYWNrZ3JvdW5kOworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIC13ZWJraXQt
Ym94LW9yaWVudDogdmVydGljYWw7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0cmV0Y2g7Cisg
ICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOwogICAgIC13ZWJraXQtYm94LWZsZXg6IDE7Ci0g
ICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICBoZWlnaHQ6IGF1dG87CisgICAgd2lk
dGg6IDEwMCU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDAsIDApOworfQorCithdWRp
bzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWN1cnJlbnQtdGltZS1kaXNwbGF5
LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWN1cnJlbnQtdGltZS1k
aXNwbGF5IHsKKyAgICBkaXNwbGF5OiBub25lOwogfQogCiBhdWRpbzo6LXdlYmtpdC1tZWRpYS1j
b250cm9scy1jdXJyZW50LXRpbWUtZGlzcGxheSwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtY3VycmVudC10aW1lLWRpc3BsYXkgewpAQCAtNzQsMTkgKzEwMiwyNyBAQCBhdWRpbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUtZGlzcGxheSwgdmlkZW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbAogICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAgLXdlYmtp
dC1ib3gtcGFjazogZW5kOwogICAgIC13ZWJraXQtYm94LWZsZXg6IDA7Ci0gICAgLXdlYmtpdC11
c2VyLXNlbGVjdDogbm9uZTsKLSAgICBjb2xvcjogd2hpdGU7CisgICAgYmFja2dyb3VuZC1jb2xv
cjogcmdiKDAsIDAsIDApOworICAgIGNvbG9yOiAjZmFmYWZhOworfQorCit2aWRlbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWUtcmVtYWluaW5nLWRpc3BsYXksIGF1ZGlv
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1yZW1haW5pbmctZGlzcGxh
eSB7CisgICAgZGlzcGxheTogbm9uZTsKIH0KIAotYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJv
bHMtdGltZS1yZW1haW5pbmctZGlzcGxheSwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
dGltZS1yZW1haW5pbmctZGlzcGxheSB7Cit2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10
aW1lLXJlbWFpbmluZy1kaXNwbGF5LCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1l
LXJlbWFpbmluZy1kaXNwbGF5IHsKICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLXRpbWUt
cmVtYWluaW5nLWRpc3BsYXk7CiAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICAgLXdlYmtp
dC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7
CiAgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgIC13ZWJraXQtYm94LWZsZXg6IDA7Ci0g
ICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKLSAgICBjb2xvcjogd2hpdGU7CisgICAgYmFj
a2dyb3VuZC1jb2xvcjogcmdiKDAsIDAsIDApOworICAgIGNvbG9yOiAjZmFmYWZhOworfQorCith
dWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWVsaW5lLCB2aWRlbzo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXRpbWVsaW5lIHsKKyAgICBkaXNwbGF5
OiBub25lOwogfQogCiBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZSwgdmlk
ZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUgewpAQCAtOTUsNDEgKzEzMSw2MyBA
QCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lbGluZSwgdmlkZW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtdGltZWxpbmUgewogICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiB9CiAK
LWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uLCB2aWRlbzo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbiB7Ci0gICAgLXdlYmtpdC1h
cHBlYXJhbmNlOiBtZWRpYS1mdWxsc2NyZWVuLWJ1dHRvbjsKK3ZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLWZ1bGxzY3JlZW4tZnVsbHNjcmVlbi1idXR0b24sIGF1ZGlvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tZnVsbHNjcmVlbi1idXR0b24geworICAgIGRpc3BsYXk6
IG5vbmU7Cit9CisKK3ZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0
dG9uIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLWVudGVyLWZ1bGxzY3JlZW4tYnV0
dG9uOwogICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogfQogCi1hdWRpbzo6LXdlYmtpdC1tZWRp
YS1jb250cm9scy1tdXRlLWJ1dHRvbiwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtbXV0
ZS1idXR0b24geworYXVkaW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0
b24geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLWF1ZGlvLW11dGUtYnV0dG9uIHsKICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLW11
dGUtYnV0dG9uOwogICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogfQogCi1hdWRpbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRhaW5lciwgdmlkZW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtdm9sdW1lLXNsaWRlci1jb250YWluZXIgewordmlkZW86Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtYXVkaW8tbXV0ZS1idXR0b24geworICAgIGRpc3BsYXk6IG5vbmU7Cit9
CisKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXItY29udGFpbmVy
IHsKICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLXZvbHVtZS1zbGlkZXItY29udGFpbmVy
OwogICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwotICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9y
aXpvbnRhbDsKKyAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogICAgIC13ZWJraXQt
Ym94LWFsaWduOiBjZW50ZXI7CiAgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwogICAgIC13ZWJr
aXQtYm94LWZsZXg6IDE7CiAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgbGVmdDogMHB4OwogICAgIHJpZ2h0OiAwcHg7Ci0gICAgYmFj
a2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjYpOworICAgIGJhY2tncm91bmQtY29sb3I6
IHJnYigwLDAsMCk7CiB9CiAKLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1z
bGlkZXIsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXIgewotICAg
IC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtdm9sdW1lLXNsaWRlcjsKLSAgICBkaXNwbGF5OiAt
d2Via2l0LWJveDsKLSAgICAtd2Via2l0LWJveC1mbGV4OiAxOwordmlkZW86Oi13ZWJraXQtbWVk
aWEtY29udHJvbHMtdm9sdW1lLXNsaWRlci1jb250YWluZXIgeworICAgIGRpc3BsYXk6IG5vbmU7
Cit9CisKK2F1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXIgeworICAg
ICAtd2Via2l0LWFwcGVhcmFuY2U6IG1lZGlhLXZvbHVtZS1zbGlkZXI7CisgICAgIGRpc3BsYXk6
IC13ZWJraXQtYm94OworICAgICAtd2Via2l0LWJveC1mbGV4OiAxOworICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICBsZWZ0OiAzJTsKKyAgICByaWdodDogMyU7Cit9CisKK3ZpZGVvOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXIgeworICAgIGRpc3BsYXk6IG5vbmU7CiB9
CiAKLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXNlZWstYmFjay1idXR0b24sIHZpZGVv
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXNlZWstYmFjay1idXR0b24gewotICAgIC13ZWJraXQt
YXBwZWFyYW5jZTogbWVkaWEtc2Vlay1iYWNrLWJ1dHRvbjsKK3ZpZGVvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uLWRpdmlkZXIsIGF1ZGlvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uLWRpdmlkZXIgewogICAgIGRpc3BsYXk6IG5vbmU7
CiB9CiAKLWF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXNlZWstZm9yd2FyZC1idXR0b24s
IHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXNlZWstZm9yd2FyZC1idXR0b24gewotICAg
IC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtc2Vlay1mb3J3YXJkLWJ1dHRvbjsKK3ZpZGVvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uLWNvbnRhaW5lciwgdmlkZW86
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24tY29udGFpbmVyLCBhdWRpbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1dHRvbi1jb250YWluZXIsIGF1ZGlvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uLWNvbnRhaW5lciB7CiAgICAgZGlzcGxh
eTogbm9uZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xz
QmxhY2tCZXJyeUZ1bGxzY3JlZW4uY3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJv
bHNCbGFja0JlcnJ5RnVsbHNjcmVlbi5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTE1NGM5NDBmNjNjNTY0YWQz
MGEzZGRlMWNmMTlmMmJjYWU5YTg5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9tZWRpYUNvbnRyb2xzQmxhY2tCZXJyeUZ1bGxzY3JlZW4uY3NzCkBAIC0wLDAgKzEsMTg4
IEBACisvKgorICogQmxhY2tCZXJyeSBzcGVjaWZpYyBvdmVycmlkZXMgZm9yIEhUTUw1IG1lZGlh
IGVsZW1lbnRzLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisgLyogQmxhY2tCZXJyeSBmdWxsc2Ny
ZWVuIHZpZGVvIGNvbnRyb2xzLiAqLworCitib2R5Oi13ZWJraXQtZnVsbC1wYWdlLW1lZGlhIHsK
KyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7Cit9CisKK3ZpZGVvOi13ZWJraXQt
ZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZW1iZWRkZWQtcGFuZWwgeworICAg
IGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtcGFuZWwgeworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIC13
ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0cmV0
Y2g7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGJvdHRvbTogMHB4OworICAgIHdpZHRo
OiAxMDAlOworICAgIGhlaWdodDogYXV0bzsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM4
LCAzOCwgMzgsIDAuNSk7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtYnV0dG9uLWdyb3VwLWNvbnRhaW5lciB7CisgICAgLXdlYmtpdC1hcHBl
YXJhbmNlOiBtZWRpYS1jb250cm9scy1iYWNrZ3JvdW5kOworICAgIGRpc3BsYXk6IC13ZWJraXQt
Ym94OworICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKKyAgICAtd2Via2l0LWJv
eC1hbGlnbjogY2VudGVyOworICAgIC13ZWJraXQtYm94LXBhY2s6IGp1c3RpZnk7CisgICAgLXdl
YmtpdC1ib3gtZmxleDogMTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMCk7Cit9
CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVs
bHNjcmVlbi10aW1lLWRpc3BsYXktY29udGFpbmVyIHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6
IG1lZGlhLWNvbnRyb2xzLWJhY2tncm91bmQ7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Cisg
ICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOworICAgIC13ZWJraXQtYm94LWFsaWdu
OiBjZW50ZXI7CisgICAgLXdlYmtpdC1ib3gtcGFjazoganVzdGlmeTsKKyAgICAtd2Via2l0LWJv
eC1mbGV4OiAxOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzgsIDM4LCAzOCwgMC41KTsK
K30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10
aW1lLWRpc3BsYXktY29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCit2aWRlbzot
d2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tcGxh
eS1idXR0b24geworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtcGxheS1idXR0b247Cisg
ICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46
Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24geworICAgIGRpc3BsYXk6IG5vbmU7
Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
ZnVsbHNjcmVlbi10aW1lbGluZS1jb250YWluZXIgeworICAgIC13ZWJraXQtYXBwZWFyYW5jZTog
bWVkaWEtY29udHJvbHMtYmFja2dyb3VuZDsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAg
ICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOworICAgIC13ZWJraXQtYm94LWFsaWduOiBz
dHJldGNoOworICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKKyAgICAtd2Via2l0LWJveC1m
bGV4OiAxOworICAgIGhlaWdodDogYXV0bzsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiByZ2JhKDM4LCAzOCwgMzgsIDAuNSk7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVs
bC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUtY29udGFpbmVyIHsKKyAg
ICBkaXNwbGF5OiBub25lOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tY3VycmVudC10aW1lLWRpc3BsYXkgeworICAgIC13
ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtY3VycmVudC10aW1lLWRpc3BsYXk7CisgICAgZGlzcGxh
eTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOworICAg
IC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CisgICAgLXdlYmtpdC1ib3gtcGFjazogZW5kOwor
ICAgIC13ZWJraXQtYm94LWZsZXg6IDA7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzOCwg
MzgsIDM4LCAwLjUpOworICAgIGNvbG9yOiAjZmFmYWZhOworfQorCit2aWRlbzotd2Via2l0LWZ1
bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWN1cnJlbnQtdGltZS1kaXNwbGF5IHsK
KyAgICBkaXNwbGF5OiBub25lOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1yZW1haW5pbmctZGlzcGxheSB7Cisg
ICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS10aW1lLXJlbWFpbmluZy1kaXNwbGF5OworICAg
IGRpc3BsYXk6IC13ZWJraXQtYm94OworICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRh
bDsKKyAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOworICAgIC13ZWJraXQtYm94LXBhY2s6
IGVuZDsKKyAgICAtd2Via2l0LWJveC1mbGV4OiAwOworICAgIGJhY2tncm91bmQtY29sb3I6IHJn
YmEoMzgsIDM4LCAzOCwgMC41KTsKKyAgICBjb2xvcjogI2ZhZmFmYTsKK30KKwordmlkZW86LXdl
YmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy10aW1lLXJlbWFpbmluZy1k
aXNwbGF5IHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2Ny
ZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZWxpbmUgeworICAgIC13
ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtc2xpZGVyOworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94
OworICAgIC13ZWJraXQtYm94LWZsZXg6IDE7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3Jl
ZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUgeworICAgIGRpc3BsYXk6IG5vbmU7
Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
ZnVsbHNjcmVlbi1mdWxsc2NyZWVuLWJ1dHRvbiB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBt
ZWRpYS1leGl0LWZ1bGxzY3JlZW4tYnV0dG9uOworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94Owor
fQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1
bGxzY3JlZW4tYnV0dG9uIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCit2aWRlbzotd2Via2l0
LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWF1ZGlvLW11dGUtYnV0dG9uIHsK
KyAgICBkaXNwbGF5OiBub25lOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXItY29udGFpbmVyIHsKKyAgICBkaXNwbGF5
OiBub25lOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNv
bnRyb2xzLXZvbHVtZS1zbGlkZXIgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3ZpZGVvOi13
ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0
b24tZGl2aWRlciB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZWRpYS1yZXdpbmQtYnV0dG9u
OworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2Ny
ZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uLWNvbnRhaW5lciwg
dmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1
dHRvbi1jb250YWluZXIgeworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEtY29udHJvbHMt
YmFja2dyb3VuZDsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICAtd2Via2l0LWJveC1v
cmllbnQ6IGhvcml6b250YWw7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKKyAgICAt
d2Via2l0LWJveC1mbGV4OiAxOworICAgIG1pbi13aWR0aDogMTAwJTsKKyAgICBiYWNrZ3JvdW5k
LWNvbG9yOiByZ2IoMCwgMCwgMCk7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24tY29udGFpbmVyIHsKKyAgICAt
d2Via2l0LWJveC1wYWNrOiBzdGFydDsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbi1jb250YWluZXIgeworICAgIC13ZWJr
aXQtYm94LXBhY2s6IGNlbnRlcjsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1wbGFjZWhvbGRlciB7CisgICAgLXdlYmtpdC1hcHBlYXJhbmNl
OiBtZWRpYS1jb250cm9scy1iYWNrZ3JvdW5kOworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94Owor
ICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDAs
IDApOworICAgIG1pbi13aWR0aDogMTAwJTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNCbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjBm
NzA3YzMwOGEzNmE5YzcyNTNhMWRiZTU0ODcxMDE1ZDJkZmE4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuY3BwCkBA
IC0wLDAgKzEsMTExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwg
MjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU8pCisjaW5jbHVk
ZSAiTWVkaWFDb250cm9sc0JsYWNrQmVycnkuaCIKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2lu
Y2x1ZGUgIkRPTVRva2VuTGlzdC5oIgorI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgorI2lu
Y2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbEVsZW1lbnRzLmgiCisjaW5jbHVk
ZSAiTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3guaCIKKyNpbmNsdWRlICJSZW5kZXJTbGlkZXIuaCIKKyNpbmNsdWRl
ICJSZW5kZXJUaGVtZS5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiVGV4dC5o
IgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgor
I2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKworc3RhdGljIGNvbnN0IGRvdWJsZSB0aW1lV2l0
aG91dE1vdXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyA9IDM7CisKK2lubGluZSBNZWRp
YUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEJ1dHRvbkdy
b3VwQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRy
b2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzUGFuZWwpCit7Cit9CisKK1Bhc3NS
ZWZQdHI8TWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRy
b2xCdXR0b25Hcm91cENvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQp
Cit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudD4g
ZWxlbWVudCA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xCdXR0b25Hcm91cENvbnRhaW5lckVs
ZW1lbnQoZG9jdW1lbnQpKTsKKyAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50
OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtYnV0dG9uLWdyb3VwLWNvbnRh
aW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4g
aWQ7Cit9CisKK2lubGluZSBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ6
Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1l
bnQpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYUNvbnRyb2xz
UGFuZWwpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWlu
ZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0
ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVEaXNw
bGF5Q29udGFpbmVyRWxlbWVudD4gZWxlbWVudCA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xU
aW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQoZG9jdW1lbnQpKTsKKyAgICByZXR1cm4gZWxlbWVu
dC5yZWxlYXNlKCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVGltZURp
c3BsYXlDb250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJv
bHMtdGltZS1kaXNwbGF5LWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK01lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxF
bGVtZW50OjpNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudChEb2N1bWVudCogZG9jdW1l
bnQpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYUNvbnRyb2xz
UGFuZWwpCisgICAgLCBtX2NhbkJlRHJhZ2dlZChmYWxzZSkKKyAgICAsIG1faXNCZWluZ0RyYWdn
ZWQoZmFsc2UpCisgICAgLCBtX2lzRGlzcGxheWVkKGZhbHNlKQorICAgICwgbV9vcGFxdWUodHJ1
ZSkKKyAgICAsIG1fdHJhbnNpdGlvblRpbWVyKHRoaXMsICZNZWRpYUNvbnRyb2xFbWJlZGRlZFBh
bmVsRWxlbWVudDo6dHJhbnNpdGlvblRpbWVyRmlyZWQpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVk
aWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ+IE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxF
bGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQoZG9jdW1lbnQpKTsKK30KKwor
Y29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6c2hh
ZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWVtYmVkZGVkLXBhbmVsIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKwordm9p
ZCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6c3RhcnREcmFnKGNvbnN0IExheW91
dFBvaW50JiBldmVudExvY2F0aW9uKQoreworICAgIGlmICghbV9jYW5CZURyYWdnZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChtX2lzQmVpbmdEcmFnZ2VkKQorICAgICAgICByZXR1cm47
CisKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBp
ZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNCb3goKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2xhc3REcmFnRXZlbnRMb2NhdGlvbiA9IGV2ZW50TG9j
YXRpb247CisKKyAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZl
bnRzTm9kZSh0aGlzKTsKKworICAgIG1faXNCZWluZ0RyYWdnZWQgPSB0cnVlOworfQorCit2b2lk
IE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50Ojpjb250aW51ZURyYWcoY29uc3QgTGF5
b3V0UG9pbnQmIGV2ZW50TG9jYXRpb24pCit7CisgICAgaWYgKCFtX2lzQmVpbmdEcmFnZ2VkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBMYXlvdXRTaXplIGRpc3RhbmNlRHJhZ2dlZCA9IGV2ZW50
TG9jYXRpb24gLSBtX2xhc3REcmFnRXZlbnRMb2NhdGlvbjsKKyAgICBtX2N1bXVsYXRpdmVEcmFn
T2Zmc2V0Lm1vdmUoZGlzdGFuY2VEcmFnZ2VkKTsKKyAgICBtX2xhc3REcmFnRXZlbnRMb2NhdGlv
biA9IGV2ZW50TG9jYXRpb247CisgICAgc2V0UG9zaXRpb24obV9jdW11bGF0aXZlRHJhZ09mZnNl
dCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OmVuZERyYWco
KQoreworICAgIGlmICghbV9pc0JlaW5nRHJhZ2dlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9pc0JlaW5nRHJhZ2dlZCA9IGZhbHNlOworCisgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQo
KS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKK30KKwor
dm9pZCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6c3RhcnRUaW1lcigpCit7Cisg
ICAgc3RvcFRpbWVyKCk7CisKKyAgICAvLyBUaGUgdGltZXIgaXMgcmVxdWlyZWQgdG8gc2V0IHRo
ZSBwcm9wZXJ0eSBkaXNwbGF5Oidub25lJyBvbiB0aGUgcGFuZWwsCisgICAgLy8gc3VjaCB0aGF0
IGNhcHRpb25zIGFyZSBjb3JyZWN0bHkgZGlzcGxheWVkIGF0IHRoZSBib3R0b20gb2YgdGhlIHZp
ZGVvCisgICAgLy8gYXQgdGhlIGVuZCBvZiB0aGUgZmFkZW91dCB0cmFuc2l0aW9uLgorICAgIGRv
dWJsZSBkdXJhdGlvbiA9IGRvY3VtZW50KCktPnBhZ2UoKSA/IGRvY3VtZW50KCktPnBhZ2UoKS0+
dGhlbWUoKS0+bWVkaWFDb250cm9sc0ZhZGVPdXREdXJhdGlvbigpIDogMDsKKyAgICBtX3RyYW5z
aXRpb25UaW1lci5zdGFydE9uZVNob3QoZHVyYXRpb24pOworfQorCit2b2lkIE1lZGlhQ29udHJv
bEVtYmVkZGVkUGFuZWxFbGVtZW50OjpzdG9wVGltZXIoKQoreworICAgIGlmIChtX3RyYW5zaXRp
b25UaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3RyYW5zaXRpb25UaW1lci5zdG9wKCk7Cit9
CisKK3ZvaWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnRyYW5zaXRpb25UaW1l
ckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50PiopCit7CisgICAg
aWYgKCFtX29wYXF1ZSkKKyAgICAgICAgaGlkZSgpOworCisgICAgc3RvcFRpbWVyKCk7Cit9CisK
K3ZvaWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnNldFBvc2l0aW9uKGNvbnN0
IExheW91dFBvaW50JiBwb3NpdGlvbikKK3sKKyAgICBkb3VibGUgbGVmdCA9IHBvc2l0aW9uLngo
KTsKKyAgICBkb3VibGUgdG9wID0gcG9zaXRpb24ueSgpOworCisgICAgLy8gU2V0IHRoZSBsZWZ0
IGFuZCB0b3AgdG8gY29udHJvbCB0aGUgcGFuZWwncyBwb3NpdGlvbjsgdGhpcyBkZXBlbmRzIG9u
IGl0IGJlaW5nIGFic29sdXRlIHBvc2l0aW9uZWQuCisgICAgLy8gU2V0IHRoZSBtYXJnaW4gdG8g
emVybyBzaW5jZSB0aGUgcG9zaXRpb24gcGFzc2VkIGluIHdpbGwgYWxyZWFkeSBpbmNsdWRlIHRo
ZSBlZmZlY3Qgb2YgdGhlIG1hcmdpbi4KKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5TGVmdCwgbGVmdCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgc2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgdG9wLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BYKTsKKyAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luTGVm
dCwgMC4wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICBzZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luVG9wLCAwLjAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpOworCisgICAgRXhjZXB0aW9uQ29kZSBpZ25vcmVkOworICAgIGNsYXNzTGlzdCgpLT5hZGQo
ImRyYWdnZWQiLCBpZ25vcmVkKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVs
RWxlbWVudDo6cmVzZXRQb3NpdGlvbigpCit7CisgICAgcmVtb3ZlSW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eUxlZnQpOworICAgIHJlbW92ZUlubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlUb3ApOworICAgIHJlbW92ZUlubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJn
aW5MZWZ0KTsKKyAgICByZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2lu
VG9wKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgaWdub3JlZDsKKyAgICBjbGFzc0xpc3QoKS0+cmVt
b3ZlKCJkcmFnZ2VkIiwgaWdub3JlZCk7CisKKyAgICBtX2N1bXVsYXRpdmVEcmFnT2Zmc2V0LnNl
dFgoMCk7CisgICAgbV9jdW11bGF0aXZlRHJhZ09mZnNldC5zZXRZKDApOworfQorCit2b2lkIE1l
ZGlhQ29udHJvbEVtYmVkZGVkUGFuZWxFbGVtZW50OjptYWtlT3BhcXVlKCkKK3sKKyAgICBpZiAo
bV9vcGFxdWUpCisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBkdXJhdGlvbiA9IGRvY3Vt
ZW50KCktPnBhZ2UoKSA/IGRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+bWVkaWFDb250cm9s
c0ZhZGVJbkR1cmF0aW9uKCkgOiAwOworCisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwgQ1NTUHJvcGVydHlPcGFjaXR5KTsKKyAg
ICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0
aW9uLCBkdXJhdGlvbiwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKTsKKyAgICBzZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5T3BhY2l0eSwgMS4wLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUik7CisKKyAgICBtX29wYXF1ZSA9IHRydWU7CisKKyAgICBpZiAobV9pc0Rpc3Bs
YXllZCkKKyAgICAgICAgc2hvdygpOworfQorCit2b2lkIE1lZGlhQ29udHJvbEVtYmVkZGVkUGFu
ZWxFbGVtZW50OjptYWtlVHJhbnNwYXJlbnQoKQoreworICAgIGlmICghbV9vcGFxdWUpCisgICAg
ICAgIHJldHVybjsKKworICAgIGRvdWJsZSBkdXJhdGlvbiA9IGRvY3VtZW50KCktPnBhZ2UoKSA/
IGRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+bWVkaWFDb250cm9sc0ZhZGVPdXREdXJhdGlv
bigpIDogMDsKKworICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2l0aW9uUHJvcGVydHksIENTU1Byb3BlcnR5T3BhY2l0eSk7CisgICAgc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiwgZHVyYXRpb24s
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUyk7CisgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShD
U1NQcm9wZXJ0eU9wYWNpdHksIDAuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwor
CisgICAgbV9vcGFxdWUgPSBmYWxzZTsKKyAgICBzdGFydFRpbWVyKCk7Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
IGV2ZW50KQoreworICAgIE1lZGlhQ29udHJvbERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoZXZlbnQpOworCisgICAgaWYgKGV2ZW50LT5pc01vdXNlRXZlbnQoKSkgeworICAgICAgICBM
YXlvdXRQb2ludCBsb2NhdGlvbiA9IHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCktPmFi
c29sdXRlTG9jYXRpb24oKTsKKyAgICAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLm1vdXNlZG93bkV2ZW50ICYmIGV2ZW50LT50YXJnZXQoKSA9PSB0aGlzKSB7CisgICAgICAg
ICAgICBzdGFydERyYWcobG9jYXRpb24pOworICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRI
YW5kbGVkKCk7CisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVz
KCkubW91c2Vtb3ZlRXZlbnQgJiYgbV9pc0JlaW5nRHJhZ2dlZCkKKyAgICAgICAgICAgIGNvbnRp
bnVlRHJhZyhsb2NhdGlvbik7CisgICAgICAgIGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLm1vdXNldXBFdmVudCAmJiBtX2lzQmVpbmdEcmFnZ2VkKSB7CisgICAgICAgICAg
ICBjb250aW51ZURyYWcobG9jYXRpb24pOworICAgICAgICAgICAgZW5kRHJhZygpOworICAgICAg
ICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3ZvaWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnNldENhbkJlRHJhZ2dlZChi
b29sIGNhbkJlRHJhZ2dlZCkKK3sKKyAgICBpZiAobV9jYW5CZURyYWdnZWQgPT0gY2FuQmVEcmFn
Z2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NhbkJlRHJhZ2dlZCA9IGNhbkJlRHJhZ2dl
ZDsKKworICAgIGlmICghY2FuQmVEcmFnZ2VkKQorICAgICAgICBlbmREcmFnKCk7Cit9CisKK3Zv
aWQgTWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ6OnNldElzRGlzcGxheWVkKGJvb2wg
aXNEaXNwbGF5ZWQpCit7CisgICAgbV9pc0Rpc3BsYXllZCA9IGlzRGlzcGxheWVkOworfQorCitp
bmxpbmUgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudDo6
TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudChEb2N1bWVu
dCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRp
YUNvbnRyb2xzUGFuZWwpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVl
blRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVE
aXNwbGF5Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAg
ICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVu
dD4gZWxlbWVudCA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZURpc3Bs
YXlDb250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFz
ZSgpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1l
RGlzcGxheUNvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250
cm9scy1mdWxsc2NyZWVuLXRpbWUtZGlzcGxheS1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlkOworfQorCitpbmxpbmUgTWVkaWFD
b250cm9sRnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1l
ZGlhQ29udHJvbERpdkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhQ29udHJvbHNQYW5lbCkKK3sKK30K
KworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVu
dD4gTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShE
b2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5C
dXR0b25Db250YWluZXJFbGVtZW50PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgcmV0dXJu
IGVsZW1lbnQucmVsZWFzZSgpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQt
bWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi1idXR0b24tY29udGFpbmVyIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKworaW5saW5lIE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudDo6TWVkaWFDb250cm9sRnVs
bHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1l
ZGlhQ29udHJvbERpdkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhUmV3aW5kQnV0dG9uKQoreworfQor
CitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudD4g
TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9u
RGl2aWRlckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNj
cmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50KGRvY3VtZW50KSk7CisgICAgcmV0dXJuIGVsZW1lbnQu
cmVsZWFzZSgpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5CdXR0b25EaXZpZGVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRy
b2xzLWZ1bGxzY3JlZW4tYnV0dG9uLWRpdmlkZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlkOworfQorCitpbmxpbmUgTWVkaWFDb250cm9sUGxh
eUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJF
bGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1lbnQo
ZG9jdW1lbnQsIE1lZGlhQ29udHJvbHNQYW5lbCkKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNv
bnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sUGxheUJ1dHRvbkNv
bnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVmUHRy
PE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50PiBlbGVtZW50ID0gYWRvcHRS
ZWYobmV3IE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7
CisgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcm
IE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13
ZWJraXQtbWVkaWEtY29udHJvbHMtcGxheS1idXR0b24tY29udGFpbmVyIiwgQXRvbWljU3RyaW5n
OjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVybiBpZDsKK30KKworaW5saW5lIE1l
ZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6TWVkaWFDb250cm9sUGxhY2Vob2xkZXJFbGVt
ZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1lbnQoZG9j
dW1lbnQsIE1lZGlhQ29udHJvbHNQYW5lbCkKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xQbGFjZWhvbGRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFBsYWNlaG9sZGVyRWxlbWVudDo6Y3Jl
YXRlKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGxhY2Vo
b2xkZXJFbGVtZW50PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFBsYWNlaG9s
ZGVyRWxlbWVudChkb2N1bWVudCkpOworICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKK30K
KworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQ6OnNo
YWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGFjZWhvbGRlciIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK2lubGlu
ZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRp
YUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhUGxheUJ1dHRvbikKK3sKK30KKwor
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQ+IE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCkKK3sKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVt
ZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0
b25FbGVtZW50KGRvY3VtZW50KSk7CisgICAgYnV0dG9uLT5jcmVhdGVTaGFkb3dTdWJ0cmVlKCk7
CisgICAgYnV0dG9uLT5zZXRUeXBlKCJidXR0b24iKTsKKyAgICByZXR1cm4gYnV0dG9uLnJlbGVh
c2UoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CisgICAgICAgIGlmIChtZWRpYUNvbnRy
b2xsZXIoKS0+Y2FuUGxheSgpKQorICAgICAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnBsYXko
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnBhdXNlKCk7
CisgICAgICAgIHVwZGF0ZURpc3BsYXlUeXBlKCk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0
SGFuZGxlZCgpOworICAgIH0KKyAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKGV2ZW50KTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVs
ZW1lbnQ6OnVwZGF0ZURpc3BsYXlUeXBlKCkKK3sKKyAgICBzZXREaXNwbGF5VHlwZShtZWRpYUNv
bnRyb2xsZXIoKS0+Y2FuUGxheSgpID8gTWVkaWFQbGF5QnV0dG9uIDogTWVkaWFQYXVzZUJ1dHRv
bik7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlC
dXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNj
cmVlbi1wbGF5LWJ1dHRvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICByZXR1cm4gaWQ7Cit9CisKK2lubGluZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNj
cmVlbkJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9u
RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1l
bnQoZG9jdW1lbnQsIE1lZGlhRXhpdEZ1bGxzY3JlZW5CdXR0b24pCit7Cit9CisKK1Bhc3NSZWZQ
dHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCog
ZG9jdW1lbnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVu
QnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudChkb2N1bWVudCkpOworICAgIGJ1dHRvbi0+Y3JlYXRl
U2hhZG93U3VidHJlZSgpOworICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7CisgICAgYnV0
dG9uLT5oaWRlKCk7CisgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkuY2xpY2tFdmVudCkgeworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAgICAg
Ly8gT25seSB1c2UgdGhlIG5ldyBmdWxsIHNjcmVlbiBBUEkgaWYgdGhlIGZ1bGxTY3JlZW5FbmFi
bGVkIHNldHRpbmcgaGFzIAorICAgICAgICAvLyBiZWVuIGV4cGxpY2l0bHkgZW5hYmxlZC4gT3Ro
ZXJ3aXNlLCB1c2UgdGhlIG9sZCBmdWxsc2NyZWVuIEFQSS4gVGhpcworICAgICAgICAvLyBhbGxv
d3MgYXBwcyB3aGljaCBlbWJlZCBhIFdlYlZpZXcgdG8gcmV0YWluIHRoZSBleGlzdGluZyBmdWxs
IHNjcmVlbgorICAgICAgICAvLyB2aWRlbyBpbXBsZW1lbnRhdGlvbiB3aXRob3V0IHJlcXVpcmlu
ZyB0aGVtIHRvIGltcGxlbWVudCB0aGVpciBvd24gZnVsbCAKKyAgICAgICAgLy8gc2NyZWVuIGJl
aGF2aW9yLgorICAgICAgICBpZiAoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSAmJiBkb2N1bWVudCgp
LT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKSB7CisgICAgICAgICAgICBpZiAoZG9j
dW1lbnQoKS0+d2Via2l0SXNGdWxsU2NyZWVuKCkgJiYgZG9jdW1lbnQoKS0+d2Via2l0Q3VycmVu
dEZ1bGxTY3JlZW5FbGVtZW50KCkgPT0gdG9QYXJlbnRNZWRpYUVsZW1lbnQodGhpcykpCisgICAg
ICAgICAgICAgICAgZG9jdW1lbnQoKS0+d2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPnJlcXVlc3RGdWxsU2NyZWVu
Rm9yRWxlbWVudCh0b1BhcmVudE1lZGlhRWxlbWVudCh0aGlzKSwgMCwgRG9jdW1lbnQ6OkV4ZW1w
dElGcmFtZUFsbG93RnVsbFNjcmVlblJlcXVpcmVtZW50KTsKKyAgICAgICAgfSBlbHNlCisjZW5k
aWYKKyAgICAgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5lbnRlckZ1bGxzY3JlZW4oKTsKKyAg
ICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgfQorICAgIEhUTUxJbnB1dEVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworfQorCitjb25zdCBBdG9taWNTdHJp
bmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6c2hhZG93
UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tZnVsbHNjcmVlbi1idXR0
b24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgcmV0dXJuIGlk
OworfQorCit2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVu
dDo6c2V0SXNGdWxsc2NyZWVuKGJvb2wgaXNGdWxsc2NyZWVuKQoreworICAgIHNldERpc3BsYXlU
eXBlKE1lZGlhRXhpdEZ1bGxzY3JlZW5CdXR0b24pOworfQorCitpbmxpbmUgTWVkaWFDb250cm9s
RnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVl
blRpbWVsaW5lQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRp
YUNvbnRyb2xEaXZFbGVtZW50KGRvY3VtZW50LCBNZWRpYVRpbWVsaW5lQ29udGFpbmVyKQorewor
fQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVs
ZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNy
ZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVk
aWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyRWxlbWVudChkb2N1bWVudCkpOwor
ICAgIGVsZW1lbnQtPmhpZGUoKTsKKyAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7Cit9CisK
K2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29udGFp
bmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3Jl
ZW4tdGltZWxpbmUtY29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHJldHVybiBpZDsKK30KKworTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5l
RWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudChEb2N1bWVudCog
ZG9jdW1lbnQsIE1lZGlhQ29udHJvbHMqIGNvbnRyb2xzKQorICAgIDogTWVkaWFDb250cm9sSW5w
dXRFbGVtZW50KGRvY3VtZW50LCBNZWRpYVNsaWRlcikKKyAgICAsIG1fY29udHJvbHMoY29udHJv
bHMpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxl
bWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6Y3JlYXRlKERvY3Vt
ZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCit7CisgICAgQVNTRVJUKGNv
bnRyb2xzKTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVt
ZW50PiB0aW1lbGluZSA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxp
bmVFbGVtZW50KGRvY3VtZW50LCBjb250cm9scykpOworICAgIHRpbWVsaW5lLT5jcmVhdGVTaGFk
b3dTdWJ0cmVlKCk7CisgICAgdGltZWxpbmUtPnNldFR5cGUoInJhbmdlIik7CisgICAgdGltZWxp
bmUtPnNldEF0dHJpYnV0ZShwcmVjaXNpb25BdHRyLCAiZmxvYXQiKTsKKyAgICByZXR1cm4gdGlt
ZWxpbmUucmVsZWFzZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGlu
ZUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQoreworICAgIC8vIExl
ZnQgYnV0dG9uIGlzIDAuIFJlamVjdHMgbW91c2UgZXZlbnRzIG5vdCBmcm9tIGxlZnQgYnV0dG9u
LgorICAgIGlmIChldmVudC0+aXNNb3VzZUV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVu
dCo+KGV2ZW50KS0+YnV0dG9uKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghYXR0YWNo
ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLm1vdXNlZG93bkV2ZW50KQorICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+YmVnaW5T
Y3J1YmJpbmcoKTsKKworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3Vz
ZXVwRXZlbnQpCisgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5lbmRTY3J1YmJpbmcoKTsKKwor
ICAgIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7
CisKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQg
fHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCB8fCBldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZmxvYXQgdGltZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodmFsdWUoKS50b0RvdWJs
ZSgpKTsKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuaW5wdXRFdmVudCAm
JiB0aW1lICE9IG1lZGlhQ29udHJvbGxlcigpLT5jdXJyZW50VGltZSgpKSB7CisgICAgICAgIEV4
Y2VwdGlvbkNvZGUgZWM7CisgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRDdXJyZW50VGlt
ZSh0aW1lLCBlYyk7CisgICAgfQorCisgICAgUmVuZGVyU2xpZGVyKiBzbGlkZXIgPSB0b1JlbmRl
clNsaWRlcihyZW5kZXJlcigpKTsKKyAgICBpZiAoc2xpZGVyICYmIHNsaWRlci0+aW5EcmFnTW9k
ZSgpKQorICAgICAgICBtX2NvbnRyb2xzLT51cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKTsKK30K
KworYm9vbCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50Ojp3aWxsUmVzcG9u
ZFRvTW91c2VDbGlja0V2ZW50cygpCit7CisgICAgaWYgKCFhdHRhY2hlZCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpzZXRQb3NpdGlvbihmbG9hdCBjdXJyZW50VGltZSkK
K3sKKyAgICBzZXRWYWx1ZShTdHJpbmc6Om51bWJlcihjdXJyZW50VGltZSkpOworfQorCit2b2lk
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUVsZW1lbnQ6OnNldER1cmF0aW9uKGZsb2F0
IGR1cmF0aW9uKQoreworICAgIHNldEF0dHJpYnV0ZShtYXhBdHRyLCBTdHJpbmc6Om51bWJlcihp
c2Zpbml0ZShkdXJhdGlvbikgPyBkdXJhdGlvbiA6IDApKTsKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50OjpzaGFkb3dQc2V1ZG9J
ZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAo
Ii13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi10aW1lbGluZSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK1Bhc3NSZWZQ
dHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudD4gTWVk
aWFDb250cm9sRnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKERv
Y3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQoZG9jdW1lbnQpKTsKK30KKwor
TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6TWVkaWFD
b250cm9sRnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudChEb2N1bWVudCogZG9j
dW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQoZG9jdW1lbnQsIE1l
ZGlhVGltZVJlbWFpbmluZ0Rpc3BsYXkpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVk
aWFDb250cm9sRnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6c2hhZG93UHNl
dWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBp
ZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdGltZS1yZW1haW5pbmctZGlz
cGxheSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4g
aWQ7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlz
cGxheUVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQoZG9jdW1l
bnQpKTsKK30KKworTWVkaWFDb250cm9sRnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheUVsZW1l
bnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50KERvY3Vt
ZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChkb2N1
bWVudCwgTWVkaWFDdXJyZW50VGltZURpc3BsYXkpCit7Cit9CisKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6OnNoYWRv
d1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWN1cnJlbnQtdGltZS1k
aXNwbGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHJldHVy
biBpZDsKK30KKworTWVkaWFDb250cm9sQXVkaW9NdXRlQnV0dG9uRWxlbWVudDo6TWVkaWFDb250
cm9sQXVkaW9NdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJv
bHMqIGNvbnRyb2xzKQorICAgIDogTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQoZG9jdW1l
bnQsIE1lZGlhTXV0ZUJ1dHRvbikKKyAgICAsIG1fY29udHJvbHMoY29udHJvbHMpCit7Cit9CisK
K1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sQXVkaW9NdXRlQnV0dG9uRWxlbWVudD4gTWVkaWFDb250
cm9sQXVkaW9NdXRlQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgTWVk
aWFDb250cm9scyogY29udHJvbHMpCit7CisgICAgQVNTRVJUKGNvbnRyb2xzKTsKKworICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xBdWRpb011dGVCdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJl
ZihuZXcgTWVkaWFDb250cm9sQXVkaW9NdXRlQnV0dG9uRWxlbWVudChkb2N1bWVudCwgY29udHJv
bHMpKTsKKyAgICBidXR0b24tPmNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKKyAgICBidXR0b24tPnNl
dFR5cGUoImJ1dHRvbiIpOworICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOworfQorCit2b2lk
IE1lZGlhQ29udHJvbEF1ZGlvTXV0ZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2ZW50KQoreworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5t
b3VzZWRvd25FdmVudCkgeworICAgICAgICAvLyBXZSBkbyBub3QgbXV0ZSB3aGVuIHRoZSBtZWRp
YSBwbGF5ZXIgdm9sdW1lL211dGUgY29udHJvbCBpcyB0b3VjaGVkLgorICAgICAgICAvLyBJbnN0
ZWFkIHdlIHNob3cvaGlkZSB0aGUgdm9sdW1lIHNsaWRlci4KKyAgICAgICAgc3RhdGljX2Nhc3Q8
TWVkaWFDb250cm9sc0JsYWNrQmVycnkqPihtX2NvbnRyb2xzKS0+dG9nZ2xlVm9sdW1lU2xpZGVy
KCk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJF
dmVudCkKKyAgICAgICAgbV9jb250cm9scy0+c2hvd1ZvbHVtZVNsaWRlcigpOworCisgICAgTWVk
aWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwor
fQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEF1ZGlvTXV0ZUJ1dHRvbkVsZW1l
bnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1hdWRpby1tdXRlLWJ1dHRv
biIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICByZXR1cm4gaWQ7
Cit9CisKK01lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeShE
b2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xzKGRvY3VtZW50KQorICAgICwg
bV9idXR0b25Db250YWluZXIoMCkKKyAgICAsIG1fdGltZURpc3BsYXlDb250YWluZXIoMCkKKyAg
ICAsIG1fZnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyKDApCisgICAgLCBtX2Z1bGxzY3Jl
ZW5QbGF5QnV0dG9uKDApCisgICAgLCBtX2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXkoMCkK
KyAgICAsIG1fZnVsbHNjcmVlblRpbWVsaW5lKDApCisgICAgLCBtX3RpbWVSZW1haW5pbmdEaXNw
bGF5KDApCisgICAgLCBtX2Z1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheSgwKQorICAgICwg
bV90aW1lbGluZUNvbnRhaW5lcigwKQorICAgICwgbV9mdWxsc2NyZWVuVGltZWxpbmVDb250YWlu
ZXIoMCkKKyAgICAsIG1fZnVsbFNjcmVlbkRpdmlkZXIoMCkKKyAgICAsIG1fZnVsbHNjcmVlbkZ1
bGxTY3JlZW5CdXR0b24oMCkKKyAgICAsIG1fbXV0ZUJ1dHRvbigwKQorICAgICwgbV92b2x1bWVT
bGlkZXJDb250YWluZXIoMCkKKyAgICAsIG1fZW1iZWRkZWRQYW5lbCgwKQorICAgICwgbV9mdWxs
U2NyZWVuQnV0dG9uQ29udGFpbmVyKDApCisgICAgLCBtX3BsYXlCdXR0b25Db250YWluZXIoMCkK
KyAgICAsIG1fcGxhY2Vob2xkZXIoMCkKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xz
PiBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIHJldHVy
biBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6Y3JlYXRlQ29udHJvbHMoZG9jdW1lbnQpOworfQor
CitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5PiBNZWRpYUNvbnRyb2xzQmxhY2tC
ZXJyeTo6Y3JlYXRlQ29udHJvbHMoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIGlmICghZG9j
dW1lbnQtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250
cm9sc0JsYWNrQmVycnk+IGNvbnRyb2xzID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbHNCbGFj
a0JlcnJ5KGRvY3VtZW50KSk7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxFbGVtZW50
PiBwYW5lbCA9IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAg
ICBSZWZQdHI8TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ+IGVtYmVkUGFuZWwgPSBN
ZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAg
IEV4Y2VwdGlvbkNvZGUgZWM7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkVs
ZW1lbnQ+IHBsYXlCdXR0b24gPSBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9wbGF5QnV0dG9uID0gcGxheUJ1dHRvbi5nZXQo
KTsKKyAgICBlbWJlZFBhbmVsLT5hcHBlbmRDaGlsZChwbGF5QnV0dG9uLnJlbGVhc2UoKSwgZWMs
IHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVk
aWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50PiB0aW1lbGluZUNvbnRhaW5lciA9IE1l
ZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKwor
ICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gTWVkaWFD
b250cm9sVGltZWxpbmVFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGNvbnRyb2xzLmdldCgpKTsK
KyAgICBjb250cm9scy0+bV90aW1lbGluZSA9IHRpbWVsaW5lLmdldCgpOworICAgIHRpbWVsaW5l
Q29udGFpbmVyLT5hcHBlbmRDaGlsZCh0aW1lbGluZS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAg
ICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRp
bWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudD4gdGltZURpc3BsYXlDb250YWluZXIgPSBNZWRpYUNv
bnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisKKyAg
ICBSZWZQdHI8TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4gY3VycmVudFRp
bWVEaXNwbGF5ID0gTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9jdXJyZW50VGltZURpc3BsYXkgPSBjdXJyZW50
VGltZURpc3BsYXkuZ2V0KCk7CisgICAgdGltZURpc3BsYXlDb250YWluZXItPmFwcGVuZENoaWxk
KGN1cnJlbnRUaW1lRGlzcGxheS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdE
aXNwbGF5RWxlbWVudD4gdGltZVJlbWFpbmluZ0Rpc3BsYXkgPSBNZWRpYUNvbnRyb2xUaW1lUmVt
YWluaW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgY29udHJvbHMtPm1f
dGltZVJlbWFpbmluZ0Rpc3BsYXkgPSB0aW1lUmVtYWluaW5nRGlzcGxheS5nZXQoKTsKKyAgICB0
aW1lRGlzcGxheUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodGltZVJlbWFpbmluZ0Rpc3BsYXkucmVs
ZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IGNvbnRyb2xzLT5tX3RpbWVEaXNwbGF5Q29udGFpbmVyID0gdGltZURpc3BsYXlDb250YWluZXIu
Z2V0KCk7CisgICAgdGltZWxpbmVDb250YWluZXItPmFwcGVuZENoaWxkKHRpbWVEaXNwbGF5Q29u
dGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBjb250cm9scy0+bV90aW1lbGluZUNvbnRhaW5lciA9IHRpbWVsaW5lQ29udGFp
bmVyLmdldCgpOworICAgIGVtYmVkUGFuZWwtPmFwcGVuZENoaWxkKHRpbWVsaW5lQ29udGFpbmVy
LnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGZ1bGxTY3Jl
ZW5CdXR0b24gPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KTsKKyAgICBjb250cm9scy0+bV9mdWxsU2NyZWVuQnV0dG9uID0gZnVsbFNjcmVlbkJ1
dHRvbi5nZXQoKTsKKyAgICBlbWJlZFBhbmVsLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuQnV0dG9u
LnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKS0+dGhlbWUoKS0+dXNlc01lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlcigpKSB7CisgICAgICAgIC8vIFRoZSBtdXRlIGJ1dHRvbiBhbmQgdGhlIHNsaWRlciBl
bGVtZW50IHNob3VsZCBiZSBpbiB0aGUgc2FtZSBkaXYuCisgICAgICAgIFJlZlB0cjxIVE1MRGl2
RWxlbWVudD4gdm9sdW1lQ29udHJvbENvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQpOworCisgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250
YWluZXJFbGVtZW50PiB2b2x1bWVTbGlkZXJDb250YWluZXIgPSBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworCisgICAgICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IE1lZGlhQ29u
dHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICAgICAg
Y29udHJvbHMtPm1fdm9sdW1lU2xpZGVyID0gc2xpZGVyLmdldCgpOworICAgICAgICB2b2x1bWVT
bGlkZXJDb250YWluZXItPmFwcGVuZENoaWxkKHNsaWRlci5yZWxlYXNlKCksIGVjLCB0cnVlKTsK
KyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY29udHJv
bHMtPm1fdm9sdW1lU2xpZGVyQ29udGFpbmVyID0gdm9sdW1lU2xpZGVyQ29udGFpbmVyLmdldCgp
OworICAgICAgICB2b2x1bWVDb250cm9sQ29udGFpbmVyLT5hcHBlbmRDaGlsZCh2b2x1bWVTbGlk
ZXJDb250YWluZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgICAgIGlmIChlYykKKyAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sQXVkaW9NdXRlQnV0
dG9uRWxlbWVudD4gbXV0ZUJ1dHRvbiA9IE1lZGlhQ29udHJvbEF1ZGlvTXV0ZUJ1dHRvbkVsZW1l
bnQ6OmNyZWF0ZShkb2N1bWVudCwgY29udHJvbHMuZ2V0KCkpOworICAgICAgICBjb250cm9scy0+
bV9tdXRlQnV0dG9uID0gbXV0ZUJ1dHRvbi5nZXQoKTsKKyAgICAgICAgdm9sdW1lQ29udHJvbENv
bnRhaW5lci0+YXBwZW5kQ2hpbGQobXV0ZUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAg
ICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgZW1iZWRQYW5l
bC0+YXBwZW5kQ2hpbGQodm9sdW1lQ29udHJvbENvbnRhaW5lci5yZWxlYXNlKCksIGVjLCB0cnVl
KTsKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAg
UmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IGZ1
bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lciA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lbGlu
ZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisKKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudD4gZnVsbHNjcmVlblRpbWVsaW5lID0gTWVk
aWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBjb250
cm9scy5nZXQoKSk7CisgICAgY29udHJvbHMtPm1fZnVsbHNjcmVlblRpbWVsaW5lID0gZnVsbHNj
cmVlblRpbWVsaW5lLmdldCgpOworICAgIGZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lci0+YXBw
ZW5kQ2hpbGQoZnVsbHNjcmVlblRpbWVsaW5lLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlm
IChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNj
cmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudD4gZnVsbHNjcmVlblRpbWVEaXNwbGF5Q29u
dGFpbmVyID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
Q3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4gZnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxheSA9
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQpOworICAgIGNvbnRyb2xzLT5tX2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXkg
PSBmdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5LmdldCgpOworICAgIGZ1bGxzY3JlZW5UaW1l
RGlzcGxheUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoZnVsbHNjcmVlbkN1cnJlbnRUaW1lRGlzcGxh
eS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVs
ZW1lbnQ+IGZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheSA9IE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAg
Y29udHJvbHMtPm1fZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5ID0gZnVsbHNjcmVlblRp
bWVSZW1haW5pbmdEaXNwbGF5LmdldCgpOworICAgIGZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRh
aW5lci0+YXBwZW5kQ2hpbGQoZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5LnJlbGVhc2Uo
KSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBjb250
cm9scy0+bV9mdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXIgPSBmdWxsc2NyZWVuVGltZURp
c3BsYXlDb250YWluZXIuZ2V0KCk7CisgICAgZnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyLT5h
cHBlbmRDaGlsZChmdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXIucmVsZWFzZSgpLCBlYywg
dHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNvbnRyb2xzLT5t
X2Z1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lciA9IGZ1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5l
ci5nZXQoKTsKKyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoZnVsbHNjcmVlblRpbWVsaW5lQ29udGFp
bmVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWluZXJFbGVtZW50PiBi
dXR0b25Hcm91cENvbnRhaW5lciA9IE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIC8vIEZJWE1FOiBPbmx5IGNyZWF0ZSB3aGVu
IG5lZWRlZCA8aHR0cDovL3dlYmtpdC5vcmcvYi81NzE2Mz4KKyAgICBSZWZQdHI8TWVkaWFDb250
cm9sRnVsbHNjcmVlbkJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ+IGZ1bGxTY3JlZW5CdXR0b25Db250
YWluZXIgPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9mdWxsU2NyZWVuQnV0dG9uQ29udGFpbmVy
ID0gZnVsbFNjcmVlbkJ1dHRvbkNvbnRhaW5lci5nZXQoKTsKKyAgICBSZWZQdHI8TWVkaWFDb250
cm9sRnVsbHNjcmVlbkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBmdWxsc2NyZWVuRnVsbFNjcmVl
bkJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9mdWxsc2NyZWVuRnVsbFNjcmVlbkJ1
dHRvbiA9IGZ1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLmdldCgpOworICAgIGZ1bGxTY3JlZW5C
dXR0b25Db250YWluZXItPmFwcGVuZENoaWxkKGZ1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLnJl
bGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
UmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25EaXZpZGVyRWxlbWVudD4gZnVsbFNj
cmVlbkRpdmlkZXIgPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRGl2aWRlckVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudCk7CisgICAgY29udHJvbHMtPm1fZnVsbFNjcmVlbkRpdmlkZXIgPSBm
dWxsU2NyZWVuRGl2aWRlci5nZXQoKTsKKyAgICBmdWxsU2NyZWVuQnV0dG9uQ29udGFpbmVyLT5h
cHBlbmRDaGlsZChmdWxsU2NyZWVuRGl2aWRlci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBp
ZiAoZWMpCisgICAgICAgIHJldHVybiAwOworICAgIGJ1dHRvbkdyb3VwQ29udGFpbmVyLT5hcHBl
bmRDaGlsZChmdWxsU2NyZWVuQnV0dG9uQ29udGFpbmVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOwor
ICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8TWVkaWFDb250cm9s
UGxheUJ1dHRvbkNvbnRhaW5lckVsZW1lbnQ+IHBsYXlCdXR0b25Db250YWluZXIgPSBNZWRpYUNv
bnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBj
b250cm9scy0+bV9wbGF5QnV0dG9uQ29udGFpbmVyID0gcGxheUJ1dHRvbkNvbnRhaW5lci5nZXQo
KTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50PiBm
dWxsc2NyZWVuUGxheUJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBjb250cm9scy0+bV9mdWxsc2NyZWVuUGxheUJ1
dHRvbiA9IGZ1bGxzY3JlZW5QbGF5QnV0dG9uLmdldCgpOworICAgIHBsYXlCdXR0b25Db250YWlu
ZXItPmFwcGVuZENoaWxkKGZ1bGxzY3JlZW5QbGF5QnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUp
OworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgYnV0dG9uR3JvdXBDb250YWlu
ZXItPmFwcGVuZENoaWxkKHBsYXlCdXR0b25Db250YWluZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7
CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRy
b2xQbGFjZWhvbGRlckVsZW1lbnQ+IHBsYWNlaG9sZGVyID0gTWVkaWFDb250cm9sUGxhY2Vob2xk
ZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIGNvbnRyb2xzLT5tX3BsYWNlaG9sZGVy
ID0gcGxhY2Vob2xkZXIuZ2V0KCk7CisgICAgYnV0dG9uR3JvdXBDb250YWluZXItPmFwcGVuZENo
aWxkKHBsYWNlaG9sZGVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBjb250cm9scy0+bV9idXR0b25Db250YWluZXIgPSBidXR0b25H
cm91cENvbnRhaW5lci5nZXQoKTsKKyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoYnV0dG9uR3JvdXBD
b250YWluZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIGlmIChkb2N1bWVudC0+cGFnZSgpLT50aGVtZSgpLT5zdXBwb3J0c0Nsb3Nl
ZENhcHRpb25pbmcoKSkgeworICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2Vk
Q2FwdGlvbnNCdXR0b25FbGVtZW50PiB0b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA9IE1lZGlh
Q29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
LCBjb250cm9scy5nZXQoKSk7CisgICAgICAgIGNvbnRyb2xzLT5tX3RvZ2dsZUNsb3NlZENhcHRp
b25zQnV0dG9uID0gdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24uZ2V0KCk7CisgICAgICAgIHBh
bmVsLT5hcHBlbmRDaGlsZCh0b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi5yZWxlYXNlKCksIGVj
LCB0cnVlKTsKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
CisgICAgY29udHJvbHMtPm1fcGFuZWwgPSBwYW5lbC5nZXQoKTsKKyAgICBjb250cm9scy0+YXBw
ZW5kQ2hpbGQocGFuZWwucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CisgICAgaWYgKGVjKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIGNvbnRyb2xzLT5tX2VtYmVkZGVkUGFuZWwgPSBlbWJlZFBhbmVs
LmdldCgpOworICAgIGNvbnRyb2xzLT5hcHBlbmRDaGlsZChlbWJlZFBhbmVsLnJlbGVhc2UoKSwg
ZWMsIHRydWUpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4g
Y29udHJvbHMucmVsZWFzZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojpz
ZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBjb250cm9sbGVyKQor
eworICAgIGlmIChtX21lZGlhQ29udHJvbGxlciA9PSBjb250cm9sbGVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBNZWRpYUNvbnRyb2xzOjpzZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7
CisKKyAgICBpZiAobV9idXR0b25Db250YWluZXIpCisgICAgICAgIG1fYnV0dG9uQ29udGFpbmVy
LT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fdGltZURpc3BsYXlD
b250YWluZXIpCisgICAgICAgIG1fdGltZURpc3BsYXlDb250YWluZXItPnNldE1lZGlhQ29udHJv
bGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWlu
ZXIpCisgICAgICAgIG1fZnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyLT5zZXRNZWRpYUNv
bnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fZnVsbHNjcmVlblBsYXlCdXR0b24pCisg
ICAgICAgIG1fZnVsbHNjcmVlblBsYXlCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9s
bGVyKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5KQorICAgICAgICBt
X2Z1bGxzY3JlZW5DdXJyZW50VGltZURpc3BsYXktPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9s
bGVyKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuVGltZWxpbmUpCisgICAgICAgIG1fZnVsbHNjcmVl
blRpbWVsaW5lLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fdGlt
ZVJlbWFpbmluZ0Rpc3BsYXkpCisgICAgICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldE1l
ZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuVGltZVJlbWFp
bmluZ0Rpc3BsYXkpCisgICAgICAgIG1fZnVsbHNjcmVlblRpbWVSZW1haW5pbmdEaXNwbGF5LT5z
ZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fdGltZWxpbmVDb250YWlu
ZXIpCisgICAgICAgIG1fdGltZWxpbmVDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250
cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXIpCisgICAgICAg
IG1fZnVsbHNjcmVlblRpbWVsaW5lQ29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJv
bGxlcik7CisgICAgaWYgKG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24pCisgICAgICAgIG1f
ZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVy
KTsKKyAgICBpZiAobV9tdXRlQnV0dG9uKQorICAgICAgICBtX211dGVCdXR0b24tPnNldE1lZGlh
Q29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV92b2x1bWVTbGlkZXJDb250YWluZXIp
CisgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29u
dHJvbGxlcik7CisgICAgaWYgKG1fZW1iZWRkZWRQYW5lbCkKKyAgICAgICAgbV9lbWJlZGRlZFBh
bmVsLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgcmVzZXQoKTsKK30KKwor
dm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6c2hvdygpCit7CisgICAgaWYgKG1faXNGdWxs
c2NyZWVuKSB7CisgICAgICAgIG1fcGFuZWwtPnNldElzRGlzcGxheWVkKHRydWUpOworICAgICAg
ICBtX3BhbmVsLT5zaG93KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9lbWJlZGRlZFBhbmVs
LT5zZXRJc0Rpc3BsYXllZCh0cnVlKTsKKyAgICAgICAgbV9lbWJlZGRlZFBhbmVsLT5zaG93KCk7
CisgICAgfQorfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpoaWRlKCkKK3sKKyAg
ICBpZiAobV9pc0Z1bGxzY3JlZW4pIHsKKyAgICAgICAgbV9wYW5lbC0+c2V0SXNEaXNwbGF5ZWQo
ZmFsc2UpOworICAgICAgICBtX3BhbmVsLT5oaWRlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
bV9lbWJlZGRlZFBhbmVsLT5zZXRJc0Rpc3BsYXllZChmYWxzZSk7CisgICAgICAgIG1fZW1iZWRk
ZWRQYW5lbC0+aGlkZSgpOworICAgICAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+aGlkZSgp
OworICAgIH0KK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6bWFrZU9wYXF1ZSgp
Cit7CisgICAgaWYgKG1faXNGdWxsc2NyZWVuKQorICAgICAgICBtX3BhbmVsLT5tYWtlT3BhcXVl
KCk7CisgICAgZWxzZQorICAgICAgICBtX2VtYmVkZGVkUGFuZWwtPm1ha2VPcGFxdWUoKTsKK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6bWFrZVRyYW5zcGFyZW50KCkKK3sKKyAg
ICBpZiAobV9pc0Z1bGxzY3JlZW4pCisgICAgICAgIG1fcGFuZWwtPm1ha2VUcmFuc3BhcmVudCgp
OworICAgIGVsc2UgeworICAgICAgICBtX2VtYmVkZGVkUGFuZWwtPm1ha2VUcmFuc3BhcmVudCgp
OworICAgICAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+aGlkZSgpOworICAgIH0KK30KKwor
dm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cmVzZXQoKQoreworICAgIFBhZ2UqIHBhZ2Ug
PSBkb2N1bWVudCgpLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisK
KyAgICB1cGRhdGVTdGF0dXNEaXNwbGF5KCk7CisKKyAgICBpZiAobV9mdWxsU2NyZWVuQnV0dG9u
KSB7CisgICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+c3VwcG9ydHNGdWxsc2NyZWVuKCkp
CisgICAgICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPnNob3coKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7CisgICAgfQorICAgIGlmICht
X2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uKSB7CisgICAgICAgIGlmIChtX21lZGlhQ29udHJv
bGxlci0+c3VwcG9ydHNGdWxsc2NyZWVuKCkpCisgICAgICAgICAgICBtX2Z1bGxzY3JlZW5GdWxs
U2NyZWVuQnV0dG9uLT5zaG93KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZnVsbHNj
cmVlbkZ1bGxTY3JlZW5CdXR0b24tPmhpZGUoKTsKKyAgICB9CisgICAgZmxvYXQgZHVyYXRpb24g
PSBtX21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24oKTsKKyAgICBpZiAoaXNmaW5pdGUoZHVyYXRp
b24pIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRp
YVNsaWRlclBhcnQpKSB7CisgICAgICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5j
dXJyZW50VGltZSgpOworICAgICAgICBtX3RpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7
CisgICAgICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lLT5zZXREdXJhdGlvbihkdXJhdGlvbik7Cisg
ICAgICAgIG1fdGltZWxpbmVDb250YWluZXItPnNob3coKTsKKyAgICAgICAgbV9mdWxsc2NyZWVu
VGltZWxpbmVDb250YWluZXItPnNob3coKTsKKyAgICAgICAgbV90aW1lbGluZS0+c2V0UG9zaXRp
b24obm93KTsKKyAgICAgICAgbV9mdWxsc2NyZWVuVGltZWxpbmUtPnNldFBvc2l0aW9uKG5vdyk7
CisgICAgICAgIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIG1fdGltZWxpbmVDb250YWluZXItPmhpZGUoKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuVGlt
ZWxpbmVDb250YWluZXItPmhpZGUoKTsKKyAgICB9CisKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xs
ZXItPmhhc0F1ZGlvKCkgfHwgcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRs
aW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQpKQorICAgICAgICBtX211dGVCdXR0b24tPnNob3co
KTsKKyAgICBlbHNlCisgICAgICAgIG1fbXV0ZUJ1dHRvbi0+aGlkZSgpOworCisgICAgaWYgKG1f
dm9sdW1lU2xpZGVyKQorICAgICAgICBtX3ZvbHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFD
b250cm9sbGVyLT52b2x1bWUoKSk7CisKKyAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1
dHRvbikgeworICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPmhhc0Nsb3NlZENhcHRpb25z
KCkpCisgICAgICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLT5zaG93KCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPmhp
ZGUoKTsKKyAgICB9CisKKyAgICBpZiAobV9wbGF5QnV0dG9uKQorICAgICAgICBtX3BsYXlCdXR0
b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CisKKyAgICBpZiAobV9mdWxsc2NyZWVuUGxheUJ1dHRv
bikKKyAgICAgICAgbV9mdWxsc2NyZWVuUGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsK
KworICAgIG1ha2VPcGFxdWUoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6
YnVmZmVyaW5nUHJvZ3Jlc3NlZCgpCit7CisgICAgLy8gV2Ugb25seSBuZWVkIHRvIHVwZGF0ZSBi
dWZmZXJpbmcgcHJvZ3Jlc3Mgd2hlbiBwYXVzZWQsIGR1cmluZyBub3JtYWwKKyAgICAvLyBwbGF5
YmFjayBwbGF5YmFja1Byb2dyZXNzZWQoKSB3aWxsIHRha2UgY2FyZSBvZiBpdC4KKyAgICBpZiAo
bV9tZWRpYUNvbnRyb2xsZXItPnBhdXNlZCgpKSB7CisgICAgICAgIGZsb2F0IG5vdyA9IG1fbWVk
aWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpOworICAgICAgICBtX3RpbWVsaW5lLT5zZXRQb3Np
dGlvbihub3cpOworICAgICAgICBtX2Z1bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24obm93
KTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnBsYXliYWNrU3Rh
cnRlZCgpCit7CisgICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1l
KCk7CisgICAgbV9wbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOworICAgIG1fZnVsbHNj
cmVlblBsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CisgICAgbV90aW1lbGluZS0+c2V0
UG9zaXRpb24obm93KTsKKyAgICBtX2Z1bGxzY3JlZW5UaW1lbGluZS0+c2V0UG9zaXRpb24obm93
KTsKKyAgICB1cGRhdGVDdXJyZW50VGltZURpc3BsYXkoKTsKKworICAgIGlmIChtX2lzRnVsbHNj
cmVlbikKKyAgICAgICAgc3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKK30KKwor
dm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cGxheWJhY2tQcm9ncmVzc2VkKCkKK3sKKyAg
ICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBtX3Rp
bWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOworICAgIG1fZnVsbHNjcmVlblRpbWVsaW5lLT5zZXRQ
b3NpdGlvbihub3cpOworICAgIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpOworICAgIAorICAg
IGlmICghbV9pc01vdXNlT3ZlckNvbnRyb2xzICYmIG1fbWVkaWFDb250cm9sbGVyLT5oYXNWaWRl
bygpKQorICAgICAgICBtYWtlVHJhbnNwYXJlbnQoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xz
QmxhY2tCZXJyeTo6cGxheWJhY2tTdG9wcGVkKCkKK3sKKyAgICBmbG9hdCBub3cgPSBtX21lZGlh
Q29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3Bs
YXlUeXBlKCk7CisgICAgbV9mdWxsc2NyZWVuUGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUo
KTsKKyAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOworICAgIG1fZnVsbHNjcmVlblRp
bWVsaW5lLT5zZXRQb3NpdGlvbihub3cpOworICAgIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgp
OworICAgIG1ha2VPcGFxdWUoKTsKKyAgICAKKyAgICBzdG9wSGlkZUZ1bGxzY3JlZW5Db250cm9s
c1RpbWVyKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OnVwZGF0ZUN1cnJl
bnRUaW1lRGlzcGxheSgpCit7CisgICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1
cnJlbnRUaW1lKCk7CisgICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+ZHVy
YXRpb24oKTsKKworICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7CisgICAgaWYg
KCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBBbGxvdyB0aGUgdGhlbWUgdG8gZm9y
bWF0IHRoZSB0aW1lLgorICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgbV9jdXJyZW50VGltZURp
c3BsYXktPnNldElubmVyVGV4dChwYWdlLT50aGVtZSgpLT5mb3JtYXRNZWRpYUNvbnRyb2xzQ3Vy
cmVudFRpbWUobm93LCBkdXJhdGlvbiksIGVjKTsKKyAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+
c2V0Q3VycmVudFZhbHVlKG5vdyk7CisgICAgbV9mdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5
LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc0N1cnJlbnRU
aW1lKG5vdywgZHVyYXRpb24pLCBlYyk7CisgICAgbV9mdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNw
bGF5LT5zZXRDdXJyZW50VmFsdWUobm93KTsKKyAgICBtX3RpbWVSZW1haW5pbmdEaXNwbGF5LT5z
ZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9sc1JlbWFpbmluZ1Rp
bWUobm93LCBkdXJhdGlvbiksIGVjKTsKKyAgICBtX3RpbWVSZW1haW5pbmdEaXNwbGF5LT5zZXRD
dXJyZW50VmFsdWUobm93IC0gZHVyYXRpb24pOworICAgIG1fZnVsbHNjcmVlblRpbWVSZW1haW5p
bmdEaXNwbGF5LT5zZXRJbm5lclRleHQocGFnZS0+dGhlbWUoKS0+Zm9ybWF0TWVkaWFDb250cm9s
c1JlbWFpbmluZ1RpbWUobm93LCBkdXJhdGlvbiksIGVjKTsKKyAgICBtX2Z1bGxzY3JlZW5UaW1l
UmVtYWluaW5nRGlzcGxheS0+c2V0Q3VycmVudFZhbHVlKG5vdyAtIGR1cmF0aW9uKTsKK30KKwor
dm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6cmVwb3J0ZWRFcnJvcigpCit7CisgICAgUGFn
ZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmICghcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRs
aW5nRm9yKE1lZGlhU2xpZGVyUGFydCkpIHsKKyAgICAgICAgbV90aW1lbGluZUNvbnRhaW5lci0+
aGlkZSgpOworICAgICAgICBtX2Z1bGxzY3JlZW5UaW1lbGluZUNvbnRhaW5lci0+aGlkZSgpOwor
ICAgIH0KKworICAgIGlmICghcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRs
aW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQpKQorICAgICAgICBtX211dGVCdXR0b24tPmhpZGUo
KTsKKworICAgIGlmIChtX2Z1bGxTY3JlZW5CdXR0b24pCisgICAgICAgIG1fZnVsbFNjcmVlbkJ1
dHRvbi0+aGlkZSgpOworCisgICAgaWYgKG1fZnVsbFNjcmVlbkRpdmlkZXIpCisgICAgICAgIG1f
ZnVsbFNjcmVlbkRpdmlkZXItPmhpZGUoKTsKKworICAgIGlmIChtX2Z1bGxzY3JlZW5GdWxsU2Ny
ZWVuQnV0dG9uKQorICAgICAgICBtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLT5oaWRlKCk7
CisKKyAgICBpZiAobV92b2x1bWVTbGlkZXJDb250YWluZXIpCisgICAgICAgIG1fdm9sdW1lU2xp
ZGVyQ29udGFpbmVyLT5oaWRlKCk7CisKKyAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1
dHRvbiAmJiAhcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1l
ZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25QYXJ0KSkKKyAgICAgICAgbV90b2dnbGVDbG9z
ZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0Jl
cnJ5OjpjaGFuZ2VkTXV0ZSgpCit7CisgICAgbV9tdXRlQnV0dG9uLT5jaGFuZ2VkTXV0ZSgpOwor
fQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjplbnRlcmVkRnVsbHNjcmVlbigpCit7
CisgICAgTWVkaWFDb250cm9sczo6ZW50ZXJlZEZ1bGxzY3JlZW4oKTsKKworICAgIG1fcGFuZWwt
PnNldENhbkJlRHJhZ2dlZCh0cnVlKTsKKyAgICBtX2VtYmVkZGVkUGFuZWwtPnNldENhbkJlRHJh
Z2dlZCh0cnVlKTsKKworICAgIGlmIChtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uKQorICAg
ICAgICBtX2Z1bGxzY3JlZW5GdWxsU2NyZWVuQnV0dG9uLT5zZXRJc0Z1bGxzY3JlZW4odHJ1ZSk7
Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sc0JsYWNrQmVycnk6OmV4aXRlZEZ1bGxzY3JlZW4oKQor
eworICAgIG1fcGFuZWwtPnNldENhbkJlRHJhZ2dlZChmYWxzZSk7CisgICAgbV9lbWJlZGRlZFBh
bmVsLT5zZXRDYW5CZURyYWdnZWQoZmFsc2UpOworCisgICAgaWYgKG1fZnVsbHNjcmVlbkZ1bGxT
Y3JlZW5CdXR0b24pCisgICAgICAgIG1fZnVsbHNjcmVlbkZ1bGxTY3JlZW5CdXR0b24tPnNldElz
RnVsbHNjcmVlbihmYWxzZSk7CisKKyAgICAvLyBXZSB3aWxsIGtlZXAgdXNpbmcgdGhlIHBhbmVs
LCBidXQgd2Ugd2FudCBpdCB0byBnbyBiYWNrIHRvIHRoZSBzdGFuZGFyZCBwb3NpdGlvbi4KKyAg
ICAvLyBUaGlzIHdpbGwgbWF0dGVyIHJpZ2h0IGF3YXkgYmVjYXVzZSB3ZSB1c2UgdGhlIHBhbmVs
IGV2ZW4gd2hlbiBub3QgZnVsbHNjcmVlbi4KKyAgICAvLyBBbmQgaWYgd2UgcmVlbnRlciBmdWxs
c2NyZWVuIHdlIGFsc28gd2FudCB0aGUgcGFuZWwgaW4gdGhlIHN0YW5kYXJkIHBvc2l0aW9uLgor
ICAgIG1fcGFuZWwtPnJlc2V0UG9zaXRpb24oKTsKKyAgICBtX2VtYmVkZGVkUGFuZWwtPnJlc2V0
UG9zaXRpb24oKTsKKworICAgIE1lZGlhQ29udHJvbHM6OmV4aXRlZEZ1bGxzY3JlZW4oKTsKK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xzQmxhY2tCZXJyeTo6c2hvd1ZvbHVtZVNsaWRlcigpCit7Cisg
ICAgaWYgKCFtX21lZGlhQ29udHJvbGxlci0+aGFzQXVkaW8oKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyKQorICAgICAgICBtX3ZvbHVtZVNsaWRl
ckNvbnRhaW5lci0+c2hvdygpOworfQorCit2b2lkIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5Ojp0
b2dnbGVWb2x1bWVTbGlkZXIoKQoreworICAgIGlmICghbV9tZWRpYUNvbnRyb2xsZXItPmhhc0F1
ZGlvKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3ZvbHVtZVNsaWRlckNvbnRhaW5l
cikgeworICAgICAgICBpZiAobV92b2x1bWVTbGlkZXJDb250YWluZXItPnJlbmRlcmVyKCkgJiYg
bV92b2x1bWVTbGlkZXJDb250YWluZXItPnJlbmRlcmVyKCktPnZpc2libGVUb0hpdFRlc3Rpbmco
KSkKKyAgICAgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5oaWRlKCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5zaG93KCk7CisgICAg
fQorfQorCitib29sIE1lZGlhQ29udHJvbHNCbGFja0JlcnJ5OjpzaG91bGRIaWRlQ29udHJvbHMo
KQoreworICAgIGlmIChtX2lzRnVsbHNjcmVlbikKKyAgICAgICAgcmV0dXJuICFtX3BhbmVsLT5o
b3ZlcmVkKCk7CisgICAgcmV0dXJuICFtX2VtYmVkZGVkUGFuZWwtPmhvdmVyZWQoKTsKK30KK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xzQmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sc0JsYWNrQmVycnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDFmYTY5MWRiZmFhMDUyNmYxZDBiNjMxNzk2
NzRmMTgxN2RhNWYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sc0JsYWNrQmVycnkuaApAQCAtMCwwICsxLDI5OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhQ29udHJv
bHNCbGFja0JlcnJ5X2gKKyNkZWZpbmUgTWVkaWFDb250cm9sc0JsYWNrQmVycnlfaAorCisjaWYg
RU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmgiCisj
aW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudHMuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnRyb2xz
LmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEhUTUxJbnB1dEVsZW1lbnQ7CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3MgRXZl
bnQ7CitjbGFzcyBNZWRpYVBsYXllcjsKKworY2xhc3MgUmVuZGVyQm94OworY2xhc3MgUmVuZGVy
TWVkaWE7CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitjbGFzcyBNZWRpYUNvbnRyb2xUZXh0
VHJhY2tDb250YWluZXJFbGVtZW50OworY2xhc3MgTWVkaWFDb250cm9sVGV4dFRyYWNrRGlzcGxh
eUVsZW1lbnQ7CisjZW5kaWYKKworY2xhc3MgTWVkaWFDb250cm9sQnV0dG9uR3JvdXBDb250YWlu
ZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVu
dD4gY3JlYXRlKERvY3VtZW50Kik7CisKK3Byb3RlY3RlZDoKKyAgICBNZWRpYUNvbnRyb2xCdXR0
b25Hcm91cENvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKK307CisKK2NsYXNz
IE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNv
bnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNv
bnRyb2xUaW1lRGlzcGxheUNvbnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworCitw
cm90ZWN0ZWQ6CisgICAgTWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50KERv
Y3VtZW50Kik7CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lk
KCkgY29uc3QgT1ZFUlJJREU7Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVs
RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudD4gY3JlYXRl
KERvY3VtZW50Kik7CisKKyAgICB2b2lkIHNldENhbkJlRHJhZ2dlZChib29sKTsKKyAgICB2b2lk
IHNldElzRGlzcGxheWVkKGJvb2wpOworCisgICAgdm9pZCByZXNldFBvc2l0aW9uKCk7CisgICAg
dm9pZCBtYWtlT3BhcXVlKCk7CisgICAgdm9pZCBtYWtlVHJhbnNwYXJlbnQoKTsKKworICAgIHZp
cnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50
cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBN
ZWRpYUNvbnRyb2xFbWJlZGRlZFBhbmVsRWxlbWVudChEb2N1bWVudCopOworCisgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsKKwor
ICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IExheW91dFBvaW50JiBldmVudExvY2F0aW9uKTsKKyAg
ICB2b2lkIGNvbnRpbnVlRHJhZyhjb25zdCBMYXlvdXRQb2ludCYgZXZlbnRMb2NhdGlvbik7Cisg
ICAgdm9pZCBlbmREcmFnKCk7CisKKyAgICB2b2lkIHN0YXJ0VGltZXIoKTsKKyAgICB2b2lkIHN0
b3BUaW1lcigpOworICAgIHZvaWQgdHJhbnNpdGlvblRpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250
cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQ+Kik7CisKKyAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0
IExheW91dFBvaW50Jik7CisKKyAgICBib29sIG1fY2FuQmVEcmFnZ2VkOworICAgIGJvb2wgbV9p
c0JlaW5nRHJhZ2dlZDsKKyAgICBib29sIG1faXNEaXNwbGF5ZWQ7CisgICAgYm9vbCBtX29wYXF1
ZTsKKyAgICBMYXlvdXRQb2ludCBtX2xhc3REcmFnRXZlbnRMb2NhdGlvbjsKKyAgICBMYXlvdXRQ
b2ludCBtX2N1bXVsYXRpdmVEcmFnT2Zmc2V0OworCisgICAgVGltZXI8TWVkaWFDb250cm9sRW1i
ZWRkZWRQYW5lbEVsZW1lbnQ+IG1fdHJhbnNpdGlvblRpbWVyOworfTsKKworY2xhc3MgTWVkaWFD
b250cm9sRnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRp
YUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQqKTsKKworcHJvdGVjdGVkOgorICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlz
cGxheUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKK307CisKK2NsYXNzIE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlh
Q29udHJvbERpdkVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5CdXR0b25Db250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQq
KTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVy
RWxlbWVudChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFk
b3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sRnVs
bHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbERpdkVsZW1l
bnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5CdXR0b25EaXZpZGVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisKK3ByaXZhdGU6Cisg
ICAgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50KERvY3VtZW50Kik7
CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Qg
T1ZFUlJJREU7Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxl
bWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uQ29udGFpbmVyRWxlbWVudD4gY3Jl
YXRlKERvY3VtZW50Kik7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sUGxheUJ1dHRvbkNv
bnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKK307CisKK2NsYXNzIE1lZGlhQ29u
dHJvbFBsYWNlaG9sZGVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGFjZWhvbGRlckVs
ZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworCitwcml2YXRlOgorICAgIE1lZGlhQ29udHJvbFBs
YWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCopOworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFD
b250cm9sRnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElu
cHV0RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9s
RnVsbHNjcmVlblBsYXlCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworICAgIHZp
cnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVR5cGUoKSBPVkVSUklE
RTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuUGxheUJ1dHRvbkVsZW1l
bnQoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNl
dWRvSWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCopIE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVl
bkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVu
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVl
bkZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworICAgIHZpcnR1
YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJu
IHRydWU7IH0KKyAgICB2b2lkIHNldElzRnVsbHNjcmVlbihib29sKTsKKworcHJpdmF0ZToKKyAg
ICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQq
KTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCop
IE9WRVJSSURFOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lQ29u
dGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250
YWluZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXJFbGVtZW50KERvY3VtZW50Kik7CisgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJ
REU7Cit9OworCitjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZWxpbmVFbGVtZW50IDog
cHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudD4gY3JlYXRlKERv
Y3VtZW50KiwgTWVkaWFDb250cm9scyopOworCisgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25k
VG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREU7CisgICAgdm9pZCBzZXRQb3NpdGlvbihmbG9h
dCk7CisgICAgdm9pZCBzZXREdXJhdGlvbihmbG9hdCk7CisKK3ByaXZhdGU6CisgICAgTWVkaWFD
b250cm9sRnVsbHNjcmVlblRpbWVsaW5lRWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbHMq
KTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCop
IE9WRVJSSURFOworCisgICAgTWVkaWFDb250cm9scyogbV9jb250cm9sczsKK307CisKK2NsYXNz
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQgOiBwdWJs
aWMgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVt
ZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KERvY3VtZW50Kik7CisgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7Cit9
OworCitjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVu
dCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5DdXJyZW50VGltZURpc3Bs
YXlFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVudCopOworICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURF
OworfTsKKworY2xhc3MgTWVkaWFDb250cm9sQXVkaW9NdXRlQnV0dG9uRWxlbWVudCA6IHB1Ymxp
YyBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8TWVkaWFDb250cm9sQXVkaW9NdXRlQnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3Vt
ZW50KiwgTWVkaWFDb250cm9scyopOworCisgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9N
b3VzZU1vdmVFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgTWVkaWFDb250cm9sQXVkaW9NdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCos
IE1lZGlhQ29udHJvbHMqKTsKKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFk
b3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZl
bnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7CisKKyAgICBNZWRpYUNvbnRyb2xzKiBtX2NvbnRy
b2xzOworfTsKKworY2xhc3MgTWVkaWFDb250cm9sc0JsYWNrQmVycnkgOiBwdWJsaWMgTWVkaWFD
b250cm9scyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0Js
YWNrQmVycnk+IGNyZWF0ZUNvbnRyb2xzKERvY3VtZW50Kik7CisKKyAgICAvLyBNZWRpYUNvbnRy
b2xzIGltcGxlbWVudGF0aW9uLgorICAgIHZvaWQgc2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29u
dHJvbGxlckludGVyZmFjZSopIE9WRVJSSURFOworCisgICAgdm9pZCBzaG93KCkgT1ZFUlJJREU7
CisgICAgdm9pZCBoaWRlKCkgT1ZFUlJJREU7CisgICAgdm9pZCBtYWtlT3BhcXVlKCkgT1ZFUlJJ
REU7CisgICAgdm9pZCBtYWtlVHJhbnNwYXJlbnQoKSBPVkVSUklERTsKKworICAgIHZvaWQgcmVz
ZXQoKSBPVkVSUklERTsKKworICAgIHZvaWQgYnVmZmVyaW5nUHJvZ3Jlc3NlZCgpIE9WRVJSSURF
OworICAgIHZvaWQgcGxheWJhY2tQcm9ncmVzc2VkKCkgT1ZFUlJJREU7CisgICAgdm9pZCBwbGF5
YmFja1N0YXJ0ZWQoKSBPVkVSUklERTsKKyAgICB2b2lkIHBsYXliYWNrU3RvcHBlZCgpIE9WRVJS
SURFOworCisgICAgdm9pZCBjaGFuZ2VkTXV0ZSgpIE9WRVJSSURFOworCisgICAgdm9pZCBlbnRl
cmVkRnVsbHNjcmVlbigpIE9WRVJSSURFOworICAgIHZvaWQgZXhpdGVkRnVsbHNjcmVlbigpIE9W
RVJSSURFOworCisgICAgdm9pZCByZXBvcnRlZEVycm9yKCkgT1ZFUlJJREU7CisKKyAgICB2b2lk
IHNob3dWb2x1bWVTbGlkZXIoKSBPVkVSUklERTsKKyAgICB2b2lkIHRvZ2dsZVZvbHVtZVNsaWRl
cigpOworICAgIHZvaWQgdXBkYXRlQ3VycmVudFRpbWVEaXNwbGF5KCkgT1ZFUlJJREU7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkSGlkZUNvbnRyb2xzKCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6
CisgICAgTWVkaWFDb250cm9sc0JsYWNrQmVycnkoRG9jdW1lbnQqKTsKKworICAgIE1lZGlhQ29u
dHJvbEJ1dHRvbkdyb3VwQ29udGFpbmVyRWxlbWVudCogbV9idXR0b25Db250YWluZXI7CisgICAg
TWVkaWFDb250cm9sVGltZURpc3BsYXlDb250YWluZXJFbGVtZW50KiBtX3RpbWVEaXNwbGF5Q29u
dGFpbmVyOworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1lRGlzcGxheUNvbnRhaW5lckVs
ZW1lbnQqIG1fZnVsbHNjcmVlblRpbWVEaXNwbGF5Q29udGFpbmVyOworICAgIE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5QbGF5QnV0dG9uRWxlbWVudCogbV9mdWxsc2NyZWVuUGxheUJ1dHRvbjsKKyAg
ICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudCogbV9mdWxs
c2NyZWVuQ3VycmVudFRpbWVEaXNwbGF5OworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5UaW1l
bGluZUVsZW1lbnQqIG1fZnVsbHNjcmVlblRpbWVsaW5lOworICAgIE1lZGlhQ29udHJvbFRpbWVS
ZW1haW5pbmdEaXNwbGF5RWxlbWVudCogbV90aW1lUmVtYWluaW5nRGlzcGxheTsKKyAgICBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KiBtX2Z1bGxzY3Jl
ZW5UaW1lUmVtYWluaW5nRGlzcGxheTsKKyAgICBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5l
ckVsZW1lbnQqIG1fdGltZWxpbmVDb250YWluZXI7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVl
blRpbWVsaW5lQ29udGFpbmVyRWxlbWVudCogbV9mdWxsc2NyZWVuVGltZWxpbmVDb250YWluZXI7
CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkRpdmlkZXJFbGVtZW50KiBtX2Z1bGxT
Y3JlZW5EaXZpZGVyOworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5GdWxsc2NyZWVuQnV0dG9u
RWxlbWVudCogbV9mdWxsc2NyZWVuRnVsbFNjcmVlbkJ1dHRvbjsKKyAgICBNZWRpYUNvbnRyb2xB
dWRpb011dGVCdXR0b25FbGVtZW50KiBtX211dGVCdXR0b247CisgICAgTWVkaWFDb250cm9sVm9s
dW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudCogbV92b2x1bWVTbGlkZXJDb250YWluZXI7CisgICAg
TWVkaWFDb250cm9sRW1iZWRkZWRQYW5lbEVsZW1lbnQqIG1fZW1iZWRkZWRQYW5lbDsKKyAgICBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uQ29udGFpbmVyRWxlbWVudCogbV9mdWxsU2NyZWVu
QnV0dG9uQ29udGFpbmVyOworICAgIE1lZGlhQ29udHJvbFBsYXlCdXR0b25Db250YWluZXJFbGVt
ZW50KiBtX3BsYXlCdXR0b25Db250YWluZXI7CisgICAgTWVkaWFDb250cm9sUGxhY2Vob2xkZXJF
bGVtZW50KiBtX3BsYWNlaG9sZGVyOworfTsKKworfQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNr
QmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVt
ZUJsYWNrQmVycnkuY3BwCmluZGV4IDFkZGYxYTg2NzRkYzgwZTljNWM2MTI3NzUyMWRlZDU2ZDUw
MDIyNTQuLmE0NTNkNDA3NDkwYTBiMjRjNzFhYzA5NzNlYzJkYjRlYTI3NDU5MmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0Jl
cnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRo
ZW1lQmxhY2tCZXJyeS5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgog
I2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCisj
aW5jbHVkZSAiSW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudHMuaCIK
ICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgpAQCAtNDQsMTAgKzQ1LDEzIEBAIGNvbnN0IHVuc2lnbmVkIHNtYWxsUmFkaXVzID0gMTsK
IGNvbnN0IHVuc2lnbmVkIGxhcmdlUmFkaXVzID0gMzsKIGNvbnN0IHVuc2lnbmVkIGxpbmVXaWR0
aCA9IDE7CiBjb25zdCBmbG9hdCBtYXJnaW5TaXplID0gNDsKLWNvbnN0IGZsb2F0IG1lZGlhQ29u
dHJvbHNIZWlnaHQgPSAzMjsKLWNvbnN0IGZsb2F0IG1lZGlhU2xpZGVyVGh1bWJXaWR0aCA9IDQw
OwotY29uc3QgZmxvYXQgbWVkaWFTbGlkZXJUaHVtYkhlaWdodCA9IDEzOwotY29uc3QgZmxvYXQg
bWVkaWFTbGlkZXJUaHVtYlJhZGl1cyA9IDU7Citjb25zdCBmbG9hdCBtZWRpYUNvbnRyb2xzSGVp
Z2h0ID0gNDQ7Citjb25zdCBmbG9hdCBtZWRpYUJhY2tCdXR0b25IZWlnaHQgPSAzMzsKK2NvbnN0
IGZsb2F0IG1lZGlhU2xpZGVyT3V0bGluZVdpZHRoID0gMjsKK2NvbnN0IGZsb2F0IG1lZGlhU2xp
ZGVyVHJhY2tSYWRpdXMgPSAzOworY29uc3QgZmxvYXQgbWVkaWFTbGlkZXJUaHVtYldpZHRoID0g
MjU7Citjb25zdCBmbG9hdCBtZWRpYVNsaWRlclRodW1iSGVpZ2h0ID0gMjU7Citjb25zdCBmbG9h
dCBtZWRpYVNsaWRlclRodW1iUmFkaXVzID0gMzsKIGNvbnN0IGZsb2F0IHNsaWRlclRodW1iV2lk
dGggPSAxNTsKIGNvbnN0IGZsb2F0IHNsaWRlclRodW1iSGVpZ2h0ID0gMjU7CiAKQEAgLTEyNCw2
ICsxMjgsMTIgQEAgY29uc3QgUkdCQTMyIGRyYWdSb2xsRGFyayA9IDB4ZmY2OWE4ZmY7CiBjb25z
dCBSR0JBMzIgYmxhY2tQZW4gPSBDb2xvcjo6YmxhY2s7CiBjb25zdCBSR0JBMzIgZm9jdXNSaW5n
UGVuID0gMHhmZmEzYzhmZTsKIAorY29uc3QgUkdCQTMyIG1lZGlhU2xpZGVyVHJhY2tPdXRsaW5l
ID0gMHhmZjg0ODU4NzsKK2NvbnN0IFJHQkEzMiBtZWRpYVNsaWRlclRyYWNrUGxheWVkID0gMHhm
ZjJiOGZmZjsKK2NvbnN0IFJHQkEzMiBtZWRpYVNsaWRlclRyYWNrQnVmZmVyZWQgPSAweGZmYmJi
ZGJmOworCitjb25zdCBSR0JBMzIgc2VsZWN0aW9uID0gMHhmZjJiOGZmZjsKKwogZmxvYXQgUmVu
ZGVyVGhlbWVCbGFja0JlcnJ5OjpkZWZhdWx0Rm9udFNpemUgPSAxNjsKIAogY29uc3QgU3RyaW5n
JiBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmRlZmF1bHRHVUlGb250KCkKQEAgLTI5NSwxMiArMzA1
LDEyIEBAIFN0cmluZyBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OmV4dHJhTWVkaWFDb250cm9sc1N0
eWxlU2hlZXQoKQogewogICAgIHJldHVybiBTdHJpbmcobWVkaWFDb250cm9sc0JsYWNrQmVycnlV
c2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YobWVkaWFDb250cm9sc0JsYWNrQmVycnlVc2VyQWdl
bnRTdHlsZVNoZWV0KSk7CiB9CisjZW5kaWYKIAotU3RyaW5nIFJlbmRlclRoZW1lQmxhY2tCZXJy
eTo6Zm9ybWF0TWVkaWFDb250cm9sc1JlbWFpbmluZ1RpbWUoZmxvYXQsIGZsb2F0IGR1cmF0aW9u
KSBjb25zdAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKK1N0cmluZyBSZW5kZXJUaGVtZUJs
YWNrQmVycnk6OmV4dHJhRnVsbFNjcmVlblN0eWxlU2hlZXQoKQogewotICAgIC8vIFRoaXMgaXMg
YSB3b3JrYXJvdW5kIHRvIG1ha2UgdGhlIGFwcGVhcmFuY2Ugb2YgbWVkaWEgdGltZSBjb250cm9s
bGVyIGluCi0gICAgLy8gaW4tcGFnZSBtb2RlIHRoZSBzYW1lIGFzIGluIGZ1bGxzY3JlZW4gbW9k
ZS4KLSAgICByZXR1cm4gZm9ybWF0TWVkaWFDb250cm9sc1RpbWUoZHVyYXRpb24pOworICAgIHJl
dHVybiBTdHJpbmcobWVkaWFDb250cm9sc0JsYWNrQmVycnlGdWxsc2NyZWVuVXNlckFnZW50U3R5
bGVTaGVldCwgc2l6ZW9mKG1lZGlhQ29udHJvbHNCbGFja0JlcnJ5RnVsbHNjcmVlblVzZXJBZ2Vu
dFN0eWxlU2hlZXQpKTsKIH0KICNlbmRpZgogCkBAIC02ODgsMTAgKzY5OCwxMCBAQCB2b2lkIFJl
bmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlKiBz
dHlsZSwgRWxlbWVudCogZQogICAgICAgICAgICAgZnVsbFNjcmVlbk11bHRpcGxpZXIgPSBkZXRl
cm1pbmVGdWxsU2NyZWVuTXVsdGlwbGllcih0b0VsZW1lbnQoc2xpZGVyLT5ub2RlKCkpKTsKICAg
ICB9CiAKLSAgICBpZiAocGFydCA9PSBNZWRpYVZvbHVtZVNsaWRlclRodW1iUGFydCB8fCBwYXJ0
ID09IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQgfHwgcGFydCA9PSBTbGlkZXJUaHVtYlZlcnRp
Y2FsUGFydCkgeworICAgIGlmIChwYXJ0ID09IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQgfHwg
cGFydCA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCkgewogICAgICAgICBzdHlsZS0+c2V0V2lk
dGgoTGVuZ3RoKChwYXJ0ID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0ID8gc2xpZGVyVGh1bWJI
ZWlnaHQgOiBzbGlkZXJUaHVtYldpZHRoKSAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCkp
OwogICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aCgocGFydCA9PSBTbGlkZXJUaHVtYlZl
cnRpY2FsUGFydCA/IHNsaWRlclRodW1iV2lkdGggOiBzbGlkZXJUaHVtYkhlaWdodCkgKiBmdWxs
U2NyZWVuTXVsdGlwbGllciwgRml4ZWQpKTsKLSAgICB9IGVsc2UgaWYgKHBhcnQgPT0gTWVkaWFT
bGlkZXJUaHVtYlBhcnQpIHsKKyAgICB9IGVsc2UgaWYgKHBhcnQgPT0gTWVkaWFWb2x1bWVTbGlk
ZXJUaHVtYlBhcnQgfHwgcGFydCA9PSBNZWRpYVNsaWRlclRodW1iUGFydCkgewogICAgICAgICBz
dHlsZS0+c2V0V2lkdGgoTGVuZ3RoKG1lZGlhU2xpZGVyVGh1bWJXaWR0aCAqIGZ1bGxTY3JlZW5N
dWx0aXBsaWVyLCBGaXhlZCkpOwogICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChtZWRp
YVNsaWRlclRodW1iSGVpZ2h0ICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIEZpeGVkKSk7CiAgICAg
fQpAQCAtNzE3LDEwICs3MjcsMzEgQEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50
U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW4KIAogYm9vbCBS
ZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50U2xpZGVyVHJhY2tSZWN0KFJlbmRlck9iamVjdCog
b2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0g
ICAgc3RhdGljIFJlZlB0cjxJbWFnZT4gYmFja2dyb3VuZDsKLSAgICBpZiAoIWJhY2tncm91bmQp
Ci0gICAgICAgIGJhY2tncm91bmQgPSBsb2FkSW1hZ2UoImNvcmVfc2xpZGVyX2JnIik7Ci0gICAg
cmV0dXJuIHBhaW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgaW5mbywgcmVjdCwgYmFja2dyb3Vu
ZC5nZXQoKSk7CisgICAgcmV0dXJuIHBhaW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgaW5mbywg
cmVjdCwgcmFuZ2VTbGlkZXJSZWd1bGFyVG9wT3V0bGluZSwgcmFuZ2VTbGlkZXJSZWd1bGFyQm90
dG9tT3V0bGluZSwgcmFuZ2VTbGlkZXJSZWd1bGFyVG9wLCByYW5nZVNsaWRlclJlZ3VsYXJCb3R0
b20pOworfQorCitib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRTbGlkZXJUcmFja1Jl
Y3QoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50
UmVjdCYgcmVjdCwgUkdCQTMyIHN0cm9rZUNvbG9yU3RhcnQsIFJHQkEzMiBzdHJva2VDb2xvckVu
ZCwgUkdCQTMyIGZpbGxDb2xvclN0YXJ0LCBSR0JBMzIgZmlsbENvbG9yRW5kKQoreworICAgIEZs
b2F0U2l6ZSBzbWFsbENvcm5lcihtZWRpYVNsaWRlclRyYWNrUmFkaXVzLCBtZWRpYVNsaWRlclRy
YWNrUmFkaXVzKTsKKworICAgIGluZm8uY29udGV4dC0+c2F2ZSgpOworICAgIGluZm8uY29udGV4
dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOworICAgIGluZm8uY29udGV4dC0+c2V0U3Ry
b2tlVGhpY2tuZXNzKGxpbmVXaWR0aCk7CisKKyNpZiBVU0UoU0tJQSkKKyAgICBpbmZvLmNvbnRl
eHQtPnNldFN0cm9rZUdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRpZW50KHN0cm9rZUNvbG9yU3Rh
cnQsIHN0cm9rZUNvbG9yRW5kLCByZWN0Lm1heFhNaW5ZQ29ybmVyKCksIHJlY3QubWF4WE1heFlD
b3JuZXIoKSkpOworICAgIGluZm8uY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVh
ckdyYWRpZW50KGZpbGxDb2xvclN0YXJ0LCBmaWxsQ29sb3JFbmQsIHJlY3QubWF4WE1pbllDb3Ju
ZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7CisjZWxzZQorICAgIGluZm8uY29udGV4dC0+
c2V0U3Ryb2tlQ29sb3Ioc3Ryb2tlQ29sb3JTdGFydCwgQ29sb3JTcGFjZURldmljZVJHQik7Cisg
ICAgaW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9yU3RhcnQsIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworI2VuZGlmCisKKyAgICBQYXRoIHBhdGg7CisgICAgcGF0aC5hZGRSb3VuZGVk
UmVjdChyZWN0LCBzbWFsbENvcm5lcik7CisgICAgaW5mby5jb250ZXh0LT5maWxsUGF0aChwYXRo
KTsKKworICAgIGluZm8uY29udGV4dC0+cmVzdG9yZSgpOworICAgIHJldHVybiBmYWxzZTsKIH0K
IAogYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50U2xpZGVyVHJhY2tSZWN0KFJlbmRl
ck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJl
Y3QsIEltYWdlKiBpbmFjdGl2ZSkKQEAgLTgwNCwyOSArODM1LDQ3IEBAIHZvaWQgUmVuZGVyVGhl
bWVCbGFja0JlcnJ5OjphZGp1c3RNZWRpYUNvbnRyb2xTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVu
ZGVyU3R5bGUqCiAgICAgLy8gV2UgdXNlIG11bHRpcGxlcyBvZiBtZWRpYUNvbnRyb2xzSGVpZ2h0
IHRvIG1ha2UgYWxsIG9iamVjdHMgc2NhbGUgZXZlbmx5CiAgICAgTGVuZ3RoIHplcm8oMCwgRml4
ZWQpOwogICAgIExlbmd0aCBjb250cm9sc0hlaWdodChtZWRpYUNvbnRyb2xzSGVpZ2h0ICogZnVs
bFNjcmVlbk11bHRpcGxpZXIsIEZpeGVkKTsKLSAgICBMZW5ndGggdGltZVdpZHRoKG1lZGlhQ29u
dHJvbHNIZWlnaHQgKiAzIC8gMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBGaXhlZCk7Ci0gICAg
TGVuZ3RoIHZvbHVtZUhlaWdodChtZWRpYUNvbnRyb2xzSGVpZ2h0ICogNCAqIGZ1bGxTY3JlZW5N
dWx0aXBsaWVyLCBGaXhlZCk7Ci0gICAgTGVuZ3RoIHBhZGRpbmcobWVkaWFDb250cm9sc0hlaWdo
dCAvIDggKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpOwotICAgIGZsb2F0IGZvbnRTaXpl
ID0gbWVkaWFDb250cm9sc0hlaWdodCAvIDIgKiBmdWxsU2NyZWVuTXVsdGlwbGllcjsKKyAgICBM
ZW5ndGggaGFsZkNvbnRyb2xzV2lkdGgobWVkaWFDb250cm9sc0hlaWdodCAvIDIgKiBmdWxsU2Ny
ZWVuTXVsdGlwbGllciwgRml4ZWQpOworICAgIExlbmd0aCBkaXNwbGF5SGVpZ2h0KG1lZGlhQ29u
dHJvbHNIZWlnaHQgLyAzICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIEZpeGVkKTsKKyAgICBMZW5n
dGggcGFkZGluZyhtZWRpYUNvbnRyb2xzSGVpZ2h0IC8gMTAgKiBmdWxsU2NyZWVuTXVsdGlwbGll
ciwgRml4ZWQpOworICAgIGZsb2F0IGZvbnRTaXplID0gbWVkaWFDb250cm9sc0hlaWdodCAvIDMg
KiBmdWxsU2NyZWVuTXVsdGlwbGllcjsKIAogICAgIHN3aXRjaCAoc3R5bGUtPmFwcGVhcmFuY2Uo
KSkgewogICAgIGNhc2UgTWVkaWFQbGF5QnV0dG9uUGFydDoKKyAgICAgICAgc3R5bGUtPnNldFdp
ZHRoKGNvbnRyb2xzSGVpZ2h0KTsKKyAgICAgICAgc3R5bGUtPnNldEhlaWdodChjb250cm9sc0hl
aWdodCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVkaWFNdXRlQnV0dG9uUGFydDoKKyAg
ICAgICAgc3R5bGUtPnNldFBhZGRpbmdMZWZ0KHBhZGRpbmcpOworICAgICAgICBzdHlsZS0+c2V0
V2lkdGgoY29udHJvbHNIZWlnaHQpOworICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KGNvbnRyb2xz
SGVpZ2h0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNZWRpYVJld2luZEJ1dHRvblBhcnQ6
CisgICAgICAgIC8vIFdlIGhpLWphY2sgdGhlIFJld2luZCBCdXR0b24gSUQgdG8gdXNlIGl0IGZv
ciB0aGUgZGl2aWRlciBpbWFnZQorICAgICAgICBzdHlsZS0+c2V0V2lkdGgoaGFsZkNvbnRyb2xz
V2lkdGgpOworICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KGNvbnRyb2xzSGVpZ2h0KTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYUVudGVyRnVsbHNjcmVlbkJ1dHRvblBhcnQ6CisgICAg
ICAgIHN0eWxlLT5zZXRQYWRkaW5nUmlnaHQocGFkZGluZyk7CisgICAgICAgIHN0eWxlLT5zZXRX
aWR0aChjb250cm9sc0hlaWdodCk7CisgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoY29udHJvbHNI
ZWlnaHQpOworICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhRXhpdEZ1bGxzY3JlZW5CdXR0
b25QYXJ0OgotICAgIGNhc2UgTWVkaWFNdXRlQnV0dG9uUGFydDoKKyAgICAgICAgc3R5bGUtPnNl
dExlZnQoemVybyk7CiAgICAgICAgIHN0eWxlLT5zZXRXaWR0aChjb250cm9sc0hlaWdodCk7CiAg
ICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoY29udHJvbHNIZWlnaHQpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIE1lZGlhQ3VycmVudFRpbWVQYXJ0OgogICAgIGNhc2UgTWVkaWFUaW1lUmVtYWlu
aW5nUGFydDoKLSAgICAgICAgc3R5bGUtPnNldFdpZHRoKHRpbWVXaWR0aCk7Ci0gICAgICAgIHN0
eWxlLT5zZXRIZWlnaHQoY29udHJvbHNIZWlnaHQpOworICAgICAgICBzdHlsZS0+c2V0V2lkdGgo
Y29udHJvbHNIZWlnaHQpOworICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KGRpc3BsYXlIZWlnaHQp
OwogICAgICAgICBzdHlsZS0+c2V0UGFkZGluZ1JpZ2h0KHBhZGRpbmcpOworICAgICAgICBzdHls
ZS0+c2V0UGFkZGluZ0xlZnQocGFkZGluZyk7CisgICAgICAgIHN0eWxlLT5zZXRQYWRkaW5nQm90
dG9tKHBhZGRpbmcpOwogICAgICAgICBzdHlsZS0+c2V0Rm9udFNpemUoc3RhdGljX2Nhc3Q8aW50
Pihmb250U2l6ZSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhVm9sdW1lU2xpZGVy
Q29udGFpbmVyUGFydDoKLSAgICAgICAgc3R5bGUtPnNldFdpZHRoKGNvbnRyb2xzSGVpZ2h0KTsK
LSAgICAgICAgc3R5bGUtPnNldEhlaWdodCh2b2x1bWVIZWlnaHQpOworICAgICAgICBzdHlsZS0+
c2V0SGVpZ2h0KGNvbnRyb2xzSGVpZ2h0KTsKICAgICAgICAgc3R5bGUtPnNldEJvdHRvbShjb250
cm9sc0hlaWdodCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC04NDMsMTIgKzg5
MiwxNCBAQCB2b2lkIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6YWRqdXN0TWVkaWFDb250cm9sU3R5
bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKgogICAgICAgICBjYXNlIE1lZGlhRXhpdEZ1
bGxzY3JlZW5CdXR0b25QYXJ0OgogICAgICAgICAgICAgc3R5bGUtPnNldFBvc2l0aW9uKEFic29s
dXRlUG9zaXRpb24pOwogICAgICAgICAgICAgc3R5bGUtPnNldEJvdHRvbSh6ZXJvKTsKKyAgICAg
ICAgICAgIHN0eWxlLT5zZXRMZWZ0KHplcm8pOwogICAgICAgICAgICAgc3R5bGUtPnNldFJpZ2h0
KGNvbnRyb2xzSGVpZ2h0KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1lZGlh
TXV0ZUJ1dHRvblBhcnQ6CisgICAgICAgIGNhc2UgTWVkaWFSZXdpbmRCdXR0b25QYXJ0OgorICAg
ICAgICAgICAgLy8gV2UgaGktamFjayB0aGUgUmV3aW5kIEJ1dHRvbiBJRCB0byB1c2UgaXQgZm9y
IHRoZSBkaXZpZGVyIGltYWdlCiAgICAgICAgICAgICBzdHlsZS0+c2V0UG9zaXRpb24oQWJzb2x1
dGVQb3NpdGlvbik7CiAgICAgICAgICAgICBzdHlsZS0+c2V0Qm90dG9tKHplcm8pOwotICAgICAg
ICAgICAgc3R5bGUtPnNldFJpZ2h0KHplcm8pOworICAgICAgICAgICAgc3R5bGUtPnNldExlZnQo
Y29udHJvbHNIZWlnaHQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTg2MSwxNyArOTEyLDEyIEBAIHZvaWQgUmVuZGVyVGhlbWVC
bGFja0JlcnJ5OjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJT
dHlsZSoKICAgICBmbG9hdCBmdWxsU2NyZWVuTXVsdGlwbGllciA9IGRldGVybWluZUZ1bGxTY3Jl
ZW5NdWx0aXBsaWVyKGVsZW1lbnQpOwogCiAgICAgLy8gV2UgdXNlIG11bHRpcGxlcyBvZiBtZWRp
YUNvbnRyb2xzSGVpZ2h0IHRvIG1ha2UgYWxsIG9iamVjdHMgc2NhbGUgZXZlbmx5Ci0gICAgTGVu
Z3RoIGNvbnRyb2xzSGVpZ2h0KG1lZGlhQ29udHJvbHNIZWlnaHQgKiBmdWxsU2NyZWVuTXVsdGlw
bGllciwgRml4ZWQpOwotICAgIExlbmd0aCB2b2x1bWVIZWlnaHQobWVkaWFDb250cm9sc0hlaWdo
dCAqIDQgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgRml4ZWQpOworICAgIExlbmd0aCBjb250cm9s
c0hlaWdodChtZWRpYUNvbnRyb2xzSGVpZ2h0IC8gMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyLCBG
aXhlZCk7CiAgICAgc3dpdGNoIChzdHlsZS0+YXBwZWFyYW5jZSgpKSB7CiAgICAgY2FzZSBNZWRp
YVNsaWRlclBhcnQ6Ci0gICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoY29udHJvbHNIZWlnaHQpOwot
ICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhVm9sdW1lU2xpZGVyUGFydDoKLSAgICAgICAg
c3R5bGUtPnNldFdpZHRoKGNvbnRyb2xzSGVpZ2h0KTsKLSAgICAgICAgc3R5bGUtPnNldEhlaWdo
dCh2b2x1bWVIZWlnaHQpOworICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KGNvbnRyb2xzSGVpZ2h0
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXJQ
YXJ0OgogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTkwMyw2ICs5NDks
MjkgQEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFQbGF5QnV0dG9uKFJl
bmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWkKICNlbmRpZgogfQogCisvLyBXZSBoaS1qYWNr
IHRoZSBSZXdpbmQgQnV0dG9uIGNvZGUgdG8gdXNlIGl0IGZvciB0aGUgZGl2aWRlciBpbWFnZQor
Ym9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFSZXdpbmRCdXR0b24oUmVuZGVy
T2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0
JiByZWN0KQoreworI2lmIEVOQUJMRShWSURFTykKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRp
YUVsZW1lbnQgPSB0b1BhcmVudE1lZGlhRWxlbWVudChvYmplY3QpOworCisgICAgaWYgKCFtZWRp
YUVsZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbWVkaWFFbGVtZW50
LT5pc0Z1bGxzY3JlZW4oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3RhdGljIElt
YWdlKiBkaXZpZGVyID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJkaXZpZGVyIikubGVh
a1JlZigpOworCisgICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocGFpbnRJbmZvLmNvbnRleHQs
IHJlY3QsIGRpdmlkZXIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKKyAgICBV
TlVTRURfUEFSQU0ocGFpbnRJbmZvKTsKKyAgICBVTlVTRURfUEFSQU0ocmVjdCk7CisgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCit9CisKIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWlu
dE1lZGlhTXV0ZUJ1dHRvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAjaWYgRU5BQkxFKFZJREVPKQpAQCAt
OTExLDEwICs5ODAsOSBAQCBib29sIFJlbmRlclRoZW1lQmxhY2tCZXJyeTo6cGFpbnRNZWRpYU11
dGVCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaQogICAgIGlmICghbWVkaWFF
bGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0aWMgSW1hZ2UqIG1lZGlh
TXV0ZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgic3BlYWtlciIpLmxlYWtSZWYoKTsK
LSAgICBzdGF0aWMgSW1hZ2UqIG1lZGlhVW5tdXRlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291
cmNlKCJzcGVha2VyX211dGUiKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIEltYWdlKiBkaXZpZGVy
ID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJzcGVha2VyIikubGVha1JlZigpOwogCi0g
ICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIG1lZGlh
RWxlbWVudC0+bXV0ZWQoKSB8fCAhbWVkaWFFbGVtZW50LT52b2x1bWUoKSA/IG1lZGlhVW5tdXRl
IDogbWVkaWFNdXRlKTsKKyAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihwYWludEluZm8uY29u
dGV4dCwgcmVjdCwgZGl2aWRlcik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOwog
ICAgIFVOVVNFRF9QQVJBTShwYWludEluZm8pOwpAQCAtOTMxLDcgKzk5OSw3IEBAIGJvb2wgUmVu
ZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbihSZW5kZXJPYmpl
Y3QqIG9iamVjdCwgY29uCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN0YXRpYyBJbWFn
ZSogbWVkaWFFbnRlckZ1bGxzY3JlZW4gPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoImZ1
bGxzY3JlZW4iKS5sZWFrUmVmKCk7Ci0gICAgc3RhdGljIEltYWdlKiBtZWRpYUV4aXRGdWxsc2Ny
ZWVuID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJleGl0X2Z1bGxzY3JlZW4iKS5sZWFr
UmVmKCk7CisgICAgc3RhdGljIEltYWdlKiBtZWRpYUV4aXRGdWxsc2NyZWVuID0gSW1hZ2U6Omxv
YWRQbGF0Zm9ybVJlc291cmNlKCJiYWNrIikubGVha1JlZigpOwogCiAgICAgSW1hZ2UqIGJ1dHRv
bkltYWdlID0gbWVkaWFFbnRlckZ1bGxzY3JlZW47CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQpAQCAtOTU4LDM4ICsxMDI2LDMwIEBAIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWlu
dE1lZGlhU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhCiAgICAgZmxv
YXQgbG9hZGVkID0gbWVkaWFFbGVtZW50LT5wZXJjZW50TG9hZGVkKCk7CiAgICAgZmxvYXQgcG9z
aXRpb24gPSBtZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCkgPiAwID8gKG1lZGlhRWxlbWVudC0+Y3Vy
cmVudFRpbWUoKSAvIG1lZGlhRWxlbWVudC0+ZHVyYXRpb24oKSkgOiAwOwogCi0gICAgaW50IHgg
PSBjZWlsKHJlY3QueCgpICsgMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyIC0gZnVsbFNjcmVlbk11
bHRpcGxpZXIgLyAyKTsKLSAgICBpbnQgeSA9IGNlaWwocmVjdC55KCkgKyAxNCAqIGZ1bGxTY3Jl
ZW5NdWx0aXBsaWVyICsgZnVsbFNjcmVlbk11bHRpcGxpZXIgLyAyKTsKLSAgICBpbnQgdyA9IGNl
aWwocmVjdC53aWR0aCgpIC0gNCAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyICsgZnVsbFNjcmVlbk11
bHRpcGxpZXIgLyAyKTsKLSAgICBpbnQgaCA9IGNlaWwoMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVy
KTsKKyAgICBpbnQgaW50cmluc2ljSGVpZ2h0ID0gY2VpbChtZWRpYVNsaWRlclRodW1iSGVpZ2h0
IC8gNCk7CisgICAgaW50IHggPSBjZWlsKHJlY3QueCgpICsgKG1lZGlhQ29udHJvbHNIZWlnaHQg
LSBpbnRyaW5zaWNIZWlnaHQpIC8gMiAqIGZ1bGxTY3JlZW5NdWx0aXBsaWVyIC0gZnVsbFNjcmVl
bk11bHRpcGxpZXIgLyAyKTsKKyAgICBpbnQgeSA9IGNlaWwocmVjdC55KCkgKyAobWVkaWFDb250
cm9sc0hlaWdodCAvIDIgLSBpbnRyaW5zaWNIZWlnaHQpIC8gMiAqIGZ1bGxTY3JlZW5NdWx0aXBs
aWVyICsgZnVsbFNjcmVlbk11bHRpcGxpZXIgLyAyKTsKKyAgICBpbnQgdyA9IGNlaWwocmVjdC53
aWR0aCgpIC0gKG1lZGlhQ29udHJvbHNIZWlnaHQgLSBpbnRyaW5zaWNIZWlnaHQpICogZnVsbFNj
cmVlbk11bHRpcGxpZXIgKyBmdWxsU2NyZWVuTXVsdGlwbGllciAvIDIpOworICAgIGludCBoID0g
Y2VpbChpbnRyaW5zaWNIZWlnaHQgKiBmdWxsU2NyZWVuTXVsdGlwbGllcik7CiAgICAgSW50UmVj
dCByZWN0Mih4LCB5LCB3LCBoKTsKIAogICAgIGludCB3UGxheWVkID0gY2VpbCh3ICogcG9zaXRp
b24pOwogICAgIGludCB3TG9hZGVkID0gY2VpbCgodyAtIG1lZGlhU2xpZGVyVGh1bWJXaWR0aCAq
IGZ1bGxTY3JlZW5NdWx0aXBsaWVyKSAqIGxvYWRlZCArIG1lZGlhU2xpZGVyVGh1bWJXaWR0aCAq
IGZ1bGxTY3JlZW5NdWx0aXBsaWVyKTsKIAogICAgIEludFJlY3QgcGxheWVkKHgsIHksIHdQbGF5
ZWQsIGgpOwotICAgIEludFJlY3QgYnVmZmVyZWQoeCwgeSwgd0xvYWRlZCwgaCk7CisgICAgSW50
UmVjdCBidWZmZXJlZCh4LCBjZWlsKHkgKyBtZWRpYVNsaWRlck91dGxpbmVXaWR0aCksIHdMb2Fk
ZWQsIGNlaWwoaCAtIDIgKiBtZWRpYVNsaWRlck91dGxpbmVXaWR0aCkpOwogCiAgICAgLy8gVGhp
cyBpcyB0byBwYWludCBtYWluIHNsaWRlciBiYXIuCi0gICAgc3RhdGljIFJlZlB0cjxJbWFnZT4g
dHJhY2tJbWFnZTsKLSAgICBpZiAoIXRyYWNrSW1hZ2UpCi0gICAgICAgIHRyYWNrSW1hZ2UgPSBs
b2FkSW1hZ2UoImNvcmVfc2xpZGVyX21lZGlhX2JnIik7Ci0gICAgYm9vbCByZXN1bHQgPSBwYWlu
dFNsaWRlclRyYWNrUmVjdChvYmplY3QsIHBhaW50SW5mbywgcmVjdDIsIHRyYWNrSW1hZ2UuZ2V0
KCkpOworICAgIGJvb2wgcmVzdWx0ID0gcGFpbnRTbGlkZXJUcmFja1JlY3Qob2JqZWN0LCBwYWlu
dEluZm8sIHJlY3QyKTsKIAogICAgIGlmIChsb2FkZWQgPiAwIHx8IHBvc2l0aW9uID4gMCkgewog
ICAgICAgICAvLyBUaGlzIGlzIHRvIHBhaW50IGJ1ZmZlcmVkIGJhci4KLSAgICAgICAgc3RhdGlj
IFJlZlB0cjxJbWFnZT4gYnVmZmVyZWRJbWFnZSwgcGxheWVkSW1hZ2U7Ci0gICAgICAgIGlmICgh
YnVmZmVyZWRJbWFnZSkgewotICAgICAgICAgICAgYnVmZmVyZWRJbWFnZSA9IGxvYWRJbWFnZSgi
Y29yZV9zbGlkZXJfYnVmZmVyZWRfYmciKTsKLSAgICAgICAgICAgIHBsYXllZEltYWdlID0gbG9h
ZEltYWdlKCJjb3JlX3NsaWRlcl9wbGF5ZWRfYmciKTsKLSAgICAgICAgfQotICAgICAgICBwYWlu
dFNsaWRlclRyYWNrUmVjdChvYmplY3QsIHBhaW50SW5mbywgYnVmZmVyZWQsIGJ1ZmZlcmVkSW1h
Z2UuZ2V0KCkpOworICAgICAgICBwYWludFNsaWRlclRyYWNrUmVjdChvYmplY3QsIHBhaW50SW5m
bywgYnVmZmVyZWQsIENvbG9yOjpkYXJrR3JheSwgQ29sb3I6OmRhcmtHcmF5LCBDb2xvcjo6ZGFy
a0dyYXksIENvbG9yOjpkYXJrR3JheSk7CiAKICAgICAgICAgLy8gVGhpcyBpcyB0byBwYWludCBw
bGF5ZWQgcGFydCBvZiBiYXIgKGxlZnQgb2Ygc2xpZGVyIHRodW1iKSB1c2luZyBzZWxlY3Rpb24g
Y29sb3IuCi0gICAgICAgIHBhaW50U2xpZGVyVHJhY2tSZWN0KG9iamVjdCwgcGFpbnRJbmZvLCBw
bGF5ZWQsIHBsYXllZEltYWdlLmdldCgpKTsKKyAgICAgICAgcGFpbnRTbGlkZXJUcmFja1JlY3Qo
b2JqZWN0LCBwYWludEluZm8sIHBsYXllZCwgc2VsZWN0aW9uLCBzZWxlY3Rpb24sIHNlbGVjdGlv
biwgc2VsZWN0aW9uKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKLQogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0ob2JqZWN0KTsKICAgICBVTlVTRURfUEFSQU0ocGFpbnRJbmZvKTsKQEAgLTEw
MDEsMTUgKzEwNjEsMzQgQEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFT
bGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGEKIGJvb2wgUmVuZGVyVGhl
bWVCbGFja0JlcnJ5OjpwYWludE1lZGlhU2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogI2lm
IEVOQUJMRShWSURFTykKKyNpZiBVU0UoU0tJQSkKICAgICBSZW5kZXJTbGlkZXIqIHNsaWRlciA9
IGRldGVybWluZVJlbmRlclNsaWRlcihvYmplY3QpOwogICAgIGlmICghc2xpZGVyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0aWMgSW1hZ2UqIG1lZGlhVm9sdW1lVGh1bWIgPSBJ
bWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInZvbHVtZV90aHVtYiIpLmxlYWtSZWYoKTsKKyAg
ICBmbG9hdCBmdWxsU2NyZWVuTXVsdGlwbGllciA9IGRldGVybWluZUZ1bGxTY3JlZW5NdWx0aXBs
aWVyKHRvRWxlbWVudChzbGlkZXItPm5vZGUoKSkpOworCisgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnNhdmUoKTsKKyAgICBQYXRoIG1lZGlhVGh1bWJSb3VuZGVkUmVjdGFuZ2xlOworICAgIG1lZGlh
VGh1bWJSb3VuZGVkUmVjdGFuZ2xlLmFkZFJvdW5kZWRSZWN0KHJlY3QsIEZsb2F0U2l6ZShtZWRp
YVNsaWRlclRodW1iUmFkaXVzICogZnVsbFNjcmVlbk11bHRpcGxpZXIsIG1lZGlhU2xpZGVyVGh1
bWJSYWRpdXMgKiBmdWxsU2NyZWVuTXVsdGlwbGllcikpOworICAgIHBhaW50SW5mby5jb250ZXh0
LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNl
dFN0cm9rZVRoaWNrbmVzcygwLjUpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VD
b2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworCisgICAgaWYgKGlzUHJl
c3NlZChvYmplY3QpIHx8IGlzSG92ZXJlZChvYmplY3QpIHx8IHNsaWRlci0+aW5EcmFnTW9kZSgp
KQorICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVh
ckdyYWRpZW50KHNlbGVjdGlvbiwgQ29sb3Ioc2VsZWN0aW9uKS5kYXJrKCkucmdiKCksIHJlY3Qu
bWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7CisgICAgZWxzZQorICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxpbmVhckdyYWRp
ZW50KENvbG9yOjp3aGl0ZSwgQ29sb3IoQ29sb3I6OndoaXRlKS5kYXJrKCkucmdiKCksIHJlY3Qu
bWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7CiAKLSAgICBkcmF3Q29u
dHJvbChwYWludEluZm8uY29udGV4dCwgcmVjdCwgbWVkaWFWb2x1bWVUaHVtYik7CisgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmZpbGxQYXRoKG1lZGlhVGh1bWJSb3VuZGVkUmVjdGFuZ2xlKTsKKyAg
ICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwogCiAgICAgcmV0dXJuIHRydWU7CisjZWxz
ZSAvLyBHTCByZW5kZXJlcgorICAgIHN0YXRpYyBJbWFnZSogbWVkaWFTbGlkZXJUaHVtYiA9IElt
YWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgiY29yZV9zbGlkZXJfaGFuZGxlX2Rpc2FibGVkIiku
bGVha1JlZigpOworCisgICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocGFpbnRJbmZvLmNvbnRl
eHQsIHJlY3QsIG1lZGlhU2xpZGVyVGh1bWIpOworI2VuZGlmIC8vIFVTRShTS0lBKQogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0ob2JqZWN0KTsKICAgICBVTlVTRURfUEFSQU0ocGFpbnRJbmZvKTsK
QEAgLTEwMjEsMTkgKzExMDAsMjkgQEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50
TWVkaWFTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGEKIGJvb2wgUmVu
ZGVyVGhlbWVCbGFja0JlcnJ5OjpwYWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2soUmVuZGVyT2Jq
ZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQogewogI2lmIEVOQUJMRShWSURFTykKLSAgICBmbG9hdCBwYWQgPSByZWN0LndpZHRoKCkg
KiAwLjQ1OwotICAgIGZsb2F0IHggPSByZWN0LngoKSArIHBhZDsKLSAgICBmbG9hdCB5ID0gcmVj
dC55KCkgKyBwYWQ7Ci0gICAgZmxvYXQgd2lkdGggPSByZWN0LndpZHRoKCkgKiAwLjE7Ci0gICAg
ZmxvYXQgaGVpZ2h0ID0gcmVjdC5oZWlnaHQoKSAtICgyLjAgKiBwYWQpOworICAgIEhUTUxNZWRp
YUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50KG9iamVjdCk7Cisg
ICAgaWYgKCFtZWRpYUVsZW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEludFJl
Y3QgcmVjdDIoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgZmxvYXQgZnVsbFNjcmVlbk11bHRp
cGxpZXIgPSBkZXRlcm1pbmVGdWxsU2NyZWVuTXVsdGlwbGllcihtZWRpYUVsZW1lbnQpOworICAg
IGZsb2F0IHZvbHVtZSA9IG1lZGlhRWxlbWVudC0+dm9sdW1lKCkgPiAwID8gbWVkaWFFbGVtZW50
LT52b2x1bWUoKSA6IDA7CisKKyAgICBpbnQgaW50cmluc2ljSGVpZ2h0ID0gY2VpbChtZWRpYVNs
aWRlclRodW1iSGVpZ2h0IC8gNCk7CisgICAgaW50IHggPSBjZWlsKHJlY3QueCgpICsgKG1lZGlh
Q29udHJvbHNIZWlnaHQgLSBpbnRyaW5zaWNIZWlnaHQpIC8gMiAqIGZ1bGxTY3JlZW5NdWx0aXBs
aWVyIC0gZnVsbFNjcmVlbk11bHRpcGxpZXIgLyAyKTsKKyAgICBpbnQgeSA9IGNlaWwocmVjdC55
KCkgKyAobWVkaWFDb250cm9sc0hlaWdodCAvIDIgLSBpbnRyaW5zaWNIZWlnaHQpIC8gMiAqIGZ1
bGxTY3JlZW5NdWx0aXBsaWVyICsgZnVsbFNjcmVlbk11bHRpcGxpZXIgLyAyKTsKKyAgICBpbnQg
dyA9IGNlaWwocmVjdC53aWR0aCgpIC0gKG1lZGlhQ29udHJvbHNIZWlnaHQgLSBpbnRyaW5zaWNI
ZWlnaHQpICogZnVsbFNjcmVlbk11bHRpcGxpZXIgKyBmdWxsU2NyZWVuTXVsdGlwbGllciAvIDIp
OworICAgIGludCBoID0gY2VpbChpbnRyaW5zaWNIZWlnaHQgKiBmdWxsU2NyZWVuTXVsdGlwbGll
cik7CisgICAgSW50UmVjdCByZWN0Mih4LCB5LCB3LCBoKTsKKyAgICBJbnRSZWN0IHZvbHVtZVJl
Y3QoeCwgeSwgY2VpbCh3ICogdm9sdW1lKSwgaCk7CiAKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdl
PiB0cmFja0ltYWdlOwotICAgIGlmICghdHJhY2tJbWFnZSkKLSAgICAgICAgdHJhY2tJbWFnZSA9
IGxvYWRJbWFnZSgiY29yZV9zbGlkZXJfbWVkaWFfYmciKTsKKyAgICAvLyBUaGlzIGlzIHRvIHBh
aW50IG1haW4gdm9sdW1lIHNsaWRlciBiYXIuCisgICAgYm9vbCByZXN1bHQgPSBwYWludFNsaWRl
clRyYWNrUmVjdChvYmplY3QsIHBhaW50SW5mbywgcmVjdDIsIENvbG9yKG1lZGlhU2xpZGVyVHJh
Y2tPdXRsaW5lKS5yZ2IoKSwgQ29sb3IobWVkaWFTbGlkZXJUcmFja091dGxpbmUpLnJnYigpLCBy
YW5nZVNsaWRlclJlZ3VsYXJUb3AsIHJhbmdlU2xpZGVyUmVndWxhclRvcCk7CiAKLSAgICByZXR1
cm4gcGFpbnRTbGlkZXJUcmFja1JlY3Qob2JqZWN0LCBwYWludEluZm8sIHJlY3QyLCB0cmFja0lt
YWdlLmdldCgpKTsKKyAgICBpZiAodm9sdW1lID4gMCkgeworICAgICAgICAvLyBUaGlzIGlzIHRv
IHBhaW50IHZvbHVtZSBiYXIgKGxlZnQgb2Ygdm9sdW1lIHNsaWRlciB0aHVtYikgdXNpbmcgc2Vs
ZWN0aW9uIGNvbG9yLgorICAgICAgICBwYWludFNsaWRlclRyYWNrUmVjdChvYmplY3QsIHBhaW50
SW5mbywgdm9sdW1lUmVjdCwgQ29sb3IobWVkaWFTbGlkZXJUcmFja091dGxpbmUpLnJnYigpLCBD
b2xvcihtZWRpYVNsaWRlclRyYWNrT3V0bGluZSkucmdiKCksIHNlbGVjdGlvbiwgc2VsZWN0aW9u
KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG9i
amVjdCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhaW50SW5mbyk7CkBAIC0xMDQ1LDkgKzExMzQsMjkg
QEAgYm9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUcmFj
ayhSZW5kZXJPYmplY3QqIG9iamVjdCwgY28KIGJvb2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5Ojpw
YWludE1lZGlhVm9sdW1lU2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogI2lmIEVOQUJMRShW
SURFTykKLSAgICBzdGF0aWMgSW1hZ2UqIG1lZGlhVm9sdW1lVGh1bWIgPSBJbWFnZTo6bG9hZFBs
YXRmb3JtUmVzb3VyY2UoInZvbHVtZV90aHVtYiIpLmxlYWtSZWYoKTsKKyNpZiBVU0UoU0tJQSkK
KyAgICBSZW5kZXJTbGlkZXIqIHNsaWRlciA9IGRldGVybWluZVJlbmRlclNsaWRlcihvYmplY3Qp
OworICAgIGlmICghc2xpZGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4g
cGFpbnRNZWRpYUJ1dHRvbihwYWludEluZm8uY29udGV4dCwgcmVjdCwgbWVkaWFWb2x1bWVUaHVt
Yik7CisgICAgZmxvYXQgZnVsbFNjcmVlbk11bHRpcGxpZXIgPSBkZXRlcm1pbmVGdWxsU2NyZWVu
TXVsdGlwbGllcih0b0VsZW1lbnQoc2xpZGVyLT5ub2RlKCkpKTsKKworICAgIHBhaW50SW5mby5j
b250ZXh0LT5zYXZlKCk7CisgICAgUGF0aCBtZWRpYVRodW1iUm91bmRlZFJlY3RhbmdsZTsKKyAg
ICBtZWRpYVRodW1iUm91bmRlZFJlY3RhbmdsZS5hZGRSb3VuZGVkUmVjdChyZWN0LCBGbG9hdFNp
emUobWVkaWFTbGlkZXJUaHVtYkhlaWdodCAvIDIgKiBmdWxsU2NyZWVuTXVsdGlwbGllciwgbWVk
aWFTbGlkZXJUaHVtYkhlaWdodCAvIDIgKiBmdWxsU2NyZWVuTXVsdGlwbGllcikpOworCisgICAg
aWYgKGlzUHJlc3NlZChvYmplY3QpIHx8IGlzSG92ZXJlZChvYmplY3QpIHx8IHNsaWRlci0+aW5E
cmFnTW9kZSgpKQorICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNy
ZWF0ZUxpbmVhckdyYWRpZW50KHNlbGVjdGlvbiwgQ29sb3Ioc2VsZWN0aW9uKS5kYXJrKCkucmdi
KCksIHJlY3QubWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7CisgICAg
ZWxzZQorICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGNyZWF0ZUxp
bmVhckdyYWRpZW50KG1lZGlhU2xpZGVyVHJhY2tPdXRsaW5lLCBDb2xvcjo6YmxhY2ssIHJlY3Qu
bWF4WE1pbllDb3JuZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpKSk7CisKKyAgICBwYWludElu
Zm8uY29udGV4dC0+ZmlsbFBhdGgobWVkaWFUaHVtYlJvdW5kZWRSZWN0YW5nbGUpOworICAgIHBh
aW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlIC8v
IEdMIHJlbmRlcmVyCisgICAgcmV0dXJuIHBhaW50TWVkaWFTbGlkZXJUaHVtYihvYmplY3QsIHBh
aW50SW5mbywgcmVjdCk7CisjZW5kaWYgLy8gVVNFKFNLSUEpCiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShvYmplY3QpOwogICAgIFVOVVNFRF9QQVJBTShwYWludEluZm8pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0Jl
cnJ5LmgKaW5kZXggNTA3ZDQ1MTM0OGQzNWZlNDU0NjU0MDEwOWJhMzc1NmQ2MzY4NWVlNS4uMWVl
YjU1Yjk5MjFjMGE4MjNlN2IzN2UxM2Q2MGQzZjc3OGI3NTFmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJy
eS5oCkBAIC0zMiw3ICszMiwxMCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAg
dmlydHVhbCBTdHJpbmcgZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpOwotICAgIHZpcnR1
YWwgU3RyaW5nIGZvcm1hdE1lZGlhQ29udHJvbHNSZW1haW5pbmdUaW1lKGZsb2F0IGN1cnJlbnRU
aW1lLCBmbG9hdCBkdXJhdGlvbikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHVzZXNWZXJ0aWNh
bFZvbHVtZVNsaWRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCisgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFGdWxsU2NyZWVuU3R5
bGVTaGVldCgpOwogI2VuZGlmCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSG92ZXIoY29uc3Qg
UmVuZGVyU3R5bGUqKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTgyLDYgKzg1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhVm9sdW1lU2xpZGVyVGh1bWIoUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1
YWwgYm9vbCBwYWludE1lZGlhUGxheUJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFNdXRlQnV0
dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVJld2luZEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCBib29sIHBhaW50UHJv
Z3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
OwogICAgIHZpcnR1YWwgZG91YmxlIGFuaW1hdGlvblJlcGVhdEludGVydmFsRm9yUHJvZ3Jlc3NC
YXIoUmVuZGVyUHJvZ3Jlc3MqKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBhbmltYXRpb25E
dXJhdGlvbkZvclByb2dyZXNzQmFyKFJlbmRlclByb2dyZXNzKikgY29uc3Q7CkBAIC0xMDQsOSAr
MTA4LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRCdXR0b25TdHlsZShSZW5kZXJTdHlsZSop
IGNvbnN0OwogCiAgICAgYm9vbCBwYWludFRleHRGaWVsZE9yVGV4dEFyZWFPclNlYXJjaEZpZWxk
KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKKwogICAg
IGJvb2wgcGFpbnRTbGlkZXJUcmFja1JlY3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpOwogCisgICAgYm9vbCBwYWludFNsaWRlclRyYWNrUmVjdChSZW5k
ZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JiwgUkdCQTMyLCBSR0JB
MzIsIFJHQkEzMiwgUkdCQTMyKTsKKwogICAgIGJvb2wgcGFpbnRTbGlkZXJUcmFja1JlY3QoUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYsIEltYWdlKik7CisK
ICAgICBJbnRSZWN0IGNvbnZlcnRUb1BhaW50aW5nUmVjdChSZW5kZXJPYmplY3QqIGlucHV0UmVu
ZGVyZXIsIGNvbnN0IFJlbmRlck9iamVjdCogcGFydFJlbmRlcmVyLCBMYXlvdXRSZWN0IHBhcnRS
ZWN0LCBjb25zdCBJbnRSZWN0JiBsb2NhbE9mZnNldCkgY29uc3Q7CiAKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvY21ha2UvT3B0aW9uc0JsYWNrQmVycnkuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0
aW9uc0JsYWNrQmVycnkuY21ha2UKaW5kZXggZGRiODI4YmM5MjA0YzkwZWE5N2YzY2MxN2U2ZWY2
NGFjOTdiOGJjMS4uYWRiZWI3ZTdlMjAyNTY3MGY4ZjVhNWFkY2U1YWE1ZjE4M2M4ZmMxYiAxMDA2
NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNCbGFja0JlcnJ5LmNtYWtlCisrKyBiL1NvdXJj
ZS9jbWFrZS9PcHRpb25zQmxhY2tCZXJyeS5jbWFrZQpAQCAtMTk4LDcgKzE5OCw3IEBAIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9UT1VDSF9FVkVOVFMgT04pCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfVE9VQ0hfU0xJREVSIE9OKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJQlJBVElPTiBPTikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSURFTyBPTikKLVdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSURFT19UUkFDSyBPTikKK1dFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSURFT19UUkFDSyBPRkYpCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX1RJTUlORyBPTikKIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XT1JLRVJTIE9OKQogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1hIUl9SRVNQT05TRV9CTE9CIE9OKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDVjMWYwMGY5ZDM4MmU2
M2M4NzI5ZDQzNmI5ZDY1OWJjMGQyZmYwODcuLmZhOWYyZjYzMjQzNWY0ZDM2YTI2MjhiZWM5NTZm
MTBmNzIwYjZjMmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0xMi0xMiAgSm9obiBHcmlnZ3MgIDxqZ3JpZ2dz
QHJpbS5jb20+CisKKyAgICAgICAgMjAxMi0xMi0xMiAgSm9obiBHcmlnZ3MgIDxqZ3JpZ2dzQHJp
bS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFVwZGF0ZSBNZWRpYSBDb250cm9scworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NDQzCisgICAg
ICAgIGh0dHBzOi8vcHJ6aWxsYS5vdHQucW54LmNvbS9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9
MjA0NzQ4CisKKyAgICAgICAgVXBkYXRlIE1lZGlhIENvbnRyb2xzIGZvciBCbGFja0JlcnJ5IHBs
YXRmb3JtIHRvIGFsbG93IGF1ZGlvLCBlbWJlZGRlZCB2aWRlbyBhbmQgZnVsbHNjcmVlbiB2aWRl
byBjb250cm9scyB0byBiZSBwb3NpdGlvbmVkIGFuZCBzdHlsZWQgZGlmZmVyZW50bHkuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmxhY2tCZXJyeS1z
cGVjaWZpYyB1cGRhdGUgdG8gTWVkaWEgQ29udHJvbHMgLSBObyBuZXcgdGVzdHMgcmVxdWlyZWQu
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06CisKIDIwMTIt
MTItMTIgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IE5hdGl2ZSBNZW1vcnkgSW5zdHJ1bWVudGF0aW9uOiByZW1vdmUgZmFr
ZSByb290IE1lbW9yeU9iamVjdEluZm8uCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxp
c3QucG0KaW5kZXggNmRmMGQyMDE5M2I5MTUzNDc4NTI3YzBiYWQ0MWNjMmI0OTg5NzQ3MS4uY2Q2
NzM2MzNlMjlkYmIxYzkxMDQ3MjM3OGY0ZTQ2YzQzYjdjY2E4NyAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtNDIwLDcgKzQyMCw3IEBAIG15IEBmZWF0dXJlcyA9
ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1ZJREVPIiwgZGVmYXVsdCA9PiAoaXNBcHBsZVdl
YktpdCgpIHx8IGlzR3RrKCkgfHwgaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSksIHZhbHVlID0+
IFwkdmlkZW9TdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAidmlkZW8tdHJhY2siLCBkZXNj
ID0+ICJUb2dnbGUgVmlkZW8gVHJhY2sgc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJM
RV9WSURFT19UUkFDSyIsIGRlZmF1bHQgPT4gKGlzQXBwbGVXZWJLaXQoKSB8fCBpc0d0aygpIHx8
IGlzRWZsKCkgfHwgaXNCbGFja0JlcnJ5KCkpLCB2YWx1ZSA9PiBcJHZpZGVvVHJhY2tTdXBwb3J0
IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9WSURFT19UUkFDSyIsIGRlZmF1bHQgPT4gKGlz
QXBwbGVXZWJLaXQoKSB8fCBpc0d0aygpIHx8IGlzRWZsKCkpLCB2YWx1ZSA9PiBcJHZpZGVvVHJh
Y2tTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAid2ViZ2wiLCBkZXNjID0+ICJUb2dnbGUg
V2ViR0wgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9XRUJHTCIsIGRlZmF1bHQg
PT4gKGlzQXBwbGVNYWNXZWJLaXQoKSB8fCBpc0d0aygpIHx8IGlzRWZsKCkpLCB2YWx1ZSA9PiBc
JHdlYmdsU3VwcG9ydCB9LApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4
IGM0NDBmMGRhZDIwNDQzNjdhMzcxOTRiNTRiYTU3MDIxNmUwZTY1ZGMuLjY5NjE0YjI2NzI3NDlk
ODVhMmQ3Y2UxZWE4ZmFkNGZjMTczZjlhMDQgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMi0xMiAgSm9obiBHcmlnZ3MgIDxqZ3Jp
Z2dzQHJpbS5jb20+CisKKyAgICAgICAgMjAxMi0xMi0xMiAgSm9obiBHcmlnZ3MgIDxqZ3JpZ2dz
QHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFVwZGF0ZSBNZWRpYSBDb250cm9scyBm
b3IgQmxhY2tCZXJyeSBQbGF0Zm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA0NDQzCisgICAgICAgIGh0dHBzOi8vcHJ6aWxsYS5vdHQucW54LmNv
bS9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjA0NzQ4CisKKyAgICAgICAgVXBkYXRlIE1lZGlh
IENvbnRyb2xzIGZvciBCbGFja0JlcnJ5IHBsYXRmb3JtIHRvIGFsbG93IGF1ZGlvLCBlbWJlZGRl
ZCB2aWRlbyBhbmQgZnVsbHNjcmVlbiB2aWRlbyBjb250cm9scyB0byBiZSBwb3NpdGlvbmVkIGFu
ZCBzdHlsZWQgZGlmZmVyZW50bHkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0JsYWNrQmVycnkuY21ha2U6CisK
IDIwMTItMTItMTIgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAg
ICAgICBbR1RLXSBSZW1vdmUgdGhlIGxhc3Qgb2YgdW5uZWNlc3NhcnkgY29uZmlndXJhdGlvbiBv
cHRpb25zIGluIGNvbmZpZ3VyZS5hYwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>