<?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>235830</bug_id>
          
          <creation_ts>2022-01-28 10:34:35 -0800</creation_ts>
          <short_desc>Add SPI to retrieve the rect of a found text range</short_desc>
          <delta_ts>2022-01-28 17:25:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>235692</dependson>
    
    <dependson>235693</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Aditya Keerthi">akeerthi</reporter>
          <assigned_to name="Aditya Keerthi">akeerthi</assigned_to>
          <cc>darin</cc>
    
    <cc>hi</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1835044</commentid>
    <comment_count>0</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-01-28 10:34:35 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835046</commentid>
    <comment_count>1</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-01-28 10:34:50 -0800</bug_when>
    <thetext>rdar://88193004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835057</commentid>
    <comment_count>2</comment_count>
      <attachid>450255</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-01-28 10:42:16 -0800</bug_when>
    <thetext>Created attachment 450255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835089</commentid>
    <comment_count>3</comment_count>
      <attachid>450264</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-01-28 11:59:39 -0800</bug_when>
    <thetext>Created attachment 450264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835096</commentid>
    <comment_count>4</comment_count>
      <attachid>450264</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-28 12:09:58 -0800</bug_when>
    <thetext>Comment on attachment 450264
Patch

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

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:10145
&gt; +    WKFoundTextRange *foundTextRange = (WKFoundTextRange *)range;

Local variable doesn’t add much value and involves repeating WKFoundTextRange twice, which we could mitigate with auto. Also, could use dynamic_objc_cast or checked_objc_cast if you like; they are for this.

&gt; Source/WebKit/WebProcess/WebPage/WebFoundTextRangeController.cpp:184
&gt; +    auto rect = frameView-&gt;contentsToRootView(WebCore::unionRect(WebCore::RenderObject::absoluteTextRects(*simpleRange)));

local variable doesn’t help here

We may not need the WebCore prefix on the call unionRect because of argument-dependent lookup, since the type is in the WebCore namespace.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/FindInPage.mm:410
&gt; +    auto searchOptions = adoptNS([[TestTextSearchOptions alloc] init]);

Would just name this local &quot;options&quot;.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/FindInPage.mm:411
&gt; +    [webView performTextSearchWithQueryString:query usingOptions:(_UITextSearchOptions *)searchOptions.get() resultAggregator:aggregator.get()];

Why is a typecast to _UITextSearchOptions needed here? That does not seem right!

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/FindInPage.mm:500
&gt; +    RetainPtr&lt;NSArray&lt;UITextRange *&gt;&gt; ranges = adoptNS(getTextRangesForQueryString(webView.get(), @&quot;Sapien&quot;));

I suggest auto here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835122</commentid>
    <comment_count>5</comment_count>
      <attachid>450273</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-01-28 13:21:11 -0800</bug_when>
    <thetext>Created attachment 450273
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835125</commentid>
    <comment_count>6</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-01-28 13:23:25 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 450264 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=450264&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:10145
&gt; &gt; +    WKFoundTextRange *foundTextRange = (WKFoundTextRange *)range;
&gt; 
&gt; Local variable doesn’t add much value and involves repeating
&gt; WKFoundTextRange twice, which we could mitigate with auto. Also, could use
&gt; dynamic_objc_cast or checked_objc_cast if you like; they are for this.

Did not know about `dynamic_objc_cast`! Decided to go with that.
 
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebFoundTextRangeController.cpp:184
&gt; &gt; +    auto rect = frameView-&gt;contentsToRootView(WebCore::unionRect(WebCore::RenderObject::absoluteTextRects(*simpleRange)));
&gt; 
&gt; local variable doesn’t help here
&gt; 
&gt; We may not need the WebCore prefix on the call unionRect because of
&gt; argument-dependent lookup, since the type is in the WebCore namespace.

Removed local variable and prefix.
 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/FindInPage.mm:410
&gt; &gt; +    auto searchOptions = adoptNS([[TestTextSearchOptions alloc] init]);
&gt; 
&gt; Would just name this local &quot;options&quot;.

Done.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/FindInPage.mm:411
&gt; &gt; +    [webView performTextSearchWithQueryString:query usingOptions:(_UITextSearchOptions *)searchOptions.get() resultAggregator:aggregator.get()];
&gt; 
&gt; Why is a typecast to _UITextSearchOptions needed here? That does not seem
&gt; right!

The typecast is because UIKit doesn&apos;t export this symbol yet. I&apos;ve added a comment and linked to the corresponding bug.
 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/FindInPage.mm:500
&gt; &gt; +    RetainPtr&lt;NSArray&lt;UITextRange *&gt;&gt; ranges = adoptNS(getTextRangesForQueryString(webView.get(), @&quot;Sapien&quot;));
&gt; 
&gt; I suggest auto here.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835173</commentid>
    <comment_count>7</comment_count>
      <attachid>450273</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-28 15:58:28 -0800</bug_when>
    <thetext>Comment on attachment 450273
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/FindInPage.mm:343
&gt; +@property (nonatomic, readonly) NSArray&lt;UITextRange *&gt;* foundRanges;

Nit - the *s are inconsistent here.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/FindInPage.mm:501
&gt; +    auto ranges = adoptNS(getTextRangesForQueryString(webView.get(), @&quot;Sapien&quot;));

Nit - functions that return +1 Objective-C ids usually start with names like &quot;copy&quot; or &quot;new&quot;.

Perhaps, `copyTextRangesForQueryString`? (Or you could just move the adoptNS into the helper function itself, and return a RetainPtr instead).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835176</commentid>
    <comment_count>8</comment_count>
      <attachid>450286</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-01-28 16:22:09 -0800</bug_when>
    <thetext>Created attachment 450286
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835177</commentid>
    <comment_count>9</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-01-28 16:23:10 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #7)
&gt; Comment on attachment 450273 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=450273&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/FindInPage.mm:343
&gt; &gt; +@property (nonatomic, readonly) NSArray&lt;UITextRange *&gt;* foundRanges;
&gt; 
&gt; Nit - the *s are inconsistent here.

Fixed.
 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/FindInPage.mm:501
&gt; &gt; +    auto ranges = adoptNS(getTextRangesForQueryString(webView.get(), @&quot;Sapien&quot;));
&gt; 
&gt; Nit - functions that return +1 Objective-C ids usually start with names like
&gt; &quot;copy&quot; or &quot;new&quot;.
&gt; 
&gt; Perhaps, `copyTextRangesForQueryString`? (Or you could just move the adoptNS
&gt; into the helper function itself, and return a RetainPtr instead).

Moved the adoptNS into the helper function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835198</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-28 17:25:06 -0800</bug_when>
    <thetext>Committed r288773 (246554@main): &lt;https://commits.webkit.org/246554@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450286.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450255</attachid>
            <date>2022-01-28 10:42:16 -0800</date>
            <delta_ts>2022-01-28 11:59:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235830-20220128104213.patch</filename>
            <type>text/plain</type>
            <size>20102</size>
            <attacher name="Aditya Keerthi">akeerthi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc4N2ZlZTdhMjI5ZTZhYjA1
MTdlMTgzYWE4YzA4M2JhZmU0MjA5OTEuLmQwYTI0ODc4ZDlkY2RlYjBkZGRjZmE3ZTVmMjM3N2Qx
NTZlNGU4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjItMDEtMjggIEFkaXR5YSBL
ZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gcmV0cmll
dmUgdGhlIHJlY3Qgb2YgYSBmb3VuZCB0ZXh0IHJhbmdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU4MzAKKyAgICAgICAgcmRhcjovLzg4MTkzMDA0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpZW50
cyBvZiBmb3VuZCB0ZXh0IHJhbmdlcyBuZWVkIGEgd2F5IHRvIGRldGVybWluZSB0aGVpciBwb3Np
dGlvbgorICAgICAgICBpbiB0aGUgd2ViIHZpZXcuIEFuIGFzeW5jaHJvbm91cyBTUEkgaXMgcHJv
dmlkZWQgdG8gc3VwcG9ydCB0aGlzIG5lZWQuCisgICAgICAgIFRoaXMgaW5mb3JtYXRpb24gaXMg
bm90IGVuY29kZWQgaW4gdGhlIHRleHQgcmFuZ2UgaXRzZWxmLCBhcyB0aGUKKyAgICAgICAgcG9z
aXRpb24gY2FuIGNoYW5nZSBkdWUgdG8gc2Nyb2xsaW5nIGluIHN1Yi1zY3JvbGxhYmxlIHJlZ2lv
bnMuCisgICAgICAgIENvbnNlcXVlbnRseSwgdGhlIHBvc2l0aW9uIG11c3QgYmUgb2J0YWluZWQg
YnkgY29tbXVuaWNhdGluZyB3aXRoIHRoZQorICAgICAgICBXZWJQcm9jZXNzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Jl
cXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVxdWVzdFJlY3RGb3JGb3VuZFRleHRSYW5nZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVxdWVzdFJlY3RGb3JGb3VuZFRl
eHRSYW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRm91bmRUZXh0UmFuZ2VDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Rm91bmRUZXh0UmFuZ2VDb250cm9sbGVyOjpyZXF1ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRm91bmRUZXh0UmFuZ2VDb250cm9sbGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIyLTAxLTI3ICBBZGl0eWEgS2VlcnRoaSAg
PGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZGVjb3JhdGlu
ZyBhbmQgc2Nyb2xsaW5nIHRvIHJhbmdlcyBpbiBXZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xsZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCmluZGV4IGM5ZjEyM2MwNmI3OGUwZTM4NmVkZGE4NzUzMDI5ZTBjNmFjMzExZTUuLjVl
MTViNjVkMGM3MDBmOGEyZDliNmU4YTk3MTlmYWNiOWMyNzM1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDQ1
LDYgKzQ0NSw4IEBAIGZvciB0aGlzIHByb3BlcnR5LgogI2lmIF9faGFzX2luY2x1ZGUoPFVJS2l0
L19VSUZpbmRJbnRlcmFjdGlvbi5oPikKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
X1VJRmluZEludGVyYWN0aW9uICpfZmluZEludGVyYWN0aW9uIFdLX0FQSV9BVkFJTEFCTEUoaW9z
KFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkd3JpdGUsIHNldHRlcj1f
c2V0RmluZEludGVyYWN0aW9uRW5hYmxlZDopIEJPT0wgX2ZpbmRJbnRlcmFjdGlvbkVuYWJsZWQg
V0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworCistICh2b2lkKV9yZXF1ZXN0UmVj
dEZvckZvdW5kVGV4dFJhbmdlOihVSVRleHRSYW5nZSAqKXJhbmdlcyBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoQ0dSZWN0KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKGlv
cyhXS19JT1NfVEJBKSk7CiAjZW5kaWYKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IDJmNDQ5MDZkNDdiYTNmMzZmZWY5
ZjQ1OWIyNzJkYjhlYTY2MmIwMmEuLmJhZjViMGM5OWQwMWY2YzgxYTc1MWVmOGEwOGVjNmRiZGE1
NDkzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJW
aWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
SU9TLm1tCkBAIC0zNTUzLDYgKzM1NTMsMTEgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6Vmlld3BvcnRBcmd1bWVudHM+IHZpZXdwb3J0QXJndW1lbnRzRnJvbURpY3Rpb25hcnkKICAg
ICBbX2NvbnRlbnRWaWV3IGRpZEVuZFRleHRTZWFyY2hPcGVyYXRpb25dOwogfQogCistICh2b2lk
KV9yZXF1ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlOihVSVRleHRSYW5nZSAqKXJhbmdlcyBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQ0dSZWN0IHJlY3QpKWNvbXBsZXRpb25IYW5kbGVyCit7
CisgICAgW19jb250ZW50VmlldyByZXF1ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlOnJhbmdlcyBj
b21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07Cit9CisKICNlbmRpZiAvLyBIQVZF
KFVJRklORElOVEVSQUNUSU9OKQogCiBAZW5kIC8vIFdLV2ViVmlldyAoV0tQcml2YXRlSU9TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYTBiZDQwNmY3ZWJj
MmViYTlkODM0MWFlZGZkOWU0MDlkZGVkN2EyMi4uMTZhY2VmNWFhMzE4ZjNlNDhhYmYzZjQyMDkz
NDQ3ZDgyOTFjZmJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC00MzExLDYgKzQzMTEsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEVuZFRleHRTZWFy
Y2hPcGVyYXRpb24oKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEVuZFRleHRTZWFy
Y2hPcGVyYXRpb24oKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdEZvckZv
dW5kVGV4dFJhbmdlKGNvbnN0IFdlYkZvdW5kVGV4dFJhbmdlJiByYW5nZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpGbG9hdFJlY3QpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit7Cisg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0UmVjdEZvckZv
dW5kVGV4dFJhbmdlKHJhbmdlKSwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Cit9CisKIHZv
aWQgV2ViUGFnZVByb3h5OjpnZXRJbWFnZUZvckZpbmRNYXRjaChpbnQzMl90IG1hdGNoSW5kZXgp
CiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0SW1hZ2VGb3JGaW5kTWF0Y2gobWF0
Y2hJbmRleCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAzNGFi
N2NlMTNlMzhmZGJiOTdhMWY5NjBlZWQ4ZjhkZjYxZjdiYzc1Li44NGYxZmQ1YTczYzI1YTVjZmY1
YWJiMDNhZmJiZjUxZWM3NDQ3NDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMTIxNiw2ICsxMjE2LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkQmVnaW5UZXh0
U2VhcmNoT3BlcmF0aW9uKCk7CiAgICAgdm9pZCBkaWRFbmRUZXh0U2VhcmNoT3BlcmF0aW9uKCk7
CiAKKyAgICB2b2lkIHJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2UoY29uc3QgV2ViRm91bmRU
ZXh0UmFuZ2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkZsb2F0UmVjdCk+JiYp
OworCiAgICAgdm9pZCBnZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVz
Q2hpbGRGcmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5n
Jik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDkzNzUzYjVkNmJmOTU2YmI1MWRiNzQ0OTc3OWE2ZmRm
YzE4NTM3ZTYuLjY4NzU5Y2MyNzQ1MDlmMmU3YTdlNWI4YmYwZDFmNjI2MTM4OWYwY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgKQEAgLTc4MSw2ICs3ODEsMTAgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRW
SUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIC0g
KHZvaWQpcmVxdWVzdFRleHRSZWNvZ25pdGlvbjooTlNVUkwgKilpbWFnZVVSTCBpbWFnZURhdGE6
KGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKWltYWdlRGF0YSBpZGVudGlm
aWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6VGV4dFJlY29nbml0aW9uUmVzdWx0JiYpPiYmKWNvbXBsZXRp
b247CiAjZW5kaWYKIAorI2lmIEhBVkUoVUlGSU5ESU5URVJBQ1RJT04pCistICh2b2lkKXJlcXVl
c3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2U6KFVJVGV4dFJhbmdlICopcmFuZ2UgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKENHUmVjdCkpY29tcGxldGlvbkhhbmRsZXI7CisjZW5kaWYKKwogQGVu
ZAogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmlu
ZGV4IGUwYWIwN2ZjMzYzMzg0M2I5ZmMxYTBlNmRmZWQzZDNhMTVjYjQ0MGEuLjY1ODRhMWU0MGJm
YzI4NWZkN2IzZWU3ZGZkODI5ZWY3ODM2Y2ZiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMTAxMzUs
NiArMTAxMzUsMTkgQEAgc3RhdGljIFJldGFpblB0cjxOU0l0ZW1Qcm92aWRlcj4gY3JlYXRlSXRl
bVByb3ZpZGVyKGNvbnN0IFdlYktpdDo6V2ViUGFnZVByb3h5JgogICAgIHJldHVybiBbc2VsZiBv
ZmZzZXRGcm9tUG9zaXRpb246ZnJvbSB0b1Bvc2l0aW9uOnRvUG9zaXRpb25dOwogfQogCistICh2
b2lkKXJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2U6KFVJVGV4dFJhbmdlICopcmFuZ2UgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKENHUmVjdCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAg
ICBpZiAoIVtyYW5nZSBpc0tpbmRPZkNsYXNzOltXS0ZvdW5kVGV4dFJhbmdlIGNsYXNzXV0pIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ0dSZWN0WmVybyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBXS0ZvdW5kVGV4dFJhbmdlICpmb3VuZFRleHRSYW5nZSA9IChXS0ZvdW5k
VGV4dFJhbmdlICopcmFuZ2U7CisgICAgX3BhZ2UtPnJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFu
Z2UoW2ZvdW5kVGV4dFJhbmdlIHdlYkZvdW5kVGV4dFJhbmdlXSwgW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OkZsb2F0UmVjdCBy
ZWN0KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlY3QpOworICAgIH0pOworfQorCiAj
ZW5kaWYgLy8gSEFWRShVSUZJTkRJTlRFUkFDVElPTikKIAogI2lmIEVOQUJMRShJTUFHRV9BTkFM
WVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZv
dW5kVGV4dFJhbmdlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xsZXIuY3BwCmluZGV4IDdjNTI3ZWE4OGIyMThj
NTQzYjZmYzVlMzRkYmE3OTYxMjU4NTQ2YjAuLjgzOGU5NzUzNGY5MzNjOTA5MWQxYmY1ODg3ZTA4
ZGIxYTlkYTNjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZvdW5kVGV4dFJhbmdlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRm91bmRUZXh0UmFuZ2VDb250cm9sbGVyLmNwcApAQCAtMTcyLDYg
KzE3MiwxOSBAQCB2b2lkIFdlYkZvdW5kVGV4dFJhbmdlQ29udHJvbGxlcjo6ZGlkRW5kVGV4dFNl
YXJjaE9wZXJhdGlvbigpCiAgICAgbV9maW5kUGFnZU92ZXJsYXkgPSBudWxscHRyOwogfQogCit2
b2lkIFdlYkZvdW5kVGV4dFJhbmdlQ29udHJvbGxlcjo6cmVxdWVzdFJlY3RGb3JGb3VuZFRleHRS
YW5nZShjb25zdCBXZWJGb3VuZFRleHRSYW5nZSYgcmFuZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6RmxvYXRSZWN0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRv
IHNpbXBsZVJhbmdlID0gc2ltcGxlUmFuZ2VGcm9tRm91bmRUZXh0UmFuZ2UocmFuZ2UpOworICAg
IGlmICghc2ltcGxlUmFuZ2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8qIGZyYW1lVmlldyA9IHNpbXBsZVJhbmdl
LT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkuZnJhbWUoKS0+dmlldygpOworICAgIGF1dG8g
cmVjdCA9IGZyYW1lVmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KFdlYkNvcmU6OnVuaW9uUmVjdChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRlVGV4dFJlY3RzKCpzaW1wbGVSYW5nZSkpKTsK
KyAgICBjb21wbGV0aW9uSGFuZGxlcihyZWN0KTsKK30KKwogdm9pZCBXZWJGb3VuZFRleHRSYW5n
ZUNvbnRyb2xsZXI6OndpbGxNb3ZlVG9QYWdlKFdlYkNvcmU6OlBhZ2VPdmVybGF5JiwgV2ViQ29y
ZTo6UGFnZSogcGFnZSkKIHsKICAgICBpZiAocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZvdW5kVGV4dFJhbmdlQ29udHJvbGxlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRm91bmRUZXh0UmFuZ2VDb250cm9sbGVy
LmgKaW5kZXggZDkyYjFmNjRmMTZhMWU4YjUxYmNmNzY0Njk2MWNkYmYzMjE0MzYxZS4uODlhOGZm
ZDVhNmM0MWM1N2Q0MWZiMWM1MTEwYjA3YjRhZmFhYmFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRm91bmRUZXh0UmFuZ2VDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRm91bmRUZXh0UmFuZ2VDb250
cm9sbGVyLmgKQEAgLTYyLDYgKzYyLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkQmVnaW5UZXh0
U2VhcmNoT3BlcmF0aW9uKCk7CiAgICAgdm9pZCBkaWRFbmRUZXh0U2VhcmNoT3BlcmF0aW9uKCk7
CiAKKyAgICB2b2lkIHJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2UoY29uc3QgV2ViRm91bmRU
ZXh0UmFuZ2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkZsb2F0UmVjdCk+JiYp
OworCiBwcml2YXRlOgogICAgIC8vIFBhZ2VPdmVybGF5OjpDbGllbnQuCiAgICAgdm9pZCB3aWxs
TW92ZVRvUGFnZShXZWJDb3JlOjpQYWdlT3ZlcmxheSYsIFdlYkNvcmU6OlBhZ2UqKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
ODFiNzQwNjI5NDQ0OTczYjQwNzg5NDliMzdkOTM1ODk3ZDc5OTU3NC4uYTY1ZjU0ZWZhZmI1NThj
NTc2YTlkYTQ0MTM3Y2VkMTU5MzI2OTU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQ3MjUsNiArNDcyNSwxMSBAQCB2b2lkIFdlYlBhZ2U6
OmRpZEVuZFRleHRTZWFyY2hPcGVyYXRpb24oKQogICAgIGZvdW5kVGV4dFJhbmdlQ29udHJvbGxl
cigpLmRpZEVuZFRleHRTZWFyY2hPcGVyYXRpb24oKTsKIH0KIAordm9pZCBXZWJQYWdlOjpyZXF1
ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlKGNvbnN0IFdlYkZvdW5kVGV4dFJhbmdlJiByYW5nZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpGbG9hdFJlY3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGZvdW5kVGV4dFJhbmdlQ29udHJvbGxlcigpLnJlcXVlc3RSZWN0Rm9y
Rm91bmRUZXh0UmFuZ2UocmFuZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwog
dm9pZCBXZWJQYWdlOjpnZXRJbWFnZUZvckZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KQog
ewogICAgIGZpbmRDb250cm9sbGVyKCkuZ2V0SW1hZ2VGb3JGaW5kTWF0Y2gobWF0Y2hJbmRleCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggM2M3YzI4
YzU5ZTU5OThmMGFiNzM4OTM3Y2EwMWIwNjk1ZTAzOWFkMC4uMTZkZTIxMWYzMjRlM2E0MDlkMDE0
M2IzNjc5Y2IyNTM4ZTQ0OGM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtMTc2Niw2ICsxNzY2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEJl
Z2luVGV4dFNlYXJjaE9wZXJhdGlvbigpOwogICAgIHZvaWQgZGlkRW5kVGV4dFNlYXJjaE9wZXJh
dGlvbigpOwogCisgICAgdm9pZCByZXF1ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlKGNvbnN0IFdl
YkZvdW5kVGV4dFJhbmdlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpGbG9hdFJl
Y3QpPiYmKTsKKwogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICB2b2lkIHNlbmRW
aWV3cG9ydEF0dHJpYnV0ZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRz
Jik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDFhZGExYjMzMzMxMjMyNmZmOWYzMzhkNjZjZDVjNWVj
YzEwYjMzZWUuLjU4ZmVjNmE2YWJkZGY1OGE5ZmI4YTkwZWFmNWNmNDI4MjQ0NGY3ZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgpAQCAtMzE4LDYgKzMxOCw4IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQo
ZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgQ2xl
YXJBbGxEZWNvcmF0ZWRGb3VuZFRleHQoKTsKICAgICBEaWRCZWdpblRleHRTZWFyY2hPcGVyYXRp
b24oKTsKICAgICBEaWRFbmRUZXh0U2VhcmNoT3BlcmF0aW9uKCk7CisKKyAgICBSZXF1ZXN0UmVj
dEZvckZvdW5kVGV4dFJhbmdlKHN0cnVjdCBXZWJLaXQ6OldlYkZvdW5kVGV4dFJhbmdlIHJhbmdl
KSAtPiAoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpIEFzeW5jCiAgICAgCiAgICAgQWRkTUlNRVR5
cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKFN0cmluZyBtaW1lVHlwZSkKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA5NzM3M2FiNzY1ZTAw
ZDA3MzY2ZmZjMzVjYjMyMjMyNGIyYTVmMGUuLjlhNDYwZDU0ZThhOGQyNzNlNzhkMWFhYTFlY2Jh
NGU0NzUzNTcyNTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMi0wMS0yOCAgQWRpdHlhIEtlZXJ0aGkgIDxha2Vl
cnRoaUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byByZXRyaWV2ZSB0aGUgcmVjdCBv
ZiBhIGZvdW5kIHRleHQgcmFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNTgzMAorICAgICAgICByZGFyOi8vODgxOTMwMDQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gdmVy
aWZ5IHRoZSBBUEkgd29ya3MgYXMgZXhwZWN0ZWQuCisKKyAgICAgICAgVGhlIHRlc3QgdXNlcyBh
biA8aWZyYW1lPiB0byB2ZXJpZnkgYmVoYXZpb3IgZm9yIHNjcm9sbGVkCisgICAgICAgIDxpZnJh
bWU+cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRmluZElu
UGFnZS5tbToKKyAgICAgICAgKC1bVGVzdFNlYXJjaEFnZ3JlZ2F0b3IgaW5pdFdpdGhDb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdFNlYXJjaEFnZ3JlZ2F0b3IgZm91bmRSYW5n
ZTpmb3JTZWFyY2hTdHJpbmc6aW5Eb2N1bWVudDpdKToKKyAgICAgICAgKC1bVGVzdFNlYXJjaEFn
Z3JlZ2F0b3IgZm91bmRSYW5nZXNdKToKKyAgICAgICAgKC1bVGVzdFNlYXJjaEFnZ3JlZ2F0b3Ig
Y291bnRdKToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIyLTAxLTI1ICBBZGl0eWEgS2VlcnRoaSAg
PGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIGlucHV0LXNlY3VyaXR5IENT
UyBwcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9GaW5kSW5QYWdlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9GaW5kSW5QYWdlLm1tCmluZGV4IDg5NWEzZWQ1ZmE5ODgyOGJhOGZhMDI4YTZlMTE2ZTVhYjNi
YTM4OWEuLmNhOGY3ZGZjMmIyZmFjODQ1Njc3ODllYzE2NTRiYTlmNDgzMjczZjYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRmluZEluUGFnZS5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbmRJblBhZ2UubW0K
QEAgLTM3LDYgKzM3LDE1IEBACiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2VuZGlmCiAKK0BpbnRl
cmZhY2UgV0tGb3VuZFRleHRSYW5nZSA6IFVJVGV4dFJhbmdlCisKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljKSBOU1VJbnRlZ2VyIGxvY2F0aW9uOworQHByb3BlcnR5IChub25hdG9taWMpIE5TVUludGVn
ZXIgbGVuZ3RoOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpmcmFtZUlk
ZW50aWZpZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYykgTlNVSW50ZWdlciBvcmRlcjsKKworQGVu
ZAorCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKIHR5cGVkZWYgZW51bSA6IE5TVUludGVn
ZXIgewpAQCAtMzQwLDEyICszNDksMTQgQEAgVEVTVChXZWJLaXQsIEZpbmRUZXh0SW5JbWFnZU92
ZXJsYXkpCiBAaW50ZXJmYWNlIFRlc3RTZWFyY2hBZ2dyZWdhdG9yIDogTlNPYmplY3QgPF9VSVRl
eHRTZWFyY2hBZ2dyZWdhdG9yPgogCiBAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1VJbnRlZ2VyIGNv
dW50OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5PFVJVGV4dFJhbmdl
ICo+KiBmb3VuZFJhbmdlczsKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29tcGxldGlvbkhh
bmRsZXI6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbkhhbmRsZXI7CiAKIEBlbmQKIAogQGlt
cGxlbWVudGF0aW9uIFRlc3RTZWFyY2hBZ2dyZWdhdG9yIHsKKyAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk8VUlUZXh0UmFuZ2UgKj4+IF9mb3VuZFJhbmdlczsKICAgICBCbG9ja1B0cjx2b2lk
KCk+IF9jb21wbGV0aW9uSGFuZGxlcjsKIH0KIApAQCAtMzU0LDcgKzM2NSw3IEBAIFRFU1QoV2Vi
S2l0LCBGaW5kVGV4dEluSW1hZ2VPdmVybGF5KQogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX2NvdW50ID0gMDsKKyAgICBfZm91bmRS
YW5nZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBfY29t
cGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAg
cmV0dXJuIHNlbGY7CkBAIC0zNjIsNyArMzczLDcgQEAgVEVTVChXZWJLaXQsIEZpbmRUZXh0SW5J
bWFnZU92ZXJsYXkpCiAKIC0gKHZvaWQpZm91bmRSYW5nZTooVUlUZXh0UmFuZ2UgKilyYW5nZSBm
b3JTZWFyY2hTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGluRG9jdW1lbnQ6KF9VSVRleHRTZWFy
Y2hEb2N1bWVudElkZW50aWZpZXIpZG9jdW1lbnQKIHsKLSAgICBfY291bnQrKzsKKyAgICBbX2Zv
dW5kUmFuZ2VzIGFkZE9iamVjdDpyYW5nZV07CiB9CiAKIC0gKHZvaWQpZmluaXNoZWRTZWFyY2hp
bmcKQEAgLTM3MSw2ICszODIsMTYgQEAgVEVTVChXZWJLaXQsIEZpbmRUZXh0SW5JbWFnZU92ZXJs
YXkpCiAgICAgICAgIF9jb21wbGV0aW9uSGFuZGxlcigpOwogfQogCistIChOU0FycmF5PFVJVGV4
dFJhbmdlICo+Kilmb3VuZFJhbmdlcworeworICAgIHJldHVybiBfZm91bmRSYW5nZXMuZ2V0KCk7
Cit9CisKKy0gKE5TVUludGVnZXIpY291bnQKK3sKKyAgICByZXR1cm4gW19mb3VuZFJhbmdlcyBj
b3VudF07Cit9CisKIEBlbmQKIAogc3RhdGljIHZvaWQgdGVzdFBlcmZvcm1UZXh0U2VhcmNoV2l0
aFF1ZXJ5U3RyaW5nSW5XZWJWaWV3KFdLV2ViVmlldyAqd2ViVmlldywgTlNTdHJpbmcgKnF1ZXJ5
LCBUZXN0VGV4dFNlYXJjaE9wdGlvbnMgKnNlYXJjaE9wdGlvbnMsIE5TVUludGVnZXIgZXhwZWN0
ZWRNYXRjaGVzKQpAQCAtMzg4LDkgKzQwOSwyNCBAQCBzdGF0aWMgdm9pZCB0ZXN0UGVyZm9ybVRl
eHRTZWFyY2hXaXRoUXVlcnlTdHJpbmdJbldlYlZpZXcoV0tXZWJWaWV3ICp3ZWJWaWV3LCBOUwog
ICAgIEVYUEVDVF9FUShbYWdncmVnYXRvciBjb3VudF0sIGV4cGVjdGVkTWF0Y2hlcyk7CiB9CiAK
K3N0YXRpYyBOU0FycmF5PFVJVGV4dFJhbmdlICo+ICogZ2V0VGV4dFJhbmdlc0ZvclF1ZXJ5U3Ry
aW5nKFdLV2ViVmlldyAqd2ViVmlldywgTlNTdHJpbmcgKnF1ZXJ5KQoreworICAgIF9fYmxvY2sg
Ym9vbCBmaW5pc2hlZFNlYXJjaGluZyA9IGZhbHNlOworICAgIGF1dG8gYWdncmVnYXRvciA9IGFk
b3B0TlMoW1tUZXN0U2VhcmNoQWdncmVnYXRvciBhbGxvY10gaW5pdFdpdGhDb21wbGV0aW9uSGFu
ZGxlcjpeeworICAgICAgICBmaW5pc2hlZFNlYXJjaGluZyA9IHRydWU7CisgICAgfV0pOworCisg
ICAgYXV0byBzZWFyY2hPcHRpb25zID0gYWRvcHROUyhbW1Rlc3RUZXh0U2VhcmNoT3B0aW9ucyBh
bGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHBlcmZvcm1UZXh0U2VhcmNoV2l0aFF1ZXJ5U3Ry
aW5nOnF1ZXJ5IHVzaW5nT3B0aW9uczooX1VJVGV4dFNlYXJjaE9wdGlvbnMgKilzZWFyY2hPcHRp
b25zLmdldCgpIHJlc3VsdEFnZ3JlZ2F0b3I6YWdncmVnYXRvci5nZXQoKV07CisKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkU2VhcmNoaW5nKTsKKworICAgIHJldHVybiBb
W2FnZ3JlZ2F0b3IgZm91bmRSYW5nZXNdIGNvcHldOworfQorCiBURVNUKFdlYktpdCwgRmluZElu
UGFnZSkKIHsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDIwMCwgMjAwKV0p
OworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAyMDAsIDIwMCldKTsKIAogICAgIE5TVVJMUmVxdWVzdCAq
cmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAImxvdHMtb2YtdGV4dCIgd2l0aEV4dGVuc2lvbjpAImh0bWwi
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwpAQCAtNDAyLDcgKzQzOCw3IEBAIFRFU1QoV2ViS2l0LCBG
aW5kSW5QYWdlKQogCiBURVNUKFdlYktpdCwgRmluZEluUGFnZUNhc2VJbnNlbnNpdGl2ZSkKIHsK
LSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDIwMCwgMjAwKV0pOworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0TWFrZSgwLCAwLCAyMDAsIDIwMCldKTsKIAogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9
IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxG
b3JSZXNvdXJjZTpAImxvdHMtb2YtdGV4dCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OnJlcXVlc3RdOwpAQCAtNDE3LDcgKzQ1Myw3IEBAIFRFU1QoV2ViS2l0LCBGaW5kSW5QYWdl
Q2FzZUluc2Vuc2l0aXZlKQogCiBURVNUKFdlYktpdCwgRmluZEluUGFnZVN0YXJ0c1dpdGgpCiB7
Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAyMDAsIDIwMCldKTsKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgMjAwLCAyMDApXSk7CiAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3Qg
PSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJsb3RzLW9mLXRleHQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpyZXF1ZXN0XTsKQEAgLTQzNiw3ICs0NzIsNyBAQCBURVNUKFdlYktpdCwgRmluZEluUGFn
ZVN0YXJ0c1dpdGgpCiAKIFRFU1QoV2ViS2l0LCBGaW5kSW5QYWdlRnVsbFdvcmQpCiB7Ci0gICAg
UmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAyMDAsIDIwMCldKTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgMjAwLCAyMDApXSk7CiAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVz
b3VyY2U6QCJsb3RzLW9mLXRleHQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpy
ZXF1ZXN0XTsKQEAgLTQ1NCw3ICs0OTAsNyBAQCBURVNUKFdlYktpdCwgRmluZEluUGFnZUZ1bGxX
b3JkKQogCiBURVNUKFdlYktpdCwgRmluZEludGVyYWN0aW9uKQogewotICAgIFJldGFpblB0cjxX
S1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgMjAwLCAyMDApXSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDIw
MCwgMjAwKV0pOwogCiAgICAgRVhQRUNUX05VTEwoW3dlYlZpZXcgX2ZpbmRJbnRlcmFjdGlvbl0p
OwogCkBAIC00NjUsNCArNTAxLDM2IEBAIFRFU1QoV2ViS2l0LCBGaW5kSW50ZXJhY3Rpb24pCiAg
ICAgRVhQRUNUX05VTEwoW3dlYlZpZXcgX2ZpbmRJbnRlcmFjdGlvbl0pOwogfQogCitURVNUKFdl
YktpdCwgUmVxdWVzdFJlY3RGb3JGb3VuZFRleHRSYW5nZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0
cmluZzpAIjxpZnJhbWUgc3JjZG9jPSc8cD5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29u
c2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVu
dCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVGVsbHVzIGluIG1ldHVzIHZ1bHB1
dGF0ZSBldSBzY2VsZXJpc3F1ZSBmZWxpcyBpbXBlcmRpZXQuIE1pIHF1aXMgaGVuZHJlcml0IGRv
bG9yIG1hZ25hIGVnZXQgZXN0IGxvcmVtIGlwc3VtIGRvbG9yLiBJbiBjdXJzdXMgdHVycGlzIG1h
c3NhIHRpbmNpZHVudCBkdWkgdXQgb3JuYXJlLiBTYXBpZW4gZXQgbGlndWxhIHVsbGFtY29ycGVy
IG1hbGVzdWFkYS4gTWFlY2VuYXMgdm9sdXRwYXQgYmxhbmRpdCBhbGlxdWFtIGV0aWFtIGVyYXQu
IFR1cnBpcyBlZ2VzdGFzIGludGVnZXIgZWdldCBhbGlxdWV0IG5pYmggcHJhZXNlbnQgdHJpc3Rp
cXVlLiBJcHN1bSBkb2xvciBzaXQgYW1ldCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nLiBUZWxsdXMg
Y3JhcyBhZGlwaXNjaW5nIGVuaW0gZXUgdHVycGlzIGVnZXN0YXMgcHJldGl1bSBhZW5lYW4gcGhh
cmV0cmEuIFNlbSBmcmluZ2lsbGEgdXQgbW9yYmkgdGluY2lkdW50IGF1Z3VlIGludGVyZHVtIHZl
bGl0IGV1aXNtb2QuIEhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cy4g
QWVuZWFuIGV1aXNtb2QgZWxlbWVudHVtIG5pc2kgcXVpcy4gRmFjaWxpc2kgbnVsbGFtIHZlaGlj
dWxhIGlwc3VtIGEuIEVsZW1lbnR1bSBmYWNpbGlzaXMgbGVvIHZlbCBmcmluZ2lsbGEuIE1vbGVz
dGllIG51bmMgbm9uIGJsYW5kaXQgbWFzc2EgZW5pbS4gT3JjaSBhYyBhdWN0b3IgYXVndWUgbWF1
cmlzLiBQZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRy
aXN0aXF1ZSBzZW5lY3R1cyBldC4gTWFnbmlzIGRpcyBwYXJ0dXJpZW50IG1vbnRlcyBuYXNjZXR1
ciByaWRpY3VsdXMgbXVzIG1hdXJpcyB2aXRhZS4gSWQgbGVvIGluIHZpdGFlIHR1cnBpcyBtYXNz
YSBzZWQuIE5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMgZWdlc3RhcyBzZWQgdGVt
cHVzLiBNb3JiaSBxdWlzIGNvbW1vZG8gb2RpbyBhZW5lYW4gc2VkIGFkaXBpc2NpbmcgZGlhbSBk
b25lYy4gU2l0IGFtZXQgcHVydXMgZ3JhdmlkYSBxdWlzIGJsYW5kaXQgdHVycGlzLiBPZGlvIGV1
aXNtb2QgbGFjaW5pYSBhdCBxdWlzIHJpc3VzIHNlZCB2dWxwdXRhdGUuIFZhcml1cyBkdWlzIGF0
IGNvbnNlY3RldHVyIGxvcmVtIGRvbmVjIG1hc3NhLiBTaXQgYW1ldCBjb25zZWN0ZXR1ciBhZGlw
aXNjaW5nIGVsaXQgcGVsbGVudGVzcXVlIGhhYml0YW50LiBGZXVnaWF0IGluIGZlcm1lbnR1bSBw
b3N1ZXJlIHVybmEgbmVjIHRpbmNpZHVudCBwcmFlc2VudC48L3A+Jz48L2lmcmFtZT4iXTsKKwor
ICAgIFJldGFpblB0cjxOU0FycmF5PFVJVGV4dFJhbmdlICo+PiByYW5nZXMgPSBhZG9wdE5TKGdl
dFRleHRSYW5nZXNGb3JRdWVyeVN0cmluZyh3ZWJWaWV3LmdldCgpLCBAIlNhcGllbiIpKTsKKwor
ICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3JlcXVlc3RSZWN0
Rm9yRm91bmRUZXh0UmFuZ2U6W3JhbmdlcyBmaXJzdE9iamVjdF0gY29tcGxldGlvbkhhbmRsZXI6
XihDR1JlY3QgcmVjdCkgeworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChy
ZWN0LCBDR1JlY3RNYWtlKDI1MiwgMTQ2LCA0NCwgMTkpKSk7CisgICAgICAgIGRvbmUgPSB0cnVl
OworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBy
YW5nZXMgPSBhZG9wdE5TKGdldFRleHRSYW5nZXNGb3JRdWVyeVN0cmluZyh3ZWJWaWV3LmdldCgp
LCBAImZlcm1lbnR1bSIpKTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfcmVx
dWVzdFJlY3RGb3JGb3VuZFRleHRSYW5nZTpbcmFuZ2VzIGZpcnN0T2JqZWN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKENHUmVjdCByZWN0KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFs
VG9SZWN0KHJlY3QsIENHUmVjdE1ha2UoMjI5LCA2NDYsIDcyLCAxOSkpKTsKKyAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
KworICAgIFt3ZWJWaWV3IHNjcm9sbFJhbmdlVG9WaXNpYmxlOltyYW5nZXMgZmlyc3RPYmplY3Rd
IGluRG9jdW1lbnQ6bmlsXTsKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3JlcXVl
c3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2U6W3JhbmdlcyBmaXJzdE9iamVjdF0gY29tcGxldGlvbkhh
bmRsZXI6XihDR1JlY3QgcmVjdCkgeworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRv
UmVjdChyZWN0LCBDR1JlY3RNYWtlKDIyOSwgMTA0LCA3MiwgMTkpKSk7CisgICAgICAgIGRvbmUg
PSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cit9
CisKICNlbmRpZiAvLyBIQVZFKFVJRklORElOVEVSQUNUSU9OKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450264</attachid>
            <date>2022-01-28 11:59:39 -0800</date>
            <delta_ts>2022-01-28 13:21:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235830-20220128115936.patch</filename>
            <type>text/plain</type>
            <size>19755</size>
            <attacher name="Aditya Keerthi">akeerthi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBlOTJlNDY1MTdmMjAwYmFm
NWZkNzlkNDRkOTBjMzQ2MjU3NzA1MTkuLjM3ZjU5NTMwNzhlMjQ1ZmYxYjhjN2ViMzhhYmFlYzgw
YzU2NjA3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjItMDEtMjggIEFkaXR5YSBL
ZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gcmV0cmll
dmUgdGhlIHJlY3Qgb2YgYSBmb3VuZCB0ZXh0IHJhbmdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU4MzAKKyAgICAgICAgcmRhcjovLzg4MTkzMDA0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpZW50
cyBvZiBmb3VuZCB0ZXh0IHJhbmdlcyBuZWVkIGEgd2F5IHRvIGRldGVybWluZSB0aGVpciBwb3Np
dGlvbgorICAgICAgICBpbiB0aGUgd2ViIHZpZXcuIEFuIGFzeW5jaHJvbm91cyBTUEkgaXMgcHJv
dmlkZWQgdG8gc3VwcG9ydCB0aGlzIG5lZWQuCisgICAgICAgIFRoaXMgaW5mb3JtYXRpb24gaXMg
bm90IGVuY29kZWQgaW4gdGhlIHRleHQgcmFuZ2UgaXRzZWxmLCBhcyB0aGUKKyAgICAgICAgcG9z
aXRpb24gY2FuIGNoYW5nZSBkdWUgdG8gc2Nyb2xsaW5nIGluIHN1Yi1zY3JvbGxhYmxlIHJlZ2lv
bnMuCisgICAgICAgIENvbnNlcXVlbnRseSwgdGhlIHBvc2l0aW9uIG11c3QgYmUgb2J0YWluZWQg
YnkgY29tbXVuaWNhdGluZyB3aXRoIHRoZQorICAgICAgICBXZWJQcm9jZXNzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Jl
cXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVxdWVzdFJlY3RGb3JGb3VuZFRleHRSYW5nZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVxdWVzdFJlY3RGb3JGb3VuZFRl
eHRSYW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRm91bmRUZXh0UmFuZ2VDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Rm91bmRUZXh0UmFuZ2VDb250cm9sbGVyOjpyZXF1ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRm91bmRUZXh0UmFuZ2VDb250cm9sbGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIyLTAxLTI3ICBBZGl0eWEgS2VlcnRoaSAg
PGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZGVjb3JhdGlu
ZyBhbmQgc2Nyb2xsaW5nIHRvIHJhbmdlcyBpbiBXZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xsZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCmluZGV4IGM5ZjEyM2MwNmI3OGUwZTM4NmVkZGE4NzUzMDI5ZTBjNmFjMzExZTUuLjVl
MTViNjVkMGM3MDBmOGEyZDliNmU4YTk3MTlmYWNiOWMyNzM1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDQ1
LDYgKzQ0NSw4IEBAIGZvciB0aGlzIHByb3BlcnR5LgogI2lmIF9faGFzX2luY2x1ZGUoPFVJS2l0
L19VSUZpbmRJbnRlcmFjdGlvbi5oPikKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
X1VJRmluZEludGVyYWN0aW9uICpfZmluZEludGVyYWN0aW9uIFdLX0FQSV9BVkFJTEFCTEUoaW9z
KFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkd3JpdGUsIHNldHRlcj1f
c2V0RmluZEludGVyYWN0aW9uRW5hYmxlZDopIEJPT0wgX2ZpbmRJbnRlcmFjdGlvbkVuYWJsZWQg
V0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworCistICh2b2lkKV9yZXF1ZXN0UmVj
dEZvckZvdW5kVGV4dFJhbmdlOihVSVRleHRSYW5nZSAqKXJhbmdlcyBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoQ0dSZWN0KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKGlv
cyhXS19JT1NfVEJBKSk7CiAjZW5kaWYKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IDJmNDQ5MDZkNDdiYTNmMzZmZWY5
ZjQ1OWIyNzJkYjhlYTY2MmIwMmEuLmJhZjViMGM5OWQwMWY2YzgxYTc1MWVmOGEwOGVjNmRiZGE1
NDkzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJW
aWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
SU9TLm1tCkBAIC0zNTUzLDYgKzM1NTMsMTEgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6Vmlld3BvcnRBcmd1bWVudHM+IHZpZXdwb3J0QXJndW1lbnRzRnJvbURpY3Rpb25hcnkKICAg
ICBbX2NvbnRlbnRWaWV3IGRpZEVuZFRleHRTZWFyY2hPcGVyYXRpb25dOwogfQogCistICh2b2lk
KV9yZXF1ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlOihVSVRleHRSYW5nZSAqKXJhbmdlcyBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQ0dSZWN0IHJlY3QpKWNvbXBsZXRpb25IYW5kbGVyCit7
CisgICAgW19jb250ZW50VmlldyByZXF1ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlOnJhbmdlcyBj
b21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07Cit9CisKICNlbmRpZiAvLyBIQVZF
KFVJRklORElOVEVSQUNUSU9OKQogCiBAZW5kIC8vIFdLV2ViVmlldyAoV0tQcml2YXRlSU9TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYTBiZDQwNmY3ZWJj
MmViYTlkODM0MWFlZGZkOWU0MDlkZGVkN2EyMi4uMTZhY2VmNWFhMzE4ZjNlNDhhYmYzZjQyMDkz
NDQ3ZDgyOTFjZmJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC00MzExLDYgKzQzMTEsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEVuZFRleHRTZWFy
Y2hPcGVyYXRpb24oKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEVuZFRleHRTZWFy
Y2hPcGVyYXRpb24oKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdEZvckZv
dW5kVGV4dFJhbmdlKGNvbnN0IFdlYkZvdW5kVGV4dFJhbmdlJiByYW5nZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpGbG9hdFJlY3QpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit7Cisg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0UmVjdEZvckZv
dW5kVGV4dFJhbmdlKHJhbmdlKSwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Cit9CisKIHZv
aWQgV2ViUGFnZVByb3h5OjpnZXRJbWFnZUZvckZpbmRNYXRjaChpbnQzMl90IG1hdGNoSW5kZXgp
CiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0SW1hZ2VGb3JGaW5kTWF0Y2gobWF0
Y2hJbmRleCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAzNGFi
N2NlMTNlMzhmZGJiOTdhMWY5NjBlZWQ4ZjhkZjYxZjdiYzc1Li44NGYxZmQ1YTczYzI1YTVjZmY1
YWJiMDNhZmJiZjUxZWM3NDQ3NDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMTIxNiw2ICsxMjE2LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkQmVnaW5UZXh0
U2VhcmNoT3BlcmF0aW9uKCk7CiAgICAgdm9pZCBkaWRFbmRUZXh0U2VhcmNoT3BlcmF0aW9uKCk7
CiAKKyAgICB2b2lkIHJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2UoY29uc3QgV2ViRm91bmRU
ZXh0UmFuZ2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkZsb2F0UmVjdCk+JiYp
OworCiAgICAgdm9pZCBnZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVz
Q2hpbGRGcmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5n
Jik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDkzNzUzYjVkNmJmOTU2YmI1MWRiNzQ0OTc3OWE2ZmRm
YzE4NTM3ZTYuLjY4NzU5Y2MyNzQ1MDlmMmU3YTdlNWI4YmYwZDFmNjI2MTM4OWYwY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgKQEAgLTc4MSw2ICs3ODEsMTAgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRW
SUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIC0g
KHZvaWQpcmVxdWVzdFRleHRSZWNvZ25pdGlvbjooTlNVUkwgKilpbWFnZVVSTCBpbWFnZURhdGE6
KGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKWltYWdlRGF0YSBpZGVudGlm
aWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6VGV4dFJlY29nbml0aW9uUmVzdWx0JiYpPiYmKWNvbXBsZXRp
b247CiAjZW5kaWYKIAorI2lmIEhBVkUoVUlGSU5ESU5URVJBQ1RJT04pCistICh2b2lkKXJlcXVl
c3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2U6KFVJVGV4dFJhbmdlICopcmFuZ2UgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKENHUmVjdCkpY29tcGxldGlvbkhhbmRsZXI7CisjZW5kaWYKKwogQGVu
ZAogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmlu
ZGV4IGUwYWIwN2ZjMzYzMzg0M2I5ZmMxYTBlNmRmZWQzZDNhMTVjYjQ0MGEuLjY1ODRhMWU0MGJm
YzI4NWZkN2IzZWU3ZGZkODI5ZWY3ODM2Y2ZiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMTAxMzUs
NiArMTAxMzUsMTkgQEAgc3RhdGljIFJldGFpblB0cjxOU0l0ZW1Qcm92aWRlcj4gY3JlYXRlSXRl
bVByb3ZpZGVyKGNvbnN0IFdlYktpdDo6V2ViUGFnZVByb3h5JgogICAgIHJldHVybiBbc2VsZiBv
ZmZzZXRGcm9tUG9zaXRpb246ZnJvbSB0b1Bvc2l0aW9uOnRvUG9zaXRpb25dOwogfQogCistICh2
b2lkKXJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2U6KFVJVGV4dFJhbmdlICopcmFuZ2UgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKENHUmVjdCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAg
ICBpZiAoIVtyYW5nZSBpc0tpbmRPZkNsYXNzOltXS0ZvdW5kVGV4dFJhbmdlIGNsYXNzXV0pIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ0dSZWN0WmVybyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBXS0ZvdW5kVGV4dFJhbmdlICpmb3VuZFRleHRSYW5nZSA9IChXS0ZvdW5k
VGV4dFJhbmdlICopcmFuZ2U7CisgICAgX3BhZ2UtPnJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFu
Z2UoW2ZvdW5kVGV4dFJhbmdlIHdlYkZvdW5kVGV4dFJhbmdlXSwgW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OkZsb2F0UmVjdCBy
ZWN0KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlY3QpOworICAgIH0pOworfQorCiAj
ZW5kaWYgLy8gSEFWRShVSUZJTkRJTlRFUkFDVElPTikKIAogI2lmIEVOQUJMRShJTUFHRV9BTkFM
WVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZv
dW5kVGV4dFJhbmdlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xsZXIuY3BwCmluZGV4IGRmYjAyZmU4YzJjZDM3
ZTliMTg4NjMxZjBjNDYxMmM1NTg1OTM1NTkuLmYwYWEzMTRmNzMzNzFlNzQ5YzU4YWQ2ZjExNWVh
NjExODBlMTc2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZvdW5kVGV4dFJhbmdlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRm91bmRUZXh0UmFuZ2VDb250cm9sbGVyLmNwcApAQCAtMTcyLDYg
KzE3MiwxOSBAQCB2b2lkIFdlYkZvdW5kVGV4dFJhbmdlQ29udHJvbGxlcjo6ZGlkRW5kVGV4dFNl
YXJjaE9wZXJhdGlvbigpCiAgICAgbV9maW5kUGFnZU92ZXJsYXkgPSBudWxscHRyOwogfQogCit2
b2lkIFdlYkZvdW5kVGV4dFJhbmdlQ29udHJvbGxlcjo6cmVxdWVzdFJlY3RGb3JGb3VuZFRleHRS
YW5nZShjb25zdCBXZWJGb3VuZFRleHRSYW5nZSYgcmFuZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6RmxvYXRSZWN0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRv
IHNpbXBsZVJhbmdlID0gc2ltcGxlUmFuZ2VGcm9tRm91bmRUZXh0UmFuZ2UocmFuZ2UpOworICAg
IGlmICghc2ltcGxlUmFuZ2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8qIGZyYW1lVmlldyA9IHNpbXBsZVJhbmdl
LT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkuZnJhbWUoKS0+dmlldygpOworICAgIGF1dG8g
cmVjdCA9IGZyYW1lVmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KFdlYkNvcmU6OnVuaW9uUmVjdChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRlVGV4dFJlY3RzKCpzaW1wbGVSYW5nZSkpKTsK
KyAgICBjb21wbGV0aW9uSGFuZGxlcihyZWN0KTsKK30KKwogdm9pZCBXZWJGb3VuZFRleHRSYW5n
ZUNvbnRyb2xsZXI6OndpbGxNb3ZlVG9QYWdlKFdlYkNvcmU6OlBhZ2VPdmVybGF5JiwgV2ViQ29y
ZTo6UGFnZSogcGFnZSkKIHsKICAgICBpZiAocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZvdW5kVGV4dFJhbmdlQ29udHJvbGxlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRm91bmRUZXh0UmFuZ2VDb250cm9sbGVy
LmgKaW5kZXggZDkyYjFmNjRmMTZhMWU4YjUxYmNmNzY0Njk2MWNkYmYzMjE0MzYxZS4uODlhOGZm
ZDVhNmM0MWM1N2Q0MWZiMWM1MTEwYjA3YjRhZmFhYmFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRm91bmRUZXh0UmFuZ2VDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRm91bmRUZXh0UmFuZ2VDb250
cm9sbGVyLmgKQEAgLTYyLDYgKzYyLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkQmVnaW5UZXh0
U2VhcmNoT3BlcmF0aW9uKCk7CiAgICAgdm9pZCBkaWRFbmRUZXh0U2VhcmNoT3BlcmF0aW9uKCk7
CiAKKyAgICB2b2lkIHJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2UoY29uc3QgV2ViRm91bmRU
ZXh0UmFuZ2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkZsb2F0UmVjdCk+JiYp
OworCiBwcml2YXRlOgogICAgIC8vIFBhZ2VPdmVybGF5OjpDbGllbnQuCiAgICAgdm9pZCB3aWxs
TW92ZVRvUGFnZShXZWJDb3JlOjpQYWdlT3ZlcmxheSYsIFdlYkNvcmU6OlBhZ2UqKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
ODFiNzQwNjI5NDQ0OTczYjQwNzg5NDliMzdkOTM1ODk3ZDc5OTU3NC4uYTY1ZjU0ZWZhZmI1NThj
NTc2YTlkYTQ0MTM3Y2VkMTU5MzI2OTU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQ3MjUsNiArNDcyNSwxMSBAQCB2b2lkIFdlYlBhZ2U6
OmRpZEVuZFRleHRTZWFyY2hPcGVyYXRpb24oKQogICAgIGZvdW5kVGV4dFJhbmdlQ29udHJvbGxl
cigpLmRpZEVuZFRleHRTZWFyY2hPcGVyYXRpb24oKTsKIH0KIAordm9pZCBXZWJQYWdlOjpyZXF1
ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlKGNvbnN0IFdlYkZvdW5kVGV4dFJhbmdlJiByYW5nZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpGbG9hdFJlY3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGZvdW5kVGV4dFJhbmdlQ29udHJvbGxlcigpLnJlcXVlc3RSZWN0Rm9y
Rm91bmRUZXh0UmFuZ2UocmFuZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwog
dm9pZCBXZWJQYWdlOjpnZXRJbWFnZUZvckZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KQog
ewogICAgIGZpbmRDb250cm9sbGVyKCkuZ2V0SW1hZ2VGb3JGaW5kTWF0Y2gobWF0Y2hJbmRleCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggM2M3YzI4
YzU5ZTU5OThmMGFiNzM4OTM3Y2EwMWIwNjk1ZTAzOWFkMC4uMTZkZTIxMWYzMjRlM2E0MDlkMDE0
M2IzNjc5Y2IyNTM4ZTQ0OGM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtMTc2Niw2ICsxNzY2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEJl
Z2luVGV4dFNlYXJjaE9wZXJhdGlvbigpOwogICAgIHZvaWQgZGlkRW5kVGV4dFNlYXJjaE9wZXJh
dGlvbigpOwogCisgICAgdm9pZCByZXF1ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlKGNvbnN0IFdl
YkZvdW5kVGV4dFJhbmdlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpGbG9hdFJl
Y3QpPiYmKTsKKwogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICB2b2lkIHNlbmRW
aWV3cG9ydEF0dHJpYnV0ZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRz
Jik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDFhZGExYjMzMzMxMjMyNmZmOWYzMzhkNjZjZDVjNWVj
YzEwYjMzZWUuLjU4ZmVjNmE2YWJkZGY1OGE5ZmI4YTkwZWFmNWNmNDI4MjQ0NGY3ZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgpAQCAtMzE4LDYgKzMxOCw4IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQo
ZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgQ2xl
YXJBbGxEZWNvcmF0ZWRGb3VuZFRleHQoKTsKICAgICBEaWRCZWdpblRleHRTZWFyY2hPcGVyYXRp
b24oKTsKICAgICBEaWRFbmRUZXh0U2VhcmNoT3BlcmF0aW9uKCk7CisKKyAgICBSZXF1ZXN0UmVj
dEZvckZvdW5kVGV4dFJhbmdlKHN0cnVjdCBXZWJLaXQ6OldlYkZvdW5kVGV4dFJhbmdlIHJhbmdl
KSAtPiAoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpIEFzeW5jCiAgICAgCiAgICAgQWRkTUlNRVR5
cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKFN0cmluZyBtaW1lVHlwZSkKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA5NzM3M2FiNzY1ZTAw
ZDA3MzY2ZmZjMzVjYjMyMjMyNGIyYTVmMGUuLjlhNDYwZDU0ZThhOGQyNzNlNzhkMWFhYTFlY2Jh
NGU0NzUzNTcyNTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMi0wMS0yOCAgQWRpdHlhIEtlZXJ0aGkgIDxha2Vl
cnRoaUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byByZXRyaWV2ZSB0aGUgcmVjdCBv
ZiBhIGZvdW5kIHRleHQgcmFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNTgzMAorICAgICAgICByZGFyOi8vODgxOTMwMDQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gdmVy
aWZ5IHRoZSBBUEkgd29ya3MgYXMgZXhwZWN0ZWQuCisKKyAgICAgICAgVGhlIHRlc3QgdXNlcyBh
biA8aWZyYW1lPiB0byB2ZXJpZnkgYmVoYXZpb3IgZm9yIHNjcm9sbGVkCisgICAgICAgIDxpZnJh
bWU+cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRmluZElu
UGFnZS5tbToKKyAgICAgICAgKC1bVGVzdFNlYXJjaEFnZ3JlZ2F0b3IgaW5pdFdpdGhDb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdFNlYXJjaEFnZ3JlZ2F0b3IgZm91bmRSYW5n
ZTpmb3JTZWFyY2hTdHJpbmc6aW5Eb2N1bWVudDpdKToKKyAgICAgICAgKC1bVGVzdFNlYXJjaEFn
Z3JlZ2F0b3IgZm91bmRSYW5nZXNdKToKKyAgICAgICAgKC1bVGVzdFNlYXJjaEFnZ3JlZ2F0b3Ig
Y291bnRdKToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIyLTAxLTI1ICBBZGl0eWEgS2VlcnRoaSAg
PGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIGlucHV0LXNlY3VyaXR5IENT
UyBwcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9GaW5kSW5QYWdlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9GaW5kSW5QYWdlLm1tCmluZGV4IDg5NWEzZWQ1ZmE5ODgyOGJhOGZhMDI4YTZlMTE2ZTVhYjNi
YTM4OWEuLjIzYzgxN2M0NTI5NDg4YjE2MjhlY2M4OGVmZTRmNjJhM2NkNTBkYjIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRmluZEluUGFnZS5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbmRJblBhZ2UubW0K
QEAgLTM0MCwxMiArMzQwLDE0IEBAIFRFU1QoV2ViS2l0LCBGaW5kVGV4dEluSW1hZ2VPdmVybGF5
KQogQGludGVyZmFjZSBUZXN0U2VhcmNoQWdncmVnYXRvciA6IE5TT2JqZWN0IDxfVUlUZXh0U2Vh
cmNoQWdncmVnYXRvcj4KIAogQHByb3BlcnR5IChyZWFkb25seSkgTlNVSW50ZWdlciBjb3VudDsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheTxVSVRleHRSYW5nZSAqPiog
Zm91bmRSYW5nZXM7CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbXBsZXRpb25IYW5kbGVy
OihkaXNwYXRjaF9ibG9ja190KWNvbXBsZXRpb25IYW5kbGVyOwogCiBAZW5kCiAKIEBpbXBsZW1l
bnRhdGlvbiBUZXN0U2VhcmNoQWdncmVnYXRvciB7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PFVJVGV4dFJhbmdlICo+PiBfZm91bmRSYW5nZXM7CiAgICAgQmxvY2tQdHI8dm9pZCgpPiBf
Y29tcGxldGlvbkhhbmRsZXI7CiB9CiAKQEAgLTM1NCw3ICszNTYsNyBAQCBURVNUKFdlYktpdCwg
RmluZFRleHRJbkltYWdlT3ZlcmxheSkKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIF9jb3VudCA9IDA7CisgICAgX2ZvdW5kUmFuZ2Vz
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgX2NvbXBsZXRp
b25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgIHJldHVy
biBzZWxmOwpAQCAtMzYyLDcgKzM2NCw3IEBAIFRFU1QoV2ViS2l0LCBGaW5kVGV4dEluSW1hZ2VP
dmVybGF5KQogCiAtICh2b2lkKWZvdW5kUmFuZ2U6KFVJVGV4dFJhbmdlICopcmFuZ2UgZm9yU2Vh
cmNoU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBpbkRvY3VtZW50OihfVUlUZXh0U2VhcmNoRG9j
dW1lbnRJZGVudGlmaWVyKWRvY3VtZW50CiB7Ci0gICAgX2NvdW50Kys7CisgICAgW19mb3VuZFJh
bmdlcyBhZGRPYmplY3Q6cmFuZ2VdOwogfQogCiAtICh2b2lkKWZpbmlzaGVkU2VhcmNoaW5nCkBA
IC0zNzEsNiArMzczLDE2IEBAIFRFU1QoV2ViS2l0LCBGaW5kVGV4dEluSW1hZ2VPdmVybGF5KQog
ICAgICAgICBfY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAorLSAoTlNBcnJheTxVSVRleHRSYW5n
ZSAqPiopZm91bmRSYW5nZXMKK3sKKyAgICByZXR1cm4gX2ZvdW5kUmFuZ2VzLmdldCgpOworfQor
CistIChOU1VJbnRlZ2VyKWNvdW50Cit7CisgICAgcmV0dXJuIFtfZm91bmRSYW5nZXMgY291bnRd
OworfQorCiBAZW5kCiAKIHN0YXRpYyB2b2lkIHRlc3RQZXJmb3JtVGV4dFNlYXJjaFdpdGhRdWVy
eVN0cmluZ0luV2ViVmlldyhXS1dlYlZpZXcgKndlYlZpZXcsIE5TU3RyaW5nICpxdWVyeSwgVGVz
dFRleHRTZWFyY2hPcHRpb25zICpzZWFyY2hPcHRpb25zLCBOU1VJbnRlZ2VyIGV4cGVjdGVkTWF0
Y2hlcykKQEAgLTM4OCw5ICs0MDAsMjQgQEAgc3RhdGljIHZvaWQgdGVzdFBlcmZvcm1UZXh0U2Vh
cmNoV2l0aFF1ZXJ5U3RyaW5nSW5XZWJWaWV3KFdLV2ViVmlldyAqd2ViVmlldywgTlMKICAgICBF
WFBFQ1RfRVEoW2FnZ3JlZ2F0b3IgY291bnRdLCBleHBlY3RlZE1hdGNoZXMpOwogfQogCitzdGF0
aWMgTlNBcnJheTxVSVRleHRSYW5nZSAqPiAqIGdldFRleHRSYW5nZXNGb3JRdWVyeVN0cmluZyhX
S1dlYlZpZXcgKndlYlZpZXcsIE5TU3RyaW5nICpxdWVyeSkKK3sKKyAgICBfX2Jsb2NrIGJvb2wg
ZmluaXNoZWRTZWFyY2hpbmcgPSBmYWxzZTsKKyAgICBhdXRvIGFnZ3JlZ2F0b3IgPSBhZG9wdE5T
KFtbVGVzdFNlYXJjaEFnZ3JlZ2F0b3IgYWxsb2NdIGluaXRXaXRoQ29tcGxldGlvbkhhbmRsZXI6
XnsKKyAgICAgICAgZmluaXNoZWRTZWFyY2hpbmcgPSB0cnVlOworICAgIH1dKTsKKworICAgIGF1
dG8gc2VhcmNoT3B0aW9ucyA9IGFkb3B0TlMoW1tUZXN0VGV4dFNlYXJjaE9wdGlvbnMgYWxsb2Nd
IGluaXRdKTsKKyAgICBbd2ViVmlldyBwZXJmb3JtVGV4dFNlYXJjaFdpdGhRdWVyeVN0cmluZzpx
dWVyeSB1c2luZ09wdGlvbnM6KF9VSVRleHRTZWFyY2hPcHRpb25zICopc2VhcmNoT3B0aW9ucy5n
ZXQoKSByZXN1bHRBZ2dyZWdhdG9yOmFnZ3JlZ2F0b3IuZ2V0KCldOworCisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZFNlYXJjaGluZyk7CisKKyAgICByZXR1cm4gW1thZ2dy
ZWdhdG9yIGZvdW5kUmFuZ2VzXSBjb3B5XTsKK30KKwogVEVTVChXZWJLaXQsIEZpbmRJblBhZ2Up
CiB7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAyMDAsIDIwMCldKTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgMjAwLCAyMDApXSk7CiAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVl
c3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJsb3RzLW9mLXRleHQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpyZXF1ZXN0XTsKQEAgLTQwMiw3ICs0MjksNyBAQCBURVNUKFdlYktpdCwgRmluZElu
UGFnZSkKIAogVEVTVChXZWJLaXQsIEZpbmRJblBhZ2VDYXNlSW5zZW5zaXRpdmUpCiB7Ci0gICAg
UmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAyMDAsIDIwMCldKTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgMjAwLCAyMDApXSk7CiAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVz
b3VyY2U6QCJsb3RzLW9mLXRleHQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpy
ZXF1ZXN0XTsKQEAgLTQxNyw3ICs0NDQsNyBAQCBURVNUKFdlYktpdCwgRmluZEluUGFnZUNhc2VJ
bnNlbnNpdGl2ZSkKIAogVEVTVChXZWJLaXQsIEZpbmRJblBhZ2VTdGFydHNXaXRoKQogewotICAg
IFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMjAwLCAyMDApXSk7CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDIwMCwgMjAwKV0pOwogCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJl
c291cmNlOkAibG90cy1vZi10ZXh0IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5
OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
cmVxdWVzdF07CkBAIC00MzYsNyArNDYzLDcgQEAgVEVTVChXZWJLaXQsIEZpbmRJblBhZ2VTdGFy
dHNXaXRoKQogCiBURVNUKFdlYktpdCwgRmluZEluUGFnZUZ1bGxXb3JkKQogewotICAgIFJldGFp
blB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMjAwLCAyMDApXSk7CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDIwMCwgMjAwKV0pOwogCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAibG90cy1vZi10ZXh0IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVz
dF07CkBAIC00NTQsNyArNDgxLDcgQEAgVEVTVChXZWJLaXQsIEZpbmRJblBhZ2VGdWxsV29yZCkK
IAogVEVTVChXZWJLaXQsIEZpbmRJbnRlcmFjdGlvbikKIHsKLSAgICBSZXRhaW5QdHI8V0tXZWJW
aWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpD
R1JlY3RNYWtlKDAsIDAsIDIwMCwgMjAwKV0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAyMDAsIDIw
MCldKTsKIAogICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3IF9maW5kSW50ZXJhY3Rpb25dKTsKIApA
QCAtNDY1LDQgKzQ5MiwzNiBAQCBURVNUKFdlYktpdCwgRmluZEludGVyYWN0aW9uKQogICAgIEVY
UEVDVF9OVUxMKFt3ZWJWaWV3IF9maW5kSW50ZXJhY3Rpb25dKTsKIH0KIAorVEVTVChXZWJLaXQs
IFJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2UpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6
QCI8aWZyYW1lIHNyY2RvYz0nPHA+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3Rl
dHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQg
bGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFRlbGx1cyBpbiBtZXR1cyB2dWxwdXRhdGUg
ZXUgc2NlbGVyaXNxdWUgZmVsaXMgaW1wZXJkaWV0LiBNaSBxdWlzIGhlbmRyZXJpdCBkb2xvciBt
YWduYSBlZ2V0IGVzdCBsb3JlbSBpcHN1bSBkb2xvci4gSW4gY3Vyc3VzIHR1cnBpcyBtYXNzYSB0
aW5jaWR1bnQgZHVpIHV0IG9ybmFyZS4gU2FwaWVuIGV0IGxpZ3VsYSB1bGxhbWNvcnBlciBtYWxl
c3VhZGEuIE1hZWNlbmFzIHZvbHV0cGF0IGJsYW5kaXQgYWxpcXVhbSBldGlhbSBlcmF0LiBUdXJw
aXMgZWdlc3RhcyBpbnRlZ2VyIGVnZXQgYWxpcXVldCBuaWJoIHByYWVzZW50IHRyaXN0aXF1ZS4g
SXBzdW0gZG9sb3Igc2l0IGFtZXQgY29uc2VjdGV0dXIgYWRpcGlzY2luZy4gVGVsbHVzIGNyYXMg
YWRpcGlzY2luZyBlbmltIGV1IHR1cnBpcyBlZ2VzdGFzIHByZXRpdW0gYWVuZWFuIHBoYXJldHJh
LiBTZW0gZnJpbmdpbGxhIHV0IG1vcmJpIHRpbmNpZHVudCBhdWd1ZSBpbnRlcmR1bSB2ZWxpdCBl
dWlzbW9kLiBIYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQgbmV0dXMuIEFlbmVh
biBldWlzbW9kIGVsZW1lbnR1bSBuaXNpIHF1aXMuIEZhY2lsaXNpIG51bGxhbSB2ZWhpY3VsYSBp
cHN1bSBhLiBFbGVtZW50dW0gZmFjaWxpc2lzIGxlbyB2ZWwgZnJpbmdpbGxhLiBNb2xlc3RpZSBu
dW5jIG5vbiBibGFuZGl0IG1hc3NhIGVuaW0uIE9yY2kgYWMgYXVjdG9yIGF1Z3VlIG1hdXJpcy4g
UGVsbGVudGVzcXVlIHB1bHZpbmFyIHBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlx
dWUgc2VuZWN0dXMgZXQuIE1hZ25pcyBkaXMgcGFydHVyaWVudCBtb250ZXMgbmFzY2V0dXIgcmlk
aWN1bHVzIG11cyBtYXVyaXMgdml0YWUuIElkIGxlbyBpbiB2aXRhZSB0dXJwaXMgbWFzc2Egc2Vk
LiBOZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVycGlzIGVnZXN0YXMgc2VkIHRlbXB1cy4g
TW9yYmkgcXVpcyBjb21tb2RvIG9kaW8gYWVuZWFuIHNlZCBhZGlwaXNjaW5nIGRpYW0gZG9uZWMu
IFNpdCBhbWV0IHB1cnVzIGdyYXZpZGEgcXVpcyBibGFuZGl0IHR1cnBpcy4gT2RpbyBldWlzbW9k
IGxhY2luaWEgYXQgcXVpcyByaXN1cyBzZWQgdnVscHV0YXRlLiBWYXJpdXMgZHVpcyBhdCBjb25z
ZWN0ZXR1ciBsb3JlbSBkb25lYyBtYXNzYS4gU2l0IGFtZXQgY29uc2VjdGV0dXIgYWRpcGlzY2lu
ZyBlbGl0IHBlbGxlbnRlc3F1ZSBoYWJpdGFudC4gRmV1Z2lhdCBpbiBmZXJtZW50dW0gcG9zdWVy
ZSB1cm5hIG5lYyB0aW5jaWR1bnQgcHJhZXNlbnQuPC9wPic+PC9pZnJhbWU+Il07CisKKyAgICBS
ZXRhaW5QdHI8TlNBcnJheTxVSVRleHRSYW5nZSAqPj4gcmFuZ2VzID0gYWRvcHROUyhnZXRUZXh0
UmFuZ2VzRm9yUXVlcnlTdHJpbmcod2ViVmlldy5nZXQoKSwgQCJTYXBpZW4iKSk7CisKKyAgICBf
X2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9yZXF1ZXN0UmVjdEZvckZv
dW5kVGV4dFJhbmdlOltyYW5nZXMgZmlyc3RPYmplY3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oQ0dS
ZWN0IHJlY3QpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocmVjdCwg
Q0dSZWN0TWFrZSgyNTIsIDE0NiwgNDQsIDE5KSkpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgcmFuZ2Vz
ID0gYWRvcHROUyhnZXRUZXh0UmFuZ2VzRm9yUXVlcnlTdHJpbmcod2ViVmlldy5nZXQoKSwgQCJm
ZXJtZW50dW0iKSk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3JlcXVlc3RS
ZWN0Rm9yRm91bmRUZXh0UmFuZ2U6W3JhbmdlcyBmaXJzdE9iamVjdF0gY29tcGxldGlvbkhhbmRs
ZXI6XihDR1JlY3QgcmVjdCkgeworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVj
dChyZWN0LCBDR1JlY3RNYWtlKDIyOSwgNjQ2LCA3MiwgMTkpKSk7CisgICAgICAgIGRvbmUgPSB0
cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAg
ICBbd2ViVmlldyBzY3JvbGxSYW5nZVRvVmlzaWJsZTpbcmFuZ2VzIGZpcnN0T2JqZWN0XSBpbkRv
Y3VtZW50Om5pbF07CisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9yZXF1ZXN0UmVj
dEZvckZvdW5kVGV4dFJhbmdlOltyYW5nZXMgZmlyc3RPYmplY3RdIGNvbXBsZXRpb25IYW5kbGVy
Ol4oQ0dSZWN0IHJlY3QpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3Qo
cmVjdCwgQ0dSZWN0TWFrZSgyMjksIDEwNCwgNzIsIDE5KSkpOworICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCiAj
ZW5kaWYgLy8gSEFWRShVSUZJTkRJTlRFUkFDVElPTikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450273</attachid>
            <date>2022-01-28 13:21:11 -0800</date>
            <delta_ts>2022-01-28 15:58:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235830-20220128132110.patch</filename>
            <type>text/plain</type>
            <size>19737</size>
            <attacher name="Aditya Keerthi">akeerthi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBlOTJlNDY1MTdmMjAwYmFm
NWZkNzlkNDRkOTBjMzQ2MjU3NzA1MTkuLjM3ZjU5NTMwNzhlMjQ1ZmYxYjhjN2ViMzhhYmFlYzgw
YzU2NjA3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjItMDEtMjggIEFkaXR5YSBL
ZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gcmV0cmll
dmUgdGhlIHJlY3Qgb2YgYSBmb3VuZCB0ZXh0IHJhbmdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU4MzAKKyAgICAgICAgcmRhcjovLzg4MTkzMDA0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpZW50
cyBvZiBmb3VuZCB0ZXh0IHJhbmdlcyBuZWVkIGEgd2F5IHRvIGRldGVybWluZSB0aGVpciBwb3Np
dGlvbgorICAgICAgICBpbiB0aGUgd2ViIHZpZXcuIEFuIGFzeW5jaHJvbm91cyBTUEkgaXMgcHJv
dmlkZWQgdG8gc3VwcG9ydCB0aGlzIG5lZWQuCisgICAgICAgIFRoaXMgaW5mb3JtYXRpb24gaXMg
bm90IGVuY29kZWQgaW4gdGhlIHRleHQgcmFuZ2UgaXRzZWxmLCBhcyB0aGUKKyAgICAgICAgcG9z
aXRpb24gY2FuIGNoYW5nZSBkdWUgdG8gc2Nyb2xsaW5nIGluIHN1Yi1zY3JvbGxhYmxlIHJlZ2lv
bnMuCisgICAgICAgIENvbnNlcXVlbnRseSwgdGhlIHBvc2l0aW9uIG11c3QgYmUgb2J0YWluZWQg
YnkgY29tbXVuaWNhdGluZyB3aXRoIHRoZQorICAgICAgICBXZWJQcm9jZXNzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Jl
cXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVxdWVzdFJlY3RGb3JGb3VuZFRleHRSYW5nZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVxdWVzdFJlY3RGb3JGb3VuZFRl
eHRSYW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRm91bmRUZXh0UmFuZ2VDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Rm91bmRUZXh0UmFuZ2VDb250cm9sbGVyOjpyZXF1ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRm91bmRUZXh0UmFuZ2VDb250cm9sbGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIyLTAxLTI3ICBBZGl0eWEgS2VlcnRoaSAg
PGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZGVjb3JhdGlu
ZyBhbmQgc2Nyb2xsaW5nIHRvIHJhbmdlcyBpbiBXZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xsZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCmluZGV4IGM5ZjEyM2MwNmI3OGUwZTM4NmVkZGE4NzUzMDI5ZTBjNmFjMzExZTUuLjVl
MTViNjVkMGM3MDBmOGEyZDliNmU4YTk3MTlmYWNiOWMyNzM1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDQ1
LDYgKzQ0NSw4IEBAIGZvciB0aGlzIHByb3BlcnR5LgogI2lmIF9faGFzX2luY2x1ZGUoPFVJS2l0
L19VSUZpbmRJbnRlcmFjdGlvbi5oPikKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
X1VJRmluZEludGVyYWN0aW9uICpfZmluZEludGVyYWN0aW9uIFdLX0FQSV9BVkFJTEFCTEUoaW9z
KFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkd3JpdGUsIHNldHRlcj1f
c2V0RmluZEludGVyYWN0aW9uRW5hYmxlZDopIEJPT0wgX2ZpbmRJbnRlcmFjdGlvbkVuYWJsZWQg
V0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworCistICh2b2lkKV9yZXF1ZXN0UmVj
dEZvckZvdW5kVGV4dFJhbmdlOihVSVRleHRSYW5nZSAqKXJhbmdlcyBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoQ0dSZWN0KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKGlv
cyhXS19JT1NfVEJBKSk7CiAjZW5kaWYKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IDJmNDQ5MDZkNDdiYTNmMzZmZWY5
ZjQ1OWIyNzJkYjhlYTY2MmIwMmEuLmJhZjViMGM5OWQwMWY2YzgxYTc1MWVmOGEwOGVjNmRiZGE1
NDkzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJW
aWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
SU9TLm1tCkBAIC0zNTUzLDYgKzM1NTMsMTEgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6Vmlld3BvcnRBcmd1bWVudHM+IHZpZXdwb3J0QXJndW1lbnRzRnJvbURpY3Rpb25hcnkKICAg
ICBbX2NvbnRlbnRWaWV3IGRpZEVuZFRleHRTZWFyY2hPcGVyYXRpb25dOwogfQogCistICh2b2lk
KV9yZXF1ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlOihVSVRleHRSYW5nZSAqKXJhbmdlcyBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQ0dSZWN0IHJlY3QpKWNvbXBsZXRpb25IYW5kbGVyCit7
CisgICAgW19jb250ZW50VmlldyByZXF1ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlOnJhbmdlcyBj
b21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07Cit9CisKICNlbmRpZiAvLyBIQVZF
KFVJRklORElOVEVSQUNUSU9OKQogCiBAZW5kIC8vIFdLV2ViVmlldyAoV0tQcml2YXRlSU9TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYTBiZDQwNmY3ZWJj
MmViYTlkODM0MWFlZGZkOWU0MDlkZGVkN2EyMi4uMTZhY2VmNWFhMzE4ZjNlNDhhYmYzZjQyMDkz
NDQ3ZDgyOTFjZmJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC00MzExLDYgKzQzMTEsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEVuZFRleHRTZWFy
Y2hPcGVyYXRpb24oKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEVuZFRleHRTZWFy
Y2hPcGVyYXRpb24oKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdEZvckZv
dW5kVGV4dFJhbmdlKGNvbnN0IFdlYkZvdW5kVGV4dFJhbmdlJiByYW5nZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpGbG9hdFJlY3QpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit7Cisg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0UmVjdEZvckZv
dW5kVGV4dFJhbmdlKHJhbmdlKSwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Cit9CisKIHZv
aWQgV2ViUGFnZVByb3h5OjpnZXRJbWFnZUZvckZpbmRNYXRjaChpbnQzMl90IG1hdGNoSW5kZXgp
CiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0SW1hZ2VGb3JGaW5kTWF0Y2gobWF0
Y2hJbmRleCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAzNGFi
N2NlMTNlMzhmZGJiOTdhMWY5NjBlZWQ4ZjhkZjYxZjdiYzc1Li44NGYxZmQ1YTczYzI1YTVjZmY1
YWJiMDNhZmJiZjUxZWM3NDQ3NDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMTIxNiw2ICsxMjE2LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkQmVnaW5UZXh0
U2VhcmNoT3BlcmF0aW9uKCk7CiAgICAgdm9pZCBkaWRFbmRUZXh0U2VhcmNoT3BlcmF0aW9uKCk7
CiAKKyAgICB2b2lkIHJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2UoY29uc3QgV2ViRm91bmRU
ZXh0UmFuZ2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkZsb2F0UmVjdCk+JiYp
OworCiAgICAgdm9pZCBnZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVz
Q2hpbGRGcmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5n
Jik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDkzNzUzYjVkNmJmOTU2YmI1MWRiNzQ0OTc3OWE2ZmRm
YzE4NTM3ZTYuLjY4NzU5Y2MyNzQ1MDlmMmU3YTdlNWI4YmYwZDFmNjI2MTM4OWYwY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgKQEAgLTc4MSw2ICs3ODEsMTAgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRW
SUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIC0g
KHZvaWQpcmVxdWVzdFRleHRSZWNvZ25pdGlvbjooTlNVUkwgKilpbWFnZVVSTCBpbWFnZURhdGE6
KGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKWltYWdlRGF0YSBpZGVudGlm
aWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6VGV4dFJlY29nbml0aW9uUmVzdWx0JiYpPiYmKWNvbXBsZXRp
b247CiAjZW5kaWYKIAorI2lmIEhBVkUoVUlGSU5ESU5URVJBQ1RJT04pCistICh2b2lkKXJlcXVl
c3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2U6KFVJVGV4dFJhbmdlICopcmFuZ2UgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKENHUmVjdCkpY29tcGxldGlvbkhhbmRsZXI7CisjZW5kaWYKKwogQGVu
ZAogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmlu
ZGV4IGUwYWIwN2ZjMzYzMzg0M2I5ZmMxYTBlNmRmZWQzZDNhMTVjYjQ0MGEuLmEyNDYzMmU4ZGE1
YWM5YTU0MzY1N2YyMGQ4YTFjNDBkOGIxYTY3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMTAxMzUs
NiArMTAxMzUsMTggQEAgc3RhdGljIFJldGFpblB0cjxOU0l0ZW1Qcm92aWRlcj4gY3JlYXRlSXRl
bVByb3ZpZGVyKGNvbnN0IFdlYktpdDo6V2ViUGFnZVByb3h5JgogICAgIHJldHVybiBbc2VsZiBv
ZmZzZXRGcm9tUG9zaXRpb246ZnJvbSB0b1Bvc2l0aW9uOnRvUG9zaXRpb25dOwogfQogCistICh2
b2lkKXJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2U6KFVJVGV4dFJhbmdlICopcmFuZ2UgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKENHUmVjdCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAg
ICBpZiAoYXV0byogZm91bmRUZXh0UmFuZ2UgPSBkeW5hbWljX29iamNfY2FzdDxXS0ZvdW5kVGV4
dFJhbmdlPihyYW5nZSkpIHsKKyAgICAgICAgX3BhZ2UtPnJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0
UmFuZ2UoW2ZvdW5kVGV4dFJhbmdlIHdlYkZvdW5kVGV4dFJhbmdlXSwgW2NvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OkZsb2F0UmVj
dCByZWN0KSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZWN0KTsKKyAgICAgICAg
fSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihDR1Jl
Y3RaZXJvKTsKK30KKwogI2VuZGlmIC8vIEhBVkUoVUlGSU5ESU5URVJBQ1RJT04pCiAKICNpZiBF
TkFCTEUoSU1BR0VfQU5BTFlTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRm91bmRUZXh0UmFuZ2VDb250cm9sbGVyLmNwcAppbmRl
eCBkZmIwMmZlOGMyY2QzN2U5YjE4ODYzMWYwYzQ2MTJjNTU4NTkzNTU5Li43NDgwMmM0Nzg3NTVm
ZmU2MWI5MzA5MmNiY2E2ZDBhYzdjY2M5YzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZvdW5kVGV4dFJhbmdlQ29udHJvbGxl
ci5jcHAKQEAgLTE3Miw2ICsxNzIsMTggQEAgdm9pZCBXZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xs
ZXI6OmRpZEVuZFRleHRTZWFyY2hPcGVyYXRpb24oKQogICAgIG1fZmluZFBhZ2VPdmVybGF5ID0g
bnVsbHB0cjsKIH0KIAordm9pZCBXZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xsZXI6OnJlcXVlc3RS
ZWN0Rm9yRm91bmRUZXh0UmFuZ2UoY29uc3QgV2ViRm91bmRUZXh0UmFuZ2UmIHJhbmdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkZsb2F0UmVjdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgYXV0byBzaW1wbGVSYW5nZSA9IHNpbXBsZVJhbmdlRnJvbUZvdW5kVGV4dFJh
bmdlKHJhbmdlKTsKKyAgICBpZiAoIXNpbXBsZVJhbmdlKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiBmcmFtZVZp
ZXcgPSBzaW1wbGVSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLmZyYW1lKCktPnZp
ZXcoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZVZpZXctPmNvbnRlbnRzVG9Sb290Vmll
dyh1bmlvblJlY3QoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZVRleHRSZWN0cygqc2lt
cGxlUmFuZ2UpKSkpOworfQorCiB2b2lkIFdlYkZvdW5kVGV4dFJhbmdlQ29udHJvbGxlcjo6d2ls
bE1vdmVUb1BhZ2UoV2ViQ29yZTo6UGFnZU92ZXJsYXkmLCBXZWJDb3JlOjpQYWdlKiBwYWdlKQog
ewogICAgIGlmIChwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRm91bmRUZXh0UmFuZ2VDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xsZXIuaAppbmRleCBkOTJiMWY2
NGYxNmExZThiNTFiY2Y3NjQ2OTYxY2RiZjMyMTQzNjFlLi44OWE4ZmZkNWE2YzQxYzU3ZDQxZmIx
YzUxMTBiMDdiNGFmYWFiYWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xsZXIuaApAQCAtNjIs
NiArNjIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRCZWdpblRleHRTZWFyY2hPcGVyYXRpb24o
KTsKICAgICB2b2lkIGRpZEVuZFRleHRTZWFyY2hPcGVyYXRpb24oKTsKIAorICAgIHZvaWQgcmVx
dWVzdFJlY3RGb3JGb3VuZFRleHRSYW5nZShjb25zdCBXZWJGb3VuZFRleHRSYW5nZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6RmxvYXRSZWN0KT4mJik7CisKIHByaXZhdGU6CiAg
ICAgLy8gUGFnZU92ZXJsYXk6OkNsaWVudC4KICAgICB2b2lkIHdpbGxNb3ZlVG9QYWdlKFdlYkNv
cmU6OlBhZ2VPdmVybGF5JiwgV2ViQ29yZTo6UGFnZSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4MWI3NDA2Mjk0NDQ5NzNi
NDA3ODk0OWIzN2Q5MzU4OTdkNzk5NTc0Li5hNjVmNTRlZmFmYjU1OGM1NzZhOWRhNDQxMzdjZWQx
NTkzMjY5NTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtNDcyNSw2ICs0NzI1LDExIEBAIHZvaWQgV2ViUGFnZTo6ZGlkRW5kVGV4dFNlYXJj
aE9wZXJhdGlvbigpCiAgICAgZm91bmRUZXh0UmFuZ2VDb250cm9sbGVyKCkuZGlkRW5kVGV4dFNl
YXJjaE9wZXJhdGlvbigpOwogfQogCit2b2lkIFdlYlBhZ2U6OnJlcXVlc3RSZWN0Rm9yRm91bmRU
ZXh0UmFuZ2UoY29uc3QgV2ViRm91bmRUZXh0UmFuZ2UmIHJhbmdlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OkZsb2F0UmVjdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
Zm91bmRUZXh0UmFuZ2VDb250cm9sbGVyKCkucmVxdWVzdFJlY3RGb3JGb3VuZFRleHRSYW5nZShy
YW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lkIFdlYlBhZ2U6Omdl
dEltYWdlRm9yRmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpCiB7CiAgICAgZmluZENvbnRy
b2xsZXIoKS5nZXRJbWFnZUZvckZpbmRNYXRjaChtYXRjaEluZGV4KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAzYzdjMjhjNTllNTk5OGYwYWI3Mzg5
MzdjYTAxYjA2OTVlMDM5YWQwLi4xNmRlMjExZjMyNGUzYTQwOWQwMTQzYjM2NzljYjI1MzhlNDQ4
YzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0x
NzY2LDYgKzE3NjYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQmVnaW5UZXh0U2VhcmNoT3Bl
cmF0aW9uKCk7CiAgICAgdm9pZCBkaWRFbmRUZXh0U2VhcmNoT3BlcmF0aW9uKCk7CiAKKyAgICB2
b2lkIHJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2UoY29uc3QgV2ViRm91bmRUZXh0UmFuZ2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkZsb2F0UmVjdCk+JiYpOworCiAjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIHZvaWQgc2VuZFZpZXdwb3J0QXR0cmlidXRl
c0NoYW5nZWQoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KaW5kZXggMWFkYTFiMzMzMzEyMzI2ZmY5ZjMzOGQ2NmNkNWM1ZWNjMTBiMzNlZS4uNThmZWM2
YTZhYmRkZjU4YTlmYjhhOTBlYWY1Y2Y0MjgyNDQ0ZjdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMTgsNiAr
MzE4LDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2Vi
S2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBDbGVhckFsbERlY29yYXRlZEZv
dW5kVGV4dCgpOwogICAgIERpZEJlZ2luVGV4dFNlYXJjaE9wZXJhdGlvbigpOwogICAgIERpZEVu
ZFRleHRTZWFyY2hPcGVyYXRpb24oKTsKKworICAgIFJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFu
Z2Uoc3RydWN0IFdlYktpdDo6V2ViRm91bmRUZXh0UmFuZ2UgcmFuZ2UpIC0+IChXZWJDb3JlOjpG
bG9hdFJlY3QgcmVjdCkgQXN5bmMKICAgICAKICAgICBBZGRNSU1FVHlwZVdpdGhDdXN0b21Db250
ZW50UHJvdmlkZXIoU3RyaW5nIG1pbWVUeXBlKQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDk3MzczYWI3NjVlMDBkMDczNjZmZmMzNWNiMzIy
MzI0YjJhNWYwZS4uOWE0NjBkNTRlOGE4ZDI3M2U3OGQxYWFhMWVjYmE0ZTQ3NTM1NzI1OCAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIzIEBACisyMDIyLTAxLTI4ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgU1BJIHRvIHJldHJpZXZlIHRoZSByZWN0IG9mIGEgZm91bmQgdGV4dCBy
YW5nZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1
ODMwCisgICAgICAgIHJkYXI6Ly84ODE5MzAwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgdGVzdCB0byB2ZXJpZnkgdGhlIEFQSSB3b3Jr
cyBhcyBleHBlY3RlZC4KKworICAgICAgICBUaGUgdGVzdCB1c2VzIGFuIDxpZnJhbWU+IHRvIHZl
cmlmeSBiZWhhdmlvciBmb3Igc2Nyb2xsZWQKKyAgICAgICAgPGlmcmFtZT5zLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaW5kSW5QYWdlLm1tOgorICAgICAg
ICAoLVtUZXN0U2VhcmNoQWdncmVnYXRvciBpbml0V2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtUZXN0U2VhcmNoQWdncmVnYXRvciBmb3VuZFJhbmdlOmZvclNlYXJjaFN0cmlu
ZzppbkRvY3VtZW50Ol0pOgorICAgICAgICAoLVtUZXN0U2VhcmNoQWdncmVnYXRvciBmb3VuZFJh
bmdlc10pOgorICAgICAgICAoLVtUZXN0U2VhcmNoQWdncmVnYXRvciBjb3VudF0pOgorICAgICAg
ICAoVEVTVCk6CisKIDIwMjItMDEtMjUgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIERpc2FibGUgaW5wdXQtc2VjdXJpdHkgQ1NTIHByb3BlcnR5CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbmRJblBhZ2Uu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbmRJblBhZ2UubW0K
aW5kZXggODk1YTNlZDVmYTk4ODI4YmE4ZmEwMjhhNmUxMTZlNWFiM2JhMzg5YS4uNDY5MjA5ZTNi
MWQyYjUwZGZkZWM4ODgwZDQ2NzU4MzBiMzdmMDJmMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaW5kSW5QYWdlLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRmluZEluUGFnZS5tbQpAQCAtMzQwLDEyICszNDAs
MTQgQEAgVEVTVChXZWJLaXQsIEZpbmRUZXh0SW5JbWFnZU92ZXJsYXkpCiBAaW50ZXJmYWNlIFRl
c3RTZWFyY2hBZ2dyZWdhdG9yIDogTlNPYmplY3QgPF9VSVRleHRTZWFyY2hBZ2dyZWdhdG9yPgog
CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBOU1VJbnRlZ2VyIGNvdW50OworQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBOU0FycmF5PFVJVGV4dFJhbmdlICo+KiBmb3VuZFJhbmdlczsKIAog
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29tcGxldGlvbkhhbmRsZXI6KGRpc3BhdGNoX2Jsb2Nr
X3QpY29tcGxldGlvbkhhbmRsZXI7CiAKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFRlc3RTZWFy
Y2hBZ2dyZWdhdG9yIHsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk8VUlUZXh0UmFuZ2Ug
Kj4+IF9mb3VuZFJhbmdlczsKICAgICBCbG9ja1B0cjx2b2lkKCk+IF9jb21wbGV0aW9uSGFuZGxl
cjsKIH0KIApAQCAtMzU0LDcgKzM1Niw3IEBAIFRFU1QoV2ViS2l0LCBGaW5kVGV4dEluSW1hZ2VP
dmVybGF5KQogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4g
bmlsOwogCi0gICAgX2NvdW50ID0gMDsKKyAgICBfZm91bmRSYW5nZXMgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBfY29tcGxldGlvbkhhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAgcmV0dXJuIHNlbGY7CkBAIC0zNjIs
NyArMzY0LDcgQEAgVEVTVChXZWJLaXQsIEZpbmRUZXh0SW5JbWFnZU92ZXJsYXkpCiAKIC0gKHZv
aWQpZm91bmRSYW5nZTooVUlUZXh0UmFuZ2UgKilyYW5nZSBmb3JTZWFyY2hTdHJpbmc6KE5TU3Ry
aW5nICopc3RyaW5nIGluRG9jdW1lbnQ6KF9VSVRleHRTZWFyY2hEb2N1bWVudElkZW50aWZpZXIp
ZG9jdW1lbnQKIHsKLSAgICBfY291bnQrKzsKKyAgICBbX2ZvdW5kUmFuZ2VzIGFkZE9iamVjdDpy
YW5nZV07CiB9CiAKIC0gKHZvaWQpZmluaXNoZWRTZWFyY2hpbmcKQEAgLTM3MSw2ICszNzMsMTYg
QEAgVEVTVChXZWJLaXQsIEZpbmRUZXh0SW5JbWFnZU92ZXJsYXkpCiAgICAgICAgIF9jb21wbGV0
aW9uSGFuZGxlcigpOwogfQogCistIChOU0FycmF5PFVJVGV4dFJhbmdlICo+Kilmb3VuZFJhbmdl
cworeworICAgIHJldHVybiBfZm91bmRSYW5nZXMuZ2V0KCk7Cit9CisKKy0gKE5TVUludGVnZXIp
Y291bnQKK3sKKyAgICByZXR1cm4gW19mb3VuZFJhbmdlcyBjb3VudF07Cit9CisKIEBlbmQKIAog
c3RhdGljIHZvaWQgdGVzdFBlcmZvcm1UZXh0U2VhcmNoV2l0aFF1ZXJ5U3RyaW5nSW5XZWJWaWV3
KFdLV2ViVmlldyAqd2ViVmlldywgTlNTdHJpbmcgKnF1ZXJ5LCBUZXN0VGV4dFNlYXJjaE9wdGlv
bnMgKnNlYXJjaE9wdGlvbnMsIE5TVUludGVnZXIgZXhwZWN0ZWRNYXRjaGVzKQpAQCAtMzg4LDkg
KzQwMCwyNSBAQCBzdGF0aWMgdm9pZCB0ZXN0UGVyZm9ybVRleHRTZWFyY2hXaXRoUXVlcnlTdHJp
bmdJbldlYlZpZXcoV0tXZWJWaWV3ICp3ZWJWaWV3LCBOUwogICAgIEVYUEVDVF9FUShbYWdncmVn
YXRvciBjb3VudF0sIGV4cGVjdGVkTWF0Y2hlcyk7CiB9CiAKK3N0YXRpYyBOU0FycmF5PFVJVGV4
dFJhbmdlICo+ICogZ2V0VGV4dFJhbmdlc0ZvclF1ZXJ5U3RyaW5nKFdLV2ViVmlldyAqd2ViVmll
dywgTlNTdHJpbmcgKnF1ZXJ5KQoreworICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZFNlYXJjaGlu
ZyA9IGZhbHNlOworICAgIGF1dG8gYWdncmVnYXRvciA9IGFkb3B0TlMoW1tUZXN0U2VhcmNoQWdn
cmVnYXRvciBhbGxvY10gaW5pdFdpdGhDb21wbGV0aW9uSGFuZGxlcjpeeworICAgICAgICBmaW5p
c2hlZFNlYXJjaGluZyA9IHRydWU7CisgICAgfV0pOworCisgICAgLy8gRklYTUU6IChyZGFyOi8v
ODYxNDA5MTQpIFVzZSBfVUlUZXh0U2VhcmNoT3B0aW9ucyBkaXJlY3RseSB3aGVuIHRoZSBzeW1i
b2wgaXMgZXhwb3J0ZWQuCisgICAgYXV0byBvcHRpb25zID0gYWRvcHROUyhbW1Rlc3RUZXh0U2Vh
cmNoT3B0aW9ucyBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHBlcmZvcm1UZXh0U2VhcmNo
V2l0aFF1ZXJ5U3RyaW5nOnF1ZXJ5IHVzaW5nT3B0aW9uczooX1VJVGV4dFNlYXJjaE9wdGlvbnMg
KilvcHRpb25zLmdldCgpIHJlc3VsdEFnZ3JlZ2F0b3I6YWdncmVnYXRvci5nZXQoKV07CisKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkU2VhcmNoaW5nKTsKKworICAgIHJl
dHVybiBbW2FnZ3JlZ2F0b3IgZm91bmRSYW5nZXNdIGNvcHldOworfQorCiBURVNUKFdlYktpdCwg
RmluZEluUGFnZSkKIHsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDIwMCwg
MjAwKV0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAyMDAsIDIwMCldKTsKIAogICAgIE5TVVJMUmVx
dWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImxvdHMtb2YtdGV4dCIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwpAQCAtNDAyLDcgKzQzMCw3IEBAIFRFU1QoV2Vi
S2l0LCBGaW5kSW5QYWdlKQogCiBURVNUKFdlYktpdCwgRmluZEluUGFnZUNhc2VJbnNlbnNpdGl2
ZSkKIHsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDIwMCwgMjAwKV0pOwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCAyMDAsIDIwMCldKTsKIAogICAgIE5TVVJMUmVxdWVzdCAqcmVx
dWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBVUkxGb3JSZXNvdXJjZTpAImxvdHMtb2YtdGV4dCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnJlcXVlc3RdOwpAQCAtNDE3LDcgKzQ0NSw3IEBAIFRFU1QoV2ViS2l0LCBGaW5k
SW5QYWdlQ2FzZUluc2Vuc2l0aXZlKQogCiBURVNUKFdlYktpdCwgRmluZEluUGFnZVN0YXJ0c1dp
dGgpCiB7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAyMDAsIDIwMCldKTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgMjAwLCAyMDApXSk7CiAKICAgICBOU1VSTFJlcXVlc3QgKnJl
cXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJsb3RzLW9mLXRleHQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpyZXF1ZXN0XTsKQEAgLTQzNiw3ICs0NjQsNyBAQCBURVNUKFdlYktpdCwgRmlu
ZEluUGFnZVN0YXJ0c1dpdGgpCiAKIFRFU1QoV2ViS2l0LCBGaW5kSW5QYWdlRnVsbFdvcmQpCiB7
Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAyMDAsIDIwMCldKTsKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgMjAwLCAyMDApXSk7CiAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3Qg
PSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJsb3RzLW9mLXRleHQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpyZXF1ZXN0XTsKQEAgLTQ1NCw3ICs0ODIsNyBAQCBURVNUKFdlYktpdCwgRmluZEluUGFn
ZUZ1bGxXb3JkKQogCiBURVNUKFdlYktpdCwgRmluZEludGVyYWN0aW9uKQogewotICAgIFJldGFp
blB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMjAwLCAyMDApXSk7CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDIwMCwgMjAwKV0pOwogCiAgICAgRVhQRUNUX05VTEwoW3dlYlZpZXcgX2ZpbmRJbnRlcmFj
dGlvbl0pOwogCkBAIC00NjUsNCArNDkzLDM2IEBAIFRFU1QoV2ViS2l0LCBGaW5kSW50ZXJhY3Rp
b24pCiAgICAgRVhQRUNUX05VTEwoW3dlYlZpZXcgX2ZpbmRJbnRlcmFjdGlvbl0pOwogfQogCitU
RVNUKFdlYktpdCwgUmVxdWVzdFJlY3RGb3JGb3VuZFRleHRSYW5nZSkKK3sKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
SFRNTFN0cmluZzpAIjxpZnJhbWUgc3JjZG9jPSc8cD5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1l
dCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5j
aWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVGVsbHVzIGluIG1ldHVz
IHZ1bHB1dGF0ZSBldSBzY2VsZXJpc3F1ZSBmZWxpcyBpbXBlcmRpZXQuIE1pIHF1aXMgaGVuZHJl
cml0IGRvbG9yIG1hZ25hIGVnZXQgZXN0IGxvcmVtIGlwc3VtIGRvbG9yLiBJbiBjdXJzdXMgdHVy
cGlzIG1hc3NhIHRpbmNpZHVudCBkdWkgdXQgb3JuYXJlLiBTYXBpZW4gZXQgbGlndWxhIHVsbGFt
Y29ycGVyIG1hbGVzdWFkYS4gTWFlY2VuYXMgdm9sdXRwYXQgYmxhbmRpdCBhbGlxdWFtIGV0aWFt
IGVyYXQuIFR1cnBpcyBlZ2VzdGFzIGludGVnZXIgZWdldCBhbGlxdWV0IG5pYmggcHJhZXNlbnQg
dHJpc3RpcXVlLiBJcHN1bSBkb2xvciBzaXQgYW1ldCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nLiBU
ZWxsdXMgY3JhcyBhZGlwaXNjaW5nIGVuaW0gZXUgdHVycGlzIGVnZXN0YXMgcHJldGl1bSBhZW5l
YW4gcGhhcmV0cmEuIFNlbSBmcmluZ2lsbGEgdXQgbW9yYmkgdGluY2lkdW50IGF1Z3VlIGludGVy
ZHVtIHZlbGl0IGV1aXNtb2QuIEhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldCBu
ZXR1cy4gQWVuZWFuIGV1aXNtb2QgZWxlbWVudHVtIG5pc2kgcXVpcy4gRmFjaWxpc2kgbnVsbGFt
IHZlaGljdWxhIGlwc3VtIGEuIEVsZW1lbnR1bSBmYWNpbGlzaXMgbGVvIHZlbCBmcmluZ2lsbGEu
IE1vbGVzdGllIG51bmMgbm9uIGJsYW5kaXQgbWFzc2EgZW5pbS4gT3JjaSBhYyBhdWN0b3IgYXVn
dWUgbWF1cmlzLiBQZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1v
cmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldC4gTWFnbmlzIGRpcyBwYXJ0dXJpZW50IG1vbnRlcyBu
YXNjZXR1ciByaWRpY3VsdXMgbXVzIG1hdXJpcyB2aXRhZS4gSWQgbGVvIGluIHZpdGFlIHR1cnBp
cyBtYXNzYSBzZWQuIE5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMgZWdlc3RhcyBz
ZWQgdGVtcHVzLiBNb3JiaSBxdWlzIGNvbW1vZG8gb2RpbyBhZW5lYW4gc2VkIGFkaXBpc2Npbmcg
ZGlhbSBkb25lYy4gU2l0IGFtZXQgcHVydXMgZ3JhdmlkYSBxdWlzIGJsYW5kaXQgdHVycGlzLiBP
ZGlvIGV1aXNtb2QgbGFjaW5pYSBhdCBxdWlzIHJpc3VzIHNlZCB2dWxwdXRhdGUuIFZhcml1cyBk
dWlzIGF0IGNvbnNlY3RldHVyIGxvcmVtIGRvbmVjIG1hc3NhLiBTaXQgYW1ldCBjb25zZWN0ZXR1
ciBhZGlwaXNjaW5nIGVsaXQgcGVsbGVudGVzcXVlIGhhYml0YW50LiBGZXVnaWF0IGluIGZlcm1l
bnR1bSBwb3N1ZXJlIHVybmEgbmVjIHRpbmNpZHVudCBwcmFlc2VudC48L3A+Jz48L2lmcmFtZT4i
XTsKKworICAgIGF1dG8gcmFuZ2VzID0gYWRvcHROUyhnZXRUZXh0UmFuZ2VzRm9yUXVlcnlTdHJp
bmcod2ViVmlldy5nZXQoKSwgQCJTYXBpZW4iKSk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9
IGZhbHNlOworICAgIFt3ZWJWaWV3IF9yZXF1ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlOltyYW5n
ZXMgZmlyc3RPYmplY3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oQ0dSZWN0IHJlY3QpIHsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocmVjdCwgQ0dSZWN0TWFrZSgyNTIsIDE0
NiwgNDQsIDE5KSkpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgcmFuZ2VzID0gYWRvcHROUyhnZXRUZXh0
UmFuZ2VzRm9yUXVlcnlTdHJpbmcod2ViVmlldy5nZXQoKSwgQCJmZXJtZW50dW0iKSk7CisKKyAg
ICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3JlcXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFu
Z2U6W3JhbmdlcyBmaXJzdE9iamVjdF0gY29tcGxldGlvbkhhbmRsZXI6XihDR1JlY3QgcmVjdCkg
eworICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChyZWN0LCBDR1JlY3RNYWtl
KDIyOSwgNjQ2LCA3MiwgMTkpKSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBbd2ViVmlldyBzY3JvbGxS
YW5nZVRvVmlzaWJsZTpbcmFuZ2VzIGZpcnN0T2JqZWN0XSBpbkRvY3VtZW50Om5pbF07CisgICAg
ZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9yZXF1ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdl
OltyYW5nZXMgZmlyc3RPYmplY3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oQ0dSZWN0IHJlY3QpIHsK
KyAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocmVjdCwgQ0dSZWN0TWFrZSgy
MjksIDEwNCwgNzIsIDE5KSkpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCiAjZW5kaWYgLy8gSEFWRShVSUZJ
TkRJTlRFUkFDVElPTikK
</data>
<flag name="review"
          id="476631"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450286</attachid>
            <date>2022-01-28 16:22:09 -0800</date>
            <delta_ts>2022-01-28 17:25:07 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235830-20220128162208.patch</filename>
            <type>text/plain</type>
            <size>19726</size>
            <attacher name="Aditya Keerthi">akeerthi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhiNjc5M2Y0MTRiYWZkZjA5
ZGQ2MWJhNmFmZDU3N2FjZjZiY2M1NmIuLjQ2NmE1M2E3ZDY3OWVkM2I2YWExZjkxZTI5YzI0NDRi
YTkxMzQ0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjItMDEtMjggIEFkaXR5YSBL
ZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gcmV0cmll
dmUgdGhlIHJlY3Qgb2YgYSBmb3VuZCB0ZXh0IHJhbmdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU4MzAKKyAgICAgICAgcmRhcjovLzg4MTkzMDA0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgIENsaWVudHMg
b2YgZm91bmQgdGV4dCByYW5nZXMgbmVlZCBhIHdheSB0byBkZXRlcm1pbmUgdGhlaXIgcG9zaXRp
b24KKyAgICAgICAgaW4gdGhlIHdlYiB2aWV3LiBBbiBhc3luY2hyb25vdXMgU1BJIGlzIHByb3Zp
ZGVkIHRvIHN1cHBvcnQgdGhpcyBuZWVkLgorICAgICAgICBUaGlzIGluZm9ybWF0aW9uIGlzIG5v
dCBlbmNvZGVkIGluIHRoZSB0ZXh0IHJhbmdlIGl0c2VsZiwgYXMgdGhlCisgICAgICAgIHBvc2l0
aW9uIGNhbiBjaGFuZ2UgZHVlIHRvIHNjcm9sbGluZyBpbiBzdWItc2Nyb2xsYWJsZSByZWdpb25z
LgorICAgICAgICBDb25zZXF1ZW50bHksIHRoZSBwb3NpdGlvbiBtdXN0IGJlIG9idGFpbmVkIGJ5
IGNvbW11bmljYXRpbmcgd2l0aCB0aGUKKyAgICAgICAgV2ViUHJvY2Vzcy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXF1
ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0
UmFuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZvdW5kVGV4dFJhbmdlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZv
dW5kVGV4dFJhbmdlQ29udHJvbGxlcjo6cmVxdWVzdFJlY3RGb3JGb3VuZFRleHRSYW5nZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZvdW5kVGV4dFJhbmdlQ29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6cmVxdWVzdFJlY3RGb3JGb3VuZFRleHRSYW5nZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMi0wMS0yNyAgQWRpdHlhIEtlZXJ0aGkgIDxh
a2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgTWlncmF0ZSBfVUlUZXh0U2VhcmNoaW5nIGlt
cGxlbWVudGF0aW9uIHRvIGJlIGJhY2tlZCBieSBXZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xsZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCmluZGV4IGM5ZjEyM2MwNmI3OGUwZTM4NmVkZGE4NzUzMDI5ZTBjNmFjMzExZTUuLjVl
MTViNjVkMGM3MDBmOGEyZDliNmU4YTk3MTlmYWNiOWMyNzM1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDQ1
LDYgKzQ0NSw4IEBAIGZvciB0aGlzIHByb3BlcnR5LgogI2lmIF9faGFzX2luY2x1ZGUoPFVJS2l0
L19VSUZpbmRJbnRlcmFjdGlvbi5oPikKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
X1VJRmluZEludGVyYWN0aW9uICpfZmluZEludGVyYWN0aW9uIFdLX0FQSV9BVkFJTEFCTEUoaW9z
KFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkd3JpdGUsIHNldHRlcj1f
c2V0RmluZEludGVyYWN0aW9uRW5hYmxlZDopIEJPT0wgX2ZpbmRJbnRlcmFjdGlvbkVuYWJsZWQg
V0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworCistICh2b2lkKV9yZXF1ZXN0UmVj
dEZvckZvdW5kVGV4dFJhbmdlOihVSVRleHRSYW5nZSAqKXJhbmdlcyBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoQ0dSZWN0KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKGlv
cyhXS19JT1NfVEJBKSk7CiAjZW5kaWYKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IDJmNDQ5MDZkNDdiYTNmMzZmZWY5
ZjQ1OWIyNzJkYjhlYTY2MmIwMmEuLmJhZjViMGM5OWQwMWY2YzgxYTc1MWVmOGEwOGVjNmRiZGE1
NDkzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJW
aWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3
SU9TLm1tCkBAIC0zNTUzLDYgKzM1NTMsMTEgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6Vmlld3BvcnRBcmd1bWVudHM+IHZpZXdwb3J0QXJndW1lbnRzRnJvbURpY3Rpb25hcnkKICAg
ICBbX2NvbnRlbnRWaWV3IGRpZEVuZFRleHRTZWFyY2hPcGVyYXRpb25dOwogfQogCistICh2b2lk
KV9yZXF1ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlOihVSVRleHRSYW5nZSAqKXJhbmdlcyBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQ0dSZWN0IHJlY3QpKWNvbXBsZXRpb25IYW5kbGVyCit7
CisgICAgW19jb250ZW50VmlldyByZXF1ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlOnJhbmdlcyBj
b21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07Cit9CisKICNlbmRpZiAvLyBIQVZF
KFVJRklORElOVEVSQUNUSU9OKQogCiBAZW5kIC8vIFdLV2ViVmlldyAoV0tQcml2YXRlSU9TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYTBiZDQwNmY3ZWJj
MmViYTlkODM0MWFlZGZkOWU0MDlkZGVkN2EyMi4uMTZhY2VmNWFhMzE4ZjNlNDhhYmYzZjQyMDkz
NDQ3ZDgyOTFjZmJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC00MzExLDYgKzQzMTEsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEVuZFRleHRTZWFy
Y2hPcGVyYXRpb24oKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEVuZFRleHRTZWFy
Y2hPcGVyYXRpb24oKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdEZvckZv
dW5kVGV4dFJhbmdlKGNvbnN0IFdlYkZvdW5kVGV4dFJhbmdlJiByYW5nZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpGbG9hdFJlY3QpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit7Cisg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0UmVjdEZvckZv
dW5kVGV4dFJhbmdlKHJhbmdlKSwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7Cit9CisKIHZv
aWQgV2ViUGFnZVByb3h5OjpnZXRJbWFnZUZvckZpbmRNYXRjaChpbnQzMl90IG1hdGNoSW5kZXgp
CiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0SW1hZ2VGb3JGaW5kTWF0Y2gobWF0
Y2hJbmRleCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAzNGFi
N2NlMTNlMzhmZGJiOTdhMWY5NjBlZWQ4ZjhkZjYxZjdiYzc1Li44NGYxZmQ1YTczYzI1YTVjZmY1
YWJiMDNhZmJiZjUxZWM3NDQ3NDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMTIxNiw2ICsxMjE2LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkQmVnaW5UZXh0
U2VhcmNoT3BlcmF0aW9uKCk7CiAgICAgdm9pZCBkaWRFbmRUZXh0U2VhcmNoT3BlcmF0aW9uKCk7
CiAKKyAgICB2b2lkIHJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2UoY29uc3QgV2ViRm91bmRU
ZXh0UmFuZ2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkZsb2F0UmVjdCk+JiYp
OworCiAgICAgdm9pZCBnZXRDb250ZW50c0FzU3RyaW5nKENvbnRlbnRBc1N0cmluZ0luY2x1ZGVz
Q2hpbGRGcmFtZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5n
Jik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDkzNzUzYjVkNmJmOTU2YmI1MWRiNzQ0OTc3OWE2ZmRm
YzE4NTM3ZTYuLjY4NzU5Y2MyNzQ1MDlmMmU3YTdlNWI4YmYwZDFmNjI2MTM4OWYwY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgKQEAgLTc4MSw2ICs3ODEsMTAgQEAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRW
SUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIC0g
KHZvaWQpcmVxdWVzdFRleHRSZWNvZ25pdGlvbjooTlNVUkwgKilpbWFnZVVSTCBpbWFnZURhdGE6
KGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKWltYWdlRGF0YSBpZGVudGlm
aWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6VGV4dFJlY29nbml0aW9uUmVzdWx0JiYpPiYmKWNvbXBsZXRp
b247CiAjZW5kaWYKIAorI2lmIEhBVkUoVUlGSU5ESU5URVJBQ1RJT04pCistICh2b2lkKXJlcXVl
c3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2U6KFVJVGV4dFJhbmdlICopcmFuZ2UgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKENHUmVjdCkpY29tcGxldGlvbkhhbmRsZXI7CisjZW5kaWYKKwogQGVu
ZAogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmlu
ZGV4IDJmODZiZTU4ZDdhMGY2MmNkOTBlYzY3NDZiMGFmNDY2Mjk4ZmE3OGEuLmZiZDA3MjViMDg4
OTY3MjhlNTU1ZTVjZTM5M2M2ODI0M2JkYjBjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMTAxMzEs
NiArMTAxMzEsMTggQEAgc3RhdGljIFJldGFpblB0cjxOU0l0ZW1Qcm92aWRlcj4gY3JlYXRlSXRl
bVByb3ZpZGVyKGNvbnN0IFdlYktpdDo6V2ViUGFnZVByb3h5JgogICAgIHJldHVybiBbc2VsZiBv
ZmZzZXRGcm9tUG9zaXRpb246ZnJvbSB0b1Bvc2l0aW9uOnRvUG9zaXRpb25dOwogfQogCistICh2
b2lkKXJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2U6KFVJVGV4dFJhbmdlICopcmFuZ2UgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKENHUmVjdCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAg
ICBpZiAoYXV0byogZm91bmRUZXh0UmFuZ2UgPSBkeW5hbWljX29iamNfY2FzdDxXS0ZvdW5kVGV4
dFJhbmdlPihyYW5nZSkpIHsKKyAgICAgICAgX3BhZ2UtPnJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0
UmFuZ2UoW2ZvdW5kVGV4dFJhbmdlIHdlYkZvdW5kVGV4dFJhbmdlXSwgW2NvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OkZsb2F0UmVj
dCByZWN0KSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZWN0KTsKKyAgICAgICAg
fSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihDR1Jl
Y3RaZXJvKTsKK30KKwogI2VuZGlmIC8vIEhBVkUoVUlGSU5ESU5URVJBQ1RJT04pCiAKICNpZiBF
TkFCTEUoSU1BR0VfQU5BTFlTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRm91bmRUZXh0UmFuZ2VDb250cm9sbGVyLmNwcAppbmRl
eCBkZmIwMmZlOGMyY2QzN2U5YjE4ODYzMWYwYzQ2MTJjNTU4NTkzNTU5Li43NDgwMmM0Nzg3NTVm
ZmU2MWI5MzA5MmNiY2E2ZDBhYzdjY2M5YzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZvdW5kVGV4dFJhbmdlQ29udHJvbGxl
ci5jcHAKQEAgLTE3Miw2ICsxNzIsMTggQEAgdm9pZCBXZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xs
ZXI6OmRpZEVuZFRleHRTZWFyY2hPcGVyYXRpb24oKQogICAgIG1fZmluZFBhZ2VPdmVybGF5ID0g
bnVsbHB0cjsKIH0KIAordm9pZCBXZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xsZXI6OnJlcXVlc3RS
ZWN0Rm9yRm91bmRUZXh0UmFuZ2UoY29uc3QgV2ViRm91bmRUZXh0UmFuZ2UmIHJhbmdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkZsb2F0UmVjdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgYXV0byBzaW1wbGVSYW5nZSA9IHNpbXBsZVJhbmdlRnJvbUZvdW5kVGV4dFJh
bmdlKHJhbmdlKTsKKyAgICBpZiAoIXNpbXBsZVJhbmdlKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiBmcmFtZVZp
ZXcgPSBzaW1wbGVSYW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLmZyYW1lKCktPnZp
ZXcoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZVZpZXctPmNvbnRlbnRzVG9Sb290Vmll
dyh1bmlvblJlY3QoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZVRleHRSZWN0cygqc2lt
cGxlUmFuZ2UpKSkpOworfQorCiB2b2lkIFdlYkZvdW5kVGV4dFJhbmdlQ29udHJvbGxlcjo6d2ls
bE1vdmVUb1BhZ2UoV2ViQ29yZTo6UGFnZU92ZXJsYXkmLCBXZWJDb3JlOjpQYWdlKiBwYWdlKQog
ewogICAgIGlmIChwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRm91bmRUZXh0UmFuZ2VDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xsZXIuaAppbmRleCBkOTJiMWY2
NGYxNmExZThiNTFiY2Y3NjQ2OTYxY2RiZjMyMTQzNjFlLi44OWE4ZmZkNWE2YzQxYzU3ZDQxZmIx
YzUxMTBiMDdiNGFmYWFiYWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xsZXIuaApAQCAtNjIs
NiArNjIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRCZWdpblRleHRTZWFyY2hPcGVyYXRpb24o
KTsKICAgICB2b2lkIGRpZEVuZFRleHRTZWFyY2hPcGVyYXRpb24oKTsKIAorICAgIHZvaWQgcmVx
dWVzdFJlY3RGb3JGb3VuZFRleHRSYW5nZShjb25zdCBXZWJGb3VuZFRleHRSYW5nZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6RmxvYXRSZWN0KT4mJik7CisKIHByaXZhdGU6CiAg
ICAgLy8gUGFnZU92ZXJsYXk6OkNsaWVudC4KICAgICB2b2lkIHdpbGxNb3ZlVG9QYWdlKFdlYkNv
cmU6OlBhZ2VPdmVybGF5JiwgV2ViQ29yZTo6UGFnZSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4MWI3NDA2Mjk0NDQ5NzNi
NDA3ODk0OWIzN2Q5MzU4OTdkNzk5NTc0Li5hNjVmNTRlZmFmYjU1OGM1NzZhOWRhNDQxMzdjZWQx
NTkzMjY5NTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtNDcyNSw2ICs0NzI1LDExIEBAIHZvaWQgV2ViUGFnZTo6ZGlkRW5kVGV4dFNlYXJj
aE9wZXJhdGlvbigpCiAgICAgZm91bmRUZXh0UmFuZ2VDb250cm9sbGVyKCkuZGlkRW5kVGV4dFNl
YXJjaE9wZXJhdGlvbigpOwogfQogCit2b2lkIFdlYlBhZ2U6OnJlcXVlc3RSZWN0Rm9yRm91bmRU
ZXh0UmFuZ2UoY29uc3QgV2ViRm91bmRUZXh0UmFuZ2UmIHJhbmdlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OkZsb2F0UmVjdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
Zm91bmRUZXh0UmFuZ2VDb250cm9sbGVyKCkucmVxdWVzdFJlY3RGb3JGb3VuZFRleHRSYW5nZShy
YW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lkIFdlYlBhZ2U6Omdl
dEltYWdlRm9yRmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpCiB7CiAgICAgZmluZENvbnRy
b2xsZXIoKS5nZXRJbWFnZUZvckZpbmRNYXRjaChtYXRjaEluZGV4KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAzYzdjMjhjNTllNTk5OGYwYWI3Mzg5
MzdjYTAxYjA2OTVlMDM5YWQwLi4xNmRlMjExZjMyNGUzYTQwOWQwMTQzYjM2NzljYjI1MzhlNDQ4
YzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0x
NzY2LDYgKzE3NjYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQmVnaW5UZXh0U2VhcmNoT3Bl
cmF0aW9uKCk7CiAgICAgdm9pZCBkaWRFbmRUZXh0U2VhcmNoT3BlcmF0aW9uKCk7CiAKKyAgICB2
b2lkIHJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2UoY29uc3QgV2ViRm91bmRUZXh0UmFuZ2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkZsb2F0UmVjdCk+JiYpOworCiAjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIHZvaWQgc2VuZFZpZXdwb3J0QXR0cmlidXRl
c0NoYW5nZWQoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KaW5kZXggMWFkYTFiMzMzMzEyMzI2ZmY5ZjMzOGQ2NmNkNWM1ZWNjMTBiMzNlZS4uNThmZWM2
YTZhYmRkZjU4YTlmYjhhOTBlYWY1Y2Y0MjgyNDQ0ZjdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMTgsNiAr
MzE4LDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2Vi
S2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBDbGVhckFsbERlY29yYXRlZEZv
dW5kVGV4dCgpOwogICAgIERpZEJlZ2luVGV4dFNlYXJjaE9wZXJhdGlvbigpOwogICAgIERpZEVu
ZFRleHRTZWFyY2hPcGVyYXRpb24oKTsKKworICAgIFJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFu
Z2Uoc3RydWN0IFdlYktpdDo6V2ViRm91bmRUZXh0UmFuZ2UgcmFuZ2UpIC0+IChXZWJDb3JlOjpG
bG9hdFJlY3QgcmVjdCkgQXN5bmMKICAgICAKICAgICBBZGRNSU1FVHlwZVdpdGhDdXN0b21Db250
ZW50UHJvdmlkZXIoU3RyaW5nIG1pbWVUeXBlKQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDk3MzczYWI3NjVlMDBkMDczNjZmZmMzNWNiMzIy
MzI0YjJhNWYwZS4uOThhMTA3M2E1Nzk5ZWZmODllMmZkMTgxMTk5Yjc2OWJlZmU4NTk1NyAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIzIEBACisyMDIyLTAxLTI4ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgU1BJIHRvIHJldHJpZXZlIHRoZSByZWN0IG9mIGEgZm91bmQgdGV4dCBy
YW5nZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1
ODMwCisgICAgICAgIHJkYXI6Ly84ODE5MzAwNAorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNv
biBIc2llaC4KKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gdmVyaWZ5IHRoZSBBUEkgd29ya3Mg
YXMgZXhwZWN0ZWQuCisKKyAgICAgICAgVGhlIHRlc3QgdXNlcyBhbiA8aWZyYW1lPiB0byB2ZXJp
ZnkgYmVoYXZpb3IgZm9yIHNjcm9sbGVkCisgICAgICAgIDxpZnJhbWU+cy4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRmluZEluUGFnZS5tbToKKyAgICAgICAg
KC1bVGVzdFNlYXJjaEFnZ3JlZ2F0b3IgaW5pdFdpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKC1bVGVzdFNlYXJjaEFnZ3JlZ2F0b3IgZm91bmRSYW5nZTpmb3JTZWFyY2hTdHJpbmc6
aW5Eb2N1bWVudDpdKToKKyAgICAgICAgKC1bVGVzdFNlYXJjaEFnZ3JlZ2F0b3IgZm91bmRSYW5n
ZXNdKToKKyAgICAgICAgKC1bVGVzdFNlYXJjaEFnZ3JlZ2F0b3IgY291bnRdKToKKyAgICAgICAg
KFRFU1QpOgorCiAyMDIyLTAxLTI1ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNv
bT4KIAogICAgICAgICBEaXNhYmxlIGlucHV0LXNlY3VyaXR5IENTUyBwcm9wZXJ0eQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaW5kSW5QYWdlLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaW5kSW5QYWdlLm1tCmlu
ZGV4IDg5NWEzZWQ1ZmE5ODgyOGJhOGZhMDI4YTZlMTE2ZTVhYjNiYTM4OWEuLjFhMTI3OTMzYmYy
MGFlZWMyZDdjYzQxNTEyMWI1YTU5ZWY5OGRiN2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRmluZEluUGFnZS5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbmRJblBhZ2UubW0KQEAgLTM0MCwxMiArMzQwLDE0
IEBAIFRFU1QoV2ViS2l0LCBGaW5kVGV4dEluSW1hZ2VPdmVybGF5KQogQGludGVyZmFjZSBUZXN0
U2VhcmNoQWdncmVnYXRvciA6IE5TT2JqZWN0IDxfVUlUZXh0U2VhcmNoQWdncmVnYXRvcj4KIAog
QHByb3BlcnR5IChyZWFkb25seSkgTlNVSW50ZWdlciBjb3VudDsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgTlNBcnJheTxVSVRleHRSYW5nZSAqPiAqZm91bmRSYW5nZXM7CiAKIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aENvbXBsZXRpb25IYW5kbGVyOihkaXNwYXRjaF9ibG9ja190
KWNvbXBsZXRpb25IYW5kbGVyOwogCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0U2VhcmNo
QWdncmVnYXRvciB7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PFVJVGV4dFJhbmdlICo+
PiBfZm91bmRSYW5nZXM7CiAgICAgQmxvY2tQdHI8dm9pZCgpPiBfY29tcGxldGlvbkhhbmRsZXI7
CiB9CiAKQEAgLTM1NCw3ICszNTYsNyBAQCBURVNUKFdlYktpdCwgRmluZFRleHRJbkltYWdlT3Zl
cmxheSkKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5p
bDsKIAotICAgIF9jb3VudCA9IDA7CisgICAgX2ZvdW5kUmFuZ2VzID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgX2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgIHJldHVybiBzZWxmOwpAQCAtMzYyLDcg
KzM2NCw3IEBAIFRFU1QoV2ViS2l0LCBGaW5kVGV4dEluSW1hZ2VPdmVybGF5KQogCiAtICh2b2lk
KWZvdW5kUmFuZ2U6KFVJVGV4dFJhbmdlICopcmFuZ2UgZm9yU2VhcmNoU3RyaW5nOihOU1N0cmlu
ZyAqKXN0cmluZyBpbkRvY3VtZW50OihfVUlUZXh0U2VhcmNoRG9jdW1lbnRJZGVudGlmaWVyKWRv
Y3VtZW50CiB7Ci0gICAgX2NvdW50Kys7CisgICAgW19mb3VuZFJhbmdlcyBhZGRPYmplY3Q6cmFu
Z2VdOwogfQogCiAtICh2b2lkKWZpbmlzaGVkU2VhcmNoaW5nCkBAIC0zNzEsNiArMzczLDE2IEBA
IFRFU1QoV2ViS2l0LCBGaW5kVGV4dEluSW1hZ2VPdmVybGF5KQogICAgICAgICBfY29tcGxldGlv
bkhhbmRsZXIoKTsKIH0KIAorLSAoTlNBcnJheTxVSVRleHRSYW5nZSAqPiopZm91bmRSYW5nZXMK
K3sKKyAgICByZXR1cm4gX2ZvdW5kUmFuZ2VzLmdldCgpOworfQorCistIChOU1VJbnRlZ2VyKWNv
dW50Cit7CisgICAgcmV0dXJuIFtfZm91bmRSYW5nZXMgY291bnRdOworfQorCiBAZW5kCiAKIHN0
YXRpYyB2b2lkIHRlc3RQZXJmb3JtVGV4dFNlYXJjaFdpdGhRdWVyeVN0cmluZ0luV2ViVmlldyhX
S1dlYlZpZXcgKndlYlZpZXcsIE5TU3RyaW5nICpxdWVyeSwgVGVzdFRleHRTZWFyY2hPcHRpb25z
ICpzZWFyY2hPcHRpb25zLCBOU1VJbnRlZ2VyIGV4cGVjdGVkTWF0Y2hlcykKQEAgLTM4OCw5ICs0
MDAsMjUgQEAgc3RhdGljIHZvaWQgdGVzdFBlcmZvcm1UZXh0U2VhcmNoV2l0aFF1ZXJ5U3RyaW5n
SW5XZWJWaWV3KFdLV2ViVmlldyAqd2ViVmlldywgTlMKICAgICBFWFBFQ1RfRVEoW2FnZ3JlZ2F0
b3IgY291bnRdLCBleHBlY3RlZE1hdGNoZXMpOwogfQogCitzdGF0aWMgUmV0YWluUHRyPE5TQXJy
YXk8VUlUZXh0UmFuZ2UgKj4+IHRleHRSYW5nZXNGb3JRdWVyeVN0cmluZyhXS1dlYlZpZXcgKndl
YlZpZXcsIE5TU3RyaW5nICpxdWVyeSkKK3sKKyAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWRTZWFy
Y2hpbmcgPSBmYWxzZTsKKyAgICBhdXRvIGFnZ3JlZ2F0b3IgPSBhZG9wdE5TKFtbVGVzdFNlYXJj
aEFnZ3JlZ2F0b3IgYWxsb2NdIGluaXRXaXRoQ29tcGxldGlvbkhhbmRsZXI6XnsKKyAgICAgICAg
ZmluaXNoZWRTZWFyY2hpbmcgPSB0cnVlOworICAgIH1dKTsKKworICAgIC8vIEZJWE1FOiAocmRh
cjovLzg2MTQwOTE0KSBVc2UgX1VJVGV4dFNlYXJjaE9wdGlvbnMgZGlyZWN0bHkgd2hlbiB0aGUg
c3ltYm9sIGlzIGV4cG9ydGVkLgorICAgIGF1dG8gb3B0aW9ucyA9IGFkb3B0TlMoW1tUZXN0VGV4
dFNlYXJjaE9wdGlvbnMgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBwZXJmb3JtVGV4dFNl
YXJjaFdpdGhRdWVyeVN0cmluZzpxdWVyeSB1c2luZ09wdGlvbnM6KF9VSVRleHRTZWFyY2hPcHRp
b25zICopb3B0aW9ucy5nZXQoKSByZXN1bHRBZ2dyZWdhdG9yOmFnZ3JlZ2F0b3IuZ2V0KCldOwor
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZFNlYXJjaGluZyk7CisKKyAg
ICByZXR1cm4gYWRvcHROUyhbW2FnZ3JlZ2F0b3IgZm91bmRSYW5nZXNdIGNvcHldKTsKK30KKwog
VEVTVChXZWJLaXQsIEZpbmRJblBhZ2UpCiB7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCAyMDAsIDIwMCldKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMjAwLCAyMDApXSk7CiAK
ICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJsb3RzLW9mLXRleHQiIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKQEAgLTQwMiw3ICs0MzAs
NyBAQCBURVNUKFdlYktpdCwgRmluZEluUGFnZSkKIAogVEVTVChXZWJLaXQsIEZpbmRJblBhZ2VD
YXNlSW5zZW5zaXRpdmUpCiB7Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAy
MDAsIDIwMCldKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMjAwLCAyMDApXSk7CiAKICAgICBOU1VS
TFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJsb3RzLW9mLXRleHQiIHdpdGhFeHRlbnNp
b246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKQEAgLTQxNyw3ICs0NDUsNyBAQCBURVNU
KFdlYktpdCwgRmluZEluUGFnZUNhc2VJbnNlbnNpdGl2ZSkKIAogVEVTVChXZWJLaXQsIEZpbmRJ
blBhZ2VTdGFydHNXaXRoKQogewotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
MjAwLCAyMDApXSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDIwMCwgMjAwKV0pOwogCiAgICAgTlNV
UkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAibG90cy1vZi10ZXh0IiB3aXRoRXh0ZW5z
aW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CiAg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CkBAIC00MzYsNyArNDY0LDcgQEAgVEVT
VChXZWJLaXQsIEZpbmRJblBhZ2VTdGFydHNXaXRoKQogCiBURVNUKFdlYktpdCwgRmluZEluUGFn
ZUZ1bGxXb3JkKQogewotICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMjAwLCAy
MDApXSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDIwMCwgMjAwKV0pOwogCiAgICAgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAibG90cy1vZi10ZXh0IiB3aXRoRXh0ZW5zaW9uOkAi
aHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CiAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CkBAIC00NTQsNyArNDgyLDcgQEAgVEVTVChXZWJL
aXQsIEZpbmRJblBhZ2VGdWxsV29yZCkKIAogVEVTVChXZWJLaXQsIEZpbmRJbnRlcmFjdGlvbikK
IHsKLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDIwMCwgMjAwKV0pOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCAyMDAsIDIwMCldKTsKIAogICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3
IF9maW5kSW50ZXJhY3Rpb25dKTsKIApAQCAtNDY1LDQgKzQ5MywzNiBAQCBURVNUKFdlYktpdCwg
RmluZEludGVyYWN0aW9uKQogICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3IF9maW5kSW50ZXJhY3Rp
b25dKTsKIH0KIAorVEVTVChXZWJLaXQsIFJlcXVlc3RSZWN0Rm9yRm91bmRUZXh0UmFuZ2UpCit7
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8aWZyYW1lIHNyY2RvYz0nPHA+TG9yZW0gaXBzdW0g
ZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNt
b2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFRl
bGx1cyBpbiBtZXR1cyB2dWxwdXRhdGUgZXUgc2NlbGVyaXNxdWUgZmVsaXMgaW1wZXJkaWV0LiBN
aSBxdWlzIGhlbmRyZXJpdCBkb2xvciBtYWduYSBlZ2V0IGVzdCBsb3JlbSBpcHN1bSBkb2xvci4g
SW4gY3Vyc3VzIHR1cnBpcyBtYXNzYSB0aW5jaWR1bnQgZHVpIHV0IG9ybmFyZS4gU2FwaWVuIGV0
IGxpZ3VsYSB1bGxhbWNvcnBlciBtYWxlc3VhZGEuIE1hZWNlbmFzIHZvbHV0cGF0IGJsYW5kaXQg
YWxpcXVhbSBldGlhbSBlcmF0LiBUdXJwaXMgZWdlc3RhcyBpbnRlZ2VyIGVnZXQgYWxpcXVldCBu
aWJoIHByYWVzZW50IHRyaXN0aXF1ZS4gSXBzdW0gZG9sb3Igc2l0IGFtZXQgY29uc2VjdGV0dXIg
YWRpcGlzY2luZy4gVGVsbHVzIGNyYXMgYWRpcGlzY2luZyBlbmltIGV1IHR1cnBpcyBlZ2VzdGFz
IHByZXRpdW0gYWVuZWFuIHBoYXJldHJhLiBTZW0gZnJpbmdpbGxhIHV0IG1vcmJpIHRpbmNpZHVu
dCBhdWd1ZSBpbnRlcmR1bSB2ZWxpdCBldWlzbW9kLiBIYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUg
c2VuZWN0dXMgZXQgbmV0dXMuIEFlbmVhbiBldWlzbW9kIGVsZW1lbnR1bSBuaXNpIHF1aXMuIEZh
Y2lsaXNpIG51bGxhbSB2ZWhpY3VsYSBpcHN1bSBhLiBFbGVtZW50dW0gZmFjaWxpc2lzIGxlbyB2
ZWwgZnJpbmdpbGxhLiBNb2xlc3RpZSBudW5jIG5vbiBibGFuZGl0IG1hc3NhIGVuaW0uIE9yY2kg
YWMgYXVjdG9yIGF1Z3VlIG1hdXJpcy4gUGVsbGVudGVzcXVlIHB1bHZpbmFyIHBlbGxlbnRlc3F1
ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMgZXQuIE1hZ25pcyBkaXMgcGFydHVy
aWVudCBtb250ZXMgbmFzY2V0dXIgcmlkaWN1bHVzIG11cyBtYXVyaXMgdml0YWUuIElkIGxlbyBp
biB2aXRhZSB0dXJwaXMgbWFzc2Egc2VkLiBOZXR1cyBldCBtYWxlc3VhZGEgZmFtZXMgYWMgdHVy
cGlzIGVnZXN0YXMgc2VkIHRlbXB1cy4gTW9yYmkgcXVpcyBjb21tb2RvIG9kaW8gYWVuZWFuIHNl
ZCBhZGlwaXNjaW5nIGRpYW0gZG9uZWMuIFNpdCBhbWV0IHB1cnVzIGdyYXZpZGEgcXVpcyBibGFu
ZGl0IHR1cnBpcy4gT2RpbyBldWlzbW9kIGxhY2luaWEgYXQgcXVpcyByaXN1cyBzZWQgdnVscHV0
YXRlLiBWYXJpdXMgZHVpcyBhdCBjb25zZWN0ZXR1ciBsb3JlbSBkb25lYyBtYXNzYS4gU2l0IGFt
ZXQgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0IHBlbGxlbnRlc3F1ZSBoYWJpdGFudC4gRmV1
Z2lhdCBpbiBmZXJtZW50dW0gcG9zdWVyZSB1cm5hIG5lYyB0aW5jaWR1bnQgcHJhZXNlbnQuPC9w
Pic+PC9pZnJhbWU+Il07CisKKyAgICBhdXRvIHJhbmdlcyA9IHRleHRSYW5nZXNGb3JRdWVyeVN0
cmluZyh3ZWJWaWV3LmdldCgpLCBAIlNhcGllbiIpOworCisgICAgX19ibG9jayBib29sIGRvbmUg
PSBmYWxzZTsKKyAgICBbd2ViVmlldyBfcmVxdWVzdFJlY3RGb3JGb3VuZFRleHRSYW5nZTpbcmFu
Z2VzIGZpcnN0T2JqZWN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKENHUmVjdCByZWN0KSB7CisgICAg
ICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHJlY3QsIENHUmVjdE1ha2UoMjUyLCAx
NDYsIDQ0LCAxOSkpKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIHJhbmdlcyA9IHRleHRSYW5nZXNGb3JR
dWVyeVN0cmluZyh3ZWJWaWV3LmdldCgpLCBAImZlcm1lbnR1bSIpOworCisgICAgZG9uZSA9IGZh
bHNlOworICAgIFt3ZWJWaWV3IF9yZXF1ZXN0UmVjdEZvckZvdW5kVGV4dFJhbmdlOltyYW5nZXMg
Zmlyc3RPYmplY3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oQ0dSZWN0IHJlY3QpIHsKKyAgICAgICAg
RVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxUb1JlY3QocmVjdCwgQ0dSZWN0TWFrZSgyMjksIDY0Niwg
NzIsIDE5KSkpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgW3dlYlZpZXcgc2Nyb2xsUmFuZ2VUb1Zpc2li
bGU6W3JhbmdlcyBmaXJzdE9iamVjdF0gaW5Eb2N1bWVudDpuaWxdOworICAgIGRvbmUgPSBmYWxz
ZTsKKyAgICBbd2ViVmlldyBfcmVxdWVzdFJlY3RGb3JGb3VuZFRleHRSYW5nZTpbcmFuZ2VzIGZp
cnN0T2JqZWN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKENHUmVjdCByZWN0KSB7CisgICAgICAgIEVY
UEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHJlY3QsIENHUmVjdE1ha2UoMjI5LCAxMDQsIDcy
LCAxOSkpKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKK30KKwogI2VuZGlmIC8vIEhBVkUoVUlGSU5ESU5URVJBQ1RJ
T04pCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>