<?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>71410</bug_id>
          
          <creation_ts>2011-11-02 15:07:28 -0700</creation_ts>
          <short_desc>MediaControls should use MediaController if present.</short_desc>
          <delta_ts>2011-12-04 20:57:41 -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>Media</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>http://www.w3.org/TR/html5/video.html#user-interface</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>71408</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>arun.patole</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>morrita</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>494952</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-02 15:07:28 -0700</bug_when>
    <thetext>MediaControls should use MediaController if present. &lt;http://www.w3.org/TR/html5/video.html#user-interface&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495052</commentid>
    <comment_count>1</comment_count>
      <attachid>113403</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-02 16:45:29 -0700</bug_when>
    <thetext>Created attachment 113403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495060</commentid>
    <comment_count>2</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-02 16:49:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/10387345&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498153</commentid>
    <comment_count>3</comment_count>
      <attachid>114096</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-08 09:42:50 -0800</bug_when>
    <thetext>Created attachment 114096
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498964</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-09 08:00:11 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; MediaControls should use MediaController if present. &lt;http://www.w3.org/TR/html5/video.html#user-interface&gt;

You should use the editors draft, http://dev.w3.org/html5/spec/the-iframe-element.html#user-interface, not the current working draft.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498982</commentid>
    <comment_count>5</comment_count>
      <attachid>114096</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-09 08:19:25 -0800</bug_when>
    <thetext>Comment on attachment 114096
Patch

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

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:693
&gt; +        ExceptionCode code = 0;
&gt; +        mediaController()-&gt;setCurrentTime(max(0.0f, mediaController()-&gt;currentTime() - 30), code);
&gt;          event-&gt;setDefaultHandled();

Nit: you ignore an exception so initialization isn&apos;t helpful.

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:852
&gt;      slider-&gt;setAttribute(maxAttr, &quot;1&quot;);
&gt; -    slider-&gt;setAttribute(valueAttr, String::number(mediaElement-&gt;volume()));
&gt;      return slider.release();

Why does this no longer set the current value?

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:902
&gt;      slider-&gt;setAttribute(maxAttr, &quot;1&quot;);
&gt; -    slider-&gt;setAttribute(valueAttr, String::number(mediaElement-&gt;volume()));
&gt;      return slider.release();

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499032</commentid>
    <comment_count>6</comment_count>
      <attachid>114096</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-09 09:05:02 -0800</bug_when>
    <thetext>Comment on attachment 114096
Patch

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

&gt;&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:693
&gt;&gt;          event-&gt;setDefaultHandled();
&gt; 
&gt; Nit: you ignore an exception so initialization isn&apos;t helpful.

Sure thing.  I&apos;ll rename this to &quot;ignoredCode&quot; or something similar.

&gt;&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:852
&gt;&gt;      return slider.release();
&gt; 
&gt; Why does this no longer set the current value?

This is due to passing in a Document* instead of a HTMLMediaElement*.

At the time at which MediaControlVolumeSliderElement ::create() is called, the root element does not have a MediaControllerInterface yet.  When MediaControlRootElement::setMediaController() is called, it will call reset(), which will update the volume on the slider.  This will happen in the same runloop, just after the shadow elements are all created.

&gt;&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:902
&gt;&gt;      return slider.release();
&gt; 
&gt; Ditto.

Ditto. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502052</commentid>
    <comment_count>7</comment_count>
      <attachid>114974</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-11-14 10:20:20 -0800</bug_when>
    <thetext>Created attachment 114974
Patch

Updating the patch, now that dependeds-on patches have landed, to let the EWS bots chew on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502083</commentid>
    <comment_count>8</comment_count>
      <attachid>114974</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-14 10:52:37 -0800</bug_when>
    <thetext>Comment on attachment 114974
Patch

Attachment 114974 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10362281

New failing tests:
media/media-document-audio-repaint.html
media/controls-strict.html
media/controls-drag-timebar.html
media/controls-styling.html
fullscreen/video-controls-override.html
media/audio-repaint.html
media/controls-right-click-on-timebar.html
http/tests/inspector/network-preflight-options.html
media/audio-controls-rendering.html
media/audio-controls-do-not-fade-out.html
media/controls-without-preload.html
media/media-controls-invalid-url.html
media/media-controls-clone.html
fast/layers/video-layer.html
media/audio-delete-while-slider-thumb-clicked.html
media/controls-after-reload.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513841</commentid>
    <comment_count>9</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-12-02 09:36:04 -0800</bug_when>
    <thetext>Committed r101810: &lt;http://trac.webkit.org/changeset/101810&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514872</commentid>
    <comment_count>10</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-04 20:57:41 -0800</bug_when>
    <thetext>*** Bug 53001 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113403</attachid>
            <date>2011-11-02 16:45:29 -0700</date>
            <delta_ts>2011-11-08 09:42:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71410-20111102164528.patch</filename>
            <type>text/plain</type>
            <size>82382</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkxMTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzM2I1ZTRjNzM5NTVkODJm
ZjM2NWYzMjI5ZTU2YmMxY2Y5OWU3MDVmLi42ODlhZWNlYjRmMzk2NWI4MzQwOWI5MzIwMmI4ZTBk
OWFjNTA3ZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTMxIEBACiAyMDExLTExLTAyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIE1lZGlhQ29udHJvbHMgc2hv
dWxkIHVzZSBNZWRpYUNvbnRyb2xsZXIgaWYgcHJlc2VudC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOyBjb3ZlcmVkIGJ5IGV4aXN0
aW5nIHRlc3RzLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBpbmRpdmlkdWFsIG1lZGlhIGNv
bnRyb2xzIHRvIGNvbnRyb2wgdGhlIE1lZGlhQ29udHJvbGxlciBvZiB0aGVpciBhc3NvY2lhdGVk
CisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQsIGlmIHByZXNlbnQuCisKKyAgICAgICAgVGhlIHZp
ZGVvIHNwZWMgcmVxdWlyZXMgdGhhdCBVQSBwcm92aWRlZCBtZWRpYSBjb250cm9scyBiZSBpbXBs
ZW1lbnRlZCBpbiB0ZXJtcyBvZiB0aGVpciAKKyAgICAgICAgSFRNTE1lZGlhRWxlbWVudCdzIE1l
ZGlhQ29udHJvbGxlciwgaWYgcHJlc2VudC4gIFNvIGZvciBlYWNoIG9mIHRoZSBtZWRpYSBjb250
cm9scywgbW9kaWZ5IAorICAgICAgICB0aGVpciBjb25zdHJ1Y3RvciB0byB0YWtlIGEgRG9jdW1l
bnQqIGluc3RlYWQgb2YgYW4gSFRNTE1lZGlhRWxlbWVudCwgYW5kIGFkZCBhbiBzZXR0ZXIKKyAg
ICAgICAgdGFraW5nIGEgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLgorCisgICAgICAgIE5vdyB0
aGF0IE1lZGlhQ29udHJvbHMgaGF2ZSBhbiBhYnN0cmFjdCBpbnRlcmZhY2UgaW5zdGVhZCBvZiBh
biBIVE1MTWVkaWFFbGVtZW50LCB1c2UgdG9QYXJlbnRNZWRpYUVsZW1lbnQKKyAgICAgICAgdG8g
ZmluZCB0aGUgY29udHJvbGxpbmdWaWRlb0VsZW1lbnQuCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5TWVkaWFDb250cm9sc0NvbnRhaW5lcjo6Y29udHJvbGxpbmdWaWRlb0VsZW1lbnQp
OgorCisgICAgICAgIFBhc3MgdGhlIE1lZGlhQ29udHJvbGxlciBvciB0aGUgSFRNTE1lZGlhRWxl
bWVudCB3aGVuIHNldHRpbmcgdXAgdGhlIGVsZW1lbnRzIGNvbnRyb2xzLgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpjcmVhdGVNZWRpYUNvbnRyb2xzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcik6CisKKyAgICAgICAgVGhlIGZvbGxvd2luZyBmdW5j
dGlvbnMgaGF2ZSBvbmx5IGNvbnN0cnVjdG9yIGNoYW5nZXM6CisgICAgICAgICogaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sRWxlbWVudDo6TWVkaWFDb250cm9sRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xQYW5lbEVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBhbmVsRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJv
bFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1
bWVTbGlkZXJDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6TWVkaWFDb250cm9sU3RhdHVzRGlz
cGxheUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sU3RhdHVzRGlzcGxh
eUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xJbnB1dEVs
ZW1lbnQ6Ok1lZGlhQ29udHJvbElucHV0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUGFuZWxNdXRl
QnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVs
ZW1lbnQ6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6
Ok1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVu
dDo6TWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudDo6TWVkaWFDb250
cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bFNlZWtCYWNrQnV0dG9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVC
dXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxl
bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRvZ2dsZUNsb3Nl
ZENhcHRpb25zQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNC
dXR0b25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRvZ2dsZUNsb3Nl
ZENhcHRpb25zQnV0dG9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFRpbWVsaW5lRWxlbWVudDo6TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbFZvbHVtZVNsaWRlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
Vm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ6Ok1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6Ok1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVs
ZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVt
ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGltZURpc3BsYXlF
bGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpN
ZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6Ok1lZGlh
Q29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93
L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50OjpNZWRpYUNvbnRyb2xSb290RWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sUm9vdEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sUm9vdEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6Ok1lZGlhQ29udHJvbHMpOgorICAg
ICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaDoKKworICAgICAgICBUaGUgZm9sbG93
aW5nIGZ1bmN0aW9ucyBub3cgY2FsbCBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UgaW5zdGVhZCBv
ZiBIVE1MTWVkaWFFbGVtZW50IGRpcmVjdGx5OgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlh
Q29udHJvbEVsZW1lbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xTdGF0dXNE
aXNwbGF5RWxlbWVudDo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbE11
dGVCdXR0b25FbGVtZW50Ojp1cGRhdGVEaXNwbGF5VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6dXBkYXRlRGlzcGxh
eVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6
OnN0YXJ0VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sU2Vla0J1dHRvbkVs
ZW1lbnQ6OnN0b3BUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xTZWVrQnV0
dG9uRWxlbWVudDo6bmV4dFJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sU2Vl
a0J1dHRvbkVsZW1lbnQ6OnNlZWtUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVG9nZ2xl
Q2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVu
dDo6dXBkYXRlRGlzcGxheVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGlt
ZWxpbmVFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25F
bGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6cmVzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnBsYXliYWNrU3RhcnRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6cGxheWJhY2tQcm9ncmVz
c2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpwbGF5YmFj
a1N0b3BwZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnVw
ZGF0ZVRpbWVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVt
ZW50Ojpsb2FkZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290
RWxlbWVudDo6Y2hhbmdlZFZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xS
b290RWxlbWVudDo6ZW50ZXJlZEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sUm9vdEVsZW1lbnQ6OnNob3dWb2x1bWVTbGlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnN0YXJ0SGlkZUZ1bGxzY3JlZW5Db250
cm9sc1RpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojpo
aWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXJGaXJlZCk6CisKKyAgICAgICAgVGhlIGZvbGxvd2lu
ZyBmdW5jdGlvbnMgc2V0IHRoZSBjdXJyZW50IE1lZGlhQ29udHJvbGxlckludGVyZmFjZS4KKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6c2V0TWVkaWFDb250cm9sbGVyKToK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sRWxlbWVudDo6c2V0TWVkaWFDb250cm9sbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEVsZW1lbnQ6Om1lZGlhQ29udHJvbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6Om1lZGlhQ29u
dHJvbGxlcik6CisKKzIwMTEtMTEtMDIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CisKICAgICAgICAgSW1wbGVtZW50IE1lZGlhQ29udHJvbGxlci4KICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDA4CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5j
cHAKaW5kZXggNTMxYjZiMTJhMGM2NTM0MDdiZGM0MDgwOWNlY2VhYzQ5OWEzN2VjMy4uYzczM2E3
MjZiOWJhMjBlYzQ4Njc3YWE4YTQxNThlMmZkNDQ0MmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5j
cHAKQEAgLTM1LDYgKzM1LDcgQEAKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNs
dWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNp
bmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgpAQCAtMjM1LDcgKzIzNiw3IEBAIGJvb2wg
QWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHNDb250YWluZXI6OmNvbnRyb2xsaW5nVmlkZW9FbGVt
ZW50KCkgY29uc3QKIAogICAgIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudCogZWxlbWVu
dCA9IHN0YXRpY19jYXN0PE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudCo+KG1fcmVuZGVy
ZXItPm5vZGUoKSk7CiAKLSAgICByZXR1cm4gZWxlbWVudC0+bWVkaWFFbGVtZW50KCktPmlzVmlk
ZW8oKTsKKyAgICByZXR1cm4gdG9QYXJlbnRNZWRpYUVsZW1lbnQoZWxlbWVudCktPmlzVmlkZW8o
KTsKIH0KIAogY29uc3QgU3RyaW5nIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzQ29udGFpbmVy
OjplbGVtZW50VHlwZU5hbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKaW5kZXggNWMyOWM2YjkxNDBhOGFkMjZhZDZmOWU5ZjJlYTg1ZmJhZmVlMTRlNy4u
MDFlM2Q0MjViZTAzN2ZiY2NmMTc1OTU0MGVhNWU5MThlZGY0NzA1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zMDc0LDEwICszMDc0LDEyIEBAIGJvb2wg
SFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVkaWFDb250cm9scygpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICBSZWZQdHI8TWVkaWFDb250cm9scz4g
Y29udHJvbHMgPSBNZWRpYUNvbnRyb2xzOjpjcmVhdGUodGhpcyk7CisgICAgUmVmUHRyPE1lZGlh
Q29udHJvbHM+IGNvbnRyb2xzID0gTWVkaWFDb250cm9sczo6Y3JlYXRlKGRvY3VtZW50KCkpOwog
ICAgIGlmICghY29udHJvbHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGNvbnRyb2xz
LT5zZXRNZWRpYUNvbnRyb2xsZXIobV9tZWRpYUNvbnRyb2xsZXIgPyBtX21lZGlhQ29udHJvbGxl
ci5nZXQoKSA6IHN0YXRpY19jYXN0PE1lZGlhQ29udHJvbGxlckludGVyZmFjZSo+KHRoaXMpKTsK
KwogICAgIGVuc3VyZVNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoY29udHJvbHMsIGVjKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTMxODYsNiArMzE4OCw5IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0TWVkaWFDb250cm9sbGVyKFBhc3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBjb250
cm9sbGVyCiAKICAgICBtX21lZGlhQ29udHJvbGxlciA9IGNvbnRyb2xsZXI7CiAKKyAgICBpZiAo
aGFzTWVkaWFDb250cm9scygpKQorICAgICAgICBtZWRpYUNvbnRyb2xzKCktPnNldE1lZGlhQ29u
dHJvbGxlcihtX21lZGlhQ29udHJvbGxlciA/IG1fbWVkaWFDb250cm9sbGVyLmdldCgpIDogc3Rh
dGljX2Nhc3Q8TWVkaWFDb250cm9sbGVySW50ZXJmYWNlKj4odGhpcykpOworCiAgICAgaWYgKG1f
bWVkaWFDb250cm9sbGVyKQogICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+YWRkTWVkaWFFbGVt
ZW50KHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwCmluZGV4IDc1NzVkNDFhY2FkM2U5YjIyN2M0ZTQwZDJiMzk4ZjNl
OTM2OGI2NjUuLmJmMjk2OTAxNDlhYmI4ZTMxY2IyMzhhMjRkMzI3OGVlZjUwM2I1MDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5j
cHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAi
RmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MTWVk
aWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVk
U3RyaW5ncy5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbHMuaCIKQEAgLTUzLDYgKzU0LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKK3VzaW5n
IG5hbWVzcGFjZSBzdGQ7CiAKIEhUTUxNZWRpYUVsZW1lbnQqIHRvUGFyZW50TWVkaWFFbGVtZW50
KE5vZGUqIG5vZGUpCiB7CkBAIC03MSw5ICs3Myw5IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBjU2Nh
bk1heGltdW1SYXRlID0gODsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1N
ZWRpYUNvbnRyb2xFbGVtZW50OjpNZWRpYUNvbnRyb2xFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQq
IG1lZGlhRWxlbWVudCkKLSAgICA6IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgbWVkaWFFbGVtZW50
LT5kb2N1bWVudCgpKQotICAgICwgbV9tZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KQorTWVkaWFD
b250cm9sRWxlbWVudDo6TWVkaWFDb250cm9sRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisg
ICAgOiBIVE1MRGl2RWxlbWVudChkaXZUYWcsIGRvY3VtZW50KQorICAgICwgbV9tZWRpYUNvbnRy
b2xsZXIoMCkKIHsKIH0KIApAQCAtODksMTcgKzkxLDE3IEBAIHZvaWQgTWVkaWFDb250cm9sRWxl
bWVudDo6aGlkZSgpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5l
IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6TWVkaWFDb250cm9sUGFuZWxFbGVtZW50KEhUTUxN
ZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLSAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQobWVk
aWFFbGVtZW50KQoraW5saW5lIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6TWVkaWFDb250cm9s
UGFuZWxFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbEVsZW1l
bnQoZG9jdW1lbnQpCiAgICAgLCBtX2NhbkJlRHJhZ2dlZChmYWxzZSkKICAgICAsIG1faXNCZWlu
Z0RyYWdnZWQoZmFsc2UpCiAgICAgLCBtX29wYXF1ZSh0cnVlKQogewogfQogCi1QYXNzUmVmUHRy
PE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudD4gTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpjcmVh
dGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQorUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xQYW5lbEVsZW1lbnQ+IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50
KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFBhbmVs
RWxlbWVudChtZWRpYUVsZW1lbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29u
dHJvbFBhbmVsRWxlbWVudChkb2N1bWVudCkpOwogfQogCiBNZWRpYUNvbnRyb2xFbGVtZW50VHlw
ZSBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6OmRpc3BsYXlUeXBlKCkgY29uc3QKQEAgLTI0Mywx
NCArMjQ1LDE0IEBAIHZvaWQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpzZXRDYW5CZURyYWdn
ZWQoYm9vbCBjYW5CZURyYWdnZWQpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotaW5saW5lIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250
cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVu
dCkKLSAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQobWVkaWFFbGVtZW50KQoraW5saW5lIE1lZGlh
Q29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sVGltZWxpbmVDb250
YWluZXJFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbEVsZW1l
bnQoZG9jdW1lbnQpCiB7CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVDb250
YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0
ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCitQYXNzUmVmUHRyPE1lZGlhQ29udHJv
bFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJF
bGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIFJlZlB0cjxNZWRpYUNv
bnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVk
aWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KG1lZGlhRWxlbWVudCkpOworICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9w
dFJlZihuZXcgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7
CiAgICAgZWxlbWVudC0+aGlkZSgpOwogICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKIH0K
QEAgLTI5NiwxNCArMjk4LDE0IEBAIHZvaWQgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWlu
ZXI6OmxheW91dCgpCiAgICAgc2V0WShvZmZzZXQueSgpICsgYnV0dG9uQm94LT5vZmZzZXRUb3Ao
KSk7CiB9CiAKLWlubGluZSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50
OjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50KEhUTUxNZWRpYUVsZW1l
bnQqIG1lZGlhRWxlbWVudCkKLSAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQobWVkaWFFbGVtZW50
KQoraW5saW5lIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlh
Q29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQor
ICAgIDogTWVkaWFDb250cm9sRWxlbWVudChkb2N1bWVudCkKIHsKIH0KIAotUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xWb2x1
bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFF
bGVtZW50KQorUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVt
ZW50PiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9j
dW1lbnQqIGRvY3VtZW50KQogewotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJD
b250YWluZXJFbGVtZW50PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckNvbnRhaW5lckVsZW1lbnQobWVkaWFFbGVtZW50KSk7CisgICAgUmVmUHRyPE1lZGlh
Q29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihu
ZXcgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudChkb2N1bWVudCkpOwog
ICAgIGVsZW1lbnQtPmhpZGUoKTsKICAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7CiB9CkBA
IC0zNDMsMTUgKzM0NSwxNSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgYwogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5
RWxlbWVudDo6TWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVu
dCogbWVkaWFFbGVtZW50KQotICAgIDogTWVkaWFDb250cm9sRWxlbWVudChtZWRpYUVsZW1lbnQp
CitpbmxpbmUgTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFN0
YXR1c0Rpc3BsYXlFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJv
bEVsZW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX3N0YXRlQmVpbmdEaXNwbGF5ZWQoTm90aGluZykK
IHsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudD4gTWVk
aWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBt
ZWRpYUVsZW1lbnQpCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50
PiBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCkKIHsKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ+IGVs
ZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQobWVk
aWFFbGVtZW50KSk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50
PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50
KGRvY3VtZW50KSk7CiAgICAgZWxlbWVudC0+aGlkZSgpOwogICAgIHJldHVybiBlbGVtZW50LnJl
bGVhc2UoKTsKIH0KQEAgLTM2MSw5ICszNjMsOSBAQCB2b2lkIE1lZGlhQ29udHJvbFN0YXR1c0Rp
c3BsYXlFbGVtZW50Ojp1cGRhdGUoKQogICAgIC8vIEdldCB0aGUgbmV3IHN0YXRlIHRoYXQgd2Un
bGwgaGF2ZSB0byBkaXNwbGF5LgogICAgIFN0YXRlQmVpbmdEaXNwbGF5ZWQgbmV3U3RhdGVUb0Rp
c3BsYXkgPSBOb3RoaW5nOwogCi0gICAgaWYgKG1lZGlhRWxlbWVudCgpLT5yZWFkeVN0YXRlKCkg
PD0gSFRNTE1lZGlhRWxlbWVudDo6SEFWRV9NRVRBREFUQSAmJiAhbWVkaWFFbGVtZW50KCktPmN1
cnJlbnRTcmMoKS5pc0VtcHR5KCkpCisgICAgaWYgKG1lZGlhQ29udHJvbGxlcigpLT5yZWFkeVN0
YXRlKCkgPD0gTWVkaWFDb250cm9sbGVySW50ZXJmYWNlOjpIQVZFX01FVEFEQVRBICYmIG1lZGlh
Q29udHJvbGxlcigpLT5pc0xvYWRpbmcoKSkKICAgICAgICAgbmV3U3RhdGVUb0Rpc3BsYXkgPSBM
b2FkaW5nOwotICAgIGVsc2UgaWYgKG1lZGlhRWxlbWVudCgpLT5tb3ZpZUxvYWRUeXBlKCkgPT0g
TWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW0pCisgICAgZWxzZSBpZiAobWVkaWFDb250cm9sbGVyKCkt
PmlzTGl2ZVN0cmVhbSgpKQogICAgICAgICBuZXdTdGF0ZVRvRGlzcGxheSA9IExpdmVCcm9hZGNh
c3Q7CiAKICAgICBpZiAobmV3U3RhdGVUb0Rpc3BsYXkgPT0gbV9zdGF0ZUJlaW5nRGlzcGxheWVk
KQpAQCAtNDA0LDkgKzQwNiw5IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sU3Rh
dHVzRGlzcGxheUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIAotTWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjpNZWRp
YUNvbnRyb2xJbnB1dEVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBNZWRp
YUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSkKLSAgICA6IEhUTUxJbnB1dEVsZW1lbnQo
aW5wdXRUYWcsIG1lZGlhRWxlbWVudC0+ZG9jdW1lbnQoKSwgMCwgZmFsc2UpCi0gICAgLCBtX21l
ZGlhRWxlbWVudChtZWRpYUVsZW1lbnQpCitNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6Ok1lZGlh
Q29udHJvbElucHV0RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbEVsZW1l
bnRUeXBlIGRpc3BsYXlUeXBlKQorICAgIDogSFRNTElucHV0RWxlbWVudChpbnB1dFRhZywgZG9j
dW1lbnQsIDAsIGZhbHNlKQorICAgICwgbV9tZWRpYUNvbnRyb2xsZXIoMCkKICAgICAsIG1fZGlz
cGxheVR5cGUoZGlzcGxheVR5cGUpCiB7CiB9CkBAIC00MzQsMTUgKzQzNiwxNSBAQCB2b2lkIE1l
ZGlhQ29udHJvbElucHV0RWxlbWVudDo6c2V0RGlzcGxheVR5cGUoTWVkaWFDb250cm9sRWxlbWVu
dFR5cGUgZGlzcGxheVR5cAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlu
bGluZSBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sTXV0ZUJ1dHRv
bkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBNZWRpYUNvbnRyb2xFbGVt
ZW50VHlwZSBkaXNwbGF5VHlwZSkKLSAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChtZWRp
YUVsZW1lbnQsIGRpc3BsYXlUeXBlKQoraW5saW5lIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVt
ZW50OjpNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIE1l
ZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKQorICAgIDogTWVkaWFDb250cm9sSW5w
dXRFbGVtZW50KGRvY3VtZW50LCBkaXNwbGF5VHlwZSkKIHsKIH0KIAogdm9pZCBNZWRpYUNvbnRy
b2xNdXRlQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7
CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKLSAg
ICAgICAgbWVkaWFFbGVtZW50KCktPnNldE11dGVkKCFtZWRpYUVsZW1lbnQoKS0+bXV0ZWQoKSk7
CisgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRNdXRlZCghbWVkaWFDb250cm9sbGVyKCkt
Pm11dGVkKCkpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9CiAK
QEAgLTQ1NiwyMiArNDU4LDIyIEBAIHZvaWQgTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6
OmNoYW5nZWRNdXRlKCkKIAogdm9pZCBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6dXBk
YXRlRGlzcGxheVR5cGUoKQogewotICAgIHNldERpc3BsYXlUeXBlKG1lZGlhRWxlbWVudCgpLT5t
dXRlZCgpID8gTWVkaWFVbk11dGVCdXR0b24gOiBNZWRpYU11dGVCdXR0b24pOworICAgIHNldERp
c3BsYXlUeXBlKG1lZGlhQ29udHJvbGxlcigpLT5tdXRlZCgpID8gTWVkaWFVbk11dGVCdXR0b24g
OiBNZWRpYU11dGVCdXR0b24pOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLWlubGluZSBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRy
b2xQYW5lbE11dGVCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCwg
TWVkaWFDb250cm9scyogY29udHJvbHMpCi0gICAgOiBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxl
bWVudChtZWRpYUVsZW1lbnQsIE1lZGlhTXV0ZUJ1dHRvbikKK2lubGluZSBNZWRpYUNvbnRyb2xQ
YW5lbE11dGVCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50
KERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCisgICAgOiBNZWRp
YUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudChkb2N1bWVudCwgTWVkaWFNdXRlQnV0dG9uKQogICAg
ICwgbV9jb250cm9scyhjb250cm9scykKIHsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQ
YW5lbE11dGVCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50
OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBNZWRpYUNvbnRyb2xzKiBj
b250cm9scykKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudD4g
TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCiB7CiAgICAgQVNTRVJUKGNvbnRyb2xzKTsK
IAotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50PiBidXR0b24g
PSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudChtZWRpYUVs
ZW1lbnQsIGNvbnRyb2xzKSk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRv
bkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0
b25FbGVtZW50KGRvY3VtZW50LCBjb250cm9scykpOwogICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0
dG9uIik7CiAgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7CiB9CkBAIC00OTIsMTQgKzQ5NCwx
NCBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1l
bnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ6
Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1l
bnQqIG1lZGlhRWxlbWVudCkKLSAgICA6IE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50KG1l
ZGlhRWxlbWVudCwgTWVkaWFNdXRlQnV0dG9uKQoraW5saW5lIE1lZGlhQ29udHJvbFZvbHVtZVNs
aWRlck11dGVCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9u
RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xNdXRlQnV0dG9u
RWxlbWVudChkb2N1bWVudCwgTWVkaWFNdXRlQnV0dG9uKQogewogfQogCi1QYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xWb2x1
bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlh
RWxlbWVudCkKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVs
ZW1lbnQ+IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlk
ZXJNdXRlQnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFZv
bHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCkpOworICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRS
ZWYobmV3IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50KGRvY3VtZW50
KSk7CiAgICAgYnV0dG9uLT5zZXRUeXBlKCJidXR0b24iKTsKICAgICByZXR1cm4gYnV0dG9uLnJl
bGVhc2UoKTsKIH0KQEAgLTUxMiwxNCArNTE0LDE0IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVk
aWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkK
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9s
UGxheUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50KEhUTUxNZWRp
YUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLSAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudCht
ZWRpYUVsZW1lbnQsIE1lZGlhUGxheUJ1dHRvbikKK2lubGluZSBNZWRpYUNvbnRyb2xQbGF5QnV0
dG9uRWxlbWVudDo6TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50KQorICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50LCBNZWRpYVBsYXlC
dXR0b24pCiB7CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ+
IE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbGVtZW50KQorUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudD4g
TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQp
CiB7Ci0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50PiBidXR0b24gPSBh
ZG9wdFJlZihuZXcgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50KSk7
CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9w
dFJlZihuZXcgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsKICAgICBi
dXR0b24tPnNldFR5cGUoImJ1dHRvbiIpOwogICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOwog
fQpAQCAtNTI3LDcgKzUyOSwxMCBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBsYXlCdXR0b25F
bGVtZW50PiBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6Y3JlYXRlKAogdm9pZCBNZWRp
YUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZl
bnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQp
IHsKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPnRvZ2dsZVBsYXlTdGF0ZSgpOworICAgICAgICBp
ZiAobWVkaWFDb250cm9sbGVyKCktPmNhblBsYXkoKSkKKyAgICAgICAgICAgIG1lZGlhQ29udHJv
bGxlcigpLT5wbGF5KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lZGlhQ29udHJvbGxl
cigpLT5wYXVzZSgpOwogICAgICAgICB1cGRhdGVEaXNwbGF5VHlwZSgpOwogICAgICAgICBldmVu
dC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9CkBAIC01MzYsNyArNTQxLDcgQEAgdm9pZCBN
ZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCog
ZXZlbnQpCiAKIHZvaWQgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OnVwZGF0ZURpc3Bs
YXlUeXBlKCkKIHsKLSAgICBzZXREaXNwbGF5VHlwZShtZWRpYUVsZW1lbnQoKS0+Y2FuUGxheSgp
ID8gTWVkaWFQbGF5QnV0dG9uIDogTWVkaWFQYXVzZUJ1dHRvbik7CisgICAgc2V0RGlzcGxheVR5
cGUobWVkaWFDb250cm9sbGVyKCktPmNhblBsYXkoKSA/IE1lZGlhUGxheUJ1dHRvbiA6IE1lZGlh
UGF1c2VCdXR0b24pOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFBsYXlC
dXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CkBAIC01NDcsOCArNTUyLDggQEAg
Y29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6c2hhZG93
UHNldWRvSWQoKSBjb25zdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlu
bGluZSBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sU2Vla0J1dHRv
bkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBNZWRpYUNvbnRyb2xFbGVt
ZW50VHlwZSBkaXNwbGF5VHlwZSkKLSAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChtZWRp
YUVsZW1lbnQsIGRpc3BsYXlUeXBlKQoraW5saW5lIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVt
ZW50OjpNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIE1l
ZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKQorICAgIDogTWVkaWFDb250cm9sSW5w
dXRFbGVtZW50KGRvY3VtZW50LCBkaXNwbGF5VHlwZSkKICAgICAsIG1fYWN0aW9uT25TdG9wKE5v
dGhpbmcpCiAgICAgLCBtX3NlZWtUeXBlKFNraXApCiAgICAgLCBtX3NlZWtUaW1lcih0aGlzLCAm
TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OnNlZWtUaW1lckZpcmVkKQpAQCAtNTc4LDE3
ICs1ODMsMTcgQEAgdm9pZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6c2V0QWN0aXZl
KGJvb2wgZmxhZywgYm9vbCBwYXVzZSkKIAogdm9pZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxl
bWVudDo6c3RhcnRUaW1lcigpCiB7Ci0gICAgbV9zZWVrVHlwZSA9IG1lZGlhRWxlbWVudCgpLT5z
dXBwb3J0c1NjYW5uaW5nKCkgPyBTY2FuIDogU2tpcDsKKyAgICBtX3NlZWtUeXBlID0gbWVkaWFD
b250cm9sbGVyKCktPnN1cHBvcnRzU2Nhbm5pbmcoKSA/IFNjYW4gOiBTa2lwOwogCiAgICAgaWYg
KG1fc2Vla1R5cGUgPT0gU2tpcCkgewogICAgICAgICAvLyBTZWVraW5nIGJ5IHNraXBwaW5nIHJl
cXVpcmVzIHRoZSB2aWRlbyB0byBiZSBwYXVzZWQgZHVyaW5nIHNlZWtpbmcuCi0gICAgICAgIG1f
YWN0aW9uT25TdG9wID0gbWVkaWFFbGVtZW50KCktPmlzUGxheWluZygpID8gUGxheSA6IE5vdGhp
bmc7Ci0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5wYXVzZSgpOworICAgICAgICBtX2FjdGlvbk9u
U3RvcCA9IG1lZGlhQ29udHJvbGxlcigpLT5wYXVzZWQoKSA/IE5vdGhpbmcgOiBQbGF5OworICAg
ICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+cGF1c2UoKTsKICAgICB9IGVsc2UgewogICAgICAgICAv
LyBTZWVraW5nIGJ5IHNjYW5uaW5nIHJlcXVpcmVzIHRoZSB2aWRlbyB0byBiZSBwbGF5aW5nIGR1
cmluZyBzZWVraW5nLgotICAgICAgICBtX2FjdGlvbk9uU3RvcCA9IG1lZGlhRWxlbWVudCgpLT5w
YXVzZWQoKSA/IFBhdXNlIDogTm90aGluZzsKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPnBsYXko
KTsKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPnNldFBsYXliYWNrUmF0ZShuZXh0UmF0ZSgpKTsK
KyAgICAgICAgbV9hY3Rpb25PblN0b3AgPSBtZWRpYUNvbnRyb2xsZXIoKS0+cGF1c2VkKCkgPyBQ
YXVzZSA6IE5vdGhpbmc7CisgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5wbGF5KCk7CisgICAg
ICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRQbGF5YmFja1JhdGUobmV4dFJhdGUoKSk7CiAgICAg
fQogCiAgICAgbV9zZWVrVGltZXIuc3RhcnQoMCwgbV9zZWVrVHlwZSA9PSBTa2lwID8gY1NraXBS
ZXBlYXREZWxheSA6IGNTY2FuUmVwZWF0RGVsYXkpOwpAQCAtNTk3LDEyICs2MDIsMTIgQEAgdm9p
ZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6c3RhcnRUaW1lcigpCiB2b2lkIE1lZGlh
Q29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpzdG9wVGltZXIoKQogewogICAgIGlmIChtX3NlZWtU
eXBlID09IFNjYW4pCi0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5zZXRQbGF5YmFja1JhdGUobWVk
aWFFbGVtZW50KCktPmRlZmF1bHRQbGF5YmFja1JhdGUoKSk7CisgICAgICAgIG1lZGlhQ29udHJv
bGxlcigpLT5zZXRQbGF5YmFja1JhdGUobWVkaWFDb250cm9sbGVyKCktPmRlZmF1bHRQbGF5YmFj
a1JhdGUoKSk7CiAKICAgICBpZiAobV9hY3Rpb25PblN0b3AgPT0gUGxheSkKLSAgICAgICAgbWVk
aWFFbGVtZW50KCktPnBsYXkoKTsKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnBsYXkoKTsK
ICAgICBlbHNlIGlmIChtX2FjdGlvbk9uU3RvcCA9PSBQYXVzZSkKLSAgICAgICAgbWVkaWFFbGVt
ZW50KCktPnBhdXNlKCk7CisgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5wYXVzZSgpOwogCiAg
ICAgaWYgKG1fc2Vla1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fc2Vla1RpbWVyLnN0b3Ao
KTsKQEAgLTYxMCw3ICs2MTUsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50
OjpzdG9wVGltZXIoKQogCiBmbG9hdCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6bmV4
dFJhdGUoKSBjb25zdAogewotICAgIGZsb2F0IHJhdGUgPSBzdGQ6Om1pbihjU2Nhbk1heGltdW1S
YXRlLCBmYWJzZihtZWRpYUVsZW1lbnQoKS0+cGxheWJhY2tSYXRlKCkgKiAyKSk7CisgICAgZmxv
YXQgcmF0ZSA9IHN0ZDo6bWluKGNTY2FuTWF4aW11bVJhdGUsIGZhYnNmKG1lZGlhQ29udHJvbGxl
cigpLT5wbGF5YmFja1JhdGUoKSAqIDIpKTsKICAgICBpZiAoIWlzRm9yd2FyZEJ1dHRvbigpKQog
ICAgICAgICByYXRlICo9IC0xOwogICAgIHJldHVybiByYXRlOwpAQCAtNjIxLDIxICs2MjYsMjEg
QEAgdm9pZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6c2Vla1RpbWVyRmlyZWQoVGlt
ZXI8TWVkaWFDb250cm9sU2Vla0J1dHRvbkUKICAgICBpZiAobV9zZWVrVHlwZSA9PSBTa2lwKSB7
CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAgIGZsb2F0IHNraXBUaW1lID0gaXNG
b3J3YXJkQnV0dG9uKCkgPyBjU2tpcFRpbWUgOiAtY1NraXBUaW1lOwotICAgICAgICBtZWRpYUVs
ZW1lbnQoKS0+c2V0Q3VycmVudFRpbWUobWVkaWFFbGVtZW50KCktPmN1cnJlbnRUaW1lKCkgKyBz
a2lwVGltZSwgZWMpOworICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Q3VycmVudFRpbWUo
bWVkaWFDb250cm9sbGVyKCktPmN1cnJlbnRUaW1lKCkgKyBza2lwVGltZSwgZWMpOwogICAgIH0g
ZWxzZQotICAgICAgICBtZWRpYUVsZW1lbnQoKS0+c2V0UGxheWJhY2tSYXRlKG5leHRSYXRlKCkp
OworICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0UGxheWJhY2tSYXRlKG5leHRSYXRlKCkp
OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBNZWRpYUNv
bnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0
dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi0gICAgOiBNZWRpYUNv
bnRyb2xTZWVrQnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQsIE1lZGlhU2Vla0ZvcndhcmRCdXR0
b24pCitpbmxpbmUgTWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50OjpNZWRpYUNv
bnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDog
TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhU2Vla0ZvcndhcmRC
dXR0b24pCiB7CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25F
bGVtZW50PiBNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShIVE1M
TWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFNlZWtG
b3J3YXJkQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50
OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xT
ZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRy
b2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50KSk7CisgICAgUmVmUHRyPE1l
ZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3
IE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudChkb2N1bWVudCkpOwogICAgIGJ1
dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7CiAgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7CiB9
CkBAIC02NDgsMTQgKzY1MywxNCBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFNl
ZWtGb3J3YXJkQnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xTZWVrQmFja0J1
dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudChIVE1MTWVkaWFF
bGVtZW50KiBtZWRpYUVsZW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVu
dChtZWRpYUVsZW1lbnQsIE1lZGlhU2Vla0JhY2tCdXR0b24pCitpbmxpbmUgTWVkaWFDb250cm9s
U2Vla0JhY2tCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQo
ZG9jdW1lbnQsIE1lZGlhU2Vla0JhY2tCdXR0b24pCiB7CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFD
b250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCitQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sU2Vla0JhY2tC
dXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBN
ZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50KSk7CisgICAgUmVm
UHRyPE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYo
bmV3IE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudChkb2N1bWVudCkpOwogICAgIGJ1
dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7CiAgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7CiB9
CkBAIC02NjgsMTQgKzY3MywxNCBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFNl
ZWtCYWNrQnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25F
bGVtZW50OjpNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQq
IGVsZW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZWxlbWVudCwgTWVkaWFS
ZXdpbmRCdXR0b24pCitpbmxpbmUgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6TWVk
aWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBN
ZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhUmV3aW5kQnV0dG9uKQogewog
fQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29u
dHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVs
ZW1lbnQpCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+IE1lZGlh
Q29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7
Ci0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFk
b3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCkp
OworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50PiBidXR0b24gPSBh
ZG9wdFJlZihuZXcgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudChkb2N1bWVudCkpOwog
ICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7CiAgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNl
KCk7CiB9CkBAIC02ODMsNyArNjg4LDggQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xSZXdpbmRC
dXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpjcmUKIHZvaWQg
TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNr
RXZlbnQpIHsKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPnJld2luZCgzMCk7CisgICAgICAgIEV4
Y2VwdGlvbkNvZGUgY29kZSA9IDA7CisgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRDdXJy
ZW50VGltZShtYXgoMC4wZiwgbWVkaWFDb250cm9sbGVyKCktPmN1cnJlbnRUaW1lKCkgLSAzMCks
IGNvZGUpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9ICAgIAog
ICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwpAQCAtNjk3
LDE0ICs3MDMsMTQgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0
b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25F
bGVtZW50OjpNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudChIVE1MTWVk
aWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQo
bWVkaWFFbGVtZW50LCBNZWRpYVJldHVyblRvUmVhbHRpbWVCdXR0b24pCitpbmxpbmUgTWVkaWFD
b250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFJldHVyblRv
UmVhbHRpbWVCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29u
dHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgTWVkaWFSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uKQog
ewogfQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVt
ZW50PiBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6Y3JlYXRlKEhU
TUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sUmV0
dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVC
dXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRS
ZWYobmV3IE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50KG1lZGlhRWxl
bWVudCkpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxl
bWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVC
dXR0b25FbGVtZW50KGRvY3VtZW50KSk7CiAgICAgYnV0dG9uLT5zZXRUeXBlKCJidXR0b24iKTsK
ICAgICBidXR0b24tPmhpZGUoKTsKICAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKQEAgLTcx
Myw3ICs3MTksNyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0
b25FbGVtZW50PiBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aQogdm9pZCBNZWRpYUNvbnRyb2xS
ZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCog
ZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZl
bnQpIHsKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPnJldHVyblRvUmVhbHRpbWUoKTsKKyAgICAg
ICAgbWVkaWFDb250cm9sbGVyKCktPnJldHVyblRvUmVhbHRpbWUoKTsKICAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQogICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoZXZlbnQpOwpAQCAtNzI3LDE0ICs3MzMsMTQgQEAgY29uc3QgQXRvbWlj
U3RyaW5nJiBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6c2hhZG93
UHNldWRvSWQoKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBN
ZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJv
bFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRp
YUVsZW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQobWVkaWFFbGVtZW50LCBN
ZWRpYVNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbikKK2lubGluZSBNZWRpYUNvbnRyb2xUb2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRp
b25zQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xJ
bnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhU2hvd0Nsb3NlZENhcHRpb25zQnV0dG9uKQogewog
fQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxl
bWVudD4gTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpjcmVh
dGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQorUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFRvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsK
LSAgICBSZWZQdHI8TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50
PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNC
dXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCkpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUb2dn
bGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRp
YUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsKICAg
ICBidXR0b24tPnNldFR5cGUoImJ1dHRvbiIpOwogICAgIGJ1dHRvbi0+aGlkZSgpOwogICAgIHJl
dHVybiBidXR0b24ucmVsZWFzZSgpOwpAQCAtNzQzLDggKzc0OSw4IEBAIFBhc3NSZWZQdHI8TWVk
aWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xU
b2dnbGVDbG9zCiB2b2lkIE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAgICAgbWVkaWFFbGVt
ZW50KCktPnNldENsb3NlZENhcHRpb25zVmlzaWJsZSghbWVkaWFFbGVtZW50KCktPmNsb3NlZENh
cHRpb25zVmlzaWJsZSgpKTsKLSAgICAgICAgc2V0Q2hlY2tlZChtZWRpYUVsZW1lbnQoKS0+Y2xv
c2VkQ2FwdGlvbnNWaXNpYmxlKCkpOworICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Q2xv
c2VkQ2FwdGlvbnNWaXNpYmxlKCFtZWRpYUNvbnRyb2xsZXIoKS0+Y2xvc2VkQ2FwdGlvbnNWaXNp
YmxlKCkpOworICAgICAgICBzZXRDaGVja2VkKG1lZGlhQ29udHJvbGxlcigpLT5jbG9zZWRDYXB0
aW9uc1Zpc2libGUoKSk7CiAgICAgICAgIHVwZGF0ZURpc3BsYXlUeXBlKCk7CiAgICAgICAgIGV2
ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KQEAgLTc1NCw3ICs3NjAsNyBAQCB2b2lk
IE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCogZQogCiB2b2lkIE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRp
b25zQnV0dG9uRWxlbWVudDo6dXBkYXRlRGlzcGxheVR5cGUoKQogewotICAgIHNldERpc3BsYXlU
eXBlKG1lZGlhRWxlbWVudCgpLT5jbG9zZWRDYXB0aW9uc1Zpc2libGUoKSA/IE1lZGlhSGlkZUNs
b3NlZENhcHRpb25zQnV0dG9uIDogTWVkaWFTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24pOworICAg
IHNldERpc3BsYXlUeXBlKG1lZGlhQ29udHJvbGxlcigpLT5jbG9zZWRDYXB0aW9uc1Zpc2libGUo
KSA/IE1lZGlhSGlkZUNsb3NlZENhcHRpb25zQnV0dG9uIDogTWVkaWFTaG93Q2xvc2VkQ2FwdGlv
bnNCdXR0b24pOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFRvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdApAQCAtNzY1
LDE3ICs3NzEsMTcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xUb2dnbGVDbG9z
ZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0kKIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1NZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbFRpbWVsaW5lRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQsIE1lZGlh
Q29udHJvbHMqIGNvbnRyb2xzKQotICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KG1lZGlh
RWxlbWVudCwgTWVkaWFTbGlkZXIpCitNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6Ok1lZGlh
Q29udHJvbFRpbWVsaW5lRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbHMq
IGNvbnRyb2xzKQorICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50LCBNZWRp
YVNsaWRlcikKICAgICAsIG1fY29udHJvbHMoY29udHJvbHMpCiB7CiB9CiAKLVBhc3NSZWZQdHI8
TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50PiBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6
OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQsIE1lZGlhQ29udHJvbHMqIGNv
bnRyb2xzKQorUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IE1lZGlhQ29u
dHJvbFRpbWVsaW5lRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250
cm9scyogY29udHJvbHMpCiB7CiAgICAgQVNTRVJUKGNvbnRyb2xzKTsKIAotICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gYWRvcHRSZWYobmV3IE1lZGlh
Q29udHJvbFRpbWVsaW5lRWxlbWVudChtZWRpYUVsZW1lbnQsIGNvbnRyb2xzKSk7CisgICAgUmVm
UHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudD4gdGltZWxpbmUgPSBhZG9wdFJlZihuZXcg
TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50KGRvY3VtZW50LCBjb250cm9scykpOwogICAgIHRp
bWVsaW5lLT5zZXRUeXBlKCJyYW5nZSIpOwogICAgIHRpbWVsaW5lLT5zZXRBdHRyaWJ1dGUocHJl
Y2lzaW9uQXR0ciwgImZsb2F0Iik7CiAgICAgcmV0dXJuIHRpbWVsaW5lLnJlbGVhc2UoKTsKQEAg
LTc5MSwxMCArNzk3LDEwIEBAIHZvaWQgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KQotICAgICAgICBt
ZWRpYUVsZW1lbnQoKS0+YmVnaW5TY3J1YmJpbmcoKTsKKyAgICAgICAgbWVkaWFDb250cm9sbGVy
KCktPmJlZ2luU2NydWJiaW5nKCk7CiAKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkubW91c2V1cEV2ZW50KQotICAgICAgICBtZWRpYUVsZW1lbnQoKS0+ZW5kU2NydWJiaW5n
KCk7CisgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5lbmRTY3J1YmJpbmcoKTsKIAogICAgIE1l
ZGlhQ29udHJvbElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiAKQEAg
LTgwMiwxMCArODA4LDEwIEBAIHZvaWQgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZmxv
YXQgdGltZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQodmFsdWUoKS50b0RvdWJsZSgpKTsKLSAg
ICBpZiAodGltZSAhPSBtZWRpYUVsZW1lbnQoKS0+Y3VycmVudFRpbWUoKSkgeworICAgIGlmICh0
aW1lICE9IG1lZGlhQ29udHJvbGxlcigpLT5jdXJyZW50VGltZSgpKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIGZpcmVkIDMgdGltZXMgb24gZXZlcnkgY2xpY2suIFdlIHNob3VsZCBub3Qg
YmUgZG9pbmcgdGhhdCA8aHR0cDovd2Via2l0Lm9yZy9iLzU4MTYwPi4KICAgICAgICAgRXhjZXB0
aW9uQ29kZSBlYzsKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPnNldEN1cnJlbnRUaW1lKHRpbWUs
IGVjKTsKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldEN1cnJlbnRUaW1lKHRpbWUsIGVj
KTsKICAgICB9CiAKICAgICBSZW5kZXJTbGlkZXIqIHNsaWRlciA9IHRvUmVuZGVyU2xpZGVyKHJl
bmRlcmVyKCkpOwpAQCAtODMyLDE4ICs4MzgsMTcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRp
YUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sVm9sdW1lU2xp
ZGVyRWxlbWVudDo6TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudChIVE1MTWVkaWFFbGVt
ZW50KiBtZWRpYUVsZW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQobWVkaWFF
bGVtZW50LCBNZWRpYVZvbHVtZVNsaWRlcikKK2lubGluZSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlk
ZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50KERvY3VtZW50KiBkb2N1
bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgTWVkaWFWb2x1
bWVTbGlkZXIpCiB7CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxl
bWVudD4gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVs
ZW1lbnQqIG1lZGlhRWxlbWVudCkKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVy
RWxlbWVudD4gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50
KiBkb2N1bWVudCkKIHsKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVu
dD4gc2xpZGVyID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQo
bWVkaWFFbGVtZW50KSk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1l
bnQ+IHNsaWRlciA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50
KGRvY3VtZW50KSk7CiAgICAgc2xpZGVyLT5zZXRUeXBlKCJyYW5nZSIpOwogICAgIHNsaWRlci0+
c2V0QXR0cmlidXRlKHByZWNpc2lvbkF0dHIsICJmbG9hdCIpOwogICAgIHNsaWRlci0+c2V0QXR0
cmlidXRlKG1heEF0dHIsICIxIik7Ci0gICAgc2xpZGVyLT5zZXRBdHRyaWJ1dGUodmFsdWVBdHRy
LCBTdHJpbmc6Om51bWJlcihtZWRpYUVsZW1lbnQtPnZvbHVtZSgpKSk7CiAgICAgcmV0dXJuIHNs
aWRlci5yZWxlYXNlKCk7CiB9CiAKQEAgLTg2Miw5ICs4NjcsOSBAQCB2b2lkIE1lZGlhQ29udHJv
bFZvbHVtZVNsaWRlckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQog
ICAgICAgICByZXR1cm47CiAKICAgICBmbG9hdCB2b2x1bWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KHZhbHVlKCkudG9Eb3VibGUoKSk7Ci0gICAgaWYgKHZvbHVtZSAhPSBtZWRpYUVsZW1lbnQo
KS0+dm9sdW1lKCkpIHsKKyAgICBpZiAodm9sdW1lICE9IG1lZGlhQ29udHJvbGxlcigpLT52b2x1
bWUoKSkgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgbWVkaWFFbGVt
ZW50KCktPnNldFZvbHVtZSh2b2x1bWUsIGVjKTsKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCkt
PnNldFZvbHVtZSh2b2x1bWUsIGVjKTsKICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgfQogfQpA
QCAtODgzLDE4ICs4ODgsMTcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xWb2x1
bWVTbGlkZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVT
bGlkZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudChI
VE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJFbGVtZW50KG1lZGlhRWxlbWVudCkKK2lubGluZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
Vm9sdW1lU2xpZGVyRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVs
ZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sVm9sdW1lU2xpZGVy
RWxlbWVudChkb2N1bWVudCkKIHsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuVm9sdW1lU2xpZGVyRWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRl
ckVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCitQYXNzUmVm
UHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50PiBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCkKIHsKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1l
bnQ+IHNsaWRlciA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xp
ZGVyRWxlbWVudChtZWRpYUVsZW1lbnQpKTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNj
cmVlblZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudChkb2N1bWVudCkpOwogICAgIHNsaWRlci0+
c2V0VHlwZSgicmFuZ2UiKTsKICAgICBzbGlkZXItPnNldEF0dHJpYnV0ZShwcmVjaXNpb25BdHRy
LCAiZmxvYXQiKTsKICAgICBzbGlkZXItPnNldEF0dHJpYnV0ZShtYXhBdHRyLCAiMSIpOwotICAg
IHNsaWRlci0+c2V0QXR0cmlidXRlKHZhbHVlQXR0ciwgU3RyaW5nOjpudW1iZXIobWVkaWFFbGVt
ZW50LT52b2x1bWUoKSkpOwogICAgIHJldHVybiBzbGlkZXIucmVsZWFzZSgpOwogfQogCkBAIC05
MDYsMTcgKzkxMCwxNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5Wb2x1bWVTbGlkZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpCiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25F
bGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVt
ZW50KiBtZWRpYUVsZW1lbnQsIE1lZGlhQ29udHJvbHMqIGNvbnRyb2xzKQotICAgIDogTWVkaWFD
b250cm9sSW5wdXRFbGVtZW50KG1lZGlhRWxlbWVudCwgTWVkaWFGdWxsc2NyZWVuQnV0dG9uKQor
aW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbHMq
IGNvbnRyb2xzKQorICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50LCBNZWRp
YUZ1bGxzY3JlZW5CdXR0b24pCiAgICAgLCBtX2NvbnRyb2xzKGNvbnRyb2xzKQogewogfQogCi1Q
YXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlh
RWxlbWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCitQYXNzUmVmUHRyPE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMp
CiB7CiAgICAgQVNTRVJUKGNvbnRyb2xzKTsKIAotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuQnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5CdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCwgY29udHJvbHMpKTsKKyAgICBSZWZQ
dHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVm
KG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudChkb2N1bWVudCwgY29udHJv
bHMpKTsKICAgICBidXR0b24tPnNldFR5cGUoImJ1dHRvbiIpOwogICAgIGJ1dHRvbi0+aGlkZSgp
OwogICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOwpAQCAtOTMyLDEzICs5MzYsMTMgQEAgdm9p
ZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXZlbnQpCiAgICAgICAgIC8vIHZpZGVvIGltcGxlbWVudGF0aW9uIHdpdGhvdXQg
cmVxdWlyaW5nIHRoZW0gdG8gaW1wbGVtZW50IHRoZWlyIG93biBmdWxsIAogICAgICAgICAvLyBz
Y3JlZW4gYmVoYXZpb3IuCiAgICAgICAgIGlmIChkb2N1bWVudCgpLT5zZXR0aW5ncygpICYmIGRv
Y3VtZW50KCktPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVkKCkpIHsKLSAgICAgICAgICAg
IGlmIChkb2N1bWVudCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSAmJiBkb2N1bWVudCgpLT53ZWJr
aXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSA9PSBtZWRpYUVsZW1lbnQoKSkKKyAgICAgICAg
ICAgIGlmIChkb2N1bWVudCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSAmJiBkb2N1bWVudCgpLT53
ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSA9PSB0b1BhcmVudE1lZGlhRWxlbWVudCh0
aGlzKSkKICAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT53ZWJraXRDYW5jZWxGdWxsU2NyZWVu
KCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+cmVxdWVz
dEZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1lZGlhRWxlbWVudCgpLCAwLCBEb2N1bWVudDo6RXhlbXB0
SUZyYW1lQWxsb3dGdWxTY3JlZW5SZXF1aXJlbWVudCk7CisgICAgICAgICAgICAgICAgZG9jdW1l
bnQoKS0+cmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KHRvUGFyZW50TWVkaWFFbGVtZW50KHRo
aXMpLCAwLCBEb2N1bWVudDo6RXhlbXB0SUZyYW1lQWxsb3dGdWxTY3JlZW5SZXF1aXJlbWVudCk7
CiAgICAgICAgIH0gZWxzZQogI2VuZGlmCi0gICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+ZW50
ZXJGdWxsc2NyZWVuKCk7CisgICAgICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+ZW50ZXJGdWxs
c2NyZWVuKCk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KICAg
ICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKQEAgLTk1Miwx
NCArOTU2LDE0IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1
dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1
dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50
KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLSAgICA6IE1lZGlhQ29udHJvbElucHV0
RWxlbWVudChtZWRpYUVsZW1lbnQsIE1lZGlhVW5NdXRlQnV0dG9uKQoraW5saW5lIE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRp
YUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhVW5NdXRlQnV0dG9uKQogewogfQog
Ci1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50
PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKEhU
TUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVs
bHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1
bWVNaW5CdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudD4gYnV0dG9u
ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVt
ZW50KG1lZGlhRWxlbWVudCkpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9s
dW1lTWluQnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50KGRvY3VtZW50KSk7CiAgICAgYnV0dG9uLT5z
ZXRUeXBlKCJidXR0b24iKTsKICAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKIH0KQEAgLTk2
OCw3ICs5NzIsNyBAQCB2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25F
bGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldgogewogICAgIGlmIChldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CiAgICAgICAgIEV4Y2VwdGlvbkNv
ZGUgY29kZSA9IDA7Ci0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5zZXRWb2x1bWUoMCwgY29kZSk7
CisgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRWb2x1bWUoMCwgY29kZSk7CiAgICAgICAg
IGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KICAgICBIVE1MSW5wdXRFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKQEAgLTk4MiwxNCArOTg2LDE0IEBAIGNvbnN0
IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1l
bnQ6OnNoYWRvd1BzZXVkb0lkCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
aW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50OjpNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50
KiBtZWRpYUVsZW1lbnQpCi06IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChtZWRpYUVsZW1lbnQs
IE1lZGlhTXV0ZUJ1dHRvbikKK2lubGluZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4
QnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1l
bnQoRG9jdW1lbnQqIGRvY3VtZW50KQorOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1l
bnQsIE1lZGlhTXV0ZUJ1dHRvbikKIHsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVt
ZU1heEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQp
CitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50
PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudDo6Y3JlYXRlKERv
Y3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZv
bHVtZU1heEJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQpKTsKKyAgICBSZWZQ
dHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9
IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVu
dChkb2N1bWVudCkpOwogICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7CiAgICAgcmV0dXJu
IGJ1dHRvbi5yZWxlYXNlKCk7CiB9CkBAIC05OTgsNyArMTAwMiw3IEBAIHZvaWQgTWVkaWFDb250
cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2CiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNr
RXZlbnQpIHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBjb2RlID0gMDsKLSAgICAgICAgbWVkaWFF
bGVtZW50KCktPnNldFZvbHVtZSgxLCBjb2RlKTsKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCkt
PnNldFZvbHVtZSgxLCBjb2RlKTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7
CiAgICAgfQogICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQp
OwpAQCAtMTA0MCw4ICsxMDQ0LDggQEAgdm9pZCBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lRGlzcGxh
eTo6bGF5b3V0KCkKICAgICAgICAgc2V0V2lkdGgoMCk7CiB9CiAKLWlubGluZSBNZWRpYUNvbnRy
b2xUaW1lRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChIVE1M
TWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KG1l
ZGlhRWxlbWVudCkKK2lubGluZSBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQ6Ok1lZGlh
Q29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRp
YUNvbnRyb2xFbGVtZW50KGRvY3VtZW50KQogICAgICwgbV9jdXJyZW50VmFsdWUoMCkKIHsKIH0K
QEAgLTEwNTgsMTMgKzEwNjIsMTMgQEAgUmVuZGVyT2JqZWN0KiBNZWRpYUNvbnRyb2xUaW1lRGlz
cGxheUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVS
ZW1haW5pbmdEaXNwbGF5RWxlbWVudD4gTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlF
bGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQorUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ+IE1lZGlhQ29udHJvbFRp
bWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5
RWxlbWVudChtZWRpYUVsZW1lbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29u
dHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudChkb2N1bWVudCkpOwogfQogCi1NZWRpYUNv
bnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVSZW1haW5p
bmdEaXNwbGF5RWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi0gICAgOiBN
ZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQobWVkaWFFbGVtZW50KQorTWVkaWFDb250cm9s
VGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlz
cGxheUVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sVGltZURp
c3BsYXlFbGVtZW50KGRvY3VtZW50KQogewogfQogCkBAIC0xMDgxLDEzICsxMDg1LDEzIEBAIGNv
bnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50
OjpzaGFkb3dQc2V1ZG9JZCgpIGNvCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBNZWRp
YUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVu
dCogbWVkaWFFbGVtZW50KQorUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3Bs
YXlFbGVtZW50PiBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250
cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudChtZWRpYUVsZW1lbnQpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQoZG9jdW1l
bnQpKTsKIH0KIAotTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6TWVkaWFD
b250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVs
ZW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQobWVkaWFFbGVtZW50
KQorTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6TWVkaWFDb250cm9sQ3Vy
cmVudFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNv
bnRyb2xUaW1lRGlzcGxheUVsZW1lbnQoZG9jdW1lbnQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCmluZGV4IGFkODQ0NDAy
NTQ1ODgwOGJkNWNlZTQ3ZjUwZWIyNDQxM2E3NzU1MWMuLjU4YzcwZjUwMGFjZTdiZGJkMmFhNjMx
N2Q0ZTM0ODY1NmE0MmZkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuaApAQCAtMzMsNyArMzMsNyBAQAogCiAjaW5jbHVkZSAiSFRN
TERpdkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCi0jaW5jbHVkZSAi
SFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIk1lZGlhQ29udHJvbGxlckludGVyZmFjZS5o
IgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAKIC8vIFRoZXNlIGFyZSB0aGUgc2hhZG93IGVs
ZW1lbnRzIHVzZWQgaW4gUmVuZGVyTWVkaWEKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBFdmVudDsKIGNsYXNzIEZyYW1lOworY2xhc3MgSFRNTE1lZGlhRWxl
bWVudDsKIGNsYXNzIE1lZGlhQ29udHJvbHM7CiAKIC8vIE11c3QgbWF0Y2ggV2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmgKQEAgLTgyLDIyICs4MywyMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIE1l
ZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3QgPSAwOwogCi0gICAgSFRN
TE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUVsZW1l
bnQ7IH0KKyAgICB2b2lkIHNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UqIGNvbnRyb2xsZXIpIHsgbV9tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyOyB9CisgICAg
TWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBtZWRpYUNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVy
biBtX21lZGlhQ29udHJvbGxlcjsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgTWVkaWFDb250cm9sRWxl
bWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgTWVkaWFDb250cm9sRWxlbWVudChEb2N1bWVu
dCopOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbEVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlh
RWxlbWVudDsgICAKKyAgICBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIG1fbWVkaWFDb250cm9s
bGVyOyAgIAogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBjbGFzcyBN
ZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRWxlbWVudCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxFbGVtZW50PiBj
cmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbFBhbmVsRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKICAgICB2b2lkIHNldENhbkJl
RHJhZ2dlZChib29sKTsKICAgICB2b2lkIHJlc2V0UG9zaXRpb24oKTsKQEAgLTEwNSw3ICsxMDcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYWtlVHJhbnNwYXJlbnQoKTsKIAogcHJpdmF0ZToKLSAg
ICBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIE1lZGlh
Q29udHJvbFBhbmVsRWxlbWVudChEb2N1bWVudCopOwogICAgIHZpcnR1YWwgTWVkaWFDb250cm9s
RWxlbWVudFR5cGUgZGlzcGxheVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCopOwpAQCAtMTI3LDEwICsxMjksMTAgQEAgcHJpdmF0ZToKIAog
Y2xhc3MgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlh
Q29udHJvbEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1l
bnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFRpbWVs
aW5lQ29udGFpbmVyRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgTWVkaWFDb250cm9s
VGltZWxpbmVDb250YWluZXJFbGVtZW50KERvY3VtZW50Kik7CiAgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIE1lZGlh
Q29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Q7CkBAIC0xNDAsMTAgKzE0Miwx
MCBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJF
bGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ+IGNy
ZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250
cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKIHBy
aXZhdGU6Ci0gICAgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudChIVE1M
TWVkaWFFbGVtZW50Kik7CisgICAgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxl
bWVudChEb2N1bWVudCopOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBl
IGRpc3BsYXlUeXBlKCkgY29uc3Q7CkBAIC0xNTQsMTIgKzE1NiwxMiBAQCBwcml2YXRlOgogCiBj
bGFzcyBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRy
b2xFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xT
dGF0dXNEaXNwbGF5RWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudD4gY3JlYXRlKERv
Y3VtZW50Kik7CiAKICAgICB2b2lkIHVwZGF0ZSgpOwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29u
dHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBNZWRpYUNv
bnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudChEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCBNZWRp
YUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwpAQCAtMTc3LDEwICsxNzks
MTEgQEAgcHVibGljOgogCiAgICAgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUo
KSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlUeXBlOyB9CiAKLSAgICBIVE1MTWVkaWFFbGVtZW50
KiBtZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX21lZGlhRWxlbWVudDsgfQorICAgIHZv
aWQgc2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxlckludGVyZmFjZSogY29udHJvbGxl
cikgeyBtX21lZGlhQ29udHJvbGxlciA9IGNvbnRyb2xsZXI7IH0KKyAgICBNZWRpYUNvbnRyb2xs
ZXJJbnRlcmZhY2UqIG1lZGlhQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFDb250
cm9sbGVyOyB9CiAKIHByb3RlY3RlZDoKLSAgICBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoSFRN
TE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsKKyAgICBNZWRpYUNvbnRy
b2xJbnB1dEVsZW1lbnQoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSk7CiAKICAg
ICB2b2lkIHNldERpc3BsYXlUeXBlKE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsKIApAQCAtMTg5
LDcgKzE5Miw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVR5
cGUoKSB7IH0KIAotICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fbWVkaWFFbGVtZW50OworICAgIE1l
ZGlhQ29udHJvbGxlckludGVyZmFjZSogbV9tZWRpYUNvbnRyb2xsZXI7CiAgICAgTWVkaWFDb250
cm9sRWxlbWVudFR5cGUgbV9kaXNwbGF5VHlwZTsKIH07CiAKQEAgLTIwMCw3ICsyMDMsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjaGFuZ2VkTXV0ZSgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgTWVkaWFD
b250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbEVs
ZW1lbnRUeXBlKTsKKyAgICBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCos
IE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCopOwogCiAKQEAgLTIxMiwxMCArMjE1LDEwIEBAIHByaXZhdGU6CiAKIGNs
YXNzIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250
cm9sTXV0ZUJ1dHRvbkVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50
KiwgTWVkaWFDb250cm9scyopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBh
bmVsTXV0ZUJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCosIE1lZGlhQ29udHJvbHMqKTsK
IAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50KEhUTUxN
ZWRpYUVsZW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CisgICAgTWVkaWFDb250cm9sUGFuZWxNdXRl
QnV0dG9uRWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbHMqKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CkBAIC0yMjcsMTAgKzIzMCwxMCBAQCBw
cml2YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVu
dCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1l
bnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCop
OwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVt
ZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRl
QnV0dG9uRWxlbWVudChEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiB9OwpAQCAtMjQwLDEzICsyNDMsMTMgQEAgcHJp
dmF0ZToKIAogY2xhc3MgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVk
aWFDb250cm9sSW5wdXRFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudD4gY3Jl
YXRlKERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCopOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5VHlwZSgpOwogCiBwcml2YXRl
OgotICAgIE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsK
KyAgICBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudChEb2N1bWVudCopOwogCiAgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiB9OwpAQCAt
MjU4LDcgKzI2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVs
ZW1lbnQoSFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsKKyAgICBN
ZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbEVsZW1l
bnRUeXBlKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNGb3J3YXJkQnV0dG9uKCkg
Y29uc3QgPSAwOwpAQCAtMjgwLDEwICsyODMsMTAgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFD
b250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbFNlZWtC
dXR0b25FbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50
PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xTZWVrRm9y
d2FyZEJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIE1lZGlhQ29udHJvbFNl
ZWtGb3J3YXJkQnV0dG9uRWxlbWVudChEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCBib29sIGlz
Rm9yd2FyZEJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKQEAgLTI5MywxMCArMjk2LDEw
IEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudCA6
IHB1YmxpYyBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50PiBjcmVhdGUo
SFRNTE1lZGlhRWxlbWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFNl
ZWtCYWNrQnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAg
TWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAg
ICBNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKIAogICAgIHZp
cnR1YWwgYm9vbCBpc0ZvcndhcmRCdXR0b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwpAQCAt
MzA2LDEyICszMDksMTIgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFDb250cm9sUmV3aW5kQnV0
dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+IGNy
ZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250
cm9sUmV3aW5kQnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogCiBwcml2YXRlOgotICAgIE1lZGlh
Q29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIE1lZGlh
Q29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogfTsKQEAgLTMyMCwxMiAr
MzIzLDEyIEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVC
dXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRv
bkVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1
bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsK
IAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVu
dChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1
dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogfTsgICAgCkBAIC0zMzQsMTMgKzMzNywxMyBAQCBw
cml2YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVs
ZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVs
ZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlUeXBlKCk7CiAKIHByaXZhdGU6Ci0gICAg
TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVs
ZW1lbnQqKTsKKyAgICBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1l
bnQoRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQ
c2V1ZG9JZCgpIGNvbnN0OwogfTsgICAgCkBAIC0zNDksMTQgKzM1MiwxNCBAQCBwcml2YXRlOgog
CiBjbGFzcyBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9s
SW5wdXRFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xUaW1lbGluZUVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiwgTWVkaWFDb250cm9s
cyopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudD4g
Y3JlYXRlKERvY3VtZW50KiwgTWVkaWFDb250cm9scyopOwogCiAgICAgdmlydHVhbCB2b2lkIGRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICB2b2lkIHNldFBvc2l0aW9uKGZsb2F0KTsK
ICAgICB2b2lkIHNldER1cmF0aW9uKGZsb2F0KTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRy
b2xUaW1lbGluZUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbHMqKTsKKyAg
ICBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7
CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25z
dDsKIApAQCAtMzY3LDEzICszNzAsMTMgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFDb250cm9s
Vm9sdW1lU2xpZGVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVs
ZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogICAgIHZvaWQgc2V0
Vm9sdW1lKGZsb2F0KTsKIAogcHJvdGVjdGVkOgotICAgIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRl
ckVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRl
ckVsZW1lbnQoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKQEAgLTM4MywxMiArMzg2LDEyIEBAIHBy
aXZhdGU6CiAKIGNsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50IDogcHVi
bGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVk
aWFFbGVtZW50KiwgTWVkaWFDb250cm9scyopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqLCBNZWRpYUNv
bnRyb2xzKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCop
OwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KEhU
TUxNZWRpYUVsZW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CisgICAgTWVkaWFDb250cm9sRnVsbHNj
cmVlbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CiAKICAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKIApAQCAtMzk5
LDEwICs0MDIsMTAgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblZv
bHVtZVNsaWRlckVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVu
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVl
blZvbHVtZVNsaWRlckVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ+
IGNyZWF0ZShEb2N1bWVudCopOwogICAgIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgTWVkaWFD
b250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQoRG9jdW1lbnQqKTsKICAgICAKICAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKIH07
CkBAIC00MTEsMTIgKzQxNCwxMiBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVs
ZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0
b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogICAgIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7Cisg
ICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQq
KTsKICAgICAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQo
KSBjb25zdDsKIH07CkBAIC00MjUsMTIgKzQyOCwxMiBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNv
bnRyb2xJbnB1dEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlh
RWxlbWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5W
b2x1bWVNYXhCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKICAgICAKICAgICB2aXJ0
dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogICAgIAogcHJpdmF0ZToKLSAg
ICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudChIVE1MTWVkaWFF
bGVtZW50Kik7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1l
bnQoRG9jdW1lbnQqKTsKICAgICAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hh
ZG93UHNldWRvSWQoKSBjb25zdDsKIH07CkBAIC00NDMsNyArNDQ2LDcgQEAgcHVibGljOgogICAg
IGZsb2F0IGN1cnJlbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZhbHVlOyB9CiAK
IHByb3RlY3RlZDoKLSAgICBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQoSFRNTE1lZGlh
RWxlbWVudCopOworICAgIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVudCop
OwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CkBAIC00NTUsMTAgKzQ1OCwxMCBAQCBwcml2YXRl
OgogCiBjbGFzcyBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQgOiBwdWJs
aWMgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ+IGNyZWF0
ZShIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9s
VGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAogcHJpdmF0
ZToKLSAgICBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQoSFRNTE1lZGlh
RWxlbWVudCopOworICAgIE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudChE
b2N1bWVudCopOwogCiAgICAgdmlydHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5
VHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1
ZG9JZCgpIGNvbnN0OwpAQCAtNDY4LDEwICs0NzEsMTAgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVk
aWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xU
aW1lRGlzcGxheUVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50
Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5
RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9s
Q3VycmVudFRpbWVEaXNwbGF5RWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgTWVkaWFD
b250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVudCopOwogCiAgICAgdmlydHVh
bCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0OwogICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3Bw
CmluZGV4IDdhZWJkNTU3ZTg2YzExYTg5ZGRjOWZhZDliOTZmNjk4MTg2OThjYzcuLjNmMzVmYmI2
ZjA1ODU2MjJmOTAwZmM2YTg4ZDMxZDVmODY0YmQzNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xSb290RWxlbWVudC5oIgogCiAjaW5jbHVk
ZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIk1l
ZGlhQ29udHJvbEVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKQEAgLTQxLDkgKzQyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMg
Y29uc3QgZG91YmxlIHRpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xz
ID0gMzsKIAotTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50
KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLSAgICA6IE1lZGlhQ29udHJvbHMobWVk
aWFFbGVtZW50KQotICAgICwgbV9tZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KQorTWVkaWFDb250
cm9sUm9vdEVsZW1lbnQ6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50KERvY3VtZW50KiBkb2N1bWVu
dCkKKyAgICA6IE1lZGlhQ29udHJvbHMoZG9jdW1lbnQpCisgICAgLCBtX21lZGlhQ29udHJvbGxl
cigwKQogICAgICwgbV9yZXdpbmRCdXR0b24oMCkKICAgICAsIG1fcGxheUJ1dHRvbigwKQogICAg
ICwgbV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9uKDApCkBAIC02OSw2MyArNzAsNjMgQEAgTWVkaWFD
b250cm9sUm9vdEVsZW1lbnQ6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50KEhUTUxNZWRpYUVsZW1l
bnQqIG1lZGlhRWxlbWVudCkKIHsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzPiBNZWRp
YUNvbnRyb2xzOjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQorUGFzc1Jl
ZlB0cjxNZWRpYUNvbnRyb2xzPiBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogewotICAgIHJldHVybiBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6Y3JlYXRlKG1lZGlh
RWxlbWVudCk7CisgICAgcmV0dXJuIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQpOwogfQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50PiBNZWRpYUNv
bnRyb2xSb290RWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkK
K1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ+IE1lZGlhQ29udHJvbFJvb3RFbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIGlmICghbWVkaWFFbGVtZW50
LT5kb2N1bWVudCgpLT5wYWdlKCkpCisgICAgaWYgKCFkb2N1bWVudC0+cGFnZSgpKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xSb290RWxlbWVudD4gY29udHJv
bHMgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQobWVkaWFFbGVtZW50KSk7
CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50PiBjb250cm9scyA9IGFkb3B0UmVm
KG5ldyBNZWRpYUNvbnRyb2xSb290RWxlbWVudChkb2N1bWVudCkpOwogCi0gICAgUmVmUHRyPE1l
ZGlhQ29udHJvbFBhbmVsRWxlbWVudD4gcGFuZWwgPSBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6
OmNyZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVsZW1l
bnQ+IHBhbmVsID0gTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwog
CiAgICAgRXhjZXB0aW9uQ29kZSBlYzsKIAotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xSZXdpbmRC
dXR0b25FbGVtZW50PiByZXdpbmRCdXR0b24gPSBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVt
ZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUmV3aW5k
QnV0dG9uRWxlbWVudD4gcmV3aW5kQnV0dG9uID0gTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBjb250cm9scy0+bV9yZXdpbmRCdXR0b24gPSBy
ZXdpbmRCdXR0b24uZ2V0KCk7CiAgICAgcGFuZWwtPmFwcGVuZENoaWxkKHJld2luZEJ1dHRvbi5y
ZWxlYXNlKCksIGVjLCB0cnVlKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgUmVmUHRyPE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50PiBwbGF5QnV0dG9uID0gTWVk
aWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudD4gcGxheUJ1dHRvbiA9IE1lZGlhQ29u
dHJvbFBsYXlCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGNvbnRyb2xzLT5t
X3BsYXlCdXR0b24gPSBwbGF5QnV0dG9uLmdldCgpOwogICAgIHBhbmVsLT5hcHBlbmRDaGlsZChw
bGF5QnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVs
ZW1lbnQ+IHJldHVyblRvUmVhbHRpbWVCdXR0b24gPSBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0
aW1lQnV0dG9uRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVudCk7CisgICAgUmVmUHRyPE1lZGlh
Q29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50PiByZXR1cm5Ub1JlYWx0aW1lQnV0
dG9uID0gTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCk7CiAgICAgY29udHJvbHMtPm1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbiA9IHJldHVy
blRvUmVhbHRpbWVCdXR0b24uZ2V0KCk7CiAgICAgcGFuZWwtPmFwcGVuZENoaWxkKHJldHVyblRv
UmVhbHRpbWVCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CiAgICAgaWYgKGVjKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIGlmIChtZWRpYUVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+
dGhlbWUoKS0+dXNlc01lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXkoKSkgewotICAgICAgICBSZWZQ
dHI8TWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ+IHN0YXR1c0Rpc3BsYXkgPSBNZWRp
YUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVudCk7CisgICAg
aWYgKGRvY3VtZW50LT5wYWdlKCktPnRoZW1lKCktPnVzZXNNZWRpYUNvbnRyb2xTdGF0dXNEaXNw
bGF5KCkpIHsKKyAgICAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50
PiBzdGF0dXNEaXNwbGF5ID0gTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6OmNyZWF0
ZShkb2N1bWVudCk7CiAgICAgICAgIGNvbnRyb2xzLT5tX3N0YXR1c0Rpc3BsYXkgPSBzdGF0dXNE
aXNwbGF5LmdldCgpOwogICAgICAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoc3RhdHVzRGlzcGxheS5y
ZWxlYXNlKCksIGVjLCB0cnVlKTsKICAgICAgICAgaWYgKGVjKQogICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxl
bWVudD4gdGltZWxpbmVDb250YWluZXIgPSBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVs
ZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1l
bGluZUNvbnRhaW5lckVsZW1lbnQ+IHRpbWVsaW5lQ29udGFpbmVyID0gTWVkaWFDb250cm9sVGlt
ZWxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogCi0gICAgUmVmUHRyPE1l
ZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ+IGN1cnJlbnRUaW1lRGlzcGxheSA9
IE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1l
bnQpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBj
dXJyZW50VGltZURpc3BsYXkgPSBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50
OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGNvbnRyb2xzLT5tX2N1cnJlbnRUaW1lRGlzcGxheSA9
IGN1cnJlbnRUaW1lRGlzcGxheS5nZXQoKTsKICAgICB0aW1lbGluZUNvbnRhaW5lci0+YXBwZW5k
Q2hpbGQoY3VycmVudFRpbWVEaXNwbGF5LnJlbGVhc2UoKSwgZWMsIHRydWUpOwogICAgIGlmIChl
YykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVF
bGVtZW50PiB0aW1lbGluZSA9IE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6Y3JlYXRlKG1l
ZGlhRWxlbWVudCwgY29udHJvbHMuZ2V0KCkpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1l
bGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQsIGNvbnRyb2xzLmdldCgpKTsKICAgICBjb250cm9scy0+bV90aW1lbGluZSA9
IHRpbWVsaW5lLmdldCgpOwogICAgIHRpbWVsaW5lQ29udGFpbmVyLT5hcHBlbmRDaGlsZCh0aW1l
bGluZS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudD4g
dGltZVJlbWFpbmluZ0Rpc3BsYXkgPSBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVs
ZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1l
UmVtYWluaW5nRGlzcGxheUVsZW1lbnQ+IHRpbWVSZW1haW5pbmdEaXNwbGF5ID0gTWVkaWFDb250
cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGNv
bnRyb2xzLT5tX3RpbWVSZW1haW5pbmdEaXNwbGF5ID0gdGltZVJlbWFpbmluZ0Rpc3BsYXkuZ2V0
KCk7CiAgICAgdGltZWxpbmVDb250YWluZXItPmFwcGVuZENoaWxkKHRpbWVSZW1haW5pbmdEaXNw
bGF5LnJlbGVhc2UoKSwgZWMsIHRydWUpOwogICAgIGlmIChlYykKQEAgLTEzNywyMSArMTM4LDIx
IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ+IE1lZGlhQ29udHJvbFJvb3RF
bGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8g
RklYTUU6IE9ubHkgY3JlYXRlIHdoZW4gbmVlZGVkIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU3MTYz
PgotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ+IHNlZWtCYWNr
QnV0dG9uID0gTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50OjpjcmVhdGUobWVkaWFF
bGVtZW50KTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50PiBz
ZWVrQmFja0J1dHRvbiA9IE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKICAgICBjb250cm9scy0+bV9zZWVrQmFja0J1dHRvbiA9IHNlZWtCYWNrQnV0
dG9uLmdldCgpOwogICAgIHBhbmVsLT5hcHBlbmRDaGlsZChzZWVrQmFja0J1dHRvbi5yZWxlYXNl
KCksIGVjLCB0cnVlKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8g
RklYTUU6IE9ubHkgY3JlYXRlIHdoZW4gbmVlZGVkIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU3MTYz
PgotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ+IHNlZWtG
b3J3YXJkQnV0dG9uID0gTWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50OjpjcmVh
dGUobWVkaWFFbGVtZW50KTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0
b25FbGVtZW50PiBzZWVrRm9yd2FyZEJ1dHRvbiA9IE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0
dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBjb250cm9scy0+bV9zZWVrRm9yd2Fy
ZEJ1dHRvbiA9IHNlZWtGb3J3YXJkQnV0dG9uLmdldCgpOwogICAgIHBhbmVsLT5hcHBlbmRDaGls
ZChzZWVrRm9yd2FyZEJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKICAgICBpZiAoZWMpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKG1lZGlhRWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFn
ZSgpLT50aGVtZSgpLT5zdXBwb3J0c0Nsb3NlZENhcHRpb25pbmcoKSkgewotICAgICAgICBSZWZQ
dHI8TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiB0b2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbiA9IE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0
dG9uRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVudCk7CisgICAgaWYgKGRvY3VtZW50LT5wYWdl
KCktPnRoZW1lKCktPnN1cHBvcnRzQ2xvc2VkQ2FwdGlvbmluZygpKSB7CisgICAgICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ+IHRvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uID0gTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0
b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgICAgICBjb250cm9scy0+bV90b2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbiA9IHRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLmdldCgpOwog
ICAgICAgICBwYW5lbC0+YXBwZW5kQ2hpbGQodG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24ucmVs
ZWFzZSgpLCBlYywgdHJ1ZSk7CiAgICAgICAgIGlmIChlYykKQEAgLTE1OSwyNiArMTYwLDI2IEBA
IFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ+IE1lZGlhQ29udHJvbFJvb3RFbGVt
ZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlCiAgICAgfQogCiAgICAgLy8gRklYTUU6IE9ubHkgY3Jl
YXRlIHdoZW4gbmVlZGVkIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU3MTYzPgotICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4gZnVsbFNjcmVlbkJ1dHRvbiA9IE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50LCBj
b250cm9scy5nZXQoKSk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25F
bGVtZW50PiBmdWxsU2NyZWVuQnV0dG9uID0gTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgY29udHJvbHMuZ2V0KCkpOwogICAgIGNvbnRyb2xzLT5t
X2Z1bGxTY3JlZW5CdXR0b24gPSBmdWxsU2NyZWVuQnV0dG9uLmdldCgpOwogICAgIHBhbmVsLT5h
cHBlbmRDaGlsZChmdWxsU2NyZWVuQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwogCi0gICAg
UmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ+IHBhbmVsTXV0ZUJ1dHRv
biA9IE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1l
bnQsIGNvbnRyb2xzLmdldCgpKTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0
dG9uRWxlbWVudD4gcGFuZWxNdXRlQnV0dG9uID0gTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9u
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBjb250cm9scy5nZXQoKSk7CiAgICAgY29udHJvbHMt
Pm1fcGFuZWxNdXRlQnV0dG9uID0gcGFuZWxNdXRlQnV0dG9uLmdldCgpOwogICAgIHBhbmVsLT5h
cHBlbmRDaGlsZChwYW5lbE11dGVCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CiAgICAgaWYg
KGVjKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChtZWRpYUVsZW1lbnQtPmRvY3VtZW50
KCktPnBhZ2UoKS0+dGhlbWUoKS0+dXNlc01lZGlhQ29udHJvbFZvbHVtZVNsaWRlcigpKSB7Ci0g
ICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiB2
b2x1bWVTbGlkZXJDb250YWluZXIgPSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJF
bGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKKyAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKS0+
dGhlbWUoKS0+dXNlc01lZGlhQ29udHJvbFZvbHVtZVNsaWRlcigpKSB7CisgICAgICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiB2b2x1bWVTbGlkZXJD
b250YWluZXIgPSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOwogCi0gICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJF
bGVtZW50PiBzbGlkZXIgPSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUo
bWVkaWFFbGVtZW50KTsKKyAgICAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVs
ZW1lbnQ+IHNsaWRlciA9IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCk7CiAgICAgICAgIGNvbnRyb2xzLT5tX3ZvbHVtZVNsaWRlciA9IHNsaWRlci5nZXQo
KTsKICAgICAgICAgdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5hcHBlbmRDaGlsZChzbGlkZXIucmVs
ZWFzZSgpLCBlYywgdHJ1ZSk7CiAgICAgICAgIGlmIChlYykKICAgICAgICAgICAgIHJldHVybiAw
OwogCi0gICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxl
bWVudD4gdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbiA9IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11
dGVCdXR0b25FbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKKyAgICAgICAgUmVmUHRyPE1l
ZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50PiB2b2x1bWVTbGlkZXJNdXRl
QnV0dG9uID0gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ6OmNyZWF0
ZShkb2N1bWVudCk7CiAgICAgICAgIGNvbnRyb2xzLT5tX3ZvbHVtZVNsaWRlck11dGVCdXR0b24g
PSB2b2x1bWVTbGlkZXJNdXRlQnV0dG9uLmdldCgpOwogICAgICAgICB2b2x1bWVTbGlkZXJDb250
YWluZXItPmFwcGVuZENoaWxkKHZvbHVtZVNsaWRlck11dGVCdXR0b24ucmVsZWFzZSgpLCBlYywg
dHJ1ZSk7CiAgICAgICAgIGlmIChlYykKQEAgLTE5MSwxOSArMTkyLDE5IEBAIFBhc3NSZWZQdHI8
TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ+IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpjcmVhdGUo
SFRNTE1lZGlhRWxlCiAgICAgfQogCiAgICAgLy8gRklYTUU6IE9ubHkgY3JlYXRlIHdoZW4gbmVl
ZGVkIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU3MTYzPgotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudD4gZnVsbFNjcmVlbk1pblZvbHVtZUJ1dHRv
biA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50OjpjcmVhdGUo
bWVkaWFFbGVtZW50KTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1p
bkJ1dHRvbkVsZW1lbnQ+IGZ1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b24gPSBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBj
b250cm9scy0+bV9mdWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uID0gZnVsbFNjcmVlbk1pblZvbHVt
ZUJ1dHRvbi5nZXQoKTsKICAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoZnVsbFNjcmVlbk1pblZvbHVt
ZUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVt
ZW50PiBmdWxsU2NyZWVuVm9sdW1lU2xpZGVyID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVt
ZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIFJlZlB0cjxNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudD4gZnVsbFNjcmVlblZvbHVtZVNsaWRl
ciA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQpOwogICAgIGNvbnRyb2xzLT5tX2Z1bGxTY3JlZW5Wb2x1bWVTbGlkZXIgPSBmdWxsU2Ny
ZWVuVm9sdW1lU2xpZGVyLmdldCgpOwogICAgIHBhbmVsLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVu
Vm9sdW1lU2xpZGVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOwogICAgIGlmIChlYykKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1
dHRvbkVsZW1lbnQ+IGZ1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24gPSBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVudCk7CisgICAg
UmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50PiBmdWxs
U2NyZWVuTWF4Vm9sdW1lQnV0dG9uID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1
dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgY29udHJvbHMtPm1fZnVsbFNjcmVl
bk1heFZvbHVtZUJ1dHRvbiA9IGZ1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24uZ2V0KCk7CiAgICAg
cGFuZWwtPmFwcGVuZENoaWxkKGZ1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24ucmVsZWFzZSgpLCBl
YywgdHJ1ZSk7CiAgICAgaWYgKGVjKQpAQCAtMjE3LDYgKzIxOCwzNSBAQCBQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50PiBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6Y3JlYXRlKEhU
TUxNZWRpYUVsZQogICAgIHJldHVybiBjb250cm9scy5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgTWVk
aWFDb250cm9sUm9vdEVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJ
bnRlcmZhY2UqIGNvbnRyb2xsZXIpCit7CisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyID09IGNv
bnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKyAgICBtX21lZGlhQ29udHJvbGxlciA9IGNvbnRy
b2xsZXI7CisKKyAgICBtX3Jld2luZEJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xs
ZXIpOworICAgIG1fcGxheUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwor
ICAgIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xs
ZXIpOworICAgIG1fc3RhdHVzRGlzcGxheS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIp
OworICAgIG1fY3VycmVudFRpbWVEaXNwbGF5LT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxl
cik7CisgICAgbV90aW1lbGluZS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAg
IG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsK
KyAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7
CisgICAgbV9zZWVrQmFja0J1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwor
ICAgIG1fc2Vla0ZvcndhcmRCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsK
KyAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29u
dHJvbGxlcik7CisgICAgbV9wYW5lbE11dGVCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250
cm9sbGVyKTsKKyAgICBtX3ZvbHVtZVNsaWRlci0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xs
ZXIpOworICAgIG1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNv
bnRyb2xsZXIpOworICAgIG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xs
ZXIoY29udHJvbGxlcik7CisgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5zZXRNZWRpYUNvbnRyb2xs
ZXIoY29udHJvbGxlcik7CisgICAgbV9mdWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uLT5zZXRNZWRp
YUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgbV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVyLT5z
ZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgbV9mdWxsU2NyZWVuTWF4Vm9sdW1l
QnV0dG9uLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgbV9wYW5lbC0+c2V0
TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIHJlc2V0KCk7Cit9CisKIHZvaWQgTWVk
aWFDb250cm9sUm9vdEVsZW1lbnQ6OnNob3coKQogewogICAgIG1fcGFuZWwtPnNob3coKTsKQEAg
LTI0NSwzMCArMjc1LDMwIEBAIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnJlc2V0KCkK
IAogICAgIHVwZGF0ZVN0YXR1c0Rpc3BsYXkoKTsKIAotICAgIGlmIChtX21lZGlhRWxlbWVudC0+
c3VwcG9ydHNGdWxsc2NyZWVuKCkpCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5zdXBwb3J0
c0Z1bGxzY3JlZW4oKSkKICAgICAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5zaG93KCk7CiAgICAg
ZWxzZQogICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPmhpZGUoKTsKIAotICAgIGZsb2F0IGR1
cmF0aW9uID0gbV9tZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCk7CisgICAgZmxvYXQgZHVyYXRpb24g
PSBtX21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24oKTsKICAgICBpZiAoaXNmaW5pdGUoZHVyYXRp
b24pIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRp
YVNsaWRlclBhcnQpKSB7CiAgICAgICAgIG1fdGltZWxpbmUtPnNldER1cmF0aW9uKGR1cmF0aW9u
KTsKICAgICAgICAgbV90aW1lbGluZUNvbnRhaW5lci0+c2hvdygpOwotICAgICAgICBtX3RpbWVs
aW5lLT5zZXRQb3NpdGlvbihtX21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKSk7CisgICAgICAg
IG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgp
KTsKICAgICAgICAgdXBkYXRlVGltZURpc3BsYXkoKTsKICAgICB9IGVsc2UKICAgICAgICAgbV90
aW1lbGluZUNvbnRhaW5lci0+aGlkZSgpOwogCi0gICAgaWYgKG1fbWVkaWFFbGVtZW50LT5oYXNB
dWRpbygpIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihN
ZWRpYU11dGVCdXR0b25QYXJ0KSkKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPmhhc0F1ZGlv
KCkgfHwgcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlh
TXV0ZUJ1dHRvblBhcnQpKQogICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+c2hvdygpOwogICAg
IGVsc2UKICAgICAgICAgbV9wYW5lbE11dGVCdXR0b24tPmhpZGUoKTsKIAogICAgIGlmIChtX3Zv
bHVtZVNsaWRlcikKLSAgICAgICAgbV92b2x1bWVTbGlkZXItPnNldFZvbHVtZShtX21lZGlhRWxl
bWVudC0+dm9sdW1lKCkpOworICAgICAgICBtX3ZvbHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVk
aWFDb250cm9sbGVyLT52b2x1bWUoKSk7CiAKICAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9u
c0J1dHRvbikgewotICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnQtPmhhc0Nsb3NlZENhcHRpb25z
KCkpCisgICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aGFzQ2xvc2VkQ2FwdGlvbnMoKSkK
ICAgICAgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPnNob3coKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgp
OwpAQCAtMjc3LDggKzMwNyw4IEBAIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnJlc2V0
KCkKICAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7CiAKICNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCi0gICAgaWYgKGRvY3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigp
ICYmIGRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpID09IG1fbWVk
aWFFbGVtZW50KSB7Ci0gICAgICAgIGlmIChtX21lZGlhRWxlbWVudC0+bW92aWVMb2FkVHlwZSgp
ID09IE1lZGlhUGxheWVyOjpMaXZlU3RyZWFtKSB7CisgICAgaWYgKGRvY3VtZW50KCktPndlYmtp
dElzRnVsbFNjcmVlbigpICYmIGRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxl
bWVudCgpID09IHRvUGFyZW50TWVkaWFFbGVtZW50KHRoaXMpKSB7CisgICAgICAgIGlmIChtX21l
ZGlhQ29udHJvbGxlci0+aXNMaXZlU3RyZWFtKCkpIHsKICAgICAgICAgICAgIG1fc2Vla0JhY2tC
dXR0b24tPmhpZGUoKTsKICAgICAgICAgICAgIG1fc2Vla0ZvcndhcmRCdXR0b24tPmhpZGUoKTsK
ICAgICAgICAgICAgIG1fcmV3aW5kQnV0dG9uLT5zaG93KCk7CkBAIC0yOTEsNyArMzIxLDcgQEAg
dm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6cmVzZXQoKQogICAgICAgICB9CiAgICAgfSBl
bHNlCiAjZW5kaWYKLSAgICBpZiAobV9tZWRpYUVsZW1lbnQtPm1vdmllTG9hZFR5cGUoKSAhPSBN
ZWRpYVBsYXllcjo6TGl2ZVN0cmVhbSkgeworICAgIGlmICghbV9tZWRpYUNvbnRyb2xsZXItPmlz
TGl2ZVN0cmVhbSgpKSB7CiAgICAgICAgIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbi0+aGlkZSgp
OwogICAgICAgICBtX3Jld2luZEJ1dHRvbi0+c2hvdygpOwogICAgIH0gZWxzZSB7CkBAIC0zMDUs
MjYgKzMzNSwyNiBAQCB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpyZXNldCgpCiB2b2lk
IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpwbGF5YmFja1N0YXJ0ZWQoKQogewogICAgIG1fcGxh
eUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKLSAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlv
bihtX21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKSk7CisgICAgbV90aW1lbGluZS0+c2V0UG9z
aXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpOwogICAgIHVwZGF0ZVRpbWVE
aXNwbGF5KCk7CiAKLSAgICBpZiAobV9tZWRpYUVsZW1lbnQtPmlzRnVsbHNjcmVlbigpKQorICAg
IGlmIChtX21lZGlhQ29udHJvbGxlci0+aXNGdWxsc2NyZWVuKCkpCiAgICAgICAgIHN0YXJ0SGlk
ZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnQ6OnBsYXliYWNrUHJvZ3Jlc3NlZCgpCiB7Ci0gICAgbV90aW1lbGluZS0+c2V0UG9zaXRp
b24obV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCkpOworICAgIG1fdGltZWxpbmUtPnNldFBv
c2l0aW9uKG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpKTsKICAgICB1cGRhdGVUaW1l
RGlzcGxheSgpOwogICAgIAotICAgIGlmICghbV9pc01vdXNlT3ZlckNvbnRyb2xzICYmIG1fbWVk
aWFFbGVtZW50LT5oYXNWaWRlbygpKQorICAgIGlmICghbV9pc01vdXNlT3ZlckNvbnRyb2xzICYm
IG1fbWVkaWFDb250cm9sbGVyLT5oYXNWaWRlbygpKQogICAgICAgICBtYWtlVHJhbnNwYXJlbnQo
KTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6cGxheWJhY2tTdG9wcGVkKCkK
IHsKICAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7Ci0gICAgbV90aW1lbGlu
ZS0+c2V0UG9zaXRpb24obV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCkpOworICAgIG1fdGlt
ZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpKTsKICAg
ICB1cGRhdGVUaW1lRGlzcGxheSgpOwogICAgIG1ha2VPcGFxdWUoKTsKICAgICAKQEAgLTMzMyw4
ICszNjMsOCBAQCB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpwbGF5YmFja1N0b3BwZWQo
KQogCiB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojp1cGRhdGVUaW1lRGlzcGxheSgpCiB7
Ci0gICAgZmxvYXQgbm93ID0gbV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCk7Ci0gICAgZmxv
YXQgZHVyYXRpb24gPSBtX21lZGlhRWxlbWVudC0+ZHVyYXRpb24oKTsKKyAgICBmbG9hdCBub3cg
PSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBmbG9hdCBkdXJhdGlvbiA9
IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwogCiAgICAgUGFnZSogcGFnZSA9IGRvY3Vt
ZW50KCktPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCkBAIC0zNzYsNyArNDA2LDcgQEAgdm9pZCBN
ZWRpYUNvbnRyb2xSb290RWxlbWVudDo6dXBkYXRlU3RhdHVzRGlzcGxheSgpCiAKIHZvaWQgTWVk
aWFDb250cm9sUm9vdEVsZW1lbnQ6OmxvYWRlZE1ldGFkYXRhKCkKIHsKLSAgICBpZiAobV9zdGF0
dXNEaXNwbGF5ICYmIG1fbWVkaWFFbGVtZW50LT5tb3ZpZUxvYWRUeXBlKCkgIT0gTWVkaWFQbGF5
ZXI6OkxpdmVTdHJlYW0pCisgICAgaWYgKG1fc3RhdHVzRGlzcGxheSAmJiBtX21lZGlhQ29udHJv
bGxlci0+aXNMaXZlU3RyZWFtKCkpCiAgICAgICAgIG1fc3RhdHVzRGlzcGxheS0+aGlkZSgpOwog
CiAgICAgcmVzZXQoKTsKQEAgLTM5OCwxMiArNDI4LDEyIEBAIHZvaWQgTWVkaWFDb250cm9sUm9v
dEVsZW1lbnQ6OmNoYW5nZWRNdXRlKCkKIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmNo
YW5nZWRWb2x1bWUoKQogewogICAgIGlmIChtX3ZvbHVtZVNsaWRlcikKLSAgICAgICAgbV92b2x1
bWVTbGlkZXItPnNldFZvbHVtZShtX21lZGlhRWxlbWVudC0+dm9sdW1lKCkpOworICAgICAgICBt
X3ZvbHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7CiB9
CiAKIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmVudGVyZWRGdWxsc2NyZWVuKCkKIHsK
LSAgICBpZiAobV9tZWRpYUVsZW1lbnQtPm1vdmllTG9hZFR5cGUoKSA9PSBNZWRpYVBsYXllcjo6
TGl2ZVN0cmVhbSkgeworICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aXNMaXZlU3RyZWFtKCkp
IHsKICAgICAgICAgbV9zZWVrQmFja0J1dHRvbi0+aGlkZSgpOwogICAgICAgICBtX3NlZWtGb3J3
YXJkQnV0dG9uLT5oaWRlKCk7CiAgICAgICAgIG1fcmV3aW5kQnV0dG9uLT5zaG93KCk7CkBAIC00
MTcsNyArNDQ3LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6ZW50ZXJlZEZ1bGxz
Y3JlZW4oKQogCiAgICAgbV9wYW5lbC0+c2V0Q2FuQmVEcmFnZ2VkKHRydWUpOwogCi0gICAgaWYg
KFBhZ2UqIHBhZ2UgPSBtX21lZGlhRWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpKQorICAgIGlm
IChQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQogICAgICAgICBwYWdlLT5jaHJvbWUo
KS0+c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKHRydWUpOwogCiAgICAgc3RhcnRIaWRl
RnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKQEAgLTQ0NSw3ICs0NzUsNyBAQCB2b2lkIE1lZGlh
Q29udHJvbFJvb3RFbGVtZW50OjpleGl0ZWRGdWxsc2NyZWVuKCkKIAogdm9pZCBNZWRpYUNvbnRy
b2xSb290RWxlbWVudDo6c2hvd1ZvbHVtZVNsaWRlcigpCiB7Ci0gICAgaWYgKCFtX21lZGlhRWxl
bWVudC0+aGFzQXVkaW8oKSkKKyAgICBpZiAoIW1fbWVkaWFDb250cm9sbGVyLT5oYXNBdWRpbygp
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV92b2x1bWVTbGlkZXJDb250YWluZXIpCkBA
IC00NzQsNyArNTA0LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLm1vdXNlb3ZlckV2ZW50KSB7CiAgICAgICAgIGlmICghY29udGFpbnNSZWxhdGVkVGFy
Z2V0KGV2ZW50KSkgewogICAgICAgICAgICAgbV9pc01vdXNlT3ZlckNvbnRyb2xzID0gdHJ1ZTsK
LSAgICAgICAgICAgIGlmICghbV9tZWRpYUVsZW1lbnQtPmNhblBsYXkoKSkgeworICAgICAgICAg
ICAgaWYgKCFtX21lZGlhQ29udHJvbGxlci0+Y2FuUGxheSgpKSB7CiAgICAgICAgICAgICAgICAg
bWFrZU9wYXF1ZSgpOwogICAgICAgICAgICAgICAgIGlmIChzaG91bGRIaWRlQ29udHJvbHMoKSkK
ICAgICAgICAgICAgICAgICAgICAgc3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsK
QEAgLTQ4Niw3ICs1MTYsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIHN0b3BIaWRlRnVsbHNjcmVl
bkNvbnRyb2xzVGltZXIoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpIHsKLSAgICAgICAgaWYgKG1fbWVkaWFF
bGVtZW50LT5pc0Z1bGxzY3JlZW4oKSkgeworICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIt
PmlzRnVsbHNjcmVlbigpKSB7CiAgICAgICAgICAgICAvLyBXaGVuIHdlIGdldCBhIG1vdXNlIG1v
dmUgaW4gZnVsbHNjcmVlbiBtb2RlLCBzaG93IHRoZSBtZWRpYSBjb250cm9scywgYW5kIHN0YXJ0
IGEgdGltZXIKICAgICAgICAgICAgIC8vIHRoYXQgd2lsbCBoaWRlIHRoZSBtZWRpYSBjb250cm9s
cyBhZnRlciBhIDMgc2Vjb25kcyB3aXRob3V0IGEgbW91c2UgbW92ZS4KICAgICAgICAgICAgIG1h
a2VPcGFxdWUoKTsKQEAgLTQ5OCw3ICs1MjgsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogdm9pZCBNZWRpYUNvbnRy
b2xSb290RWxlbWVudDo6c3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKQogewotICAg
IGlmICghbV9tZWRpYUVsZW1lbnQtPmlzRnVsbHNjcmVlbigpKQorICAgIGlmICghbV9tZWRpYUNv
bnRyb2xsZXItPmlzRnVsbHNjcmVlbigpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgbV9o
aWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIuc3RhcnRPbmVTaG90KHRpbWVXaXRob3V0TW91c2VN
b3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzKTsKQEAgLTUwNiwxNiArNTM2LDE2IEBAIHZvaWQg
TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnN0YXJ0SGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVy
KCkKIAogdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6aGlkZUZ1bGxzY3JlZW5Db250cm9s
c1RpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ+KikKIHsKLSAgICBpZiAo
IW1fbWVkaWFFbGVtZW50LT5pc1BsYXlpbmcoKSkKKyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXIt
PnBhdXNlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKCFtX21lZGlhRWxlbWVu
dC0+aXNGdWxsc2NyZWVuKCkpCisgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlci0+aXNGdWxsc2Ny
ZWVuKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoIXNob3VsZEhpZGVDb250cm9s
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fbWVkaWFFbGVt
ZW50LT5kb2N1bWVudCgpLT5wYWdlKCkpCisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgp
LT5wYWdlKCkpCiAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRDdXJzb3JIaWRkZW5VbnRpbE1v
dXNlTW92ZXModHJ1ZSk7CiAKICAgICBtYWtlVHJhbnNwYXJlbnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5oCmluZGV4IDk3
NzgxZGMxMmYxZTAyYTc2ZjEyMjlhMTU1ZTZkZjZlNWQ4M2M1NTUuLmVkOTBjNTg3ZGUwYTA2YzMy
ZTg2OTFjOWQ0ZGQ3NGRmZTg1ZmEwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaApAQCAtNjgsOSArNjgsMTEgQEAgY2xh
c3MgUmVuZGVyTWVkaWE7CiAKIGNsYXNzIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50IDogcHVibGlj
IE1lZGlhQ29udHJvbHMgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAog
ICAgIC8vIE1lZGlhQ29udHJvbHMgaW1wbGVtZW50YXRpb24uCisgICAgdm9pZCBzZXRNZWRpYUNv
bnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKik7CisKICAgICB2b2lkIHNob3coKTsK
ICAgICB2b2lkIGhpZGUoKTsKICAgICB2b2lkIG1ha2VPcGFxdWUoKTsKQEAgLTk5LDcgKzEwMSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSGlkZUNvbnRyb2xzKCk7CiAKIHBy
aXZhdGU6Ci0gICAgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOwor
ICAgIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50KERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogICAgIHZvaWQgaGlkZUZ1bGxzY3JlZW5D
b250cm9sc1RpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ+Kik7CkBAIC0x
MTAsNyArMTEyLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgY29udGFpbnNSZWxhdGVkVGFyZ2V0
KEV2ZW50Kik7CiAKLSAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudDsKKyAgICBN
ZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIG1fbWVkaWFDb250cm9sbGVyOwogCiAgICAgTWVkaWFD
b250cm9sUmV3aW5kQnV0dG9uRWxlbWVudCogbV9yZXdpbmRCdXR0b247CiAgICAgTWVkaWFDb250
cm9sUGxheUJ1dHRvbkVsZW1lbnQqIG1fcGxheUJ1dHRvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAKaW5kZXggNjYxZmQxOWI3OWUzMTc4MzI2MzU3ZjY5
NzhhYzQwOWZmNWEwZWI3Yi4uMmQwMDc5MjUyNDE3YWIzNWJjODM0MjdiZTFkMDZiODQzMjJlNDVh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAKQEAg
LTM2LDggKzM2LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1NZWRpYUNvbnRyb2xzOjpN
ZWRpYUNvbnRyb2xzKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLSAgICA6IEhUTUxE
aXZFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBtZWRpYUVsZW1lbnQtPmRvY3VtZW50KCkpCitN
ZWRpYUNvbnRyb2xzOjpNZWRpYUNvbnRyb2xzKERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IEhU
TUxEaXZFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oCmluZGV4IDFlMTQzMTQxYTIyMmRm
MjQwNTU5M2E3MjEwY2FiZmRkYmY5NzcwNjEuLjRmNjAxZmQwZTRmNWMxNzhkNTg0OGYwZjIzN2Uy
MDk2NDg4MWNlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
LmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1M
TWVkaWFFbGVtZW50OworY2xhc3MgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlOwogCiBjbGFzcyBN
ZWRpYUNvbnRyb2xzIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKICAgcHVibGljOgpAQCAtNDEs
NyArNDEsOSBAQCBjbGFzcyBNZWRpYUNvbnRyb2xzIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsK
IAogICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgdG8gYmUgaW1wbGVtZW50ZWQgaW4geW91ciBwb3J0
LXNwZWNpZmljIG1lZGlhCiAgICAgLy8gY29udHJvbHMgaW1wbGVtZW50YXRpb24uCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9scz4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzPiBjcmVhdGUoRG9jdW1lbnQqKTsK
KworICAgIHZpcnR1YWwgdm9pZCBzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50
ZXJmYWNlKikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNob3coKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGhpZGUoKSA9IDA7CkBAIC03MSw3ICs3Myw3IEBAIGNsYXNzIE1lZGlhQ29udHJvbHMg
OiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRIaWRlQ29u
dHJvbHMoKSA9IDA7CiAKIHByb3RlY3RlZDoKLSAgICBNZWRpYUNvbnRyb2xzKEhUTUxNZWRpYUVs
ZW1lbnQqKTsKKyAgICBNZWRpYUNvbnRyb2xzKERvY3VtZW50Kik7CiAKIHByaXZhdGU6CiAgICAg
TWVkaWFDb250cm9scygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114096</attachid>
            <date>2011-11-08 09:42:50 -0800</date>
            <delta_ts>2011-11-14 10:20:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71410-20111108094248.patch</filename>
            <type>text/plain</type>
            <size>94416</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk1NzYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3MTJhMWUxZTg4NmY1M2E0
ZTA3ZjU5NTIzZDgyYmM1ZGMxZDcwMWUzLi4xNDNlOGM4ZDY3OTE3OWEwMzY5ZDljNDVmYTBmMGI4
YmQ2NTBkM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ0IEBACisyMDExLTExLTAyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhQ29udHJvbHMgc2hv
dWxkIHVzZSBNZWRpYUNvbnRyb2xsZXIgaWYgcHJlc2VudC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOyBjb3ZlcmVkIGJ5IGV4aXN0
aW5nIHRlc3RzLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBpbmRpdmlkdWFsIG1lZGlhIGNv
bnRyb2xzIHRvIGNvbnRyb2wgdGhlIE1lZGlhQ29udHJvbGxlciBvZiB0aGVpciBhc3NvY2lhdGVk
CisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQsIGlmIHByZXNlbnQuCisKKyAgICAgICAgVGhlIHZp
ZGVvIHNwZWMgcmVxdWlyZXMgdGhhdCBVQSBwcm92aWRlZCBtZWRpYSBjb250cm9scyBiZSBpbXBs
ZW1lbnRlZCBpbiB0ZXJtcyBvZiB0aGVpciAKKyAgICAgICAgSFRNTE1lZGlhRWxlbWVudCdzIE1l
ZGlhQ29udHJvbGxlciwgaWYgcHJlc2VudC4gIFNvIGZvciBlYWNoIG9mIHRoZSBtZWRpYSBjb250
cm9scywgbW9kaWZ5IAorICAgICAgICB0aGVpciBjb25zdHJ1Y3RvciB0byB0YWtlIGEgRG9jdW1l
bnQqIGluc3RlYWQgb2YgYW4gSFRNTE1lZGlhRWxlbWVudCwgYW5kIGFkZCBhbiBzZXR0ZXIKKyAg
ICAgICAgdGFraW5nIGEgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLgorCisgICAgICAgIE5vdyB0
aGF0IE1lZGlhQ29udHJvbHMgaGF2ZSBhbiBhYnN0cmFjdCBpbnRlcmZhY2UgaW5zdGVhZCBvZiBh
biBIVE1MTWVkaWFFbGVtZW50LCB1c2UgdG9QYXJlbnRNZWRpYUVsZW1lbnQKKyAgICAgICAgdG8g
ZmluZCB0aGUgY29udHJvbGxpbmdWaWRlb0VsZW1lbnQuCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5TWVkaWFDb250cm9sc0NvbnRhaW5lcjo6Y29udHJvbGxpbmdWaWRlb0VsZW1lbnQp
OgorCisgICAgICAgIFBhc3MgdGhlIE1lZGlhQ29udHJvbGxlciBvciB0aGUgSFRNTE1lZGlhRWxl
bWVudCB3aGVuIHNldHRpbmcgdXAgdGhlIGVsZW1lbnRzIGNvbnRyb2xzLgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpjcmVhdGVNZWRpYUNvbnRyb2xzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcik6CisKKyAgICAgICAgVGhlIGZvbGxvd2luZyBmdW5j
dGlvbnMgaGF2ZSBvbmx5IGNvbnN0cnVjdG9yIGNoYW5nZXM6CisgICAgICAgICogaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sRWxlbWVudDo6TWVkaWFDb250cm9sRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xQYW5lbEVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBhbmVsRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJv
bFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1
bWVTbGlkZXJDb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6TWVkaWFDb250cm9sU3RhdHVzRGlz
cGxheUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sU3RhdHVzRGlzcGxh
eUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xJbnB1dEVs
ZW1lbnQ6Ok1lZGlhQ29udHJvbElucHV0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUGFuZWxNdXRl
QnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVs
ZW1lbnQ6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6
Ok1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVu
dDo6TWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudDo6TWVkaWFDb250
cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bFNlZWtCYWNrQnV0dG9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVC
dXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxl
bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRvZ2dsZUNsb3Nl
ZENhcHRpb25zQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNC
dXR0b25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRvZ2dsZUNsb3Nl
ZENhcHRpb25zQnV0dG9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFRpbWVsaW5lRWxlbWVudDo6TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbFZvbHVtZVNsaWRlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
Vm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ6Ok1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6Ok1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVs
ZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVt
ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGltZURpc3BsYXlF
bGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpN
ZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6Ok1lZGlh
Q29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93
L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50OjpNZWRpYUNvbnRyb2xSb290RWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sUm9vdEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sUm9vdEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6Ok1lZGlhQ29udHJvbHMpOgorICAg
ICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaDoKKworICAgICAgICBUaGUgZm9sbG93
aW5nIGZ1bmN0aW9ucyBub3cgY2FsbCBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UgaW5zdGVhZCBv
ZiBIVE1MTWVkaWFFbGVtZW50IGRpcmVjdGx5OgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlh
Q29udHJvbEVsZW1lbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xTdGF0dXNE
aXNwbGF5RWxlbWVudDo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbE11
dGVCdXR0b25FbGVtZW50Ojp1cGRhdGVEaXNwbGF5VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6dXBkYXRlRGlzcGxh
eVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6
OnN0YXJ0VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sU2Vla0J1dHRvbkVs
ZW1lbnQ6OnN0b3BUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xTZWVrQnV0
dG9uRWxlbWVudDo6bmV4dFJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sU2Vl
a0J1dHRvbkVsZW1lbnQ6OnNlZWtUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVG9nZ2xl
Q2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVu
dDo6dXBkYXRlRGlzcGxheVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGlt
ZWxpbmVFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25F
bGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6cmVzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnBsYXliYWNrU3RhcnRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6cGxheWJhY2tQcm9ncmVz
c2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpwbGF5YmFj
a1N0b3BwZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnVw
ZGF0ZVRpbWVEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVt
ZW50Ojpsb2FkZWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290
RWxlbWVudDo6Y2hhbmdlZFZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xS
b290RWxlbWVudDo6ZW50ZXJlZEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sUm9vdEVsZW1lbnQ6OnNob3dWb2x1bWVTbGlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnN0YXJ0SGlkZUZ1bGxzY3JlZW5Db250
cm9sc1RpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojpo
aWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXJGaXJlZCk6CisgICAgICAgICogaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudENo
cm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHM6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6cmVzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6cGxh
eWJhY2tTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50
Q2hyb21pdW06OnBsYXliYWNrUHJvZ3Jlc3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xSb290RWxlbWVudENocm9taXVtOjpwbGF5YmFja1N0b3BwZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6dXBkYXRlVGltZURpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6ZGVm
YXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxl
bWVudENocm9taXVtOjpjaGFuZ2VkVm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnNob3dWb2x1bWVTbGlkZXIpOgorICAgICAgICAqIGh0
bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0uaDoKKworICAgICAgICBU
aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBzZXQgdGhlIGN1cnJlbnQgTWVkaWFDb250cm9sbGVySW50
ZXJmYWNlLgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpzZXRNZWRpYUNv
bnRyb2xsZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmg6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xFbGVtZW50OjpzZXRNZWRpYUNvbnRyb2xs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRWxlbWVudDo6bWVkaWFDb250cm9s
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6c2V0TWVk
aWFDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbElucHV0RWxlbWVu
dDo6bWVkaWFDb250cm9sbGVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xS
b290RWxlbWVudENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJv
b3RFbGVtZW50Q2hyb21pdW06OnNldE1lZGlhQ29udHJvbGxlcik6CisKIDIwMTEtMTEtMDggIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IE1lZGlh
Q29udHJvbGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHAKaW5kZXggNTMxYjZiMTJhMGM2NTM0MDdi
ZGM0MDgwOWNlY2VhYzQ5OWEzN2VjMy4uYzczM2E3MjZiOWJhMjBlYzQ4Njc3YWE4YTQxNThlMmZk
NDQ0MmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TWVkaWFDb250cm9scy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKIAogI2lu
Y2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisj
aW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50
cy5oIgpAQCAtMjM1LDcgKzIzNiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHND
b250YWluZXI6OmNvbnRyb2xsaW5nVmlkZW9FbGVtZW50KCkgY29uc3QKIAogICAgIE1lZGlhQ29u
dHJvbFRpbWVEaXNwbGF5RWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PE1lZGlhQ29udHJv
bFRpbWVEaXNwbGF5RWxlbWVudCo+KG1fcmVuZGVyZXItPm5vZGUoKSk7CiAKLSAgICByZXR1cm4g
ZWxlbWVudC0+bWVkaWFFbGVtZW50KCktPmlzVmlkZW8oKTsKKyAgICByZXR1cm4gdG9QYXJlbnRN
ZWRpYUVsZW1lbnQoZWxlbWVudCktPmlzVmlkZW8oKTsKIH0KIAogY29uc3QgU3RyaW5nIEFjY2Vz
c2liaWxpdHlNZWRpYUNvbnRyb2xzQ29udGFpbmVyOjplbGVtZW50VHlwZU5hbWUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNzMxMzM4N2Y4NzYy
YTEyNGE1ZjdhODBhNGFlMzhlYWE0N2MzMjUwYy4uOTlmZmNhMWI1ZGEzNjE3ZTU4OWQ3MTcyNjNl
MTY3NzY1MDcwZTUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CkBAIC0zMDgzLDEwICszMDgzLDEyIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVk
aWFDb250cm9scygpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgRXhjZXB0aW9uQ29kZSBl
YzsKLSAgICBSZWZQdHI8TWVkaWFDb250cm9scz4gY29udHJvbHMgPSBNZWRpYUNvbnRyb2xzOjpj
cmVhdGUodGhpcyk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbHM+IGNvbnRyb2xzID0gTWVkaWFD
b250cm9sczo6Y3JlYXRlKGRvY3VtZW50KCkpOwogICAgIGlmICghY29udHJvbHMpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAorICAgIGNvbnRyb2xzLT5zZXRNZWRpYUNvbnRyb2xsZXIobV9tZWRp
YUNvbnRyb2xsZXIgPyBtX21lZGlhQ29udHJvbGxlci5nZXQoKSA6IHN0YXRpY19jYXN0PE1lZGlh
Q29udHJvbGxlckludGVyZmFjZSo+KHRoaXMpKTsKKwogICAgIGVuc3VyZVNoYWRvd1Jvb3QoKS0+
YXBwZW5kQ2hpbGQoY29udHJvbHMsIGVjKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTMxOTUs
NiArMzE5Nyw5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TWVkaWFDb250cm9sbGVyKFBh
c3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBjb250cm9sbGVyCiAKICAgICBtX21lZGlhQ29udHJv
bGxlciA9IGNvbnRyb2xsZXI7CiAKKyAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQorICAgICAg
ICBtZWRpYUNvbnRyb2xzKCktPnNldE1lZGlhQ29udHJvbGxlcihtX21lZGlhQ29udHJvbGxlciA/
IG1fbWVkaWFDb250cm9sbGVyLmdldCgpIDogc3RhdGljX2Nhc3Q8TWVkaWFDb250cm9sbGVySW50
ZXJmYWNlKj4odGhpcykpOworCiAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQogICAgICAgICBt
X21lZGlhQ29udHJvbGxlci0+YWRkTWVkaWFFbGVtZW50KHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCmluZGV4IDc1
NzVkNDFhY2FkM2U5YjIyN2M0ZTQwZDJiMzk4ZjNlOTM2OGI2NjUuLjYxMzBlYTYzOTUzNjJmZThh
ODIxNjQzOWViMTM0MDliNDQ0YjRmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1lZGlh
Q29udHJvbHMuaCIKQEAgLTUzLDYgKzU0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIEhUTUxNZWRp
YUVsZW1lbnQqIHRvUGFyZW50TWVkaWFFbGVtZW50KE5vZGUqIG5vZGUpCiB7CkBAIC03MSw5ICs3
Myw5IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBjU2Nhbk1heGltdW1SYXRlID0gODsKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NZWRpYUNvbnRyb2xFbGVtZW50OjpNZWRpYUNv
bnRyb2xFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLSAgICA6IEhUTUxE
aXZFbGVtZW50KGRpdlRhZywgbWVkaWFFbGVtZW50LT5kb2N1bWVudCgpKQotICAgICwgbV9tZWRp
YUVsZW1lbnQobWVkaWFFbGVtZW50KQorTWVkaWFDb250cm9sRWxlbWVudDo6TWVkaWFDb250cm9s
RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBIVE1MRGl2RWxlbWVudChkaXZUYWcs
IGRvY3VtZW50KQorICAgICwgbV9tZWRpYUNvbnRyb2xsZXIoMCkKIHsKIH0KIApAQCAtODksMTcg
KzkxLDE3IEBAIHZvaWQgTWVkaWFDb250cm9sRWxlbWVudDo6aGlkZSgpCiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6
TWVkaWFDb250cm9sUGFuZWxFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkK
LSAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQobWVkaWFFbGVtZW50KQoraW5saW5lIE1lZGlhQ29u
dHJvbFBhbmVsRWxlbWVudDo6TWVkaWFDb250cm9sUGFuZWxFbGVtZW50KERvY3VtZW50KiBkb2N1
bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX2NhbkJl
RHJhZ2dlZChmYWxzZSkKICAgICAsIG1faXNCZWluZ0RyYWdnZWQoZmFsc2UpCiAgICAgLCBtX29w
YXF1ZSh0cnVlKQogewogfQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudD4g
TWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFF
bGVtZW50KQorUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ+IE1lZGlhQ29udHJv
bFBhbmVsRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudChtZWRpYUVsZW1lbnQpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudChkb2N1bWVudCkp
OwogfQogCiBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6
OmRpc3BsYXlUeXBlKCkgY29uc3QKQEAgLTI0MywxNCArMjQ1LDE0IEBAIHZvaWQgTWVkaWFDb250
cm9sUGFuZWxFbGVtZW50OjpzZXRDYW5CZURyYWdnZWQoYm9vbCBjYW5CZURyYWdnZWQpCiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbFRpbWVs
aW5lQ29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50
KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLSAgICA6IE1lZGlhQ29udHJvbEVsZW1l
bnQobWVkaWFFbGVtZW50KQoraW5saW5lIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxl
bWVudDo6TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KERvY3VtZW50KiBkb2N1
bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQoZG9jdW1lbnQpCiB7CiB9CiAKLVBhc3NS
ZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xU
aW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVs
ZW1lbnQpCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudD4g
TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRv
Y3VtZW50KQogewotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1l
bnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJF
bGVtZW50KG1lZGlhRWxlbWVudCkpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNv
bnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVGltZWxp
bmVDb250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7CiAgICAgZWxlbWVudC0+aGlkZSgpOwogICAg
IHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKIH0KQEAgLTI5NiwxNCArMjk4LDE0IEBAIHZvaWQg
UmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXI6OmxheW91dCgpCiAgICAgc2V0WShvZmZz
ZXQueSgpICsgYnV0dG9uQm94LT5vZmZzZXRUb3AoKSk7CiB9CiAKLWlubGluZSBNZWRpYUNvbnRy
b2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJD
b250YWluZXJFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLSAgICA6IE1l
ZGlhQ29udHJvbEVsZW1lbnQobWVkaWFFbGVtZW50KQoraW5saW5lIE1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5l
ckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sRWxlbWVudChk
b2N1bWVudCkKIHsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250
YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50Ojpj
cmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQorUGFzc1JlZlB0cjxNZWRpYUNv
bnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlk
ZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiBlbGVtZW50ID0g
YWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQobWVk
aWFFbGVtZW50KSk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5l
ckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVy
Q29udGFpbmVyRWxlbWVudChkb2N1bWVudCkpOwogICAgIGVsZW1lbnQtPmhpZGUoKTsKICAgICBy
ZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7CiB9CkBAIC0zNDMsMTUgKzM0NSwxNSBAQCBjb25zdCBB
dG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnNo
YWRvd1BzZXVkb0lkKCkgYwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlu
bGluZSBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6TWVkaWFDb250cm9sU3RhdHVz
RGlzcGxheUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQotICAgIDogTWVk
aWFDb250cm9sRWxlbWVudChtZWRpYUVsZW1lbnQpCitpbmxpbmUgTWVkaWFDb250cm9sU3RhdHVz
RGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50KERvY3VtZW50
KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQoZG9jdW1lbnQpCiAgICAgLCBt
X3N0YXRlQmVpbmdEaXNwbGF5ZWQoTm90aGluZykKIHsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYUNv
bnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudD4gTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1l
bnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCitQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5
RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBSZWZQdHI8TWVkaWFD
b250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFD
b250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQobWVkaWFFbGVtZW50KSk7CisgICAgUmVmUHRyPE1l
ZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1l
ZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50KGRvY3VtZW50KSk7CiAgICAgZWxlbWVudC0+
aGlkZSgpOwogICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKIH0KQEAgLTM2MSw5ICszNjMs
OSBAQCB2b2lkIE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50Ojp1cGRhdGUoKQogICAg
IC8vIEdldCB0aGUgbmV3IHN0YXRlIHRoYXQgd2UnbGwgaGF2ZSB0byBkaXNwbGF5LgogICAgIFN0
YXRlQmVpbmdEaXNwbGF5ZWQgbmV3U3RhdGVUb0Rpc3BsYXkgPSBOb3RoaW5nOwogCi0gICAgaWYg
KG1lZGlhRWxlbWVudCgpLT5yZWFkeVN0YXRlKCkgPD0gSFRNTE1lZGlhRWxlbWVudDo6SEFWRV9N
RVRBREFUQSAmJiAhbWVkaWFFbGVtZW50KCktPmN1cnJlbnRTcmMoKS5pc0VtcHR5KCkpCisgICAg
aWYgKG1lZGlhQ29udHJvbGxlcigpLT5yZWFkeVN0YXRlKCkgPD0gTWVkaWFDb250cm9sbGVySW50
ZXJmYWNlOjpIQVZFX01FVEFEQVRBICYmIG1lZGlhQ29udHJvbGxlcigpLT5oYXNTb3VyY2UoKSkK
ICAgICAgICAgbmV3U3RhdGVUb0Rpc3BsYXkgPSBMb2FkaW5nOwotICAgIGVsc2UgaWYgKG1lZGlh
RWxlbWVudCgpLT5tb3ZpZUxvYWRUeXBlKCkgPT0gTWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW0pCisg
ICAgZWxzZSBpZiAobWVkaWFDb250cm9sbGVyKCktPmlzTGl2ZVN0cmVhbSgpKQogICAgICAgICBu
ZXdTdGF0ZVRvRGlzcGxheSA9IExpdmVCcm9hZGNhc3Q7CiAKICAgICBpZiAobmV3U3RhdGVUb0Rp
c3BsYXkgPT0gbV9zdGF0ZUJlaW5nRGlzcGxheWVkKQpAQCAtNDA0LDkgKzQwNiw5IEBAIGNvbnN0
IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6OnNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIAot
TWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjpNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoSFRNTE1l
ZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5
VHlwZSkKLSAgICA6IEhUTUxJbnB1dEVsZW1lbnQoaW5wdXRUYWcsIG1lZGlhRWxlbWVudC0+ZG9j
dW1lbnQoKSwgMCwgZmFsc2UpCi0gICAgLCBtX21lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQpCitN
ZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6Ok1lZGlhQ29udHJvbElucHV0RWxlbWVudChEb2N1bWVu
dCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKQorICAgIDog
SFRNTElucHV0RWxlbWVudChpbnB1dFRhZywgZG9jdW1lbnQsIDAsIGZhbHNlKQorICAgICwgbV9t
ZWRpYUNvbnRyb2xsZXIoMCkKICAgICAsIG1fZGlzcGxheVR5cGUoZGlzcGxheVR5cGUpCiB7CiB9
CkBAIC00MzQsMTUgKzQzNiwxNSBAQCB2b2lkIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6c2V0
RGlzcGxheVR5cGUoTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cAogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xNdXRlQnV0dG9u
RWxlbWVudDo6TWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbGVtZW50LCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSkKLSAgICA6
IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChtZWRpYUVsZW1lbnQsIGRpc3BsYXlUeXBlKQoraW5s
aW5lIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xNdXRlQnV0dG9u
RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3Bs
YXlUeXBlKQorICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50LCBkaXNwbGF5
VHlwZSkKIHsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPnNldE11
dGVkKCFtZWRpYUVsZW1lbnQoKS0+bXV0ZWQoKSk7CisgICAgICAgIG1lZGlhQ29udHJvbGxlcigp
LT5zZXRNdXRlZCghbWVkaWFDb250cm9sbGVyKCktPm11dGVkKCkpOwogICAgICAgICBldmVudC0+
c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9CiAKQEAgLTQ1NiwyMiArNDU4LDIyIEBAIHZvaWQg
TWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6OmNoYW5nZWRNdXRlKCkKIAogdm9pZCBNZWRp
YUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6dXBkYXRlRGlzcGxheVR5cGUoKQogewotICAgIHNl
dERpc3BsYXlUeXBlKG1lZGlhRWxlbWVudCgpLT5tdXRlZCgpID8gTWVkaWFVbk11dGVCdXR0b24g
OiBNZWRpYU11dGVCdXR0b24pOworICAgIHNldERpc3BsYXlUeXBlKG1lZGlhQ29udHJvbGxlcigp
LT5tdXRlZCgpID8gTWVkaWFVbk11dGVCdXR0b24gOiBNZWRpYU11dGVCdXR0b24pOwogfQogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xQYW5l
bE11dGVCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50KEhU
TUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCi0g
ICAgOiBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQsIE1lZGlhTXV0
ZUJ1dHRvbikKK2lubGluZSBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpNZWRp
YUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFD
b250cm9scyogY29udHJvbHMpCisgICAgOiBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudChk
b2N1bWVudCwgTWVkaWFNdXRlQnV0dG9uKQogICAgICwgbV9jb250cm9scyhjb250cm9scykKIHsK
IH0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50PiBNZWRp
YUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbGVtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250cm9scykKK1Bhc3NSZWZQdHI8TWVkaWFD
b250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9u
RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9scyogY29udHJv
bHMpCiB7CiAgICAgQVNTRVJUKGNvbnRyb2xzKTsKIAotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQ
YW5lbE11dGVCdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9s
UGFuZWxNdXRlQnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQsIGNvbnRyb2xzKSk7CisgICAgUmVm
UHRyPE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVm
KG5ldyBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50KGRvY3VtZW50LCBjb250cm9s
cykpOwogICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7CiAgICAgcmV0dXJuIGJ1dHRvbi5y
ZWxlYXNlKCk7CiB9CkBAIC00OTIsMTQgKzQ5NCwxNCBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1l
ZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QK
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9s
Vm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11
dGVCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLSAgICA6IE1l
ZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCwgTWVkaWFNdXRlQnV0dG9u
KQoraW5saW5lIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50OjpNZWRp
YUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQp
CisgICAgOiBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudChkb2N1bWVudCwgTWVkaWFNdXRl
QnV0dG9uKQogewogfQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVC
dXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudDo6
Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK1Bhc3NSZWZQdHI8TWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFZvbHVtZVNs
aWRlck11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAg
IFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudD4gYnV0dG9u
ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50
KG1lZGlhRWxlbWVudCkpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRl
QnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFZvbHVtZVNs
aWRlck11dGVCdXR0b25FbGVtZW50KGRvY3VtZW50KSk7CiAgICAgYnV0dG9uLT5zZXRUeXBlKCJi
dXR0b24iKTsKICAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKIH0KQEAgLTUxMiwxNCArNTE0
LDE0IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1
dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbFBsYXlCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLSAg
ICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChtZWRpYUVsZW1lbnQsIE1lZGlhUGxheUJ1dHRv
bikKK2lubGluZSBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sUGxh
eUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sSW5w
dXRFbGVtZW50KGRvY3VtZW50LCBNZWRpYVBsYXlCdXR0b24pCiB7CiB9CiAKLVBhc3NSZWZQdHI8
TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVt
ZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQorUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1l
bnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgUmVmUHRyPE1lZGlhQ29udHJv
bFBsYXlCdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sUGxh
eUJ1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50KSk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFBs
YXlCdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sUGxheUJ1
dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsKICAgICBidXR0b24tPnNldFR5cGUoImJ1dHRvbiIpOwog
ICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOwogfQpAQCAtNTI3LDcgKzUyOSwxMCBAQCBQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xQbGF5QnV0
dG9uRWxlbWVudDo6Y3JlYXRlKAogdm9pZCBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAgICAgbWVkaWFFbGVtZW50KCkt
PnRvZ2dsZVBsYXlTdGF0ZSgpOworICAgICAgICBpZiAobWVkaWFDb250cm9sbGVyKCktPmNhblBs
YXkoKSkKKyAgICAgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5wbGF5KCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5wYXVzZSgpOwogICAgICAgICB1cGRh
dGVEaXNwbGF5VHlwZSgpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAg
ICB9CkBAIC01MzYsNyArNTQxLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAKIHZvaWQgTWVkaWFDb250cm9s
UGxheUJ1dHRvbkVsZW1lbnQ6OnVwZGF0ZURpc3BsYXlUeXBlKCkKIHsKLSAgICBzZXREaXNwbGF5
VHlwZShtZWRpYUVsZW1lbnQoKS0+Y2FuUGxheSgpID8gTWVkaWFQbGF5QnV0dG9uIDogTWVkaWFQ
YXVzZUJ1dHRvbik7CisgICAgc2V0RGlzcGxheVR5cGUobWVkaWFDb250cm9sbGVyKCktPmNhblBs
YXkoKSA/IE1lZGlhUGxheUJ1dHRvbiA6IE1lZGlhUGF1c2VCdXR0b24pOwogfQogCiBjb25zdCBB
dG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9J
ZCgpIGNvbnN0CkBAIC01NDcsOCArNTUyLDggQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNv
bnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xTZWVrQnV0dG9u
RWxlbWVudDo6TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbGVtZW50LCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSkKLSAgICA6
IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChtZWRpYUVsZW1lbnQsIGRpc3BsYXlUeXBlKQoraW5s
aW5lIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xTZWVrQnV0dG9u
RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3Bs
YXlUeXBlKQorICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50LCBkaXNwbGF5
VHlwZSkKICAgICAsIG1fYWN0aW9uT25TdG9wKE5vdGhpbmcpCiAgICAgLCBtX3NlZWtUeXBlKFNr
aXApCiAgICAgLCBtX3NlZWtUaW1lcih0aGlzLCAmTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1l
bnQ6OnNlZWtUaW1lckZpcmVkKQpAQCAtNTc4LDE3ICs1ODMsMTcgQEAgdm9pZCBNZWRpYUNvbnRy
b2xTZWVrQnV0dG9uRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wgZmxhZywgYm9vbCBwYXVzZSkKIAog
dm9pZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6c3RhcnRUaW1lcigpCiB7Ci0gICAg
bV9zZWVrVHlwZSA9IG1lZGlhRWxlbWVudCgpLT5zdXBwb3J0c1NjYW5uaW5nKCkgPyBTY2FuIDog
U2tpcDsKKyAgICBtX3NlZWtUeXBlID0gbWVkaWFDb250cm9sbGVyKCktPnN1cHBvcnRzU2Nhbm5p
bmcoKSA/IFNjYW4gOiBTa2lwOwogCiAgICAgaWYgKG1fc2Vla1R5cGUgPT0gU2tpcCkgewogICAg
ICAgICAvLyBTZWVraW5nIGJ5IHNraXBwaW5nIHJlcXVpcmVzIHRoZSB2aWRlbyB0byBiZSBwYXVz
ZWQgZHVyaW5nIHNlZWtpbmcuCi0gICAgICAgIG1fYWN0aW9uT25TdG9wID0gbWVkaWFFbGVtZW50
KCktPmlzUGxheWluZygpID8gUGxheSA6IE5vdGhpbmc7Ci0gICAgICAgIG1lZGlhRWxlbWVudCgp
LT5wYXVzZSgpOworICAgICAgICBtX2FjdGlvbk9uU3RvcCA9IG1lZGlhQ29udHJvbGxlcigpLT5w
YXVzZWQoKSA/IE5vdGhpbmcgOiBQbGF5OworICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+cGF1
c2UoKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBTZWVraW5nIGJ5IHNjYW5uaW5nIHJlcXVp
cmVzIHRoZSB2aWRlbyB0byBiZSBwbGF5aW5nIGR1cmluZyBzZWVraW5nLgotICAgICAgICBtX2Fj
dGlvbk9uU3RvcCA9IG1lZGlhRWxlbWVudCgpLT5wYXVzZWQoKSA/IFBhdXNlIDogTm90aGluZzsK
LSAgICAgICAgbWVkaWFFbGVtZW50KCktPnBsYXkoKTsKLSAgICAgICAgbWVkaWFFbGVtZW50KCkt
PnNldFBsYXliYWNrUmF0ZShuZXh0UmF0ZSgpKTsKKyAgICAgICAgbV9hY3Rpb25PblN0b3AgPSBt
ZWRpYUNvbnRyb2xsZXIoKS0+cGF1c2VkKCkgPyBQYXVzZSA6IE5vdGhpbmc7CisgICAgICAgIG1l
ZGlhQ29udHJvbGxlcigpLT5wbGF5KCk7CisgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRQ
bGF5YmFja1JhdGUobmV4dFJhdGUoKSk7CiAgICAgfQogCiAgICAgbV9zZWVrVGltZXIuc3RhcnQo
MCwgbV9zZWVrVHlwZSA9PSBTa2lwID8gY1NraXBSZXBlYXREZWxheSA6IGNTY2FuUmVwZWF0RGVs
YXkpOwpAQCAtNTk3LDEyICs2MDIsMTIgQEAgdm9pZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxl
bWVudDo6c3RhcnRUaW1lcigpCiB2b2lkIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50Ojpz
dG9wVGltZXIoKQogewogICAgIGlmIChtX3NlZWtUeXBlID09IFNjYW4pCi0gICAgICAgIG1lZGlh
RWxlbWVudCgpLT5zZXRQbGF5YmFja1JhdGUobWVkaWFFbGVtZW50KCktPmRlZmF1bHRQbGF5YmFj
a1JhdGUoKSk7CisgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRQbGF5YmFja1JhdGUobWVk
aWFDb250cm9sbGVyKCktPmRlZmF1bHRQbGF5YmFja1JhdGUoKSk7CiAKICAgICBpZiAobV9hY3Rp
b25PblN0b3AgPT0gUGxheSkKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPnBsYXkoKTsKKyAgICAg
ICAgbWVkaWFDb250cm9sbGVyKCktPnBsYXkoKTsKICAgICBlbHNlIGlmIChtX2FjdGlvbk9uU3Rv
cCA9PSBQYXVzZSkKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPnBhdXNlKCk7CisgICAgICAgIG1l
ZGlhQ29udHJvbGxlcigpLT5wYXVzZSgpOwogCiAgICAgaWYgKG1fc2Vla1RpbWVyLmlzQWN0aXZl
KCkpCiAgICAgICAgIG1fc2Vla1RpbWVyLnN0b3AoKTsKQEAgLTYxMCw3ICs2MTUsNyBAQCB2b2lk
IE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpzdG9wVGltZXIoKQogCiBmbG9hdCBNZWRp
YUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6bmV4dFJhdGUoKSBjb25zdAogewotICAgIGZsb2F0
IHJhdGUgPSBzdGQ6Om1pbihjU2Nhbk1heGltdW1SYXRlLCBmYWJzZihtZWRpYUVsZW1lbnQoKS0+
cGxheWJhY2tSYXRlKCkgKiAyKSk7CisgICAgZmxvYXQgcmF0ZSA9IHN0ZDo6bWluKGNTY2FuTWF4
aW11bVJhdGUsIGZhYnNmKG1lZGlhQ29udHJvbGxlcigpLT5wbGF5YmFja1JhdGUoKSAqIDIpKTsK
ICAgICBpZiAoIWlzRm9yd2FyZEJ1dHRvbigpKQogICAgICAgICByYXRlICo9IC0xOwogICAgIHJl
dHVybiByYXRlOwpAQCAtNjIxLDIxICs2MjYsMjEgQEAgdm9pZCBNZWRpYUNvbnRyb2xTZWVrQnV0
dG9uRWxlbWVudDo6c2Vla1RpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sU2Vla0J1dHRvbkUK
ICAgICBpZiAobV9zZWVrVHlwZSA9PSBTa2lwKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7
CiAgICAgICAgIGZsb2F0IHNraXBUaW1lID0gaXNGb3J3YXJkQnV0dG9uKCkgPyBjU2tpcFRpbWUg
OiAtY1NraXBUaW1lOwotICAgICAgICBtZWRpYUVsZW1lbnQoKS0+c2V0Q3VycmVudFRpbWUobWVk
aWFFbGVtZW50KCktPmN1cnJlbnRUaW1lKCkgKyBza2lwVGltZSwgZWMpOworICAgICAgICBtZWRp
YUNvbnRyb2xsZXIoKS0+c2V0Q3VycmVudFRpbWUobWVkaWFDb250cm9sbGVyKCktPmN1cnJlbnRU
aW1lKCkgKyBza2lwVGltZSwgZWMpOwogICAgIH0gZWxzZQotICAgICAgICBtZWRpYUVsZW1lbnQo
KS0+c2V0UGxheWJhY2tSYXRlKG5leHRSYXRlKCkpOworICAgICAgICBtZWRpYUNvbnRyb2xsZXIo
KS0+c2V0UGxheWJhY2tSYXRlKG5leHRSYXRlKCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1l
bnQ6Ok1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50
KiBtZWRpYUVsZW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudChtZWRp
YUVsZW1lbnQsIE1lZGlhU2Vla0ZvcndhcmRCdXR0b24pCitpbmxpbmUgTWVkaWFDb250cm9sU2Vl
a0ZvcndhcmRCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1l
bnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1l
bnQoZG9jdW1lbnQsIE1lZGlhU2Vla0ZvcndhcmRCdXR0b24pCiB7CiB9CiAKLVBhc3NSZWZQdHI8
TWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xTZWVrRm9y
d2FyZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQp
CitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudD4gTWVkaWFD
b250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50
KQogewotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ+IGJ1
dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQo
bWVkaWFFbGVtZW50KSk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9u
RWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0
dG9uRWxlbWVudChkb2N1bWVudCkpOwogICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7CiAg
ICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7CiB9CkBAIC02NDgsMTQgKzY1MywxNCBAQCBjb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudDo6c2hh
ZG93UHNldWRvSWQoKSBjb25zdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LWlubGluZSBNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFNl
ZWtCYWNrQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi0gICAg
OiBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQsIE1lZGlhU2Vla0Jh
Y2tCdXR0b24pCitpbmxpbmUgTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50OjpNZWRp
YUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDog
TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhU2Vla0JhY2tCdXR0
b24pCiB7CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50
PiBNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVt
ZW50KiBtZWRpYUVsZW1lbnQpCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9u
RWxlbWVudD4gTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50KQogewotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVs
ZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVs
ZW1lbnQobWVkaWFFbGVtZW50KSk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0
dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0
dG9uRWxlbWVudChkb2N1bWVudCkpOwogICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7CiAg
ICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7CiB9CkBAIC02NjgsMTQgKzY3MywxNCBAQCBjb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudDo6c2hhZG93
UHNldWRvSWQoKSBjb25zdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlu
bGluZSBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xSZXdpbmRC
dXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpCi0gICAgOiBNZWRpYUNvbnRy
b2xJbnB1dEVsZW1lbnQoZWxlbWVudCwgTWVkaWFSZXdpbmRCdXR0b24pCitpbmxpbmUgTWVkaWFD
b250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVu
dChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9j
dW1lbnQsIE1lZGlhUmV3aW5kQnV0dG9uKQogewogfQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJv
bFJld2luZEJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6OmNy
ZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCitQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6
OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFJl
d2luZEJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xSZXdp
bmRCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCkpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xS
ZXdpbmRCdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sUmV3
aW5kQnV0dG9uRWxlbWVudChkb2N1bWVudCkpOwogICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0dG9u
Iik7CiAgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7CiB9CkBAIC02ODMsNyArNjg4LDggQEAg
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xS
ZXdpbmRCdXR0b25FbGVtZW50OjpjcmUKIHZvaWQgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAgICAgbWVkaWFFbGVt
ZW50KCktPnJld2luZCgzMCk7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgY29kZSA9IDA7CisgICAg
ICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRDdXJyZW50VGltZShtYXgoMC4wZiwgbWVkaWFDb250
cm9sbGVyKCktPmN1cnJlbnRUaW1lKCkgLSAzMCksIGNvZGUpOwogICAgICAgICBldmVudC0+c2V0
RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9ICAgIAogICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoZXZlbnQpOwpAQCAtNjk3LDE0ICs3MDMsMTQgQEAgY29uc3QgQXRvbWlj
U3RyaW5nJiBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlh
Q29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xSZXR1cm5U
b1JlYWx0aW1lQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi0g
ICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQobWVkaWFFbGVtZW50LCBNZWRpYVJldHVyblRv
UmVhbHRpbWVCdXR0b24pCitpbmxpbmUgTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRv
bkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50KERvY3Vt
ZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVudCwg
TWVkaWFSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uKQogewogfQogCi1QYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xSZXR1cm5Ub1Jl
YWx0aW1lQnV0dG9uRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVu
dCkKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ+
IE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQqIGRvY3VtZW50KQogewotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1l
QnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFJldHVyblRv
UmVhbHRpbWVCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCkpOworICAgIFJlZlB0cjxNZWRpYUNv
bnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3
IE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50KGRvY3VtZW50KSk7CiAg
ICAgYnV0dG9uLT5zZXRUeXBlKCJidXR0b24iKTsKICAgICBidXR0b24tPmhpZGUoKTsKICAgICBy
ZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKQEAgLTcxMyw3ICs3MTksNyBAQCBQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xSZXR1
cm5Ub1JlYWx0aQogdm9pZCBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAgICAgbWVkaWFFbGVtZW50
KCktPnJldHVyblRvUmVhbHRpbWUoKTsKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnJldHVy
blRvUmVhbHRpbWUoKTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAg
fQogICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwpAQCAt
NzI3LDE0ICs3MzMsMTQgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xSZXR1cm5U
b1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKQogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0
aW9uc0J1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9u
RWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi0gICAgOiBNZWRpYUNvbnRy
b2xJbnB1dEVsZW1lbnQobWVkaWFFbGVtZW50LCBNZWRpYVNob3dDbG9zZWRDYXB0aW9uc0J1dHRv
bikKK2lubGluZSBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6
Ok1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudChEb2N1bWVudCog
ZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1lZGlh
U2hvd0Nsb3NlZENhcHRpb25zQnV0dG9uKQogewogfQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJv
bFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sVG9nZ2xlQ2xv
c2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFF
bGVtZW50KQorUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRv
bkVsZW1lbnQ+IE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6
Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sVG9n
Z2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVk
aWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCkp
OworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1l
bnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9u
c0J1dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsKICAgICBidXR0b24tPnNldFR5cGUoImJ1dHRvbiIp
OwogICAgIGJ1dHRvbi0+aGlkZSgpOwogICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOwpAQCAt
NzQzLDggKzc0OSw4IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlv
bnNCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zCiB2b2lkIE1lZGlhQ29udHJv
bFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNs
aWNrRXZlbnQpIHsKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPnNldENsb3NlZENhcHRpb25zVmlz
aWJsZSghbWVkaWFFbGVtZW50KCktPmNsb3NlZENhcHRpb25zVmlzaWJsZSgpKTsKLSAgICAgICAg
c2V0Q2hlY2tlZChtZWRpYUVsZW1lbnQoKS0+Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkpOworICAg
ICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCFtZWRpYUNv
bnRyb2xsZXIoKS0+Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkpOworICAgICAgICBzZXRDaGVja2Vk
KG1lZGlhQ29udHJvbGxlcigpLT5jbG9zZWRDYXB0aW9uc1Zpc2libGUoKSk7CiAgICAgICAgIHVw
ZGF0ZURpc3BsYXlUeXBlKCk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwog
ICAgIH0KQEAgLTc1NCw3ICs3NjAsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENh
cHRpb25zQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZQogCiB2b2lk
IE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6dXBkYXRlRGlz
cGxheVR5cGUoKQogewotICAgIHNldERpc3BsYXlUeXBlKG1lZGlhRWxlbWVudCgpLT5jbG9zZWRD
YXB0aW9uc1Zpc2libGUoKSA/IE1lZGlhSGlkZUNsb3NlZENhcHRpb25zQnV0dG9uIDogTWVkaWFT
aG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24pOworICAgIHNldERpc3BsYXlUeXBlKG1lZGlhQ29udHJv
bGxlcigpLT5jbG9zZWRDYXB0aW9uc1Zpc2libGUoKSA/IE1lZGlhSGlkZUNsb3NlZENhcHRpb25z
QnV0dG9uIDogTWVkaWFTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24pOwogfQogCiBjb25zdCBBdG9t
aWNTdHJpbmcmIE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6
c2hhZG93UHNldWRvSWQoKSBjb25zdApAQCAtNzY1LDE3ICs3NzEsMTcgQEAgY29uc3QgQXRvbWlj
U3RyaW5nJiBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OnNo
YWRvd1BzZXVkb0kKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NZWRpYUNv
bnRyb2xUaW1lbGluZUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudChIVE1MTWVk
aWFFbGVtZW50KiBtZWRpYUVsZW1lbnQsIE1lZGlhQ29udHJvbHMqIGNvbnRyb2xzKQotICAgIDog
TWVkaWFDb250cm9sSW5wdXRFbGVtZW50KG1lZGlhRWxlbWVudCwgTWVkaWFTbGlkZXIpCitNZWRp
YUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudChEb2N1
bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbHMqIGNvbnRyb2xzKQorICAgIDogTWVkaWFDb250
cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50LCBNZWRpYVNsaWRlcikKICAgICAsIG1fY29udHJvbHMo
Y29udHJvbHMpCiB7CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50
PiBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBt
ZWRpYUVsZW1lbnQsIE1lZGlhQ29udHJvbHMqIGNvbnRyb2xzKQorUGFzc1JlZlB0cjxNZWRpYUNv
bnRyb2xUaW1lbGluZUVsZW1lbnQ+IE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCiB7CiAgICAgQVNT
RVJUKGNvbnRyb2xzKTsKIAotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+
IHRpbWVsaW5lID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudChtZWRp
YUVsZW1lbnQsIGNvbnRyb2xzKSk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lRWxl
bWVudD4gdGltZWxpbmUgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50
KGRvY3VtZW50LCBjb250cm9scykpOwogICAgIHRpbWVsaW5lLT5zZXRUeXBlKCJyYW5nZSIpOwog
ICAgIHRpbWVsaW5lLT5zZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0ciwgImZsb2F0Iik7CiAgICAg
cmV0dXJuIHRpbWVsaW5lLnJlbGVhc2UoKTsKQEAgLTc5MSwxMCArNzk3LDEwIEBAIHZvaWQgTWVk
aWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLm1vdXNlZG93bkV2ZW50KQotICAgICAgICBtZWRpYUVsZW1lbnQoKS0+YmVnaW5TY3J1YmJp
bmcoKTsKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPmJlZ2luU2NydWJiaW5nKCk7CiAKICAg
ICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KQotICAgICAg
ICBtZWRpYUVsZW1lbnQoKS0+ZW5kU2NydWJiaW5nKCk7CisgICAgICAgIG1lZGlhQ29udHJvbGxl
cigpLT5lbmRTY3J1YmJpbmcoKTsKIAogICAgIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiAKQEAgLTgwMiwxMCArODA4LDEwIEBAIHZvaWQgTWVk
aWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZmxvYXQgdGltZSA9IG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQodmFsdWUoKS50b0RvdWJsZSgpKTsKLSAgICBpZiAodGltZSAhPSBtZWRpYUVsZW1lbnQo
KS0+Y3VycmVudFRpbWUoKSkgeworICAgIGlmICh0aW1lICE9IG1lZGlhQ29udHJvbGxlcigpLT5j
dXJyZW50VGltZSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGZpcmVkIDMgdGltZXMg
b24gZXZlcnkgY2xpY2suIFdlIHNob3VsZCBub3QgYmUgZG9pbmcgdGhhdCA8aHR0cDovd2Via2l0
Lm9yZy9iLzU4MTYwPi4KICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgbWVkaWFF
bGVtZW50KCktPnNldEN1cnJlbnRUaW1lKHRpbWUsIGVjKTsKKyAgICAgICAgbWVkaWFDb250cm9s
bGVyKCktPnNldEN1cnJlbnRUaW1lKHRpbWUsIGVjKTsKICAgICB9CiAKICAgICBSZW5kZXJTbGlk
ZXIqIHNsaWRlciA9IHRvUmVuZGVyU2xpZGVyKHJlbmRlcmVyKCkpOwpAQCAtODMyLDE4ICs4Mzgs
MTcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OnNo
YWRvd1BzZXVkb0lkKCkgY29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1pbmxpbmUgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6TWVkaWFDb250cm9sVm9s
dW1lU2xpZGVyRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi0gICAgOiBN
ZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQobWVkaWFFbGVtZW50LCBNZWRpYVZvbHVtZVNsaWRlcikK
K2lubGluZSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1
bWVTbGlkZXJFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbElu
cHV0RWxlbWVudChkb2N1bWVudCwgTWVkaWFWb2x1bWVTbGlkZXIpCiB7CiB9CiAKLVBhc3NSZWZQ
dHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudD4gTWVkaWFDb250cm9sVm9sdW1lU2xp
ZGVyRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK1Bhc3NS
ZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudD4gTWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBSZWZQdHI8
TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudD4gc2xpZGVyID0gYWRvcHRSZWYobmV3IE1l
ZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQobWVkaWFFbGVtZW50KSk7CisgICAgUmVmUHRy
PE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IGFkb3B0UmVmKG5ldyBN
ZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50KGRvY3VtZW50KSk7CiAgICAgc2xpZGVyLT5z
ZXRUeXBlKCJyYW5nZSIpOwogICAgIHNsaWRlci0+c2V0QXR0cmlidXRlKHByZWNpc2lvbkF0dHIs
ICJmbG9hdCIpOwogICAgIHNsaWRlci0+c2V0QXR0cmlidXRlKG1heEF0dHIsICIxIik7Ci0gICAg
c2xpZGVyLT5zZXRBdHRyaWJ1dGUodmFsdWVBdHRyLCBTdHJpbmc6Om51bWJlcihtZWRpYUVsZW1l
bnQtPnZvbHVtZSgpKSk7CiAgICAgcmV0dXJuIHNsaWRlci5yZWxlYXNlKCk7CiB9CiAKQEAgLTg2
Miw5ICs4NjcsOSBAQCB2b2lkIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBmbG9h
dCB2b2x1bWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHZhbHVlKCkudG9Eb3VibGUoKSk7Ci0g
ICAgaWYgKHZvbHVtZSAhPSBtZWRpYUVsZW1lbnQoKS0+dm9sdW1lKCkpIHsKKyAgICBpZiAodm9s
dW1lICE9IG1lZGlhQ29udHJvbGxlcigpLT52b2x1bWUoKSkgewogICAgICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPnNldFZvbHVtZSh2b2x1bWUsIGVj
KTsKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldFZvbHVtZSh2b2x1bWUsIGVjKTsKICAg
ICAgICAgQVNTRVJUKCFlYyk7CiAgICAgfQogfQpAQCAtODgzLDE4ICs4ODgsMTcgQEAgY29uc3Qg
QXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpzaGFkb3dQc2V1
ZG9JZCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5l
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1l
bnQpCi0gICAgOiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50KG1lZGlhRWxlbWVudCkK
K2lubGluZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudDo6TWVkaWFD
b250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQor
ICAgIDogTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudChkb2N1bWVudCkKIHsKIH0KIAot
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudD4gTWVk
aWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFF
bGVtZW50KiBtZWRpYUVsZW1lbnQpCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5W
b2x1bWVTbGlkZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBSZWZQdHI8TWVkaWFDb250
cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IGFkb3B0UmVmKG5ldyBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudChtZWRpYUVsZW1lbnQpKTsK
KyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ+IHNs
aWRlciA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxl
bWVudChkb2N1bWVudCkpOwogICAgIHNsaWRlci0+c2V0VHlwZSgicmFuZ2UiKTsKICAgICBzbGlk
ZXItPnNldEF0dHJpYnV0ZShwcmVjaXNpb25BdHRyLCAiZmxvYXQiKTsKICAgICBzbGlkZXItPnNl
dEF0dHJpYnV0ZShtYXhBdHRyLCAiMSIpOwotICAgIHNsaWRlci0+c2V0QXR0cmlidXRlKHZhbHVl
QXR0ciwgU3RyaW5nOjpudW1iZXIobWVkaWFFbGVtZW50LT52b2x1bWUoKSkpOwogICAgIHJldHVy
biBzbGlkZXIucmVsZWFzZSgpOwogfQogCkBAIC05MDYsMTcgKzkxMCwxNyBAQCBjb25zdCBBdG9t
aWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCgpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5l
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQsIE1lZGlhQ29u
dHJvbHMqIGNvbnRyb2xzKQotICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KG1lZGlhRWxl
bWVudCwgTWVkaWFGdWxsc2NyZWVuQnV0dG9uKQoraW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5CdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudChEb2N1
bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbHMqIGNvbnRyb2xzKQorICAgIDogTWVkaWFDb250
cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50LCBNZWRpYUZ1bGxzY3JlZW5CdXR0b24pCiAgICAgLCBt
X2NvbnRyb2xzKGNvbnRyb2xzKQogewogfQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5CdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6
Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCwgTWVkaWFDb250cm9scyogY29u
dHJvbHMpCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCiB7CiAgICAgQVNTRVJUKGNvbnRyb2xzKTsK
IAotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4gYnV0dG9u
ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KG1lZGlh
RWxlbWVudCwgY29udHJvbHMpKTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1
dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
QnV0dG9uRWxlbWVudChkb2N1bWVudCwgY29udHJvbHMpKTsKICAgICBidXR0b24tPnNldFR5cGUo
ImJ1dHRvbiIpOwogICAgIGJ1dHRvbi0+aGlkZSgpOwogICAgIHJldHVybiBidXR0b24ucmVsZWFz
ZSgpOwpAQCAtOTMyLDEzICs5MzYsMTMgQEAgdm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0
dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgIC8v
IHZpZGVvIGltcGxlbWVudGF0aW9uIHdpdGhvdXQgcmVxdWlyaW5nIHRoZW0gdG8gaW1wbGVtZW50
IHRoZWlyIG93biBmdWxsIAogICAgICAgICAvLyBzY3JlZW4gYmVoYXZpb3IuCiAgICAgICAgIGlm
IChkb2N1bWVudCgpLT5zZXR0aW5ncygpICYmIGRvY3VtZW50KCktPnNldHRpbmdzKCktPmZ1bGxT
Y3JlZW5FbmFibGVkKCkpIHsKLSAgICAgICAgICAgIGlmIChkb2N1bWVudCgpLT53ZWJraXRJc0Z1
bGxTY3JlZW4oKSAmJiBkb2N1bWVudCgpLT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQo
KSA9PSBtZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgICAgIGlmIChkb2N1bWVudCgpLT53ZWJraXRJ
c0Z1bGxTY3JlZW4oKSAmJiBkb2N1bWVudCgpLT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1l
bnQoKSA9PSB0b1BhcmVudE1lZGlhRWxlbWVudCh0aGlzKSkKICAgICAgICAgICAgICAgICBkb2N1
bWVudCgpLT53ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgZG9jdW1lbnQoKS0+cmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1lZGlh
RWxlbWVudCgpLCAwLCBEb2N1bWVudDo6RXhlbXB0SUZyYW1lQWxsb3dGdWxTY3JlZW5SZXF1aXJl
bWVudCk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+cmVxdWVzdEZ1bGxTY3JlZW5Gb3JF
bGVtZW50KHRvUGFyZW50TWVkaWFFbGVtZW50KHRoaXMpLCAwLCBEb2N1bWVudDo6RXhlbXB0SUZy
YW1lQWxsb3dGdWxTY3JlZW5SZXF1aXJlbWVudCk7CiAgICAgICAgIH0gZWxzZQogI2VuZGlmCi0g
ICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7CisgICAgICAgICAg
ICBtZWRpYUNvbnRyb2xsZXIoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgICAgIGV2ZW50LT5z
ZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KICAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKGV2ZW50KTsKQEAgLTk1MiwxNCArOTU2LDE0IEBAIGNvbnN0IEF0b21pY1N0
cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lk
KCkgY29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVk
aWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxl
bWVudCkKLSAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChtZWRpYUVsZW1lbnQsIE1lZGlh
VW5NdXRlQnV0dG9uKQoraW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0
b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudChE
b2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1l
bnQsIE1lZGlhVW5NdXRlQnV0dG9uKQogewogfQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9s
dW1lTWluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVu
dCkKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1l
bnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
Vm9sdW1lTWluQnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCkpOworICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudD4gYnV0dG9u
ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVt
ZW50KGRvY3VtZW50KSk7CiAgICAgYnV0dG9uLT5zZXRUeXBlKCJidXR0b24iKTsKICAgICByZXR1
cm4gYnV0dG9uLnJlbGVhc2UoKTsKIH0KQEAgLTk2OCw3ICs5NzIsNyBAQCB2b2lkIE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50KiBldgogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlj
a0V2ZW50KSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgY29kZSA9IDA7Ci0gICAgICAgIG1lZGlh
RWxlbWVudCgpLT5zZXRWb2x1bWUoMCwgY29kZSk7CisgICAgICAgIG1lZGlhQ29udHJvbGxlcigp
LT5zZXRWb2x1bWUoMCwgY29kZSk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgp
OwogICAgIH0KICAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50
KTsKQEAgLTk4MiwxNCArOTg2LDE0IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9s
RnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkCiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4
QnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi06IE1lZGlhQ29u
dHJvbElucHV0RWxlbWVudChtZWRpYUVsZW1lbnQsIE1lZGlhTXV0ZUJ1dHRvbikKK2lubGluZSBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9s
RnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorOiBN
ZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhTXV0ZUJ1dHRvbikKIHsKIH0K
IAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVu
dD4gTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShI
VE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9s
dW1lTWF4QnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBS
ZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ+IGJ1dHRv
biA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxl
bWVudChtZWRpYUVsZW1lbnQpKTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZv
bHVtZU1heEJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudChkb2N1bWVudCkpOwogICAgIGJ1dHRvbi0+
c2V0VHlwZSgiYnV0dG9uIik7CiAgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7CiB9CkBAIC05
OTgsNyArMTAwMiw3IEBAIHZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRv
bkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2CiB7CiAgICAgaWYgKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAgICAgICAgRXhjZXB0aW9u
Q29kZSBjb2RlID0gMDsKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPnNldFZvbHVtZSgxLCBjb2Rl
KTsKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldFZvbHVtZSgxLCBjb2RlKTsKICAgICAg
ICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQogICAgIEhUTUxJbnB1dEVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwpAQCAtMTA0MCw4ICsxMDQ0LDggQEAgdm9p
ZCBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lRGlzcGxheTo6bGF5b3V0KCkKICAgICAgICAgc2V0V2lk
dGgoMCk7CiB9CiAKLWlubGluZSBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQ6Ok1lZGlh
Q29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQp
Ci0gICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KG1lZGlhRWxlbWVudCkKK2lubGluZSBNZWRpYUNv
bnRyb2xUaW1lRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChE
b2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KGRvY3VtZW50KQog
ICAgICwgbV9jdXJyZW50VmFsdWUoMCkKIHsKIH0KQEAgLTEwNTgsMTMgKzEwNjIsMTMgQEAgUmVu
ZGVyT2JqZWN0KiBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiBhcmVuYSwKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudD4gTWVk
aWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxl
bWVudCogbWVkaWFFbGVtZW50KQorUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5n
RGlzcGxheUVsZW1lbnQ+IE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6
Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1l
ZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudChtZWRpYUVsZW1lbnQpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxl
bWVudChkb2N1bWVudCkpOwogfQogCi1NZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVs
ZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudChIVE1MTWVkaWFF
bGVtZW50KiBtZWRpYUVsZW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1l
bnQobWVkaWFFbGVtZW50KQorTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50
OjpNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50KQorICAgIDogTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50KGRvY3VtZW50KQogewog
fQogCkBAIC0xMDgxLDEzICsxMDg1LDEzIEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250
cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvCiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xD
dXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlF
bGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQorUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xDdXJy
ZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVu
dChtZWRpYUVsZW1lbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEN1
cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotTWVkaWFDb250cm9sQ3Vy
cmVudFRpbWVEaXNwbGF5RWxlbWVudDo6TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxl
bWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xU
aW1lRGlzcGxheUVsZW1lbnQobWVkaWFFbGVtZW50KQorTWVkaWFDb250cm9sQ3VycmVudFRpbWVE
aXNwbGF5RWxlbWVudDo6TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudChEb2N1
bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQoZG9j
dW1lbnQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbEVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5oCmluZGV4IGFkODQ0NDAyNTQ1ODgwOGJkNWNlZTQ3ZjUwZWIyNDQxM2E3
NzU1MWMuLjU4YzcwZjUwMGFjZTdiZGJkMmFhNjMxN2Q0ZTM0ODY1NmE0MmZkZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaApAQCAt
MzMsNyArMzMsNyBAQAogCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MSW5wdXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1
ZGUgIk1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgi
CiAKIC8vIFRoZXNlIGFyZSB0aGUgc2hhZG93IGVsZW1lbnRzIHVzZWQgaW4gUmVuZGVyTWVkaWEK
QEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFdmVudDsKIGNs
YXNzIEZyYW1lOworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIE1lZGlhQ29udHJvbHM7
CiAKIC8vIE11c3QgbWF0Y2ggV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgKQEAgLTgyLDIyICs4Mywy
MyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3Bs
YXlUeXBlKCkgY29uc3QgPSAwOwogCi0gICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7IH0KKyAgICB2b2lkIHNldE1lZGlhQ29u
dHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIGNvbnRyb2xsZXIpIHsgbV9tZWRpYUNv
bnRyb2xsZXIgPSBjb250cm9sbGVyOyB9CisgICAgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBt
ZWRpYUNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ29udHJvbGxlcjsgfQogCiBw
cm90ZWN0ZWQ6Ci0gICAgTWVkaWFDb250cm9sRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7Cisg
ICAgTWVkaWFDb250cm9sRWxlbWVudChEb2N1bWVudCopOwogCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgYm9vbCBpc01lZGlhQ29udHJvbEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudDsgICAKKyAgICBNZWRpYUNvbnRy
b2xsZXJJbnRlcmZhY2UqIG1fbWVkaWFDb250cm9sbGVyOyAgIAogfTsKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCiBjbGFzcyBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQgOiBw
dWJsaWMgTWVkaWFDb250cm9sRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFDb250cm9sUGFuZWxFbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudD4gY3JlYXRlKERv
Y3VtZW50Kik7CiAKICAgICB2b2lkIHNldENhbkJlRHJhZ2dlZChib29sKTsKICAgICB2b2lkIHJl
c2V0UG9zaXRpb24oKTsKQEAgLTEwNSw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYWtl
VHJhbnNwYXJlbnQoKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQo
SFRNTE1lZGlhRWxlbWVudCopOworICAgIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudChEb2N1bWVu
dCopOwogICAgIHZpcnR1YWwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUoKSBj
b25zdDsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBj
b25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwpAQCAt
MTI3LDEwICsxMjksMTAgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFDb250cm9sVGltZWxpbmVD
b250YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbEVsZW1lbnQgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVu
dD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiBw
cml2YXRlOgotICAgIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudChIVE1MTWVk
aWFFbGVtZW50Kik7CisgICAgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KERv
Y3VtZW50Kik7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lk
KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlU
eXBlKCkgY29uc3Q7CkBAIC0xNDAsMTAgKzE0MiwxMCBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRp
YUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJv
bEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFZv
bHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxl
bWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sVm9s
dW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgTWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCopOwogICAgIHZpcnR1
YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxl
Kik7CiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICB2
aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Q7CkBAIC0x
NTQsMTIgKzE1NiwxMiBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRyb2xTdGF0dXNEaXNw
bGF5RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudD4gY3JlYXRl
KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xT
dGF0dXNEaXNwbGF5RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKICAgICB2b2lkIHVwZGF0
ZSgpOwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50KEhU
TUxNZWRpYUVsZW1lbnQqKTsKKyAgICBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudChE
b2N1bWVudCopOwogCiAgICAgdmlydHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5
VHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1
ZG9JZCgpIGNvbnN0OwpAQCAtMTc3LDEwICsxNzksMTEgQEAgcHVibGljOgogCiAgICAgTWVkaWFD
b250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlU
eXBlOyB9CiAKLSAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBtX21lZGlhRWxlbWVudDsgfQorICAgIHZvaWQgc2V0TWVkaWFDb250cm9sbGVyKE1lZGlh
Q29udHJvbGxlckludGVyZmFjZSogY29udHJvbGxlcikgeyBtX21lZGlhQ29udHJvbGxlciA9IGNv
bnRyb2xsZXI7IH0KKyAgICBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIG1lZGlhQ29udHJvbGxl
cigpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFDb250cm9sbGVyOyB9CiAKIHByb3RlY3RlZDoKLSAg
ICBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJv
bEVsZW1lbnRUeXBlKTsKKyAgICBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoRG9jdW1lbnQqLCBN
ZWRpYUNvbnRyb2xFbGVtZW50VHlwZSk7CiAKICAgICB2b2lkIHNldERpc3BsYXlUeXBlKE1lZGlh
Q29udHJvbEVsZW1lbnRUeXBlKTsKIApAQCAtMTg5LDcgKzE5Miw3IEBAIHByaXZhdGU6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVR5cGUoKSB7IH0KIAotICAgIEhUTUxNZWRpYUVs
ZW1lbnQqIG1fbWVkaWFFbGVtZW50OworICAgIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSogbV9t
ZWRpYUNvbnRyb2xsZXI7CiAgICAgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgbV9kaXNwbGF5VHlw
ZTsKIH07CiAKQEAgLTIwMCw3ICsyMDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGFuZ2VkTXV0
ZSgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQoSFRN
TE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsKKyAgICBNZWRpYUNvbnRy
b2xNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogCiAKQEAgLTIx
MiwxMCArMjE1LDEwIEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1
dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVs
ZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiwgTWVkaWFDb250cm9scyopOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ+IGNyZWF0
ZShEb2N1bWVudCosIE1lZGlhQ29udHJvbHMqKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRy
b2xQYW5lbE11dGVCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqLCBNZWRpYUNvbnRyb2xz
Kik7CisgICAgTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCosIE1l
ZGlhQ29udHJvbHMqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50Kik7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkg
Y29uc3Q7CkBAIC0yMjcsMTAgKzIzMCwxMCBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRy
b2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xNdXRl
QnV0dG9uRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250
cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50
Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1
dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29u
dHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAg
ICBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCopOwog
CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7
CiB9OwpAQCAtMjQwLDEzICsyNDMsMTMgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFDb250cm9s
UGxheUJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVu
dD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVEaXNwbGF5VHlwZSgpOwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFBsYXlCdXR0
b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBNZWRpYUNvbnRyb2xQbGF5QnV0dG9u
RWxlbWVudChEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNo
YWRvd1BzZXVkb0lkKCkgY29uc3Q7CiB9OwpAQCAtMjU4LDcgKzI2MSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogCiBwcm90ZWN0ZWQ6
Ci0gICAgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCosIE1l
ZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsKKyAgICBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVu
dChEb2N1bWVudCosIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsKIAogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGJvb2wgaXNGb3J3YXJkQnV0dG9uKCkgY29uc3QgPSAwOwpAQCAtMjgwLDEwICsyODMs
MTAgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVt
ZW50IDogcHVibGljIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ+
IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFD
b250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAogcHJp
dmF0ZToKLSAgICBNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlh
RWxlbWVudCopOworICAgIE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudChEb2N1
bWVudCopOwogCiAgICAgdmlydHVhbCBib29sIGlzRm9yd2FyZEJ1dHRvbigpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRv
SWQoKSBjb25zdDsKQEAgLTI5MywxMCArMjk2LDEwIEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlh
Q29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xTZWVrQnV0
dG9uRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9s
U2Vla0JhY2tCdXR0b25FbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudD4gY3JlYXRl
KERvY3VtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25F
bGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRv
bkVsZW1lbnQoRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0ZvcndhcmRCdXR0b24o
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwpAQCAtMzA2LDEyICszMDksMTIgQEAgcHJpdmF0ZToK
IAogY2xhc3MgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNv
bnRyb2xJbnB1dEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudD4gY3Jl
YXRlKERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCopOwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQo
SFRNTE1lZGlhRWxlbWVudCopOworICAgIE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQo
RG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1
ZG9JZCgpIGNvbnN0OwogfTsKQEAgLTMyMCwxMiArMzIzLDEyIEBAIHByaXZhdGU6CiAKIGNsYXNz
IE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlh
Q29udHJvbElucHV0RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFF
bGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUmV0dXJuVG9SZWFs
dGltZUJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lk
IGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRy
b2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAg
TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKIAog
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Owog
fTsgICAgCkBAIC0zMzQsMTMgKzMzNywxMyBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRy
b2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9s
SW5wdXRFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVt
ZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2Fw
dGlvbnNCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURp
c3BsYXlUeXBlKCk7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2Fw
dGlvbnNCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBNZWRpYUNvbnRyb2xU
b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogfTsgICAgCkBA
IC0zNDksMTQgKzM1MiwxNCBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRyb2xUaW1lbGlu
ZUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IGNyZWF0ZShI
VE1MTWVkaWFFbGVtZW50KiwgTWVkaWFDb250cm9scyopOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudD4gY3JlYXRlKERvY3VtZW50KiwgTWVkaWFDb250
cm9scyopOwogCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsK
ICAgICB2b2lkIHNldFBvc2l0aW9uKGZsb2F0KTsKICAgICB2b2lkIHNldER1cmF0aW9uKGZsb2F0
KTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQoSFRNTE1lZGlh
RWxlbWVudCosIE1lZGlhQ29udHJvbHMqKTsKKyAgICBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1l
bnQoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKIApAQCAtMzY3LDEzICszNzAsMTMgQEAg
cHJpdmF0ZToKIAogY2xhc3MgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudCA6IHB1Ymxp
YyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVt
ZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxl
bWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCopOwogICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKIAogcHJvdGVjdGVk
OgotICAgIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCop
OworICAgIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQoRG9jdW1lbnQqKTsKIAogcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBj
b25zdDsKQEAgLTM4MywxMiArMzg2LDEyIEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVu
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVl
bkJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiwgTWVkaWFDb250cm9scyop
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVt
ZW50PiBjcmVhdGUoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqLCBNZWRpYUNvbnRy
b2xzKik7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQq
LCBNZWRpYUNvbnRyb2xzKik7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hh
ZG93UHNldWRvSWQoKSBjb25zdDsKIApAQCAtMzk5LDEwICs0MDIsMTAgQEAgcHJpdmF0ZToKIAog
Y2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQgOiBwdWJsaWMg
TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ+IGNyZWF0
ZShIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9s
RnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogICAgIAog
cHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudChI
VE1MTWVkaWFFbGVtZW50Kik7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRl
ckVsZW1lbnQoRG9jdW1lbnQqKTsKICAgICAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKIH07CkBAIC00MTEsMTIgKzQxNCwxMiBAQCBwcml2
YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVu
dCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50
PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQq
KTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwog
ICAgIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9u
RWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZv
bHVtZU1pbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKICAgICAKICAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKIH07CkBAIC00MjUsMTIgKzQy
OCwxMiBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4
QnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhC
dXR0b25FbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50PiBjcmVh
dGUoRG9jdW1lbnQqKTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCopOwogICAgIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9s
dW1lTWF4QnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgTWVkaWFDb250cm9s
RnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKICAgICAKICAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKIH07CkBA
IC00NDMsNyArNDQ2LDcgQEAgcHVibGljOgogICAgIGZsb2F0IGN1cnJlbnRWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY3VycmVudFZhbHVlOyB9CiAKIHByb3RlY3RlZDoKLSAgICBNZWRpYUNvbnRy
b2xUaW1lRGlzcGxheUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIE1lZGlhQ29udHJv
bFRpbWVEaXNwbGF5RWxlbWVudChEb2N1bWVudCopOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7
CkBAIC00NTUsMTAgKzQ1OCwxMCBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRyb2xUaW1l
UmVtYWluaW5nRGlzcGxheUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sVGltZURpc3BsYXlF
bGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1l
UmVtYWluaW5nRGlzcGxheUVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50
PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xUaW1lUmVt
YWluaW5nRGlzcGxheUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIE1lZGlhQ29udHJv
bFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudChEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCBN
ZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwpAQCAtNDY4LDEwICs0
NzEsMTAgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5
RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVs
ZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7
CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudChI
VE1MTWVkaWFFbGVtZW50Kik7CisgICAgTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxl
bWVudChEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBk
aXNwbGF5VHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFk
b3dQc2V1ZG9JZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwCmluZGV4IDdhZWJkNTU3ZTg2YzExYTg5ZGRj
OWZhZDliOTZmNjk4MTg2OThjYzcuLjA3NWI0MzhmMmQ0ZTdkNjY4ZGJjMmJiYWIwYTM5MjliYTk5
MGE5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bFJvb3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xSb290RWxlbWVudC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJNZWRpYUNv
bnRyb2xSb290RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiSFRN
TE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIk1lZGlhQ29udHJvbEVsZW1lbnRzLmgiCiAjaW5j
bHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTQxLDkgKzQyLDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgZG91YmxlIHRpbWVXaXRob3V0TW91
c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzID0gMzsKIAotTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnQ6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxl
bWVudCkKLSAgICA6IE1lZGlhQ29udHJvbHMobWVkaWFFbGVtZW50KQotICAgICwgbV9tZWRpYUVs
ZW1lbnQobWVkaWFFbGVtZW50KQorTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6Ok1lZGlhQ29udHJv
bFJvb3RFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbHMoZG9j
dW1lbnQpCisgICAgLCBtX21lZGlhQ29udHJvbGxlcigwKQogICAgICwgbV9yZXdpbmRCdXR0b24o
MCkKICAgICAsIG1fcGxheUJ1dHRvbigwKQogICAgICwgbV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9u
KDApCkBAIC02OSw2MyArNzAsNjMgQEAgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKIHsKIH0KIAot
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzPiBNZWRpYUNvbnRyb2xzOjpjcmVhdGUoSFRNTE1lZGlh
RWxlbWVudCogbWVkaWFFbGVtZW50KQorUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzPiBNZWRpYUNv
bnRyb2xzOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBNZWRpYUNv
bnRyb2xSb290RWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVudCk7CisgICAgcmV0dXJuIE1lZGlh
Q29udHJvbFJvb3RFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogfQogCi1QYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50PiBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6Y3JlYXRlKEhU
TUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sUm9v
dEVsZW1lbnQ+IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogewotICAgIGlmICghbWVkaWFFbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkpCisgICAg
aWYgKCFkb2N1bWVudC0+cGFnZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xSb290RWxlbWVudD4gY29udHJvbHMgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250
cm9sUm9vdEVsZW1lbnQobWVkaWFFbGVtZW50KSk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFJv
b3RFbGVtZW50PiBjb250cm9scyA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xSb290RWxlbWVu
dChkb2N1bWVudCkpOwogCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudD4gcGFu
ZWwgPSBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQpOworICAg
IFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ+IHBhbmVsID0gTWVkaWFDb250cm9sUGFu
ZWxFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYzsKIAot
ICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50PiByZXdpbmRCdXR0b24g
PSBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsK
KyAgICBSZWZQdHI8TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudD4gcmV3aW5kQnV0dG9u
ID0gTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAg
ICBjb250cm9scy0+bV9yZXdpbmRCdXR0b24gPSByZXdpbmRCdXR0b24uZ2V0KCk7CiAgICAgcGFu
ZWwtPmFwcGVuZENoaWxkKHJld2luZEJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKICAgICBp
ZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFBsYXlC
dXR0b25FbGVtZW50PiBwbGF5QnV0dG9uID0gTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6
OmNyZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9u
RWxlbWVudD4gcGxheUJ1dHRvbiA9IE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOwogICAgIGNvbnRyb2xzLT5tX3BsYXlCdXR0b24gPSBwbGF5QnV0dG9uLmdl
dCgpOwogICAgIHBhbmVsLT5hcHBlbmRDaGlsZChwbGF5QnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRy
dWUpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8TWVkaWFD
b250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ+IHJldHVyblRvUmVhbHRpbWVCdXR0
b24gPSBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6Y3JlYXRlKG1l
ZGlhRWxlbWVudCk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0
b25FbGVtZW50PiByZXR1cm5Ub1JlYWx0aW1lQnV0dG9uID0gTWVkaWFDb250cm9sUmV0dXJuVG9S
ZWFsdGltZUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgY29udHJvbHMtPm1f
cmV0dXJuVG9SZWFsVGltZUJ1dHRvbiA9IHJldHVyblRvUmVhbHRpbWVCdXR0b24uZ2V0KCk7CiAg
ICAgcGFuZWwtPmFwcGVuZENoaWxkKHJldHVyblRvUmVhbHRpbWVCdXR0b24ucmVsZWFzZSgpLCBl
YywgdHJ1ZSk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChtZWRp
YUVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+dXNlc01lZGlhQ29udHJvbFN0
YXR1c0Rpc3BsYXkoKSkgewotICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sU3RhdHVzRGlzcGxh
eUVsZW1lbnQ+IHN0YXR1c0Rpc3BsYXkgPSBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVu
dDo6Y3JlYXRlKG1lZGlhRWxlbWVudCk7CisgICAgaWYgKGRvY3VtZW50LT5wYWdlKCktPnRoZW1l
KCktPnVzZXNNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5KCkpIHsKKyAgICAgICAgUmVmUHRyPE1l
ZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50PiBzdGF0dXNEaXNwbGF5ID0gTWVkaWFDb250
cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgICAgIGNvbnRy
b2xzLT5tX3N0YXR1c0Rpc3BsYXkgPSBzdGF0dXNEaXNwbGF5LmdldCgpOwogICAgICAgICBwYW5l
bC0+YXBwZW5kQ2hpbGQoc3RhdHVzRGlzcGxheS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKICAgICAg
ICAgaWYgKGVjKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVmUHRyPE1l
ZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudD4gdGltZWxpbmVDb250YWluZXIgPSBN
ZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQp
OworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IHRpbWVs
aW5lQ29udGFpbmVyID0gTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOwogCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxh
eUVsZW1lbnQ+IGN1cnJlbnRUaW1lRGlzcGxheSA9IE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlz
cGxheUVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIFJlZlB0cjxNZWRpYUNvbnRy
b2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBjdXJyZW50VGltZURpc3BsYXkgPSBNZWRpYUNv
bnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGNv
bnRyb2xzLT5tX2N1cnJlbnRUaW1lRGlzcGxheSA9IGN1cnJlbnRUaW1lRGlzcGxheS5nZXQoKTsK
ICAgICB0aW1lbGluZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoY3VycmVudFRpbWVEaXNwbGF5LnJl
bGVhc2UoKSwgZWMsIHRydWUpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50PiB0aW1lbGluZSA9IE1lZGlhQ29u
dHJvbFRpbWVsaW5lRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVudCwgY29udHJvbHMuZ2V0KCkp
OworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gTWVk
aWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGNvbnRyb2xzLmdldCgp
KTsKICAgICBjb250cm9scy0+bV90aW1lbGluZSA9IHRpbWVsaW5lLmdldCgpOwogICAgIHRpbWVs
aW5lQ29udGFpbmVyLT5hcHBlbmRDaGlsZCh0aW1lbGluZS5yZWxlYXNlKCksIGVjLCB0cnVlKTsK
ICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPE1lZGlhQ29udHJv
bFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudD4gdGltZVJlbWFpbmluZ0Rpc3BsYXkgPSBNZWRp
YUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQp
OworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ+IHRp
bWVSZW1haW5pbmdEaXNwbGF5ID0gTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGNvbnRyb2xzLT5tX3RpbWVSZW1haW5pbmdEaXNw
bGF5ID0gdGltZVJlbWFpbmluZ0Rpc3BsYXkuZ2V0KCk7CiAgICAgdGltZWxpbmVDb250YWluZXIt
PmFwcGVuZENoaWxkKHRpbWVSZW1haW5pbmdEaXNwbGF5LnJlbGVhc2UoKSwgZWMsIHRydWUpOwog
ICAgIGlmIChlYykKQEAgLTEzNywyMSArMTM4LDIxIEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9s
Um9vdEVsZW1lbnQ+IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxl
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gRklYTUU6IE9ubHkgY3JlYXRlIHdoZW4gbmVl
ZGVkIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU3MTYzPgotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xT
ZWVrQmFja0J1dHRvbkVsZW1lbnQ+IHNlZWtCYWNrQnV0dG9uID0gTWVkaWFDb250cm9sU2Vla0Jh
Y2tCdXR0b25FbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50PiBzZWVrQmFja0J1dHRvbiA9IE1lZGlhQ29udHJv
bFNlZWtCYWNrQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBjb250cm9scy0+
bV9zZWVrQmFja0J1dHRvbiA9IHNlZWtCYWNrQnV0dG9uLmdldCgpOwogICAgIHBhbmVsLT5hcHBl
bmRDaGlsZChzZWVrQmFja0J1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKICAgICBpZiAoZWMp
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gRklYTUU6IE9ubHkgY3JlYXRlIHdoZW4gbmVl
ZGVkIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU3MTYzPgotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xT
ZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ+IHNlZWtGb3J3YXJkQnV0dG9uID0gTWVkaWFDb250cm9s
U2Vla0ZvcndhcmRCdXR0b25FbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKKyAgICBSZWZQ
dHI8TWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50PiBzZWVrRm9yd2FyZEJ1dHRv
biA9IE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
KTsKICAgICBjb250cm9scy0+bV9zZWVrRm9yd2FyZEJ1dHRvbiA9IHNlZWtGb3J3YXJkQnV0dG9u
LmdldCgpOwogICAgIHBhbmVsLT5hcHBlbmRDaGlsZChzZWVrRm9yd2FyZEJ1dHRvbi5yZWxlYXNl
KCksIGVjLCB0cnVlKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYg
KG1lZGlhRWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpLT5zdXBwb3J0c0Nsb3Nl
ZENhcHRpb25pbmcoKSkgewotICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2Vk
Q2FwdGlvbnNCdXR0b25FbGVtZW50PiB0b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA9IE1lZGlh
Q29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxl
bWVudCk7CisgICAgaWYgKGRvY3VtZW50LT5wYWdlKCktPnRoZW1lKCktPnN1cHBvcnRzQ2xvc2Vk
Q2FwdGlvbmluZygpKSB7CisgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRD
YXB0aW9uc0J1dHRvbkVsZW1lbnQ+IHRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uID0gTWVkaWFD
b250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OwogICAgICAgICBjb250cm9scy0+bV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA9IHRvZ2ds
ZUNsb3NlZENhcHRpb25zQnV0dG9uLmdldCgpOwogICAgICAgICBwYW5lbC0+YXBwZW5kQ2hpbGQo
dG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CiAgICAgICAg
IGlmIChlYykKQEAgLTE1OSwyNiArMTYwLDI2IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUm9v
dEVsZW1lbnQ+IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlCiAg
ICAgfQogCiAgICAgLy8gRklYTUU6IE9ubHkgY3JlYXRlIHdoZW4gbmVlZGVkIDxodHRwOi8vd2Vi
a2l0Lm9yZy9iLzU3MTYzPgotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9u
RWxlbWVudD4gZnVsbFNjcmVlbkJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25F
bGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50LCBjb250cm9scy5nZXQoKSk7CisgICAgUmVmUHRy
PE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50PiBmdWxsU2NyZWVuQnV0dG9uID0g
TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwgY29u
dHJvbHMuZ2V0KCkpOwogICAgIGNvbnRyb2xzLT5tX2Z1bGxTY3JlZW5CdXR0b24gPSBmdWxsU2Ny
ZWVuQnV0dG9uLmdldCgpOwogICAgIHBhbmVsLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuQnV0dG9u
LnJlbGVhc2UoKSwgZWMsIHRydWUpOwogCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsTXV0
ZUJ1dHRvbkVsZW1lbnQ+IHBhbmVsTXV0ZUJ1dHRvbiA9IE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1
dHRvbkVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQsIGNvbnRyb2xzLmdldCgpKTsKKyAgICBS
ZWZQdHI8TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudD4gcGFuZWxNdXRlQnV0dG9u
ID0gTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBj
b250cm9scy5nZXQoKSk7CiAgICAgY29udHJvbHMtPm1fcGFuZWxNdXRlQnV0dG9uID0gcGFuZWxN
dXRlQnV0dG9uLmdldCgpOwogICAgIHBhbmVsLT5hcHBlbmRDaGlsZChwYW5lbE11dGVCdXR0b24u
cmVsZWFzZSgpLCBlYywgdHJ1ZSk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIGlmIChtZWRpYUVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+dXNlc01l
ZGlhQ29udHJvbFZvbHVtZVNsaWRlcigpKSB7Ci0gICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiB2b2x1bWVTbGlkZXJDb250YWluZXIgPSBNZWRp
YUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50
KTsKKyAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKS0+dGhlbWUoKS0+dXNlc01lZGlhQ29udHJvbFZv
bHVtZVNsaWRlcigpKSB7CisgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJD
b250YWluZXJFbGVtZW50PiB2b2x1bWVTbGlkZXJDb250YWluZXIgPSBNZWRpYUNvbnRyb2xWb2x1
bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogCi0gICAgICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50PiBzbGlkZXIgPSBNZWRpYUNvbnRy
b2xWb2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKKyAgICAgICAgUmVm
UHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IE1lZGlhQ29udHJv
bFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgICAgIGNvbnRyb2xz
LT5tX3ZvbHVtZVNsaWRlciA9IHNsaWRlci5nZXQoKTsKICAgICAgICAgdm9sdW1lU2xpZGVyQ29u
dGFpbmVyLT5hcHBlbmRDaGlsZChzbGlkZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CiAgICAgICAg
IGlmIChlYykKICAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAgICAgIFJlZlB0cjxNZWRpYUNv
bnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudD4gdm9sdW1lU2xpZGVyTXV0ZUJ1dHRv
biA9IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUobWVk
aWFFbGVtZW50KTsKKyAgICAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVC
dXR0b25FbGVtZW50PiB2b2x1bWVTbGlkZXJNdXRlQnV0dG9uID0gTWVkaWFDb250cm9sVm9sdW1l
U2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgICAgIGNvbnRy
b2xzLT5tX3ZvbHVtZVNsaWRlck11dGVCdXR0b24gPSB2b2x1bWVTbGlkZXJNdXRlQnV0dG9uLmdl
dCgpOwogICAgICAgICB2b2x1bWVTbGlkZXJDb250YWluZXItPmFwcGVuZENoaWxkKHZvbHVtZVNs
aWRlck11dGVCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CiAgICAgICAgIGlmIChlYykKQEAg
LTE5MSwxOSArMTkyLDE5IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ+IE1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlCiAgICAgfQogCiAgICAg
Ly8gRklYTUU6IE9ubHkgY3JlYXRlIHdoZW4gbmVlZGVkIDxodHRwOi8vd2Via2l0Lm9yZy9iLzU3
MTYzPgotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxl
bWVudD4gZnVsbFNjcmVlbk1pblZvbHVtZUJ1dHRvbiA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5W
b2x1bWVNaW5CdXR0b25FbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKKyAgICBSZWZQdHI8
TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ+IGZ1bGxTY3JlZW5N
aW5Wb2x1bWVCdXR0b24gPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBjb250cm9scy0+bV9mdWxsU2NyZWVuTWluVm9s
dW1lQnV0dG9uID0gZnVsbFNjcmVlbk1pblZvbHVtZUJ1dHRvbi5nZXQoKTsKICAgICBwYW5lbC0+
YXBwZW5kQ2hpbGQoZnVsbFNjcmVlbk1pblZvbHVtZUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVl
KTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50PiBmdWxsU2NyZWVuVm9sdW1lU2xpZGVy
ID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShtZWRp
YUVsZW1lbnQpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVy
RWxlbWVudD4gZnVsbFNjcmVlblZvbHVtZVNsaWRlciA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5W
b2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGNvbnRyb2xzLT5tX2Z1
bGxTY3JlZW5Wb2x1bWVTbGlkZXIgPSBmdWxsU2NyZWVuVm9sdW1lU2xpZGVyLmdldCgpOwogICAg
IHBhbmVsLT5hcHBlbmRDaGlsZChmdWxsU2NyZWVuVm9sdW1lU2xpZGVyLnJlbGVhc2UoKSwgZWMs
IHRydWUpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8TWVk
aWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ+IGZ1bGxTY3JlZW5NYXhW
b2x1bWVCdXR0b24gPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVu
dDo6Y3JlYXRlKG1lZGlhRWxlbWVudCk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50PiBmdWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9uID0gTWVk
aWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCk7CiAgICAgY29udHJvbHMtPm1fZnVsbFNjcmVlbk1heFZvbHVtZUJ1dHRvbiA9IGZ1bGxTY3Jl
ZW5NYXhWb2x1bWVCdXR0b24uZ2V0KCk7CiAgICAgcGFuZWwtPmFwcGVuZENoaWxkKGZ1bGxTY3Jl
ZW5NYXhWb2x1bWVCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CiAgICAgaWYgKGVjKQpAQCAt
MjE3LDYgKzIxOCw1NSBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50PiBNZWRp
YUNvbnRyb2xSb290RWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZQogICAgIHJldHVybiBjb250
cm9scy5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnNldE1l
ZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIGNvbnRyb2xsZXIpCit7Cisg
ICAgaWYgKG1fbWVkaWFDb250cm9sbGVyID09IGNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsK
KyAgICBtX21lZGlhQ29udHJvbGxlciA9IGNvbnRyb2xsZXI7CisKKyAgICBpZiAobV9yZXdpbmRC
dXR0b24pCisgICAgICAgIG1fcmV3aW5kQnV0dG9uLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJv
bGxlcik7CisgICAgaWYgKG1fcGxheUJ1dHRvbikKKyAgICAgICAgbV9wbGF5QnV0dG9uLT5zZXRN
ZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fcmV0dXJuVG9SZWFsVGltZUJ1
dHRvbikKKyAgICAgICAgbV9yZXR1cm5Ub1JlYWxUaW1lQnV0dG9uLT5zZXRNZWRpYUNvbnRyb2xs
ZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fc3RhdHVzRGlzcGxheSkKKyAgICAgICAgbV9zdGF0
dXNEaXNwbGF5LT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fY3Vy
cmVudFRpbWVEaXNwbGF5KQorICAgICAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0TWVkaWFD
b250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX3RpbWVsaW5lKQorICAgICAgICBtX3Rp
bWVsaW5lLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fdGltZVJl
bWFpbmluZ0Rpc3BsYXkpCisgICAgICAgIG1fdGltZVJlbWFpbmluZ0Rpc3BsYXktPnNldE1lZGlh
Q29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV90aW1lbGluZUNvbnRhaW5lcikKKyAg
ICAgICAgbV90aW1lbGluZUNvbnRhaW5lci0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIp
OworICAgIGlmIChtX3NlZWtCYWNrQnV0dG9uKQorICAgICAgICBtX3NlZWtCYWNrQnV0dG9uLT5z
ZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fc2Vla0ZvcndhcmRCdXR0
b24pCisgICAgICAgIG1fc2Vla0ZvcndhcmRCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250
cm9sbGVyKTsKKyAgICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbikKKyAgICAgICAg
bV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xs
ZXIpOworICAgIGlmIChtX3BhbmVsTXV0ZUJ1dHRvbikKKyAgICAgICAgbV9wYW5lbE11dGVCdXR0
b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV92b2x1bWVTbGlk
ZXIpCisgICAgICAgIG1fdm9sdW1lU2xpZGVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxl
cik7CisgICAgaWYgKG1fdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbikKKyAgICAgICAgbV92b2x1bWVT
bGlkZXJNdXRlQnV0dG9uLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYg
KG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyKQorICAgICAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5l
ci0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX2Z1bGxTY3JlZW5C
dXR0b24pCisgICAgICAgIG1fZnVsbFNjcmVlbkJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNv
bnRyb2xsZXIpOworICAgIGlmIChtX2Z1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b24pCisgICAgICAg
IG1fZnVsbFNjcmVlbk1pblZvbHVtZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xs
ZXIpOworICAgIGlmIChtX2Z1bGxTY3JlZW5Wb2x1bWVTbGlkZXIpCisgICAgICAgIG1fZnVsbFNj
cmVlblZvbHVtZVNsaWRlci0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlm
IChtX2Z1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24pCisgICAgICAgIG1fZnVsbFNjcmVlbk1heFZv
bHVtZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX3Bh
bmVsKQorICAgICAgICBtX3BhbmVsLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7Cisg
ICAgcmVzZXQoKTsKK30KKwogdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6c2hvdygpCiB7
CiAgICAgbV9wYW5lbC0+c2hvdygpOwpAQCAtMjQ1LDMwICsyOTUsMzAgQEAgdm9pZCBNZWRpYUNv
bnRyb2xSb290RWxlbWVudDo6cmVzZXQoKQogCiAgICAgdXBkYXRlU3RhdHVzRGlzcGxheSgpOwog
Ci0gICAgaWYgKG1fbWVkaWFFbGVtZW50LT5zdXBwb3J0c0Z1bGxzY3JlZW4oKSkKKyAgICBpZiAo
bV9tZWRpYUNvbnRyb2xsZXItPnN1cHBvcnRzRnVsbHNjcmVlbigpKQogICAgICAgICBtX2Z1bGxT
Y3JlZW5CdXR0b24tPnNob3coKTsKICAgICBlbHNlCiAgICAgICAgIG1fZnVsbFNjcmVlbkJ1dHRv
bi0+aGlkZSgpOwogCi0gICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhRWxlbWVudC0+ZHVyYXRp
b24oKTsKKyAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigp
OwogICAgIGlmIChpc2Zpbml0ZShkdXJhdGlvbikgfHwgcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlz
YWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhU2xpZGVyUGFydCkpIHsKICAgICAgICAgbV90aW1l
bGluZS0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwogICAgICAgICBtX3RpbWVsaW5lQ29udGFpbmVy
LT5zaG93KCk7Ci0gICAgICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFFbGVtZW50
LT5jdXJyZW50VGltZSgpKTsKKyAgICAgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRp
YUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpOwogICAgICAgICB1cGRhdGVUaW1lRGlzcGxheSgp
OwogICAgIH0gZWxzZQogICAgICAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5oaWRlKCk7CiAKLSAg
ICBpZiAobV9tZWRpYUVsZW1lbnQtPmhhc0F1ZGlvKCkgfHwgcGFnZS0+dGhlbWUoKS0+aGFzT3du
RGlzYWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQpKQorICAgIGlmICht
X21lZGlhQ29udHJvbGxlci0+aGFzQXVkaW8oKSB8fCBwYWdlLT50aGVtZSgpLT5oYXNPd25EaXNh
YmxlZFN0YXRlSGFuZGxpbmdGb3IoTWVkaWFNdXRlQnV0dG9uUGFydCkpCiAgICAgICAgIG1fcGFu
ZWxNdXRlQnV0dG9uLT5zaG93KCk7CiAgICAgZWxzZQogICAgICAgICBtX3BhbmVsTXV0ZUJ1dHRv
bi0+aGlkZSgpOwogCiAgICAgaWYgKG1fdm9sdW1lU2xpZGVyKQotICAgICAgICBtX3ZvbHVtZVNs
aWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFFbGVtZW50LT52b2x1bWUoKSk7CisgICAgICAgIG1fdm9s
dW1lU2xpZGVyLT5zZXRWb2x1bWUobV9tZWRpYUNvbnRyb2xsZXItPnZvbHVtZSgpKTsKIAogICAg
IGlmIChtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKSB7Ci0gICAgICAgIGlmIChtX21lZGlh
RWxlbWVudC0+aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKKyAgICAgICAgaWYgKG1fbWVkaWFDb250cm9s
bGVyLT5oYXNDbG9zZWRDYXB0aW9ucygpKQogICAgICAgICAgICAgbV90b2dnbGVDbG9zZWRDYXB0
aW9uc0J1dHRvbi0+c2hvdygpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3RvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uLT5oaWRlKCk7CkBAIC0yNzcsOCArMzI3LDggQEAgdm9pZCBNZWRp
YUNvbnRyb2xSb290RWxlbWVudDo6cmVzZXQoKQogICAgIG1fcGxheUJ1dHRvbi0+dXBkYXRlRGlz
cGxheVR5cGUoKTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBpZiAoZG9jdW1l
bnQoKS0+d2Via2l0SXNGdWxsU2NyZWVuKCkgJiYgZG9jdW1lbnQoKS0+d2Via2l0Q3VycmVudEZ1
bGxTY3JlZW5FbGVtZW50KCkgPT0gbV9tZWRpYUVsZW1lbnQpIHsKLSAgICAgICAgaWYgKG1fbWVk
aWFFbGVtZW50LT5tb3ZpZUxvYWRUeXBlKCkgPT0gTWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW0pIHsK
KyAgICBpZiAoZG9jdW1lbnQoKS0+d2Via2l0SXNGdWxsU2NyZWVuKCkgJiYgZG9jdW1lbnQoKS0+
d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkgPT0gdG9QYXJlbnRNZWRpYUVsZW1lbnQo
dGhpcykpIHsKKyAgICAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5pc0xpdmVTdHJlYW0oKSkg
ewogICAgICAgICAgICAgbV9zZWVrQmFja0J1dHRvbi0+aGlkZSgpOwogICAgICAgICAgICAgbV9z
ZWVrRm9yd2FyZEJ1dHRvbi0+aGlkZSgpOwogICAgICAgICAgICAgbV9yZXdpbmRCdXR0b24tPnNo
b3coKTsKQEAgLTI5MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojpy
ZXNldCgpCiAgICAgICAgIH0KICAgICB9IGVsc2UKICNlbmRpZgotICAgIGlmIChtX21lZGlhRWxl
bWVudC0+bW92aWVMb2FkVHlwZSgpICE9IE1lZGlhUGxheWVyOjpMaXZlU3RyZWFtKSB7CisgICAg
aWYgKCFtX21lZGlhQ29udHJvbGxlci0+aXNMaXZlU3RyZWFtKCkpIHsKICAgICAgICAgbV9yZXR1
cm5Ub1JlYWxUaW1lQnV0dG9uLT5oaWRlKCk7CiAgICAgICAgIG1fcmV3aW5kQnV0dG9uLT5zaG93
KCk7CiAgICAgfSBlbHNlIHsKQEAgLTMwNSwyNiArMzU1LDI2IEBAIHZvaWQgTWVkaWFDb250cm9s
Um9vdEVsZW1lbnQ6OnJlc2V0KCkKIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnBsYXli
YWNrU3RhcnRlZCgpCiB7CiAgICAgbV9wbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlwZSgpOwot
ICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFFbGVtZW50LT5jdXJyZW50VGltZSgp
KTsKKyAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhQ29udHJvbGxlci0+Y3VycmVu
dFRpbWUoKSk7CiAgICAgdXBkYXRlVGltZURpc3BsYXkoKTsKIAotICAgIGlmIChtX21lZGlhRWxl
bWVudC0+aXNGdWxsc2NyZWVuKCkpCisgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyLT5pc0Z1bGxz
Y3JlZW4oKSkKICAgICAgICAgc3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKIH0K
IAogdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6cGxheWJhY2tQcm9ncmVzc2VkKCkKIHsK
LSAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUo
KSk7CisgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJl
bnRUaW1lKCkpOwogICAgIHVwZGF0ZVRpbWVEaXNwbGF5KCk7CiAgICAgCi0gICAgaWYgKCFtX2lz
TW91c2VPdmVyQ29udHJvbHMgJiYgbV9tZWRpYUVsZW1lbnQtPmhhc1ZpZGVvKCkpCisgICAgaWYg
KCFtX2lzTW91c2VPdmVyQ29udHJvbHMgJiYgbV9tZWRpYUNvbnRyb2xsZXItPmhhc1ZpZGVvKCkp
CiAgICAgICAgIG1ha2VUcmFuc3BhcmVudCgpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbFJvb3RF
bGVtZW50OjpwbGF5YmFja1N0b3BwZWQoKQogewogICAgIG1fcGxheUJ1dHRvbi0+dXBkYXRlRGlz
cGxheVR5cGUoKTsKLSAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhRWxlbWVudC0+
Y3VycmVudFRpbWUoKSk7CisgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUNvbnRy
b2xsZXItPmN1cnJlbnRUaW1lKCkpOwogICAgIHVwZGF0ZVRpbWVEaXNwbGF5KCk7CiAgICAgbWFr
ZU9wYXF1ZSgpOwogICAgIApAQCAtMzMzLDggKzM4Myw4IEBAIHZvaWQgTWVkaWFDb250cm9sUm9v
dEVsZW1lbnQ6OnBsYXliYWNrU3RvcHBlZCgpCiAKIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1l
bnQ6OnVwZGF0ZVRpbWVEaXNwbGF5KCkKIHsKLSAgICBmbG9hdCBub3cgPSBtX21lZGlhRWxlbWVu
dC0+Y3VycmVudFRpbWUoKTsKLSAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFFbGVtZW50LT5k
dXJhdGlvbigpOworICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGlt
ZSgpOworICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRyb2xsZXItPmR1cmF0aW9uKCk7
CiAKICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkK
QEAgLTM3Niw3ICs0MjYsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojp1cGRhdGVT
dGF0dXNEaXNwbGF5KCkKIAogdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6bG9hZGVkTWV0
YWRhdGEoKQogewotICAgIGlmIChtX3N0YXR1c0Rpc3BsYXkgJiYgbV9tZWRpYUVsZW1lbnQtPm1v
dmllTG9hZFR5cGUoKSAhPSBNZWRpYVBsYXllcjo6TGl2ZVN0cmVhbSkKKyAgICBpZiAobV9zdGF0
dXNEaXNwbGF5ICYmIG1fbWVkaWFDb250cm9sbGVyLT5pc0xpdmVTdHJlYW0oKSkKICAgICAgICAg
bV9zdGF0dXNEaXNwbGF5LT5oaWRlKCk7CiAKICAgICByZXNldCgpOwpAQCAtMzk4LDEyICs0NDgs
MTIgQEAgdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6Y2hhbmdlZE11dGUoKQogdm9pZCBN
ZWRpYUNvbnRyb2xSb290RWxlbWVudDo6Y2hhbmdlZFZvbHVtZSgpCiB7CiAgICAgaWYgKG1fdm9s
dW1lU2xpZGVyKQotICAgICAgICBtX3ZvbHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFFbGVt
ZW50LT52b2x1bWUoKSk7CisgICAgICAgIG1fdm9sdW1lU2xpZGVyLT5zZXRWb2x1bWUobV9tZWRp
YUNvbnRyb2xsZXItPnZvbHVtZSgpKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVu
dDo6ZW50ZXJlZEZ1bGxzY3JlZW4oKQogewotICAgIGlmIChtX21lZGlhRWxlbWVudC0+bW92aWVM
b2FkVHlwZSgpID09IE1lZGlhUGxheWVyOjpMaXZlU3RyZWFtKSB7CisgICAgaWYgKG1fbWVkaWFD
b250cm9sbGVyLT5pc0xpdmVTdHJlYW0oKSkgewogICAgICAgICBtX3NlZWtCYWNrQnV0dG9uLT5o
aWRlKCk7CiAgICAgICAgIG1fc2Vla0ZvcndhcmRCdXR0b24tPmhpZGUoKTsKICAgICAgICAgbV9y
ZXdpbmRCdXR0b24tPnNob3coKTsKQEAgLTQxNyw3ICs0NjcsNyBAQCB2b2lkIE1lZGlhQ29udHJv
bFJvb3RFbGVtZW50OjplbnRlcmVkRnVsbHNjcmVlbigpCiAKICAgICBtX3BhbmVsLT5zZXRDYW5C
ZURyYWdnZWQodHJ1ZSk7CiAKLSAgICBpZiAoUGFnZSogcGFnZSA9IG1fbWVkaWFFbGVtZW50LT5k
b2N1bWVudCgpLT5wYWdlKCkpCisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdl
KCkpCiAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92
ZXModHJ1ZSk7CiAKICAgICBzdGFydEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOwpAQCAt
NDQ1LDcgKzQ5NSw3IEBAIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmV4aXRlZEZ1bGxz
Y3JlZW4oKQogCiB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpzaG93Vm9sdW1lU2xpZGVy
KCkKIHsKLSAgICBpZiAoIW1fbWVkaWFFbGVtZW50LT5oYXNBdWRpbygpKQorICAgIGlmICghbV9t
ZWRpYUNvbnRyb2xsZXItPmhhc0F1ZGlvKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICht
X3ZvbHVtZVNsaWRlckNvbnRhaW5lcikKQEAgLTQ3NCw3ICs1MjQsNyBAQCB2b2lkIE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICBp
ZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQpIHsKICAgICAg
ICAgaWYgKCFjb250YWluc1JlbGF0ZWRUYXJnZXQoZXZlbnQpKSB7CiAgICAgICAgICAgICBtX2lz
TW91c2VPdmVyQ29udHJvbHMgPSB0cnVlOwotICAgICAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVu
dC0+Y2FuUGxheSgpKSB7CisgICAgICAgICAgICBpZiAoIW1fbWVkaWFDb250cm9sbGVyLT5jYW5Q
bGF5KCkpIHsKICAgICAgICAgICAgICAgICBtYWtlT3BhcXVlKCk7CiAgICAgICAgICAgICAgICAg
aWYgKHNob3VsZEhpZGVDb250cm9scygpKQogICAgICAgICAgICAgICAgICAgICBzdGFydEhpZGVG
dWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOwpAQCAtNDg2LDcgKzUzNiw3IEBAIHZvaWQgTWVkaWFD
b250cm9sUm9vdEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAg
ICAgICAgICAgc3RvcEhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcigpOwogICAgICAgICB9CiAg
ICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVu
dCkgewotICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnQtPmlzRnVsbHNjcmVlbigpKSB7CisgICAg
ICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aXNGdWxsc2NyZWVuKCkpIHsKICAgICAgICAgICAg
IC8vIFdoZW4gd2UgZ2V0IGEgbW91c2UgbW92ZSBpbiBmdWxsc2NyZWVuIG1vZGUsIHNob3cgdGhl
IG1lZGlhIGNvbnRyb2xzLCBhbmQgc3RhcnQgYSB0aW1lcgogICAgICAgICAgICAgLy8gdGhhdCB3
aWxsIGhpZGUgdGhlIG1lZGlhIGNvbnRyb2xzIGFmdGVyIGEgMyBzZWNvbmRzIHdpdGhvdXQgYSBt
b3VzZSBtb3ZlLgogICAgICAgICAgICAgbWFrZU9wYXF1ZSgpOwpAQCAtNDk4LDcgKzU0OCw3IEBA
IHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
IGV2ZW50KQogCiB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpzdGFydEhpZGVGdWxsc2Ny
ZWVuQ29udHJvbHNUaW1lcigpCiB7Ci0gICAgaWYgKCFtX21lZGlhRWxlbWVudC0+aXNGdWxsc2Ny
ZWVuKCkpCisgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlci0+aXNGdWxsc2NyZWVuKCkpCiAgICAg
ICAgIHJldHVybjsKICAgICAKICAgICBtX2hpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lci5zdGFy
dE9uZVNob3QodGltZVdpdGhvdXRNb3VzZU1vdmVtZW50QmVmb3JlSGlkaW5nQ29udHJvbHMpOwpA
QCAtNTA2LDE2ICs1NTYsMTYgQEAgdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6c3RhcnRI
aWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKQogCiB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVt
ZW50OjpoaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xS
b290RWxlbWVudD4qKQogewotICAgIGlmICghbV9tZWRpYUVsZW1lbnQtPmlzUGxheWluZygpKQor
ICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+cGF1c2VkKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBpZiAoIW1fbWVkaWFFbGVtZW50LT5pc0Z1bGxzY3JlZW4oKSkKKyAgICBpZiAoIW1f
bWVkaWFDb250cm9sbGVyLT5pc0Z1bGxzY3JlZW4oKSkKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIGlmICghc2hvdWxkSGlkZUNvbnRyb2xzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChQYWdlKiBwYWdlID0gbV9tZWRpYUVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKSkKKyAgICBp
ZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKSkKICAgICAgICAgcGFnZS0+Y2hyb21l
KCktPnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyh0cnVlKTsKIAogICAgIG1ha2VUcmFu
c3BhcmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sUm9vdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbFJvb3RFbGVtZW50LmgKaW5kZXggOTc3ODFkYzEyZjFlMDJhNzZmMTIyOWExNTVlNmRmNmU1
ZDgzYzU1NS4uZWQ5MGM1ODdkZTBhMDZjMzJlODY5MWM5ZDRkZDc0ZGZlODVmYTAxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVu
dC5oCkBAIC02OCw5ICs2OCwxMSBAQCBjbGFzcyBSZW5kZXJNZWRpYTsKIAogY2xhc3MgTWVkaWFD
b250cm9sUm9vdEVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9scyB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVk
aWFFbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUm9vdEVsZW1l
bnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiAgICAgLy8gTWVkaWFDb250cm9scyBpbXBsZW1lbnRh
dGlvbi4KKyAgICB2b2lkIHNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZh
Y2UqKTsKKwogICAgIHZvaWQgc2hvdygpOwogICAgIHZvaWQgaGlkZSgpOwogICAgIHZvaWQgbWFr
ZU9wYXF1ZSgpOwpAQCAtOTksNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRIaWRlQ29udHJvbHMoKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xSb290RWxl
bWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQoRG9j
dW1lbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7
CiAgICAgdm9pZCBoaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXJGaXJlZChUaW1lcjxNZWRpYUNv
bnRyb2xSb290RWxlbWVudD4qKTsKQEAgLTExMCw3ICsxMTIsNyBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBjb250YWluc1JlbGF0ZWRUYXJnZXQoRXZlbnQqKTsKIAotICAgIEhUTUxNZWRpYUVsZW1l
bnQqIG1fbWVkaWFFbGVtZW50OworICAgIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSogbV9tZWRp
YUNvbnRyb2xsZXI7CiAKICAgICBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50KiBtX3Jl
d2luZEJ1dHRvbjsKICAgICBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudCogbV9wbGF5QnV0
dG9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
Um9vdEVsZW1lbnRDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xSb290RWxlbWVudENocm9taXVtLmNwcAppbmRleCBkMWNhZjk5MjAzOTM5MzEwMjZk
ZWQxMzhiZDEwYzc3MTk0YTIxMDJhLi5mMTcwNjkyMmJiYzhhY2UzMmMxMzFjNWE5ZTZmNDAyYTZk
ZTgyNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xSb290RWxlbWVudENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtLmNwcApAQCAtMzgsOSArMzgsOSBAQCB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1lZGlhQ29udHJv
bFJvb3RFbGVtZW50Q2hyb21pdW06Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0oSFRN
TE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQotICAgIDogTWVkaWFDb250cm9scyhtZWRpYUVs
ZW1lbnQpCi0gICAgLCBtX21lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQpCitNZWRpYUNvbnRyb2xS
b290RWxlbWVudENocm9taXVtOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtKERvY3Vt
ZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbHMoZG9jdW1lbnQpCisgICAgLCBtX21l
ZGlhQ29udHJvbGxlcigwKQogICAgICwgbV9wbGF5QnV0dG9uKDApCiAgICAgLCBtX2N1cnJlbnRU
aW1lRGlzcGxheSgwKQogICAgICwgbV90aW1lbGluZSgwKQpAQCAtNTQsMzcgKzU0LDM3IEBAIE1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hy
b21pdW0oSFRNTE1lZGlhRWxlbWVuCiB7CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFDb250cm9scz4g
TWVkaWFDb250cm9sczo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK1Bh
c3NSZWZQdHI8TWVkaWFDb250cm9scz4gTWVkaWFDb250cm9sczo6Y3JlYXRlKERvY3VtZW50KiBk
b2N1bWVudCkKIHsKLSAgICByZXR1cm4gTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6
Y3JlYXRlKG1lZGlhRWxlbWVudCk7CisgICAgcmV0dXJuIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50
Q2hyb21pdW06OmNyZWF0ZShkb2N1bWVudCk7CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFDb250cm9s
Um9vdEVsZW1lbnRDaHJvbWl1bT4gTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6Y3Jl
YXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK1Bhc3NSZWZQdHI8TWVkaWFDb250
cm9sUm9vdEVsZW1lbnRDaHJvbWl1bT4gTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6
Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBpZiAoIW1lZGlhRWxlbWVudC0+ZG9j
dW1lbnQoKS0+cGFnZSgpKQorICAgIGlmIChkb2N1bWVudC0+cGFnZSgpKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtPiBjb250
cm9scyA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtKG1lZGlh
RWxlbWVudCkpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtPiBj
b250cm9scyA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtKGRv
Y3VtZW50KSk7CiAKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxFbGVtZW50PiBwYW5lbCA9
IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVudCk7CisgICAgUmVm
UHRyPE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudD4gcGFuZWwgPSBNZWRpYUNvbnRyb2xQYW5lbEVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjOwogCi0gICAg
UmVmUHRyPE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50PiBwbGF5QnV0dG9uID0gTWVkaWFD
b250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudD4gcGxheUJ1dHRvbiA9IE1lZGlhQ29udHJv
bFBsYXlCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGNvbnRyb2xzLT5tX3Bs
YXlCdXR0b24gPSBwbGF5QnV0dG9uLmdldCgpOwogICAgIHBhbmVsLT5hcHBlbmRDaGlsZChwbGF5
QnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50PiB0
aW1lbGluZUNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6
Y3JlYXRlKG1lZGlhRWxlbWVudCk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lQ29u
dGFpbmVyRWxlbWVudD4gdGltZWxpbmVDb250YWluZXIgPSBNZWRpYUNvbnRyb2xUaW1lbGluZUNv
bnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAKLSAgICBSZWZQdHI8TWVkaWFDb250
cm9sVGltZWxpbmVFbGVtZW50PiB0aW1lbGluZSA9IE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVu
dDo6Y3JlYXRlKG1lZGlhRWxlbWVudCwgY29udHJvbHMuZ2V0KCkpOworICAgIFJlZlB0cjxNZWRp
YUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gTWVkaWFDb250cm9sVGltZWxpbmVF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGNvbnRyb2xzLmdldCgpKTsKICAgICBjb250cm9scy0+
bV90aW1lbGluZSA9IHRpbWVsaW5lLmdldCgpOwogICAgIHRpbWVsaW5lQ29udGFpbmVyLT5hcHBl
bmRDaGlsZCh0aW1lbGluZS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKICAgICBpZiAoZWMpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxh
eUVsZW1lbnQ+IGN1cnJlbnRUaW1lRGlzcGxheSA9IE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlz
cGxheUVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIFJlZlB0cjxNZWRpYUNvbnRy
b2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBjdXJyZW50VGltZURpc3BsYXkgPSBNZWRpYUNv
bnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGNv
bnRyb2xzLT5tX2N1cnJlbnRUaW1lRGlzcGxheSA9IGN1cnJlbnRUaW1lRGlzcGxheS5nZXQoKTsK
ICAgICB0aW1lbGluZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoY3VycmVudFRpbWVEaXNwbGF5LnJl
bGVhc2UoKSwgZWMsIHRydWUpOwogICAgIGlmIChlYykKQEAgLTk1LDE1ICs5NSwxNSBAQCBQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0+IE1lZGlhQ29udHJvbFJvb3RF
bGVtZW50Q2hyb21pdW06OmNyZQogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudD4gcGFuZWxNdXRlQnV0
dG9uID0gTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxl
bWVudCwgY29udHJvbHMuZ2V0KCkpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbE11dGVC
dXR0b25FbGVtZW50PiBwYW5lbE11dGVCdXR0b24gPSBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0
b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGNvbnRyb2xzLmdldCgpKTsKICAgICBjb250cm9s
cy0+bV9wYW5lbE11dGVCdXR0b24gPSBwYW5lbE11dGVCdXR0b24uZ2V0KCk7CiAgICAgcGFuZWwt
PmFwcGVuZENoaWxkKHBhbmVsTXV0ZUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKICAgICBp
ZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ+IHZvbHVtZVNsaWRlckNvbnRhaW5lciA9IE1lZGlhQ29u
dHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQpOwor
ICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiB2b2x1
bWVTbGlkZXJDb250YWluZXIgPSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNs
aWRlckVsZW1lbnQ+IHNsaWRlciA9IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNy
ZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJF
bGVtZW50PiBzbGlkZXIgPSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQpOwogICAgIGNvbnRyb2xzLT5tX3ZvbHVtZVNsaWRlciA9IHNsaWRlci5nZXQoKTsK
ICAgICB2b2x1bWVTbGlkZXJDb250YWluZXItPmFwcGVuZENoaWxkKHNsaWRlci5yZWxlYXNlKCks
IGVjLCB0cnVlKTsKICAgICBpZiAoZWMpCkBAIC0xMjIsNiArMTIyLDMxIEBAIFBhc3NSZWZQdHI8
TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bT4gTWVkaWFDb250cm9sUm9vdEVsZW1lbnRD
aHJvbWl1bTo6Y3JlCiAgICAgcmV0dXJuIGNvbnRyb2xzLnJlbGVhc2UoKTsKIH0KIAordm9pZCBN
ZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlKiBjb250cm9sbGVyKQoreworICAgIGlmIChtX21lZGlhQ29udHJv
bGxlciA9PSBjb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisgICAgbV9tZWRpYUNvbnRyb2xs
ZXIgPSBjb250cm9sbGVyOworCisgICAgaWYgKG1fcGxheUJ1dHRvbikKKyAgICAgICAgbV9wbGF5
QnV0dG9uLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fY3VycmVu
dFRpbWVEaXNwbGF5KQorICAgICAgICBtX2N1cnJlbnRUaW1lRGlzcGxheS0+c2V0TWVkaWFDb250
cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX3RpbWVsaW5lKQorICAgICAgICBtX3RpbWVs
aW5lLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fdGltZWxpbmVD
b250YWluZXIpCisgICAgICAgIG1fdGltZWxpbmVDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxl
cihjb250cm9sbGVyKTsKKyAgICBpZiAobV9wYW5lbE11dGVCdXR0b24pCisgICAgICAgIG1fcGFu
ZWxNdXRlQnV0dG9uLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1f
dm9sdW1lU2xpZGVyKQorICAgICAgICBtX3ZvbHVtZVNsaWRlci0+c2V0TWVkaWFDb250cm9sbGVy
KGNvbnRyb2xsZXIpOworICAgIGlmIChtX3ZvbHVtZVNsaWRlckNvbnRhaW5lcikKKyAgICAgICAg
bV92b2x1bWVTbGlkZXJDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsK
KyAgICBpZiAobV9wYW5lbCkKKyAgICAgICAgbV9wYW5lbC0+c2V0TWVkaWFDb250cm9sbGVyKGNv
bnRyb2xsZXIpOworICAgIHJlc2V0KCk7Cit9CisKIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1l
bnRDaHJvbWl1bTo6c2hvdygpCiB7CiAgICAgbV9wYW5lbC0+c2hvdygpOwpAQCAtMTUwLDE2ICsx
NzUsMTYgQEAgdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpyZXNldCgpCiAK
ICAgICB1cGRhdGVTdGF0dXNEaXNwbGF5KCk7CiAKLSAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVk
aWFFbGVtZW50LT5kdXJhdGlvbigpOworICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUNvbnRy
b2xsZXItPmR1cmF0aW9uKCk7CiAgICAgbV90aW1lbGluZS0+c2V0RHVyYXRpb24oZHVyYXRpb24p
OwogICAgIG1fdGltZWxpbmVDb250YWluZXItPnNob3coKTsKLSAgICBtX3RpbWVsaW5lLT5zZXRQ
b3NpdGlvbihtX21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKSk7CisgICAgbV90aW1lbGluZS0+
c2V0UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpOwogICAgIHVwZGF0
ZVRpbWVEaXNwbGF5KCk7CiAKICAgICBtX3BhbmVsTXV0ZUJ1dHRvbi0+c2hvdygpOwogCiAgICAg
aWYgKG1fdm9sdW1lU2xpZGVyKQotICAgICAgICBtX3ZvbHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1f
bWVkaWFFbGVtZW50LT52b2x1bWUoKSk7CisgICAgICAgIG1fdm9sdW1lU2xpZGVyLT5zZXRWb2x1
bWUobV9tZWRpYUNvbnRyb2xsZXItPnZvbHVtZSgpKTsKIAogICAgIG1ha2VPcGFxdWUoKTsKIH0K
QEAgLTE2NywzMSArMTkyLDMxIEBAIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1
bTo6cmVzZXQoKQogdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpwbGF5YmFj
a1N0YXJ0ZWQoKQogewogICAgIG1fcGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsKLSAg
ICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKSk7
CisgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRU
aW1lKCkpOwogICAgIHVwZGF0ZVRpbWVEaXNwbGF5KCk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9s
Um9vdEVsZW1lbnRDaHJvbWl1bTo6cGxheWJhY2tQcm9ncmVzc2VkKCkKIHsKLSAgICBtX3RpbWVs
aW5lLT5zZXRQb3NpdGlvbihtX21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKSk7CisgICAgbV90
aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpOwog
ICAgIHVwZGF0ZVRpbWVEaXNwbGF5KCk7CiAKLSAgICBpZiAoIW1faXNNb3VzZU92ZXJDb250cm9s
cyAmJiBtX21lZGlhRWxlbWVudC0+aGFzVmlkZW8oKSkKKyAgICBpZiAoIW1faXNNb3VzZU92ZXJD
b250cm9scyAmJiBtX21lZGlhQ29udHJvbGxlci0+aGFzVmlkZW8oKSkKICAgICAgICAgbWFrZVRy
YW5zcGFyZW50KCk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6
cGxheWJhY2tTdG9wcGVkKCkKIHsKICAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBl
KCk7Ci0gICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRU
aW1lKCkpOworICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFDb250cm9sbGVyLT5j
dXJyZW50VGltZSgpKTsKICAgICB1cGRhdGVUaW1lRGlzcGxheSgpOwogICAgIG1ha2VPcGFxdWUo
KTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjp1cGRhdGVUaW1l
RGlzcGxheSgpCiB7Ci0gICAgZmxvYXQgbm93ID0gbV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1l
KCk7Ci0gICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhRWxlbWVudC0+ZHVyYXRpb24oKTsKKyAg
ICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRpbWUoKTsKKyAgICBmbG9h
dCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigpOwogCiAgICAgUGFnZSog
cGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCkBAIC0yNDUsNyArMjcw
LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50KiBldmVudCkKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVz
KCkubW91c2VvdmVyRXZlbnQpIHsKICAgICAgICAgaWYgKCFjb250YWluc1JlbGF0ZWRUYXJnZXQo
ZXZlbnQpKSB7CiAgICAgICAgICAgICBtX2lzTW91c2VPdmVyQ29udHJvbHMgPSB0cnVlOwotICAg
ICAgICAgICAgaWYgKCFtX21lZGlhRWxlbWVudC0+Y2FuUGxheSgpKQorICAgICAgICAgICAgaWYg
KCFtX21lZGlhQ29udHJvbGxlci0+Y2FuUGxheSgpKQogICAgICAgICAgICAgICAgIG1ha2VPcGFx
dWUoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkubW91c2VvdXRFdmVudCkgewpAQCAtMjY1LDcgKzI5MCw3IEBAIHZvaWQgTWVkaWFDb250
cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6Y2hhbmdlZE11dGUoKQogCiB2b2lkIE1lZGlhQ29udHJv
bFJvb3RFbGVtZW50Q2hyb21pdW06OmNoYW5nZWRWb2x1bWUoKQogewotICAgIG1fdm9sdW1lU2xp
ZGVyLT5zZXRWb2x1bWUobV9tZWRpYUVsZW1lbnQtPnZvbHVtZSgpKTsKKyAgICBtX3ZvbHVtZVNs
aWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7CiB9CiAKIHZvaWQg
TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6ZW50ZXJlZEZ1bGxzY3JlZW4oKQpAQCAt
Mjc4LDcgKzMwMyw3IEBAIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6ZXhp
dGVkRnVsbHNjcmVlbigpCiAKIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6
c2hvd1ZvbHVtZVNsaWRlcigpCiB7Ci0gICAgaWYgKCFtX21lZGlhRWxlbWVudC0+aGFzQXVkaW8o
KSkKKyAgICBpZiAoIW1fbWVkaWFDb250cm9sbGVyLT5oYXNBdWRpbygpKQogICAgICAgICByZXR1
cm47CiAKICAgICBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lci0+c2hvdygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnRD
aHJvbWl1bS5oCmluZGV4IGVmOWJiMGI4MGE3OTE1OWUzYjc0YmY1NWIwNWM1ZjkzOTlhMDk5OGUu
LjUwODI3MjA0ZDgxNjJjNDFiMzEwNzBhMjkwYTZhMzVhZmY3OGEzNTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVu
dENocm9taXVtLmgKQEAgLTM0LDggKzM0LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7Ci1jbGFzcyBIVE1MTWVkaWFF
bGVtZW50OwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25F
bGVtZW50OwogY2xhc3MgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ7CkBAIC00OSw2ICs0
OSw3IEBAIGNsYXNzIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OwogY2xhc3MgTWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDsKIGNsYXNzIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRl
ckNvbnRhaW5lckVsZW1lbnQ7CiBjbGFzcyBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ7CitjbGFz
cyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U7CiBjbGFzcyBNZWRpYVBsYXllcjsKIAogY2xhc3Mg
UmVuZGVyQm94OwpAQCAtNTYsOSArNTcsMTEgQEAgY2xhc3MgUmVuZGVyTWVkaWE7CiAKIGNsYXNz
IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0gOiBwdWJsaWMgTWVkaWFDb250cm9scyB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnRD
aHJvbWl1bT4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtPiBjcmVhdGUoRG9jdW1lbnQqKTsKIAog
ICAgIC8vIE1lZGlhQ29udHJvbHMgaW1wbGVtZW50YXRpb24uCisgICAgdm9pZCBzZXRNZWRpYUNv
bnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKik7CisKICAgICB2b2lkIHNob3coKTsK
ICAgICB2b2lkIGhpZGUoKTsKICAgICB2b2lkIG1ha2VPcGFxdWUoKTsKQEAgLTg3LDcgKzkwLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRIaWRlQ29udHJvbHMoKTsKIAogcHJp
dmF0ZToKLSAgICBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtKEhUTUxNZWRpYUVsZW1l
bnQqKTsKKyAgICBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtKERvY3VtZW50Kik7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogCkBAIC05NSw3
ICs5OCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGNvbnRhaW5zUmVsYXRlZFRhcmdldChFdmVu
dCopOwogCi0gICAgSFRNTE1lZGlhRWxlbWVudCogbV9tZWRpYUVsZW1lbnQ7CisgICAgTWVkaWFD
b250cm9sbGVySW50ZXJmYWNlKiBtX21lZGlhQ29udHJvbGxlcjsKIAogICAgIE1lZGlhQ29udHJv
bFBsYXlCdXR0b25FbGVtZW50KiBtX3BsYXlCdXR0b247CiAgICAgTWVkaWFDb250cm9sQ3VycmVu
dFRpbWVEaXNwbGF5RWxlbWVudCogbV9jdXJyZW50VGltZURpc3BsYXk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCmluZGV4IDY2MWZkMTliNzllMzE3ODMy
NjM1N2Y2OTc4YWM0MDlmZjVhMGViN2IuLjJkMDA3OTI1MjQxN2FiMzViYzgzNDI3YmUxZDA2Yjg0
MzIyZTQ1YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMu
Y3BwCkBAIC0zNiw4ICszNiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTWVkaWFDb250
cm9sczo6TWVkaWFDb250cm9scyhIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi0gICAg
OiBIVE1MRGl2RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywgbWVkaWFFbGVtZW50LT5kb2N1bWVu
dCgpKQorTWVkaWFDb250cm9sczo6TWVkaWFDb250cm9scyhEb2N1bWVudCogZG9jdW1lbnQpCisg
ICAgOiBIVE1MRGl2RWxlbWVudChIVE1MTmFtZXM6OmRpdlRhZywgZG9jdW1lbnQpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaAppbmRleCAxZTE0MzE0
MWEyMjJkZjI0MDU1OTNhNzIxMGNhYmZkZGJmOTc3MDYxLi40ZjYwMWZkMGU0ZjVjMTc4ZDU4NDhm
MGYyMzdlMjA5NjQ4ODFjZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9scy5oCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIE1lZGlhQ29udHJvbGxlckludGVyZmFjZTsKIAog
Y2xhc3MgTWVkaWFDb250cm9scyA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CiAgIHB1YmxpYzoK
QEAgLTQxLDcgKzQxLDkgQEAgY2xhc3MgTWVkaWFDb250cm9scyA6IHB1YmxpYyBIVE1MRGl2RWxl
bWVudCB7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHRvIGJlIGltcGxlbWVudGVkIGluIHlv
dXIgcG9ydC1zcGVjaWZpYyBtZWRpYQogICAgIC8vIGNvbnRyb2xzIGltcGxlbWVudGF0aW9uLgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbHM+IGNyZWF0ZShIVE1MTWVkaWFFbGVt
ZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9scz4gY3JlYXRlKERvY3Vt
ZW50Kik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJv
bGxlckludGVyZmFjZSopID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzaG93KCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBoaWRlKCkgPSAwOwpAQCAtNzEsNyArNzMsNyBAQCBjbGFzcyBNZWRpYUNv
bnRyb2xzIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
SGlkZUNvbnRyb2xzKCkgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgTWVkaWFDb250cm9scyhIVE1M
TWVkaWFFbGVtZW50Kik7CisgICAgTWVkaWFDb250cm9scyhEb2N1bWVudCopOwogCiBwcml2YXRl
OgogICAgIE1lZGlhQ29udHJvbHMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114974</attachid>
            <date>2011-11-14 10:20:20 -0800</date>
            <delta_ts>2011-11-15 08:21:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71410-20111114102018.patch</filename>
            <type>text/plain</type>
            <size>94417</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzNjMDQ0NGVhYmZlODVk
ODE2YzBkNmY5YTJmNWI0ZGNkNjFmZDBjZS4uZDI5ZWMzYjM3NDkyMDU5YmZkYTljNGU5MTg2MzY3
YjUwN2IwYzVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NCBAQAorMjAxMS0xMS0wMiAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBNZWRpYUNvbnRyb2xzIHNo
b3VsZCB1c2UgTWVkaWFDb250cm9sbGVyIGlmIHByZXNlbnQuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTQxMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0czsgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbCBtZWRpYSBj
b250cm9scyB0byBjb250cm9sIHRoZSBNZWRpYUNvbnRyb2xsZXIgb2YgdGhlaXIgYXNzb2NpYXRl
ZAorICAgICAgICBIVE1MTWVkaWFFbGVtZW50LCBpZiBwcmVzZW50LgorCisgICAgICAgIFRoZSB2
aWRlbyBzcGVjIHJlcXVpcmVzIHRoYXQgVUEgcHJvdmlkZWQgbWVkaWEgY29udHJvbHMgYmUgaW1w
bGVtZW50ZWQgaW4gdGVybXMgb2YgdGhlaXIgCisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQncyBN
ZWRpYUNvbnRyb2xsZXIsIGlmIHByZXNlbnQuICBTbyBmb3IgZWFjaCBvZiB0aGUgbWVkaWEgY29u
dHJvbHMsIG1vZGlmeSAKKyAgICAgICAgdGhlaXIgY29uc3RydWN0b3IgdG8gdGFrZSBhIERvY3Vt
ZW50KiBpbnN0ZWFkIG9mIGFuIEhUTUxNZWRpYUVsZW1lbnQsIGFuZCBhZGQgYW4gc2V0dGVyCisg
ICAgICAgIHRha2luZyBhIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS4KKworICAgICAgICBOb3cg
dGhhdCBNZWRpYUNvbnRyb2xzIGhhdmUgYW4gYWJzdHJhY3QgaW50ZXJmYWNlIGluc3RlYWQgb2Yg
YW4gSFRNTE1lZGlhRWxlbWVudCwgdXNlIHRvUGFyZW50TWVkaWFFbGVtZW50CisgICAgICAgIHRv
IGZpbmQgdGhlIGNvbnRyb2xsaW5nVmlkZW9FbGVtZW50LgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU1lZGlhQ29udHJvbHNDb250YWluZXI6OmNvbnRyb2xsaW5nVmlkZW9FbGVtZW50
KToKKworICAgICAgICBQYXNzIHRoZSBNZWRpYUNvbnRyb2xsZXIgb3IgdGhlIEhUTUxNZWRpYUVs
ZW1lbnQgd2hlbiBzZXR0aW5nIHVwIHRoZSBlbGVtZW50cyBjb250cm9scy4KKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6Y3JlYXRlTWVkaWFDb250cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpzZXRNZWRpYUNvbnRyb2xsZXIpOgorCisgICAgICAgIFRoZSBmb2xsb3dpbmcgZnVu
Y3Rpb25zIGhhdmUgb25seSBjb25zdHJ1Y3RvciBjaGFuZ2VzOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbEVsZW1lbnQ6Ok1lZGlhQ29udHJvbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sUGFuZWxFbGVtZW50OjpNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRy
b2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250
cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sVm9s
dW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFN0YXR1c0Rp
c3BsYXlFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFN0YXR1c0Rpc3Bs
YXlFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sSW5wdXRF
bGVtZW50OjpNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFBhbmVsTXV0
ZUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25F
bGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50
OjpNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1l
bnQ6Ok1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1l
QnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUb2dnbGVDbG9z
ZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25z
QnV0dG9uRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUb2dnbGVDbG9z
ZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpNZWRpYUNv
bnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50OjpNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50OjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25F
bGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxl
bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5
RWxlbWVudDo6TWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6
TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpNZWRp
YUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xSb290RWxlbWVudDo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29u
dHJvbFJvb3RFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpNZWRpYUNvbnRyb2xzKToKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmg6CisKKyAgICAgICAgVGhlIGZvbGxv
d2luZyBmdW5jdGlvbnMgbm93IGNhbGwgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlIGluc3RlYWQg
b2YgSFRNTE1lZGlhRWxlbWVudCBkaXJlY3RseToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sU3RhdHVz
RGlzcGxheUVsZW1lbnQ6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xN
dXRlQnV0dG9uRWxlbWVudDo6dXBkYXRlRGlzcGxheVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OnVwZGF0ZURpc3Bs
YXlUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50
OjpzdGFydFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFNlZWtCdXR0b25F
bGVtZW50OjpzdG9wVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sU2Vla0J1
dHRvbkVsZW1lbnQ6Om5leHRSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFNl
ZWtCdXR0b25FbGVtZW50OjpzZWVrVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRvZ2ds
ZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1l
bnQ6OnVwZGF0ZURpc3BsYXlUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRp
bWVsaW5lRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9u
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnJlc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpwbGF5YmFja1N0YXJ0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnBsYXliYWNrUHJvZ3Jl
c3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6cGxheWJh
Y2tTdG9wcGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojp1
cGRhdGVUaW1lRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxl
bWVudDo6bG9hZGVkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9v
dEVsZW1lbnQ6OmNoYW5nZWRWb2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
Um9vdEVsZW1lbnQ6OmVudGVyZWRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFJvb3RFbGVtZW50OjpzaG93Vm9sdW1lU2xpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpzdGFydEhpZGVGdWxsc2NyZWVuQ29u
dHJvbHNUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6
aGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyRmlyZWQpOgorICAgICAgICAqIGh0bWwvc2hhZG93
L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnRD
aHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnJlc2V0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnBs
YXliYWNrU3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVu
dENocm9taXVtOjpwbGF5YmFja1Byb2dyZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6cGxheWJhY2tTdG9wcGVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnVwZGF0ZVRpbWVEaXNwbGF5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OmRl
ZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVs
ZW1lbnRDaHJvbWl1bTo6Y2hhbmdlZFZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xSb290RWxlbWVudENocm9taXVtOjpzaG93Vm9sdW1lU2xpZGVyKToKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtLmg6CisKKyAgICAgICAg
VGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgc2V0IHRoZSBjdXJyZW50IE1lZGlhQ29udHJvbGxlcklu
dGVyZmFjZS4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6c2V0TWVkaWFD
b250cm9sbGVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5o
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRWxlbWVudDo6c2V0TWVkaWFDb250cm9s
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEVsZW1lbnQ6Om1lZGlhQ29udHJv
bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OnNldE1l
ZGlhQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xJbnB1dEVsZW1l
bnQ6Om1lZGlhQ29udHJvbGxlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
Um9vdEVsZW1lbnRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xS
b290RWxlbWVudENocm9taXVtOjpzZXRNZWRpYUNvbnRyb2xsZXIpOgorCiAyMDExLTExLTA4ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBNZWRp
YUNvbnRyb2xsZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwCmluZGV4IDUzMWI2YjEyYTBjNjUzNDA3
YmRjNDA4MDljZWNlYWM0OTlhMzdlYzMuLmM3MzNhNzI2YjliYTIwZWM0ODY3N2FhOGE0MTU4ZTJm
ZDQ0NDJhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAKICNp
bmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVu
dHMuaCIKQEAgLTIzNSw3ICsyMzYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xz
Q29udGFpbmVyOjpjb250cm9sbGluZ1ZpZGVvRWxlbWVudCgpIGNvbnN0CiAKICAgICBNZWRpYUNv
bnRyb2xUaW1lRGlzcGxheUVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxNZWRpYUNvbnRy
b2xUaW1lRGlzcGxheUVsZW1lbnQqPihtX3JlbmRlcmVyLT5ub2RlKCkpOwogCi0gICAgcmV0dXJu
IGVsZW1lbnQtPm1lZGlhRWxlbWVudCgpLT5pc1ZpZGVvKCk7CisgICAgcmV0dXJuIHRvUGFyZW50
TWVkaWFFbGVtZW50KGVsZW1lbnQpLT5pc1ZpZGVvKCk7CiB9CiAKIGNvbnN0IFN0cmluZyBBY2Nl
c3NpYmlsaXR5TWVkaWFDb250cm9sc0NvbnRhaW5lcjo6ZWxlbWVudFR5cGVOYW1lKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDFjNDc2ZmYxOGFi
OGM5MDc1NzE5ZjNlMTUyOGMwMTBlNTk3ODU4ZDkuLjgxZGE0MDBlMTU1Yzk3M2NkZjIyN2IyYzAz
NDg1M2MwY2Q3Mzk3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtMzIyNywxMCArMzIyNywxMiBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1l
ZGlhQ29udHJvbHMoKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIEV4Y2VwdGlvbkNvZGUg
ZWM7Ci0gICAgUmVmUHRyPE1lZGlhQ29udHJvbHM+IGNvbnRyb2xzID0gTWVkaWFDb250cm9sczo6
Y3JlYXRlKHRoaXMpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xzPiBjb250cm9scyA9IE1lZGlh
Q29udHJvbHM6OmNyZWF0ZShkb2N1bWVudCgpKTsKICAgICBpZiAoIWNvbnRyb2xzKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKKyAgICBjb250cm9scy0+c2V0TWVkaWFDb250cm9sbGVyKG1fbWVk
aWFDb250cm9sbGVyID8gbV9tZWRpYUNvbnRyb2xsZXIuZ2V0KCkgOiBzdGF0aWNfY2FzdDxNZWRp
YUNvbnRyb2xsZXJJbnRlcmZhY2UqPih0aGlzKSk7CisKICAgICBlbnN1cmVTaGFkb3dSb290KCkt
PmFwcGVuZENoaWxkKGNvbnRyb2xzLCBlYyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMzY3
LDYgKzMzNjksOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldENvbnRyb2xsZXIoUGFzc1Jl
ZlB0cjxNZWRpYUNvbnRyb2xsZXI+IGNvbnRyb2xsZXIpCiAKICAgICBtX21lZGlhQ29udHJvbGxl
ciA9IGNvbnRyb2xsZXI7CiAKKyAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQorICAgICAgICBt
ZWRpYUNvbnRyb2xzKCktPnNldE1lZGlhQ29udHJvbGxlcihtX21lZGlhQ29udHJvbGxlciA/IG1f
bWVkaWFDb250cm9sbGVyLmdldCgpIDogc3RhdGljX2Nhc3Q8TWVkaWFDb250cm9sbGVySW50ZXJm
YWNlKj4odGhpcykpOworCiAgICAgaWYgKG1fbWVkaWFDb250cm9sbGVyKQogICAgICAgICBtX21l
ZGlhQ29udHJvbGxlci0+YWRkTWVkaWFFbGVtZW50KHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCmluZGV4IDc1NzVk
NDFhY2FkM2U5YjIyN2M0ZTQwZDJiMzk4ZjNlOTM2OGI2NjUuLjAwYzI2OWZjZjAxNTQxYTQwM2My
ZWFiZWRjMDA5NmY0ZGVmMGM5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1lZGlhQ29u
dHJvbHMuaCIKQEAgLTUzLDYgKzU0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIEhUTUxNZWRpYUVs
ZW1lbnQqIHRvUGFyZW50TWVkaWFFbGVtZW50KE5vZGUqIG5vZGUpCiB7CkBAIC03MSw5ICs3Myw5
IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBjU2Nhbk1heGltdW1SYXRlID0gODsKIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NZWRpYUNvbnRyb2xFbGVtZW50OjpNZWRpYUNvbnRy
b2xFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLSAgICA6IEhUTUxEaXZF
bGVtZW50KGRpdlRhZywgbWVkaWFFbGVtZW50LT5kb2N1bWVudCgpKQotICAgICwgbV9tZWRpYUVs
ZW1lbnQobWVkaWFFbGVtZW50KQorTWVkaWFDb250cm9sRWxlbWVudDo6TWVkaWFDb250cm9sRWxl
bWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBIVE1MRGl2RWxlbWVudChkaXZUYWcsIGRv
Y3VtZW50KQorICAgICwgbV9tZWRpYUNvbnRyb2xsZXIoMCkKIHsKIH0KIApAQCAtODksMTcgKzkx
LDE3IEBAIHZvaWQgTWVkaWFDb250cm9sRWxlbWVudDo6aGlkZSgpCiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6TWVk
aWFDb250cm9sUGFuZWxFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLSAg
ICA6IE1lZGlhQ29udHJvbEVsZW1lbnQobWVkaWFFbGVtZW50KQoraW5saW5lIE1lZGlhQ29udHJv
bFBhbmVsRWxlbWVudDo6TWVkaWFDb250cm9sUGFuZWxFbGVtZW50KERvY3VtZW50KiBkb2N1bWVu
dCkKKyAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX2NhbkJlRHJh
Z2dlZChmYWxzZSkKICAgICAsIG1faXNCZWluZ0RyYWdnZWQoZmFsc2UpCiAgICAgLCBtX29wYXF1
ZSh0cnVlKQogewogfQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudD4gTWVk
aWFDb250cm9sUGFuZWxFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVt
ZW50KQorUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ+IE1lZGlhQ29udHJvbFBh
bmVsRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudChtZWRpYUVsZW1lbnQpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudChkb2N1bWVudCkpOwog
fQogCiBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6OmRp
c3BsYXlUeXBlKCkgY29uc3QKQEAgLTI0MywxNCArMjQ1LDE0IEBAIHZvaWQgTWVkaWFDb250cm9s
UGFuZWxFbGVtZW50OjpzZXRDYW5CZURyYWdnZWQoYm9vbCBjYW5CZURyYWdnZWQpCiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbFRpbWVsaW5l
Q29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KEhU
TUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLSAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQo
bWVkaWFFbGVtZW50KQoraW5saW5lIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVu
dDo6TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KERvY3VtZW50KiBkb2N1bWVu
dCkKKyAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQoZG9jdW1lbnQpCiB7CiB9CiAKLVBhc3NSZWZQ
dHI8TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xUaW1l
bGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1l
bnQpCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudD4gTWVk
aWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogewotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+
IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVt
ZW50KG1lZGlhRWxlbWVudCkpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRh
aW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVGltZWxpbmVD
b250YWluZXJFbGVtZW50KGRvY3VtZW50KSk7CiAgICAgZWxlbWVudC0+aGlkZSgpOwogICAgIHJl
dHVybiBlbGVtZW50LnJlbGVhc2UoKTsKIH0KQEAgLTI5NiwxNCArMjk4LDE0IEBAIHZvaWQgUmVu
ZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXI6OmxheW91dCgpCiAgICAgc2V0WShvZmZzZXQu
eSgpICsgYnV0dG9uQm94LT5vZmZzZXRUb3AoKSk7CiB9CiAKLWlubGluZSBNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250
YWluZXJFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLSAgICA6IE1lZGlh
Q29udHJvbEVsZW1lbnQobWVkaWFFbGVtZW50KQoraW5saW5lIE1lZGlhQ29udHJvbFZvbHVtZVNs
aWRlckNvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVs
ZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sRWxlbWVudChkb2N1
bWVudCkKIHsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWlu
ZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVh
dGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQorUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJD
b250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiBlbGVtZW50ID0gYWRv
cHRSZWYobmV3IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQobWVkaWFF
bGVtZW50KSk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVs
ZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29u
dGFpbmVyRWxlbWVudChkb2N1bWVudCkpOwogICAgIGVsZW1lbnQtPmhpZGUoKTsKICAgICByZXR1
cm4gZWxlbWVudC5yZWxlYXNlKCk7CiB9CkBAIC0zNDMsMTUgKzM0NSwxNSBAQCBjb25zdCBBdG9t
aWNTdHJpbmcmIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnNoYWRv
d1BzZXVkb0lkKCkgYwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGlu
ZSBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6TWVkaWFDb250cm9sU3RhdHVzRGlz
cGxheUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQotICAgIDogTWVkaWFD
b250cm9sRWxlbWVudChtZWRpYUVsZW1lbnQpCitpbmxpbmUgTWVkaWFDb250cm9sU3RhdHVzRGlz
cGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50KERvY3VtZW50KiBk
b2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX3N0
YXRlQmVpbmdEaXNwbGF5ZWQoTm90aGluZykKIHsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xTdGF0dXNEaXNwbGF5RWxlbWVudD4gTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6
OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCitQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBSZWZQdHI8TWVkaWFDb250
cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250
cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQobWVkaWFFbGVtZW50KSk7CisgICAgUmVmUHRyPE1lZGlh
Q29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlh
Q29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50KGRvY3VtZW50KSk7CiAgICAgZWxlbWVudC0+aGlk
ZSgpOwogICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKIH0KQEAgLTM2MSw5ICszNjMsOSBA
QCB2b2lkIE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50Ojp1cGRhdGUoKQogICAgIC8v
IEdldCB0aGUgbmV3IHN0YXRlIHRoYXQgd2UnbGwgaGF2ZSB0byBkaXNwbGF5LgogICAgIFN0YXRl
QmVpbmdEaXNwbGF5ZWQgbmV3U3RhdGVUb0Rpc3BsYXkgPSBOb3RoaW5nOwogCi0gICAgaWYgKG1l
ZGlhRWxlbWVudCgpLT5yZWFkeVN0YXRlKCkgPD0gSFRNTE1lZGlhRWxlbWVudDo6SEFWRV9NRVRB
REFUQSAmJiAhbWVkaWFFbGVtZW50KCktPmN1cnJlbnRTcmMoKS5pc0VtcHR5KCkpCisgICAgaWYg
KG1lZGlhQ29udHJvbGxlcigpLT5yZWFkeVN0YXRlKCkgPD0gTWVkaWFDb250cm9sbGVySW50ZXJm
YWNlOjpIQVZFX01FVEFEQVRBICYmIG1lZGlhQ29udHJvbGxlcigpLT5oYXNDdXJyZW50U3JjKCkp
CiAgICAgICAgIG5ld1N0YXRlVG9EaXNwbGF5ID0gTG9hZGluZzsKLSAgICBlbHNlIGlmIChtZWRp
YUVsZW1lbnQoKS0+bW92aWVMb2FkVHlwZSgpID09IE1lZGlhUGxheWVyOjpMaXZlU3RyZWFtKQor
ICAgIGVsc2UgaWYgKG1lZGlhQ29udHJvbGxlcigpLT5pc0xpdmVTdHJlYW0oKSkKICAgICAgICAg
bmV3U3RhdGVUb0Rpc3BsYXkgPSBMaXZlQnJvYWRjYXN0OwogCiAgICAgaWYgKG5ld1N0YXRlVG9E
aXNwbGF5ID09IG1fc3RhdGVCZWluZ0Rpc3BsYXllZCkKQEAgLTQwNCw5ICs0MDYsOSBAQCBjb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50OjpzaGFkb3dQ
c2V1ZG9JZCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAK
LU1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6TWVkaWFDb250cm9sSW5wdXRFbGVtZW50KEhUTUxN
ZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxh
eVR5cGUpCi0gICAgOiBIVE1MSW5wdXRFbGVtZW50KGlucHV0VGFnLCBtZWRpYUVsZW1lbnQtPmRv
Y3VtZW50KCksIDAsIGZhbHNlKQotICAgICwgbV9tZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KQor
TWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjpNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoRG9jdW1l
bnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSkKKyAgICA6
IEhUTUxJbnB1dEVsZW1lbnQoaW5wdXRUYWcsIGRvY3VtZW50LCAwLCBmYWxzZSkKKyAgICAsIG1f
bWVkaWFDb250cm9sbGVyKDApCiAgICAgLCBtX2Rpc3BsYXlUeXBlKGRpc3BsYXlUeXBlKQogewog
fQpAQCAtNDM0LDE1ICs0MzYsMTUgQEAgdm9pZCBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OnNl
dERpc3BsYXlUeXBlKE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXAKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sTXV0ZUJ1dHRv
bkVsZW1lbnQ6Ok1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQq
IG1lZGlhRWxlbWVudCwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUpCi0gICAg
OiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQobWVkaWFFbGVtZW50LCBkaXNwbGF5VHlwZSkKK2lu
bGluZSBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sTXV0ZUJ1dHRv
bkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNw
bGF5VHlwZSkKKyAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgZGlzcGxh
eVR5cGUpCiB7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09
IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5zZXRN
dXRlZCghbWVkaWFFbGVtZW50KCktPm11dGVkKCkpOworICAgICAgICBtZWRpYUNvbnRyb2xsZXIo
KS0+c2V0TXV0ZWQoIW1lZGlhQ29udHJvbGxlcigpLT5tdXRlZCgpKTsKICAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQogCkBAIC00NTYsMjIgKzQ1OCwyMiBAQCB2b2lk
IE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OjpjaGFuZ2VkTXV0ZSgpCiAKIHZvaWQgTWVk
aWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6OnVwZGF0ZURpc3BsYXlUeXBlKCkKIHsKLSAgICBz
ZXREaXNwbGF5VHlwZShtZWRpYUVsZW1lbnQoKS0+bXV0ZWQoKSA/IE1lZGlhVW5NdXRlQnV0dG9u
IDogTWVkaWFNdXRlQnV0dG9uKTsKKyAgICBzZXREaXNwbGF5VHlwZShtZWRpYUNvbnRyb2xsZXIo
KS0+bXV0ZWQoKSA/IE1lZGlhVW5NdXRlQnV0dG9uIDogTWVkaWFNdXRlQnV0dG9uKTsKIH0KIAog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sUGFu
ZWxNdXRlQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudChI
VE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQsIE1lZGlhQ29udHJvbHMqIGNvbnRyb2xzKQot
ICAgIDogTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50LCBNZWRpYU11
dGVCdXR0b24pCitpbmxpbmUgTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudDo6TWVk
aWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlh
Q29udHJvbHMqIGNvbnRyb2xzKQorICAgIDogTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQo
ZG9jdW1lbnQsIE1lZGlhTXV0ZUJ1dHRvbikKICAgICAsIG1fY29udHJvbHMoY29udHJvbHMpCiB7
CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudD4gTWVk
aWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQq
IG1lZGlhRWxlbWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCitQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRv
bkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbHMqIGNvbnRy
b2xzKQogewogICAgIEFTU0VSVChjb250cm9scyk7CiAKLSAgICBSZWZQdHI8TWVkaWFDb250cm9s
UGFuZWxNdXRlQnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJv
bFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50LCBjb250cm9scykpOworICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJl
ZihuZXcgTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudChkb2N1bWVudCwgY29udHJv
bHMpKTsKICAgICBidXR0b24tPnNldFR5cGUoImJ1dHRvbiIpOwogICAgIHJldHVybiBidXR0b24u
cmVsZWFzZSgpOwogfQpAQCAtNDkyLDE0ICs0OTQsMTQgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBN
ZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJv
bFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJN
dXRlQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi0gICAgOiBN
ZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQsIE1lZGlhTXV0ZUJ1dHRv
bikKK2lubGluZSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudDo6TWVk
aWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50
KQorICAgIDogTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhTXV0
ZUJ1dHRvbikKIHsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRl
QnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ6
OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCitQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJNdXRlQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAg
ICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ+IGJ1dHRv
biA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVu
dChtZWRpYUVsZW1lbnQpKTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0
ZUJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJNdXRlQnV0dG9uRWxlbWVudChkb2N1bWVudCkpOwogICAgIGJ1dHRvbi0+c2V0VHlwZSgi
YnV0dG9uIik7CiAgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7CiB9CkBAIC01MTIsMTQgKzUx
NCwxNCBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVC
dXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotaW5saW5lIE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpNZWRpYUNv
bnRyb2xQbGF5QnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi0g
ICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQobWVkaWFFbGVtZW50LCBNZWRpYVBsYXlCdXR0
b24pCitpbmxpbmUgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBs
YXlCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbElu
cHV0RWxlbWVudChkb2N1bWVudCwgTWVkaWFQbGF5QnV0dG9uKQogewogfQogCi1QYXNzUmVmUHRy
PE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxl
bWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK1Bhc3NSZWZQdHI8
TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIFJlZlB0cjxNZWRpYUNvbnRy
b2xQbGF5QnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFBs
YXlCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCkpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQ
bGF5QnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFBsYXlC
dXR0b25FbGVtZW50KGRvY3VtZW50KSk7CiAgICAgYnV0dG9uLT5zZXRUeXBlKCJidXR0b24iKTsK
ICAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKIH0KQEAgLTUyNyw3ICs1MjksMTAgQEAgUGFz
c1JlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sUGxheUJ1
dHRvbkVsZW1lbnQ6OmNyZWF0ZSgKIHZvaWQgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIG1lZGlhRWxlbWVudCgp
LT50b2dnbGVQbGF5U3RhdGUoKTsKKyAgICAgICAgaWYgKG1lZGlhQ29udHJvbGxlcigpLT5jYW5Q
bGF5KCkpCisgICAgICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+cGxheSgpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+cGF1c2UoKTsKICAgICAgICAgdXBk
YXRlRGlzcGxheVR5cGUoKTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAg
ICAgfQpAQCAtNTM2LDcgKzU0MSw3IEBAIHZvaWQgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogCiB2b2lkIE1lZGlhQ29udHJv
bFBsYXlCdXR0b25FbGVtZW50Ojp1cGRhdGVEaXNwbGF5VHlwZSgpCiB7Ci0gICAgc2V0RGlzcGxh
eVR5cGUobWVkaWFFbGVtZW50KCktPmNhblBsYXkoKSA/IE1lZGlhUGxheUJ1dHRvbiA6IE1lZGlh
UGF1c2VCdXR0b24pOworICAgIHNldERpc3BsYXlUeXBlKG1lZGlhQ29udHJvbGxlcigpLT5jYW5Q
bGF5KCkgPyBNZWRpYVBsYXlCdXR0b24gOiBNZWRpYVBhdXNlQnV0dG9uKTsKIH0KIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRv
SWQoKSBjb25zdApAQCAtNTQ3LDggKzU1Miw4IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFD
b250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sU2Vla0J1dHRv
bkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQq
IG1lZGlhRWxlbWVudCwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUpCi0gICAg
OiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQobWVkaWFFbGVtZW50LCBkaXNwbGF5VHlwZSkKK2lu
bGluZSBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sU2Vla0J1dHRv
bkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNw
bGF5VHlwZSkKKyAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgZGlzcGxh
eVR5cGUpCiAgICAgLCBtX2FjdGlvbk9uU3RvcChOb3RoaW5nKQogICAgICwgbV9zZWVrVHlwZShT
a2lwKQogICAgICwgbV9zZWVrVGltZXIodGhpcywgJk1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVt
ZW50OjpzZWVrVGltZXJGaXJlZCkKQEAgLTU3OCwxNyArNTgzLDE3IEBAIHZvaWQgTWVkaWFDb250
cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OnNldEFjdGl2ZShib29sIGZsYWcsIGJvb2wgcGF1c2UpCiAK
IHZvaWQgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OnN0YXJ0VGltZXIoKQogewotICAg
IG1fc2Vla1R5cGUgPSBtZWRpYUVsZW1lbnQoKS0+c3VwcG9ydHNTY2FubmluZygpID8gU2NhbiA6
IFNraXA7CisgICAgbV9zZWVrVHlwZSA9IG1lZGlhQ29udHJvbGxlcigpLT5zdXBwb3J0c1NjYW5u
aW5nKCkgPyBTY2FuIDogU2tpcDsKIAogICAgIGlmIChtX3NlZWtUeXBlID09IFNraXApIHsKICAg
ICAgICAgLy8gU2Vla2luZyBieSBza2lwcGluZyByZXF1aXJlcyB0aGUgdmlkZW8gdG8gYmUgcGF1
c2VkIGR1cmluZyBzZWVraW5nLgotICAgICAgICBtX2FjdGlvbk9uU3RvcCA9IG1lZGlhRWxlbWVu
dCgpLT5pc1BsYXlpbmcoKSA/IFBsYXkgOiBOb3RoaW5nOwotICAgICAgICBtZWRpYUVsZW1lbnQo
KS0+cGF1c2UoKTsKKyAgICAgICAgbV9hY3Rpb25PblN0b3AgPSBtZWRpYUNvbnRyb2xsZXIoKS0+
cGF1c2VkKCkgPyBOb3RoaW5nIDogUGxheTsKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnBh
dXNlKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gU2Vla2luZyBieSBzY2FubmluZyByZXF1
aXJlcyB0aGUgdmlkZW8gdG8gYmUgcGxheWluZyBkdXJpbmcgc2Vla2luZy4KLSAgICAgICAgbV9h
Y3Rpb25PblN0b3AgPSBtZWRpYUVsZW1lbnQoKS0+cGF1c2VkKCkgPyBQYXVzZSA6IE5vdGhpbmc7
Ci0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5wbGF5KCk7Ci0gICAgICAgIG1lZGlhRWxlbWVudCgp
LT5zZXRQbGF5YmFja1JhdGUobmV4dFJhdGUoKSk7CisgICAgICAgIG1fYWN0aW9uT25TdG9wID0g
bWVkaWFDb250cm9sbGVyKCktPnBhdXNlZCgpID8gUGF1c2UgOiBOb3RoaW5nOworICAgICAgICBt
ZWRpYUNvbnRyb2xsZXIoKS0+cGxheSgpOworICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0
UGxheWJhY2tSYXRlKG5leHRSYXRlKCkpOwogICAgIH0KIAogICAgIG1fc2Vla1RpbWVyLnN0YXJ0
KDAsIG1fc2Vla1R5cGUgPT0gU2tpcCA/IGNTa2lwUmVwZWF0RGVsYXkgOiBjU2NhblJlcGVhdERl
bGF5KTsKQEAgLTU5NywxMiArNjAyLDEyIEBAIHZvaWQgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVs
ZW1lbnQ6OnN0YXJ0VGltZXIoKQogdm9pZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6
c3RvcFRpbWVyKCkKIHsKICAgICBpZiAobV9zZWVrVHlwZSA9PSBTY2FuKQotICAgICAgICBtZWRp
YUVsZW1lbnQoKS0+c2V0UGxheWJhY2tSYXRlKG1lZGlhRWxlbWVudCgpLT5kZWZhdWx0UGxheWJh
Y2tSYXRlKCkpOworICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0UGxheWJhY2tSYXRlKG1l
ZGlhQ29udHJvbGxlcigpLT5kZWZhdWx0UGxheWJhY2tSYXRlKCkpOwogCiAgICAgaWYgKG1fYWN0
aW9uT25TdG9wID09IFBsYXkpCi0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5wbGF5KCk7CisgICAg
ICAgIG1lZGlhQ29udHJvbGxlcigpLT5wbGF5KCk7CiAgICAgZWxzZSBpZiAobV9hY3Rpb25PblN0
b3AgPT0gUGF1c2UpCi0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5wYXVzZSgpOworICAgICAgICBt
ZWRpYUNvbnRyb2xsZXIoKS0+cGF1c2UoKTsKIAogICAgIGlmIChtX3NlZWtUaW1lci5pc0FjdGl2
ZSgpKQogICAgICAgICBtX3NlZWtUaW1lci5zdG9wKCk7CkBAIC02MTAsNyArNjE1LDcgQEAgdm9p
ZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6c3RvcFRpbWVyKCkKIAogZmxvYXQgTWVk
aWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6Om5leHRSYXRlKCkgY29uc3QKIHsKLSAgICBmbG9h
dCByYXRlID0gc3RkOjptaW4oY1NjYW5NYXhpbXVtUmF0ZSwgZmFic2YobWVkaWFFbGVtZW50KCkt
PnBsYXliYWNrUmF0ZSgpICogMikpOworICAgIGZsb2F0IHJhdGUgPSBzdGQ6Om1pbihjU2Nhbk1h
eGltdW1SYXRlLCBmYWJzZihtZWRpYUNvbnRyb2xsZXIoKS0+cGxheWJhY2tSYXRlKCkgKiAyKSk7
CiAgICAgaWYgKCFpc0ZvcndhcmRCdXR0b24oKSkKICAgICAgICAgcmF0ZSAqPSAtMTsKICAgICBy
ZXR1cm4gcmF0ZTsKQEAgLTYyMSwyMSArNjI2LDIxIEBAIHZvaWQgTWVkaWFDb250cm9sU2Vla0J1
dHRvbkVsZW1lbnQ6OnNlZWtUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbFNlZWtCdXR0b25F
CiAgICAgaWYgKG1fc2Vla1R5cGUgPT0gU2tpcCkgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVj
OwogICAgICAgICBmbG9hdCBza2lwVGltZSA9IGlzRm9yd2FyZEJ1dHRvbigpID8gY1NraXBUaW1l
IDogLWNTa2lwVGltZTsKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPnNldEN1cnJlbnRUaW1lKG1l
ZGlhRWxlbWVudCgpLT5jdXJyZW50VGltZSgpICsgc2tpcFRpbWUsIGVjKTsKKyAgICAgICAgbWVk
aWFDb250cm9sbGVyKCktPnNldEN1cnJlbnRUaW1lKG1lZGlhQ29udHJvbGxlcigpLT5jdXJyZW50
VGltZSgpICsgc2tpcFRpbWUsIGVjKTsKICAgICB9IGVsc2UKLSAgICAgICAgbWVkaWFFbGVtZW50
KCktPnNldFBsYXliYWNrUmF0ZShuZXh0UmF0ZSgpKTsKKyAgICAgICAgbWVkaWFDb250cm9sbGVy
KCktPnNldFBsYXliYWNrUmF0ZShuZXh0UmF0ZSgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVt
ZW50OjpNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVu
dCogbWVkaWFFbGVtZW50KQotICAgIDogTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQobWVk
aWFFbGVtZW50LCBNZWRpYVNlZWtGb3J3YXJkQnV0dG9uKQoraW5saW5lIE1lZGlhQ29udHJvbFNl
ZWtGb3J3YXJkQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVt
ZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVt
ZW50KGRvY3VtZW50LCBNZWRpYVNlZWtGb3J3YXJkQnV0dG9uKQogewogfQogCi1QYXNzUmVmUHRy
PE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sU2Vla0Zv
cndhcmRCdXR0b25FbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50
KQorUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ+IE1lZGlh
Q29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCkKIHsKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50PiBi
dXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50
KG1lZGlhRWxlbWVudCkpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRv
bkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1
dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsKICAgICBidXR0b24tPnNldFR5cGUoImJ1dHRvbiIpOwog
ICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOwogfQpAQCAtNjQ4LDE0ICs2NTMsMTQgQEAgY29u
c3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ6OnNo
YWRvd1BzZXVkb0lkKCkgY29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1pbmxpbmUgTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xT
ZWVrQmFja0J1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQotICAg
IDogTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50LCBNZWRpYVNlZWtC
YWNrQnV0dG9uKQoraW5saW5lIE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudDo6TWVk
aWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6
IE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50KGRvY3VtZW50LCBNZWRpYVNlZWtCYWNrQnV0
dG9uKQogewogfQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVu
dD4gTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxl
bWVudCogbWVkaWFFbGVtZW50KQorUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRv
bkVsZW1lbnQ+IE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3Vt
ZW50KiBkb2N1bWVudCkKIHsKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25F
bGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25F
bGVtZW50KG1lZGlhRWxlbWVudCkpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xTZWVrQmFja0J1
dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xTZWVrQmFja0J1
dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsKICAgICBidXR0b24tPnNldFR5cGUoImJ1dHRvbiIpOwog
ICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOwogfQpAQCAtNjY4LDE0ICs2NzMsMTQgQEAgY29u
c3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ6OnNoYWRv
d1BzZXVkb0lkKCkgY29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1p
bmxpbmUgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sUmV3aW5k
QnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQotICAgIDogTWVkaWFDb250
cm9sSW5wdXRFbGVtZW50KGVsZW1lbnQsIE1lZGlhUmV3aW5kQnV0dG9uKQoraW5saW5lIE1lZGlh
Q29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1l
bnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRv
Y3VtZW50LCBNZWRpYVJld2luZEJ1dHRvbikKIHsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xSZXdpbmRCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50Ojpj
cmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQorUGFzc1JlZlB0cjxNZWRpYUNv
bnRyb2xSZXdpbmRCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50
OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xS
ZXdpbmRCdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sUmV3
aW5kQnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQpKTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9s
UmV3aW5kQnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFJl
d2luZEJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsKICAgICBidXR0b24tPnNldFR5cGUoImJ1dHRv
biIpOwogICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOwogfQpAQCAtNjgzLDcgKzY4OCw4IEBA
IFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9s
UmV3aW5kQnV0dG9uRWxlbWVudDo6Y3JlCiB2b2lkIE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIG1lZGlhRWxl
bWVudCgpLT5yZXdpbmQoMzApOworICAgICAgICBFeGNlcHRpb25Db2RlIGNvZGUgPSAwOworICAg
ICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Q3VycmVudFRpbWUobWF4KDAuMGYsIG1lZGlhQ29u
dHJvbGxlcigpLT5jdXJyZW50VGltZSgpIC0gMzApLCBjb2RlKTsKICAgICAgICAgZXZlbnQtPnNl
dERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfSAgICAKICAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKQEAgLTY5NywxNCArNzAzLDE0IEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQo
KSBjb25zdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBNZWRp
YUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sUmV0dXJu
VG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQot
ICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KG1lZGlhRWxlbWVudCwgTWVkaWFSZXR1cm5U
b1JlYWx0aW1lQnV0dG9uKQoraW5saW5lIE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0
b25FbGVtZW50OjpNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudChEb2N1
bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoZG9jdW1lbnQs
IE1lZGlhUmV0dXJuVG9SZWFsdGltZUJ1dHRvbikKIHsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYUNv
bnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sUmV0dXJuVG9S
ZWFsdGltZUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1l
bnQpCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50
PiBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6Y3JlYXRlKERvY3Vt
ZW50KiBkb2N1bWVudCkKIHsKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGlt
ZUJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xSZXR1cm5U
b1JlYWx0aW1lQnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQpKTsKKyAgICBSZWZQdHI8TWVkaWFD
b250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5l
dyBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudChkb2N1bWVudCkpOwog
ICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7CiAgICAgYnV0dG9uLT5oaWRlKCk7CiAgICAg
cmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7CkBAIC03MTMsNyArNzE5LDcgQEAgUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sUmV0
dXJuVG9SZWFsdGkKIHZvaWQgTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIG1lZGlhRWxlbWVu
dCgpLT5yZXR1cm5Ub1JlYWx0aW1lKCk7CisgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5yZXR1
cm5Ub1JlYWx0aW1lKCk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAg
IH0KICAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKQEAg
LTcyNywxNCArNzMzLDE0IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sUmV0dXJu
VG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2Fw
dGlvbnNCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRv
bkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQotICAgIDogTWVkaWFDb250
cm9sSW5wdXRFbGVtZW50KG1lZGlhRWxlbWVudCwgTWVkaWFTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0
b24pCitpbmxpbmUgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50
OjpNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQq
IGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50LCBNZWRp
YVNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbikKIHsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRy
b2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFRvZ2dsZUNs
b3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlh
RWxlbWVudCkKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0
b25FbGVtZW50PiBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6
OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFRv
Z2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1l
ZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQp
KTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVt
ZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlv
bnNCdXR0b25FbGVtZW50KGRvY3VtZW50KSk7CiAgICAgYnV0dG9uLT5zZXRUeXBlKCJidXR0b24i
KTsKICAgICBidXR0b24tPmhpZGUoKTsKICAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKQEAg
LTc0Myw4ICs3NDksOCBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRp
b25zQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sVG9nZ2xlQ2xvcwogdm9pZCBNZWRpYUNvbnRy
b2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5j
bGlja0V2ZW50KSB7Ci0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5zZXRDbG9zZWRDYXB0aW9uc1Zp
c2libGUoIW1lZGlhRWxlbWVudCgpLT5jbG9zZWRDYXB0aW9uc1Zpc2libGUoKSk7Ci0gICAgICAg
IHNldENoZWNrZWQobWVkaWFFbGVtZW50KCktPmNsb3NlZENhcHRpb25zVmlzaWJsZSgpKTsKKyAg
ICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldENsb3NlZENhcHRpb25zVmlzaWJsZSghbWVkaWFD
b250cm9sbGVyKCktPmNsb3NlZENhcHRpb25zVmlzaWJsZSgpKTsKKyAgICAgICAgc2V0Q2hlY2tl
ZChtZWRpYUNvbnRyb2xsZXIoKS0+Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkpOwogICAgICAgICB1
cGRhdGVEaXNwbGF5VHlwZSgpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsK
ICAgICB9CkBAIC03NTQsNyArNzYwLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRD
YXB0aW9uc0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGUKIAogdm9p
ZCBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OnVwZGF0ZURp
c3BsYXlUeXBlKCkKIHsKLSAgICBzZXREaXNwbGF5VHlwZShtZWRpYUVsZW1lbnQoKS0+Y2xvc2Vk
Q2FwdGlvbnNWaXNpYmxlKCkgPyBNZWRpYUhpZGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA6IE1lZGlh
U2hvd0Nsb3NlZENhcHRpb25zQnV0dG9uKTsKKyAgICBzZXREaXNwbGF5VHlwZShtZWRpYUNvbnRy
b2xsZXIoKS0+Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkgPyBNZWRpYUhpZGVDbG9zZWRDYXB0aW9u
c0J1dHRvbiA6IE1lZGlhU2hvd0Nsb3NlZENhcHRpb25zQnV0dG9uKTsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6
OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKQEAgLTc2NSwxNyArNzcxLDE3IEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50Ojpz
aGFkb3dQc2V1ZG9JCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotTWVkaWFD
b250cm9sVGltZWxpbmVFbGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQoSFRNTE1l
ZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250cm9scykKLSAgICA6
IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChtZWRpYUVsZW1lbnQsIE1lZGlhU2xpZGVyKQorTWVk
aWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250cm9scykKKyAgICA6IE1lZGlhQ29u
dHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgTWVkaWFTbGlkZXIpCiAgICAgLCBtX2NvbnRyb2xz
KGNvbnRyb2xzKQogewogfQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVu
dD4gTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbGVtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250cm9scykKK1Bhc3NSZWZQdHI8TWVkaWFD
b250cm9sVGltZWxpbmVFbGVtZW50PiBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OmNyZWF0
ZShEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbHMqIGNvbnRyb2xzKQogewogICAgIEFT
U0VSVChjb250cm9scyk7CiAKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50
PiB0aW1lbGluZSA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQobWVk
aWFFbGVtZW50LCBjb250cm9scykpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUVs
ZW1lbnQ+IHRpbWVsaW5lID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVu
dChkb2N1bWVudCwgY29udHJvbHMpKTsKICAgICB0aW1lbGluZS0+c2V0VHlwZSgicmFuZ2UiKTsK
ICAgICB0aW1lbGluZS0+c2V0QXR0cmlidXRlKHByZWNpc2lvbkF0dHIsICJmbG9hdCIpOwogICAg
IHJldHVybiB0aW1lbGluZS5yZWxlYXNlKCk7CkBAIC03OTEsMTAgKzc5NywxMCBAQCB2b2lkIE1l
ZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZl
bnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5tb3VzZWRvd25FdmVudCkKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPmJlZ2luU2NydWJi
aW5nKCk7CisgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5iZWdpblNjcnViYmluZygpOwogCiAg
ICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCkKLSAgICAg
ICAgbWVkaWFFbGVtZW50KCktPmVuZFNjcnViYmluZygpOworICAgICAgICBtZWRpYUNvbnRyb2xs
ZXIoKS0+ZW5kU2NydWJiaW5nKCk7CiAKICAgICBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogCkBAIC04MDIsMTAgKzgwOCwxMCBAQCB2b2lkIE1l
ZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZl
bnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZsb2F0IHRpbWUgPSBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KHZhbHVlKCkudG9Eb3VibGUoKSk7Ci0gICAgaWYgKHRpbWUgIT0gbWVkaWFFbGVtZW50
KCktPmN1cnJlbnRUaW1lKCkpIHsKKyAgICBpZiAodGltZSAhPSBtZWRpYUNvbnRyb2xsZXIoKS0+
Y3VycmVudFRpbWUoKSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBmaXJlZCAzIHRpbWVz
IG9uIGV2ZXJ5IGNsaWNrLiBXZSBzaG91bGQgbm90IGJlIGRvaW5nIHRoYXQgPGh0dHA6L3dlYmtp
dC5vcmcvYi81ODE2MD4uCiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAgIG1lZGlh
RWxlbWVudCgpLT5zZXRDdXJyZW50VGltZSh0aW1lLCBlYyk7CisgICAgICAgIG1lZGlhQ29udHJv
bGxlcigpLT5zZXRDdXJyZW50VGltZSh0aW1lLCBlYyk7CiAgICAgfQogCiAgICAgUmVuZGVyU2xp
ZGVyKiBzbGlkZXIgPSB0b1JlbmRlclNsaWRlcihyZW5kZXJlcigpKTsKQEAgLTgzMiwxOCArODM4
LDE3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50Ojpz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotaW5saW5lIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6Ok1lZGlhQ29udHJvbFZv
bHVtZVNsaWRlckVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQotICAgIDog
TWVkaWFDb250cm9sSW5wdXRFbGVtZW50KG1lZGlhRWxlbWVudCwgTWVkaWFWb2x1bWVTbGlkZXIp
CitpbmxpbmUgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6TWVkaWFDb250cm9sVm9s
dW1lU2xpZGVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xJ
bnB1dEVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhVm9sdW1lU2xpZGVyKQogewogfQogCi1QYXNzUmVm
UHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFZvbHVtZVNs
aWRlckVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCitQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgUmVmUHRy
PE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IGFkb3B0UmVmKG5ldyBN
ZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50KG1lZGlhRWxlbWVudCkpOworICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50PiBzbGlkZXIgPSBhZG9wdFJlZihuZXcg
TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudChkb2N1bWVudCkpOwogICAgIHNsaWRlci0+
c2V0VHlwZSgicmFuZ2UiKTsKICAgICBzbGlkZXItPnNldEF0dHJpYnV0ZShwcmVjaXNpb25BdHRy
LCAiZmxvYXQiKTsKICAgICBzbGlkZXItPnNldEF0dHJpYnV0ZShtYXhBdHRyLCAiMSIpOwotICAg
IHNsaWRlci0+c2V0QXR0cmlidXRlKHZhbHVlQXR0ciwgU3RyaW5nOjpudW1iZXIobWVkaWFFbGVt
ZW50LT52b2x1bWUoKSkpOwogICAgIHJldHVybiBzbGlkZXIucmVsZWFzZSgpOwogfQogCkBAIC04
NjIsOSArODY3LDkgQEAgdm9pZCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZmxv
YXQgdm9sdW1lID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCh2YWx1ZSgpLnRvRG91YmxlKCkpOwot
ICAgIGlmICh2b2x1bWUgIT0gbWVkaWFFbGVtZW50KCktPnZvbHVtZSgpKSB7CisgICAgaWYgKHZv
bHVtZSAhPSBtZWRpYUNvbnRyb2xsZXIoKS0+dm9sdW1lKCkpIHsKICAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5zZXRWb2x1bWUodm9sdW1lLCBl
Yyk7CisgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRWb2x1bWUodm9sdW1lLCBlYyk7CiAg
ICAgICAgIEFTU0VSVCghZWMpOwogICAgIH0KIH0KQEAgLTg4MywxOCArODg4LDE3IEBAIGNvbnN0
IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6c2hhZG93UHNl
dWRvSWQoKSBjb25zdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGlu
ZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudDo6TWVkaWFDb250cm9s
RnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVt
ZW50KQotICAgIDogTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudChtZWRpYUVsZW1lbnQp
CitpbmxpbmUgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ6Ok1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkK
KyAgICA6IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQoZG9jdW1lbnQpCiB7CiB9CiAK
LVBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ+IE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlh
RWxlbWVudCogbWVkaWFFbGVtZW50KQorUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
Vm9sdW1lU2xpZGVyRWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVs
ZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgUmVmUHRyPE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50PiBzbGlkZXIgPSBhZG9wdFJlZihuZXcg
TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQobWVkaWFFbGVtZW50KSk7
CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50PiBz
bGlkZXIgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVs
ZW1lbnQoZG9jdW1lbnQpKTsKICAgICBzbGlkZXItPnNldFR5cGUoInJhbmdlIik7CiAgICAgc2xp
ZGVyLT5zZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0ciwgImZsb2F0Iik7CiAgICAgc2xpZGVyLT5z
ZXRBdHRyaWJ1dGUobWF4QXR0ciwgIjEiKTsKLSAgICBzbGlkZXItPnNldEF0dHJpYnV0ZSh2YWx1
ZUF0dHIsIFN0cmluZzo6bnVtYmVyKG1lZGlhRWxlbWVudC0+dm9sdW1lKCkpKTsKICAgICByZXR1
cm4gc2xpZGVyLnJlbGVhc2UoKTsKIH0KIApAQCAtOTA2LDE3ICs5MTAsMTcgQEAgY29uc3QgQXRv
bWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudDo6c2hh
ZG93UHNldWRvSWQoKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGlu
ZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNj
cmVlbkJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBNZWRpYUNv
bnRyb2xzKiBjb250cm9scykKLSAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChtZWRpYUVs
ZW1lbnQsIE1lZGlhRnVsbHNjcmVlbkJ1dHRvbikKK2lubGluZSBNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250cm9scykKKyAgICA6IE1lZGlhQ29u
dHJvbElucHV0RWxlbWVudChkb2N1bWVudCwgTWVkaWFGdWxsc2NyZWVuQnV0dG9uKQogICAgICwg
bV9jb250cm9scyhjb250cm9scykKIHsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6
OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQsIE1lZGlhQ29udHJvbHMqIGNv
bnRyb2xzKQorUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4g
TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9j
dW1lbnQsIE1lZGlhQ29udHJvbHMqIGNvbnRyb2xzKQogewogICAgIEFTU0VSVChjb250cm9scyk7
CiAKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGJ1dHRv
biA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudChtZWRp
YUVsZW1lbnQsIGNvbnRyb2xzKSk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5C
dXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVl
bkJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQsIGNvbnRyb2xzKSk7CiAgICAgYnV0dG9uLT5zZXRUeXBl
KCJidXR0b24iKTsKICAgICBidXR0b24tPmhpZGUoKTsKICAgICByZXR1cm4gYnV0dG9uLnJlbGVh
c2UoKTsKQEAgLTkzMiwxMyArOTM2LDEzIEBAIHZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1
dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAgICAv
LyB2aWRlbyBpbXBsZW1lbnRhdGlvbiB3aXRob3V0IHJlcXVpcmluZyB0aGVtIHRvIGltcGxlbWVu
dCB0aGVpciBvd24gZnVsbCAKICAgICAgICAgLy8gc2NyZWVuIGJlaGF2aW9yLgogICAgICAgICBp
ZiAoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSAmJiBkb2N1bWVudCgpLT5zZXR0aW5ncygpLT5mdWxs
U2NyZWVuRW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICBpZiAoZG9jdW1lbnQoKS0+d2Via2l0SXNG
dWxsU2NyZWVuKCkgJiYgZG9jdW1lbnQoKS0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50
KCkgPT0gbWVkaWFFbGVtZW50KCkpCisgICAgICAgICAgICBpZiAoZG9jdW1lbnQoKS0+d2Via2l0
SXNGdWxsU2NyZWVuKCkgJiYgZG9jdW1lbnQoKS0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVt
ZW50KCkgPT0gdG9QYXJlbnRNZWRpYUVsZW1lbnQodGhpcykpCiAgICAgICAgICAgICAgICAgZG9j
dW1lbnQoKS0+d2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGRvY3VtZW50KCktPnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudChtZWRp
YUVsZW1lbnQoKSwgMCwgRG9jdW1lbnQ6OkV4ZW1wdElGcmFtZUFsbG93RnVsU2NyZWVuUmVxdWly
ZW1lbnQpOworICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPnJlcXVlc3RGdWxsU2NyZWVuRm9y
RWxlbWVudCh0b1BhcmVudE1lZGlhRWxlbWVudCh0aGlzKSwgMCwgRG9jdW1lbnQ6OkV4ZW1wdElG
cmFtZUFsbG93RnVsU2NyZWVuUmVxdWlyZW1lbnQpOwogICAgICAgICB9IGVsc2UKICNlbmRpZgot
ICAgICAgICAgICAgbWVkaWFFbGVtZW50KCktPmVudGVyRnVsbHNjcmVlbigpOworICAgICAgICAg
ICAgbWVkaWFDb250cm9sbGVyKCktPmVudGVyRnVsbHNjcmVlbigpOwogICAgICAgICBldmVudC0+
c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9CiAgICAgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihldmVudCk7CkBAIC05NTIsMTQgKzk1NiwxNCBAQCBjb25zdCBBdG9taWNT
dHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9J
ZCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVs
ZW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQobWVkaWFFbGVtZW50LCBNZWRp
YVVuTXV0ZUJ1dHRvbikKK2lubGluZSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0
dG9uRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRvY3Vt
ZW50LCBNZWRpYVVuTXV0ZUJ1dHRvbikKIHsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlblZv
bHVtZU1pbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1l
bnQpCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVt
ZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDo6Y3JlYXRl
KERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVl
blZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQpKTsKKyAgICBS
ZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ+IGJ1dHRv
biA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxl
bWVudChkb2N1bWVudCkpOwogICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7CiAgICAgcmV0
dXJuIGJ1dHRvbi5yZWxlYXNlKCk7CiB9CkBAIC05NjgsNyArOTcyLDcgQEAgdm9pZCBNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXYKIHsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xp
Y2tFdmVudCkgewogICAgICAgICBFeGNlcHRpb25Db2RlIGNvZGUgPSAwOwotICAgICAgICBtZWRp
YUVsZW1lbnQoKS0+c2V0Vm9sdW1lKDAsIGNvZGUpOworICAgICAgICBtZWRpYUNvbnRyb2xsZXIo
KS0+c2V0Vm9sdW1lKDAsIGNvZGUpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQo
KTsKICAgICB9CiAgICAgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVu
dCk7CkBAIC05ODIsMTQgKzk4NiwxNCBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZAogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1h
eEJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQotOiBNZWRpYUNv
bnRyb2xJbnB1dEVsZW1lbnQobWVkaWFFbGVtZW50LCBNZWRpYU11dGVCdXR0b24pCitpbmxpbmUg
TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKKzog
TWVkaWFDb250cm9sSW5wdXRFbGVtZW50KGRvY3VtZW50LCBNZWRpYU11dGVCdXR0b24pCiB7CiB9
CiAKLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1l
bnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50OjpjcmVhdGUo
SFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQorUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xG
dWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlblZv
bHVtZU1heEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAg
UmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50PiBidXR0
b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVs
ZW1lbnQobWVkaWFFbGVtZW50KSk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5W
b2x1bWVNYXhCdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9s
RnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsKICAgICBidXR0b24t
PnNldFR5cGUoImJ1dHRvbiIpOwogICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOwogfQpAQCAt
OTk4LDcgKzEwMDIsNyBAQCB2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0
b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldgogewogICAgIGlmIChldmVu
dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CiAgICAgICAgIEV4Y2VwdGlv
bkNvZGUgY29kZSA9IDA7Ci0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5zZXRWb2x1bWUoMSwgY29k
ZSk7CisgICAgICAgIG1lZGlhQ29udHJvbGxlcigpLT5zZXRWb2x1bWUoMSwgY29kZSk7CiAgICAg
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KICAgICBIVE1MSW5wdXRFbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKQEAgLTEwNDAsOCArMTA0NCw4IEBAIHZv
aWQgUmVuZGVyTWVkaWFDb250cm9sVGltZURpc3BsYXk6OmxheW91dCgpCiAgICAgICAgIHNldFdp
ZHRoKDApOwogfQogCi1pbmxpbmUgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50OjpNZWRp
YUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50
KQotICAgIDogTWVkaWFDb250cm9sRWxlbWVudChtZWRpYUVsZW1lbnQpCitpbmxpbmUgTWVkaWFD
b250cm9sVGltZURpc3BsYXlFbGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sRWxlbWVudChkb2N1bWVudCkK
ICAgICAsIG1fY3VycmVudFZhbHVlKDApCiB7CiB9CkBAIC0xMDU4LDEzICsxMDYyLDEzIEBAIFJl
bmRlck9iamVjdCogTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSogYXJlbmEsCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ+IE1l
ZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVs
ZW1lbnQqIG1lZGlhRWxlbWVudCkKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sVGltZVJlbWFpbmlu
Z0Rpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ6
OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
ZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQobWVkaWFFbGVtZW50KSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVs
ZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlF
bGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQoSFRNTE1lZGlh
RWxlbWVudCogbWVkaWFFbGVtZW50KQotICAgIDogTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVt
ZW50KG1lZGlhRWxlbWVudCkKK01lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVu
dDo6TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50KERvY3VtZW50KiBkb2N1
bWVudCkKKyAgICA6IE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChkb2N1bWVudCkKIHsK
IH0KIApAQCAtMTA4MSwxMyArMTA4NSwxMyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29u
dHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjbwogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVBhc3NSZWZQdHI8TWVkaWFDb250cm9s
Q3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4gTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5
RWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK1Bhc3NSZWZQ
dHI8TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4gTWVkaWFDb250cm9sQ3Vy
cmVudFRpbWVEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1l
bnQobWVkaWFFbGVtZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xD
dXJyZW50VGltZURpc3BsYXlFbGVtZW50KGRvY3VtZW50KSk7CiB9CiAKLU1lZGlhQ29udHJvbEN1
cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVs
ZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQotICAgIDogTWVkaWFDb250cm9s
VGltZURpc3BsYXlFbGVtZW50KG1lZGlhRWxlbWVudCkKK01lZGlhQ29udHJvbEN1cnJlbnRUaW1l
RGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50KQorICAgIDogTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50KGRv
Y3VtZW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuaAppbmRleCBhZDg0NDQwMjU0NTg4MDhiZDVjZWU0N2Y1MGViMjQ0MTNh
Nzc1NTFjLi41OGM3MGY1MDBhY2U3YmRiZDJhYTYzMTdkNGUzNDg2NTZhNDJmZGRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgKQEAg
LTMzLDcgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTElucHV0RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNs
dWRlICJNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5o
IgogCiAvLyBUaGVzZSBhcmUgdGhlIHNoYWRvdyBlbGVtZW50cyB1c2VkIGluIFJlbmRlck1lZGlh
CkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRXZlbnQ7CiBj
bGFzcyBGcmFtZTsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBNZWRpYUNvbnRyb2xz
OwogCiAvLyBNdXN0IG1hdGNoIFdlYktpdFN5c3RlbUludGVyZmFjZS5oCkBAIC04MiwyMiArODMs
MjMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNw
bGF5VHlwZSgpIGNvbnN0ID0gMDsKIAotICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9CisgICAgdm9pZCBzZXRNZWRpYUNv
bnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBjb250cm9sbGVyKSB7IG1fbWVkaWFD
b250cm9sbGVyID0gY29udHJvbGxlcjsgfQorICAgIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSog
bWVkaWFDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUNvbnRyb2xsZXI7IH0KIAog
cHJvdGVjdGVkOgotICAgIE1lZGlhQ29udHJvbEVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOwor
ICAgIE1lZGlhQ29udHJvbEVsZW1lbnQoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgaXNNZWRpYUNvbnRyb2xFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
Ci0gICAgSFRNTE1lZGlhRWxlbWVudCogbV9tZWRpYUVsZW1lbnQ7ICAgCisgICAgTWVkaWFDb250
cm9sbGVySW50ZXJmYWNlKiBtX21lZGlhQ29udHJvbGxlcjsgICAKIH07CiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogY2xhc3MgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50IDog
cHVibGljIE1lZGlhQ29udHJvbEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ+IGNyZWF0ZShE
b2N1bWVudCopOwogCiAgICAgdm9pZCBzZXRDYW5CZURyYWdnZWQoYm9vbCk7CiAgICAgdm9pZCBy
ZXNldFBvc2l0aW9uKCk7CkBAIC0xMDUsNyArMTA3LDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFr
ZVRyYW5zcGFyZW50KCk7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50
KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQoRG9jdW1l
bnQqKTsKICAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKQEAg
LTEyNywxMCArMTI5LDEwIEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlhQ29udHJvbFRpbWVsaW5l
Q29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xFbGVtZW50IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1l
bnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAog
cHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQoSFRNTE1l
ZGlhRWxlbWVudCopOworICAgIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudChE
b2N1bWVudCopOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9J
ZCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5
VHlwZSgpIGNvbnN0OwpAQCAtMTQwLDEwICsxNDIsMTAgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVk
aWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRy
b2xFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVs
ZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFZv
bHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIE1lZGlh
Q29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQqKTsKICAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHls
ZSopOwogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAgICAg
dmlydHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0OwpAQCAt
MTU0LDEyICsxNTYsMTIgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFDb250cm9sU3RhdHVzRGlz
cGxheUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRWxlbWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ+IGNyZWF0
ZShIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9s
U3RhdHVzRGlzcGxheUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiAgICAgdm9pZCB1cGRh
dGUoKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudChI
VE1MTWVkaWFFbGVtZW50Kik7CisgICAgTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQo
RG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxh
eVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNl
dWRvSWQoKSBjb25zdDsKQEAgLTE3NywxMCArMTc5LDExIEBAIHB1YmxpYzoKIAogICAgIE1lZGlh
Q29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
VHlwZTsgfQogCi0gICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9tZWRpYUVsZW1lbnQ7IH0KKyAgICB2b2lkIHNldE1lZGlhQ29udHJvbGxlcihNZWRp
YUNvbnRyb2xsZXJJbnRlcmZhY2UqIGNvbnRyb2xsZXIpIHsgbV9tZWRpYUNvbnRyb2xsZXIgPSBj
b250cm9sbGVyOyB9CisgICAgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBtZWRpYUNvbnRyb2xs
ZXIoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ29udHJvbGxlcjsgfQogCiBwcm90ZWN0ZWQ6Ci0g
ICAgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqLCBNZWRpYUNvbnRy
b2xFbGVtZW50VHlwZSk7CisgICAgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KERvY3VtZW50Kiwg
TWVkaWFDb250cm9sRWxlbWVudFR5cGUpOwogCiAgICAgdm9pZCBzZXREaXNwbGF5VHlwZShNZWRp
YUNvbnRyb2xFbGVtZW50VHlwZSk7CiAKQEAgLTE4OSw3ICsxOTIsNyBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlUeXBlKCkgeyB9CiAKLSAgICBIVE1MTWVkaWFF
bGVtZW50KiBtX21lZGlhRWxlbWVudDsKKyAgICBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIG1f
bWVkaWFDb250cm9sbGVyOwogICAgIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIG1fZGlzcGxheVR5
cGU7CiB9OwogCkBAIC0yMDAsNyArMjAzLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2hhbmdlZE11
dGUoKTsKIAogcHJvdGVjdGVkOgotICAgIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50KEhU
TUxNZWRpYUVsZW1lbnQqLCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSk7CisgICAgTWVkaWFDb250
cm9sTXV0ZUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSk7
CiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKIAogCkBAIC0y
MTIsMTAgKzIxNSwxMCBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRyb2xQYW5lbE11dGVC
dXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25F
bGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbHMqKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50PiBjcmVh
dGUoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250
cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiwgTWVkaWFDb250cm9s
cyopOworICAgIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqLCBN
ZWRpYUNvbnRyb2xzKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCopOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0OwpAQCAtMjI3LDEwICsyMzAsMTAgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFDb250
cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sTXV0
ZUJ1dHRvbkVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVu
dCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVC
dXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUNv
bnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7Cisg
ICAgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsK
IAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0
OwogfTsKQEAgLTI0MCwxMyArMjQzLDEzIEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlhQ29udHJv
bFBsYXlCdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1l
bnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiAgICAgdmly
dHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRGlzcGxheVR5cGUoKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xQbGF5QnV0
dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgTWVkaWFDb250cm9sUGxheUJ1dHRv
bkVsZW1lbnQoRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogfTsKQEAgLTI1OCw3ICsyNjEsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKIAogcHJvdGVjdGVk
OgotICAgIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqLCBN
ZWRpYUNvbnRyb2xFbGVtZW50VHlwZSk7CisgICAgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1l
bnQoRG9jdW1lbnQqLCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSk7CiAKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIGlzRm9yd2FyZEJ1dHRvbigpIGNvbnN0ID0gMDsKQEAgLTI4MCwxMCArMjgz
LDEwIEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxl
bWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50
PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKIHBy
aXZhdGU6Ci0gICAgTWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50KEhUTUxNZWRp
YUVsZW1lbnQqKTsKKyAgICBNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQoRG9j
dW1lbnQqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0ZvcndhcmRCdXR0b24oKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVk
b0lkKCkgY29uc3Q7CkBAIC0yOTMsMTAgKzI5NiwxMCBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRp
YUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sU2Vla0J1
dHRvbkVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJv
bFNlZWtCYWNrQnV0dG9uRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ+IGNyZWF0
ZShEb2N1bWVudCopOwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9u
RWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0
b25FbGVtZW50KERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNGb3J3YXJkQnV0dG9u
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKQEAgLTMwNiwxMiArMzA5LDEyIEBAIHByaXZhdGU6
CiAKIGNsYXNzIE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFD
b250cm9sSW5wdXRFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+IGNy
ZWF0ZShEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50
KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50
KERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNl
dWRvSWQoKSBjb25zdDsKIH07CkBAIC0zMjAsMTIgKzMyMywxMiBAQCBwcml2YXRlOgogCiBjbGFz
cyBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRp
YUNvbnRyb2xJbnB1dEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlh
RWxlbWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJldHVyblRvUmVh
bHRpbWVCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250
cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAg
IE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50KERvY3VtZW50Kik7CiAK
ICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsK
IH07ICAgIApAQCAtMzM0LDEzICszMzcsMTMgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFDb250
cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJv
bElucHV0RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250
cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxl
bWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENh
cHRpb25zQnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVE
aXNwbGF5VHlwZSgpOwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENh
cHRpb25zQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgTWVkaWFDb250cm9s
VG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50KERvY3VtZW50Kik7CiAKICAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKIH07ICAgIApA
QCAtMzQ5LDE0ICszNTIsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFDb250cm9sVGltZWxp
bmVFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50PiBjcmVhdGUo
SFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbHMqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCosIE1lZGlhQ29u
dHJvbHMqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7
CiAgICAgdm9pZCBzZXRQb3NpdGlvbihmbG9hdCk7CiAgICAgdm9pZCBzZXREdXJhdGlvbihmbG9h
dCk7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50KEhUTUxNZWRp
YUVsZW1lbnQqLCBNZWRpYUNvbnRyb2xzKik7CisgICAgTWVkaWFDb250cm9sVGltZWxpbmVFbGVt
ZW50KERvY3VtZW50KiwgTWVkaWFDb250cm9scyopOwogCiAgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAKQEAgLTM2NywxMyArMzcwLDEzIEBA
IHByaXZhdGU6CiAKIGNsYXNzIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQgOiBwdWJs
aWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxl
bWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVs
ZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqKTsKICAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7CiAKIHByb3RlY3Rl
ZDoKLSAgICBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQq
KTsKKyAgICBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50KERvY3VtZW50Kik7CiAKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkg
Y29uc3Q7CkBAIC0zODMsMTIgKzM4NiwxMiBAQCBwcml2YXRlOgogCiBjbGFzcyBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1l
bnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5CdXR0b25FbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbHMq
KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxl
bWVudD4gY3JlYXRlKERvY3VtZW50KiwgTWVkaWFDb250cm9scyopOwogCiAgICAgdmlydHVhbCB2
b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiwgTWVkaWFDb250
cm9scyopOworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KERvY3VtZW50
KiwgTWVkaWFDb250cm9scyopOwogCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNo
YWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAKQEAgLTM5OSwxMCArNDAyLDEwIEBAIHByaXZhdGU6CiAK
IGNsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50IDogcHVibGlj
IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50PiBjcmVh
dGUoSFRNTE1lZGlhRWxlbWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKICAgICAK
IHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQo
SFRNTE1lZGlhRWxlbWVudCopOworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlk
ZXJFbGVtZW50KERvY3VtZW50Kik7CiAgICAgCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiB9OwpAQCAtNDExLDEyICs0MTQsMTIgQEAgcHJp
dmF0ZToKIAogY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1l
bnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVu
dD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50
Kik7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsK
ICAgICAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRv
bkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5W
b2x1bWVNaW5CdXR0b25FbGVtZW50KERvY3VtZW50Kik7CiAgICAgCiAgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiB9OwpAQCAtNDI1LDEyICs0
MjgsMTIgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1h
eEJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4
QnV0dG9uRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudD4gY3Jl
YXRlKERvY3VtZW50Kik7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqKTsKICAgICAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZv
bHVtZU1heEJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50KERvY3VtZW50Kik7CiAgICAgCiAgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiB9OwpA
QCAtNDQzLDcgKzQ0Niw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBjdXJyZW50VmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX2N1cnJlbnRWYWx1ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgTWVkaWFDb250
cm9sVGltZURpc3BsYXlFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBNZWRpYUNvbnRy
b2xUaW1lRGlzcGxheUVsZW1lbnQoRG9jdW1lbnQqKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSop
OwpAQCAtNDU1LDEwICs0NTgsMTAgQEAgcHJpdmF0ZToKIAogY2xhc3MgTWVkaWFDb250cm9sVGlt
ZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5
RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGlt
ZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVu
dD4gY3JlYXRlKERvY3VtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sVGltZVJl
bWFpbmluZ0Rpc3BsYXlFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBNZWRpYUNvbnRy
b2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQoRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwg
TWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKQEAgLTQ2OCwxMCAr
NDcxLDEwIEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxh
eUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlF
bGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCop
OwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQo
SFRNTE1lZGlhRWxlbWVudCopOworICAgIE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVs
ZW1lbnQoRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUg
ZGlzcGxheVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hh
ZG93UHNldWRvSWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcAppbmRleCA3YWViZDU1N2U4NmMxMWE4OWRk
YzlmYWQ5Yjk2ZjY5ODE4Njk4Y2M3Li4wNzViNDM4ZjJkNGU3ZDY2OGRiYzJiYmFiMGEzOTI5YmE5
OTBhOWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xSb290RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sUm9vdEVsZW1lbnQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTWVkaWFD
b250cm9sUm9vdEVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkhU
TUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgogI2lu
Y2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC00MSw5ICs0Miw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGRvdWJsZSB0aW1lV2l0aG91dE1v
dXNlTW92ZW1lbnRCZWZvcmVIaWRpbmdDb250cm9scyA9IDM7CiAKLU1lZGlhQ29udHJvbFJvb3RF
bGVtZW50OjpNZWRpYUNvbnRyb2xSb290RWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVs
ZW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xzKG1lZGlhRWxlbWVudCkKLSAgICAsIG1fbWVkaWFF
bGVtZW50KG1lZGlhRWxlbWVudCkKK01lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpNZWRpYUNvbnRy
b2xSb290RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xzKGRv
Y3VtZW50KQorICAgICwgbV9tZWRpYUNvbnRyb2xsZXIoMCkKICAgICAsIG1fcmV3aW5kQnV0dG9u
KDApCiAgICAgLCBtX3BsYXlCdXR0b24oMCkKICAgICAsIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRv
bigwKQpAQCAtNjksNjMgKzcwLDYzIEBAIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpNZWRpYUNv
bnRyb2xSb290RWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCiB7CiB9CiAK
LVBhc3NSZWZQdHI8TWVkaWFDb250cm9scz4gTWVkaWFDb250cm9sczo6Y3JlYXRlKEhUTUxNZWRp
YUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9scz4gTWVkaWFD
b250cm9sczo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gTWVkaWFD
b250cm9sUm9vdEVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIHJldHVybiBNZWRp
YUNvbnRyb2xSb290RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKIH0KIAotUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xSb290RWxlbWVudD4gTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmNyZWF0ZShI
VE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJv
b3RFbGVtZW50PiBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1
bWVudCkKIHsKLSAgICBpZiAoIW1lZGlhRWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpKQorICAg
IGlmICghZG9jdW1lbnQtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8
TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ+IGNvbnRyb2xzID0gYWRvcHRSZWYobmV3IE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50KG1lZGlhRWxlbWVudCkpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xS
b290RWxlbWVudD4gY29udHJvbHMgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sUm9vdEVsZW1l
bnQoZG9jdW1lbnQpKTsKIAotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ+IHBh
bmVsID0gTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKKyAg
ICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxFbGVtZW50PiBwYW5lbCA9IE1lZGlhQ29udHJvbFBh
bmVsRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAK
LSAgICBSZWZQdHI8TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudD4gcmV3aW5kQnV0dG9u
ID0gTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVudCk7
CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+IHJld2luZEJ1dHRv
biA9IE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAg
ICAgY29udHJvbHMtPm1fcmV3aW5kQnV0dG9uID0gcmV3aW5kQnV0dG9uLmdldCgpOwogICAgIHBh
bmVsLT5hcHBlbmRDaGlsZChyZXdpbmRCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CiAgICAg
aWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQbGF5
QnV0dG9uRWxlbWVudD4gcGxheUJ1dHRvbiA9IE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50
OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGxheUJ1dHRv
bkVsZW1lbnQ+IHBsYXlCdXR0b24gPSBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KTsKICAgICBjb250cm9scy0+bV9wbGF5QnV0dG9uID0gcGxheUJ1dHRvbi5n
ZXQoKTsKICAgICBwYW5lbC0+YXBwZW5kQ2hpbGQocGxheUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0
cnVlKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPE1lZGlh
Q29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50PiByZXR1cm5Ub1JlYWx0aW1lQnV0
dG9uID0gTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZSht
ZWRpYUVsZW1lbnQpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0
dG9uRWxlbWVudD4gcmV0dXJuVG9SZWFsdGltZUJ1dHRvbiA9IE1lZGlhQ29udHJvbFJldHVyblRv
UmVhbHRpbWVCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGNvbnRyb2xzLT5t
X3JldHVyblRvUmVhbFRpbWVCdXR0b24gPSByZXR1cm5Ub1JlYWx0aW1lQnV0dG9uLmdldCgpOwog
ICAgIHBhbmVsLT5hcHBlbmRDaGlsZChyZXR1cm5Ub1JlYWx0aW1lQnV0dG9uLnJlbGVhc2UoKSwg
ZWMsIHRydWUpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAobWVk
aWFFbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCktPnVzZXNNZWRpYUNvbnRyb2xT
dGF0dXNEaXNwbGF5KCkpIHsKLSAgICAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFN0YXR1c0Rpc3Bs
YXlFbGVtZW50PiBzdGF0dXNEaXNwbGF5ID0gTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1l
bnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIGlmIChkb2N1bWVudC0+cGFnZSgpLT50aGVt
ZSgpLT51c2VzTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheSgpKSB7CisgICAgICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudD4gc3RhdHVzRGlzcGxheSA9IE1lZGlhQ29u
dHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgICAgICBjb250
cm9scy0+bV9zdGF0dXNEaXNwbGF5ID0gc3RhdHVzRGlzcGxheS5nZXQoKTsKICAgICAgICAgcGFu
ZWwtPmFwcGVuZENoaWxkKHN0YXR1c0Rpc3BsYXkucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CiAgICAg
ICAgIGlmIChlYykKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IHRpbWVsaW5lQ29udGFpbmVyID0g
TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50
KTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50PiB0aW1l
bGluZUNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KTsKIAotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3Bs
YXlFbGVtZW50PiBjdXJyZW50VGltZURpc3BsYXkgPSBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURp
c3BsYXlFbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKKyAgICBSZWZQdHI8TWVkaWFDb250
cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4gY3VycmVudFRpbWVEaXNwbGF5ID0gTWVkaWFD
b250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBj
b250cm9scy0+bV9jdXJyZW50VGltZURpc3BsYXkgPSBjdXJyZW50VGltZURpc3BsYXkuZ2V0KCk7
CiAgICAgdGltZWxpbmVDb250YWluZXItPmFwcGVuZENoaWxkKGN1cnJlbnRUaW1lRGlzcGxheS5y
ZWxlYXNlKCksIGVjLCB0cnVlKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudD4gdGltZWxpbmUgPSBNZWRpYUNv
bnRyb2xUaW1lbGluZUVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQsIGNvbnRyb2xzLmdldCgp
KTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50PiB0aW1lbGluZSA9IE1l
ZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBjb250cm9scy5nZXQo
KSk7CiAgICAgY29udHJvbHMtPm1fdGltZWxpbmUgPSB0aW1lbGluZS5nZXQoKTsKICAgICB0aW1l
bGluZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodGltZWxpbmUucmVsZWFzZSgpLCBlYywgdHJ1ZSk7
CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxNZWRpYUNvbnRy
b2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ+IHRpbWVSZW1haW5pbmdEaXNwbGF5ID0gTWVk
aWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50
KTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50PiB0
aW1lUmVtYWluaW5nRGlzcGxheSA9IE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBjb250cm9scy0+bV90aW1lUmVtYWluaW5nRGlz
cGxheSA9IHRpbWVSZW1haW5pbmdEaXNwbGF5LmdldCgpOwogICAgIHRpbWVsaW5lQ29udGFpbmVy
LT5hcHBlbmRDaGlsZCh0aW1lUmVtYWluaW5nRGlzcGxheS5yZWxlYXNlKCksIGVjLCB0cnVlKTsK
ICAgICBpZiAoZWMpCkBAIC0xMzcsMjEgKzEzOCwyMSBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJv
bFJvb3RFbGVtZW50PiBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVs
ZQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIEZJWE1FOiBPbmx5IGNyZWF0ZSB3aGVuIG5l
ZWRlZCA8aHR0cDovL3dlYmtpdC5vcmcvYi81NzE2Mz4KLSAgICBSZWZQdHI8TWVkaWFDb250cm9s
U2Vla0JhY2tCdXR0b25FbGVtZW50PiBzZWVrQmFja0J1dHRvbiA9IE1lZGlhQ29udHJvbFNlZWtC
YWNrQnV0dG9uRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVudCk7CisgICAgUmVmUHRyPE1lZGlh
Q29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudD4gc2Vla0JhY2tCdXR0b24gPSBNZWRpYUNvbnRy
b2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgY29udHJvbHMt
Pm1fc2Vla0JhY2tCdXR0b24gPSBzZWVrQmFja0J1dHRvbi5nZXQoKTsKICAgICBwYW5lbC0+YXBw
ZW5kQ2hpbGQoc2Vla0JhY2tCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CiAgICAgaWYgKGVj
KQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIEZJWE1FOiBPbmx5IGNyZWF0ZSB3aGVuIG5l
ZWRlZCA8aHR0cDovL3dlYmtpdC5vcmcvYi81NzE2Mz4KLSAgICBSZWZQdHI8TWVkaWFDb250cm9s
U2Vla0ZvcndhcmRCdXR0b25FbGVtZW50PiBzZWVrRm9yd2FyZEJ1dHRvbiA9IE1lZGlhQ29udHJv
bFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVudCk7CisgICAgUmVm
UHRyPE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudD4gc2Vla0ZvcndhcmRCdXR0
b24gPSBNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCk7CiAgICAgY29udHJvbHMtPm1fc2Vla0ZvcndhcmRCdXR0b24gPSBzZWVrRm9yd2FyZEJ1dHRv
bi5nZXQoKTsKICAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoc2Vla0ZvcndhcmRCdXR0b24ucmVsZWFz
ZSgpLCBlYywgdHJ1ZSk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlm
IChtZWRpYUVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+c3VwcG9ydHNDbG9z
ZWRDYXB0aW9uaW5nKCkpIHsKLSAgICAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRvZ2dsZUNsb3Nl
ZENhcHRpb25zQnV0dG9uRWxlbWVudD4gdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24gPSBNZWRp
YUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVs
ZW1lbnQpOworICAgIGlmIChkb2N1bWVudC0+cGFnZSgpLT50aGVtZSgpLT5zdXBwb3J0c0Nsb3Nl
ZENhcHRpb25pbmcoKSkgeworICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2Vk
Q2FwdGlvbnNCdXR0b25FbGVtZW50PiB0b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA9IE1lZGlh
Q29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
KTsKICAgICAgICAgY29udHJvbHMtPm1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24gPSB0b2dn
bGVDbG9zZWRDYXB0aW9uc0J1dHRvbi5nZXQoKTsKICAgICAgICAgcGFuZWwtPmFwcGVuZENoaWxk
KHRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwogICAgICAg
ICBpZiAoZWMpCkBAIC0xNTksMjYgKzE2MCwyNiBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJv
b3RFbGVtZW50PiBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZQog
ICAgIH0KIAogICAgIC8vIEZJWE1FOiBPbmx5IGNyZWF0ZSB3aGVuIG5lZWRlZCA8aHR0cDovL3dl
YmtpdC5vcmcvYi81NzE2Mz4KLSAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRv
bkVsZW1lbnQ+IGZ1bGxTY3JlZW5CdXR0b24gPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9u
RWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVudCwgY29udHJvbHMuZ2V0KCkpOworICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4gZnVsbFNjcmVlbkJ1dHRvbiA9
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsIGNv
bnRyb2xzLmdldCgpKTsKICAgICBjb250cm9scy0+bV9mdWxsU2NyZWVuQnV0dG9uID0gZnVsbFNj
cmVlbkJ1dHRvbi5nZXQoKTsKICAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoZnVsbFNjcmVlbkJ1dHRv
bi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKIAotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbE11
dGVCdXR0b25FbGVtZW50PiBwYW5lbE11dGVCdXR0b24gPSBNZWRpYUNvbnRyb2xQYW5lbE11dGVC
dXR0b25FbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50LCBjb250cm9scy5nZXQoKSk7CisgICAg
UmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ+IHBhbmVsTXV0ZUJ1dHRv
biA9IE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwg
Y29udHJvbHMuZ2V0KCkpOwogICAgIGNvbnRyb2xzLT5tX3BhbmVsTXV0ZUJ1dHRvbiA9IHBhbmVs
TXV0ZUJ1dHRvbi5nZXQoKTsKICAgICBwYW5lbC0+YXBwZW5kQ2hpbGQocGFuZWxNdXRlQnV0dG9u
LnJlbGVhc2UoKSwgZWMsIHRydWUpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBpZiAobWVkaWFFbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCktPnVzZXNN
ZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXIoKSkgewotICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9s
Vm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudD4gdm9sdW1lU2xpZGVyQ29udGFpbmVyID0gTWVk
aWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVu
dCk7CisgICAgaWYgKGRvY3VtZW50LT5wYWdlKCktPnRoZW1lKCktPnVzZXNNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXIoKSkgeworICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVy
Q29udGFpbmVyRWxlbWVudD4gdm9sdW1lU2xpZGVyQ29udGFpbmVyID0gTWVkaWFDb250cm9sVm9s
dW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKIAotICAgICAgICBS
ZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudD4gc2xpZGVyID0gTWVkaWFDb250
cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVudCk7CisgICAgICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50PiBzbGlkZXIgPSBNZWRpYUNvbnRy
b2xWb2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgICAgICBjb250cm9s
cy0+bV92b2x1bWVTbGlkZXIgPSBzbGlkZXIuZ2V0KCk7CiAgICAgICAgIHZvbHVtZVNsaWRlckNv
bnRhaW5lci0+YXBwZW5kQ2hpbGQoc2xpZGVyLnJlbGVhc2UoKSwgZWMsIHRydWUpOwogICAgICAg
ICBpZiAoZWMpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBSZWZQdHI8TWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ+IHZvbHVtZVNsaWRlck11dGVCdXR0
b24gPSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudDo6Y3JlYXRlKG1l
ZGlhRWxlbWVudCk7CisgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRl
QnV0dG9uRWxlbWVudD4gdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbiA9IE1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlck11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgICAgICBjb250
cm9scy0+bV92b2x1bWVTbGlkZXJNdXRlQnV0dG9uID0gdm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbi5n
ZXQoKTsKICAgICAgICAgdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5hcHBlbmRDaGlsZCh2b2x1bWVT
bGlkZXJNdXRlQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwogICAgICAgICBpZiAoZWMpCkBA
IC0xOTEsMTkgKzE5MiwxOSBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50PiBN
ZWRpYUNvbnRyb2xSb290RWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZQogICAgIH0KIAogICAg
IC8vIEZJWE1FOiBPbmx5IGNyZWF0ZSB3aGVuIG5lZWRlZCA8aHR0cDovL3dlYmtpdC5vcmcvYi81
NzE2Mz4KLSAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVs
ZW1lbnQ+IGZ1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b24gPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
Vm9sdW1lTWluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKG1lZGlhRWxlbWVudCk7CisgICAgUmVmUHRy
PE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50PiBmdWxsU2NyZWVu
TWluVm9sdW1lQnV0dG9uID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgY29udHJvbHMtPm1fZnVsbFNjcmVlbk1pblZv
bHVtZUJ1dHRvbiA9IGZ1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b24uZ2V0KCk7CiAgICAgcGFuZWwt
PmFwcGVuZENoaWxkKGZ1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1
ZSk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudD4gZnVsbFNjcmVlblZvbHVtZVNsaWRl
ciA9IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUobWVk
aWFFbGVtZW50KTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRl
ckVsZW1lbnQ+IGZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXIgPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
Vm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBjb250cm9scy0+bV9m
dWxsU2NyZWVuVm9sdW1lU2xpZGVyID0gZnVsbFNjcmVlblZvbHVtZVNsaWRlci5nZXQoKTsKICAg
ICBwYW5lbC0+YXBwZW5kQ2hpbGQoZnVsbFNjcmVlblZvbHVtZVNsaWRlci5yZWxlYXNlKCksIGVj
LCB0cnVlKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50PiBmdWxsU2NyZWVuTWF4
Vm9sdW1lQnV0dG9uID0gTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1l
bnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudD4gZnVsbFNjcmVlbk1heFZvbHVtZUJ1dHRvbiA9IE1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQpOwogICAgIGNvbnRyb2xzLT5tX2Z1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24gPSBmdWxsU2Ny
ZWVuTWF4Vm9sdW1lQnV0dG9uLmdldCgpOwogICAgIHBhbmVsLT5hcHBlbmRDaGlsZChmdWxsU2Ny
ZWVuTWF4Vm9sdW1lQnV0dG9uLnJlbGVhc2UoKSwgZWMsIHRydWUpOwogICAgIGlmIChlYykKQEAg
LTIxNyw2ICsyMTgsNTUgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xSb290RWxlbWVudD4gTWVk
aWFDb250cm9sUm9vdEVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGUKICAgICByZXR1cm4gY29u
dHJvbHMucmVsZWFzZSgpOwogfQogCit2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpzZXRN
ZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBjb250cm9sbGVyKQorewor
ICAgIGlmIChtX21lZGlhQ29udHJvbGxlciA9PSBjb250cm9sbGVyKQorICAgICAgICByZXR1cm47
CisgICAgbV9tZWRpYUNvbnRyb2xsZXIgPSBjb250cm9sbGVyOworCisgICAgaWYgKG1fcmV3aW5k
QnV0dG9uKQorICAgICAgICBtX3Jld2luZEJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRy
b2xsZXIpOworICAgIGlmIChtX3BsYXlCdXR0b24pCisgICAgICAgIG1fcGxheUJ1dHRvbi0+c2V0
TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX3JldHVyblRvUmVhbFRpbWVC
dXR0b24pCisgICAgICAgIG1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9s
bGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX3N0YXR1c0Rpc3BsYXkpCisgICAgICAgIG1fc3Rh
dHVzRGlzcGxheS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX2N1
cnJlbnRUaW1lRGlzcGxheSkKKyAgICAgICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNldE1lZGlh
Q29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV90aW1lbGluZSkKKyAgICAgICAgbV90
aW1lbGluZS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX3RpbWVS
ZW1haW5pbmdEaXNwbGF5KQorICAgICAgICBtX3RpbWVSZW1haW5pbmdEaXNwbGF5LT5zZXRNZWRp
YUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fdGltZWxpbmVDb250YWluZXIpCisg
ICAgICAgIG1fdGltZWxpbmVDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVy
KTsKKyAgICBpZiAobV9zZWVrQmFja0J1dHRvbikKKyAgICAgICAgbV9zZWVrQmFja0J1dHRvbi0+
c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX3NlZWtGb3J3YXJkQnV0
dG9uKQorICAgICAgICBtX3NlZWtGb3J3YXJkQnV0dG9uLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29u
dHJvbGxlcik7CisgICAgaWYgKG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24pCisgICAgICAg
IG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9s
bGVyKTsKKyAgICBpZiAobV9wYW5lbE11dGVCdXR0b24pCisgICAgICAgIG1fcGFuZWxNdXRlQnV0
dG9uLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fdm9sdW1lU2xp
ZGVyKQorICAgICAgICBtX3ZvbHVtZVNsaWRlci0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xs
ZXIpOworICAgIGlmIChtX3ZvbHVtZVNsaWRlck11dGVCdXR0b24pCisgICAgICAgIG1fdm9sdW1l
U2xpZGVyTXV0ZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlm
IChtX3ZvbHVtZVNsaWRlckNvbnRhaW5lcikKKyAgICAgICAgbV92b2x1bWVTbGlkZXJDb250YWlu
ZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsU2NyZWVu
QnV0dG9uKQorICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihj
b250cm9sbGVyKTsKKyAgICBpZiAobV9mdWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uKQorICAgICAg
ICBtX2Z1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9s
bGVyKTsKKyAgICBpZiAobV9mdWxsU2NyZWVuVm9sdW1lU2xpZGVyKQorICAgICAgICBtX2Z1bGxT
Y3JlZW5Wb2x1bWVTbGlkZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBp
ZiAobV9mdWxsU2NyZWVuTWF4Vm9sdW1lQnV0dG9uKQorICAgICAgICBtX2Z1bGxTY3JlZW5NYXhW
b2x1bWVCdXR0b24tPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV9w
YW5lbCkKKyAgICAgICAgbV9wYW5lbC0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwor
ICAgIHJlc2V0KCk7Cit9CisKIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnNob3coKQog
ewogICAgIG1fcGFuZWwtPnNob3coKTsKQEAgLTI0NSwzMCArMjk1LDMwIEBAIHZvaWQgTWVkaWFD
b250cm9sUm9vdEVsZW1lbnQ6OnJlc2V0KCkKIAogICAgIHVwZGF0ZVN0YXR1c0Rpc3BsYXkoKTsK
IAotICAgIGlmIChtX21lZGlhRWxlbWVudC0+c3VwcG9ydHNGdWxsc2NyZWVuKCkpCisgICAgaWYg
KG1fbWVkaWFDb250cm9sbGVyLT5zdXBwb3J0c0Z1bGxzY3JlZW4oKSkKICAgICAgICAgbV9mdWxs
U2NyZWVuQnV0dG9uLT5zaG93KCk7CiAgICAgZWxzZQogICAgICAgICBtX2Z1bGxTY3JlZW5CdXR0
b24tPmhpZGUoKTsKIAotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUVsZW1lbnQtPmR1cmF0
aW9uKCk7CisgICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24o
KTsKICAgICBpZiAoaXNmaW5pdGUoZHVyYXRpb24pIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093bkRp
c2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYVNsaWRlclBhcnQpKSB7CiAgICAgICAgIG1fdGlt
ZWxpbmUtPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKICAgICAgICAgbV90aW1lbGluZUNvbnRhaW5l
ci0+c2hvdygpOwotICAgICAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhRWxlbWVu
dC0+Y3VycmVudFRpbWUoKSk7CisgICAgICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVk
aWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpKTsKICAgICAgICAgdXBkYXRlVGltZURpc3BsYXko
KTsKICAgICB9IGVsc2UKICAgICAgICAgbV90aW1lbGluZUNvbnRhaW5lci0+aGlkZSgpOwogCi0g
ICAgaWYgKG1fbWVkaWFFbGVtZW50LT5oYXNBdWRpbygpIHx8IHBhZ2UtPnRoZW1lKCktPmhhc093
bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihNZWRpYU11dGVCdXR0b25QYXJ0KSkKKyAgICBpZiAo
bV9tZWRpYUNvbnRyb2xsZXItPmhhc0F1ZGlvKCkgfHwgcGFnZS0+dGhlbWUoKS0+aGFzT3duRGlz
YWJsZWRTdGF0ZUhhbmRsaW5nRm9yKE1lZGlhTXV0ZUJ1dHRvblBhcnQpKQogICAgICAgICBtX3Bh
bmVsTXV0ZUJ1dHRvbi0+c2hvdygpOwogICAgIGVsc2UKICAgICAgICAgbV9wYW5lbE11dGVCdXR0
b24tPmhpZGUoKTsKIAogICAgIGlmIChtX3ZvbHVtZVNsaWRlcikKLSAgICAgICAgbV92b2x1bWVT
bGlkZXItPnNldFZvbHVtZShtX21lZGlhRWxlbWVudC0+dm9sdW1lKCkpOworICAgICAgICBtX3Zv
bHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7CiAKICAg
ICBpZiAobV90b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbikgewotICAgICAgICBpZiAobV9tZWRp
YUVsZW1lbnQtPmhhc0Nsb3NlZENhcHRpb25zKCkpCisgICAgICAgIGlmIChtX21lZGlhQ29udHJv
bGxlci0+aGFzQ2xvc2VkQ2FwdGlvbnMoKSkKICAgICAgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2Fw
dGlvbnNCdXR0b24tPnNob3coKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV90b2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbi0+aGlkZSgpOwpAQCAtMjc3LDggKzMyNyw4IEBAIHZvaWQgTWVk
aWFDb250cm9sUm9vdEVsZW1lbnQ6OnJlc2V0KCkKICAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURp
c3BsYXlUeXBlKCk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgaWYgKGRvY3Vt
ZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpICYmIGRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRG
dWxsU2NyZWVuRWxlbWVudCgpID09IG1fbWVkaWFFbGVtZW50KSB7Ci0gICAgICAgIGlmIChtX21l
ZGlhRWxlbWVudC0+bW92aWVMb2FkVHlwZSgpID09IE1lZGlhUGxheWVyOjpMaXZlU3RyZWFtKSB7
CisgICAgaWYgKGRvY3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpICYmIGRvY3VtZW50KCkt
PndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpID09IHRvUGFyZW50TWVkaWFFbGVtZW50
KHRoaXMpKSB7CisgICAgICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aXNMaXZlU3RyZWFtKCkp
IHsKICAgICAgICAgICAgIG1fc2Vla0JhY2tCdXR0b24tPmhpZGUoKTsKICAgICAgICAgICAgIG1f
c2Vla0ZvcndhcmRCdXR0b24tPmhpZGUoKTsKICAgICAgICAgICAgIG1fcmV3aW5kQnV0dG9uLT5z
aG93KCk7CkBAIC0yOTEsNyArMzQxLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6
cmVzZXQoKQogICAgICAgICB9CiAgICAgfSBlbHNlCiAjZW5kaWYKLSAgICBpZiAobV9tZWRpYUVs
ZW1lbnQtPm1vdmllTG9hZFR5cGUoKSAhPSBNZWRpYVBsYXllcjo6TGl2ZVN0cmVhbSkgeworICAg
IGlmICghbV9tZWRpYUNvbnRyb2xsZXItPmlzTGl2ZVN0cmVhbSgpKSB7CiAgICAgICAgIG1fcmV0
dXJuVG9SZWFsVGltZUJ1dHRvbi0+aGlkZSgpOwogICAgICAgICBtX3Jld2luZEJ1dHRvbi0+c2hv
dygpOwogICAgIH0gZWxzZSB7CkBAIC0zMDUsMjYgKzM1NSwyNiBAQCB2b2lkIE1lZGlhQ29udHJv
bFJvb3RFbGVtZW50OjpyZXNldCgpCiB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpwbGF5
YmFja1N0YXJ0ZWQoKQogewogICAgIG1fcGxheUJ1dHRvbi0+dXBkYXRlRGlzcGxheVR5cGUoKTsK
LSAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhRWxlbWVudC0+Y3VycmVudFRpbWUo
KSk7CisgICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUNvbnRyb2xsZXItPmN1cnJl
bnRUaW1lKCkpOwogICAgIHVwZGF0ZVRpbWVEaXNwbGF5KCk7CiAKLSAgICBpZiAobV9tZWRpYUVs
ZW1lbnQtPmlzRnVsbHNjcmVlbigpKQorICAgIGlmIChtX21lZGlhQ29udHJvbGxlci0+aXNGdWxs
c2NyZWVuKCkpCiAgICAgICAgIHN0YXJ0SGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7CiB9
CiAKIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnBsYXliYWNrUHJvZ3Jlc3NlZCgpCiB7
Ci0gICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1l
KCkpOworICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFDb250cm9sbGVyLT5jdXJy
ZW50VGltZSgpKTsKICAgICB1cGRhdGVUaW1lRGlzcGxheSgpOwogICAgIAotICAgIGlmICghbV9p
c01vdXNlT3ZlckNvbnRyb2xzICYmIG1fbWVkaWFFbGVtZW50LT5oYXNWaWRlbygpKQorICAgIGlm
ICghbV9pc01vdXNlT3ZlckNvbnRyb2xzICYmIG1fbWVkaWFDb250cm9sbGVyLT5oYXNWaWRlbygp
KQogICAgICAgICBtYWtlVHJhbnNwYXJlbnQoKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xSb290
RWxlbWVudDo6cGxheWJhY2tTdG9wcGVkKCkKIHsKICAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURp
c3BsYXlUeXBlKCk7Ci0gICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUVsZW1lbnQt
PmN1cnJlbnRUaW1lKCkpOworICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFDb250
cm9sbGVyLT5jdXJyZW50VGltZSgpKTsKICAgICB1cGRhdGVUaW1lRGlzcGxheSgpOwogICAgIG1h
a2VPcGFxdWUoKTsKICAgICAKQEAgLTMzMyw4ICszODMsOCBAQCB2b2lkIE1lZGlhQ29udHJvbFJv
b3RFbGVtZW50OjpwbGF5YmFja1N0b3BwZWQoKQogCiB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVt
ZW50Ojp1cGRhdGVUaW1lRGlzcGxheSgpCiB7Ci0gICAgZmxvYXQgbm93ID0gbV9tZWRpYUVsZW1l
bnQtPmN1cnJlbnRUaW1lKCk7Ci0gICAgZmxvYXQgZHVyYXRpb24gPSBtX21lZGlhRWxlbWVudC0+
ZHVyYXRpb24oKTsKKyAgICBmbG9hdCBub3cgPSBtX21lZGlhQ29udHJvbGxlci0+Y3VycmVudFRp
bWUoKTsKKyAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFDb250cm9sbGVyLT5kdXJhdGlvbigp
OwogCiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2Up
CkBAIC0zNzYsNyArNDI2LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6dXBkYXRl
U3RhdHVzRGlzcGxheSgpCiAKIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmxvYWRlZE1l
dGFkYXRhKCkKIHsKLSAgICBpZiAobV9zdGF0dXNEaXNwbGF5ICYmIG1fbWVkaWFFbGVtZW50LT5t
b3ZpZUxvYWRUeXBlKCkgIT0gTWVkaWFQbGF5ZXI6OkxpdmVTdHJlYW0pCisgICAgaWYgKG1fc3Rh
dHVzRGlzcGxheSAmJiBtX21lZGlhQ29udHJvbGxlci0+aXNMaXZlU3RyZWFtKCkpCiAgICAgICAg
IG1fc3RhdHVzRGlzcGxheS0+aGlkZSgpOwogCiAgICAgcmVzZXQoKTsKQEAgLTM5OCwxMiArNDQ4
LDEyIEBAIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmNoYW5nZWRNdXRlKCkKIHZvaWQg
TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmNoYW5nZWRWb2x1bWUoKQogewogICAgIGlmIChtX3Zv
bHVtZVNsaWRlcikKLSAgICAgICAgbV92b2x1bWVTbGlkZXItPnNldFZvbHVtZShtX21lZGlhRWxl
bWVudC0+dm9sdW1lKCkpOworICAgICAgICBtX3ZvbHVtZVNsaWRlci0+c2V0Vm9sdW1lKG1fbWVk
aWFDb250cm9sbGVyLT52b2x1bWUoKSk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1l
bnQ6OmVudGVyZWRGdWxsc2NyZWVuKCkKIHsKLSAgICBpZiAobV9tZWRpYUVsZW1lbnQtPm1vdmll
TG9hZFR5cGUoKSA9PSBNZWRpYVBsYXllcjo6TGl2ZVN0cmVhbSkgeworICAgIGlmIChtX21lZGlh
Q29udHJvbGxlci0+aXNMaXZlU3RyZWFtKCkpIHsKICAgICAgICAgbV9zZWVrQmFja0J1dHRvbi0+
aGlkZSgpOwogICAgICAgICBtX3NlZWtGb3J3YXJkQnV0dG9uLT5oaWRlKCk7CiAgICAgICAgIG1f
cmV3aW5kQnV0dG9uLT5zaG93KCk7CkBAIC00MTcsNyArNDY3LDcgQEAgdm9pZCBNZWRpYUNvbnRy
b2xSb290RWxlbWVudDo6ZW50ZXJlZEZ1bGxzY3JlZW4oKQogCiAgICAgbV9wYW5lbC0+c2V0Q2Fu
QmVEcmFnZ2VkKHRydWUpOwogCi0gICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX21lZGlhRWxlbWVudC0+
ZG9jdW1lbnQoKS0+cGFnZSgpKQorICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFn
ZSgpKQogICAgICAgICBwYWdlLT5jaHJvbWUoKS0+c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1v
dmVzKHRydWUpOwogCiAgICAgc3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKQEAg
LTQ0NSw3ICs0OTUsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpleGl0ZWRGdWxs
c2NyZWVuKCkKIAogdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6c2hvd1ZvbHVtZVNsaWRl
cigpCiB7Ci0gICAgaWYgKCFtX21lZGlhRWxlbWVudC0+aGFzQXVkaW8oKSkKKyAgICBpZiAoIW1f
bWVkaWFDb250cm9sbGVyLT5oYXNBdWRpbygpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
bV92b2x1bWVTbGlkZXJDb250YWluZXIpCkBAIC00NzQsNyArNTI0LDcgQEAgdm9pZCBNZWRpYUNv
bnRyb2xSb290RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAg
aWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50KSB7CiAgICAg
ICAgIGlmICghY29udGFpbnNSZWxhdGVkVGFyZ2V0KGV2ZW50KSkgewogICAgICAgICAgICAgbV9p
c01vdXNlT3ZlckNvbnRyb2xzID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmICghbV9tZWRpYUVsZW1l
bnQtPmNhblBsYXkoKSkgeworICAgICAgICAgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlci0+Y2Fu
UGxheSgpKSB7CiAgICAgICAgICAgICAgICAgbWFrZU9wYXF1ZSgpOwogICAgICAgICAgICAgICAg
IGlmIChzaG91bGRIaWRlQ29udHJvbHMoKSkKICAgICAgICAgICAgICAgICAgICAgc3RhcnRIaWRl
RnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKQEAgLTQ4Niw3ICs1MzYsNyBAQCB2b2lkIE1lZGlh
Q29udHJvbFJvb3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAg
ICAgICAgICAgIHN0b3BIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZl
bnQpIHsKLSAgICAgICAgaWYgKG1fbWVkaWFFbGVtZW50LT5pc0Z1bGxzY3JlZW4oKSkgeworICAg
ICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPmlzRnVsbHNjcmVlbigpKSB7CiAgICAgICAgICAg
ICAvLyBXaGVuIHdlIGdldCBhIG1vdXNlIG1vdmUgaW4gZnVsbHNjcmVlbiBtb2RlLCBzaG93IHRo
ZSBtZWRpYSBjb250cm9scywgYW5kIHN0YXJ0IGEgdGltZXIKICAgICAgICAgICAgIC8vIHRoYXQg
d2lsbCBoaWRlIHRoZSBtZWRpYSBjb250cm9scyBhZnRlciBhIDMgc2Vjb25kcyB3aXRob3V0IGEg
bW91c2UgbW92ZS4KICAgICAgICAgICAgIG1ha2VPcGFxdWUoKTsKQEAgLTQ5OCw3ICs1NDgsNyBA
QCB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
KiBldmVudCkKIAogdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6c3RhcnRIaWRlRnVsbHNj
cmVlbkNvbnRyb2xzVGltZXIoKQogewotICAgIGlmICghbV9tZWRpYUVsZW1lbnQtPmlzRnVsbHNj
cmVlbigpKQorICAgIGlmICghbV9tZWRpYUNvbnRyb2xsZXItPmlzRnVsbHNjcmVlbigpKQogICAg
ICAgICByZXR1cm47CiAgICAgCiAgICAgbV9oaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIuc3Rh
cnRPbmVTaG90KHRpbWVXaXRob3V0TW91c2VNb3ZlbWVudEJlZm9yZUhpZGluZ0NvbnRyb2xzKTsK
QEAgLTUwNiwxNiArNTU2LDE2IEBAIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnN0YXJ0
SGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCkKIAogdm9pZCBNZWRpYUNvbnRyb2xSb290RWxl
bWVudDo6aGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9s
Um9vdEVsZW1lbnQ+KikKIHsKLSAgICBpZiAoIW1fbWVkaWFFbGVtZW50LT5pc1BsYXlpbmcoKSkK
KyAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPnBhdXNlZCgpKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgaWYgKCFtX21lZGlhRWxlbWVudC0+aXNGdWxsc2NyZWVuKCkpCisgICAgaWYgKCFt
X21lZGlhQ29udHJvbGxlci0+aXNGdWxsc2NyZWVuKCkpCiAgICAgICAgIHJldHVybjsKICAgICAK
ICAgICBpZiAoIXNob3VsZEhpZGVDb250cm9scygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoUGFnZSogcGFnZSA9IG1fbWVkaWFFbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkpCisgICAg
aWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCkpCiAgICAgICAgIHBhZ2UtPmNocm9t
ZSgpLT5zZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXModHJ1ZSk7CiAKICAgICBtYWtlVHJh
bnNwYXJlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbFJvb3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xSb290RWxlbWVudC5oCmluZGV4IDk3NzgxZGMxMmYxZTAyYTc2ZjEyMjlhMTU1ZTZkZjZl
NWQ4M2M1NTUuLmVkOTBjNTg3ZGUwYTA2YzMyZTg2OTFjOWQ0ZGQ3NGRmZTg1ZmEwMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1l
bnQuaApAQCAtNjgsOSArNjgsMTEgQEAgY2xhc3MgUmVuZGVyTWVkaWE7CiAKIGNsYXNzIE1lZGlh
Q29udHJvbFJvb3RFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbHMgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50PiBjcmVhdGUoSFRNTE1l
ZGlhRWxlbWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJvb3RFbGVt
ZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKIAogICAgIC8vIE1lZGlhQ29udHJvbHMgaW1wbGVtZW50
YXRpb24uCisgICAgdm9pZCBzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJm
YWNlKik7CisKICAgICB2b2lkIHNob3coKTsKICAgICB2b2lkIGhpZGUoKTsKICAgICB2b2lkIG1h
a2VPcGFxdWUoKTsKQEAgLTk5LDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkSGlkZUNvbnRyb2xzKCk7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50KERv
Y3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCop
OwogICAgIHZvaWQgaGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyRmlyZWQoVGltZXI8TWVkaWFD
b250cm9sUm9vdEVsZW1lbnQ+Kik7CkBAIC0xMTAsNyArMTEyLDcgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgY29udGFpbnNSZWxhdGVkVGFyZ2V0KEV2ZW50Kik7CiAKLSAgICBIVE1MTWVkaWFFbGVt
ZW50KiBtX21lZGlhRWxlbWVudDsKKyAgICBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIG1fbWVk
aWFDb250cm9sbGVyOwogCiAgICAgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudCogbV9y
ZXdpbmRCdXR0b247CiAgICAgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQqIG1fcGxheUJ1
dHRvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bFJvb3RFbGVtZW50Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bS5jcHAKaW5kZXggZDFjYWY5OTIwMzkzOTMxMDI2
ZGVkMTM4YmQxMGM3NzE5NGEyMTAyYS4uZjE3MDY5MjJiYmM4YWNlMzJjMTMxYzVhOWU2ZjQwMmE2
ZGU4MjY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sUm9vdEVsZW1lbnRDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bS5jcHAKQEAgLTM4LDkgKzM4LDkgQEAg
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1NZWRpYUNvbnRy
b2xSb290RWxlbWVudENocm9taXVtOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtKEhU
TUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLSAgICA6IE1lZGlhQ29udHJvbHMobWVkaWFF
bGVtZW50KQotICAgICwgbV9tZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KQorTWVkaWFDb250cm9s
Um9vdEVsZW1lbnRDaHJvbWl1bTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bShEb2N1
bWVudCogZG9jdW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xzKGRvY3VtZW50KQorICAgICwgbV9t
ZWRpYUNvbnRyb2xsZXIoMCkKICAgICAsIG1fcGxheUJ1dHRvbigwKQogICAgICwgbV9jdXJyZW50
VGltZURpc3BsYXkoMCkKICAgICAsIG1fdGltZWxpbmUoMCkKQEAgLTU0LDM3ICs1NCwzNyBAQCBN
ZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudENo
cm9taXVtKEhUTUxNZWRpYUVsZW1lbgogewogfQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbHM+
IE1lZGlhQ29udHJvbHM6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCitQ
YXNzUmVmUHRyPE1lZGlhQ29udHJvbHM+IE1lZGlhQ29udHJvbHM6OmNyZWF0ZShEb2N1bWVudCog
ZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06
OmNyZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIHJldHVybiBNZWRpYUNvbnRyb2xSb290RWxlbWVu
dENocm9taXVtOjpjcmVhdGUoZG9jdW1lbnQpOwogfQogCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJv
bFJvb3RFbGVtZW50Q2hyb21pdW0+IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OmNy
ZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCitQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50Q2hyb21pdW0+IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06
OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgaWYgKCFtZWRpYUVsZW1lbnQtPmRv
Y3VtZW50KCktPnBhZ2UoKSkKKyAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bT4gY29u
dHJvbHMgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bShtZWRp
YUVsZW1lbnQpKTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bT4g
Y29udHJvbHMgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bShk
b2N1bWVudCkpOwogCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudD4gcGFuZWwg
PSBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ+IHBhbmVsID0gTWVkaWFDb250cm9sUGFuZWxF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYzsKIAotICAg
IFJlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudD4gcGxheUJ1dHRvbiA9IE1lZGlh
Q29udHJvbFBsYXlCdXR0b25FbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKKyAgICBSZWZQ
dHI8TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ+IHBsYXlCdXR0b24gPSBNZWRpYUNvbnRy
b2xQbGF5QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBjb250cm9scy0+bV9w
bGF5QnV0dG9uID0gcGxheUJ1dHRvbi5nZXQoKTsKICAgICBwYW5lbC0+YXBwZW5kQ2hpbGQocGxh
eUJ1dHRvbi5yZWxlYXNlKCksIGVjLCB0cnVlKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudD4g
dGltZWxpbmVDb250YWluZXIgPSBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6
OmNyZWF0ZShtZWRpYUVsZW1lbnQpOworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNv
bnRhaW5lckVsZW1lbnQ+IHRpbWVsaW5lQ29udGFpbmVyID0gTWVkaWFDb250cm9sVGltZWxpbmVD
b250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogCi0gICAgUmVmUHRyPE1lZGlhQ29u
dHJvbFRpbWVsaW5lRWxlbWVudD4gdGltZWxpbmUgPSBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1l
bnQ6OmNyZWF0ZShtZWRpYUVsZW1lbnQsIGNvbnRyb2xzLmdldCgpKTsKKyAgICBSZWZQdHI8TWVk
aWFDb250cm9sVGltZWxpbmVFbGVtZW50PiB0aW1lbGluZSA9IE1lZGlhQ29udHJvbFRpbWVsaW5l
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBjb250cm9scy5nZXQoKSk7CiAgICAgY29udHJvbHMt
Pm1fdGltZWxpbmUgPSB0aW1lbGluZS5nZXQoKTsKICAgICB0aW1lbGluZUNvbnRhaW5lci0+YXBw
ZW5kQ2hpbGQodGltZWxpbmUucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CiAgICAgaWYgKGVjKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3Bs
YXlFbGVtZW50PiBjdXJyZW50VGltZURpc3BsYXkgPSBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURp
c3BsYXlFbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKKyAgICBSZWZQdHI8TWVkaWFDb250
cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudD4gY3VycmVudFRpbWVEaXNwbGF5ID0gTWVkaWFD
b250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBj
b250cm9scy0+bV9jdXJyZW50VGltZURpc3BsYXkgPSBjdXJyZW50VGltZURpc3BsYXkuZ2V0KCk7
CiAgICAgdGltZWxpbmVDb250YWluZXItPmFwcGVuZENoaWxkKGN1cnJlbnRUaW1lRGlzcGxheS5y
ZWxlYXNlKCksIGVjLCB0cnVlKTsKICAgICBpZiAoZWMpCkBAIC05NSwxNSArOTUsMTUgQEAgUGFz
c1JlZlB0cjxNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtPiBNZWRpYUNvbnRyb2xSb290
RWxlbWVudENocm9taXVtOjpjcmUKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ+IHBhbmVsTXV0ZUJ1
dHRvbiA9IE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShtZWRpYUVs
ZW1lbnQsIGNvbnRyb2xzLmdldCgpKTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxNdXRl
QnV0dG9uRWxlbWVudD4gcGFuZWxNdXRlQnV0dG9uID0gTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0
dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBjb250cm9scy5nZXQoKSk7CiAgICAgY29udHJv
bHMtPm1fcGFuZWxNdXRlQnV0dG9uID0gcGFuZWxNdXRlQnV0dG9uLmdldCgpOwogICAgIHBhbmVs
LT5hcHBlbmRDaGlsZChwYW5lbE11dGVCdXR0b24ucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CiAgICAg
aWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1
bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiB2b2x1bWVTbGlkZXJDb250YWluZXIgPSBNZWRpYUNv
bnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsK
KyAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudD4gdm9s
dW1lU2xpZGVyQ29udGFpbmVyID0gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKIAotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJFbGVtZW50PiBzbGlkZXIgPSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50Ojpj
cmVhdGUobWVkaWFFbGVtZW50KTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVy
RWxlbWVudD4gc2xpZGVyID0gTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKICAgICBjb250cm9scy0+bV92b2x1bWVTbGlkZXIgPSBzbGlkZXIuZ2V0KCk7
CiAgICAgdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5hcHBlbmRDaGlsZChzbGlkZXIucmVsZWFzZSgp
LCBlYywgdHJ1ZSk7CiAgICAgaWYgKGVjKQpAQCAtMTIyLDYgKzEyMiwzMSBAQCBQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0+IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50
Q2hyb21pdW06OmNyZQogICAgIHJldHVybiBjb250cm9scy5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQg
TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6c2V0TWVkaWFDb250cm9sbGVyKE1lZGlh
Q29udHJvbGxlckludGVyZmFjZSogY29udHJvbGxlcikKK3sKKyAgICBpZiAobV9tZWRpYUNvbnRy
b2xsZXIgPT0gY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworICAgIG1fbWVkaWFDb250cm9s
bGVyID0gY29udHJvbGxlcjsKKworICAgIGlmIChtX3BsYXlCdXR0b24pCisgICAgICAgIG1fcGxh
eUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX2N1cnJl
bnRUaW1lRGlzcGxheSkKKyAgICAgICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNldE1lZGlhQ29u
dHJvbGxlcihjb250cm9sbGVyKTsKKyAgICBpZiAobV90aW1lbGluZSkKKyAgICAgICAgbV90aW1l
bGluZS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmIChtX3RpbWVsaW5l
Q29udGFpbmVyKQorICAgICAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xs
ZXIoY29udHJvbGxlcik7CisgICAgaWYgKG1fcGFuZWxNdXRlQnV0dG9uKQorICAgICAgICBtX3Bh
bmVsTXV0ZUJ1dHRvbi0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOworICAgIGlmICht
X3ZvbHVtZVNsaWRlcikKKyAgICAgICAgbV92b2x1bWVTbGlkZXItPnNldE1lZGlhQ29udHJvbGxl
cihjb250cm9sbGVyKTsKKyAgICBpZiAobV92b2x1bWVTbGlkZXJDb250YWluZXIpCisgICAgICAg
IG1fdm9sdW1lU2xpZGVyQ29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7
CisgICAgaWYgKG1fcGFuZWwpCisgICAgICAgIG1fcGFuZWwtPnNldE1lZGlhQ29udHJvbGxlcihj
b250cm9sbGVyKTsKKyAgICByZXNldCgpOworfQorCiB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVt
ZW50Q2hyb21pdW06OnNob3coKQogewogICAgIG1fcGFuZWwtPnNob3coKTsKQEAgLTE1MCwxNiAr
MTc1LDE2IEBAIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6cmVzZXQoKQog
CiAgICAgdXBkYXRlU3RhdHVzRGlzcGxheSgpOwogCi0gICAgZmxvYXQgZHVyYXRpb24gPSBtX21l
ZGlhRWxlbWVudC0+ZHVyYXRpb24oKTsKKyAgICBmbG9hdCBkdXJhdGlvbiA9IG1fbWVkaWFDb250
cm9sbGVyLT5kdXJhdGlvbigpOwogICAgIG1fdGltZWxpbmUtPnNldER1cmF0aW9uKGR1cmF0aW9u
KTsKICAgICBtX3RpbWVsaW5lQ29udGFpbmVyLT5zaG93KCk7Ci0gICAgbV90aW1lbGluZS0+c2V0
UG9zaXRpb24obV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCkpOworICAgIG1fdGltZWxpbmUt
PnNldFBvc2l0aW9uKG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpKTsKICAgICB1cGRh
dGVUaW1lRGlzcGxheSgpOwogCiAgICAgbV9wYW5lbE11dGVCdXR0b24tPnNob3coKTsKIAogICAg
IGlmIChtX3ZvbHVtZVNsaWRlcikKLSAgICAgICAgbV92b2x1bWVTbGlkZXItPnNldFZvbHVtZSht
X21lZGlhRWxlbWVudC0+dm9sdW1lKCkpOworICAgICAgICBtX3ZvbHVtZVNsaWRlci0+c2V0Vm9s
dW1lKG1fbWVkaWFDb250cm9sbGVyLT52b2x1bWUoKSk7CiAKICAgICBtYWtlT3BhcXVlKCk7CiB9
CkBAIC0xNjcsMzEgKzE5MiwzMSBAQCB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21p
dW06OnJlc2V0KCkKIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6cGxheWJh
Y2tTdGFydGVkKCkKIHsKICAgICBtX3BsYXlCdXR0b24tPnVwZGF0ZURpc3BsYXlUeXBlKCk7Ci0g
ICAgbV90aW1lbGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCkp
OworICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50
VGltZSgpKTsKICAgICB1cGRhdGVUaW1lRGlzcGxheSgpOwogfQogCiB2b2lkIE1lZGlhQ29udHJv
bFJvb3RFbGVtZW50Q2hyb21pdW06OnBsYXliYWNrUHJvZ3Jlc3NlZCgpCiB7Ci0gICAgbV90aW1l
bGluZS0+c2V0UG9zaXRpb24obV9tZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCkpOworICAgIG1f
dGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFDb250cm9sbGVyLT5jdXJyZW50VGltZSgpKTsK
ICAgICB1cGRhdGVUaW1lRGlzcGxheSgpOwogCi0gICAgaWYgKCFtX2lzTW91c2VPdmVyQ29udHJv
bHMgJiYgbV9tZWRpYUVsZW1lbnQtPmhhc1ZpZGVvKCkpCisgICAgaWYgKCFtX2lzTW91c2VPdmVy
Q29udHJvbHMgJiYgbV9tZWRpYUNvbnRyb2xsZXItPmhhc1ZpZGVvKCkpCiAgICAgICAgIG1ha2VU
cmFuc3BhcmVudCgpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06
OnBsYXliYWNrU3RvcHBlZCgpCiB7CiAgICAgbV9wbGF5QnV0dG9uLT51cGRhdGVEaXNwbGF5VHlw
ZSgpOwotICAgIG1fdGltZWxpbmUtPnNldFBvc2l0aW9uKG1fbWVkaWFFbGVtZW50LT5jdXJyZW50
VGltZSgpKTsKKyAgICBtX3RpbWVsaW5lLT5zZXRQb3NpdGlvbihtX21lZGlhQ29udHJvbGxlci0+
Y3VycmVudFRpbWUoKSk7CiAgICAgdXBkYXRlVGltZURpc3BsYXkoKTsKICAgICBtYWtlT3BhcXVl
KCk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6dXBkYXRlVGlt
ZURpc3BsYXkoKQogewotICAgIGZsb2F0IG5vdyA9IG1fbWVkaWFFbGVtZW50LT5jdXJyZW50VGlt
ZSgpOwotICAgIGZsb2F0IGR1cmF0aW9uID0gbV9tZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCk7Cisg
ICAgZmxvYXQgbm93ID0gbV9tZWRpYUNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCk7CisgICAgZmxv
YXQgZHVyYXRpb24gPSBtX21lZGlhQ29udHJvbGxlci0+ZHVyYXRpb24oKTsKIAogICAgIFBhZ2Uq
IHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMjQ1LDcgKzI3
MCw3IEBAIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6ZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLm1vdXNlb3ZlckV2ZW50KSB7CiAgICAgICAgIGlmICghY29udGFpbnNSZWxhdGVkVGFyZ2V0
KGV2ZW50KSkgewogICAgICAgICAgICAgbV9pc01vdXNlT3ZlckNvbnRyb2xzID0gdHJ1ZTsKLSAg
ICAgICAgICAgIGlmICghbV9tZWRpYUVsZW1lbnQtPmNhblBsYXkoKSkKKyAgICAgICAgICAgIGlm
ICghbV9tZWRpYUNvbnRyb2xsZXItPmNhblBsYXkoKSkKICAgICAgICAgICAgICAgICBtYWtlT3Bh
cXVlKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLm1vdXNlb3V0RXZlbnQpIHsKQEAgLTI2NSw3ICsyOTAsNyBAQCB2b2lkIE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OmNoYW5nZWRNdXRlKCkKIAogdm9pZCBNZWRpYUNvbnRy
b2xSb290RWxlbWVudENocm9taXVtOjpjaGFuZ2VkVm9sdW1lKCkKIHsKLSAgICBtX3ZvbHVtZVNs
aWRlci0+c2V0Vm9sdW1lKG1fbWVkaWFFbGVtZW50LT52b2x1bWUoKSk7CisgICAgbV92b2x1bWVT
bGlkZXItPnNldFZvbHVtZShtX21lZGlhQ29udHJvbGxlci0+dm9sdW1lKCkpOwogfQogCiB2b2lk
IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OmVudGVyZWRGdWxsc2NyZWVuKCkKQEAg
LTI3OCw3ICszMDMsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OmV4
aXRlZEZ1bGxzY3JlZW4oKQogCiB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06
OnNob3dWb2x1bWVTbGlkZXIoKQogewotICAgIGlmICghbV9tZWRpYUVsZW1lbnQtPmhhc0F1ZGlv
KCkpCisgICAgaWYgKCFtX21lZGlhQ29udHJvbGxlci0+aGFzQXVkaW8oKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV92b2x1bWVTbGlkZXJDb250YWluZXItPnNob3coKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21p
dW0uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50
Q2hyb21pdW0uaAppbmRleCBlZjliYjBiODBhNzkxNTllM2I3NGJmNTViMDVjNWY5Mzk5YTA5OThl
Li41MDgyNzIwNGQ4MTYyYzQxYjMxMDcwYTI5MGE2YTM1YWZmNzhhMzU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1l
bnRDaHJvbWl1bS5oCkBAIC0zNCw4ICszNCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OwotY2xhc3MgSFRNTE1lZGlh
RWxlbWVudDsKIGNsYXNzIEV2ZW50OwogY2xhc3MgTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9u
RWxlbWVudDsKIGNsYXNzIE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50OwpAQCAtNDksNiAr
NDksNyBAQCBjbGFzcyBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDsKIGNsYXNzIE1lZGlh
Q29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ7CiBjbGFzcyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlk
ZXJDb250YWluZXJFbGVtZW50OwogY2xhc3MgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OworY2xh
c3MgTWVkaWFDb250cm9sbGVySW50ZXJmYWNlOwogY2xhc3MgTWVkaWFQbGF5ZXI7CiAKIGNsYXNz
IFJlbmRlckJveDsKQEAgLTU2LDkgKzU3LDExIEBAIGNsYXNzIFJlbmRlck1lZGlhOwogCiBjbGFz
cyBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtIDogcHVibGljIE1lZGlhQ29udHJvbHMg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJvb3RFbGVtZW50
Q2hyb21pdW0+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bT4gY3JlYXRlKERvY3VtZW50Kik7CiAK
ICAgICAvLyBNZWRpYUNvbnRyb2xzIGltcGxlbWVudGF0aW9uLgorICAgIHZvaWQgc2V0TWVkaWFD
b250cm9sbGVyKE1lZGlhQ29udHJvbGxlckludGVyZmFjZSopOworCiAgICAgdm9pZCBzaG93KCk7
CiAgICAgdm9pZCBoaWRlKCk7CiAgICAgdm9pZCBtYWtlT3BhcXVlKCk7CkBAIC04Nyw3ICs5MCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSGlkZUNvbnRyb2xzKCk7CiAKIHBy
aXZhdGU6Ci0gICAgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bShIVE1MTWVkaWFFbGVt
ZW50Kik7CisgICAgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bShEb2N1bWVudCopOwog
CiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKIApAQCAtOTUs
NyArOTgsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBjb250YWluc1JlbGF0ZWRUYXJnZXQoRXZl
bnQqKTsKIAotICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fbWVkaWFFbGVtZW50OworICAgIE1lZGlh
Q29udHJvbGxlckludGVyZmFjZSogbV9tZWRpYUNvbnRyb2xsZXI7CiAKICAgICBNZWRpYUNvbnRy
b2xQbGF5QnV0dG9uRWxlbWVudCogbV9wbGF5QnV0dG9uOwogICAgIE1lZGlhQ29udHJvbEN1cnJl
bnRUaW1lRGlzcGxheUVsZW1lbnQqIG1fY3VycmVudFRpbWVEaXNwbGF5OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcAppbmRleCA2NjFmZDE5Yjc5ZTMxNzgz
MjYzNTdmNjk3OGFjNDA5ZmY1YTBlYjdiLi4yZDAwNzkyNTI0MTdhYjM1YmM4MzQyN2JlMWQwNmI4
NDMyMmU0NWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
LmNwcApAQCAtMzYsOCArMzYsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1lZGlhQ29u
dHJvbHM6Ok1lZGlhQ29udHJvbHMoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQotICAg
IDogSFRNTERpdkVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIG1lZGlhRWxlbWVudC0+ZG9jdW1l
bnQoKSkKK01lZGlhQ29udHJvbHM6Ok1lZGlhQ29udHJvbHMoRG9jdW1lbnQqIGRvY3VtZW50KQor
ICAgIDogSFRNTERpdkVsZW1lbnQoSFRNTE5hbWVzOjpkaXZUYWcsIGRvY3VtZW50KQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgKaW5kZXggMWUxNDMx
NDFhMjIyZGYyNDA1NTkzYTcyMTBjYWJmZGRiZjk3NzA2MS4uNGY2MDFmZDBlNGY1YzE3OGQ1ODQ4
ZjBmMjM3ZTIwOTY0ODgxY2U1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9scy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbHMuaApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2U7CiAK
IGNsYXNzIE1lZGlhQ29udHJvbHMgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewogICBwdWJsaWM6
CkBAIC00MSw3ICs0MSw5IEBAIGNsYXNzIE1lZGlhQ29udHJvbHMgOiBwdWJsaWMgSFRNTERpdkVs
ZW1lbnQgewogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB0byBiZSBpbXBsZW1lbnRlZCBpbiB5
b3VyIHBvcnQtc3BlY2lmaWMgbWVkaWEKICAgICAvLyBjb250cm9scyBpbXBsZW1lbnRhdGlvbi4K
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xzPiBjcmVhdGUoSFRNTE1lZGlhRWxl
bWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbHM+IGNyZWF0ZShEb2N1
bWVudCopOworCisgICAgdmlydHVhbCB2b2lkIHNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRy
b2xsZXJJbnRlcmZhY2UqKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2hvdygpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgaGlkZSgpID0gMDsKQEAgLTcxLDcgKzczLDcgQEAgY2xhc3MgTWVkaWFD
b250cm9scyA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZEhpZGVDb250cm9scygpID0gMDsKIAogcHJvdGVjdGVkOgotICAgIE1lZGlhQ29udHJvbHMoSFRN
TE1lZGlhRWxlbWVudCopOworICAgIE1lZGlhQ29udHJvbHMoRG9jdW1lbnQqKTsKIAogcHJpdmF0
ZToKICAgICBNZWRpYUNvbnRyb2xzKCk7Cg==
</data>
<flag name="review"
          id="113753"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
    <flag name="commit-queue"
          id="113761"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>