<?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>147551</bug_id>
          
          <creation_ts>2015-08-02 20:13:12 -0700</creation_ts>
          <short_desc>ScrollbarThemes should be returned by reference.</short_desc>
          <delta_ts>2015-09-02 19:58:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1114139</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-08-02 20:13:12 -0700</bug_when>
    <thetext>There&apos;s always a ScrollbarTheme, and we -&gt; them without null checking all the time.
Let&apos;s make ScrollbarTheme::theme() and Scrollbar::theme() return references.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114140</commentid>
    <comment_count>1</comment_count>
      <attachid>258047</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-08-02 20:16:46 -0700</bug_when>
    <thetext>Created attachment 258047
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114141</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-02 20:19:51 -0700</bug_when>
    <thetext>Attachment 258047 did not pass style-queue:


ERROR: Source/WebCore/platform/Scrollbar.cpp:62:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/Scrollbar.cpp:322:  Wrong number of spaces before statement. (expected: 26)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/Scrollbar.cpp:330:  Wrong number of spaces before statement. (expected: 26)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/Scrollbar.cpp:322:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/Scrollbar.cpp:390:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 5 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114211</commentid>
    <comment_count>3</comment_count>
      <attachid>258047</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-08-03 10:04:18 -0700</bug_when>
    <thetext>Comment on attachment 258047
Patch

Needs platform fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123010</commentid>
    <comment_count>4</comment_count>
      <attachid>260472</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-09-02 18:48:53 -0700</bug_when>
    <thetext>Created attachment 260472
Patch for landing (if EWS likes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123011</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-02 18:50:56 -0700</bug_when>
    <thetext>Attachment 260472 did not pass style-queue:


ERROR: Source/WebCore/platform/Scrollbar.cpp:321:  Wrong number of spaces before statement. (expected: 26)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/Scrollbar.cpp:329:  Wrong number of spaces before statement. (expected: 26)  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/Scrollbar.cpp:321:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/Scrollbar.cpp:389:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 4 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123034</commentid>
    <comment_count>6</comment_count>
      <attachid>260472</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-02 19:58:22 -0700</bug_when>
    <thetext>Comment on attachment 260472
Patch for landing (if EWS likes)

Clearing flags on attachment: 260472

Committed r189270: &lt;http://trac.webkit.org/changeset/189270&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123035</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-02 19:58:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258047</attachid>
            <date>2015-08-02 20:16:46 -0700</date>
            <delta_ts>2015-09-02 18:48:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147551.diff</filename>
            <type>text/plain</type>
            <size>47837</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzM2IzNDE4Li45NWJkNWM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkx
IEBACisyMDE1LTA4LTAyICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAg
ICAgICBTY3JvbGxiYXJUaGVtZXMgc2hvdWxkIGJlIHJldHVybmVkIGJ5IHJlZmVyZW5jZS4KKyAg
ICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0NzU1MT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSdzIGFsd2F5cyBhIFNjcm9sbGJhclRo
ZW1lIG9mIHNvbWUgdHlwZSwgc28gaGF2ZSBTY3JvbGxiYXJUaGVtZSBnZXR0ZXJzCisgICAgICAg
IHJldHVybiByZWZlcmVuY2VzIGFsbCBhcm91bmQuCisKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JD
aGVja2VyVGVzdEZ1bmN0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6c2Nyb2xsYmFyTWF0Y2hl
c0RvdWJsZUJ1dHRvblBzZXVkb0NsYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbGJhck1h
dGNoZXNTaW5nbGVCdXR0b25Qc2V1ZG9DbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxi
YXJNYXRjaGVzTm9CdXR0b25Qc2V1ZG9DbGFzcyk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU3Bp
bkJ1dHRvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6
OnN0YXJ0UmVwZWF0aW5nVGltZXIpOgorICAgICAgICAqIHBhZ2UvUGFnZU92ZXJsYXkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZU92ZXJsYXk6OmJvdW5kcyk6CisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldFNjcm9s
bGJhclBhaW50ZXJzRnJvbVNjcm9sbGJhcnMpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZp
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxiYXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjptYXhPdmVy
bGFwQmV0d2VlblBhZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6U2Nyb2xsYmFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6flNjcm9sbGJhcik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXI6Om9mZnNldERpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXI6OnVwZGF0ZVRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFp
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjphdXRvc2Nyb2xsVGltZXJGaXJlZCk6
CisgICAgICAgIChXZWJDb3JlOjp0aHVtYlVuZGVyTW91c2UpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyOjphdXRvc2Nyb2xsUHJlc3NlZFBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyOjpzdGFydFRpbWVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
Ojptb3ZlVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpzZXRIb3ZlcmVkUGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnNldFByZXNzZWRQYXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bW91c2VNb3ZlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXI6Om1vdXNlVXApOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjptb3VzZURv
d24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpzZXRFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhcjo6aXNPdmVybGF5U2Nyb2xsYmFyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxiYXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6dGhlbWUpOgor
ICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lOjp0aGVtZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvU2Nyb2xs
YmFyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6bmF0aXZl
VGhlbWUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAg
ICAgICAgKG1hY1Njcm9sbGJhclRoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xs
YmFyVGhlbWVNYWMubW06CisgICAgICAgICgrW1dlYlNjcm9sbGJhclByZWZzT2JzZXJ2ZXIgYXBw
ZWFyYW5jZVByZWZzQ2hhbmdlZDpdKToKKyAgICAgICAgKCtbV2ViU2Nyb2xsYmFyUHJlZnNPYnNl
cnZlciBiZWhhdmlvclByZWZzQ2hhbmdlZDpdKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lOjpuYXRpdmVUaGVtZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1BvcHVwTWVudVdp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46OmNhbGN1bGF0ZVBvc2l0aW9u
QW5kU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlUG9wdXBNZW51OjphY2NMb2Nh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlUG9wdXBNZW51OjphY2NIaXRUZXN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aGFzVmVydGljYWxTY3JvbGxiYXJX
aXRoQXV0b0JlaGF2aW9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aGFzSG9yaXpv
bnRhbFNjcm9sbGJhcldpdGhBdXRvQmVoYXZpb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3JuZXJSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OnN0eWxlUmVxdWlyZXNTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVE
ZWZpbmVzQXV0b21hdGljU2Nyb2xsYmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6dXBkYXRlU2Ny
b2xsYmFyUGFydCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclBhcnQ6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclBhcnQ6OmltYWdlQ2hhbmdlZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRpY2ttYXJrcyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjpzY3Jv
bGxiYXJUaGlja25lc3MpOgorCiAyMDE1LTA4LTAxICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFj
aEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IE9uIHNvbWUgY29tcGxleCBzaXRlcywgaU9TIGlu
c3RhbnRseSBjcmFzaGVzIG9uY2UgVm9pY2VPdmVyIGlzIHR1cm5lZCBvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmgKaW5kZXggYWQ3YTFj
OS4uYThhYjVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tl
clRlc3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
VGVzdEZ1bmN0aW9ucy5oCkBAIC0yODgsNyArMjg4LDcgQEAgQUxXQVlTX0lOTElORSBib29sIHNj
cm9sbGJhck1hdGNoZXNEb3VibGVCdXR0b25Qc2V1ZG9DbGFzcyhjb25zdCBTZWxlY3RvckNoZWNr
ZXIKIHsKICAgICBpZiAoIWNvbnRleHQuc2Nyb2xsYmFyKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBidXR0b25zUGxhY2VtZW50ID0gY29udGV4
dC5zY3JvbGxiYXItPnRoZW1lKCktPmJ1dHRvbnNQbGFjZW1lbnQoKTsKKyAgICBTY3JvbGxiYXJC
dXR0b25zUGxhY2VtZW50IGJ1dHRvbnNQbGFjZW1lbnQgPSBjb250ZXh0LnNjcm9sbGJhci0+dGhl
bWUoKS5idXR0b25zUGxhY2VtZW50KCk7CiAgICAgaWYgKGNvbnRleHQuc2Nyb2xsYmFyUGFydCA9
PSBCYWNrQnV0dG9uU3RhcnRQYXJ0IHx8IGNvbnRleHQuc2Nyb2xsYmFyUGFydCA9PSBGb3J3YXJk
QnV0dG9uU3RhcnRQYXJ0IHx8IGNvbnRleHQuc2Nyb2xsYmFyUGFydCA9PSBCYWNrVHJhY2tQYXJ0
KQogICAgICAgICByZXR1cm4gYnV0dG9uc1BsYWNlbWVudCA9PSBTY3JvbGxiYXJCdXR0b25zRG91
YmxlU3RhcnQgfHwgYnV0dG9uc1BsYWNlbWVudCA9PSBTY3JvbGxiYXJCdXR0b25zRG91YmxlQm90
aDsKICAgICBpZiAoY29udGV4dC5zY3JvbGxiYXJQYXJ0ID09IEJhY2tCdXR0b25FbmRQYXJ0IHx8
IGNvbnRleHQuc2Nyb2xsYmFyUGFydCA9PSBGb3J3YXJkQnV0dG9uRW5kUGFydCB8fCBjb250ZXh0
LnNjcm9sbGJhclBhcnQgPT0gRm9yd2FyZFRyYWNrUGFydCkKQEAgLTMwMCw3ICszMDAsNyBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wgc2Nyb2xsYmFyTWF0Y2hlc1NpbmdsZUJ1dHRvblBzZXVkb0NsYXNz
KGNvbnN0IFNlbGVjdG9yQ2hlY2tlcgogewogICAgIGlmICghY29udGV4dC5zY3JvbGxiYXIpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBTY3JvbGxiYXJCdXR0b25zUGxhY2VtZW50IGJ1dHRv
bnNQbGFjZW1lbnQgPSBjb250ZXh0LnNjcm9sbGJhci0+dGhlbWUoKS0+YnV0dG9uc1BsYWNlbWVu
dCgpOworICAgIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQgYnV0dG9uc1BsYWNlbWVudCA9IGNv
bnRleHQuc2Nyb2xsYmFyLT50aGVtZSgpLmJ1dHRvbnNQbGFjZW1lbnQoKTsKICAgICBpZiAoY29u
dGV4dC5zY3JvbGxiYXJQYXJ0ID09IEJhY2tCdXR0b25TdGFydFBhcnQgfHwgY29udGV4dC5zY3Jv
bGxiYXJQYXJ0ID09IEZvcndhcmRCdXR0b25FbmRQYXJ0IHx8IGNvbnRleHQuc2Nyb2xsYmFyUGFy
dCA9PSBCYWNrVHJhY2tQYXJ0IHx8IGNvbnRleHQuc2Nyb2xsYmFyUGFydCA9PSBGb3J3YXJkVHJh
Y2tQYXJ0KQogICAgICAgICByZXR1cm4gYnV0dG9uc1BsYWNlbWVudCA9PSBTY3JvbGxiYXJCdXR0
b25zU2luZ2xlOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTMxMCw3ICszMTAsNyBAQCBBTFdBWVNf
SU5MSU5FIGJvb2wgc2Nyb2xsYmFyTWF0Y2hlc05vQnV0dG9uUHNldWRvQ2xhc3MoY29uc3QgU2Vs
ZWN0b3JDaGVja2VyOjpDaAogewogICAgIGlmICghY29udGV4dC5zY3JvbGxiYXIpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBTY3JvbGxiYXJCdXR0b25zUGxhY2VtZW50IGJ1dHRvbnNQbGFj
ZW1lbnQgPSBjb250ZXh0LnNjcm9sbGJhci0+dGhlbWUoKS0+YnV0dG9uc1BsYWNlbWVudCgpOwor
ICAgIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQgYnV0dG9uc1BsYWNlbWVudCA9IGNvbnRleHQu
c2Nyb2xsYmFyLT50aGVtZSgpLmJ1dHRvbnNQbGFjZW1lbnQoKTsKICAgICBpZiAoY29udGV4dC5z
Y3JvbGxiYXJQYXJ0ID09IEJhY2tUcmFja1BhcnQpCiAgICAgICAgIHJldHVybiBidXR0b25zUGxh
Y2VtZW50ID09IFNjcm9sbGJhckJ1dHRvbnNOb25lIHx8IGJ1dHRvbnNQbGFjZW1lbnQgPT0gU2Ny
b2xsYmFyQnV0dG9uc0RvdWJsZUVuZDsKICAgICBpZiAoY29udGV4dC5zY3JvbGxiYXJQYXJ0ID09
IEZvcndhcmRUcmFja1BhcnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TcGluQnV0dG9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGlu
QnV0dG9uRWxlbWVudC5jcHAKaW5kZXggYzAwYjYxOS4uYWQwMGEzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcApAQCAtMjA3LDggKzIw
Nyw4IEBAIGJvb2wgU3BpbkJ1dHRvbkVsZW1lbnQ6Om1hdGNoZXNSZWFkV3JpdGVQc2V1ZG9DbGFz
cygpIGNvbnN0CiB2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpzdGFydFJlcGVhdGluZ1RpbWVyKCkK
IHsKICAgICBtX3ByZXNzU3RhcnRpbmdTdGF0ZSA9IG1fdXBEb3duU3RhdGU7Ci0gICAgU2Nyb2xs
YmFyVGhlbWUqIHRoZW1lID0gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCk7Ci0gICAgbV9yZXBlYXRp
bmdUaW1lci5zdGFydCh0aGVtZS0+aW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCksIHRoZW1l
LT5hdXRvc2Nyb2xsVGltZXJEZWxheSgpKTsKKyAgICBTY3JvbGxiYXJUaGVtZSYgdGhlbWUgPSBT
Y3JvbGxiYXJUaGVtZTo6dGhlbWUoKTsKKyAgICBtX3JlcGVhdGluZ1RpbWVyLnN0YXJ0KHRoZW1l
LmluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpLCB0aGVtZS5hdXRvc2Nyb2xsVGltZXJEZWxh
eSgpKTsKIH0KIAogdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6c3RvcFJlcGVhdGluZ1RpbWVyKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheS5jcHAKaW5kZXggYTliOTFjZC4uZTU2NjAwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheS5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgSW50UmVjdCBQ
YWdlT3ZlcmxheTo6Ym91bmRzKCkgY29uc3QKICAgICAgICAgaW50IHdpZHRoID0gZnJhbWVWaWV3
LT53aWR0aCgpOwogICAgICAgICBpbnQgaGVpZ2h0ID0gZnJhbWVWaWV3LT5oZWlnaHQoKTsKIAot
ICAgICAgICBpZiAoIVNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT51c2VzT3ZlcmxheVNjcm9sbGJh
cnMoKSkgeworICAgICAgICBpZiAoIVNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnVzZXNPdmVybGF5
U2Nyb2xsYmFycygpKSB7CiAgICAgICAgICAgICBpZiAoZnJhbWVWaWV3LT52ZXJ0aWNhbFNjcm9s
bGJhcigpKQogICAgICAgICAgICAgICAgIHdpZHRoIC09IGZyYW1lVmlldy0+dmVydGljYWxTY3Jv
bGxiYXIoKS0+d2lkdGgoKTsKICAgICAgICAgICAgIGlmIChmcmFtZVZpZXctPmhvcml6b250YWxT
Y3JvbGxiYXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5t
bQppbmRleCBiZDg1NTdmLi5hNWViOTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1N0YXRlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjLm1tCkBAIC0zNywxNSArMzcsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIAogdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xs
YmFyUGFpbnRlcnNGcm9tU2Nyb2xsYmFycyhTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyLCBT
Y3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIpCiB7Ci0gICAgU2Nyb2xsYmFyVGhlbWUqIHNj
cm9sbGJhclRoZW1lID0gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCk7Ci0gICAgaWYgKHNjcm9sbGJh
clRoZW1lLT5pc01vY2tUaGVtZSgpKQorICAgIFNjcm9sbGJhclRoZW1lJiBzY3JvbGxiYXJUaGVt
ZSA9IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpOworICAgIGlmIChzY3JvbGxiYXJUaGVtZS5pc01v
Y2tUaGVtZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgU2Nyb2xsYmFyVGhlbWVNYWMqIG1hY1Ro
ZW1lID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyVGhlbWVNYWMqPihzY3JvbGxiYXJUaGVtZSk7Cisg
ICAgU2Nyb2xsYmFyVGhlbWVNYWMmIG1hY1RoZW1lID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyVGhl
bWVNYWMmPihzY3JvbGxiYXJUaGVtZSk7CiAKICAgICBTY3JvbGxiYXJQYWludGVyIHZlcnRpY2Fs
UGFpbnRlciA9IHZlcnRpY2FsU2Nyb2xsYmFyICYmIHZlcnRpY2FsU2Nyb2xsYmFyLT5zdXBwb3J0
c1VwZGF0ZU9uU2Vjb25kYXJ5VGhyZWFkKCkKLSAgICAgICAgPyBtYWNUaGVtZS0+cGFpbnRlckZv
clNjcm9sbGJhcigqdmVydGljYWxTY3JvbGxiYXIpIDogbnVsbHB0cjsKKyAgICAgICAgPyBtYWNU
aGVtZS5wYWludGVyRm9yU2Nyb2xsYmFyKCp2ZXJ0aWNhbFNjcm9sbGJhcikgOiBudWxscHRyOwog
ICAgIFNjcm9sbGJhclBhaW50ZXIgaG9yaXpvbnRhbFBhaW50ZXIgPSBob3Jpem9udGFsU2Nyb2xs
YmFyICYmIGhvcml6b250YWxTY3JvbGxiYXItPnN1cHBvcnRzVXBkYXRlT25TZWNvbmRhcnlUaHJl
YWQoKQotICAgICAgICA/IG1hY1RoZW1lLT5wYWludGVyRm9yU2Nyb2xsYmFyKCpob3Jpem9udGFs
U2Nyb2xsYmFyKSA6IG51bGxwdHI7CisgICAgICAgID8gbWFjVGhlbWUucGFpbnRlckZvclNjcm9s
bGJhcigqaG9yaXpvbnRhbFNjcm9sbGJhcikgOiBudWxscHRyOwogCiAgICAgaWYgKG1fdmVydGlj
YWxTY3JvbGxiYXJQYWludGVyID09IHZlcnRpY2FsUGFpbnRlciAmJiBtX2hvcml6b250YWxTY3Jv
bGxiYXJQYWludGVyID09IGhvcml6b250YWxQYWludGVyKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4IGZiMDM3MmEuLmFmYTFjNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0xMTQ5LDcgKzExNDksNyBA
QCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcigpCiAKIHZvaWQgU2Nyb2xsVmll
dzo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBjb3JuZXJSZWN0KQogewotICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5wYWludFNj
cm9sbENvcm5lcih0aGlzLCBjb250ZXh0LCBjb3JuZXJSZWN0KTsKKyAgICBTY3JvbGxiYXJUaGVt
ZTo6dGhlbWUoKS5wYWludFNjcm9sbENvcm5lcih0aGlzLCBjb250ZXh0LCBjb3JuZXJSZWN0KTsK
IH0KIAogdm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhciogYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQpAQCAtMTMwMSw3ICsx
MzAxLDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVPdmVyaGFuZ0FyZWFzKCkKIAogdm9pZCBT
Y3JvbGxWaWV3OjpwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiB2ZXJ0
aWNhbE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogewotICAgIFNjcm9s
bGJhclRoZW1lOjp0aGVtZSgpLT5wYWludE92ZXJoYW5nQXJlYXModGhpcywgY29udGV4dCwgaG9y
aXpvbnRhbE92ZXJoYW5nUmVjdCwgdmVydGljYWxPdmVyaGFuZ1JlY3QsIGRpcnR5UmVjdCk7Cisg
ICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkucGFpbnRPdmVyaGFuZ0FyZWFzKHRoaXMsIGNvbnRl
eHQsIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJl
Y3QpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OmNhbGN1bGF0ZUFuZFBhaW50T3ZlcmhhbmdBcmVh
cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCA1ZGZjNjk1Li5h
ZWZjMDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBA
IC0zMzksMTQgKzMzOSwxNCBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxiYXJPdmVy
bGF5U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIG92ZXJsYXlTdHlsZQogICAgIG1fc2Nyb2xs
YmFyT3ZlcmxheVN0eWxlID0gb3ZlcmxheVN0eWxlOwogCiAgICAgaWYgKGhvcml6b250YWxTY3Jv
bGxiYXIoKSkgewotICAgICAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+dXBkYXRlU2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKCpob3Jpem9udGFsU2Nyb2xsYmFyKCkpOworICAgICAgICBTY3JvbGxi
YXJUaGVtZTo6dGhlbWUoKS51cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoKmhvcml6b250YWxT
Y3JvbGxiYXIoKSk7CiAgICAgICAgIGhvcml6b250YWxTY3JvbGxiYXIoKS0+aW52YWxpZGF0ZSgp
OwogICAgICAgICBpZiAoU2Nyb2xsQW5pbWF0b3IqIHNjcm9sbEFuaW1hdG9yID0gZXhpc3RpbmdT
Y3JvbGxBbmltYXRvcigpKQogICAgICAgICAgICAgc2Nyb2xsQW5pbWF0b3ItPmludmFsaWRhdGVT
Y3JvbGxiYXJQYXJ0TGF5ZXJzKGhvcml6b250YWxTY3JvbGxiYXIoKSk7CiAgICAgfQogICAgIAog
ICAgIGlmICh2ZXJ0aWNhbFNjcm9sbGJhcigpKSB7Ci0gICAgICAgIFNjcm9sbGJhclRoZW1lOjp0
aGVtZSgpLT51cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoKnZlcnRpY2FsU2Nyb2xsYmFyKCkp
OworICAgICAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS51cGRhdGVTY3JvbGxiYXJPdmVybGF5
U3R5bGUoKnZlcnRpY2FsU2Nyb2xsYmFyKCkpOwogICAgICAgICB2ZXJ0aWNhbFNjcm9sbGJhcigp
LT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIGlmIChTY3JvbGxBbmltYXRvciogc2Nyb2xsQW5pbWF0
b3IgPSBleGlzdGluZ1Njcm9sbEFuaW1hdG9yKCkpCiAgICAgICAgICAgICBzY3JvbGxBbmltYXRv
ci0+aW52YWxpZGF0ZVNjcm9sbGJhclBhcnRMYXllcnModmVydGljYWxTY3JvbGxiYXIoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAppbmRleCBjNGUxYzU1Li42NTc1YzJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKQEAgLTUwLDE2ICs1MCwxNiBAQCBQ
YXNzUmVmUHRyPFNjcm9sbGJhcj4gU2Nyb2xsYmFyOjpjcmVhdGVOYXRpdmVTY3JvbGxiYXIoU2Ny
b2xsYWJsZUFyZWEmIHNjcm9sbGFibAogCiBpbnQgU2Nyb2xsYmFyOjptYXhPdmVybGFwQmV0d2Vl
blBhZ2VzKCkKIHsKLSAgICBzdGF0aWMgaW50IG1heE92ZXJsYXBCZXR3ZWVuUGFnZXMgPSBTY3Jv
bGxiYXJUaGVtZTo6dGhlbWUoKS0+bWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpOworICAgIHN0YXRp
YyBpbnQgbWF4T3ZlcmxhcEJldHdlZW5QYWdlcyA9IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLm1h
eE92ZXJsYXBCZXR3ZWVuUGFnZXMoKTsKICAgICByZXR1cm4gbWF4T3ZlcmxhcEJldHdlZW5QYWdl
czsKIH0KIAogU2Nyb2xsYmFyOjpTY3JvbGxiYXIoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVB
cmVhLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNp
emUgY29udHJvbFNpemUsCi0gICAgU2Nyb2xsYmFyVGhlbWUqIHRoZW1lLCBib29sIGlzQ3VzdG9t
U2Nyb2xsYmFyKQorICAgIFNjcm9sbGJhclRoZW1lKiBjdXN0b21UaGVtZSwgYm9vbCBpc0N1c3Rv
bVNjcm9sbGJhcikKICAgICA6IG1fc2Nyb2xsYWJsZUFyZWEoc2Nyb2xsYWJsZUFyZWEpCiAgICAg
LCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQogICAgICwgbV9jb250cm9sU2l6ZShjb250cm9s
U2l6ZSkKLSAgICAsIG1fdGhlbWUodGhlbWUpCisgICAgLCBtX3RoZW1lKGN1c3RvbVRoZW1lID8g
KmN1c3RvbVRoZW1lIDogU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkpCiAgICAgLCBtX3Zpc2libGVT
aXplKDApCiAgICAgLCBtX3RvdGFsU2l6ZSgwKQogICAgICwgbV9jdXJyZW50UG9zKDApCkBAIC04
MCwxNSArODAsMTIgQEAgU2Nyb2xsYmFyOjpTY3JvbGxiYXIoU2Nyb2xsYWJsZUFyZWEmIHNjcm9s
bGFibGVBcmVhLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnQKICAgICAsIG1faXNDdXN0b21T
Y3JvbGxiYXIoaXNDdXN0b21TY3JvbGxiYXIpCiAgICAgLCBtX3dlYWtQdHJGYWN0b3J5KHRoaXMp
CiB7Ci0gICAgaWYgKCFtX3RoZW1lKQotICAgICAgICBtX3RoZW1lID0gU2Nyb2xsYmFyVGhlbWU6
OnRoZW1lKCk7Ci0KLSAgICBtX3RoZW1lLT5yZWdpc3RlclNjcm9sbGJhcigqdGhpcyk7CisgICAg
dGhlbWUoKS5yZWdpc3RlclNjcm9sbGJhcigqdGhpcyk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBp
cyB1Z2x5IGFuZCB3b3VsZCBub3QgYmUgbmVjZXNzYXJ5IGlmIHdlIGZpeCBjcm9zcy1wbGF0Zm9y
bSBjb2RlIHRvIGFjdHVhbGx5IHF1ZXJ5IGZvcgogICAgIC8vIHNjcm9sbGJhciB0aGlja25lc3Mg
YW5kIHVzZSBpdCB3aGVuIHNpemluZyBzY3JvbGxiYXJzIChyYXRoZXIgdGhhbiBsZWF2aW5nIG9u
ZSBkaW1lbnNpb24gb2YgdGhlIHNjcm9sbGJhcgogICAgIC8vIGFsb25lIHdoZW4gc2l6aW5nKS4K
LSAgICBpbnQgdGhpY2tuZXNzID0gbV90aGVtZS0+c2Nyb2xsYmFyVGhpY2tuZXNzKGNvbnRyb2xT
aXplKTsKKyAgICBpbnQgdGhpY2tuZXNzID0gdGhlbWUoKS5zY3JvbGxiYXJUaGlja25lc3MoY29u
dHJvbFNpemUpOwogICAgIFdpZGdldDo6c2V0RnJhbWVSZWN0KEludFJlY3QoMCwgMCwgdGhpY2tu
ZXNzLCB0aGlja25lc3MpKTsKIAogICAgIG1fY3VycmVudFBvcyA9IHN0YXRpY19jYXN0PGZsb2F0
PihtX3Njcm9sbGFibGVBcmVhLnNjcm9sbFBvc2l0aW9uKHRoaXMpKTsKQEAgLTk4LDcgKzk1LDcg
QEAgU2Nyb2xsYmFyOjp+U2Nyb2xsYmFyKCkKIHsKICAgICBzdG9wVGltZXJJZk5lZWRlZCgpOwog
ICAgIAotICAgIG1fdGhlbWUtPnVucmVnaXN0ZXJTY3JvbGxiYXIoKnRoaXMpOworICAgIHRoZW1l
KCkudW5yZWdpc3RlclNjcm9sbGJhcigqdGhpcyk7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyOjpvZmZz
ZXREaWRDaGFuZ2UoKQpAQCAtMTA3LDExICsxMDQsMTEgQEAgdm9pZCBTY3JvbGxiYXI6Om9mZnNl
dERpZENoYW5nZSgpCiAgICAgaWYgKHBvc2l0aW9uID09IG1fY3VycmVudFBvcykKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaW50IG9sZFRodW1iUG9zaXRpb24gPSB0aGVtZSgpLT50aHVtYlBvc2l0
aW9uKCp0aGlzKTsKKyAgICBpbnQgb2xkVGh1bWJQb3NpdGlvbiA9IHRoZW1lKCkudGh1bWJQb3Np
dGlvbigqdGhpcyk7CiAgICAgbV9jdXJyZW50UG9zID0gcG9zaXRpb247CiAgICAgdXBkYXRlVGh1
bWJQb3NpdGlvbigpOwogICAgIGlmIChtX3ByZXNzZWRQYXJ0ID09IFRodW1iUGFydCkKLSAgICAg
ICAgc2V0UHJlc3NlZFBvcyhtX3ByZXNzZWRQb3MgKyB0aGVtZSgpLT50aHVtYlBvc2l0aW9uKCp0
aGlzKSAtIG9sZFRodW1iUG9zaXRpb24pOworICAgICAgICBzZXRQcmVzc2VkUG9zKG1fcHJlc3Nl
ZFBvcyArIHRoZW1lKCkudGh1bWJQb3NpdGlvbigqdGhpcykgLSBvbGRUaHVtYlBvc2l0aW9uKTsK
IH0KIAogdm9pZCBTY3JvbGxiYXI6OnNldFByb3BvcnRpb24oaW50IHZpc2libGVTaXplLCBpbnQg
dG90YWxTaXplKQpAQCAtMTM3LDcgKzEzNCw3IEBAIHZvaWQgU2Nyb2xsYmFyOjp1cGRhdGVUaHVt
YigpCiAjaWZkZWYgVEhVTUJfUE9TSVRJT05fQUZGRUNUU19CVVRUT05TCiAgICAgaW52YWxpZGF0
ZSgpOwogI2Vsc2UKLSAgICB0aGVtZSgpLT5pbnZhbGlkYXRlUGFydHMoKnRoaXMsIEZvcndhcmRU
cmFja1BhcnQgfCBCYWNrVHJhY2tQYXJ0IHwgVGh1bWJQYXJ0KTsKKyAgICB0aGVtZSgpLmludmFs
aWRhdGVQYXJ0cygqdGhpcywgRm9yd2FyZFRyYWNrUGFydCB8IEJhY2tUcmFja1BhcnQgfCBUaHVt
YlBhcnQpOwogI2VuZGlmCiB9CiAKQEAgLTE1Myw3ICsxNTAsNyBAQCB2b2lkIFNjcm9sbGJhcjo6
dXBkYXRlVGh1bWJQcm9wb3J0aW9uKCkKIAogdm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsKLSAgICBpZiAo
Y29udGV4dC0+dXBkYXRpbmdDb250cm9sVGludHMoKSAmJiB0aGVtZSgpLT5zdXBwb3J0c0NvbnRy
b2xUaW50cygpKSB7CisgICAgaWYgKGNvbnRleHQtPnVwZGF0aW5nQ29udHJvbFRpbnRzKCkgJiYg
dGhlbWUoKS5zdXBwb3J0c0NvbnRyb2xUaW50cygpKSB7CiAgICAgICAgIGludmFsaWRhdGUoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE2MSwxOSArMTU4LDE5IEBAIHZvaWQgU2Nyb2xs
YmFyOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFn
ZVJlY3QpCiAgICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCAhZnJhbWVSZWN0
KCkuaW50ZXJzZWN0cyhkYW1hZ2VSZWN0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCF0
aGVtZSgpLT5wYWludCgqdGhpcywgKmNvbnRleHQsIGRhbWFnZVJlY3QpKQorICAgIGlmICghdGhl
bWUoKS5wYWludCgqdGhpcywgKmNvbnRleHQsIGRhbWFnZVJlY3QpKQogICAgICAgICBXaWRnZXQ6
OnBhaW50KGNvbnRleHQsIGRhbWFnZVJlY3QpOwogfQogCiB2b2lkIFNjcm9sbGJhcjo6YXV0b3Nj
cm9sbFRpbWVyRmlyZWQoKQogewotICAgIGF1dG9zY3JvbGxQcmVzc2VkUGFydCh0aGVtZSgpLT5h
dXRvc2Nyb2xsVGltZXJEZWxheSgpKTsKKyAgICBhdXRvc2Nyb2xsUHJlc3NlZFBhcnQodGhlbWUo
KS5hdXRvc2Nyb2xsVGltZXJEZWxheSgpKTsKIH0KIAogc3RhdGljIGJvb2wgdGh1bWJVbmRlck1v
dXNlKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogewotICAgIGludCB0aHVtYlBvcyA9IHNjcm9sbGJh
ci0+dGhlbWUoKS0+dHJhY2tQb3NpdGlvbigqc2Nyb2xsYmFyKSArIHNjcm9sbGJhci0+dGhlbWUo
KS0+dGh1bWJQb3NpdGlvbigqc2Nyb2xsYmFyKTsKLSAgICBpbnQgdGh1bWJMZW5ndGggPSBzY3Jv
bGxiYXItPnRoZW1lKCktPnRodW1iTGVuZ3RoKCpzY3JvbGxiYXIpOworICAgIGludCB0aHVtYlBv
cyA9IHNjcm9sbGJhci0+dGhlbWUoKS50cmFja1Bvc2l0aW9uKCpzY3JvbGxiYXIpICsgc2Nyb2xs
YmFyLT50aGVtZSgpLnRodW1iUG9zaXRpb24oKnNjcm9sbGJhcik7CisgICAgaW50IHRodW1iTGVu
Z3RoID0gc2Nyb2xsYmFyLT50aGVtZSgpLnRodW1iTGVuZ3RoKCpzY3JvbGxiYXIpOwogICAgIHJl
dHVybiBzY3JvbGxiYXItPnByZXNzZWRQb3MoKSA+PSB0aHVtYlBvcyAmJiBzY3JvbGxiYXItPnBy
ZXNzZWRQb3MoKSA8IHRodW1iUG9zICsgdGh1bWJMZW5ndGg7CiB9CiAKQEAgLTE4NSw3ICsxODIs
NyBAQCB2b2lkIFNjcm9sbGJhcjo6YXV0b3Njcm9sbFByZXNzZWRQYXJ0KGRvdWJsZSBkZWxheSkK
IAogICAgIC8vIEhhbmRsZSB0aGUgdHJhY2suCiAgICAgaWYgKChtX3ByZXNzZWRQYXJ0ID09IEJh
Y2tUcmFja1BhcnQgfHwgbV9wcmVzc2VkUGFydCA9PSBGb3J3YXJkVHJhY2tQYXJ0KSAmJiB0aHVt
YlVuZGVyTW91c2UodGhpcykpIHsKLSAgICAgICAgdGhlbWUoKS0+aW52YWxpZGF0ZVBhcnQoKnRo
aXMsIG1fcHJlc3NlZFBhcnQpOworICAgICAgICB0aGVtZSgpLmludmFsaWRhdGVQYXJ0KCp0aGlz
LCBtX3ByZXNzZWRQYXJ0KTsKICAgICAgICAgc2V0SG92ZXJlZFBhcnQoVGh1bWJQYXJ0KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIwNCw3ICsyMDEsNyBAQCB2b2lkIFNjcm9sbGJhcjo6
c3RhcnRUaW1lcklmTmVlZGVkKGRvdWJsZSBkZWxheSkKICAgICAvLyBIYW5kbGUgdGhlIHRyYWNr
LiAgV2UgaGFsdCB0cmFjayBzY3JvbGxpbmcgb25jZSB0aGUgdGh1bWIgaXMgbGV2ZWwKICAgICAv
LyB3aXRoIHVzLgogICAgIGlmICgobV9wcmVzc2VkUGFydCA9PSBCYWNrVHJhY2tQYXJ0IHx8IG1f
cHJlc3NlZFBhcnQgPT0gRm9yd2FyZFRyYWNrUGFydCkgJiYgdGh1bWJVbmRlck1vdXNlKHRoaXMp
KSB7Ci0gICAgICAgIHRoZW1lKCktPmludmFsaWRhdGVQYXJ0KCp0aGlzLCBtX3ByZXNzZWRQYXJ0
KTsKKyAgICAgICAgdGhlbWUoKS5pbnZhbGlkYXRlUGFydCgqdGhpcywgbV9wcmVzc2VkUGFydCk7
CiAgICAgICAgIHNldEhvdmVyZWRQYXJ0KFRodW1iUGFydCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0yNzMsOSArMjcwLDkgQEAgdm9pZCBTY3JvbGxiYXI6Om1vdmVUaHVtYihpbnQgcG9z
LCBib29sIGRyYWdnaW5nRG9jdW1lbnQpCiAgICAgfQogCiAgICAgLy8gRHJhZyB0aGUgdGh1bWIu
Ci0gICAgaW50IHRodW1iUG9zID0gdGhlbWUoKS0+dGh1bWJQb3NpdGlvbigqdGhpcyk7Ci0gICAg
aW50IHRodW1iTGVuID0gdGhlbWUoKS0+dGh1bWJMZW5ndGgoKnRoaXMpOwotICAgIGludCB0cmFj
a0xlbiA9IHRoZW1lKCktPnRyYWNrTGVuZ3RoKCp0aGlzKTsKKyAgICBpbnQgdGh1bWJQb3MgPSB0
aGVtZSgpLnRodW1iUG9zaXRpb24oKnRoaXMpOworICAgIGludCB0aHVtYkxlbiA9IHRoZW1lKCku
dGh1bWJMZW5ndGgoKnRoaXMpOworICAgIGludCB0cmFja0xlbiA9IHRoZW1lKCkudHJhY2tMZW5n
dGgoKnRoaXMpOwogICAgIGludCBtYXhQb3MgPSB0cmFja0xlbiAtIHRodW1iTGVuOwogICAgIGlm
IChkZWx0YSA+IDApCiAgICAgICAgIGRlbHRhID0gc3RkOjptaW4obWF4UG9zIC0gdGh1bWJQb3Ms
IGRlbHRhKTsKQEAgLTI5MywxMSArMjkwLDExIEBAIHZvaWQgU2Nyb2xsYmFyOjpzZXRIb3ZlcmVk
UGFydChTY3JvbGxiYXJQYXJ0IHBhcnQpCiAgICAgaWYgKHBhcnQgPT0gbV9ob3ZlcmVkUGFydCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKChtX2hvdmVyZWRQYXJ0ID09IE5vUGFydCB8fCBw
YXJ0ID09IE5vUGFydCkgJiYgdGhlbWUoKS0+aW52YWxpZGF0ZU9uTW91c2VFbnRlckV4aXQoKSkK
KyAgICBpZiAoKG1faG92ZXJlZFBhcnQgPT0gTm9QYXJ0IHx8IHBhcnQgPT0gTm9QYXJ0KSAmJiB0
aGVtZSgpLmludmFsaWRhdGVPbk1vdXNlRW50ZXJFeGl0KCkpCiAgICAgICAgIGludmFsaWRhdGUo
KTsgIC8vIEp1c3QgaW52YWxpZGF0ZSB0aGUgd2hvbGUgc2Nyb2xsYmFyLCBzaW5jZSB0aGUgYnV0
dG9ucyBhdCBlaXRoZXIgZW5kIGNoYW5nZSBhbnl3YXkuCiAgICAgZWxzZSBpZiAobV9wcmVzc2Vk
UGFydCA9PSBOb1BhcnQpIHsgIC8vIFdoZW4gdGhlcmUncyBhIHByZXNzZWQgcGFydCwgd2UgZG9u
J3QgZHJhdyBhIGhvdmVyZWQgc3RhdGUsIHNvIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIGludmFsaWRh
dGUuCi0gICAgICAgIHRoZW1lKCktPmludmFsaWRhdGVQYXJ0KCp0aGlzLCBwYXJ0KTsKLSAgICAg
ICAgdGhlbWUoKS0+aW52YWxpZGF0ZVBhcnQoKnRoaXMsIG1faG92ZXJlZFBhcnQpOworICAgICAg
ICB0aGVtZSgpLmludmFsaWRhdGVQYXJ0KCp0aGlzLCBwYXJ0KTsKKyAgICAgICAgdGhlbWUoKS5p
bnZhbGlkYXRlUGFydCgqdGhpcywgbV9ob3ZlcmVkUGFydCk7CiAgICAgfQogICAgIG1faG92ZXJl
ZFBhcnQgPSBwYXJ0OwogfQpAQCAtMzA1LDI0ICszMDIsMjQgQEAgdm9pZCBTY3JvbGxiYXI6OnNl
dEhvdmVyZWRQYXJ0KFNjcm9sbGJhclBhcnQgcGFydCkKIHZvaWQgU2Nyb2xsYmFyOjpzZXRQcmVz
c2VkUGFydChTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgaWYgKG1fcHJlc3NlZFBhcnQgIT0g
Tm9QYXJ0KQotICAgICAgICB0aGVtZSgpLT5pbnZhbGlkYXRlUGFydCgqdGhpcywgbV9wcmVzc2Vk
UGFydCk7CisgICAgICAgIHRoZW1lKCkuaW52YWxpZGF0ZVBhcnQoKnRoaXMsIG1fcHJlc3NlZFBh
cnQpOwogICAgIG1fcHJlc3NlZFBhcnQgPSBwYXJ0OwogICAgIGlmIChtX3ByZXNzZWRQYXJ0ICE9
IE5vUGFydCkKLSAgICAgICAgdGhlbWUoKS0+aW52YWxpZGF0ZVBhcnQoKnRoaXMsIG1fcHJlc3Nl
ZFBhcnQpOworICAgICAgICB0aGVtZSgpLmludmFsaWRhdGVQYXJ0KCp0aGlzLCBtX3ByZXNzZWRQ
YXJ0KTsKICAgICBlbHNlIGlmIChtX2hvdmVyZWRQYXJ0ICE9IE5vUGFydCkgIC8vIFdoZW4gd2Ug
bm8gbG9uZ2VyIGhhdmUgYSBwcmVzc2VkIHBhcnQsIHdlIGNhbiBzdGFydCBkcmF3aW5nIGEgaG92
ZXJlZCBzdGF0ZSBvbiB0aGUgaG92ZXJlZCBwYXJ0LgotICAgICAgICB0aGVtZSgpLT5pbnZhbGlk
YXRlUGFydCgqdGhpcywgbV9ob3ZlcmVkUGFydCk7CisgICAgICAgIHRoZW1lKCkuaW52YWxpZGF0
ZVBhcnQoKnRoaXMsIG1faG92ZXJlZFBhcnQpOwogfQogCiAjaWYgIVBMQVRGT1JNKElPUykKIGJv
b2wgU2Nyb2xsYmFyOjptb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQog
ewogICAgIGlmIChtX3ByZXNzZWRQYXJ0ID09IFRodW1iUGFydCkgewotICAgICAgICBpZiAodGhl
bWUoKS0+c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oKnRoaXMsIGV2dCkpCisgICAgICAgIGlm
ICh0aGVtZSgpLnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKCp0aGlzLCBldnQpKQogICAgICAg
ICAgICAgbV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24obV9v
cmllbnRhdGlvbiwgbV9kcmFnT3JpZ2luKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBt
b3ZlVGh1bWIobV9vcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gCiAgICAgICAg
ICAgICAgICAgICAgICAgY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigp
KS54KCkgOgotICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRv
dyhldnQucG9zaXRpb24oKSkueSgpLCB0aGVtZSgpLT5zaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFk
T2ZUaHVtYigqdGhpcywgZXZ0KSk7CisgICAgICAgICAgICAgICAgICAgICAgY29udmVydEZyb21D
b250YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigpKS55KCksIHRoZW1lKCkuc2hvdWxkRHJhZ0Rv
Y3VtZW50SW5zdGVhZE9mVGh1bWIoKnRoaXMsIGV2dCkpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTMzMCwxOSArMzI3LDE5IEBAIGJvb2wgU2Nyb2xsYmFyOjpt
b3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogICAgIGlmIChtX3ByZXNz
ZWRQYXJ0ICE9IE5vUGFydCkKICAgICAgICAgbV9wcmVzc2VkUG9zID0gKG9yaWVudGF0aW9uKCkg
PT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQu
cG9zaXRpb24oKSkueCgpIDogY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3NpdGlv
bigpKS55KCkpOwogCi0gICAgU2Nyb2xsYmFyUGFydCBwYXJ0ID0gdGhlbWUoKS0+aGl0VGVzdCgq
dGhpcywgZXZ0LnBvc2l0aW9uKCkpOworICAgIFNjcm9sbGJhclBhcnQgcGFydCA9IHRoZW1lKCku
aGl0VGVzdCgqdGhpcywgZXZ0LnBvc2l0aW9uKCkpOwogICAgIGlmIChwYXJ0ICE9IG1faG92ZXJl
ZFBhcnQpIHsKICAgICAgICAgaWYgKG1fcHJlc3NlZFBhcnQgIT0gTm9QYXJ0KSB7CiAgICAgICAg
ICAgICBpZiAocGFydCA9PSBtX3ByZXNzZWRQYXJ0KSB7CiAgICAgICAgICAgICAgICAgLy8gVGhl
IG1vdXNlIGlzIG1vdmluZyBiYWNrIG92ZXIgdGhlIHByZXNzZWQgcGFydC4gIFdlCiAgICAgICAg
ICAgICAgICAgLy8gbmVlZCB0byBzdGFydCB1cCB0aGUgdGltZXIgYWN0aW9uIGFnYWluLgotICAg
ICAgICAgICAgICAgIHN0YXJ0VGltZXJJZk5lZWRlZCh0aGVtZSgpLT5hdXRvc2Nyb2xsVGltZXJE
ZWxheSgpKTsKLSAgICAgICAgICAgICAgICB0aGVtZSgpLT5pbnZhbGlkYXRlUGFydCgqdGhpcywg
bV9wcmVzc2VkUGFydCk7CisgICAgICAgICAgICAgICAgc3RhcnRUaW1lcklmTmVlZGVkKHRoZW1l
KCkuYXV0b3Njcm9sbFRpbWVyRGVsYXkoKSk7CisgICAgICAgICAgICAgICAgdGhlbWUoKS5pbnZh
bGlkYXRlUGFydCgqdGhpcywgbV9wcmVzc2VkUGFydCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYg
KG1faG92ZXJlZFBhcnQgPT0gbV9wcmVzc2VkUGFydCkgewogICAgICAgICAgICAgICAgIC8vIFRo
ZSBtb3VzZSBpcyBsZWF2aW5nIHRoZSBwcmVzc2VkIHBhcnQuICBLaWxsIG91ciB0aW1lcgogICAg
ICAgICAgICAgICAgIC8vIGlmIG5lZWRlZC4KICAgICAgICAgICAgICAgICBzdG9wVGltZXJJZk5l
ZWRlZCgpOwotICAgICAgICAgICAgICAgIHRoZW1lKCktPmludmFsaWRhdGVQYXJ0KCp0aGlzLCBt
X3ByZXNzZWRQYXJ0KTsKKyAgICAgICAgICAgICAgICB0aGVtZSgpLmludmFsaWRhdGVQYXJ0KCp0
aGlzLCBtX3ByZXNzZWRQYXJ0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSAKICAgICAgICAg
CkBAIC0zNzQsNyArMzcxLDcgQEAgYm9vbCBTY3JvbGxiYXI6Om1vdXNlVXAoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogCiAgICAgLy8gbV9ob3ZlcmVkUGFydCB3b24ndCBi
ZSB1cGRhdGVkIHVudGlsIHRoZSBuZXh0IG1vdXNlTW92ZWQgb3IgbW91c2VEb3duLCBzbyB3ZSBo
YXZlIHRvIGhpdCB0ZXN0CiAgICAgLy8gdG8gcmVhbGx5IGtub3cgaWYgdGhlIG1vdXNlIGhhcyBl
eGl0ZWQgdGhlIHNjcm9sbGJhciBvbiBhIG1vdXNlVXAuCi0gICAgU2Nyb2xsYmFyUGFydCBwYXJ0
ID0gdGhlbWUoKS0+aGl0VGVzdCgqdGhpcywgbW91c2VFdmVudC5wb3NpdGlvbigpKTsKKyAgICBT
Y3JvbGxiYXJQYXJ0IHBhcnQgPSB0aGVtZSgpLmhpdFRlc3QoKnRoaXMsIG1vdXNlRXZlbnQucG9z
aXRpb24oKSk7CiAgICAgaWYgKHBhcnQgPT0gTm9QYXJ0KQogICAgICAgICBtX3Njcm9sbGFibGVB
cmVhLm1vdXNlRXhpdGVkU2Nyb2xsYmFyKHRoaXMpOwogCkBAIC0zODcsMTggKzM4NCwxOCBAQCBi
b29sIFNjcm9sbGJhcjo6bW91c2VEb3duKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQog
ICAgIGlmIChldnQuYnV0dG9uKCkgPT0gUmlnaHRCdXR0b24pCiAgICAgICAgIHJldHVybiB0cnVl
OyAvLyBGSVhNRTogSGFuZGxlZCBhcyBjb250ZXh0IG1lbnUgYnkgUXQgcmlnaHQgbm93LiAgU2hv
dWxkIGp1c3QgYXZvaWQgZXZlbiBjYWxsaW5nIHRoaXMgbWV0aG9kIG9uIGEgcmlnaHQgY2xpY2sg
dGhvdWdoLgogCi0gICAgc2V0UHJlc3NlZFBhcnQodGhlbWUoKS0+aGl0VGVzdCgqdGhpcywgZXZ0
LnBvc2l0aW9uKCkpKTsKKyAgICBzZXRQcmVzc2VkUGFydCh0aGVtZSgpLmhpdFRlc3QoKnRoaXMs
IGV2dC5wb3NpdGlvbigpKSk7CiAgICAgaW50IHByZXNzZWRQb3MgPSAob3JpZW50YXRpb24oKSA9
PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gY29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5w
b3NpdGlvbigpKS54KCkgOiBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9u
KCkpLnkoKSk7CiAgICAgCi0gICAgaWYgKChtX3ByZXNzZWRQYXJ0ID09IEJhY2tUcmFja1BhcnQg
fHwgbV9wcmVzc2VkUGFydCA9PSBGb3J3YXJkVHJhY2tQYXJ0KSAmJiB0aGVtZSgpLT5zaG91bGRD
ZW50ZXJPblRodW1iKCp0aGlzLCBldnQpKSB7CisgICAgaWYgKChtX3ByZXNzZWRQYXJ0ID09IEJh
Y2tUcmFja1BhcnQgfHwgbV9wcmVzc2VkUGFydCA9PSBGb3J3YXJkVHJhY2tQYXJ0KSAmJiB0aGVt
ZSgpLnNob3VsZENlbnRlck9uVGh1bWIoKnRoaXMsIGV2dCkpIHsKICAgICAgICAgc2V0SG92ZXJl
ZFBhcnQoVGh1bWJQYXJ0KTsKICAgICAgICAgc2V0UHJlc3NlZFBhcnQoVGh1bWJQYXJ0KTsKICAg
ICAgICAgbV9kcmFnT3JpZ2luID0gbV9jdXJyZW50UG9zOwotICAgICAgICBpbnQgdGh1bWJMZW4g
PSB0aGVtZSgpLT50aHVtYkxlbmd0aCgqdGhpcyk7CisgICAgICAgIGludCB0aHVtYkxlbiA9IHRo
ZW1lKCkudGh1bWJMZW5ndGgoKnRoaXMpOwogICAgICAgICBpbnQgZGVzaXJlZFBvcyA9IHByZXNz
ZWRQb3M7CiAgICAgICAgIC8vIFNldCB0aGUgcHJlc3NlZCBwb3NpdGlvbiB0byB0aGUgbWlkZGxl
IG9mIHRoZSB0aHVtYiBzbyB0aGF0IHdoZW4gd2UgZG8gdGhlIG1vdmUsIHRoZSBkZWx0YQogICAg
ICAgICAvLyB3aWxsIGJlIGZyb20gdGhlIGN1cnJlbnQgcGl4ZWwgcG9zaXRpb24gb2YgdGhlIHRo
dW1iIHRvIHRoZSBuZXcgZGVzaXJlZCBwb3NpdGlvbiBmb3IgdGhlIHRodW1iLgotICAgICAgICBt
X3ByZXNzZWRQb3MgPSB0aGVtZSgpLT50cmFja1Bvc2l0aW9uKCp0aGlzKSArIHRoZW1lKCktPnRo
dW1iUG9zaXRpb24oKnRoaXMpICsgdGh1bWJMZW4gLyAyOworICAgICAgICBtX3ByZXNzZWRQb3Mg
PSB0aGVtZSgpLnRyYWNrUG9zaXRpb24oKnRoaXMpICsgdGhlbWUoKS50aHVtYlBvc2l0aW9uKCp0
aGlzKSArIHRodW1iTGVuIC8gMjsKICAgICAgICAgbW92ZVRodW1iKGRlc2lyZWRQb3MpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKG1fcHJlc3NlZFBhcnQgPT0gVGh1bWJQ
YXJ0KQpAQCAtNDA2LDcgKzQwMyw3IEBAIGJvb2wgU2Nyb2xsYmFyOjptb3VzZURvd24oY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiAgICAgCiAgICAgbV9wcmVzc2VkUG9zID0gcHJlc3Nl
ZFBvczsKIAotICAgIGF1dG9zY3JvbGxQcmVzc2VkUGFydCh0aGVtZSgpLT5pbml0aWFsQXV0b3Nj
cm9sbFRpbWVyRGVsYXkoKSk7CisgICAgYXV0b3Njcm9sbFByZXNzZWRQYXJ0KHRoZW1lKCkuaW5p
dGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00
MTUsMTMgKzQxMiwxMyBAQCB2b2lkIFNjcm9sbGJhcjo6c2V0RW5hYmxlZChib29sIGUpCiAgICAg
aWYgKG1fZW5hYmxlZCA9PSBlKQogICAgICAgICByZXR1cm47CiAgICAgbV9lbmFibGVkID0gZTsK
LSAgICB0aGVtZSgpLT51cGRhdGVFbmFibGVkU3RhdGUoKnRoaXMpOworICAgIHRoZW1lKCkudXBk
YXRlRW5hYmxlZFN0YXRlKCp0aGlzKTsKICAgICBpbnZhbGlkYXRlKCk7CiB9CiAKIGJvb2wgU2Ny
b2xsYmFyOjppc092ZXJsYXlTY3JvbGxiYXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3RoZW1l
LT51c2VzT3ZlcmxheVNjcm9sbGJhcnMoKTsKKyAgICByZXR1cm4gdGhlbWUoKS51c2VzT3Zlcmxh
eVNjcm9sbGJhcnMoKTsKIH0KIAogYm9vbCBTY3JvbGxiYXI6OnNob3VsZFBhcnRpY2lwYXRlSW5I
aXRUZXN0aW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJh
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKaW5kZXggYmI1MTdlYi4u
MjAwNjJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKQEAgLTEwNyw3ICsxMDcs
NyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1vdXNlRG93bihjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAotICAgIFNjcm9sbGJhclRoZW1lKiB0aGVtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGhlbWU7IH0KKyAgICBTY3JvbGxiYXJUaGVtZSYgdGhlbWUoKSBjb25zdCB7
IHJldHVybiBtX3RoZW1lOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29u
c3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCkBAIC0xNDgsNyArMTQ4LDcgQEAgcHJvdGVjdGVkOgog
ICAgIFNjcm9sbGFibGVBcmVhJiBtX3Njcm9sbGFibGVBcmVhOwogICAgIFNjcm9sbGJhck9yaWVu
dGF0aW9uIG1fb3JpZW50YXRpb247CiAgICAgU2Nyb2xsYmFyQ29udHJvbFNpemUgbV9jb250cm9s
U2l6ZTsKLSAgICBTY3JvbGxiYXJUaGVtZSogbV90aGVtZTsKKyAgICBTY3JvbGxiYXJUaGVtZSYg
bV90aGVtZTsKIAogICAgIGludCBtX3Zpc2libGVTaXplOwogICAgIGludCBtX3RvdGFsU2l6ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmNwcAppbmRleCA4ZWQyZDk1
OS4uZDczN2UyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
VGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmNw
cApAQCAtMzEsMTEgKzMxLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2Nyb2xsYmFy
VGhlbWUqIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpCitTY3JvbGxiYXJUaGVtZSYgU2Nyb2xsYmFy
VGhlbWU6OnRoZW1lKCkKIHsKICAgICBpZiAoU2V0dGluZ3M6Om1vY2tTY3JvbGxiYXJzRW5hYmxl
ZCgpKSB7CiAgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTY3JvbGxiYXJU
aGVtZU1vY2ssIG1vY2tUaGVtZSwgKCkpOwotICAgICAgICByZXR1cm4gJm1vY2tUaGVtZTsKKyAg
ICAgICAgcmV0dXJuIG1vY2tUaGVtZTsKICAgICB9CiAgICAgcmV0dXJuIG5hdGl2ZVRoZW1lKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaAppbmRleCBmYThhZjBl
Li42NmEwMzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKQEAg
LTExMywxMCArMTEzLDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc01vY2tUaGVt
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
U2Nyb2xsYmFyVGhlbWUqIHRoZW1lKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNjcm9s
bGJhclRoZW1lJiB0aGVtZSgpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBTY3JvbGxiYXJUaGVt
ZSogbmF0aXZlVGhlbWUoKTsgLy8gTXVzdCBiZSBpbXBsZW1lbnRlZCB0byByZXR1cm4gdGhlIGNv
cnJlY3QgdGhlbWUgc3ViY2xhc3MuCisgICAgc3RhdGljIFNjcm9sbGJhclRoZW1lJiBuYXRpdmVU
aGVtZSgpOyAvLyBNdXN0IGJlIGltcGxlbWVudGVkIHRvIHJldHVybiB0aGUgY29ycmVjdCB0aGVt
ZSBzdWJjbGFzcy4KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
U2Nyb2xsYmFyVGhlbWVFZmwuY3BwCmluZGV4IDU5YTQ5ZDAuLjczMWEwOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmNwcApAQCAtMzgs
MTAgKzM4LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2Nyb2xsYmFyVGhlbWUqIFNj
cm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpCitTY3JvbGxiYXJUaGVtZSYgU2Nyb2xsYmFyVGhl
bWU6Om5hdGl2ZVRoZW1lKCkKIHsKICAgICBzdGF0aWMgU2Nyb2xsYmFyVGhlbWVFZmwgdGhlbWU7
Ci0gICAgcmV0dXJuICZ0aGVtZTsKKyAgICByZXR1cm4gdGhlbWU7CiB9CiAKIHN0YXRpYyBjb25z
dCBpbnQgZGVmYXVsdFRoaWNrbmVzcyA9IDEwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAKaW5kZXggOWExNTNmNi4uNzBjZjE5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3Bw
CkBAIC0zNiwxMCArMzYsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JvbGxiYXJU
aGVtZSogU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkKK1Njcm9sbGJhclRoZW1lJiBTY3Jv
bGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKQogewogICAgIHN0YXRpYyBTY3JvbGxiYXJUaGVtZUd0
ayB0aGVtZTsKLSAgICByZXR1cm4gJnRoZW1lOworICAgIHJldHVybiB0aGVtZTsKIH0KIAogU2Ny
b2xsYmFyVGhlbWVHdGs6On5TY3JvbGxiYXJUaGVtZUd0aygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsYmFyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsYmFyVGhlbWVJT1MubW0KaW5kZXggZWRjMWE1OS4uNTE3MDEw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbGJhclRoZW1l
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxiYXJUaGVtZUlP
Uy5tbQpAQCAtMzUsMTAgKzM1LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2Nyb2xs
YmFyVGhlbWUqIFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpCitTY3JvbGxiYXJUaGVtZSYg
U2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U2Nyb2xsYmFyVGhlbWVJT1M+IHRoZW1lOwotICAgIHJldHVybiAmdGhlbWUuZ2V0KCk7Cisg
ICAgcmV0dXJuIHRoZW1lOwogfQogCiB2b2lkIFNjcm9sbGJhclRoZW1lSU9TOjpyZWdpc3RlclNj
cm9sbGJhcihTY3JvbGxiYXImKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbEFuaW1hdG9yTWFjLm1tCmluZGV4IDM4YzQ0NDYuLmViODMzMGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTYzLDggKzYz
LDggQEAgc3RhdGljIGJvb2wgc3VwcG9ydHNDb250ZW50QXJlYVNjcm9sbGVkSW5EaXJlY3Rpb24o
KQogCiBzdGF0aWMgU2Nyb2xsYmFyVGhlbWVNYWMqIG1hY1Njcm9sbGJhclRoZW1lKCkKIHsKLSAg
ICBTY3JvbGxiYXJUaGVtZSogc2Nyb2xsYmFyVGhlbWUgPSBTY3JvbGxiYXJUaGVtZTo6dGhlbWUo
KTsKLSAgICByZXR1cm4gIXNjcm9sbGJhclRoZW1lLT5pc01vY2tUaGVtZSgpID8gc3RhdGljX2Nh
c3Q8U2Nyb2xsYmFyVGhlbWVNYWMqPihzY3JvbGxiYXJUaGVtZSkgOiAwOworICAgIFNjcm9sbGJh
clRoZW1lJiBzY3JvbGxiYXJUaGVtZSA9IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpOworICAgIHJl
dHVybiAhc2Nyb2xsYmFyVGhlbWUuaXNNb2NrVGhlbWUoKSA/IHN0YXRpY19jYXN0PFNjcm9sbGJh
clRoZW1lTWFjKj4oJnNjcm9sbGJhclRoZW1lKSA6IG51bGxwdHI7CiB9CiAKIHN0YXRpYyBTY3Jv
bGxiYXJQYWludGVyIHNjcm9sbGJhclBhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyJiBzY3Jv
bGxiYXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFy
VGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVN
YWMubW0KaW5kZXggNzdmMmQ4MC4uODUxNTdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1
ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RlbXBvcmFy
eUNoYW5nZS5oPgogCkBAIC03NywxMSArNzgsMTEgQEAgc3RhdGljIFNjcm9sbGJhclBhaW50ZXJN
YXAqIHNjcm9sbGJhck1hcCgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHVudXNlZE5vdGlmaWNhdGlv
bik7CiAKLSAgICBTY3JvbGxiYXJUaGVtZSogdGhlbWUgPSBTY3JvbGxiYXJUaGVtZTo6dGhlbWUo
KTsKLSAgICBpZiAodGhlbWUtPmlzTW9ja1RoZW1lKCkpCisgICAgU2Nyb2xsYmFyVGhlbWUmIHRo
ZW1lID0gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCk7CisgICAgaWYgKHRoZW1lLmlzTW9ja1RoZW1l
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0YXRpY19jYXN0PFNjcm9sbGJhclRoZW1lTWFj
Kj4oU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkpLT5wcmVmZXJlbmNlc0NoYW5nZWQoKTsKKyAgICBz
dGF0aWNfY2FzdDxTY3JvbGxiYXJUaGVtZU1hYyY+KHRoZW1lKS5wcmVmZXJlbmNlc0NoYW5nZWQo
KTsKICAgICBpZiAoc2Nyb2xsYmFyTWFwKCktPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIFNjcm9sbGJhclBhaW50ZXJNYXA6Oml0ZXJhdG9yIGVuZCA9IHNjcm9sbGJhck1hcCgpLT5l
bmQoKTsKQEAgLTk1LDExICs5NiwxMSBAQCBzdGF0aWMgU2Nyb2xsYmFyUGFpbnRlck1hcCogc2Ny
b2xsYmFyTWFwKCkKIHsKICAgICBVTlVTRURfUEFSQU0odW51c2VkTm90aWZpY2F0aW9uKTsKIAot
ICAgIFNjcm9sbGJhclRoZW1lKiB0aGVtZSA9IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpOwotICAg
IGlmICh0aGVtZS0+aXNNb2NrVGhlbWUoKSkKKyAgICBTY3JvbGxiYXJUaGVtZSYgdGhlbWUgPSBT
Y3JvbGxiYXJUaGVtZTo6dGhlbWUoKTsKKyAgICBpZiAodGhlbWUuaXNNb2NrVGhlbWUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyVGhlbWVNYWMqPihTY3Jv
bGxiYXJUaGVtZTo6dGhlbWUoKSktPnByZWZlcmVuY2VzQ2hhbmdlZCgpOworICAgIHN0YXRpY19j
YXN0PFNjcm9sbGJhclRoZW1lTWFjJj4odGhlbWUpLnByZWZlcmVuY2VzQ2hhbmdlZCgpOwogfQog
CiArICh2b2lkKXJlZ2lzdGVyQXNPYnNlcnZlcgpAQCAtMTEyLDEwICsxMTMsMTAgQEAgc3RhdGlj
IFNjcm9sbGJhclBhaW50ZXJNYXAqIHNjcm9sbGJhck1hcCgpCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotU2Nyb2xsYmFyVGhlbWUqIFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpCitTY3Jv
bGxiYXJUaGVtZSYgU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU2Nyb2xsYmFyVGhlbWVNYWMsIHRoZW1lLCAoKSk7Ci0g
ICAgcmV0dXJuICZ0aGVtZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2Nyb2xsYmFyVGhl
bWVNYWM+IHRoZW1lOworICAgIHJldHVybiB0aGVtZTsKIH0KIAogLy8gRklYTUU6IEdldCB0aGVz
ZSBudW1iZXJzIGZyb20gQ29yZVVJLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1BvcHVwTWVudVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9w
dXBNZW51V2luLmNwcAppbmRleCAxOTY3ZmFlLi5iMjJhODI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQg
UG9wdXBNZW51V2luOjpjYWxjdWxhdGVQb3NpdGlvbkFuZFNpemUoY29uc3QgSW50UmVjdCYgciwg
RnJhbWVWaWV3KiB2KQogCiAgICAgaWYgKG5hdHVyYWxIZWlnaHQgPiBtYXhQb3B1cEhlaWdodCkK
ICAgICAgICAgLy8gV2UgbmVlZCByb29tIGZvciBhIHNjcm9sbGJhcgotICAgICAgICBwb3B1cFdp
ZHRoICs9IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zY3JvbGxiYXJUaGlja25lc3MoU21hbGxT
Y3JvbGxiYXIpOworICAgICAgICBwb3B1cFdpZHRoICs9IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgp
LnNjcm9sbGJhclRoaWNrbmVzcyhTbWFsbFNjcm9sbGJhcik7CiAKICAgICAvLyBBZGQgcGFkZGlu
ZyB0byBhbGlnbiB0aGUgcG9wdXAgdGV4dCB3aXRoIHRoZSA8c2VsZWN0PiB0ZXh0CiAgICAgcG9w
dXBXaWR0aCArPSBzdGQ6Om1heDxpbnQ+KDAsIGNsaWVudCgpLT5jbGllbnRQYWRkaW5nUmlnaHQo
KSAtIGNsaWVudCgpLT5jbGllbnRJbnNldFJpZ2h0KCkpICsgc3RkOjptYXg8aW50PigwLCBjbGll
bnQoKS0+Y2xpZW50UGFkZGluZ0xlZnQoKSAtIGNsaWVudCgpLT5jbGllbnRJbnNldExlZnQoKSk7
CkBAIC0xMjg1LDI2ICsxMjg1LDI0IEBAIEhSRVNVTFQgQWNjZXNzaWJsZVBvcHVwTWVudTo6YWNj
TG9jYXRpb24obG9uZyogbGVmdCwgbG9uZyogdG9wLCBsb25nKiB3aWR0aCwgbG9uCiAgICAgICAg
IFNjcm9sbGJhciYgc2Nyb2xsYmFyID0gKm1fcG9wdXBNZW51LnNjcm9sbGJhcigpOwogICAgICAg
ICBXZWJDb3JlOjpTY3JvbGxiYXJQYXJ0IHBhcnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpTY3Jv
bGxiYXJQYXJ0PigtdkNoaWxkLmxWYWwpOwogCi0gICAgICAgIFNjcm9sbGJhclRoZW1lV2luKiB0
aGVtZSA9IHN0YXRpY19jYXN0PFNjcm9sbGJhclRoZW1lV2luKj4oc2Nyb2xsYmFyLnRoZW1lKCkp
OwotICAgICAgICBpZiAoIXRoZW1lKQotICAgICAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAgICAg
ICAgU2Nyb2xsYmFyVGhlbWVXaW4mIHRoZW1lID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyVGhlbWVX
aW4mPihzY3JvbGxiYXIudGhlbWUoKSk7CiAKICAgICAgICAgSW50UmVjdCBwYXJ0UmVjdDsKIAog
ICAgICAgICBzd2l0Y2ggKHBhcnQpIHsKICAgICAgICAgY2FzZSBCYWNrVHJhY2tQYXJ0OgogICAg
ICAgICBjYXNlIEJhY2tCdXR0b25TdGFydFBhcnQ6Ci0gICAgICAgICAgICBwYXJ0UmVjdCA9IHRo
ZW1lLT5iYWNrQnV0dG9uUmVjdChzY3JvbGxiYXIsIFdlYkNvcmU6OkJhY2tUcmFja1BhcnQpOwor
ICAgICAgICAgICAgcGFydFJlY3QgPSB0aGVtZS5iYWNrQnV0dG9uUmVjdChzY3JvbGxiYXIsIFdl
YkNvcmU6OkJhY2tUcmFja1BhcnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
VGh1bWJQYXJ0OgotICAgICAgICAgICAgcGFydFJlY3QgPSB0aGVtZS0+dGh1bWJSZWN0KHNjcm9s
bGJhcik7CisgICAgICAgICAgICBwYXJ0UmVjdCA9IHRoZW1lLnRodW1iUmVjdChzY3JvbGxiYXIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRm9yd2FyZFRyYWNrUGFydDoKICAg
ICAgICAgY2FzZSBGb3J3YXJkQnV0dG9uRW5kUGFydDoKLSAgICAgICAgICAgIHBhcnRSZWN0ID0g
dGhlbWUtPmZvcndhcmRCdXR0b25SZWN0KHNjcm9sbGJhciwgV2ViQ29yZTo6Rm9yd2FyZFRyYWNr
UGFydCk7CisgICAgICAgICAgICBwYXJ0UmVjdCA9IHRoZW1lLmZvcndhcmRCdXR0b25SZWN0KHNj
cm9sbGJhciwgV2ViQ29yZTo6Rm9yd2FyZFRyYWNrUGFydCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBTY3JvbGxiYXJCR1BhcnQ6Ci0gICAgICAgICAgICBwYXJ0UmVjdCA9IHRo
ZW1lLT50cmFja1JlY3Qoc2Nyb2xsYmFyKTsKKyAgICAgICAgICAgIHBhcnRSZWN0ID0gdGhlbWUu
dHJhY2tSZWN0KHNjcm9sbGJhcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0xMzU2LDEyICsxMzU0LDEwIEBAIEhS
RVNVTFQgQWNjZXNzaWJsZVBvcHVwTWVudTo6YWNjSGl0VGVzdChsb25nIHgsIGxvbmcgeSwgVkFS
SUFOVCogcHZDaGlsZEF0UG9pbnQpCiAKICAgICBpZiAobV9wb3B1cE1lbnUuc2Nyb2xsYmFyKCkg
JiYgc2Nyb2xsUmVjdC5jb250YWlucyhwdCkpIHsKICAgICAgICAgU2Nyb2xsYmFyJiBzY3JvbGxi
YXIgPSAqbV9wb3B1cE1lbnUuc2Nyb2xsYmFyKCk7Ci0gICAgICAgIGlmICghc2Nyb2xsYmFyLnRo
ZW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgICAgIHB0Lm1vdmUoLXNj
cm9sbFJlY3QueCgpLCAtc2Nyb2xsUmVjdC55KCkpOwogCi0gICAgICAgIFdlYkNvcmU6OlNjcm9s
bGJhclBhcnQgcGFydCA9IHNjcm9sbGJhci50aGVtZSgpLT5oaXRUZXN0KHNjcm9sbGJhciwgcHQp
OworICAgICAgICBXZWJDb3JlOjpTY3JvbGxiYXJQYXJ0IHBhcnQgPSBzY3JvbGxiYXIudGhlbWUo
KS5oaXRUZXN0KHNjcm9sbGJhciwgcHQpOwogCiAgICAgICAgIFZfVlQocHZDaGlsZEF0UG9pbnQp
ID0gVlRfSTQ7CiAgICAgICAgIFZfSTQocHZDaGlsZEF0UG9pbnQpID0gLXBhcnQ7IC8vIFNjcm9s
bGJhciBwYXJ0cyBhcmUgZW5jb2RlZCBhcyBuZWdhdGl2ZSwgdG8gYXZvaWQgbWl4dXAgd2l0aCBp
dGVtIGluZGV4ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Ny
b2xsYmFyVGhlbWVTYWZhcmkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9s
bGJhclRoZW1lU2FmYXJpLmNwcAppbmRleCA2YzkwYTljLi5iNzc0Zjg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHAKQEAg
LTU1LDEzICs1NSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBT
YWZhcmlUaGVtZTsKIAotU2Nyb2xsYmFyVGhlbWUqIFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVt
ZSgpCitTY3JvbGxiYXJUaGVtZSYgU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkKIHsKICAg
ICBzdGF0aWMgU2Nyb2xsYmFyVGhlbWVTYWZhcmkgc2FmYXJpVGhlbWU7CiAgICAgc3RhdGljIFNj
cm9sbGJhclRoZW1lV2luIHdpbmRvd3NUaGVtZTsKICAgICBpZiAoU2V0dGluZ3M6OnNob3VsZFBh
aW50TmF0aXZlQ29udHJvbHMoKSkKLSAgICAgICAgcmV0dXJuICZ3aW5kb3dzVGhlbWU7Ci0gICAg
cmV0dXJuICZzYWZhcmlUaGVtZTsKKyAgICAgICAgcmV0dXJuIHdpbmRvd3NUaGVtZTsKKyAgICBy
ZXR1cm4gc2FmYXJpVGhlbWU7CiB9CiAKIC8vIEZJWE1FOiBHZXQgdGhlc2UgbnVtYmVycyBmcm9t
IENvcmVVSS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxi
YXJUaGVtZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhl
bWVXaW4uY3BwCmluZGV4IGM2NTRhYjEuLmRjZjY3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcApAQCAtODksMTAgKzg5LDEwIEBA
IHN0YXRpYyB2b2lkIGNoZWNrQW5kSW5pdFNjcm9sbGJhclRoZW1lKCkKICAgICAgICAgc2Nyb2xs
YmFyVGhlbWUgPSBPcGVuVGhlbWVEYXRhKDAsIEwiU2Nyb2xsYmFyIik7CiB9CiAKLVNjcm9sbGJh
clRoZW1lKiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKQorU2Nyb2xsYmFyVGhlbWUmIFNj
cm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpCiB7CiAgICAgc3RhdGljIFNjcm9sbGJhclRoZW1l
V2luIHdpblRoZW1lOwotICAgIHJldHVybiAmd2luVGhlbWU7CisgICAgcmV0dXJuIHdpblRoZW1l
OwogfQogCiBTY3JvbGxiYXJUaGVtZVdpbjo6U2Nyb2xsYmFyVGhlbWVXaW4oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA4NWQwYTBlLi5jNWMyNGQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtOTg5LDEzICs5ODksMTMgQEAgdm9p
ZCBSZW5kZXJCb3g6OnBhblNjcm9sbChjb25zdCBJbnRQb2ludCYgc291cmNlKQogCiBib29sIFJl
bmRlckJveDo6aGFzVmVydGljYWxTY3JvbGxiYXJXaXRoQXV0b0JlaGF2aW9yKCkgY29uc3QKIHsK
LSAgICBib29sIG92ZXJmbG93U2Nyb2xsQWN0c0xpa2VBdXRvID0gc3R5bGUoKS5vdmVyZmxvd1ko
KSA9PSBPU0NST0xMICYmICFzdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUikgJiYgU2Ny
b2xsYmFyVGhlbWU6OnRoZW1lKCktPnVzZXNPdmVybGF5U2Nyb2xsYmFycygpOworICAgIGJvb2wg
b3ZlcmZsb3dTY3JvbGxBY3RzTGlrZUF1dG8gPSBzdHlsZSgpLm92ZXJmbG93WSgpID09IE9TQ1JP
TEwgJiYgIXN0eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NST0xMQkFSKSAmJiBTY3JvbGxiYXJUaGVt
ZTo6dGhlbWUoKS51c2VzT3ZlcmxheVNjcm9sbGJhcnMoKTsKICAgICByZXR1cm4gaGFzT3ZlcmZs
b3dDbGlwKCkgJiYgKHN0eWxlKCkub3ZlcmZsb3dZKCkgPT0gT0FVVE8gfHwgc3R5bGUoKS5vdmVy
Zmxvd1koKSA9PSBPT1ZFUkxBWSB8fCBvdmVyZmxvd1Njcm9sbEFjdHNMaWtlQXV0byk7CiB9CiAK
IGJvb2wgUmVuZGVyQm94OjpoYXNIb3Jpem9udGFsU2Nyb2xsYmFyV2l0aEF1dG9CZWhhdmlvcigp
IGNvbnN0CiB7Ci0gICAgYm9vbCBvdmVyZmxvd1Njcm9sbEFjdHNMaWtlQXV0byA9IHN0eWxlKCku
b3ZlcmZsb3dYKCkgPT0gT1NDUk9MTCAmJiAhc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShTQ1JPTExC
QVIpICYmIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT51c2VzT3ZlcmxheVNjcm9sbGJhcnMoKTsK
KyAgICBib29sIG92ZXJmbG93U2Nyb2xsQWN0c0xpa2VBdXRvID0gc3R5bGUoKS5vdmVyZmxvd1go
KSA9PSBPU0NST0xMICYmICFzdHlsZSgpLmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUikgJiYgU2Ny
b2xsYmFyVGhlbWU6OnRoZW1lKCkudXNlc092ZXJsYXlTY3JvbGxiYXJzKCk7CiAgICAgcmV0dXJu
IGhhc092ZXJmbG93Q2xpcCgpICYmIChzdHlsZSgpLm92ZXJmbG93WCgpID09IE9BVVRPIHx8IHN0
eWxlKCkub3ZlcmZsb3dYKCkgPT0gT09WRVJMQVkgfHwgb3ZlcmZsb3dTY3JvbGxBY3RzTGlrZUF1
dG8pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA4
MTBhZGExLi5kZTgxYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKQEAgLTI4MDEsNyArMjgwMSw3IEBAIHN0YXRpYyBMYXlvdXRSZWN0IGNvcm5lclJlY3QoY29u
c3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBjb25zdCBMYXlvdXRSZWN0JiBib3VuZHMpCiAgICAgaWYg
KCFsYXllci0+dmVydGljYWxTY3JvbGxiYXIoKSAmJiAhbGF5ZXItPmhvcml6b250YWxTY3JvbGxi
YXIoKSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBpc24ndCByaWdodC4gIFdlIG5lZWQgdG8g
a25vdyB0aGUgdGhpY2tuZXNzIG9mIGN1c3RvbSBzY3JvbGxiYXJzCiAgICAgICAgIC8vIGV2ZW4g
d2hlbiB0aGV5IGRvbid0IGV4aXN0IGluIG9yZGVyIHRvIHNldCB0aGUgcmVzaXplciBzcXVhcmUg
c2l6ZSBwcm9wZXJseS4KLSAgICAgICAgaG9yaXpvbnRhbFRoaWNrbmVzcyA9IFNjcm9sbGJhclRo
ZW1lOjp0aGVtZSgpLT5zY3JvbGxiYXJUaGlja25lc3MoKTsKKyAgICAgICAgaG9yaXpvbnRhbFRo
aWNrbmVzcyA9IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnNjcm9sbGJhclRoaWNrbmVzcygpOwog
ICAgICAgICB2ZXJ0aWNhbFRoaWNrbmVzcyA9IGhvcml6b250YWxUaGlja25lc3M7CiAgICAgfSBl
bHNlIGlmIChsYXllci0+dmVydGljYWxTY3JvbGxiYXIoKSAmJiAhbGF5ZXItPmhvcml6b250YWxT
Y3JvbGxiYXIoKSkgewogICAgICAgICBob3Jpem9udGFsVGhpY2tuZXNzID0gbGF5ZXItPnZlcnRp
Y2FsU2Nyb2xsYmFyKCktPndpZHRoKCk7CkBAIC0zMzgwLDE0ICszMzgwLDE0IEBAIGJvb2wgUmVu
ZGVyTGF5ZXI6Omhhc1ZlcnRpY2FsT3ZlcmZsb3coKSBjb25zdAogc3RhdGljIGJvb2wgc3R5bGVS
ZXF1aXJlc1Njcm9sbGJhcihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFNjcm9sbGJhck9yaWVu
dGF0aW9uIGF4aXMpCiB7CiAgICAgRU92ZXJmbG93IG92ZXJmbG93ID0gYXhpcyA9PSBTY3JvbGxi
YXJPcmllbnRhdGlvbjo6SG9yaXpvbnRhbFNjcm9sbGJhciA/IHN0eWxlLm92ZXJmbG93WCgpIDog
c3R5bGUub3ZlcmZsb3dZKCk7Ci0gICAgYm9vbCBvdmVyZmxvd1Njcm9sbEFjdHNMaWtlQXV0byA9
IG92ZXJmbG93ID09IE9TQ1JPTEwgJiYgIXN0eWxlLmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUikg
JiYgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnVzZXNPdmVybGF5U2Nyb2xsYmFycygpOworICAg
IGJvb2wgb3ZlcmZsb3dTY3JvbGxBY3RzTGlrZUF1dG8gPSBvdmVyZmxvdyA9PSBPU0NST0xMICYm
ICFzdHlsZS5oYXNQc2V1ZG9TdHlsZShTQ1JPTExCQVIpICYmIFNjcm9sbGJhclRoZW1lOjp0aGVt
ZSgpLnVzZXNPdmVybGF5U2Nyb2xsYmFycygpOwogICAgIHJldHVybiBvdmVyZmxvdyA9PSBPU0NS
T0xMICYmICFvdmVyZmxvd1Njcm9sbEFjdHNMaWtlQXV0bzsKIH0KIAogc3RhdGljIGJvb2wgc3R5
bGVEZWZpbmVzQXV0b21hdGljU2Nyb2xsYmFyKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgU2Ny
b2xsYmFyT3JpZW50YXRpb24gYXhpcykKIHsKICAgICBFT3ZlcmZsb3cgb3ZlcmZsb3cgPSBheGlz
ID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsU2Nyb2xsYmFyID8gc3R5bGUub3Zl
cmZsb3dYKCkgOiBzdHlsZS5vdmVyZmxvd1koKTsKLSAgICBib29sIG92ZXJmbG93U2Nyb2xsQWN0
c0xpa2VBdXRvID0gb3ZlcmZsb3cgPT0gT1NDUk9MTCAmJiAhc3R5bGUuaGFzUHNldWRvU3R5bGUo
U0NST0xMQkFSKSAmJiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+dXNlc092ZXJsYXlTY3JvbGxi
YXJzKCk7CisgICAgYm9vbCBvdmVyZmxvd1Njcm9sbEFjdHNMaWtlQXV0byA9IG92ZXJmbG93ID09
IE9TQ1JPTEwgJiYgIXN0eWxlLmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUikgJiYgU2Nyb2xsYmFy
VGhlbWU6OnRoZW1lKCkudXNlc092ZXJsYXlTY3JvbGxiYXJzKCk7CiAgICAgcmV0dXJuIG92ZXJm
bG93ID09IE9BVVRPIHx8IG92ZXJmbG93ID09IE9PVkVSTEFZIHx8IG92ZXJmbG93U2Nyb2xsQWN0
c0xpa2VBdXRvOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXIuY3BwCmluZGV4IDQ2MmE4NDcuLmExYzU3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBSZW5kZXJT
Y3JvbGxiYXI6OnVwZGF0ZVNjcm9sbGJhclBhcnQoU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkKIAog
ICAgIGlmIChuZWVkUmVuZGVyZXIgJiYgcGFydFN0eWxlLT5kaXNwbGF5KCkgIT0gQkxPQ0spIHsK
ICAgICAgICAgLy8gU2VlIGlmIHdlIGFyZSBhIGJ1dHRvbiB0aGF0IHNob3VsZCBub3QgYmUgdmlz
aWJsZSBhY2NvcmRpbmcgdG8gT1Mgc2V0dGluZ3MuCi0gICAgICAgIFNjcm9sbGJhckJ1dHRvbnNQ
bGFjZW1lbnQgYnV0dG9uc1BsYWNlbWVudCA9IHRoZW1lKCktPmJ1dHRvbnNQbGFjZW1lbnQoKTsK
KyAgICAgICAgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBidXR0b25zUGxhY2VtZW50ID0gdGhl
bWUoKS5idXR0b25zUGxhY2VtZW50KCk7CiAgICAgICAgIHN3aXRjaCAocGFydFR5cGUpIHsKICAg
ICAgICAgICAgIGNhc2UgQmFja0J1dHRvblN0YXJ0UGFydDoKICAgICAgICAgICAgICAgICBuZWVk
UmVuZGVyZXIgPSAoYnV0dG9uc1BsYWNlbWVudCA9PSBTY3JvbGxiYXJCdXR0b25zU2luZ2xlIHx8
IGJ1dHRvbnNQbGFjZW1lbnQgPT0gU2Nyb2xsYmFyQnV0dG9uc0RvdWJsZVN0YXJ0IHx8CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKaW5kZXgg
ODk2M2NiOC4uYmY4ODU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhclBhcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJQYXJ0LmNwcApAQCAtODMsNyArODMsNyBAQCBzdGF0aWMgaW50IGNhbGNTY3Jv
bGxiYXJUaGlja25lc3NVc2luZyhTaXplVHlwZSBzaXplVHlwZSwgY29uc3QgTGVuZ3RoJiBsZW5n
dGgsCiB7CiAgICAgaWYgKCFsZW5ndGguaXNJbnRyaW5zaWNPckF1dG8oKSB8fCAoc2l6ZVR5cGUg
PT0gTWluU2l6ZSAmJiBsZW5ndGguaXNBdXRvKCkpKQogICAgICAgICByZXR1cm4gbWluaW11bVZh
bHVlRm9yTGVuZ3RoKGxlbmd0aCwgY29udGFpbmluZ0xlbmd0aCk7Ci0gICAgcmV0dXJuIFNjcm9s
bGJhclRoZW1lOjp0aGVtZSgpLT5zY3JvbGxiYXJUaGlja25lc3MoKTsKKyAgICByZXR1cm4gU2Ny
b2xsYmFyVGhlbWU6OnRoZW1lKCkuc2Nyb2xsYmFyVGhpY2tuZXNzKCk7CiB9CiAKIHZvaWQgUmVu
ZGVyU2Nyb2xsYmFyUGFydDo6Y29tcHV0ZVNjcm9sbGJhcldpZHRoKCkKQEAgLTEzOCwxMyArMTM4
LDEzIEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZm
ZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlCiAgICAgc2V0RmxvYXRpbmcoZmFsc2UpOwog
ICAgIHNldEhhc092ZXJmbG93Q2xpcChmYWxzZSk7CiAgICAgaWYgKG9sZFN0eWxlICYmIG1fc2Ny
b2xsYmFyICYmIG1fcGFydCAhPSBOb1BhcnQgJiYgZGlmZiA+PSBTdHlsZURpZmZlcmVuY2VSZXBh
aW50KQotICAgICAgICBtX3Njcm9sbGJhci0+dGhlbWUoKS0+aW52YWxpZGF0ZVBhcnQoKm1fc2Ny
b2xsYmFyLCBtX3BhcnQpOworICAgICAgICBtX3Njcm9sbGJhci0+dGhlbWUoKS5pbnZhbGlkYXRl
UGFydCgqbV9zY3JvbGxiYXIsIG1fcGFydCk7CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFy
dDo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgSW50UmVjdCogcmVj
dCkKIHsKICAgICBpZiAobV9zY3JvbGxiYXIgJiYgbV9wYXJ0ICE9IE5vUGFydCkKLSAgICAgICAg
bV9zY3JvbGxiYXItPnRoZW1lKCktPmludmFsaWRhdGVQYXJ0KCptX3Njcm9sbGJhciwgbV9wYXJ0
KTsKKyAgICAgICAgbV9zY3JvbGxiYXItPnRoZW1lKCkuaW52YWxpZGF0ZVBhcnQoKm1fc2Nyb2xs
YmFyLCBtX3BhcnQpOwogICAgIGVsc2UgewogICAgICAgICBpZiAodmlldygpLmZyYW1lVmlldygp
LmlzRnJhbWVWaWV3U2Nyb2xsQ29ybmVyKHRoaXMpKSB7CiAgICAgICAgICAgICB2aWV3KCkuZnJh
bWVWaWV3KCkuaW52YWxpZGF0ZVNjcm9sbENvcm5lcih2aWV3KCkuZnJhbWVWaWV3KCkuc2Nyb2xs
Q29ybmVyUmVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyVGhlbWUuY3BwCmluZGV4IDA5ZDk2NTIuLjc4ZTk1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcApAQCAtMTU4LDcgKzE1
OCw3IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sCiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhl
bWU6OnBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgU2Nyb2xsYmFyVGhlbWU6OnRo
ZW1lKCktPnBhaW50VGlja21hcmtzKGNvbnRleHQsIHNjcm9sbGJhciwgcmVjdCk7CisgICAgU2Ny
b2xsYmFyVGhlbWU6OnRoZW1lKCkucGFpbnRUaWNrbWFya3MoY29udGV4dCwgc2Nyb2xsYmFyLCBy
ZWN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyVGhlbWUuaAppbmRleCA0N2YwZjgwLi4wZDBiMTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaApAQCAtMzgsMjEgKzM4LDIxIEBAIGNs
YXNzIFJlbmRlclNjcm9sbGJhclRoZW1lIGZpbmFsIDogcHVibGljIFNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW5kZXJTY3JvbGxiYXJUaGVtZSgpIHsg
fQogICAgIAotICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250
cm9sU2l6ZSBjb250cm9sU2l6ZSkgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRo
ZW1lKCktPnNjcm9sbGJhclRoaWNrbmVzcyhjb250cm9sU2l6ZSk7IH0KKyAgICB2aXJ0dWFsIGlu
dCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpIG92
ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnNjcm9sbGJhclRoaWNrbmVz
cyhjb250cm9sU2l6ZSk7IH0KIAotICAgIHZpcnR1YWwgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVu
dCBidXR0b25zUGxhY2VtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhl
bWU6OnRoZW1lKCktPmJ1dHRvbnNQbGFjZW1lbnQoKTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFy
QnV0dG9uc1BsYWNlbWVudCBidXR0b25zUGxhY2VtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkuYnV0dG9uc1BsYWNlbWVudCgpOyB9CiAKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmll
dyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyJiBzY3Jv
bGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIG92ZXJyaWRlIHsgcmV0dXJu
IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zaG91bGRDZW50ZXJPblRodW1iKHNjcm9sbGJhciwg
ZXZlbnQpOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFy
JiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIG92ZXJyaWRlIHsg
cmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnNob3VsZENlbnRlck9uVGh1bWIoc2Nyb2xs
YmFyLCBldmVudCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIGRvdWJsZSBpbml0aWFsQXV0b3Njcm9s
bFRpbWVyRGVsYXkoKSBvdmVycmlkZSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+
aW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCk7IH0KLSAgICB2aXJ0dWFsIGRvdWJsZSBhdXRv
c2Nyb2xsVGltZXJEZWxheSgpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVt
ZSgpLT5hdXRvc2Nyb2xsVGltZXJEZWxheSgpOyB9CisgICAgdmlydHVhbCBkb3VibGUgaW5pdGlh
bEF1dG9zY3JvbGxUaW1lckRlbGF5KCkgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6
OnRoZW1lKCkuaW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCk7IH0KKyAgICB2aXJ0dWFsIGRv
dWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRo
ZW1lOjp0aGVtZSgpLmF1dG9zY3JvbGxUaW1lckRlbGF5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXImIHNjcm9sbGJhcikgb3ZlcnJpZGUgeyByZXR1
cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXImIHNjcm9s
bGJhcikgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnVucmVnaXN0
ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9s
bGJhcihTY3JvbGxiYXImIHNjcm9sbGJhcikgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhl
bWU6OnRoZW1lKCkucmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQorICAgIHZpcnR1YWwg
dm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciYgc2Nyb2xsYmFyKSBvdmVycmlkZSB7
IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS51bnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9s
bGJhcik7IH0KIAogICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIm
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbC5jcHAKaW5kZXggN2RmMzgzYy4uNWUyZjRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgaW50IFJl
bmRlclRleHRDb250cm9sOjp0ZXh0QmxvY2tMb2dpY2FsV2lkdGgoKSBjb25zdAogaW50IFJlbmRl
clRleHRDb250cm9sOjpzY3JvbGxiYXJUaGlja25lc3MoKSBjb25zdAogewogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgZ2V0IHRoZSBzaXplIG9mIHRoZSBzY3JvbGxiYXIgZnJvbSB0aGUgUmVuZGVy
VGhlbWUgaW5zdGVhZC4KLSAgICByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNjcm9s
bGJhclRoaWNrbmVzcygpOworICAgIHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS5zY3Jv
bGxiYXJUaGlja25lc3MoKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6Y29tcHV0ZUxv
Z2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxU
b3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYgY29tcHV0ZWRWYWx1ZXMpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKaW5kZXggYmRiNzg5NS4uMzFkZjI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDE1LTA4LTAyICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNv
bT4KKworICAgICAgICBTY3JvbGxiYXJUaGVtZXMgc2hvdWxkIGJlIHJldHVybmVkIGJ5IHJlZmVy
ZW5jZS4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0NzU1MT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAg
ICAgICAoV2ViVmlldzo6Z2VzdHVyZU5vdGlmeSk6CisgICAgICAgIChXZWJWaWV3OjpXZWJWaWV3
V25kUHJvYyk6CisKIDIwMTUtMDgtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggY29tcGlsZSBlcnJvcnMgd2l0aCBWUzIwMTUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93
aW4vV2ViVmlldy5jcHAKaW5kZXggOTQxYjNlNy4uMjhmZGI3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5j
cHAKQEAgLTE3MjMsOCArMTcyMyw4IEBAIGJvb2wgV2ViVmlldzo6Z2VzdHVyZU5vdGlmeShXUEFS
QU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgICAgICAvLyBUaGUgaGl0IHRlc3RpbmcgYWJv
dmUgd29uJ3QgZGV0ZWN0IGlmIHdlJ3ZlIGhpdCB0aGUgbWFpbiBmcmFtZSdzIHZlcnRpY2FsIHNj
cm9sbGJhci4gQ2hlY2sgdGhhdCBtYW51YWxseSBub3cuCiAgICAgICAgIFJFQ1Qgd2ViVmlld1Jl
Y3Q7CiAgICAgICAgIEdldFdpbmRvd1JlY3QobV92aWV3V2luZG93LCAmd2ViVmlld1JlY3QpOwot
ICAgICAgICBoaXRTY3JvbGxiYXIgPSAodmlldy0+dmVydGljYWxTY3JvbGxiYXIoKSAmJiAoZ2Vz
dHVyZUJlZ2luUG9pbnQueCA+ICh3ZWJWaWV3UmVjdC5yaWdodCAtIHZpZXctPnZlcnRpY2FsU2Ny
b2xsYmFyKCktPnRoZW1lKCktPnNjcm9sbGJhclRoaWNrbmVzcygpKSkpIAotICAgICAgICAgICAg
fHwgKHZpZXctPmhvcml6b250YWxTY3JvbGxiYXIoKSAmJiAoZ2VzdHVyZUJlZ2luUG9pbnQueSA+
ICh3ZWJWaWV3UmVjdC5ib3R0b20gLSB2aWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFyKCktPnRoZW1l
KCktPnNjcm9sbGJhclRoaWNrbmVzcygpKSkpOyAgCisgICAgICAgIGhpdFNjcm9sbGJhciA9ICh2
aWV3LT52ZXJ0aWNhbFNjcm9sbGJhcigpICYmIChnZXN0dXJlQmVnaW5Qb2ludC54ID4gKHdlYlZp
ZXdSZWN0LnJpZ2h0IC0gdmlldy0+dmVydGljYWxTY3JvbGxiYXIoKS0+dGhlbWUoKS5zY3JvbGxi
YXJUaGlja25lc3MoKSkpKSAKKyAgICAgICAgICAgIHx8ICh2aWV3LT5ob3Jpem9udGFsU2Nyb2xs
YmFyKCkgJiYgKGdlc3R1cmVCZWdpblBvaW50LnkgPiAod2ViVmlld1JlY3QuYm90dG9tIC0gdmll
dy0+aG9yaXpvbnRhbFNjcm9sbGJhcigpLT50aGVtZSgpLnNjcm9sbGJhclRoaWNrbmVzcygpKSkp
OyAgCiAgICAgfQogCiAgICAgYm9vbCBjYW5CZVNjcm9sbGVkID0gZmFsc2U7CkBAIC0yNTAzLDcg
KzI1MDMsNyBAQCBMUkVTVUxUIENBTExCQUNLIFdlYlZpZXc6OldlYlZpZXdXbmRQcm9jKEhXTkQg
aFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLAogICAgICAgICAgICAgaWYgKEZyYW1l
KiBjb3JlRnJhbWUgPSBjb3JlKG1haW5GcmFtZUltcGwpKSB7CiAgICAgICAgICAgICAgICAgd2Vi
Vmlldy0+ZGVsZXRlQmFja2luZ1N0b3JlKCk7CiAgICAgICAgICAgICAgICAgY29yZUZyYW1lLT5w
YWdlKCktPnRoZW1lKCkudGhlbWVDaGFuZ2VkKCk7Ci0gICAgICAgICAgICAgICAgU2Nyb2xsYmFy
VGhlbWU6OnRoZW1lKCktPnRoZW1lQ2hhbmdlZCgpOworICAgICAgICAgICAgICAgIFNjcm9sbGJh
clRoZW1lOjp0aGVtZSgpLnRoZW1lQ2hhbmdlZCgpOwogICAgICAgICAgICAgICAgIFJFQ1Qgd2lu
ZG93UmVjdDsKICAgICAgICAgICAgICAgICA6OkdldENsaWVudFJlY3QoaFduZCwgJndpbmRvd1Jl
Y3QpOwogICAgICAgICAgICAgICAgIDo6SW52YWxpZGF0ZVJlY3QoaFduZCwgJndpbmRvd1JlY3Qs
IGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzYWMyYjcwLi5hMDFmMjA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTUtMDgtMDIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgorCisgICAgICAgIFNjcm9sbGJhclRoZW1lcyBzaG91bGQgYmUgcmV0dXJuZWQgYnkgcmVmZXJl
bmNlLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTQ3NTUxPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6cGFpbnRDb250
cm9sRm9yTGF5ZXJJbkNvbnRleHQpOgorCiAyMDE1LTA3LTI3ICBNYXR0IFJhamNhICA8bXJhamNh
QGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYSBTZXNzaW9uOiBpbmZvcm0gdGhlIFVJIHByb2Nl
c3Mgd2hlbiB0aGUgZm9jdXNlZCBDb250ZW50IG1lZGlhIGVsZW1lbnQgY2hhbmdlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRl
eCA5MzI0OTQ4Li42NjQ2MjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTEzNCw3ICsxMTM0LDcgQEAgdm9pZCBQREZQ
bHVnaW46OnBhaW50Q29udHJvbEZvckxheWVySW5Db250ZXh0KENBTGF5ZXIgKmxheWVyLCBDR0Nv
bnRleHRSZWYgY29udGUKICAgICBpZiAobGF5ZXIgPT0gbV9zY3JvbGxDb3JuZXJMYXllcikgewog
ICAgICAgICBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QgPSB0aGlzLT5zY3JvbGxDb3JuZXJSZWN0
KCk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXNjcm9sbENvcm5lclJlY3Qu
eCgpLCAtc2Nyb2xsQ29ybmVyUmVjdC55KCkpOwotICAgICAgICBTY3JvbGxiYXJUaGVtZTo6dGhl
bWUoKS0+cGFpbnRTY3JvbGxDb3JuZXIoMCwgJmdyYXBoaWNzQ29udGV4dCwgc2Nyb2xsQ29ybmVy
UmVjdCk7CisgICAgICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnBhaW50U2Nyb2xsQ29ybmVy
KDAsICZncmFwaGljc0NvbnRleHQsIHNjcm9sbENvcm5lclJlY3QpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIAo=
</data>
<flag name="review"
          id="283221"
          type_id="1"
          status="+"
          setter="zalan"
    />
    <flag name="commit-queue"
          id="283238"
          type_id="3"
          status="-"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260472</attachid>
            <date>2015-09-02 18:48:53 -0700</date>
            <delta_ts>2015-09-02 19:58:22 -0700</delta_ts>
            <desc>Patch for landing (if EWS likes)</desc>
            <filename>land-147551.diff</filename>
            <type>text/plain</type>
            <size>49488</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0MjgyNTBhLi5kY2RmMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEg
QEAKKzIwMTUtMDktMDIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFNjcm9sbGJhclRoZW1lcyBzaG91bGQgYmUgcmV0dXJuZWQgYnkgcmVmZXJlbmNlLgorICAg
ICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTQ3NTUxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFphbGFuIEJ1anRhcy4KKworICAgICAgICBUaGVyZSdzIGFsd2F5cyBhIFNjcm9sbGJhclRoZW1l
IG9mIHNvbWUgdHlwZSwgc28gaGF2ZSBTY3JvbGxiYXJUaGVtZSBnZXR0ZXJzCisgICAgICAgIHJl
dHVybiByZWZlcmVuY2VzIGFsbCBhcm91bmQuCisKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVj
a2VyVGVzdEZ1bmN0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6c2Nyb2xsYmFyTWF0Y2hlc0Rv
dWJsZUJ1dHRvblBzZXVkb0NsYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbGJhck1hdGNo
ZXNTaW5nbGVCdXR0b25Qc2V1ZG9DbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxiYXJN
YXRjaGVzTm9CdXR0b25Qc2V1ZG9DbGFzcyk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU3BpbkJ1
dHRvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OnN0
YXJ0UmVwZWF0aW5nVGltZXIpOgorICAgICAgICAqIHBhZ2UvUGFnZU92ZXJsYXkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZU92ZXJsYXk6OmJvdW5kcyk6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbGJh
clBhaW50ZXJzRnJvbVNjcm9sbGJhcnMpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxhYmxlQXJlYTo6c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxiYXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjptYXhPdmVybGFw
QmV0d2VlblBhZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6U2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6flNjcm9sbGJhcik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXI6Om9mZnNldERpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXI6OnVwZGF0ZVRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjphdXRvc2Nyb2xsVGltZXJGaXJlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjp0aHVtYlVuZGVyTW91c2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyOjphdXRvc2Nyb2xsUHJlc3NlZFBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyOjpzdGFydFRpbWVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpt
b3ZlVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpzZXRIb3ZlcmVkUGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnNldFByZXNzZWRQYXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhcjo6bW91c2VNb3ZlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXI6Om1vdXNlVXApOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjptb3VzZURvd24p
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhcjo6aXNPdmVybGF5U2Nyb2xsYmFyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxiYXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6dGhlbWUpOgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lOjp0aGVtZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWU6Om5hdGl2ZVRoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvU2Nyb2xsYmFy
VGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhl
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAg
ICAgKG1hY1Njcm9sbGJhclRoZW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFy
VGhlbWVNYWMubW06CisgICAgICAgICgrW1dlYlNjcm9sbGJhclByZWZzT2JzZXJ2ZXIgYXBwZWFy
YW5jZVByZWZzQ2hhbmdlZDpdKToKKyAgICAgICAgKCtbV2ViU2Nyb2xsYmFyUHJlZnNPYnNlcnZl
ciBiZWhhdmlvclByZWZzQ2hhbmdlZDpdKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lOjpuYXRpdmVUaGVtZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVXaW46OmNhbGN1bGF0ZVBvc2l0aW9uQW5k
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlUG9wdXBNZW51OjphY2NMb2NhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmxlUG9wdXBNZW51OjphY2NIaXRUZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWU6Om5hdGl2ZVRoZW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aGFzVmVydGljYWxTY3JvbGxiYXJXaXRo
QXV0b0JlaGF2aW9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aGFzSG9yaXpvbnRh
bFNjcm9sbGJhcldpdGhBdXRvQmVoYXZpb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3JuZXJSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OnN0eWxlUmVxdWlyZXNTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVEZWZp
bmVzQXV0b21hdGljU2Nyb2xsYmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6dXBkYXRlU2Nyb2xs
YmFyUGFydCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclBhcnQ6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclBhcnQ6OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRpY2ttYXJrcyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclRoZW1lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjpzY3JvbGxi
YXJUaGlja25lc3MpOgorCiAyMDE1LTA5LTAyICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgc29tZSBIb3VkaW5pIHNwZWNzIHRvIHRoZSBmZWF0dXJlcyBsaXN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0
aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMu
aAppbmRleCBhZDdhMWM5Li5hOGFiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
ZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmgKQEAgLTI4OCw3ICsyODgsNyBAQCBBTFdBWVNf
SU5MSU5FIGJvb2wgc2Nyb2xsYmFyTWF0Y2hlc0RvdWJsZUJ1dHRvblBzZXVkb0NsYXNzKGNvbnN0
IFNlbGVjdG9yQ2hlY2tlcgogewogICAgIGlmICghY29udGV4dC5zY3JvbGxiYXIpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBTY3JvbGxiYXJCdXR0b25zUGxhY2VtZW50IGJ1dHRvbnNQbGFj
ZW1lbnQgPSBjb250ZXh0LnNjcm9sbGJhci0+dGhlbWUoKS0+YnV0dG9uc1BsYWNlbWVudCgpOwor
ICAgIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQgYnV0dG9uc1BsYWNlbWVudCA9IGNvbnRleHQu
c2Nyb2xsYmFyLT50aGVtZSgpLmJ1dHRvbnNQbGFjZW1lbnQoKTsKICAgICBpZiAoY29udGV4dC5z
Y3JvbGxiYXJQYXJ0ID09IEJhY2tCdXR0b25TdGFydFBhcnQgfHwgY29udGV4dC5zY3JvbGxiYXJQ
YXJ0ID09IEZvcndhcmRCdXR0b25TdGFydFBhcnQgfHwgY29udGV4dC5zY3JvbGxiYXJQYXJ0ID09
IEJhY2tUcmFja1BhcnQpCiAgICAgICAgIHJldHVybiBidXR0b25zUGxhY2VtZW50ID09IFNjcm9s
bGJhckJ1dHRvbnNEb3VibGVTdGFydCB8fCBidXR0b25zUGxhY2VtZW50ID09IFNjcm9sbGJhckJ1
dHRvbnNEb3VibGVCb3RoOwogICAgIGlmIChjb250ZXh0LnNjcm9sbGJhclBhcnQgPT0gQmFja0J1
dHRvbkVuZFBhcnQgfHwgY29udGV4dC5zY3JvbGxiYXJQYXJ0ID09IEZvcndhcmRCdXR0b25FbmRQ
YXJ0IHx8IGNvbnRleHQuc2Nyb2xsYmFyUGFydCA9PSBGb3J3YXJkVHJhY2tQYXJ0KQpAQCAtMzAw
LDcgKzMwMCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBzY3JvbGxiYXJNYXRjaGVzU2luZ2xlQnV0
dG9uUHNldWRvQ2xhc3MoY29uc3QgU2VsZWN0b3JDaGVja2VyCiB7CiAgICAgaWYgKCFjb250ZXh0
LnNjcm9sbGJhcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFNjcm9sbGJhckJ1dHRvbnNQ
bGFjZW1lbnQgYnV0dG9uc1BsYWNlbWVudCA9IGNvbnRleHQuc2Nyb2xsYmFyLT50aGVtZSgpLT5i
dXR0b25zUGxhY2VtZW50KCk7CisgICAgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBidXR0b25z
UGxhY2VtZW50ID0gY29udGV4dC5zY3JvbGxiYXItPnRoZW1lKCkuYnV0dG9uc1BsYWNlbWVudCgp
OwogICAgIGlmIChjb250ZXh0LnNjcm9sbGJhclBhcnQgPT0gQmFja0J1dHRvblN0YXJ0UGFydCB8
fCBjb250ZXh0LnNjcm9sbGJhclBhcnQgPT0gRm9yd2FyZEJ1dHRvbkVuZFBhcnQgfHwgY29udGV4
dC5zY3JvbGxiYXJQYXJ0ID09IEJhY2tUcmFja1BhcnQgfHwgY29udGV4dC5zY3JvbGxiYXJQYXJ0
ID09IEZvcndhcmRUcmFja1BhcnQpCiAgICAgICAgIHJldHVybiBidXR0b25zUGxhY2VtZW50ID09
IFNjcm9sbGJhckJ1dHRvbnNTaW5nbGU7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzEwLDcgKzMx
MCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBzY3JvbGxiYXJNYXRjaGVzTm9CdXR0b25Qc2V1ZG9D
bGFzcyhjb25zdCBTZWxlY3RvckNoZWNrZXI6OkNoCiB7CiAgICAgaWYgKCFjb250ZXh0LnNjcm9s
bGJhcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1l
bnQgYnV0dG9uc1BsYWNlbWVudCA9IGNvbnRleHQuc2Nyb2xsYmFyLT50aGVtZSgpLT5idXR0b25z
UGxhY2VtZW50KCk7CisgICAgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBidXR0b25zUGxhY2Vt
ZW50ID0gY29udGV4dC5zY3JvbGxiYXItPnRoZW1lKCkuYnV0dG9uc1BsYWNlbWVudCgpOwogICAg
IGlmIChjb250ZXh0LnNjcm9sbGJhclBhcnQgPT0gQmFja1RyYWNrUGFydCkKICAgICAgICAgcmV0
dXJuIGJ1dHRvbnNQbGFjZW1lbnQgPT0gU2Nyb2xsYmFyQnV0dG9uc05vbmUgfHwgYnV0dG9uc1Bs
YWNlbWVudCA9PSBTY3JvbGxiYXJCdXR0b25zRG91YmxlRW5kOwogICAgIGlmIChjb250ZXh0LnNj
cm9sbGJhclBhcnQgPT0gRm9yd2FyZFRyYWNrUGFydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAppbmRleCAzY2Q4OTU0Li5iNzQ2MjZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3Bw
CkBAIC0yMDcsOCArMjA3LDggQEAgYm9vbCBTcGluQnV0dG9uRWxlbWVudDo6bWF0Y2hlc1JlYWRX
cml0ZVBzZXVkb0NsYXNzKCkgY29uc3QKIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OnN0YXJ0UmVw
ZWF0aW5nVGltZXIoKQogewogICAgIG1fcHJlc3NTdGFydGluZ1N0YXRlID0gbV91cERvd25TdGF0
ZTsKLSAgICBTY3JvbGxiYXJUaGVtZSogdGhlbWUgPSBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKTsK
LSAgICBtX3JlcGVhdGluZ1RpbWVyLnN0YXJ0KHRoZW1lLT5pbml0aWFsQXV0b3Njcm9sbFRpbWVy
RGVsYXkoKSwgdGhlbWUtPmF1dG9zY3JvbGxUaW1lckRlbGF5KCkpOworICAgIFNjcm9sbGJhclRo
ZW1lJiB0aGVtZSA9IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpOworICAgIG1fcmVwZWF0aW5nVGlt
ZXIuc3RhcnQodGhlbWUuaW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCksIHRoZW1lLmF1dG9z
Y3JvbGxUaW1lckRlbGF5KCkpOwogfQogCiB2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpzdG9wUmVw
ZWF0aW5nVGltZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3Zlcmxh
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5LmNwcAppbmRleCBhOWI5MWNk
Li5lNTY2MDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5LmNwcApAQCAtOTEsNyArOTEs
NyBAQCBJbnRSZWN0IFBhZ2VPdmVybGF5Ojpib3VuZHMoKSBjb25zdAogICAgICAgICBpbnQgd2lk
dGggPSBmcmFtZVZpZXctPndpZHRoKCk7CiAgICAgICAgIGludCBoZWlnaHQgPSBmcmFtZVZpZXct
PmhlaWdodCgpOwogCi0gICAgICAgIGlmICghU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnVzZXNP
dmVybGF5U2Nyb2xsYmFycygpKSB7CisgICAgICAgIGlmICghU2Nyb2xsYmFyVGhlbWU6OnRoZW1l
KCkudXNlc092ZXJsYXlTY3JvbGxiYXJzKCkpIHsKICAgICAgICAgICAgIGlmIChmcmFtZVZpZXct
PnZlcnRpY2FsU2Nyb2xsYmFyKCkpCiAgICAgICAgICAgICAgICAgd2lkdGggLT0gZnJhbWVWaWV3
LT52ZXJ0aWNhbFNjcm9sbGJhcigpLT53aWR0aCgpOwogICAgICAgICAgICAgaWYgKGZyYW1lVmll
dy0+aG9yaXpvbnRhbFNjcm9sbGJhcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3Jv
bGxpbmdOb2RlTWFjLm1tCmluZGV4IGJkODU1N2YuLmE1ZWI5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0KQEAgLTM3LDE1ICszNywxNSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgCiB2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlOjpzZXRTY3JvbGxiYXJQYWludGVyc0Zyb21TY3JvbGxiYXJzKFNjcm9sbGJhciogdmVydGlj
YWxTY3JvbGxiYXIsIFNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhcikKIHsKLSAgICBTY3Jv
bGxiYXJUaGVtZSogc2Nyb2xsYmFyVGhlbWUgPSBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKTsKLSAg
ICBpZiAoc2Nyb2xsYmFyVGhlbWUtPmlzTW9ja1RoZW1lKCkpCisgICAgU2Nyb2xsYmFyVGhlbWUm
IHNjcm9sbGJhclRoZW1lID0gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCk7CisgICAgaWYgKHNjcm9s
bGJhclRoZW1lLmlzTW9ja1RoZW1lKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBTY3JvbGxiYXJU
aGVtZU1hYyogbWFjVGhlbWUgPSBzdGF0aWNfY2FzdDxTY3JvbGxiYXJUaGVtZU1hYyo+KHNjcm9s
bGJhclRoZW1lKTsKKyAgICBTY3JvbGxiYXJUaGVtZU1hYyYgbWFjVGhlbWUgPSBzdGF0aWNfY2Fz
dDxTY3JvbGxiYXJUaGVtZU1hYyY+KHNjcm9sbGJhclRoZW1lKTsKIAogICAgIFNjcm9sbGJhclBh
aW50ZXIgdmVydGljYWxQYWludGVyID0gdmVydGljYWxTY3JvbGxiYXIgJiYgdmVydGljYWxTY3Jv
bGxiYXItPnN1cHBvcnRzVXBkYXRlT25TZWNvbmRhcnlUaHJlYWQoKQotICAgICAgICA/IG1hY1Ro
ZW1lLT5wYWludGVyRm9yU2Nyb2xsYmFyKCp2ZXJ0aWNhbFNjcm9sbGJhcikgOiBudWxscHRyOwor
ICAgICAgICA/IG1hY1RoZW1lLnBhaW50ZXJGb3JTY3JvbGxiYXIoKnZlcnRpY2FsU2Nyb2xsYmFy
KSA6IG51bGxwdHI7CiAgICAgU2Nyb2xsYmFyUGFpbnRlciBob3Jpem9udGFsUGFpbnRlciA9IGhv
cml6b250YWxTY3JvbGxiYXIgJiYgaG9yaXpvbnRhbFNjcm9sbGJhci0+c3VwcG9ydHNVcGRhdGVP
blNlY29uZGFyeVRocmVhZCgpCi0gICAgICAgID8gbWFjVGhlbWUtPnBhaW50ZXJGb3JTY3JvbGxi
YXIoKmhvcml6b250YWxTY3JvbGxiYXIpIDogbnVsbHB0cjsKKyAgICAgICAgPyBtYWNUaGVtZS5w
YWludGVyRm9yU2Nyb2xsYmFyKCpob3Jpem9udGFsU2Nyb2xsYmFyKSA6IG51bGxwdHI7CiAKICAg
ICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIgPT0gdmVydGljYWxQYWludGVyICYmIG1f
aG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIgPT0gaG9yaXpvbnRhbFBhaW50ZXIpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggNjBmMzcw
OC4uMDk3ODhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTEx
NDksNyArMTE0OSw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKCkKIAog
dm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpCiB7Ci0gICAgU2Nyb2xsYmFyVGhlbWU6OnRo
ZW1lKCktPnBhaW50U2Nyb2xsQ29ybmVyKHRoaXMsIGNvbnRleHQsIGNvcm5lclJlY3QpOworICAg
IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnBhaW50U2Nyb2xsQ29ybmVyKHRoaXMsIGNvbnRleHQs
IGNvcm5lclJlY3QpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsYmFyKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBiYXIsIGNvbnN0IEludFJlY3QmIHJlY3Qp
CkBAIC0xMzAxLDcgKzEzMDEsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZU92ZXJoYW5nQXJl
YXMoKQogCiB2b2lkIFNjcm9sbFZpZXc6OnBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIGNvbnN0
IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3Qp
CiB7Ci0gICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnBhaW50T3ZlcmhhbmdBcmVhcygqdGhp
cywgY29udGV4dCwgaG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwgdmVydGljYWxPdmVyaGFuZ1JlY3Qs
IGRpcnR5UmVjdCk7CisgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkucGFpbnRPdmVyaGFuZ0Fy
ZWFzKCp0aGlzLCBjb250ZXh0LCBob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCB2ZXJ0aWNhbE92ZXJo
YW5nUmVjdCwgZGlydHlSZWN0KTsKIH0KIAogdm9pZCBTY3JvbGxWaWV3OjpjYWxjdWxhdGVBbmRQ
YWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiBkaXJ0eVJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAK
aW5kZXggNWRmYzY5NS4uYWVmYzAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGFibGVBcmVhLmNwcApAQCAtMzM5LDE0ICszMzksMTQgQEAgdm9pZCBTY3JvbGxhYmxlQXJlYTo6
c2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhck92ZXJsYXlTdHlsZSBvdmVybGF5U3R5
bGUKICAgICBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZSA9IG92ZXJsYXlTdHlsZTsKIAogICAgIGlm
IChob3Jpem9udGFsU2Nyb2xsYmFyKCkpIHsKLSAgICAgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1l
KCktPnVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZSgqaG9yaXpvbnRhbFNjcm9sbGJhcigpKTsK
KyAgICAgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkudXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0
eWxlKCpob3Jpem9udGFsU2Nyb2xsYmFyKCkpOwogICAgICAgICBob3Jpem9udGFsU2Nyb2xsYmFy
KCktPmludmFsaWRhdGUoKTsKICAgICAgICAgaWYgKFNjcm9sbEFuaW1hdG9yKiBzY3JvbGxBbmlt
YXRvciA9IGV4aXN0aW5nU2Nyb2xsQW5pbWF0b3IoKSkKICAgICAgICAgICAgIHNjcm9sbEFuaW1h
dG9yLT5pbnZhbGlkYXRlU2Nyb2xsYmFyUGFydExheWVycyhob3Jpem9udGFsU2Nyb2xsYmFyKCkp
OwogICAgIH0KICAgICAKICAgICBpZiAodmVydGljYWxTY3JvbGxiYXIoKSkgewotICAgICAgICBT
Y3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+dXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCp2ZXJ0
aWNhbFNjcm9sbGJhcigpKTsKKyAgICAgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkudXBkYXRl
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCp2ZXJ0aWNhbFNjcm9sbGJhcigpKTsKICAgICAgICAgdmVy
dGljYWxTY3JvbGxiYXIoKS0+aW52YWxpZGF0ZSgpOwogICAgICAgICBpZiAoU2Nyb2xsQW5pbWF0
b3IqIHNjcm9sbEFuaW1hdG9yID0gZXhpc3RpbmdTY3JvbGxBbmltYXRvcigpKQogICAgICAgICAg
ICAgc2Nyb2xsQW5pbWF0b3ItPmludmFsaWRhdGVTY3JvbGxiYXJQYXJ0TGF5ZXJzKHZlcnRpY2Fs
U2Nyb2xsYmFyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKaW5kZXggMzE1
MTE0OS4uOGQzZGFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCkBAIC01
MCwxNiArNTAsMTUgQEAgUGFzc1JlZlB0cjxTY3JvbGxiYXI+IFNjcm9sbGJhcjo6Y3JlYXRlTmF0
aXZlU2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmwKIAogaW50IFNjcm9sbGJhcjo6
bWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpCiB7Ci0gICAgc3RhdGljIGludCBtYXhPdmVybGFwQmV0
d2VlblBhZ2VzID0gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPm1heE92ZXJsYXBCZXR3ZWVuUGFn
ZXMoKTsKKyAgICBzdGF0aWMgaW50IG1heE92ZXJsYXBCZXR3ZWVuUGFnZXMgPSBTY3JvbGxiYXJU
aGVtZTo6dGhlbWUoKS5tYXhPdmVybGFwQmV0d2VlblBhZ2VzKCk7CiAgICAgcmV0dXJuIG1heE92
ZXJsYXBCZXR3ZWVuUGFnZXM7CiB9CiAKLVNjcm9sbGJhcjo6U2Nyb2xsYmFyKFNjcm9sbGFibGVB
cmVhJiBzY3JvbGxhYmxlQXJlYSwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNj
cm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplLAotICAgIFNjcm9sbGJhclRoZW1lKiB0aGVt
ZSwgYm9vbCBpc0N1c3RvbVNjcm9sbGJhcikKK1Njcm9sbGJhcjo6U2Nyb2xsYmFyKFNjcm9sbGFi
bGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24s
IFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplLCBTY3JvbGxiYXJUaGVtZSogY3VzdG9t
VGhlbWUsIGJvb2wgaXNDdXN0b21TY3JvbGxiYXIpCiAgICAgOiBtX3Njcm9sbGFibGVBcmVhKHNj
cm9sbGFibGVBcmVhKQogICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKICAgICAsIG1f
Y29udHJvbFNpemUoY29udHJvbFNpemUpCi0gICAgLCBtX3RoZW1lKHRoZW1lKQorICAgICwgbV90
aGVtZShjdXN0b21UaGVtZSA/ICpjdXN0b21UaGVtZSA6IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgp
KQogICAgICwgbV92aXNpYmxlU2l6ZSgwKQogICAgICwgbV90b3RhbFNpemUoMCkKICAgICAsIG1f
Y3VycmVudFBvcygwKQpAQCAtODAsMTUgKzc5LDEyIEBAIFNjcm9sbGJhcjo6U2Nyb2xsYmFyKFNj
cm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50
CiAgICAgLCBtX2lzQ3VzdG9tU2Nyb2xsYmFyKGlzQ3VzdG9tU2Nyb2xsYmFyKQogICAgICwgbV93
ZWFrUHRyRmFjdG9yeSh0aGlzKQogewotICAgIGlmICghbV90aGVtZSkKLSAgICAgICAgbV90aGVt
ZSA9IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpOwotCi0gICAgbV90aGVtZS0+cmVnaXN0ZXJTY3Jv
bGxiYXIoKnRoaXMpOworICAgIHRoZW1lKCkucmVnaXN0ZXJTY3JvbGxiYXIoKnRoaXMpOwogCiAg
ICAgLy8gRklYTUU6IFRoaXMgaXMgdWdseSBhbmQgd291bGQgbm90IGJlIG5lY2Vzc2FyeSBpZiB3
ZSBmaXggY3Jvc3MtcGxhdGZvcm0gY29kZSB0byBhY3R1YWxseSBxdWVyeSBmb3IKICAgICAvLyBz
Y3JvbGxiYXIgdGhpY2tuZXNzIGFuZCB1c2UgaXQgd2hlbiBzaXppbmcgc2Nyb2xsYmFycyAocmF0
aGVyIHRoYW4gbGVhdmluZyBvbmUgZGltZW5zaW9uIG9mIHRoZSBzY3JvbGxiYXIKICAgICAvLyBh
bG9uZSB3aGVuIHNpemluZykuCi0gICAgaW50IHRoaWNrbmVzcyA9IG1fdGhlbWUtPnNjcm9sbGJh
clRoaWNrbmVzcyhjb250cm9sU2l6ZSk7CisgICAgaW50IHRoaWNrbmVzcyA9IHRoZW1lKCkuc2Ny
b2xsYmFyVGhpY2tuZXNzKGNvbnRyb2xTaXplKTsKICAgICBXaWRnZXQ6OnNldEZyYW1lUmVjdChJ
bnRSZWN0KDAsIDAsIHRoaWNrbmVzcywgdGhpY2tuZXNzKSk7CiAKICAgICBtX2N1cnJlbnRQb3Mg
PSBzdGF0aWNfY2FzdDxmbG9hdD4obV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxQb3NpdGlvbih0aGlz
KSk7CkBAIC05OCw3ICs5NCw3IEBAIFNjcm9sbGJhcjo6flNjcm9sbGJhcigpCiB7CiAgICAgc3Rv
cFRpbWVySWZOZWVkZWQoKTsKICAgICAKLSAgICBtX3RoZW1lLT51bnJlZ2lzdGVyU2Nyb2xsYmFy
KCp0aGlzKTsKKyAgICB0aGVtZSgpLnVucmVnaXN0ZXJTY3JvbGxiYXIoKnRoaXMpOwogfQogCiB2
b2lkIFNjcm9sbGJhcjo6b2Zmc2V0RGlkQ2hhbmdlKCkKQEAgLTEwNywxMSArMTAzLDExIEBAIHZv
aWQgU2Nyb2xsYmFyOjpvZmZzZXREaWRDaGFuZ2UoKQogICAgIGlmIChwb3NpdGlvbiA9PSBtX2N1
cnJlbnRQb3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCBvbGRUaHVtYlBvc2l0aW9uID0g
dGhlbWUoKS0+dGh1bWJQb3NpdGlvbigqdGhpcyk7CisgICAgaW50IG9sZFRodW1iUG9zaXRpb24g
PSB0aGVtZSgpLnRodW1iUG9zaXRpb24oKnRoaXMpOwogICAgIG1fY3VycmVudFBvcyA9IHBvc2l0
aW9uOwogICAgIHVwZGF0ZVRodW1iUG9zaXRpb24oKTsKICAgICBpZiAobV9wcmVzc2VkUGFydCA9
PSBUaHVtYlBhcnQpCi0gICAgICAgIHNldFByZXNzZWRQb3MobV9wcmVzc2VkUG9zICsgdGhlbWUo
KS0+dGh1bWJQb3NpdGlvbigqdGhpcykgLSBvbGRUaHVtYlBvc2l0aW9uKTsKKyAgICAgICAgc2V0
UHJlc3NlZFBvcyhtX3ByZXNzZWRQb3MgKyB0aGVtZSgpLnRodW1iUG9zaXRpb24oKnRoaXMpIC0g
b2xkVGh1bWJQb3NpdGlvbik7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyOjpzZXRQcm9wb3J0aW9uKGlu
dCB2aXNpYmxlU2l6ZSwgaW50IHRvdGFsU2l6ZSkKQEAgLTEzNyw3ICsxMzMsNyBAQCB2b2lkIFNj
cm9sbGJhcjo6dXBkYXRlVGh1bWIoKQogI2lmZGVmIFRIVU1CX1BPU0lUSU9OX0FGRkVDVFNfQlVU
VE9OUwogICAgIGludmFsaWRhdGUoKTsKICNlbHNlCi0gICAgdGhlbWUoKS0+aW52YWxpZGF0ZVBh
cnRzKCp0aGlzLCBGb3J3YXJkVHJhY2tQYXJ0IHwgQmFja1RyYWNrUGFydCB8IFRodW1iUGFydCk7
CisgICAgdGhlbWUoKS5pbnZhbGlkYXRlUGFydHMoKnRoaXMsIEZvcndhcmRUcmFja1BhcnQgfCBC
YWNrVHJhY2tQYXJ0IHwgVGh1bWJQYXJ0KTsKICNlbmRpZgogfQogCkBAIC0xNTMsNyArMTQ5LDcg
QEAgdm9pZCBTY3JvbGxiYXI6OnVwZGF0ZVRodW1iUHJvcG9ydGlvbigpCiAKIHZvaWQgU2Nyb2xs
YmFyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFn
ZVJlY3QpCiB7Ci0gICAgaWYgKGNvbnRleHQudXBkYXRpbmdDb250cm9sVGludHMoKSAmJiB0aGVt
ZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50cygpKSB7CisgICAgaWYgKGNvbnRleHQudXBkYXRpbmdD
b250cm9sVGludHMoKSAmJiB0aGVtZSgpLnN1cHBvcnRzQ29udHJvbFRpbnRzKCkpIHsKICAgICAg
ICAgaW52YWxpZGF0ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTYxLDE5ICsxNTcs
MTkgQEAgdm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKICAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVk
KCkgfHwgIWZyYW1lUmVjdCgpLmludGVyc2VjdHMoZGFtYWdlUmVjdCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmICghdGhlbWUoKS0+cGFpbnQoKnRoaXMsIGNvbnRleHQsIGRhbWFnZVJlY3Qp
KQorICAgIGlmICghdGhlbWUoKS5wYWludCgqdGhpcywgY29udGV4dCwgZGFtYWdlUmVjdCkpCiAg
ICAgICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwgZGFtYWdlUmVjdCk7CiB9CiAKIHZvaWQgU2Ny
b2xsYmFyOjphdXRvc2Nyb2xsVGltZXJGaXJlZCgpCiB7Ci0gICAgYXV0b3Njcm9sbFByZXNzZWRQ
YXJ0KHRoZW1lKCktPmF1dG9zY3JvbGxUaW1lckRlbGF5KCkpOworICAgIGF1dG9zY3JvbGxQcmVz
c2VkUGFydCh0aGVtZSgpLmF1dG9zY3JvbGxUaW1lckRlbGF5KCkpOwogfQogCiBzdGF0aWMgYm9v
bCB0aHVtYlVuZGVyTW91c2UoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7Ci0gICAgaW50IHRodW1i
UG9zID0gc2Nyb2xsYmFyLT50aGVtZSgpLT50cmFja1Bvc2l0aW9uKCpzY3JvbGxiYXIpICsgc2Ny
b2xsYmFyLT50aGVtZSgpLT50aHVtYlBvc2l0aW9uKCpzY3JvbGxiYXIpOwotICAgIGludCB0aHVt
Ykxlbmd0aCA9IHNjcm9sbGJhci0+dGhlbWUoKS0+dGh1bWJMZW5ndGgoKnNjcm9sbGJhcik7Cisg
ICAgaW50IHRodW1iUG9zID0gc2Nyb2xsYmFyLT50aGVtZSgpLnRyYWNrUG9zaXRpb24oKnNjcm9s
bGJhcikgKyBzY3JvbGxiYXItPnRoZW1lKCkudGh1bWJQb3NpdGlvbigqc2Nyb2xsYmFyKTsKKyAg
ICBpbnQgdGh1bWJMZW5ndGggPSBzY3JvbGxiYXItPnRoZW1lKCkudGh1bWJMZW5ndGgoKnNjcm9s
bGJhcik7CiAgICAgcmV0dXJuIHNjcm9sbGJhci0+cHJlc3NlZFBvcygpID49IHRodW1iUG9zICYm
IHNjcm9sbGJhci0+cHJlc3NlZFBvcygpIDwgdGh1bWJQb3MgKyB0aHVtYkxlbmd0aDsKIH0KIApA
QCAtMTg1LDcgKzE4MSw3IEBAIHZvaWQgU2Nyb2xsYmFyOjphdXRvc2Nyb2xsUHJlc3NlZFBhcnQo
ZG91YmxlIGRlbGF5KQogCiAgICAgLy8gSGFuZGxlIHRoZSB0cmFjay4KICAgICBpZiAoKG1fcHJl
c3NlZFBhcnQgPT0gQmFja1RyYWNrUGFydCB8fCBtX3ByZXNzZWRQYXJ0ID09IEZvcndhcmRUcmFj
a1BhcnQpICYmIHRodW1iVW5kZXJNb3VzZSh0aGlzKSkgewotICAgICAgICB0aGVtZSgpLT5pbnZh
bGlkYXRlUGFydCgqdGhpcywgbV9wcmVzc2VkUGFydCk7CisgICAgICAgIHRoZW1lKCkuaW52YWxp
ZGF0ZVBhcnQoKnRoaXMsIG1fcHJlc3NlZFBhcnQpOwogICAgICAgICBzZXRIb3ZlcmVkUGFydChU
aHVtYlBhcnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjA0LDcgKzIwMCw3IEBAIHZv
aWQgU2Nyb2xsYmFyOjpzdGFydFRpbWVySWZOZWVkZWQoZG91YmxlIGRlbGF5KQogICAgIC8vIEhh
bmRsZSB0aGUgdHJhY2suICBXZSBoYWx0IHRyYWNrIHNjcm9sbGluZyBvbmNlIHRoZSB0aHVtYiBp
cyBsZXZlbAogICAgIC8vIHdpdGggdXMuCiAgICAgaWYgKChtX3ByZXNzZWRQYXJ0ID09IEJhY2tU
cmFja1BhcnQgfHwgbV9wcmVzc2VkUGFydCA9PSBGb3J3YXJkVHJhY2tQYXJ0KSAmJiB0aHVtYlVu
ZGVyTW91c2UodGhpcykpIHsKLSAgICAgICAgdGhlbWUoKS0+aW52YWxpZGF0ZVBhcnQoKnRoaXMs
IG1fcHJlc3NlZFBhcnQpOworICAgICAgICB0aGVtZSgpLmludmFsaWRhdGVQYXJ0KCp0aGlzLCBt
X3ByZXNzZWRQYXJ0KTsKICAgICAgICAgc2V0SG92ZXJlZFBhcnQoVGh1bWJQYXJ0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTI3Myw5ICsyNjksOSBAQCB2b2lkIFNjcm9sbGJhcjo6bW92
ZVRodW1iKGludCBwb3MsIGJvb2wgZHJhZ2dpbmdEb2N1bWVudCkKICAgICB9CiAKICAgICAvLyBE
cmFnIHRoZSB0aHVtYi4KLSAgICBpbnQgdGh1bWJQb3MgPSB0aGVtZSgpLT50aHVtYlBvc2l0aW9u
KCp0aGlzKTsKLSAgICBpbnQgdGh1bWJMZW4gPSB0aGVtZSgpLT50aHVtYkxlbmd0aCgqdGhpcyk7
Ci0gICAgaW50IHRyYWNrTGVuID0gdGhlbWUoKS0+dHJhY2tMZW5ndGgoKnRoaXMpOworICAgIGlu
dCB0aHVtYlBvcyA9IHRoZW1lKCkudGh1bWJQb3NpdGlvbigqdGhpcyk7CisgICAgaW50IHRodW1i
TGVuID0gdGhlbWUoKS50aHVtYkxlbmd0aCgqdGhpcyk7CisgICAgaW50IHRyYWNrTGVuID0gdGhl
bWUoKS50cmFja0xlbmd0aCgqdGhpcyk7CiAgICAgaW50IG1heFBvcyA9IHRyYWNrTGVuIC0gdGh1
bWJMZW47CiAgICAgaWYgKGRlbHRhID4gMCkKICAgICAgICAgZGVsdGEgPSBzdGQ6Om1pbihtYXhQ
b3MgLSB0aHVtYlBvcywgZGVsdGEpOwpAQCAtMjkzLDExICsyODksMTEgQEAgdm9pZCBTY3JvbGxi
YXI6OnNldEhvdmVyZWRQYXJ0KFNjcm9sbGJhclBhcnQgcGFydCkKICAgICBpZiAocGFydCA9PSBt
X2hvdmVyZWRQYXJ0KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoKG1faG92ZXJlZFBhcnQg
PT0gTm9QYXJ0IHx8IHBhcnQgPT0gTm9QYXJ0KSAmJiB0aGVtZSgpLT5pbnZhbGlkYXRlT25Nb3Vz
ZUVudGVyRXhpdCgpKQorICAgIGlmICgobV9ob3ZlcmVkUGFydCA9PSBOb1BhcnQgfHwgcGFydCA9
PSBOb1BhcnQpICYmIHRoZW1lKCkuaW52YWxpZGF0ZU9uTW91c2VFbnRlckV4aXQoKSkKICAgICAg
ICAgaW52YWxpZGF0ZSgpOyAgLy8gSnVzdCBpbnZhbGlkYXRlIHRoZSB3aG9sZSBzY3JvbGxiYXIs
IHNpbmNlIHRoZSBidXR0b25zIGF0IGVpdGhlciBlbmQgY2hhbmdlIGFueXdheS4KICAgICBlbHNl
IGlmIChtX3ByZXNzZWRQYXJ0ID09IE5vUGFydCkgeyAgLy8gV2hlbiB0aGVyZSdzIGEgcHJlc3Nl
ZCBwYXJ0LCB3ZSBkb24ndCBkcmF3IGEgaG92ZXJlZCBzdGF0ZSwgc28gdGhlcmUncyBubyByZWFz
b24gdG8gaW52YWxpZGF0ZS4KLSAgICAgICAgdGhlbWUoKS0+aW52YWxpZGF0ZVBhcnQoKnRoaXMs
IHBhcnQpOwotICAgICAgICB0aGVtZSgpLT5pbnZhbGlkYXRlUGFydCgqdGhpcywgbV9ob3ZlcmVk
UGFydCk7CisgICAgICAgIHRoZW1lKCkuaW52YWxpZGF0ZVBhcnQoKnRoaXMsIHBhcnQpOworICAg
ICAgICB0aGVtZSgpLmludmFsaWRhdGVQYXJ0KCp0aGlzLCBtX2hvdmVyZWRQYXJ0KTsKICAgICB9
CiAgICAgbV9ob3ZlcmVkUGFydCA9IHBhcnQ7CiB9CkBAIC0zMDUsMjQgKzMwMSwyNCBAQCB2b2lk
IFNjcm9sbGJhcjo6c2V0SG92ZXJlZFBhcnQoU2Nyb2xsYmFyUGFydCBwYXJ0KQogdm9pZCBTY3Jv
bGxiYXI6OnNldFByZXNzZWRQYXJ0KFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAgICBpZiAobV9w
cmVzc2VkUGFydCAhPSBOb1BhcnQpCi0gICAgICAgIHRoZW1lKCktPmludmFsaWRhdGVQYXJ0KCp0
aGlzLCBtX3ByZXNzZWRQYXJ0KTsKKyAgICAgICAgdGhlbWUoKS5pbnZhbGlkYXRlUGFydCgqdGhp
cywgbV9wcmVzc2VkUGFydCk7CiAgICAgbV9wcmVzc2VkUGFydCA9IHBhcnQ7CiAgICAgaWYgKG1f
cHJlc3NlZFBhcnQgIT0gTm9QYXJ0KQotICAgICAgICB0aGVtZSgpLT5pbnZhbGlkYXRlUGFydCgq
dGhpcywgbV9wcmVzc2VkUGFydCk7CisgICAgICAgIHRoZW1lKCkuaW52YWxpZGF0ZVBhcnQoKnRo
aXMsIG1fcHJlc3NlZFBhcnQpOwogICAgIGVsc2UgaWYgKG1faG92ZXJlZFBhcnQgIT0gTm9QYXJ0
KSAgLy8gV2hlbiB3ZSBubyBsb25nZXIgaGF2ZSBhIHByZXNzZWQgcGFydCwgd2UgY2FuIHN0YXJ0
IGRyYXdpbmcgYSBob3ZlcmVkIHN0YXRlIG9uIHRoZSBob3ZlcmVkIHBhcnQuCi0gICAgICAgIHRo
ZW1lKCktPmludmFsaWRhdGVQYXJ0KCp0aGlzLCBtX2hvdmVyZWRQYXJ0KTsKKyAgICAgICAgdGhl
bWUoKS5pbnZhbGlkYXRlUGFydCgqdGhpcywgbV9ob3ZlcmVkUGFydCk7CiB9CiAKICNpZiAhUExB
VEZPUk0oSU9TKQogYm9vbCBTY3JvbGxiYXI6Om1vdXNlTW92ZWQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldnQpCiB7CiAgICAgaWYgKG1fcHJlc3NlZFBhcnQgPT0gVGh1bWJQYXJ0KSB7Ci0g
ICAgICAgIGlmICh0aGVtZSgpLT5zaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbigqdGhpcywgZXZ0
KSkKKyAgICAgICAgaWYgKHRoZW1lKCkuc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oKnRoaXMs
IGV2dCkpCiAgICAgICAgICAgICBtX3Njcm9sbGFibGVBcmVhLnNjcm9sbFRvT2Zmc2V0V2l0aG91
dEFuaW1hdGlvbihtX29yaWVudGF0aW9uLCBtX2RyYWdPcmlnaW4pOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIG1vdmVUaHVtYihtX29yaWVudGF0aW9uID09IEhvcml6b250YWxTY3JvbGxi
YXIgPyAKICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3co
ZXZ0LnBvc2l0aW9uKCkpLngoKSA6Ci0gICAgICAgICAgICAgICAgICAgICAgY29udmVydEZyb21D
b250YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigpKS55KCksIHRoZW1lKCktPnNob3VsZERyYWdE
b2N1bWVudEluc3RlYWRPZlRodW1iKCp0aGlzLCBldnQpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpLnkoKSwgdGhlbWUo
KS5zaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYigqdGhpcywgZXZ0KSk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzMwLDE5ICszMjYsMTkgQEAgYm9v
bCBTY3JvbGxiYXI6Om1vdXNlTW92ZWQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiAg
ICAgaWYgKG1fcHJlc3NlZFBhcnQgIT0gTm9QYXJ0KQogICAgICAgICBtX3ByZXNzZWRQb3MgPSAo
b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gY29udmVydEZyb21Db250YWlu
aW5nV2luZG93KGV2dC5wb3NpdGlvbigpKS54KCkgOiBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5k
b3coZXZ0LnBvc2l0aW9uKCkpLnkoKSk7CiAKLSAgICBTY3JvbGxiYXJQYXJ0IHBhcnQgPSB0aGVt
ZSgpLT5oaXRUZXN0KCp0aGlzLCBldnQucG9zaXRpb24oKSk7CisgICAgU2Nyb2xsYmFyUGFydCBw
YXJ0ID0gdGhlbWUoKS5oaXRUZXN0KCp0aGlzLCBldnQucG9zaXRpb24oKSk7CiAgICAgaWYgKHBh
cnQgIT0gbV9ob3ZlcmVkUGFydCkgewogICAgICAgICBpZiAobV9wcmVzc2VkUGFydCAhPSBOb1Bh
cnQpIHsKICAgICAgICAgICAgIGlmIChwYXJ0ID09IG1fcHJlc3NlZFBhcnQpIHsKICAgICAgICAg
ICAgICAgICAvLyBUaGUgbW91c2UgaXMgbW92aW5nIGJhY2sgb3ZlciB0aGUgcHJlc3NlZCBwYXJ0
LiAgV2UKICAgICAgICAgICAgICAgICAvLyBuZWVkIHRvIHN0YXJ0IHVwIHRoZSB0aW1lciBhY3Rp
b24gYWdhaW4uCi0gICAgICAgICAgICAgICAgc3RhcnRUaW1lcklmTmVlZGVkKHRoZW1lKCktPmF1
dG9zY3JvbGxUaW1lckRlbGF5KCkpOwotICAgICAgICAgICAgICAgIHRoZW1lKCktPmludmFsaWRh
dGVQYXJ0KCp0aGlzLCBtX3ByZXNzZWRQYXJ0KTsKKyAgICAgICAgICAgICAgICBzdGFydFRpbWVy
SWZOZWVkZWQodGhlbWUoKS5hdXRvc2Nyb2xsVGltZXJEZWxheSgpKTsKKyAgICAgICAgICAgICAg
ICB0aGVtZSgpLmludmFsaWRhdGVQYXJ0KCp0aGlzLCBtX3ByZXNzZWRQYXJ0KTsKICAgICAgICAg
ICAgIH0gZWxzZSBpZiAobV9ob3ZlcmVkUGFydCA9PSBtX3ByZXNzZWRQYXJ0KSB7CiAgICAgICAg
ICAgICAgICAgLy8gVGhlIG1vdXNlIGlzIGxlYXZpbmcgdGhlIHByZXNzZWQgcGFydC4gIEtpbGwg
b3VyIHRpbWVyCiAgICAgICAgICAgICAgICAgLy8gaWYgbmVlZGVkLgogICAgICAgICAgICAgICAg
IHN0b3BUaW1lcklmTmVlZGVkKCk7Ci0gICAgICAgICAgICAgICAgdGhlbWUoKS0+aW52YWxpZGF0
ZVBhcnQoKnRoaXMsIG1fcHJlc3NlZFBhcnQpOworICAgICAgICAgICAgICAgIHRoZW1lKCkuaW52
YWxpZGF0ZVBhcnQoKnRoaXMsIG1fcHJlc3NlZFBhcnQpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9IAogICAgICAgICAKQEAgLTM3NCw3ICszNzAsNyBAQCBib29sIFNjcm9sbGJhcjo6bW91c2VV
cChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAKICAgICAvLyBtX2hvdmVy
ZWRQYXJ0IHdvbid0IGJlIHVwZGF0ZWQgdW50aWwgdGhlIG5leHQgbW91c2VNb3ZlZCBvciBtb3Vz
ZURvd24sIHNvIHdlIGhhdmUgdG8gaGl0IHRlc3QKICAgICAvLyB0byByZWFsbHkga25vdyBpZiB0
aGUgbW91c2UgaGFzIGV4aXRlZCB0aGUgc2Nyb2xsYmFyIG9uIGEgbW91c2VVcC4KLSAgICBTY3Jv
bGxiYXJQYXJ0IHBhcnQgPSB0aGVtZSgpLT5oaXRUZXN0KCp0aGlzLCBtb3VzZUV2ZW50LnBvc2l0
aW9uKCkpOworICAgIFNjcm9sbGJhclBhcnQgcGFydCA9IHRoZW1lKCkuaGl0VGVzdCgqdGhpcywg
bW91c2VFdmVudC5wb3NpdGlvbigpKTsKICAgICBpZiAocGFydCA9PSBOb1BhcnQpCiAgICAgICAg
IG1fc2Nyb2xsYWJsZUFyZWEubW91c2VFeGl0ZWRTY3JvbGxiYXIodGhpcyk7CiAKQEAgLTM4Nywx
OCArMzgzLDE4IEBAIGJvb2wgU2Nyb2xsYmFyOjptb3VzZURvd24oY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldnQpCiAgICAgaWYgKGV2dC5idXR0b24oKSA9PSBSaWdodEJ1dHRvbikKICAgICAg
ICAgcmV0dXJuIHRydWU7IC8vIEZJWE1FOiBIYW5kbGVkIGFzIGNvbnRleHQgbWVudSBieSBRdCBy
aWdodCBub3cuICBTaG91bGQganVzdCBhdm9pZCBldmVuIGNhbGxpbmcgdGhpcyBtZXRob2Qgb24g
YSByaWdodCBjbGljayB0aG91Z2guCiAKLSAgICBzZXRQcmVzc2VkUGFydCh0aGVtZSgpLT5oaXRU
ZXN0KCp0aGlzLCBldnQucG9zaXRpb24oKSkpOworICAgIHNldFByZXNzZWRQYXJ0KHRoZW1lKCku
aGl0VGVzdCgqdGhpcywgZXZ0LnBvc2l0aW9uKCkpKTsKICAgICBpbnQgcHJlc3NlZFBvcyA9IChv
cmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBjb252ZXJ0RnJvbUNvbnRhaW5p
bmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpLngoKSA6IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRv
dyhldnQucG9zaXRpb24oKSkueSgpKTsKICAgICAKLSAgICBpZiAoKG1fcHJlc3NlZFBhcnQgPT0g
QmFja1RyYWNrUGFydCB8fCBtX3ByZXNzZWRQYXJ0ID09IEZvcndhcmRUcmFja1BhcnQpICYmIHRo
ZW1lKCktPnNob3VsZENlbnRlck9uVGh1bWIoKnRoaXMsIGV2dCkpIHsKKyAgICBpZiAoKG1fcHJl
c3NlZFBhcnQgPT0gQmFja1RyYWNrUGFydCB8fCBtX3ByZXNzZWRQYXJ0ID09IEZvcndhcmRUcmFj
a1BhcnQpICYmIHRoZW1lKCkuc2hvdWxkQ2VudGVyT25UaHVtYigqdGhpcywgZXZ0KSkgewogICAg
ICAgICBzZXRIb3ZlcmVkUGFydChUaHVtYlBhcnQpOwogICAgICAgICBzZXRQcmVzc2VkUGFydChU
aHVtYlBhcnQpOwogICAgICAgICBtX2RyYWdPcmlnaW4gPSBtX2N1cnJlbnRQb3M7Ci0gICAgICAg
IGludCB0aHVtYkxlbiA9IHRoZW1lKCktPnRodW1iTGVuZ3RoKCp0aGlzKTsKKyAgICAgICAgaW50
IHRodW1iTGVuID0gdGhlbWUoKS50aHVtYkxlbmd0aCgqdGhpcyk7CiAgICAgICAgIGludCBkZXNp
cmVkUG9zID0gcHJlc3NlZFBvczsKICAgICAgICAgLy8gU2V0IHRoZSBwcmVzc2VkIHBvc2l0aW9u
IHRvIHRoZSBtaWRkbGUgb2YgdGhlIHRodW1iIHNvIHRoYXQgd2hlbiB3ZSBkbyB0aGUgbW92ZSwg
dGhlIGRlbHRhCiAgICAgICAgIC8vIHdpbGwgYmUgZnJvbSB0aGUgY3VycmVudCBwaXhlbCBwb3Np
dGlvbiBvZiB0aGUgdGh1bWIgdG8gdGhlIG5ldyBkZXNpcmVkIHBvc2l0aW9uIGZvciB0aGUgdGh1
bWIuCi0gICAgICAgIG1fcHJlc3NlZFBvcyA9IHRoZW1lKCktPnRyYWNrUG9zaXRpb24oKnRoaXMp
ICsgdGhlbWUoKS0+dGh1bWJQb3NpdGlvbigqdGhpcykgKyB0aHVtYkxlbiAvIDI7CisgICAgICAg
IG1fcHJlc3NlZFBvcyA9IHRoZW1lKCkudHJhY2tQb3NpdGlvbigqdGhpcykgKyB0aGVtZSgpLnRo
dW1iUG9zaXRpb24oKnRoaXMpICsgdGh1bWJMZW4gLyAyOwogICAgICAgICBtb3ZlVGh1bWIoZGVz
aXJlZFBvcyk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gZWxzZSBpZiAobV9wcmVzc2Vk
UGFydCA9PSBUaHVtYlBhcnQpCkBAIC00MDYsNyArNDAyLDcgQEAgYm9vbCBTY3JvbGxiYXI6Om1v
dXNlRG93bihjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKICAgICAKICAgICBtX3ByZXNz
ZWRQb3MgPSBwcmVzc2VkUG9zOwogCi0gICAgYXV0b3Njcm9sbFByZXNzZWRQYXJ0KHRoZW1lKCkt
PmluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpKTsKKyAgICBhdXRvc2Nyb2xsUHJlc3NlZFBh
cnQodGhlbWUoKS5pbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTQxNSwxMyArNDExLDEzIEBAIHZvaWQgU2Nyb2xsYmFyOjpzZXRFbmFibGVk
KGJvb2wgZSkKICAgICBpZiAobV9lbmFibGVkID09IGUpCiAgICAgICAgIHJldHVybjsKICAgICBt
X2VuYWJsZWQgPSBlOwotICAgIHRoZW1lKCktPnVwZGF0ZUVuYWJsZWRTdGF0ZSgqdGhpcyk7Cisg
ICAgdGhlbWUoKS51cGRhdGVFbmFibGVkU3RhdGUoKnRoaXMpOwogICAgIGludmFsaWRhdGUoKTsK
IH0KIAogYm9vbCBTY3JvbGxiYXI6OmlzT3ZlcmxheVNjcm9sbGJhcigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fdGhlbWUtPnVzZXNPdmVybGF5U2Nyb2xsYmFycygpOworICAgIHJldHVybiB0aGVt
ZSgpLnVzZXNPdmVybGF5U2Nyb2xsYmFycygpOwogfQogCiBib29sIFNjcm9sbGJhcjo6c2hvdWxk
UGFydGljaXBhdGVJbkhpdFRlc3RpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaApp
bmRleCA5YzAwZWVlLi5lMjRhMjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaApA
QCAtMTA3LDcgKzEwNyw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbW91
c2VEb3duKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCi0gICAgU2Nyb2xsYmFyVGhlbWUq
IHRoZW1lKCkgY29uc3QgeyByZXR1cm4gbV90aGVtZTsgfQorICAgIFNjcm9sbGJhclRoZW1lJiB0
aGVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGhlbWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlUmVjdChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKQEAgLTE0OCw3ICsxNDgsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgU2Nyb2xsYWJsZUFyZWEmIG1fc2Nyb2xsYWJsZUFyZWE7CiAgICAg
U2Nyb2xsYmFyT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsKICAgICBTY3JvbGxiYXJDb250cm9s
U2l6ZSBtX2NvbnRyb2xTaXplOwotICAgIFNjcm9sbGJhclRoZW1lKiBtX3RoZW1lOworICAgIFNj
cm9sbGJhclRoZW1lJiBtX3RoZW1lOwogCiAgICAgaW50IG1fdmlzaWJsZVNpemU7CiAgICAgaW50
IG1fdG90YWxTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YmFyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuY3Bw
CmluZGV4IDhlZDJkOTU5Li5kNzM3ZTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYmFyVGhlbWUuY3BwCkBAIC0zMSwxMSArMzEsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1TY3JvbGxiYXJUaGVtZSogU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkKK1Njcm9sbGJhclRo
ZW1lJiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKQogewogICAgIGlmIChTZXR0aW5nczo6bW9ja1Nj
cm9sbGJhcnNFbmFibGVkKCkpIHsKICAgICAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xP
Q0FMKFNjcm9sbGJhclRoZW1lTW9jaywgbW9ja1RoZW1lLCAoKSk7Ci0gICAgICAgIHJldHVybiAm
bW9ja1RoZW1lOworICAgICAgICByZXR1cm4gbW9ja1RoZW1lOwogICAgIH0KICAgICByZXR1cm4g
bmF0aXZlVGhlbWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGJhclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5o
CmluZGV4IDE2YmIyNTIuLmU1NGM0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YmFyVGhlbWUuaApAQCAtMTEzLDEwICsxMTMsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBi
b29sIGlzTW9ja1RoZW1lKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBTY3JvbGxiYXJUaGVtZSogdGhlbWUoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgU2Nyb2xsYmFyVGhlbWUmIHRoZW1lKCk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGlj
IFNjcm9sbGJhclRoZW1lKiBuYXRpdmVUaGVtZSgpOyAvLyBNdXN0IGJlIGltcGxlbWVudGVkIHRv
IHJldHVybiB0aGUgY29ycmVjdCB0aGVtZSBzdWJjbGFzcy4KKyAgICBzdGF0aWMgU2Nyb2xsYmFy
VGhlbWUmIG5hdGl2ZVRoZW1lKCk7IC8vIE11c3QgYmUgaW1wbGVtZW50ZWQgdG8gcmV0dXJuIHRo
ZSBjb3JyZWN0IHRoZW1lIHN1YmNsYXNzLgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5jcHAKaW5kZXggMmUxMzViYS4uZDJjMTc3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1l
RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVF
ZmwuY3BwCkBAIC0zOSwxMCArMzksMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3Jv
bGxiYXJUaGVtZSogU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkKK1Njcm9sbGJhclRoZW1l
JiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKQogewogICAgIHN0YXRpYyBTY3JvbGxiYXJU
aGVtZUVmbCB0aGVtZTsKLSAgICByZXR1cm4gJnRoZW1lOworICAgIHJldHVybiB0aGVtZTsKIH0K
IAogc3RhdGljIGNvbnN0IGludCBkZWZhdWx0VGhpY2tuZXNzID0gMTA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcAppbmRleCA5YTE1M2Y2
Li43MGNmMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xs
YmFyVGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxi
YXJUaGVtZUd0ay5jcHAKQEAgLTM2LDEwICszNiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVNjcm9sbGJhclRoZW1lKiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKQorU2Nyb2xs
YmFyVGhlbWUmIFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpCiB7CiAgICAgc3RhdGljIFNj
cm9sbGJhclRoZW1lR3RrIHRoZW1lOwotICAgIHJldHVybiAmdGhlbWU7CisgICAgcmV0dXJuIHRo
ZW1lOwogfQogCiBTY3JvbGxiYXJUaGVtZUd0azo6flNjcm9sbGJhclRoZW1lR3RrKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxiYXJUaGVtZUlPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxiYXJUaGVtZUlPUy5tbQppbmRleCBl
ZGMxYTU5Li41MTcwMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
U2Nyb2xsYmFyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Nj
cm9sbGJhclRoZW1lSU9TLm1tCkBAIC0zNSwxMCArMzUsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1TY3JvbGxiYXJUaGVtZSogU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkKK1Nj
cm9sbGJhclRoZW1lJiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKQogewogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxTY3JvbGxiYXJUaGVtZUlPUz4gdGhlbWU7Ci0gICAgcmV0dXJuICZ0
aGVtZS5nZXQoKTsKKyAgICByZXR1cm4gdGhlbWU7CiB9CiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVJ
T1M6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXggMzhjNDQ0Ni4uZWI4MzMwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5t
bQpAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c0NvbnRlbnRBcmVhU2Nyb2xs
ZWRJbkRpcmVjdGlvbigpCiAKIHN0YXRpYyBTY3JvbGxiYXJUaGVtZU1hYyogbWFjU2Nyb2xsYmFy
VGhlbWUoKQogewotICAgIFNjcm9sbGJhclRoZW1lKiBzY3JvbGxiYXJUaGVtZSA9IFNjcm9sbGJh
clRoZW1lOjp0aGVtZSgpOwotICAgIHJldHVybiAhc2Nyb2xsYmFyVGhlbWUtPmlzTW9ja1RoZW1l
KCkgPyBzdGF0aWNfY2FzdDxTY3JvbGxiYXJUaGVtZU1hYyo+KHNjcm9sbGJhclRoZW1lKSA6IDA7
CisgICAgU2Nyb2xsYmFyVGhlbWUmIHNjcm9sbGJhclRoZW1lID0gU2Nyb2xsYmFyVGhlbWU6OnRo
ZW1lKCk7CisgICAgcmV0dXJuICFzY3JvbGxiYXJUaGVtZS5pc01vY2tUaGVtZSgpID8gc3RhdGlj
X2Nhc3Q8U2Nyb2xsYmFyVGhlbWVNYWMqPigmc2Nyb2xsYmFyVGhlbWUpIDogbnVsbHB0cjsKIH0K
IAogc3RhdGljIFNjcm9sbGJhclBhaW50ZXIgc2Nyb2xsYmFyUGFpbnRlckZvclNjcm9sbGJhcihT
Y3JvbGxiYXImIHNjcm9sbGJhcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxiYXJUaGVtZU1hYy5tbQppbmRleCBjMzM3NjVmLi5lOTNkODcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCkBAIC0zOCw2ICsz
OCw3IEBACiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2luY2x1ZGUgPENh
cmJvbi9DYXJib24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CiAKQEAgLTc3LDExICs3OCwxMSBAQCBzdGF0aWMgU2Ny
b2xsYmFyUGFpbnRlck1hcCogc2Nyb2xsYmFyTWFwKCkKIHsKICAgICBVTlVTRURfUEFSQU0odW51
c2VkTm90aWZpY2F0aW9uKTsKIAotICAgIFNjcm9sbGJhclRoZW1lKiB0aGVtZSA9IFNjcm9sbGJh
clRoZW1lOjp0aGVtZSgpOwotICAgIGlmICh0aGVtZS0+aXNNb2NrVGhlbWUoKSkKKyAgICBTY3Jv
bGxiYXJUaGVtZSYgdGhlbWUgPSBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKTsKKyAgICBpZiAodGhl
bWUuaXNNb2NrVGhlbWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RhdGljX2Nhc3Q8U2Ny
b2xsYmFyVGhlbWVNYWMqPihTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKSktPnByZWZlcmVuY2VzQ2hh
bmdlZCgpOworICAgIHN0YXRpY19jYXN0PFNjcm9sbGJhclRoZW1lTWFjJj4odGhlbWUpLnByZWZl
cmVuY2VzQ2hhbmdlZCgpOwogICAgIGlmIChzY3JvbGxiYXJNYXAoKS0+aXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAgICAgU2Nyb2xsYmFyUGFpbnRlck1hcDo6aXRlcmF0b3IgZW5kID0gc2Ny
b2xsYmFyTWFwKCktPmVuZCgpOwpAQCAtOTUsMTEgKzk2LDExIEBAIHN0YXRpYyBTY3JvbGxiYXJQ
YWludGVyTWFwKiBzY3JvbGxiYXJNYXAoKQogewogICAgIFVOVVNFRF9QQVJBTSh1bnVzZWROb3Rp
ZmljYXRpb24pOwogCi0gICAgU2Nyb2xsYmFyVGhlbWUqIHRoZW1lID0gU2Nyb2xsYmFyVGhlbWU6
OnRoZW1lKCk7Ci0gICAgaWYgKHRoZW1lLT5pc01vY2tUaGVtZSgpKQorICAgIFNjcm9sbGJhclRo
ZW1lJiB0aGVtZSA9IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpOworICAgIGlmICh0aGVtZS5pc01v
Y2tUaGVtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdGF0aWNfY2FzdDxTY3JvbGxiYXJU
aGVtZU1hYyo+KFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpKS0+cHJlZmVyZW5jZXNDaGFuZ2VkKCk7
CisgICAgc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyVGhlbWVNYWMmPih0aGVtZSkucHJlZmVyZW5jZXND
aGFuZ2VkKCk7CiB9CiAKICsgKHZvaWQpcmVnaXN0ZXJBc09ic2VydmVyCkBAIC0xMTIsMTAgKzEx
MywxMCBAQCBzdGF0aWMgU2Nyb2xsYmFyUGFpbnRlck1hcCogc2Nyb2xsYmFyTWFwKCkKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1TY3JvbGxiYXJUaGVtZSogU2Nyb2xsYmFyVGhlbWU6Om5hdGl2
ZVRoZW1lKCkKK1Njcm9sbGJhclRoZW1lJiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTY3JvbGxiYXJUaGVtZU1hYywg
dGhlbWUsICgpKTsKLSAgICByZXR1cm4gJnRoZW1lOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTY3JvbGxiYXJUaGVtZU1hYz4gdGhlbWU7CisgICAgcmV0dXJuIHRoZW1lOwogfQogCiAvLyBG
SVhNRTogR2V0IHRoZXNlIG51bWJlcnMgZnJvbSBDb3JlVUkuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCmluZGV4IDY0NDQ4OTMuLjQ1YzFhYzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCkBAIC0zNTIsNyAr
MzUyLDcgQEAgdm9pZCBQb3B1cE1lbnVXaW46OmNhbGN1bGF0ZVBvc2l0aW9uQW5kU2l6ZShjb25z
dCBJbnRSZWN0JiByLCBGcmFtZVZpZXcqIHYpCiAKICAgICBpZiAobmF0dXJhbEhlaWdodCA+IG1h
eFBvcHVwSGVpZ2h0KQogICAgICAgICAvLyBXZSBuZWVkIHJvb20gZm9yIGEgc2Nyb2xsYmFyCi0g
ICAgICAgIHBvcHVwV2lkdGggKz0gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNjcm9sbGJhclRo
aWNrbmVzcyhTbWFsbFNjcm9sbGJhcik7CisgICAgICAgIHBvcHVwV2lkdGggKz0gU2Nyb2xsYmFy
VGhlbWU6OnRoZW1lKCkuc2Nyb2xsYmFyVGhpY2tuZXNzKFNtYWxsU2Nyb2xsYmFyKTsKIAogICAg
IC8vIEFkZCBwYWRkaW5nIHRvIGFsaWduIHRoZSBwb3B1cCB0ZXh0IHdpdGggdGhlIDxzZWxlY3Q+
IHRleHQKICAgICBwb3B1cFdpZHRoICs9IHN0ZDo6bWF4PGludD4oMCwgY2xpZW50KCktPmNsaWVu
dFBhZGRpbmdSaWdodCgpIC0gY2xpZW50KCktPmNsaWVudEluc2V0UmlnaHQoKSkgKyBzdGQ6Om1h
eDxpbnQ+KDAsIGNsaWVudCgpLT5jbGllbnRQYWRkaW5nTGVmdCgpIC0gY2xpZW50KCktPmNsaWVu
dEluc2V0TGVmdCgpKTsKQEAgLTEyODcsMjYgKzEyODcsMjQgQEAgSFJFU1VMVCBBY2Nlc3NpYmxl
UG9wdXBNZW51OjphY2NMb2NhdGlvbihsb25nKiBsZWZ0LCBsb25nKiB0b3AsIGxvbmcqIHdpZHRo
LCBsb24KICAgICAgICAgU2Nyb2xsYmFyJiBzY3JvbGxiYXIgPSAqbV9wb3B1cE1lbnUuc2Nyb2xs
YmFyKCk7CiAgICAgICAgIFdlYkNvcmU6OlNjcm9sbGJhclBhcnQgcGFydCA9IHN0YXRpY19jYXN0
PFdlYkNvcmU6OlNjcm9sbGJhclBhcnQ+KC12Q2hpbGQubFZhbCk7CiAKLSAgICAgICAgU2Nyb2xs
YmFyVGhlbWVXaW4qIHRoZW1lID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyVGhlbWVXaW4qPihzY3Jv
bGxiYXIudGhlbWUoKSk7Ci0gICAgICAgIGlmICghdGhlbWUpCi0gICAgICAgICAgICByZXR1cm4g
RV9GQUlMOworICAgICAgICBTY3JvbGxiYXJUaGVtZVdpbiYgdGhlbWUgPSBzdGF0aWNfY2FzdDxT
Y3JvbGxiYXJUaGVtZVdpbiY+KHNjcm9sbGJhci50aGVtZSgpKTsKIAogICAgICAgICBJbnRSZWN0
IHBhcnRSZWN0OwogCiAgICAgICAgIHN3aXRjaCAocGFydCkgewogICAgICAgICBjYXNlIEJhY2tU
cmFja1BhcnQ6CiAgICAgICAgIGNhc2UgQmFja0J1dHRvblN0YXJ0UGFydDoKLSAgICAgICAgICAg
IHBhcnRSZWN0ID0gdGhlbWUtPmJhY2tCdXR0b25SZWN0KHNjcm9sbGJhciwgV2ViQ29yZTo6QmFj
a1RyYWNrUGFydCk7CisgICAgICAgICAgICBwYXJ0UmVjdCA9IHRoZW1lLmJhY2tCdXR0b25SZWN0
KHNjcm9sbGJhciwgV2ViQ29yZTo6QmFja1RyYWNrUGFydCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBUaHVtYlBhcnQ6Ci0gICAgICAgICAgICBwYXJ0UmVjdCA9IHRoZW1lLT50
aHVtYlJlY3Qoc2Nyb2xsYmFyKTsKKyAgICAgICAgICAgIHBhcnRSZWN0ID0gdGhlbWUudGh1bWJS
ZWN0KHNjcm9sbGJhcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBGb3J3YXJk
VHJhY2tQYXJ0OgogICAgICAgICBjYXNlIEZvcndhcmRCdXR0b25FbmRQYXJ0OgotICAgICAgICAg
ICAgcGFydFJlY3QgPSB0aGVtZS0+Zm9yd2FyZEJ1dHRvblJlY3Qoc2Nyb2xsYmFyLCBXZWJDb3Jl
OjpGb3J3YXJkVHJhY2tQYXJ0KTsKKyAgICAgICAgICAgIHBhcnRSZWN0ID0gdGhlbWUuZm9yd2Fy
ZEJ1dHRvblJlY3Qoc2Nyb2xsYmFyLCBXZWJDb3JlOjpGb3J3YXJkVHJhY2tQYXJ0KTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNjcm9sbGJhckJHUGFydDoKLSAgICAgICAgICAg
IHBhcnRSZWN0ID0gdGhlbWUtPnRyYWNrUmVjdChzY3JvbGxiYXIpOworICAgICAgICAgICAgcGFy
dFJlY3QgPSB0aGVtZS50cmFja1JlY3Qoc2Nyb2xsYmFyKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTEzNTgsMTIg
KzEzNTYsMTAgQEAgSFJFU1VMVCBBY2Nlc3NpYmxlUG9wdXBNZW51OjphY2NIaXRUZXN0KGxvbmcg
eCwgbG9uZyB5LCBWQVJJQU5UKiBwdkNoaWxkQXRQb2ludCkKIAogICAgIGlmIChtX3BvcHVwTWVu
dS5zY3JvbGxiYXIoKSAmJiBzY3JvbGxSZWN0LmNvbnRhaW5zKHB0KSkgewogICAgICAgICBTY3Jv
bGxiYXImIHNjcm9sbGJhciA9ICptX3BvcHVwTWVudS5zY3JvbGxiYXIoKTsKLSAgICAgICAgaWYg
KCFzY3JvbGxiYXIudGhlbWUoKSkKLSAgICAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICAg
ICAgcHQubW92ZSgtc2Nyb2xsUmVjdC54KCksIC1zY3JvbGxSZWN0LnkoKSk7CiAKLSAgICAgICAg
V2ViQ29yZTo6U2Nyb2xsYmFyUGFydCBwYXJ0ID0gc2Nyb2xsYmFyLnRoZW1lKCktPmhpdFRlc3Qo
c2Nyb2xsYmFyLCBwdCk7CisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGJhclBhcnQgcGFydCA9IHNj
cm9sbGJhci50aGVtZSgpLmhpdFRlc3Qoc2Nyb2xsYmFyLCBwdCk7CiAKICAgICAgICAgVl9WVChw
dkNoaWxkQXRQb2ludCkgPSBWVF9JNDsKICAgICAgICAgVl9JNChwdkNoaWxkQXRQb2ludCkgPSAt
cGFydDsgLy8gU2Nyb2xsYmFyIHBhcnRzIGFyZSBlbmNvZGVkIGFzIG5lZ2F0aXZlLCB0byBhdm9p
ZCBtaXh1cCB3aXRoIGl0ZW0gaW5kZXhlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuY3BwCmluZGV4IDZjOTBhOWMuLmI3NzRmODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNh
ZmFyaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1l
U2FmYXJpLmNwcApAQCAtNTUsMTMgKzU1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIFNhZmFyaVRoZW1lOwogCi1TY3JvbGxiYXJUaGVtZSogU2Nyb2xsYmFyVGhl
bWU6Om5hdGl2ZVRoZW1lKCkKK1Njcm9sbGJhclRoZW1lJiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZl
VGhlbWUoKQogewogICAgIHN0YXRpYyBTY3JvbGxiYXJUaGVtZVNhZmFyaSBzYWZhcmlUaGVtZTsK
ICAgICBzdGF0aWMgU2Nyb2xsYmFyVGhlbWVXaW4gd2luZG93c1RoZW1lOwogICAgIGlmIChTZXR0
aW5nczo6c2hvdWxkUGFpbnROYXRpdmVDb250cm9scygpKQotICAgICAgICByZXR1cm4gJndpbmRv
d3NUaGVtZTsKLSAgICByZXR1cm4gJnNhZmFyaVRoZW1lOworICAgICAgICByZXR1cm4gd2luZG93
c1RoZW1lOworICAgIHJldHVybiBzYWZhcmlUaGVtZTsKIH0KIAogLy8gRklYTUU6IEdldCB0aGVz
ZSBudW1iZXJzIGZyb20gQ29yZVVJLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAKaW5kZXggM2EwOTQ0NC4uMjhkZmJmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwCkBAIC04
OSwxMCArODksMTAgQEAgc3RhdGljIHZvaWQgY2hlY2tBbmRJbml0U2Nyb2xsYmFyVGhlbWUoKQog
ICAgICAgICBzY3JvbGxiYXJUaGVtZSA9IE9wZW5UaGVtZURhdGEoMCwgTCJTY3JvbGxiYXIiKTsK
IH0KIAotU2Nyb2xsYmFyVGhlbWUqIFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpCitTY3Jv
bGxiYXJUaGVtZSYgU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkKIHsKICAgICBzdGF0aWMg
U2Nyb2xsYmFyVGhlbWVXaW4gd2luVGhlbWU7Ci0gICAgcmV0dXJuICZ3aW5UaGVtZTsKKyAgICBy
ZXR1cm4gd2luVGhlbWU7CiB9CiAKIFNjcm9sbGJhclRoZW1lV2luOjpTY3JvbGxiYXJUaGVtZVdp
bigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDhiYzBmMDguLjgw
ZTYxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC05NTQsMTMg
Kzk1NCwxMyBAQCB2b2lkIFJlbmRlckJveDo6cGFuU2Nyb2xsKGNvbnN0IEludFBvaW50JiBzb3Vy
Y2UpCiAKIGJvb2wgUmVuZGVyQm94OjpoYXNWZXJ0aWNhbFNjcm9sbGJhcldpdGhBdXRvQmVoYXZp
b3IoKSBjb25zdAogewotICAgIGJvb2wgb3ZlcmZsb3dTY3JvbGxBY3RzTGlrZUF1dG8gPSBzdHls
ZSgpLm92ZXJmbG93WSgpID09IE9TQ1JPTEwgJiYgIXN0eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NS
T0xMQkFSKSAmJiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+dXNlc092ZXJsYXlTY3JvbGxiYXJz
KCk7CisgICAgYm9vbCBvdmVyZmxvd1Njcm9sbEFjdHNMaWtlQXV0byA9IHN0eWxlKCkub3ZlcmZs
b3dZKCkgPT0gT1NDUk9MTCAmJiAhc3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShTQ1JPTExCQVIpICYm
IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnVzZXNPdmVybGF5U2Nyb2xsYmFycygpOwogICAgIHJl
dHVybiBoYXNPdmVyZmxvd0NsaXAoKSAmJiAoc3R5bGUoKS5vdmVyZmxvd1koKSA9PSBPQVVUTyB8
fCBzdHlsZSgpLm92ZXJmbG93WSgpID09IE9PVkVSTEFZIHx8IG92ZXJmbG93U2Nyb2xsQWN0c0xp
a2VBdXRvKTsKIH0KIAogYm9vbCBSZW5kZXJCb3g6Omhhc0hvcml6b250YWxTY3JvbGxiYXJXaXRo
QXV0b0JlaGF2aW9yKCkgY29uc3QKIHsKLSAgICBib29sIG92ZXJmbG93U2Nyb2xsQWN0c0xpa2VB
dXRvID0gc3R5bGUoKS5vdmVyZmxvd1goKSA9PSBPU0NST0xMICYmICFzdHlsZSgpLmhhc1BzZXVk
b1N0eWxlKFNDUk9MTEJBUikgJiYgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnVzZXNPdmVybGF5
U2Nyb2xsYmFycygpOworICAgIGJvb2wgb3ZlcmZsb3dTY3JvbGxBY3RzTGlrZUF1dG8gPSBzdHls
ZSgpLm92ZXJmbG93WCgpID09IE9TQ1JPTEwgJiYgIXN0eWxlKCkuaGFzUHNldWRvU3R5bGUoU0NS
T0xMQkFSKSAmJiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS51c2VzT3ZlcmxheVNjcm9sbGJhcnMo
KTsKICAgICByZXR1cm4gaGFzT3ZlcmZsb3dDbGlwKCkgJiYgKHN0eWxlKCkub3ZlcmZsb3dYKCkg
PT0gT0FVVE8gfHwgc3R5bGUoKS5vdmVyZmxvd1goKSA9PSBPT1ZFUkxBWSB8fCBvdmVyZmxvd1Nj
cm9sbEFjdHNMaWtlQXV0byk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCmluZGV4IDM3OTdhNzYuLjg5OTY2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcApAQCAtMjgwMiw3ICsyODAyLDcgQEAgc3RhdGljIExheW91dFJlY3Qg
Y29ybmVyUmVjdChjb25zdCBSZW5kZXJMYXllciogbGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIGJv
dW5kcykKICAgICBpZiAoIWxheWVyLT52ZXJ0aWNhbFNjcm9sbGJhcigpICYmICFsYXllci0+aG9y
aXpvbnRhbFNjcm9sbGJhcigpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzbid0IHJpZ2h0
LiAgV2UgbmVlZCB0byBrbm93IHRoZSB0aGlja25lc3Mgb2YgY3VzdG9tIHNjcm9sbGJhcnMKICAg
ICAgICAgLy8gZXZlbiB3aGVuIHRoZXkgZG9uJ3QgZXhpc3QgaW4gb3JkZXIgdG8gc2V0IHRoZSBy
ZXNpemVyIHNxdWFyZSBzaXplIHByb3Blcmx5LgotICAgICAgICBob3Jpem9udGFsVGhpY2tuZXNz
ID0gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNjcm9sbGJhclRoaWNrbmVzcygpOworICAgICAg
ICBob3Jpem9udGFsVGhpY2tuZXNzID0gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkuc2Nyb2xsYmFy
VGhpY2tuZXNzKCk7CiAgICAgICAgIHZlcnRpY2FsVGhpY2tuZXNzID0gaG9yaXpvbnRhbFRoaWNr
bmVzczsKICAgICB9IGVsc2UgaWYgKGxheWVyLT52ZXJ0aWNhbFNjcm9sbGJhcigpICYmICFsYXll
ci0+aG9yaXpvbnRhbFNjcm9sbGJhcigpKSB7CiAgICAgICAgIGhvcml6b250YWxUaGlja25lc3Mg
PSBsYXllci0+dmVydGljYWxTY3JvbGxiYXIoKS0+d2lkdGgoKTsKQEAgLTMzODIsMTQgKzMzODIs
MTQgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGFzVmVydGljYWxPdmVyZmxvdygpIGNvbnN0CiBzdGF0
aWMgYm9vbCBzdHlsZVJlcXVpcmVzU2Nyb2xsYmFyKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
U2Nyb2xsYmFyT3JpZW50YXRpb24gYXhpcykKIHsKICAgICBFT3ZlcmZsb3cgb3ZlcmZsb3cgPSBh
eGlzID09IFNjcm9sbGJhck9yaWVudGF0aW9uOjpIb3Jpem9udGFsU2Nyb2xsYmFyID8gc3R5bGUu
b3ZlcmZsb3dYKCkgOiBzdHlsZS5vdmVyZmxvd1koKTsKLSAgICBib29sIG92ZXJmbG93U2Nyb2xs
QWN0c0xpa2VBdXRvID0gb3ZlcmZsb3cgPT0gT1NDUk9MTCAmJiAhc3R5bGUuaGFzUHNldWRvU3R5
bGUoU0NST0xMQkFSKSAmJiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+dXNlc092ZXJsYXlTY3Jv
bGxiYXJzKCk7CisgICAgYm9vbCBvdmVyZmxvd1Njcm9sbEFjdHNMaWtlQXV0byA9IG92ZXJmbG93
ID09IE9TQ1JPTEwgJiYgIXN0eWxlLmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUikgJiYgU2Nyb2xs
YmFyVGhlbWU6OnRoZW1lKCkudXNlc092ZXJsYXlTY3JvbGxiYXJzKCk7CiAgICAgcmV0dXJuIG92
ZXJmbG93ID09IE9TQ1JPTEwgJiYgIW92ZXJmbG93U2Nyb2xsQWN0c0xpa2VBdXRvOwogfQogCiBz
dGF0aWMgYm9vbCBzdHlsZURlZmluZXNBdXRvbWF0aWNTY3JvbGxiYXIoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBheGlzKQogewogICAgIEVPdmVyZmxvdyBv
dmVyZmxvdyA9IGF4aXMgPT0gU2Nyb2xsYmFyT3JpZW50YXRpb246Okhvcml6b250YWxTY3JvbGxi
YXIgPyBzdHlsZS5vdmVyZmxvd1goKSA6IHN0eWxlLm92ZXJmbG93WSgpOwotICAgIGJvb2wgb3Zl
cmZsb3dTY3JvbGxBY3RzTGlrZUF1dG8gPSBvdmVyZmxvdyA9PSBPU0NST0xMICYmICFzdHlsZS5o
YXNQc2V1ZG9TdHlsZShTQ1JPTExCQVIpICYmIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT51c2Vz
T3ZlcmxheVNjcm9sbGJhcnMoKTsKKyAgICBib29sIG92ZXJmbG93U2Nyb2xsQWN0c0xpa2VBdXRv
ID0gb3ZlcmZsb3cgPT0gT1NDUk9MTCAmJiAhc3R5bGUuaGFzUHNldWRvU3R5bGUoU0NST0xMQkFS
KSAmJiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS51c2VzT3ZlcmxheVNjcm9sbGJhcnMoKTsKICAg
ICByZXR1cm4gb3ZlcmZsb3cgPT0gT0FVVE8gfHwgb3ZlcmZsb3cgPT0gT09WRVJMQVkgfHwgb3Zl
cmZsb3dTY3JvbGxBY3RzTGlrZUF1dG87CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhci5jcHAKaW5kZXggMjc3ZGFjOC4uN2Q2NzBlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKQEAgLTIxOCw3ICsyMTgsNyBA
QCB2b2lkIFJlbmRlclNjcm9sbGJhcjo6dXBkYXRlU2Nyb2xsYmFyUGFydChTY3JvbGxiYXJQYXJ0
IHBhcnRUeXBlKQogCiAgICAgaWYgKG5lZWRSZW5kZXJlciAmJiBwYXJ0U3R5bGUtPmRpc3BsYXko
KSAhPSBCTE9DSykgewogICAgICAgICAvLyBTZWUgaWYgd2UgYXJlIGEgYnV0dG9uIHRoYXQgc2hv
dWxkIG5vdCBiZSB2aXNpYmxlIGFjY29yZGluZyB0byBPUyBzZXR0aW5ncy4KLSAgICAgICAgU2Ny
b2xsYmFyQnV0dG9uc1BsYWNlbWVudCBidXR0b25zUGxhY2VtZW50ID0gdGhlbWUoKS0+YnV0dG9u
c1BsYWNlbWVudCgpOworICAgICAgICBTY3JvbGxiYXJCdXR0b25zUGxhY2VtZW50IGJ1dHRvbnNQ
bGFjZW1lbnQgPSB0aGVtZSgpLmJ1dHRvbnNQbGFjZW1lbnQoKTsKICAgICAgICAgc3dpdGNoIChw
YXJ0VHlwZSkgewogICAgICAgICAgICAgY2FzZSBCYWNrQnV0dG9uU3RhcnRQYXJ0OgogICAgICAg
ICAgICAgICAgIG5lZWRSZW5kZXJlciA9IChidXR0b25zUGxhY2VtZW50ID09IFNjcm9sbGJhckJ1
dHRvbnNTaW5nbGUgfHwgYnV0dG9uc1BsYWNlbWVudCA9PSBTY3JvbGxiYXJCdXR0b25zRG91Ymxl
U3RhcnQgfHwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXJQYXJ0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQ
YXJ0LmNwcAppbmRleCAwY2JlYzBmLi4zMWQ0MzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHN0YXRp
YyBpbnQgY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKFNpemVUeXBlIHNpemVUeXBlLCBjb25z
dCBMZW5ndGgmIGxlbmd0aCwKIHsKICAgICBpZiAoIWxlbmd0aC5pc0ludHJpbnNpY09yQXV0bygp
IHx8IChzaXplVHlwZSA9PSBNaW5TaXplICYmIGxlbmd0aC5pc0F1dG8oKSkpCiAgICAgICAgIHJl
dHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBjb250YWluaW5nTGVuZ3RoKTsKLSAg
ICByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNjcm9sbGJhclRoaWNrbmVzcygpOwor
ICAgIHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS5zY3JvbGxiYXJUaGlja25lc3MoKTsK
IH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpjb21wdXRlU2Nyb2xsYmFyV2lkdGgoKQpA
QCAtMTM4LDEzICsxMzgsMTMgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0OjpzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUKICAgICBzZXRGbG9h
dGluZyhmYWxzZSk7CiAgICAgc2V0SGFzT3ZlcmZsb3dDbGlwKGZhbHNlKTsKICAgICBpZiAob2xk
U3R5bGUgJiYgbV9zY3JvbGxiYXIgJiYgbV9wYXJ0ICE9IE5vUGFydCAmJiBkaWZmID49IFN0eWxl
RGlmZmVyZW5jZVJlcGFpbnQpCi0gICAgICAgIG1fc2Nyb2xsYmFyLT50aGVtZSgpLT5pbnZhbGlk
YXRlUGFydCgqbV9zY3JvbGxiYXIsIG1fcGFydCk7CisgICAgICAgIG1fc2Nyb2xsYmFyLT50aGVt
ZSgpLmludmFsaWRhdGVQYXJ0KCptX3Njcm9sbGJhciwgbV9wYXJ0KTsKIH0KIAogdm9pZCBSZW5k
ZXJTY3JvbGxiYXJQYXJ0OjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25z
dCBJbnRSZWN0KiByZWN0KQogewogICAgIGlmIChtX3Njcm9sbGJhciAmJiBtX3BhcnQgIT0gTm9Q
YXJ0KQotICAgICAgICBtX3Njcm9sbGJhci0+dGhlbWUoKS0+aW52YWxpZGF0ZVBhcnQoKm1fc2Ny
b2xsYmFyLCBtX3BhcnQpOworICAgICAgICBtX3Njcm9sbGJhci0+dGhlbWUoKS5pbnZhbGlkYXRl
UGFydCgqbV9zY3JvbGxiYXIsIG1fcGFydCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmICh2aWV3
KCkuZnJhbWVWaWV3KCkuaXNGcmFtZVZpZXdTY3JvbGxDb3JuZXIoKnRoaXMpKSB7CiAgICAgICAg
ICAgICB2aWV3KCkuZnJhbWVWaWV3KCkuaW52YWxpZGF0ZVNjcm9sbENvcm5lcih2aWV3KCkuZnJh
bWVWaWV3KCkuc2Nyb2xsQ29ybmVyUmVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCmluZGV4IGRiNTI4OGYuLmFmOTYxMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNw
cApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1
bWIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sCiAKIHZvaWQgUmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgU2Ny
b2xsYmFyVGhlbWU6OnRoZW1lKCktPnBhaW50VGlja21hcmtzKGNvbnRleHQsIHNjcm9sbGJhciwg
cmVjdCk7CisgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkucGFpbnRUaWNrbWFya3MoY29udGV4
dCwgc2Nyb2xsYmFyLCByZWN0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaAppbmRleCBmN2U0MTlkLi5jMDk5NTEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaApAQCAtMzgs
MjEgKzM4LDIxIEBAIGNsYXNzIFJlbmRlclNjcm9sbGJhclRoZW1lIGZpbmFsIDogcHVibGljIFNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW5kZXJTY3Jv
bGxiYXJUaGVtZSgpIHsgfQogICAgIAotICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVz
cyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkgb3ZlcnJpZGUgeyByZXR1cm4gU2Ny
b2xsYmFyVGhlbWU6OnRoZW1lKCktPnNjcm9sbGJhclRoaWNrbmVzcyhjb250cm9sU2l6ZSk7IH0K
KyAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUg
Y29udHJvbFNpemUpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnNj
cm9sbGJhclRoaWNrbmVzcyhjb250cm9sU2l6ZSk7IH0KIAotICAgIHZpcnR1YWwgU2Nyb2xsYmFy
QnV0dG9uc1BsYWNlbWVudCBidXR0b25zUGxhY2VtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPmJ1dHRvbnNQbGFjZW1lbnQoKTsgfQorICAgIHZp
cnR1YWwgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBidXR0b25zUGxhY2VtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkuYnV0dG9uc1BsYWNlbWVu
dCgpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxD
b3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNvcm5l
clJlY3QpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIo
U2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIG92
ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zaG91bGRDZW50ZXJPblRo
dW1iKHNjcm9sbGJhciwgZXZlbnQpOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9u
VGh1bWIoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZl
bnQpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnNob3VsZENlbnRl
ck9uVGh1bWIoc2Nyb2xsYmFyLCBldmVudCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIGRvdWJsZSBp
bml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKSBvdmVycmlkZSB7IHJldHVybiBTY3JvbGxiYXJU
aGVtZTo6dGhlbWUoKS0+aW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCk7IH0KLSAgICB2aXJ0
dWFsIGRvdWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9s
bGJhclRoZW1lOjp0aGVtZSgpLT5hdXRvc2Nyb2xsVGltZXJEZWxheSgpOyB9CisgICAgdmlydHVh
bCBkb3VibGUgaW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCkgb3ZlcnJpZGUgeyByZXR1cm4g
U2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkuaW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCk7IH0K
KyAgICB2aXJ0dWFsIGRvdWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgpIG92ZXJyaWRlIHsgcmV0
dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLmF1dG9zY3JvbGxUaW1lckRlbGF5KCk7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXImIHNjcm9sbGJhcikg
b3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnJlZ2lzdGVyU2Nyb2xs
YmFyKHNjcm9sbGJhcik7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihT
Y3JvbGxiYXImIHNjcm9sbGJhcikgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRo
ZW1lKCktPnVucmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXImIHNjcm9sbGJhcikgb3ZlcnJpZGUgeyByZXR1
cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkucmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsg
fQorICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciYgc2Nyb2xs
YmFyKSBvdmVycmlkZSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS51bnJlZ2lzdGVy
U2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KIAogICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxl
bmd0aChTY3JvbGxiYXImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKaW5kZXggN2RmMzgzYy4uNWUyZjRlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCkBAIC0xMzgsNyAr
MTM4LDcgQEAgaW50IFJlbmRlclRleHRDb250cm9sOjp0ZXh0QmxvY2tMb2dpY2FsV2lkdGgoKSBj
b25zdAogaW50IFJlbmRlclRleHRDb250cm9sOjpzY3JvbGxiYXJUaGlja25lc3MoKSBjb25zdAog
ewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZ2V0IHRoZSBzaXplIG9mIHRoZSBzY3JvbGxiYXIg
ZnJvbSB0aGUgUmVuZGVyVGhlbWUgaW5zdGVhZC4KLSAgICByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6
OnRoZW1lKCktPnNjcm9sbGJhclRoaWNrbmVzcygpOworICAgIHJldHVybiBTY3JvbGxiYXJUaGVt
ZTo6dGhlbWUoKS5zY3JvbGxiYXJUaGlja25lc3MoKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Q29u
dHJvbDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlv
dXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYgY29tcHV0ZWRW
YWx1ZXMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lRWZsLmNw
cAppbmRleCBiYWMxZDZmLi4wYWI2MTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUVmbC5jcHAKQEAgLTUyNCw3ICs1MjQsNyBAQCBib29sIFJlbmRlclRoZW1lRWZs
Ojpsb2FkVGhlbWUoKQogCiAgICAgY29uc3QgY2hhciogdGhpY2tuZXNzID0gZWRqZV9vYmplY3Rf
ZGF0YV9nZXQobV9lZGplLmdldCgpLCAic2Nyb2xsYmFyLnRoaWNrbmVzcyIpOwogICAgIGlmICh0
aGlja25lc3MgJiYgIVNldHRpbmdzOjptb2NrU2Nyb2xsYmFyc0VuYWJsZWQoKSkKLSAgICAgICAg
c3RhdGljX2Nhc3Q8U2Nyb2xsYmFyVGhlbWVFZmwqPihTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKSkt
PnNldFNjcm9sbGJhclRoaWNrbmVzcyhhdG9pKHRoaWNrbmVzcykpOworICAgICAgICBzdGF0aWNf
Y2FzdDxTY3JvbGxiYXJUaGVtZUVmbCY+KFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpKS5zZXRTY3Jv
bGxiYXJUaGlja25lc3MoYXRvaSh0aGlja25lc3MpKTsKIAogICAgIGVkamVfb2JqZWN0X3NpZ25h
bF9jYWxsYmFja19hZGQoZWRqZSgpLCAiY29sb3JfY2xhc3Msc2V0IiwgIndlYmtpdC9zZWxlY3Rp
b24vZm9yZWdyb3VuZCIsIGFwcGx5Q29sb3JDYWxsYmFjaywgdGhpcyk7CiAgICAgZWRqZV9vYmpl
Y3Rfc2lnbmFsX2NhbGxiYWNrX2FkZChlZGplKCksICJjb2xvcl9jbGFzcyxzZXQiLCAid2Via2l0
L3NlbGVjdGlvbi9iYWNrZ3JvdW5kIiwgYXBwbHlDb2xvckNhbGxiYWNrLCB0aGlzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IGZlZmJiMjQuLjEy
MWYwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcApA
QCAtMTQyLDcgKzE0Miw3IEBAIHN0YXRpYyB2b2lkIGd0a1N0eWxlQ2hhbmdlZENhbGxiYWNrKEdP
YmplY3QqLCBHUGFyYW1TcGVjKikKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0eWxlQ29udGV4
dCA6IHN0eWxlQ29udGV4dE1hcCgpKQogICAgICAgICBndGtfc3R5bGVfY29udGV4dF9pbnZhbGlk
YXRlKHN0eWxlQ29udGV4dC52YWx1ZS5nZXQoKSk7Ci0gICAgc3RhdGljX2Nhc3Q8U2Nyb2xsYmFy
VGhlbWVHdGsqPihTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKSktPnRoZW1lQ2hhbmdlZCgpOworICAg
IHN0YXRpY19jYXN0PFNjcm9sbGJhclRoZW1lR3RrJj4oU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkp
LnRoZW1lQ2hhbmdlZCgpOwogICAgIFBhZ2U6OnVwZGF0ZVN0eWxlRm9yQWxsUGFnZXNBZnRlckds
b2JhbENoYW5nZUluRW52aXJvbm1lbnQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDJmMjE0
NjYuLmIyMzMwNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0wOC0w
MiAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU2Nyb2xsYmFy
VGhlbWVzIHNob3VsZCBiZSByZXR1cm5lZCBieSByZWZlcmVuY2UuCisgICAgICAgIDxodHRwczov
L3dlYmtpdC5vcmcvYi8xNDc1NTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVqdGFz
LgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpnZXN0dXJlTm90
aWZ5KToKKyAgICAgICAgKFdlYlZpZXc6OldlYlZpZXdXbmRQcm9jKToKKwogMjAxNS0wOC0zMSAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJhbmdlIEFQSSBpcyB0
aHJvd2luZyB3cm9uZyBleGNlcHRpb24gdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCA5NmQ4
NzY5Li5iN2FmMmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtMTY4Nyw4ICsxNjg3LDggQEAg
Ym9vbCBXZWJWaWV3OjpnZXN0dXJlTm90aWZ5KFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0p
CiAgICAgICAgIC8vIFRoZSBoaXQgdGVzdGluZyBhYm92ZSB3b24ndCBkZXRlY3QgaWYgd2UndmUg
aGl0IHRoZSBtYWluIGZyYW1lJ3MgdmVydGljYWwgc2Nyb2xsYmFyLiBDaGVjayB0aGF0IG1hbnVh
bGx5IG5vdy4KICAgICAgICAgUkVDVCB3ZWJWaWV3UmVjdDsKICAgICAgICAgR2V0V2luZG93UmVj
dChtX3ZpZXdXaW5kb3csICZ3ZWJWaWV3UmVjdCk7Ci0gICAgICAgIGhpdFNjcm9sbGJhciA9ICh2
aWV3LT52ZXJ0aWNhbFNjcm9sbGJhcigpICYmIChnZXN0dXJlQmVnaW5Qb2ludC54ID4gKHdlYlZp
ZXdSZWN0LnJpZ2h0IC0gdmlldy0+dmVydGljYWxTY3JvbGxiYXIoKS0+dGhlbWUoKS0+c2Nyb2xs
YmFyVGhpY2tuZXNzKCkpKSkgCi0gICAgICAgICAgICB8fCAodmlldy0+aG9yaXpvbnRhbFNjcm9s
bGJhcigpICYmIChnZXN0dXJlQmVnaW5Qb2ludC55ID4gKHdlYlZpZXdSZWN0LmJvdHRvbSAtIHZp
ZXctPmhvcml6b250YWxTY3JvbGxiYXIoKS0+dGhlbWUoKS0+c2Nyb2xsYmFyVGhpY2tuZXNzKCkp
KSk7ICAKKyAgICAgICAgaGl0U2Nyb2xsYmFyID0gKHZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCkg
JiYgKGdlc3R1cmVCZWdpblBvaW50LnggPiAod2ViVmlld1JlY3QucmlnaHQgLSB2aWV3LT52ZXJ0
aWNhbFNjcm9sbGJhcigpLT50aGVtZSgpLnNjcm9sbGJhclRoaWNrbmVzcygpKSkpIAorICAgICAg
ICAgICAgfHwgKHZpZXctPmhvcml6b250YWxTY3JvbGxiYXIoKSAmJiAoZ2VzdHVyZUJlZ2luUG9p
bnQueSA+ICh3ZWJWaWV3UmVjdC5ib3R0b20gLSB2aWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFyKCkt
PnRoZW1lKCkuc2Nyb2xsYmFyVGhpY2tuZXNzKCkpKSk7ICAKICAgICB9CiAKICAgICBib29sIGNh
bkJlU2Nyb2xsZWQgPSBmYWxzZTsKQEAgLTI0NjcsNyArMjQ2Nyw3IEBAIExSRVNVTFQgQ0FMTEJB
Q0sgV2ViVmlldzo6V2ViVmlld1duZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJB
TSB3UGFyYW0sCiAgICAgICAgICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUobWFpbkZy
YW1lSW1wbCkpIHsKICAgICAgICAgICAgICAgICB3ZWJWaWV3LT5kZWxldGVCYWNraW5nU3RvcmUo
KTsKICAgICAgICAgICAgICAgICBjb3JlRnJhbWUtPnBhZ2UoKS0+dGhlbWUoKS50aGVtZUNoYW5n
ZWQoKTsKLSAgICAgICAgICAgICAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+dGhlbWVDaGFu
Z2VkKCk7CisgICAgICAgICAgICAgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkudGhlbWVDaGFu
Z2VkKCk7CiAgICAgICAgICAgICAgICAgUkVDVCB3aW5kb3dSZWN0OwogICAgICAgICAgICAgICAg
IDo6R2V0Q2xpZW50UmVjdChoV25kLCAmd2luZG93UmVjdCk7CiAgICAgICAgICAgICAgICAgOjpJ
bnZhbGlkYXRlUmVjdChoV25kLCAmd2luZG93UmVjdCwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDdj
NjVmMjguLjIyNzA1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wOC0wMiAg
QW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU2Nyb2xsYmFyVGhl
bWVzIHNob3VsZCBiZSByZXR1cm5lZCBieSByZWZlcmVuY2UuCisgICAgICAgIDxodHRwczovL3dl
YmtpdC5vcmcvYi8xNDc1NTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVqdGFzLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpbjo6cGFpbnRDb250cm9sRm9yTGF5ZXJJbkNvbnRleHQpOgorCiAy
MDE1LTA5LTAyICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSRUdSRVNTSU9OKHIxODgyMDYpOiBbRUZMXSBBZGp1c3Qgc2Nyb2xsYmFyIHdpZHRoIHRv
IGV3a192aWV3X2NvbnRlbnRzX3NpemVfZ2V0IEFQSSB0ZXN0IApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCAxMTFhMjI1Li41
M2RiZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbQpAQCAtMTEzMiw3ICsxMTMyLDcgQEAgdm9pZCBQREZQbHVnaW46OnBhaW50
Q29udHJvbEZvckxheWVySW5Db250ZXh0KENBTGF5ZXIgKmxheWVyLCBDR0NvbnRleHRSZWYgY29u
dGUKICAgICBpZiAobGF5ZXIgPT0gbV9zY3JvbGxDb3JuZXJMYXllcikgewogICAgICAgICBJbnRS
ZWN0IHNjcm9sbENvcm5lclJlY3QgPSB0aGlzLT5zY3JvbGxDb3JuZXJSZWN0KCk7CiAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXNjcm9sbENvcm5lclJlY3QueCgpLCAtc2Nyb2xs
Q29ybmVyUmVjdC55KCkpOwotICAgICAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+cGFpbnRT
Y3JvbGxDb3JuZXIobnVsbHB0ciwgZ3JhcGhpY3NDb250ZXh0LCBzY3JvbGxDb3JuZXJSZWN0KTsK
KyAgICAgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkucGFpbnRTY3JvbGxDb3JuZXIobnVsbHB0
ciwgZ3JhcGhpY3NDb250ZXh0LCBzY3JvbGxDb3JuZXJSZWN0KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAK
</data>

          </attachment>
      

    </bug>

</bugzilla>