<?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>227729</bug_id>
          
          <creation_ts>2021-07-06 17:06:12 -0700</creation_ts>
          <short_desc>[Cocoa] Expose SPI to opt out of Extensible SSO authentication</short_desc>
          <delta_ts>2021-07-14 16:56:23 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=227925</see_also>
          <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>
          
          <blocked>227974</blocked>
    
    <blocked>227925</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1775146</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-06 17:06:12 -0700</bug_when>
    <thetext>Some WebKit clients perform loads without being attached to a Window. Our Extensible SSO feature (AppSSO) assumes that the WebView will eventually be attached to a Window, and needs that Window to provide user context for the load event. If a Window is not present, the load is paused until the WKWebView is attached to a window, which can lead to mysterious load failures.

We need to expose API so that WebKit clients performing background loads that don&apos;t provide user interaction can let WebKit know that it should avoid triggering these SSO flows.

&lt;rdar://problem/75647892&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775354</commentid>
    <comment_count>1</comment_count>
      <attachid>433053</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-07 11:31:26 -0700</bug_when>
    <thetext>Created attachment 433053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775370</commentid>
    <comment_count>2</comment_count>
      <attachid>433053</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-07-07 11:53:56 -0700</bug_when>
    <thetext>Comment on attachment 433053
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKPreferences.h:70
&gt; +@property (nonatomic) BOOL extensibleSSOEnabled WK_API_AVAILABLE(macos(12.0), ios(15.0));

Might be good to get this API reviewed before landing to avoid any mishaps.

Also, I think you want an &apos;is&apos;-prefixed getter.

&gt; Source/WebKit/UIProcess/Cocoa/SOAuthorization/NavigationSOAuthorizationSession.mm:60
&gt; +        AUTHORIZATIONSESSION_RELEASE_LOG(&quot;shouldStartInternal: Starting Extensible SSO authentication for a web view that is not attached to a window. Loading will pause until a window is attached. If this is unexpected, set the WKPreference.extensibleSSOEnabled property to NO to disable Extenstible SSO operations.&quot;);

&quot;Extenstible&quot; sp.

&gt; Source/WebKit/UIProcess/Cocoa/SOAuthorization/PopUpSOAuthorizationSession.mm:189
&gt;      [m_secretWebView setUIDelegate:m_secretDelegate.get()];

Wow, we make a WKWebView of our own, and copy the configuration of the parent? When do we do this?! How do bundle clients not get confused about the spurious web view?? &quot;Make me a new web view&quot; is usually delegated to the client. And its navigation delegate is custom, and ignores the app&apos;s policies? Very odd.

... all that said, not new in this patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775390</commentid>
    <comment_count>3</comment_count>
      <attachid>433053</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-07-07 12:34:33 -0700</bug_when>
    <thetext>Comment on attachment 433053
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKPreferences.h:70
&gt;&gt; +@property (nonatomic) BOOL extensibleSSOEnabled WK_API_AVAILABLE(macos(12.0), ios(15.0));
&gt; 
&gt; Might be good to get this API reviewed before landing to avoid any mishaps.
&gt; 
&gt; Also, I think you want an &apos;is&apos;-prefixed getter.

Please expand &quot;SSO&quot; at least in the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775472</commentid>
    <comment_count>4</comment_count>
      <attachid>433053</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-07 14:46:01 -0700</bug_when>
    <thetext>Comment on attachment 433053
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKPreferences.h:70
&gt;&gt;&gt; +@property (nonatomic) BOOL extensibleSSOEnabled WK_API_AVAILABLE(macos(12.0), ios(15.0));
&gt;&gt; 
&gt;&gt; Might be good to get this API reviewed before landing to avoid any mishaps.
&gt;&gt; 
&gt;&gt; Also, I think you want an &apos;is&apos;-prefixed getter.
&gt; 
&gt; Please expand &quot;SSO&quot; at least in the comment.

Will do (for both).

&gt;&gt; Source/WebKit/UIProcess/Cocoa/SOAuthorization/NavigationSOAuthorizationSession.mm:60
&gt;&gt; +        AUTHORIZATIONSESSION_RELEASE_LOG(&quot;shouldStartInternal: Starting Extensible SSO authentication for a web view that is not attached to a window. Loading will pause until a window is attached. If this is unexpected, set the WKPreference.extensibleSSOEnabled property to NO to disable Extenstible SSO operations.&quot;);
&gt; 
&gt; &quot;Extenstible&quot; sp.

Doh!

&gt;&gt; Source/WebKit/UIProcess/Cocoa/SOAuthorization/PopUpSOAuthorizationSession.mm:189
&gt;&gt;      [m_secretWebView setUIDelegate:m_secretDelegate.get()];
&gt; 
&gt; Wow, we make a WKWebView of our own, and copy the configuration of the parent? When do we do this?! How do bundle clients not get confused about the spurious web view?? &quot;Make me a new web view&quot; is usually delegated to the client. And its navigation delegate is custom, and ignores the app&apos;s policies? Very odd.
&gt; 
&gt; ... all that said, not new in this patch!

Yeah, I forgot the tortured situation that led to Jiewen needing to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775710</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-08 10:21:03 -0700</bug_when>
    <thetext>After discussing more, we decided this should be API. We instead need to design a delegate method so the client can be part of the decision process of whether the wait for the view to be attached to a window, or fail quickly.

For now, we will just expose the existing property we were using for internal and test purposes as SPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775741</commentid>
    <comment_count>6</comment_count>
      <attachid>433149</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-08 11:41:27 -0700</bug_when>
    <thetext>Created attachment 433149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775778</commentid>
    <comment_count>7</comment_count>
      <attachid>433149</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-07-08 13:39:26 -0700</bug_when>
    <thetext>Comment on attachment 433149
Patch

Maybe double-check the API tests bot, since it&apos;s orange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775794</commentid>
    <comment_count>8</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-08 14:05:43 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #7)
&gt; Comment on attachment 433149 [details]
&gt; Patch
&gt; 
&gt; Maybe double-check the API tests bot, since it&apos;s orange.

I won&apos;t land until both api bots are green. There are some differences in iOS and macOS that I might not have captured in my new assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775813</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-08 14:49:07 -0700</bug_when>
    <thetext>The bots are green, so cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775821</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-08 15:14:07 -0700</bug_when>
    <thetext>Committed r279755 (239528@main): &lt;https://commits.webkit.org/239528@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 433149.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433053</attachid>
            <date>2021-07-07 11:31:26 -0700</date>
            <delta_ts>2021-07-08 11:41:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227729-20210707113125.patch</filename>
            <type>text/plain</type>
            <size>50570</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM3MThiNzc4NjUwNTBlYTdhNGM2MTM4
Y2ZjNjBmNjM4NWU5MTAwOWQuLmUzYjhkNzcyNDZlMmUwZTMzZTdjMWEwYTk2OTI5NTVhN2MxZTQ4
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDctMDcgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBFeHBvc2UgQVBJIHRvIG9wdCBvdXQg
b2YgRXh0ZW5zaWJsZSBTU08gYXV0aGVudGljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzcyOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzU2NDc4OTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ3JlYXRlIG5ldyBXS1ByZWZlcmVuY2UgdG8gYWxsb3cgV2ViS2l0IGNsaWVudHMgdG8gb3B0
IG91dCBvZiBFeHRlbnNpYmxlIFNTTyBhdXRoZW50aWNhdGlvbi4KKworICAgICAgICAqIFNjcmlw
dHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbDoKKwogMjAyMS0wNy0wMiAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIE9ubHkgdXNl
IFdlYkdMIG9uIE1ldGFsIGJ5IGRlZmF1bHQgb24gc2FmZSB2ZXJzaW9ucyBvZiBtYWNPUwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA4YzAyMjQ0ZmE4NjhjZjExMzU4MWE2YWFkYjliNzc1ZGE1NTM4YWZjLi41ZjAyNTZl
YWExNTBmNjYzMTdhYTYxZDdmOGNlYWVhYTJjYmNkN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDIxLTA3LTA3ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisg
ICAgICAgIFtDb2NvYV0gRXhwb3NlIEFQSSB0byBvcHQgb3V0IG9mIEV4dGVuc2libGUgU1NPIGF1
dGhlbnRpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjc3MjkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1NjQ3ODkyPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdLV2ViVmlldyBjbGllbnRz
IHNob3VsZCBiZSBhYmxlIHRvIGRpc2FibGUgRXh0ZW5zaWJsZSBTU08gYXV0aGVudGljYXRpb24g
Zmxvd3MsIHNvIGV4aXN0aW5nIFNQSSBpcyBub3cKKyAgICAgICAgZXhwb3NlZCBhcyBBUEkuIFRo
aXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgZm9yIHVzZSBjYXNlcyB3aGVyZSBhIFdLV2ViVmll
dyB3aWxsIGJlIHVzZWQgdG8gbG9hZCBjb250ZW50CisgICAgICAgIHdpdGhvdXQgYmVpbmcgYXR0
YWNoZWQgdG8gYSBXaW5kb3csIHNpbmNlIGEgV2luZG93IGlzIHJlcXVpcmVkIHRvIHByZXNlbnQg
dGhlIEV4dGVuc2libGUgU1NPIGF1dGhlbnRpY2F0aW9uCisgICAgICAgIFVJLiBXaXRob3V0IGEg
V2luZG93LCBXZWJLaXQgd2lsbCB3YWl0IGZvciBhIFdpbmRvdyB0byBiZSBhdHRhY2hlZCBjYXVz
aW5nIGxvYWRzIHRvIHRpbWVvdXQuIEJ5IGFkb3B0aW5nIHRoaXMKKyAgICAgICAgQVBJLCBkZXZl
bG9wZXJzIGNhbiBvcHQgb3V0IG9mIEV4dGVuc2libGUgU1NPLCBhbGxvd2luZyBsb2FkcyB0byBm
YWlsIHF1aWNrbHkgcmF0aGVyIHRoYW4gd2FpdGluZyBmb3IgYSB0aW1lb3V0LgorCisgICAgICAg
IFRlc3RlZCBieSBhIG5ldyBUZXN0V2ViS2l0QVBJIHRlc3QgY2FzZTogU09BdXRob3JpemF0aW9u
UmVkaXJlY3QuRGlzYWJsZVNTTworCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
ZWZlcmVuY2VzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2Vz
Lm1tOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIGVuY29kZVdpdGhDb2RlcjpdKTogRW5jb2Rl
IG5ldyBwcmVmZXJlbmNlLgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIGluaXRXaXRoQ29kZXI6
XSk6IERpdHRvLgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIGV4dGVuc2libGVTU09FbmFibGVk
XSk6IEFkZCBnZXR0ZXIgZm9yIG5ldyBwcmVmZXJlbmNlLgorICAgICAgICAoLVtXS1ByZWZlcmVu
Y2VzIHNldEV4dGVuc2libGVTU09FbmFibGVkOl0pOiBBZGQgc2V0dGVyLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vTmF2aWdhdGlvblNPQXV0aG9yaXphdGlvblNl
c3Npb24ubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TT0F1dGhvcml6YXRpb25TZXNz
aW9uOjpzaG91bGRTdGFydEludGVybmFsKTogQWRkIG5ldyBsb2dnaW5nIHNvIGRldmVsb3BlcnMg
Y2FuIHNlZSB3aGVuIGEgV0tXZWJWaWV3CisgICAgICAgIHdpdGhvdXQgYSBXaW5kb3cgaXMgYXR0
ZW1wdGluZyB0byBwYXJ0aWNpcGF0ZSBpbiBFeHRlbnNpYmxlIFNTTyBmbG93cy4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vz
c2lvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpp
bml0U2VjcmV0V2ViVmlldyk6IFN3aXRjaCBmcm9tIFNQSSB0byBBUEkuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IERpdHRvLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKwogMjAyMS0wNy0wNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogW2lPU10gQVNTRVJUSU9OIEZBSUxF
RDogIW1fbWVzc2FnZVJlY2VpdmVyTWFwQ291bnQgdW5kZXIgV2ViS2l0OjpSZW1vdGVSZW1vdGVD
b21tYW5kTGlzdGVuZXI6On5SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9T
b3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCBl
NzMzMTU3NGJiZmU2OTUwODA0MzJjNTA2YTM5M2VkMjE4ZDBlNjUxLi4yZTYzYjgxYjBhMDczMTRh
OTljNDg1NjNmZmFhZDUzYzNjZWQ1ZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMv
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMv
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtNzU5LDYgKzc1OSwxNSBAQCBFbnVt
ZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzRW5hYmxlZDoKICAgICBXZWJLaXQ6CiAgICAgICBk
ZWZhdWx0OiBmYWxzZQogCitFeHRlbnNpYmxlU1NPRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICB3
ZWJjb3JlQmluZGluZzogbm9uZQorICBjb25kaXRpb246IEhBVkUoQVBQX1NTTykKKyAgZXhwb3Nl
ZDogWyBXZWJLaXQgXQorICBkZWZhdWx0VmFsdWU6CisgICAgV2ViS2l0OgorICAgICAgZGVmYXVs
dDogdHJ1ZQorCiBGVFBEaXJlY3RvcnlUZW1wbGF0ZVBhdGg6CiAgIHR5cGU6IFN0cmluZwogICBk
ZWZhdWx0VmFsdWU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcmVmZXJlbmNlcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJlZmVyZW5jZXMuaAppbmRleCA5ZjYzN2ZjZTk5ZDkxYmE4MTM3MDExY2I2OWQxODFhNmE3Y2I0
ZWVmLi5hZTk2ODJmM2MyYzQ4N2I2NDI1NzU3NGJkNGUwOGUwODM4ODMwMGI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLmgKQEAgLTY0
LDYgKzY0LDExIEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjApKQog
Ki8KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNUZXh0SW50ZXJhY3Rpb25FbmFibGVk
KSBCT09MIHRleHRJbnRlcmFjdGlvbkVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4w
KSwgaW9zKDE1LjApKTsKIAorLyohIEBhYnN0cmFjdCBBIEJvb2xlYW4gdmFsdWUgaW5kaWNhdGlu
ZyB3aGV0aGVyIGVudGVycHJpc2UgZXh0ZW5zaWJsZSBTU08gaXMgZW5hYmxlZC4KKyBAZGlzY3Vz
c2lvbiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBZRVMuCisqLworQHByb3BlcnR5IChub25hdG9taWMp
IEJPT0wgZXh0ZW5zaWJsZVNTT0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwg
aW9zKDE1LjApKTsKKwogQGVuZAogCiBAaW50ZXJmYWNlIFdLUHJlZmVyZW5jZXMgKFdLRGVwcmVj
YXRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
ZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVy
ZW5jZXMubW0KaW5kZXggOGFkMTY1MmQ5MjEzY2E0NDNkMzc4ZjMzZjg0MjM0NjRkZjZkZjlmYS4u
ZGYxZjdkM2M4YzBhNWU1M2I2NTA5ZTQzOWNhYWUwM2QxNTVmZGQ3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KQEAgLTgyLDYg
KzgyLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgW2NvZGVyIGVu
Y29kZUJvb2w6c2VsZi50YWJGb2N1c2VzTGlua3MgZm9yS2V5OkAidGFiRm9jdXNlc0xpbmtzIl07
CiAjZW5kaWYKICAgICBbY29kZXIgZW5jb2RlQm9vbDpzZWxmLnRleHRJbnRlcmFjdGlvbkVuYWJs
ZWQgZm9yS2V5OkAidGV4dEludGVyYWN0aW9uRW5hYmxlZCJdOworICAgIFtjb2RlciBlbmNvZGVC
b29sOnNlbGYuZXh0ZW5zaWJsZVNTT0VuYWJsZWQgZm9yS2V5OkAiZXh0ZW5zaWJsZVNTT0VuYWJs
ZWQiXTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2Rl
cgpAQCAtMTA0LDcgKzEwNSw5IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
I2VuZGlmCiAgICAgaWYgKFtjb2RlciBjb250YWluc1ZhbHVlRm9yS2V5OkAidGV4dEludGVyYWN0
aW9uRW5hYmxlZCJdKQogICAgICAgICBzZWxmLnRleHRJbnRlcmFjdGlvbkVuYWJsZWQgPSBbY29k
ZXIgZGVjb2RlQm9vbEZvcktleTpAInRleHRJbnRlcmFjdGlvbkVuYWJsZWQiXTsKLQorICAgIGlm
IChbY29kZXIgY29udGFpbnNWYWx1ZUZvcktleTpAImV4dGVuc2libGVTU09FbmFibGVkIl0pCisg
ICAgICAgIHNlbGYuZXh0ZW5zaWJsZVNTT0VuYWJsZWQgPSBbY29kZXIgZGVjb2RlQm9vbEZvcktl
eTpAImV4dGVuc2libGVTU09FbmFibGVkIl07CisgICAgCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAK
QEAgLTE1Myw2ICsxNTYsMjMgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAg
ICAgX3ByZWZlcmVuY2VzLT5zZXRUZXh0SW50ZXJhY3Rpb25FbmFibGVkKHRleHRJbnRlcmFjdGlv
bkVuYWJsZWQpOwogfQogCistIChCT09MKWV4dGVuc2libGVTU09FbmFibGVkCit7CisjaWYgSEFW
RShBUFBfU1NPKQorICAgIHJldHVybiBfcHJlZmVyZW5jZXMtPmV4dGVuc2libGVTU09FbmFibGVk
KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCistICh2b2lkKXNldEV4
dGVuc2libGVTU09FbmFibGVkOihCT09MKWV4dGVuc2libGVTU09FbmFibGVkCit7CisjaWYgSEFW
RShBUFBfU1NPKQorICAgIF9wcmVmZXJlbmNlcy0+c2V0RXh0ZW5zaWJsZVNTT0VuYWJsZWQoZXh0
ZW5zaWJsZVNTT0VuYWJsZWQpOworI2VuZGlmCit9CisKKwogI3ByYWdtYSBtYXJrIE9TIFgtc3Bl
Y2lmaWMgbWV0aG9kcwogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL05hdmlnYXRpb25TT0F1dGhvcml6
YXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3Jp
emF0aW9uL05hdmlnYXRpb25TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCmluZGV4IGQyMzdmM2Ew
OWRjM2RjODE1MWRlMzM4Mjk0NzZhNDY1OTRlNmViZGMuLjM3MWNkNTM0OWZkODI3ZGMwMWM3NWJk
OTg2N2RjMTk3OTU3MDQxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1NPQXV0aG9yaXphdGlvbi9OYXZpZ2F0aW9uU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vTmF2aWdh
dGlvblNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KQEAgLTU3LDYgKzU3LDcgQEAgdm9pZCBOYXZp
Z2F0aW9uU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6c2hvdWxkU3RhcnRJbnRlcm5hbCgpCiAgICAg
QVNTRVJUKHBhZ2UpOwogICAgIGJlZm9yZVN0YXJ0KCk7CiAgICAgaWYgKCFwYWdlLT5pc0luV2lu
ZG93KCkpIHsKKyAgICAgICAgQVVUSE9SSVpBVElPTlNFU1NJT05fUkVMRUFTRV9MT0coInNob3Vs
ZFN0YXJ0SW50ZXJuYWw6IFN0YXJ0aW5nIEV4dGVuc2libGUgU1NPIGF1dGhlbnRpY2F0aW9uIGZv
ciBhIHdlYiB2aWV3IHRoYXQgaXMgbm90IGF0dGFjaGVkIHRvIGEgd2luZG93LiBMb2FkaW5nIHdp
bGwgcGF1c2UgdW50aWwgYSB3aW5kb3cgaXMgYXR0YWNoZWQuIElmIHRoaXMgaXMgdW5leHBlY3Rl
ZCwgc2V0IHRoZSBXS1ByZWZlcmVuY2UuZXh0ZW5zaWJsZVNTT0VuYWJsZWQgcHJvcGVydHkgdG8g
Tk8gdG8gZGlzYWJsZSBFeHRlbnN0aWJsZSBTU08gb3BlcmF0aW9ucy4iKTsKICAgICAgICAgc2V0
U3RhdGUoU3RhdGU6OldhaXRpbmcpOwogICAgICAgICBwYWdlLT5hZGRPYnNlcnZlcigqdGhpcyk7
CiAgICAgICAgIEFTU0VSVChwYWdlLT5tYWluRnJhbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRp
b25TZXNzaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0
aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQppbmRleCBmOTkyNzhlNjQ5OWQwYjIx
MDZiN2QyZjJhNWEwNzJiNDdlYjlhN2MxLi45ZjFlYmM4ZmVkOTUyYmFmOTZmMGQ3ZjY1ZWY4ODQy
NTQ5M2E5MmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1
dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlv
blNlc3Npb24ubW0KQEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIFBvcFVwU09BdXRob3JpemF0aW9u
U2Vzc2lvbjo6aW5pdFNlY3JldFdlYlZpZXcoKQogICAgIFttX3NlY3JldFdlYlZpZXcgc2V0VUlE
ZWxlZ2F0ZTptX3NlY3JldERlbGVnYXRlLmdldCgpXTsKICAgICBbbV9zZWNyZXRXZWJWaWV3IHNl
dE5hdmlnYXRpb25EZWxlZ2F0ZTptX3NlY3JldERlbGVnYXRlLmdldCgpXTsKIAotICAgIG1fc2Vj
cmV0V2ViVmlldy0+X3BhZ2UtPnNldFNob3VsZFN1cHByZXNzU09BdXRob3JpemF0aW9uSW5BbGxO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oKTsKKyAgICBtX3NlY3JldFdlYlZpZXctPl9wYWdlLT5w
cmVmZXJlbmNlcygpLnNldEV4dGVuc2libGVTU09FbmFibGVkKGZhbHNlKTsKICAgICBXVEZMb2dB
bHdheXMoIlNlY3JldFdlYlZpZXcgaXMgY3JlYXRlZC4iKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMzdkNmJhNmJjYjYyODU1OGJlYTdhNWU4ZDlm
NDBkY2Q1NTBlMGUyZC4uMTA1MmM2MGYwYzBlNjcyYmQ1YTM3OGVhNWZlM2E4ZjRhYmJkZjZlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01NDMxLDcgKzU0
MzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgICAgICBtX3BvbGljeUNsaWVudC0+
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywgJmZyYW1lLCBXVEZNb3ZlKG5h
dmlnYXRpb25BY3Rpb24pLCBvcmlnaW5hdGluZ0ZyYW1lLCBvcmlnaW5hbFJlcXVlc3QsIFdURk1v
dmUocmVxdWVzdCksIFdURk1vdmUobGlzdGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVz
VG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAgICAgZWxzZSB7CiAjaWYgSEFW
RShBUFBfU1NPKQotICAgICAgICBpZiAobV9zaG91bGRTdXBwcmVzc1NPQXV0aG9yaXphdGlvbklu
TmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiB8fCBtX3Nob3VsZFN1cHByZXNzU09BdXRob3Jp
emF0aW9uSW5BbGxOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24pCisgICAgICAgIGlmIChtX3Nob3Vs
ZFN1cHByZXNzU09BdXRob3JpemF0aW9uSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uIHx8
ICFtX3ByZWZlcmVuY2VzLT5leHRlbnNpYmxlU1NPRW5hYmxlZCgpKQogICAgICAgICAgICAgbmF2
aWdhdGlvbkFjdGlvbi0+dW5zZXRTaG91bGRQZXJmb3JtU09BdXRob3JpemF0aW9uKCk7CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1ZDc0NGZlZWE1
ZDZlOWExZWRlMTUwYzRjNDBlNTE3YmQyNjU2NWE1Li43M2VhNmYwYzJjNTM4NGMxMzMxMmI4MDdl
OTNhNTM1OWEwNWVmZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMTc3OCw3ICsxNzc4LDYgQEAgcHVibGljOgogICAgIHZvaWQgd2ViVmlld0RpZE1vdmVUb1dp
bmRvdygpOwogCiAjaWYgSEFWRShBUFBfU1NPKQotICAgIHZvaWQgc2V0U2hvdWxkU3VwcHJlc3NT
T0F1dGhvcml6YXRpb25JbkFsbE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbigpIHsgbV9zaG91bGRT
dXBwcmVzc1NPQXV0aG9yaXphdGlvbkluQWxsTmF2aWdhdGlvblBvbGljeURlY2lzaW9uID0gdHJ1
ZTsgfQogICAgIHZvaWQgc2V0U2hvdWxkU3VwcHJlc3NTT0F1dGhvcml6YXRpb25Jbk5leHROYXZp
Z2F0aW9uUG9saWN5RGVjaXNpb24oKSB7IG1fc2hvdWxkU3VwcHJlc3NTT0F1dGhvcml6YXRpb25J
bk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSB0cnVlOyB9CiAgICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JTT0F1dGhvcml6YXRpb25Mb2FkKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU09BdXRob3JpemF0aW9uTG9hZFBvbGljeSk+JiYpOwogI2VuZGlmCkBAIC0yNzMy
LDcgKzI3MzEsNiBAQCBwcml2YXRlOgogCiAjaWYgSEFWRShBUFBfU1NPKQogICAgIGJvb2wgbV9z
aG91bGRTdXBwcmVzc1NPQXV0aG9yaXphdGlvbkluTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
biB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3Nob3VsZFN1cHByZXNzU09BdXRob3JpemF0aW9uSW5B
bGxOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24geyBmYWxzZSB9OwogI2VuZGlmCiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViV2hlZWxFdmVudENvYWxlc2Nlcj4gbV93aGVlbEV2ZW50Q29hbGVzY2Vy
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhi
ZWNkZTk4YjhjMGEyZTI0NjgyZTljOGI1NGU5YTFhODQ4Yjk1OTguLjg3ZWI1Yjg1NmJmNTQ3ODBk
MDFjNjAyMzVmNzIwOWI1ZmNiYTc3YzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0wNy0wNyAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEV4cG9zZSBBUEkg
dG8gb3B0IG91dCBvZiBFeHRlbnNpYmxlIFNTTyBhdXRoZW50aWNhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NzI5CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS83NTY0Nzg5Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSBuZXcgdGVzdCB0byBjb25maXJtIHRoYXQgRXh0ZW5zdGlibGUg
U1NPIGF1dGhlbnRpY2F0aW9uIGZsb3dzIGFyZSBieXBhc3NlZCB3aGVuIHRoZSBuZXcgV0tQcmVm
ZXJlbmNlCisgICAgICAgIGlzIHVzZWQuIFVwZGF0ZWQgb3RoZXIgdGVzdHMgdG8gY29uZmlybSB0
aGF0IHRoZSBTU08gZGVsZWdhdGUgaXMgY2FsbGVkIHdoZW4gZXhwZWN0ZWQuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Rlc3RTT0F1dGhvcml6YXRpb24ubW06
CisgICAgICAgICgtW1Rlc3RTT0F1dGhvcml6YXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpkZWNpZGVQ
b2xpY3lGb3JTT0F1dGhvcml6YXRpb25Mb2FkV2l0aEN1cnJlbnRQb2xpY3k6Zm9yRXh0ZW5zaW9u
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAocmVzZXRTdGF0ZSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMS0wNy0wNSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBu
b3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gSW5zdGFsbHMgaW4gd3JvbmcgZGly
ZWN0b3J5IG9uIHRoZSBib3RzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Rlc3RTT0F1dGhvcml6YXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Rlc3RTT0F1dGhvcml6YXRpb24ubW0KaW5kZXggMzMyNmQ1NzYy
NGJkYTAwYTg4MGFlMWNmMTAyNWVmZjMwY2UzZDhkOS4uYWNkNGE0YTcxZWQyZTI3ZWI3ZGQzM2U2
ZWJjNzRlNmRiMWJiZDFlNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9UZXN0U09BdXRob3JpemF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVGVzdFNPQXV0aG9yaXphdGlvbi5tbQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw2ICs0Nyw3IEBA
CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogc3RhdGljIGJvb2wgbmF2aWdhdGlv
bkNvbXBsZXRlZCA9IGZhbHNlOworc3RhdGljIGJvb2wgcG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVk
ID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBhdXRob3JpemF0aW9uUGVyZm9ybWVkID0gZmFsc2U7CiBz
dGF0aWMgYm9vbCBhdXRob3JpemF0aW9uQ2FuY2VsbGVkID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB1
aVNob3dlZCA9IGZhbHNlOwpAQCAtMTkzLDYgKzE5NCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBz
YW1sUmVzcG9uc2UgPQogewogICAgIEVYUEVDVF9FUShwb2xpY3ksIF9XS1NPQXV0aG9yaXphdGlv
bkxvYWRQb2xpY3lBbGxvdyk7CiAgICAgRVhQRUNUX1RSVUUoW2V4dGVuc2lvbiBpc0VxdWFsOkAi
VGVzdCJdKTsKKyAgICBwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQgPSB0cnVlOwogICAgIGlmICgh
c2VsZi5pc0FzeW5jRXhlY3V0aW9uKSB7CiAgICAgICAgIGlmIChzZWxmLmFsbG93U09BdXRob3Jp
emF0aW9uTG9hZCkKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHBvbGljeSk7CkBAIC0z
MjcsNiArMzI5LDcgQEAgc3RhdGljIGJvb2wgb3ZlcnJpZGVJc1VSTEZyb21BcHBsZU93bmVkRG9t
YWluKGlkLCBTRUwsIE5TVVJMICopCiBzdGF0aWMgdm9pZCByZXNldFN0YXRlKCkKIHsKICAgICBu
YXZpZ2F0aW9uQ29tcGxldGVkID0gZmFsc2U7CisgICAgcG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVk
ID0gZmFsc2U7CiAgICAgYXV0aG9yaXphdGlvblBlcmZvcm1lZCA9IGZhbHNlOwogICAgIGF1dGhv
cml6YXRpb25DYW5jZWxsZWQgPSBmYWxzZTsKICAgICB1aVNob3dlZCA9IGZhbHNlOwpAQCAtMzg0
LDYgKzM4NywzNCBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBOb0ludGVyY2VwdGlv
bnMpCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDp0ZXN0VVJMLmdldCgpXV07CiAgICAgVXRpbDo6cnVuKCZuYXZpZ2F0aW9uQ29tcGxldGVkKTsK
IAorICAgIEVYUEVDVF9GQUxTRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOworICAgIEVYUEVD
VF9XS19TVFJFUSh0ZXN0VVJMLmdldCgpLmFic29sdXRlU3RyaW5nLCBmaW5hbFVSTCk7Cit9CisK
K1RFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIERpc2FibGVTU08pCit7CisgICAgcmVzZXRT
dGF0ZSgpOworICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVS
TDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9y
bUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6
emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdh
dGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKKyAgICBJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0
dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlv
bldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNX
aXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKKworICAgIFJldGFpblB0cjxO
U1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJz
aW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0g
W2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdOworICAgIEVYUEVDVF9UUlVFKHByZWZlcmVuY2Vz
LmV4dGVuc2libGVTU09FbmFibGVkKTsKKworICAgIHByZWZlcmVuY2VzLmV4dGVuc2libGVTU09F
bmFibGVkID0gTk87CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbW1Rlc3RTT0F1dGhvcml6YXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGNvbmZp
Z3VyZVNPQXV0aG9yaXphdGlvbldlYlZpZXcod2ViVmlldy5nZXQoKSwgZGVsZWdhdGUuZ2V0KCks
IE9wZW5FeHRlcm5hbFNjaGVtZXNQb2xpY3k6OkFsbG93KTsKKworICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAg
IFV0aWw6OnJ1bigmbmF2aWdhdGlvbkNvbXBsZXRlZCk7CisKKyAgICBFWFBFQ1RfRkFMU0UocG9s
aWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEodGVzdFVSTC5nZXQo
KS5hYnNvbHV0ZVN0cmluZywgZmluYWxVUkwpOwogfQogCkBAIC00MDIsNiArNDMzLDcgQEAgVEVT
VChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uRXJyb3IpCiAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgp
XV07CiAgICAgVXRpbDo6cnVuKCZuYXZpZ2F0aW9uQ29tcGxldGVkKTsKIAorICAgIEVYUEVDVF9U
UlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKHRlc3RV
UkwuZ2V0KCkuYWJzb2x1dGVTdHJpbmcsIGZpbmFsVVJMKTsKIH0KIApAQCAtNDIyLDYgKzQ1NCw3
IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvbkRvTm90SGFuZGxl
KQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7
CiAgICAgY2hlY2tBdXRob3JpemF0aW9uT3B0aW9ucyhmYWxzZSwgIiIsIDApOworICAgIEVYUEVD
VF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICBbZ0RlbGVnYXRlIGF1dGhv
cml6YXRpb25EaWROb3RIYW5kbGU6Z0F1dGhvcml6YXRpb25dOwogICAgIFV0aWw6OnJ1bigmbmF2
aWdhdGlvbkNvbXBsZXRlZCk7CkBAIC00NDYsNiArNDc5LDcgQEAgVEVTVChTT0F1dGhvcml6YXRp
b25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uQ2FuY2VsKQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0aWw6
OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CiAgICAgY2hlY2tBdXRob3JpemF0aW9uT3B0
aW9ucyhmYWxzZSwgIiIsIDApOworICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZv
cm1lZCk7CiAKICAgICBbZ0RlbGVnYXRlIGF1dGhvcml6YXRpb25EaWRDYW5jZWw6Z0F1dGhvcml6
YXRpb25dOwogICAgIC8vIEZJWE1FOiBGaW5kIGEgZGVsZWdhdGUgbWV0aG9kIHRoYXQgY2FuIGRl
dGVjdCBsb2FkIGNhbmNlbHMuCkBAIC00NzAsNiArNTA0LDcgQEAgVEVTVChTT0F1dGhvcml6YXRp
b25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uQ29tcGxldGVXaXRob3V0RGF0YSkKICAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCld
XTsKICAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOwogICAgIGNoZWNrQXV0
aG9yaXphdGlvbk9wdGlvbnMoZmFsc2UsICIiLCAwKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lG
b3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAgW2dEZWxlZ2F0ZSBhdXRob3JpemF0aW9uRGlkQ29t
cGxldGU6Z0F1dGhvcml6YXRpb25dOwogICAgIFV0aWw6OnJ1bigmbmF2aWdhdGlvbkNvbXBsZXRl
ZCk7CkBAIC00OTQsNiArNTI5LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50
ZXJjZXB0aW9uVW5leHBlY3RlZENvbXBsZXRpb24pCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CiAgICAgVXRpbDo6
cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKICAgICBjaGVja0F1dGhvcml6YXRpb25PcHRp
b25zKGZhbHNlLCAiIiwgMCk7CisgICAgRVhQRUNUX1RSVUUocG9saWN5Rm9yQXBwU1NPUGVyZm9y
bWVkKTsKIAogICAgIFtnRGVsZWdhdGUgYXV0aG9yaXphdGlvbjpnQXV0aG9yaXphdGlvbiBkaWRD
b21wbGV0ZVdpdGhIVFRQQXV0aG9yaXphdGlvbkhlYWRlcnM6YWRvcHROUyhbW05TRGljdGlvbmFy
eSBhbGxvY10gaW5pdF0pLmdldCgpXTsKICAgICBVdGlsOjpydW4oJm5hdmlnYXRpb25Db21wbGV0
ZWQpOwpAQCAtNTE5LDYgKzU1NSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIElu
dGVyY2VwdGlvblN1Y2NlZWQxKQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmYXV0aG9y
aXphdGlvblBlcmZvcm1lZCk7CiAgICAgY2hlY2tBdXRob3JpemF0aW9uT3B0aW9ucyhmYWxzZSwg
IiIsIDApOworICAgIEVYUEVDVF9GQUxTRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOyAvLyBU
aGUgZGVsZWdhdGUgaXNuJ3QgcmVnaXN0ZXJlZCwgc28gdGhpcyB3b24ndCBiZSBzZXQuCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIEVYUEVDVF9UUlVFKGdBdXRob3JpemF0aW9uLmVuYWJsZUVtYmVk
ZGVkQXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKICNlbGlmIFBMQVRGT1JNKElPUykKQEAg
LTU2Myw2ICs2MDAsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRp
b25TdWNjZWVkMikKICNlbGlmIFBMQVRGT1JNKElPUykKICAgICBjaGVja0F1dGhvcml6YXRpb25P
cHRpb25zKHRydWUsICJudWxsIiwgMCk7CiAjZW5kaWYKKyAgICBFWFBFQ1RfRkFMU0UocG9saWN5
Rm9yQXBwU1NPUGVyZm9ybWVkKTsgLy8gVGhlIGRlbGVnYXRlIGlzbid0IHJlZ2lzdGVyZWQsIHNv
IHRoaXMgd29uJ3QgYmUgc2V0LgogCiAgICAgUmV0YWluUHRyPE5TVVJMPiByZWRpcmVjdFVSTCA9
IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsK
ICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDp0ZXN0VVJMIHN0YXR1c0NvZGU6MzAyIEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEi
IGhlYWRlckZpZWxkczpAeyBAIkxvY2F0aW9uIiA6IFtyZWRpcmVjdFVSTCBhYnNvbHV0ZVN0cmlu
Z10gfV0pOwpAQCAtNTk5LDYgKzYzNyw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3Qs
IEludGVyY2VwdGlvblN1Y2NlZWQzKQogI2VsaWYgUExBVEZPUk0oSU9TKQogICAgIGNoZWNrQXV0
aG9yaXphdGlvbk9wdGlvbnModHJ1ZSwgIm51bGwiLCAwKTsKICNlbmRpZgorICAgIEVYUEVDVF9U
UlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHJl
ZGlyZWN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBs
ZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdOwogICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9u
c2UgYWxsb2NdIGluaXRXaXRoVVJMOnRlc3RVUkwgc3RhdHVzQ29kZTozMDIgSFRUUFZlcnNpb246
QCJIVFRQLzEuMSIgaGVhZGVyRmllbGRzOkB7IEAiTG9jYXRpb24iIDogW3JlZGlyZWN0VVJMIGFi
c29sdXRlU3RyaW5nXSB9XSk7CkBAIC02MjcsNiArNjY2LDcgQEAgVEVTVChTT0F1dGhvcml6YXRp
b25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZDQpCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CiAgICAgVXRp
bDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKICAgICBjaGVja0F1dGhvcml6YXRpb25P
cHRpb25zKGZhbHNlLCAiIiwgMCk7CisgICAgRVhQRUNUX1RSVUUocG9saWN5Rm9yQXBwU1NPUGVy
Zm9ybWVkKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gcmVkaXJlY3RVUkwgPSBbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgYXV0byBy
ZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6
dGVzdFVSTC5nZXQoKSBzdGF0dXNDb2RlOjMwMiBIVFRQVmVyc2lvbjpAIkhUVFAvMS4xIiBoZWFk
ZXJGaWVsZHM6QHsgQCJMb2NhdGlvbiIgOiBbcmVkaXJlY3RVUkwgYWJzb2x1dGVTdHJpbmddIH1d
KTsKQEAgLTY1Niw2ICs2OTYsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRl
cmNlcHRpb25TdWNjZWVkV2l0aE90aGVySHR0cFN0YXR1c0NvZGUpCiAgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CiAg
ICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKICAgICBjaGVja0F1dGhvcml6
YXRpb25PcHRpb25zKGZhbHNlLCAiIiwgMCk7CisgICAgRVhQRUNUX1RSVUUocG9saWN5Rm9yQXBw
U1NPUGVyZm9ybWVkKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gcmVkaXJlY3RVUkwgPSBbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lv
bjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAg
YXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdp
dGhVUkw6dGVzdFVSTC5nZXQoKSBzdGF0dXNDb2RlOjQwMCBIVFRQVmVyc2lvbjpAIkhUVFAvMS4x
IiBoZWFkZXJGaWVsZHM6bmlsXSk7CkBAIC02ODEsNiArNzIyLDcgQEAgVEVTVChTT0F1dGhvcml6
YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZFdpdGhDb29raWUpCiAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgp
XV07CiAgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKICAgICBjaGVja0F1
dGhvcml6YXRpb25PcHRpb25zKGZhbHNlLCAiIiwgMCk7CisgICAgRVhQRUNUX1RSVUUocG9saWN5
Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gcmVkaXJlY3RVUkwg
PSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4
dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07
CiAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10g
aW5pdFdpdGhVUkw6dGVzdFVSTC5nZXQoKSBzdGF0dXNDb2RlOjMwMiBIVFRQVmVyc2lvbjpAIkhU
VFAvMS4xIiBoZWFkZXJGaWVsZHM6QHsgQCJTZXQtQ29va2llIiA6IEAic2Vzc2lvbmlkPTM4YWZl
czdhODsiLCBAIkxvY2F0aW9uIiA6IFtyZWRpcmVjdFVSTCBhYnNvbHV0ZVN0cmluZ10gfV0pOwpA
QCAtNzE3LDYgKzc1OSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2Vw
dGlvblN1Y2NlZWRXaXRoQ29va2llcykKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKICAgICBVdGlsOjpydW4oJmF1
dGhvcml6YXRpb25QZXJmb3JtZWQpOwogICAgIGNoZWNrQXV0aG9yaXphdGlvbk9wdGlvbnMoZmFs
c2UsICIiLCAwKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwog
CiAgICAgUmV0YWluUHRyPE5TVVJMPiByZWRpcmVjdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICBhdXRvIHJlc3BvbnNlID0g
YWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0ZXN0VVJMLmdl
dCgpIHN0YXR1c0NvZGU6MzAyIEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhlYWRlckZpZWxkczpA
eyBAIlNldC1Db29raWUiIDogQCJzZXNzaW9uaWQ9MzhhZmVzN2E4LCBxd2VydHk9MjE5ZmZ3ZWY5
dzBmLCBpZD1hM2ZXYTsiLCBAIkxvY2F0aW9uIiA6IFtyZWRpcmVjdFVSTCBhYnNvbHV0ZVN0cmlu
Z10gfV0pOwpAQCAtNzYyLDYgKzgwNSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3Qs
IEludGVyY2VwdGlvblN1Y2NlZWRXaXRoUmVkaXJlY3Rpb25BbmRDb29raWUpCiAjZWxpZiBQTEFU
Rk9STShJT1MpCiAgICAgY2hlY2tBdXRob3JpemF0aW9uT3B0aW9ucyh0cnVlLCAibnVsbCIsIDAp
OwogI2VuZGlmCisgICAgRVhQRUNUX1RSVUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAog
ICAgIFJldGFpblB0cjxOU1VSTD4gcmVkaXJlY3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgYXV0byByZXNwb25zZSA9IGFk
b3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGVzdFVSTCBzdGF0
dXNDb2RlOjMwMiBIVFRQVmVyc2lvbjpAIkhUVFAvMS4xIiBoZWFkZXJGaWVsZHM6QHsgQCJTZXQt
Q29va2llIiA6IEAic2Vzc2lvbmlkPTM4YWZlczdhODsiLCBAIkxvY2F0aW9uIiA6IFtyZWRpcmVj
dFVSTCBhYnNvbHV0ZVN0cmluZ10gfV0pOwpAQCAtNzk0LDYgKzgzOCw3IEBAIFRFU1QoU09BdXRo
b3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvblN1Y2NlZWRXaXRoRGlmZmVyZW50T3JpZ2lu
KQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7
CiAgICAgY2hlY2tBdXRob3JpemF0aW9uT3B0aW9ucyhmYWxzZSwgIiIsIDApOworICAgIEVYUEVD
VF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICBhdXRvIHJlZGlyZWN0VVJM
ID0gVVJMKFVSTCgpLCAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iKTsKICAgICBhdXRvIHJlc3Bv
bnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpyZWRp
cmVjdFVSTCBzdGF0dXNDb2RlOjMwMiBIVFRQVmVyc2lvbjpAIkhUVFAvMS4xIiBoZWFkZXJGaWVs
ZHM6QHsgQCJMb2NhdGlvbiIgOiByZWRpcmVjdFVSTC5zdHJpbmcoKSB9XSk7CkBAIC04MjAsMTIg
Kzg2NSwxNCBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNj
ZWVkV2l0aFdhaXRpbmdTZXNzaW9uKQogICAgIFt3ZWJWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXdd
OwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmbmF2aWdhdGlvblBvbGljeURlY2lkZWQp
OworICAgIEVYUEVDVF9GQUxTRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogICAgIEVYUEVD
VF9GQUxTRShhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKIAogICAgIC8vIFNob3VsZCBhY3RpdmF0
ZSB0aGUgc2Vzc2lvbi4KICAgICBbd2ViVmlldyBhZGRUb1Rlc3RXaW5kb3ddOwogICAgIFV0aWw6
OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CiAgICAgY2hlY2tBdXRob3JpemF0aW9uT3B0
aW9ucyhmYWxzZSwgIiIsIDApOworICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZv
cm1lZCk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHJlZGlyZWN0VVJMID0gW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246QCJodG1s
IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAgIGF1dG8gcmVz
cG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRl
c3RVUkwuZ2V0KCkgc3RhdHVzQ29kZTozMDIgSFRUUFZlcnNpb246QCJIVFRQLzEuMSIgaGVhZGVy
RmllbGRzOkB7IEAiTG9jYXRpb24iIDogW3JlZGlyZWN0VVJMIGFic29sdXRlU3RyaW5nXSB9XSk7
CkBAIC04NTcsNiArOTA0LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJj
ZXB0aW9uQWJvcnRlZFdpdGhXYWl0aW5nU2Vzc2lvbikKICAgICBbd2ViVmlldyByZW1vdmVGcm9t
U3VwZXJ2aWV3XTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOnRlc3RVUkwxLmdldCgpXV07CiAgICAgVXRpbDo6cnVuKCZuYXZpZ2F0aW9uUG9s
aWN5RGVjaWRlZCk7CisgICAgRVhQRUNUX0ZBTFNFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7
CiAgICAgRVhQRUNUX0ZBTFNFKGF1dGhvcml6YXRpb25QZXJmb3JtZWQpOwogCiAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMMi5nZXQo
KV1dOwpAQCAtODY1LDYgKzkxMyw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIElu
dGVyY2VwdGlvbkFib3J0ZWRXaXRoV2FpdGluZ1Nlc3Npb24pCiAKICAgICAvLyBUaGUgd2FpdGlu
ZyBzZXNzaW9uIHNob3VsZCBiZSBhYm9ydGVkIGFzIHRoZSBwcmV2aW91cyBuYXZpZ2F0aW9uIGlz
IG92ZXJ3cml0dGVuIGJ5IGEgbmV3IG5hdmlnYXRpb24uCiAgICAgVXRpbDo6cnVuKCZuYXZpZ2F0
aW9uQ29tcGxldGVkKTsKKyAgICBFWFBFQ1RfRkFMU0UocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVk
KTsKICAgICBFWFBFQ1RfRkFMU0UoYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CiB9CiAKQEAgLTg4
NSw2ICs5MzQsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25T
dWNjZWVkV2l0aEFjdGl2ZVNlc3Npb25EaWRNb3ZlV2luZG93KQogICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAg
IFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CiAgICAgY2hlY2tBdXRob3JpemF0
aW9uT3B0aW9ucyhmYWxzZSwgIiIsIDApOworICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNT
T1BlcmZvcm1lZCk7CiAKICAgICAvLyBTaG91bGQgYmUgYSBubyBvcC4KICAgICBbd2ViVmlldyBh
ZGRUb1Rlc3RXaW5kb3ddOwpAQCAtOTE2LDkgKzk2NiwxMSBAQCBURVNUKFNPQXV0aG9yaXphdGlv
blJlZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkVHdpY2UpCiAKICAgICBmb3IgKGludCBpID0g
MDsgaSA8IDI7IGkrKykgewogICAgICAgICBhdXRob3JpemF0aW9uUGVyZm9ybWVkID0gZmFsc2U7
CisgICAgICAgIHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCA9IGZhbHNlOwogICAgICAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0
KCldXTsKICAgICAgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKICAgICAg
ICAgY2hlY2tBdXRob3JpemF0aW9uT3B0aW9ucyhmYWxzZSwgIiIsIDApOworICAgICAgICBFWFBF
Q1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAgICAgIG5hdmlnYXRpb25D
b21wbGV0ZWQgPSBmYWxzZTsKICAgICAgICAgUmV0YWluUHRyPE5TVVJMPiByZWRpcmVjdFVSTCA9
IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsK
QEAgLTk1MSwxMyArMTAwMywxNiBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRl
cmNlcHRpb25TdWNjZWVkU3VwcHJlc3NBY3RpdmVTZXNzaW9uKQogICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAg
IFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CiAgICAgY2hlY2tBdXRob3JpemF0
aW9uT3B0aW9ucyhmYWxzZSwgIiIsIDApOworICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNT
T1BlcmZvcm1lZCk7CiAKICAgICAvLyBTdXBwcmVzcyB0aGUgbGFzdCBhY3RpdmUgc2Vzc2lvbi4K
ICAgICBhdXRob3JpemF0aW9uUGVyZm9ybWVkID0gZmFsc2U7CisgICAgcG9saWN5Rm9yQXBwU1NP
UGVyZm9ybWVkID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CiAgICAgVXRpbDo6cnVuKCZhdXRob3Jp
emF0aW9uQ2FuY2VsbGVkKTsKICAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQp
OwogICAgIGNoZWNrQXV0aG9yaXphdGlvbk9wdGlvbnMoZmFsc2UsICIiLCAwKTsKKyAgICBFWFBF
Q1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAgUmV0YWluUHRyPE5TVVJM
PiByZWRpcmVjdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJz
aW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQ
SS5yZXNvdXJjZXMiXTsKICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJl
c3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0ZXN0VVJMLmdldCgpIHN0YXR1c0NvZGU6MzAyIEhU
VFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhlYWRlckZpZWxkczpAeyBAIkxvY2F0aW9uIiA6IFtyZWRp
cmVjdFVSTCBhYnNvbHV0ZVN0cmluZ10gfV0pOwpAQCAtOTg5LDE3ICsxMDQ0LDIwIEBAIFRFU1Qo
U09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvblN1Y2NlZWRTdXBwcmVzc1dhaXRp
bmdTZXNzaW9uKQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmbmF2aWdhdGlvblBvbGlj
eURlY2lkZWQpOwogICAgIEVYUEVDVF9GQUxTRShhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKKyAg
ICBFWFBFQ1RfRkFMU0UocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIC8vIFN1cHBy
ZXNzIHRoZSBsYXN0IHdhaXRpbmcgc2Vzc2lvbi4KICAgICBuYXZpZ2F0aW9uUG9saWN5RGVjaWRl
ZCA9IGZhbHNlOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmbmF2aWdhdGlvblBvbGlj
eURlY2lkZWQpOwogICAgIEVYUEVDVF9GQUxTRShhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKKyAg
ICBFWFBFQ1RfRkFMU0UocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIC8vIEFjdGl2
YXRlIHRoZSBsYXN0IHNlc3Npb24uCiAgICAgW3dlYlZpZXcgYWRkVG9UZXN0V2luZG93XTsKICAg
ICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOwogICAgIGNoZWNrQXV0aG9yaXph
dGlvbk9wdGlvbnMoZmFsc2UsICIiLCAwKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBT
U09QZXJmb3JtZWQpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiByZWRpcmVjdFVSTCA9IFtbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9u
OkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICBh
dXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0
aFVSTDp0ZXN0VVJMLmdldCgpIHN0YXR1c0NvZGU6MzAyIEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEi
IGhlYWRlckZpZWxkczpAeyBAIkxvY2F0aW9uIiA6IFtyZWRpcmVjdFVSTCBhYnNvbHV0ZVN0cmlu
Z10gfV0pOwpAQCAtMTAzNCw2ICsxMDkyLDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVj
dCwgSW50ZXJjZXB0aW9uU3VjY2VlZFNBTUwpCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVx
dWVzdC5nZXQoKV07CiAgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKICAg
ICBjaGVja0F1dGhvcml6YXRpb25PcHRpb25zKGZhbHNlLCAiIiwgMCk7CisgICAgRVhQRUNUX1RS
VUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIC8vIFBhc3MgYSBIVFRQIDIwMCBy
ZXNwb25zZSB3aXRoIGEgaHRtbCB0byBtaW1pYyBhIFNBTUwgcmVzcG9uc2UuCiAgICAgYXV0byBy
ZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6
dGVzdFVSTC5nZXQoKSBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjpAIkhUVFAvMS4xIiBoZWFk
ZXJGaWVsZHM6bmlsXSk7CkBAIC0xMDYyLDYgKzExMjEsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlv
blJlZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkU0FNTFdpdGhQU09OKQogICAgIC8vIFBTT046
IGZpbGU6Ly8vID0+IGV4YW1wbGUuY29tCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDooTlNVUkwgKil0ZXN0VVJMXV07CiAgICAgVXRpbDo6cnVu
KCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBT
U09QZXJmb3JtZWQpOwogCiAgICAgbmF2aWdhdGlvbkNvbXBsZXRlZCA9IGZhbHNlOwogICAgIC8v
IFBhc3MgYSBIVFRQIDIwMCByZXNwb25zZSB3aXRoIGEgaHRtbCB0byBtaW1pYyBhIFNBTUwgcmVz
cG9uc2UuCkBAIC0xMDcxLDggKzExMzEsMTAgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVj
dCwgSW50ZXJjZXB0aW9uU3VjY2VlZFNBTUxXaXRoUFNPTikKIAogICAgIGF1dGhvcml6YXRpb25Q
ZXJmb3JtZWQgPSBmYWxzZTsKICAgICBuYXZpZ2F0aW9uUG9saWN5RGVjaWRlZCA9IGZhbHNlOwor
ICAgIHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCA9IGZhbHNlOwogICAgIFt3ZWJWaWV3IF9ldmFs
dWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1cmU6QCJsb2NhdGlvbiA9ICdodHRwOi8vd3d3
LmV4YW1wbGUuY29tJyIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKICAgICBVdGlsOjpydW4oJm5h
dmlnYXRpb25Qb2xpY3lEZWNpZGVkKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09Q
ZXJmb3JtZWQpOwogfQogCiBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBBdXRob3JpemF0
aW9uT3B0aW9ucykKQEAgLTEwOTQsNiArMTE1Niw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVk
aXJlY3QsIEF1dGhvcml6YXRpb25PcHRpb25zKQogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNj
cmlwdDogQCJsb2NhdGlvbiA9ICdodHRwOi8vd3d3LmV4YW1wbGUuY29tJyIgY29tcGxldGlvbkhh
bmRsZXI6bmlsXTsKICAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOwogICAg
IGNoZWNrQXV0aG9yaXphdGlvbk9wdGlvbnModHJ1ZSwgImh0dHA6Ly93d3cud2Via2l0Lm9yZyIs
IDApOworICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiB9CiAKIFRF
U1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvbkRpZE5vdEhhbmRsZVR3aWNl
KQpAQCAtMTExMiw2ICsxMTc1LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50
ZXJjZXB0aW9uRGlkTm90SGFuZGxlVHdpY2UpCiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKICAgICBVdGlsOjpy
dW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOworICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFw
cFNTT1BlcmZvcm1lZCk7CiAKICAgICAvLyBUZXN0IHBhc3NlcyBpZiBubyBjcmFzaGVzLgogICAg
IFtnRGVsZWdhdGUgYXV0aG9yaXphdGlvbkRpZE5vdEhhbmRsZTpnQXV0aG9yaXphdGlvbl07CkBA
IC0xMTM0LDYgKzExOTgsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNl
cHRpb25Db21wbGV0ZVR3aWNlKQogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CiAgICAgVXRpbDo6cnVuKCZhdXRo
b3JpemF0aW9uUGVyZm9ybWVkKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJm
b3JtZWQpOwogCiAgICAgLy8gVGVzdCBwYXNzZXMgaWYgbm8gY3Jhc2hlcy4KICAgICBSZXRhaW5Q
dHI8TlNVUkw+IHJlZGlyZWN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0
V2ViS2l0QVBJLnJlc291cmNlcyJdOwpAQCAtMTE1OCw2ICsxMjIzLDcgQEAgVEVTVChTT0F1dGhv
cml6YXRpb25SZWRpcmVjdCwgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeUlnbm9yZSkKICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwu
Z2V0KCldXTsKICAgICBVdGlsOjpydW4oJm5hdmlnYXRpb25Db21wbGV0ZWQpOwogCisgICAgRVhQ
RUNUX1RSVUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEo
dGVzdFVSTC5nZXQoKS5hYnNvbHV0ZVN0cmluZywgZmluYWxVUkwpOwogfQogCkBAIC0xMTc4LDYg
KzEyNDQsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBTT0F1dGhvcml6YXRpb25M
b2FkUG9saWN5QWxsb3dBc3luYykKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKICAgICBVdGlsOjpydW4oJmF1dGhv
cml6YXRpb25QZXJmb3JtZWQpOwogICAgIGNoZWNrQXV0aG9yaXphdGlvbk9wdGlvbnMoZmFsc2Us
ICIiLCAwKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogCiAg
ICAgUmV0YWluUHRyPE5TVVJMPiByZWRpcmVjdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICBhdXRvIHJlc3BvbnNlID0gYWRv
cHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0ZXN0VVJMLmdldCgp
IHN0YXR1c0NvZGU6MzAyIEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhlYWRlckZpZWxkczpAeyBA
IkxvY2F0aW9uIiA6IFtyZWRpcmVjdFVSTCBhYnNvbHV0ZVN0cmluZ10gfV0pOwpAQCAtMTIwNyw2
ICsxMjc0LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgU09BdXRob3JpemF0aW9u
TG9hZFBvbGljeUlnbm9yZUFzeW5jKQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmbmF2
aWdhdGlvbkNvbXBsZXRlZCk7CiAKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJm
b3JtZWQpOwogICAgIEVYUEVDVF9XS19TVFJFUSh0ZXN0VVJMLmdldCgpLmFic29sdXRlU3RyaW5n
LCBmaW5hbFVSTCk7CiB9CiAKQEAgLTEyMjksNiArMTI5Nyw3IEBAIFRFU1QoU09BdXRob3JpemF0
aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvblN1Y2NlZWRXaXRoVUkpCiAKICAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsK
ICAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOworICAgIEVYUEVDVF9UUlVF
KHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICBhdXRvIHZpZXdDb250cm9sbGVyID0g
YWRvcHROUyhbW1Rlc3RTT0F1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0p
OwogICAgIGF1dG8gdmlldyA9IGFkb3B0TlMoW1tOU1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNaZXJvUmVjdF0pOwpAQCAtMTI2Myw2ICsxMzMyLDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25S
ZWRpcmVjdCwgSW50ZXJjZXB0aW9uQ2FuY2VsV2l0aFVJKQogCiAgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CiAgICAg
VXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xp
Y3lGb3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAgYXV0byB2aWV3Q29udHJvbGxlciA9IGFkb3B0
TlMoW1tUZXN0U09BdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKICAg
ICBhdXRvIHZpZXcgPSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVy
b1JlY3RdKTsKQEAgLTEyOTYsNiArMTM2Niw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJl
Y3QsIEludGVyY2VwdGlvbkVycm9yV2l0aFVJKQogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CiAgICAgVXRpbDo6
cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JB
cHBTU09QZXJmb3JtZWQpOwogCiAgICAgYXV0byB2aWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tU
ZXN0U09BdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKICAgICBhdXRv
IHZpZXcgPSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3Rd
KTsKQEAgLTEzMjksNiArMTQwMCw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIElu
dGVyY2VwdGlvblN1Y2NlZWRTdXBwcmVzc0FjdGl2ZVNlc3Npb25XaXRoVUkpCiAKICAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0
KCldXTsKICAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOworICAgIEVYUEVD
VF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICBhdXRvIHZpZXdDb250cm9s
bGVyID0gYWRvcHROUyhbW1Rlc3RTT0F1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBhbGxvY10g
aW5pdF0pOwogICAgIGF1dG8gdmlldyA9IGFkb3B0TlMoW1tOU1ZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNaZXJvUmVjdF0pOwpAQCAtMTM0Myw2ICsxNDE1LDcgQEAgVEVTVChTT0F1dGhvcml6
YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZFN1cHByZXNzQWN0aXZlU2Vzc2lvbldp
dGhVSSkKICAgICBhdXRob3JpemF0aW9uUGVyZm9ybWVkID0gZmFsc2U7CiAgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07
CiAgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uQ2FuY2VsbGVkKTsKKyAgICBFWFBFQ1RfVFJV
RShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlv
blBlcmZvcm1lZCk7CiAgICAgRVhQRUNUX0ZBTFNFKHVpU2hvd2VkKTsKIApAQCAtMTM2OSw2ICsx
NDQyLDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgU2hvd1VJVHdpY2UpCiAKICAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RV
UkwuZ2V0KCldXTsKICAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOworICAg
IEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICBhdXRvIHZpZXdD
b250cm9sbGVyID0gYWRvcHROUyhbW1Rlc3RTT0F1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBh
bGxvY10gaW5pdF0pOwogICAgIGF1dG8gdmlldyA9IGFkb3B0TlMoW1tOU1ZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0pOwpAQCAtMTQwNyw2ICsxNDgxLDcgQEAgVEVTVChTT0F1
dGhvcml6YXRpb25SZWRpcmVjdCwgTlNOb3RpZmljYXRpb25DZW50ZXIpCiAKICAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCld
XTsKICAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOworICAgIEVYUEVDVF9U
UlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICBhdXRvIHZpZXdDb250cm9sbGVy
ID0gYWRvcHROUyhbW1Rlc3RTT0F1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBhbGxvY10gaW5p
dF0pOwogICAgIGF1dG8gdmlldyA9IGFkb3B0TlMoW1tOU1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNaZXJvUmVjdF0pOwpAQCAtMTQzOSw2ICsxNTE0LDcgQEAgVEVTVChTT0F1dGhvcml6YXRp
b25SZWRpcmVjdCwgRGlzbWlzc1VJRHVyaW5nTWluaWF0dXJpemF0aW9uKQogCiAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgp
XV07CiAgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKKyAgICBFWFBFQ1Rf
VFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAgYXV0byB2aWV3Q29udHJvbGxl
ciA9IGFkb3B0TlMoW1tUZXN0U09BdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgYWxsb2NdIGlu
aXRdKTsKICAgICBhdXRvIHZpZXcgPSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TWmVyb1JlY3RdKTsKQEAgLTE0ODEsNiArMTU1Nyw3IEBAIFRFU1QoU09BdXRob3JpemF0
aW9uUmVkaXJlY3QsIERpc21pc3NVSUR1cmluZ0hpZGluZykKIAogICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAg
IFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CisgICAgRVhQRUNUX1RSVUUocG9s
aWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIGF1dG8gdmlld0NvbnRyb2xsZXIgPSBhZG9w
dE5TKFtbVGVzdFNPQXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7CiAg
ICAgYXV0byB2aWV3ID0gYWRvcHROUyhbW05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1pl
cm9SZWN0XSk7CkBAIC0xNTIzLDYgKzE2MDAsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGly
ZWN0LCBEaXNtaXNzVUlEdXJpbmdNaW5pYXR1cml6YXRpb25UaGVuQW5vdGhlcikKIAogICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5n
ZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CisgICAgRVhQ
RUNUX1RSVUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIGF1dG8gdmlld0NvbnRy
b2xsZXIxID0gYWRvcHROUyhbW1Rlc3RTT0F1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBhbGxv
Y10gaW5pdF0pOwogICAgIGF1dG8gdmlldzEgPSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsKQEAgLTE1NDYsOCArMTYyNCwxMCBAQCBURVNUKFNPQXV0
aG9yaXphdGlvblJlZGlyZWN0LCBEaXNtaXNzVUlEdXJpbmdNaW5pYXR1cml6YXRpb25UaGVuQW5v
dGhlcikKIAogICAgIC8vIExvYWQgYW5vdGhlciBBcHBTU08gcmVxdWVzdC4KICAgICBhdXRob3Jp
emF0aW9uUGVyZm9ybWVkID0gZmFsc2U7CisgICAgcG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkID0g
ZmFsc2U7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDp0ZXN0VVJMLmdldCgpXV07CiAgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9y
bWVkKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAg
Ly8gVUkgaXMgb25seSBkaW1pc3NlZCBhZnRlciB0aGUgaG9zdEFwcCBpcyB1bmhpZGRlbi4KICAg
ICBbaG9zdFdpbmRvdyBkZW1pbmlhdHVyaXplOmhvc3RXaW5kb3ddOwpAQCAtMTU3MCw2ICsxNjUw
LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgRGlzbWlzc1VJRHVyaW5nSGlkaW5n
VGhlbkFub3RoZXIpCiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKICAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRp
b25QZXJmb3JtZWQpOworICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7
CiAKICAgICBhdXRvIHZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1Rlc3RTT0F1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gdmlldyA9IGFkb3B0TlMo
W1tOU1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0pOwpAQCAtMTU5Myw4ICsx
Njc0LDEwIEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIERpc21pc3NVSUR1cmluZ0hp
ZGluZ1RoZW5Bbm90aGVyKQogCiAgICAgLy8gTG9hZCBhbm90aGVyIEFwcFNTTyByZXF1ZXN0Lgog
ICAgIGF1dGhvcml6YXRpb25QZXJmb3JtZWQgPSBmYWxzZTsKKyAgICBwb2xpY3lGb3JBcHBTU09Q
ZXJmb3JtZWQgPSBmYWxzZTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKICAgICBVdGlsOjpydW4oJmF1dGhvcml6
YXRpb25QZXJmb3JtZWQpOworICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1l
ZCk7CiAKICAgICAvLyBVSSBpcyBvbmx5IGRpbWlzc2VkIGFmdGVyIHRoZSBob3N0QXBwIGlzIHVu
aGlkZGVuLgogICAgIFtOU0FwcCB1bmhpZGU6TlNBcHBdOwpAQCAtMTYyNSw2ICsxNzA4LDcgQEAg
VEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgTm9JbnRlcmNlcHRpb25zKQogI2VuZGlmCiAgICAg
VXRpbDo6cnVuKCZuZXdXaW5kb3dDcmVhdGVkKTsKICAgICBVdGlsOjpydW4oJm5hdmlnYXRpb25D
b21wbGV0ZWQpOworICAgIEVYUEVDVF9GQUxTRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwog
ICAgIEVYUEVDVF9XS19TVFJFUSh0ZXN0VVJMLmdldCgpLmFic29sdXRlU3RyaW5nLCBmaW5hbFVS
TCk7CiB9CiAKQEAgLTE2NTMsNiArMTczNyw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUG9wVXAs
IE5vSW50ZXJjZXB0aW9uc1N1YkZyYW1lKQogICAgIC8vIFRoZSBuZXcgd2luZG93IHdpbGwgbm90
IG5hdmlnYXRlIHRvIHRoZSB0ZXN0VVJMIGFzIHRoZSBpZnJhbWUgaGFzIHVuaXF1ZSBvcmlnaW4u
CiAgICAgW3dlYlZpZXcgc2VuZENsaWNrc0F0UG9pbnQ6TlNNYWtlUG9pbnQoMjAwLCAyMDApIG51
bWJlck9mQ2xpY2tzOjFdOwogICAgIFV0aWw6OnJ1bigmbmV3V2luZG93Q3JlYXRlZCk7CisgICAg
RVhQRUNUX0ZBTFNFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAgICAgRVhQRUNUX0ZBTFNF
KGF1dGhvcml6YXRpb25QZXJmb3JtZWQpOwogfQogI2VuZGlmCkBAIC0xNjc2LDYgKzE3NjEsNyBA
QCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBOb0ludGVyY2VwdGlvbnNXaXRob3V0VXNlckdl
c3R1cmUpCiAgICAgW3dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVy
ZTogQCJ3aW5kb3cub3BlbignaHR0cDovL3d3dy5leGFtcGxlLmNvbScpIiBjb21wbGV0aW9uSGFu
ZGxlcjpuaWxdOwogICAgIFV0aWw6OnJ1bigmbmV3V2luZG93Q3JlYXRlZCk7CiAgICAgRVhQRUNU
X0ZBTFNFKGF1dGhvcml6YXRpb25QZXJmb3JtZWQpOworICAgIEVYUEVDVF9GQUxTRShwb2xpY3lG
b3JBcHBTU09QZXJmb3JtZWQpOwogfQogCiBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBJbnRl
cmNlcHRpb25FcnJvcikKQEAgLTE3MDUsMTQgKzE3OTEsMTcgQEAgVEVTVChTT0F1dGhvcml6YXRp
b25Qb3BVcCwgSW50ZXJjZXB0aW9uRXJyb3IpCiAjZW5kaWYKICAgICBVdGlsOjpydW4oJmF1dGhv
cml6YXRpb25QZXJmb3JtZWQpOwogICAgIGNoZWNrQXV0aG9yaXphdGlvbk9wdGlvbnModHJ1ZSwg
ImZpbGU6Ly8iLCAxKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQp
OwogCiAgICAgYXV0aG9yaXphdGlvblBlcmZvcm1lZCA9IGZhbHNlOwogICAgIG5hdmlnYXRpb25D
b21wbGV0ZWQgPSBmYWxzZTsKKyAgICBwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQgPSBmYWxzZTsK
ICAgICBbZ0RlbGVnYXRlIGF1dGhvcml6YXRpb246Z0F1dGhvcml6YXRpb24gZGlkQ29tcGxldGVX
aXRoRXJyb3I6YWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOk5TQ29jb2FF
cnJvckRvbWFpbiBjb2RlOjAgdXNlckluZm86bmlsXSkuZ2V0KCldOwogICAgIFV0aWw6OnJ1bigm
bmV3V2luZG93Q3JlYXRlZCk7CiAgICAgVXRpbDo6cnVuKCZuYXZpZ2F0aW9uQ29tcGxldGVkKTsK
ICAgICBFWFBFQ1RfV0tfU1RSRVEodGVzdFVSTC5nZXQoKS5hYnNvbHV0ZVN0cmluZywgZmluYWxV
UkwpOwogICAgIEVYUEVDVF9GQUxTRShhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsgLy8gRG9uJ3Qg
aW50ZXJjZXB0IHRoZSBmaXJzdCBuYXZpZ2F0aW9uIGluIHRoZSBuZXcgd2luZG93LgorICAgIEVY
UEVDVF9GQUxTRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogfQogCiBURVNUKFNPQXV0aG9y
aXphdGlvblBvcFVwLCBJbnRlcmNlcHRpb25DYW5jZWwpCkBAIC0xNzQxLDYgKzE4MzAsNyBAQCBU
RVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBJbnRlcmNlcHRpb25DYW5jZWwpCiAjZW5kaWYKICAg
ICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOwogICAgIGNoZWNrQXV0aG9yaXph
dGlvbk9wdGlvbnModHJ1ZSwgImZpbGU6Ly8iLCAxKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lG
b3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAgLy8gVGhlIHNlY3JldCBXS1dlYlZpZXcgbmVlZHMg
dG8gYmUgZGVzdHJveWVkIHJpZ2h0IHRoZSB3YXkuCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CkBA
IC0xNzc1LDYgKzE4NjUsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBJbnRlcmNlcHRp
b25TdWNjZWVkQ2xvc2VCeUl0c2VsZikKICNlbmRpZgogICAgIFV0aWw6OnJ1bigmYXV0aG9yaXph
dGlvblBlcmZvcm1lZCk7CiAgICAgY2hlY2tBdXRob3JpemF0aW9uT3B0aW9ucyh0cnVlLCAiZmls
ZTovLyIsIDEpOworICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAK
ICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDp0ZXN0VVJMIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEi
IGhlYWRlckZpZWxkczpuaWxdKTsKICAgICBhdXRvIHJlc29uc2VIdG1sQ1N0cmluZyA9IGdlbmVy
YXRlSHRtbChuZXdXaW5kb3dSZXNwb25zZVRlbXBsYXRlLCAid2luZG93LmNsb3NlKCk7IikudXRm
OCgpOyAvLyBUaGUgcG9wIHVwIGNsb3NlcyBpdHNlbGYuCkBAIC0xODEyLDYgKzE5MDMsNyBAQCBU
RVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBJbnRlcmNlcHRpb25TdWNjZWVkQ2xvc2VCeVBhcmVu
dCkKICNlbmRpZgogICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CiAgICAg
Y2hlY2tBdXRob3JpemF0aW9uT3B0aW9ucyh0cnVlLCAiZmlsZTovLyIsIDEpOworICAgIEVYUEVD
VF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICBhdXRvIHJlc3BvbnNlID0g
YWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0ZXN0VVJMIHN0
YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhlYWRlckZpZWxkczpuaWxdKTsK
ICAgICBhdXRvIHJlc29uc2VIdG1sQ1N0cmluZyA9IGdlbmVyYXRlSHRtbChuZXdXaW5kb3dSZXNw
b25zZVRlbXBsYXRlLCAiIikudXRmOCgpOwpAQCAtMTg0OSw2ICsxOTQxLDcgQEAgVEVTVChTT0F1
dGhvcml6YXRpb25Qb3BVcCwgSW50ZXJjZXB0aW9uU3VjY2VlZENsb3NlQnlXZWJLaXQpCiAjZW5k
aWYKICAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOwogICAgIGNoZWNrQXV0
aG9yaXphdGlvbk9wdGlvbnModHJ1ZSwgImZpbGU6Ly8iLCAxKTsKKyAgICBFWFBFQ1RfVFJVRShw
b2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMo
W1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGVzdFVSTCBzdGF0dXNDb2Rl
OjIwMCBIVFRQVmVyc2lvbjpAIkhUVFAvMS4xIiBoZWFkZXJGaWVsZHM6bmlsXSk7CiAgICAgYXV0
byByZXNvbnNlSHRtbENTdHJpbmcgPSBnZW5lcmF0ZUh0bWwobmV3V2luZG93UmVzcG9uc2VUZW1w
bGF0ZSwgIiIpLnV0ZjgoKTsKQEAgLTE4ODcsMTAgKzE5ODAsMTIgQEAgVEVTVChTT0F1dGhvcml6
YXRpb25Qb3BVcCwgSW50ZXJjZXB0aW9uU3VjY2VlZFdpdGhPdGhlckh0dHBTdGF0dXNDb2RlKQog
I2VuZGlmCiAgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKICAgICBjaGVj
a0F1dGhvcml6YXRpb25PcHRpb25zKHRydWUsICJmaWxlOi8vIiwgMSk7CisgICAgRVhQRUNUX1RS
VUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIC8vIFdpbGwgZmFsbGJhY2sgdG8g
d2ViIHBhdGguCiAgICAgbmF2aWdhdGlvbkNvbXBsZXRlZCA9IGZhbHNlOwogICAgIGF1dGhvcml6
YXRpb25QZXJmb3JtZWQgPSBmYWxzZTsKKyAgICBwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQgPSBm
YWxzZTsKICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFs
bG9jXSBpbml0V2l0aFVSTDp0ZXN0VVJMLmdldCgpIHN0YXR1c0NvZGU6NDAwIEhUVFBWZXJzaW9u
OkAiSFRUUC8xLjEiIGhlYWRlckZpZWxkczpuaWxdKTsKICAgICBhdXRvIHJlc29uc2VIdG1sQ1N0
cmluZyA9IGdlbmVyYXRlSHRtbChuZXdXaW5kb3dSZXNwb25zZVRlbXBsYXRlLCAiIikudXRmOCgp
OwogICAgIFtnRGVsZWdhdGUgYXV0aG9yaXphdGlvbjpnQXV0aG9yaXphdGlvbiBkaWRDb21wbGV0
ZVdpdGhIVFRQUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCkgaHR0cEJvZHk6YWRvcHROUyhbW05TRGF0
YSBhbGxvY10gaW5pdFdpdGhCeXRlczpyZXNvbnNlSHRtbENTdHJpbmcuZGF0YSgpIGxlbmd0aDpy
ZXNvbnNlSHRtbENTdHJpbmcubGVuZ3RoKCldKS5nZXQoKV07CkBAIC0xODk4LDYgKzE5OTMsNyBA
QCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBJbnRlcmNlcHRpb25TdWNjZWVkV2l0aE90aGVy
SHR0cFN0YXR1c0NvZGUpCiAgICAgVXRpbDo6cnVuKCZuYXZpZ2F0aW9uQ29tcGxldGVkKTsKICAg
ICBFWFBFQ1RfV0tfU1RSRVEodGVzdFVSTC5nZXQoKS5hYnNvbHV0ZVN0cmluZywgZmluYWxVUkwp
OwogICAgIEVYUEVDVF9GQUxTRShhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKKyAgICBFWFBFQ1Rf
RkFMU0UocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIH0KIAogLy8gU2V0dGluZyBjb29raWUg
aXMgZW5zdXJlZCBieSBvdGhlciB0ZXN0cy4gSGVyZSBpcyB0byBjb3ZlciBpZiB0aGUgd2hvbGUg
YXV0aGVudGljYXRpb24gaGFuZHNoYWtlIGNhbiBiZSBjb21wbGV0ZWQuCkBAIC0xOTI3LDYgKzIw
MjMsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBJbnRlcmNlcHRpb25TdWNjZWVkV2l0
aENvb2tpZSkKICNlbmRpZgogICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7
CiAgICAgY2hlY2tBdXRob3JpemF0aW9uT3B0aW9ucyh0cnVlLCAiZmlsZTovLyIsIDEpOworICAg
IEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICBhdXRvIHJlc3Bv
bnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0ZXN0
VVJMIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhlYWRlckZpZWxkczpA
eyBAIlNldC1Db29raWUiIDogQCJzZXNzaW9uaWQ9MzhhZmVzN2E4OyJ9XSk7CiAgICAgYXV0byBy
ZXNvbnNlSHRtbENTdHJpbmcgPSBnZW5lcmF0ZUh0bWwobmV3V2luZG93UmVzcG9uc2VUZW1wbGF0
ZSwgIiIpLnV0ZjgoKTsKQEAgLTE5NTksNiArMjA1Niw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9u
UG9wVXAsIEludGVyY2VwdGlvblN1Y2NlZWRUd2ljZSkKIAogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgMjsgaSsrKSB7CiAgICAgICAgIGF1dGhvcml6YXRpb25QZXJmb3JtZWQgPSBmYWxzZTsKKyAg
ICAgICAgcG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkID0gZmFsc2U7CiAjaWYgUExBVEZPUk0oTUFD
KQogICAgICAgICBbd2ViVmlldyBzZW5kQ2xpY2tzQXRQb2ludDpOU01ha2VQb2ludCgyMDAsIDIw
MCkgbnVtYmVyT2ZDbGlja3M6MV07CiAjZWxpZiBQTEFURk9STShJT1MpCkBAIC0xOTY2LDYgKzIw
NjQsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBJbnRlcmNlcHRpb25TdWNjZWVkVHdp
Y2UpCiAjZW5kaWYKICAgICAgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsK
ICAgICAgICAgY2hlY2tBdXRob3JpemF0aW9uT3B0aW9ucyh0cnVlLCAiZmlsZTovLyIsIDEpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAgICAg
IGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRX
aXRoVVJMOnRlc3RVUkwgc3RhdHVzQ29kZToyMDAgSFRUUFZlcnNpb246QCJIVFRQLzEuMSIgaGVh
ZGVyRmllbGRzOm5pbF0pOwogICAgICAgICBhdXRvIHJlc29uc2VIdG1sQ1N0cmluZyA9IGdlbmVy
YXRlSHRtbChuZXdXaW5kb3dSZXNwb25zZVRlbXBsYXRlLCAiIikudXRmOCgpOwpAQCAtMjAwNSw2
ICsyMTA0LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgSW50ZXJjZXB0aW9uU3VjY2Vl
ZFN1cHByZXNzQWN0aXZlU2Vzc2lvbikKICNlbmRpZgogICAgIFV0aWw6OnJ1bigmYXV0aG9yaXph
dGlvblBlcmZvcm1lZCk7CiAgICAgY2hlY2tBdXRob3JpemF0aW9uT3B0aW9ucyh0cnVlLCAiZmls
ZTovLyIsIDEpOworICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAK
ICAgICAvLyBTdXBwcmVzcyB0aGUgbGFzdCBhY3RpdmUgc2Vzc2lvbi4KICAgICBhdXRvIG5ld1dl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDQwMCwgNDAwKSBjb25maWd1cmF0aW9uOndlYlZpZXcuZ2V0KCkuY29uZmln
dXJhdGlvbl0pOwpAQCAtMjAxNSw2ICsyMTE1LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BV
cCwgSW50ZXJjZXB0aW9uU3VjY2VlZFN1cHByZXNzQWN0aXZlU2Vzc2lvbikKICAgICBVdGlsOjpy
dW4oJm5hdmlnYXRpb25Db21wbGV0ZWQpOwogCiAgICAgYXV0aG9yaXphdGlvblBlcmZvcm1lZCA9
IGZhbHNlOworICAgIHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCA9IGZhbHNlOwogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBbbmV3V2ViVmlldyBzZW5kQ2xpY2tzQXRQb2ludDpOU01ha2VQb2ludCgy
MDAsIDIwMCkgbnVtYmVyT2ZDbGlja3M6MV07CiAjZWxpZiBQTEFURk9STShJT1MpCkBAIC0yMDIz
LDYgKzIxMjQsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBJbnRlcmNlcHRpb25TdWNj
ZWVkU3VwcHJlc3NBY3RpdmVTZXNzaW9uKQogICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvbkNh
bmNlbGxlZCk7CiAgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKICAgICBj
aGVja0F1dGhvcml6YXRpb25PcHRpb25zKHRydWUsICJmaWxlOi8vIiwgMSk7CisgICAgRVhQRUNU
X1RSVUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIG5hdmlnYXRpb25Db21wbGV0
ZWQgPSBmYWxzZTsKICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6IEAibmV3V2luZG93
IiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqKSB7CkBAIC0yMDY3LDYg
KzIxNjksNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBJbnRlcmNlcHRpb25TdWNjZWVk
TmV3V2luZG93TmF2aWdhdGlvbikKICNlbmRpZgogICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlv
blBlcmZvcm1lZCk7CiAgICAgY2hlY2tBdXRob3JpemF0aW9uT3B0aW9ucyh0cnVlLCAiZmlsZTov
LyIsIDEpOworICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAg
ICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0
V2l0aFVSTDp0ZXN0VVJMIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhl
YWRlckZpZWxkczpuaWxdKTsKICAgICBhdXRvIHJlc29uc2VIdG1sQ1N0cmluZyA9IGdlbmVyYXRl
SHRtbChuZXdXaW5kb3dSZXNwb25zZVRlbXBsYXRlLCAiIikudXRmOCgpOwpAQCAtMjEwMyw2ICsy
MjA2LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgQXV0aG9yaXphdGlvbk9wdGlvbnMp
CiAjZW5kaWYKICAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOwogICAgIGNo
ZWNrQXV0aG9yaXphdGlvbk9wdGlvbnModHJ1ZSwgImh0dHA6Ly93d3cud2Via2l0Lm9yZyIsIDEp
OworICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiB9CiAKIFRFU1Qo
U09BdXRob3JpemF0aW9uUG9wVXAsIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3lJZ25vcmUpCkBA
IC0yMTI5LDYgKzIyMzMsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBTT0F1dGhvcml6
YXRpb25Mb2FkUG9saWN5SWdub3JlKQogI2VuZGlmCiAgICAgVXRpbDo6cnVuKCZuZXdXaW5kb3dD
cmVhdGVkKTsKICAgICBFWFBFQ1RfRkFMU0UoYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CisgICAg
RVhQRUNUX1RSVUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIH0KIAogVEVTVChTT0F1dGhv
cml6YXRpb25Qb3BVcCwgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeUFsbG93QXN5bmMpCkBAIC0y
MTU4LDYgKzIyNjMsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBTT0F1dGhvcml6YXRp
b25Mb2FkUG9saWN5QWxsb3dBc3luYykKICNlbmRpZgogICAgIFV0aWw6OnJ1bigmYXV0aG9yaXph
dGlvblBlcmZvcm1lZCk7CiAgICAgY2hlY2tBdXRob3JpemF0aW9uT3B0aW9ucyh0cnVlLCAiZmls
ZTovLyIsIDEpOworICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAK
ICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDp0ZXN0VVJMIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEi
IGhlYWRlckZpZWxkczpuaWxdKTsKICAgICBhdXRvIHJlc29uc2VIdG1sQ1N0cmluZyA9IGdlbmVy
YXRlSHRtbChuZXdXaW5kb3dSZXNwb25zZVRlbXBsYXRlLCAid2luZG93LmNsb3NlKCk7IikudXRm
OCgpOyAvLyBUaGUgcG9wIHVwIGNsb3NlcyBpdHNlbGYuCkBAIC0yMTk1LDYgKzIzMDEsNyBAQCBU
RVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5SWdub3Jl
QXN5bmMpCiAjZW5kaWYKICAgICBVdGlsOjpydW4oJm5ld1dpbmRvd0NyZWF0ZWQpOwogICAgIEVY
UEVDVF9GQUxTRShhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xp
Y3lGb3JBcHBTU09QZXJmb3JtZWQpOwogfQogCiBURVNUKFNPQXV0aG9yaXphdGlvblN1YkZyYW1l
LCBOb0ludGVyY2VwdGlvbnMpCkBAIC0yMjEwLDYgKzIzMTcsNyBAQCBURVNUKFNPQXV0aG9yaXph
dGlvblN1YkZyYW1lLCBOb0ludGVyY2VwdGlvbnMpCiAKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0
cmluZzp0ZXN0SHRtbCBiYXNlVVJMOmJhc2VVUkwuZ2V0KCldOwogICAgIFt3ZWJWaWV3IHdhaXRG
b3JNZXNzYWdlOkAiIl07CisgICAgRVhQRUNUX0ZBTFNFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1l
ZCk7CiB9CiAKIFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUsIE5vSW50ZXJjZXB0aW9uc05v
bkFwcGxlRmlyc3RQYXJ0eU1haW5GcmFtZSkKQEAgLTIyMzEsNiArMjMzOSw3IEBAIFRFU1QoU09B
dXRob3JpemF0aW9uU3ViRnJhbWUsIE5vSW50ZXJjZXB0aW9uc05vbkFwcGxlRmlyc3RQYXJ0eU1h
aW5GcmFtZSkKICAgICBVdGlsOjpzbGVlcCgwLjUpOwogICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24n
dCBpbnRlcmNlcHQgdGhlIGlmcmFtZS4KICAgICBFWFBFQ1RfRkFMU0UoYXV0aG9yaXphdGlvblBl
cmZvcm1lZCk7CisgICAgRVhQRUNUX0ZBTFNFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiB9
CiAKIFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUsIEludGVyY2VwdGlvbkVycm9yKQpAQCAt
MjI1NCw2ICsyMzYzLDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgSW50ZXJjZXB0
aW9uRXJyb3IpCiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJudWxsIl07CiAgICAgW3dl
YlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTT0F1dGhvcml6YXRpb25EaWRTdGFydCJdOwogICAgIGNo
ZWNrQXV0aG9yaXphdGlvbk9wdGlvbnMoZmFsc2UsICJmaWxlOi8vIiwgMik7CisgICAgRVhQRUNU
X1RSVUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIFtnRGVsZWdhdGUgYXV0aG9y
aXphdGlvbjpnQXV0aG9yaXphdGlvbiBkaWRDb21wbGV0ZVdpdGhFcnJvcjphZG9wdE5TKFtbTlNF
cnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46TlNDb2NvYUVycm9yRG9tYWluIGNvZGU6MCB1c2Vy
SW5mbzpuaWxdKS5nZXQoKV07CiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJudWxsIl07
CkBAIC0yMjg2LDYgKzIzOTYsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblN1YkZyYW1lLCBJbnRl
cmNlcHRpb25DYW5jZWwpCiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJudWxsIl07CiAg
ICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTT0F1dGhvcml6YXRpb25EaWRTdGFydCJdOwog
ICAgIGNoZWNrQXV0aG9yaXphdGlvbk9wdGlvbnMoZmFsc2UsICJmaWxlOi8vIiwgMik7CisgICAg
RVhQRUNUX1RSVUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIFtnRGVsZWdhdGUg
YXV0aG9yaXphdGlvbkRpZENhbmNlbDpnQXV0aG9yaXphdGlvbl07CiAgICAgW3dlYlZpZXcgd2Fp
dEZvck1lc3NhZ2U6QCJudWxsIl07CkBAIC0yMzE3LDYgKzI0MjgsNyBAQCBURVNUKFNPQXV0aG9y
aXphdGlvblN1YkZyYW1lLCBJbnRlcmNlcHRpb25TdWNjZXNzKQogICAgIFt3ZWJWaWV3IHdhaXRG
b3JNZXNzYWdlOkAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSJdOwogICAgIFt3ZWJWaWV3IHdhaXRG
b3JNZXNzYWdlOkAiU09BdXRob3JpemF0aW9uRGlkU3RhcnQiXTsKICAgICBjaGVja0F1dGhvcml6
YXRpb25PcHRpb25zKGZhbHNlLCAibnVsbCIsIDIpOworICAgIEVYUEVDVF9UUlVFKHBvbGljeUZv
ckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRU
UFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0ZXN0VVJMIHN0YXR1c0NvZGU6MjAwIEhU
VFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhlYWRlckZpZWxkczpuaWxdKTsKICAgICBhdXRvIGlmcmFt
ZUh0bWxDU3RyaW5nID0gZ2VuZXJhdGVIdG1sKGlmcmFtZVRlbXBsYXRlLCAiIikudXRmOCgpOwpA
QCAtMjM0Niw2ICsyNDU4LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgSW50ZXJj
ZXB0aW9uU3VjY2VlZFdpdGhPdGhlckh0dHBTdGF0dXNDb2RlKQogICAgIFt3ZWJWaWV3IHdhaXRG
b3JNZXNzYWdlOkAibnVsbCJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU09BdXRo
b3JpemF0aW9uRGlkU3RhcnQiXTsKICAgICBjaGVja0F1dGhvcml6YXRpb25PcHRpb25zKGZhbHNl
LCAiZmlsZTovLyIsIDIpOworICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1l
ZCk7CiAKICAgICAvLyBXaWxsIGZhbGxiYWNrIHRvIHdlYiBwYXRoLgogICAgIGF1dG8gcmVzcG9u
c2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRlc3RV
UkwuZ2V0KCkgc3RhdHVzQ29kZTo0MDAgSFRUUFZlcnNpb246QCJIVFRQLzEuMSIgaGVhZGVyRmll
bGRzOm5pbF0pOwpAQCAtMjM4MSw2ICsyNDk0LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25TdWJG
cmFtZSwgSW50ZXJjZXB0aW9uU3VjY2VlZFdpdGhDb29raWUpCiAgICAgW3dlYlZpZXcgd2FpdEZv
ck1lc3NhZ2U6QCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIl07CiAgICAgW3dlYlZpZXcgd2FpdEZv
ck1lc3NhZ2U6QCJTT0F1dGhvcml6YXRpb25EaWRTdGFydCJdOwogICAgIGNoZWNrQXV0aG9yaXph
dGlvbk9wdGlvbnMoZmFsc2UsICJudWxsIiwgMik7CisgICAgRVhQRUNUX1RSVUUocG9saWN5Rm9y
QXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQ
VVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRlc3RVUkwgc3RhdHVzQ29kZToyMDAgSFRU
UFZlcnNpb246QCJIVFRQLzEuMSIgaGVhZGVyRmllbGRzOkB7IEAiU2V0LUNvb2tpZSIgOiBAInNl
c3Npb25pZD0zOGFmZXM3YTg7In1dKTsKICAgICBhdXRvIGlmcmFtZUh0bWxDU3RyaW5nID0gZ2Vu
ZXJhdGVIdG1sKGlmcmFtZVRlbXBsYXRlLCAiIikudXRmOCgpOwpAQCAtMjQwOCwxMSArMjUyMiwx
MyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblN1YkZyYW1lLCBJbnRlcmNlcHRpb25TdWNjZXNzVHdp
Y2UpCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKICAgICAgICAgYXV0aG9yaXph
dGlvblBlcmZvcm1lZCA9IGZhbHNlOwogICAgICAgICBuYXZpZ2F0aW9uQ29tcGxldGVkID0gZmFs
c2U7CisgICAgICAgIHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCA9IGZhbHNlOwogCiAgICAgICAg
IFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOnRlc3RIdG1sIGJhc2VVUkw6bmlsXTsKICAgICAgICAg
W3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIl07CiAgICAg
ICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU09BdXRob3JpemF0aW9uRGlkU3RhcnQiXTsK
ICAgICAgICAgY2hlY2tBdXRob3JpemF0aW9uT3B0aW9ucyhmYWxzZSwgIm51bGwiLCAyKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgICAgICBh
dXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0
aFVSTDp0ZXN0VVJMIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhlYWRl
ckZpZWxkczpuaWxdKTsKICAgICAgICAgYXV0byBpZnJhbWVIdG1sQ1N0cmluZyA9IGdlbmVyYXRl
SHRtbChpZnJhbWVUZW1wbGF0ZSwgIiIpLnV0ZjgoKTsKQEAgLTI0NjMsNiArMjU3OSw3IEBAIFRF
U1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUsIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3lJZ25v
cmUpCiAgICAgVXRpbDo6c2xlZXAoMC41KTsKICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgaW50
ZXJjZXB0IHRoZSBpZnJhbWUuCiAgICAgRVhQRUNUX0ZBTFNFKGF1dGhvcml6YXRpb25QZXJmb3Jt
ZWQpOworICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiB9CiAKIFRF
U1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUsIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3lBbGxv
d0FzeW5jKQpAQCAtMjQ4Niw2ICsyNjAzLDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFt
ZSwgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeUFsbG93QXN5bmMpCiAgICAgW3dlYlZpZXcgd2Fp
dEZvck1lc3NhZ2U6QCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIl07CiAgICAgW3dlYlZpZXcgd2Fp
dEZvck1lc3NhZ2U6QCJTT0F1dGhvcml6YXRpb25EaWRTdGFydCJdOwogICAgIGNoZWNrQXV0aG9y
aXphdGlvbk9wdGlvbnMoZmFsc2UsICJudWxsIiwgMik7CisgICAgRVhQRUNUX1RSVUUocG9saWN5
Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNI
VFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRlc3RVUkwgc3RhdHVzQ29kZToyMDAg
SFRUUFZlcnNpb246QCJIVFRQLzEuMSIgaGVhZGVyRmllbGRzOm5pbF0pOwogICAgIGF1dG8gaWZy
YW1lSHRtbENTdHJpbmcgPSBnZW5lcmF0ZUh0bWwoaWZyYW1lVGVtcGxhdGUsICIiKS51dGY4KCk7
CkBAIC0yNTE0LDYgKzI2MzIsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblN1YkZyYW1lLCBTT0F1
dGhvcml6YXRpb25Mb2FkUG9saWN5SWdub3JlQXN5bmMpCiAgICAgVXRpbDo6c2xlZXAoMC41KTsK
ICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgaW50ZXJjZXB0IHRoZSBpZnJhbWUuCiAgICAgRVhQ
RUNUX0ZBTFNFKGF1dGhvcml6YXRpb25QZXJmb3JtZWQpOworICAgIEVYUEVDVF9UUlVFKHBvbGlj
eUZvckFwcFNTT1BlcmZvcm1lZCk7CiB9CiAKIFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUs
IEludGVyY2VwdGlvbkVycm9yV2l0aFJlZmVycmVyKQpAQCAtMjU1NSw2ICsyNjc0LDcgQEAgVEVT
VChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgSW50ZXJjZXB0aW9uRXJyb3JXaXRoUmVmZXJyZXIp
CiAgICAgW3dlYlZpZXcgX2xvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6KGlkKW9yaWdpbl1dIHNob3VsZE9wZW5FeHRlcm5hbFVSTHM6
Tk9dOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOihpZClvcmlnaW5dOwogICAgIFt3ZWJW
aWV3IHdhaXRGb3JNZXNzYWdlOkAiU09BdXRob3JpemF0aW9uRGlkU3RhcnQiXTsKKyAgICBFWFBF
Q1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAgW2dEZWxlZ2F0ZSBhdXRo
b3JpemF0aW9uOmdBdXRob3JpemF0aW9uIGRpZENvbXBsZXRlV2l0aEVycm9yOmFkb3B0TlMoW1tO
U0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpOU0NvY29hRXJyb3JEb21haW4gY29kZTowIHVz
ZXJJbmZvOm5pbF0pLmdldCgpXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTooaWQpb3Jp
Z2luXTsKQEAgLTI1ODUsNiArMjcwNSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUs
IEludGVyY2VwdGlvbkVycm9yTWVzc2FnZU9yZGVyKQogCiAgICAgW3dlYlZpZXcgbG9hZEhUTUxT
dHJpbmc6dGVzdEh0bWwgYmFzZVVSTDpiYXNlVVJMLmdldCgpXTsKICAgICBVdGlsOjpydW4oJmF1
dGhvcml6YXRpb25QZXJmb3JtZWQpOworICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1Bl
cmZvcm1lZCk7CiAgICAgW2dEZWxlZ2F0ZSBhdXRob3JpemF0aW9uOmdBdXRob3JpemF0aW9uIGRp
ZENvbXBsZXRlV2l0aEVycm9yOmFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFp
bjpOU0NvY29hRXJyb3JEb21haW4gY29kZTowIHVzZXJJbmZvOm5pbF0pLmdldCgpXTsKICAgICBV
dGlsOjpydW4oJmFsbE1lc3NhZ2VzUmVjZWl2ZWQpOwogfQpAQCAtMjYxMSw2ICsyNzMyLDcgQEAg
VEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgSW50ZXJjZXB0aW9uU3VjY2Vzc01lc3NhZ2VP
cmRlcikKIAogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOnRlc3RIdG1sIGJhc2VVUkw6bmls
XTsKICAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOworICAgIEVYUEVDVF9U
UlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICBhdXRvIHJlc3BvbnNlID0gYWRv
cHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0ZXN0VVJMIHN0YXR1
c0NvZGU6MjAwIEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhlYWRlckZpZWxkczpuaWxdKTsKICAg
ICBhdXRvIGlmcmFtZUh0bWxDU3RyaW5nID0gZ2VuZXJhdGVIdG1sKGlmcmFtZVRlbXBsYXRlLCAi
IikudXRmOCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433149</attachid>
            <date>2021-07-08 11:41:27 -0700</date>
            <delta_ts>2021-07-08 15:14:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227729-20210708114126.patch</filename>
            <type>text/plain</type>
            <size>50449</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM3MThiNzc4NjUwNTBlYTdhNGM2MTM4
Y2ZjNjBmNjM4NWU5MTAwOWQuLjY2ZDdiYThkMTE1ZDFhNjhiNWRjOGM2MDc0YTk5YTNjNTIwOWM1
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDctMDcgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBFeHBvc2UgU1BJIHRvIG9wdCBvdXQg
b2YgRXh0ZW5zaWJsZSBTU08gYXV0aGVudGljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzcyOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzU2NDc4OTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ3JlYXRlIG5ldyBXS1ByZWZlcmVuY2UgdG8gYWxsb3cgV2ViS2l0IGNsaWVudHMgdG8gb3B0
IG91dCBvZiBFeHRlbnNpYmxlIFNTTyBhdXRoZW50aWNhdGlvbi4KKworICAgICAgICAqIFNjcmlw
dHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbDoKKwogMjAyMS0wNy0wMiAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIE9ubHkgdXNl
IFdlYkdMIG9uIE1ldGFsIGJ5IGRlZmF1bHQgb24gc2FmZSB2ZXJzaW9ucyBvZiBtYWNPUwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA4YzAyMjQ0ZmE4NjhjZjExMzU4MWE2YWFkYjliNzc1ZGE1NTM4YWZjLi4xZGJjYWM1
MzA1NDI3MWQ0ZGY2YmUzYTFjZWQwZjczZDI5Nzk3OGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDIxLTA3LTA3ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisg
ICAgICAgIFtDb2NvYV0gRXhwb3NlIFNQSSB0byBvcHQgb3V0IG9mIEV4dGVuc2libGUgU1NPIGF1
dGhlbnRpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjc3MjkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1NjQ3ODkyPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdLV2ViVmlldyBjbGllbnRz
IHNob3VsZCBiZSBhYmxlIHRvIGRpc2FibGUgRXh0ZW5zaWJsZSBTU08gYXV0aGVudGljYXRpb24g
Zmxvd3MsIHNvIGV4cG9zaW5nIHRoZSBpbnRlcm5hbAorICAgICAgICBtZWNoYW5pc20gYXMgU1BJ
LiBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGZvciB1c2UgY2FzZXMgd2hlcmUgYSBXS1dl
YlZpZXcgd2lsbCBiZSB1c2VkIHRvIGxvYWQgY29udGVudAorICAgICAgICB3aXRob3V0IGJlaW5n
IGF0dGFjaGVkIHRvIGEgV2luZG93LCBzaW5jZSBhIFdpbmRvdyBpcyByZXF1aXJlZCB0byBwcmVz
ZW50IHRoZSBFeHRlbnNpYmxlIFNTTyBhdXRoZW50aWNhdGlvbgorICAgICAgICBVSS4gV2l0aG91
dCBhIFdpbmRvdywgV2ViS2l0IHdpbGwgd2FpdCBmb3IgYSBXaW5kb3cgdG8gYmUgYXR0YWNoZWQg
Y2F1c2luZyBsb2FkcyB0byB0aW1lb3V0LiBCeSBhZG9wdGluZyB0aGlzCisgICAgICAgIEFQSSwg
ZGV2ZWxvcGVycyBjYW4gb3B0IG91dCBvZiBFeHRlbnNpYmxlIFNTTywgYWxsb3dpbmcgbG9hZHMg
dG8gZmFpbCBxdWlja2x5IHJhdGhlciB0aGFuIHdhaXRpbmcgZm9yIGEgdGltZW91dC4KKworICAg
ICAgICBUZXN0ZWQgYnkgYSBuZXcgVGVzdFdlYktpdEFQSSB0ZXN0IGNhc2U6IFNPQXV0aG9yaXph
dGlvblJlZGlyZWN0LkRpc2FibGVTU08KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcmVmZXJlbmNlcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJl
bmNlcy5tbToKKyAgICAgICAgKC1bV0tQcmVmZXJlbmNlcyBfZXh0ZW5zaWJsZVNTT0VuYWJsZWRd
KTogQWRkIGdldHRlciBmb3IgbmV3IHByZWZlcmVuY2UuCisgICAgICAgICgtW1dLUHJlZmVyZW5j
ZXMgX3NldEV4dGVuc2libGVTU09FbmFibGVkOl0pOiBBZGQgc2V0dGVyLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vTmF2aWdhdGlvblNPQXV0aG9yaXphdGlvblNl
c3Npb24ubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TT0F1dGhvcml6YXRpb25TZXNz
aW9uOjpzaG91bGRTdGFydEludGVybmFsKTogQWRkIG5ldyBsb2dnaW5nIHNvIGRldmVsb3BlcnMg
Y2FuIHNlZSB3aGVuIGEgV0tXZWJWaWV3CisgICAgICAgIHdpdGhvdXQgYSBXaW5kb3cgaXMgYXR0
ZW1wdGluZyB0byBwYXJ0aWNpcGF0ZSBpbiBFeHRlbnNpYmxlIFNTTyBmbG93cy4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vz
c2lvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpp
bml0U2VjcmV0V2ViVmlldyk6IFN3aXRjaCBmcm9tIFNQSSB0byBBUEkuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IERpdHRvLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKwogMjAyMS0wNy0wNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogW2lPU10gQVNTRVJUSU9OIEZBSUxF
RDogIW1fbWVzc2FnZVJlY2VpdmVyTWFwQ291bnQgdW5kZXIgV2ViS2l0OjpSZW1vdGVSZW1vdGVD
b21tYW5kTGlzdGVuZXI6On5SZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXIoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9T
b3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCBl
NzMzMTU3NGJiZmU2OTUwODA0MzJjNTA2YTM5M2VkMjE4ZDBlNjUxLi45YjY4MWE3NDFjMzExZWMy
MjQ2ZjViNmRlNWRmNDZlNmY3MTNkOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMv
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMv
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtNzU5LDYgKzc1OSwxNiBAQCBFbnVt
ZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzRW5hYmxlZDoKICAgICBXZWJLaXQ6CiAgICAgICBk
ZWZhdWx0OiBmYWxzZQogCitFeHRlbnNpYmxlU1NPRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBn
ZXR0ZXI6IGlzRXh0ZW5zaWJsZVNTT0VuYWJsZWQKKyAgd2ViY29yZUJpbmRpbmc6IG5vbmUKKyAg
Y29uZGl0aW9uOiBIQVZFKEFQUF9TU08pCisgIGV4cG9zZWQ6IFsgV2ViS2l0IF0KKyAgZGVmYXVs
dFZhbHVlOgorICAgIFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6IHRydWUKKwogRlRQRGlyZWN0b3J5
VGVtcGxhdGVQYXRoOgogICB0eXBlOiBTdHJpbmcKICAgZGVmYXVsdFZhbHVlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQppbmRleCA4
YWQxNjUyZDkyMTNjYTQ0M2QzNzhmMzNmODQyMzQ2NGRmNmRmOWZhLi40NmUxNzg3M2RhZjdhMWYw
YzJmNDhmOTVjZjIwMDA3OGZlYTEzMThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQpAQCAtMTQ5MSw2ICsxNDkxLDIyIEBAIHN0
YXRpYyBXZWJDb3JlOjpFZGl0YWJsZUxpbmtCZWhhdmlvciB0b0VkaXRhYmxlTGlua0JlaGF2aW9y
KF9XS0VkaXRhYmxlTGlua0JlaGF2CiAgICAgX3ByZWZlcmVuY2VzLT5zZXRNZWRpYVNlc3Npb25F
bmFibGVkKG1lZGlhU2Vzc2lvbkVuYWJsZWQpOwogfQogCistIChCT09MKV9pc0V4dGVuc2libGVT
U09FbmFibGVkCit7CisjaWYgSEFWRShBUFBfU1NPKQorICAgIHJldHVybiBfcHJlZmVyZW5jZXMt
PmlzRXh0ZW5zaWJsZVNTT0VuYWJsZWQoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCit9CisKKy0gKHZvaWQpX3NldEV4dGVuc2libGVTU09FbmFibGVkOihCT09MKWV4dGVuc2li
bGVTU09FbmFibGVkCit7CisjaWYgSEFWRShBUFBfU1NPKQorICAgIF9wcmVmZXJlbmNlcy0+c2V0
RXh0ZW5zaWJsZVNTT0VuYWJsZWQoZXh0ZW5zaWJsZVNTT0VuYWJsZWQpOworI2VuZGlmCit9CisK
IEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDg2Yzg5OTVkZmE4M2I1OTkzYjg0ZjI0Njlj
NGUwMGI1ODdmYjQxNjMuLmY3MWFhNGQ5Mzc4MDc2N2QwN2M5M2MwNDg2NjJkNGM1YjM0ZjZlMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVu
Y2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
ZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC0xNzEsNiArMTcxLDggQEAgdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgX1dLUGl0Y2hDb3JyZWN0aW9uQWxnb3JpdGhtKSB7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgc2V0dGVyPV9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuYWJsZWQ6KSBCT09MIF9w
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4w
KSwgaW9zKDE1LjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFBpdGNoQ29y
cmVjdGlvbkFsZ29yaXRobTopIF9XS1BpdGNoQ29ycmVjdGlvbkFsZ29yaXRobSBfcGl0Y2hDb3Jy
ZWN0aW9uQWxnb3JpdGhtIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRNZWRpYVNlc3Npb25FbmFibGVkOikg
Qk9PTCBfbWVkaWFTZXNzaW9uRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBp
b3MoMTUuMCkpOworQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1faXNFeHRlbnNpYmxlU1NP
RW5hYmxlZCwgc2V0dGVyPV9zZXRFeHRlbnNpYmxlU1NPRW5hYmxlZDopIEJPT0wgX2V4dGVuc2li
bGVTU09FbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CisK
IAogI2lmICFUQVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9z
ZXRXZWJHTEVuYWJsZWQ6KSBCT09MIF93ZWJHTEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xMy40KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9T
T0F1dGhvcml6YXRpb24vTmF2aWdhdGlvblNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vTmF2aWdhdGlvblNPQXV0
aG9yaXphdGlvblNlc3Npb24ubW0KaW5kZXggZDIzN2YzYTA5ZGMzZGM4MTUxZGUzMzgyOTQ3NmE0
NjU5NGU2ZWJkYy4uZTgwMzE2ZTMzZDNiZDg5NjQ5ZGQyZWM3M2FmZGM3YjI2NTc3ZjEyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL05h
dmlnYXRpb25TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9OYXZpZ2F0aW9uU09BdXRob3JpemF0aW9uU2Vz
c2lvbi5tbQpAQCAtNTcsNiArNTcsNyBAQCB2b2lkIE5hdmlnYXRpb25TT0F1dGhvcml6YXRpb25T
ZXNzaW9uOjpzaG91bGRTdGFydEludGVybmFsKCkKICAgICBBU1NFUlQocGFnZSk7CiAgICAgYmVm
b3JlU3RhcnQoKTsKICAgICBpZiAoIXBhZ2UtPmlzSW5XaW5kb3coKSkgeworICAgICAgICBBVVRI
T1JJWkFUSU9OU0VTU0lPTl9SRUxFQVNFX0xPRygic2hvdWxkU3RhcnRJbnRlcm5hbDogU3RhcnRp
bmcgRXh0ZW5zaWJsZSBTU08gYXV0aGVudGljYXRpb24gZm9yIGEgd2ViIHZpZXcgdGhhdCBpcyBu
b3QgYXR0YWNoZWQgdG8gYSB3aW5kb3cuIExvYWRpbmcgd2lsbCBwYXVzZSB1bnRpbCBhIHdpbmRv
dyBpcyBhdHRhY2hlZC4iKTsKICAgICAgICAgc2V0U3RhdGUoU3RhdGU6OldhaXRpbmcpOwogICAg
ICAgICBwYWdlLT5hZGRPYnNlcnZlcigqdGhpcyk7CiAgICAgICAgIEFTU0VSVChwYWdlLT5tYWlu
RnJhbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1
dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vz
c2lvbi5tbQppbmRleCBmOTkyNzhlNjQ5OWQwYjIxMDZiN2QyZjJhNWEwNzJiNDdlYjlhN2MxLi45
ZjFlYmM4ZmVkOTUyYmFmOTZmMGQ3ZjY1ZWY4ODQyNTQ5M2E5MmEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6
YXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0
aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KQEAgLTE4OSw3ICsxODks
NyBAQCB2b2lkIFBvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6aW5pdFNlY3JldFdlYlZpZXco
KQogICAgIFttX3NlY3JldFdlYlZpZXcgc2V0VUlEZWxlZ2F0ZTptX3NlY3JldERlbGVnYXRlLmdl
dCgpXTsKICAgICBbbV9zZWNyZXRXZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTptX3NlY3Jl
dERlbGVnYXRlLmdldCgpXTsKIAotICAgIG1fc2VjcmV0V2ViVmlldy0+X3BhZ2UtPnNldFNob3Vs
ZFN1cHByZXNzU09BdXRob3JpemF0aW9uSW5BbGxOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oKTsK
KyAgICBtX3NlY3JldFdlYlZpZXctPl9wYWdlLT5wcmVmZXJlbmNlcygpLnNldEV4dGVuc2libGVT
U09FbmFibGVkKGZhbHNlKTsKICAgICBXVEZMb2dBbHdheXMoIlNlY3JldFdlYlZpZXcgaXMgY3Jl
YXRlZC4iKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggMzdkNmJhNmJjYjYyODU1OGJlYTdhNWU4ZDlmNDBkY2Q1NTBlMGUyZC4uNjIxYzdhNzRmODg0
ZDY2MjQxOTM4NmZiYjEyNWFlYzA1ODkwZmM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC01NDMxLDcgKzU0MzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2NlcwogICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbigqdGhpcywgJmZyYW1lLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBvcmlnaW5hdGlu
Z0ZyYW1lLCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUobGlzdGVu
ZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgp
KS5nZXQoKSk7CiAgICAgZWxzZSB7CiAjaWYgSEFWRShBUFBfU1NPKQotICAgICAgICBpZiAobV9z
aG91bGRTdXBwcmVzc1NPQXV0aG9yaXphdGlvbkluTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
biB8fCBtX3Nob3VsZFN1cHByZXNzU09BdXRob3JpemF0aW9uSW5BbGxOYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb24pCisgICAgICAgIGlmIChtX3Nob3VsZFN1cHByZXNzU09BdXRob3JpemF0aW9uSW5O
ZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uIHx8ICFtX3ByZWZlcmVuY2VzLT5pc0V4dGVuc2li
bGVTU09FbmFibGVkKCkpCiAgICAgICAgICAgICBuYXZpZ2F0aW9uQWN0aW9uLT51bnNldFNob3Vs
ZFBlcmZvcm1TT0F1dGhvcml6YXRpb24oKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IDVkNzQ0ZmVlYTVkNmU5YTFlZGUxNTBjNGM0MGU1MTdiZDI2
NTY1YTUuLjczZWE2ZjBjMmM1Mzg0YzEzMzEyYjgwN2U5M2E1MzU5YTA1ZWZmMmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNzc4LDcgKzE3NzgsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCB3ZWJWaWV3RGlkTW92ZVRvV2luZG93KCk7CiAKICNpZiBIQVZFKEFQUF9T
U08pCi0gICAgdm9pZCBzZXRTaG91bGRTdXBwcmVzc1NPQXV0aG9yaXphdGlvbkluQWxsTmF2aWdh
dGlvblBvbGljeURlY2lzaW9uKCkgeyBtX3Nob3VsZFN1cHByZXNzU09BdXRob3JpemF0aW9uSW5B
bGxOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRTaG91bGRT
dXBwcmVzc1NPQXV0aG9yaXphdGlvbkluTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbigpIHsg
bV9zaG91bGRTdXBwcmVzc1NPQXV0aG9yaXphdGlvbkluTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbiA9IHRydWU7IH0KICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclNPQXV0aG9yaXphdGlvbkxv
YWQoY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTT0F1dGhvcml6YXRpb25M
b2FkUG9saWN5KT4mJik7CiAjZW5kaWYKQEAgLTI3MzIsNyArMjczMSw2IEBAIHByaXZhdGU6CiAK
ICNpZiBIQVZFKEFQUF9TU08pCiAgICAgYm9vbCBtX3Nob3VsZFN1cHByZXNzU09BdXRob3JpemF0
aW9uSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uIHsgZmFsc2UgfTsKLSAgICBib29sIG1f
c2hvdWxkU3VwcHJlc3NTT0F1dGhvcml6YXRpb25JbkFsbE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
biB7IGZhbHNlIH07CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJXaGVlbEV2ZW50
Q29hbGVzY2VyPiBtX3doZWVsRXZlbnRDb2FsZXNjZXI7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGJlY2RlOThiOGMwYTJlMjQ2ODJlOWM4YjU0
ZTlhMWE4NDhiOTU5OC4uOGE4ZWJlNGFhMDA4MWJhOGY3M2Y2YjM3MmU5YjdkMDdmOTZiYWQ4ZSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE5IEBACisyMDIxLTA3LTA3ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgorCisgICAgICAgIFtDb2NvYV0gRXhwb3NlIFNQSSB0byBvcHQgb3V0IG9mIEV4dGVuc2libGUg
U1NPIGF1dGhlbnRpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjc3MjkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1NjQ3ODkyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyB0
ZXN0IHRvIGNvbmZpcm0gdGhhdCBFeHRlbnN0aWJsZSBTU08gYXV0aGVudGljYXRpb24gZmxvd3Mg
YXJlIGJ5cGFzc2VkIHdoZW4gdGhlIG5ldyBXS1ByZWZlcmVuY2UKKyAgICAgICAgaXMgdXNlZC4g
VXBkYXRlZCBvdGhlciB0ZXN0cyB0byBjb25maXJtIHRoYXQgdGhlIFNTTyBkZWxlZ2F0ZSBpcyBj
YWxsZWQgd2hlbiBleHBlY3RlZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvVGVzdFNPQXV0aG9yaXphdGlvbi5tbToKKyAgICAgICAgKC1bVGVzdFNPQXV0aG9y
aXphdGlvbkRlbGVnYXRlIF93ZWJWaWV3OmRlY2lkZVBvbGljeUZvclNPQXV0aG9yaXphdGlvbkxv
YWRXaXRoQ3VycmVudFBvbGljeTpmb3JFeHRlbnNpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgIChyZXNldFN0YXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAy
MDIxLTA3LTA1ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBJbnN0YWxscyBpbiB3cm9uZyBkaXJlY3Rvcnkgb24gdGhlIGJvdHMKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGVzdFNPQXV0aG9y
aXphdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGVzdFNP
QXV0aG9yaXphdGlvbi5tbQppbmRleCAzMzI2ZDU3NjI0YmRhMDBhODgwYWUxY2YxMDI1ZWZmMzBj
ZTNkOGQ5Li40MDAyYzVmMDExNDNkZDc5YzRmMjgxYjQ1NzcwZGUzNjU2NDM0ZmMzIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Rlc3RTT0F1dGhvcml6
YXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0
U09BdXRob3JpemF0aW9uLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS05hdmln
YXRpb25BY3Rpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdh
dGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oPgorI2lt
cG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8cGFsL2NvY29hL0FwcFNTT1NvZnRMaW5rLmg+CiAj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL0F1dGhLaXRTUEkuaD4KQEAgLTQ3LDYgKzQ4LDcgQEAKICNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0aWMgYm9vbCBuYXZpZ2F0aW9uQ29t
cGxldGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQgPSBm
YWxzZTsKIHN0YXRpYyBib29sIGF1dGhvcml6YXRpb25QZXJmb3JtZWQgPSBmYWxzZTsKIHN0YXRp
YyBib29sIGF1dGhvcml6YXRpb25DYW5jZWxsZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHVpU2hv
d2VkID0gZmFsc2U7CkBAIC0xOTMsNiArMTk1LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHNhbWxS
ZXNwb25zZSA9CiB7CiAgICAgRVhQRUNUX0VRKHBvbGljeSwgX1dLU09BdXRob3JpemF0aW9uTG9h
ZFBvbGljeUFsbG93KTsKICAgICBFWFBFQ1RfVFJVRShbZXh0ZW5zaW9uIGlzRXF1YWw6QCJUZXN0
Il0pOworICAgIHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCA9IHRydWU7CiAgICAgaWYgKCFzZWxm
LmlzQXN5bmNFeGVjdXRpb24pIHsKICAgICAgICAgaWYgKHNlbGYuYWxsb3dTT0F1dGhvcml6YXRp
b25Mb2FkKQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocG9saWN5KTsKQEAgLTMyNyw2
ICszMzAsNyBAQCBzdGF0aWMgYm9vbCBvdmVycmlkZUlzVVJMRnJvbUFwcGxlT3duZWREb21haW4o
aWQsIFNFTCwgTlNVUkwgKikKIHN0YXRpYyB2b2lkIHJlc2V0U3RhdGUoKQogewogICAgIG5hdmln
YXRpb25Db21wbGV0ZWQgPSBmYWxzZTsKKyAgICBwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQgPSBm
YWxzZTsKICAgICBhdXRob3JpemF0aW9uUGVyZm9ybWVkID0gZmFsc2U7CiAgICAgYXV0aG9yaXph
dGlvbkNhbmNlbGxlZCA9IGZhbHNlOwogICAgIHVpU2hvd2VkID0gZmFsc2U7CkBAIC0zODQsNiAr
Mzg4LDM0IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIE5vSW50ZXJjZXB0aW9ucykK
ICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRl
c3RVUkwuZ2V0KCldXTsKICAgICBVdGlsOjpydW4oJm5hdmlnYXRpb25Db21wbGV0ZWQpOwogCisg
ICAgRVhQRUNUX0ZBTFNFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CisgICAgRVhQRUNUX1dL
X1NUUkVRKHRlc3RVUkwuZ2V0KCkuYWJzb2x1dGVTdHJpbmcsIGZpbmFsVVJMKTsKK30KKworVEVT
VChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgRGlzYWJsZVNTTykKK3sKKyAgICByZXNldFN0YXRl
KCk7CisgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6
YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJl
c3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0
aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVy
MihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOworICAgIEluc3Rh
bmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3Mo
KSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJv
ZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0
aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09B
dXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhV
Ukw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJy
aWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOworCisgICAgUmV0YWluUHRyPE5TVVJM
PiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBs
ZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl07CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBjb25m
aWd1cmF0aW9uLmdldCgpLnByZWZlcmVuY2VzOworICAgIEVYUEVDVF9UUlVFKHByZWZlcmVuY2Vz
Ll9pc0V4dGVuc2libGVTU09FbmFibGVkKTsKKworICAgIHByZWZlcmVuY2VzLl9leHRlbnNpYmxl
U1NPRW5hYmxlZCA9IE5POworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tUZXN0U09BdXRob3JpemF0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBj
b25maWd1cmVTT0F1dGhvcml6YXRpb25XZWJWaWV3KHdlYlZpZXcuZ2V0KCksIGRlbGVnYXRlLmdl
dCgpLCBPcGVuRXh0ZXJuYWxTY2hlbWVzUG9saWN5OjpBbGxvdyk7CisKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsK
KyAgICBVdGlsOjpydW4oJm5hdmlnYXRpb25Db21wbGV0ZWQpOworCisgICAgRVhQRUNUX0ZBTFNF
KHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKHRlc3RVUkwu
Z2V0KCkuYWJzb2x1dGVTdHJpbmcsIGZpbmFsVVJMKTsKIH0KIApAQCAtNDAyLDYgKzQzNCw3IEBA
IFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvbkVycm9yKQogICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5n
ZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmbmF2aWdhdGlvbkNvbXBsZXRlZCk7CiAKKyAgICBFWFBF
Q1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogICAgIEVYUEVDVF9XS19TVFJFUSh0
ZXN0VVJMLmdldCgpLmFic29sdXRlU3RyaW5nLCBmaW5hbFVSTCk7CiB9CiAKQEAgLTQyMiw2ICs0
NTUsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25Eb05vdEhh
bmRsZSkKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOnRlc3RVUkwuZ2V0KCldXTsKICAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3Jt
ZWQpOwogICAgIGNoZWNrQXV0aG9yaXphdGlvbk9wdGlvbnMoZmFsc2UsICIiLCAwKTsKKyAgICBF
WFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAgW2dEZWxlZ2F0ZSBh
dXRob3JpemF0aW9uRGlkTm90SGFuZGxlOmdBdXRob3JpemF0aW9uXTsKICAgICBVdGlsOjpydW4o
Jm5hdmlnYXRpb25Db21wbGV0ZWQpOwpAQCAtNDQ2LDYgKzQ4MCw3IEBAIFRFU1QoU09BdXRob3Jp
emF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvbkNhbmNlbCkKICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKICAgICBV
dGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOwogICAgIGNoZWNrQXV0aG9yaXphdGlv
bk9wdGlvbnMoZmFsc2UsICIiLCAwKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09Q
ZXJmb3JtZWQpOwogCiAgICAgW2dEZWxlZ2F0ZSBhdXRob3JpemF0aW9uRGlkQ2FuY2VsOmdBdXRo
b3JpemF0aW9uXTsKICAgICAvLyBGSVhNRTogRmluZCBhIGRlbGVnYXRlIG1ldGhvZCB0aGF0IGNh
biBkZXRlY3QgbG9hZCBjYW5jZWxzLgpAQCAtNDcwLDYgKzUwNSw3IEBAIFRFU1QoU09BdXRob3Jp
emF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvbkNvbXBsZXRlV2l0aG91dERhdGEpCiAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdl
dCgpXV07CiAgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKICAgICBjaGVj
a0F1dGhvcml6YXRpb25PcHRpb25zKGZhbHNlLCAiIiwgMCk7CisgICAgRVhQRUNUX1RSVUUocG9s
aWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIFtnRGVsZWdhdGUgYXV0aG9yaXphdGlvbkRp
ZENvbXBsZXRlOmdBdXRob3JpemF0aW9uXTsKICAgICBVdGlsOjpydW4oJm5hdmlnYXRpb25Db21w
bGV0ZWQpOwpAQCAtNDk0LDYgKzUzMCw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3Qs
IEludGVyY2VwdGlvblVuZXhwZWN0ZWRDb21wbGV0aW9uKQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0
aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CiAgICAgY2hlY2tBdXRob3JpemF0aW9u
T3B0aW9ucyhmYWxzZSwgIiIsIDApOworICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1Bl
cmZvcm1lZCk7CiAKICAgICBbZ0RlbGVnYXRlIGF1dGhvcml6YXRpb246Z0F1dGhvcml6YXRpb24g
ZGlkQ29tcGxldGVXaXRoSFRUUEF1dGhvcml6YXRpb25IZWFkZXJzOmFkb3B0TlMoW1tOU0RpY3Rp
b25hcnkgYWxsb2NdIGluaXRdKS5nZXQoKV07CiAgICAgVXRpbDo6cnVuKCZuYXZpZ2F0aW9uQ29t
cGxldGVkKTsKQEAgLTUxOSw2ICs1NTYsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0
LCBJbnRlcmNlcHRpb25TdWNjZWVkMSkKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKICAgICBVdGlsOjpydW4oJmF1
dGhvcml6YXRpb25QZXJmb3JtZWQpOwogICAgIGNoZWNrQXV0aG9yaXphdGlvbk9wdGlvbnMoZmFs
c2UsICIiLCAwKTsKKyAgICBFWFBFQ1RfRkFMU0UocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsg
Ly8gVGhlIGRlbGVnYXRlIGlzbid0IHJlZ2lzdGVyZWQsIHNvIHRoaXMgd29uJ3QgYmUgc2V0Lgog
I2lmIFBMQVRGT1JNKE1BQykKICAgICBFWFBFQ1RfVFJVRShnQXV0aG9yaXphdGlvbi5lbmFibGVF
bWJlZGRlZEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7CiAjZWxpZiBQTEFURk9STShJT1Mp
CkBAIC01NjMsNiArNjAxLDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJj
ZXB0aW9uU3VjY2VlZDIpCiAjZWxpZiBQTEFURk9STShJT1MpCiAgICAgY2hlY2tBdXRob3JpemF0
aW9uT3B0aW9ucyh0cnVlLCAibnVsbCIsIDApOwogI2VuZGlmCisgICAgRVhQRUNUX0ZBTFNFKHBv
bGljeUZvckFwcFNTT1BlcmZvcm1lZCk7IC8vIFRoZSBkZWxlZ2F0ZSBpc24ndCByZWdpc3RlcmVk
LCBzbyB0aGlzIHdvbid0IGJlIHNldC4KIAogICAgIFJldGFpblB0cjxOU1VSTD4gcmVkaXJlY3RV
UkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0
aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il07CiAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxv
Y10gaW5pdFdpdGhVUkw6dGVzdFVSTCBzdGF0dXNDb2RlOjMwMiBIVFRQVmVyc2lvbjpAIkhUVFAv
MS4xIiBoZWFkZXJGaWVsZHM6QHsgQCJMb2NhdGlvbiIgOiBbcmVkaXJlY3RVUkwgYWJzb2x1dGVT
dHJpbmddIH1dKTsKQEAgLTU5OSw2ICs2MzgsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGly
ZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkMykKICNlbGlmIFBMQVRGT1JNKElPUykKICAgICBjaGVj
a0F1dGhvcml6YXRpb25PcHRpb25zKHRydWUsICJudWxsIiwgMCk7CiAjZW5kaWYKKyAgICBFWFBF
Q1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAgUmV0YWluUHRyPE5TVVJM
PiByZWRpcmVjdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJz
aW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQ
SS5yZXNvdXJjZXMiXTsKICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJl
c3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0ZXN0VVJMIHN0YXR1c0NvZGU6MzAyIEhUVFBWZXJz
aW9uOkAiSFRUUC8xLjEiIGhlYWRlckZpZWxkczpAeyBAIkxvY2F0aW9uIiA6IFtyZWRpcmVjdFVS
TCBhYnNvbHV0ZVN0cmluZ10gfV0pOwpAQCAtNjI3LDYgKzY2Nyw3IEBAIFRFU1QoU09BdXRob3Jp
emF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvblN1Y2NlZWQ0KQogICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAg
IFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CiAgICAgY2hlY2tBdXRob3JpemF0
aW9uT3B0aW9ucyhmYWxzZSwgIiIsIDApOworICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNT
T1BlcmZvcm1lZCk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHJlZGlyZWN0VVJMID0gW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246
QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAgIGF1
dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRo
VVJMOnRlc3RVUkwuZ2V0KCkgc3RhdHVzQ29kZTozMDIgSFRUUFZlcnNpb246QCJIVFRQLzEuMSIg
aGVhZGVyRmllbGRzOkB7IEAiTG9jYXRpb24iIDogW3JlZGlyZWN0VVJMIGFic29sdXRlU3RyaW5n
XSB9XSk7CkBAIC02NTYsNiArNjk3LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwg
SW50ZXJjZXB0aW9uU3VjY2VlZFdpdGhPdGhlckh0dHBTdGF0dXNDb2RlKQogICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1d
OwogICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CiAgICAgY2hlY2tBdXRo
b3JpemF0aW9uT3B0aW9ucyhmYWxzZSwgIiIsIDApOworICAgIEVYUEVDVF9UUlVFKHBvbGljeUZv
ckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHJlZGlyZWN0VVJMID0g
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhFeHRl
bnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwog
ICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGlu
aXRXaXRoVVJMOnRlc3RVUkwuZ2V0KCkgc3RhdHVzQ29kZTo0MDAgSFRUUFZlcnNpb246QCJIVFRQ
LzEuMSIgaGVhZGVyRmllbGRzOm5pbF0pOwpAQCAtNjgxLDYgKzcyMyw3IEBAIFRFU1QoU09BdXRo
b3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvblN1Y2NlZWRXaXRoQ29va2llKQogICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5n
ZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CiAgICAgY2hl
Y2tBdXRob3JpemF0aW9uT3B0aW9ucyhmYWxzZSwgIiIsIDApOworICAgIEVYUEVDVF9UUlVFKHBv
bGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHJlZGlyZWN0
VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdOwogICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxs
b2NdIGluaXRXaXRoVVJMOnRlc3RVUkwuZ2V0KCkgc3RhdHVzQ29kZTozMDIgSFRUUFZlcnNpb246
QCJIVFRQLzEuMSIgaGVhZGVyRmllbGRzOkB7IEAiU2V0LUNvb2tpZSIgOiBAInNlc3Npb25pZD0z
OGFmZXM3YTg7IiwgQCJMb2NhdGlvbiIgOiBbcmVkaXJlY3RVUkwgYWJzb2x1dGVTdHJpbmddIH1d
KTsKQEAgLTcxNyw2ICs3NjAsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRl
cmNlcHRpb25TdWNjZWVkV2l0aENvb2tpZXMpCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CiAgICAgVXRpbDo6cnVu
KCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKICAgICBjaGVja0F1dGhvcml6YXRpb25PcHRpb25z
KGZhbHNlLCAiIiwgMCk7CisgICAgRVhQRUNUX1RSVUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVk
KTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gcmVkaXJlY3RVUkwgPSBbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgYXV0byByZXNwb25z
ZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGVzdFVS
TC5nZXQoKSBzdGF0dXNDb2RlOjMwMiBIVFRQVmVyc2lvbjpAIkhUVFAvMS4xIiBoZWFkZXJGaWVs
ZHM6QHsgQCJTZXQtQ29va2llIiA6IEAic2Vzc2lvbmlkPTM4YWZlczdhOCwgcXdlcnR5PTIxOWZm
d2VmOXcwZiwgaWQ9YTNmV2E7IiwgQCJMb2NhdGlvbiIgOiBbcmVkaXJlY3RVUkwgYWJzb2x1dGVT
dHJpbmddIH1dKTsKQEAgLTc2Miw2ICs4MDYsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGly
ZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkV2l0aFJlZGlyZWN0aW9uQW5kQ29va2llKQogI2VsaWYg
UExBVEZPUk0oSU9TKQogICAgIGNoZWNrQXV0aG9yaXphdGlvbk9wdGlvbnModHJ1ZSwgIm51bGwi
LCAwKTsKICNlbmRpZgorICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7
CiAKICAgICBSZXRhaW5QdHI8TlNVUkw+IHJlZGlyZWN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAgIGF1dG8gcmVzcG9uc2Ug
PSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRlc3RVUkwg
c3RhdHVzQ29kZTozMDIgSFRUUFZlcnNpb246QCJIVFRQLzEuMSIgaGVhZGVyRmllbGRzOkB7IEAi
U2V0LUNvb2tpZSIgOiBAInNlc3Npb25pZD0zOGFmZXM3YTg7IiwgQCJMb2NhdGlvbiIgOiBbcmVk
aXJlY3RVUkwgYWJzb2x1dGVTdHJpbmddIH1dKTsKQEAgLTc5NCw2ICs4MzksNyBAQCBURVNUKFNP
QXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkV2l0aERpZmZlcmVudE9y
aWdpbikKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOnRlc3RVUkwuZ2V0KCldXTsKICAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3Jt
ZWQpOwogICAgIGNoZWNrQXV0aG9yaXphdGlvbk9wdGlvbnMoZmFsc2UsICIiLCAwKTsKKyAgICBF
WFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAgYXV0byByZWRpcmVj
dFVSTCA9IFVSTChVUkwoKSwgImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIik7CiAgICAgYXV0byBy
ZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6
cmVkaXJlY3RVUkwgc3RhdHVzQ29kZTozMDIgSFRUUFZlcnNpb246QCJIVFRQLzEuMSIgaGVhZGVy
RmllbGRzOkB7IEAiTG9jYXRpb24iIDogcmVkaXJlY3RVUkwuc3RyaW5nKCkgfV0pOwpAQCAtODIw
LDEyICs4NjYsMTQgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9u
U3VjY2VlZFdpdGhXYWl0aW5nU2Vzc2lvbikKICAgICBbd2ViVmlldyByZW1vdmVGcm9tU3VwZXJ2
aWV3XTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOnRlc3RVUkwuZ2V0KCldXTsKICAgICBVdGlsOjpydW4oJm5hdmlnYXRpb25Qb2xpY3lEZWNp
ZGVkKTsKKyAgICBFWFBFQ1RfRkFMU0UocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKICAgICBF
WFBFQ1RfRkFMU0UoYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CiAKICAgICAvLyBTaG91bGQgYWN0
aXZhdGUgdGhlIHNlc3Npb24uCiAgICAgW3dlYlZpZXcgYWRkVG9UZXN0V2luZG93XTsKICAgICBV
dGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOwogICAgIGNoZWNrQXV0aG9yaXphdGlv
bk9wdGlvbnMoZmFsc2UsICIiLCAwKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09Q
ZXJmb3JtZWQpOwogCiAgICAgUmV0YWluUHRyPE5TVVJMPiByZWRpcmVjdFVSTCA9IFtbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAi
aHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICBhdXRv
IHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVS
TDp0ZXN0VVJMLmdldCgpIHN0YXR1c0NvZGU6MzAyIEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhl
YWRlckZpZWxkczpAeyBAIkxvY2F0aW9uIiA6IFtyZWRpcmVjdFVSTCBhYnNvbHV0ZVN0cmluZ10g
fV0pOwpAQCAtODU3LDYgKzkwNSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIElu
dGVyY2VwdGlvbkFib3J0ZWRXaXRoV2FpdGluZ1Nlc3Npb24pCiAgICAgW3dlYlZpZXcgcmVtb3Zl
RnJvbVN1cGVydmlld107CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMMS5nZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmbmF2aWdhdGlv
blBvbGljeURlY2lkZWQpOworICAgIEVYUEVDVF9GQUxTRShwb2xpY3lGb3JBcHBTU09QZXJmb3Jt
ZWQpOwogICAgIEVYUEVDVF9GQUxTRShhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKIAogICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTDIu
Z2V0KCldXTsKQEAgLTg2NSw2ICs5MTQsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0
LCBJbnRlcmNlcHRpb25BYm9ydGVkV2l0aFdhaXRpbmdTZXNzaW9uKQogCiAgICAgLy8gVGhlIHdh
aXRpbmcgc2Vzc2lvbiBzaG91bGQgYmUgYWJvcnRlZCBhcyB0aGUgcHJldmlvdXMgbmF2aWdhdGlv
biBpcyBvdmVyd3JpdHRlbiBieSBhIG5ldyBuYXZpZ2F0aW9uLgogICAgIFV0aWw6OnJ1bigmbmF2
aWdhdGlvbkNvbXBsZXRlZCk7CisgICAgRVhQRUNUX0ZBTFNFKHBvbGljeUZvckFwcFNTT1BlcmZv
cm1lZCk7CiAgICAgRVhQRUNUX0ZBTFNFKGF1dGhvcml6YXRpb25QZXJmb3JtZWQpOwogfQogCkBA
IC04ODUsNiArOTM1LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0
aW9uU3VjY2VlZFdpdGhBY3RpdmVTZXNzaW9uRGlkTW92ZVdpbmRvdykKICAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsK
ICAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOwogICAgIGNoZWNrQXV0aG9y
aXphdGlvbk9wdGlvbnMoZmFsc2UsICIiLCAwKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JB
cHBTU09QZXJmb3JtZWQpOwogCiAgICAgLy8gU2hvdWxkIGJlIGEgbm8gb3AuCiAgICAgW3dlYlZp
ZXcgYWRkVG9UZXN0V2luZG93XTsKQEAgLTkxNiw5ICs5NjcsMTEgQEAgVEVTVChTT0F1dGhvcml6
YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZFR3aWNlKQogCiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCAyOyBpKyspIHsKICAgICAgICAgYXV0aG9yaXphdGlvblBlcmZvcm1lZCA9IGZh
bHNlOworICAgICAgICBwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQgPSBmYWxzZTsKICAgICAgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJM
LmdldCgpXV07CiAgICAgICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CiAg
ICAgICAgIGNoZWNrQXV0aG9yaXphdGlvbk9wdGlvbnMoZmFsc2UsICIiLCAwKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgICAgICBuYXZpZ2F0
aW9uQ29tcGxldGVkID0gZmFsc2U7CiAgICAgICAgIFJldGFpblB0cjxOU1VSTD4gcmVkaXJlY3RV
UkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0
aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il07CkBAIC05NTEsMTMgKzEwMDQsMTYgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwg
SW50ZXJjZXB0aW9uU3VjY2VlZFN1cHByZXNzQWN0aXZlU2Vzc2lvbikKICAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsK
ICAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOwogICAgIGNoZWNrQXV0aG9y
aXphdGlvbk9wdGlvbnMoZmFsc2UsICIiLCAwKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JB
cHBTU09QZXJmb3JtZWQpOwogCiAgICAgLy8gU3VwcHJlc3MgdGhlIGxhc3QgYWN0aXZlIHNlc3Np
b24uCiAgICAgYXV0aG9yaXphdGlvblBlcmZvcm1lZCA9IGZhbHNlOworICAgIHBvbGljeUZvckFw
cFNTT1BlcmZvcm1lZCA9IGZhbHNlOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmYXV0
aG9yaXphdGlvbkNhbmNlbGxlZCk7CiAgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9y
bWVkKTsKICAgICBjaGVja0F1dGhvcml6YXRpb25PcHRpb25zKGZhbHNlLCAiIiwgMCk7CisgICAg
RVhQRUNUX1RSVUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIFJldGFpblB0cjxO
U1VSTD4gcmVkaXJlY3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl07CiAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGVzdFVSTC5nZXQoKSBzdGF0dXNDb2RlOjMw
MiBIVFRQVmVyc2lvbjpAIkhUVFAvMS4xIiBoZWFkZXJGaWVsZHM6QHsgQCJMb2NhdGlvbiIgOiBb
cmVkaXJlY3RVUkwgYWJzb2x1dGVTdHJpbmddIH1dKTsKQEAgLTk4OSwxNyArMTA0NSwyMCBAQCBU
RVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkU3VwcHJlc3NX
YWl0aW5nU2Vzc2lvbikKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKICAgICBVdGlsOjpydW4oJm5hdmlnYXRpb25Q
b2xpY3lEZWNpZGVkKTsKICAgICBFWFBFQ1RfRkFMU0UoYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7
CisgICAgRVhQRUNUX0ZBTFNFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICAvLyBT
dXBwcmVzcyB0aGUgbGFzdCB3YWl0aW5nIHNlc3Npb24uCiAgICAgbmF2aWdhdGlvblBvbGljeURl
Y2lkZWQgPSBmYWxzZTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKICAgICBVdGlsOjpydW4oJm5hdmlnYXRpb25Q
b2xpY3lEZWNpZGVkKTsKICAgICBFWFBFQ1RfRkFMU0UoYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7
CisgICAgRVhQRUNUX0ZBTFNFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICAvLyBB
Y3RpdmF0ZSB0aGUgbGFzdCBzZXNzaW9uLgogICAgIFt3ZWJWaWV3IGFkZFRvVGVzdFdpbmRvd107
CiAgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKICAgICBjaGVja0F1dGhv
cml6YXRpb25PcHRpb25zKGZhbHNlLCAiIiwgMCk7CisgICAgRVhQRUNUX1RSVUUocG9saWN5Rm9y
QXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIFJldGFpblB0cjxOU1VSTD4gcmVkaXJlY3RVUkwgPSBb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVu
c2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAg
ICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5p
dFdpdGhVUkw6dGVzdFVSTC5nZXQoKSBzdGF0dXNDb2RlOjMwMiBIVFRQVmVyc2lvbjpAIkhUVFAv
MS4xIiBoZWFkZXJGaWVsZHM6QHsgQCJMb2NhdGlvbiIgOiBbcmVkaXJlY3RVUkwgYWJzb2x1dGVT
dHJpbmddIH1dKTsKQEAgLTEwMzQsNiArMTA5Myw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVk
aXJlY3QsIEludGVyY2VwdGlvblN1Y2NlZWRTQU1MKQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OnJlcXVlc3QuZ2V0KCldOwogICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7
CiAgICAgY2hlY2tBdXRob3JpemF0aW9uT3B0aW9ucyhmYWxzZSwgIiIsIDApOworICAgIEVYUEVD
VF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICAvLyBQYXNzIGEgSFRUUCAy
MDAgcmVzcG9uc2Ugd2l0aCBhIGh0bWwgdG8gbWltaWMgYSBTQU1MIHJlc3BvbnNlLgogICAgIGF1
dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRo
VVJMOnRlc3RVUkwuZ2V0KCkgc3RhdHVzQ29kZToyMDAgSFRUUFZlcnNpb246QCJIVFRQLzEuMSIg
aGVhZGVyRmllbGRzOm5pbF0pOwpAQCAtMTA2Miw2ICsxMTIyLDcgQEAgVEVTVChTT0F1dGhvcml6
YXRpb25SZWRpcmVjdCwgSW50ZXJjZXB0aW9uU3VjY2VlZFNBTUxXaXRoUFNPTikKICAgICAvLyBQ
U09OOiBmaWxlOi8vLyA9PiBleGFtcGxlLmNvbQogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6KE5TVVJMICopdGVzdFVSTF1dOwogICAgIFV0aWw6
OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CisgICAgRVhQRUNUX1RSVUUocG9saWN5Rm9y
QXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIG5hdmlnYXRpb25Db21wbGV0ZWQgPSBmYWxzZTsKICAg
ICAvLyBQYXNzIGEgSFRUUCAyMDAgcmVzcG9uc2Ugd2l0aCBhIGh0bWwgdG8gbWltaWMgYSBTQU1M
IHJlc3BvbnNlLgpAQCAtMTA3MSw4ICsxMTMyLDEwIEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVk
aXJlY3QsIEludGVyY2VwdGlvblN1Y2NlZWRTQU1MV2l0aFBTT04pCiAKICAgICBhdXRob3JpemF0
aW9uUGVyZm9ybWVkID0gZmFsc2U7CiAgICAgbmF2aWdhdGlvblBvbGljeURlY2lkZWQgPSBmYWxz
ZTsKKyAgICBwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQgPSBmYWxzZTsKICAgICBbd2ViVmlldyBf
ZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOkAibG9jYXRpb24gPSAnaHR0cDov
L3d3dy5leGFtcGxlLmNvbSciIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiAgICAgVXRpbDo6cnVu
KCZuYXZpZ2F0aW9uUG9saWN5RGVjaWRlZCk7CisgICAgRVhQRUNUX1RSVUUocG9saWN5Rm9yQXBw
U1NPUGVyZm9ybWVkKTsKIH0KIAogVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgQXV0aG9y
aXphdGlvbk9wdGlvbnMpCkBAIC0xMDk0LDYgKzExNTcsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlv
blJlZGlyZWN0LCBBdXRob3JpemF0aW9uT3B0aW9ucykKICAgICBbd2ViVmlldyBldmFsdWF0ZUph
dmFTY3JpcHQ6IEAibG9jYXRpb24gPSAnaHR0cDovL3d3dy5leGFtcGxlLmNvbSciIGNvbXBsZXRp
b25IYW5kbGVyOm5pbF07CiAgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsK
ICAgICBjaGVja0F1dGhvcml6YXRpb25PcHRpb25zKHRydWUsICJodHRwOi8vd3d3LndlYmtpdC5v
cmciLCAwKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogfQog
CiBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25EaWROb3RIYW5kbGVU
d2ljZSkKQEAgLTExMTIsNiArMTE3Niw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3Qs
IEludGVyY2VwdGlvbkRpZE5vdEhhbmRsZVR3aWNlKQogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CiAgICAgVXRp
bDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lG
b3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAgLy8gVGVzdCBwYXNzZXMgaWYgbm8gY3Jhc2hlcy4K
ICAgICBbZ0RlbGVnYXRlIGF1dGhvcml6YXRpb25EaWROb3RIYW5kbGU6Z0F1dGhvcml6YXRpb25d
OwpAQCAtMTEzNCw2ICsxMTk5LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgSW50
ZXJjZXB0aW9uQ29tcGxldGVUd2ljZSkKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0aWw6OnJ1bigm
YXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CisgICAgRVhQRUNUX1RSVUUocG9saWN5Rm9yQXBwU1NP
UGVyZm9ybWVkKTsKIAogICAgIC8vIFRlc3QgcGFzc2VzIGlmIG5vIGNyYXNoZXMuCiAgICAgUmV0
YWluUHRyPE5TVVJMPiByZWRpcmVjdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAi
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKQEAgLTExNTgsNiArMTIyNCw3IEBAIFRFU1QoU09B
dXRob3JpemF0aW9uUmVkaXJlY3QsIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3lJZ25vcmUpCiAg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0
VVJMLmdldCgpXV07CiAgICAgVXRpbDo6cnVuKCZuYXZpZ2F0aW9uQ29tcGxldGVkKTsKIAorICAg
IEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAgICAgRVhQRUNUX1dLX1NU
UkVRKHRlc3RVUkwuZ2V0KCkuYWJzb2x1dGVTdHJpbmcsIGZpbmFsVVJMKTsKIH0KIApAQCAtMTE3
OCw2ICsxMjQ1LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgU09BdXRob3JpemF0
aW9uTG9hZFBvbGljeUFsbG93QXN5bmMpCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CiAgICAgVXRpbDo6cnVuKCZh
dXRob3JpemF0aW9uUGVyZm9ybWVkKTsKICAgICBjaGVja0F1dGhvcml6YXRpb25PcHRpb25zKGZh
bHNlLCAiIiwgMCk7CisgICAgRVhQRUNUX1RSVUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsK
IAogICAgIFJldGFpblB0cjxOU1VSTD4gcmVkaXJlY3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgYXV0byByZXNwb25zZSA9
IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGVzdFVSTC5n
ZXQoKSBzdGF0dXNDb2RlOjMwMiBIVFRQVmVyc2lvbjpAIkhUVFAvMS4xIiBoZWFkZXJGaWVsZHM6
QHsgQCJMb2NhdGlvbiIgOiBbcmVkaXJlY3RVUkwgYWJzb2x1dGVTdHJpbmddIH1dKTsKQEAgLTEy
MDcsNiArMTI3NSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIFNPQXV0aG9yaXph
dGlvbkxvYWRQb2xpY3lJZ25vcmVBc3luYykKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKICAgICBVdGlsOjpydW4o
Jm5hdmlnYXRpb25Db21wbGV0ZWQpOwogCisgICAgRVhQRUNUX1RSVUUocG9saWN5Rm9yQXBwU1NP
UGVyZm9ybWVkKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEodGVzdFVSTC5nZXQoKS5hYnNvbHV0ZVN0
cmluZywgZmluYWxVUkwpOwogfQogCkBAIC0xMjI5LDYgKzEyOTgsNyBAQCBURVNUKFNPQXV0aG9y
aXphdGlvblJlZGlyZWN0LCBJbnRlcmNlcHRpb25TdWNjZWVkV2l0aFVJKQogCiAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgp
XV07CiAgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKKyAgICBFWFBFQ1Rf
VFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAgYXV0byB2aWV3Q29udHJvbGxl
ciA9IGFkb3B0TlMoW1tUZXN0U09BdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgYWxsb2NdIGlu
aXRdKTsKICAgICBhdXRvIHZpZXcgPSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TWmVyb1JlY3RdKTsKQEAgLTEyNjMsNiArMTMzMyw3IEBAIFRFU1QoU09BdXRob3JpemF0
aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvbkNhbmNlbFdpdGhVSSkKIAogICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwog
ICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CisgICAgRVhQRUNUX1RSVUUo
cG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIGF1dG8gdmlld0NvbnRyb2xsZXIgPSBh
ZG9wdE5TKFtbVGVzdFNPQXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7
CiAgICAgYXV0byB2aWV3ID0gYWRvcHROUyhbW05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U1plcm9SZWN0XSk7CkBAIC0xMjk2LDYgKzEzNjcsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJl
ZGlyZWN0LCBJbnRlcmNlcHRpb25FcnJvcldpdGhVSSkKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0
aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CisgICAgRVhQRUNUX1RSVUUocG9saWN5
Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIGF1dG8gdmlld0NvbnRyb2xsZXIgPSBhZG9wdE5T
KFtbVGVzdFNPQXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7CiAgICAg
YXV0byB2aWV3ID0gYWRvcHROUyhbW05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9S
ZWN0XSk7CkBAIC0xMzI5LDYgKzE0MDEsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0
LCBJbnRlcmNlcHRpb25TdWNjZWVkU3VwcHJlc3NBY3RpdmVTZXNzaW9uV2l0aFVJKQogCiAgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJM
LmdldCgpXV07CiAgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKKyAgICBF
WFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAgYXV0byB2aWV3Q29u
dHJvbGxlciA9IGFkb3B0TlMoW1tUZXN0U09BdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgYWxs
b2NdIGluaXRdKTsKICAgICBhdXRvIHZpZXcgPSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsKQEAgLTEzNDMsNiArMTQxNiw3IEBAIFRFU1QoU09BdXRo
b3JpemF0aW9uUmVkaXJlY3QsIEludGVyY2VwdGlvblN1Y2NlZWRTdXBwcmVzc0FjdGl2ZVNlc3Np
b25XaXRoVUkpCiAgICAgYXV0aG9yaXphdGlvblBlcmZvcm1lZCA9IGZhbHNlOwogICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQo
KV1dOwogICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvbkNhbmNlbGxlZCk7CisgICAgRVhQRUNU
X1RSVUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKICAgICBVdGlsOjpydW4oJmF1dGhvcml6
YXRpb25QZXJmb3JtZWQpOwogICAgIEVYUEVDVF9GQUxTRSh1aVNob3dlZCk7CiAKQEAgLTEzNjks
NiArMTQ0Myw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIFNob3dVSVR3aWNlKQog
CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0
ZXN0VVJMLmdldCgpXV07CiAgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsK
KyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAgYXV0byB2
aWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tUZXN0U09BdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXIgYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHZpZXcgPSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsKQEAgLTE0MDcsNiArMTQ4Miw3IEBAIFRFU1Qo
U09BdXRob3JpemF0aW9uUmVkaXJlY3QsIE5TTm90aWZpY2F0aW9uQ2VudGVyKQogCiAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdl
dCgpXV07CiAgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKKyAgICBFWFBF
Q1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAgYXV0byB2aWV3Q29udHJv
bGxlciA9IGFkb3B0TlMoW1tUZXN0U09BdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgYWxsb2Nd
IGluaXRdKTsKICAgICBhdXRvIHZpZXcgPSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TWmVyb1JlY3RdKTsKQEAgLTE0MzksNiArMTUxNSw3IEBAIFRFU1QoU09BdXRob3Jp
emF0aW9uUmVkaXJlY3QsIERpc21pc3NVSUR1cmluZ01pbmlhdHVyaXphdGlvbikKIAogICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5n
ZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CisgICAgRVhQ
RUNUX1RSVUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIGF1dG8gdmlld0NvbnRy
b2xsZXIgPSBhZG9wdE5TKFtbVGVzdFNPQXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIGFsbG9j
XSBpbml0XSk7CiAgICAgYXV0byB2aWV3ID0gYWRvcHROUyhbW05TVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU1plcm9SZWN0XSk7CkBAIC0xNDgxLDYgKzE1NTgsNyBAQCBURVNUKFNPQXV0aG9y
aXphdGlvblJlZGlyZWN0LCBEaXNtaXNzVUlEdXJpbmdIaWRpbmcpCiAKICAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsK
ICAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOworICAgIEVYUEVDVF9UUlVF
KHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICBhdXRvIHZpZXdDb250cm9sbGVyID0g
YWRvcHROUyhbW1Rlc3RTT0F1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0p
OwogICAgIGF1dG8gdmlldyA9IGFkb3B0TlMoW1tOU1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNaZXJvUmVjdF0pOwpAQCAtMTUyMyw2ICsxNjAxLDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25S
ZWRpcmVjdCwgRGlzbWlzc1VJRHVyaW5nTWluaWF0dXJpemF0aW9uVGhlbkFub3RoZXIpCiAKICAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RV
UkwuZ2V0KCldXTsKICAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOworICAg
IEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICBhdXRvIHZpZXdD
b250cm9sbGVyMSA9IGFkb3B0TlMoW1tUZXN0U09BdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIg
YWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHZpZXcxID0gYWRvcHROUyhbW05TVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSk7CkBAIC0xNTQ2LDggKzE2MjUsMTAgQEAgVEVTVChT
T0F1dGhvcml6YXRpb25SZWRpcmVjdCwgRGlzbWlzc1VJRHVyaW5nTWluaWF0dXJpemF0aW9uVGhl
bkFub3RoZXIpCiAKICAgICAvLyBMb2FkIGFub3RoZXIgQXBwU1NPIHJlcXVlc3QuCiAgICAgYXV0
aG9yaXphdGlvblBlcmZvcm1lZCA9IGZhbHNlOworICAgIHBvbGljeUZvckFwcFNTT1BlcmZvcm1l
ZCA9IGZhbHNlOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBl
cmZvcm1lZCk7CisgICAgRVhQRUNUX1RSVUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAog
ICAgIC8vIFVJIGlzIG9ubHkgZGltaXNzZWQgYWZ0ZXIgdGhlIGhvc3RBcHAgaXMgdW5oaWRkZW4u
CiAgICAgW2hvc3RXaW5kb3cgZGVtaW5pYXR1cml6ZTpob3N0V2luZG93XTsKQEAgLTE1NzAsNiAr
MTY1MSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIERpc21pc3NVSUR1cmluZ0hp
ZGluZ1RoZW5Bbm90aGVyKQogCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CiAgICAgVXRpbDo6cnVuKCZhdXRob3Jp
emF0aW9uUGVyZm9ybWVkKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3Jt
ZWQpOwogCiAgICAgYXV0byB2aWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tUZXN0U09BdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHZpZXcgPSBhZG9w
dE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsKQEAgLTE1OTMs
OCArMTY3NSwxMCBAQCBURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBEaXNtaXNzVUlEdXJp
bmdIaWRpbmdUaGVuQW5vdGhlcikKIAogICAgIC8vIExvYWQgYW5vdGhlciBBcHBTU08gcmVxdWVz
dC4KICAgICBhdXRob3JpemF0aW9uUGVyZm9ybWVkID0gZmFsc2U7CisgICAgcG9saWN5Rm9yQXBw
U1NPUGVyZm9ybWVkID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CiAgICAgVXRpbDo6cnVuKCZhdXRo
b3JpemF0aW9uUGVyZm9ybWVkKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJm
b3JtZWQpOwogCiAgICAgLy8gVUkgaXMgb25seSBkaW1pc3NlZCBhZnRlciB0aGUgaG9zdEFwcCBp
cyB1bmhpZGRlbi4KICAgICBbTlNBcHAgdW5oaWRlOk5TQXBwXTsKQEAgLTE2MjUsNiArMTcwOSw3
IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUG9wVXAsIE5vSW50ZXJjZXB0aW9ucykKICNlbmRpZgog
ICAgIFV0aWw6OnJ1bigmbmV3V2luZG93Q3JlYXRlZCk7CiAgICAgVXRpbDo6cnVuKCZuYXZpZ2F0
aW9uQ29tcGxldGVkKTsKKyAgICBFWFBFQ1RfRkFMU0UocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVk
KTsKICAgICBFWFBFQ1RfV0tfU1RSRVEodGVzdFVSTC5nZXQoKS5hYnNvbHV0ZVN0cmluZywgZmlu
YWxVUkwpOwogfQogCkBAIC0xNjUzLDYgKzE3MzgsNyBAQCBURVNUKFNPQXV0aG9yaXphdGlvblBv
cFVwLCBOb0ludGVyY2VwdGlvbnNTdWJGcmFtZSkKICAgICAvLyBUaGUgbmV3IHdpbmRvdyB3aWxs
IG5vdCBuYXZpZ2F0ZSB0byB0aGUgdGVzdFVSTCBhcyB0aGUgaWZyYW1lIGhhcyB1bmlxdWUgb3Jp
Z2luLgogICAgIFt3ZWJWaWV3IHNlbmRDbGlja3NBdFBvaW50Ok5TTWFrZVBvaW50KDIwMCwgMjAw
KSBudW1iZXJPZkNsaWNrczoxXTsKICAgICBVdGlsOjpydW4oJm5ld1dpbmRvd0NyZWF0ZWQpOwor
ICAgIEVYUEVDVF9GQUxTRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogICAgIEVYUEVDVF9G
QUxTRShhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKIH0KICNlbmRpZgpAQCAtMTY3Niw2ICsxNzYy
LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgTm9JbnRlcmNlcHRpb25zV2l0aG91dFVz
ZXJHZXN0dXJlKQogICAgIFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdl
c3R1cmU6IEAid2luZG93Lm9wZW4oJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb20nKSIgY29tcGxldGlv
bkhhbmRsZXI6bmlsXTsKICAgICBVdGlsOjpydW4oJm5ld1dpbmRvd0NyZWF0ZWQpOwogICAgIEVY
UEVDVF9GQUxTRShhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKKyAgICBFWFBFQ1RfRkFMU0UocG9s
aWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIH0KIAogVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwg
SW50ZXJjZXB0aW9uRXJyb3IpCkBAIC0xNzA1LDE0ICsxNzkyLDE3IEBAIFRFU1QoU09BdXRob3Jp
emF0aW9uUG9wVXAsIEludGVyY2VwdGlvbkVycm9yKQogI2VuZGlmCiAgICAgVXRpbDo6cnVuKCZh
dXRob3JpemF0aW9uUGVyZm9ybWVkKTsKICAgICBjaGVja0F1dGhvcml6YXRpb25PcHRpb25zKHRy
dWUsICJmaWxlOi8vIiwgMSk7CisgICAgRVhQRUNUX1RSVUUocG9saWN5Rm9yQXBwU1NPUGVyZm9y
bWVkKTsKIAogICAgIGF1dGhvcml6YXRpb25QZXJmb3JtZWQgPSBmYWxzZTsKICAgICBuYXZpZ2F0
aW9uQ29tcGxldGVkID0gZmFsc2U7CisgICAgcG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkID0gZmFs
c2U7CiAgICAgW2dEZWxlZ2F0ZSBhdXRob3JpemF0aW9uOmdBdXRob3JpemF0aW9uIGRpZENvbXBs
ZXRlV2l0aEVycm9yOmFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpOU0Nv
Y29hRXJyb3JEb21haW4gY29kZTowIHVzZXJJbmZvOm5pbF0pLmdldCgpXTsKICAgICBVdGlsOjpy
dW4oJm5ld1dpbmRvd0NyZWF0ZWQpOwogICAgIFV0aWw6OnJ1bigmbmF2aWdhdGlvbkNvbXBsZXRl
ZCk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKHRlc3RVUkwuZ2V0KCkuYWJzb2x1dGVTdHJpbmcsIGZp
bmFsVVJMKTsKICAgICBFWFBFQ1RfRkFMU0UoYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7IC8vIERv
bid0IGludGVyY2VwdCB0aGUgZmlyc3QgbmF2aWdhdGlvbiBpbiB0aGUgbmV3IHdpbmRvdy4KKyAg
ICBFWFBFQ1RfRkFMU0UocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIH0KIAogVEVTVChTT0F1
dGhvcml6YXRpb25Qb3BVcCwgSW50ZXJjZXB0aW9uQ2FuY2VsKQpAQCAtMTc0MSw2ICsxODMxLDcg
QEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgSW50ZXJjZXB0aW9uQ2FuY2VsKQogI2VuZGlm
CiAgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKICAgICBjaGVja0F1dGhv
cml6YXRpb25PcHRpb25zKHRydWUsICJmaWxlOi8vIiwgMSk7CisgICAgRVhQRUNUX1RSVUUocG9s
aWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIC8vIFRoZSBzZWNyZXQgV0tXZWJWaWV3IG5l
ZWRzIHRvIGJlIGRlc3Ryb3llZCByaWdodCB0aGUgd2F5LgogICAgIEBhdXRvcmVsZWFzZXBvb2wg
ewpAQCAtMTc3NSw2ICsxODY2LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgSW50ZXJj
ZXB0aW9uU3VjY2VlZENsb3NlQnlJdHNlbGYpCiAjZW5kaWYKICAgICBVdGlsOjpydW4oJmF1dGhv
cml6YXRpb25QZXJmb3JtZWQpOwogICAgIGNoZWNrQXV0aG9yaXphdGlvbk9wdGlvbnModHJ1ZSwg
ImZpbGU6Ly8iLCAxKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQp
OwogCiAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxv
Y10gaW5pdFdpdGhVUkw6dGVzdFVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjpAIkhUVFAv
MS4xIiBoZWFkZXJGaWVsZHM6bmlsXSk7CiAgICAgYXV0byByZXNvbnNlSHRtbENTdHJpbmcgPSBn
ZW5lcmF0ZUh0bWwobmV3V2luZG93UmVzcG9uc2VUZW1wbGF0ZSwgIndpbmRvdy5jbG9zZSgpOyIp
LnV0ZjgoKTsgLy8gVGhlIHBvcCB1cCBjbG9zZXMgaXRzZWxmLgpAQCAtMTgxMiw2ICsxOTA0LDcg
QEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgSW50ZXJjZXB0aW9uU3VjY2VlZENsb3NlQnlQ
YXJlbnQpCiAjZW5kaWYKICAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOwog
ICAgIGNoZWNrQXV0aG9yaXphdGlvbk9wdGlvbnModHJ1ZSwgImZpbGU6Ly8iLCAxKTsKKyAgICBF
WFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAgYXV0byByZXNwb25z
ZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGVzdFVS
TCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjpAIkhUVFAvMS4xIiBoZWFkZXJGaWVsZHM6bmls
XSk7CiAgICAgYXV0byByZXNvbnNlSHRtbENTdHJpbmcgPSBnZW5lcmF0ZUh0bWwobmV3V2luZG93
UmVzcG9uc2VUZW1wbGF0ZSwgIiIpLnV0ZjgoKTsKQEAgLTE4NDksNiArMTk0Miw3IEBAIFRFU1Qo
U09BdXRob3JpemF0aW9uUG9wVXAsIEludGVyY2VwdGlvblN1Y2NlZWRDbG9zZUJ5V2ViS2l0KQog
I2VuZGlmCiAgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKICAgICBjaGVj
a0F1dGhvcml6YXRpb25PcHRpb25zKHRydWUsICJmaWxlOi8vIiwgMSk7CisgICAgRVhQRUNUX1RS
VUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9w
dE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRlc3RVUkwgc3RhdHVz
Q29kZToyMDAgSFRUUFZlcnNpb246QCJIVFRQLzEuMSIgaGVhZGVyRmllbGRzOm5pbF0pOwogICAg
IGF1dG8gcmVzb25zZUh0bWxDU3RyaW5nID0gZ2VuZXJhdGVIdG1sKG5ld1dpbmRvd1Jlc3BvbnNl
VGVtcGxhdGUsICIiKS51dGY4KCk7CkBAIC0xODg3LDEwICsxOTgxLDEyIEBAIFRFU1QoU09BdXRo
b3JpemF0aW9uUG9wVXAsIEludGVyY2VwdGlvblN1Y2NlZWRXaXRoT3RoZXJIdHRwU3RhdHVzQ29k
ZSkKICNlbmRpZgogICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CiAgICAg
Y2hlY2tBdXRob3JpemF0aW9uT3B0aW9ucyh0cnVlLCAiZmlsZTovLyIsIDEpOworICAgIEVYUEVD
VF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICAvLyBXaWxsIGZhbGxiYWNr
IHRvIHdlYiBwYXRoLgogICAgIG5hdmlnYXRpb25Db21wbGV0ZWQgPSBmYWxzZTsKICAgICBhdXRo
b3JpemF0aW9uUGVyZm9ybWVkID0gZmFsc2U7CisgICAgcG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVk
ID0gZmFsc2U7CiAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25z
ZSBhbGxvY10gaW5pdFdpdGhVUkw6dGVzdFVSTC5nZXQoKSBzdGF0dXNDb2RlOjQwMCBIVFRQVmVy
c2lvbjpAIkhUVFAvMS4xIiBoZWFkZXJGaWVsZHM6bmlsXSk7CiAgICAgYXV0byByZXNvbnNlSHRt
bENTdHJpbmcgPSBnZW5lcmF0ZUh0bWwobmV3V2luZG93UmVzcG9uc2VUZW1wbGF0ZSwgIiIpLnV0
ZjgoKTsKICAgICBbZ0RlbGVnYXRlIGF1dGhvcml6YXRpb246Z0F1dGhvcml6YXRpb24gZGlkQ29t
cGxldGVXaXRoSFRUUFJlc3BvbnNlOnJlc3BvbnNlLmdldCgpIGh0dHBCb2R5OmFkb3B0TlMoW1tO
U0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6cmVzb25zZUh0bWxDU3RyaW5nLmRhdGEoKSBsZW5n
dGg6cmVzb25zZUh0bWxDU3RyaW5nLmxlbmd0aCgpXSkuZ2V0KCldOwpAQCAtMTg5OCw2ICsxOTk0
LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgSW50ZXJjZXB0aW9uU3VjY2VlZFdpdGhP
dGhlckh0dHBTdGF0dXNDb2RlKQogICAgIFV0aWw6OnJ1bigmbmF2aWdhdGlvbkNvbXBsZXRlZCk7
CiAgICAgRVhQRUNUX1dLX1NUUkVRKHRlc3RVUkwuZ2V0KCkuYWJzb2x1dGVTdHJpbmcsIGZpbmFs
VVJMKTsKICAgICBFWFBFQ1RfRkFMU0UoYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CisgICAgRVhQ
RUNUX0ZBTFNFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiB9CiAKIC8vIFNldHRpbmcgY29v
a2llIGlzIGVuc3VyZWQgYnkgb3RoZXIgdGVzdHMuIEhlcmUgaXMgdG8gY292ZXIgaWYgdGhlIHdo
b2xlIGF1dGhlbnRpY2F0aW9uIGhhbmRzaGFrZSBjYW4gYmUgY29tcGxldGVkLgpAQCAtMTkyNyw2
ICsyMDI0LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgSW50ZXJjZXB0aW9uU3VjY2Vl
ZFdpdGhDb29raWUpCiAjZW5kaWYKICAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3Jt
ZWQpOwogICAgIGNoZWNrQXV0aG9yaXphdGlvbk9wdGlvbnModHJ1ZSwgImZpbGU6Ly8iLCAxKTsK
KyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAgYXV0byBy
ZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6
dGVzdFVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjpAIkhUVFAvMS4xIiBoZWFkZXJGaWVs
ZHM6QHsgQCJTZXQtQ29va2llIiA6IEAic2Vzc2lvbmlkPTM4YWZlczdhODsifV0pOwogICAgIGF1
dG8gcmVzb25zZUh0bWxDU3RyaW5nID0gZ2VuZXJhdGVIdG1sKG5ld1dpbmRvd1Jlc3BvbnNlVGVt
cGxhdGUsICIiKS51dGY4KCk7CkBAIC0xOTU5LDYgKzIwNTcsNyBAQCBURVNUKFNPQXV0aG9yaXph
dGlvblBvcFVwLCBJbnRlcmNlcHRpb25TdWNjZWVkVHdpY2UpCiAKICAgICBmb3IgKGludCBpID0g
MDsgaSA8IDI7IGkrKykgewogICAgICAgICBhdXRob3JpemF0aW9uUGVyZm9ybWVkID0gZmFsc2U7
CisgICAgICAgIHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCA9IGZhbHNlOwogI2lmIFBMQVRGT1JN
KE1BQykKICAgICAgICAgW3dlYlZpZXcgc2VuZENsaWNrc0F0UG9pbnQ6TlNNYWtlUG9pbnQoMjAw
LCAyMDApIG51bWJlck9mQ2xpY2tzOjFdOwogI2VsaWYgUExBVEZPUk0oSU9TKQpAQCAtMTk2Niw2
ICsyMDY1LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgSW50ZXJjZXB0aW9uU3VjY2Vl
ZFR3aWNlKQogI2VuZGlmCiAgICAgICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1l
ZCk7CiAgICAgICAgIGNoZWNrQXV0aG9yaXphdGlvbk9wdGlvbnModHJ1ZSwgImZpbGU6Ly8iLCAx
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAg
ICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDp0ZXN0VVJMIHN0YXR1c0NvZGU6MjAwIEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEi
IGhlYWRlckZpZWxkczpuaWxdKTsKICAgICAgICAgYXV0byByZXNvbnNlSHRtbENTdHJpbmcgPSBn
ZW5lcmF0ZUh0bWwobmV3V2luZG93UmVzcG9uc2VUZW1wbGF0ZSwgIiIpLnV0ZjgoKTsKQEAgLTIw
MDUsNiArMjEwNSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUG9wVXAsIEludGVyY2VwdGlvblN1
Y2NlZWRTdXBwcmVzc0FjdGl2ZVNlc3Npb24pCiAjZW5kaWYKICAgICBVdGlsOjpydW4oJmF1dGhv
cml6YXRpb25QZXJmb3JtZWQpOwogICAgIGNoZWNrQXV0aG9yaXphdGlvbk9wdGlvbnModHJ1ZSwg
ImZpbGU6Ly8iLCAxKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQp
OwogCiAgICAgLy8gU3VwcHJlc3MgdGhlIGxhc3QgYWN0aXZlIHNlc3Npb24uCiAgICAgYXV0byBu
ZXdXZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCA0MDAsIDQwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3LmdldCgpLmNv
bmZpZ3VyYXRpb25dKTsKQEAgLTIwMTUsNiArMjExNiw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9u
UG9wVXAsIEludGVyY2VwdGlvblN1Y2NlZWRTdXBwcmVzc0FjdGl2ZVNlc3Npb24pCiAgICAgVXRp
bDo6cnVuKCZuYXZpZ2F0aW9uQ29tcGxldGVkKTsKIAogICAgIGF1dGhvcml6YXRpb25QZXJmb3Jt
ZWQgPSBmYWxzZTsKKyAgICBwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQgPSBmYWxzZTsKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgW25ld1dlYlZpZXcgc2VuZENsaWNrc0F0UG9pbnQ6TlNNYWtlUG9p
bnQoMjAwLCAyMDApIG51bWJlck9mQ2xpY2tzOjFdOwogI2VsaWYgUExBVEZPUk0oSU9TKQpAQCAt
MjAyMyw2ICsyMTI1LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgSW50ZXJjZXB0aW9u
U3VjY2VlZFN1cHByZXNzQWN0aXZlU2Vzc2lvbikKICAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRp
b25DYW5jZWxsZWQpOwogICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CiAg
ICAgY2hlY2tBdXRob3JpemF0aW9uT3B0aW9ucyh0cnVlLCAiZmlsZTovLyIsIDEpOworICAgIEVY
UEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICBuYXZpZ2F0aW9uQ29t
cGxldGVkID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OiBAIm5ld1dp
bmRvdyIgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKikgewpAQCAtMjA2
Nyw2ICsyMTcwLDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgSW50ZXJjZXB0aW9uU3Vj
Y2VlZE5ld1dpbmRvd05hdmlnYXRpb24pCiAjZW5kaWYKICAgICBVdGlsOjpydW4oJmF1dGhvcml6
YXRpb25QZXJmb3JtZWQpOwogICAgIGNoZWNrQXV0aG9yaXphdGlvbk9wdGlvbnModHJ1ZSwgImZp
bGU6Ly8iLCAxKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwog
CiAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10g
aW5pdFdpdGhVUkw6dGVzdFVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjpAIkhUVFAvMS4x
IiBoZWFkZXJGaWVsZHM6bmlsXSk7CiAgICAgYXV0byByZXNvbnNlSHRtbENTdHJpbmcgPSBnZW5l
cmF0ZUh0bWwobmV3V2luZG93UmVzcG9uc2VUZW1wbGF0ZSwgIiIpLnV0ZjgoKTsKQEAgLTIxMDMs
NiArMjIwNyw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uUG9wVXAsIEF1dGhvcml6YXRpb25PcHRp
b25zKQogI2VuZGlmCiAgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKICAg
ICBjaGVja0F1dGhvcml6YXRpb25PcHRpb25zKHRydWUsICJodHRwOi8vd3d3LndlYmtpdC5vcmci
LCAxKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQpOwogfQogCiBU
RVNUKFNPQXV0aG9yaXphdGlvblBvcFVwLCBTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5SWdub3Jl
KQpAQCAtMjEyOSw2ICsyMjM0LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgU09BdXRo
b3JpemF0aW9uTG9hZFBvbGljeUlnbm9yZSkKICNlbmRpZgogICAgIFV0aWw6OnJ1bigmbmV3V2lu
ZG93Q3JlYXRlZCk7CiAgICAgRVhQRUNUX0ZBTFNFKGF1dGhvcml6YXRpb25QZXJmb3JtZWQpOwor
ICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiB9CiAKIFRFU1QoU09B
dXRob3JpemF0aW9uUG9wVXAsIFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3lBbGxvd0FzeW5jKQpA
QCAtMjE1OCw2ICsyMjY0LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgU09BdXRob3Jp
emF0aW9uTG9hZFBvbGljeUFsbG93QXN5bmMpCiAjZW5kaWYKICAgICBVdGlsOjpydW4oJmF1dGhv
cml6YXRpb25QZXJmb3JtZWQpOwogICAgIGNoZWNrQXV0aG9yaXphdGlvbk9wdGlvbnModHJ1ZSwg
ImZpbGU6Ly8iLCAxKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQp
OwogCiAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxv
Y10gaW5pdFdpdGhVUkw6dGVzdFVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjpAIkhUVFAv
MS4xIiBoZWFkZXJGaWVsZHM6bmlsXSk7CiAgICAgYXV0byByZXNvbnNlSHRtbENTdHJpbmcgPSBn
ZW5lcmF0ZUh0bWwobmV3V2luZG93UmVzcG9uc2VUZW1wbGF0ZSwgIndpbmRvdy5jbG9zZSgpOyIp
LnV0ZjgoKTsgLy8gVGhlIHBvcCB1cCBjbG9zZXMgaXRzZWxmLgpAQCAtMjE5NSw2ICsyMzAyLDcg
QEAgVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeUln
bm9yZUFzeW5jKQogI2VuZGlmCiAgICAgVXRpbDo6cnVuKCZuZXdXaW5kb3dDcmVhdGVkKTsKICAg
ICBFWFBFQ1RfRkFMU0UoYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CisgICAgRVhQRUNUX1RSVUUo
cG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIH0KIAogVEVTVChTT0F1dGhvcml6YXRpb25TdWJG
cmFtZSwgTm9JbnRlcmNlcHRpb25zKQpAQCAtMjIxMCw2ICsyMzE4LDcgQEAgVEVTVChTT0F1dGhv
cml6YXRpb25TdWJGcmFtZSwgTm9JbnRlcmNlcHRpb25zKQogCiAgICAgW3dlYlZpZXcgbG9hZEhU
TUxTdHJpbmc6dGVzdEh0bWwgYmFzZVVSTDpiYXNlVVJMLmdldCgpXTsKICAgICBbd2ViVmlldyB3
YWl0Rm9yTWVzc2FnZTpAIiJdOworICAgIEVYUEVDVF9GQUxTRShwb2xpY3lGb3JBcHBTU09QZXJm
b3JtZWQpOwogfQogCiBURVNUKFNPQXV0aG9yaXphdGlvblN1YkZyYW1lLCBOb0ludGVyY2VwdGlv
bnNOb25BcHBsZUZpcnN0UGFydHlNYWluRnJhbWUpCkBAIC0yMjMxLDYgKzIzNDAsNyBAQCBURVNU
KFNPQXV0aG9yaXphdGlvblN1YkZyYW1lLCBOb0ludGVyY2VwdGlvbnNOb25BcHBsZUZpcnN0UGFy
dHlNYWluRnJhbWUpCiAgICAgVXRpbDo6c2xlZXAoMC41KTsKICAgICAvLyBNYWtlIHN1cmUgd2Ug
ZG9uJ3QgaW50ZXJjZXB0IHRoZSBpZnJhbWUuCiAgICAgRVhQRUNUX0ZBTFNFKGF1dGhvcml6YXRp
b25QZXJmb3JtZWQpOworICAgIEVYUEVDVF9GQUxTRShwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQp
OwogfQogCiBURVNUKFNPQXV0aG9yaXphdGlvblN1YkZyYW1lLCBJbnRlcmNlcHRpb25FcnJvcikK
QEAgLTIyNTQsNiArMjM2NCw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUsIEludGVy
Y2VwdGlvbkVycm9yKQogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAibnVsbCJdOwogICAg
IFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU09BdXRob3JpemF0aW9uRGlkU3RhcnQiXTsKICAg
ICBjaGVja0F1dGhvcml6YXRpb25PcHRpb25zKGZhbHNlLCAiZmlsZTovLyIsIDIpOworICAgIEVY
UEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICBbZ0RlbGVnYXRlIGF1
dGhvcml6YXRpb246Z0F1dGhvcml6YXRpb24gZGlkQ29tcGxldGVXaXRoRXJyb3I6YWRvcHROUyhb
W05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOk5TQ29jb2FFcnJvckRvbWFpbiBjb2RlOjAg
dXNlckluZm86bmlsXSkuZ2V0KCldOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAibnVs
bCJdOwpAQCAtMjI4Niw2ICsyMzk3LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwg
SW50ZXJjZXB0aW9uQ2FuY2VsKQogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAibnVsbCJd
OwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU09BdXRob3JpemF0aW9uRGlkU3RhcnQi
XTsKICAgICBjaGVja0F1dGhvcml6YXRpb25PcHRpb25zKGZhbHNlLCAiZmlsZTovLyIsIDIpOwor
ICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICBbZ0RlbGVn
YXRlIGF1dGhvcml6YXRpb25EaWRDYW5jZWw6Z0F1dGhvcml6YXRpb25dOwogICAgIFt3ZWJWaWV3
IHdhaXRGb3JNZXNzYWdlOkAibnVsbCJdOwpAQCAtMjMxNyw2ICsyNDI5LDcgQEAgVEVTVChTT0F1
dGhvcml6YXRpb25TdWJGcmFtZSwgSW50ZXJjZXB0aW9uU3VjY2VzcykKICAgICBbd2ViVmlldyB3
YWl0Rm9yTWVzc2FnZTpAImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iXTsKICAgICBbd2ViVmlldyB3
YWl0Rm9yTWVzc2FnZTpAIlNPQXV0aG9yaXphdGlvbkRpZFN0YXJ0Il07CiAgICAgY2hlY2tBdXRo
b3JpemF0aW9uT3B0aW9ucyhmYWxzZSwgIm51bGwiLCAyKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xp
Y3lGb3JBcHBTU09QZXJmb3JtZWQpOwogCiAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tO
U0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGVzdFVSTCBzdGF0dXNDb2RlOjIw
MCBIVFRQVmVyc2lvbjpAIkhUVFAvMS4xIiBoZWFkZXJGaWVsZHM6bmlsXSk7CiAgICAgYXV0byBp
ZnJhbWVIdG1sQ1N0cmluZyA9IGdlbmVyYXRlSHRtbChpZnJhbWVUZW1wbGF0ZSwgIiIpLnV0Zjgo
KTsKQEAgLTIzNDYsNiArMjQ1OSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUsIElu
dGVyY2VwdGlvblN1Y2NlZWRXaXRoT3RoZXJIdHRwU3RhdHVzQ29kZSkKICAgICBbd2ViVmlldyB3
YWl0Rm9yTWVzc2FnZTpAIm51bGwiXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlNP
QXV0aG9yaXphdGlvbkRpZFN0YXJ0Il07CiAgICAgY2hlY2tBdXRob3JpemF0aW9uT3B0aW9ucyhm
YWxzZSwgImZpbGU6Ly8iLCAyKTsKKyAgICBFWFBFQ1RfVFJVRShwb2xpY3lGb3JBcHBTU09QZXJm
b3JtZWQpOwogCiAgICAgLy8gV2lsbCBmYWxsYmFjayB0byB3ZWIgcGF0aC4KICAgICBhdXRvIHJl
c3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0
ZXN0VVJMLmdldCgpIHN0YXR1c0NvZGU6NDAwIEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhlYWRl
ckZpZWxkczpuaWxdKTsKQEAgLTIzODEsNiArMjQ5NSw3IEBAIFRFU1QoU09BdXRob3JpemF0aW9u
U3ViRnJhbWUsIEludGVyY2VwdGlvblN1Y2NlZWRXaXRoQ29va2llKQogICAgIFt3ZWJWaWV3IHdh
aXRGb3JNZXNzYWdlOkAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSJdOwogICAgIFt3ZWJWaWV3IHdh
aXRGb3JNZXNzYWdlOkAiU09BdXRob3JpemF0aW9uRGlkU3RhcnQiXTsKICAgICBjaGVja0F1dGhv
cml6YXRpb25PcHRpb25zKGZhbHNlLCAibnVsbCIsIDIpOworICAgIEVYUEVDVF9UUlVFKHBvbGlj
eUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05T
SFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0ZXN0VVJMIHN0YXR1c0NvZGU6MjAw
IEhUVFBWZXJzaW9uOkAiSFRUUC8xLjEiIGhlYWRlckZpZWxkczpAeyBAIlNldC1Db29raWUiIDog
QCJzZXNzaW9uaWQ9MzhhZmVzN2E4OyJ9XSk7CiAgICAgYXV0byBpZnJhbWVIdG1sQ1N0cmluZyA9
IGdlbmVyYXRlSHRtbChpZnJhbWVUZW1wbGF0ZSwgIiIpLnV0ZjgoKTsKQEAgLTI0MDgsMTEgKzI1
MjMsMTMgQEAgVEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgSW50ZXJjZXB0aW9uU3VjY2Vz
c1R3aWNlKQogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKSB7CiAgICAgICAgIGF1dGhv
cml6YXRpb25QZXJmb3JtZWQgPSBmYWxzZTsKICAgICAgICAgbmF2aWdhdGlvbkNvbXBsZXRlZCA9
IGZhbHNlOworICAgICAgICBwb2xpY3lGb3JBcHBTU09QZXJmb3JtZWQgPSBmYWxzZTsKIAogICAg
ICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzp0ZXN0SHRtbCBiYXNlVVJMOm5pbF07CiAgICAg
ICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSJdOwog
ICAgICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlNPQXV0aG9yaXphdGlvbkRpZFN0YXJ0
Il07CiAgICAgICAgIGNoZWNrQXV0aG9yaXphdGlvbk9wdGlvbnMoZmFsc2UsICJudWxsIiwgMik7
CisgICAgICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICAg
ICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5p
dFdpdGhVUkw6dGVzdFVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjpAIkhUVFAvMS4xIiBo
ZWFkZXJGaWVsZHM6bmlsXSk7CiAgICAgICAgIGF1dG8gaWZyYW1lSHRtbENTdHJpbmcgPSBnZW5l
cmF0ZUh0bWwoaWZyYW1lVGVtcGxhdGUsICIiKS51dGY4KCk7CkBAIC0yNDYzLDYgKzI1ODAsMTEg
QEAgVEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgU09BdXRob3JpemF0aW9uTG9hZFBvbGlj
eUlnbm9yZSkKICAgICBVdGlsOjpzbGVlcCgwLjUpOwogICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24n
dCBpbnRlcmNlcHQgdGhlIGlmcmFtZS4KICAgICBFWFBFQ1RfRkFMU0UoYXV0aG9yaXphdGlvblBl
cmZvcm1lZCk7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIEVYUEVDVF9UUlVFKHBvbGljeUZvckFw
cFNTT1BlcmZvcm1lZCk7CisjZWxzZQorICAgIEVYUEVDVF9GQUxTRShwb2xpY3lGb3JBcHBTU09Q
ZXJmb3JtZWQpOworI2VuZGlmCiB9CiAKIFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUsIFNP
QXV0aG9yaXphdGlvbkxvYWRQb2xpY3lBbGxvd0FzeW5jKQpAQCAtMjQ4Niw2ICsyNjA4LDcgQEAg
VEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeUFs
bG93QXN5bmMpCiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJodHRwOi8vd3d3LmV4YW1w
bGUuY29tIl07CiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTT0F1dGhvcml6YXRpb25E
aWRTdGFydCJdOwogICAgIGNoZWNrQXV0aG9yaXphdGlvbk9wdGlvbnMoZmFsc2UsICJudWxsIiwg
Mik7CisgICAgRVhQRUNUX1RSVUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIGF1
dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRo
VVJMOnRlc3RVUkwgc3RhdHVzQ29kZToyMDAgSFRUUFZlcnNpb246QCJIVFRQLzEuMSIgaGVhZGVy
RmllbGRzOm5pbF0pOwogICAgIGF1dG8gaWZyYW1lSHRtbENTdHJpbmcgPSBnZW5lcmF0ZUh0bWwo
aWZyYW1lVGVtcGxhdGUsICIiKS51dGY4KCk7CkBAIC0yNTE0LDYgKzI2MzcsMTEgQEAgVEVTVChT
T0F1dGhvcml6YXRpb25TdWJGcmFtZSwgU09BdXRob3JpemF0aW9uTG9hZFBvbGljeUlnbm9yZUFz
eW5jKQogICAgIFV0aWw6OnNsZWVwKDAuNSk7CiAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGlu
dGVyY2VwdCB0aGUgaWZyYW1lLgogICAgIEVYUEVDVF9GQUxTRShhdXRob3JpemF0aW9uUGVyZm9y
bWVkKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgRVhQRUNUX1RSVUUocG9saWN5Rm9yQXBwU1NP
UGVyZm9ybWVkKTsKKyNlbHNlCisgICAgRVhQRUNUX0ZBTFNFKHBvbGljeUZvckFwcFNTT1BlcmZv
cm1lZCk7CisjZW5kaWYKIH0KIAogVEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgSW50ZXJj
ZXB0aW9uRXJyb3JXaXRoUmVmZXJyZXIpCkBAIC0yNTU1LDYgKzI2ODMsNyBAQCBURVNUKFNPQXV0
aG9yaXphdGlvblN1YkZyYW1lLCBJbnRlcmNlcHRpb25FcnJvcldpdGhSZWZlcnJlcikKICAgICBb
d2ViVmlldyBfbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzooaWQpb3JpZ2luXV0gc2hvdWxkT3BlbkV4dGVybmFsVVJMczpOT107CiAg
ICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6KGlkKW9yaWdpbl07CiAgICAgW3dlYlZpZXcgd2Fp
dEZvck1lc3NhZ2U6QCJTT0F1dGhvcml6YXRpb25EaWRTdGFydCJdOworICAgIEVYUEVDVF9UUlVF
KHBvbGljeUZvckFwcFNTT1BlcmZvcm1lZCk7CiAKICAgICBbZ0RlbGVnYXRlIGF1dGhvcml6YXRp
b246Z0F1dGhvcml6YXRpb24gZGlkQ29tcGxldGVXaXRoRXJyb3I6YWRvcHROUyhbW05TRXJyb3Ig
YWxsb2NdIGluaXRXaXRoRG9tYWluOk5TQ29jb2FFcnJvckRvbWFpbiBjb2RlOjAgdXNlckluZm86
bmlsXSkuZ2V0KCldOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOihpZClvcmlnaW5dOwpA
QCAtMjU4NSw2ICsyNzE0LDcgQEAgVEVTVChTT0F1dGhvcml6YXRpb25TdWJGcmFtZSwgSW50ZXJj
ZXB0aW9uRXJyb3JNZXNzYWdlT3JkZXIpCiAKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzp0
ZXN0SHRtbCBiYXNlVVJMOmJhc2VVUkwuZ2V0KCldOwogICAgIFV0aWw6OnJ1bigmYXV0aG9yaXph
dGlvblBlcmZvcm1lZCk7CisgICAgRVhQRUNUX1RSVUUocG9saWN5Rm9yQXBwU1NPUGVyZm9ybWVk
KTsKICAgICBbZ0RlbGVnYXRlIGF1dGhvcml6YXRpb246Z0F1dGhvcml6YXRpb24gZGlkQ29tcGxl
dGVXaXRoRXJyb3I6YWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOk5TQ29j
b2FFcnJvckRvbWFpbiBjb2RlOjAgdXNlckluZm86bmlsXSkuZ2V0KCldOwogICAgIFV0aWw6OnJ1
bigmYWxsTWVzc2FnZXNSZWNlaXZlZCk7CiB9CkBAIC0yNjExLDYgKzI3NDEsNyBAQCBURVNUKFNP
QXV0aG9yaXphdGlvblN1YkZyYW1lLCBJbnRlcmNlcHRpb25TdWNjZXNzTWVzc2FnZU9yZGVyKQog
CiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6dGVzdEh0bWwgYmFzZVVSTDpuaWxdOwogICAg
IFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CisgICAgRVhQRUNUX1RSVUUocG9s
aWN5Rm9yQXBwU1NPUGVyZm9ybWVkKTsKIAogICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtb
TlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRlc3RVUkwgc3RhdHVzQ29kZToy
MDAgSFRUUFZlcnNpb246QCJIVFRQLzEuMSIgaGVhZGVyRmllbGRzOm5pbF0pOwogICAgIGF1dG8g
aWZyYW1lSHRtbENTdHJpbmcgPSBnZW5lcmF0ZUh0bWwoaWZyYW1lVGVtcGxhdGUsICIiKS51dGY4
KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>