<?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>212269</bug_id>
          
          <creation_ts>2020-05-22 11:08:16 -0700</creation_ts>
          <short_desc>Make WebPage::ForceRepaint use CompletionHandler instead of VoidCallback</short_desc>
          <delta_ts>2021-01-05 12:39:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>luiz</cc>
    
    <cc>noam</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1655367</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-22 11:08:16 -0700</bug_when>
    <thetext>Make WebPage::ForceRepaint use CompletionHandler instead of VoidCallback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655368</commentid>
    <comment_count>1</comment_count>
      <attachid>400060</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-22 11:09:21 -0700</bug_when>
    <thetext>Created attachment 400060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655801</commentid>
    <comment_count>2</comment_count>
      <attachid>400060</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-05-25 01:19:17 -0700</bug_when>
    <thetext>Comment on attachment 400060
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4270
&gt; +        callAfterNextPresentationUpdate([completionHandler = WTFMove(completionHandler)] (auto) mutable {

We could probably take the background activity here since sendWithAsyncReply should take a background activity anyway.

&gt; Source/WebKit/WebProcess/WebPage/DrawingArea.h:86
&gt; +    virtual bool forceRepaintAsync(CompletionHandler&lt;void()&gt;&amp;) { return false; }

Seems strange to pass a CompletionHandler&lt;void()&gt;&amp;, CompletionHandler&lt;void()&gt;&amp;&amp; os probably more appropriate.
Also we should probably call the completion handler here or make it virtual pure.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3611
&gt; +    if (m_drawingArea-&gt;forceRepaintAsync(completionHandler)) {

This API seems a bit weird. I guess sometimes we move the completionHandler and we return true and sometimes we do not move completionHandler and we return false.
It seem we could move the completionHandler and check whether null afterwards here. forceRepaintAsync would then return void.

Or we could split it in two APIs: bool canForceRepaint() and void forceRepainAsync(CompletionHandler&lt;void()&gt;&amp;&amp;).

Or we could have  m_drawingArea::forceRepaintAsync try to force repaint async and do the fallback itself of forRepaint().
This way, we could write it here as: m_drawingArea-&gt;forceRepaintAsync(WTFMove(completionHandler))
Last approach seems best to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716493</commentid>
    <comment_count>3</comment_count>
      <attachid>400060</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-23 12:02:26 -0800</bug_when>
    <thetext>Comment on attachment 400060
Patch

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

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4270
&gt;&gt; +        callAfterNextPresentationUpdate([completionHandler = WTFMove(completionHandler)] (auto) mutable {
&gt; 
&gt; We could probably take the background activity here since sendWithAsyncReply should take a background activity anyway.

callAfterNextPresentationUpdate takes a background activity, so both are unnecessary now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716503</commentid>
    <comment_count>4</comment_count>
      <attachid>416723</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-23 12:25:14 -0800</bug_when>
    <thetext>Created attachment 416723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716504</commentid>
    <comment_count>5</comment_count>
      <attachid>416724</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-23 12:32:48 -0800</bug_when>
    <thetext>Created attachment 416724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716514</commentid>
    <comment_count>6</comment_count>
      <attachid>416726</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-23 15:22:52 -0800</bug_when>
    <thetext>Created attachment 416726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717435</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-05 12:38:03 -0800</bug_when>
    <thetext>Committed r271171: &lt;https://trac.webkit.org/changeset/271171&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416726.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717437</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-05 12:39:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/72824993&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400060</attachid>
            <date>2020-05-22 11:09:21 -0700</date>
            <delta_ts>2020-12-23 12:25:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212269-20200522110920.patch</filename>
            <type>text/plain</type>
            <size>24953</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjIwNjQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTA1LTIyICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBXZWJQYWdl
OjpGb3JjZVJlcGFpbnQgdXNlIENvbXBsZXRpb25IYW5kbGVyIGluc3RlYWQgb2YgVm9pZENhbGxi
YWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIy
NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXgg
YSBmZXcgdW5zYWZlIHBvaW50ZXIgdXNlcyBhbG9uZyB0aGUgd2F5LgorICAgICAgICBObyBjaGFu
Z2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoK
KyAgICAgICAgKFdLUGFnZUZvcmNlUmVwYWludCk6CisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6Zm9yY2VSZXBhaW50SWZOZWVkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tOgorICAg
ICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGVudGVyRnVsbFNjcmVlbl0pOgor
ICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIF9jb21wbGV0ZWRFeGl0RnVs
bFNjcmVlbl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBkZWFs
bG9jXSk6CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgZmluaXNoZWRF
eGl0RnVsbFNjcmVlbkFuaW1hdGlvbjpdKToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlciBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJSZXBh
aW50XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJh
d2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpmb3JjZVJlcGFpbnRBc3luYyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29y
ZGluYXRlZEdyYXBoaWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJl
ZUhvc3Q6OmxheWVyRmx1c2hUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
SG9zdDo6Zm9yY2VSZXBhaW50QXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0
OjpyZW5kZXJOZXh0RnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
SG9zdDo6Zm9yY2VSZXBhaW50QXN5bmMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50
QXN5bmMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZvcmNlUmVwYWludCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWlu
dEFzeW5jKToKKwogMjAyMC0wNS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlZ3Jlc3Npb24ocjI1NDg1OSkgRE9NIHN0b3JhZ2UgZXZlbnQgZ2V0cyBmaXJl
ZCBhdCB0aGUgZnJhbWUgdGhhdCBjYXVzZWQgdGhlIHN0b3JhZ2UgbW9kaWZpY2F0aW9uCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5j
cHAJKHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0
dXJlQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1NywxMCArNTU3LDEwIEBAIHZv
aWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpmb3JjZVJlcGFpbnQKIAogICAgIGF1dG8gcGFnZUlE
ID0gbV93ZWJQYWdlUHJveHkuaWRlbnRpZmllcigpOwogICAgIEdlc3R1cmVJRCBnZXN0dXJlSUQg
PSBtX2N1cnJlbnRHZXN0dXJlSUQ7Ci0gICAgbV93ZWJQYWdlUHJveHkuZm9yY2VSZXBhaW50KFZv
aWRDYWxsYmFjazo6Y3JlYXRlKFtwYWdlSUQsIGdlc3R1cmVJRF0gKENhbGxiYWNrQmFzZTo6RXJy
b3IgZXJyb3IpIHsKKyAgICBtX3dlYlBhZ2VQcm94eS5mb3JjZVJlcGFpbnQoW3BhZ2VJRCwgZ2Vz
dHVyZUlEXSAoKSB7CiAgICAgICAgIGlmIChhdXRvIGdlc3R1cmVDb250cm9sbGVyID0gY29udHJv
bGxlckZvckdlc3R1cmUocGFnZUlELCBnZXN0dXJlSUQpKQogICAgICAgICAgICAgZ2VzdHVyZUNv
bnRyb2xsZXItPnJlbW92ZVN3aXBlU25hcHNob3QoKTsKLSAgICB9KSk7CisgICAgfSk7CiB9CiAK
IHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjp3aWxsRW5kU3dpcGVHZXN0dXJlKFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0mIHRhcmdldEl0ZW0sIGJvb2wgY2FuY2VsbGVkKQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNjIwMzIpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MjU3LDM4ICs0MjU3LDIwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZG
cmFtZSgKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRXZWJBcmNoaXZlT2ZGcmFtZShm
cmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpm
b3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFn
ZVByb3h5Ojpmb3JjZVJlcGFpbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNr
KQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICAvLyBGSVhNRTog
SWYgdGhlIHBhZ2UgaXMgaW52YWxpZCB3ZSBzaG91bGQgbm90IGNhbGwgdGhlIGNhbGxiYWNrLiBJ
dCdkIGJlIGJldHRlciB0byBqdXN0IHJldHVybiBmYWxzZSBmcm9tIGZvcmNlUmVwYWludC4KLSAg
ICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJ
bnZhbGlkYXRlZCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBGdW5jdGlvbjx2b2lk
KENhbGxiYWNrQmFzZTo6RXJyb3IpPiBkaWRGb3JjZVJlcGFpbnRDYWxsYmFjayA9IFt0aGlzLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSBt
dXRhYmxlIHsKLSAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUp
IHsKLSAgICAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKGVycm9yKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkg
ewotICAgICAgICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6
T3duZXJXYXNJbnZhbGlkYXRlZCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAKLSAgICAgICAgY2FsbEFmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZShbY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICAg
ICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsKLSAgICAgICAgICAg
ICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZShlcnJvcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNr
KCk7Ci0gICAgICAgIH0pOwotICAgIH07CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQor
ICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKIAotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGRpZEZvcmNlUmVwYWludENhbGxiYWNrKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Zm9yY2VSZXBhaW50
Il9zKSk7CiAgICAgbV9kcmF3aW5nQXJlYS0+d2FpdEZvckJhY2tpbmdTdG9yZVVwZGF0ZU9uTmV4
dFBhaW50KCk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9yY2VSZXBhaW50KGNhbGxi
YWNrSUQpKTsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVy
KFtiYWNrZ3JvdW5kQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eSgiV2ViUGFnZVByb3h5Ojpmb3JjZVJlcGFpbnQiX3MpLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICB9KTsK
KyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludCgp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgY2Fs
bEFmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8pIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIHN0YXRpYyBPcHRpb25T
ZXQ8SVBDOjpTZW5kT3B0aW9uPiBwcmludGluZ1NlbmRPcHRpb25zKGJvb2wgaXNQZXJmb3JtaW5n
RE9NUHJpbnRPcGVyYXRpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAkocmV2aXNpb24gMjYyMDMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMjgsNyArMTEyOCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBGdW5jdGlvbjx2b2lk
IChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBydW5KYXZh
U2NyaXB0SW5NYWluRnJhbWUoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgV1RG
OjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChX
ZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+LCBBUEk6OkNvbnRlbnRXb3JsZCYsIEZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgZm9yY2VSZXBhaW50KFJlZlB0cjxW
b2lkQ2FsbGJhY2s+JiYpOworICAgIHZvaWQgZm9yY2VSZXBhaW50KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAKICAgICBmbG9hdCBoZWFkZXJIZWlnaHQoV2ViRnJhbWVQcm94eSYpOwog
ICAgIGZsb2F0IGZvb3RlckhlaWdodChXZWJGcmFtZVByb3h5Jik7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1
NjQsOSArMjU2NCw5IEBAIHZvaWQgV0tQYWdlR2V0Q29udGVudHNBc01IVE1MRGF0YShXS1BhZ2UK
IAogdm9pZCBXS1BhZ2VGb3JjZVJlcGFpbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIHZvaWQqIGNvbnRl
eHQsIFdLUGFnZUZvcmNlUmVwYWludEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChw
YWdlUmVmKS0+Zm9yY2VSZXBhaW50KFZvaWRDYWxsYmFjazo6Y3JlYXRlKFtjb250ZXh0LCBjYWxs
YmFja10oV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGNhbGxi
YWNrKGVycm9yID09IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSA/IG51bGxwdHIg
OiB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5wdHIoKSksIGNvbnRleHQpOwotICAgIH0pKTsK
KyAgICB0b0ltcGwocGFnZVJlZiktPmZvcmNlUmVwYWludChbY29udGV4dCwgY2FsbGJhY2tdKCkg
eworICAgICAgICBjYWxsYmFjayhudWxscHRyLCBjb250ZXh0KTsKKyAgICB9KTsKIH0KIAogV0tf
RVhQT1JUIFdLVVJMUmVmIFdLUGFnZUNvcHlQZW5kaW5nQVBJUmVxdWVzdFVSTChXS1BhZ2VSZWYg
cGFnZVJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
cklPUy5tbQkocmV2aXNpb24gMjYyMDMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNDMzLDcgKzQzMyw2IEBAIC0gKHZvaWQpd2lsbE1vdmVUb1N1cGVydmlldzooVUlW
aWV3ICopbmUKICAgICBSZXRhaW5QdHI8VUlXaW5kb3c+IF93aW5kb3c7CiAgICAgUmV0YWluUHRy
PFVJVmlld0NvbnRyb2xsZXI+IF9yb290Vmlld0NvbnRyb2xsZXI7CiAKLSAgICBSZWZQdHI8V2Vi
S2l0OjpWb2lkQ2FsbGJhY2s+IF9yZXBhaW50Q2FsbGJhY2s7CiAgICAgUmV0YWluUHRyPFVJVmll
d0NvbnRyb2xsZXI+IF92aWV3Q29udHJvbGxlckZvclByZXNlbnRhdGlvbjsKICAgICBSZXRhaW5Q
dHI8V0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXI+IF9mdWxsc2NyZWVuVmlld0NvbnRyb2xsZXI7
CiAgICAgUmV0YWluUHRyPFVJU3dpcGVHZXN0dXJlUmVjb2duaXplcj4gX3N0YXJ0RGlzbWlzc0dl
c3R1cmVSZWNvZ25pemVyOwpAQCAtNTk2LDkgKzU5NSw3IEBAIC0gKHZvaWQpZW50ZXJGdWxsU2Ny
ZWVuCiAgICAgICAgIGFyZ3VtZW50cy51c2VyWm9vbSA9IDE7CiAgICAgICAgIHBhZ2UtPnNldE92
ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMoYXJndW1lbnRzKTsKIAotICAgICAgICBfcmVwYWludENh
bGxiYWNrID0gV2ViS2l0OjpWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbcHJvdGVjdGVkU2VsZiA9IHJl
dGFpblB0cihzZWxmKSwgc2VsZl0oV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7Ci0gICAg
ICAgICAgICBfcmVwYWludENhbGxiYWNrID0gbnVsbHB0cjsKLQorICAgICAgICBwYWdlLT5mb3Jj
ZVJlcGFpbnQoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIHNlbGZdIHsKICAgICAg
ICAgICAgIGlmIChfZXhpdFJlcXVlc3RlZCkgewogICAgICAgICAgICAgICAgIF9leGl0UmVxdWVz
dGVkID0gTk87CiAgICAgICAgICAgICAgICAgW3NlbGYgX2V4aXRGdWxsc2NyZWVuSW1tZWRpYXRl
bHldOwpAQCAtNjEzLDcgKzYxMCw2IEBAIC0gKHZvaWQpZW50ZXJGdWxsU2NyZWVuCiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIFtzZWxmIF9leGl0RnVsbHNj
cmVlbkltbWVkaWF0ZWx5XTsKICAgICAgICAgfSk7Ci0gICAgICAgIHBhZ2UtPmZvcmNlUmVwYWlu
dChfcmVwYWludENhbGxiYWNrLmNvcHlSZWYoKSk7CiAKICAgICAgICAgW0NBVHJhbnNhY3Rpb24g
Y29tbWl0XTsKICAgICB9XTsKQEAgLTc2NSwxMyArNzYxLDcgQEAgLSAodm9pZClfY29tcGxldGVk
RXhpdEZ1bGxTY3JlZW4KICAgICBbX3dpbmRvdyBzZXRIaWRkZW46WUVTXTsKICAgICBfd2luZG93
ID0gbmlsOwogCi0gICAgaWYgKF9yZXBhaW50Q2FsbGJhY2spIHsKLSAgICAgICAgX3JlcGFpbnRD
YWxsYmFjay0+aW52YWxpZGF0ZShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2Fz
SW52YWxpZGF0ZWQpOwotICAgICAgICBBU1NFUlQoIV9yZXBhaW50Q2FsbGJhY2spOwotICAgIH0K
LQotICAgIF9yZXBhaW50Q2FsbGJhY2sgPSBXZWJLaXQ6OlZvaWRDYWxsYmFjazo6Y3JlYXRlKFtw
cm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBzZWxmXShXZWJLaXQ6OkNhbGxiYWNrQmFz
ZTo6RXJyb3IpIHsKLSAgICAgICAgX3JlcGFpbnRDYWxsYmFjayA9IG51bGxwdHI7CisgICAgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiBjb21wbGV0aW9uSGFuZGxlcihbcHJvdGVjdGVkU2VsZiA9
IHJldGFpblB0cihzZWxmKSwgc2VsZl0gewogICAgICAgICBfd2ViVmlld1BsYWNlaG9sZGVyLmdl
dCgpLnBhcmVudCA9IG5pbDsKICAgICAgICAgW193ZWJWaWV3UGxhY2Vob2xkZXIgcmVtb3ZlRnJv
bVN1cGVydmlld107CiAKQEAgLTc4Miw5ICs3NzIsOSBAQCAtICh2b2lkKV9jb21wbGV0ZWRFeGl0
RnVsbFNjcmVlbgogICAgIH0pOwogCiAgICAgaWYgKGF1dG8gcGFnZSA9IFtzZWxmLl93ZWJWaWV3
IF9wYWdlXSkKLSAgICAgICAgcGFnZS0+Zm9yY2VSZXBhaW50KF9yZXBhaW50Q2FsbGJhY2suY29w
eVJlZigpKTsKKyAgICAgICAgcGFnZS0+Zm9yY2VSZXBhaW50KFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICBlbHNlCi0gICAgICAgIF9yZXBhaW50Q2FsbGJhY2stPnBlcmZvcm1DYWxs
YmFjaygpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogCiAgICAgW19mdWxsc2NyZWVu
Vmlld0NvbnRyb2xsZXIgc2V0UHJlZmVyc1N0YXR1c0JhckhpZGRlbjpZRVNdOwogICAgIF9mdWxs
c2NyZWVuVmlld0NvbnRyb2xsZXIgPSBuaWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgJKHJl
dmlzaW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDYgQEAgQGlu
dGVyZmFjZSBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIAogICAgIEZ1bGxTY3JlZW5TdGF0
ZSBfZnVsbFNjcmVlblN0YXRlOwogCiAgICAgZG91YmxlIF9zYXZlZFNjYWxlOwotICAgIFJlZlB0
cjxXZWJLaXQ6OlZvaWRDYWxsYmFjaz4gX3JlcGFpbnRDYWxsYmFjazsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViS2l0OjpXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVu
TW9kZWxDbGllbnQ+IF92aWRlb0Z1bGxzY3JlZW5DbGllbnQ7CiAgICAgZmxvYXQgX3NhdmVkVG9w
Q29udGVudEluc2V0OwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0JKHJldmlzaW9uIDI2
MjAzMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsMTMgKzE2NSw2IEBAIC0gKHZvaWQp
ZGVhbGxvYwogICAgIAogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0g
cmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CiAKLSAgICBpZiAoX3JlcGFpbnRDYWxsYmFjaykgewotICAg
ICAgICBfcmVwYWludENhbGxiYWNrLT5pbnZhbGlkYXRlKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7Ci0gICAgICAgIC8vIGludmFsaWRhdGUoKSBjYWxs
cyBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJSZXBhaW50LCB3aGlj
aAotICAgICAgICAvLyBjbGVhcnMgX3JlcGFpbnRDYWxsYmFjay4KLSAgICAgICAgQVNTRVJUKCFf
cmVwYWludENhbGxiYWNrKTsKLSAgICB9Ci0KICAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LT5z
ZXRQYXJlbnQobmlsKTsKICAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LT5zZXRJbnRlcmZhY2Uo
bnVsbHB0cik7CiAKQEAgLTU0MSwxNiArNTM0LDkgQEAgLSAodm9pZClmaW5pc2hlZEV4aXRGdWxs
U2NyZWVuQW5pbWF0aW9uOgogICAgIFtzZWxmIF9tYW5hZ2VyXS0+cmVzdG9yZVNjcm9sbFBvc2l0
aW9uKCk7CiAgICAgX3BhZ2UtPnNldFRvcENvbnRlbnRJbnNldChfc2F2ZWRUb3BDb250ZW50SW5z
ZXQpOwogCi0gICAgaWYgKF9yZXBhaW50Q2FsbGJhY2spIHsKLSAgICAgICAgX3JlcGFpbnRDYWxs
YmFjay0+aW52YWxpZGF0ZShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52
YWxpZGF0ZWQpOwotICAgICAgICAvLyBpbnZhbGlkYXRlKCkgY2FsbHMgY29tcGxldGVGaW5pc2hF
eGl0RnVsbFNjcmVlbkFuaW1hdGlvbkFmdGVyUmVwYWludCwgd2hpY2gKLSAgICAgICAgLy8gY2xl
YXJzIF9yZXBhaW50Q2FsbGJhY2suCi0gICAgICAgIEFTU0VSVCghX3JlcGFpbnRDYWxsYmFjayk7
Ci0gICAgfQotICAgIF9yZXBhaW50Q2FsbGJhY2sgPSBXZWJLaXQ6OlZvaWRDYWxsYmFjazo6Y3Jl
YXRlKFtzZWxmXShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKLSAgICAgICAgW3NlbGYg
Y29tcGxldGVGaW5pc2hFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbkFmdGVyUmVwYWludF07CisgICAg
X3BhZ2UtPmZvcmNlUmVwYWludChbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyPihzZWxmKV0geworICAgICAgICBbd2Vha1NlbGYgY29tcGxldGVGaW5p
c2hFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbkFmdGVyUmVwYWludF07CiAgICAgfSk7Ci0gICAgX3Bh
Z2UtPmZvcmNlUmVwYWludChfcmVwYWludENhbGxiYWNrLmNvcHlSZWYoKSk7CiAKICAgICBbQ0FU
cmFuc2FjdGlvbiBjb21taXRdOwogICAgIFtDQVRyYW5zYWN0aW9uIGZsdXNoXTsKQEAgLTU3Miw3
ICs1NTgsNiBAQCAtICh2b2lkKWNvbXBsZXRlRmluaXNoRXhpdEZ1bGxTY3JlZW5BbmltCiAgICAg
W1tfd2ViVmlldyB3aW5kb3ddIG1ha2VLZXlBbmRPcmRlckZyb250OnNlbGZdOwogICAgIF93ZWJW
aWV3UGxhY2Vob2xkZXIgPSBuaWw7CiAgICAgCi0gICAgX3JlcGFpbnRDYWxsYmFjayA9IG51bGxw
dHI7CiAgICAgX3BhZ2UtPnNldFN1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMoZmFsc2UpOwogICAg
IF9wYWdlLT5zZXROZWVkc0RPTVdpbmRvd1Jlc2l6ZUV2ZW50KCk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAkocmV2aXNpb24gMjYy
MDMyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAko
d29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTog
VGhlc2Ugc2hvdWxkIGJlIHB1cmUgdmlydHVhbC4KICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VSZXBh
aW50KCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBsYXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIApJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlz
aW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjA2LDEzICszNjA2LDE1IEBAIHZvaWQgV2ViUGFnZTo6
Zm9yY2VSZXBhaW50V2l0aG91dENhbGxiYWMKICAgICBtX2RyYXdpbmdBcmVhLT5mb3JjZVJlcGFp
bnQoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpmb3JjZVJlcGFpbnQoQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQordm9pZCBXZWJQYWdlOjpmb3JjZVJlcGFpbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChtX2RyYXdpbmdBcmVhLT5mb3JjZVJl
cGFpbnRBc3luYyhjYWxsYmFja0lEKSkKKyAgICBpZiAobV9kcmF3aW5nQXJlYS0+Zm9yY2VSZXBh
aW50QXN5bmMoY29tcGxldGlvbkhhbmRsZXIpKSB7CisgICAgICAgIEFTU0VSVCghY29tcGxldGlv
bkhhbmRsZXIpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgZm9yY2VSZXBhaW50V2l0
aG91dENhbGxiYWNrKCk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2Fs
bGJhY2soY2FsbGJhY2tJRCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQg
V2ViUGFnZTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYg
c3RvcmUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CShyZXZpc2lvbiAyNjIwMzIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MjIsNyArMTUyMiw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENh
bGxiYWNrSUQpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNvcmU6OlJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRlbnRXb3JsZElkZW50aWZpZXIsIENhbGxiYWNr
SUQpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFdlYkNvcmU6
OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4sIGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+JiB3
b3JsZERhdGEsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgZm9yY2VSZXBhaW50KENhbGxiYWNrSUQp
OworICAgIHZvaWQgZm9yY2VSZXBhaW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3QsIFdlYkNv
cmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgQ2FsbGJhY2tJRCk7CiAK
ICAgICB2b2lkIHByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjYyMDMyKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjE5
LDcgKzIxOSw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW4KICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHNlbmRXaXRoQXN5bmNSZXBseSBpbnN0ZWFkIG9m
IGNhbGxiYWNrSURzCiAgICAgUnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHN0cnVj
dCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBPcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6cGFpcjxXZWJLaXQ6OkNvbnRl
bnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4gd29ybGQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogCi0gICAgRm9yY2VSZXBhaW50KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIEZvcmNlUmVwYWludCgpIC0+ICgpIEFzeW5jCiAgICAgU2VsZWN0QWxsKCkKICAgICBT
Y2hlZHVsZUZ1bGxFZGl0b3JTdGF0ZVVwZGF0ZSgpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRl
ZEdyYXBoaWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5j
cHAJKHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjEwLDEyICsyMTAsMTIgQEAgdm9pZCBEcmF3aW5nQXJlYUNvb3Jk
aW5hdGVkR3JhcGhpY3M6OmZvcgogICAgICAgICB9CiB9CiAKLWJvb2wgRHJhd2luZ0FyZWFDb29y
ZGluYXRlZEdyYXBoaWNzOjpmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEIGNhbGxiYWNrSUQp
Citib29sIERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6Zm9yY2VSZXBhaW50QXN5bmMo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KG1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
cmV0dXJuIG1fbGF5ZXJUcmVlSG9zdCAmJiBtX2xheWVyVHJlZUhvc3QtPmZvcmNlUmVwYWludEFz
eW5jKGNhbGxiYWNrSUQpOworICAgIHJldHVybiBtX2xheWVyVHJlZUhvc3QgJiYgbV9sYXllclRy
ZWVIb3N0LT5mb3JjZVJlcGFpbnRBc3luYyhjb21wbGV0aW9uSGFuZGxlcik7CiB9CiAKIHZvaWQg
RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVu
KGJvb2wgaXNGcm96ZW4pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmgJKHJldmlzaW9uIDI2MjAzMikK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcg
KzUxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzY3JvbGwoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVs
dGEpIG92ZXJyaWRlOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KCkgb3ZlcnJpZGU7Ci0gICAgYm9v
bCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSBvdmVycmlkZTsKKyAgICBib29sIGZvcmNl
UmVwYWludEFzeW5jKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sKSBvdmVycmlkZTsKICAgICBib29s
IGxheWVyVHJlZVN0YXRlSXNGcm96ZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xheWVy
VHJlZVN0YXRlSXNGcm96ZW47IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVIb3N0LmNwcAkocmV2aXNpb24gMjYyMDMyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdDo6bGF5ZXJGbHVz
aFRpbWVyRmlyZWQKIAogICAgIC8vIElmIGEgZm9yY2UtcmVwYWludCBjYWxsYmFjayB3YXMgcmVn
aXN0ZXJlZCwgd2Ugc2hvdWxkIGZvcmNlIGEgJ2ZyYW1lIHN5bmMnIHRoYXQKICAgICAvLyB3aWxs
IGd1YXJhbnRlZSB1cyBhIGNhbGwgdG8gcmVuZGVyTmV4dEZyYW1lKCkgb25jZSB0aGUgdXBkYXRl
IGlzIGNvbXBsZXRlLgotICAgIGlmIChtX2ZvcmNlUmVwYWludEFzeW5jLmNhbGxiYWNrSUQpCisg
ICAgaWYgKG1fZm9yY2VSZXBhaW50QXN5bmMuY2FsbGJhY2spCiAgICAgICAgIG1fY29vcmRpbmF0
b3IuZm9yY2VGcmFtZVN5bmMoKTsKIAogICAgIGJvb2wgZGlkU3luYyA9IG1fY29vcmRpbmF0b3Iu
Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7CkBAIC0xOTAsMTQgKzE5MCwxNCBAQCB2b2lkIExh
eWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludCgpCiAgICAgbV9jb21wb3NpdG9yLT5mb3JjZVJlcGFp
bnQoKTsKIH0KIAotYm9vbCBMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCitib29sIExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludEFzeW5jKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mIGNhbGxiYWNrKQogewogICAgIHNjaGVkdWxlTGF5ZXJG
bHVzaCgpOwogCiAgICAgLy8gV2Ugd2FudCBhIGNsZWFuIHJlcGFpbnQsIG1lYW5pbmcgdGhhdCBp
ZiB3ZSdyZSBjdXJyZW50bHkgd2FpdGluZyBmb3IgdGhlIHJlbmRlcmVyCiAgICAgLy8gdG8gZmlu
aXNoIGFuIHVwZGF0ZSwgd2UnbGwgaGF2ZSB0byBzY2hlZHVsZSBhbm90aGVyIGZsdXNoIHdoZW4g
aXQncyBkb25lLgotICAgIEFTU0VSVCghbV9mb3JjZVJlcGFpbnRBc3luYy5jYWxsYmFja0lEKTsK
LSAgICBtX2ZvcmNlUmVwYWludEFzeW5jLmNhbGxiYWNrSUQgPSBPcHRpb25hbENhbGxiYWNrSUQo
Y2FsbGJhY2tJRCk7CisgICAgQVNTRVJUKCFtX2ZvcmNlUmVwYWludEFzeW5jLmNhbGxiYWNrKTsK
KyAgICBtX2ZvcmNlUmVwYWludEFzeW5jLmNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAg
ICAgbV9mb3JjZVJlcGFpbnRBc3luYy5uZWVkc0ZyZXNoRmx1c2ggPSBtX3NjaGVkdWxlZFdoaWxl
V2FpdGluZ0ZvclJlbmRlcmVyOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDA1LDcgKzQwNSw3
IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdDo6cmVuZGVyTmV4dEZyYW1lKGJvb2wKICAgICBib29sIHNj
aGVkdWxlZFdoaWxlV2FpdGluZ0ZvclJlbmRlcmVyID0gc3RkOjpleGNoYW5nZShtX3NjaGVkdWxl
ZFdoaWxlV2FpdGluZ0ZvclJlbmRlcmVyLCBmYWxzZSk7CiAgICAgbV9jb29yZGluYXRvci5yZW5k
ZXJOZXh0RnJhbWUoKTsKIAotICAgIGlmIChtX2ZvcmNlUmVwYWludEFzeW5jLmNhbGxiYWNrSUQp
IHsKKyAgICBpZiAobV9mb3JjZVJlcGFpbnRBc3luYy5jYWxsYmFjaykgewogICAgICAgICAvLyBJ
ZiB0aGUgYXN5bmNocm9ub3VzIGZvcmNlLXJlcGFpbnQgbmVlZHMgYSBzZXBhcmF0ZSBmcmVzaCBm
bHVzaCwgaXQgd2FzIGR1ZSB0bwogICAgICAgICAvLyB0aGUgZm9yY2UtcmVwYWludCByZXF1ZXN0
IGJlaW5nIHJlZ2lzdGVyZWQgd2hpbGUgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0IHdhcwogICAg
ICAgICAvLyB3YWl0aW5nIGZvciB0aGUgcmVuZGVyZXIgdG8gZmluaXNoIGFuIHVwZGF0ZS4KQEAg
LTQxNCwxMCArNDE0LDggQEAgdm9pZCBMYXllclRyZWVIb3N0OjpyZW5kZXJOZXh0RnJhbWUoYm9v
bAogICAgICAgICAvLyBFeGVjdXRlIHRoZSBjYWxsYmFjayBpZiBhbm90aGVyIGxheWVyIGZsdXNo
IGFuZCB0aGUgc3Vic2VxdWVudCBzdGF0ZSB1cGRhdGUKICAgICAgICAgLy8gYXJlbid0IG5lZWRl
ZC4gSWYgdGhleSBhcmUsIHRoZSBjYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkIHdoZW4gdGhpcyBm
dW5jdGlvbgogICAgICAgICAvLyBpcyBjYWxsZWQgYWZ0ZXIgdGhlIG5leHQgdXBkYXRlLgotICAg
ICAgICBpZiAoIW1fZm9yY2VSZXBhaW50QXN5bmMubmVlZHNGcmVzaEZsdXNoKSB7Ci0gICAgICAg
ICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2so
bV9mb3JjZVJlcGFpbnRBc3luYy5jYWxsYmFja0lELmNhbGxiYWNrSUQoKSkpOwotICAgICAgICAg
ICAgbV9mb3JjZVJlcGFpbnRBc3luYy5jYWxsYmFja0lEID0gT3B0aW9uYWxDYWxsYmFja0lEKCk7
Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFtX2ZvcmNlUmVwYWludEFzeW5jLm5lZWRzRnJlc2hG
bHVzaCkKKyAgICAgICAgICAgIG1fZm9yY2VSZXBhaW50QXN5bmMuY2FsbGJhY2soKTsKICAgICAg
ICAgbV9mb3JjZVJlcGFpbnRBc3luYy5uZWVkc0ZyZXNoRmx1c2ggPSBmYWxzZTsKICAgICB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlSG9zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oCShyZXZpc2lvbiAy
NjIwMzIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZUhvc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJD
b3JlOjpJbnRSZWN0Jik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoKTsKLSAgICBib29sIGZvcmNl
UmVwYWludEFzeW5jKENhbGxiYWNrSUQpOworICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYpOwogICAgIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKTsKIAogICAgIHZvaWQgcGF1c2VSZW5kZXJpbmcoKTsK
QEAgLTE5MCw3ICsxOTAsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxUaHJlYWRlZENvbXBvc2l0
b3I+IG1fY29tcG9zaXRvcjsKICAgICBTaW1wbGVWaWV3cG9ydENvbnRyb2xsZXIgbV92aWV3cG9y
dENvbnRyb2xsZXI7CiAgICAgc3RydWN0IHsKLSAgICAgICAgT3B0aW9uYWxDYWxsYmFja0lEIGNh
bGxiYWNrSUQ7CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gY2FsbGJhY2s7CiAg
ICAgICAgIGJvb2wgbmVlZHNGcmVzaEZsdXNoIHsgZmFsc2UgfTsKICAgICB9IG1fZm9yY2VSZXBh
aW50QXN5bmM7CiAgICAgUnVuTG9vcDo6VGltZXI8TGF5ZXJUcmVlSG9zdD4gbV9sYXllckZsdXNo
VGltZXI7CkBAIC0yMTAsNyArMjEwLDcgQEAgaW5saW5lIHZvaWQgTGF5ZXJUcmVlSG9zdDo6c2V0
Um9vdENvbXBvcwogaW5saW5lIHZvaWQgTGF5ZXJUcmVlSG9zdDo6c2V0Vmlld092ZXJsYXlSb290
TGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIHsgfQogaW5saW5lIHZvaWQgTGF5ZXJUcmVl
SG9zdDo6c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSB7IH0KIGlubGluZSB2b2lkIExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludCgpIHsgfQotaW5s
aW5lIGJvb2wgTGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgeyBy
ZXR1cm4gZmFsc2U7IH0KK2lubGluZSBib29sIExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludEFz
eW5jKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mKSB7IHJldHVybiBmYWxzZTsgfQogaW5saW5l
IHZvaWQgTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JikgeyB9CiBpbmxpbmUgdm9pZCBMYXllclRyZWVIb3N0OjpwYXVzZVJlbmRlcmluZygpIHsgfQog
aW5saW5lIHZvaWQgTGF5ZXJUcmVlSG9zdDo6cmVzdW1lUmVuZGVyaW5nKCkgeyB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAko
cmV2aXNpb24gMjYyMDMyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGxheWVyVHJlZVN0YXRlSXNGcm96
ZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzUmVuZGVyaW5nU3VzcGVuZGVkOyB9CiAK
ICAgICB2b2lkIGZvcmNlUmVwYWludCgpIG92ZXJyaWRlOwotICAgIGJvb2wgZm9yY2VSZXBhaW50
QXN5bmMoQ2FsbGJhY2tJRCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGZv
cmNlUmVwYWludEFzeW5jKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mKSBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBzZXRWaWV3RXhwb3NlZFJlY3QoT3B0aW9uYWw8V2Vi
Q29yZTo6RmxvYXRSZWN0Pikgb3ZlcnJpZGU7CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRS
ZWN0PiB2aWV3RXhwb3NlZFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3ZpZXdFeHBv
c2VkUmVjdDsgfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgJ
KHJldmlzaW9uIDI2MjAzMikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3
ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEpIG92ZXJy
aWRlIHsgfQogCiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoKSBvdmVycmlkZTsKLSAgICBib29sIGZv
cmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQpIG92ZXJyaWRlOworICAgIGJvb2wgZm9yY2VSZXBh
aW50QXN5bmMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
c2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sKSBvdmVycmlkZTsKICAgICBib29sIGxheWVy
VHJlZVN0YXRlSXNGcm96ZW4oKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFJvb3RDb21w
b3NpdGluZ0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0JKHJldmlzaW9uIDI2MjAzMikK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTcyLDE0ICsxNzIsMTYgQEAgdm9p
ZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Zm9yYwogICAgIFtDQVRyYW5zYWN0aW9u
IHN5bmNocm9uaXplXTsKIH0KIAotYm9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
Zm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQorYm9vbCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKG1fbGF5ZXJUcmVlU3RhdGVJ
c0Zyb3plbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZGlzcGF0Y2hBZnRlckVuc3Vy
aW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKFt0aGlzLCBjYWxsYmFja0lEXSB7CisgICAgZGlzcGF0
Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKFt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgbV93ZWJQYWdlLmRyYXdpbmdB
cmVhKCktPmZvcmNlUmVwYWludCgpOwotICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416723</attachid>
            <date>2020-12-23 12:25:14 -0800</date>
            <delta_ts>2020-12-23 12:34:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212269-20201223122514.patch</filename>
            <type>text/plain</type>
            <size>27585</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM0YzY2Y2U2N2U1ODA5YThk
NjNmMjdjYTBiZWI1MDk1ZGVhZDJkNWYuLmM0NWE4ZjNjOTkyMDI0MTM0ZjU3MGMwMWZhYTkzYjVi
ZGNkZGZjNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjAtMTItMjMgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIFdlYlBh
Z2U6OkZvcmNlUmVwYWludCB1c2UgQ29tcGxldGlvbkhhbmRsZXIgaW5zdGVhZCBvZiBWb2lkQ2Fs
bGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MjI2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eCBhIGZldyB1bnNhZmUgcG9pbnRlciB1c2VzIGFsb25nIHRoZSB3YXkuCisgICAgICAgIE5vIGNo
YW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
OgorICAgICAgICAoV0tQYWdlRm9yY2VSZXBhaW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVmll
d0dlc3R1cmVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250
cm9sbGVyOjpmb3JjZVJlcGFpbnRJZk5lZWRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zm9yY2VSZXBhaW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW06Cisg
ICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgZW50ZXJGdWxsU2NyZWVuXSk6
CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgX2NvbXBsZXRlZEV4aXRG
dWxsU2NyZWVuXSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGRl
YWxsb2NdKToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBmaW5pc2hl
ZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uOl0pOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyIGNvbXBsZXRlRmluaXNoRXhpdEZ1bGxTY3JlZW5BbmltYXRpb25BZnRlclJl
cGFpbnRdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmZvcmNlUmVwYWludEFzeW5jKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNv
b3JkaW5hdGVkR3JhcGhpY3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJU
cmVlSG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVIb3N0Ojpmb3JjZVJlcGFpbnRBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhv
c3Q6OnJlbmRlck5leHRGcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVIb3N0Ojpmb3JjZVJlcGFpbnRBc3luYyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpmb3JjZVJlcGFp
bnRBc3luYyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Zm9yY2VSZXBhaW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgor
ICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Zm9yY2VSZXBh
aW50QXN5bmMpOgorCiAyMDIwLTEyLTIyICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlA
YXBwbGUuY29tPgogCiAgICAgICAgIENhbm5vdCBzZWUgJ0FkZCB0byBteSBzdGF0aW9ucycgYnV0
dG9uIGluIEJCQyBXb3JsZCBzZXJ2aWNlIFJhZGlvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcAppbmRleCAyMjRkYzE4MTE1NDFhMmQyMTJmNDRlYjg3NDVhYmIyMWM3YTEx
NTQwLi4yYzFhMWNmNTM5NWM5MThhMGZiN2I3MzNkNTJjNjMzNGMxOGZiZWJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI1NzMsOSArMjU3Myw5IEBAIHZv
aWQgV0tQYWdlR2V0Q29udGVudHNBc01IVE1MRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCog
Y29udGV4dCwgV0tQYWdlR2V0Q29uCiAKIHZvaWQgV0tQYWdlRm9yY2VSZXBhaW50KFdLUGFnZVJl
ZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VGb3JjZVJlcGFpbnRGdW5jdGlvbiBjYWxs
YmFjaykKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPmZvcmNlUmVwYWludChWb2lkQ2FsbGJhY2s6
OmNyZWF0ZShbY29udGV4dCwgY2FsbGJhY2tdKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgewotICAgICAgICBjYWxsYmFjayhlcnJvciA9PSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3I6Ok5vbmUgPyBudWxscHRyIDogdG9BUEkoQVBJOjpFcnJvcjo6Y3JlYXRlKCkucHRyKCkp
LCBjb250ZXh0KTsKLSAgICB9KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5mb3JjZVJlcGFpbnQo
W2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKKyAgICAgICAgY2FsbGJhY2sobnVsbHB0ciwgY29udGV4
dCk7CisgICAgfSk7CiB9CiAKIFdLX0VYUE9SVCBXS1VSTFJlZiBXS1BhZ2VDb3B5UGVuZGluZ0FQ
SVJlcXVlc3RVUkwoV0tQYWdlUmVmIHBhZ2VSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAppbmRleCBmOWVjMzRlMWUyN2RlYzMwYzZk
MWIzNTI1YTNmMGFkNzg2YjA4ZDk1Li5hN2U2ZjBkMTkwMzFlMjA4MGZmZDNmN2Y0ODk5NzVlMWU4
Y2MxZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5jcHAKQEAgLTU2MCwxMCArNTYwLDEwIEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9s
bGVyOjpmb3JjZVJlcGFpbnRJZk5lZWRlZCgpCiAKICAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFn
ZVByb3h5LmlkZW50aWZpZXIoKTsKICAgICBHZXN0dXJlSUQgZ2VzdHVyZUlEID0gbV9jdXJyZW50
R2VzdHVyZUlEOwotICAgIG1fd2ViUGFnZVByb3h5LmZvcmNlUmVwYWludChWb2lkQ2FsbGJhY2s6
OmNyZWF0ZShbcGFnZUlELCBnZXN0dXJlSURdIChDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
CisgICAgbV93ZWJQYWdlUHJveHkuZm9yY2VSZXBhaW50KFtwYWdlSUQsIGdlc3R1cmVJRF0gKCkg
ewogICAgICAgICBpZiAoYXV0byBnZXN0dXJlQ29udHJvbGxlciA9IGNvbnRyb2xsZXJGb3JHZXN0
dXJlKHBhZ2VJRCwgZ2VzdHVyZUlEKSkKICAgICAgICAgICAgIGdlc3R1cmVDb250cm9sbGVyLT5y
ZW1vdmVTd2lwZVNuYXBzaG90KCk7Ci0gICAgfSkpOworICAgIH0pOwogfQogCiB2b2lkIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6d2lsbEVuZFN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtJiB0YXJnZXRJdGVtLCBib29sIGNhbmNlbGxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IDU3MTZkNjdkNzAwZTJkMWE5N2IzMDRhMjk0OWFhYmNhMjQz
NThkNWMuLmM4MjIzOTdmZDRlYjFlMWEyMGM5NGY1NWRjM2UyZWFmOTc5YzRmMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDE5OSwzOCArNDE5OSwxOCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSog
ZnJhbWUsIEZ1bmN0aW9uPHZvaWQgKEFQSQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dFdlYkFyY2hpdmVPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNh
bGxiYWNrKQordm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgcGFnZSBpcyBpbnZhbGlkIHdlIHNob3VsZCBub3Qg
Y2FsbCB0aGUgY2FsbGJhY2suIEl0J2QgYmUgYmV0dGVyIHRvIGp1c3QgcmV0dXJuIGZhbHNlIGZy
b20gZm9yY2VSZXBhaW50LgotICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZShDYWxsYmFja0Jh
c2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGRpZEZvcmNlUmVwYWlu
dENhbGxiYWNrID0gW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhbGxiYWNr
QmFzZTo6RXJyb3IgZXJyb3IpIG11dGFibGUgewotICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6Tm9uZSkgewotICAgICAgICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUo
ZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKIAotICAgICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRl
KENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgCi0gICAgICAgIGNhbGxBZnRlck5leHRQcmVzZW50YXRp
b25VcGRhdGUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhbGxiYWNrQmFzZTo6RXJy
b3IgZXJyb3IpIHsKLSAgICAgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9y
OjpOb25lKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUoZXJyb3IpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICBtX2RyYXdpbmdBcmVh
LT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKIAotICAgICAgICAgICAg
Y2FsbGJhY2stPnBlcmZvcm1DYWxsYmFjaygpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUGFnZTo6Rm9yY2VSZXBhaW50KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgewor
ICAgICAgICBjYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlKFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSAoYXV0bykgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFjaygpOwog
ICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojpmb3JjZVJlcGFpbnQiX3MpKTsK
LSAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQo
KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGb3JjZVJlcGFpbnQoY2FsbGJhY2tJRCkp
OworICAgIH0pOwogfQogCiBzdGF0aWMgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gcHJpbnRp
bmdTZW5kT3B0aW9ucyhib29sIGlzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwZGY2MTZiNzZmYjc1MDMzZWYyMDE3
OWZlNWIyOTZmMjgzNTVlM2UxLi41N2MxNTAxY2YwMzE2ZGFlNGY2NTg2ZjJlZDM0NGE5ZDJiZTMx
NDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTE1NCw3ICsx
MTU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQ
cm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXZWJDb3JlOjpSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFJlZlB0cjxB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiYp
PiYmKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJDb3Jl
OjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+LCBBUEk6OkNvbnRlbnRXb3JsZCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscz4mJik+JiYpOwotICAgIHZvaWQgZm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJh
Y2s+JiYpOworICAgIHZvaWQgZm9yY2VSZXBhaW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAKICAgICBmbG9hdCBoZWFkZXJIZWlnaHQoV2ViRnJhbWVQcm94eSYpOwogICAgIGZsb2F0
IGZvb3RlckhlaWdodChXZWJGcmFtZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlcklPUy5tbQppbmRleCAyZDlmM2M2MGEzMjY1YTBjYzEzNGI3OWM1OGQy
ZDBmZTQyNDFiNzAwLi5hOWFjNmQxYTQ5ZjdjN2EwZmI1NDBhOWQ4ZjkwNWI1ODk0NTg3ZWU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KQEAgLTQ2
MCw3ICs0NjAsNiBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxVSVdpbmRvdz4gX3dpbmRvdzsK
ICAgICBSZXRhaW5QdHI8VUlWaWV3Q29udHJvbGxlcj4gX3Jvb3RWaWV3Q29udHJvbGxlcjsKIAot
ICAgIFJlZlB0cjxXZWJLaXQ6OlZvaWRDYWxsYmFjaz4gX3JlcGFpbnRDYWxsYmFjazsKICAgICBS
ZXRhaW5QdHI8VUlWaWV3Q29udHJvbGxlcj4gX3ZpZXdDb250cm9sbGVyRm9yUHJlc2VudGF0aW9u
OwogICAgIFJldGFpblB0cjxXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlcj4gX2Z1bGxzY3JlZW5W
aWV3Q29udHJvbGxlcjsKICAgICBSZXRhaW5QdHI8VUlTd2lwZUdlc3R1cmVSZWNvZ25pemVyPiBf
c3RhcnREaXNtaXNzR2VzdHVyZVJlY29nbml6ZXI7CkBAIC02MjQsOSArNjIzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgYXJndW1lbnRzLnVzZXJab29tID0gMTsKICAgICAgICAgcGFnZS0+c2V0T3Zl
cnJpZGVWaWV3cG9ydEFyZ3VtZW50cyhhcmd1bWVudHMpOwogCi0gICAgICAgIF9yZXBhaW50Q2Fs
bGJhY2sgPSBXZWJLaXQ6OlZvaWRDYWxsYmFjazo6Y3JlYXRlKFtwcm90ZWN0ZWRTZWxmID0gcmV0
YWluUHRyKHNlbGYpLCBzZWxmXShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKLSAgICAg
ICAgICAgIF9yZXBhaW50Q2FsbGJhY2sgPSBudWxscHRyOwotCisgICAgICAgIHBhZ2UtPmZvcmNl
UmVwYWludChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgc2VsZl0gewogICAgICAg
ICAgICAgaWYgKF9leGl0UmVxdWVzdGVkKSB7CiAgICAgICAgICAgICAgICAgX2V4aXRSZXF1ZXN0
ZWQgPSBOTzsKICAgICAgICAgICAgICAgICBbc2VsZiBfZXhpdEZ1bGxzY3JlZW5JbW1lZGlhdGVs
eV07CkBAIC02NDEsNyArNjM4LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICAgICAgW3NlbGYgX2V4aXRGdWxsc2NyZWVuSW1tZWRpYXRlbHld
OwogICAgICAgICB9KTsKLSAgICAgICAgcGFnZS0+Zm9yY2VSZXBhaW50KF9yZXBhaW50Q2FsbGJh
Y2suY29weVJlZigpKTsKIAogICAgICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogICAgIH1d
OwpAQCAtODMzLDEzICs4MjksNyBAQCBwcml2YXRlOgogICAgIFtfd2luZG93IHNldEhpZGRlbjpZ
RVNdOwogICAgIF93aW5kb3cgPSBuaWw7CiAKLSAgICBpZiAoX3JlcGFpbnRDYWxsYmFjaykgewot
ICAgICAgICBfcmVwYWludENhbGxiYWNrLT5pbnZhbGlkYXRlKFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7Ci0gICAgICAgIEFTU0VSVCghX3JlcGFpbnRD
YWxsYmFjayk7Ci0gICAgfQotCi0gICAgX3JlcGFpbnRDYWxsYmFjayA9IFdlYktpdDo6Vm9pZENh
bGxiYWNrOjpjcmVhdGUoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIHNlbGZdKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgewotICAgICAgICBfcmVwYWludENhbGxiYWNrID0g
bnVsbHB0cjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVy
KFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBzZWxmXSB7CiAgICAgICAgIF93ZWJW
aWV3UGxhY2Vob2xkZXIuZ2V0KCkucGFyZW50ID0gbmlsOwogICAgICAgICBbX3dlYlZpZXdQbGFj
ZWhvbGRlciByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKIApAQCAtODU4LDkgKzg0OCw5IEBAIHByaXZh
dGU6CiAKICAgICBhdXRvKiBwYWdlID0gW3NlbGYuX3dlYlZpZXcgX3BhZ2VdLmdldCgpOwogICAg
IGlmIChwYWdlICYmIHBhZ2UtPmlzVmlld0ZvY3VzZWQoKSkKLSAgICAgICAgcGFnZS0+Zm9yY2VS
ZXBhaW50KF9yZXBhaW50Q2FsbGJhY2suY29weVJlZigpKTsKKyAgICAgICAgcGFnZS0+Zm9yY2VS
ZXBhaW50KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBlbHNlCi0gICAgICAgIF9y
ZXBhaW50Q2FsbGJhY2stPnBlcmZvcm1DYWxsYmFjaygpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogCiAgICAgW19mdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIgc2V0UHJlZmVyc1N0YXR1
c0JhckhpZGRlbjpZRVNdOwogICAgIF9mdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIgPSBuaWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIuaAppbmRleCBkYTU4YjllOWUwOTFkODBkOGNlNjQyOGUxMzU3OWY0NDFj
Y2EwNDcyLi5kMTk3MjkyNjU1YzYxYmE2YzZiYjM4YTEzODg1N2Y0ZGU1NjcxYzk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLmgKQEAgLTYyLDcgKzYyLDYgQEAgdHlwZWRlZiBlbnVtIEZ1bGxTY3JlZW5T
dGF0ZSA6IE5TSW50ZWdlciBGdWxsU2NyZWVuU3RhdGU7CiAgICAgRnVsbFNjcmVlblN0YXRlIF9m
dWxsU2NyZWVuU3RhdGU7CiAKICAgICBkb3VibGUgX3NhdmVkU2NhbGU7Ci0gICAgUmVmUHRyPFdl
YktpdDo6Vm9pZENhbGxiYWNrPiBfcmVwYWludENhbGxiYWNrOwogICAgIGZsb2F0IF9zYXZlZFRv
cENvbnRlbnRJbnNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQppbmRleCBmNGFiNDRjODM3
ZjM4YzA2YjRkYWRlY2YwNmU2MTU5NWE5NTgxN2FiLi5hM2VkNjRkYjAzM2RmMGI3OTQxZThkODQy
MGQ0YTM4NWY1ODc4YWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQpAQCAtMTU1LDEzICsxNTUs
NiBAQCBzdGF0aWMgdm9pZCBtYWtlUmVzcG9uZGVyRmlyc3RSZXNwb25kZXJJZkRlc2NlbmRhbnRP
ZlZpZXcoTlNXaW5kb3cgKndpbmRvdywgTlNSZQogICAgIAogICAgIFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CiAKLSAgICBpZiAoX3Jl
cGFpbnRDYWxsYmFjaykgewotICAgICAgICBfcmVwYWludENhbGxiYWNrLT5pbnZhbGlkYXRlKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7Ci0gICAgICAg
IC8vIGludmFsaWRhdGUoKSBjYWxscyBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0
aW9uQWZ0ZXJSZXBhaW50LCB3aGljaAotICAgICAgICAvLyBjbGVhcnMgX3JlcGFpbnRDYWxsYmFj
ay4KLSAgICAgICAgQVNTRVJUKCFfcmVwYWludENhbGxiYWNrKTsKLSAgICB9Ci0KICAgICBfdmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50LnNldFBhcmVudChudWxscHRyKTsKIAogICAg
IFtzdXBlciBkZWFsbG9jXTsKQEAgLTU3NCwxNiArNTY3LDkgQEAgc3RhdGljIFJldGFpblB0cjxD
R0ltYWdlUmVmPiB0YWtlV2luZG93U25hcHNob3QoQ0dTV2luZG93SUQgd2luZG93SUQsIGJvb2wg
Y2FwdHUKICAgICBbc2VsZiBfbWFuYWdlcl0tPnJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogICAg
IF9wYWdlLT5zZXRUb3BDb250ZW50SW5zZXQoX3NhdmVkVG9wQ29udGVudEluc2V0KTsKIAotICAg
IGlmIChfcmVwYWludENhbGxiYWNrKSB7Ci0gICAgICAgIF9yZXBhaW50Q2FsbGJhY2stPmludmFs
aWRhdGUoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsK
LSAgICAgICAgLy8gaW52YWxpZGF0ZSgpIGNhbGxzIGNvbXBsZXRlRmluaXNoRXhpdEZ1bGxTY3Jl
ZW5BbmltYXRpb25BZnRlclJlcGFpbnQsIHdoaWNoCi0gICAgICAgIC8vIGNsZWFycyBfcmVwYWlu
dENhbGxiYWNrLgotICAgICAgICBBU1NFUlQoIV9yZXBhaW50Q2FsbGJhY2spOwotICAgIH0KLSAg
ICBfcmVwYWludENhbGxiYWNrID0gV2ViS2l0OjpWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbc2VsZl0o
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7Ci0gICAgICAgIFtzZWxmIGNvbXBsZXRlRmlu
aXNoRXhpdEZ1bGxTY3JlZW5BbmltYXRpb25BZnRlclJlcGFpbnRdOworICAgIF9wYWdlLT5mb3Jj
ZVJlcGFpbnQoW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlcj4oc2VsZildIHsKKyAgICAgICAgW3dlYWtTZWxmIGNvbXBsZXRlRmluaXNoRXhpdEZ1bGxT
Y3JlZW5BbmltYXRpb25BZnRlclJlcGFpbnRdOwogICAgIH0pOwotICAgIF9wYWdlLT5mb3JjZVJl
cGFpbnQoX3JlcGFpbnRDYWxsYmFjay5jb3B5UmVmKCkpOwogCiAgICAgW0NBVHJhbnNhY3Rpb24g
Y29tbWl0XTsKICAgICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07CkBAIC02MDUsNyArNTkxLDYgQEAg
c3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiB0YWtlV2luZG93U25hcHNob3QoQ0dTV2luZG93
SUQgd2luZG93SUQsIGJvb2wgY2FwdHUKICAgICBbW193ZWJWaWV3IHdpbmRvd10gbWFrZUtleUFu
ZE9yZGVyRnJvbnQ6c2VsZl07CiAgICAgX3dlYlZpZXdQbGFjZWhvbGRlciA9IG5pbDsKICAgICAK
LSAgICBfcmVwYWludENhbGxiYWNrID0gbnVsbHB0cjsKICAgICBfcGFnZS0+c2V0U3VwcHJlc3NW
aXNpYmlsaXR5VXBkYXRlcyhmYWxzZSk7CiAgICAgX3BhZ2UtPnNldE5lZWRzRE9NV2luZG93UmVz
aXplRXZlbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9E
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IDRmMWExZmYxZTQ0NzZjZDhi
MjcyZWIxNDEwMDAxNTk0MzI5NmViMTkuLjY4MmM5NzE3ZTFkNzg4ZjkzZDZhMDRmNjJhZmYxMDg1
NmFjYzNlNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Ry
YXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTIxMywxMiArMjEzLDE3IEBAIHZv
aWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpmb3JjZVJlcGFpbnQoKQogICAgICAg
ICB9CiB9CiAKLWJvb2wgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpmb3JjZVJlcGFp
bnRBc3luYyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0
ZWRHcmFwaGljczo6Zm9yY2VSZXBhaW50QXN5bmMoV2ViUGFnZSYgcGFnZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChtX2xheWVyVHJl
ZVN0YXRlSXNGcm96ZW4pCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9sYXllclRy
ZWVTdGF0ZUlzRnJvemVuKSB7CisgICAgICAgIHBhZ2UuZm9yY2VSZXBhaW50V2l0aG91dENhbGxi
YWNrKCk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0KIAotICAg
IHJldHVybiBtX2xheWVyVHJlZUhvc3QgJiYgbV9sYXllclRyZWVIb3N0LT5mb3JjZVJlcGFpbnRB
c3luYyhjYWxsYmFja0lEKTsKKyAgICBpZiAobV9sYXllclRyZWVIb3N0KQorICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPmZvcmNlUmVwYWludEFzeW5jKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQgRHJh
d2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJv
b2wgaXNGcm96ZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3
aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaAppbmRleCA4MzQ3Y2ZjZjNkYzk2NTUzMWFmZGUw
N2U5OWY4YjNjMWE0ZDdmOGVhLi5iYjQwOTRiNTMwNjlmYWIzZjkyYTRkMDNmNWI1Y2VhMjJjYTFj
MzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0Fy
ZWFDb29yZGluYXRlZEdyYXBoaWNzLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEpIG92ZXJyaWRlOwogICAgIHZvaWQg
Zm9yY2VSZXBhaW50KCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxs
YmFja0lEKSBvdmVycmlkZTsKKyAgICB2b2lkIGZvcmNlUmVwYWludEFzeW5jKFdlYlBhZ2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRMYXll
clRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIG92ZXJyaWRlOwogICAgIGJvb2wgbGF5ZXJUcmVlU3Rh
dGVJc0Zyb3plbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGF5ZXJUcmVlU3RhdGVJc0Zy
b3plbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXgg
ODY4NWUyM2QwZDQ2ODYwMWM0NTk5NTQ3NzVmZTZmNTY1YjBjZTdhYy4uYWU4ZTgxYmYyYWMzNGY5
MDI4YzBhMDEyOTI0MGVmYjEyNTI4ODE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUhvc3QuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBMYXllclRyZWVIb3N0Ojps
YXllckZsdXNoVGltZXJGaXJlZCgpCiAKICAgICAvLyBJZiBhIGZvcmNlLXJlcGFpbnQgY2FsbGJh
Y2sgd2FzIHJlZ2lzdGVyZWQsIHdlIHNob3VsZCBmb3JjZSBhICdmcmFtZSBzeW5jJyB0aGF0CiAg
ICAgLy8gd2lsbCBndWFyYW50ZWUgdXMgYSBjYWxsIHRvIHJlbmRlck5leHRGcmFtZSgpIG9uY2Ug
dGhlIHVwZGF0ZSBpcyBjb21wbGV0ZS4KLSAgICBpZiAobV9mb3JjZVJlcGFpbnRBc3luYy5jYWxs
YmFja0lEKQorICAgIGlmIChtX2ZvcmNlUmVwYWludEFzeW5jLmNhbGxiYWNrKQogICAgICAgICBt
X2Nvb3JkaW5hdG9yLmZvcmNlRnJhbWVTeW5jKCk7CiAKICAgICBib29sIGRpZFN5bmMgPSBtX2Nv
b3JkaW5hdG9yLmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOwpAQCAtMTkwLDE0ICsxOTAsMTQg
QEAgdm9pZCBMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnQoKQogICAgIG1fY29tcG9zaXRvci0+
Zm9yY2VSZXBhaW50KCk7CiB9CiAKLWJvb2wgTGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50QXN5
bmMoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQorYm9vbCBMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFp
bnRBc3luYyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiBjYWxsYmFjaykKIHsKICAgICBzY2hl
ZHVsZUxheWVyRmx1c2goKTsKIAogICAgIC8vIFdlIHdhbnQgYSBjbGVhbiByZXBhaW50LCBtZWFu
aW5nIHRoYXQgaWYgd2UncmUgY3VycmVudGx5IHdhaXRpbmcgZm9yIHRoZSByZW5kZXJlcgogICAg
IC8vIHRvIGZpbmlzaCBhbiB1cGRhdGUsIHdlJ2xsIGhhdmUgdG8gc2NoZWR1bGUgYW5vdGhlciBm
bHVzaCB3aGVuIGl0J3MgZG9uZS4KLSAgICBBU1NFUlQoIW1fZm9yY2VSZXBhaW50QXN5bmMuY2Fs
bGJhY2tJRCk7Ci0gICAgbV9mb3JjZVJlcGFpbnRBc3luYy5jYWxsYmFja0lEID0gT3B0aW9uYWxD
YWxsYmFja0lEKGNhbGxiYWNrSUQpOworICAgIEFTU0VSVCghbV9mb3JjZVJlcGFpbnRBc3luYy5j
YWxsYmFjayk7CisgICAgbV9mb3JjZVJlcGFpbnRBc3luYy5jYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spOwogICAgIG1fZm9yY2VSZXBhaW50QXN5bmMubmVlZHNGcmVzaEZsdXNoID0gbV9zY2hl
ZHVsZWRXaGlsZVdhaXRpbmdGb3JSZW5kZXJlcjsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTQw
NSw3ICs0MDUsNyBAQCB2b2lkIExheWVyVHJlZUhvc3Q6OnJlbmRlck5leHRGcmFtZShib29sIGZv
cmNlUmVwYWludCkKICAgICBib29sIHNjaGVkdWxlZFdoaWxlV2FpdGluZ0ZvclJlbmRlcmVyID0g
c3RkOjpleGNoYW5nZShtX3NjaGVkdWxlZFdoaWxlV2FpdGluZ0ZvclJlbmRlcmVyLCBmYWxzZSk7
CiAgICAgbV9jb29yZGluYXRvci5yZW5kZXJOZXh0RnJhbWUoKTsKIAotICAgIGlmIChtX2ZvcmNl
UmVwYWludEFzeW5jLmNhbGxiYWNrSUQpIHsKKyAgICBpZiAobV9mb3JjZVJlcGFpbnRBc3luYy5j
YWxsYmFjaykgewogICAgICAgICAvLyBJZiB0aGUgYXN5bmNocm9ub3VzIGZvcmNlLXJlcGFpbnQg
bmVlZHMgYSBzZXBhcmF0ZSBmcmVzaCBmbHVzaCwgaXQgd2FzIGR1ZSB0bwogICAgICAgICAvLyB0
aGUgZm9yY2UtcmVwYWludCByZXF1ZXN0IGJlaW5nIHJlZ2lzdGVyZWQgd2hpbGUgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0IHdhcwogICAgICAgICAvLyB3YWl0aW5nIGZvciB0aGUgcmVuZGVyZXIg
dG8gZmluaXNoIGFuIHVwZGF0ZS4KQEAgLTQxNCwxMCArNDE0LDggQEAgdm9pZCBMYXllclRyZWVI
b3N0OjpyZW5kZXJOZXh0RnJhbWUoYm9vbCBmb3JjZVJlcGFpbnQpCiAgICAgICAgIC8vIEV4ZWN1
dGUgdGhlIGNhbGxiYWNrIGlmIGFub3RoZXIgbGF5ZXIgZmx1c2ggYW5kIHRoZSBzdWJzZXF1ZW50
IHN0YXRlIHVwZGF0ZQogICAgICAgICAvLyBhcmVuJ3QgbmVlZGVkLiBJZiB0aGV5IGFyZSwgdGhl
IGNhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQgd2hlbiB0aGlzIGZ1bmN0aW9uCiAgICAgICAgIC8v
IGlzIGNhbGxlZCBhZnRlciB0aGUgbmV4dCB1cGRhdGUuCi0gICAgICAgIGlmICghbV9mb3JjZVJl
cGFpbnRBc3luYy5uZWVkc0ZyZXNoRmx1c2gpIHsKLSAgICAgICAgICAgIG1fd2ViUGFnZS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhtX2ZvcmNlUmVwYWludEFzeW5j
LmNhbGxiYWNrSUQuY2FsbGJhY2tJRCgpKSk7Ci0gICAgICAgICAgICBtX2ZvcmNlUmVwYWludEFz
eW5jLmNhbGxiYWNrSUQgPSBPcHRpb25hbENhbGxiYWNrSUQoKTsKLSAgICAgICAgfQorICAgICAg
ICBpZiAoIW1fZm9yY2VSZXBhaW50QXN5bmMubmVlZHNGcmVzaEZsdXNoKQorICAgICAgICAgICAg
bV9mb3JjZVJlcGFpbnRBc3luYy5jYWxsYmFjaygpOwogICAgICAgICBtX2ZvcmNlUmVwYWludEFz
eW5jLm5lZWRzRnJlc2hGbHVzaCA9IGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVI
b3N0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUhvc3QuaAppbmRleCAzNGQ3MjEwNGFlOTMyYzVlYjUxZGNmMTBlNTk3NmRk
NDhkNjhjYmUyLi5hYWIzZDNiMzY2MzkzY2NmMjcxNTM3ODYwZjAzZWM5ZmUwZTliMjNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuaApAQCAtNzksNyArNzksNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJD
b3JlOjpJbnRSZWN0Jik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoKTsKLSAgICBib29sIGZvcmNl
UmVwYWludEFzeW5jKENhbGxiYWNrSUQpOworICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYpOwogICAgIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKTsKIAogICAgIHZvaWQgcGF1c2VSZW5kZXJpbmcoKTsK
QEAgLTE5Myw3ICsxOTMsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxUaHJlYWRlZENvbXBvc2l0
b3I+IG1fY29tcG9zaXRvcjsKICAgICBTaW1wbGVWaWV3cG9ydENvbnRyb2xsZXIgbV92aWV3cG9y
dENvbnRyb2xsZXI7CiAgICAgc3RydWN0IHsKLSAgICAgICAgT3B0aW9uYWxDYWxsYmFja0lEIGNh
bGxiYWNrSUQ7CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gY2FsbGJhY2s7CiAg
ICAgICAgIGJvb2wgbmVlZHNGcmVzaEZsdXNoIHsgZmFsc2UgfTsKICAgICB9IG1fZm9yY2VSZXBh
aW50QXN5bmM7CiAgICAgUnVuTG9vcDo6VGltZXI8TGF5ZXJUcmVlSG9zdD4gbV9sYXllckZsdXNo
VGltZXI7CkBAIC0yMTMsNyArMjEzLDcgQEAgaW5saW5lIHZvaWQgTGF5ZXJUcmVlSG9zdDo6c2V0
Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIHsgfQogaW5saW5l
IHZvaWQgTGF5ZXJUcmVlSG9zdDo6c2V0Vmlld092ZXJsYXlSb290TGF5ZXIoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllciopIHsgfQogaW5saW5lIHZvaWQgTGF5ZXJUcmVlSG9zdDo6c2Nyb2xsTm9uQ29t
cG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSB7IH0KIGlubGluZSB2b2lk
IExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludCgpIHsgfQotaW5saW5lIGJvb2wgTGF5ZXJUcmVl
SG9zdDo6Zm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgeyByZXR1cm4gZmFsc2U7IH0KK2lu
bGluZSBib29sIExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludEFzeW5jKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mKSB7IHJldHVybiBmYWxzZTsgfQogaW5saW5lIHZvaWQgTGF5ZXJUcmVlSG9z
dDo6c2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgeyB9CiBpbmxpbmUgdm9p
ZCBMYXllclRyZWVIb3N0OjpwYXVzZVJlbmRlcmluZygpIHsgfQogaW5saW5lIHZvaWQgTGF5ZXJU
cmVlSG9zdDo6cmVzdW1lUmVuZGVyaW5nKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA1M2ZmYmMyZmU1ODUwZjVlMzhhM2I5ZjI2
YzcxZDJlYzI1YjE0NGE0Li4xNmZkM2MzNjRmYzdlYjlkYjlmMzE4NTlmNjcyZjQyMTVmNTViNWFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgK
QEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBi
ZSBwdXJlIHZpcnR1YWwuCiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpIHsgfQotICAg
IHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnRBc3luYyhXZWJQYWdlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVyVHJl
ZVN0YXRlSXNGcm96ZW4oYm9vbCkgeyB9CiAgICAgdmlydHVhbCBib29sIGxheWVyVHJlZVN0YXRl
SXNGcm96ZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCmluZGV4IDBhZjQwMTk0ODQwYWZl
Njg4OGE4NjEzODJmZGQ2YzllNGUyNmQxYzkuLjI3ZjkzNmYzMTkwNGUxNTgzNDY0NTQxZjVkMDVh
OTEwMzBjMjEwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBsYXll
clRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1JlbmRlcmlu
Z1N1c3BlbmRlZDsgfQogCiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoKSBvdmVycmlkZTsKLSAgICBi
b29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdm9pZCBmb3JjZVJlcGFpbnRBc3luYyhXZWJQYWdlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0KE9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pIG92ZXJyaWRlOwogICAgIE9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV92aWV3RXhwb3NlZFJlY3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCBhMDIzMjI4NzE2YTFlZTQxNTljMTI0OWY1ZmI1
MDE0NjcyZjIzNWNkLi5lYjZiZDgzMjFiZjU4NGU5MGY0MjAxYjcyNjA5NTU2Yzg3ZTg4YjI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
Lm1tCkBAIC0xODQsNiArMTg0LDEyIEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6
OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKQogICAgIERlYnVn
UGFnZU92ZXJsYXlzOjpzZXR0aW5nc0NoYW5nZWQoKm1fd2ViUGFnZS5jb3JlUGFnZSgpKTsKIH0K
IAordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMoV2Vi
UGFnZSYgcGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIHBhZ2UuZm9yY2VSZXBhaW50V2l0aG91dENhbGxiYWNrKCk7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKK30KKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggMzFhMTRjMTI3ZDhjZTMzNDIyNTUwZWFhM2VhNGY0ODUyOWRmNWJkOS4uNWZk
NGZkNjBlODZmMjAyN2UxYjVjNjdjYjhmMzk5NDQwNzY4OWUxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM3MTksMTMgKzM3MTksOSBAQCB2
b2lkIFdlYlBhZ2U6OmZvcmNlUmVwYWludFdpdGhvdXRDYWxsYmFjaygpCiAgICAgbV9kcmF3aW5n
QXJlYS0+Zm9yY2VSZXBhaW50KCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50KENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAobV9kcmF3
aW5nQXJlYS0+Zm9yY2VSZXBhaW50QXN5bmMoY2FsbGJhY2tJRCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGZvcmNlUmVwYWludFdpdGhvdXRDYWxsYmFjaygpOwotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKKyAgICBtX2RyYXdpbmdB
cmVhLT5mb3JjZVJlcGFpbnRBc3luYygqdGhpcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiB2b2lkIFdlYlBhZ2U6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmIHN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IGU3YTJiNzliMzYxOTU2M2U4MDFlMjRlYjM3NWY3ZjhiYzliMzFmOGMuLjlk
MWE1MWRkOWM5YWM2NTdjN2RhYmFhNGU2YzQ0YjU4YjQzNGJlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1NjcsNyArMTU2Nyw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNv
cmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRlbnRXb3JsZElkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJik7CiAgICAgdm9pZCBydW5KYXZh
U2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMmJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29uc3Qgc3RkOjpwYWly
PENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxkRGF0YSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKLSAgICB2b2lkIGZvcmNlUmVwYWludChDYWxs
YmFja0lEKTsKKyAgICB2b2lkIGZvcmNlUmVwYWludChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0
LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENhbGxiYWNr
SUQpOwogCiAgICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgppbmRleCAyZWFiZGNmOTQzYmQwMDA0MjIwY2IwMzY0YTM1MTM3ZDJm
ZTllMmJlLi5kZTQwOTE5NDdhYjQzYjcyODI0NDczZjkyZjJhOTI5YTI1OWZlNjE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KQEAgLTIyMiw3ICsyMjIsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVu
dW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAgICAgUnVu
SmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQsIHN0ZDo6cGFpcjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0
cmluZz4gd29ybGQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgT3B0aW9uYWw8
V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscykgQXN5bmMKIAotICAgIEZvcmNlUmVw
YWludChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBGb3JjZVJlcGFpbnQoKSAt
PiAoKSBBc3luYwogICAgIFNlbGVjdEFsbCgpCiAgICAgU2NoZWR1bGVGdWxsRWRpdG9yU3RhdGVV
cGRhdGUoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4IDM4
NzZmNDZhYmFmMDYxMTMzM2IyMWY3M2RhNGZhZmRkZTk2MTc0OTcuLmI0ZWZmZmZmOGY3MmY2YmVh
MjRhNWFkMTQ4NzE5ZGNjZGQ1YjgwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY3JvbGwoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
c2Nyb2xsRGVsdGEpIG92ZXJyaWRlIHsgfQogCiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoKSBvdmVy
cmlkZTsKLSAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZm9yY2VSZXBhaW50QXN5bmMoV2ViUGFnZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJv
b2wpIG92ZXJyaWRlOwogICAgIGJvb2wgbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lm1tCmluZGV4IDVlZGMwZjFkYTVlMjNjMmEyZTMyNmUxOTIyNzNjOGE4NjdiYTViZjEuLjlmMWYw
ZmVmM2UzMzdlMzI1OGMyY2ExNDZmZDBlMGEzYjIwMTllZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTE3MywxNiArMTczLDE5IEBAIHZvaWQgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludCgpCiAgICAgW0NBVHJhbnNhY3Rp
b24gc3luY2hyb25pemVdOwogfQogCi1ib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Ojpmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmb3JjZVJlcGFpbnRBc3luYyhXZWJQYWdlJiBwYWdlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYg
KG1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
IChtX2xheWVyVHJlZVN0YXRlSXNGcm96ZW4pIHsKKyAgICAgICAgcGFnZS5mb3JjZVJlcGFpbnRX
aXRob3V0Q2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7Cisg
ICAgfQogCi0gICAgZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKFt0
aGlzLCBjYWxsYmFja0lEXSB7CisgICAgZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9s
bFBvc2l0aW9uKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
KTsKICAgICAgICAgbV93ZWJQYWdlLmRyYXdpbmdBcmVhKCktPmZvcmNlUmVwYWludCgpOwotICAg
ICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2so
Y2FsbGJhY2tJRCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwotICAg
IHJldHVybiB0cnVlOwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpz
ZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wgbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbikK
</data>
<flag name="commit-queue"
          id="434324"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416724</attachid>
            <date>2020-12-23 12:32:48 -0800</date>
            <delta_ts>2020-12-23 15:22:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212269-20201223123247.patch</filename>
            <type>text/plain</type>
            <size>27645</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM0YzY2Y2U2N2U1ODA5YThk
NjNmMjdjYTBiZWI1MDk1ZGVhZDJkNWYuLmM0NWE4ZjNjOTkyMDI0MTM0ZjU3MGMwMWZhYTkzYjVi
ZGNkZGZjNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjAtMTItMjMgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIFdlYlBh
Z2U6OkZvcmNlUmVwYWludCB1c2UgQ29tcGxldGlvbkhhbmRsZXIgaW5zdGVhZCBvZiBWb2lkQ2Fs
bGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MjI2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eCBhIGZldyB1bnNhZmUgcG9pbnRlciB1c2VzIGFsb25nIHRoZSB3YXkuCisgICAgICAgIE5vIGNo
YW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
OgorICAgICAgICAoV0tQYWdlRm9yY2VSZXBhaW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVmll
d0dlc3R1cmVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250
cm9sbGVyOjpmb3JjZVJlcGFpbnRJZk5lZWRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zm9yY2VSZXBhaW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW06Cisg
ICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgZW50ZXJGdWxsU2NyZWVuXSk6
CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgX2NvbXBsZXRlZEV4aXRG
dWxsU2NyZWVuXSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGRl
YWxsb2NdKToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBmaW5pc2hl
ZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uOl0pOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyIGNvbXBsZXRlRmluaXNoRXhpdEZ1bGxTY3JlZW5BbmltYXRpb25BZnRlclJl
cGFpbnRdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmZvcmNlUmVwYWludEFzeW5jKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNv
b3JkaW5hdGVkR3JhcGhpY3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJU
cmVlSG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVIb3N0Ojpmb3JjZVJlcGFpbnRBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhv
c3Q6OnJlbmRlck5leHRGcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVIb3N0Ojpmb3JjZVJlcGFpbnRBc3luYyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpmb3JjZVJlcGFp
bnRBc3luYyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Zm9yY2VSZXBhaW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgor
ICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Zm9yY2VSZXBh
aW50QXN5bmMpOgorCiAyMDIwLTEyLTIyICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlA
YXBwbGUuY29tPgogCiAgICAgICAgIENhbm5vdCBzZWUgJ0FkZCB0byBteSBzdGF0aW9ucycgYnV0
dG9uIGluIEJCQyBXb3JsZCBzZXJ2aWNlIFJhZGlvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcAppbmRleCAyMjRkYzE4MTE1NDFhMmQyMTJmNDRlYjg3NDVhYmIyMWM3YTEx
NTQwLi4yYzFhMWNmNTM5NWM5MThhMGZiN2I3MzNkNTJjNjMzNGMxOGZiZWJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI1NzMsOSArMjU3Myw5IEBAIHZv
aWQgV0tQYWdlR2V0Q29udGVudHNBc01IVE1MRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCog
Y29udGV4dCwgV0tQYWdlR2V0Q29uCiAKIHZvaWQgV0tQYWdlRm9yY2VSZXBhaW50KFdLUGFnZVJl
ZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VGb3JjZVJlcGFpbnRGdW5jdGlvbiBjYWxs
YmFjaykKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPmZvcmNlUmVwYWludChWb2lkQ2FsbGJhY2s6
OmNyZWF0ZShbY29udGV4dCwgY2FsbGJhY2tdKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgewotICAgICAgICBjYWxsYmFjayhlcnJvciA9PSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3I6Ok5vbmUgPyBudWxscHRyIDogdG9BUEkoQVBJOjpFcnJvcjo6Y3JlYXRlKCkucHRyKCkp
LCBjb250ZXh0KTsKLSAgICB9KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5mb3JjZVJlcGFpbnQo
W2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKKyAgICAgICAgY2FsbGJhY2sobnVsbHB0ciwgY29udGV4
dCk7CisgICAgfSk7CiB9CiAKIFdLX0VYUE9SVCBXS1VSTFJlZiBXS1BhZ2VDb3B5UGVuZGluZ0FQ
SVJlcXVlc3RVUkwoV0tQYWdlUmVmIHBhZ2VSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAppbmRleCBmOWVjMzRlMWUyN2RlYzMwYzZk
MWIzNTI1YTNmMGFkNzg2YjA4ZDk1Li5hN2U2ZjBkMTkwMzFlMjA4MGZmZDNmN2Y0ODk5NzVlMWU4
Y2MxZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5jcHAKQEAgLTU2MCwxMCArNTYwLDEwIEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9s
bGVyOjpmb3JjZVJlcGFpbnRJZk5lZWRlZCgpCiAKICAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFn
ZVByb3h5LmlkZW50aWZpZXIoKTsKICAgICBHZXN0dXJlSUQgZ2VzdHVyZUlEID0gbV9jdXJyZW50
R2VzdHVyZUlEOwotICAgIG1fd2ViUGFnZVByb3h5LmZvcmNlUmVwYWludChWb2lkQ2FsbGJhY2s6
OmNyZWF0ZShbcGFnZUlELCBnZXN0dXJlSURdIChDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
CisgICAgbV93ZWJQYWdlUHJveHkuZm9yY2VSZXBhaW50KFtwYWdlSUQsIGdlc3R1cmVJRF0gKCkg
ewogICAgICAgICBpZiAoYXV0byBnZXN0dXJlQ29udHJvbGxlciA9IGNvbnRyb2xsZXJGb3JHZXN0
dXJlKHBhZ2VJRCwgZ2VzdHVyZUlEKSkKICAgICAgICAgICAgIGdlc3R1cmVDb250cm9sbGVyLT5y
ZW1vdmVTd2lwZVNuYXBzaG90KCk7Ci0gICAgfSkpOworICAgIH0pOwogfQogCiB2b2lkIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6d2lsbEVuZFN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtJiB0YXJnZXRJdGVtLCBib29sIGNhbmNlbGxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IDU3MTZkNjdkNzAwZTJkMWE5N2IzMDRhMjk0OWFhYmNhMjQz
NThkNWMuLmM4MjIzOTdmZDRlYjFlMWEyMGM5NGY1NWRjM2UyZWFmOTc5YzRmMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDE5OSwzOCArNDE5OSwxOCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSog
ZnJhbWUsIEZ1bmN0aW9uPHZvaWQgKEFQSQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dFdlYkFyY2hpdmVPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNh
bGxiYWNrKQordm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgcGFnZSBpcyBpbnZhbGlkIHdlIHNob3VsZCBub3Qg
Y2FsbCB0aGUgY2FsbGJhY2suIEl0J2QgYmUgYmV0dGVyIHRvIGp1c3QgcmV0dXJuIGZhbHNlIGZy
b20gZm9yY2VSZXBhaW50LgotICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZShDYWxsYmFja0Jh
c2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGRpZEZvcmNlUmVwYWlu
dENhbGxiYWNrID0gW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhbGxiYWNr
QmFzZTo6RXJyb3IgZXJyb3IpIG11dGFibGUgewotICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6Tm9uZSkgewotICAgICAgICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUo
ZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKIAotICAgICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRl
KENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgCi0gICAgICAgIGNhbGxBZnRlck5leHRQcmVzZW50YXRp
b25VcGRhdGUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhbGxiYWNrQmFzZTo6RXJy
b3IgZXJyb3IpIHsKLSAgICAgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9y
OjpOb25lKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUoZXJyb3IpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICBtX2RyYXdpbmdBcmVh
LT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKIAotICAgICAgICAgICAg
Y2FsbGJhY2stPnBlcmZvcm1DYWxsYmFjaygpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUGFnZTo6Rm9yY2VSZXBhaW50KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgewor
ICAgICAgICBjYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlKFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSAoYXV0bykgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFjaygpOwog
ICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojpmb3JjZVJlcGFpbnQiX3MpKTsK
LSAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQo
KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGb3JjZVJlcGFpbnQoY2FsbGJhY2tJRCkp
OworICAgIH0pOwogfQogCiBzdGF0aWMgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gcHJpbnRp
bmdTZW5kT3B0aW9ucyhib29sIGlzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwZGY2MTZiNzZmYjc1MDMzZWYyMDE3
OWZlNWIyOTZmMjgzNTVlM2UxLi41N2MxNTAxY2YwMzE2ZGFlNGY2NTg2ZjJlZDM0NGE5ZDJiZTMx
NDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTE1NCw3ICsx
MTU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQ
cm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXZWJDb3JlOjpSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFJlZlB0cjxB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiYp
PiYmKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJDb3Jl
OjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+LCBBUEk6OkNvbnRlbnRXb3JsZCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscz4mJik+JiYpOwotICAgIHZvaWQgZm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJh
Y2s+JiYpOworICAgIHZvaWQgZm9yY2VSZXBhaW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAKICAgICBmbG9hdCBoZWFkZXJIZWlnaHQoV2ViRnJhbWVQcm94eSYpOwogICAgIGZsb2F0
IGZvb3RlckhlaWdodChXZWJGcmFtZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlcklPUy5tbQppbmRleCAyZDlmM2M2MGEzMjY1YTBjYzEzNGI3OWM1OGQy
ZDBmZTQyNDFiNzAwLi5hOWFjNmQxYTQ5ZjdjN2EwZmI1NDBhOWQ4ZjkwNWI1ODk0NTg3ZWU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KQEAgLTQ2
MCw3ICs0NjAsNiBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxVSVdpbmRvdz4gX3dpbmRvdzsK
ICAgICBSZXRhaW5QdHI8VUlWaWV3Q29udHJvbGxlcj4gX3Jvb3RWaWV3Q29udHJvbGxlcjsKIAot
ICAgIFJlZlB0cjxXZWJLaXQ6OlZvaWRDYWxsYmFjaz4gX3JlcGFpbnRDYWxsYmFjazsKICAgICBS
ZXRhaW5QdHI8VUlWaWV3Q29udHJvbGxlcj4gX3ZpZXdDb250cm9sbGVyRm9yUHJlc2VudGF0aW9u
OwogICAgIFJldGFpblB0cjxXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlcj4gX2Z1bGxzY3JlZW5W
aWV3Q29udHJvbGxlcjsKICAgICBSZXRhaW5QdHI8VUlTd2lwZUdlc3R1cmVSZWNvZ25pemVyPiBf
c3RhcnREaXNtaXNzR2VzdHVyZVJlY29nbml6ZXI7CkBAIC02MjQsOSArNjIzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgYXJndW1lbnRzLnVzZXJab29tID0gMTsKICAgICAgICAgcGFnZS0+c2V0T3Zl
cnJpZGVWaWV3cG9ydEFyZ3VtZW50cyhhcmd1bWVudHMpOwogCi0gICAgICAgIF9yZXBhaW50Q2Fs
bGJhY2sgPSBXZWJLaXQ6OlZvaWRDYWxsYmFjazo6Y3JlYXRlKFtwcm90ZWN0ZWRTZWxmID0gcmV0
YWluUHRyKHNlbGYpLCBzZWxmXShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKLSAgICAg
ICAgICAgIF9yZXBhaW50Q2FsbGJhY2sgPSBudWxscHRyOwotCisgICAgICAgIHBhZ2UtPmZvcmNl
UmVwYWludChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgc2VsZl0gewogICAgICAg
ICAgICAgaWYgKF9leGl0UmVxdWVzdGVkKSB7CiAgICAgICAgICAgICAgICAgX2V4aXRSZXF1ZXN0
ZWQgPSBOTzsKICAgICAgICAgICAgICAgICBbc2VsZiBfZXhpdEZ1bGxzY3JlZW5JbW1lZGlhdGVs
eV07CkBAIC02NDEsNyArNjM4LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICAgICAgW3NlbGYgX2V4aXRGdWxsc2NyZWVuSW1tZWRpYXRlbHld
OwogICAgICAgICB9KTsKLSAgICAgICAgcGFnZS0+Zm9yY2VSZXBhaW50KF9yZXBhaW50Q2FsbGJh
Y2suY29weVJlZigpKTsKIAogICAgICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogICAgIH1d
OwpAQCAtODMzLDEzICs4MjksNyBAQCBwcml2YXRlOgogICAgIFtfd2luZG93IHNldEhpZGRlbjpZ
RVNdOwogICAgIF93aW5kb3cgPSBuaWw7CiAKLSAgICBpZiAoX3JlcGFpbnRDYWxsYmFjaykgewot
ICAgICAgICBfcmVwYWludENhbGxiYWNrLT5pbnZhbGlkYXRlKFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7Ci0gICAgICAgIEFTU0VSVCghX3JlcGFpbnRD
YWxsYmFjayk7Ci0gICAgfQotCi0gICAgX3JlcGFpbnRDYWxsYmFjayA9IFdlYktpdDo6Vm9pZENh
bGxiYWNrOjpjcmVhdGUoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIHNlbGZdKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgewotICAgICAgICBfcmVwYWludENhbGxiYWNrID0g
bnVsbHB0cjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVy
KFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBzZWxmXSB7CiAgICAgICAgIF93ZWJW
aWV3UGxhY2Vob2xkZXIuZ2V0KCkucGFyZW50ID0gbmlsOwogICAgICAgICBbX3dlYlZpZXdQbGFj
ZWhvbGRlciByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKIApAQCAtODU4LDkgKzg0OCw5IEBAIHByaXZh
dGU6CiAKICAgICBhdXRvKiBwYWdlID0gW3NlbGYuX3dlYlZpZXcgX3BhZ2VdLmdldCgpOwogICAg
IGlmIChwYWdlICYmIHBhZ2UtPmlzVmlld0ZvY3VzZWQoKSkKLSAgICAgICAgcGFnZS0+Zm9yY2VS
ZXBhaW50KF9yZXBhaW50Q2FsbGJhY2suY29weVJlZigpKTsKKyAgICAgICAgcGFnZS0+Zm9yY2VS
ZXBhaW50KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBlbHNlCi0gICAgICAgIF9y
ZXBhaW50Q2FsbGJhY2stPnBlcmZvcm1DYWxsYmFjaygpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogCiAgICAgW19mdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIgc2V0UHJlZmVyc1N0YXR1
c0JhckhpZGRlbjpZRVNdOwogICAgIF9mdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIgPSBuaWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIuaAppbmRleCBkYTU4YjllOWUwOTFkODBkOGNlNjQyOGUxMzU3OWY0NDFj
Y2EwNDcyLi5kMTk3MjkyNjU1YzYxYmE2YzZiYjM4YTEzODg1N2Y0ZGU1NjcxYzk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLmgKQEAgLTYyLDcgKzYyLDYgQEAgdHlwZWRlZiBlbnVtIEZ1bGxTY3JlZW5T
dGF0ZSA6IE5TSW50ZWdlciBGdWxsU2NyZWVuU3RhdGU7CiAgICAgRnVsbFNjcmVlblN0YXRlIF9m
dWxsU2NyZWVuU3RhdGU7CiAKICAgICBkb3VibGUgX3NhdmVkU2NhbGU7Ci0gICAgUmVmUHRyPFdl
YktpdDo6Vm9pZENhbGxiYWNrPiBfcmVwYWludENhbGxiYWNrOwogICAgIGZsb2F0IF9zYXZlZFRv
cENvbnRlbnRJbnNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQppbmRleCBmNGFiNDRjODM3
ZjM4YzA2YjRkYWRlY2YwNmU2MTU5NWE5NTgxN2FiLi5hM2VkNjRkYjAzM2RmMGI3OTQxZThkODQy
MGQ0YTM4NWY1ODc4YWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQpAQCAtMTU1LDEzICsxNTUs
NiBAQCBzdGF0aWMgdm9pZCBtYWtlUmVzcG9uZGVyRmlyc3RSZXNwb25kZXJJZkRlc2NlbmRhbnRP
ZlZpZXcoTlNXaW5kb3cgKndpbmRvdywgTlNSZQogICAgIAogICAgIFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CiAKLSAgICBpZiAoX3Jl
cGFpbnRDYWxsYmFjaykgewotICAgICAgICBfcmVwYWludENhbGxiYWNrLT5pbnZhbGlkYXRlKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7Ci0gICAgICAg
IC8vIGludmFsaWRhdGUoKSBjYWxscyBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0
aW9uQWZ0ZXJSZXBhaW50LCB3aGljaAotICAgICAgICAvLyBjbGVhcnMgX3JlcGFpbnRDYWxsYmFj
ay4KLSAgICAgICAgQVNTRVJUKCFfcmVwYWludENhbGxiYWNrKTsKLSAgICB9Ci0KICAgICBfdmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50LnNldFBhcmVudChudWxscHRyKTsKIAogICAg
IFtzdXBlciBkZWFsbG9jXTsKQEAgLTU3NCwxNiArNTY3LDkgQEAgc3RhdGljIFJldGFpblB0cjxD
R0ltYWdlUmVmPiB0YWtlV2luZG93U25hcHNob3QoQ0dTV2luZG93SUQgd2luZG93SUQsIGJvb2wg
Y2FwdHUKICAgICBbc2VsZiBfbWFuYWdlcl0tPnJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogICAg
IF9wYWdlLT5zZXRUb3BDb250ZW50SW5zZXQoX3NhdmVkVG9wQ29udGVudEluc2V0KTsKIAotICAg
IGlmIChfcmVwYWludENhbGxiYWNrKSB7Ci0gICAgICAgIF9yZXBhaW50Q2FsbGJhY2stPmludmFs
aWRhdGUoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsK
LSAgICAgICAgLy8gaW52YWxpZGF0ZSgpIGNhbGxzIGNvbXBsZXRlRmluaXNoRXhpdEZ1bGxTY3Jl
ZW5BbmltYXRpb25BZnRlclJlcGFpbnQsIHdoaWNoCi0gICAgICAgIC8vIGNsZWFycyBfcmVwYWlu
dENhbGxiYWNrLgotICAgICAgICBBU1NFUlQoIV9yZXBhaW50Q2FsbGJhY2spOwotICAgIH0KLSAg
ICBfcmVwYWludENhbGxiYWNrID0gV2ViS2l0OjpWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbc2VsZl0o
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7Ci0gICAgICAgIFtzZWxmIGNvbXBsZXRlRmlu
aXNoRXhpdEZ1bGxTY3JlZW5BbmltYXRpb25BZnRlclJlcGFpbnRdOworICAgIF9wYWdlLT5mb3Jj
ZVJlcGFpbnQoW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlcj4oc2VsZildIHsKKyAgICAgICAgW3dlYWtTZWxmIGNvbXBsZXRlRmluaXNoRXhpdEZ1bGxT
Y3JlZW5BbmltYXRpb25BZnRlclJlcGFpbnRdOwogICAgIH0pOwotICAgIF9wYWdlLT5mb3JjZVJl
cGFpbnQoX3JlcGFpbnRDYWxsYmFjay5jb3B5UmVmKCkpOwogCiAgICAgW0NBVHJhbnNhY3Rpb24g
Y29tbWl0XTsKICAgICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07CkBAIC02MDUsNyArNTkxLDYgQEAg
c3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiB0YWtlV2luZG93U25hcHNob3QoQ0dTV2luZG93
SUQgd2luZG93SUQsIGJvb2wgY2FwdHUKICAgICBbW193ZWJWaWV3IHdpbmRvd10gbWFrZUtleUFu
ZE9yZGVyRnJvbnQ6c2VsZl07CiAgICAgX3dlYlZpZXdQbGFjZWhvbGRlciA9IG5pbDsKICAgICAK
LSAgICBfcmVwYWludENhbGxiYWNrID0gbnVsbHB0cjsKICAgICBfcGFnZS0+c2V0U3VwcHJlc3NW
aXNpYmlsaXR5VXBkYXRlcyhmYWxzZSk7CiAgICAgX3BhZ2UtPnNldE5lZWRzRE9NV2luZG93UmVz
aXplRXZlbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9E
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IDRmMWExZmYxZTQ0NzZjZDhi
MjcyZWIxNDEwMDAxNTk0MzI5NmViMTkuLjY4MmM5NzE3ZTFkNzg4ZjkzZDZhMDRmNjJhZmYxMDg1
NmFjYzNlNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Ry
YXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTIxMywxMiArMjEzLDE3IEBAIHZv
aWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpmb3JjZVJlcGFpbnQoKQogICAgICAg
ICB9CiB9CiAKLWJvb2wgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpmb3JjZVJlcGFp
bnRBc3luYyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0
ZWRHcmFwaGljczo6Zm9yY2VSZXBhaW50QXN5bmMoV2ViUGFnZSYgcGFnZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChtX2xheWVyVHJl
ZVN0YXRlSXNGcm96ZW4pCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9sYXllclRy
ZWVTdGF0ZUlzRnJvemVuKSB7CisgICAgICAgIHBhZ2UuZm9yY2VSZXBhaW50V2l0aG91dENhbGxi
YWNrKCk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0KIAotICAg
IHJldHVybiBtX2xheWVyVHJlZUhvc3QgJiYgbV9sYXllclRyZWVIb3N0LT5mb3JjZVJlcGFpbnRB
c3luYyhjYWxsYmFja0lEKTsKKyAgICBpZiAobV9sYXllclRyZWVIb3N0KQorICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPmZvcmNlUmVwYWludEFzeW5jKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQgRHJh
d2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJv
b2wgaXNGcm96ZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3
aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaAppbmRleCA4MzQ3Y2ZjZjNkYzk2NTUzMWFmZGUw
N2U5OWY4YjNjMWE0ZDdmOGVhLi5iYjQwOTRiNTMwNjlmYWIzZjkyYTRkMDNmNWI1Y2VhMjJjYTFj
MzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0Fy
ZWFDb29yZGluYXRlZEdyYXBoaWNzLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEpIG92ZXJyaWRlOwogICAgIHZvaWQg
Zm9yY2VSZXBhaW50KCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxs
YmFja0lEKSBvdmVycmlkZTsKKyAgICB2b2lkIGZvcmNlUmVwYWludEFzeW5jKFdlYlBhZ2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRMYXll
clRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIG92ZXJyaWRlOwogICAgIGJvb2wgbGF5ZXJUcmVlU3Rh
dGVJc0Zyb3plbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGF5ZXJUcmVlU3RhdGVJc0Zy
b3plbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXgg
ODY4NWUyM2QwZDQ2ODYwMWM0NTk5NTQ3NzVmZTZmNTY1YjBjZTdhYy4uNDA3ZjRmM2ZiMWZjNjlh
NmJlMzY2YTRhNWZiMzdiM2RkNGJiMjI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUhvc3QuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBMYXllclRyZWVIb3N0Ojps
YXllckZsdXNoVGltZXJGaXJlZCgpCiAKICAgICAvLyBJZiBhIGZvcmNlLXJlcGFpbnQgY2FsbGJh
Y2sgd2FzIHJlZ2lzdGVyZWQsIHdlIHNob3VsZCBmb3JjZSBhICdmcmFtZSBzeW5jJyB0aGF0CiAg
ICAgLy8gd2lsbCBndWFyYW50ZWUgdXMgYSBjYWxsIHRvIHJlbmRlck5leHRGcmFtZSgpIG9uY2Ug
dGhlIHVwZGF0ZSBpcyBjb21wbGV0ZS4KLSAgICBpZiAobV9mb3JjZVJlcGFpbnRBc3luYy5jYWxs
YmFja0lEKQorICAgIGlmIChtX2ZvcmNlUmVwYWludEFzeW5jLmNhbGxiYWNrKQogICAgICAgICBt
X2Nvb3JkaW5hdG9yLmZvcmNlRnJhbWVTeW5jKCk7CiAKICAgICBib29sIGRpZFN5bmMgPSBtX2Nv
b3JkaW5hdG9yLmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOwpAQCAtMTkwLDE2ICsxOTAsMTUg
QEAgdm9pZCBMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnQoKQogICAgIG1fY29tcG9zaXRvci0+
Zm9yY2VSZXBhaW50KCk7CiB9CiAKLWJvb2wgTGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50QXN5
bmMoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFp
bnRBc3luYyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgc2No
ZWR1bGVMYXllckZsdXNoKCk7CiAKICAgICAvLyBXZSB3YW50IGEgY2xlYW4gcmVwYWludCwgbWVh
bmluZyB0aGF0IGlmIHdlJ3JlIGN1cnJlbnRseSB3YWl0aW5nIGZvciB0aGUgcmVuZGVyZXIKICAg
ICAvLyB0byBmaW5pc2ggYW4gdXBkYXRlLCB3ZSdsbCBoYXZlIHRvIHNjaGVkdWxlIGFub3RoZXIg
Zmx1c2ggd2hlbiBpdCdzIGRvbmUuCi0gICAgQVNTRVJUKCFtX2ZvcmNlUmVwYWludEFzeW5jLmNh
bGxiYWNrSUQpOwotICAgIG1fZm9yY2VSZXBhaW50QXN5bmMuY2FsbGJhY2tJRCA9IE9wdGlvbmFs
Q2FsbGJhY2tJRChjYWxsYmFja0lEKTsKKyAgICBBU1NFUlQoIW1fZm9yY2VSZXBhaW50QXN5bmMu
Y2FsbGJhY2spOworICAgIG1fZm9yY2VSZXBhaW50QXN5bmMuY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsKICAgICBtX2ZvcmNlUmVwYWludEFzeW5jLm5lZWRzRnJlc2hGbHVzaCA9IG1fc2No
ZWR1bGVkV2hpbGVXYWl0aW5nRm9yUmVuZGVyZXI7Ci0gICAgcmV0dXJuIHRydWU7CiB9CiAKIHZv
aWQgTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBzaXplKQpAQCAt
NDA1LDcgKzQwNCw3IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdDo6cmVuZGVyTmV4dEZyYW1lKGJvb2wg
Zm9yY2VSZXBhaW50KQogICAgIGJvb2wgc2NoZWR1bGVkV2hpbGVXYWl0aW5nRm9yUmVuZGVyZXIg
PSBzdGQ6OmV4Y2hhbmdlKG1fc2NoZWR1bGVkV2hpbGVXYWl0aW5nRm9yUmVuZGVyZXIsIGZhbHNl
KTsKICAgICBtX2Nvb3JkaW5hdG9yLnJlbmRlck5leHRGcmFtZSgpOwogCi0gICAgaWYgKG1fZm9y
Y2VSZXBhaW50QXN5bmMuY2FsbGJhY2tJRCkgeworICAgIGlmIChtX2ZvcmNlUmVwYWludEFzeW5j
LmNhbGxiYWNrKSB7CiAgICAgICAgIC8vIElmIHRoZSBhc3luY2hyb25vdXMgZm9yY2UtcmVwYWlu
dCBuZWVkcyBhIHNlcGFyYXRlIGZyZXNoIGZsdXNoLCBpdCB3YXMgZHVlIHRvCiAgICAgICAgIC8v
IHRoZSBmb3JjZS1yZXBhaW50IHJlcXVlc3QgYmVpbmcgcmVnaXN0ZXJlZCB3aGlsZSBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Qgd2FzCiAgICAgICAgIC8vIHdhaXRpbmcgZm9yIHRoZSByZW5kZXJl
ciB0byBmaW5pc2ggYW4gdXBkYXRlLgpAQCAtNDE0LDEwICs0MTMsOCBAQCB2b2lkIExheWVyVHJl
ZUhvc3Q6OnJlbmRlck5leHRGcmFtZShib29sIGZvcmNlUmVwYWludCkKICAgICAgICAgLy8gRXhl
Y3V0ZSB0aGUgY2FsbGJhY2sgaWYgYW5vdGhlciBsYXllciBmbHVzaCBhbmQgdGhlIHN1YnNlcXVl
bnQgc3RhdGUgdXBkYXRlCiAgICAgICAgIC8vIGFyZW4ndCBuZWVkZWQuIElmIHRoZXkgYXJlLCB0
aGUgY2FsbGJhY2sgd2lsbCBiZSBleGVjdXRlZCB3aGVuIHRoaXMgZnVuY3Rpb24KICAgICAgICAg
Ly8gaXMgY2FsbGVkIGFmdGVyIHRoZSBuZXh0IHVwZGF0ZS4KLSAgICAgICAgaWYgKCFtX2ZvcmNl
UmVwYWludEFzeW5jLm5lZWRzRnJlc2hGbHVzaCkgewotICAgICAgICAgICAgbV93ZWJQYWdlLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKG1fZm9yY2VSZXBhaW50QXN5
bmMuY2FsbGJhY2tJRC5jYWxsYmFja0lEKCkpKTsKLSAgICAgICAgICAgIG1fZm9yY2VSZXBhaW50
QXN5bmMuY2FsbGJhY2tJRCA9IE9wdGlvbmFsQ2FsbGJhY2tJRCgpOwotICAgICAgICB9CisgICAg
ICAgIGlmICghbV9mb3JjZVJlcGFpbnRBc3luYy5uZWVkc0ZyZXNoRmx1c2gpCisgICAgICAgICAg
ICBtX2ZvcmNlUmVwYWludEFzeW5jLmNhbGxiYWNrKCk7CiAgICAgICAgIG1fZm9yY2VSZXBhaW50
QXN5bmMubmVlZHNGcmVzaEZsdXNoID0gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDM0ZDcyMTA0YWU5MzJjNWViNTFkY2YxMGU1OTc2
ZGQ0OGQ2OGNiZTIuLjY3MjdkMTZjOGMwYjg2YzE1ZmYzMWFmMDM4YWE5ZDc1ODg1Mjc1NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oCkBAIC03OSw3ICs3OSw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmKTsKICAgICB2b2lkIGZvcmNlUmVwYWludCgpOwotICAgIGJvb2wgZm9y
Y2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBmb3JjZVJlcGFpbnRBc3luYyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2l6ZURpZENoYW5nZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKTsKIAogICAgIHZvaWQgcGF1c2VSZW5kZXJpbmco
KTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxUaHJlYWRlZENvbXBv
c2l0b3I+IG1fY29tcG9zaXRvcjsKICAgICBTaW1wbGVWaWV3cG9ydENvbnRyb2xsZXIgbV92aWV3
cG9ydENvbnRyb2xsZXI7CiAgICAgc3RydWN0IHsKLSAgICAgICAgT3B0aW9uYWxDYWxsYmFja0lE
IGNhbGxiYWNrSUQ7CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gY2FsbGJhY2s7
CiAgICAgICAgIGJvb2wgbmVlZHNGcmVzaEZsdXNoIHsgZmFsc2UgfTsKICAgICB9IG1fZm9yY2VS
ZXBhaW50QXN5bmM7CiAgICAgUnVuTG9vcDo6VGltZXI8TGF5ZXJUcmVlSG9zdD4gbV9sYXllckZs
dXNoVGltZXI7CkBAIC0yMTMsNyArMjEzLDcgQEAgaW5saW5lIHZvaWQgTGF5ZXJUcmVlSG9zdDo6
c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIHsgfQogaW5s
aW5lIHZvaWQgTGF5ZXJUcmVlSG9zdDo6c2V0Vmlld092ZXJsYXlSb290TGF5ZXIoV2ViQ29yZTo6
R3JhcGhpY3NMYXllciopIHsgfQogaW5saW5lIHZvaWQgTGF5ZXJUcmVlSG9zdDo6c2Nyb2xsTm9u
Q29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSB7IH0KIGlubGluZSB2
b2lkIExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludCgpIHsgfQotaW5saW5lIGJvb2wgTGF5ZXJU
cmVlSG9zdDo6Zm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgeyByZXR1cm4gZmFsc2U7IH0K
K2lubGluZSBib29sIExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludEFzeW5jKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mKSB7IHJldHVybiBmYWxzZTsgfQogaW5saW5lIHZvaWQgTGF5ZXJUcmVl
SG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgeyB9CiBpbmxpbmUg
dm9pZCBMYXllclRyZWVIb3N0OjpwYXVzZVJlbmRlcmluZygpIHsgfQogaW5saW5lIHZvaWQgTGF5
ZXJUcmVlSG9zdDo6cmVzdW1lUmVuZGVyaW5nKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA1M2ZmYmMyZmU1ODUwZjVlMzhhM2I5
ZjI2YzcxZDJlYzI1YjE0NGE0Li4xNmZkM2MzNjRmYzdlYjlkYjlmMzE4NTlmNjcyZjQyMTVmNTVi
NWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3Vs
ZCBiZSBwdXJlIHZpcnR1YWwuCiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpIHsgfQot
ICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnRBc3luYyhXZWJQYWdlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVy
VHJlZVN0YXRlSXNGcm96ZW4oYm9vbCkgeyB9CiAgICAgdmlydHVhbCBib29sIGxheWVyVHJlZVN0
YXRlSXNGcm96ZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCmluZGV4IDBhZjQwMTk0ODQw
YWZlNjg4OGE4NjEzODJmZGQ2YzllNGUyNmQxYzkuLjI3ZjkzNmYzMTkwNGUxNTgzNDY0NTQxZjVk
MDVhOTEwMzBjMjEwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYS5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBs
YXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1JlbmRl
cmluZ1N1c3BlbmRlZDsgfQogCiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoKSBvdmVycmlkZTsKLSAg
ICBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQpIG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdm9pZCBmb3JjZVJlcGFpbnRBc3luYyhXZWJQYWdlJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0Vmlld0V4cG9zZWRSZWN0
KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pIG92ZXJyaWRlOwogICAgIE9wdGlvbmFsPFdl
YkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV92aWV3RXhwb3NlZFJlY3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCBhMDIzMjI4NzE2YTFlZTQxNTljMTI0OWY1
ZmI1MDE0NjcyZjIzNWNkLi5lYjZiZDgzMjFiZjU4NGU5MGY0MjAxYjcyNjA5NTU2Yzg3ZTg4YjI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLm1tCkBAIC0xODQsNiArMTg0LDEyIEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWE6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKQogICAgIERl
YnVnUGFnZU92ZXJsYXlzOjpzZXR0aW5nc0NoYW5nZWQoKm1fd2ViUGFnZS5jb3JlUGFnZSgpKTsK
IH0KIAordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50QXN5bmMo
V2ViUGFnZSYgcGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIHBhZ2UuZm9yY2VSZXBhaW50V2l0aG91dENhbGxiYWNrKCk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKK30KKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggMzFhMTRjMTI3ZDhjZTMzNDIyNTUwZWFhM2VhNGY0ODUyOWRmNWJkOS4u
NWZkNGZkNjBlODZmMjAyN2UxYjVjNjdjYjhmMzk5NDQwNzY4OWUxZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM3MTksMTMgKzM3MTksOSBA
QCB2b2lkIFdlYlBhZ2U6OmZvcmNlUmVwYWludFdpdGhvdXRDYWxsYmFjaygpCiAgICAgbV9kcmF3
aW5nQXJlYS0+Zm9yY2VSZXBhaW50KCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50
KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAobV9k
cmF3aW5nQXJlYS0+Zm9yY2VSZXBhaW50QXN5bmMoY2FsbGJhY2tJRCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGZvcmNlUmVwYWludFdpdGhvdXRDYWxsYmFjaygpOwotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKKyAgICBtX2RyYXdp
bmdBcmVhLT5mb3JjZVJlcGFpbnRBc3luYygqdGhpcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGU3YTJiNzliMzYxOTU2M2U4MDFlMjRlYjM3NWY3ZjhiYzliMzFmOGMu
LjlkMWE1MWRkOWM5YWM2NTdjN2RhYmFhNGU2YzQ0YjU4YjQzNGJlNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1NjcsNyArMTU2Nyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdl
YkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRlbnRXb3JsZElkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJik7CiAgICAgdm9pZCBydW5K
YXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnMmJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29uc3Qgc3RkOjpw
YWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxkRGF0YSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRpb25hbDxX
ZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKLSAgICB2b2lkIGZvcmNlUmVwYWludChD
YWxsYmFja0lEKTsKKyAgICB2b2lkIGZvcmNlUmVwYWludChDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RS
ZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENhbGxi
YWNrSUQpOwogCiAgICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAyZWFiZGNmOTQzYmQwMDA0MjIwY2IwMzY0YTM1MTM3
ZDJmZTllMmJlLi5kZTQwOTE5NDdhYjQzYjcyODI0NDczZjkyZjJhOTI5YTI1OWZlNjE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KQEAgLTIyMiw3ICsyMjIsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
KGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAgICAg
UnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpSdW5KYXZh
U2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIHN0ZDo6cGFpcjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXIs
IFN0cmluZz4gd29ybGQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwgT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscykgQXN5bmMKIAotICAgIEZvcmNl
UmVwYWludChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBGb3JjZVJlcGFpbnQo
KSAtPiAoKSBBc3luYwogICAgIFNlbGVjdEFsbCgpCiAgICAgU2NoZWR1bGVGdWxsRWRpdG9yU3Rh
dGVVcGRhdGUoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4
IDM4NzZmNDZhYmFmMDYxMTMzM2IyMWY3M2RhNGZhZmRkZTk2MTc0OTcuLmI0ZWZmZmZmOGY3MmY2
YmVhMjRhNWFkMTQ4NzE5ZGNjZGQ1YjgwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY3JvbGwo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgc2Nyb2xsRGVsdGEpIG92ZXJyaWRlIHsgfQogCiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoKSBv
dmVycmlkZTsKLSAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQpIG92ZXJyaWRl
OworICAgIHZvaWQgZm9yY2VSZXBhaW50QXN5bmMoV2ViUGFnZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVu
KGJvb2wpIG92ZXJyaWRlOwogICAgIGJvb2wgbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLm1tCmluZGV4IDVlZGMwZjFkYTVlMjNjMmEyZTMyNmUxOTIyNzNjOGE4NjdiYTViZjEuLjlm
MWYwZmVmM2UzMzdlMzI1OGMyY2ExNDZmZDBlMGEzYjIwMTllZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTE3MywxNiArMTczLDE5IEBAIHZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludCgpCiAgICAgW0NBVHJhbnNh
Y3Rpb24gc3luY2hyb25pemVdOwogfQogCi1ib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjpmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmb3JjZVJlcGFpbnRBc3luYyhXZWJQYWdlJiBwYWdl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
aWYgKG1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChtX2xheWVyVHJlZVN0YXRlSXNGcm96ZW4pIHsKKyAgICAgICAgcGFnZS5mb3JjZVJlcGFp
bnRXaXRob3V0Q2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgfQogCi0gICAgZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9u
KFt0aGlzLCBjYWxsYmFja0lEXSB7CisgICAgZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNj
cm9sbFBvc2l0aW9uKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoKTsKICAgICAgICAgbV93ZWJQYWdlLmRyYXdpbmdBcmVhKCktPmZvcmNlUmVwYWludCgpOwot
ICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJh
Y2soY2FsbGJhY2tJRCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwot
ICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjpzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wgbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416726</attachid>
            <date>2020-12-23 15:22:52 -0800</date>
            <delta_ts>2021-01-05 12:38:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212269-20201223152252.patch</filename>
            <type>text/plain</type>
            <size>29304</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM0YzY2Y2U2N2U1ODA5YThk
NjNmMjdjYTBiZWI1MDk1ZGVhZDJkNWYuLmM0NWE4ZjNjOTkyMDI0MTM0ZjU3MGMwMWZhYTkzYjVi
ZGNkZGZjNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjAtMTItMjMgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIFdlYlBh
Z2U6OkZvcmNlUmVwYWludCB1c2UgQ29tcGxldGlvbkhhbmRsZXIgaW5zdGVhZCBvZiBWb2lkQ2Fs
bGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MjI2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eCBhIGZldyB1bnNhZmUgcG9pbnRlciB1c2VzIGFsb25nIHRoZSB3YXkuCisgICAgICAgIE5vIGNo
YW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
OgorICAgICAgICAoV0tQYWdlRm9yY2VSZXBhaW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVmll
d0dlc3R1cmVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250
cm9sbGVyOjpmb3JjZVJlcGFpbnRJZk5lZWRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zm9yY2VSZXBhaW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW06Cisg
ICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgZW50ZXJGdWxsU2NyZWVuXSk6
CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgX2NvbXBsZXRlZEV4aXRG
dWxsU2NyZWVuXSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGRl
YWxsb2NdKToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBmaW5pc2hl
ZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uOl0pOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyIGNvbXBsZXRlRmluaXNoRXhpdEZ1bGxTY3JlZW5BbmltYXRpb25BZnRlclJl
cGFpbnRdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmZvcmNlUmVwYWludEFzeW5jKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNv
b3JkaW5hdGVkR3JhcGhpY3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJU
cmVlSG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVIb3N0Ojpmb3JjZVJlcGFpbnRBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhv
c3Q6OnJlbmRlck5leHRGcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVIb3N0Ojpmb3JjZVJlcGFpbnRBc3luYyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpmb3JjZVJlcGFp
bnRBc3luYyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Zm9yY2VSZXBhaW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgor
ICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Zm9yY2VSZXBh
aW50QXN5bmMpOgorCiAyMDIwLTEyLTIyICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlA
YXBwbGUuY29tPgogCiAgICAgICAgIENhbm5vdCBzZWUgJ0FkZCB0byBteSBzdGF0aW9ucycgYnV0
dG9uIGluIEJCQyBXb3JsZCBzZXJ2aWNlIFJhZGlvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcAppbmRleCAyMjRkYzE4MTE1NDFhMmQyMTJmNDRlYjg3NDVhYmIyMWM3YTEx
NTQwLi4yYzFhMWNmNTM5NWM5MThhMGZiN2I3MzNkNTJjNjMzNGMxOGZiZWJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI1NzMsOSArMjU3Myw5IEBAIHZv
aWQgV0tQYWdlR2V0Q29udGVudHNBc01IVE1MRGF0YShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCog
Y29udGV4dCwgV0tQYWdlR2V0Q29uCiAKIHZvaWQgV0tQYWdlRm9yY2VSZXBhaW50KFdLUGFnZVJl
ZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VGb3JjZVJlcGFpbnRGdW5jdGlvbiBjYWxs
YmFjaykKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPmZvcmNlUmVwYWludChWb2lkQ2FsbGJhY2s6
OmNyZWF0ZShbY29udGV4dCwgY2FsbGJhY2tdKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgewotICAgICAgICBjYWxsYmFjayhlcnJvciA9PSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3I6Ok5vbmUgPyBudWxscHRyIDogdG9BUEkoQVBJOjpFcnJvcjo6Y3JlYXRlKCkucHRyKCkp
LCBjb250ZXh0KTsKLSAgICB9KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5mb3JjZVJlcGFpbnQo
W2NvbnRleHQsIGNhbGxiYWNrXSgpIHsKKyAgICAgICAgY2FsbGJhY2sobnVsbHB0ciwgY29udGV4
dCk7CisgICAgfSk7CiB9CiAKIFdLX0VYUE9SVCBXS1VSTFJlZiBXS1BhZ2VDb3B5UGVuZGluZ0FQ
SVJlcXVlc3RVUkwoV0tQYWdlUmVmIHBhZ2VSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAppbmRleCBmOWVjMzRlMWUyN2RlYzMwYzZk
MWIzNTI1YTNmMGFkNzg2YjA4ZDk1Li5hN2U2ZjBkMTkwMzFlMjA4MGZmZDNmN2Y0ODk5NzVlMWU4
Y2MxZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5jcHAKQEAgLTU2MCwxMCArNTYwLDEwIEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9s
bGVyOjpmb3JjZVJlcGFpbnRJZk5lZWRlZCgpCiAKICAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFn
ZVByb3h5LmlkZW50aWZpZXIoKTsKICAgICBHZXN0dXJlSUQgZ2VzdHVyZUlEID0gbV9jdXJyZW50
R2VzdHVyZUlEOwotICAgIG1fd2ViUGFnZVByb3h5LmZvcmNlUmVwYWludChWb2lkQ2FsbGJhY2s6
OmNyZWF0ZShbcGFnZUlELCBnZXN0dXJlSURdIChDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
CisgICAgbV93ZWJQYWdlUHJveHkuZm9yY2VSZXBhaW50KFtwYWdlSUQsIGdlc3R1cmVJRF0gKCkg
ewogICAgICAgICBpZiAoYXV0byBnZXN0dXJlQ29udHJvbGxlciA9IGNvbnRyb2xsZXJGb3JHZXN0
dXJlKHBhZ2VJRCwgZ2VzdHVyZUlEKSkKICAgICAgICAgICAgIGdlc3R1cmVDb250cm9sbGVyLT5y
ZW1vdmVTd2lwZVNuYXBzaG90KCk7Ci0gICAgfSkpOworICAgIH0pOwogfQogCiB2b2lkIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6d2lsbEVuZFN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtJiB0YXJnZXRJdGVtLCBib29sIGNhbmNlbGxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IDU3MTZkNjdkNzAwZTJkMWE5N2IzMDRhMjk0OWFhYmNhMjQz
NThkNWMuLmM4MjIzOTdmZDRlYjFlMWEyMGM5NGY1NWRjM2UyZWFmOTc5YzRmMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDE5OSwzOCArNDE5OSwxOCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSog
ZnJhbWUsIEZ1bmN0aW9uPHZvaWQgKEFQSQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dFdlYkFyY2hpdmVPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNh
bGxiYWNrKQordm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7
Ci0gICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgcGFnZSBpcyBpbnZhbGlkIHdlIHNob3VsZCBub3Qg
Y2FsbCB0aGUgY2FsbGJhY2suIEl0J2QgYmUgYmV0dGVyIHRvIGp1c3QgcmV0dXJuIGZhbHNlIGZy
b20gZm9yY2VSZXBhaW50LgotICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZShDYWxsYmFja0Jh
c2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGRpZEZvcmNlUmVwYWlu
dENhbGxiYWNrID0gW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhbGxiYWNr
QmFzZTo6RXJyb3IgZXJyb3IpIG11dGFibGUgewotICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6Tm9uZSkgewotICAgICAgICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUo
ZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKIAotICAgICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRl
KENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgCi0gICAgICAgIGNhbGxBZnRlck5leHRQcmVzZW50YXRp
b25VcGRhdGUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhbGxiYWNrQmFzZTo6RXJy
b3IgZXJyb3IpIHsKLSAgICAgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9y
OjpOb25lKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUoZXJyb3IpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICBtX2RyYXdpbmdBcmVh
LT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsKIAotICAgICAgICAgICAg
Y2FsbGJhY2stPnBlcmZvcm1DYWxsYmFjaygpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUGFnZTo6Rm9yY2VSZXBhaW50KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgewor
ICAgICAgICBjYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlKFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSAoYXV0bykgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFjaygpOwog
ICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojpmb3JjZVJlcGFpbnQiX3MpKTsK
LSAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQo
KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGb3JjZVJlcGFpbnQoY2FsbGJhY2tJRCkp
OworICAgIH0pOwogfQogCiBzdGF0aWMgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gcHJpbnRp
bmdTZW5kT3B0aW9ucyhib29sIGlzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwZGY2MTZiNzZmYjc1MDMzZWYyMDE3
OWZlNWIyOTZmMjgzNTVlM2UxLi41N2MxNTAxY2YwMzE2ZGFlNGY2NTg2ZjJlZDM0NGE5ZDJiZTMx
NDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTE1NCw3ICsx
MTU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQ
cm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXZWJDb3JlOjpSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFJlZlB0cjxB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiYp
PiYmKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXZWJDb3Jl
OjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+LCBBUEk6OkNvbnRlbnRXb3JsZCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscz4mJik+JiYpOwotICAgIHZvaWQgZm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJh
Y2s+JiYpOworICAgIHZvaWQgZm9yY2VSZXBhaW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAKICAgICBmbG9hdCBoZWFkZXJIZWlnaHQoV2ViRnJhbWVQcm94eSYpOwogICAgIGZsb2F0
IGZvb3RlckhlaWdodChXZWJGcmFtZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlcklPUy5tbQppbmRleCAyZDlmM2M2MGEzMjY1YTBjYzEzNGI3OWM1OGQy
ZDBmZTQyNDFiNzAwLi5hOWFjNmQxYTQ5ZjdjN2EwZmI1NDBhOWQ4ZjkwNWI1ODk0NTg3ZWU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KQEAgLTQ2
MCw3ICs0NjAsNiBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxVSVdpbmRvdz4gX3dpbmRvdzsK
ICAgICBSZXRhaW5QdHI8VUlWaWV3Q29udHJvbGxlcj4gX3Jvb3RWaWV3Q29udHJvbGxlcjsKIAot
ICAgIFJlZlB0cjxXZWJLaXQ6OlZvaWRDYWxsYmFjaz4gX3JlcGFpbnRDYWxsYmFjazsKICAgICBS
ZXRhaW5QdHI8VUlWaWV3Q29udHJvbGxlcj4gX3ZpZXdDb250cm9sbGVyRm9yUHJlc2VudGF0aW9u
OwogICAgIFJldGFpblB0cjxXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlcj4gX2Z1bGxzY3JlZW5W
aWV3Q29udHJvbGxlcjsKICAgICBSZXRhaW5QdHI8VUlTd2lwZUdlc3R1cmVSZWNvZ25pemVyPiBf
c3RhcnREaXNtaXNzR2VzdHVyZVJlY29nbml6ZXI7CkBAIC02MjQsOSArNjIzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgYXJndW1lbnRzLnVzZXJab29tID0gMTsKICAgICAgICAgcGFnZS0+c2V0T3Zl
cnJpZGVWaWV3cG9ydEFyZ3VtZW50cyhhcmd1bWVudHMpOwogCi0gICAgICAgIF9yZXBhaW50Q2Fs
bGJhY2sgPSBXZWJLaXQ6OlZvaWRDYWxsYmFjazo6Y3JlYXRlKFtwcm90ZWN0ZWRTZWxmID0gcmV0
YWluUHRyKHNlbGYpLCBzZWxmXShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKLSAgICAg
ICAgICAgIF9yZXBhaW50Q2FsbGJhY2sgPSBudWxscHRyOwotCisgICAgICAgIHBhZ2UtPmZvcmNl
UmVwYWludChbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgc2VsZl0gewogICAgICAg
ICAgICAgaWYgKF9leGl0UmVxdWVzdGVkKSB7CiAgICAgICAgICAgICAgICAgX2V4aXRSZXF1ZXN0
ZWQgPSBOTzsKICAgICAgICAgICAgICAgICBbc2VsZiBfZXhpdEZ1bGxzY3JlZW5JbW1lZGlhdGVs
eV07CkBAIC02NDEsNyArNjM4LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICAgICAgW3NlbGYgX2V4aXRGdWxsc2NyZWVuSW1tZWRpYXRlbHld
OwogICAgICAgICB9KTsKLSAgICAgICAgcGFnZS0+Zm9yY2VSZXBhaW50KF9yZXBhaW50Q2FsbGJh
Y2suY29weVJlZigpKTsKIAogICAgICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogICAgIH1d
OwpAQCAtODMzLDEzICs4MjksNyBAQCBwcml2YXRlOgogICAgIFtfd2luZG93IHNldEhpZGRlbjpZ
RVNdOwogICAgIF93aW5kb3cgPSBuaWw7CiAKLSAgICBpZiAoX3JlcGFpbnRDYWxsYmFjaykgewot
ICAgICAgICBfcmVwYWludENhbGxiYWNrLT5pbnZhbGlkYXRlKFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7Ci0gICAgICAgIEFTU0VSVCghX3JlcGFpbnRD
YWxsYmFjayk7Ci0gICAgfQotCi0gICAgX3JlcGFpbnRDYWxsYmFjayA9IFdlYktpdDo6Vm9pZENh
bGxiYWNrOjpjcmVhdGUoW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIHNlbGZdKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgewotICAgICAgICBfcmVwYWludENhbGxiYWNrID0g
bnVsbHB0cjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVy
KFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBzZWxmXSB7CiAgICAgICAgIF93ZWJW
aWV3UGxhY2Vob2xkZXIuZ2V0KCkucGFyZW50ID0gbmlsOwogICAgICAgICBbX3dlYlZpZXdQbGFj
ZWhvbGRlciByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKIApAQCAtODU4LDkgKzg0OCw5IEBAIHByaXZh
dGU6CiAKICAgICBhdXRvKiBwYWdlID0gW3NlbGYuX3dlYlZpZXcgX3BhZ2VdLmdldCgpOwogICAg
IGlmIChwYWdlICYmIHBhZ2UtPmlzVmlld0ZvY3VzZWQoKSkKLSAgICAgICAgcGFnZS0+Zm9yY2VS
ZXBhaW50KF9yZXBhaW50Q2FsbGJhY2suY29weVJlZigpKTsKKyAgICAgICAgcGFnZS0+Zm9yY2VS
ZXBhaW50KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBlbHNlCi0gICAgICAgIF9y
ZXBhaW50Q2FsbGJhY2stPnBlcmZvcm1DYWxsYmFjaygpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogCiAgICAgW19mdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIgc2V0UHJlZmVyc1N0YXR1
c0JhckhpZGRlbjpZRVNdOwogICAgIF9mdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIgPSBuaWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIuaAppbmRleCBkYTU4YjllOWUwOTFkODBkOGNlNjQyOGUxMzU3OWY0NDFj
Y2EwNDcyLi5kMTk3MjkyNjU1YzYxYmE2YzZiYjM4YTEzODg1N2Y0ZGU1NjcxYzk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLmgKQEAgLTYyLDcgKzYyLDYgQEAgdHlwZWRlZiBlbnVtIEZ1bGxTY3JlZW5T
dGF0ZSA6IE5TSW50ZWdlciBGdWxsU2NyZWVuU3RhdGU7CiAgICAgRnVsbFNjcmVlblN0YXRlIF9m
dWxsU2NyZWVuU3RhdGU7CiAKICAgICBkb3VibGUgX3NhdmVkU2NhbGU7Ci0gICAgUmVmUHRyPFdl
YktpdDo6Vm9pZENhbGxiYWNrPiBfcmVwYWludENhbGxiYWNrOwogICAgIGZsb2F0IF9zYXZlZFRv
cENvbnRlbnRJbnNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQppbmRleCBmNGFiNDRjODM3
ZjM4YzA2YjRkYWRlY2YwNmU2MTU5NWE5NTgxN2FiLi5hM2VkNjRkYjAzM2RmMGI3OTQxZThkODQy
MGQ0YTM4NWY1ODc4YWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQpAQCAtMTU1LDEzICsxNTUs
NiBAQCBzdGF0aWMgdm9pZCBtYWtlUmVzcG9uZGVyRmlyc3RSZXNwb25kZXJJZkRlc2NlbmRhbnRP
ZlZpZXcoTlNXaW5kb3cgKndpbmRvdywgTlNSZQogICAgIAogICAgIFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07CiAKLSAgICBpZiAoX3Jl
cGFpbnRDYWxsYmFjaykgewotICAgICAgICBfcmVwYWludENhbGxiYWNrLT5pbnZhbGlkYXRlKFdl
YktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7Ci0gICAgICAg
IC8vIGludmFsaWRhdGUoKSBjYWxscyBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0
aW9uQWZ0ZXJSZXBhaW50LCB3aGljaAotICAgICAgICAvLyBjbGVhcnMgX3JlcGFpbnRDYWxsYmFj
ay4KLSAgICAgICAgQVNTRVJUKCFfcmVwYWludENhbGxiYWNrKTsKLSAgICB9Ci0KICAgICBfdmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Q2xpZW50LnNldFBhcmVudChudWxscHRyKTsKIAogICAg
IFtzdXBlciBkZWFsbG9jXTsKQEAgLTU3NCwxNiArNTY3LDkgQEAgc3RhdGljIFJldGFpblB0cjxD
R0ltYWdlUmVmPiB0YWtlV2luZG93U25hcHNob3QoQ0dTV2luZG93SUQgd2luZG93SUQsIGJvb2wg
Y2FwdHUKICAgICBbc2VsZiBfbWFuYWdlcl0tPnJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogICAg
IF9wYWdlLT5zZXRUb3BDb250ZW50SW5zZXQoX3NhdmVkVG9wQ29udGVudEluc2V0KTsKIAotICAg
IGlmIChfcmVwYWludENhbGxiYWNrKSB7Ci0gICAgICAgIF9yZXBhaW50Q2FsbGJhY2stPmludmFs
aWRhdGUoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsK
LSAgICAgICAgLy8gaW52YWxpZGF0ZSgpIGNhbGxzIGNvbXBsZXRlRmluaXNoRXhpdEZ1bGxTY3Jl
ZW5BbmltYXRpb25BZnRlclJlcGFpbnQsIHdoaWNoCi0gICAgICAgIC8vIGNsZWFycyBfcmVwYWlu
dENhbGxiYWNrLgotICAgICAgICBBU1NFUlQoIV9yZXBhaW50Q2FsbGJhY2spOwotICAgIH0KLSAg
ICBfcmVwYWludENhbGxiYWNrID0gV2ViS2l0OjpWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbc2VsZl0o
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7Ci0gICAgICAgIFtzZWxmIGNvbXBsZXRlRmlu
aXNoRXhpdEZ1bGxTY3JlZW5BbmltYXRpb25BZnRlclJlcGFpbnRdOworICAgIF9wYWdlLT5mb3Jj
ZVJlcGFpbnQoW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlcj4oc2VsZildIHsKKyAgICAgICAgW3dlYWtTZWxmIGNvbXBsZXRlRmluaXNoRXhpdEZ1bGxT
Y3JlZW5BbmltYXRpb25BZnRlclJlcGFpbnRdOwogICAgIH0pOwotICAgIF9wYWdlLT5mb3JjZVJl
cGFpbnQoX3JlcGFpbnRDYWxsYmFjay5jb3B5UmVmKCkpOwogCiAgICAgW0NBVHJhbnNhY3Rpb24g
Y29tbWl0XTsKICAgICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07CkBAIC02MDUsNyArNTkxLDYgQEAg
c3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiB0YWtlV2luZG93U25hcHNob3QoQ0dTV2luZG93
SUQgd2luZG93SUQsIGJvb2wgY2FwdHUKICAgICBbW193ZWJWaWV3IHdpbmRvd10gbWFrZUtleUFu
ZE9yZGVyRnJvbnQ6c2VsZl07CiAgICAgX3dlYlZpZXdQbGFjZWhvbGRlciA9IG5pbDsKICAgICAK
LSAgICBfcmVwYWludENhbGxiYWNrID0gbnVsbHB0cjsKICAgICBfcGFnZS0+c2V0U3VwcHJlc3NW
aXNpYmlsaXR5VXBkYXRlcyhmYWxzZSk7CiAgICAgX3BhZ2UtPnNldE5lZWRzRE9NV2luZG93UmVz
aXplRXZlbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9E
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IDRmMWExZmYxZTQ0NzZjZDhi
MjcyZWIxNDEwMDAxNTk0MzI5NmViMTkuLjY4MmM5NzE3ZTFkNzg4ZjkzZDZhMDRmNjJhZmYxMDg1
NmFjYzNlNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Ry
YXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTIxMywxMiArMjEzLDE3IEBAIHZv
aWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpmb3JjZVJlcGFpbnQoKQogICAgICAg
ICB9CiB9CiAKLWJvb2wgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpmb3JjZVJlcGFp
bnRBc3luYyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0
ZWRHcmFwaGljczo6Zm9yY2VSZXBhaW50QXN5bmMoV2ViUGFnZSYgcGFnZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChtX2xheWVyVHJl
ZVN0YXRlSXNGcm96ZW4pCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9sYXllclRy
ZWVTdGF0ZUlzRnJvemVuKSB7CisgICAgICAgIHBhZ2UuZm9yY2VSZXBhaW50V2l0aG91dENhbGxi
YWNrKCk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0KIAotICAg
IHJldHVybiBtX2xheWVyVHJlZUhvc3QgJiYgbV9sYXllclRyZWVIb3N0LT5mb3JjZVJlcGFpbnRB
c3luYyhjYWxsYmFja0lEKTsKKyAgICBpZiAobV9sYXllclRyZWVIb3N0KQorICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPmZvcmNlUmVwYWludEFzeW5jKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQgRHJh
d2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJv
b2wgaXNGcm96ZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3
aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaAppbmRleCA4MzQ3Y2ZjZjNkYzk2NTUzMWFmZGUw
N2U5OWY4YjNjMWE0ZDdmOGVhLi5iYjQwOTRiNTMwNjlmYWIzZjkyYTRkMDNmNWI1Y2VhMjJjYTFj
MzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0Fy
ZWFDb29yZGluYXRlZEdyYXBoaWNzLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEpIG92ZXJyaWRlOwogICAgIHZvaWQg
Zm9yY2VSZXBhaW50KCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxs
YmFja0lEKSBvdmVycmlkZTsKKyAgICB2b2lkIGZvcmNlUmVwYWludEFzeW5jKFdlYlBhZ2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRMYXll
clRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIG92ZXJyaWRlOwogICAgIGJvb2wgbGF5ZXJUcmVlU3Rh
dGVJc0Zyb3plbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGF5ZXJUcmVlU3RhdGVJc0Zy
b3plbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXgg
ODY4NWUyM2QwZDQ2ODYwMWM0NTk5NTQ3NzVmZTZmNTY1YjBjZTdhYy4uNDA3ZjRmM2ZiMWZjNjlh
NmJlMzY2YTRhNWZiMzdiM2RkNGJiMjI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUhvc3QuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBMYXllclRyZWVIb3N0Ojps
YXllckZsdXNoVGltZXJGaXJlZCgpCiAKICAgICAvLyBJZiBhIGZvcmNlLXJlcGFpbnQgY2FsbGJh
Y2sgd2FzIHJlZ2lzdGVyZWQsIHdlIHNob3VsZCBmb3JjZSBhICdmcmFtZSBzeW5jJyB0aGF0CiAg
ICAgLy8gd2lsbCBndWFyYW50ZWUgdXMgYSBjYWxsIHRvIHJlbmRlck5leHRGcmFtZSgpIG9uY2Ug
dGhlIHVwZGF0ZSBpcyBjb21wbGV0ZS4KLSAgICBpZiAobV9mb3JjZVJlcGFpbnRBc3luYy5jYWxs
YmFja0lEKQorICAgIGlmIChtX2ZvcmNlUmVwYWludEFzeW5jLmNhbGxiYWNrKQogICAgICAgICBt
X2Nvb3JkaW5hdG9yLmZvcmNlRnJhbWVTeW5jKCk7CiAKICAgICBib29sIGRpZFN5bmMgPSBtX2Nv
b3JkaW5hdG9yLmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOwpAQCAtMTkwLDE2ICsxOTAsMTUg
QEAgdm9pZCBMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnQoKQogICAgIG1fY29tcG9zaXRvci0+
Zm9yY2VSZXBhaW50KCk7CiB9CiAKLWJvb2wgTGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50QXN5
bmMoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFp
bnRBc3luYyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgc2No
ZWR1bGVMYXllckZsdXNoKCk7CiAKICAgICAvLyBXZSB3YW50IGEgY2xlYW4gcmVwYWludCwgbWVh
bmluZyB0aGF0IGlmIHdlJ3JlIGN1cnJlbnRseSB3YWl0aW5nIGZvciB0aGUgcmVuZGVyZXIKICAg
ICAvLyB0byBmaW5pc2ggYW4gdXBkYXRlLCB3ZSdsbCBoYXZlIHRvIHNjaGVkdWxlIGFub3RoZXIg
Zmx1c2ggd2hlbiBpdCdzIGRvbmUuCi0gICAgQVNTRVJUKCFtX2ZvcmNlUmVwYWludEFzeW5jLmNh
bGxiYWNrSUQpOwotICAgIG1fZm9yY2VSZXBhaW50QXN5bmMuY2FsbGJhY2tJRCA9IE9wdGlvbmFs
Q2FsbGJhY2tJRChjYWxsYmFja0lEKTsKKyAgICBBU1NFUlQoIW1fZm9yY2VSZXBhaW50QXN5bmMu
Y2FsbGJhY2spOworICAgIG1fZm9yY2VSZXBhaW50QXN5bmMuY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsKICAgICBtX2ZvcmNlUmVwYWludEFzeW5jLm5lZWRzRnJlc2hGbHVzaCA9IG1fc2No
ZWR1bGVkV2hpbGVXYWl0aW5nRm9yUmVuZGVyZXI7Ci0gICAgcmV0dXJuIHRydWU7CiB9CiAKIHZv
aWQgTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBzaXplKQpAQCAt
NDA1LDcgKzQwNCw3IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdDo6cmVuZGVyTmV4dEZyYW1lKGJvb2wg
Zm9yY2VSZXBhaW50KQogICAgIGJvb2wgc2NoZWR1bGVkV2hpbGVXYWl0aW5nRm9yUmVuZGVyZXIg
PSBzdGQ6OmV4Y2hhbmdlKG1fc2NoZWR1bGVkV2hpbGVXYWl0aW5nRm9yUmVuZGVyZXIsIGZhbHNl
KTsKICAgICBtX2Nvb3JkaW5hdG9yLnJlbmRlck5leHRGcmFtZSgpOwogCi0gICAgaWYgKG1fZm9y
Y2VSZXBhaW50QXN5bmMuY2FsbGJhY2tJRCkgeworICAgIGlmIChtX2ZvcmNlUmVwYWludEFzeW5j
LmNhbGxiYWNrKSB7CiAgICAgICAgIC8vIElmIHRoZSBhc3luY2hyb25vdXMgZm9yY2UtcmVwYWlu
dCBuZWVkcyBhIHNlcGFyYXRlIGZyZXNoIGZsdXNoLCBpdCB3YXMgZHVlIHRvCiAgICAgICAgIC8v
IHRoZSBmb3JjZS1yZXBhaW50IHJlcXVlc3QgYmVpbmcgcmVnaXN0ZXJlZCB3aGlsZSBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Qgd2FzCiAgICAgICAgIC8vIHdhaXRpbmcgZm9yIHRoZSByZW5kZXJl
ciB0byBmaW5pc2ggYW4gdXBkYXRlLgpAQCAtNDE0LDEwICs0MTMsOCBAQCB2b2lkIExheWVyVHJl
ZUhvc3Q6OnJlbmRlck5leHRGcmFtZShib29sIGZvcmNlUmVwYWludCkKICAgICAgICAgLy8gRXhl
Y3V0ZSB0aGUgY2FsbGJhY2sgaWYgYW5vdGhlciBsYXllciBmbHVzaCBhbmQgdGhlIHN1YnNlcXVl
bnQgc3RhdGUgdXBkYXRlCiAgICAgICAgIC8vIGFyZW4ndCBuZWVkZWQuIElmIHRoZXkgYXJlLCB0
aGUgY2FsbGJhY2sgd2lsbCBiZSBleGVjdXRlZCB3aGVuIHRoaXMgZnVuY3Rpb24KICAgICAgICAg
Ly8gaXMgY2FsbGVkIGFmdGVyIHRoZSBuZXh0IHVwZGF0ZS4KLSAgICAgICAgaWYgKCFtX2ZvcmNl
UmVwYWludEFzeW5jLm5lZWRzRnJlc2hGbHVzaCkgewotICAgICAgICAgICAgbV93ZWJQYWdlLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKG1fZm9yY2VSZXBhaW50QXN5
bmMuY2FsbGJhY2tJRC5jYWxsYmFja0lEKCkpKTsKLSAgICAgICAgICAgIG1fZm9yY2VSZXBhaW50
QXN5bmMuY2FsbGJhY2tJRCA9IE9wdGlvbmFsQ2FsbGJhY2tJRCgpOwotICAgICAgICB9CisgICAg
ICAgIGlmICghbV9mb3JjZVJlcGFpbnRBc3luYy5uZWVkc0ZyZXNoRmx1c2gpCisgICAgICAgICAg
ICBtX2ZvcmNlUmVwYWludEFzeW5jLmNhbGxiYWNrKCk7CiAgICAgICAgIG1fZm9yY2VSZXBhaW50
QXN5bmMubmVlZHNGcmVzaEZsdXNoID0gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDM0ZDcyMTA0YWU5MzJjNWViNTFkY2YxMGU1OTc2
ZGQ0OGQ2OGNiZTIuLjY3MjdkMTZjOGMwYjg2YzE1ZmYzMWFmMDM4YWE5ZDc1ODg1Mjc1NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oCkBAIC03OSw3ICs3OSw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmKTsKICAgICB2b2lkIGZvcmNlUmVwYWludCgpOwotICAgIGJvb2wgZm9y
Y2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBmb3JjZVJlcGFpbnRBc3luYyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2l6ZURpZENoYW5nZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKTsKIAogICAgIHZvaWQgcGF1c2VSZW5kZXJpbmco
KTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxUaHJlYWRlZENvbXBv
c2l0b3I+IG1fY29tcG9zaXRvcjsKICAgICBTaW1wbGVWaWV3cG9ydENvbnRyb2xsZXIgbV92aWV3
cG9ydENvbnRyb2xsZXI7CiAgICAgc3RydWN0IHsKLSAgICAgICAgT3B0aW9uYWxDYWxsYmFja0lE
IGNhbGxiYWNrSUQ7CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gY2FsbGJhY2s7
CiAgICAgICAgIGJvb2wgbmVlZHNGcmVzaEZsdXNoIHsgZmFsc2UgfTsKICAgICB9IG1fZm9yY2VS
ZXBhaW50QXN5bmM7CiAgICAgUnVuTG9vcDo6VGltZXI8TGF5ZXJUcmVlSG9zdD4gbV9sYXllckZs
dXNoVGltZXI7CkBAIC0yMTMsNyArMjEzLDcgQEAgaW5saW5lIHZvaWQgTGF5ZXJUcmVlSG9zdDo6
c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIHsgfQogaW5s
aW5lIHZvaWQgTGF5ZXJUcmVlSG9zdDo6c2V0Vmlld092ZXJsYXlSb290TGF5ZXIoV2ViQ29yZTo6
R3JhcGhpY3NMYXllciopIHsgfQogaW5saW5lIHZvaWQgTGF5ZXJUcmVlSG9zdDo6c2Nyb2xsTm9u
Q29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSB7IH0KIGlubGluZSB2
b2lkIExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludCgpIHsgfQotaW5saW5lIGJvb2wgTGF5ZXJU
cmVlSG9zdDo6Zm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJhY2tJRCkgeyByZXR1cm4gZmFsc2U7IH0K
K2lubGluZSBib29sIExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludEFzeW5jKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mKSB7IHJldHVybiBmYWxzZTsgfQogaW5saW5lIHZvaWQgTGF5ZXJUcmVl
SG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgeyB9CiBpbmxpbmUg
dm9pZCBMYXllclRyZWVIb3N0OjpwYXVzZVJlbmRlcmluZygpIHsgfQogaW5saW5lIHZvaWQgTGF5
ZXJUcmVlSG9zdDo6cmVzdW1lUmVuZGVyaW5nKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3RU
ZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDZhYjYy
MmE4NDQyODk4YjA4MWJhNGNkNThhMTc4MjMwNGZkZmMzM2UuLjg0NDRhNDU0YzYwM2M2NzFhNjgx
M2E0NDU1NTBiNDA3NjFlN2ZkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdFRleHR1cmVNYXBwZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlSG9zdFRleHR1cmVNYXBwZXIuY3BwCkBAIC0yMDgsOSArMjA4LDkgQEAg
dm9pZCBMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnQoKQogICAgIGZsdXNoQW5kUmVuZGVyTGF5
ZXJzKCk7CiB9CiAKLWJvb2wgTGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50QXN5bmMoQ2FsbGJh
Y2tJRCkKK3ZvaWQgTGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50QXN5bmMoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHJldHVybiBmYWxzZTsK
KyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIExheWVyVHJlZUhvc3Q6OnNpemVE
aWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlSG9zdFRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdFRleHR1cmVNYXBwZXIuaAppbmRleCA5
OGY4ZDM3ZjY0Y2E0YzBiYWM0NmNhZmVkZTE3OWM5MDgwZjg4ODY4Li42OTM2YmUzYjc5MDkzODFj
YzZlMzllMDY4ZjVmZWQ1ZTRhNjZmNzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3RUZXh0dXJlTWFw
cGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVIb3N0VGV4dHVyZU1hcHBlci5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2b2lkIHNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50
cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoKTsKLSAg
ICBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQpOworICAgIHZvaWQgZm9yY2VSZXBh
aW50QXN5bmMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNpemVEaWRD
aGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSk7CiAgICAgdm9pZCBwYXVzZVJl
bmRlcmluZygpOwogICAgIHZvaWQgcmVzdW1lUmVuZGVyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA1M2ZmYmMyZmU1ODUwZjVl
MzhhM2I5ZjI2YzcxZDJlYzI1YjE0NGE0Li4xNmZkM2MzNjRmYzdlYjlkYjlmMzE4NTlmNjcyZjQy
MTVmNTViNWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IFRoZXNl
IHNob3VsZCBiZSBwdXJlIHZpcnR1YWwuCiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgp
IHsgfQotICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnRBc3luYyhXZWJQYWdl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
dExheWVyVHJlZVN0YXRlSXNGcm96ZW4oYm9vbCkgeyB9CiAgICAgdmlydHVhbCBib29sIGxheWVy
VHJlZVN0YXRlSXNGcm96ZW4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCmluZGV4IDBhZjQw
MTk0ODQwYWZlNjg4OGE4NjEzODJmZGQ2YzllNGUyNmQxYzkuLjI3ZjkzNmYzMTkwNGUxNTgzNDY0
NTQxZjVkMDVhOTEwMzBjMjEwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBsYXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9p
c1JlbmRlcmluZ1N1c3BlbmRlZDsgfQogCiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoKSBvdmVycmlk
ZTsKLSAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdm9pZCBmb3JjZVJlcGFpbnRBc3luYyhXZWJQYWdlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0Vmlld0V4cG9z
ZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pIG92ZXJyaWRlOwogICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV92aWV3RXhwb3NlZFJlY3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCBhMDIzMjI4NzE2YTFlZTQxNTlj
MTI0OWY1ZmI1MDE0NjcyZjIzNWNkLi5lYjZiZDgzMjFiZjU4NGU5MGY0MjAxYjcyNjA5NTU2Yzg3
ZTg4YjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLm1tCkBAIC0xODQsNiArMTg0LDEyIEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKQog
ICAgIERlYnVnUGFnZU92ZXJsYXlzOjpzZXR0aW5nc0NoYW5nZWQoKm1fd2ViUGFnZS5jb3JlUGFn
ZSgpKTsKIH0KIAordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50
QXN5bmMoV2ViUGFnZSYgcGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIHBhZ2UuZm9yY2VSZXBhaW50V2l0aG91dENhbGxiYWNrKCk7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiB2
b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9h
dCBkZXZpY2VTY2FsZUZhY3RvcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggMzFhMTRjMTI3ZDhjZTMzNDIyNTUwZWFhM2VhNGY0ODUyOWRm
NWJkOS4uNWZkNGZkNjBlODZmMjAyN2UxYjVjNjdjYjhmMzk5NDQwNzY4OWUxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM3MTksMTMgKzM3
MTksOSBAQCB2b2lkIFdlYlBhZ2U6OmZvcmNlUmVwYWludFdpdGhvdXRDYWxsYmFjaygpCiAgICAg
bV9kcmF3aW5nQXJlYS0+Zm9yY2VSZXBhaW50KCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Zm9yY2VS
ZXBhaW50KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Zm9yY2VSZXBhaW50
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBp
ZiAobV9kcmF3aW5nQXJlYS0+Zm9yY2VSZXBhaW50QXN5bmMoY2FsbGJhY2tJRCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGZvcmNlUmVwYWludFdpdGhvdXRDYWxsYmFjaygpOwotICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKKyAgICBt
X2RyYXdpbmdBcmVhLT5mb3JjZVJlcGFpbnRBc3luYygqdGhpcywgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IGU3YTJiNzliMzYxOTU2M2U4MDFlMjRlYjM3NWY3ZjhiYzli
MzFmOGMuLjlkMWE1MWRkOWM5YWM2NTdjN2RhYmFhNGU2YzQ0YjU4YjQzNGJlNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE1NjcsNyArMTU2Nyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFt
ZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIENvbnRlbnRXb3JsZElkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwg
Y29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJik7CiAgICAgdm9p
ZCBydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMmJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgY29uc3Qg
c3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxkRGF0YSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmKTsKLSAgICB2b2lkIGZvcmNlUmVw
YWludChDYWxsYmFja0lEKTsKKyAgICB2b2lkIGZvcmNlUmVwYWludChDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25h
cHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMs
IENhbGxiYWNrSUQpOwogCiAgICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAyZWFiZGNmOTQzYmQwMDA0MjIwY2IwMzY0
YTM1MTM3ZDJmZTllMmJlLi5kZTQwOTE5NDdhYjQzYjcyODI0NDczZjkyZjJhOTI5YTI1OWZlNjE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KQEAgLTIyMiw3ICsyMjIsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdD
b21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQog
CiAgICAgUnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6cGFpcjxXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50
aWZpZXIsIFN0cmluZz4gd29ybGQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0RGF0YSwg
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscykgQXN5bmMKIAotICAg
IEZvcmNlUmVwYWludChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBGb3JjZVJl
cGFpbnQoKSAtPiAoKSBBc3luYwogICAgIFNlbGVjdEFsbCgpCiAgICAgU2NoZWR1bGVGdWxsRWRp
dG9yU3RhdGVVcGRhdGUoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5o
CmluZGV4IDM4NzZmNDZhYmFmMDYxMTMzM2IyMWY3M2RhNGZhZmRkZTk2MTc0OTcuLmI0ZWZmZmZm
OGY3MmY2YmVhMjRhNWFkMTQ4NzE5ZGNjZGQ1YjgwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
Y3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgc2Nyb2xsRGVsdGEpIG92ZXJyaWRlIHsgfQogCiAgICAgdm9pZCBmb3JjZVJlcGFp
bnQoKSBvdmVycmlkZTsKLSAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKENhbGxiYWNrSUQpIG92
ZXJyaWRlOworICAgIHZvaWQgZm9yY2VSZXBhaW50QXN5bmMoV2ViUGFnZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlz
RnJvemVuKGJvb2wpIG92ZXJyaWRlOwogICAgIGJvb2wgbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLm1tCmluZGV4IDVlZGMwZjFkYTVlMjNjMmEyZTMyNmUxOTIyNzNjOGE4NjdiYTVi
ZjEuLjlmMWYwZmVmM2UzMzdlMzI1OGMyY2ExNDZmZDBlMGEzYjIwMTllZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTE3MywxNiArMTczLDE5IEBAIHZv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludCgpCiAgICAgW0NB
VHJhbnNhY3Rpb24gc3luY2hyb25pemVdOwogfQogCi1ib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjpmb3JjZVJlcGFpbnRBc3luYyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lk
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmb3JjZVJlcGFpbnRBc3luYyhXZWJQYWdl
JiBwYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgaWYgKG1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbikKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmIChtX2xheWVyVHJlZVN0YXRlSXNGcm96ZW4pIHsKKyAgICAgICAgcGFnZS5mb3Jj
ZVJlcGFpbnRXaXRob3V0Q2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgfQogCi0gICAgZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBv
c2l0aW9uKFt0aGlzLCBjYWxsYmFja0lEXSB7CisgICAgZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBk
YXRlZFNjcm9sbFBvc2l0aW9uKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoKTsKICAgICAgICAgbV93ZWJQYWdlLmRyYXdpbmdBcmVhKCktPmZvcmNlUmVwYWlu
dCgpOwotICAgICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lk
Q2FsbGJhY2soY2FsbGJhY2tJRCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAg
IH0pOwotICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjpzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wgbGF5ZXJUcmVlU3RhdGVJc0Zy
b3plbikK
</data>

          </attachment>
      

    </bug>

</bugzilla>