<?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>208670</bug_id>
          
          <creation_ts>2020-03-05 15:47:29 -0800</creation_ts>
          <short_desc>Add WKNavigationDelegatePrivate SPI to inform application of subframe navigations</short_desc>
          <delta_ts>2020-04-01 13:36:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          <dependson>209873</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1626343</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-05 15:47:29 -0800</bug_when>
    <thetext>Add WKNavigationDelegatePrivate SPI to inform application of subframe navigations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626346</commentid>
    <comment_count>1</comment_count>
      <attachid>392639</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-05 15:51:19 -0800</bug_when>
    <thetext>Created attachment 392639
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626349</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-03-05 15:52:02 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626371</commentid>
    <comment_count>3</comment_count>
      <attachid>392642</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-05 16:07:36 -0800</bug_when>
    <thetext>Created attachment 392642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626394</commentid>
    <comment_count>4</comment_count>
      <attachid>392648</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-05 16:45:13 -0800</bug_when>
    <thetext>Created attachment 392648
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626428</commentid>
    <comment_count>5</comment_count>
      <attachid>392648</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-05 17:38:39 -0800</bug_when>
    <thetext>Comment on attachment 392648
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:112
&gt; +- (void)_webView:(WKWebView *)webView didStartProvisionalLoadWithRequest:(NSURLRequest *)request inFrame:(WKFrameInfo *)frame WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; +- (void)_webView:(WKWebView *)webView didFailProvisionalLoadWithRequest:(NSURLRequest *)request inFrame:(WKFrameInfo *)frame withError:(NSError *)error WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; +- (void)_webView:(WKWebView *)webView didCommitLoadWithRequest:(NSURLRequest *)request inFrame:(WKFrameInfo *)frame WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; +- (void)_webView:(WKWebView *)webView didFailLoadWithRequest:(NSURLRequest *)request inFrame:(WKFrameInfo *)frame withError:(NSError *)error WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; +- (void)_webView:(WKWebView *)webView didFinishLoadWithRequest:(NSURLRequest *)request inFrame:(WKFrameInfo *)frame WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

If this is subframe only, I&apos;d like that to be clear.

&quot;inSubframe:&quot; or &quot;inNonMainFrame:&quot; etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626431</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-05 18:14:44 -0800</bug_when>
    <thetext>These new SPI callbacks are called for main frame navigations and subframe navigations.  It is correct as it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636634</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-01 13:35:27 -0700</bug_when>
    <thetext>This has been committed in http://trac.webkit.org/r257963 but this bug is still open for some reason. This also caused Bug 209873.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636635</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-01 13:36:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/61172788&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392639</attachid>
            <date>2020-03-05 15:51:19 -0800</date>
            <delta_ts>2020-03-05 16:07:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208670-20200305155118.patch</filename>
            <type>text/plain</type>
            <size>80847</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTc4OTIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDIwLTAzLTA1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLTmF2aWdh
dGlvbkRlbGVnYXRlUHJpdmF0ZSBTUEkgdG8gaW5mb3JtIGFwcGxpY2F0aW9uIG9mIHN1YmZyYW1l
IG5hdmlnYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDg2NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGVyZSBpcyBubyBXS05hdmlnYXRpb24gZm9yIHN1YmZyYW1lIG5hdmlnYXRpb25zLCBz
byBqdXN0IGV4cG9zZSB0aGUgTlNVUkxSZXF1ZXN0IGRpcmVjdGx5LgorICAgICAgICBUaGlzIGlz
IGVxdWl2YWxlbnQgdG8gV0tOYXZpZ2F0aW9uLl9yZXF1ZXN0LCB3aGljaCBpcyBkaXN0aW5jdCBm
cm9tIFdLRnJhbWVJbmZvLnJlcXVlc3QuCisgICAgICAgIFRoZSBmb3JtZXIgaXMgdGhlIGN1cnJl
bnRseSBwZW5kaW5nIHJlcXVlc3QsIHRoZSBsYXR0ZXIgaXMgdGhlIHJlcXVlc3QgdGhhdCBoYXMg
YWxyZWFkeSBsb2FkZWQuCisgICAgICAgIEkgbmVlZGVkIHRvIG1vdmUgdGhlIGlzTWFpbkZyYW1l
IGNoZWNrIHRvIHRoZSBOYXZpZ2F0aW9uQ2xpZW50IGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAg
VGhpcyBpcyBuZWVkZWQgZm9yIDxyZGFyOi8vcHJvYmxlbS81NzIwMTAzND4uCisgICAgICAgIENv
dmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFN0YXJ0UHJv
dmlzaW9uYWxOYXZpZ2F0aW9uKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlk
RmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcik6CisgICAgICAgIChBUEk6Ok5hdmln
YXRpb25DbGllbnQ6OmRpZENvbW1pdE5hdmlnYXRpb24pOgorICAgICAgICAoQVBJOjpOYXZpZ2F0
aW9uQ2xpZW50OjpkaWRGaW5pc2hOYXZpZ2F0aW9uKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3IpOgorICAgICAgICAoQVBJOjpOYXZp
Z2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcik6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAg
IChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0TmF2aWdhdGlvbkNsaWVudC5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6c2V0
TmF2aWdhdGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OmNyZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyKToKKyAgICAgICAgKFdl
YktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9u
YWxOYXZpZ2F0aW9uV2l0aEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRl
OjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRDb21taXROYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hOYXZpZ2F0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpk
aWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcik6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVX
aXRoRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwp
OgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5
OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92
aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNp
b25hbFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNp
b25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGYWlsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZEZpbmlzaExvYWQpOgorCiAyMDIwLTAzLTA0ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2FsbCBnbG9iYWxPYmplY3RJc0F2
YWlsYWJsZUZvckZyYW1lIGJlZm9yZSBldmFsdWF0aW5nIEphdmFTY3JpcHQgaW4gbmV3bHkgY3Jl
YXRlZCB3b3JsZHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1Nzg5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcg
KzEzMiw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmNhbmNlbCgpCiAgICAgQVNTRVJU
KG1fbWFpbkZyYW1lKTsKICAgICBhdXRvIGVycm9yID0gV2ViS2l0OjpjYW5jZWxsZWRFcnJvciht
X3JlcXVlc3QpOwogICAgIGVycm9yLnNldFR5cGUoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6VHlw
ZTo6Q2FuY2VsbGF0aW9uKTsKLSAgICBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUobV9t
YWluRnJhbWUtPmZyYW1lSUQoKSwgeyB9LCBtX25hdmlnYXRpb25JRCwgbV9wcm92aXNpb25hbExv
YWRVUkwsIGVycm9yLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nOjpObywgVXNlckRhdGEg
eyB9KTsgLy8gV2lsbCBkZWxldGUgfHRoaXN8LgorICAgIGRpZEZhaWxQcm92aXNpb25hbExvYWRG
b3JGcmFtZShtX21haW5GcmFtZS0+ZnJhbWVJRCgpLCB7IH0sIHsgfSwgbV9uYXZpZ2F0aW9uSUQs
IG1fcHJvdmlzaW9uYWxMb2FkVVJMLCBlcnJvciwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGlu
Zzo6Tm8sIFVzZXJEYXRhIHsgfSk7IC8vIFdpbGwgZGVsZXRlIHx0aGlzfC4KIH0KIAogdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQpAQCAtMjI4LDcgKzIyOCw3
IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGkKICAgICBtX3BhZ2Uu
ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIHNvdXJj
ZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcsIGZyYW1lSUQpOwogfQogCi12b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmIHVybCwgVVJM
JiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYgdXJsLCBVUkwmJiB1bnJl
YWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIGlmICghdmFsaWRh
dGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CkBAIC0yNDUs
MTAgKzI0NSwxMCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRTdGFydFByb3ZpCiAg
ICAgaWYgKGF1dG8qIHBhZ2VNYWluRnJhbWUgPSBtX3BhZ2UubWFpbkZyYW1lKCkpCiAgICAgICAg
IHBhZ2VNYWluRnJhbWUtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKHVybCk7CiAKLSAgICBtX3Bh
Z2UuZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJl
ZigpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUodXJsKSwgV1RGTW92ZSh1bnJlYWNo
YWJsZVVSTCksIHVzZXJEYXRhKTsKKyAgICBtX3BhZ2UuZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1l
SW5mbyksIFdURk1vdmUocmVxdWVzdCksIG5hdmlnYXRpb25JRCwgV1RGTW92ZSh1cmwpLCBXVEZN
b3ZlKHVucmVhY2hhYmxlVVJMKSwgdXNlckRhdGEpOwogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYgZXJyb3IsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGlu
ZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBG
cmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5n
IHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBp
ZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjYxLDEwICsyNjEsMTAgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkRmFp
bFByb3ZpcwogICAgIGlmIChhdXRvKiBwYWdlTWFpbkZyYW1lID0gbV9wYWdlLm1haW5GcmFtZSgp
KQogICAgICAgICBwYWdlTWFpbkZyYW1lLT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkKCk7CiAKLSAg
ICBtX3BhZ2UuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKG1fcHJvY2Vzcy5j
b3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwgbmF2aWdhdGlvbklELCBwcm92
aXNpb25hbFVSTCwgZXJyb3IsIHdpbGxDb250aW51ZUxvYWRpbmcsIHVzZXJEYXRhKTsgLy8gTWF5
IGRlbGV0ZSB8dGhpc3wuCisgICAgbV9wYWdlLmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFt
ZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyks
IFdURk1vdmUocmVxdWVzdCksIG5hdmlnYXRpb25JRCwgcHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3
aWxsQ29udGludWVMb2FkaW5nLCB1c2VyRGF0YSk7IC8vIE1heSBkZWxldGUgfHRoaXN8LgogfQog
Ci12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJh
bWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUlu
Zm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRp
b25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVu
dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9E
YXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250
ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29u
dGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50
PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsK
ICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRp
ZENvbW1pdExvYWQKICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlEKTsKIAog
ICAgIG1fd2FzQ29tbWl0dGVkID0gdHJ1ZTsKLSAgICBtX3BhZ2UuY29tbWl0UHJvdmlzaW9uYWxQ
YWdlKGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgbWltZVR5cGUsIGZyYW1lSGFzQ3VzdG9tQ29udGVu
dFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBlLCBjZXJ0aWZpY2F0ZUluZm8sIHVzZWRMZWdhY3lUTFMs
IGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgdXNlckRh
dGEpOyAvLyBXaWxsIGRlbGV0ZSB8dGhpc3wuCisgICAgbV9wYWdlLmNvbW1pdFByb3Zpc2lvbmFs
UGFnZShmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1vdmUocmVxdWVzdCksIG5hdmln
YXRpb25JRCwgbWltZVR5cGUsIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxv
YWRUeXBlLCBjZXJ0aWZpY2F0ZUluZm8sIHVzZWRMZWdhY3lUTFMsIGNvbnRhaW5zUGx1Z2luRG9j
dW1lbnQsIGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgdXNlckRhdGEpOyAvLyBXaWxsIGRlbGV0
ZSB8dGhpc3wuCiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0
aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlLCBGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuaAkocmV2aXNpb24gMjU3ODkxKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTIy
LDkgKzEyMiw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9u
RGF0YShjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyKTsKICAgICB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENyZWF0ZU1haW5GcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJM
JiYsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgZGlk
Q29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0
aWZpY2F0ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1
bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNl
Y3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcs
IGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJiwgVVJMJiYgdW5y
ZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRDb21taXRMb2FkRm9y
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZy
YW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgdXNlZExl
Z2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpI
YXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRh
dGEmKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRp
bmcsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2soVVJMU2No
ZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0
IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBXZWJCYWNrRm9yd2FyZExpc3RD
b3VudHMmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
YyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGJvb2wgaXNNYWluRnJhbWUsIEZyYW1lSW5mb0Rh
dGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0Zy
YW1lSW5mbywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
cmV2aXNpb24gMjU3ODkxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIzOCw3ICszMjM4LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpbwogICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lv
biB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCks
IGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSwgYWN0aW9uLCBuYXZpZ2F0aW9u
ID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCBkb3dubG9hZElELCBXVEZNb3ZlKHdl
YnNpdGVQb2xpY2llcykgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNp
b25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRl
ciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdp
bkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhh
c0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdl
UHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3Vz
dG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBi
b29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJl
Q29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCiB7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlKTsKICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6IG5ld1BJRCA9ICVpIiwg
bV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpKTsKQEAgLTMy
NzIsNyArMzI3Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UK
ICAgICBjb25zdCBhdXRvIG9sZFdlYlBhZ2VJRCA9IG1fd2ViUGFnZUlEOwogICAgIHN3YXBUb1By
b3Zpc2lvbmFsUGFnZShzdGQ6OmV4Y2hhbmdlKG1fcHJvdmlzaW9uYWxQYWdlLCBudWxscHRyKSk7
CiAKLSAgICBkaWRDb21taXRMb2FkRm9yRnJhbWUoZnJhbWVJRCwgbmF2aWdhdGlvbklELCBtaW1l
VHlwZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1lTG9hZFR5cGUsIGNlcnRp
ZmljYXRlSW5mbywgdXNlZExlZ2FjeVRMUywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9yY2Vk
SGFzSW5zZWN1cmVDb250ZW50LCB1c2VyRGF0YSk7CisgICAgZGlkQ29tbWl0TG9hZEZvckZyYW1l
KGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwgV1RGTW92ZShyZXF1ZXN0KSwgbmF2aWdhdGlv
bklELCBtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1lTG9hZFR5
cGUsIGNlcnRpZmljYXRlSW5mbywgdXNlZExlZ2FjeVRMUywgY29udGFpbnNQbHVnaW5Eb2N1bWVu
dCwgZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCB1c2VyRGF0YSk7CiAKICAgICBtX2luc3BlY3Rv
ckNvbnRyb2xsZXItPmRpZENvbW1pdFByb3Zpc2lvbmFsUGFnZShvbGRXZWJQYWdlSUQsIG1fd2Vi
UGFnZUlEKTsKIH0KQEAgLTQzMTYsMTIgKzQzMTYsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZERlc3Ryb3lOYXZpZ2F0aW9uKAogICAgIG1fbmF2aWdhdGlvblN0YXRlLT5kaWREZXN0cm95TmF2
aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBVUkwmJiB1cmwsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1l
SW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBV
UkwmJiB1cmwsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEp
CiB7Ci0gICAgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3Mu
Y29weVJlZigpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUodXJsKSwgV1RGTW92ZSh1
bnJlYWNoYWJsZVVSTCksIHVzZXJEYXRhKTsKKyAgICBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJ
bmZvKSwgV1RGTW92ZShyZXF1ZXN0KSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKHVybCksIFdURk1v
dmUodW5yZWFjaGFibGVVUkwpLCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzcywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgVVJMJiYgdXJsLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVT
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJiB1cmwsIFVSTCYmIHVucmVhY2hhYmxlVVJM
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBw
cm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDM2Myw4ICs0MzYzLDggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMbwogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21t
aXRDaGFuZ2VzKCk7CiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBtX2xvYWRlckNs
aWVudC0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZp
Z2F0aW9uLmdldCgpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgZWxzZSBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCi0g
ICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24o
KnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIG1fbmF2aWdh
dGlvbkNsaWVudC0+ZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24oKnRoaXMsIFdURk1vdmUo
ZnJhbWVJbmZvKSwgV1RGTW92ZShyZXF1ZXN0KSwgbmF2aWdhdGlvbi5nZXQoKSwgcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAj
aWYgRU5BQkxFKFdFQl9BVVRITikKICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPmF1dGhlbnRpY2F0
b3JNYW5hZ2VyKCkuY2FuY2VsUmVxdWVzdChtX3dlYlBhZ2VJRCwgZnJhbWVJRCk7CkBAIC00NDc5
LDE3ICs0NDc5LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFUK
ICAgICBmcmFtZS0+ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHVy
bCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9h
ZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZh
aWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJ
bmZvRGF0YSYmIGZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvciwgV2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29udGludWVM
b2FkaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKG1fcHJvdmlzaW9u
YWxQYWdlICYmIG1fcHJvdmlzaW9uYWxQYWdlLT5uYXZpZ2F0aW9uSUQoKSA9PSBuYXZpZ2F0aW9u
SUQpIHsKICAgICAgICAgLy8gVGhlIGxvYWQgZGlkIG5vdCBmYWlsLCBpdCBpcyBtZXJlbHkgaGFw
cGVuaW5nIGluIGEgbmV3IHByb3Zpc2lvbmFsIHByb2Nlc3MuCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNz
LmNvcHlSZWYoKSwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBuYXZpZ2F0aW9uSUQsIHBy
b3Zpc2lvbmFsVVJMLCBlcnJvciwgd2lsbENvbnRpbnVlTG9hZGluZywgdXNlckRhdGEpOworICAg
IGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigp
LCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1vdmUocmVxdWVzdCksIG5hdmlnYXRp
b25JRCwgcHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3aWxsQ29udGludWVMb2FkaW5nLCB1c2VyRGF0
YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgV2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBw
cm92aXNpb25hbFVSTCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxv
YWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewog
ICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiB3
ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIHByb3Zp
c2lvbmFsVVJMICVzIiwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIHByb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkpOwogICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTog
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwgZnJhbWVJRC50
b1VJbnQ2NCgpLCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUo
KSk7CkBAIC00NTI4LDEyICs0NTI4LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92
aXNpb25hbExvYQogCiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBtX2xvYWRlckNs
aWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKCp0aGlzLCAqZnJh
bWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9P
YmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgZWxzZSBpZiAoZnJhbWUtPmlz
TWFpbkZyYW1lKCkpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFpbFByb3Zpc2lv
bmFsTmF2aWdhdGlvbldpdGhFcnJvcigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBl
cnJvciwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCkpOwotICAgIGVsc2UgewotICAgICAgICAvLyBGSVhNRTogR2V0IHRoZSBtYWluIGZy
YW1lJ3MgY3VycmVudCBuYXZpZ2F0aW9uLgotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRp
ZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKCp0aGlzLCAqZnJhbWUsIFdU
Rk1vdmUoZnJhbWVJbmZvKSwgbnVsbHB0ciwgZXJyb3IsIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRs
ZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICB9CisgICAgZWxzZQor
ICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25X
aXRoRXJyb3IoKnRoaXMsIFdURk1vdmUoZnJhbWVJbmZvKSwgV1RGTW92ZShyZXF1ZXN0KSwgbmF2
aWdhdGlvbi5nZXQoKSwgZXJyb3IsIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAogICAgIG1fZmFpbGluZ1Byb3Zpc2lvbmFsTG9h
ZFVSTCA9IHsgfTsKIApAQCAtNDU3MCw3ICs0NTY2LDcgQEAgc3RhdGljIE9wdGlvblNldDxDcm9z
c1NpdGVOYXZpZ2F0aW9uRGF0YQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9v
bCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhh
c0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdl
UHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3Vz
dG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5
VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPEhhc0luc2VjdXJlQ29u
dGVudD4gaGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAg
ICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRpZENv
bW1pdExvYWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9pZGVudGlmaWVyLnRv
VUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9y
d2FyZCkgQWZ0ZXIgbG9hZCBjb21taXQsIGJhY2svZm9yd2FyZCBsaXN0IGlzIG5vdzolcyIsIG1f
YmFja0ZvcndhcmRMaXN0LT5sb2dnaW5nU3RyaW5nKCkpOwpAQCAtNDY3MCw4ICs0NjY2LDggQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZQogICAgIG1fcGFnZUxvYWRT
dGF0ZS5jb21taXRDaGFuZ2VzKCk7CiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBt
X2xvYWRlckNsaWVudC0+ZGlkQ29tbWl0TG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmln
YXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0
YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIGVsc2UgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQot
ICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZENvbW1pdE5hdmlnYXRpb24oKnRoaXMsIG5h
dmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xp
ZW50LT5kaWRDb21taXROYXZpZ2F0aW9uKCp0aGlzLCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1v
dmUocmVxdWVzdCksIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxl
c1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCkBAIC00NzExLDcg
KzQ3MDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkCiAgICAg
fQogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUgLSBXZWJQYWdlUHJveHkgJXAgd2l0aCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIg
ZGlkRmluaXNoTG9hZCIsIHRoaXMsIG5hdmlnYXRpb25JRCk7CiAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoTG9hZEZvckZyYW1lOiBmcmFtZUlEID0gJSIgUFJJ
dTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwpAQCAtNDc0Miw4ICs0NzM4LDggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZQogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21t
aXRDaGFuZ2VzKCk7CiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBtX2xvYWRlckNs
aWVudC0+ZGlkRmluaXNoTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0
KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCkpOwotICAgIGVsc2UgaWYgKGlzTWFpbkZyYW1lKQotICAgICAgICBtX25hdmlnYXRp
b25DbGllbnQtPmRpZEZpbmlzaE5hdmlnYXRpb24oKnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOworICAgIGVsc2UKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGaW5pc2hOYXZp
Z2F0aW9uKCp0aGlzLCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1vdmUocmVxdWVzdCksIG5hdmln
YXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0
YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAgICAgaWYgKGlzTWFpbkZyYW1lKSB7CiAgICAgICAgIHJl
cG9ydFBhZ2VMb2FkUmVzdWx0KCk7CkBAIC00NzYwLDcgKzQ3NTYsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lCiAgICAgbV9pc0xvYWRpbmdBbHRlcm5hdGVIVE1M
U3RyaW5nRm9yRmFpbGluZ1Byb3Zpc2lvbmFsTG9hZCA9IGZhbHNlOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGYWlsTG9hZEZvckZyYW1lOiBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBmcmFtZUlELnRvVUludDY0KCks
IGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIApAQCAt
NDc5Myw4ICs0Nzg5LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUo
RgogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7CiAgICAgaWYgKG1fbG9hZGVy
Q2xpZW50KQogICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JG
cmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgbV9wcm9jZXNzLT50
cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAg
ZWxzZSBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVu
dC0+ZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3IoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5n
ZXQoKSwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0
YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5kaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcigqdGhpcywgV1RGTW92ZShmcmFtZUluZm8pLCBX
VEZNb3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgbV9wcm9jZXNzLT50cmFu
c2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAKICAgICBp
ZiAoaXNNYWluRnJhbWUpIHsKICAgICAgICAgcmVwb3J0UGFnZUxvYWRSZXN1bHQoZXJyb3IpOwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI1Nzg5
MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjA5LDExICsxNjA5LDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgUHJvdmlz
aW9uYWxQYWdlUHJveHkqIHByb3Zpc2lvbmFsUGFnZVByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9w
cm92aXNpb25hbFBhZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIGNvbW1pdFByb3Zpc2lvbmFsUGFnZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMy
X3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCB1
c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNv
cmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBV
c2VyRGF0YSYpOworICAgIHZvaWQgY29tbWl0UHJvdmlzaW9uYWxQYWdlKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1l
SGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFp
bnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBm
b3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CiAKICAgICAvLyBMb2dp
YyBzaGFyZWQgYmV0d2VlbiB0aGUgV2ViUGFnZVByb3h5IGFuZCB0aGUgUHJvdmlzaW9uYWxQYWdl
UHJveHkuCi0gICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBVUkwmJiwgVVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRh
Jik7Ci0gICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRh
JiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJp
bmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29y
ZTo6V2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmLCBVUkwmJiB1bnJlYWNo
YWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNv
bnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRQZXJmb3JtU2VydmVy
UmVkaXJlY3RTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcik7CkBAIC0xNzUzLDE2ICsxNzUzLDE2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDcmVh
dGVTdWJmcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkQ3JlYXRl
V2luZG93KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6R2xvYmFsV2luZG93SWRl
bnRpZmllciYmKTsKIAotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYsIFVS
TCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5m
b0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgVVJMJiYsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgd2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiB1cmwsIGRvdWJsZSBkZWxheSwgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCk7CiAg
ICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcik7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7Ci0gICAg
dm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5n
JiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6
OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRDb21t
aXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50
UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYsIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50
LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJl
Q29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3Ry
aW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNv
cmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRD
b21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRh
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIs
IHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYs
IGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25h
bDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwg
Y29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBV
c2VyRGF0YSYpOwotICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwotICAg
IHZvaWQgZGlkRmFpbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVz
ZXJEYXRhJik7CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRGYWls
TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3Qgc2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUs
IFVSTCYmLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ2hhbmdlTWFpbkRvY3VtZW50
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRFeHBsaWNpdE9wZW5Gb3JG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFVSTCYmLCBTdHJpbmcmJiBtaW1lVHlwZSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCShyZXZpc2lvbiAyNTc4OTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyMCwxNiArMTIwLDE2IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkQ3JlYXRlV2luZG93KFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6R2xvYmFsV2luZG93SWRl
bnRpZmllciB3aW5kb3dJZGVudGlmaWVyKQogCiAgICAgIyBGcmFtZSBsb2FkIG1lc3NhZ2VzCi0g
ICAgRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwgdXJsLCBVUkwgdW5yZWFjaGFi
bGVVUkwsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdl
YktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCB1cmwsIFVSTCB1bnJlYWNoYWJsZVVS
TCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBXaWxsUGVyZm9ybUNsaWVudFJl
ZGlyZWN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFN0cmluZyB1
cmwsIGRvdWJsZSBkZWxheSwgZW51bTpib29sIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Qg
bG9ja0JhY2tGb3J3YXJkTGlzdCkKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAgIERpZENoYW5nZVByb3Zpc2lv
bmFsVVJMRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgVVJMIHVybCkKLSAgICBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1l
SW5mb0RhdGEgZnJhbWVJbmZvLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBwcm92aXNp
b25hbFVSTCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgZW51bTpib29sIFdlYkNvcmU6
OldpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkKLSAgICBEaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBlLCBi
b29sIGhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9v
bCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNv
bnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKLSAgICBEaWRGYWlsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3Is
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpG
cmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIHByb3Zpc2lvbmFsVVJMLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yLCBlbnVtOmJvb2wgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGlu
ZyB3aWxsQ29udGludWVMb2FkaW5nLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERp
ZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3Ry
dWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBtaW1lVHlwZSwgYm9v
bCBoYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGxvYWRUeXBlLCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wg
Y29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250
ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEp
CisgICAgRGlkRmFpbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmluaXNo
RG9jdW1lbnRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEaWRG
aW5pc2hMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEaWRGaW5p
c2hMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBX
ZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQogICAgIERpZEZpcnN0TGF5b3V0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUoT3B0
aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gbGF5b3V0TWlsZXN0b25lcykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQu
aAkocmV2aXNpb24gMjU3ODkxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5h
dmlnYXRpb25DbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTcgKzc4LDE2IEBAIGNsYXNz
IE5hdmlnYXRpb25DbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfk5hdmlnYXRpb25DbGll
bnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlv
bihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIE5hdmlnYXRpb24qLCBPYmplY3QqKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24oV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIE5hdmlnYXRpb24qLCBPYmplY3QqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgTmF2aWdhdGlvbiosIE9iamVjdCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVy
Zm9ybUNsaWVudFJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJp
bmcmIGRlc3RpbmF0aW9uVVJMLCBkb3VibGUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJm
b3JtQ2xpZW50UmVkaXJlY3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmlu
ZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgZGVzdGluYXRpb25VUkwpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdChXZWJLaXQ6OldlYlBhZ2VQcm94
eSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0
aEVycm9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgTmF2
aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBPYmplY3QqKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3Io
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBXZWJLaXQ6OkZy
YW1lSW5mb0RhdGEmJiwgTmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
LCBPYmplY3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIE5hdmlnYXRpb24qLCBPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgTmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBPYmplY3Qq
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgTmF2aWdhdGlvbiosIE9iamVjdCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hEb2N1bWVudExvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBOYXZpZ2F0aW9uKiwgT2JqZWN0
KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaE5hdmlnYXRpb24oV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBOYXZpZ2F0aW9uKiwgT2JqZWN0KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpX
ZWJGcmFtZVByb3h5JiwgTmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
LCBPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTmF2aWdhdGlvbihXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgTmF2aWdhdGlvbiosIE9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktp
dDo6RnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgTmF2aWdhdGlv
biosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBPYmplY3QqKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IE5hdmlnYXRpb24qLCBXZWJLaXQ6OlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBPYmplY3Qq
KSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgQVBJOjpPYmplY3QqKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMjU3ODkxKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzMCw4
ICsyMTMwLDEwIEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWcKICAg
ICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSh0b0FQ
SSgmcGFnZSksIHRvQVBJKG5hdmlnYXRpb25SZXNwb25zZS5wdHIoKSksIHRvQVBJKGxpc3RlbmVy
LnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbihXZWJQ
YWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZp
Z2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVz
b3VyY2VSZXF1ZXN0JiYsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWZyYW1lSW5m
by5pc01haW5GcmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIG1fY2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0
aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdhdGlvbiksIHRvQVBJKHVzZXJEYXRhKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKQEAgLTIxNDQsNDEgKzIxNDYsNDUgQEAgdm9pZCBXS1Bh
Z2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZwogICAgICAgICAgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKHRvQVBJKCZwYWdl
KSwgdG9BUEkobmF2aWdhdGlvbiksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTmF2
aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmLCBBUEk6
Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkRmFp
bFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIEZyYW1l
SW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok5h
dmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9y
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbikKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxOYXZp
Z2F0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdhdGlvbiksIHRvQVBJKGVycm9yKSwgdG9B
UEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgaWYg
KGZyYW1lSW5mby5pc01haW5GcmFtZSkgeworICAgICAgICAgICAgICAgIGlmIChtX2NsaWVudC5k
aWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKQorICAgICAgICAgICAgICAgICAgICBtX2NsaWVu
dC5kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdh
dGlvbiksIHRvQVBJKGVycm9yKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAobV9jbGll
bnQuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUpCisgICAgICAgICAgICAgICAgICAg
IG1fY2xpZW50LmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lKHRvQVBJKCZwYWdlKSwg
dG9BUEkobmF2aWdhdGlvbiksIHRvQVBJKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShm
cmFtZUluZm8pLCAmcGFnZSkucHRyKCkpLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJEYXRhKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0g
ICAgICAgIHZvaWQgZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6
TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQor
ICAgICAgICB2b2lkIGRpZENvbW1pdE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBGcmFt
ZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpOYXZpZ2F0aW9u
KiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICghZnJhbWVJbmZvLmlzTWFpbkZyYW1lKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKwogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDb21taXROYXZpZ2F0aW9u
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG1fY2xpZW50LmRpZENvbW1p
dE5hdmlnYXRpb24odG9BUEkoJnBhZ2UpLCB0b0FQSShuYXZpZ2F0aW9uKSwgdG9BUEkodXNlckRh
dGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9u
KiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZv
aWQgZGlkRmluaXNoTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm8sIFJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRp
b24sIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgeworICAgICAgICAg
ICAgaWYgKCFmcmFtZUluZm8uaXNNYWluRnJhbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGaW5pc2hOYXZpZ2F0aW9uKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaE5hdmlnYXRpb24o
dG9BUEkoJnBhZ2UpLCB0b0FQSShuYXZpZ2F0aW9uKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRGYWlsTmF2
aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmLCBBUEk6
Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkRmFp
bE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFnZVByb3h5JiBwYWdlLCBGcmFtZUluZm9EYXRhJiYg
ZnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpOYXZpZ2F0aW9uKiBu
YXZpZ2F0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWZyYW1l
SW5mby5pc01haW5GcmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LmRpZEZhaWxOYXZpZ2F0aW9uKQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWxOYXZpZ2F0aW9uKHRvQVBJKCZwYWdlKSwgdG9B
UEkobmF2aWdhdGlvbiksIHRvQVBJKGVycm9yKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1l
UHJveHkmIHN1YmZyYW1lLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBBUEk6Ok5hdmlnYXRp
b24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6
Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgh
bV9jbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZElu
U3ViZnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQSShuYXZpZ2F0aW9uKSwgdG9BUEkoQVBJOjpGcmFt
ZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksICZwYWdlKS5wdHIoKSksIHRvQVBJKGVy
cm9yKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAg
ICB9Ci0KICAgICAgICAgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWQoV2ViUGFnZVByb3h5JiBw
YWdlLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkg
b3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGaW5pc2hE
b2N1bWVudExvYWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tO
YXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCShyZXZpc2lv
biAyNTc4OTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uRGVsZWdhdGVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsMTIgQEAg
c3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5IAogLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBjb250ZW50UnVsZUxpc3RXaXRoSWRlbnRpZmllcjooTlNT
dHJpbmcgKilpZGVudGlmaWVyIHBlcmZvcm1lZEFjdGlvbjooX1dLQ29udGVudFJ1bGVMaXN0QWN0
aW9uICopYWN0aW9uIGZvclVSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xNSksIGlvcygxMy4wKSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IHdlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlV2l0aFJlYXNvbjooX1dLUHJvY2Vzc1Rlcm1p
bmF0aW9uUmVhc29uKXJlYXNvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEy
LjApKTsKIAorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGluRnJhbWU6
KFdLRnJhbWVJbmZvICopZnJhbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0
IGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgd2l0aEVycm9yOihOU0Vycm9yICopZXJyb3Ig
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0g
KHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQ29tbWl0TG9hZFdpdGhSZXF1
ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0g
KHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmFpbExvYWRXaXRoUmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBpbkZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIHdp
dGhFcnJvcjooTlNFcnJvciAqKWVycm9yIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRpZEZpbmlzaExvYWRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBpbkZy
YW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CisKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAtICh2b2lkKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6KE5TU3RyaW5nICopZmlsZU5hbWUgdXRpOihOU1N0
cmluZyAqKXV0aTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6KE5TRGF0YSAqKWRvY3VtZW50
RGF0YTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5hdmln
YXRpb25DbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdE5hdmlnYXRpb25DbGllbnQuY3BwCShyZXZpc2lvbiAyNTc4OTEpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROYXZpZ2F0aW9uQ2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAiQVBJTmF2aWdh
dGlvbkFjdGlvbi5oIgogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb25DbGllbnQuaCIKKyNpbmNsdWRl
ICJGcmFtZUluZm9EYXRhLmgiCiAjaW5jbHVkZSAiV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvblByaXZhdGUuaCIK
ICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCkBAIC00Miw4ICs0MywxMCBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24o
V2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRh
ICovKSBvdmVycmlkZQorICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24oV2Vi
UGFnZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiwg
QVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICovKSBvdmVycmlkZQog
ICAgIHsKKyAgICAgICAgaWYgKCFmcmFtZUluZm8uaXNNYWluRnJhbWUpCisgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIHdlYmtpdFdlYlZpZXdMb2FkQ2hhbmdlZChtX3dlYlZpZXcsIFdFQktJ
VF9MT0FEX1NUQVJURUQpOwogICAgIH0KIApAQCAtNTIsNyArNTUsNyBAQCBwcml2YXRlOgogICAg
ICAgICB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQobV93ZWJWaWV3LCBXRUJLSVRfTE9BRF9SRURJ
UkVDVEVEKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25X
aXRoRXJyb3IoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6TmF2aWdh
dGlvbiosIGNvbnN0IFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IsIEFQSTo6T2JqZWN0KiAv
KiB1c2VyRGF0YSAqLykgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbE5hdmln
YXRpb25XaXRoRXJyb3IoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEZyYW1l
SW5mb0RhdGEmJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFJl
c291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IsIEFQSTo6T2JqZWN0KiAvKiB1c2VyRGF0YSAqLykg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmICghZnJhbWUuaXNNYWluRnJhbWUoKSkKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTY1LDE5ICs2OCwyMyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
d2Via2l0V2ViVmlld0xvYWRGYWlsZWQobV93ZWJWaWV3LCBXRUJLSVRfTE9BRF9TVEFSVEVELCBy
ZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBlcnJvci5n
ZXQoKSk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRDb21taXROYXZpZ2F0aW9uKFdlYlBhZ2VQcm94
eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0KiAvKiB1c2VyRGF0YSAqLykgb3ZlcnJp
ZGUKKyAgICB2b2lkIGRpZENvbW1pdE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgRnJhbWVJbmZv
RGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6TmF2aWdhdGlvbiosIEFQ
STo6T2JqZWN0KiAvKiB1c2VyRGF0YSAqLykgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIGlmICgh
ZnJhbWVJbmZvLmlzTWFpbkZyYW1lKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB3ZWJr
aXRXZWJWaWV3TG9hZENoYW5nZWQobV93ZWJWaWV3LCBXRUJLSVRfTE9BRF9DT01NSVRURUQpOwog
ICAgIH0KIAotICAgIHZvaWQgZGlkRmluaXNoTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBBUEk6
Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCogLyogdXNlckRhdGEgKi8pIG92ZXJyaWRlCisgICAg
dm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIEZyYW1lSW5mb0RhdGEmIGZy
YW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0
KiAvKiB1c2VyRGF0YSAqLykgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIGlmICghZnJhbWVJbmZv
LmlzTWFpbkZyYW1lKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB3ZWJraXRXZWJWaWV3
TG9hZENoYW5nZWQobV93ZWJWaWV3LCBXRUJLSVRfTE9BRF9GSU5JU0hFRCk7CiAgICAgfQogCi0g
ICAgdm9pZCBkaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkmLCBXZWJGcmFt
ZVByb3h5JiBmcmFtZSwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgUmVzb3VyY2VFcnJvciYgcmVz
b3VyY2VFcnJvciwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICovKSBvdmVycmlkZQorICAgIHZv
aWQgZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFnZVByb3h5JiwgRnJhbWVJbmZvRGF0
YSYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvciwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICov
KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKCFmcmFtZS5pc01haW5GcmFtZSgpKQorICAg
ICAgICBpZiAoIWZyYW1lSW5mby5pc01haW5GcmFtZSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgR1VuaXF1ZVB0cjxHRXJyb3I+IGVycm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoZ19xdWFy
a19mcm9tX3N0cmluZyhyZXNvdXJjZUVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLAogICAg
ICAgICAgICAgdG9XZWJLaXRFcnJvcihyZXNvdXJjZUVycm9yLmVycm9yQ29kZSgpKSwgcmVzb3Vy
Y2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCShyZXZp
c2lvbiAyNTc4OTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsMTcgKzk0LDE2IEBAIHByaXZhdGU6CiAgICAg
ICAgIH5OYXZpZ2F0aW9uQ2xpZW50KCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlv
biosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkU3RhcnRQcm92aXNp
b25hbE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSBvdmVycmlk
ZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5h
dmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSBv
dmVycmlkZTsKICAgICAgICAgdm9pZCB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYlBhZ2VQ
cm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgZG91YmxlKSBvdmVycmlkZTsKICAgICAgICAgdm9p
ZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJp
bmcmLCBjb25zdCBXVEY6OlN0cmluZyYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZENhbmNl
bENsaWVudFJlZGlyZWN0KFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRp
ZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFnZVByb3h5JiwgV2ViRnJh
bWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
LCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25h
bExvYWRJblN1YmZyYW1lV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBG
cmFtZUluZm9EYXRhJiYsIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRpZENvbW1pdE5h
dmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSBv
dmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVy
cm9yKFdlYlBhZ2VQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBB
UEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgICAgICB2b2lkIGRpZENvbW1pdE5hdmlnYXRpb24o
V2ViUGFnZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKICAgICAgICAgdm9p
ZCBkaWRGaW5pc2hEb2N1bWVudExvYWQoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwg
QVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9u
KFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7
Ci0gICAgICAgIHZvaWQgZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFnZVByb3h5Jiwg
V2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgICAgICB2b2lkIGRpZEZpbmlzaE5h
dmlnYXRpb24oV2ViUGFnZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAg
ICAgICAgdm9pZCBkaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkmLCBGcmFt
ZUluZm9EYXRhJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok5hdmlnYXRpb24q
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsK
ICAgICAgICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIEFQ
STo6TmF2aWdhdGlvbiosIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBBUEk6Ok9iamVjdCop
IG92ZXJyaWRlOwogCiAgICAgICAgIHZvaWQgcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoV2Vi
UGFnZVByb3h5JiwgT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4pIG92ZXJyaWRl
OwpAQCAtMjAzLDE3ICsyMDIsMjMgQEAgcHJpdmF0ZToKIAogICAgICAgICBib29sIHdlYlZpZXdE
aWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbiA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0Rp
ZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uVXNlckluZm8gOiAxOworICAgICAgICBib29sIHdl
YlZpZXdEaWRTdGFydFByb3Zpc2lvbmFsTG9hZFdpdGhSZXF1ZXN0SW5GcmFtZSA6IDE7CiAgICAg
ICAgIGJvb2wgd2ViVmlld0RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2
aWdhdGlvbiA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEZhaWxQcm92aXNpb25hbE5hdmln
YXRpb25XaXRoRXJyb3IgOiAxOworICAgICAgICBib29sIHdlYlZpZXdEaWRGYWlsUHJvdmlzaW9u
YWxMb2FkV2l0aFJlcXVlc3RJbkZyYW1lV2l0aEVycm9yIDogMTsKICAgICAgICAgYm9vbCB3ZWJW
aWV3TmF2aWdhdGlvbkRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yIDog
MTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3RGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhSZXF1ZXN0
SW5GcmFtZSA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1dpbGxQZXJmb3JtQ2xpZW50UmVkaXJl
Y3QgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QgOiAx
OwogICAgICAgICBib29sIHdlYlZpZXdEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCA6IDE7CiAgICAg
ICAgIGJvb2wgd2ViVmlld0RpZENvbW1pdE5hdmlnYXRpb24gOiAxOworICAgICAgICBib29sIHdl
YlZpZXdEaWRDb21taXRMb2FkV2l0aFJlcXVlc3RJbkZyYW1lIDogMTsKICAgICAgICAgYm9vbCB3
ZWJWaWV3TmF2aWdhdGlvbkRpZEZpbmlzaERvY3VtZW50TG9hZCA6IDE7CiAgICAgICAgIGJvb2wg
d2ViVmlld0RpZEZpbmlzaE5hdmlnYXRpb24gOiAxOworICAgICAgICBib29sIHdlYlZpZXdEaWRG
aW5pc2hMb2FkV2l0aFJlcXVlc3RJbkZyYW1lIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlk
RmFpbE5hdmlnYXRpb25XaXRoRXJyb3IgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRGYWls
TmF2aWdhdGlvbldpdGhFcnJvclVzZXJJbmZvIDogMTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3RGlk
RmFpbExvYWRXaXRoUmVxdWVzdEluRnJhbWVXaXRoRXJyb3IgOiAxOwogICAgICAgICBib29sIHdl
YlZpZXdOYXZpZ2F0aW9uRGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbiA6IDE7CiAKICAgICAgICAg
Ym9vbCB3ZWJWaWV3UmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UgOiAxOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkocmV2aXNp
b24gMjU3ODkxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsMTIgKzE1NiwxNyBAQCB2b2lkIE5hdmlnYXRp
b25TdGF0ZTo6c2V0TmF2aWdhdGlvbkRlbGVnCiAKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1l
dGhvZHMud2ViVmlld0RpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpkaWRTdGFydFByb3Zpc2lvbmFsTmF2
aWdhdGlvbjopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFN0
YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uVXNlckluZm8gPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbjp1
c2VySW5mbzopXTsKKyAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkV2l0aFJlcXVlc3RJbkZyYW1lID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRXaXRo
UmVxdWVzdDppbkZyYW1lOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb246KV07CiAgICAgbV9uYXZpZ2F0aW9u
RGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVy
cm9yID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpkaWRG
YWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOndpdGhFcnJvcjopXTsKKyAgICBtX25hdmlnYXRpb25E
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoUmVxdWVzdElu
RnJhbWVXaXRoRXJyb3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
d2ViVmlldzpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aFJlcXVlc3Q6aW5GcmFtZTp3aXRoRXJy
b3I6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRDb21taXRO
YXZpZ2F0aW9uID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmll
dzpkaWRDb21taXROYXZpZ2F0aW9uOildOworICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3RGlkQ29tbWl0TG9hZFdpdGhSZXF1ZXN0SW5GcmFtZSA9IFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZENvbW1pdExvYWRXaXRoUmVxdWVz
dDppbkZyYW1lOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlk
RmluaXNoTmF2aWdhdGlvbiA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjopXTsKKyAgICBtX25hdmlnYXRpb25EZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld0RpZEZpbmlzaExvYWRXaXRoUmVxdWVzdEluRnJhbWUgPSBbZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRGaW5pc2hMb2FkV2l0
aFJlcXVlc3Q6aW5GcmFtZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld0RpZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9yID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iod2ViVmlldzpkaWRGYWlsTmF2aWdhdGlvbjp3aXRoRXJyb3I6KV07CiAg
ICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRGYWlsTmF2aWdhdGlvbldp
dGhFcnJvclVzZXJJbmZvID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6ZGlkRmFpbE5hdmlnYXRpb246d2l0aEVycm9yOnVzZXJJbmZvOildOworICAgIG1f
bmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRmFpbExvYWRXaXRoUmVxdWVzdElu
RnJhbWVXaXRoRXJyb3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
d2ViVmlldzpkaWRGYWlsTG9hZFdpdGhSZXF1ZXN0OmluRnJhbWU6d2l0aEVycm9yOildOwogCiAg
ICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdOYXZpZ2F0aW9uRGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpuYXZpZ2F0aW9uOmRpZEZhaWxQcm92aXNpb25hbExv
YWRJblN1YmZyYW1lOndpdGhFcnJvcjopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld1dpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QgPSBbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9V
Ukw6ZGVsYXk6KV07CkBAIC03NDgsMjIgKzc1MywyMSBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6CiAgICAgfSkuZ2V0KCldOwogfQogCi12b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24oV2Vi
UGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0
KiB1c2VySW5mbykKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRT
dGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEZyYW1lSW5mb0Rh
dGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEFQSTo6
TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqIHVzZXJJbmZvKQogewotICAgIGlm
ICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdE
aWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbgotICAgICAgICAmJiAhbV9uYXZpZ2F0aW9uU3Rh
dGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRTdGFydFByb3Zpc2lvbmFs
TmF2aWdhdGlvblVzZXJJbmZvKQotICAgICAgICByZXR1cm47Ci0KICAgICBhdXRvIG5hdmlnYXRp
b25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgp
OwogICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0aGF0IG5hdmlnYXRpb24gaXMgbm90IG51bGwgaGVy
ZSwgYnV0IGl0J3MgY3VycmVudGx5IG51bGwgZm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0
aGUgYmFjay9mb3J3YXJkIGNhY2hlLgotCi0gICAgaWYgKG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2
aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRp
b25Vc2VySW5mbykKLSAgICAgICAgWyhpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPilu
YXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRp
ZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uOndyYXBwZXIobmF2aWdhdGlvbikgdXNlckluZm86
dXNlckluZm8gPyBzdGF0aWNfY2FzdDxpZCA8TlNTZWN1cmVDb2Rpbmc+Pih1c2VySW5mby0+d3Jh
cHBlcigpKSA6IG5pbF07Ci0gICAgZWxzZQotICAgICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdl
YlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZp
Z2F0aW9uOndyYXBwZXIobmF2aWdhdGlvbildOworICAgIGlmIChmcmFtZUluZm8uaXNNYWluRnJh
bWUpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9u
IGlzIG5vdCBudWxsIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSBudWxsIGZvciBzb21lIG5hdmln
YXRpb25zIHRocm91Z2ggdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4KKyAgICAgICAgaWYgKG1fbmF2
aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkU3RhcnRQ
cm92aXNpb25hbE5hdmlnYXRpb25Vc2VySW5mbykKKyAgICAgICAgICAgIFsoaWQgPFdLTmF2aWdh
dGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3Om1fbmF2aWdh
dGlvblN0YXRlLm1fd2ViVmlldyBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbjp3cmFwcGVy
KG5hdmlnYXRpb24pIHVzZXJJbmZvOnVzZXJJbmZvID8gc3RhdGljX2Nhc3Q8aWQgPE5TU2VjdXJl
Q29kaW5nPj4odXNlckluZm8tPndyYXBwZXIoKSkgOiBuaWxdOworICAgICAgICBlbHNlIGlmICht
X25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFN0
YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKQorICAgICAgICAgICAgW25hdmlnYXRpb25EZWxlZ2F0
ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRTdGFydFByb3Zpc2lvbmFs
TmF2aWdhdGlvbjp3cmFwcGVyKG5hdmlnYXRpb24pXTsKKyAgICB9CisgICAgaWYgKG1fbmF2aWdh
dGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkU3RhcnRQcm92
aXNpb25hbExvYWRXaXRoUmVxdWVzdEluRnJhbWUpCisgICAgICAgIFsoaWQgPFdLTmF2aWdhdGlv
bkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpIF93ZWJWaWV3Om1fbmF2
aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZFdpdGhSZXF1ZXN0
OnJlcXVlc3QubnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhU
VFBCb2R5KSBpbkZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZy
YW1lSW5mbyksICZwYWdlKSldOwogfQogCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9u
KFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9i
amVjdCopCkBAIC04MjEsOSArODI1LDkgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OgogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2
YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlKSBfd2ViVmlld0RpZENhbmNlbENsaWVudFJlZGlyZWN0
Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlld107CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8TlNF
cnJvcj4gY3JlYXRlRXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIoV0tXZWJWaWV3ICp3ZWJWaWV3
LCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBOU0Vycm9yICpvcmlnaW5hbEVycm9yKQor
c3RhdGljIFJldGFpblB0cjxOU0Vycm9yPiBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRl
cihXS1dlYlZpZXcgKndlYlZpZXcsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mbywgTlNF
cnJvciAqb3JpZ2luYWxFcnJvcikKIHsKLSAgICBhdXRvIGZyYW1lSGFuZGxlID0gQVBJOjpGcmFt
ZUhhbmRsZTo6Y3JlYXRlKHdlYkZyYW1lUHJveHkuZnJhbWVJRCgpKTsKKyAgICBhdXRvIGZyYW1l
SGFuZGxlID0gQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRlKGZyYW1lSW5mby5mcmFtZUlEID8gKmZy
YW1lSW5mby5mcmFtZUlEIDogRnJhbWVJZGVudGlmaWVyIHsgfSk7CiAKICAgICBhdXRvIHJlY292
ZXJ5QXR0ZW1wdGVyID0gYWRvcHROUyhbW1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1w
dGVyIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldyBmcmFtZUhhbmRsZTp3cmFwcGVyKGZy
YW1lSGFuZGxlLmdldCgpKSB1cmxTdHJpbmc6b3JpZ2luYWxFcnJvci51c2VySW5mb1tOU1VSTEVy
cm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5XV0pOwogCkBAIC04MzUsNTAgKzgzOSwzOSBAQCBz
dGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZUVycm9yV2l0CiAgICAgcmV0dXJuIGFkb3B0
TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpvcmlnaW5hbEVycm9yLmRvbWFpbiBj
b2RlOm9yaWdpbmFsRXJyb3IuY29kZSB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pOwogfQogCi0v
LyBGSVhNRTogU2hvdWxkbid0IG5lZWQgdG8gcGFzcyB0aGUgV2ViRnJhbWVQcm94eSBpbiBoZXJl
LiBBdCBtb3N0LCBhIEZyYW1lSGFuZGxlLgotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFnZVBy
b3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBBUEk6Ok5hdmlnYXRpb24q
IG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9i
amVjdCopCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIEZyYW1lSW5m
b0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEFQ
STo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYg
ZXJyb3IsIEFQSTo6T2JqZWN0KikKIHsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0
aGF0IG5hdmlnYXRpb24gaXMgbm90IG51bGwgaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IG51bGwg
Zm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgYmFjay9mb3J3YXJkIGNhY2hlLgotCi0g
ICAgLy8gRklYTUU6IFNldCB0aGUgZXJyb3Igb24gdGhlIG5hdmlnYXRpb24gb2JqZWN0LgotCi0g
ICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld0RpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IpCi0gICAgICAgIHJldHVy
bjsKLQogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9u
YXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7CiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIgPSBj
cmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcihtX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZp
ZXcsIHdlYkZyYW1lUHJveHksIGVycm9yKTsKLSAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZp
ZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRp
b246d3JhcHBlcihuYXZpZ2F0aW9uKSB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0
ZXIuZ2V0KCldOwotfQotCi0vLyBGSVhNRTogU2hvdWxkbid0IG5lZWQgdG8gcGFzcyB0aGUgV2Vi
RnJhbWVQcm94eSBpbiBoZXJlLiBBdCBtb3N0LCBhIEZyYW1lSGFuZGxlLgotdm9pZCBOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZy
YW1lV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQ
cm94eSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0KikKLXsKLSAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0aGF0IG5hdmlnYXRpb24gaXMgbm90IG51bGwgaGVyZSwg
YnV0IGl0J3MgY3VycmVudGx5IG51bGwgYmVjYXVzZSBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92
aXNpb25hbExvYWRGb3JGcmFtZSBwYXNzZXMgbnVsbC4KLQotICAgIGlmICghbV9uYXZpZ2F0aW9u
U3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdOYXZpZ2F0aW9uRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0
aW9uRGVsZWdhdGUuZ2V0KCk7Ci0gICAgYXV0byBlcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlciA9
IGNyZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyKG1fbmF2aWdhdGlvblN0YXRlLm1fd2Vi
Vmlldywgd2ViRnJhbWVQcm94eSwgZXJyb3IpOworICAgIGF1dG8gZXJyb3JXaXRoUmVjb3ZlcnlB
dHRlbXB0ZXIgPSBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcihtX25hdmlnYXRpb25T
dGF0ZS5tX3dlYlZpZXcsIGZyYW1lSW5mbywgZXJyb3IpOwogCi0gICAgWyhpZCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGVQcml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0
aW9uU3RhdGUubV93ZWJWaWV3IG5hdmlnYXRpb246bmlsIGRpZEZhaWxQcm92aXNpb25hbExvYWRJ
blN1YmZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5m
byksICZwYWdlKSkgd2l0aEVycm9yOmVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyLmdldCgpXTsK
KyAgICBpZiAoZnJhbWVJbmZvLmlzTWFpbkZyYW1lKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlvbiBpcyBub3QgbnVsbCBoZXJlLCBidXQgaXQncyBj
dXJyZW50bHkgbnVsbCBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRoZSBiYWNrL2Zvcndh
cmQgY2FjaGUuCisgICAgICAgIGlmIChtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld0RpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3Ip
CisgICAgICAgICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3Rh
dGUubV93ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246d3JhcHBlcihuYXZpZ2F0
aW9uKSB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCldOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGlmIChtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld05hdmlnYXRpb25EaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFt
ZVdpdGhFcnJvcikKKyAgICAgICAgICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0
ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmll
dyBuYXZpZ2F0aW9uOm5pbCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZTp3cmFwcGVy
KEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCAmcGFnZSkpIHdpdGhF
cnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CisgICAgfQorICAgIGlmICht
X25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEZh
aWxQcm92aXNpb25hbExvYWRXaXRoUmVxdWVzdEluRnJhbWVXaXRoRXJyb3IpCisgICAgICAgIFso
aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJW
aWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0
aFJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90
VXBkYXRlSFRUUEJvZHkpIGluRnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdU
Rk1vdmUoZnJhbWVJbmZvKSwgJnBhZ2UpKSB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlBdHRl
bXB0ZXIuZ2V0KCldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6ZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlv
biogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmln
YXRpb25DbGllbnQ6OmRpZENvbW1pdE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBGcmFt
ZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok5h
dmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KikKIHsKLSAgICBpZiAoIW1fbmF2aWdh
dGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkQ29tbWl0TmF2
aWdhdGlvbikKLSAgICAgICAgcmV0dXJuOwotCiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUg
PSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKICAgICBpZiAo
IW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFdl
IHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9uIGlzIG5vdCBudWxsIGhlcmUsIGJ1dCBpdCdz
IGN1cnJlbnRseSBudWxsIGZvciBzb21lIG5hdmlnYXRpb25zIHRocm91Z2ggdGhlIGJhY2svZm9y
d2FyZCBjYWNoZS4KLQotICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzptX25hdmlnYXRp
b25TdGF0ZS5tX3dlYlZpZXcgZGlkQ29tbWl0TmF2aWdhdGlvbjp3cmFwcGVyKG5hdmlnYXRpb24p
XTsKKyAgICBpZiAoZnJhbWVJbmZvLmlzTWFpbkZyYW1lKSB7CisgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlvbiBpcyBub3QgbnVsbCBoZXJlLCBidXQgaXQn
cyBjdXJyZW50bHkgbnVsbCBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRoZSBiYWNrL2Zv
cndhcmQgY2FjaGUuCisgICAgICAgIGlmIChtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25E
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZENvbW1pdE5hdmlnYXRpb24pCisgICAgICAgICAgICBb
bmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRp
ZENvbW1pdE5hdmlnYXRpb246d3JhcHBlcihuYXZpZ2F0aW9uKV07CisgICAgfQorICAgIGlmICht
X25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZENv
bW1pdExvYWRXaXRoUmVxdWVzdEluRnJhbWUpCisgICAgICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tO
YXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2Vi
VmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkQ29tbWl0TG9hZFdpdGhSZXF1ZXN0
OnJlcXVlc3QubnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhU
VFBCb2R5KSBpbkZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZy
YW1lSW5mbyksICZwYWdlKSldOwogfQogCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpO
YXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCopCkBAIC04OTUsMzggKzg4OCwzOCBA
QCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6CiAgICAgW3N0YXRpY19j
YXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUu
Z2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uRGlk
RmluaXNoRG9jdW1lbnRMb2FkOndyYXBwZXIobmF2aWdhdGlvbildOwogfQogCi12b2lkIE5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTmF2aWdhdGlvbihXZWJQYWdl
UHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqKQor
dm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaE5hdmlnYXRp
b24oV2ViUGFnZVByb3h5JiBwYWdlLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2Jq
ZWN0KikKIHsKLSAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRl
TWV0aG9kcy53ZWJWaWV3RGlkRmluaXNoTmF2aWdhdGlvbikKLSAgICAgICAgcmV0dXJuOwotCiAg
ICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRp
b25EZWxlZ2F0ZS5nZXQoKTsKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9u
IGlzIG5vdCBudWxsIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSBudWxsIGZvciBzb21lIG5hdmln
YXRpb25zIHRocm91Z2ggdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4KLQotICAgIFtuYXZpZ2F0aW9u
RGVsZWdhdGUgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkRmluaXNoTmF2
aWdhdGlvbjp3cmFwcGVyKG5hdmlnYXRpb24pXTsKKyAgICBpZiAoZnJhbWVJbmZvLmlzTWFpbkZy
YW1lKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlv
biBpcyBub3QgbnVsbCBoZXJlLCBidXQgaXQncyBjdXJyZW50bHkgbnVsbCBmb3Igc29tZSBuYXZp
Z2F0aW9ucyB0aHJvdWdoIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUuCisgICAgICAgIGlmIChtX25h
dmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEZpbmlz
aE5hdmlnYXRpb24pCisgICAgICAgICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9u
YXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246d3JhcHBlcihuYXZp
Z2F0aW9uKV07CisgICAgfQorICAgIGlmIChtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25E
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEZpbmlzaExvYWRXaXRoUmVxdWVzdEluRnJhbWUpCisg
ICAgICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVn
YXRlIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkV2l0
aFJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90
VXBkYXRlSFRUUEJvZHkpIGluRnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdU
Rk1vdmUoZnJhbWVJbmZvKSwgJnBhZ2UpKV07CiB9CiAKLS8vIEZJWE1FOiBTaG91bGRuJ3QgbmVl
ZCB0byBwYXNzIHRoZSBXZWJGcmFtZVByb3h5IGluIGhlcmUuIEF0IG1vc3QsIGEgRnJhbWVIYW5k
bGUuCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbE5hdmln
YXRpb25XaXRoRXJyb3IoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFt
ZVByb3h5LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9iamVjdCogdXNlckluZm8pCit2b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFn
ZVByb3h5JiBwYWdlLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9iamVjdCogdXNlckluZm8pCiB7Ci0gICAgaWYgKCFt
X25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEZh
aWxOYXZpZ2F0aW9uV2l0aEVycm9yCi0gICAgICAgICYmICFtX25hdmlnYXRpb25TdGF0ZS5tX25h
dmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9y
VXNlckluZm8pCi0gICAgICAgIHJldHVybjsKLQogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRl
ID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7CiAgICAgaWYg
KCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlvbiBpcyBub3QgbnVsbCBoZXJlLCBidXQgaXQn
cyBjdXJyZW50bHkgbnVsbCBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRoZSBiYWNrL2Zv
cndhcmQgY2FjaGUuCisgICAgYXV0byBlcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlciA9IGNyZWF0
ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyKG1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldywg
ZnJhbWVJbmZvLCBlcnJvcik7CiAKLSAgICBhdXRvIGVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVy
ID0gY3JlYXRlRXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIobV9uYXZpZ2F0aW9uU3RhdGUubV93
ZWJWaWV3LCB3ZWJGcmFtZVByb3h5LCBlcnJvcik7Ci0gICAgaWYgKG1fbmF2aWdhdGlvblN0YXRl
Lm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRmFpbE5hdmlnYXRpb25XaXRo
RXJyb3JVc2VySW5mbykKLSAgICAgICAgWyhpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
PiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3
IGRpZEZhaWxOYXZpZ2F0aW9uOndyYXBwZXIobmF2aWdhdGlvbikgd2l0aEVycm9yOmVycm9yV2l0
aFJlY292ZXJ5QXR0ZW1wdGVyLmdldCgpIHVzZXJJbmZvOnVzZXJJbmZvID8gc3RhdGljX2Nhc3Q8
aWQgPE5TU2VjdXJlQ29kaW5nPj4odXNlckluZm8tPndyYXBwZXIoKSkgOiBuaWxdOwotICAgIGVs
c2UKLSAgICAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRl
Lm1fd2ViVmlldyBkaWRGYWlsTmF2aWdhdGlvbjp3cmFwcGVyKG5hdmlnYXRpb24pIHdpdGhFcnJv
cjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CisgICAgaWYgKGZyYW1lSW5mby5p
c01haW5GcmFtZSkgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0aGF0IG5h
dmlnYXRpb24gaXMgbm90IG51bGwgaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IG51bGwgZm9yIHNv
bWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgYmFjay9mb3J3YXJkIGNhY2hlLgorICAgICAgICBp
ZiAobV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdE
aWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvclVzZXJJbmZvKQorICAgICAgICAgICAgWyhpZCA8V0tO
YXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9u
YXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZEZhaWxOYXZpZ2F0aW9uOndyYXBwZXIobmF2aWdh
dGlvbikgd2l0aEVycm9yOmVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyLmdldCgpIHVzZXJJbmZv
OnVzZXJJbmZvID8gc3RhdGljX2Nhc3Q8aWQgPE5TU2VjdXJlQ29kaW5nPj4odXNlckluZm8tPndy
YXBwZXIoKSkgOiBuaWxdOworICAgICAgICBlbHNlIGlmIChtX25hdmlnYXRpb25TdGF0ZS5tX25h
dmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9y
KQorICAgICAgICAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0
YXRlLm1fd2ViVmlldyBkaWRGYWlsTmF2aWdhdGlvbjp3cmFwcGVyKG5hdmlnYXRpb24pIHdpdGhF
cnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CisgICAgfQorICAgIGlmICht
X25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEZh
aWxMb2FkV2l0aFJlcXVlc3RJbkZyYW1lV2l0aEVycm9yKQorICAgICAgICBbKGlkIDxXS05hdmln
YXRpb25EZWxlZ2F0ZVByaXZhdGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25hdmln
YXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkRmFpbExvYWRXaXRoUmVxdWVzdDpyZXF1ZXN0Lm5zVVJM
UmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSkgaW5GcmFt
ZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCAmcGFn
ZSkpIHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CiB9CiAKIHZv
aWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgU2FtZURv
Y3VtZW50TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUsIEFQSTo6T2JqZWN0KikKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjU3ODkxKQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3QKICAgICBhdXRvJiB1bnJlYWNoYWJsZVVSTCA9IHByb3Zp
c2lvbmFsTG9hZGVyLnVucmVhY2hhYmxlVVJMKCk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJv
Y2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBwcm92aXNpb25hbExv
YWRlci5uYXZpZ2F0aW9uSUQoKSwgdXJsLCB1bnJlYWNoYWJsZVVSTCwgVXNlckRhdGEoV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQo
KSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgbV9mcmFt
ZS0+aW5mbygpLCBwcm92aXNpb25hbExvYWRlci5yZXF1ZXN0KCksIHByb3Zpc2lvbmFsTG9hZGVy
Lm5hdmlnYXRpb25JRCgpLCB1cmwsIHVucmVhY2hhYmxlVVJMLCBVc2VyRGF0YShXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5n
ZXQoKSkpKTsKIH0KIAogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhUaXRsZUxlbmd0aCA9
IDEwMDA7IC8vIENsb3Nlc3QgcG93ZXIgb2YgMTAgYWJvdmUgdGhlIFczQyByZWNvbW1lbmRhdGlv
biBmb3IgVGl0bGUgbGVuZ3RoLgpAQCAtNTc1LDcgKzU3NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ28KICAgICAgICAgdXNlZExlZ2FjeVRMUyA9IHVzZWRMZWdh
Y3lUTFNGcm9tUGFnZUNhY2hlID09IFVzZWRMZWdhY3lUTFM6OlllczsKICAgICAKICAgICAvLyBO
b3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50
TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1pbWVUeXBl
KCksIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0PHVpbnQzMl90
PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSksIHZhbHVlT3JDb21w
dXRlKGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCksIFtdIHsgcmV0
dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KSwgdXNlZExlZ2FjeVRMUywgbV9mcmFtZS0+Y29yZUZy
YW1lKCktPmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSwgaGFzSW5zZWN1cmVDb250ZW50
LCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5k
bGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCks
IG1fZnJhbWUtPmluZm8oKSwgZG9jdW1lbnRMb2FkZXIucmVxdWVzdCgpLCBkb2N1bWVudExvYWRl
ci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5taW1lVHlwZSgpLCBt
X2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9m
cmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCB2YWx1ZU9yQ29tcHV0ZShk
b2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBbXSB7IHJldHVybiBD
ZXJ0aWZpY2F0ZUluZm8oKTsgfSksIHVzZWRMZWdhY3lUTFMsIG1fZnJhbWUtPmNvcmVGcmFtZSgp
LT5kb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29udGVudCwgVXNl
ckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1
c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiAgICAgd2ViUGFnZS0+ZGlkQ29tbWl0TG9hZChtX2Zy
YW1lKTsKIH0KIApAQCAtNjAzLDEyICs2MDMsMTUgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRGYQogICAgIC8vIEEgYmV0dGVyIHNvbHV0aW9uIHRvIHRoaXMgcHJvYmxl
bSB3b3VsZCBiZSBmaW5kIGEgY2xlYW4gd2F5IHRvIHBvc3Rwb25lIHRoZSBkaXNjb25uZWN0aW9u
IG9mIHRoZSBEb2N1bWVudExvYWRlciBmcm9tIHRoZSBGcmFtZSB1bnRpbAogICAgIC8vIHRoZSBl
bnRpcmUgRnJhbWVMb2FkZXJDbGllbnQgZnVuY3Rpb24gd2FzIGNvbXBsZXRlLgogICAgIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCA9IDA7Ci0gICAgaWYgKGF1dG8gZG9jdW1lbnRMb2FkZXIgPSBtX2Zy
YW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKQor
ICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0OworICAgIGlmIChhdXRvIGRvY3VtZW50TG9hZGVy
ID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXIoKSkgewogICAgICAgICBuYXZpZ2F0aW9uSUQgPSBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExv
YWRlcio+KGRvY3VtZW50TG9hZGVyKS0+bmF2aWdhdGlvbklEKCk7CisgICAgICAgIHJlcXVlc3Qg
PSBkb2N1bWVudExvYWRlci0+cmVxdWVzdCgpOworICAgIH0KIAogICAgIC8vIE5vdGlmeSB0aGUg
VUlQcm9jZXNzLgogICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBtX2ZyYW1lLT5jb3Jl
RnJhbWUoKTsKLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZh
aWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmlu
Zm8oKSwgbmF2aWdhdGlvbklELCBjb3JlRnJhbWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsTG9hZEVy
cm9yQmVpbmdIYW5kbGVkVVJMKCksIGVycm9yLCB3aWxsQ29udGludWVMb2FkaW5nLCBVc2VyRGF0
YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJE
YXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCks
IG1fZnJhbWUtPmluZm8oKSwgcmVxdWVzdCwgbmF2aWdhdGlvbklELCBjb3JlRnJhbWUtPmxvYWRl
cigpLnByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKCksIGVycm9yLCB3aWxsQ29u
dGludWVMb2FkaW5nLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1P
YmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKIAogICAgIC8vIElmIHdl
IGhhdmUgYSBsb2FkIGxpc3RlbmVyLCBub3RpZnkgaXQuCiAgICAgaWYgKFdlYkZyYW1lOjpMb2Fk
TGlzdGVuZXIqIGxvYWRMaXN0ZW5lciA9IG1fZnJhbWUtPmxvYWRMaXN0ZW5lcigpKQpAQCAtNjI1
LDEzICs2MjgsMTQgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYQog
CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKIAotICAgIGF1dG8gbmF2aWdhdGlv
bklEID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqbV9mcmFtZS0+Y29yZUZyYW1l
KCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpLm5hdmlnYXRpb25JRCgpOworICAgIGF1dG8m
IGRvY3VtZW50TG9hZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqbV9mcmFt
ZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpOworICAgIGF1dG8gbmF2
aWdhdGlvbklEID0gZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCk7CiAKICAgICAvLyBOb3Rp
ZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJD
bGllbnQoKS5kaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKCp3ZWJQYWdlLCAqbV9mcmFtZSwg
ZXJyb3IsIHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmFpbExvYWRGb3JGcmFtZSht
X2ZyYW1lLT5mcmFtZUlEKCksIG5hdmlnYXRpb25JRCwgZXJyb3IsIFVzZXJEYXRhKFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkp
LmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
RmFpbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmluZm8oKSwgZG9j
dW1lbnRMb2FkZXIucmVxdWVzdCgpLCBuYXZpZ2F0aW9uSUQsIGVycm9yLCBVc2VyRGF0YShXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdl
dCgpKS5nZXQoKSkpKTsKIAogICAgIC8vIElmIHdlIGhhdmUgYSBsb2FkIGxpc3RlbmVyLCBub3Rp
ZnkgaXQuCiAgICAgaWYgKFdlYkZyYW1lOjpMb2FkTGlzdGVuZXIqIGxvYWRMaXN0ZW5lciA9IG1f
ZnJhbWUtPmxvYWRMaXN0ZW5lcigpKQpAQCAtNjY1LDEzICs2NjksMTQgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaQogCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1
c2VyRGF0YTsKIAotICAgIGF1dG8gbmF2aWdhdGlvbklEID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1l
bnRMb2FkZXImPigqbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCkpLm5hdmlnYXRpb25JRCgpOworICAgIGF1dG8mIGRvY3VtZW50TG9hZGVyID0gc3RhdGljX2Nh
c3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCkpOworICAgIGF1dG8gbmF2aWdhdGlvbklEID0gZG9jdW1lbnRMb2FkZXIu
bmF2aWdhdGlvbklEKCk7CiAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAg
d2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRGaW5pc2hMb2FkRm9yRnJh
bWUoKndlYlBhZ2UsICptX2ZyYW1lLCB1c2VyRGF0YSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJ
UHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZp
bmlzaExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIG5hdmlnYXRpb25JRCwgVXNlckRh
dGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2Vy
RGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRGaW5pc2hMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1l
LT5pbmZvKCksIGRvY3VtZW50TG9hZGVyLnJlcXVlc3QoKSwgbmF2aWdhdGlvbklELCBVc2VyRGF0
YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJE
YXRhLmdldCgpKS5nZXQoKSkpKTsKIAogICAgIC8vIElmIHdlIGhhdmUgYSBsb2FkIGxpc3RlbmVy
LCBub3RpZnkgaXQuCiAgICAgaWYgKFdlYkZyYW1lOjpMb2FkTGlzdGVuZXIqIGxvYWRMaXN0ZW5l
ciA9IG1fZnJhbWUtPmxvYWRMaXN0ZW5lcigpKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU3OTUyKQorKysgVG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMDMtMDUgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgV0tO
YXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlIFNQSSB0byBpbmZvcm0gYXBwbGljYXRpb24gb2Ygc3Vi
ZnJhbWUgbmF2aWdhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwODY3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OYXZpZ2F0aW9uLm1t
OgorICAgICAgICAoLVtGcmFtZU5hdmlnYXRpb25EZWxlZ2F0ZSB3YWl0Rm9yTmF2aWdhdGlvbnM6
XSk6CisgICAgICAgICgtW0ZyYW1lTmF2aWdhdGlvbkRlbGVnYXRlIHJlcXVlc3RzXSk6CisgICAg
ICAgICgtW0ZyYW1lTmF2aWdhdGlvbkRlbGVnYXRlIGZyYW1lc10pOgorICAgICAgICAoLVtGcmFt
ZU5hdmlnYXRpb25EZWxlZ2F0ZSBjYWxsYmFja3NdKToKKyAgICAgICAgKC1bRnJhbWVOYXZpZ2F0
aW9uRGVsZWdhdGUgX3dlYlZpZXc6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRXaXRoUmVxdWVzdDpp
bkZyYW1lOl0pOgorICAgICAgICAoLVtGcmFtZU5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aFJlcXVlc3Q6aW5GcmFtZTp3aXRoRXJyb3I6XSk6Cisg
ICAgICAgICgtW0ZyYW1lTmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3OmRpZENvbW1pdExvYWRX
aXRoUmVxdWVzdDppbkZyYW1lOl0pOgorICAgICAgICAoLVtGcmFtZU5hdmlnYXRpb25EZWxlZ2F0
ZSBfd2ViVmlldzpkaWRGYWlsTG9hZFdpdGhSZXF1ZXN0OmluRnJhbWU6d2l0aEVycm9yOl0pOgor
ICAgICAgICAoLVtGcmFtZU5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpkaWRGaW5pc2hMb2Fk
V2l0aFJlcXVlc3Q6aW5GcmFtZTpdKToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIwLTAzLTA1ICBB
bnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgUGFnZS1zcGVjaWZp
YyBVc2VyU3R5bGVTaGVldHMgc2hvdWxkIHdhaXQgdW50aWwgdGhlIGluaXRpYWwgZW1wdHkgZG9j
dW1lbnQgaGFzIGJlZW4gcmVtb3ZlZCB0byBiZSBpbmplY3RlZApJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OYXZpZ2F0aW9uLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmF2aWdhdGlvbi5tbQkocmV2aXNp
b24gMjU3ODkxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OYXZp
Z2F0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiwxMCBAQAogI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Q
cml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9y
Lmg+CiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgorI2lt
cG9ydCAiVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCIKIAogc3RhdGljIGJvb2wgaXNEb25lOwogc3Rh
dGljIFJldGFpblB0cjxXS05hdmlnYXRpb24+IGN1cnJlbnROYXZpZ2F0aW9uOwpAQCAtOTgsNiAr
MTAwLDE4OSBAQCBURVNUKFdLTmF2aWdhdGlvbiwgTG9hZFJlcXVlc3QpCiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCitAaW50ZXJmYWNlIEZyYW1lTmF2aWdhdGlv
bkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorLSAodm9pZCl3YWl0
Rm9yTmF2aWdhdGlvbnM6KHNpemVfdCljb3VudDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgTlNBcnJheTxOU1VSTFJlcXVlc3QgKj4gKnJlcXVlc3RzOworQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBOU0FycmF5PFdLRnJhbWVJbmZvICo+ICpmcmFtZXM7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmNhbGxiYWNrczsK
K0BlbmQKKworQGltcGxlbWVudGF0aW9uIEZyYW1lTmF2aWdhdGlvbkRlbGVnYXRlIHsKKyAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk8TlNVUkxSZXF1ZXN0ICo+PiBfcmVxdWVzdHM7CisgICAg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PFdLRnJhbWVJbmZvICo+PiBfZnJhbWVzOworICAgIFJl
dGFpblB0cjxOU011dGFibGVBcnJheTxOU1N0cmluZyAqPj4gX2NhbGxiYWNrczsKKyAgICBzaXpl
X3QgX25hdmlnYXRpb25Db3VudDsKK30KKworLSAodm9pZCl3YWl0Rm9yTmF2aWdhdGlvbnM6KHNp
emVfdClleHBlY3RlZE5hdmlnYXRpb25Db3VudAoreworICAgIHdoaWxlIChfbmF2aWdhdGlvbkNv
dW50IDwgZXhwZWN0ZWROYXZpZ2F0aW9uQ291bnQpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnNwaW5SdW5Mb29wKCk7Cit9CisKKy0gKE5TQXJyYXk8TlNVUkxSZXF1ZXN0ICo+ICopcmVx
dWVzdHMKK3sKKyAgICByZXR1cm4gX3JlcXVlc3RzLmdldCgpOworfQorCistIChOU0FycmF5PFdL
RnJhbWVJbmZvICo+ICopZnJhbWVzCit7CisgICAgcmV0dXJuIF9mcmFtZXMuZ2V0KCk7Cit9CisK
Ky0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKiljYWxsYmFja3MKK3sKKyAgICByZXR1cm4gX2NhbGxi
YWNrcy5nZXQoKTsKK30KKworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0
IGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUKK3sKKyAgICBpZiAoIV9yZXF1ZXN0cykKKyAg
ICAgICAgX3JlcXVlc3RzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICBbX3JlcXVlc3Rz
IGFkZE9iamVjdDpyZXF1ZXN0XTsKKworICAgIGlmICghX2ZyYW1lcykKKyAgICAgICAgX2ZyYW1l
cyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisgICAgW19mcmFtZXMgYWRkT2JqZWN0OmZyYW1l
XTsKKworICAgIGlmICghX2NhbGxiYWNrcykKKyAgICAgICAgX2NhbGxiYWNrcyA9IFtOU011dGFi
bGVBcnJheSBhcnJheV07CisgICAgW19jYWxsYmFja3MgYWRkT2JqZWN0OkAic3RhcnQgcHJvdmlz
aW9uYWwiXTsKK30KKworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgaW5G
cmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSB3aXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgorewor
ICAgIFtfcmVxdWVzdHMgYWRkT2JqZWN0OnJlcXVlc3RdOworICAgIFtfZnJhbWVzIGFkZE9iamVj
dDpmcmFtZV07CisgICAgW19jYWxsYmFja3MgYWRkT2JqZWN0OkAiZmFpbCBwcm92aXNpb25hbCJd
OworICAgIF9uYXZpZ2F0aW9uQ291bnQrKzsKK30KKworLSAodm9pZClfd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBkaWRDb21taXRMb2FkV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJl
cXVlc3QgaW5GcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZQoreworICAgIFtfcmVxdWVzdHMgYWRk
T2JqZWN0OnJlcXVlc3RdOworICAgIFtfZnJhbWVzIGFkZE9iamVjdDpmcmFtZV07CisgICAgW19j
YWxsYmFja3MgYWRkT2JqZWN0OkAiY29tbWl0Il07Cit9CisKKy0gKHZvaWQpX3dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgZGlkRmFpbExvYWRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdCBpbkZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIHdpdGhFcnJvcjooTlNFcnJvciAq
KWVycm9yCit7CisgICAgW19yZXF1ZXN0cyBhZGRPYmplY3Q6cmVxdWVzdF07CisgICAgW19mcmFt
ZXMgYWRkT2JqZWN0OmZyYW1lXTsKKyAgICBbX2NhbGxiYWNrcyBhZGRPYmplY3Q6QCJmYWlsIl07
CisgICAgX25hdmlnYXRpb25Db3VudCsrOworfQorCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGRpZEZpbmlzaExvYWRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVx
dWVzdCBpbkZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lCit7CisgICAgW19yZXF1ZXN0cyBhZGRP
YmplY3Q6cmVxdWVzdF07CisgICAgW19mcmFtZXMgYWRkT2JqZWN0OmZyYW1lXTsKKyAgICBbX2Nh
bGxiYWNrcyBhZGRPYmplY3Q6QCJmaW5pc2giXTsKKyAgICBfbmF2aWdhdGlvbkNvdW50Kys7Cit9
CisKK0BlbmQKKworVEVTVChXS05hdmlnYXRpb24sIEZyYW1lcykKK3sKKyAgICBXS1dlYlZpZXdD
b25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIFRlc3RVUkxTY2hlbWVIYW5kbGVyICpoYW5k
bGVyID0gW1tUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBbaGFu
ZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOl4oV0tXZWJWaWV3ICosIGlkPFdLVVJM
U2NoZW1lVGFzaz4gdGFzaykgeworICAgICAgICBOU1N0cmluZyAqcmVzcG9uc2VTdHJpbmcgPSBu
aWw7CisgICAgICAgIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFs
VG9TdHJpbmc6QCJmcmFtZTovL2hvc3QxLyJdKQorICAgICAgICAgICAgcmVzcG9uc2VTdHJpbmcg
PSBAIjxpZnJhbWUgc3JjPSdmcmFtZTovL2hvc3QyLyc+PC9pZnJhbWU+IjsKKyAgICAgICAgZWxz
ZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAi
ZnJhbWU6Ly9ob3N0Mi8iXSkKKyAgICAgICAgICAgIHJlc3BvbnNlU3RyaW5nID0gQCI8c2NyaXB0
PmZ1bmN0aW9uIG5hdmlnYXRlKCkgeyB3aW5kb3cubG9jYXRpb249J2ZyYW1lOi8vaG9zdDMvJyB9
PC9zY3JpcHQ+PGJvZHkgb25sb2FkPSduYXZpZ2F0ZSgpJz48L2JvZHk+IjsKKyAgICAgICAgZWxz
ZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAi
ZnJhbWU6Ly9ob3N0My8iXSkgeworICAgICAgICAgICAgW3Rhc2sgZGlkRmFpbFdpdGhFcnJvcjpb
TlNFcnJvciBlcnJvcldpdGhEb21haW46QCJ0ZXN0RXJyb3JEb21haW4iIGNvZGU6NDIgdXNlcklu
Zm86bmlsXV07CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NF
UlQocmVzcG9uc2VTdHJpbmcpOworICAgICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05T
VVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6
QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpyZXNwb25zZVN0cmluZy5sZW5ndGgg
dGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNl
OnJlc3BvbnNlLmdldCgpXTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W3Jlc3BvbnNl
U3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CisgICAgICAg
IFt0YXNrIGRpZEZpbmlzaF07CisgICAgfV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2No
ZW1lSGFuZGxlcjpoYW5kbGVyIGZvclVSTFNjaGVtZTpAImZyYW1lIl07CisKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1
dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtGcmFtZU5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAg
ICAgICAgd2ViVmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsK
KyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiZnJhbWU6Ly9ob3N0MS8iXV1dOworICAgIFtkZWxlZ2F0ZSB3
YWl0Rm9yTmF2aWdhdGlvbnM6M107CisgICAgCisgICAgc3RydWN0IEV4cGVjdGVkU3RyaW5ncyB7
CisgICAgICAgIGNvbnN0IGNoYXIqIGNhbGxiYWNrOworICAgICAgICBjb25zdCBjaGFyKiBmcmFt
ZVJlcXVlc3Q7CisgICAgICAgIGNvbnN0IGNoYXIqIGZyYW1lU2VjdXJpdHlPcmlnaW5Ib3N0Owor
ICAgICAgICBjb25zdCBjaGFyKiByZXF1ZXN0OworICAgIH07CisgICAgCisgICAgYXV0byBjaGVj
a0NhbGxiYWNrcyA9IFtkZWxlZ2F0ZV0gKFZlY3RvcjxFeHBlY3RlZFN0cmluZ3M+IGV4cGVjdGVk
VmVjdG9yKSB7CisgICAgICAgIE5TQXJyYXk8TlNVUkxSZXF1ZXN0ICo+ICpyZXF1ZXN0cyA9IGRl
bGVnYXRlLmdldCgpLnJlcXVlc3RzOworICAgICAgICBOU0FycmF5PFdLRnJhbWVJbmZvICo+ICpm
cmFtZXMgPSBkZWxlZ2F0ZS5nZXQoKS5mcmFtZXM7CisgICAgICAgIE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKmNhbGxiYWNrcyA9IGRlbGVnYXRlLmdldCgpLmNhbGxiYWNrczsKKyAgICAgICAgRVhQRUNU
X0VRKHJlcXVlc3RzLmNvdW50LCBleHBlY3RlZFZlY3Rvci5zaXplKCkpOworICAgICAgICBFWFBF
Q1RfRVEoZnJhbWVzLmNvdW50LCBleHBlY3RlZFZlY3Rvci5zaXplKCkpOworICAgICAgICBFWFBF
Q1RfRVEoY2FsbGJhY2tzLmNvdW50LCBleHBlY3RlZFZlY3Rvci5zaXplKCkpOworICAgICAgICAK
KyAgICAgICAgYXV0byBjaGVja0NhbGxiYWNrID0gW10gKE5TU3RyaW5nICpjYWxsYmFjaywgV0tG
cmFtZUluZm8gKmZyYW1lLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3QsIGNvbnN0IEV4cGVjdGVkU3Ry
aW5ncyYgZXhwZWN0ZWQpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShjYWxsYmFjaywg
ZXhwZWN0ZWQuY2FsbGJhY2spOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGZyYW1lLnJl
cXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCBleHBlY3RlZC5mcmFtZVJlcXVlc3QpOworICAgICAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKGZyYW1lLnNlY3VyaXR5T3JpZ2luLmhvc3QsIGV4cGVjdGVk
LmZyYW1lU2VjdXJpdHlPcmlnaW5Ib3N0KTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShy
ZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgZXhwZWN0ZWQucmVxdWVzdCk7CisgICAgICAgIH07
CisgICAgICAgIAorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4cGVjdGVkVmVjdG9y
LnNpemUoKTsgKytpKQorICAgICAgICAgICAgY2hlY2tDYWxsYmFjayhjYWxsYmFja3NbaV0sIGZy
YW1lc1tpXSwgcmVxdWVzdHNbaV0sIGV4cGVjdGVkVmVjdG9yW2ldKTsKKyAgICB9OworICAgIAor
ICAgIGNoZWNrQ2FsbGJhY2tzKHsKKyAgICAgICAgeworICAgICAgICAgICAgInN0YXJ0IHByb3Zp
c2lvbmFsIiwKKyAgICAgICAgICAgICIiLAorICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAi
ZnJhbWU6Ly9ob3N0MS8iCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJjb21taXQiLAorICAg
ICAgICAgICAgImZyYW1lOi8vaG9zdDEvIiwKKyAgICAgICAgICAgICJob3N0MSIsCisgICAgICAg
ICAgICAiZnJhbWU6Ly9ob3N0MS8iCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJzdGFydCBw
cm92aXNpb25hbCIsCisgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICJob3N0MSIsCisgICAg
ICAgICAgICAiZnJhbWU6Ly9ob3N0Mi8iCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJjb21t
aXQiLAorICAgICAgICAgICAgImZyYW1lOi8vaG9zdDIvIiwKKyAgICAgICAgICAgICJob3N0MiIs
CisgICAgICAgICAgICAiZnJhbWU6Ly9ob3N0Mi8iCisgICAgICAgIH0sIHsKKyAgICAgICAgICAg
ICJmaW5pc2giLAorICAgICAgICAgICAgImZyYW1lOi8vaG9zdDIvIiwKKyAgICAgICAgICAgICJo
b3N0MiIsCisgICAgICAgICAgICAiZnJhbWU6Ly9ob3N0Mi8iCisgICAgICAgIH0sIHsKKyAgICAg
ICAgICAgICJmaW5pc2giLAorICAgICAgICAgICAgImZyYW1lOi8vaG9zdDEvIiwKKyAgICAgICAg
ICAgICJob3N0MSIsCisgICAgICAgICAgICAiZnJhbWU6Ly9ob3N0MS8iCisgICAgICAgIH0sIHsK
KyAgICAgICAgICAgICJzdGFydCBwcm92aXNpb25hbCIsCisgICAgICAgICAgICAiZnJhbWU6Ly9o
b3N0Mi8iLAorICAgICAgICAgICAgImhvc3QyIiwKKyAgICAgICAgICAgICJmcmFtZTovL2hvc3Qz
LyIKKyAgICAgICAgfSwgeworICAgICAgICAgICAgImZhaWwgcHJvdmlzaW9uYWwiLAorICAgICAg
ICAgICAgImZyYW1lOi8vaG9zdDIvIiwKKyAgICAgICAgICAgICJob3N0MiIsCisgICAgICAgICAg
ICAiZnJhbWU6Ly9ob3N0My8iCisgICAgICAgIH0KKyAgICB9KTsKK30KKwogQGludGVyZmFjZSBE
aWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGU+CiBAZW5kCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392642</attachid>
            <date>2020-03-05 16:07:36 -0800</date>
            <delta_ts>2020-03-05 16:45:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208670-20200305160735.patch</filename>
            <type>text/plain</type>
            <size>80850</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTc4OTIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDIwLTAzLTA1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLTmF2aWdh
dGlvbkRlbGVnYXRlUHJpdmF0ZSBTUEkgdG8gaW5mb3JtIGFwcGxpY2F0aW9uIG9mIHN1YmZyYW1l
IG5hdmlnYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDg2NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGVyZSBpcyBubyBXS05hdmlnYXRpb24gZm9yIHN1YmZyYW1lIG5hdmlnYXRpb25zLCBz
byBqdXN0IGV4cG9zZSB0aGUgTlNVUkxSZXF1ZXN0IGRpcmVjdGx5LgorICAgICAgICBUaGlzIGlz
IGVxdWl2YWxlbnQgdG8gV0tOYXZpZ2F0aW9uLl9yZXF1ZXN0LCB3aGljaCBpcyBkaXN0aW5jdCBm
cm9tIFdLRnJhbWVJbmZvLnJlcXVlc3QuCisgICAgICAgIFRoZSBmb3JtZXIgaXMgdGhlIGN1cnJl
bnRseSBwZW5kaW5nIHJlcXVlc3QsIHRoZSBsYXR0ZXIgaXMgdGhlIHJlcXVlc3QgdGhhdCBoYXMg
YWxyZWFkeSBsb2FkZWQuCisgICAgICAgIEkgbmVlZGVkIHRvIG1vdmUgdGhlIGlzTWFpbkZyYW1l
IGNoZWNrIHRvIHRoZSBOYXZpZ2F0aW9uQ2xpZW50IGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAg
VGhpcyBpcyBuZWVkZWQgZm9yIDxyZGFyOi8vcHJvYmxlbS81NzIwMTAzND4uCisgICAgICAgIENv
dmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFN0YXJ0UHJv
dmlzaW9uYWxOYXZpZ2F0aW9uKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlk
RmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcik6CisgICAgICAgIChBUEk6Ok5hdmln
YXRpb25DbGllbnQ6OmRpZENvbW1pdE5hdmlnYXRpb24pOgorICAgICAgICAoQVBJOjpOYXZpZ2F0
aW9uQ2xpZW50OjpkaWRGaW5pc2hOYXZpZ2F0aW9uKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3IpOgorICAgICAgICAoQVBJOjpOYXZp
Z2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcik6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAg
IChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0TmF2aWdhdGlvbkNsaWVudC5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6c2V0
TmF2aWdhdGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OmNyZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyKToKKyAgICAgICAgKFdl
YktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9u
YWxOYXZpZ2F0aW9uV2l0aEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRl
OjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRDb21taXROYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hOYXZpZ2F0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpk
aWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcik6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVX
aXRoRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwp
OgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5
OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92
aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNp
b25hbFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNp
b25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGYWlsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZEZpbmlzaExvYWQpOgorCiAyMDIwLTAzLTA0ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2FsbCBnbG9iYWxPYmplY3RJc0F2
YWlsYWJsZUZvckZyYW1lIGJlZm9yZSBldmFsdWF0aW5nIEphdmFTY3JpcHQgaW4gbmV3bHkgY3Jl
YXRlZCB3b3JsZHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1Nzg5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcg
KzEzMiw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmNhbmNlbCgpCiAgICAgQVNTRVJU
KG1fbWFpbkZyYW1lKTsKICAgICBhdXRvIGVycm9yID0gV2ViS2l0OjpjYW5jZWxsZWRFcnJvciht
X3JlcXVlc3QpOwogICAgIGVycm9yLnNldFR5cGUoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6VHlw
ZTo6Q2FuY2VsbGF0aW9uKTsKLSAgICBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUobV9t
YWluRnJhbWUtPmZyYW1lSUQoKSwgeyB9LCBtX25hdmlnYXRpb25JRCwgbV9wcm92aXNpb25hbExv
YWRVUkwsIGVycm9yLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nOjpObywgVXNlckRhdGEg
eyB9KTsgLy8gV2lsbCBkZWxldGUgfHRoaXN8LgorICAgIGRpZEZhaWxQcm92aXNpb25hbExvYWRG
b3JGcmFtZShtX21haW5GcmFtZS0+ZnJhbWVJRCgpLCB7IH0sIHsgfSwgbV9uYXZpZ2F0aW9uSUQs
IG1fcHJvdmlzaW9uYWxMb2FkVVJMLCBlcnJvciwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGlu
Zzo6Tm8sIFVzZXJEYXRhIHsgfSk7IC8vIFdpbGwgZGVsZXRlIHx0aGlzfC4KIH0KIAogdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQpAQCAtMjI4LDcgKzIyOCw3
IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGkKICAgICBtX3BhZ2Uu
ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIHNvdXJj
ZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcsIGZyYW1lSUQpOwogfQogCi12b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmIHVybCwgVVJM
JiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYgdXJsLCBVUkwmJiB1bnJl
YWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIGlmICghdmFsaWRh
dGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CkBAIC0yNDUs
MTAgKzI0NSwxMCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRTdGFydFByb3ZpCiAg
ICAgaWYgKGF1dG8qIHBhZ2VNYWluRnJhbWUgPSBtX3BhZ2UubWFpbkZyYW1lKCkpCiAgICAgICAg
IHBhZ2VNYWluRnJhbWUtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKHVybCk7CiAKLSAgICBtX3Bh
Z2UuZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJl
ZigpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUodXJsKSwgV1RGTW92ZSh1bnJlYWNo
YWJsZVVSTCksIHVzZXJEYXRhKTsKKyAgICBtX3BhZ2UuZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1l
SW5mbyksIFdURk1vdmUocmVxdWVzdCksIG5hdmlnYXRpb25JRCwgV1RGTW92ZSh1cmwpLCBXVEZN
b3ZlKHVucmVhY2hhYmxlVVJMKSwgdXNlckRhdGEpOwogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYgZXJyb3IsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGlu
ZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBG
cmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5n
IHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBp
ZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjYxLDEwICsyNjEsMTAgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkRmFp
bFByb3ZpcwogICAgIGlmIChhdXRvKiBwYWdlTWFpbkZyYW1lID0gbV9wYWdlLm1haW5GcmFtZSgp
KQogICAgICAgICBwYWdlTWFpbkZyYW1lLT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkKCk7CiAKLSAg
ICBtX3BhZ2UuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKG1fcHJvY2Vzcy5j
b3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwgbmF2aWdhdGlvbklELCBwcm92
aXNpb25hbFVSTCwgZXJyb3IsIHdpbGxDb250aW51ZUxvYWRpbmcsIHVzZXJEYXRhKTsgLy8gTWF5
IGRlbGV0ZSB8dGhpc3wuCisgICAgbV9wYWdlLmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFt
ZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyks
IFdURk1vdmUocmVxdWVzdCksIG5hdmlnYXRpb25JRCwgcHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3
aWxsQ29udGludWVMb2FkaW5nLCB1c2VyRGF0YSk7IC8vIE1heSBkZWxldGUgfHRoaXN8LgogfQog
Ci12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJh
bWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUlu
Zm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRp
b25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVu
dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9E
YXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250
ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29u
dGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50
PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsK
ICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRp
ZENvbW1pdExvYWQKICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlEKTsKIAog
ICAgIG1fd2FzQ29tbWl0dGVkID0gdHJ1ZTsKLSAgICBtX3BhZ2UuY29tbWl0UHJvdmlzaW9uYWxQ
YWdlKGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgbWltZVR5cGUsIGZyYW1lSGFzQ3VzdG9tQ29udGVu
dFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBlLCBjZXJ0aWZpY2F0ZUluZm8sIHVzZWRMZWdhY3lUTFMs
IGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgdXNlckRh
dGEpOyAvLyBXaWxsIGRlbGV0ZSB8dGhpc3wuCisgICAgbV9wYWdlLmNvbW1pdFByb3Zpc2lvbmFs
UGFnZShmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1vdmUocmVxdWVzdCksIG5hdmln
YXRpb25JRCwgbWltZVR5cGUsIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxv
YWRUeXBlLCBjZXJ0aWZpY2F0ZUluZm8sIHVzZWRMZWdhY3lUTFMsIGNvbnRhaW5zUGx1Z2luRG9j
dW1lbnQsIGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgdXNlckRhdGEpOyAvLyBXaWxsIGRlbGV0
ZSB8dGhpc3wuCiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0
aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlLCBGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuaAkocmV2aXNpb24gMjU3ODkxKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTIy
LDkgKzEyMiw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9u
RGF0YShjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyKTsKICAgICB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENyZWF0ZU1haW5GcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJM
JiYsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgZGlk
Q29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0
aWZpY2F0ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1
bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNl
Y3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcs
IGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJiwgVVJMJiYgdW5y
ZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRDb21taXRMb2FkRm9y
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZy
YW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgdXNlZExl
Z2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpI
YXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRh
dGEmKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRp
bmcsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2soVVJMU2No
ZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0
IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBXZWJCYWNrRm9yd2FyZExpc3RD
b3VudHMmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
YyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGJvb2wgaXNNYWluRnJhbWUsIEZyYW1lSW5mb0Rh
dGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0Zy
YW1lSW5mbywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
cmV2aXNpb24gMjU3ODkxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIzOCw3ICszMjM4LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpbwogICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lv
biB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCks
IGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSwgYWN0aW9uLCBuYXZpZ2F0aW9u
ID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCBkb3dubG9hZElELCBXVEZNb3ZlKHdl
YnNpdGVQb2xpY2llcykgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNp
b25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRl
ciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdp
bkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhh
c0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdl
UHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3Vz
dG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBi
b29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJl
Q29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCiB7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlKTsKICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6IG5ld1BJRCA9ICVpIiwg
bV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpKTsKQEAgLTMy
NzIsNyArMzI3Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UK
ICAgICBjb25zdCBhdXRvIG9sZFdlYlBhZ2VJRCA9IG1fd2ViUGFnZUlEOwogICAgIHN3YXBUb1By
b3Zpc2lvbmFsUGFnZShzdGQ6OmV4Y2hhbmdlKG1fcHJvdmlzaW9uYWxQYWdlLCBudWxscHRyKSk7
CiAKLSAgICBkaWRDb21taXRMb2FkRm9yRnJhbWUoZnJhbWVJRCwgbmF2aWdhdGlvbklELCBtaW1l
VHlwZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1lTG9hZFR5cGUsIGNlcnRp
ZmljYXRlSW5mbywgdXNlZExlZ2FjeVRMUywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9yY2Vk
SGFzSW5zZWN1cmVDb250ZW50LCB1c2VyRGF0YSk7CisgICAgZGlkQ29tbWl0TG9hZEZvckZyYW1l
KGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwgV1RGTW92ZShyZXF1ZXN0KSwgbmF2aWdhdGlv
bklELCBtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1lTG9hZFR5
cGUsIGNlcnRpZmljYXRlSW5mbywgdXNlZExlZ2FjeVRMUywgY29udGFpbnNQbHVnaW5Eb2N1bWVu
dCwgZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCB1c2VyRGF0YSk7CiAKICAgICBtX2luc3BlY3Rv
ckNvbnRyb2xsZXItPmRpZENvbW1pdFByb3Zpc2lvbmFsUGFnZShvbGRXZWJQYWdlSUQsIG1fd2Vi
UGFnZUlEKTsKIH0KQEAgLTQzMTYsMTIgKzQzMTYsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZERlc3Ryb3lOYXZpZ2F0aW9uKAogICAgIG1fbmF2aWdhdGlvblN0YXRlLT5kaWREZXN0cm95TmF2
aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBVUkwmJiB1cmwsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1l
SW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBV
UkwmJiB1cmwsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEp
CiB7Ci0gICAgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3Mu
Y29weVJlZigpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUodXJsKSwgV1RGTW92ZSh1
bnJlYWNoYWJsZVVSTCksIHVzZXJEYXRhKTsKKyAgICBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJ
bmZvKSwgV1RGTW92ZShyZXF1ZXN0KSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKHVybCksIFdURk1v
dmUodW5yZWFjaGFibGVVUkwpLCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzcywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgVVJMJiYgdXJsLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVT
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJiB1cmwsIFVSTCYmIHVucmVhY2hhYmxlVVJM
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBw
cm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDM2Myw4ICs0MzYzLDggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMbwogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21t
aXRDaGFuZ2VzKCk7CiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBtX2xvYWRlckNs
aWVudC0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZp
Z2F0aW9uLmdldCgpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgZWxzZSBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCi0g
ICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24o
KnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIG1fbmF2aWdh
dGlvbkNsaWVudC0+ZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24oKnRoaXMsIFdURk1vdmUo
ZnJhbWVJbmZvKSwgV1RGTW92ZShyZXF1ZXN0KSwgbmF2aWdhdGlvbi5nZXQoKSwgcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAj
aWYgRU5BQkxFKFdFQl9BVVRITikKICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPmF1dGhlbnRpY2F0
b3JNYW5hZ2VyKCkuY2FuY2VsUmVxdWVzdChtX3dlYlBhZ2VJRCwgZnJhbWVJRCk7CkBAIC00NDc5
LDE3ICs0NDc5LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFUK
ICAgICBmcmFtZS0+ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHVy
bCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9h
ZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZh
aWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJ
bmZvRGF0YSYmIGZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvciwgV2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29udGludWVM
b2FkaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKG1fcHJvdmlzaW9u
YWxQYWdlICYmIG1fcHJvdmlzaW9uYWxQYWdlLT5uYXZpZ2F0aW9uSUQoKSA9PSBuYXZpZ2F0aW9u
SUQpIHsKICAgICAgICAgLy8gVGhlIGxvYWQgZGlkIG5vdCBmYWlsLCBpdCBpcyBtZXJlbHkgaGFw
cGVuaW5nIGluIGEgbmV3IHByb3Zpc2lvbmFsIHByb2Nlc3MuCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNz
LmNvcHlSZWYoKSwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBuYXZpZ2F0aW9uSUQsIHBy
b3Zpc2lvbmFsVVJMLCBlcnJvciwgd2lsbENvbnRpbnVlTG9hZGluZywgdXNlckRhdGEpOworICAg
IGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigp
LCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1vdmUocmVxdWVzdCksIG5hdmlnYXRp
b25JRCwgcHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3aWxsQ29udGludWVMb2FkaW5nLCB1c2VyRGF0
YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgV2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBw
cm92aXNpb25hbFVSTCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxv
YWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewog
ICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiB3
ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIHByb3Zp
c2lvbmFsVVJMICVzIiwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIHByb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkpOwogICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTog
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwgZnJhbWVJRC50
b1VJbnQ2NCgpLCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUo
KSk7CkBAIC00NTI4LDEyICs0NTI4LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92
aXNpb25hbExvYQogCiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBtX2xvYWRlckNs
aWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKCp0aGlzLCAqZnJh
bWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9P
YmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgZWxzZSBpZiAoZnJhbWUtPmlz
TWFpbkZyYW1lKCkpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFpbFByb3Zpc2lv
bmFsTmF2aWdhdGlvbldpdGhFcnJvcigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBl
cnJvciwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCkpOwotICAgIGVsc2UgewotICAgICAgICAvLyBGSVhNRTogR2V0IHRoZSBtYWluIGZy
YW1lJ3MgY3VycmVudCBuYXZpZ2F0aW9uLgotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRp
ZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKCp0aGlzLCAqZnJhbWUsIFdU
Rk1vdmUoZnJhbWVJbmZvKSwgbnVsbHB0ciwgZXJyb3IsIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRs
ZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICB9CisgICAgZWxzZQor
ICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25X
aXRoRXJyb3IoKnRoaXMsIFdURk1vdmUoZnJhbWVJbmZvKSwgV1RGTW92ZShyZXF1ZXN0KSwgbmF2
aWdhdGlvbi5nZXQoKSwgZXJyb3IsIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAogICAgIG1fZmFpbGluZ1Byb3Zpc2lvbmFsTG9h
ZFVSTCA9IHsgfTsKIApAQCAtNDU3MCw3ICs0NTY2LDcgQEAgc3RhdGljIE9wdGlvblNldDxDcm9z
c1NpdGVOYXZpZ2F0aW9uRGF0YQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9v
bCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhh
c0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdl
UHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3Vz
dG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5
VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPEhhc0luc2VjdXJlQ29u
dGVudD4gaGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAg
ICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRpZENv
bW1pdExvYWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9pZGVudGlmaWVyLnRv
VUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9y
d2FyZCkgQWZ0ZXIgbG9hZCBjb21taXQsIGJhY2svZm9yd2FyZCBsaXN0IGlzIG5vdzolcyIsIG1f
YmFja0ZvcndhcmRMaXN0LT5sb2dnaW5nU3RyaW5nKCkpOwpAQCAtNDY3MCw4ICs0NjY2LDggQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZQogICAgIG1fcGFnZUxvYWRT
dGF0ZS5jb21taXRDaGFuZ2VzKCk7CiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBt
X2xvYWRlckNsaWVudC0+ZGlkQ29tbWl0TG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmln
YXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0
YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIGVsc2UgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQot
ICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZENvbW1pdE5hdmlnYXRpb24oKnRoaXMsIG5h
dmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xp
ZW50LT5kaWRDb21taXROYXZpZ2F0aW9uKCp0aGlzLCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1v
dmUocmVxdWVzdCksIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxl
c1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCkBAIC00NzExLDcg
KzQ3MDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkCiAgICAg
fQogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUgLSBXZWJQYWdlUHJveHkgJXAgd2l0aCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIg
ZGlkRmluaXNoTG9hZCIsIHRoaXMsIG5hdmlnYXRpb25JRCk7CiAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoTG9hZEZvckZyYW1lOiBmcmFtZUlEID0gJSIgUFJJ
dTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwpAQCAtNDc0Miw4ICs0NzM4LDggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZQogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21t
aXRDaGFuZ2VzKCk7CiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBtX2xvYWRlckNs
aWVudC0+ZGlkRmluaXNoTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0
KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCkpOwotICAgIGVsc2UgaWYgKGlzTWFpbkZyYW1lKQotICAgICAgICBtX25hdmlnYXRp
b25DbGllbnQtPmRpZEZpbmlzaE5hdmlnYXRpb24oKnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOworICAgIGVsc2UKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGaW5pc2hOYXZp
Z2F0aW9uKCp0aGlzLCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1vdmUocmVxdWVzdCksIG5hdmln
YXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0
YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAgICAgaWYgKGlzTWFpbkZyYW1lKSB7CiAgICAgICAgIHJl
cG9ydFBhZ2VMb2FkUmVzdWx0KCk7CkBAIC00NzYwLDcgKzQ3NTYsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lCiAgICAgbV9pc0xvYWRpbmdBbHRlcm5hdGVIVE1M
U3RyaW5nRm9yRmFpbGluZ1Byb3Zpc2lvbmFsTG9hZCA9IGZhbHNlOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGYWlsTG9hZEZvckZyYW1lOiBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBmcmFtZUlELnRvVUludDY0KCks
IGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIApAQCAt
NDc5Myw4ICs0Nzg5LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUo
RgogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7CiAgICAgaWYgKG1fbG9hZGVy
Q2xpZW50KQogICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JG
cmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgbV9wcm9jZXNzLT50
cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAg
ZWxzZSBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVu
dC0+ZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3IoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5n
ZXQoKSwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0
YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5kaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcigqdGhpcywgV1RGTW92ZShmcmFtZUluZm8pLCBX
VEZNb3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgbV9wcm9jZXNzLT50cmFu
c2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAKICAgICBp
ZiAoaXNNYWluRnJhbWUpIHsKICAgICAgICAgcmVwb3J0UGFnZUxvYWRSZXN1bHQoZXJyb3IpOwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI1Nzg5
MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjA5LDExICsxNjA5LDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgUHJvdmlz
aW9uYWxQYWdlUHJveHkqIHByb3Zpc2lvbmFsUGFnZVByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9w
cm92aXNpb25hbFBhZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIGNvbW1pdFByb3Zpc2lvbmFsUGFnZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMy
X3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCB1
c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNv
cmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBV
c2VyRGF0YSYpOworICAgIHZvaWQgY29tbWl0UHJvdmlzaW9uYWxQYWdlKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1l
SGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFp
bnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBm
b3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CiAKICAgICAvLyBMb2dp
YyBzaGFyZWQgYmV0d2VlbiB0aGUgV2ViUGFnZVByb3h5IGFuZCB0aGUgUHJvdmlzaW9uYWxQYWdl
UHJveHkuCi0gICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBVUkwmJiwgVVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRh
Jik7Ci0gICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRh
JiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJp
bmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29y
ZTo6V2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmLCBVUkwmJiB1bnJlYWNo
YWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNv
bnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRQZXJmb3JtU2VydmVy
UmVkaXJlY3RTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcik7CkBAIC0xNzUzLDE2ICsxNzUzLDE2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDcmVh
dGVTdWJmcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkQ3JlYXRl
V2luZG93KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6R2xvYmFsV2luZG93SWRl
bnRpZmllciYmKTsKIAotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYsIFVS
TCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5m
b0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgVVJMJiYsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgd2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiB1cmwsIGRvdWJsZSBkZWxheSwgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCk7CiAg
ICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcik7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7Ci0gICAg
dm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5n
JiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6
OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRDb21t
aXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50
UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYsIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50
LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJl
Q29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3Ry
aW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNv
cmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRD
b21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRh
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIs
IHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYs
IGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25h
bDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwg
Y29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBV
c2VyRGF0YSYpOwotICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwotICAg
IHZvaWQgZGlkRmFpbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVz
ZXJEYXRhJik7CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRGYWls
TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3Qgc2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUs
IFVSTCYmLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ2hhbmdlTWFpbkRvY3VtZW50
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRFeHBsaWNpdE9wZW5Gb3JG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFVSTCYmLCBTdHJpbmcmJiBtaW1lVHlwZSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCShyZXZpc2lvbiAyNTc4OTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyMCwxNiArMTIwLDE2IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkQ3JlYXRlV2luZG93KFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6R2xvYmFsV2luZG93SWRl
bnRpZmllciB3aW5kb3dJZGVudGlmaWVyKQogCiAgICAgIyBGcmFtZSBsb2FkIG1lc3NhZ2VzCi0g
ICAgRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwgdXJsLCBVUkwgdW5yZWFjaGFi
bGVVUkwsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdl
YktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCB1cmwsIFVSTCB1bnJlYWNoYWJsZVVS
TCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBXaWxsUGVyZm9ybUNsaWVudFJl
ZGlyZWN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFN0cmluZyB1
cmwsIGRvdWJsZSBkZWxheSwgZW51bTpib29sIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Qg
bG9ja0JhY2tGb3J3YXJkTGlzdCkKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAgIERpZENoYW5nZVByb3Zpc2lv
bmFsVVJMRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgVVJMIHVybCkKLSAgICBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1l
SW5mb0RhdGEgZnJhbWVJbmZvLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBwcm92aXNp
b25hbFVSTCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgZW51bTpib29sIFdlYkNvcmU6
OldpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkKLSAgICBEaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBlLCBi
b29sIGhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9v
bCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNv
bnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKLSAgICBEaWRGYWlsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3Is
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpG
cmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIHByb3Zpc2lvbmFsVVJMLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yLCBlbnVtOmJvb2wgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGlu
ZyB3aWxsQ29udGludWVMb2FkaW5nLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERp
ZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3Ry
dWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBtaW1lVHlwZSwgYm9v
bCBoYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGxvYWRUeXBlLCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wg
Y29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250
ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEp
CisgICAgRGlkRmFpbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmluaXNo
RG9jdW1lbnRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEaWRG
aW5pc2hMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEaWRGaW5p
c2hMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBX
ZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQogICAgIERpZEZpcnN0TGF5b3V0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUoT3B0
aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gbGF5b3V0TWlsZXN0b25lcykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQu
aAkocmV2aXNpb24gMjU3ODkxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5h
dmlnYXRpb25DbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTcgKzc4LDE2IEBAIGNsYXNz
IE5hdmlnYXRpb25DbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfk5hdmlnYXRpb25DbGll
bnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlv
bihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIE5hdmlnYXRpb24qLCBPYmplY3QqKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24oV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIE5hdmlnYXRpb24qLCBPYmplY3QqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgTmF2aWdhdGlvbiosIE9iamVjdCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVy
Zm9ybUNsaWVudFJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJp
bmcmIGRlc3RpbmF0aW9uVVJMLCBkb3VibGUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJm
b3JtQ2xpZW50UmVkaXJlY3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmlu
ZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgZGVzdGluYXRpb25VUkwpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdChXZWJLaXQ6OldlYlBhZ2VQcm94
eSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0
aEVycm9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgTmF2
aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBPYmplY3QqKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3Io
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBXZWJLaXQ6OkZy
YW1lSW5mb0RhdGEmJiwgTmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
LCBPYmplY3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIE5hdmlnYXRpb24qLCBPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgTmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBPYmplY3Qq
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgTmF2aWdhdGlvbiosIE9iamVjdCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hEb2N1bWVudExvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBOYXZpZ2F0aW9uKiwgT2JqZWN0
KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaE5hdmlnYXRpb24oV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBOYXZpZ2F0aW9uKiwgT2JqZWN0KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpX
ZWJGcmFtZVByb3h5JiwgTmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
LCBPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTmF2aWdhdGlvbihXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgTmF2aWdhdGlvbiosIE9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktp
dDo6RnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgTmF2aWdhdGlv
biosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBPYmplY3QqKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IE5hdmlnYXRpb24qLCBXZWJLaXQ6OlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBPYmplY3Qq
KSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgQVBJOjpPYmplY3QqKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMjU3ODkxKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzMCw4
ICsyMTMwLDEwIEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWcKICAg
ICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSh0b0FQ
SSgmcGFnZSksIHRvQVBJKG5hdmlnYXRpb25SZXNwb25zZS5wdHIoKSksIHRvQVBJKGxpc3RlbmVy
LnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbihXZWJQ
YWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZp
Z2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVz
b3VyY2VSZXF1ZXN0JiYsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWZyYW1lSW5m
by5pc01haW5GcmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIG1fY2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0
aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdhdGlvbiksIHRvQVBJKHVzZXJEYXRhKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKQEAgLTIxNDQsNDEgKzIxNDYsNDUgQEAgdm9pZCBXS1Bh
Z2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZwogICAgICAgICAgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKHRvQVBJKCZwYWdl
KSwgdG9BUEkobmF2aWdhdGlvbiksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTmF2
aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmLCBBUEk6
Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkRmFp
bFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIEZyYW1l
SW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok5h
dmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9y
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbikKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxOYXZp
Z2F0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdhdGlvbiksIHRvQVBJKGVycm9yKSwgdG9B
UEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgaWYg
KGZyYW1lSW5mby5pc01haW5GcmFtZSkgeworICAgICAgICAgICAgICAgIGlmIChtX2NsaWVudC5k
aWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKQorICAgICAgICAgICAgICAgICAgICBtX2NsaWVu
dC5kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdh
dGlvbiksIHRvQVBJKGVycm9yKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAobV9jbGll
bnQuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUpCisgICAgICAgICAgICAgICAgICAg
IG1fY2xpZW50LmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lKHRvQVBJKCZwYWdlKSwg
dG9BUEkobmF2aWdhdGlvbiksIHRvQVBJKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShm
cmFtZUluZm8pLCAmcGFnZSkucHRyKCkpLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJEYXRhKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0g
ICAgICAgIHZvaWQgZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6
TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQor
ICAgICAgICB2b2lkIGRpZENvbW1pdE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBGcmFt
ZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpOYXZpZ2F0aW9u
KiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICghZnJhbWVJbmZvLmlzTWFpbkZyYW1lKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKwogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDb21taXROYXZpZ2F0aW9u
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG1fY2xpZW50LmRpZENvbW1p
dE5hdmlnYXRpb24odG9BUEkoJnBhZ2UpLCB0b0FQSShuYXZpZ2F0aW9uKSwgdG9BUEkodXNlckRh
dGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9u
KiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZv
aWQgZGlkRmluaXNoTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm8sIFJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRp
b24sIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgeworICAgICAgICAg
ICAgaWYgKCFmcmFtZUluZm8uaXNNYWluRnJhbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGaW5pc2hOYXZpZ2F0aW9uKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaE5hdmlnYXRpb24o
dG9BUEkoJnBhZ2UpLCB0b0FQSShuYXZpZ2F0aW9uKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRGYWlsTmF2
aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmLCBBUEk6
Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkRmFp
bE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFnZVByb3h5JiBwYWdlLCBGcmFtZUluZm9EYXRhJiYg
ZnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpOYXZpZ2F0aW9uKiBu
YXZpZ2F0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWZyYW1l
SW5mby5pc01haW5GcmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LmRpZEZhaWxOYXZpZ2F0aW9uKQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWxOYXZpZ2F0aW9uKHRvQVBJKCZwYWdlKSwgdG9B
UEkobmF2aWdhdGlvbiksIHRvQVBJKGVycm9yKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1l
UHJveHkmIHN1YmZyYW1lLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBBUEk6Ok5hdmlnYXRp
b24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6
Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgh
bV9jbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZElu
U3ViZnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQSShuYXZpZ2F0aW9uKSwgdG9BUEkoQVBJOjpGcmFt
ZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksICZwYWdlKS5wdHIoKSksIHRvQVBJKGVy
cm9yKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAg
ICB9Ci0KICAgICAgICAgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWQoV2ViUGFnZVByb3h5JiBw
YWdlLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkg
b3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGaW5pc2hE
b2N1bWVudExvYWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tO
YXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCShyZXZpc2lv
biAyNTc4OTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uRGVsZWdhdGVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsMTIgQEAg
c3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5IAogLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBjb250ZW50UnVsZUxpc3RXaXRoSWRlbnRpZmllcjooTlNT
dHJpbmcgKilpZGVudGlmaWVyIHBlcmZvcm1lZEFjdGlvbjooX1dLQ29udGVudFJ1bGVMaXN0QWN0
aW9uICopYWN0aW9uIGZvclVSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xNSksIGlvcygxMy4wKSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IHdlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlV2l0aFJlYXNvbjooX1dLUHJvY2Vzc1Rlcm1p
bmF0aW9uUmVhc29uKXJlYXNvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEy
LjApKTsKIAorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGluRnJhbWU6
KFdLRnJhbWVJbmZvICopZnJhbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0
IGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgd2l0aEVycm9yOihOU0Vycm9yICopZXJyb3Ig
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0g
KHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQ29tbWl0TG9hZFdpdGhSZXF1
ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0g
KHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmFpbExvYWRXaXRoUmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBpbkZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIHdp
dGhFcnJvcjooTlNFcnJvciAqKWVycm9yIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRpZEZpbmlzaExvYWRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBpbkZy
YW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CisKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAtICh2b2lkKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6KE5TU3RyaW5nICopZmlsZU5hbWUgdXRpOihOU1N0
cmluZyAqKXV0aTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6KE5TRGF0YSAqKWRvY3VtZW50
RGF0YTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5hdmln
YXRpb25DbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdE5hdmlnYXRpb25DbGllbnQuY3BwCShyZXZpc2lvbiAyNTc4OTEpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROYXZpZ2F0aW9uQ2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAiQVBJTmF2aWdh
dGlvbkFjdGlvbi5oIgogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb25DbGllbnQuaCIKKyNpbmNsdWRl
ICJGcmFtZUluZm9EYXRhLmgiCiAjaW5jbHVkZSAiV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvblByaXZhdGUuaCIK
ICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCkBAIC00Miw4ICs0MywxMCBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24o
V2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRh
ICovKSBvdmVycmlkZQorICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24oV2Vi
UGFnZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYs
IEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0KiAvKiB1c2VyRGF0YSAqLykgb3ZlcnJpZGUK
ICAgICB7CisgICAgICAgIGlmICghZnJhbWVJbmZvLmlzTWFpbkZyYW1lKQorICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQobV93ZWJWaWV3LCBXRUJL
SVRfTE9BRF9TVEFSVEVEKTsKICAgICB9CiAKQEAgLTUyLDcgKzU1LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgd2Via2l0V2ViVmlld0xvYWRDaGFuZ2VkKG1fd2ViVmlldywgV0VCS0lUX0xPQURfUkVE
SVJFQ1RFRCk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9u
V2l0aEVycm9yKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6Ok5hdmln
YXRpb24qLCBjb25zdCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yLCBBUEk6Ok9iamVjdCog
LyogdXNlckRhdGEgKi8pIG92ZXJyaWRlCisgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxOYXZp
Z2F0aW9uV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBGcmFt
ZUluZm9EYXRhJiYsIFJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBS
ZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yLCBBUEk6Ok9iamVjdCogLyogdXNlckRhdGEgKi8p
IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIWZyYW1lLmlzTWFpbkZyYW1lKCkpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC02NSwxOSArNjgsMjMgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKG1fd2ViVmlldywgV0VCS0lUX0xPQURfU1RBUlRFRCwg
cmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgZXJyb3Iu
Z2V0KCkpOwogICAgIH0KIAotICAgIHZvaWQgZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJQYWdlUHJv
eHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCogLyogdXNlckRhdGEgKi8pIG92ZXJy
aWRlCisgICAgdm9pZCBkaWRDb21taXROYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIEZyYW1lSW5m
b0RhdGEmJiBmcmFtZUluZm8sIFJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok5hdmlnYXRpb24qLCBB
UEk6Ok9iamVjdCogLyogdXNlckRhdGEgKi8pIG92ZXJyaWRlCiAgICAgeworICAgICAgICBpZiAo
IWZyYW1lSW5mby5pc01haW5GcmFtZSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgd2Vi
a2l0V2ViVmlld0xvYWRDaGFuZ2VkKG1fd2ViVmlldywgV0VCS0lUX0xPQURfQ09NTUlUVEVEKTsK
ICAgICB9CiAKLSAgICB2b2lkIGRpZEZpbmlzaE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJ
OjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICovKSBvdmVycmlkZQorICAg
IHZvaWQgZGlkRmluaXNoTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYg
ZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmpl
Y3QqIC8qIHVzZXJEYXRhICovKSBvdmVycmlkZQogICAgIHsKKyAgICAgICAgaWYgKCFmcmFtZUlu
Zm8uaXNNYWluRnJhbWUpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHdlYmtpdFdlYlZp
ZXdMb2FkQ2hhbmdlZChtX3dlYlZpZXcsIFdFQktJVF9MT0FEX0ZJTklTSEVEKTsKICAgICB9CiAK
LSAgICB2b2lkIGRpZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYsIFdlYkZy
YW1lUHJveHkmIGZyYW1lLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBSZXNvdXJjZUVycm9yJiBy
ZXNvdXJjZUVycm9yLCBBUEk6Ok9iamVjdCogLyogdXNlckRhdGEgKi8pIG92ZXJyaWRlCisgICAg
dm9pZCBkaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9E
YXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29u
c3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvciwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRh
ICovKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKCFmcmFtZS5pc01haW5GcmFtZSgpKQor
ICAgICAgICBpZiAoIWZyYW1lSW5mby5pc01haW5GcmFtZSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgR1VuaXF1ZVB0cjxHRXJyb3I+IGVycm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoZ19x
dWFya19mcm9tX3N0cmluZyhyZXNvdXJjZUVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCkpLAog
ICAgICAgICAgICAgdG9XZWJLaXRFcnJvcihyZXNvdXJjZUVycm9yLmVycm9yQ29kZSgpKSwgcmVz
b3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCShy
ZXZpc2lvbiAyNTc4OTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsMTcgKzk0LDE2IEBAIHByaXZhdGU6CiAg
ICAgICAgIH5OYXZpZ2F0aW9uQ2xpZW50KCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lk
IGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdh
dGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkU3RhcnRQcm92
aXNpb25hbE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSBvdmVy
cmlkZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3Qq
KSBvdmVycmlkZTsKICAgICAgICAgdm9pZCB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYlBh
Z2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgZG91YmxlKSBvdmVycmlkZTsKICAgICAgICAg
dm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpT
dHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZENh
bmNlbENsaWVudFJlZGlyZWN0KFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOwotICAgICAgICB2b2lk
IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFnZVByb3h5JiwgV2Vi
RnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRpZEZhaWxQcm92aXNp
b25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkm
LCBGcmFtZUluZm9EYXRhJiYsIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRpZENvbW1p
dE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3Qq
KSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0
aEVycm9yKFdlYlBhZ2VQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
LCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgICAgICB2b2lkIGRpZENvbW1pdE5hdmlnYXRp
b24oV2ViUGFnZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKICAgICAgICAg
dm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWQoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9u
KiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0
aW9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJp
ZGU7Ci0gICAgICAgIHZvaWQgZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFnZVByb3h5
JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgICAgICB2b2lkIGRpZEZpbmlz
aE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsK
KyAgICAgICAgdm9pZCBkaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkmLCBG
cmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok5hdmlnYXRp
b24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSBvdmVycmlk
ZTsKICAgICAgICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYs
IEFQSTo6TmF2aWdhdGlvbiosIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBBUEk6Ok9iamVj
dCopIG92ZXJyaWRlOwogCiAgICAgICAgIHZvaWQgcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2Uo
V2ViUGFnZVByb3h5JiwgT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4pIG92ZXJy
aWRlOwpAQCAtMjAzLDE3ICsyMDIsMjMgQEAgcHJpdmF0ZToKIAogICAgICAgICBib29sIHdlYlZp
ZXdEaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbiA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmll
d0RpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uVXNlckluZm8gOiAxOworICAgICAgICBib29s
IHdlYlZpZXdEaWRTdGFydFByb3Zpc2lvbmFsTG9hZFdpdGhSZXF1ZXN0SW5GcmFtZSA6IDE7CiAg
ICAgICAgIGJvb2wgd2ViVmlld0RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TmF2aWdhdGlvbiA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEZhaWxQcm92aXNpb25hbE5h
dmlnYXRpb25XaXRoRXJyb3IgOiAxOworICAgICAgICBib29sIHdlYlZpZXdEaWRGYWlsUHJvdmlz
aW9uYWxMb2FkV2l0aFJlcXVlc3RJbkZyYW1lV2l0aEVycm9yIDogMTsKICAgICAgICAgYm9vbCB3
ZWJWaWV3TmF2aWdhdGlvbkRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9y
IDogMTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3RGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhSZXF1
ZXN0SW5GcmFtZSA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1dpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3QgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3Qg
OiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCA6IDE7CiAg
ICAgICAgIGJvb2wgd2ViVmlld0RpZENvbW1pdE5hdmlnYXRpb24gOiAxOworICAgICAgICBib29s
IHdlYlZpZXdEaWRDb21taXRMb2FkV2l0aFJlcXVlc3RJbkZyYW1lIDogMTsKICAgICAgICAgYm9v
bCB3ZWJWaWV3TmF2aWdhdGlvbkRpZEZpbmlzaERvY3VtZW50TG9hZCA6IDE7CiAgICAgICAgIGJv
b2wgd2ViVmlld0RpZEZpbmlzaE5hdmlnYXRpb24gOiAxOworICAgICAgICBib29sIHdlYlZpZXdE
aWRGaW5pc2hMb2FkV2l0aFJlcXVlc3RJbkZyYW1lIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3
RGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3IgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRG
YWlsTmF2aWdhdGlvbldpdGhFcnJvclVzZXJJbmZvIDogMTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3
RGlkRmFpbExvYWRXaXRoUmVxdWVzdEluRnJhbWVXaXRoRXJyb3IgOiAxOwogICAgICAgICBib29s
IHdlYlZpZXdOYXZpZ2F0aW9uRGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbiA6IDE7CiAKICAgICAg
ICAgYm9vbCB3ZWJWaWV3UmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UgOiAxOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkocmV2
aXNpb24gMjU3ODkxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsMTIgKzE1NiwxNyBAQCB2b2lkIE5hdmln
YXRpb25TdGF0ZTo6c2V0TmF2aWdhdGlvbkRlbGVnCiAKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld0RpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uID0gW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpkaWRTdGFydFByb3Zpc2lvbmFs
TmF2aWdhdGlvbjopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Rp
ZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uVXNlckluZm8gPSBbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlv
bjp1c2VySW5mbzopXTsKKyAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Rp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkV2l0aFJlcXVlc3RJbkZyYW1lID0gW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRX
aXRoUmVxdWVzdDppbkZyYW1lOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb246KV07CiAgICAgbV9uYXZpZ2F0
aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0
aEVycm9yID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpk
aWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOndpdGhFcnJvcjopXTsKKyAgICBtX25hdmlnYXRp
b25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoUmVxdWVz
dEluRnJhbWVXaXRoRXJyb3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfd2ViVmlldzpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aFJlcXVlc3Q6aW5GcmFtZTp3aXRo
RXJyb3I6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRDb21t
aXROYXZpZ2F0aW9uID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2Vi
VmlldzpkaWRDb21taXROYXZpZ2F0aW9uOildOworICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3RGlkQ29tbWl0TG9hZFdpdGhSZXF1ZXN0SW5GcmFtZSA9IFtkZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZENvbW1pdExvYWRXaXRoUmVx
dWVzdDppbkZyYW1lOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3
RGlkRmluaXNoTmF2aWdhdGlvbiA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjopXTsKKyAgICBtX25hdmlnYXRpb25EZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld0RpZEZpbmlzaExvYWRXaXRoUmVxdWVzdEluRnJhbWUgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRGaW5pc2hMb2Fk
V2l0aFJlcXVlc3Q6aW5GcmFtZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld0RpZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9yID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpkaWRGYWlsTmF2aWdhdGlvbjp3aXRoRXJyb3I6KV07
CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRGYWlsTmF2aWdhdGlv
bldpdGhFcnJvclVzZXJJbmZvID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3dlYlZpZXc6ZGlkRmFpbE5hdmlnYXRpb246d2l0aEVycm9yOnVzZXJJbmZvOildOworICAg
IG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRmFpbExvYWRXaXRoUmVxdWVz
dEluRnJhbWVXaXRoRXJyb3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfd2ViVmlldzpkaWRGYWlsTG9hZFdpdGhSZXF1ZXN0OmluRnJhbWU6d2l0aEVycm9yOildOwog
CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdOYXZpZ2F0aW9uRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpuYXZpZ2F0aW9uOmRpZEZhaWxQcm92aXNpb25h
bExvYWRJblN1YmZyYW1lOndpdGhFcnJvcjopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1l
dGhvZHMud2ViVmlld1dpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QgPSBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
VG9VUkw6ZGVsYXk6KV07CkBAIC03NDgsMjIgKzc1MywyMSBAQCB2b2lkIE5hdmlnYXRpb25TdGF0
ZTo6TmF2aWdhdGlvbkNsaWVudDo6CiAgICAgfSkuZ2V0KCldOwogfQogCi12b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24o
V2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2Jq
ZWN0KiB1c2VySW5mbykKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpk
aWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEZyYW1lSW5m
b0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEFQ
STo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqIHVzZXJJbmZvKQogewotICAg
IGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdEaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbgotICAgICAgICAmJiAhbV9uYXZpZ2F0aW9u
U3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRTdGFydFByb3Zpc2lv
bmFsTmF2aWdhdGlvblVzZXJJbmZvKQotICAgICAgICByZXR1cm47Ci0KICAgICBhdXRvIG5hdmln
YXRpb25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdl
dCgpOwogICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0aGF0IG5hdmlnYXRpb24gaXMgbm90IG51bGwg
aGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IG51bGwgZm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3Vn
aCB0aGUgYmFjay9mb3J3YXJkIGNhY2hlLgotCi0gICAgaWYgKG1fbmF2aWdhdGlvblN0YXRlLm1f
bmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkU3RhcnRQcm92aXNpb25hbE5hdmln
YXRpb25Vc2VySW5mbykKLSAgICAgICAgWyhpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
PiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3
IGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uOndyYXBwZXIobmF2aWdhdGlvbikgdXNlcklu
Zm86dXNlckluZm8gPyBzdGF0aWNfY2FzdDxpZCA8TlNTZWN1cmVDb2Rpbmc+Pih1c2VySW5mby0+
d3JhcHBlcigpKSA6IG5pbF07Ci0gICAgZWxzZQotICAgICAgICBbbmF2aWdhdGlvbkRlbGVnYXRl
IHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZFN0YXJ0UHJvdmlzaW9uYWxO
YXZpZ2F0aW9uOndyYXBwZXIobmF2aWdhdGlvbildOworICAgIGlmIChmcmFtZUluZm8uaXNNYWlu
RnJhbWUpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0
aW9uIGlzIG5vdCBudWxsIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSBudWxsIGZvciBzb21lIG5h
dmlnYXRpb25zIHRocm91Z2ggdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4KKyAgICAgICAgaWYgKG1f
bmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkU3Rh
cnRQcm92aXNpb25hbE5hdmlnYXRpb25Vc2VySW5mbykKKyAgICAgICAgICAgIFsoaWQgPFdLTmF2
aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3Om1fbmF2
aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbjp3cmFw
cGVyKG5hdmlnYXRpb24pIHVzZXJJbmZvOnVzZXJJbmZvID8gc3RhdGljX2Nhc3Q8aWQgPE5TU2Vj
dXJlQ29kaW5nPj4odXNlckluZm8tPndyYXBwZXIoKSkgOiBuaWxdOworICAgICAgICBlbHNlIGlm
IChtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Rp
ZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKQorICAgICAgICAgICAgW25hdmlnYXRpb25EZWxl
Z2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRTdGFydFByb3Zpc2lv
bmFsTmF2aWdhdGlvbjp3cmFwcGVyKG5hdmlnYXRpb24pXTsKKyAgICB9CisgICAgaWYgKG1fbmF2
aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkU3RhcnRQ
cm92aXNpb25hbExvYWRXaXRoUmVxdWVzdEluRnJhbWUpCisgICAgICAgIFsoaWQgPFdLTmF2aWdh
dGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpIF93ZWJWaWV3Om1f
bmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZFdpdGhSZXF1
ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0
ZUhUVFBCb2R5KSBpbkZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3Zl
KGZyYW1lSW5mbyksICZwYWdlKSldOwogfQogCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdh
dGlvbkNsaWVudDo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0
aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBBUEk6
Ok9iamVjdCopCkBAIC04MjEsOSArODI1LDkgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmln
YXRpb25DbGllbnQ6OgogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQ
cml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlKSBfd2ViVmlld0RpZENhbmNlbENsaWVudFJlZGly
ZWN0Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlld107CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8
TlNFcnJvcj4gY3JlYXRlRXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIoV0tXZWJWaWV3ICp3ZWJW
aWV3LCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBOU0Vycm9yICpvcmlnaW5hbEVycm9y
KQorc3RhdGljIFJldGFpblB0cjxOU0Vycm9yPiBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVt
cHRlcihXS1dlYlZpZXcgKndlYlZpZXcsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mbywg
TlNFcnJvciAqb3JpZ2luYWxFcnJvcikKIHsKLSAgICBhdXRvIGZyYW1lSGFuZGxlID0gQVBJOjpG
cmFtZUhhbmRsZTo6Y3JlYXRlKHdlYkZyYW1lUHJveHkuZnJhbWVJRCgpKTsKKyAgICBhdXRvIGZy
YW1lSGFuZGxlID0gQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRlKGZyYW1lSW5mby5mcmFtZUlEID8g
KmZyYW1lSW5mby5mcmFtZUlEIDogRnJhbWVJZGVudGlmaWVyIHsgfSk7CiAKICAgICBhdXRvIHJl
Y292ZXJ5QXR0ZW1wdGVyID0gYWRvcHROUyhbW1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0
ZW1wdGVyIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldyBmcmFtZUhhbmRsZTp3cmFwcGVy
KGZyYW1lSGFuZGxlLmdldCgpKSB1cmxTdHJpbmc6b3JpZ2luYWxFcnJvci51c2VySW5mb1tOU1VS
TEVycm9yRmFpbGluZ1VSTFN0cmluZ0Vycm9yS2V5XV0pOwogCkBAIC04MzUsNTAgKzgzOSwzOSBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZUVycm9yV2l0CiAgICAgcmV0dXJuIGFk
b3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpvcmlnaW5hbEVycm9yLmRvbWFp
biBjb2RlOm9yaWdpbmFsRXJyb3IuY29kZSB1c2VySW5mbzp1c2VySW5mby5nZXQoKV0pOwogfQog
Ci0vLyBGSVhNRTogU2hvdWxkbid0IG5lZWQgdG8gcGFzcyB0aGUgV2ViRnJhbWVQcm94eSBpbiBo
ZXJlLiBBdCBtb3N0LCBhIEZyYW1lSGFuZGxlLgotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmln
YXRpb25DbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFn
ZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBBUEk6Ok5hdmlnYXRp
b24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6
Ok9iamVjdCopCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFp
bFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIEZyYW1l
SW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYgZXJyb3IsIEFQSTo6T2JqZWN0KikKIHsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2Vy
dCB0aGF0IG5hdmlnYXRpb24gaXMgbm90IG51bGwgaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IG51
bGwgZm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgYmFjay9mb3J3YXJkIGNhY2hlLgot
Ci0gICAgLy8gRklYTUU6IFNldCB0aGUgZXJyb3Igb24gdGhlIG5hdmlnYXRpb24gb2JqZWN0Lgot
Ci0gICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld0RpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IpCi0gICAgICAgIHJl
dHVybjsKLQogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUu
bV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7CiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIg
PSBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcihtX25hdmlnYXRpb25TdGF0ZS5tX3dl
YlZpZXcsIHdlYkZyYW1lUHJveHksIGVycm9yKTsKLSAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdl
YlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmln
YXRpb246d3JhcHBlcihuYXZpZ2F0aW9uKSB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlBdHRl
bXB0ZXIuZ2V0KCldOwotfQotCi0vLyBGSVhNRTogU2hvdWxkbid0IG5lZWQgdG8gcGFzcyB0aGUg
V2ViRnJhbWVQcm94eSBpbiBoZXJlLiBBdCBtb3N0LCBhIEZyYW1lSGFuZGxlLgotdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1
YmZyYW1lV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgd2ViRnJh
bWVQcm94eSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgQVBJOjpOYXZpZ2F0aW9uKiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0KikKLXsKLSAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0aGF0IG5hdmlnYXRpb24gaXMgbm90IG51bGwgaGVy
ZSwgYnV0IGl0J3MgY3VycmVudGx5IG51bGwgYmVjYXVzZSBXZWJQYWdlUHJveHk6OmRpZEZhaWxQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSBwYXNzZXMgbnVsbC4KLQotICAgIGlmICghbV9uYXZpZ2F0
aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdOYXZpZ2F0aW9uRGlk
RmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZp
Z2F0aW9uRGVsZWdhdGUuZ2V0KCk7Ci0gICAgYXV0byBlcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRl
ciA9IGNyZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyKG1fbmF2aWdhdGlvblN0YXRlLm1f
d2ViVmlldywgd2ViRnJhbWVQcm94eSwgZXJyb3IpOworICAgIGF1dG8gZXJyb3JXaXRoUmVjb3Zl
cnlBdHRlbXB0ZXIgPSBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcihtX25hdmlnYXRp
b25TdGF0ZS5tX3dlYlZpZXcsIGZyYW1lSW5mbywgZXJyb3IpOwogCi0gICAgWyhpZCA8V0tOYXZp
Z2F0aW9uRGVsZWdhdGVQcml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZp
Z2F0aW9uU3RhdGUubV93ZWJWaWV3IG5hdmlnYXRpb246bmlsIGRpZEZhaWxQcm92aXNpb25hbExv
YWRJblN1YmZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1l
SW5mbyksICZwYWdlKSkgd2l0aEVycm9yOmVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyLmdldCgp
XTsKKyAgICBpZiAoZnJhbWVJbmZvLmlzTWFpbkZyYW1lKSB7CisgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlvbiBpcyBub3QgbnVsbCBoZXJlLCBidXQgaXQn
cyBjdXJyZW50bHkgbnVsbCBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRoZSBiYWNrL2Zv
cndhcmQgY2FjaGUuCisgICAgICAgIGlmIChtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25E
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJy
b3IpCisgICAgICAgICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9u
U3RhdGUubV93ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246d3JhcHBlcihuYXZp
Z2F0aW9uKSB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCldOworICAg
IH0gZWxzZSB7CisgICAgICAgIGlmIChtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld05hdmlnYXRpb25EaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJm
cmFtZVdpdGhFcnJvcikKKyAgICAgICAgICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJp
dmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2Vi
VmlldyBuYXZpZ2F0aW9uOm5pbCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZTp3cmFw
cGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCAmcGFnZSkpIHdp
dGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CisgICAgfQorICAgIGlm
IChtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Rp
ZEZhaWxQcm92aXNpb25hbExvYWRXaXRoUmVxdWVzdEluRnJhbWVXaXRoRXJyb3IpCisgICAgICAg
IFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93
ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
V2l0aFJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRv
Tm90VXBkYXRlSFRUUEJvZHkpIGluRnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRl
KFdURk1vdmUoZnJhbWVJbmZvKSwgJnBhZ2UpKSB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlB
dHRlbXB0ZXIuZ2V0KCldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6ZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdh
dGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6OmRpZENvbW1pdE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBG
cmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6
Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KikKIHsKLSAgICBpZiAoIW1fbmF2
aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkQ29tbWl0
TmF2aWdhdGlvbikKLSAgICAgICAgcmV0dXJuOwotCiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdh
dGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKICAgICBp
ZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6
IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9uIGlzIG5vdCBudWxsIGhlcmUsIGJ1dCBp
dCdzIGN1cnJlbnRseSBudWxsIGZvciBzb21lIG5hdmlnYXRpb25zIHRocm91Z2ggdGhlIGJhY2sv
Zm9yd2FyZCBjYWNoZS4KLQotICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzptX25hdmln
YXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkQ29tbWl0TmF2aWdhdGlvbjp3cmFwcGVyKG5hdmlnYXRp
b24pXTsKKyAgICBpZiAoZnJhbWVJbmZvLmlzTWFpbkZyYW1lKSB7CisgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlvbiBpcyBub3QgbnVsbCBoZXJlLCBidXQg
aXQncyBjdXJyZW50bHkgbnVsbCBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRoZSBiYWNr
L2ZvcndhcmQgY2FjaGUuCisgICAgICAgIGlmIChtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRp
b25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZENvbW1pdE5hdmlnYXRpb24pCisgICAgICAgICAg
ICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3
IGRpZENvbW1pdE5hdmlnYXRpb246d3JhcHBlcihuYXZpZ2F0aW9uKV07CisgICAgfQorICAgIGlm
IChtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Rp
ZENvbW1pdExvYWRXaXRoUmVxdWVzdEluRnJhbWUpCisgICAgICAgIFtzdGF0aWNfY2FzdDxpZCA8
V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBf
d2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkQ29tbWl0TG9hZFdpdGhSZXF1
ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0
ZUhUVFBCb2R5KSBpbkZyYW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3Zl
KGZyYW1lSW5mbyksICZwYWdlKSldOwogfQogCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdh
dGlvbkNsaWVudDo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJ
OjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCopCkBAIC04OTUsMzggKzg4OCwz
OCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6CiAgICAgW3N0YXRp
Y19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdh
dGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9u
RGlkRmluaXNoRG9jdW1lbnRMb2FkOndyYXBwZXIobmF2aWdhdGlvbildOwogfQogCi12b2lkIE5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTmF2aWdhdGlvbihXZWJQ
YWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3Qq
KQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaE5hdmln
YXRpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6
T2JqZWN0KikKIHsKLSAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3RGlkRmluaXNoTmF2aWdhdGlvbikKLSAgICAgICAgcmV0dXJuOwot
CiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmln
YXRpb25EZWxlZ2F0ZS5nZXQoKTsKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0
aW9uIGlzIG5vdCBudWxsIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSBudWxsIGZvciBzb21lIG5h
dmlnYXRpb25zIHRocm91Z2ggdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4KLQotICAgIFtuYXZpZ2F0
aW9uRGVsZWdhdGUgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkRmluaXNo
TmF2aWdhdGlvbjp3cmFwcGVyKG5hdmlnYXRpb24pXTsKKyAgICBpZiAoZnJhbWVJbmZvLmlzTWFp
bkZyYW1lKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdh
dGlvbiBpcyBub3QgbnVsbCBoZXJlLCBidXQgaXQncyBjdXJyZW50bHkgbnVsbCBmb3Igc29tZSBu
YXZpZ2F0aW9ucyB0aHJvdWdoIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUuCisgICAgICAgIGlmICht
X25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEZp
bmlzaE5hdmlnYXRpb24pCisgICAgICAgICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6
bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246d3JhcHBlcihu
YXZpZ2F0aW9uKV07CisgICAgfQorICAgIGlmIChtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRp
b25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEZpbmlzaExvYWRXaXRoUmVxdWVzdEluRnJhbWUp
CisgICAgICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRl
bGVnYXRlIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGaW5pc2hMb2Fk
V2l0aFJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRv
Tm90VXBkYXRlSFRUUEJvZHkpIGluRnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRl
KFdURk1vdmUoZnJhbWVJbmZvKSwgJnBhZ2UpKV07CiB9CiAKLS8vIEZJWE1FOiBTaG91bGRuJ3Qg
bmVlZCB0byBwYXNzIHRoZSBXZWJGcmFtZVByb3h5IGluIGhlcmUuIEF0IG1vc3QsIGEgRnJhbWVI
YW5kbGUuCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbE5h
dmlnYXRpb25XaXRoRXJyb3IoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3ZWJG
cmFtZVByb3h5LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9iamVjdCogdXNlckluZm8pCit2b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3IoV2Vi
UGFnZVByb3h5JiBwYWdlLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9iamVjdCogdXNlckluZm8pCiB7Ci0gICAgaWYg
KCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Rp
ZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9yCi0gICAgICAgICYmICFtX25hdmlnYXRpb25TdGF0ZS5t
X25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEZhaWxOYXZpZ2F0aW9uV2l0aEVy
cm9yVXNlckluZm8pCi0gICAgICAgIHJldHVybjsKLQogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVn
YXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7CiAgICAg
aWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlvbiBpcyBub3QgbnVsbCBoZXJlLCBidXQg
aXQncyBjdXJyZW50bHkgbnVsbCBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRoZSBiYWNr
L2ZvcndhcmQgY2FjaGUuCisgICAgYXV0byBlcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlciA9IGNy
ZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyKG1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmll
dywgZnJhbWVJbmZvLCBlcnJvcik7CiAKLSAgICBhdXRvIGVycm9yV2l0aFJlY292ZXJ5QXR0ZW1w
dGVyID0gY3JlYXRlRXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIobV9uYXZpZ2F0aW9uU3RhdGUu
bV93ZWJWaWV3LCB3ZWJGcmFtZVByb3h5LCBlcnJvcik7Ci0gICAgaWYgKG1fbmF2aWdhdGlvblN0
YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRmFpbE5hdmlnYXRpb25X
aXRoRXJyb3JVc2VySW5mbykKLSAgICAgICAgWyhpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2
YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJW
aWV3IGRpZEZhaWxOYXZpZ2F0aW9uOndyYXBwZXIobmF2aWdhdGlvbikgd2l0aEVycm9yOmVycm9y
V2l0aFJlY292ZXJ5QXR0ZW1wdGVyLmdldCgpIHVzZXJJbmZvOnVzZXJJbmZvID8gc3RhdGljX2Nh
c3Q8aWQgPE5TU2VjdXJlQ29kaW5nPj4odXNlckluZm8tPndyYXBwZXIoKSkgOiBuaWxdOwotICAg
IGVsc2UKLSAgICAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0
YXRlLm1fd2ViVmlldyBkaWRGYWlsTmF2aWdhdGlvbjp3cmFwcGVyKG5hdmlnYXRpb24pIHdpdGhF
cnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CisgICAgaWYgKGZyYW1lSW5m
by5pc01haW5GcmFtZSkgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0aGF0
IG5hdmlnYXRpb24gaXMgbm90IG51bGwgaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IG51bGwgZm9y
IHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgYmFjay9mb3J3YXJkIGNhY2hlLgorICAgICAg
ICBpZiAobV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdEaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvclVzZXJJbmZvKQorICAgICAgICAgICAgWyhpZCA8
V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6
bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZEZhaWxOYXZpZ2F0aW9uOndyYXBwZXIobmF2
aWdhdGlvbikgd2l0aEVycm9yOmVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyLmdldCgpIHVzZXJJ
bmZvOnVzZXJJbmZvID8gc3RhdGljX2Nhc3Q8aWQgPE5TU2VjdXJlQ29kaW5nPj4odXNlckluZm8t
PndyYXBwZXIoKSkgOiBuaWxdOworICAgICAgICBlbHNlIGlmIChtX25hdmlnYXRpb25TdGF0ZS5t
X25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEZhaWxOYXZpZ2F0aW9uV2l0aEVy
cm9yKQorICAgICAgICAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlv
blN0YXRlLm1fd2ViVmlldyBkaWRGYWlsTmF2aWdhdGlvbjp3cmFwcGVyKG5hdmlnYXRpb24pIHdp
dGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CisgICAgfQorICAgIGlm
IChtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Rp
ZEZhaWxMb2FkV2l0aFJlcXVlc3RJbkZyYW1lV2l0aEVycm9yKQorICAgICAgICBbKGlkIDxXS05h
dmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25h
dmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkRmFpbExvYWRXaXRoUmVxdWVzdDpyZXF1ZXN0Lm5z
VVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSkgaW5G
cmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCAm
cGFnZSkpIHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CiB9CiAK
IHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgU2Ft
ZURvY3VtZW50TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUsIEFQSTo6T2JqZWN0KikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjU3ODkxKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3QKICAgICBhdXRvJiB1bnJlYWNoYWJsZVVSTCA9IHBy
b3Zpc2lvbmFsTG9hZGVyLnVucmVhY2hhYmxlVVJMKCk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJ
UHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBwcm92aXNpb25h
bExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgdXJsLCB1bnJlYWNoYWJsZVVSTCwgVXNlckRhdGEoV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5n
ZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgbV9m
cmFtZS0+aW5mbygpLCBwcm92aXNpb25hbExvYWRlci5yZXF1ZXN0KCksIHByb3Zpc2lvbmFsTG9h
ZGVyLm5hdmlnYXRpb25JRCgpLCB1cmwsIHVucmVhY2hhYmxlVVJMLCBVc2VyRGF0YShXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgp
KS5nZXQoKSkpKTsKIH0KIAogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhUaXRsZUxlbmd0
aCA9IDEwMDA7IC8vIENsb3Nlc3QgcG93ZXIgb2YgMTAgYWJvdmUgdGhlIFczQyByZWNvbW1lbmRh
dGlvbiBmb3IgVGl0bGUgbGVuZ3RoLgpAQCAtNTc1LDcgKzU3NSw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ28KICAgICAgICAgdXNlZExlZ2FjeVRMUyA9IHVzZWRM
ZWdhY3lUTFNGcm9tUGFnZUNhY2hlID09IFVzZWRMZWdhY3lUTFM6OlllczsKICAgICAKICAgICAv
LyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3Vt
ZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLm1pbWVU
eXBlKCksIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHN0YXRpY19jYXN0PHVpbnQz
Ml90PihtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZFR5cGUoKSksIHZhbHVlT3JD
b21wdXRlKGRvY3VtZW50TG9hZGVyLnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCksIFtdIHsg
cmV0dXJuIENlcnRpZmljYXRlSW5mbygpOyB9KSwgdXNlZExlZ2FjeVRMUywgbV9mcmFtZS0+Y29y
ZUZyYW1lKCktPmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSwgaGFzSW5zZWN1cmVDb250
ZW50LCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9I
YW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZENvbW1pdExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlE
KCksIG1fZnJhbWUtPmluZm8oKSwgZG9jdW1lbnRMb2FkZXIucmVxdWVzdCgpLCBkb2N1bWVudExv
YWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5taW1lVHlwZSgp
LCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
bV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxvYWRUeXBlKCkpLCB2YWx1ZU9yQ29tcHV0
ZShkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpLCBbXSB7IHJldHVy
biBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIHVzZWRMZWdhY3lUTFMsIG1fZnJhbWUtPmNvcmVGcmFt
ZSgpLT5kb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCksIGhhc0luc2VjdXJlQ29udGVudCwg
VXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiAgICAgd2ViUGFnZS0+ZGlkQ29tbWl0TG9hZCht
X2ZyYW1lKTsKIH0KIApAQCAtNjAzLDEyICs2MDMsMTUgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRGYQogICAgIC8vIEEgYmV0dGVyIHNvbHV0aW9uIHRvIHRoaXMgcHJv
YmxlbSB3b3VsZCBiZSBmaW5kIGEgY2xlYW4gd2F5IHRvIHBvc3Rwb25lIHRoZSBkaXNjb25uZWN0
aW9uIG9mIHRoZSBEb2N1bWVudExvYWRlciBmcm9tIHRoZSBGcmFtZSB1bnRpbAogICAgIC8vIHRo
ZSBlbnRpcmUgRnJhbWVMb2FkZXJDbGllbnQgZnVuY3Rpb24gd2FzIGNvbXBsZXRlLgogICAgIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCA9IDA7Ci0gICAgaWYgKGF1dG8gZG9jdW1lbnRMb2FkZXIgPSBt
X2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigp
KQorICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0OworICAgIGlmIChhdXRvIGRvY3VtZW50TG9h
ZGVyID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXIoKSkgewogICAgICAgICBuYXZpZ2F0aW9uSUQgPSBzdGF0aWNfY2FzdDxXZWJEb2N1bWVu
dExvYWRlcio+KGRvY3VtZW50TG9hZGVyKS0+bmF2aWdhdGlvbklEKCk7CisgICAgICAgIHJlcXVl
c3QgPSBkb2N1bWVudExvYWRlci0+cmVxdWVzdCgpOworICAgIH0KIAogICAgIC8vIE5vdGlmeSB0
aGUgVUlQcm9jZXNzLgogICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBtX2ZyYW1lLT5j
b3JlRnJhbWUoKTsKLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUt
PmluZm8oKSwgbmF2aWdhdGlvbklELCBjb3JlRnJhbWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsTG9h
ZEVycm9yQmVpbmdIYW5kbGVkVVJMKCksIGVycm9yLCB3aWxsQ29udGludWVMb2FkaW5nLCBVc2Vy
RGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVz
ZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlE
KCksIG1fZnJhbWUtPmluZm8oKSwgcmVxdWVzdCwgbmF2aWdhdGlvbklELCBjb3JlRnJhbWUtPmxv
YWRlcigpLnByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKCksIGVycm9yLCB3aWxs
Q29udGludWVMb2FkaW5nLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zv
cm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKIAogICAgIC8vIElm
IHdlIGhhdmUgYSBsb2FkIGxpc3RlbmVyLCBub3RpZnkgaXQuCiAgICAgaWYgKFdlYkZyYW1lOjpM
b2FkTGlzdGVuZXIqIGxvYWRMaXN0ZW5lciA9IG1fZnJhbWUtPmxvYWRMaXN0ZW5lcigpKQpAQCAt
NjI1LDEzICs2MjgsMTQgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRG
YQogCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKIAotICAgIGF1dG8gbmF2aWdh
dGlvbklEID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqbV9mcmFtZS0+Y29yZUZy
YW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpLm5hdmlnYXRpb25JRCgpOworICAgIGF1
dG8mIGRvY3VtZW50TG9hZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqbV9m
cmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpOworICAgIGF1dG8g
bmF2aWdhdGlvbklEID0gZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCk7CiAKICAgICAvLyBO
b3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2Fk
ZXJDbGllbnQoKS5kaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKCp3ZWJQYWdlLCAqbV9mcmFt
ZSwgZXJyb3IsIHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAg
IHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmFpbExvYWRGb3JGcmFt
ZShtX2ZyYW1lLT5mcmFtZUlEKCksIG5hdmlnYXRpb25JRCwgZXJyb3IsIFVzZXJEYXRhKFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0
KCkpLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkRmFpbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmluZm8oKSwg
ZG9jdW1lbnRMb2FkZXIucmVxdWVzdCgpLCBuYXZpZ2F0aW9uSUQsIGVycm9yLCBVc2VyRGF0YShX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRh
LmdldCgpKS5nZXQoKSkpKTsKIAogICAgIC8vIElmIHdlIGhhdmUgYSBsb2FkIGxpc3RlbmVyLCBu
b3RpZnkgaXQuCiAgICAgaWYgKFdlYkZyYW1lOjpMb2FkTGlzdGVuZXIqIGxvYWRMaXN0ZW5lciA9
IG1fZnJhbWUtPmxvYWRMaXN0ZW5lcigpKQpAQCAtNjY1LDEzICs2NjksMTQgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaQogCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0
PiB1c2VyRGF0YTsKIAotICAgIGF1dG8gbmF2aWdhdGlvbklEID0gc3RhdGljX2Nhc3Q8V2ViRG9j
dW1lbnRMb2FkZXImPigqbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9h
ZGVyKCkpLm5hdmlnYXRpb25JRCgpOworICAgIGF1dG8mIGRvY3VtZW50TG9hZGVyID0gc3RhdGlj
X2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCkpOworICAgIGF1dG8gbmF2aWdhdGlvbklEID0gZG9jdW1lbnRMb2Fk
ZXIubmF2aWdhdGlvbklEKCk7CiAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAg
ICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRGaW5pc2hMb2FkRm9y
RnJhbWUoKndlYlBhZ2UsICptX2ZyYW1lLCB1c2VyRGF0YSk7CiAKICAgICAvLyBOb3RpZnkgdGhl
IFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZEZpbmlzaExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIG5hdmlnYXRpb25JRCwgVXNl
ckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1
c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2Zy
YW1lLT5pbmZvKCksIGRvY3VtZW50TG9hZGVyLnJlcXVlc3QoKSwgbmF2aWdhdGlvbklELCBVc2Vy
RGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVz
ZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKIAogICAgIC8vIElmIHdlIGhhdmUgYSBsb2FkIGxpc3Rl
bmVyLCBub3RpZnkgaXQuCiAgICAgaWYgKFdlYkZyYW1lOjpMb2FkTGlzdGVuZXIqIGxvYWRMaXN0
ZW5lciA9IG1fZnJhbWUtPmxvYWRMaXN0ZW5lcigpKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU3OTUyKQorKysgVG9vbHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMDMtMDUgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQg
V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlIFNQSSB0byBpbmZvcm0gYXBwbGljYXRpb24gb2Yg
c3ViZnJhbWUgbmF2aWdhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODY3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OYXZpZ2F0aW9u
Lm1tOgorICAgICAgICAoLVtGcmFtZU5hdmlnYXRpb25EZWxlZ2F0ZSB3YWl0Rm9yTmF2aWdhdGlv
bnM6XSk6CisgICAgICAgICgtW0ZyYW1lTmF2aWdhdGlvbkRlbGVnYXRlIHJlcXVlc3RzXSk6Cisg
ICAgICAgICgtW0ZyYW1lTmF2aWdhdGlvbkRlbGVnYXRlIGZyYW1lc10pOgorICAgICAgICAoLVtG
cmFtZU5hdmlnYXRpb25EZWxlZ2F0ZSBjYWxsYmFja3NdKToKKyAgICAgICAgKC1bRnJhbWVOYXZp
Z2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRXaXRoUmVxdWVz
dDppbkZyYW1lOl0pOgorICAgICAgICAoLVtGcmFtZU5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmll
dzpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aFJlcXVlc3Q6aW5GcmFtZTp3aXRoRXJyb3I6XSk6
CisgICAgICAgICgtW0ZyYW1lTmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3OmRpZENvbW1pdExv
YWRXaXRoUmVxdWVzdDppbkZyYW1lOl0pOgorICAgICAgICAoLVtGcmFtZU5hdmlnYXRpb25EZWxl
Z2F0ZSBfd2ViVmlldzpkaWRGYWlsTG9hZFdpdGhSZXF1ZXN0OmluRnJhbWU6d2l0aEVycm9yOl0p
OgorICAgICAgICAoLVtGcmFtZU5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpkaWRGaW5pc2hM
b2FkV2l0aFJlcXVlc3Q6aW5GcmFtZTpdKToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIwLTAzLTA1
ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgUGFnZS1zcGVj
aWZpYyBVc2VyU3R5bGVTaGVldHMgc2hvdWxkIHdhaXQgdW50aWwgdGhlIGluaXRpYWwgZW1wdHkg
ZG9jdW1lbnQgaGFzIGJlZW4gcmVtb3ZlZCB0byBiZSBpbmplY3RlZApJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OYXZpZ2F0aW9uLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTmF2aWdhdGlvbi5tbQkocmV2
aXNpb24gMjU3ODkxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9O
YXZpZ2F0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiwxMCBAQAogI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRp
b25Qcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVmVj
dG9yLmg+CiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgor
I2ltcG9ydCAiVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCIKIAogc3RhdGljIGJvb2wgaXNEb25lOwog
c3RhdGljIFJldGFpblB0cjxXS05hdmlnYXRpb24+IGN1cnJlbnROYXZpZ2F0aW9uOwpAQCAtOTgs
NiArMTAwLDE4OSBAQCBURVNUKFdLTmF2aWdhdGlvbiwgTG9hZFJlcXVlc3QpCiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCitAaW50ZXJmYWNlIEZyYW1lTmF2aWdh
dGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorLSAodm9pZCl3
YWl0Rm9yTmF2aWdhdGlvbnM6KHNpemVfdCljb3VudDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgTlNBcnJheTxOU1VSTFJlcXVlc3QgKj4gKnJlcXVlc3RzOworQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5PFdLRnJhbWVJbmZvICo+ICpmcmFtZXM7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmNhbGxiYWNr
czsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEZyYW1lTmF2aWdhdGlvbkRlbGVnYXRlIHsKKyAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk8TlNVUkxSZXF1ZXN0ICo+PiBfcmVxdWVzdHM7Cisg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PFdLRnJhbWVJbmZvICo+PiBfZnJhbWVzOworICAg
IFJldGFpblB0cjxOU011dGFibGVBcnJheTxOU1N0cmluZyAqPj4gX2NhbGxiYWNrczsKKyAgICBz
aXplX3QgX25hdmlnYXRpb25Db3VudDsKK30KKworLSAodm9pZCl3YWl0Rm9yTmF2aWdhdGlvbnM6
KHNpemVfdClleHBlY3RlZE5hdmlnYXRpb25Db3VudAoreworICAgIHdoaWxlIChfbmF2aWdhdGlv
bkNvdW50IDwgZXhwZWN0ZWROYXZpZ2F0aW9uQ291bnQpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnNwaW5SdW5Mb29wKCk7Cit9CisKKy0gKE5TQXJyYXk8TlNVUkxSZXF1ZXN0ICo+ICop
cmVxdWVzdHMKK3sKKyAgICByZXR1cm4gX3JlcXVlc3RzLmdldCgpOworfQorCistIChOU0FycmF5
PFdLRnJhbWVJbmZvICo+ICopZnJhbWVzCit7CisgICAgcmV0dXJuIF9mcmFtZXMuZ2V0KCk7Cit9
CisKKy0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKiljYWxsYmFja3MKK3sKKyAgICByZXR1cm4gX2Nh
bGxiYWNrcy5nZXQoKTsKK30KKworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0IGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUKK3sKKyAgICBpZiAoIV9yZXF1ZXN0cykK
KyAgICAgICAgX3JlcXVlc3RzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICBbX3JlcXVl
c3RzIGFkZE9iamVjdDpyZXF1ZXN0XTsKKworICAgIGlmICghX2ZyYW1lcykKKyAgICAgICAgX2Zy
YW1lcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisgICAgW19mcmFtZXMgYWRkT2JqZWN0OmZy
YW1lXTsKKworICAgIGlmICghX2NhbGxiYWNrcykKKyAgICAgICAgX2NhbGxiYWNrcyA9IFtOU011
dGFibGVBcnJheSBhcnJheV07CisgICAgW19jYWxsYmFja3MgYWRkT2JqZWN0OkAic3RhcnQgcHJv
dmlzaW9uYWwiXTsKK30KKworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qg
aW5GcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSB3aXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgor
eworICAgIFtfcmVxdWVzdHMgYWRkT2JqZWN0OnJlcXVlc3RdOworICAgIFtfZnJhbWVzIGFkZE9i
amVjdDpmcmFtZV07CisgICAgW19jYWxsYmFja3MgYWRkT2JqZWN0OkAiZmFpbCBwcm92aXNpb25h
bCJdOworICAgIF9uYXZpZ2F0aW9uQ291bnQrKzsKK30KKworLSAodm9pZClfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBkaWRDb21taXRMb2FkV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3QgaW5GcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZQoreworICAgIFtfcmVxdWVzdHMg
YWRkT2JqZWN0OnJlcXVlc3RdOworICAgIFtfZnJhbWVzIGFkZE9iamVjdDpmcmFtZV07CisgICAg
W19jYWxsYmFja3MgYWRkT2JqZWN0OkAiY29tbWl0Il07Cit9CisKKy0gKHZvaWQpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmFpbExvYWRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0
ICopcmVxdWVzdCBpbkZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIHdpdGhFcnJvcjooTlNFcnJv
ciAqKWVycm9yCit7CisgICAgW19yZXF1ZXN0cyBhZGRPYmplY3Q6cmVxdWVzdF07CisgICAgW19m
cmFtZXMgYWRkT2JqZWN0OmZyYW1lXTsKKyAgICBbX2NhbGxiYWNrcyBhZGRPYmplY3Q6QCJmYWls
Il07CisgICAgX25hdmlnYXRpb25Db3VudCsrOworfQorCistICh2b2lkKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaExvYWRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdCBpbkZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lCit7CisgICAgW19yZXF1ZXN0cyBh
ZGRPYmplY3Q6cmVxdWVzdF07CisgICAgW19mcmFtZXMgYWRkT2JqZWN0OmZyYW1lXTsKKyAgICBb
X2NhbGxiYWNrcyBhZGRPYmplY3Q6QCJmaW5pc2giXTsKKyAgICBfbmF2aWdhdGlvbkNvdW50Kys7
Cit9CisKK0BlbmQKKworVEVTVChXS05hdmlnYXRpb24sIEZyYW1lcykKK3sKKyAgICBXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIFRlc3RVUkxTY2hlbWVIYW5kbGVyICpo
YW5kbGVyID0gW1tUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBb
aGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOl4oV0tXZWJWaWV3ICosIGlkPFdL
VVJMU2NoZW1lVGFzaz4gdGFzaykgeworICAgICAgICBOU1N0cmluZyAqcmVzcG9uc2VTdHJpbmcg
PSBuaWw7CisgICAgICAgIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0Vx
dWFsVG9TdHJpbmc6QCJmcmFtZTovL2hvc3QxLyJdKQorICAgICAgICAgICAgcmVzcG9uc2VTdHJp
bmcgPSBAIjxpZnJhbWUgc3JjPSdmcmFtZTovL2hvc3QyLyc+PC9pZnJhbWU+IjsKKyAgICAgICAg
ZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5n
OkAiZnJhbWU6Ly9ob3N0Mi8iXSkKKyAgICAgICAgICAgIHJlc3BvbnNlU3RyaW5nID0gQCI8c2Ny
aXB0PmZ1bmN0aW9uIG5hdmlnYXRlKCkgeyB3aW5kb3cubG9jYXRpb249J2ZyYW1lOi8vaG9zdDMv
JyB9PC9zY3JpcHQ+PGJvZHkgb25sb2FkPSduYXZpZ2F0ZSgpJz48L2JvZHk+IjsKKyAgICAgICAg
ZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5n
OkAiZnJhbWU6Ly9ob3N0My8iXSkgeworICAgICAgICAgICAgW3Rhc2sgZGlkRmFpbFdpdGhFcnJv
cjpbTlNFcnJvciBlcnJvcldpdGhEb21haW46QCJ0ZXN0RXJyb3JEb21haW4iIGNvZGU6NDIgdXNl
ckluZm86bmlsXV07CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBB
U1NFUlQocmVzcG9uc2VTdHJpbmcpOworICAgICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhb
W05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5
cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpyZXNwb25zZVN0cmluZy5sZW5n
dGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3Bv
bnNlOnJlc3BvbnNlLmdldCgpXTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W3Jlc3Bv
bnNlU3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CisgICAg
ICAgIFt0YXNrIGRpZEZpbmlzaF07CisgICAgfV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJM
U2NoZW1lSGFuZGxlcjpoYW5kbGVyIGZvclVSTFNjaGVtZTpAImZyYW1lIl07CisKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtGcmFtZU5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsK
KyAgICAgICAgd2ViVmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQo
KTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZnJhbWU6Ly9ob3N0MS8iXV1dOworICAgIFtkZWxlZ2F0
ZSB3YWl0Rm9yTmF2aWdhdGlvbnM6M107CisgICAgCisgICAgc3RydWN0IEV4cGVjdGVkU3RyaW5n
cyB7CisgICAgICAgIGNvbnN0IGNoYXIqIGNhbGxiYWNrOworICAgICAgICBjb25zdCBjaGFyKiBm
cmFtZVJlcXVlc3Q7CisgICAgICAgIGNvbnN0IGNoYXIqIGZyYW1lU2VjdXJpdHlPcmlnaW5Ib3N0
OworICAgICAgICBjb25zdCBjaGFyKiByZXF1ZXN0OworICAgIH07CisgICAgCisgICAgYXV0byBj
aGVja0NhbGxiYWNrcyA9IFtkZWxlZ2F0ZV0gKFZlY3RvcjxFeHBlY3RlZFN0cmluZ3M+IGV4cGVj
dGVkVmVjdG9yKSB7CisgICAgICAgIE5TQXJyYXk8TlNVUkxSZXF1ZXN0ICo+ICpyZXF1ZXN0cyA9
IGRlbGVnYXRlLmdldCgpLnJlcXVlc3RzOworICAgICAgICBOU0FycmF5PFdLRnJhbWVJbmZvICo+
ICpmcmFtZXMgPSBkZWxlZ2F0ZS5nZXQoKS5mcmFtZXM7CisgICAgICAgIE5TQXJyYXk8TlNTdHJp
bmcgKj4gKmNhbGxiYWNrcyA9IGRlbGVnYXRlLmdldCgpLmNhbGxiYWNrczsKKyAgICAgICAgRVhQ
RUNUX0VRKHJlcXVlc3RzLmNvdW50LCBleHBlY3RlZFZlY3Rvci5zaXplKCkpOworICAgICAgICBF
WFBFQ1RfRVEoZnJhbWVzLmNvdW50LCBleHBlY3RlZFZlY3Rvci5zaXplKCkpOworICAgICAgICBF
WFBFQ1RfRVEoY2FsbGJhY2tzLmNvdW50LCBleHBlY3RlZFZlY3Rvci5zaXplKCkpOworICAgICAg
ICAKKyAgICAgICAgYXV0byBjaGVja0NhbGxiYWNrID0gW10gKE5TU3RyaW5nICpjYWxsYmFjaywg
V0tGcmFtZUluZm8gKmZyYW1lLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3QsIGNvbnN0IEV4cGVjdGVk
U3RyaW5ncyYgZXhwZWN0ZWQpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShjYWxsYmFj
aywgZXhwZWN0ZWQuY2FsbGJhY2spOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGZyYW1l
LnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCBleHBlY3RlZC5mcmFtZVJlcXVlc3QpOworICAg
ICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGZyYW1lLnNlY3VyaXR5T3JpZ2luLmhvc3QsIGV4cGVj
dGVkLmZyYW1lU2VjdXJpdHlPcmlnaW5Ib3N0KTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJF
UShyZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgZXhwZWN0ZWQucmVxdWVzdCk7CisgICAgICAg
IH07CisgICAgICAgIAorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4cGVjdGVkVmVj
dG9yLnNpemUoKTsgKytpKQorICAgICAgICAgICAgY2hlY2tDYWxsYmFjayhjYWxsYmFja3NbaV0s
IGZyYW1lc1tpXSwgcmVxdWVzdHNbaV0sIGV4cGVjdGVkVmVjdG9yW2ldKTsKKyAgICB9OworICAg
IAorICAgIGNoZWNrQ2FsbGJhY2tzKHsKKyAgICAgICAgeworICAgICAgICAgICAgInN0YXJ0IHBy
b3Zpc2lvbmFsIiwKKyAgICAgICAgICAgICIiLAorICAgICAgICAgICAgIiIsCisgICAgICAgICAg
ICAiZnJhbWU6Ly9ob3N0MS8iCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJjb21taXQiLAor
ICAgICAgICAgICAgImZyYW1lOi8vaG9zdDEvIiwKKyAgICAgICAgICAgICJob3N0MSIsCisgICAg
ICAgICAgICAiZnJhbWU6Ly9ob3N0MS8iCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJzdGFy
dCBwcm92aXNpb25hbCIsCisgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICJob3N0MSIsCisg
ICAgICAgICAgICAiZnJhbWU6Ly9ob3N0Mi8iCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJj
b21taXQiLAorICAgICAgICAgICAgImZyYW1lOi8vaG9zdDIvIiwKKyAgICAgICAgICAgICJob3N0
MiIsCisgICAgICAgICAgICAiZnJhbWU6Ly9ob3N0Mi8iCisgICAgICAgIH0sIHsKKyAgICAgICAg
ICAgICJmaW5pc2giLAorICAgICAgICAgICAgImZyYW1lOi8vaG9zdDIvIiwKKyAgICAgICAgICAg
ICJob3N0MiIsCisgICAgICAgICAgICAiZnJhbWU6Ly9ob3N0Mi8iCisgICAgICAgIH0sIHsKKyAg
ICAgICAgICAgICJmaW5pc2giLAorICAgICAgICAgICAgImZyYW1lOi8vaG9zdDEvIiwKKyAgICAg
ICAgICAgICJob3N0MSIsCisgICAgICAgICAgICAiZnJhbWU6Ly9ob3N0MS8iCisgICAgICAgIH0s
IHsKKyAgICAgICAgICAgICJzdGFydCBwcm92aXNpb25hbCIsCisgICAgICAgICAgICAiZnJhbWU6
Ly9ob3N0Mi8iLAorICAgICAgICAgICAgImhvc3QyIiwKKyAgICAgICAgICAgICJmcmFtZTovL2hv
c3QzLyIKKyAgICAgICAgfSwgeworICAgICAgICAgICAgImZhaWwgcHJvdmlzaW9uYWwiLAorICAg
ICAgICAgICAgImZyYW1lOi8vaG9zdDIvIiwKKyAgICAgICAgICAgICJob3N0MiIsCisgICAgICAg
ICAgICAiZnJhbWU6Ly9ob3N0My8iCisgICAgICAgIH0KKyAgICB9KTsKK30KKwogQGludGVyZmFj
ZSBEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZp
Z2F0aW9uRGVsZWdhdGU+CiBAZW5kCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392648</attachid>
            <date>2020-03-05 16:45:13 -0800</date>
            <delta_ts>2020-03-05 17:38:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208670-20200305164512.patch</filename>
            <type>text/plain</type>
            <size>81108</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTc4OTIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDIwLTAzLTA1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLTmF2aWdh
dGlvbkRlbGVnYXRlUHJpdmF0ZSBTUEkgdG8gaW5mb3JtIGFwcGxpY2F0aW9uIG9mIHN1YmZyYW1l
IG5hdmlnYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDg2NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGVyZSBpcyBubyBXS05hdmlnYXRpb24gZm9yIHN1YmZyYW1lIG5hdmlnYXRpb25zLCBz
byBqdXN0IGV4cG9zZSB0aGUgTlNVUkxSZXF1ZXN0IGRpcmVjdGx5LgorICAgICAgICBUaGlzIGlz
IGVxdWl2YWxlbnQgdG8gV0tOYXZpZ2F0aW9uLl9yZXF1ZXN0LCB3aGljaCBpcyBkaXN0aW5jdCBm
cm9tIFdLRnJhbWVJbmZvLnJlcXVlc3QuCisgICAgICAgIFRoZSBmb3JtZXIgaXMgdGhlIGN1cnJl
bnRseSBwZW5kaW5nIHJlcXVlc3QsIHRoZSBsYXR0ZXIgaXMgdGhlIHJlcXVlc3QgdGhhdCBoYXMg
YWxyZWFkeSBsb2FkZWQuCisgICAgICAgIEkgbmVlZGVkIHRvIG1vdmUgdGhlIGlzTWFpbkZyYW1l
IGNoZWNrIHRvIHRoZSBOYXZpZ2F0aW9uQ2xpZW50IGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAg
VGhpcyBpcyBuZWVkZWQgZm9yIDxyZGFyOi8vcHJvYmxlbS81NzIwMTAzND4uCisgICAgICAgIENv
dmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFN0YXJ0UHJv
dmlzaW9uYWxOYXZpZ2F0aW9uKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlk
RmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcik6CisgICAgICAgIChBUEk6Ok5hdmln
YXRpb25DbGllbnQ6OmRpZENvbW1pdE5hdmlnYXRpb24pOgorICAgICAgICAoQVBJOjpOYXZpZ2F0
aW9uQ2xpZW50OjpkaWRGaW5pc2hOYXZpZ2F0aW9uKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3IpOgorICAgICAgICAoQVBJOjpOYXZp
Z2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcik6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAg
IChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0TmF2aWdhdGlvbkNsaWVudC5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6c2V0
TmF2aWdhdGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OmNyZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyKToKKyAgICAgICAgKFdl
YktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9u
YWxOYXZpZ2F0aW9uV2l0aEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRl
OjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRDb21taXROYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hOYXZpZ2F0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpk
aWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcik6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVX
aXRoRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwp
OgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5
OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQcm92
aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNp
b25hbFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNp
b25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGYWlsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZEZpbmlzaExvYWQpOgorCiAyMDIwLTAzLTA0ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2FsbCBnbG9iYWxPYmplY3RJc0F2
YWlsYWJsZUZvckZyYW1lIGJlZm9yZSBldmFsdWF0aW5nIEphdmFTY3JpcHQgaW4gbmV3bHkgY3Jl
YXRlZCB3b3JsZHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1Nzg5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcg
KzEzMiw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmNhbmNlbCgpCiAgICAgQVNTRVJU
KG1fbWFpbkZyYW1lKTsKICAgICBhdXRvIGVycm9yID0gV2ViS2l0OjpjYW5jZWxsZWRFcnJvciht
X3JlcXVlc3QpOwogICAgIGVycm9yLnNldFR5cGUoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6VHlw
ZTo6Q2FuY2VsbGF0aW9uKTsKLSAgICBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUobV9t
YWluRnJhbWUtPmZyYW1lSUQoKSwgeyB9LCBtX25hdmlnYXRpb25JRCwgbV9wcm92aXNpb25hbExv
YWRVUkwsIGVycm9yLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nOjpObywgVXNlckRhdGEg
eyB9KTsgLy8gV2lsbCBkZWxldGUgfHRoaXN8LgorICAgIGRpZEZhaWxQcm92aXNpb25hbExvYWRG
b3JGcmFtZShtX21haW5GcmFtZS0+ZnJhbWVJRCgpLCB7IH0sIHsgfSwgbV9uYXZpZ2F0aW9uSUQs
IG1fcHJvdmlzaW9uYWxMb2FkVVJMLCBlcnJvciwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGlu
Zzo6Tm8sIFVzZXJEYXRhIHsgfSk7IC8vIFdpbGwgZGVsZXRlIHx0aGlzfC4KIH0KIAogdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQpAQCAtMjI4LDcgKzIyOCw3
IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGkKICAgICBtX3BhZ2Uu
ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIHNvdXJj
ZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcsIGZyYW1lSUQpOwogfQogCi12b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmIHVybCwgVVJM
JiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYgdXJsLCBVUkwmJiB1bnJl
YWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIGlmICghdmFsaWRh
dGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CkBAIC0yNDUs
MTAgKzI0NSwxMCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRTdGFydFByb3ZpCiAg
ICAgaWYgKGF1dG8qIHBhZ2VNYWluRnJhbWUgPSBtX3BhZ2UubWFpbkZyYW1lKCkpCiAgICAgICAg
IHBhZ2VNYWluRnJhbWUtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKHVybCk7CiAKLSAgICBtX3Bh
Z2UuZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJl
ZigpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUodXJsKSwgV1RGTW92ZSh1bnJlYWNo
YWJsZVVSTCksIHVzZXJEYXRhKTsKKyAgICBtX3BhZ2UuZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1l
SW5mbyksIFdURk1vdmUocmVxdWVzdCksIG5hdmlnYXRpb25JRCwgV1RGTW92ZSh1cmwpLCBXVEZN
b3ZlKHVucmVhY2hhYmxlVVJMKSwgdXNlckRhdGEpOwogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYgZXJyb3IsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGlu
ZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBG
cmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5n
IHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBp
ZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjYxLDEwICsyNjEsMTAgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkRmFp
bFByb3ZpcwogICAgIGlmIChhdXRvKiBwYWdlTWFpbkZyYW1lID0gbV9wYWdlLm1haW5GcmFtZSgp
KQogICAgICAgICBwYWdlTWFpbkZyYW1lLT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkKCk7CiAKLSAg
ICBtX3BhZ2UuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKG1fcHJvY2Vzcy5j
b3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwgbmF2aWdhdGlvbklELCBwcm92
aXNpb25hbFVSTCwgZXJyb3IsIHdpbGxDb250aW51ZUxvYWRpbmcsIHVzZXJEYXRhKTsgLy8gTWF5
IGRlbGV0ZSB8dGhpc3wuCisgICAgbV9wYWdlLmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFt
ZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyks
IFdURk1vdmUocmVxdWVzdCksIG5hdmlnYXRpb25JRCwgcHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3
aWxsQ29udGludWVMb2FkaW5nLCB1c2VyRGF0YSk7IC8vIE1heSBkZWxldGUgfHRoaXN8LgogfQog
Ci12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJh
bWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUlu
Zm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRp
b25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVu
dCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
ZGlkQ29tbWl0TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9E
YXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250
ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29u
dGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50
PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsK
ICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRp
ZENvbW1pdExvYWQKICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlEKTsKIAog
ICAgIG1fd2FzQ29tbWl0dGVkID0gdHJ1ZTsKLSAgICBtX3BhZ2UuY29tbWl0UHJvdmlzaW9uYWxQ
YWdlKGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgbWltZVR5cGUsIGZyYW1lSGFzQ3VzdG9tQ29udGVu
dFByb3ZpZGVyLCBmcmFtZUxvYWRUeXBlLCBjZXJ0aWZpY2F0ZUluZm8sIHVzZWRMZWdhY3lUTFMs
IGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgdXNlckRh
dGEpOyAvLyBXaWxsIGRlbGV0ZSB8dGhpc3wuCisgICAgbV9wYWdlLmNvbW1pdFByb3Zpc2lvbmFs
UGFnZShmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1vdmUocmVxdWVzdCksIG5hdmln
YXRpb25JRCwgbWltZVR5cGUsIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCBmcmFtZUxv
YWRUeXBlLCBjZXJ0aWZpY2F0ZUluZm8sIHVzZWRMZWdhY3lUTFMsIGNvbnRhaW5zUGx1Z2luRG9j
dW1lbnQsIGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgdXNlckRhdGEpOyAvLyBXaWxsIGRlbGV0
ZSB8dGhpc3wuCiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0
aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlLCBGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuaAkocmV2aXNpb24gMjU3ODkxKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTIy
LDkgKzEyMiw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9u
RGF0YShjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyKTsKICAgICB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENyZWF0ZU1haW5GcmFtZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJM
JiYsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgZGlk
Q29tbWl0TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29u
dGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0
aWZpY2F0ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1
bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNl
Y3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcs
IGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJiwgVVJMJiYgdW5y
ZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRDb21taXRMb2FkRm9y
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZy
YW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgdXNlZExl
Z2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpI
YXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRh
dGEmKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRp
bmcsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2soVVJMU2No
ZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0
IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBXZWJCYWNrRm9yd2FyZExpc3RD
b3VudHMmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
YyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGJvb2wgaXNNYWluRnJhbWUsIEZyYW1lSW5mb0Rh
dGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0Zy
YW1lSW5mbywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
cmV2aXNpb24gMjU3ODkxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIzOCw3ICszMjM4LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpbwogICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lv
biB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCks
IGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSwgYWN0aW9uLCBuYXZpZ2F0aW9u
ID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCBkb3dubG9hZElELCBXVEZNb3ZlKHdl
YnNpdGVQb2xpY2llcykgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNp
b25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRl
ciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdp
bkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhh
c0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdl
UHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3Vz
dG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBi
b29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJl
Q29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCiB7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlKTsKICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6IG5ld1BJRCA9ICVpIiwg
bV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpKTsKQEAgLTMy
NzIsNyArMzI3Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UK
ICAgICBjb25zdCBhdXRvIG9sZFdlYlBhZ2VJRCA9IG1fd2ViUGFnZUlEOwogICAgIHN3YXBUb1By
b3Zpc2lvbmFsUGFnZShzdGQ6OmV4Y2hhbmdlKG1fcHJvdmlzaW9uYWxQYWdlLCBudWxscHRyKSk7
CiAKLSAgICBkaWRDb21taXRMb2FkRm9yRnJhbWUoZnJhbWVJRCwgbmF2aWdhdGlvbklELCBtaW1l
VHlwZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1lTG9hZFR5cGUsIGNlcnRp
ZmljYXRlSW5mbywgdXNlZExlZ2FjeVRMUywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9yY2Vk
SGFzSW5zZWN1cmVDb250ZW50LCB1c2VyRGF0YSk7CisgICAgZGlkQ29tbWl0TG9hZEZvckZyYW1l
KGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwgV1RGTW92ZShyZXF1ZXN0KSwgbmF2aWdhdGlv
bklELCBtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1lTG9hZFR5
cGUsIGNlcnRpZmljYXRlSW5mbywgdXNlZExlZ2FjeVRMUywgY29udGFpbnNQbHVnaW5Eb2N1bWVu
dCwgZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCB1c2VyRGF0YSk7CiAKICAgICBtX2luc3BlY3Rv
ckNvbnRyb2xsZXItPmRpZENvbW1pdFByb3Zpc2lvbmFsUGFnZShvbGRXZWJQYWdlSUQsIG1fd2Vi
UGFnZUlEKTsKIH0KQEAgLTQzMTYsMTIgKzQzMTYsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZERlc3Ryb3lOYXZpZ2F0aW9uKAogICAgIG1fbmF2aWdhdGlvblN0YXRlLT5kaWREZXN0cm95TmF2
aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBVUkwmJiB1cmwsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1l
SW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBV
UkwmJiB1cmwsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEp
CiB7Ci0gICAgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3Mu
Y29weVJlZigpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUodXJsKSwgV1RGTW92ZSh1
bnJlYWNoYWJsZVVSTCksIHVzZXJEYXRhKTsKKyAgICBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJ
bmZvKSwgV1RGTW92ZShyZXF1ZXN0KSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKHVybCksIFdURk1v
dmUodW5yZWFjaGFibGVVUkwpLCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzcywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgVVJMJiYgdXJsLCBVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVT
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJiB1cmwsIFVSTCYmIHVucmVhY2hhYmxlVVJM
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBw
cm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDM2Myw4ICs0MzYzLDggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMbwogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21t
aXRDaGFuZ2VzKCk7CiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBtX2xvYWRlckNs
aWVudC0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZp
Z2F0aW9uLmdldCgpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgZWxzZSBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCi0g
ICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24o
KnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIG1fbmF2aWdh
dGlvbkNsaWVudC0+ZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24oKnRoaXMsIFdURk1vdmUo
ZnJhbWVJbmZvKSwgV1RGTW92ZShyZXF1ZXN0KSwgbmF2aWdhdGlvbi5nZXQoKSwgcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAj
aWYgRU5BQkxFKFdFQl9BVVRITikKICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPmF1dGhlbnRpY2F0
b3JNYW5hZ2VyKCkuY2FuY2VsUmVxdWVzdChtX3dlYlBhZ2VJRCwgZnJhbWVJRCk7CkBAIC00NDc5
LDE3ICs0NDc5LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFUK
ICAgICBmcmFtZS0+ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKHVy
bCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9h
ZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZh
aWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJ
bmZvRGF0YSYmIGZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvciwgV2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29udGludWVM
b2FkaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKG1fcHJvdmlzaW9u
YWxQYWdlICYmIG1fcHJvdmlzaW9uYWxQYWdlLT5uYXZpZ2F0aW9uSUQoKSA9PSBuYXZpZ2F0aW9u
SUQpIHsKICAgICAgICAgLy8gVGhlIGxvYWQgZGlkIG5vdCBmYWlsLCBpdCBpcyBtZXJlbHkgaGFw
cGVuaW5nIGluIGEgbmV3IHByb3Zpc2lvbmFsIHByb2Nlc3MuCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQobV9wcm9jZXNz
LmNvcHlSZWYoKSwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBuYXZpZ2F0aW9uSUQsIHBy
b3Zpc2lvbmFsVVJMLCBlcnJvciwgd2lsbENvbnRpbnVlTG9hZGluZywgdXNlckRhdGEpOworICAg
IGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigp
LCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1vdmUocmVxdWVzdCksIG5hdmlnYXRp
b25JRCwgcHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3aWxsQ29udGludWVMb2FkaW5nLCB1c2VyRGF0
YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgV2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBw
cm92aXNpb25hbFVSTCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxv
YWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewog
ICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiB3
ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIHByb3Zp
c2lvbmFsVVJMICVzIiwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIHByb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkpOwogICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTog
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwgZnJhbWVJRC50
b1VJbnQ2NCgpLCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUo
KSk7CkBAIC00NTI4LDEyICs0NTI4LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92
aXNpb25hbExvYQogCiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBtX2xvYWRlckNs
aWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKCp0aGlzLCAqZnJh
bWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9P
YmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgZWxzZSBpZiAoZnJhbWUtPmlz
TWFpbkZyYW1lKCkpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFpbFByb3Zpc2lv
bmFsTmF2aWdhdGlvbldpdGhFcnJvcigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBl
cnJvciwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCkpOwotICAgIGVsc2UgewotICAgICAgICAvLyBGSVhNRTogR2V0IHRoZSBtYWluIGZy
YW1lJ3MgY3VycmVudCBuYXZpZ2F0aW9uLgotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRp
ZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKCp0aGlzLCAqZnJhbWUsIFdU
Rk1vdmUoZnJhbWVJbmZvKSwgbnVsbHB0ciwgZXJyb3IsIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRs
ZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICB9CisgICAgZWxzZQor
ICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25X
aXRoRXJyb3IoKnRoaXMsIFdURk1vdmUoZnJhbWVJbmZvKSwgV1RGTW92ZShyZXF1ZXN0KSwgbmF2
aWdhdGlvbi5nZXQoKSwgZXJyb3IsIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAogICAgIG1fZmFpbGluZ1Byb3Zpc2lvbmFsTG9h
ZFVSTCA9IHsgfTsKIApAQCAtNDU3MCw3ICs0NTY2LDcgQEAgc3RhdGljIE9wdGlvblNldDxDcm9z
c1NpdGVOYXZpZ2F0aW9uRGF0YQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9v
bCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhh
c0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdl
UHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3Vz
dG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5
VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPEhhc0luc2VjdXJlQ29u
dGVudD4gaGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAg
ICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRpZENv
bW1pdExvYWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9pZGVudGlmaWVyLnRv
VUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9y
d2FyZCkgQWZ0ZXIgbG9hZCBjb21taXQsIGJhY2svZm9yd2FyZCBsaXN0IGlzIG5vdzolcyIsIG1f
YmFja0ZvcndhcmRMaXN0LT5sb2dnaW5nU3RyaW5nKCkpOwpAQCAtNDY3MCw4ICs0NjY2LDggQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZQogICAgIG1fcGFnZUxvYWRT
dGF0ZS5jb21taXRDaGFuZ2VzKCk7CiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBt
X2xvYWRlckNsaWVudC0+ZGlkQ29tbWl0TG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmln
YXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0
YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIGVsc2UgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQot
ICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZENvbW1pdE5hdmlnYXRpb24oKnRoaXMsIG5h
dmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xp
ZW50LT5kaWRDb21taXROYXZpZ2F0aW9uKCp0aGlzLCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1v
dmUocmVxdWVzdCksIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxl
c1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCkBAIC00NzExLDcg
KzQ3MDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkCiAgICAg
fQogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUgLSBXZWJQYWdlUHJveHkgJXAgd2l0aCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIg
ZGlkRmluaXNoTG9hZCIsIHRoaXMsIG5hdmlnYXRpb25JRCk7CiAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoTG9hZEZvckZyYW1lOiBmcmFtZUlEID0gJSIgUFJJ
dTY0LCBmcmFtZUlELnRvVUludDY0KCkpOwpAQCAtNDc0Miw4ICs0NzM4LDggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZQogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21t
aXRDaGFuZ2VzKCk7CiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBtX2xvYWRlckNs
aWVudC0+ZGlkRmluaXNoTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0
KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCkpOwotICAgIGVsc2UgaWYgKGlzTWFpbkZyYW1lKQotICAgICAgICBtX25hdmlnYXRp
b25DbGllbnQtPmRpZEZpbmlzaE5hdmlnYXRpb24oKnRoaXMsIG5hdmlnYXRpb24uZ2V0KCksIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOworICAgIGVsc2UKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGaW5pc2hOYXZp
Z2F0aW9uKCp0aGlzLCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1vdmUocmVxdWVzdCksIG5hdmln
YXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0
YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAgICAgaWYgKGlzTWFpbkZyYW1lKSB7CiAgICAgICAgIHJl
cG9ydFBhZ2VMb2FkUmVzdWx0KCk7CkBAIC00NzYwLDcgKzQ3NTYsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lCiAgICAgbV9pc0xvYWRpbmdBbHRlcm5hdGVIVE1M
U3RyaW5nRm9yRmFpbGluZ1Byb3Zpc2lvbmFsTG9hZCA9IGZhbHNlOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGYWlsTG9hZEZvckZyYW1lOiBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBmcmFtZUlELnRvVUludDY0KCks
IGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIApAQCAt
NDc5Myw4ICs0Nzg5LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUo
RgogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7CiAgICAgaWYgKG1fbG9hZGVy
Q2xpZW50KQogICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JG
cmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgbV9wcm9jZXNzLT50
cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAg
ZWxzZSBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVu
dC0+ZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3IoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5n
ZXQoKSwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0
YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5kaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcigqdGhpcywgV1RGTW92ZShmcmFtZUluZm8pLCBX
VEZNb3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgbV9wcm9jZXNzLT50cmFu
c2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAKICAgICBp
ZiAoaXNNYWluRnJhbWUpIHsKICAgICAgICAgcmVwb3J0UGFnZUxvYWRSZXN1bHQoZXJyb3IpOwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI1Nzg5
MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjA5LDExICsxNjA5LDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgUHJvdmlz
aW9uYWxQYWdlUHJveHkqIHByb3Zpc2lvbmFsUGFnZVByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9w
cm92aXNpb25hbFBhZ2UuZ2V0KCk7IH0KLSAgICB2b2lkIGNvbW1pdFByb3Zpc2lvbmFsUGFnZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMy
X3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiwgYm9vbCB1
c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNv
cmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBV
c2VyRGF0YSYpOworICAgIHZvaWQgY29tbWl0UHJvdmlzaW9uYWxQYWdlKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1l
SGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFp
bnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBm
b3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CiAKICAgICAvLyBMb2dp
YyBzaGFyZWQgYmV0d2VlbiB0aGUgV2ViUGFnZVByb3h5IGFuZCB0aGUgUHJvdmlzaW9uYWxQYWdl
UHJveHkuCi0gICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBVUkwmJiwgVVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRh
Jik7Ci0gICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRh
JiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJp
bmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29y
ZTo6V2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmLCBVUkwmJiB1bnJlYWNo
YWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNv
bnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRQZXJmb3JtU2VydmVy
UmVkaXJlY3RTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcik7CkBAIC0xNzUzLDE2ICsxNzUzLDE2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDcmVh
dGVTdWJmcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkQ3JlYXRl
V2luZG93KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6R2xvYmFsV2luZG93SWRl
bnRpZmllciYmKTsKIAotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYsIFVS
TCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5m
b0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgVVJMJiYsIFVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgd2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiB1cmwsIGRvdWJsZSBkZWxheSwgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCk7CiAg
ICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcik7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7Ci0gICAg
dm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5n
JiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6
OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRDb21t
aXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50
UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYsIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50
LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJl
Q29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3Ry
aW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNv
cmU6OldpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRD
b21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRh
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIs
IHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYs
IGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25h
bDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwg
Y29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBV
c2VyRGF0YSYpOwotICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYpOwotICAg
IHZvaWQgZGlkRmFpbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVz
ZXJEYXRhJik7CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRGYWls
TG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3Qgc2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUs
IFVSTCYmLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ2hhbmdlTWFpbkRvY3VtZW50
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRFeHBsaWNpdE9wZW5Gb3JG
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFVSTCYmLCBTdHJpbmcmJiBtaW1lVHlwZSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCShyZXZpc2lvbiAyNTc4OTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyMCwxNiArMTIwLDE2IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkQ3JlYXRlV2luZG93KFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6R2xvYmFsV2luZG93SWRl
bnRpZmllciB3aW5kb3dJZGVudGlmaWVyKQogCiAgICAgIyBGcmFtZSBsb2FkIG1lc3NhZ2VzCi0g
ICAgRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwgdXJsLCBVUkwgdW5yZWFjaGFi
bGVVUkwsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdl
YktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCB1cmwsIFVSTCB1bnJlYWNoYWJsZVVS
TCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBXaWxsUGVyZm9ybUNsaWVudFJl
ZGlyZWN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFN0cmluZyB1
cmwsIGRvdWJsZSBkZWxheSwgZW51bTpib29sIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Qg
bG9ja0JhY2tGb3J3YXJkTGlzdCkKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogICAgIERpZENoYW5nZVByb3Zpc2lv
bmFsVVJMRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgVVJMIHVybCkKLSAgICBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1l
SW5mb0RhdGEgZnJhbWVJbmZvLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBwcm92aXNp
b25hbFVSTCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgZW51bTpib29sIFdlYkNvcmU6
OldpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkKLSAgICBEaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBlLCBi
b29sIGhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9v
bCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNv
bnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKLSAgICBEaWRGYWlsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3Is
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpG
cmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIHByb3Zpc2lvbmFsVVJMLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yLCBlbnVtOmJvb2wgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGlu
ZyB3aWxsQ29udGludWVMb2FkaW5nLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERp
ZENvbW1pdExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3Ry
dWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBtaW1lVHlwZSwgYm9v
bCBoYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGxvYWRUeXBlLCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wg
Y29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250
ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEp
CisgICAgRGlkRmFpbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmluaXNo
RG9jdW1lbnRMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEaWRG
aW5pc2hMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEaWRGaW5p
c2hMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBX
ZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQogICAgIERpZEZpcnN0TGF5b3V0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUoT3B0
aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gbGF5b3V0TWlsZXN0b25lcykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQu
aAkocmV2aXNpb24gMjU3ODkxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5h
dmlnYXRpb25DbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTcgKzc4LDE2IEBAIGNsYXNz
IE5hdmlnYXRpb25DbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfk5hdmlnYXRpb25DbGll
bnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlv
bihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIE5hdmlnYXRpb24qLCBPYmplY3QqKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24oV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIE5hdmlnYXRpb24qLCBPYmplY3QqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgTmF2aWdhdGlvbiosIE9iamVjdCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVy
Zm9ybUNsaWVudFJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJp
bmcmIGRlc3RpbmF0aW9uVVJMLCBkb3VibGUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJm
b3JtQ2xpZW50UmVkaXJlY3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmlu
ZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgZGVzdGluYXRpb25VUkwpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdChXZWJLaXQ6OldlYlBhZ2VQcm94
eSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0
aEVycm9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgTmF2
aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBPYmplY3QqKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3Io
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBXZWJLaXQ6OkZy
YW1lSW5mb0RhdGEmJiwgTmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
LCBPYmplY3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIE5hdmlnYXRpb24qLCBPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgTmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBPYmplY3Qq
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgTmF2aWdhdGlvbiosIE9iamVjdCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hEb2N1bWVudExvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBOYXZpZ2F0aW9uKiwgT2JqZWN0
KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaE5hdmlnYXRpb24oV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBOYXZpZ2F0aW9uKiwgT2JqZWN0KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpX
ZWJGcmFtZVByb3h5JiwgTmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
LCBPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTmF2aWdhdGlvbihXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6RnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgTmF2aWdhdGlvbiosIE9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktp
dDo6RnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgTmF2aWdhdGlv
biosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBPYmplY3QqKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IE5hdmlnYXRpb24qLCBXZWJLaXQ6OlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBPYmplY3Qq
KSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgQVBJOjpPYmplY3QqKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMjU3ODkxKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzMCw4
ICsyMTMwLDEwIEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWcKICAg
ICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSh0b0FQ
SSgmcGFnZSksIHRvQVBJKG5hdmlnYXRpb25SZXNwb25zZS5wdHIoKSksIHRvQVBJKGxpc3RlbmVy
LnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbihXZWJQ
YWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZp
Z2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVz
b3VyY2VSZXF1ZXN0JiYsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWZyYW1lSW5m
by5pc01haW5GcmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIG1fY2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0
aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdhdGlvbiksIHRvQVBJKHVzZXJEYXRhKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKQEAgLTIxNDQsNDEgKzIxNDYsNDUgQEAgdm9pZCBXS1Bh
Z2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZwogICAgICAgICAgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKHRvQVBJKCZwYWdl
KSwgdG9BUEkobmF2aWdhdGlvbiksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTmF2
aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmLCBBUEk6
Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkRmFp
bFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIEZyYW1l
SW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok5h
dmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9y
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbikKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxOYXZp
Z2F0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdhdGlvbiksIHRvQVBJKGVycm9yKSwgdG9B
UEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgaWYg
KGZyYW1lSW5mby5pc01haW5GcmFtZSkgeworICAgICAgICAgICAgICAgIGlmIChtX2NsaWVudC5k
aWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKQorICAgICAgICAgICAgICAgICAgICBtX2NsaWVu
dC5kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdh
dGlvbiksIHRvQVBJKGVycm9yKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAobV9jbGll
bnQuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUpCisgICAgICAgICAgICAgICAgICAg
IG1fY2xpZW50LmRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lKHRvQVBJKCZwYWdlKSwg
dG9BUEkobmF2aWdhdGlvbiksIHRvQVBJKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShm
cmFtZUluZm8pLCAmcGFnZSkucHRyKCkpLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJEYXRhKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0g
ICAgICAgIHZvaWQgZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6
TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQor
ICAgICAgICB2b2lkIGRpZENvbW1pdE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBGcmFt
ZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpOYXZpZ2F0aW9u
KiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICghZnJhbWVJbmZvLmlzTWFpbkZyYW1lKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKwogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDb21taXROYXZpZ2F0aW9u
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG1fY2xpZW50LmRpZENvbW1p
dE5hdmlnYXRpb24odG9BUEkoJnBhZ2UpLCB0b0FQSShuYXZpZ2F0aW9uKSwgdG9BUEkodXNlckRh
dGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9u
KiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZv
aWQgZGlkRmluaXNoTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm8sIFJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRp
b24sIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgeworICAgICAgICAg
ICAgaWYgKCFmcmFtZUluZm8uaXNNYWluRnJhbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGaW5pc2hOYXZpZ2F0aW9uKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaE5hdmlnYXRpb24o
dG9BUEkoJnBhZ2UpLCB0b0FQSShuYXZpZ2F0aW9uKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRGYWlsTmF2
aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmLCBBUEk6
Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkRmFp
bE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFnZVByb3h5JiBwYWdlLCBGcmFtZUluZm9EYXRhJiYg
ZnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpOYXZpZ2F0aW9uKiBu
YXZpZ2F0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWZyYW1l
SW5mby5pc01haW5GcmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LmRpZEZhaWxOYXZpZ2F0aW9uKQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWxOYXZpZ2F0aW9uKHRvQVBJKCZwYWdlKSwgdG9B
UEkobmF2aWdhdGlvbiksIHRvQVBJKGVycm9yKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1l
UHJveHkmIHN1YmZyYW1lLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBBUEk6Ok5hdmlnYXRp
b24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6
Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgh
bV9jbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZElu
U3ViZnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQSShuYXZpZ2F0aW9uKSwgdG9BUEkoQVBJOjpGcmFt
ZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksICZwYWdlKS5wdHIoKSksIHRvQVBJKGVy
cm9yKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAg
ICB9Ci0KICAgICAgICAgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWQoV2ViUGFnZVByb3h5JiBw
YWdlLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkg
b3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGaW5pc2hE
b2N1bWVudExvYWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tO
YXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCShyZXZpc2lv
biAyNTc4OTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uRGVsZWdhdGVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsMTIgQEAg
c3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5IAogLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBjb250ZW50UnVsZUxpc3RXaXRoSWRlbnRpZmllcjooTlNT
dHJpbmcgKilpZGVudGlmaWVyIHBlcmZvcm1lZEFjdGlvbjooX1dLQ29udGVudFJ1bGVMaXN0QWN0
aW9uICopYWN0aW9uIGZvclVSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xNSksIGlvcygxMy4wKSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IHdlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlV2l0aFJlYXNvbjooX1dLUHJvY2Vzc1Rlcm1p
bmF0aW9uUmVhc29uKXJlYXNvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEy
LjApKTsKIAorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGluRnJhbWU6
KFdLRnJhbWVJbmZvICopZnJhbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0
IGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgd2l0aEVycm9yOihOU0Vycm9yICopZXJyb3Ig
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0g
KHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQ29tbWl0TG9hZFdpdGhSZXF1
ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGluRnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0g
KHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmFpbExvYWRXaXRoUmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBpbkZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIHdp
dGhFcnJvcjooTlNFcnJvciAqKWVycm9yIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRpZEZpbmlzaExvYWRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBpbkZy
YW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CisKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAtICh2b2lkKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6KE5TU3RyaW5nICopZmlsZU5hbWUgdXRpOihOU1N0
cmluZyAqKXV0aTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6KE5TRGF0YSAqKWRvY3VtZW50
RGF0YTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5hdmln
YXRpb25DbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdE5hdmlnYXRpb25DbGllbnQuY3BwCShyZXZpc2lvbiAyNTc4OTEpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROYXZpZ2F0aW9uQ2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAiQVBJTmF2aWdh
dGlvbkFjdGlvbi5oIgogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb25DbGllbnQuaCIKKyNpbmNsdWRl
ICJGcmFtZUluZm9EYXRhLmgiCiAjaW5jbHVkZSAiV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvblByaXZhdGUuaCIK
ICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCkBAIC00Miw4ICs0MywxMCBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24o
V2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRh
ICovKSBvdmVycmlkZQorICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24oV2Vi
UGFnZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYs
IEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0KiAvKiB1c2VyRGF0YSAqLykgb3ZlcnJpZGUK
ICAgICB7CisgICAgICAgIGlmICghZnJhbWVJbmZvLmlzTWFpbkZyYW1lKQorICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQobV93ZWJWaWV3LCBXRUJL
SVRfTE9BRF9TVEFSVEVEKTsKICAgICB9CiAKQEAgLTUyLDkgKzU1LDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgd2Via2l0V2ViVmlld0xvYWRDaGFuZ2VkKG1fd2ViVmlldywgV0VCS0lUX0xPQURfUkVE
SVJFQ1RFRCk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9u
V2l0aEVycm9yKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6Ok5hdmln
YXRpb24qLCBjb25zdCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yLCBBUEk6Ok9iamVjdCog
LyogdXNlckRhdGEgKi8pIG92ZXJyaWRlCisgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxOYXZp
Z2F0aW9uV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8s
IFJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBSZXNvdXJjZUVycm9y
JiByZXNvdXJjZUVycm9yLCBBUEk6Ok9iamVjdCogLyogdXNlckRhdGEgKi8pIG92ZXJyaWRlCiAg
ICAgewotICAgICAgICBpZiAoIWZyYW1lLmlzTWFpbkZyYW1lKCkpCisgICAgICAgIGlmICghZnJh
bWVJbmZvLmlzTWFpbkZyYW1lKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBHVW5pcXVl
UHRyPEdFcnJvcj4gZXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChnX3F1YXJrX2Zyb21fc3RyaW5n
KHJlc291cmNlRXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSksCiAgICAgICAgICAgICB0b1dl
YktpdEVycm9yKHJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCkpLCByZXNvdXJjZUVycm9yLmxvY2Fs
aXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSkpOwpAQCAtNjUsMTkgKzY4LDIzIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChtX3dlYlZpZXcsIFdF
QktJVF9MT0FEX1NUQVJURUQsIHJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCksIGVycm9yLmdldCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZENvbW1pdE5h
dmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqIC8q
IHVzZXJEYXRhICovKSBvdmVycmlkZQorICAgIHZvaWQgZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJQ
YWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiwg
QVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRhICovKSBvdmVycmlkZQog
ICAgIHsKKyAgICAgICAgaWYgKCFmcmFtZUluZm8uaXNNYWluRnJhbWUpCisgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIHdlYmtpdFdlYlZpZXdMb2FkQ2hhbmdlZChtX3dlYlZpZXcsIFdFQktJ
VF9MT0FEX0NPTU1JVFRFRCk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9u
KFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0KiAvKiB1c2VyRGF0
YSAqLykgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEZpbmlzaE5hdmlnYXRpb24oV2ViUGFnZVByb3h5
JiwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6TmF2
aWdhdGlvbiosIEFQSTo6T2JqZWN0KiAvKiB1c2VyRGF0YSAqLykgb3ZlcnJpZGUKICAgICB7Cisg
ICAgICAgIGlmICghZnJhbWVJbmZvLmlzTWFpbkZyYW1lKQorICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQobV93ZWJWaWV3LCBXRUJLSVRfTE9BRF9G
SU5JU0hFRCk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcihX
ZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpOYXZpZ2F0aW9uKiwgY29u
c3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvciwgQVBJOjpPYmplY3QqIC8qIHVzZXJEYXRh
ICovKSBvdmVycmlkZQorICAgIHZvaWQgZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFn
ZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYsIEFQ
STo6TmF2aWdhdGlvbiosIGNvbnN0IFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IsIEFQSTo6
T2JqZWN0KiAvKiB1c2VyRGF0YSAqLykgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmICghZnJh
bWUuaXNNYWluRnJhbWUoKSkKKyAgICAgICAgaWYgKCFmcmFtZUluZm8uaXNNYWluRnJhbWUpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEdVbmlxdWVQdHI8R0Vycm9yPiBlcnJvcihnX2Vy
cm9yX25ld19saXRlcmFsKGdfcXVhcmtfZnJvbV9zdHJpbmcocmVzb3VyY2VFcnJvci5kb21haW4o
KS51dGY4KCkuZGF0YSgpKSwKICAgICAgICAgICAgIHRvV2ViS2l0RXJyb3IocmVzb3VyY2VFcnJv
ci5lcnJvckNvZGUoKSksIHJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKS51dGY4
KCkuZGF0YSgpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUuaAkocmV2aXNpb24gMjU3ODkxKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDE3ICs5
NCwxNiBAQCBwcml2YXRlOgogICAgICAgICB+TmF2aWdhdGlvbkNsaWVudCgpOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbihXZWJQYWdl
UHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgICAg
ICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIEZyYW1l
SW5mb0RhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6TmF2aWdhdGlvbios
IEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdh
dGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgd2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdChXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIGRvdWJsZSkg
b3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYlBhZ2VQ
cm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsK
ICAgICAgICAgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdChXZWJQYWdlUHJveHkmKSBvdmVy
cmlkZTsKLSAgICAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9y
KFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICAgICAg
dm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJv
eHkmLCBXZWJGcmFtZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBBUEk6Ok5hdmlnYXRpb24qLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAg
ICAgICAgdm9pZCBkaWRDb21taXROYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdh
dGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkRmFpbFByb3Zp
c2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkmLCBGcmFtZUluZm9EYXRhJiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICAgICAgdm9p
ZCBkaWRDb21taXROYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIEZyYW1lSW5mb0RhdGEmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikg
b3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYlBhZ2VQcm94
eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgICAgIHZv
aWQgZGlkRmluaXNoTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBB
UEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRpZEZhaWxOYXZpZ2F0aW9uV2l0
aEVycm9yKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAg
ICAgICAgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIEZyYW1lSW5mb0Rh
dGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6
T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJy
b3IoV2ViUGFnZVByb3h5JiwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQ
STo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdh
dGlvbihXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uVHlwZSwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKIAogICAgICAgICB2b2lkIHJlbmRlcmlu
Z1Byb2dyZXNzRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eSYsIE9wdGlvblNldDxXZWJDb3JlOjpMYXlv
dXRNaWxlc3RvbmU+KSBvdmVycmlkZTsKQEAgLTIwMywxNyArMjAyLDIzIEBAIHByaXZhdGU6CiAK
ICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24gOiAxOwog
ICAgICAgICBib29sIHdlYlZpZXdEaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvblVzZXJJbmZv
IDogMTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3RGlkU3RhcnRQcm92aXNpb25hbExvYWRXaXRoUmVx
dWVzdEluRnJhbWUgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24gOiAxOwogICAgICAgICBib29sIHdlYlZpZXdE
aWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9yIDogMTsKKyAgICAgICAgYm9vbCB3
ZWJWaWV3RGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhSZXF1ZXN0SW5GcmFtZVdpdGhFcnJvciA6
IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld05hdmlnYXRpb25EaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
SW5TdWJmcmFtZVdpdGhFcnJvciA6IDE7CisgICAgICAgIGJvb2wgd2ViVmlld0RpZEZhaWxQcm92
aXNpb25hbExvYWRXaXRoUmVxdWVzdEluRnJhbWUgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdX
aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0IDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkUGVy
Zm9ybUNsaWVudFJlZGlyZWN0IDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkQ2FuY2VsQ2xp
ZW50UmVkaXJlY3QgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRDb21taXROYXZpZ2F0aW9u
IDogMTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3RGlkQ29tbWl0TG9hZFdpdGhSZXF1ZXN0SW5GcmFt
ZSA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld05hdmlnYXRpb25EaWRGaW5pc2hEb2N1bWVudExv
YWQgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRGaW5pc2hOYXZpZ2F0aW9uIDogMTsKKyAg
ICAgICAgYm9vbCB3ZWJWaWV3RGlkRmluaXNoTG9hZFdpdGhSZXF1ZXN0SW5GcmFtZSA6IDE7CiAg
ICAgICAgIGJvb2wgd2ViVmlld0RpZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9yIDogMTsKICAgICAg
ICAgYm9vbCB3ZWJWaWV3RGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3JVc2VySW5mbyA6IDE7Cisg
ICAgICAgIGJvb2wgd2ViVmlld0RpZEZhaWxMb2FkV2l0aFJlcXVlc3RJbkZyYW1lV2l0aEVycm9y
IDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3TmF2aWdhdGlvbkRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb24gOiAxOwogCiAgICAgICAgIGJvb2wgd2ViVmlld1JlbmRlcmluZ1Byb2dyZXNzRGlkQ2hh
bmdlIDogMTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0JKHJldmlzaW9uIDI1Nzg5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTU2LDEyICsx
NTYsMTcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OnNldE5hdmlnYXRpb25EZWxlZwogCiAgICAg
bV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRTdGFydFByb3Zpc2lvbmFsTmF2
aWdhdGlvbiA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6
ZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb246KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdh
dGVNZXRob2RzLndlYlZpZXdEaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvblVzZXJJbmZvID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkU3RhcnRQ
cm92aXNpb25hbE5hdmlnYXRpb246dXNlckluZm86KV07CisgICAgbV9uYXZpZ2F0aW9uRGVsZWdh
dGVNZXRob2RzLndlYlZpZXdEaWRTdGFydFByb3Zpc2lvbmFsTG9hZFdpdGhSZXF1ZXN0SW5GcmFt
ZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkV2l0aFJlcXVlc3Q6aW5GcmFtZTopXTsKICAgICBtX25hdmlnYXRp
b25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTmF2aWdhdGlvbiA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHdlYlZpZXc6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9u
OildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRmFpbFByb3Zp
c2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHdlYlZpZXc6ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjp3aXRoRXJyb3I6
KV07CisgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRGYWlsUHJvdmlz
aW9uYWxMb2FkV2l0aFJlcXVlc3RJbkZyYW1lV2l0aEVycm9yID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhS
ZXF1ZXN0OmluRnJhbWU6d2l0aEVycm9yOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3RGlkQ29tbWl0TmF2aWdhdGlvbiA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6ZGlkQ29tbWl0TmF2aWdhdGlvbjopXTsKKyAgICBtX25h
dmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZENvbW1pdExvYWRXaXRoUmVxdWVzdElu
RnJhbWUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpk
aWRDb21taXRMb2FkV2l0aFJlcXVlc3Q6aW5GcmFtZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld0RpZEZpbmlzaE5hdmlnYXRpb24gPSBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246KV07Cisg
ICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRGaW5pc2hMb2FkV2l0aFJl
cXVlc3RJbkZyYW1lID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dl
YlZpZXc6ZGlkRmluaXNoTG9hZFdpdGhSZXF1ZXN0OmluRnJhbWU6KV07CiAgICAgbV9uYXZpZ2F0
aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvciA9IFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6ZGlkRmFpbE5hdmln
YXRpb246d2l0aEVycm9yOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3RGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3JVc2VySW5mbyA9IFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZEZhaWxOYXZpZ2F0aW9uOndpdGhFcnJv
cjp1c2VySW5mbzopXTsKKyAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Rp
ZEZhaWxMb2FkV2l0aFJlcXVlc3RJbkZyYW1lV2l0aEVycm9yID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkRmFpbExvYWRXaXRoUmVxdWVzdDppbkZy
YW1lOndpdGhFcnJvcjopXTsKIAogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3TmF2aWdhdGlvbkRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6bmF2aWdhdGlv
bjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZTp3aXRoRXJyb3I6KV07CiAgICAgbV9u
YXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6d2lsbFBl
cmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOmRlbGF5OildOwpAQCAtNzQ4LDIyICs3NTMsMjEgQEAg
dm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OgogICAgIH0pLmdldCgpXTsK
IH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFN0YXJ0UHJv
dmlzaW9uYWxOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9uKiBu
YXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCogdXNlckluZm8pCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6ZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24oV2ViUGFnZVBy
b3h5JiBwYWdlLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0
KiB1c2VySW5mbykKIHsKLSAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRl
bGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24KLSAgICAg
ICAgJiYgIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3RGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb25Vc2VySW5mbykKLSAgICAgICAgcmV0dXJu
OwotCiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25h
dmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZp
Z2F0aW9uIGlzIG5vdCBudWxsIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSBudWxsIGZvciBzb21l
IG5hdmlnYXRpb25zIHRocm91Z2ggdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4KLQotICAgIGlmICht
X25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFN0
YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uVXNlckluZm8pCi0gICAgICAgIFsoaWQgPFdLTmF2aWdh
dGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3Om1fbmF2aWdh
dGlvblN0YXRlLm1fd2ViVmlldyBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbjp3cmFwcGVy
KG5hdmlnYXRpb24pIHVzZXJJbmZvOnVzZXJJbmZvID8gc3RhdGljX2Nhc3Q8aWQgPE5TU2VjdXJl
Q29kaW5nPj4odXNlckluZm8tPndyYXBwZXIoKSkgOiBuaWxdOwotICAgIGVsc2UKLSAgICAgICAg
W25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBk
aWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbjp3cmFwcGVyKG5hdmlnYXRpb24pXTsKKyAgICBp
ZiAoZnJhbWVJbmZvLmlzTWFpbkZyYW1lKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
YXNzZXJ0IHRoYXQgbmF2aWdhdGlvbiBpcyBub3QgbnVsbCBoZXJlLCBidXQgaXQncyBjdXJyZW50
bHkgbnVsbCBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRoZSBiYWNrL2ZvcndhcmQgY2Fj
aGUuCisgICAgICAgIGlmIChtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1l
dGhvZHMud2ViVmlld0RpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uVXNlckluZm8pCisgICAg
ICAgICAgICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+KW5hdmlnYXRpb25EZWxl
Z2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkU3RhcnRQcm92aXNp
b25hbE5hdmlnYXRpb246d3JhcHBlcihuYXZpZ2F0aW9uKSB1c2VySW5mbzp1c2VySW5mbyA/IHN0
YXRpY19jYXN0PGlkIDxOU1NlY3VyZUNvZGluZz4+KHVzZXJJbmZvLT53cmFwcGVyKCkpIDogbmls
XTsKKyAgICAgICAgZWxzZSBpZiAobV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdh
dGVNZXRob2RzLndlYlZpZXdEaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbikKKyAgICAgICAg
ICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZp
ZXcgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb246d3JhcHBlcihuYXZpZ2F0aW9uKV07Cisg
ICAgfQorICAgIGlmIChtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld0RpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkV2l0aFJlcXVlc3RJbkZyYW1lKQorICAg
ICAgICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+KW5hdmlnYXRpb25EZWxlZ2F0
ZS5nZXQoKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkU3RhcnRQcm92
aXNpb25hbExvYWRXaXRoUmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0
ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSkgaW5GcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJ
bmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCAmcGFnZSkpXTsKIH0KIAogdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlv
biogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqKQpAQCAtODIxLDkgKzgyNSw5IEBAIHZvaWQgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjoKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdL
TmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZSkgX3dlYlZpZXdE
aWRDYW5jZWxDbGllbnRSZWRpcmVjdDptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXddOwogfQog
Ci1zdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1w
dGVyKFdLV2ViVmlldyAqd2ViVmlldywgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgTlNF
cnJvciAqb3JpZ2luYWxFcnJvcikKK3N0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gY3JlYXRlRXJy
b3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIoV0tXZWJWaWV3ICp3ZWJWaWV3LCBjb25zdCBGcmFtZUlu
Zm9EYXRhJiBmcmFtZUluZm8sIE5TRXJyb3IgKm9yaWdpbmFsRXJyb3IpCiB7Ci0gICAgYXV0byBm
cmFtZUhhbmRsZSA9IEFQSTo6RnJhbWVIYW5kbGU6OmNyZWF0ZSh3ZWJGcmFtZVByb3h5LmZyYW1l
SUQoKSk7CisgICAgYXV0byBmcmFtZUhhbmRsZSA9IEFQSTo6RnJhbWVIYW5kbGU6OmNyZWF0ZShm
cmFtZUluZm8uZnJhbWVJRCA/ICpmcmFtZUluZm8uZnJhbWVJRCA6IEZyYW1lSWRlbnRpZmllciB7
IH0pOwogCiAgICAgYXV0byByZWNvdmVyeUF0dGVtcHRlciA9IGFkb3B0TlMoW1tXS1JlbG9hZEZy
YW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcg
ZnJhbWVIYW5kbGU6d3JhcHBlcihmcmFtZUhhbmRsZS5nZXQoKSkgdXJsU3RyaW5nOm9yaWdpbmFs
RXJyb3IudXNlckluZm9bTlNVUkxFcnJvckZhaWxpbmdVUkxTdHJpbmdFcnJvcktleV1dKTsKIApA
QCAtODM1LDUwICs4MzksMzkgQEAgc3RhdGljIFJldGFpblB0cjxOU0Vycm9yPiBjcmVhdGVFcnJv
cldpdAogICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46
b3JpZ2luYWxFcnJvci5kb21haW4gY29kZTpvcmlnaW5hbEVycm9yLmNvZGUgdXNlckluZm86dXNl
ckluZm8uZ2V0KCldKTsKIH0KIAotLy8gRklYTUU6IFNob3VsZG4ndCBuZWVkIHRvIHBhc3MgdGhl
IFdlYkZyYW1lUHJveHkgaW4gaGVyZS4gQXQgbW9zdCwgYSBGcmFtZUhhbmRsZS4KLXZvaWQgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0
aW9uV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQ
cm94eSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiBlcnJvciwgQVBJOjpPYmplY3QqKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmln
YXRpb25DbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFn
ZVByb3h5JiBwYWdlLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9iamVjdCopCiB7Ci0gICAgLy8gRklY
TUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9uIGlzIG5vdCBudWxsIGhlcmUsIGJ1
dCBpdCdzIGN1cnJlbnRseSBudWxsIGZvciBzb21lIG5hdmlnYXRpb25zIHRocm91Z2ggdGhlIGJh
Y2svZm9yd2FyZCBjYWNoZS4KLQotICAgIC8vIEZJWE1FOiBTZXQgdGhlIGVycm9yIG9uIHRoZSBu
YXZpZ2F0aW9uIG9iamVjdC4KLQotICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0
aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0
aEVycm9yKQotICAgICAgICByZXR1cm47Ci0KICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9
IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpOwogICAgIGlmICgh
bmF2aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yV2l0
aFJlY292ZXJ5QXR0ZW1wdGVyID0gY3JlYXRlRXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIobV9u
YXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3LCB3ZWJGcmFtZVByb3h5LCBlcnJvcik7Ci0gICAgW25h
dmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRG
YWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOndyYXBwZXIobmF2aWdhdGlvbikgd2l0aEVycm9yOmVy
cm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyLmdldCgpXTsKLX0KLQotLy8gRklYTUU6IFNob3VsZG4n
dCBuZWVkIHRvIHBhc3MgdGhlIFdlYkZyYW1lUHJveHkgaW4gaGVyZS4gQXQgbW9zdCwgYSBGcmFt
ZUhhbmRsZS4KLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWls
UHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIFdl
YkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIEFQ
STo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6
Ok9iamVjdCopCi17Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0
aW9uIGlzIG5vdCBudWxsIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSBudWxsIGJlY2F1c2UgV2Vi
UGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgcGFzc2VzIG51bGwuCi0K
LSAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3TmF2aWdhdGlvbkRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9y
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IG1fbmF2
aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpOwotICAgIGF1dG8gZXJyb3JX
aXRoUmVjb3ZlcnlBdHRlbXB0ZXIgPSBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlciht
X25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcsIHdlYkZyYW1lUHJveHksIGVycm9yKTsKKyAgICBh
dXRvIGVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyID0gY3JlYXRlRXJyb3JXaXRoUmVjb3ZlcnlB
dHRlbXB0ZXIobV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3LCBmcmFtZUluZm8sIGVycm9yKTsK
IAotICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVn
YXRlIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uOm5pbCBk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpj
cmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCAmcGFnZSkpIHdpdGhFcnJvcjplcnJvcldpdGhSZWNv
dmVyeUF0dGVtcHRlci5nZXQoKV07CisgICAgaWYgKGZyYW1lSW5mby5pc01haW5GcmFtZSkgewor
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0aGF0IG5hdmlnYXRpb24gaXMgbm90
IG51bGwgaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IG51bGwgZm9yIHNvbWUgbmF2aWdhdGlvbnMg
dGhyb3VnaCB0aGUgYmFjay9mb3J3YXJkIGNhY2hlLgorICAgICAgICBpZiAobV9uYXZpZ2F0aW9u
U3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRGYWlsUHJvdmlzaW9u
YWxOYXZpZ2F0aW9uV2l0aEVycm9yKQorICAgICAgICAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3
ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGYWlsUHJvdmlzaW9uYWxOYXZp
Z2F0aW9uOndyYXBwZXIobmF2aWdhdGlvbikgd2l0aEVycm9yOmVycm9yV2l0aFJlY292ZXJ5QXR0
ZW1wdGVyLmdldCgpXTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAobV9uYXZpZ2F0aW9uU3Rh
dGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdOYXZpZ2F0aW9uRGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IpCisgICAgICAgICAgICBbKGlkIDxXS05h
dmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25h
dmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvbjpuaWwgZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZEluU3ViZnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJh
bWVJbmZvKSwgJnBhZ2UpKSB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0
KCldOworICAgIH0KKyAgICBpZiAobV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdh
dGVNZXRob2RzLndlYlZpZXdEaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aFJlcXVlc3RJbkZyYW1l
V2l0aEVycm9yKQorICAgICAgICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+KW5h
dmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KEhUVFBC
b2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KSBpbkZyYW1lOndyYXBwZXIoQVBJ
OjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksICZwYWdlKSkgd2l0aEVycm9y
OmVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyLmdldCgpXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZENvbW1pdE5hdmlnYXRpb24oV2ViUGFnZVByb3h5
JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KikKK3ZvaWQg
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRDb21taXROYXZpZ2F0aW9uKFdl
YlBhZ2VQcm94eSYgcGFnZSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCop
CiB7Ci0gICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld0RpZENvbW1pdE5hdmlnYXRpb24pCi0gICAgICAgIHJldHVybjsKLQogICAgIGF1
dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVs
ZWdhdGUuZ2V0KCk7CiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlvbiBpcyBu
b3QgbnVsbCBoZXJlLCBidXQgaXQncyBjdXJyZW50bHkgbnVsbCBmb3Igc29tZSBuYXZpZ2F0aW9u
cyB0aHJvdWdoIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUuCi0KLSAgICBbbmF2aWdhdGlvbkRlbGVn
YXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZENvbW1pdE5hdmlnYXRp
b246d3JhcHBlcihuYXZpZ2F0aW9uKV07CisgICAgaWYgKGZyYW1lSW5mby5pc01haW5GcmFtZSkg
eworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0aGF0IG5hdmlnYXRpb24gaXMg
bm90IG51bGwgaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IG51bGwgZm9yIHNvbWUgbmF2aWdhdGlv
bnMgdGhyb3VnaCB0aGUgYmFjay9mb3J3YXJkIGNhY2hlLgorICAgICAgICBpZiAobV9uYXZpZ2F0
aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRDb21taXROYXZp
Z2F0aW9uKQorICAgICAgICAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdh
dGlvblN0YXRlLm1fd2ViVmlldyBkaWRDb21taXROYXZpZ2F0aW9uOndyYXBwZXIobmF2aWdhdGlv
bildOworICAgIH0KKyAgICBpZiAobV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdh
dGVNZXRob2RzLndlYlZpZXdEaWRDb21taXRMb2FkV2l0aFJlcXVlc3RJbkZyYW1lKQorICAgICAg
ICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRp
b25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRp
ZENvbW1pdExvYWRXaXRoUmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0
ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSkgaW5GcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJ
bmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCAmcGFnZSkpXTsKIH0KIAogdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJQ
YWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3Qq
KQpAQCAtODk1LDM4ICs4ODgsMzggQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25D
bGllbnQ6OgogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
Pj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5t
X3dlYlZpZXcgbmF2aWdhdGlvbkRpZEZpbmlzaERvY3VtZW50TG9hZDp3cmFwcGVyKG5hdmlnYXRp
b24pXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZp
bmlzaE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmln
YXRpb24sIEFQSTo6T2JqZWN0KikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpkaWRGaW5pc2hOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgRnJhbWVJbmZvRGF0
YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQVBJOjpOYXZpZ2F0aW9u
KiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCopCiB7Ci0gICAgaWYgKCFtX25hdmlnYXRpb25TdGF0
ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEZpbmlzaE5hdmlnYXRpb24p
Ci0gICAgICAgIHJldHVybjsKLQogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZp
Z2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7CiAgICAgaWYgKCFuYXZpZ2F0
aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
YXNzZXJ0IHRoYXQgbmF2aWdhdGlvbiBpcyBub3QgbnVsbCBoZXJlLCBidXQgaXQncyBjdXJyZW50
bHkgbnVsbCBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRoZSBiYWNrL2ZvcndhcmQgY2Fj
aGUuCi0KLSAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUu
bV93ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246d3JhcHBlcihuYXZpZ2F0aW9uKV07CisgICAg
aWYgKGZyYW1lSW5mby5pc01haW5GcmFtZSkgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGFzc2VydCB0aGF0IG5hdmlnYXRpb24gaXMgbm90IG51bGwgaGVyZSwgYnV0IGl0J3MgY3VycmVu
dGx5IG51bGwgZm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgYmFjay9mb3J3YXJkIGNh
Y2hlLgorICAgICAgICBpZiAobV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdEaWRGaW5pc2hOYXZpZ2F0aW9uKQorICAgICAgICAgICAgW25hdmlnYXRp
b25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGaW5pc2hO
YXZpZ2F0aW9uOndyYXBwZXIobmF2aWdhdGlvbildOworICAgIH0KKyAgICBpZiAobV9uYXZpZ2F0
aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRGaW5pc2hMb2Fk
V2l0aFJlcXVlc3RJbkZyYW1lKQorICAgICAgICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVBy
aXZhdGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dl
YlZpZXcgZGlkRmluaXNoTG9hZFdpdGhSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KEhUVFBC
b2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KSBpbkZyYW1lOndyYXBwZXIoQVBJ
OjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksICZwYWdlKSldOwogfQogCi0v
LyBGSVhNRTogU2hvdWxkbid0IG5lZWQgdG8gcGFzcyB0aGUgV2ViRnJhbWVQcm94eSBpbiBoZXJl
LiBBdCBtb3N0LCBhIEZyYW1lSGFuZGxlLgotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRpZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYgcGFnZSwg
V2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9u
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpPYmplY3QqIHVzZXJJ
bmZvKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZhaWxOYXZp
Z2F0aW9uV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYgcGFnZSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1l
SW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0
aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpPYmplY3QqIHVz
ZXJJbmZvKQogewotICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdh
dGVNZXRob2RzLndlYlZpZXdEaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcgotICAgICAgICAmJiAh
bV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRG
YWlsTmF2aWdhdGlvbldpdGhFcnJvclVzZXJJbmZvKQotICAgICAgICByZXR1cm47Ci0KICAgICBh
dXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRl
bGVnYXRlLmdldCgpOwogICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1
cm47CiAKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0aGF0IG5hdmlnYXRpb24gaXMg
bm90IG51bGwgaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IG51bGwgZm9yIHNvbWUgbmF2aWdhdGlv
bnMgdGhyb3VnaCB0aGUgYmFjay9mb3J3YXJkIGNhY2hlLgorICAgIGF1dG8gZXJyb3JXaXRoUmVj
b3ZlcnlBdHRlbXB0ZXIgPSBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcihtX25hdmln
YXRpb25TdGF0ZS5tX3dlYlZpZXcsIGZyYW1lSW5mbywgZXJyb3IpOwogCi0gICAgYXV0byBlcnJv
cldpdGhSZWNvdmVyeUF0dGVtcHRlciA9IGNyZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVy
KG1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldywgd2ViRnJhbWVQcm94eSwgZXJyb3IpOwotICAg
IGlmIChtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d0RpZEZhaWxOYXZpZ2F0aW9uV2l0aEVycm9yVXNlckluZm8pCi0gICAgICAgIFsoaWQgPFdLTmF2
aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3Om1fbmF2
aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGYWlsTmF2aWdhdGlvbjp3cmFwcGVyKG5hdmlnYXRp
b24pIHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKSB1c2VySW5mbzp1
c2VySW5mbyA/IHN0YXRpY19jYXN0PGlkIDxOU1NlY3VyZUNvZGluZz4+KHVzZXJJbmZvLT53cmFw
cGVyKCkpIDogbmlsXTsKLSAgICBlbHNlCi0gICAgICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2Vi
VmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkRmFpbE5hdmlnYXRpb246d3JhcHBl
cihuYXZpZ2F0aW9uKSB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCld
OworICAgIGlmIChmcmFtZUluZm8uaXNNYWluRnJhbWUpIHsKKyAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9uIGlzIG5vdCBudWxsIGhlcmUsIGJ1dCBpdCdz
IGN1cnJlbnRseSBudWxsIGZvciBzb21lIG5hdmlnYXRpb25zIHRocm91Z2ggdGhlIGJhY2svZm9y
d2FyZCBjYWNoZS4KKyAgICAgICAgaWYgKG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRl
bGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3JVc2VySW5mbykK
KyAgICAgICAgICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlv
bkRlbGVnYXRlIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGYWlsTmF2
aWdhdGlvbjp3cmFwcGVyKG5hdmlnYXRpb24pIHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0
dGVtcHRlci5nZXQoKSB1c2VySW5mbzp1c2VySW5mbyA/IHN0YXRpY19jYXN0PGlkIDxOU1NlY3Vy
ZUNvZGluZz4+KHVzZXJJbmZvLT53cmFwcGVyKCkpIDogbmlsXTsKKyAgICAgICAgZWxzZSBpZiAo
bV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRG
YWlsTmF2aWdhdGlvbldpdGhFcnJvcikKKyAgICAgICAgICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUg
d2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkRmFpbE5hdmlnYXRpb246d3Jh
cHBlcihuYXZpZ2F0aW9uKSB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0
KCldOworICAgIH0KKyAgICBpZiAobV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdh
dGVNZXRob2RzLndlYlZpZXdEaWRGYWlsTG9hZFdpdGhSZXF1ZXN0SW5GcmFtZVdpdGhFcnJvcikK
KyAgICAgICAgWyhpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPiluYXZpZ2F0aW9uRGVs
ZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZEZhaWxMb2FkV2l0
aFJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90
VXBkYXRlSFRUUEJvZHkpIGluRnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdU
Rk1vdmUoZnJhbWVJbmZvKSwgJnBhZ2UpKSB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlBdHRl
bXB0ZXIuZ2V0KCldOwogfQogCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRp
b24qIG5hdmlnYXRpb24sIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBl
LCBBUEk6Ok9iamVjdCopCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJl
dmlzaW9uIDI1Nzg5MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMyw3ICs1MzMs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0CiAgICAgYXV0byYg
dW5yZWFjaGFibGVVUkwgPSBwcm92aXNpb25hbExvYWRlci51bnJlYWNoYWJsZVVSTCgpOwogCiAg
ICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKG1fZnJhbWUtPmZy
YW1lSUQoKSwgcHJvdmlzaW9uYWxMb2FkZXIubmF2aWdhdGlvbklEKCksIHVybCwgdW5yZWFjaGFi
bGVVUkwsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNU
b0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShtX2Zy
YW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmluZm8oKSwgcHJvdmlzaW9uYWxMb2FkZXIucmVxdWVz
dCgpLCBwcm92aXNpb25hbExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgdXJsLCB1bnJlYWNoYWJsZVVS
TCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFu
ZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiB9CiAKIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgbWF4VGl0bGVMZW5ndGggPSAxMDAwOyAvLyBDbG9zZXN0IHBvd2VyIG9mIDEwIGFib3Zl
IHRoZSBXM0MgcmVjb21tZW5kYXRpb24gZm9yIFRpdGxlIGxlbmd0aC4KQEAgLTU3NSw3ICs1NzUs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvCiAgICAgICAgIHVz
ZWRMZWdhY3lUTFMgPSB1c2VkTGVnYWN5VExTRnJvbVBhZ2VDYWNoZSA9PSBVc2VkTGVnYWN5VExT
OjpZZXM7CiAgICAgCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJhbWUobV9mcmFt
ZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2Fk
ZXIucmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX2ZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVy
LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmxv
YWRUeXBlKCkpLCB2YWx1ZU9yQ29tcHV0ZShkb2N1bWVudExvYWRlci5yZXNwb25zZSgpLmNlcnRp
ZmljYXRlSW5mbygpLCBbXSB7IHJldHVybiBDZXJ0aWZpY2F0ZUluZm8oKTsgfSksIHVzZWRMZWdh
Y3lUTFMsIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50
KCksIGhhc0luc2VjdXJlQ29udGVudCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAg
d2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDb21taXRMb2FkRm9yRnJh
bWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pbmZvKCksIGRvY3VtZW50TG9hZGVyLnJl
cXVlc3QoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIGRvY3VtZW50TG9hZGVyLnJl
c3BvbnNlKCkubWltZVR5cGUoKSwgbV9mcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkVHlw
ZSgpKSwgdmFsdWVPckNvbXB1dGUoZG9jdW1lbnRMb2FkZXIucmVzcG9uc2UoKS5jZXJ0aWZpY2F0
ZUluZm8oKSwgW10geyByZXR1cm4gQ2VydGlmaWNhdGVJbmZvKCk7IH0pLCB1c2VkTGVnYWN5VExT
LCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgpLCBo
YXNJbnNlY3VyZUNvbnRlbnQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5z
Zm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogICAgIHdlYlBh
Z2UtPmRpZENvbW1pdExvYWQobV9mcmFtZSk7CiB9CiAKQEAgLTYwMywxMiArNjAzLDE1IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmEKICAgICAvLyBBIGJldHRlciBz
b2x1dGlvbiB0byB0aGlzIHByb2JsZW0gd291bGQgYmUgZmluZCBhIGNsZWFuIHdheSB0byBwb3N0
cG9uZSB0aGUgZGlzY29ubmVjdGlvbiBvZiB0aGUgRG9jdW1lbnRMb2FkZXIgZnJvbSB0aGUgRnJh
bWUgdW50aWwKICAgICAvLyB0aGUgZW50aXJlIEZyYW1lTG9hZGVyQ2xpZW50IGZ1bmN0aW9uIHdh
cyBjb21wbGV0ZS4KICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQgPSAwOwotICAgIGlmIChhdXRv
IGRvY3VtZW50TG9hZGVyID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnByb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXIoKSkKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKKyAgICBp
ZiAoYXV0byBkb2N1bWVudExvYWRlciA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5w
cm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkpIHsKICAgICAgICAgbmF2aWdhdGlvbklEID0gc3Rh
dGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXIqPihkb2N1bWVudExvYWRlciktPm5hdmlnYXRpb25J
RCgpOworICAgICAgICByZXF1ZXN0ID0gZG9jdW1lbnRMb2FkZXItPnJlcXVlc3QoKTsKKyAgICB9
CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KICAgICBXZWJDb3JlOjpGcmFtZSogY29y
ZUZyYW1lID0gbV9mcmFtZS0+Y29yZUZyYW1lKCk7Ci0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUobV9mcmFtZS0+
ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pbmZvKCksIG5hdmlnYXRpb25JRCwgY29yZUZyYW1lLT5sb2Fk
ZXIoKS5wcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCgpLCBlcnJvciwgd2lsbENv
bnRpbnVlTG9hZGluZywgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3Jt
T2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pbmZvKCksIHJlcXVlc3QsIG5hdmlnYXRp
b25JRCwgY29yZUZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxl
ZFVSTCgpLCBlcnJvciwgd2lsbENvbnRpbnVlTG9hZGluZywgVXNlckRhdGEoV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0
KCkpKSk7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGEgbG9hZCBsaXN0ZW5lciwgbm90aWZ5IGl0Lgog
ICAgIGlmIChXZWJGcmFtZTo6TG9hZExpc3RlbmVyKiBsb2FkTGlzdGVuZXIgPSBtX2ZyYW1lLT5s
b2FkTGlzdGVuZXIoKSkKQEAgLTYyNSwxMyArNjI4LDE0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkRmEKIAogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7
CiAKLSAgICBhdXRvIG5hdmlnYXRpb25JRCA9IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVy
Jj4oKm1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKS5uYXZp
Z2F0aW9uSUQoKTsKKyAgICBhdXRvJiBkb2N1bWVudExvYWRlciA9IHN0YXRpY19jYXN0PFdlYkRv
Y3VtZW50TG9hZGVyJj4oKm1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpKTsKKyAgICBhdXRvIG5hdmlnYXRpb25JRCA9IGRvY3VtZW50TG9hZGVyLm5hdmlnYXRp
b25JRCgpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAgIHdlYlBhZ2Ut
PmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFt
ZSgqd2ViUGFnZSwgKm1fZnJhbWUsIGVycm9yLCB1c2VyRGF0YSk7CiAKICAgICAvLyBOb3RpZnkg
dGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZEZhaWxMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBuYXZpZ2F0aW9uSUQsIGVy
cm9yLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9I
YW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZEZhaWxMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgp
LCBtX2ZyYW1lLT5pbmZvKCksIGRvY3VtZW50TG9hZGVyLnJlcXVlc3QoKSwgbmF2aWdhdGlvbklE
LCBlcnJvciwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0
c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiAKICAgICAvLyBJZiB3ZSBoYXZl
IGEgbG9hZCBsaXN0ZW5lciwgbm90aWZ5IGl0LgogICAgIGlmIChXZWJGcmFtZTo6TG9hZExpc3Rl
bmVyKiBsb2FkTGlzdGVuZXIgPSBtX2ZyYW1lLT5sb2FkTGlzdGVuZXIoKSkKQEAgLTY2NSwxMyAr
NjY5LDE0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmkKIAogICAg
IFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKLSAgICBhdXRvIG5hdmlnYXRpb25JRCA9
IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVyJj4oKm1fZnJhbWUtPmNvcmVGcmFtZSgpLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpKS5uYXZpZ2F0aW9uSUQoKTsKKyAgICBhdXRvJiBkb2N1
bWVudExvYWRlciA9IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVyJj4oKm1fZnJhbWUtPmNv
cmVGcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKTsKKyAgICBhdXRvIG5hdmlnYXRp
b25JRCA9IGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpOwogCiAgICAgLy8gTm90aWZ5IHRo
ZSBidW5kbGUgY2xpZW50LgogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50
KCkuZGlkRmluaXNoTG9hZEZvckZyYW1lKCp3ZWJQYWdlLCAqbV9mcmFtZSwgdXNlckRhdGEpOwog
CiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgp
LCBuYXZpZ2F0aW9uSUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9y
bU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOworICAgIHdlYlBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZEZvckZyYW1lKG1fZnJh
bWUtPmZyYW1lSUQoKSwgbV9mcmFtZS0+aW5mbygpLCBkb2N1bWVudExvYWRlci5yZXF1ZXN0KCks
IG5hdmlnYXRpb25JRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3Jt
T2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiAKICAgICAvLyBJZiB3
ZSBoYXZlIGEgbG9hZCBsaXN0ZW5lciwgbm90aWZ5IGl0LgogICAgIGlmIChXZWJGcmFtZTo6TG9h
ZExpc3RlbmVyKiBsb2FkTGlzdGVuZXIgPSBtX2ZyYW1lLT5sb2FkTGlzdGVuZXIoKSkKSW5kZXg6
IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI1Nzk1OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIy
IEBACisyMDIwLTAzLTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgQWRkIFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZSBTUEkgdG8gaW5m
b3JtIGFwcGxpY2F0aW9uIG9mIHN1YmZyYW1lIG5hdmlnYXRpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg2NzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvTmF2aWdhdGlvbi5tbToKKyAgICAgICAgKC1bRnJhbWVOYXZpZ2F0aW9uRGVsZWdh
dGUgd2FpdEZvck5hdmlnYXRpb25zOl0pOgorICAgICAgICAoLVtGcmFtZU5hdmlnYXRpb25EZWxl
Z2F0ZSByZXF1ZXN0c10pOgorICAgICAgICAoLVtGcmFtZU5hdmlnYXRpb25EZWxlZ2F0ZSBmcmFt
ZXNdKToKKyAgICAgICAgKC1bRnJhbWVOYXZpZ2F0aW9uRGVsZWdhdGUgY2FsbGJhY2tzXSk6Cisg
ICAgICAgICgtW0ZyYW1lTmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3OmRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkV2l0aFJlcXVlc3Q6aW5GcmFtZTpdKToKKyAgICAgICAgKC1bRnJhbWVOYXZpZ2F0
aW9uRGVsZWdhdGUgX3dlYlZpZXc6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhSZXF1ZXN0Omlu
RnJhbWU6d2l0aEVycm9yOl0pOgorICAgICAgICAoLVtGcmFtZU5hdmlnYXRpb25EZWxlZ2F0ZSBf
d2ViVmlldzpkaWRDb21taXRMb2FkV2l0aFJlcXVlc3Q6aW5GcmFtZTpdKToKKyAgICAgICAgKC1b
RnJhbWVOYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6ZGlkRmFpbExvYWRXaXRoUmVxdWVzdDpp
bkZyYW1lOndpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bRnJhbWVOYXZpZ2F0aW9uRGVsZWdhdGUg
X3dlYlZpZXc6ZGlkRmluaXNoTG9hZFdpdGhSZXF1ZXN0OmluRnJhbWU6XSk6CisgICAgICAgIChU
RVNUKToKKwogMjAyMC0wMy0wNSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtXZWJBdXRobl0gSW1wbGVtZW50IFNQSSAtW19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWxEZWxlZ2F0ZSBwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZTpzb3VyY2U6Y29tcGxl
dGlvbkhhbmRsZXI6XQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9OYXZpZ2F0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvTmF2aWdhdGlvbi5tbQkocmV2aXNpb24gMjU3ODkxKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9OYXZpZ2F0aW9uLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw4ICszMiwxMCBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdFVSTFNjaGVtZUhhbmRs
ZXIuaCIKIAogc3RhdGljIGJvb2wgaXNEb25lOwogc3RhdGljIFJldGFpblB0cjxXS05hdmlnYXRp
b24+IGN1cnJlbnROYXZpZ2F0aW9uOwpAQCAtOTgsNiArMTAwLDE4OSBAQCBURVNUKFdLTmF2aWdh
dGlvbiwgTG9hZFJlcXVlc3QpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OwogfQogCitAaW50ZXJmYWNlIEZyYW1lTmF2aWdhdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdL
TmF2aWdhdGlvbkRlbGVnYXRlPgorLSAodm9pZCl3YWl0Rm9yTmF2aWdhdGlvbnM6KHNpemVfdClj
b3VudDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheTxOU1VSTFJlcXVl
c3QgKj4gKnJlcXVlc3RzOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5
PFdLRnJhbWVJbmZvICo+ICpmcmFtZXM7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IE5TQXJyYXk8TlNTdHJpbmcgKj4gKmNhbGxiYWNrczsKK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IEZyYW1lTmF2aWdhdGlvbkRlbGVnYXRlIHsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk8
TlNVUkxSZXF1ZXN0ICo+PiBfcmVxdWVzdHM7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5
PFdLRnJhbWVJbmZvICo+PiBfZnJhbWVzOworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheTxO
U1N0cmluZyAqPj4gX2NhbGxiYWNrczsKKyAgICBzaXplX3QgX25hdmlnYXRpb25Db3VudDsKK30K
KworLSAodm9pZCl3YWl0Rm9yTmF2aWdhdGlvbnM6KHNpemVfdClleHBlY3RlZE5hdmlnYXRpb25D
b3VudAoreworICAgIHdoaWxlIChfbmF2aWdhdGlvbkNvdW50IDwgZXhwZWN0ZWROYXZpZ2F0aW9u
Q291bnQpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7Cit9CisK
Ky0gKE5TQXJyYXk8TlNVUkxSZXF1ZXN0ICo+ICopcmVxdWVzdHMKK3sKKyAgICByZXR1cm4gX3Jl
cXVlc3RzLmdldCgpOworfQorCistIChOU0FycmF5PFdLRnJhbWVJbmZvICo+ICopZnJhbWVzCit7
CisgICAgcmV0dXJuIF9mcmFtZXMuZ2V0KCk7Cit9CisKKy0gKE5TQXJyYXk8TlNTdHJpbmcgKj4g
KiljYWxsYmFja3MKK3sKKyAgICByZXR1cm4gX2NhbGxiYWNrcy5nZXQoKTsKK30KKworLSAodm9p
ZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZFdp
dGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGluRnJhbWU6KFdLRnJhbWVJbmZvICop
ZnJhbWUKK3sKKyAgICBpZiAoIV9yZXF1ZXN0cykKKyAgICAgICAgX3JlcXVlc3RzID0gW05TTXV0
YWJsZUFycmF5IGFycmF5XTsKKyAgICBbX3JlcXVlc3RzIGFkZE9iamVjdDpyZXF1ZXN0XTsKKwor
ICAgIGlmICghX2ZyYW1lcykKKyAgICAgICAgX2ZyYW1lcyA9IFtOU011dGFibGVBcnJheSBhcnJh
eV07CisgICAgW19mcmFtZXMgYWRkT2JqZWN0OmZyYW1lXTsKKworICAgIGlmICghX2NhbGxiYWNr
cykKKyAgICAgICAgX2NhbGxiYWNrcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisgICAgW19j
YWxsYmFja3MgYWRkT2JqZWN0OkAic3RhcnQgcHJvdmlzaW9uYWwiXTsKK30KKworLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aFJl
cXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgaW5GcmFtZTooV0tGcmFtZUluZm8gKilmcmFt
ZSB3aXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworICAgIFtfcmVxdWVzdHMgYWRkT2JqZWN0
OnJlcXVlc3RdOworICAgIFtfZnJhbWVzIGFkZE9iamVjdDpmcmFtZV07CisgICAgW19jYWxsYmFj
a3MgYWRkT2JqZWN0OkAiZmFpbCBwcm92aXNpb25hbCJdOworICAgIF9uYXZpZ2F0aW9uQ291bnQr
KzsKK30KKworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRDb21taXRM
b2FkV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgaW5GcmFtZTooV0tGcmFtZUlu
Zm8gKilmcmFtZQoreworICAgIFtfcmVxdWVzdHMgYWRkT2JqZWN0OnJlcXVlc3RdOworICAgIFtf
ZnJhbWVzIGFkZE9iamVjdDpmcmFtZV07CisgICAgW19jYWxsYmFja3MgYWRkT2JqZWN0OkAiY29t
bWl0Il07Cit9CisKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmFp
bExvYWRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBpbkZyYW1lOihXS0ZyYW1l
SW5mbyAqKWZyYW1lIHdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAgW19yZXF1ZXN0
cyBhZGRPYmplY3Q6cmVxdWVzdF07CisgICAgW19mcmFtZXMgYWRkT2JqZWN0OmZyYW1lXTsKKyAg
ICBbX2NhbGxiYWNrcyBhZGRPYmplY3Q6QCJmYWlsIl07CisgICAgX25hdmlnYXRpb25Db3VudCsr
OworfQorCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaExv
YWRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBpbkZyYW1lOihXS0ZyYW1lSW5m
byAqKWZyYW1lCit7CisgICAgW19yZXF1ZXN0cyBhZGRPYmplY3Q6cmVxdWVzdF07CisgICAgW19m
cmFtZXMgYWRkT2JqZWN0OmZyYW1lXTsKKyAgICBbX2NhbGxiYWNrcyBhZGRPYmplY3Q6QCJmaW5p
c2giXTsKKyAgICBfbmF2aWdhdGlvbkNvdW50Kys7Cit9CisKK0BlbmQKKworVEVTVChXS05hdmln
YXRpb24sIEZyYW1lcykKK3sKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0
aW9uID0gW1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2Vd
OworICAgIFRlc3RVUkxTY2hlbWVIYW5kbGVyICpoYW5kbGVyID0gW1tUZXN0VVJMU2NoZW1lSGFu
ZGxlciBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRh
c2tIYW5kbGVyOl4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgeworICAg
ICAgICBOU1N0cmluZyAqcmVzcG9uc2VTdHJpbmcgPSBuaWw7CisgICAgICAgIGlmIChbdGFzay5y
ZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJmcmFtZTovL2hvc3Qx
LyJdKQorICAgICAgICAgICAgcmVzcG9uc2VTdHJpbmcgPSBAIjxpZnJhbWUgc3JjPSdmcmFtZTov
L2hvc3QyLyc+PC9pZnJhbWU+IjsKKyAgICAgICAgZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwu
YWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiZnJhbWU6Ly9ob3N0Mi8iXSkKKyAgICAg
ICAgICAgIHJlc3BvbnNlU3RyaW5nID0gQCI8c2NyaXB0PmZ1bmN0aW9uIG5hdmlnYXRlKCkgeyB3
aW5kb3cubG9jYXRpb249J2ZyYW1lOi8vaG9zdDMvJyB9PC9zY3JpcHQ+PGJvZHkgb25sb2FkPSdu
YXZpZ2F0ZSgpJz48L2JvZHk+IjsKKyAgICAgICAgZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwu
YWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiZnJhbWU6Ly9ob3N0My8iXSkgeworICAg
ICAgICAgICAgW3Rhc2sgZGlkRmFpbFdpdGhFcnJvcjpbTlNFcnJvciBlcnJvcldpdGhEb21haW46
QCJ0ZXN0RXJyb3JEb21haW4iIGNvZGU6NDIgdXNlckluZm86bmlsXV07CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQocmVzcG9uc2VTdHJpbmcpOworICAg
ICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRX
aXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29u
dGVudExlbmd0aDpyZXNwb25zZVN0cmluZy5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsK
KyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgpXTsKKyAgICAg
ICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W3Jlc3BvbnNlU3RyaW5nIGRhdGFVc2luZ0VuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXV07CisgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CisgICAg
fV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyIGZvclVS
TFNjaGVtZTpAImZyYW1lIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtG
cmFtZU5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICAgICAgd2ViVmlldy5nZXQoKS5uYXZp
Z2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZnJh
bWU6Ly9ob3N0MS8iXV1dOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yTmF2aWdhdGlvbnM6M107Cisg
ICAgCisgICAgc3RydWN0IEV4cGVjdGVkU3RyaW5ncyB7CisgICAgICAgIGNvbnN0IGNoYXIqIGNh
bGxiYWNrOworICAgICAgICBjb25zdCBjaGFyKiBmcmFtZVJlcXVlc3Q7CisgICAgICAgIGNvbnN0
IGNoYXIqIGZyYW1lU2VjdXJpdHlPcmlnaW5Ib3N0OworICAgICAgICBjb25zdCBjaGFyKiByZXF1
ZXN0OworICAgIH07CisgICAgCisgICAgYXV0byBjaGVja0NhbGxiYWNrcyA9IFtkZWxlZ2F0ZV0g
KFZlY3RvcjxFeHBlY3RlZFN0cmluZ3M+IGV4cGVjdGVkVmVjdG9yKSB7CisgICAgICAgIE5TQXJy
YXk8TlNVUkxSZXF1ZXN0ICo+ICpyZXF1ZXN0cyA9IGRlbGVnYXRlLmdldCgpLnJlcXVlc3RzOwor
ICAgICAgICBOU0FycmF5PFdLRnJhbWVJbmZvICo+ICpmcmFtZXMgPSBkZWxlZ2F0ZS5nZXQoKS5m
cmFtZXM7CisgICAgICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmNhbGxiYWNrcyA9IGRlbGVnYXRl
LmdldCgpLmNhbGxiYWNrczsKKyAgICAgICAgRVhQRUNUX0VRKHJlcXVlc3RzLmNvdW50LCBleHBl
Y3RlZFZlY3Rvci5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoZnJhbWVzLmNvdW50LCBleHBl
Y3RlZFZlY3Rvci5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoY2FsbGJhY2tzLmNvdW50LCBl
eHBlY3RlZFZlY3Rvci5zaXplKCkpOworICAgICAgICAKKyAgICAgICAgYXV0byBjaGVja0NhbGxi
YWNrID0gW10gKE5TU3RyaW5nICpjYWxsYmFjaywgV0tGcmFtZUluZm8gKmZyYW1lLCBOU1VSTFJl
cXVlc3QgKnJlcXVlc3QsIGNvbnN0IEV4cGVjdGVkU3RyaW5ncyYgZXhwZWN0ZWQpIHsKKyAgICAg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShjYWxsYmFjaywgZXhwZWN0ZWQuY2FsbGJhY2spOworICAg
ICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGZyYW1lLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5n
LCBleHBlY3RlZC5mcmFtZVJlcXVlc3QpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGZy
YW1lLnNlY3VyaXR5T3JpZ2luLmhvc3QsIGV4cGVjdGVkLmZyYW1lU2VjdXJpdHlPcmlnaW5Ib3N0
KTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmlu
ZywgZXhwZWN0ZWQucmVxdWVzdCk7CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGV4cGVjdGVkVmVjdG9yLnNpemUoKTsgKytpKQorICAgICAgICAg
ICAgY2hlY2tDYWxsYmFjayhjYWxsYmFja3NbaV0sIGZyYW1lc1tpXSwgcmVxdWVzdHNbaV0sIGV4
cGVjdGVkVmVjdG9yW2ldKTsKKyAgICB9OworICAgIAorICAgIGNoZWNrQ2FsbGJhY2tzKHsKKyAg
ICAgICAgeworICAgICAgICAgICAgInN0YXJ0IHByb3Zpc2lvbmFsIiwKKyAgICAgICAgICAgICIi
LAorICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAiZnJhbWU6Ly9ob3N0MS8iCisgICAgICAg
IH0sIHsKKyAgICAgICAgICAgICJjb21taXQiLAorICAgICAgICAgICAgImZyYW1lOi8vaG9zdDEv
IiwKKyAgICAgICAgICAgICJob3N0MSIsCisgICAgICAgICAgICAiZnJhbWU6Ly9ob3N0MS8iCisg
ICAgICAgIH0sIHsKKyAgICAgICAgICAgICJzdGFydCBwcm92aXNpb25hbCIsCisgICAgICAgICAg
ICAiIiwKKyAgICAgICAgICAgICJob3N0MSIsCisgICAgICAgICAgICAiZnJhbWU6Ly9ob3N0Mi8i
CisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJjb21taXQiLAorICAgICAgICAgICAgImZyYW1l
Oi8vaG9zdDIvIiwKKyAgICAgICAgICAgICJob3N0MiIsCisgICAgICAgICAgICAiZnJhbWU6Ly9o
b3N0Mi8iCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJmaW5pc2giLAorICAgICAgICAgICAg
ImZyYW1lOi8vaG9zdDIvIiwKKyAgICAgICAgICAgICJob3N0MiIsCisgICAgICAgICAgICAiZnJh
bWU6Ly9ob3N0Mi8iCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJmaW5pc2giLAorICAgICAg
ICAgICAgImZyYW1lOi8vaG9zdDEvIiwKKyAgICAgICAgICAgICJob3N0MSIsCisgICAgICAgICAg
ICAiZnJhbWU6Ly9ob3N0MS8iCisgICAgICAgIH0sIHsKKyAgICAgICAgICAgICJzdGFydCBwcm92
aXNpb25hbCIsCisgICAgICAgICAgICAiZnJhbWU6Ly9ob3N0Mi8iLAorICAgICAgICAgICAgImhv
c3QyIiwKKyAgICAgICAgICAgICJmcmFtZTovL2hvc3QzLyIKKyAgICAgICAgfSwgeworICAgICAg
ICAgICAgImZhaWwgcHJvdmlzaW9uYWwiLAorICAgICAgICAgICAgImZyYW1lOi8vaG9zdDIvIiwK
KyAgICAgICAgICAgICJob3N0MiIsCisgICAgICAgICAgICAiZnJhbWU6Ly9ob3N0My8iCisgICAg
ICAgIH0KKyAgICB9KTsKK30KKwogQGludGVyZmFjZSBEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0
aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CiBAZW5kCiAK
</data>
<flag name="review"
          id="408047"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>