<?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>158823</bug_id>
          
          <creation_ts>2016-06-15 17:28:34 -0700</creation_ts>
          <short_desc>Forward/Back keyboard shortcuts need to flip for RTL</short_desc>
          <delta_ts>2016-06-16 10:54:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>conrad_shultz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1202782</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-06-15 17:28:34 -0700</bug_when>
    <thetext>Forward/Back keyboard shortcuts need to flip for RTL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202786</commentid>
    <comment_count>1</comment_count>
      <attachid>281413</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-06-15 17:32:21 -0700</bug_when>
    <thetext>Created attachment 281413
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202787</commentid>
    <comment_count>2</comment_count>
      <attachid>281414</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-06-15 17:33:34 -0700</bug_when>
    <thetext>Created attachment 281414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202790</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-15 17:36:22 -0700</bug_when>
    <thetext>Attachment 281414 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:65:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:66:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:67:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:68:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:69:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:71:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:72:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:73:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:78:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:81:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:82:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:83:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:84:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:85:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:86:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 15 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202791</commentid>
    <comment_count>4</comment_count>
      <attachid>281414</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-06-15 17:42:47 -0700</bug_when>
    <thetext>Comment on attachment 281414
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:4309
&gt; +@property (nonatomic) UISemanticContentAttribute semanticContentAttribute NS_AVAILABLE_IOS(9_0);

???

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:4429
&gt; +    _impl-&gt;setUserInterfaceLayoutDirection(userInterfaceLayoutDirection);

Super!

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:1440
&gt; +    _data-&gt;_impl-&gt;setUserInterfaceLayoutDirection(userInterfaceLayoutDirection);

Super!

&gt; Source/WebKit2/UIProcess/ios/WKContentView.mm:198
&gt; +    auto direction = [UIView userInterfaceLayoutDirectionForSemanticContentAttribute:contentAttribute] == UIUserInterfaceLayoutDirectionLeftToRight) ? UserInterfaceLayoutDirection::LTR : UserInterfaceLayoutDirection::RTL

Go bye bye.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202793</commentid>
    <comment_count>5</comment_count>
      <attachid>281414</attachid>
    <who name="Conrad Shultz">conrad_shultz</who>
    <bug_when>2016-06-15 17:45:49 -0700</bug_when>
    <thetext>Comment on attachment 281414
Patch

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

Does any of this need version checks?

&gt; Source/WebKit2/UIProcess/Cocoa/WebViewImpl.mm:4040
&gt; +    return UserInterfaceLayoutDirection::LTR;

Is this needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202794</commentid>
    <comment_count>6</comment_count>
      <attachid>281414</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-15 17:46:55 -0700</bug_when>
    <thetext>Comment on attachment 281414
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:4305
&gt; +    auto direction = [UIView userInterfaceLayoutDirectionForSemanticContentAttribute:contentAttribute] == UIUserInterfaceLayoutDirectionLeftToRight) ? UserInterfaceLayoutDirection::LTR : UserInterfaceLayoutDirection::RTL

In the Mac file you chose to use a function to convert from one enum to the other. But not here. I like the approach where you use the function.

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:4309
&gt;&gt; +@property (nonatomic) UISemanticContentAttribute semanticContentAttribute NS_AVAILABLE_IOS(9_0);
&gt; 
&gt; ???

I’m a little confused. Did you paste this here for reference and forget to remove it?

&gt;&gt; Source/WebKit2/UIProcess/Cocoa/WebViewImpl.mm:4040
&gt;&gt; +    return UserInterfaceLayoutDirection::LTR;
&gt; 
&gt; Is this needed?

ASSERT_NOT_REACHED?

&gt;&gt; Source/WebKit2/UIProcess/ios/WKContentView.mm:198
&gt;&gt; +    auto direction = [UIView userInterfaceLayoutDirectionForSemanticContentAttribute:contentAttribute] == UIUserInterfaceLayoutDirectionLeftToRight) ? UserInterfaceLayoutDirection::LTR : UserInterfaceLayoutDirection::RTL
&gt; 
&gt; Go bye bye.

Would be nice to share the conversion function with WKWebView. In fact, would be nice to find a way to not have this spread across both files ideally.

Looks like you forgot to use direction in this function, by the way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202795</commentid>
    <comment_count>7</comment_count>
      <attachid>281417</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-06-15 17:47:04 -0700</bug_when>
    <thetext>Created attachment 281417
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202796</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-15 17:49:54 -0700</bug_when>
    <thetext>Attachment 281417 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:65:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:66:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:67:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:68:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:69:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:71:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:72:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:73:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:78:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:81:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:82:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:83:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:84:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:85:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:86:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 15 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202799</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-06-15 17:53:48 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 281414 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=281414&amp;action=review
&gt; 
&gt; Does any of this need version checks?

Don&apos;t think so. Mac stuff has been around since 10.8. iOS stuff since iOS 9.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/WebViewImpl.mm:4040
&gt; &gt; +    return UserInterfaceLayoutDirection::LTR;
&gt; 
&gt; Is this needed?

Sadly, yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202805</commentid>
    <comment_count>10</comment_count>
    <who name="Conrad Shultz">conrad_shultz</who>
    <bug_when>2016-06-15 18:20:48 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #5)
&gt; &gt; Comment on attachment 281414 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=281414&amp;action=review
&gt; &gt; 
&gt; &gt; Does any of this need version checks?
&gt; 
&gt; Don&apos;t think so. Mac stuff has been around since 10.8. iOS stuff since iOS 9.

Sorry, I was wondering whether the behavior change itself is intended to apply to all versions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202946</commentid>
    <comment_count>11</comment_count>
      <attachid>281462</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-06-16 09:36:23 -0700</bug_when>
    <thetext>Created attachment 281462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202947</commentid>
    <comment_count>12</comment_count>
      <attachid>281463</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-06-16 09:37:24 -0700</bug_when>
    <thetext>Created attachment 281463
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202949</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-16 09:39:15 -0700</bug_when>
    <thetext>Attachment 281463 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:65:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:66:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:67:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:68:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:69:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:71:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:72:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:73:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:78:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:81:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:82:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:83:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:84:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:85:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:86:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 15 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202950</commentid>
    <comment_count>14</comment_count>
      <attachid>281463</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-16 09:43:43 -0700</bug_when>
    <thetext>Comment on attachment 281463
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:4304
&gt; +    auto direction = [UIView userInterfaceLayoutDirectionForSemanticContentAttribute:contentAttribute];
&gt; +    switch (direction) {

Maybe better without the local variable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202959</commentid>
    <comment_count>15</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-06-16 10:54:34 -0700</bug_when>
    <thetext>Committed r202129: &lt;http://trac.webkit.org/changeset/202129&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281413</attachid>
            <date>2016-06-15 17:32:21 -0700</date>
            <delta_ts>2016-06-15 17:33:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158823-20160615173220.patch</filename>
            <type>text/plain</type>
            <size>31119</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMjEwOSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE2LTA2LTE1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRm9yd2FyZC9CYWNrIGtleWJvYXJkIHNo
b3J0Y3V0cyBuZWVkIHRvIGZsaXAgZm9yIFJUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4ODIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUGlwZSB0aGUgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
biBkb3duIHRvIHRoZSBXZWJDb250ZW50UHJvY2VzcyBvbiBpbml0aWFsaXphdGlvbgorICAgICAg
ICBhbmQgd2hlbiBpdCBjaGFuZ2VzLCBhbmQgdXNlIGl0IHRvIGZsaXAgdGhlIGJlaGF2aW9yIG9m
IGNvbW1hbmQtbGVmdCBhbmQgY29tbWFuZC1yaWdodAorICAgICAgICB3aGVuIGluIFJUTCBtb2Rl
LgorCisgICAgICAgIFRlc3RzOgorICAgICAgICAgICAgV2ViS2l0Ml9Db21tYW5kQmFja0Zvcndh
cmRUZXN0V0tWaWV3LkxUUgorICAgICAgICAgICAgV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRU
ZXN0V0tWaWV3LlJUTAorICAgICAgICAgICAgV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0
V0tXZWJWaWV3LkxUUgorICAgICAgICAgICAgV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0
V0tXZWJWaWV3LlJUTAorCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBfd2ViVmlld1ByaW50Rm9ybWF0dGVyXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRTZW1h
bnRpY0NvbnRlbnRBdHRyaWJ1dGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcHJpbnRPcGVy
YXRpb25XaXRoUHJpbnRJbmZvOmZvckZyYW1lOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBzZXRVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OndpbmRvd0lzRnJvbnRXaW5kb3dVbmRlck1vdXNlKToKKyAgICAgICAg
KFdlYktpdDo6dG9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojp1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6aGFzSGFkU2VsZWN0aW9uQ2hhbmdlc0Zyb21Vc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6Y29uZmlndXJhdGlvbjpdKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Om1fdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6c2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
Om1fc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKTogRGVsZXRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybU5vbkVk
aXRpbmdCZWhhdmlvckZvclNlbGVjdG9yKToKKwogMjAxNi0wNi0xNSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3Agc29tZSB1bm5lY2Vzc2FyeSBoZWFkZXIg
aW5jbHVkZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDIwMjEwOSkKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODYsNiArODYsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJCiAj
ZW5kaWYKICAgICBlbmNvZGVyIDw8IGFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQ7CiAg
ICAgZW5jb2RlciA8PCBzaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50OworICAgIGVuY29kZXIu
ZW5jb2RlRW51bSh1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKTsKIH0KIAogYm9vbCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29k
ZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC0xOTQsNiArMTk1
LDkgQEAgYm9vbCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocGFy
YW1ldGVycy51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjAyMTA5KQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW5mby5o
IgogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJTZXNzaW9uU3RhdGUu
aCIKKyNpbmNsdWRlICJVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwRGF0YS5oIgog
I2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKQEAgLTEzMyw2ICsxMzQsOCBAQCBzdHJ1
Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAjZW5kaWYKICAgICBib29sIGFwcGxlTWFp
bFBhZ2luYXRpb25RdWlya0VuYWJsZWQ7CiAgICAgYm9vbCBzaG91bGRTY2FsZVZpZXdUb0ZpdERv
Y3VtZW50OworCisgICAgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB1c2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjAyMTA5KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUyNzQsNiArNTI3NCw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFn
ZVByb3h5OjoKICAgICBwYXJhbWV0ZXJzLmFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQg
PSBmYWxzZTsKICNlbmRpZgogICAgIHBhcmFtZXRlcnMuc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1
bWVudCA9IG1fc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudDsKKyAgICBwYXJhbWV0ZXJzLnVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gPSBtX3BhZ2VDbGllbnQudXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbigpOwogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CkBAIC02MzExLDQg
KzYzMTIsMTIgQEAgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBXZWJQYWdlUHJveAogICAg
IHJldHVybiBtX3BhZ2VDbGllbnQudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpOwogfQog
Cit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pCit7
CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihz
dGF0aWNfY2FzdDx1aW50MzJfdD4odXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikpLCBtX3Bh
Z2VJRCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjAyMTA5KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEyLDYgKzEx
MTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChib29s
KTsKIAogICAgIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gdXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbigpOworICAgIHZvaWQgc2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihV
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKTsKIAogICAgIGJvb2wgaGFzSGFkU2VsZWN0aW9u
Q2hhbmdlc0Zyb21Vc2VySW50ZXJhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2hhc0hhZFNlbGVj
dGlvbkNoYW5nZXNGcm9tVXNlckludGVyYWN0aW9uOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMDIxMDkp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNDI5OCw2ICs0Mjk4LDE2IEBAIC0gKF9XS1dlYlZpZXdQcmludEZvcm1h
dHRlciAqKV93ZWJWaWV3UHIKICAgICByZXR1cm4gKF9XS1dlYlZpZXdQcmludEZvcm1hdHRlciAq
KXZpZXdQcmludEZvcm1hdHRlcjsKIH0KIAorLSAodm9pZClzZXRTZW1hbnRpY0NvbnRlbnRBdHRy
aWJ1dGU6KFVJU2VtYW50aWNDb250ZW50QXR0cmlidXRlKWNvbnRlbnRBdHRyaWJ1dGUKK3sKKyAg
ICBbc3VwZXIgc2V0U2VtYW50aWNDb250ZW50QXR0cmlidXRlOmNvbnRlbnRBdHRyaWJ1dGVdCisK
KyAgICBhdXRvIGRpcmVjdGlvbiA9IFtVSVZpZXcgdXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bkZvclNlbWFudGljQ29udGVudEF0dHJpYnV0ZTpjb250ZW50QXR0cmlidXRlXSA9PSBVSVVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCkgPyBVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uOjpMVFIgOiBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOjpSVEwKKyAgICBf
cGFnZS0+c2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihkaXJlY3Rpb24pOworfQorCitA
cHJvcGVydHkgKG5vbmF0b21pYykgVUlTZW1hbnRpY0NvbnRlbnRBdHRyaWJ1dGUgc2VtYW50aWND
b250ZW50QXR0cmlidXRlIE5TX0FWQUlMQUJMRV9JT1MoOV8wKTsKKwogI2Vsc2UgLy8gI2lmIFBM
QVRGT1JNKElPUykKIAogI3ByYWdtYSBtYXJrIC0gT1MgWC1zcGVjaWZpYyBtZXRob2RzCkBAIC00
NDE0LDYgKzQ0MjQsMTEgQEAgLSAoTlNQcmludE9wZXJhdGlvbiAqKV9wcmludE9wZXJhdGlvbldp
dAogICAgIHJldHVybiBuaWw7CiB9CiAKKy0gKHZvaWQpc2V0VXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbjooTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKXVzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb24KK3sKKyAgICBfaW1wbC0+c2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bih1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKTsKK30KKwogI2VuZGlmCiAKIEBlbmQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHJldmlzaW9u
IDIwMjEwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTQzNSw2ICsxNDM1LDExIEBAIC0gKEJPT0wpX2F1dG9tYXRpY2Fs
bHlBZGp1c3RzQ29udGVudEluc2UKICAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT5hdXRvbWF0aWNh
bGx5QWRqdXN0c0NvbnRlbnRJbnNldHMoKTsKIH0KIAorLSAodm9pZClzZXRVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uOihOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pdXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbgoreworICAgIF9kYXRhLT5faW1wbC0+c2V0VXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvbih1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKTsKK30KKwogQGVu
ZAogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTIwMCAmJiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHJldmlzaW9uIDIwMjEwOSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgUExBVEZPUk0oTUFDKQogCiAjaW5jbHVkZSAiUGx1
Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlLmgiCisjaW5jbHVkZSAiVXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbi5oIgogI2luY2x1ZGUgIldLTGF5b3V0TW9kZS5oIgogI2luY2x1ZGUgIldlYlBh
Z2VQcm94eS5oIgogI2luY2x1ZGUgIl9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZS5oIgpAQCAtNDg1
LDYgKzQ4Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlcXVpcmVzVXNlckFjdGlvbkZvckVk
aXRpbmdDb250cm9sc01hbmFnZXIoYm9vbCByZXF1aXJlc1VzZXJBY3Rpb25Gb3JFZGl0aW5nQ29u
dHJvbHNNYW5hZ2VyKSB7IG1fcmVxdWlyZXNVc2VyQWN0aW9uRm9yRWRpdGluZ0NvbnRyb2xzTWFu
YWdlciA9IHJlcXVpcmVzVXNlckFjdGlvbkZvckVkaXRpbmdDb250cm9sc01hbmFnZXI7IH0KICAg
ICBib29sIHJlcXVpcmVzVXNlckFjdGlvbkZvckVkaXRpbmdDb250cm9sc01hbmFnZXIoKSBjb25z
dCB7IHJldHVybiBtX3JlcXVpcmVzVXNlckFjdGlvbkZvckVkaXRpbmdDb250cm9sc01hbmFnZXI7
IH0KIAorICAgIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gdXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbigpOworICAgIHZvaWQgc2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihO
U1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pOworCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEyMDAgCiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0
ZShOU1RleHRDaGVja2luZ1Jlc3VsdCAqYWNjZXB0ZWRDYW5kaWRhdGUpOwogI2lmIFVTRShBUFBM
RV9JTlRFUk5BTF9TREspCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyMDIxMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTQwMjksNyArNDAy
OSwyNyBAQCBib29sIFdlYlZpZXdJbXBsOjp3aW5kb3dJc0Zyb250V2luZG93VW5kCiAgICAgcmV0
dXJuIG1fdmlldy53aW5kb3cud2luZG93TnVtYmVyICE9IGV2ZW50V2luZG93TnVtYmVyOwogfQog
Ci0gICAgCitzdGF0aWMgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB0b1VzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24oTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIGRpcmVjdGlv
bikKK3sKKyAgICBzd2l0Y2ggKGRpcmVjdGlvbikgeworICAgIGNhc2UgTlNVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQ6CisgICAgICAgIHJldHVybiBVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uOjpMVFI7CisgICAgY2FzZSBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb25SaWdodFRvTGVmdDoKKyAgICAgICAgcmV0dXJuIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb246OlJUTDsKKyAgICB9CisgICAgcmV0dXJuIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b246OkxUUjsKK30KKworVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBXZWJWaWV3SW1wbDo6
dXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpCit7CisgICAgcmV0dXJuIHRvVXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbihtX3ZpZXcudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbik7
Cit9CisKK3ZvaWQgV2ViVmlld0ltcGw6OnNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24o
TlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBtX3BhZ2Ut
PnNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24odG9Vc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uKGRpcmVjdGlvbikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlm
IC8vIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXcubW0JKHJldmlzaW9uIDIwMjEwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk0LDYgKzE5
NCw4IEBAIC0gKGluc3RhbmNldHlwZSlfY29tbW9uSW5pdGlhbGl6YXRpb25XaXQKICAgICBBU1NF
UlQoX3BhZ2VDbGllbnQpOwogCiAgICAgX3BhZ2UgPSBwcm9jZXNzUG9vbC5jcmVhdGVXZWJQYWdl
KCpfcGFnZUNsaWVudCwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisKKyAgICBhdXRvIGRpcmVj
dGlvbiA9IFtVSVZpZXcgdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkZvclNlbWFudGljQ29u
dGVudEF0dHJpYnV0ZTpjb250ZW50QXR0cmlidXRlXSA9PSBVSVVzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb25MZWZ0VG9SaWdodCkgPyBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOjpMVFIg
OiBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOjpSVEwKICAgICBfcGFnZS0+aW5pdGlhbGl6
ZVdlYlBhZ2UoKTsKICAgICBfcGFnZS0+c2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3Ioc2Ny
ZWVuU2NhbGVGYWN0b3IoW1VJU2NyZWVuIG1haW5TY3JlZW5dKSk7CiAgICAgX3BhZ2UtPnNldFVz
ZUZpeGVkTGF5b3V0KHRydWUpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjAyMTA5KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzcsNiAr
Mzc3LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IAogI2VuZGlm
CiAgICAgLCBtX21haW5GcmFtZVByb2dyZXNzQ29tcGxldGVkKGZhbHNlKQogICAgICwgbV9zaG91
bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHModHJ1ZSkKKyAgICAsIG1fdXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvbihwYXJhbWV0ZXJzLnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24p
CiB7CiAgICAgQVNTRVJUKG1fcGFnZUlEKTsKIApAQCAtNTM2OCw0ICs1MzY5LDkgQEAgdm9pZCBX
ZWJQYWdlOjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZAogICAgIG1fcGFnZS0+c2V0UmVzb3Vy
Y2VDYWNoaW5nRGlzYWJsZWQoZGlzYWJsZWQpOwogfQogCit2b2lkIFdlYlBhZ2U6OnNldFVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9uKQoreworICAgIG1fdXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbiA9IHN0YXRpY19jYXN0PFVzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb24+KGRpcmVjdGlvbik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lv
biAyMDIxMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJQYWdlX2gKLSNkZWZpbmUgV2ViUGFnZV9o
CisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlRm9ybUNsaWVudC5o
IgogI2luY2x1ZGUgIkFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgiCkBA
IC00OCw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUg
IlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCisjaW5jbHVkZSAiVXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJuYXRp
dmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpY3Rpb25hcnlQb3B1cEluZm8uaD4KQEAgLTExOTks
NiArMTE5OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VDYWNo
aW5nRGlzYWJsZWQoYm9vbCk7CisgICAgdm9pZCBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uKHVpbnQzMl90KTsKIAogICAgIHVpbnQ2NF90IG1fcGFnZUlEOwogCkBAIC0xNDY4LDggKzE0
NjksOSBAQCBwcml2YXRlOgogI2lmIFVTRShPU19TVEFURSkKICAgICBzdGQ6OmNocm9ubzo6c3lz
dGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1fbG9hZENvbW1pdFRpbWU7CiAjZW5kaWYKKworICAgIFVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
IHsgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6TFRSIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIFdlYlBhZ2VfaApJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlz
aW9uIDIwMjEwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00MjgsNCArNDI4LDYgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAjZW5kaWYKIAogICAgIFNldFJlc291cmNlQ2Fj
aGluZ0Rpc2FibGVkKGJvb2wgZGlzYWJsZWQpCisKKyAgICBTZXRVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbikKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDIw
MjEwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTUxLDEzICs1NTEsMTMgQEAgYm9vbCBXZWJQYWdlOjpw
ZXJmb3JtTm9uRWRpdGluZ0JlaGF2aW9yRgogICAgIGVsc2UgaWYgKHNlbGVjdG9yID09ICJtb3Zl
V29yZExlZnQ6IikKICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0
KCksIFNjcm9sbExlZnQsIFNjcm9sbEJ5UGFnZSk7CiAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0g
Im1vdmVUb0xlZnRFbmRPZkxpbmU6IikKLSAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IG1fcGFn
ZS0+YmFja0ZvcndhcmQoKS5nb0JhY2soKTsKKyAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IG1f
dXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiA9PSBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uOjpMVFIgPyBtX3BhZ2UtPmJhY2tGb3J3YXJkKCkuZ29CYWNrKCkgOiBtX3BhZ2UtPmJhY2tG
b3J3YXJkKCkuZ29Gb3J3YXJkKCk7CiAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVSaWdo
dDoiKQogICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Ny
b2xsUmlnaHQsIFNjcm9sbEJ5TGluZSk7CiAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVX
b3JkUmlnaHQ6IikKICAgICAgICAgZGlkUGVyZm9ybUFjdGlvbiA9IHNjcm9sbChtX3BhZ2UuZ2V0
KCksIFNjcm9sbFJpZ2h0LCBTY3JvbGxCeVBhZ2UpOwogICAgIGVsc2UgaWYgKHNlbGVjdG9yID09
ICJtb3ZlVG9SaWdodEVuZE9mTGluZToiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gbV9w
YWdlLT5iYWNrRm9yd2FyZCgpLmdvRm9yd2FyZCgpOworICAgICAgICBkaWRQZXJmb3JtQWN0aW9u
ID0gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID09IFVzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb246OkxUUiA/IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5nb0ZvcndhcmQoKSA6IG1fcGFn
ZS0+YmFja0ZvcndhcmQoKS5nb0JhY2soKTsKIAogICAgIHJldHVybiBkaWRQZXJmb3JtQWN0aW9u
OwogfQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjAyMTE2KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTYtMDYtMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBGb3J3YXJkL0JhY2sga2V5Ym9hcmQgc2hvcnRjdXRzIG5lZWQgdG8gZmxpcCBm
b3IgUlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTg4MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgdGVzdHMgZm9yIGZsaXBwaW5nIHRoZSBiZWhhdmlvciBvZiBjb21tYW5kLWxlZnQgYW5kIGNv
bW1hbmQtcmlnaHQKKyAgICAgICAgdW5kZXIgUlRMIG1vZGUuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Db21tYW5kQmFja0ZvcndhcmQubW06
IEFkZGVkLgorICAgICAgICAoLVtDb21tYW5kQmFja0ZvcndhcmRPZmZzY3JlZW5XaW5kb3cgaXNL
ZXlXaW5kb3ddKToKKyAgICAgICAgKC1bQ29tbWFuZEJhY2tGb3J3YXJkT2Zmc2NyZWVuV2luZG93
IGlzVmlzaWJsZV0pOgorICAgICAgICAoc2ltdWxhdGVDb21tYW5kQXJyb3cpOgorICAgICAgICAo
V2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0OjpTZXRVcCk6CisgICAgICAgIChXZWJLaXQy
X0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXc6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6Cisg
ICAgICAgIChXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXc6OlNldFVwKToKKyAg
ICAgICAgKFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLVmlldzo6bG9hZEZpbGVzKToK
KyAgICAgICAgKC1bQ29tbWFuZEJhY2tGb3J3YXJkTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6
ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3
YXJkVGVzdFdLV2ViVmlldzo6U2V0VXApOgorICAgICAgICAoV2ViS2l0Ml9Db21tYW5kQmFja0Zv
cndhcmRUZXN0V0tXZWJWaWV3Ojpsb2FkRmlsZXMpOgorCiAyMDE2LTA2LTEzICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgV0syXSBNYWtlIGl0
IHBvc3NpYmxlIHRvIHRlc3QgdGhlIE5leHQvUHJldmlvdXMgYnV0dG9ucyBpbiB0aGUga2V5Ym9h
cmQgYWNjZXNzb3J5IGJhcgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIw
MjExMykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw3IEBACiAJCTdBMTQ1OEZD
MUFENUMwNzAwMEUwNjc3MiAvKiBtb3VzZS1idXR0b24tbGlzdGVuZXIuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTE0NThGQjFBRDVD
MDM1MDBFMDY3NzIgLyogbW91c2UtYnV0dG9uLWxpc3RlbmVyLmh0bWwgKi87IH07CiAJCTdBRTlF
NTA5MUFFNUFFOEIwMENGODc0QiAvKiB0ZXN0LnBkZiBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUU5RTUwODFBRTVBRThCMDBDRjg3NEIgLyog
dGVzdC5wZGYgKi87IH07CiAJCTdDMzk2NTA2MUNERDc0RjkwMDk0REJCOCAvKiBDb2xvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzM5NjUwNTFD
REQ3NEY5MDA5NERCQjggLyogQ29sb3IuY3BwICovOyB9OworCQk3QzNEQjhFNDFEMTIxMjlCMDBB
RThDQzMgLyogQ29tbWFuZEJhY2tGb3J3YXJkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzREI4RTIxRDEyMTI5QjAwQUU4Q0MzIC8qIENvbW1hbmRC
YWNrRm9yd2FyZC5tbSAqLzsgfTsKIAkJN0M0ODZCQTExQUExMjU2NzAwM0Y2RjlCIC8qIGJ1bmRs
ZS1maWxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0M0ODZCQTAxQUExMjU0QjAwM0Y2RjlCIC8qIGJ1bmRsZS1maWxlLmh0bWwgKi87
IH07CiAJCTdDNTRBNEJFMUFBMTFDQ0EwMDM4MEY3OCAvKiBXS0J1bmRsZUZpbGVIYW5kbGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M1NEE0QkMx
QUExMUNDQTAwMzgwRjc4IC8qIFdLQnVuZGxlRmlsZUhhbmRsZS5jcHAgKi87IH07CiAJCTdDNTRB
NEMxMUFBMTFDRTQwMDM4MEY3OCAvKiBXS0J1bmRsZUZpbGVIYW5kbGVfQnVuZGxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTRBNEJGMUFBMTFD
RTQwMDM4MEY3OCAvKiBXS0J1bmRsZUZpbGVIYW5kbGVfQnVuZGxlLmNwcCAqLzsgfTsKQEAgLTc0
OCw2ICs3NDksNyBAQAogCQk3QUE2QTE1MTFBQUMwQjMxMDAyQjJFRDMgLyogV29ya1F1ZXVlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtRdWV1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRTlFNTA4MUFFNUFFOEIwMENGODc0QiAvKiB0
ZXN0LnBkZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IGltYWdlLnBkZjsgcGF0aCA9IHRlc3QucGRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzM5NjUwNTFDREQ3NEY5MDA5NERCQjggLyogQ29sb3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ29sb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QzNEQjhFMjFEMTIxMjlCMDBBRThDQzMgLyogQ29tbWFuZEJhY2tGb3J3YXJkLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29tbWFuZEJhY2tGb3J3YXJk
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQ4NkJBMDFBQTEyNTRCMDAzRjZG
OUIgLyogYnVuZGxlLWZpbGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJidW5kbGUtZmlsZS5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M1NEE0QkMxQUExMUNDQTAwMzgwRjc4IC8qIFdL
QnVuZGxlRmlsZUhhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXS0J1bmRsZUZpbGVIYW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzU0QTRCRjFBQTExQ0U0MDAzODBGNzggLyogV0tCdW5kbGVGaWxlSGFuZGxlX0J1bmRsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0J1bmRsZUZpbGVIYW5kbGVf
QnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMzEsNiArMTEzMyw3
IEBACiAJCQkJQTEzRUJCQUUxQjg3NDM2RjAwMDk3MTEwIC8qIEJ1bmRsZVBhcmFtZXRlcnNQbHVn
SW4ubW0gKi8sCiAJCQkJMUMyQjgxN0UxQzg5MUU0MjAwQTU1MjlGIC8qIENhbmNlbEZvbnRTdWJy
ZXNvdXJjZS5tbSAqLywKIAkJCQkxQzJCODE4MTFDODkxRUZBMDBBNTUyOUYgLyogQ2FuY2VsRm9u
dFN1YnJlc291cmNlUGx1Z0luLm1tICovLAorCQkJCTdDM0RCOEUyMUQxMjEyOUIwMEFFOENDMyAv
KiBDb21tYW5kQmFja0ZvcndhcmQubW0gKi8sCiAJCQkJQTE4QUE4Q0MxQzNGQTIxODAwOUIyQjk3
IC8qIENvbnRlbnRGaWx0ZXJpbmcuaCAqLywKIAkJCQlBMTRGQzU4NjFCODk5MUI2MDBEMTA3RUIg
LyogQ29udGVudEZpbHRlcmluZy5tbSAqLywKIAkJCQlBMTRGQzU4OTFCODk5MjcxMDBEMTA3RUIg
LyogQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbSAqLywKQEAgLTIxNDUsNiArMjE0OCw3IEBACiAJ
CQkJN0M4ODJFMEExQzgwQzc2NDAwNkJGNzMxIC8qIFVzZXJDb250ZW50V29ybGQubW0gaW4gU291
cmNlcyAqLywKIAkJCQk3Q0NFN0YyNzFBNDExQUY2MDA0NDdDNEMgLyogVXNlckNvbnRlbnRDb250
cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwNEYxRDBBNjQxODAwRkVCQ0YzIC8q
IEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0MzREI4RTQxRDEyMTI5QjAwQUU4
Q0MzIC8qIENvbW1hbmRCYWNrRm9yd2FyZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjJE
MUE0MTFCMTAwMDQ0N0M0QyAvKiBVc2VyQ29udGVudFRlc3QubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0NFN0YxNzFBNDExQUU2MDA0NDdDNEMgLyogVXNlck1lZGlhLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDODNFMEM0MUQwQTY1NDIwMEZFQkNGMyAvKiBSZXF1aXJlc1VzZXJBY3Rpb25Gb3JQ
bGF5YmFjay5tbSBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvQ29tbWFuZEJhY2tGb3J3YXJkLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0NvbW1hbmRCYWNrRm9yd2FyZC5tbQko
cmV2aXNpb24gMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0Nv
bW1hbmRCYWNrRm9yd2FyZC5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMwMSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1w
b3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCA8Q2Fy
Ym9uL0NhcmJvbi5oPiAvLyBmb3IgR2V0Q3VycmVudEV2ZW50VGltZSgpCisjaW1wb3J0IDxXZWJL
aXQvV0tSZXRhaW5QdHIuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1ZpZXdQcml2YXRlLmg+CisjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK0BpbnRlcmZhY2UgQ29tbWFuZEJhY2tGb3J3YXJkT2Zm
c2NyZWVuV2luZG93IDogTlNXaW5kb3cKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIENvbW1hbmRC
YWNrRm9yd2FyZE9mZnNjcmVlbldpbmRvdworLSAoQk9PTClpc0tleVdpbmRvdworeworICAgIHJl
dHVybiBZRVM7Cit9CistIChCT09MKWlzVmlzaWJsZQoreworICAgIHJldHVybiBZRVM7Cit9CitA
ZW5kCisKK2VudW0gQXJyb3dEaXJlY3Rpb24geworICAgIExlZnQsCisgICAgUmlnaHQKK307CisK
K3N0YXRpYyB2b2lkIHNpbXVsYXRlQ29tbWFuZEFycm93KE5TVmlldyAqdmlldywgQXJyb3dEaXJl
Y3Rpb24gZGlyZWN0aW9uKQoreworICAgIGNvbnN0IHVuaWNoYXIgcmlnaHQgPSBOU1JpZ2h0QXJy
b3dGdW5jdGlvbktleTsKKyAgICBjb25zdCB1bmljaGFyIGxlZnQgPSBOU0xlZnRBcnJvd0Z1bmN0
aW9uS2V5OworCisgICAgTlNTdHJpbmcgKmV2ZW50Q2hhcmFjdGVyID0gKGRpcmVjdGlvbiA9PSBM
ZWZ0KSA/IFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczombGVmdCBsZW5ndGg6MV0gOiBb
TlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JnJpZ2h0IGxlbmd0aDoxXTsKKyAgICB1bnNp
Z25lZCBzaG9ydCBrZXlDb2RlID0gKGRpcmVjdGlvbiA9PSBMZWZ0KSA/IDB4N0IgOiAweDdDOwor
CisgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TS2V5RG93
bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01ha2VQ
b2ludCg1LCA1KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFn
czpOU0V2ZW50TW9kaWZpZXJGbGFnQ29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVzdGFtcDpHZXRDdXJyZW50RXZlbnRUaW1lKCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3aW5kb3dOdW1iZXI6W3ZpZXcud2luZG93IHdpbmRvd051bWJl
cl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3Jh
cGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgIGNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpldmVudENoYXJhY3RlcgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXTsKKworICAgIFt2aWV3IGtleURvd246
ZXZlbnRdOworCisgICAgZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TS2V5VXAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6TlNFdmVudE1vZGlmaWVyRmxh
Z0NvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6R2V0Q3VycmVu
dEV2ZW50VGltZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93TnVtYmVyOlt2aWV3
LndpbmRvdyB3aW5kb3dOdW1iZXJdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAgICBjaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnM6ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6
a2V5Q29kZV07CisKKyAgICBbdmlldyBrZXlVcDpldmVudF07Cit9CisKK2NsYXNzIFdlYktpdDJf
Q29tbWFuZEJhY2tGb3J3YXJkVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoK
KyAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdzsKKworICAgIHZpcnR1YWwgdm9pZCBTZXRV
cCgpCisgICAgeworICAgICAgICBOU1dpbmRvdyAqd2luZG93ID0gW1tDb21tYW5kQmFja0Zvcndh
cmRPZmZzY3JlZW5XaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNNYWtlUmVjdCgw
LCAwLCAxMDAsIDEwMCkgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpO
U0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllFU107CisgICAgICAgIFt3aW5kb3cgc2V0Q29s
b3JTcGFjZTpbW05TU2NyZWVuIG1haW5TY3JlZW5dIGNvbG9yU3BhY2VdXTsKKyAgICAgICAgW3dp
bmRvdyBvcmRlckJhY2s6bmlsXTsKKyAgICAgICAgW3dpbmRvdyBzZXRBdXRvZGlzcGxheTpOT107
CisgICAgICAgIFt3aW5kb3cgc2V0UmVsZWFzZWRXaGVuQ2xvc2VkOk5PXTsKKyAgICB9Cit9Owor
CitzdGF0aWMgYm9vbCBkaWRGaW5pc2hOYXZpZ2F0aW9uOworCitjbGFzcyBXZWJLaXQyX0NvbW1h
bmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXcgOiBwdWJsaWMgV2ViS2l0Ml9Db21tYW5kQmFja0Zvcndh
cmRUZXN0IHsKK3B1YmxpYzoKKyAgICBSZXRhaW5QdHI8V0tWaWV3PiB3ZWJWaWV3OworICAgIFdL
UmV0YWluUHRyPFdLVVJMUmVmPiBmaWxlMTsKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gZmls
ZTI7CisKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBX
S0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCisgICAgeworICAg
ICAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKQorICAgIHsKKyAgICAgICAgV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0
OjpTZXRVcCgpOworCisgICAgICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9
IGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlKCkpOworICAgICAgICBXS1JldGFpblB0cjxXS1BhZ2VD
b25maWd1cmF0aW9uUmVmPiBjb25maWd1cmF0aW9uID0gYWRvcHRXSyhXS1BhZ2VDb25maWd1cmF0
aW9uQ3JlYXRlKCkpOyAgICAgICAgCisgICAgICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRDb250
ZXh0KGNvbmZpZ3VyYXRpb24uZ2V0KCksIGNvbnRleHQuZ2V0KCkpOworCisgICAgICAgIHdlYlZp
ZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwg
MTAwKSBjb25maWd1cmF0aW9uUmVmOmNvbmZpZ3VyYXRpb24uZ2V0KCldOworCisgICAgICAgIFdL
UGFnZUxvYWRlckNsaWVudFY2IGxvYWRlckNsaWVudDsKKyAgICAgICAgbWVtc2V0KCZsb2FkZXJD
bGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKKworICAgICAgICBsb2FkZXJDbGllbnQu
YmFzZS52ZXJzaW9uID0gNjsKKyAgICAgICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JG
cmFtZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKKworICAgICAgICBXS1BhZ2VTZXRQYWdlTG9h
ZGVyQ2xpZW50KFt3ZWJWaWV3IHBhZ2VSZWZdLCAmbG9hZGVyQ2xpZW50LmJhc2UpOworICAgICAg
ICAKKyAgICAgICAgZmlsZTEgPSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZVVS
TEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKTsKKyAgICAgICAgZmlsZTIgPSBhZG9wdFdL
KFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUyIiwgImh0
bWwiKSk7CisKKyAgICB9CisKKyAgICB2b2lkIGxvYWRGaWxlcygpCisgICAgeworICAgICAgICBX
S1BhZ2VMb2FkRmlsZShbd2ViVmlldyBwYWdlUmVmXSwgZmlsZTEuZ2V0KCksIG51bGxwdHIpOwor
ICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOwor
ICAgICAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0gZmFsc2U7CisKKyAgICAgICAgV0tQYWdlTG9h
ZEZpbGUoW3dlYlZpZXcgcGFnZVJlZl0sIGZpbGUyLmdldCgpLCBudWxscHRyKTsKKyAgICAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZpZ2F0aW9uKTsKKyAgICAgICAg
ZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIH0KK307CisKKyNpZiBXS19BUElfRU5B
QkxFRAorCitAaW50ZXJmYWNlIENvbW1hbmRCYWNrRm9yd2FyZE5hdmlnYXRpb25EZWxlZ2F0ZSA6
IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IENvbW1hbmRCYWNrRm9yd2FyZE5hdmlnYXRpb25EZWxlZ2F0ZQorCistICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICop
bmF2aWdhdGlvbgoreworICAgIGRpZEZpbmlzaE5hdmlnYXRpb24gPSB0cnVlOworfQorCitAZW5k
CisKKworY2xhc3MgV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0V0tXZWJWaWV3IDogcHVi
bGljIFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdCB7CitwdWJsaWM6CisgICAgUmV0YWlu
UHRyPFdLV2ViVmlldz4gd2ViVmlldzsKKworICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCisgICAg
eworICAgICAgICBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3Q6OlNldFVwKCk7CisKKyAg
ICAgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCldKTsKKyAgICAgICAgW1t3aW5kb3cgY29udGVudFZp
ZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07CisKKyAgICAgICAgQ29tbWFuZEJhY2tGb3J3
YXJkTmF2aWdhdGlvbkRlbGVnYXRlICpkZWxlZ2F0ZSA9IFtbQ29tbWFuZEJhY2tGb3J3YXJkTmF2
aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW3dlYlZpZXcgc2V0TmF2aWdh
dGlvbkRlbGVnYXRlOmRlbGVnYXRlXTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkRmlsZXMo
KQorICAgIHsKKyAgICAgICAgTlNVUkwgKmZpbGUxID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBV
UkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgICAgIFt3ZWJWaWV3IGxvYWRGaWxl
VVJMOmZpbGUxIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOmZpbGUxXTsKKworICAgICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOworICAgICAgICBkaWRG
aW5pc2hOYXZpZ2F0aW9uID0gZmFsc2U7CisKKyAgICAgICAgTlNVUkwgKmZpbGUyID0gW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhFeHRlbnNpb246
QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgICAg
ICBbd2ViVmlldyBsb2FkRmlsZVVSTDpmaWxlMiBhbGxvd2luZ1JlYWRBY2Nlc3NUb1VSTDpmaWxl
Ml07CisKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZpZ2F0
aW9uKTsKKyAgICAgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZhbHNlOworICAgIH0KK307CisK
K1RFU1RfRihXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1dlYlZpZXcsIExUUikKK3sK
KyAgICBFWFBFQ1RfRVEoTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQs
IFt3ZWJWaWV3IHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25dKTsKKyAgICAKKyAgICBsb2Fk
RmlsZXMoKTsKKworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBVUkxdLnBhdGgubGFzdFBh
dGhDb21wb25lbnQsIEAic2ltcGxlMi5odG1sIik7CisKKyAgICAvLyBBdHRlbXB0IHRvIGdvIGJh
Y2sgKHVzaW5nIGNvbW1hbmQtbGVmdCkuCisgICAgc2ltdWxhdGVDb21tYW5kQXJyb3cod2ViVmll
dy5nZXQoKSwgTGVmdCk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRGaW5pc2hO
YXZpZ2F0aW9uKTsKKyAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0gZmFsc2U7CisKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoW3dlYlZpZXcgVVJMXS5wYXRoLmxhc3RQYXRoQ29tcG9uZW50LCBAInNpbXBs
ZS5odG1sIik7CisKKyAgICAvLyBBdHRlbXB0IHRvIGdvIGJhY2sgKHVzaW5nIGNvbW1hbmQtcmln
aHQpLgorICAgIHNpbXVsYXRlQ29tbWFuZEFycm93KHdlYlZpZXcuZ2V0KCksIFJpZ2h0KTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOworICAgIGRp
ZEZpbmlzaE5hdmlnYXRpb24gPSBmYWxzZTsKKworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmll
dyBVUkxdLnBhdGgubGFzdFBhdGhDb21wb25lbnQsIEAic2ltcGxlMi5odG1sIik7Cit9CisKK1RF
U1RfRihXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1dlYlZpZXcsIFJUTCkKK3sKKyAg
ICAvLyBPdmVycmlkZSB0aGUgbGF5b3V0IGRpcmVjdGlvbiB0byBiZSBSVEwuCisgICAgW3dlYlZp
ZXcgc2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjpOU1VzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb25SaWdodFRvTGVmdF07CisgICAgCisgICAgbG9hZEZpbGVzKCk7CisKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoW3dlYlZpZXcgVVJMXS5wYXRoLmxhc3RQYXRoQ29tcG9uZW50LCBAInNpbXBs
ZTIuaHRtbCIpOworCisgICAgLy8gQXR0ZW1wdCB0byBnbyBiYWNrICh1c2luZyBjb21tYW5kLXJp
Z2h0KQorICAgIHNpbXVsYXRlQ29tbWFuZEFycm93KHdlYlZpZXcuZ2V0KCksIFJpZ2h0KTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOworICAgIGRp
ZEZpbmlzaE5hdmlnYXRpb24gPSBmYWxzZTsKKworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmll
dyBVUkxdLnBhdGgubGFzdFBhdGhDb21wb25lbnQsIEAic2ltcGxlLmh0bWwiKTsKKworICAgIC8v
IEF0dGVtcHQgdG8gZ28gYmFjayAodXNpbmcgY29tbWFuZC1sZWZ0KS4KKyAgICBzaW11bGF0ZUNv
bW1hbmRBcnJvdyh3ZWJWaWV3LmdldCgpLCBMZWZ0KTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOworICAgIGRpZEZpbmlzaE5hdmlnYXRpb24gPSBm
YWxzZTsKKworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBVUkxdLnBhdGgubGFzdFBhdGhD
b21wb25lbnQsIEAic2ltcGxlMi5odG1sIik7Cit9CisKKyNlbmRpZgorCitURVNUX0YoV2ViS2l0
Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0V0tWaWV3LCBMVFIpCit7CisgICAgRVhQRUNUX0VRKE5T
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0LCBbd2ViVmlldyB1c2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uXSk7CisgICAgCisgICAgbG9hZEZpbGVzKCk7CisKKyAgICBh
dXRvIGN1cnJlbnRVUkwgPSBhZG9wdFdLKFdLUGFnZUNvcHlBY3RpdmVVUkwoW3dlYlZpZXcgcGFn
ZVJlZl0pKTsKKyAgICBFWFBFQ1RfVFJVRShXS1VSTElzRXF1YWwoZmlsZTIuZ2V0KCksIGN1cnJl
bnRVUkwuZ2V0KCkpKTsKKworICAgIC8vIEF0dGVtcHQgdG8gZ28gYmFjayAodXNpbmcgY29tbWFu
ZC1sZWZ0KS4KKyAgICBzaW11bGF0ZUNvbW1hbmRBcnJvdyh3ZWJWaWV3LmdldCgpLCBMZWZ0KTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOworICAg
IGRpZEZpbmlzaE5hdmlnYXRpb24gPSBmYWxzZTsKKworICAgIGF1dG8gY3VycmVudFVSTDIgPSBh
ZG9wdFdLKFdLUGFnZUNvcHlBY3RpdmVVUkwoW3dlYlZpZXcgcGFnZVJlZl0pKTsKKyAgICBFWFBF
Q1RfVFJVRShXS1VSTElzRXF1YWwoZmlsZTEuZ2V0KCksIGN1cnJlbnRVUkwyLmdldCgpKSk7CisK
KyAgICAvLyBBdHRlbXB0IHRvIGdvIGJhY2sgKHVzaW5nIGNvbW1hbmQtcmlnaHQpLgorICAgIHNp
bXVsYXRlQ29tbWFuZEFycm93KHdlYlZpZXcuZ2V0KCksIFJpZ2h0KTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOworICAgIGRpZEZpbmlzaE5hdmln
YXRpb24gPSBmYWxzZTsKKworICAgIGF1dG8gY3VycmVudFVSTDMgPSBhZG9wdFdLKFdLUGFnZUNv
cHlBY3RpdmVVUkwoW3dlYlZpZXcgcGFnZVJlZl0pKTsKKyAgICBFWFBFQ1RfVFJVRShXS1VSTElz
RXF1YWwoZmlsZTIuZ2V0KCksIGN1cnJlbnRVUkwzLmdldCgpKSk7Cit9CisKK1RFU1RfRihXZWJL
aXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXcsIFJUTCkKK3sKKyAgICAvLyBPdmVycmlk
ZSB0aGUgbGF5b3V0IGRpcmVjdGlvbiB0byBiZSBSVEwuCisgICAgW3dlYlZpZXcgc2V0VXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbjpOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdo
dFRvTGVmdF07CisgICAgCisgICAgbG9hZEZpbGVzKCk7CisKKyAgICBhdXRvIGN1cnJlbnRVUkwg
PSBhZG9wdFdLKFdLUGFnZUNvcHlBY3RpdmVVUkwoW3dlYlZpZXcgcGFnZVJlZl0pKTsKKyAgICBF
WFBFQ1RfVFJVRShXS1VSTElzRXF1YWwoZmlsZTIuZ2V0KCksIGN1cnJlbnRVUkwuZ2V0KCkpKTsK
KworICAgIC8vIEF0dGVtcHQgdG8gZ28gYmFjayAodXNpbmcgY29tbWFuZC1yaWdodCkKKyAgICBz
aW11bGF0ZUNvbW1hbmRBcnJvdyh3ZWJWaWV3LmdldCgpLCBSaWdodCk7CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZpZ2F0aW9uKTsKKyAgICBkaWRGaW5pc2hOYXZp
Z2F0aW9uID0gZmFsc2U7CisKKyAgICBhdXRvIGN1cnJlbnRVUkwyID0gYWRvcHRXSyhXS1BhZ2VD
b3B5QWN0aXZlVVJMKFt3ZWJWaWV3IHBhZ2VSZWZdKSk7CisgICAgRVhQRUNUX1RSVUUoV0tVUkxJ
c0VxdWFsKGZpbGUxLmdldCgpLCBjdXJyZW50VVJMMi5nZXQoKSkpOworCisgICAgLy8gQXR0ZW1w
dCB0byBnbyBiYWNrICh1c2luZyBjb21tYW5kLWxlZnQpLgorICAgIHNpbXVsYXRlQ29tbWFuZEFy
cm93KHdlYlZpZXcuZ2V0KCksIExlZnQpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZhbHNlOwor
CisgICAgYXV0byBjdXJyZW50VVJMMyA9IGFkb3B0V0soV0tQYWdlQ29weUFjdGl2ZVVSTChbd2Vi
VmlldyBwYWdlUmVmXSkpOworICAgIEVYUEVDVF9UUlVFKFdLVVJMSXNFcXVhbChmaWxlMi5nZXQo
KSwgY3VycmVudFVSTDMuZ2V0KCkpKTsKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281414</attachid>
            <date>2016-06-15 17:33:34 -0700</date>
            <delta_ts>2016-06-15 17:47:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158823-20160615173333.patch</filename>
            <type>text/plain</type>
            <size>31189</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMjEwOSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE2LTA2LTE1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRm9yd2FyZC9CYWNrIGtleWJvYXJkIHNo
b3J0Y3V0cyBuZWVkIHRvIGZsaXAgZm9yIFJUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4ODIzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNTk3
NTM1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
aXBlIHRoZSBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIGRvd24gdG8gdGhlIFdlYkNvbnRl
bnRQcm9jZXNzIG9uIGluaXRpYWxpemF0aW9uCisgICAgICAgIGFuZCB3aGVuIGl0IGNoYW5nZXMs
IGFuZCB1c2UgaXQgdG8gZmxpcCB0aGUgYmVoYXZpb3Igb2YgY29tbWFuZC1sZWZ0IGFuZCBjb21t
YW5kLXJpZ2h0CisgICAgICAgIHdoZW4gaW4gUlRMIG1vZGUuCisKKyAgICAgICAgVGVzdHM6Cisg
ICAgICAgICAgICBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXcuTFRSCisgICAg
ICAgICAgICBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXcuUlRMCisgICAgICAg
ICAgICBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1dlYlZpZXcuTFRSCisgICAgICAg
ICAgICBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1dlYlZpZXcuUlRMCisKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF93ZWJWaWV3UHJpbnRGb3JtYXR0
ZXJdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldFNlbWFudGljQ29udGVudEF0dHJpYnV0ZTpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9wcmludE9wZXJhdGlvbldpdGhQcmludEluZm86Zm9y
RnJhbWU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAg
ICAgKC1bV0tWaWV3IHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2luZG93
SXNGcm9udFdpbmRvd1VuZGVyTW91c2UpOgorICAgICAgICAoV2ViS2l0Ojp0b1VzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpz
ZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBh
cmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYXNIYWRTZWxlY3Rpb25DaGFu
Z2VzRnJvbVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jb21tb25Jbml0aWFsaXphdGlv
bldpdGhQcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV91c2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0UmVzb3VyY2VDYWNo
aW5nRGlzYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6bV9zaG91bGREaXNwYXRjaEZha2VN
b3VzZU1vdmVFdmVudHMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtTm9uRWRpdGluZ0JlaGF2aW9yRm9yU2VsZWN0
b3IpOgorCiAyMDE2LTA2LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgRHJvcCBzb21lIHVubmVjZXNzYXJ5IGhlYWRlciBpbmNsdWRlcwpJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAko
cmV2aXNpb24gMjAyMTA5KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBAIHZvaWQgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEkKICNlbmRpZgogICAgIGVuY29kZXIgPDwg
YXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IHNob3VsZFNj
YWxlVmlld1RvRml0RG9jdW1lbnQ7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24pOwogfQogCiBib29sIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6
OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTE5NCw2ICsxOTUsOSBAQCBib29sIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM6OmRlY29kZShJCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShwYXJhbWV0ZXJzLnVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMDIxMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbmZvLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVl
Q29udGV4dC5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgorI2luY2x1ZGUgIlVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXBEYXRhLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5j
ZXNTdG9yZS5oIgpAQCAtMTMzLDYgKzEzNCw4IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzIHsKICNlbmRpZgogICAgIGJvb2wgYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxl
ZDsKICAgICBib29sIHNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQ7CisKKyAgICBVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb247CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMDIxMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI3NCw2ICs1Mjc0LDcg
QEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OgogICAgIHBhcmFtZXRl
cnMuYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZCA9IGZhbHNlOwogI2VuZGlmCiAgICAg
cGFyYW1ldGVycy5zaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50ID0gbV9zaG91bGRTY2FsZVZp
ZXdUb0ZpdERvY3VtZW50OworICAgIHBhcmFtZXRlcnMudXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbiA9IG1fcGFnZUNsaWVudC51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CiAKICAg
ICByZXR1cm4gcGFyYW1ldGVyczsKIH0KQEAgLTYzMTEsNCArNjMxMiwxMiBAQCBVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uIFdlYlBhZ2VQcm94CiAgICAgcmV0dXJuIG1fcGFnZUNsaWVudC51
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24gdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90Pih1
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKSksIG1fcGFnZUlEKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CShyZXZpc2lvbiAyMDIxMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMTIsNiArMTExMiw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGJvb2wpOwogCiAgICAgVXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvbiB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CisgICAgdm9p
ZCBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb24pOwogCiAgICAgYm9vbCBoYXNIYWRTZWxlY3Rpb25DaGFuZ2VzRnJvbVVzZXJJbnRlcmFj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzSGFkU2VsZWN0aW9uQ2hhbmdlc0Zyb21Vc2VySW50
ZXJhY3Rpb247IH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDIwMjEwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Mjk4LDYg
KzQyOTgsMTYgQEAgLSAoX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyICopX3dlYlZpZXdQcgogICAg
IHJldHVybiAoX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyICopdmlld1ByaW50Rm9ybWF0dGVyOwog
fQogCistICh2b2lkKXNldFNlbWFudGljQ29udGVudEF0dHJpYnV0ZTooVUlTZW1hbnRpY0NvbnRl
bnRBdHRyaWJ1dGUpY29udGVudEF0dHJpYnV0ZQoreworICAgIFtzdXBlciBzZXRTZW1hbnRpY0Nv
bnRlbnRBdHRyaWJ1dGU6Y29udGVudEF0dHJpYnV0ZV0KKworICAgIGF1dG8gZGlyZWN0aW9uID0g
W1VJVmlldyB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uRm9yU2VtYW50aWNDb250ZW50QXR0
cmlidXRlOmNvbnRlbnRBdHRyaWJ1dGVdID09IFVJVXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bkxlZnRUb1JpZ2h0KSA/IFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiA6IFVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OlJUTAorICAgIF9wYWdlLT5zZXRVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uKGRpcmVjdGlvbik7Cit9CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBV
SVNlbWFudGljQ29udGVudEF0dHJpYnV0ZSBzZW1hbnRpY0NvbnRlbnRBdHRyaWJ1dGUgTlNfQVZB
SUxBQkxFX0lPUyg5XzApOworCiAjZWxzZSAvLyAjaWYgUExBVEZPUk0oSU9TKQogCiAjcHJhZ21h
IG1hcmsgLSBPUyBYLXNwZWNpZmljIG1ldGhvZHMKQEAgLTQ0MTQsNiArNDQyNCwxMSBAQCAtIChO
U1ByaW50T3BlcmF0aW9uICopX3ByaW50T3BlcmF0aW9uV2l0CiAgICAgcmV0dXJuIG5pbDsKIH0K
IAorLSAodm9pZClzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOihOU1VzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24pdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbgoreworICAgIF9p
bXBsLT5zZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHVzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb24pOworfQorCiAjZW5kaWYKIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkocmV2aXNpb24gMjAyMTA5KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDM1
LDYgKzE0MzUsMTEgQEAgLSAoQk9PTClfYXV0b21hdGljYWxseUFkanVzdHNDb250ZW50SW5zZQog
ICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPmF1dG9tYXRpY2FsbHlBZGp1c3RzQ29udGVudEluc2V0
cygpOwogfQogCistICh2b2lkKXNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246KE5TVXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbil1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uCit7
CisgICAgX2RhdGEtPl9pbXBsLT5zZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pOworfQorCiBAZW5kCiAKICNpZiBQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwICYmIFVTRShBUFBM
RV9JTlRFUk5BTF9TREspCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwuaAkocmV2aXNpb24gMjAyMTA5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpZiBQTEFURk9STShNQUMpCiAKICNpbmNsdWRlICJQbHVnaW5Db21wbGV4VGV4dElucHV0U3Rh
dGUuaCIKKyNpbmNsdWRlICJVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiV0tMYXlvdXRNb2RlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAi
X1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlLmgiCkBAIC00ODUsNiArNDg2LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0UmVxdWlyZXNVc2VyQWN0aW9uRm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlcihi
b29sIHJlcXVpcmVzVXNlckFjdGlvbkZvckVkaXRpbmdDb250cm9sc01hbmFnZXIpIHsgbV9yZXF1
aXJlc1VzZXJBY3Rpb25Gb3JFZGl0aW5nQ29udHJvbHNNYW5hZ2VyID0gcmVxdWlyZXNVc2VyQWN0
aW9uRm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlcjsgfQogICAgIGJvb2wgcmVxdWlyZXNVc2VyQWN0
aW9uRm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZXNV
c2VyQWN0aW9uRm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlcjsgfQogCisgICAgVXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvbiB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CisgICAgdm9p
ZCBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKE5TVXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbik7CisKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIw
MCAKICAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKE5TVGV4dENoZWNraW5nUmVzdWx0
ICphY2NlcHRlZENhbmRpZGF0ZSk7CiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHJldmlz
aW9uIDIwMjEwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAyOSw3ICs0MDI5LDI3IEBAIGJvb2wgV2ViVmlld0lt
cGw6OndpbmRvd0lzRnJvbnRXaW5kb3dVbmQKICAgICByZXR1cm4gbV92aWV3LndpbmRvdy53aW5k
b3dOdW1iZXIgIT0gZXZlbnRXaW5kb3dOdW1iZXI7CiB9CiAKLSAgICAKK3N0YXRpYyBVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHRvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihOU1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIHN3aXRjaCAoZGly
ZWN0aW9uKSB7CisgICAgY2FzZSBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9S
aWdodDoKKyAgICAgICAgcmV0dXJuIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUjsK
KyAgICBjYXNlIE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0OgorICAg
ICAgICByZXR1cm4gVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6UlRMOworICAgIH0KKyAg
ICByZXR1cm4gVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6TFRSOworfQorCitVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIFdlYlZpZXdJbXBsOjp1c2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gdG9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKG1f
dmlldy51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKTsKK30KKwordm9pZCBXZWJWaWV3SW1w
bDo6c2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihOU1VzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIG1fcGFnZS0+c2V0VXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbih0b1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oZGlyZWN0aW9uKSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQkocmV2
aXNpb24gMjAyMTA5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNiArMTk0LDggQEAgLSAoaW5zdGFuY2V0eXBl
KV9jb21tb25Jbml0aWFsaXphdGlvbldpdAogICAgIEFTU0VSVChfcGFnZUNsaWVudCk7CiAKICAg
ICBfcGFnZSA9IHByb2Nlc3NQb29sLmNyZWF0ZVdlYlBhZ2UoKl9wYWdlQ2xpZW50LCBXVEZNb3Zl
KGNvbmZpZ3VyYXRpb24pKTsKKworICAgIGF1dG8gZGlyZWN0aW9uID0gW1VJVmlldyB1c2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uRm9yU2VtYW50aWNDb250ZW50QXR0cmlidXRlOmNvbnRlbnRB
dHRyaWJ1dGVdID09IFVJVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0KSA/
IFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiA6IFVzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb246OlJUTAogICAgIF9wYWdlLT5pbml0aWFsaXplV2ViUGFnZSgpOwogICAgIF9wYWdl
LT5zZXRJbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcihzY3JlZW5TY2FsZUZhY3RvcihbVUlTY3Jl
ZW4gbWFpblNjcmVlbl0pKTsKICAgICBfcGFnZS0+c2V0VXNlRml4ZWRMYXlvdXQodHJ1ZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShy
ZXZpc2lvbiAyMDIxMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Nyw2ICszNzcsNyBAQCBXZWJQYWdlOjpXZWJQ
YWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAjZW5kaWYKICAgICAsIG1fbWFpbkZyYW1lUHJv
Z3Jlc3NDb21wbGV0ZWQoZmFsc2UpCiAgICAgLCBtX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92
ZUV2ZW50cyh0cnVlKQorICAgICwgbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHBhcmFt
ZXRlcnMudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikKIHsKICAgICBBU1NFUlQobV9wYWdl
SUQpOwogCkBAIC01MzY4LDQgKzUzNjksOSBAQCB2b2lkIFdlYlBhZ2U6OnNldFJlc291cmNlQ2Fj
aGluZ0Rpc2FibGVkCiAgICAgbV9wYWdlLT5zZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChkaXNh
YmxlZCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bih1aW50MzJfdCBkaXJlY3Rpb24pCit7CisgICAgbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uID0gc3RhdGljX2Nhc3Q8VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbj4oZGlyZWN0aW9u
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIwMjEwOSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZuZGVmIFdlYlBhZ2VfaAotI2RlZmluZSBXZWJQYWdlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJSW5qZWN0
ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIKQEAgLTQ4LDYgKzQ3LDcgQEAKICNpbmNs
dWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAj
aW5jbHVkZSAiVXNlckRhdGEuaCIKKyNpbmNsdWRlICJVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRGljdGlvbmFyeVBvcHVwSW5mby5oPgpAQCAtMTE5OSw2ICsxMTk5LDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChib29sKTsKKyAg
ICB2b2lkIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24odWludDMyX3QpOwogCiAgICAg
dWludDY0X3QgbV9wYWdlSUQ7CiAKQEAgLTE0NjgsOCArMTQ2OSw5IEBAIHByaXZhdGU6CiAjaWYg
VVNFKE9TX1NUQVRFKQogICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQg
bV9sb2FkQ29tbWl0VGltZTsKICNlbmRpZgorCisgICAgVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbiBtX3VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24geyBVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uOjpMVFIgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYg
Ly8gV2ViUGFnZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjAyMTA5KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTQyOCw0ICs0MjgsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2Vp
dmVyIHsKICNlbmRpZgogCiAgICAgU2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoYm9vbCBkaXNh
YmxlZCkKKworICAgIFNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24odWludDMyX3QgZGly
ZWN0aW9uKQogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24gMjAyMTA5KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC01NTEsMTMgKzU1MSwxMyBAQCBib29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZp
b3JGCiAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVXb3JkTGVmdDoiKQogICAgICAgICBk
aWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xs
QnlQYWdlKTsKICAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvTGVmdEVuZE9mTGluZToi
KQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvQmFj
aygpOworICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gbV91c2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uID09IFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiA/IG1fcGFnZS0+YmFj
a0ZvcndhcmQoKS5nb0JhY2soKSA6IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5nb0ZvcndhcmQoKTsK
ICAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVJpZ2h0OiIpCiAgICAgICAgIGRpZFBlcmZv
cm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxSaWdodCwgU2Nyb2xsQnlMaW5l
KTsKICAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVdvcmRSaWdodDoiKQogICAgICAgICBk
aWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9s
bEJ5UGFnZSk7CiAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb1JpZ2h0RW5kT2ZMaW5l
OiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBtX3BhZ2UtPmJhY2tGb3J3YXJkKCkuZ29G
b3J3YXJkKCk7CisgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBtX3VzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb24gPT0gVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6TFRSID8gbV9wYWdl
LT5iYWNrRm9yd2FyZCgpLmdvRm9yd2FyZCgpIDogbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvQmFj
aygpOwogCiAgICAgcmV0dXJuIGRpZFBlcmZvcm1BY3Rpb247CiB9CkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDIxMTYpCisr
KyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAxNi0w
Ni0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEZvcndhcmQvQmFj
ayBrZXlib2FyZCBzaG9ydGN1dHMgbmVlZCB0byBmbGlwIGZvciBSVEwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODgyMworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjU5NzUzNTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHRlc3RzIGZvciBmbGlwcGluZyB0aGUgYmVoYXZpb3Igb2YgY29tbWFu
ZC1sZWZ0IGFuZCBjb21tYW5kLXJpZ2h0CisgICAgICAgIHVuZGVyIFJUTCBtb2RlLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQ29tbWFuZEJh
Y2tGb3J3YXJkLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bQ29tbWFuZEJhY2tGb3J3YXJkT2Zmc2Ny
ZWVuV2luZG93IGlzS2V5V2luZG93XSk6CisgICAgICAgICgtW0NvbW1hbmRCYWNrRm9yd2FyZE9m
ZnNjcmVlbldpbmRvdyBpc1Zpc2libGVdKToKKyAgICAgICAgKHNpbXVsYXRlQ29tbWFuZEFycm93
KToKKyAgICAgICAgKFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdDo6U2V0VXApOgorICAg
ICAgICAoV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0V0tWaWV3OjpkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0V0tWaWV3
OjpTZXRVcCk6CisgICAgICAgIChXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXc6
OmxvYWRGaWxlcyk6CisgICAgICAgICgtW0NvbW1hbmRCYWNrRm9yd2FyZE5hdmlnYXRpb25EZWxl
Z2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAgICAgIChXZWJLaXQyX0Nv
bW1hbmRCYWNrRm9yd2FyZFRlc3RXS1dlYlZpZXc6OlNldFVwKToKKyAgICAgICAgKFdlYktpdDJf
Q29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLV2ViVmlldzo6bG9hZEZpbGVzKToKKwogMjAxNi0wNi0x
MyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
IFdLMl0gTWFrZSBpdCBwb3NzaWJsZSB0byB0ZXN0IHRoZSBOZXh0L1ByZXZpb3VzIGJ1dHRvbnMg
aW4gdGhlIGtleWJvYXJkIGFjY2Vzc29yeSBiYXIKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyMDIxMTMpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsNyBA
QAogCQk3QTE0NThGQzFBRDVDMDcwMDBFMDY3NzIgLyogbW91c2UtYnV0dG9uLWxpc3RlbmVyLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0ExNDU4RkIxQUQ1QzAzNTAwRTA2NzcyIC8qIG1vdXNlLWJ1dHRvbi1saXN0ZW5lci5odG1sICov
OyB9OwogCQk3QUU5RTUwOTFBRTVBRThCMDBDRjg3NEIgLyogdGVzdC5wZGYgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FFOUU1MDgxQUU1QUU4
QjAwQ0Y4NzRCIC8qIHRlc3QucGRmICovOyB9OwogCQk3QzM5NjUwNjFDREQ3NEY5MDA5NERCQjgg
LyogQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0MzOTY1MDUxQ0RENzRGOTAwOTREQkI4IC8qIENvbG9yLmNwcCAqLzsgfTsKKwkJN0MzREI4
RTQxRDEyMTI5QjAwQUU4Q0MzIC8qIENvbW1hbmRCYWNrRm9yd2FyZC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0RCOEUyMUQxMjEyOUIwMEFFOEND
MyAvKiBDb21tYW5kQmFja0ZvcndhcmQubW0gKi87IH07CiAJCTdDNDg2QkExMUFBMTI1NjcwMDNG
NkY5QiAvKiBidW5kbGUtZmlsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNDg2QkEwMUFBMTI1NEIwMDNGNkY5QiAvKiBidW5kbGUt
ZmlsZS5odG1sICovOyB9OwogCQk3QzU0QTRCRTFBQTExQ0NBMDAzODBGNzggLyogV0tCdW5kbGVG
aWxlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDNTRBNEJDMUFBMTFDQ0EwMDM4MEY3OCAvKiBXS0J1bmRsZUZpbGVIYW5kbGUuY3BwICov
OyB9OwogCQk3QzU0QTRDMTFBQTExQ0U0MDAzODBGNzggLyogV0tCdW5kbGVGaWxlSGFuZGxlX0J1
bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzU0QTRCRjFBQTExQ0U0MDAzODBGNzggLyogV0tCdW5kbGVGaWxlSGFuZGxlX0J1bmRsZS5jcHAg
Ki87IH07CkBAIC03NDgsNiArNzQ5LDcgQEAKIAkJN0FBNkExNTExQUFDMEIzMTAwMkIyRUQzIC8q
IFdvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3Jr
UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUU5RTUwODFBRTVBRThC
MDBDRjg3NEIgLyogdGVzdC5wZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7IHBhdGggPSB0ZXN0LnBkZjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0MzOTY1MDUxQ0RENzRGOTAwOTREQkI4IC8qIENvbG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0MzREI4RTIxRDEyMTI5QjAwQUU4Q0MzIC8qIENvbW1hbmRCYWNr
Rm9yd2FyZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbW1h
bmRCYWNrRm9yd2FyZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0ODZCQTAx
QUExMjU0QjAwM0Y2RjlCIC8qIGJ1bmRsZS1maWxlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYnVuZGxlLWZp
bGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNTRBNEJDMUFBMTFDQ0Ew
MDM4MEY3OCAvKiBXS0J1bmRsZUZpbGVIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0tCdW5kbGVGaWxlSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0M1NEE0QkYxQUExMUNFNDAwMzgwRjc4IC8qIFdLQnVuZGxlRmlsZUhhbmRs
ZV9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5k
bGVGaWxlSGFuZGxlX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MTMxLDYgKzExMzMsNyBAQAogCQkJCUExM0VCQkFFMUI4NzQzNkYwMDA5NzExMCAvKiBCdW5kbGVQ
YXJhbWV0ZXJzUGx1Z0luLm1tICovLAogCQkJCTFDMkI4MTdFMUM4OTFFNDIwMEE1NTI5RiAvKiBD
YW5jZWxGb250U3VicmVzb3VyY2UubW0gKi8sCiAJCQkJMUMyQjgxODExQzg5MUVGQTAwQTU1MjlG
IC8qIENhbmNlbEZvbnRTdWJyZXNvdXJjZVBsdWdJbi5tbSAqLywKKwkJCQk3QzNEQjhFMjFEMTIx
MjlCMDBBRThDQzMgLyogQ29tbWFuZEJhY2tGb3J3YXJkLm1tICovLAogCQkJCUExOEFBOENDMUMz
RkEyMTgwMDlCMkI5NyAvKiBDb250ZW50RmlsdGVyaW5nLmggKi8sCiAJCQkJQTE0RkM1ODYxQjg5
OTFCNjAwRDEwN0VCIC8qIENvbnRlbnRGaWx0ZXJpbmcubW0gKi8sCiAJCQkJQTE0RkM1ODkxQjg5
OTI3MTAwRDEwN0VCIC8qIENvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0gKi8sCkBAIC0yMTQ1LDYg
KzIxNDgsNyBAQAogCQkJCTdDODgyRTBBMUM4MEM3NjQwMDZCRjczMSAvKiBVc2VyQ29udGVudFdv
cmxkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMjcxQTQxMUFGNjAwNDQ3QzRDIC8qIFVz
ZXJDb250ZW50Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDRGMUQwQTY0
MTgwMEZFQkNGMyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDM0RCOEU0
MUQxMjEyOUIwMEFFOENDMyAvKiBDb21tYW5kQmFja0ZvcndhcmQubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0YyRDFBNDExQjEwMDA0NDdDNEMgLyogVXNlckNvbnRlbnRUZXN0Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0NDRTdGMTcxQTQxMUFFNjAwNDQ3QzRDIC8qIFVzZXJNZWRpYS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBDNDFEMEE2NTQyMDBGRUJDRjMgLyogUmVxdWlyZXNV
c2VyQWN0aW9uRm9yUGxheWJhY2subW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0NvbW1hbmRCYWNrRm9yd2FyZC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Db21tYW5kQmFj
a0ZvcndhcmQubW0JKHJldmlzaW9uIDApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9Db21tYW5kQmFja0ZvcndhcmQubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JN
KE1BQykKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIK
KyNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4gLy8gZm9yIEdldEN1cnJlbnRFdmVudFRpbWUoKQor
I2ltcG9ydCA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tWaWV3UHJp
dmF0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitAaW50ZXJmYWNlIENvbW1hbmRC
YWNrRm9yd2FyZE9mZnNjcmVlbldpbmRvdyA6IE5TV2luZG93CitAZW5kCisKK0BpbXBsZW1lbnRh
dGlvbiBDb21tYW5kQmFja0ZvcndhcmRPZmZzY3JlZW5XaW5kb3cKKy0gKEJPT0wpaXNLZXlXaW5k
b3cKK3sKKyAgICByZXR1cm4gWUVTOworfQorLSAoQk9PTClpc1Zpc2libGUKK3sKKyAgICByZXR1
cm4gWUVTOworfQorQGVuZAorCitlbnVtIEFycm93RGlyZWN0aW9uIHsKKyAgICBMZWZ0LAorICAg
IFJpZ2h0Cit9OworCitzdGF0aWMgdm9pZCBzaW11bGF0ZUNvbW1hbmRBcnJvdyhOU1ZpZXcgKnZp
ZXcsIEFycm93RGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBjb25zdCB1bmljaGFyIHJpZ2h0
ID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7CisgICAgY29uc3QgdW5pY2hhciBsZWZ0ID0gTlNM
ZWZ0QXJyb3dGdW5jdGlvbktleTsKKworICAgIE5TU3RyaW5nICpldmVudENoYXJhY3RlciA9IChk
aXJlY3Rpb24gPT0gTGVmdCkgPyBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmxlZnQg
bGVuZ3RoOjFdIDogW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZyaWdodCBsZW5ndGg6
MV07CisgICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZSA9IChkaXJlY3Rpb24gPT0gTGVmdCkgPyAw
eDdCIDogMHg3QzsKKworICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRXaXRo
VHlwZTpOU0tleURvd24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9j
YXRpb246TlNNYWtlUG9pbnQoNSwgNSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1vZGlmaWVyRmxhZ3M6TlNFdmVudE1vZGlmaWVyRmxhZ0NvbW1hbmQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6R2V0Q3VycmVudEV2ZW50VGltZSgpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93TnVtYmVyOlt2aWV3LndpbmRv
dyB3aW5kb3dOdW1iZXJdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKKyAgICAgICAg
ICAgICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6ZXZlbnRDaGFyYWN0ZXIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FSZXBlYXQ6Tk8KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGU6a2V5Q29kZV07CisKKyAgICBb
dmlldyBrZXlEb3duOmV2ZW50XTsKKworICAgIGV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRXaXRo
VHlwZTpOU0tleVVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOk5TTWFr
ZVBvaW50KDUsIDUpCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOk5TRXZl
bnRNb2RpZmllckZsYWdDb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0
YW1wOkdldEN1cnJlbnRFdmVudFRpbWUoKQorICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRv
d051bWJlcjpbdmlldy53aW5kb3cgd2luZG93TnVtYmVyXQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyCisgICAgICAg
ICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOmV2ZW50Q2hhcmFjdGVyCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaXNBUmVwZWF0Ok5PCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBrZXlDb2RlOmtleUNvZGVdOworCisgICAgW3ZpZXcga2V5VXA6ZXZlbnRdOworfQorCitj
bGFzcyBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CitwdWJsaWM6CisgICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3c7CisKKyAgICB2aXJ0
dWFsIHZvaWQgU2V0VXAoKQorICAgIHsKKyAgICAgICAgTlNXaW5kb3cgKndpbmRvdyA9IFtbQ29t
bWFuZEJhY2tGb3J3YXJkT2Zmc2NyZWVuV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0
Ok5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dN
YXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpZRVNdOworICAgICAgICBb
d2luZG93IHNldENvbG9yU3BhY2U6W1tOU1NjcmVlbiBtYWluU2NyZWVuXSBjb2xvclNwYWNlXV07
CisgICAgICAgIFt3aW5kb3cgb3JkZXJCYWNrOm5pbF07CisgICAgICAgIFt3aW5kb3cgc2V0QXV0
b2Rpc3BsYXk6Tk9dOworICAgICAgICBbd2luZG93IHNldFJlbGVhc2VkV2hlbkNsb3NlZDpOT107
CisgICAgfQorfTsKKworc3RhdGljIGJvb2wgZGlkRmluaXNoTmF2aWdhdGlvbjsKKworY2xhc3Mg
V2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0V0tWaWV3IDogcHVibGljIFdlYktpdDJfQ29t
bWFuZEJhY2tGb3J3YXJkVGVzdCB7CitwdWJsaWM6CisgICAgUmV0YWluUHRyPFdLVmlldz4gd2Vi
VmlldzsKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gZmlsZTE7CisgICAgV0tSZXRhaW5QdHI8
V0tVUkxSZWY+IGZpbGUyOworCisgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1l
KFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQorICAgIHsKKyAgICAgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IHRydWU7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIFNldFVwKCkKKyAgICB7CisgICAgICAgIFdlYktpdDJfQ29tbWFuZEJh
Y2tGb3J3YXJkVGVzdDo6U2V0VXAoKTsKKworICAgICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRS
ZWY+IGNvbnRleHQgPSBhZG9wdFdLKFdLQ29udGV4dENyZWF0ZSgpKTsKKyAgICAgICAgV0tSZXRh
aW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gY29uZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQ
YWdlQ29uZmlndXJhdGlvbkNyZWF0ZSgpKTsgICAgICAgIAorICAgICAgICBXS1BhZ2VDb25maWd1
cmF0aW9uU2V0Q29udGV4dChjb25maWd1cmF0aW9uLmdldCgpLCBjb250ZXh0LmdldCgpKTsKKwor
ICAgICAgICB3ZWJWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvblJlZjpjb25maWd1cmF0aW9uLmdldCgpXTsK
KworICAgICAgICBXS1BhZ2VMb2FkZXJDbGllbnRWNiBsb2FkZXJDbGllbnQ7CisgICAgICAgIG1l
bXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CisKKyAgICAgICAg
bG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDY7CisgICAgICAgIGxvYWRlckNsaWVudC5kaWRG
aW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9yRnJhbWU7CisKKyAgICAgICAgV0tQ
YWdlU2V0UGFnZUxvYWRlckNsaWVudChbd2ViVmlldyBwYWdlUmVmXSwgJmxvYWRlckNsaWVudC5i
YXNlKTsKKyAgICAgICAgCisgICAgICAgIGZpbGUxID0gYWRvcHRXSyhUZXN0V2ViS2l0QVBJOjpV
dGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSk7CisgICAgICAgIGZp
bGUyID0gYWRvcHRXSyhUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgi
c2ltcGxlMiIsICJodG1sIikpOworCisgICAgfQorCisgICAgdm9pZCBsb2FkRmlsZXMoKQorICAg
IHsKKyAgICAgICAgV0tQYWdlTG9hZEZpbGUoW3dlYlZpZXcgcGFnZVJlZl0sIGZpbGUxLmdldCgp
LCBudWxscHRyKTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRGaW5pc2hO
YXZpZ2F0aW9uKTsKKyAgICAgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZhbHNlOworCisgICAg
ICAgIFdLUGFnZUxvYWRGaWxlKFt3ZWJWaWV3IHBhZ2VSZWZdLCBmaWxlMi5nZXQoKSwgbnVsbHB0
cik7CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlv
bik7CisgICAgICAgIGRpZEZpbmlzaE5hdmlnYXRpb24gPSBmYWxzZTsKKyAgICB9Cit9OworCisj
aWYgV0tfQVBJX0VOQUJMRUQKKworQGludGVyZmFjZSBDb21tYW5kQmFja0ZvcndhcmROYXZpZ2F0
aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CitAZW5kCisKK0Bp
bXBsZW1lbnRhdGlvbiBDb21tYW5kQmFja0ZvcndhcmROYXZpZ2F0aW9uRGVsZWdhdGUKKworLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdL
TmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KK3sKKyAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0gdHJ1
ZTsKK30KKworQGVuZAorCisKK2NsYXNzIFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdL
V2ViVmlldyA6IHB1YmxpYyBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3QgeworcHVibGlj
OgorICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXc7CisKKyAgICB2aXJ0dWFsIHZvaWQg
U2V0VXAoKQorICAgIHsKKyAgICAgICAgV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0OjpT
ZXRVcCgpOworCisgICAgICAgIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApXSk7CisgICAgICAgIFtbd2lu
ZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOworCisgICAgICAgIENv
bW1hbmRCYWNrRm9yd2FyZE5hdmlnYXRpb25EZWxlZ2F0ZSAqZGVsZWdhdGUgPSBbW0NvbW1hbmRC
YWNrRm9yd2FyZE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF07CisgICAgICAgIFt3ZWJW
aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZV07CisgICAgfQorICAgIAorICAgIHZv
aWQgbG9hZEZpbGVzKCkKKyAgICB7CisgICAgICAgIE5TVVJMICpmaWxlMSA9IFtbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1s
IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgICAgICBbd2Vi
VmlldyBsb2FkRmlsZVVSTDpmaWxlMSBhbGxvd2luZ1JlYWRBY2Nlc3NUb1VSTDpmaWxlMV07CisK
KyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZpZ2F0aW9uKTsK
KyAgICAgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZhbHNlOworCisgICAgICAgIE5TVVJMICpm
aWxlMiA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZEZpbGVVUkw6ZmlsZTIgYWxsb3dpbmdSZWFkQWNj
ZXNzVG9VUkw6ZmlsZTJdOworCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlk
RmluaXNoTmF2aWdhdGlvbik7CisgICAgICAgIGRpZEZpbmlzaE5hdmlnYXRpb24gPSBmYWxzZTsK
KyAgICB9Cit9OworCitURVNUX0YoV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0V0tXZWJW
aWV3LCBMVFIpCit7CisgICAgRVhQRUNUX0VRKE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bkxlZnRUb1JpZ2h0LCBbd2ViVmlldyB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uXSk7Cisg
ICAgCisgICAgbG9hZEZpbGVzKCk7CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgVVJM
XS5wYXRoLmxhc3RQYXRoQ29tcG9uZW50LCBAInNpbXBsZTIuaHRtbCIpOworCisgICAgLy8gQXR0
ZW1wdCB0byBnbyBiYWNrICh1c2luZyBjb21tYW5kLWxlZnQpLgorICAgIHNpbXVsYXRlQ29tbWFu
ZEFycm93KHdlYlZpZXcuZ2V0KCksIExlZnQpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZhbHNl
OworCisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IFVSTF0ucGF0aC5sYXN0UGF0aENvbXBv
bmVudCwgQCJzaW1wbGUuaHRtbCIpOworCisgICAgLy8gQXR0ZW1wdCB0byBnbyBiYWNrICh1c2lu
ZyBjb21tYW5kLXJpZ2h0KS4KKyAgICBzaW11bGF0ZUNvbW1hbmRBcnJvdyh3ZWJWaWV3LmdldCgp
LCBSaWdodCk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZpZ2F0
aW9uKTsKKyAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0gZmFsc2U7CisKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoW3dlYlZpZXcgVVJMXS5wYXRoLmxhc3RQYXRoQ29tcG9uZW50LCBAInNpbXBsZTIuaHRt
bCIpOworfQorCitURVNUX0YoV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0V0tXZWJWaWV3
LCBSVEwpCit7CisgICAgLy8gT3ZlcnJpZGUgdGhlIGxheW91dCBkaXJlY3Rpb24gdG8gYmUgUlRM
LgorICAgIFt3ZWJWaWV3IHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246TlNVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xlZnRdOworICAgIAorICAgIGxvYWRGaWxlcygp
OworCisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IFVSTF0ucGF0aC5sYXN0UGF0aENvbXBv
bmVudCwgQCJzaW1wbGUyLmh0bWwiKTsKKworICAgIC8vIEF0dGVtcHQgdG8gZ28gYmFjayAodXNp
bmcgY29tbWFuZC1yaWdodCkKKyAgICBzaW11bGF0ZUNvbW1hbmRBcnJvdyh3ZWJWaWV3LmdldCgp
LCBSaWdodCk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZpZ2F0
aW9uKTsKKyAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0gZmFsc2U7CisKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoW3dlYlZpZXcgVVJMXS5wYXRoLmxhc3RQYXRoQ29tcG9uZW50LCBAInNpbXBsZS5odG1s
Iik7CisKKyAgICAvLyBBdHRlbXB0IHRvIGdvIGJhY2sgKHVzaW5nIGNvbW1hbmQtbGVmdCkuCisg
ICAgc2ltdWxhdGVDb21tYW5kQXJyb3cod2ViVmlldy5nZXQoKSwgTGVmdCk7CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZpZ2F0aW9uKTsKKyAgICBkaWRGaW5pc2hO
YXZpZ2F0aW9uID0gZmFsc2U7CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgVVJMXS5w
YXRoLmxhc3RQYXRoQ29tcG9uZW50LCBAInNpbXBsZTIuaHRtbCIpOworfQorCisjZW5kaWYKKwor
VEVTVF9GKFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLVmlldywgTFRSKQoreworICAg
IEVYUEVDVF9FUShOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCwgW3dl
YlZpZXcgdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbl0pOworICAgIAorICAgIGxvYWRGaWxl
cygpOworCisgICAgYXV0byBjdXJyZW50VVJMID0gYWRvcHRXSyhXS1BhZ2VDb3B5QWN0aXZlVVJM
KFt3ZWJWaWV3IHBhZ2VSZWZdKSk7CisgICAgRVhQRUNUX1RSVUUoV0tVUkxJc0VxdWFsKGZpbGUy
LmdldCgpLCBjdXJyZW50VVJMLmdldCgpKSk7CisKKyAgICAvLyBBdHRlbXB0IHRvIGdvIGJhY2sg
KHVzaW5nIGNvbW1hbmQtbGVmdCkuCisgICAgc2ltdWxhdGVDb21tYW5kQXJyb3cod2ViVmlldy5n
ZXQoKSwgTGVmdCk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZp
Z2F0aW9uKTsKKyAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0gZmFsc2U7CisKKyAgICBhdXRvIGN1
cnJlbnRVUkwyID0gYWRvcHRXSyhXS1BhZ2VDb3B5QWN0aXZlVVJMKFt3ZWJWaWV3IHBhZ2VSZWZd
KSk7CisgICAgRVhQRUNUX1RSVUUoV0tVUkxJc0VxdWFsKGZpbGUxLmdldCgpLCBjdXJyZW50VVJM
Mi5nZXQoKSkpOworCisgICAgLy8gQXR0ZW1wdCB0byBnbyBiYWNrICh1c2luZyBjb21tYW5kLXJp
Z2h0KS4KKyAgICBzaW11bGF0ZUNvbW1hbmRBcnJvdyh3ZWJWaWV3LmdldCgpLCBSaWdodCk7Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZpZ2F0aW9uKTsKKyAgICBk
aWRGaW5pc2hOYXZpZ2F0aW9uID0gZmFsc2U7CisKKyAgICBhdXRvIGN1cnJlbnRVUkwzID0gYWRv
cHRXSyhXS1BhZ2VDb3B5QWN0aXZlVVJMKFt3ZWJWaWV3IHBhZ2VSZWZdKSk7CisgICAgRVhQRUNU
X1RSVUUoV0tVUkxJc0VxdWFsKGZpbGUyLmdldCgpLCBjdXJyZW50VVJMMy5nZXQoKSkpOworfQor
CitURVNUX0YoV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0V0tWaWV3LCBSVEwpCit7Cisg
ICAgLy8gT3ZlcnJpZGUgdGhlIGxheW91dCBkaXJlY3Rpb24gdG8gYmUgUlRMLgorICAgIFt3ZWJW
aWV3IHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246TlNVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uUmlnaHRUb0xlZnRdOworICAgIAorICAgIGxvYWRGaWxlcygpOworCisgICAgYXV0
byBjdXJyZW50VVJMID0gYWRvcHRXSyhXS1BhZ2VDb3B5QWN0aXZlVVJMKFt3ZWJWaWV3IHBhZ2VS
ZWZdKSk7CisgICAgRVhQRUNUX1RSVUUoV0tVUkxJc0VxdWFsKGZpbGUyLmdldCgpLCBjdXJyZW50
VVJMLmdldCgpKSk7CisKKyAgICAvLyBBdHRlbXB0IHRvIGdvIGJhY2sgKHVzaW5nIGNvbW1hbmQt
cmlnaHQpCisgICAgc2ltdWxhdGVDb21tYW5kQXJyb3cod2ViVmlldy5nZXQoKSwgUmlnaHQpOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAg
ZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZhbHNlOworCisgICAgYXV0byBjdXJyZW50VVJMMiA9IGFk
b3B0V0soV0tQYWdlQ29weUFjdGl2ZVVSTChbd2ViVmlldyBwYWdlUmVmXSkpOworICAgIEVYUEVD
VF9UUlVFKFdLVVJMSXNFcXVhbChmaWxlMS5nZXQoKSwgY3VycmVudFVSTDIuZ2V0KCkpKTsKKwor
ICAgIC8vIEF0dGVtcHQgdG8gZ28gYmFjayAodXNpbmcgY29tbWFuZC1sZWZ0KS4KKyAgICBzaW11
bGF0ZUNvbW1hbmRBcnJvdyh3ZWJWaWV3LmdldCgpLCBMZWZ0KTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOworICAgIGRpZEZpbmlzaE5hdmlnYXRp
b24gPSBmYWxzZTsKKworICAgIGF1dG8gY3VycmVudFVSTDMgPSBhZG9wdFdLKFdLUGFnZUNvcHlB
Y3RpdmVVUkwoW3dlYlZpZXcgcGFnZVJlZl0pKTsKKyAgICBFWFBFQ1RfVFJVRShXS1VSTElzRXF1
YWwoZmlsZTIuZ2V0KCksIGN1cnJlbnRVUkwzLmdldCgpKSk7Cit9CisKKyNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281417</attachid>
            <date>2016-06-15 17:47:04 -0700</date>
            <delta_ts>2016-06-16 09:36:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158823-20160615174703.patch</filename>
            <type>text/plain</type>
            <size>31223</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMjEwOSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE2LTA2LTE1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRm9yd2FyZC9CYWNrIGtleWJvYXJkIHNo
b3J0Y3V0cyBuZWVkIHRvIGZsaXAgZm9yIFJUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4ODIzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNTk3
NTM1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
aXBlIHRoZSBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIGRvd24gdG8gdGhlIFdlYkNvbnRl
bnRQcm9jZXNzIG9uIGluaXRpYWxpemF0aW9uCisgICAgICAgIGFuZCB3aGVuIGl0IGNoYW5nZXMs
IGFuZCB1c2UgaXQgdG8gZmxpcCB0aGUgYmVoYXZpb3Igb2YgY29tbWFuZC1sZWZ0IGFuZCBjb21t
YW5kLXJpZ2h0CisgICAgICAgIHdoZW4gaW4gUlRMIG1vZGUuCisKKyAgICAgICAgVGVzdHM6Cisg
ICAgICAgICAgICBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXcuTFRSCisgICAg
ICAgICAgICBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXcuUlRMCisgICAgICAg
ICAgICBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1dlYlZpZXcuTFRSCisgICAgICAg
ICAgICBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1dlYlZpZXcuUlRMCisKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF93ZWJWaWV3UHJpbnRGb3JtYXR0
ZXJdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldFNlbWFudGljQ29udGVudEF0dHJpYnV0ZTpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9wcmludE9wZXJhdGlvbldpdGhQcmludEluZm86Zm9y
RnJhbWU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAg
ICAgKC1bV0tWaWV3IHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2luZG93
SXNGcm9udFdpbmRvd1VuZGVyTW91c2UpOgorICAgICAgICAoV2ViS2l0Ojp0b1VzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpz
ZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBh
cmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYXNIYWRTZWxlY3Rpb25DaGFu
Z2VzRnJvbVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jb21tb25Jbml0aWFsaXphdGlv
bldpdGhQcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV91c2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0UmVzb3VyY2VDYWNo
aW5nRGlzYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6bV9zaG91bGREaXNwYXRjaEZha2VN
b3VzZU1vdmVFdmVudHMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtTm9uRWRpdGluZ0JlaGF2aW9yRm9yU2VsZWN0
b3IpOgorCiAyMDE2LTA2LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgRHJvcCBzb21lIHVubmVjZXNzYXJ5IGhlYWRlciBpbmNsdWRlcwpJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAko
cmV2aXNpb24gMjAyMTA5KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBAIHZvaWQgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEkKICNlbmRpZgogICAgIGVuY29kZXIgPDwg
YXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IHNob3VsZFNj
YWxlVmlld1RvRml0RG9jdW1lbnQ7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24pOwogfQogCiBib29sIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6
OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTE5NCw2ICsxOTUsOSBAQCBib29sIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM6OmRlY29kZShJCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShwYXJhbWV0ZXJzLnVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMDIxMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbmZvLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVl
Q29udGV4dC5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgorI2luY2x1ZGUgIlVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXBEYXRhLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5j
ZXNTdG9yZS5oIgpAQCAtMTMzLDYgKzEzNCw4IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzIHsKICNlbmRpZgogICAgIGJvb2wgYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxl
ZDsKICAgICBib29sIHNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQ7CisKKyAgICBVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb247CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMDIxMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI3NCw2ICs1Mjc0LDcg
QEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OgogICAgIHBhcmFtZXRl
cnMuYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZCA9IGZhbHNlOwogI2VuZGlmCiAgICAg
cGFyYW1ldGVycy5zaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50ID0gbV9zaG91bGRTY2FsZVZp
ZXdUb0ZpdERvY3VtZW50OworICAgIHBhcmFtZXRlcnMudXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbiA9IG1fcGFnZUNsaWVudC51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CiAKICAg
ICByZXR1cm4gcGFyYW1ldGVyczsKIH0KQEAgLTYzMTEsNCArNjMxMiwxMiBAQCBVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uIFdlYlBhZ2VQcm94CiAgICAgcmV0dXJuIG1fcGFnZUNsaWVudC51
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24gdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90Pih1
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKSksIG1fcGFnZUlEKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CShyZXZpc2lvbiAyMDIxMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMTIsNiArMTExMiw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGJvb2wpOwogCiAgICAgVXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvbiB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CisgICAgdm9p
ZCBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb24pOwogCiAgICAgYm9vbCBoYXNIYWRTZWxlY3Rpb25DaGFuZ2VzRnJvbVVzZXJJbnRlcmFj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzSGFkU2VsZWN0aW9uQ2hhbmdlc0Zyb21Vc2VySW50
ZXJhY3Rpb247IH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDIwMjEwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Mjk4LDYg
KzQyOTgsMTQgQEAgLSAoX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyICopX3dlYlZpZXdQcgogICAg
IHJldHVybiAoX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyICopdmlld1ByaW50Rm9ybWF0dGVyOwog
fQogCistICh2b2lkKXNldFNlbWFudGljQ29udGVudEF0dHJpYnV0ZTooVUlTZW1hbnRpY0NvbnRl
bnRBdHRyaWJ1dGUpY29udGVudEF0dHJpYnV0ZQoreworICAgIFtzdXBlciBzZXRTZW1hbnRpY0Nv
bnRlbnRBdHRyaWJ1dGU6Y29udGVudEF0dHJpYnV0ZV0KKworICAgIGF1dG8gZGlyZWN0aW9uID0g
W1VJVmlldyB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uRm9yU2VtYW50aWNDb250ZW50QXR0
cmlidXRlOmNvbnRlbnRBdHRyaWJ1dGVdID09IFVJVXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bkxlZnRUb1JpZ2h0KSA/IFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiA6IFVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OlJUTAorICAgIF9wYWdlLT5zZXRVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uKGRpcmVjdGlvbik7Cit9CisKICNlbHNlIC8vICNpZiBQTEFURk9STShJ
T1MpCiAKICNwcmFnbWEgbWFyayAtIE9TIFgtc3BlY2lmaWMgbWV0aG9kcwpAQCAtNDQxNCw2ICs0
NDIyLDEzIEBAIC0gKE5TUHJpbnRPcGVyYXRpb24gKilfcHJpbnRPcGVyYXRpb25XaXQKICAgICBy
ZXR1cm4gbmlsOwogfQogCistICh2b2lkKXNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246
KE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbil1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uCit7CisgICAgW3N1cGVyIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbl07CisKKyAgICBfaW1wbC0+c2V0VXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbih1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKTsKK30KKwogI2VuZGlm
CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW0JKHJldmlzaW9uIDIwMjEwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQzNSw2ICsxNDM1LDEzIEBAIC0gKEJPT0wp
X2F1dG9tYXRpY2FsbHlBZGp1c3RzQ29udGVudEluc2UKICAgICByZXR1cm4gX2RhdGEtPl9pbXBs
LT5hdXRvbWF0aWNhbGx5QWRqdXN0c0NvbnRlbnRJbnNldHMoKTsKIH0KIAorLSAodm9pZClzZXRV
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOihOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24pdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbgoreworICAgIFtzdXBlciBzZXRVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25dOworCisg
ICAgX2RhdGEtPl9pbXBsLT5zZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24pOworfQorCiBAZW5kCiAKICNpZiBQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwICYmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaAkocmV2aXNpb24gMjAyMTA5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNp
ZiBQTEFURk9STShNQUMpCiAKICNpbmNsdWRlICJQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUu
aCIKKyNpbmNsdWRlICJVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAi
V0tMYXlvdXRNb2RlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiX1dL
T3ZlcmxheVNjcm9sbGJhclN0eWxlLmgiCkBAIC00ODUsNiArNDg2LDkgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0UmVxdWlyZXNVc2VyQWN0aW9uRm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlcihib29s
IHJlcXVpcmVzVXNlckFjdGlvbkZvckVkaXRpbmdDb250cm9sc01hbmFnZXIpIHsgbV9yZXF1aXJl
c1VzZXJBY3Rpb25Gb3JFZGl0aW5nQ29udHJvbHNNYW5hZ2VyID0gcmVxdWlyZXNVc2VyQWN0aW9u
Rm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlcjsgfQogICAgIGJvb2wgcmVxdWlyZXNVc2VyQWN0aW9u
Rm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZXNVc2Vy
QWN0aW9uRm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlcjsgfQogCisgICAgVXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbiB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CisgICAgdm9pZCBz
ZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKE5TVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbik7CisKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCAK
ICAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKE5TVGV4dENoZWNraW5nUmVzdWx0ICph
Y2NlcHRlZENhbmRpZGF0ZSk7CiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHJldmlzaW9u
IDIwMjEwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDAyOSw3ICs0MDI5LDI3IEBAIGJvb2wgV2ViVmlld0ltcGw6
OndpbmRvd0lzRnJvbnRXaW5kb3dVbmQKICAgICByZXR1cm4gbV92aWV3LndpbmRvdy53aW5kb3dO
dW1iZXIgIT0gZXZlbnRXaW5kb3dOdW1iZXI7CiB9CiAKLSAgICAKK3N0YXRpYyBVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uIHRvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihOU1VzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIHN3aXRjaCAoZGlyZWN0
aW9uKSB7CisgICAgY2FzZSBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdo
dDoKKyAgICAgICAgcmV0dXJuIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUjsKKyAg
ICBjYXNlIE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0OgorICAgICAg
ICByZXR1cm4gVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6UlRMOworICAgIH0KKyAgICBy
ZXR1cm4gVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6TFRSOworfQorCitVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uIFdlYlZpZXdJbXBsOjp1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uKCkKK3sKKyAgICByZXR1cm4gdG9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKG1fdmll
dy51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKTsKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6
c2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb24gZGlyZWN0aW9uKQoreworICAgIG1fcGFnZS0+c2V0VXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbih0b1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oZGlyZWN0aW9uKSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQkocmV2aXNp
b24gMjAyMTA5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNiArMTk0LDggQEAgLSAoaW5zdGFuY2V0eXBlKV9j
b21tb25Jbml0aWFsaXphdGlvbldpdAogICAgIEFTU0VSVChfcGFnZUNsaWVudCk7CiAKICAgICBf
cGFnZSA9IHByb2Nlc3NQb29sLmNyZWF0ZVdlYlBhZ2UoKl9wYWdlQ2xpZW50LCBXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pKTsKKworICAgIGF1dG8gZGlyZWN0aW9uID0gW1VJVmlldyB1c2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uRm9yU2VtYW50aWNDb250ZW50QXR0cmlidXRlOmNvbnRlbnRBdHRy
aWJ1dGVdID09IFVJVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0KSA/IFVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiA6IFVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb246OlJUTAogICAgIF9wYWdlLT5pbml0aWFsaXplV2ViUGFnZSgpOwogICAgIF9wYWdlLT5z
ZXRJbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcihzY3JlZW5TY2FsZUZhY3RvcihbVUlTY3JlZW4g
bWFpblNjcmVlbl0pKTsKICAgICBfcGFnZS0+c2V0VXNlRml4ZWRMYXlvdXQodHJ1ZSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZp
c2lvbiAyMDIxMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Nyw2ICszNzcsNyBAQCBXZWJQYWdlOjpXZWJQYWdl
KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAjZW5kaWYKICAgICAsIG1fbWFpbkZyYW1lUHJvZ3Jl
c3NDb21wbGV0ZWQoZmFsc2UpCiAgICAgLCBtX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2
ZW50cyh0cnVlKQorICAgICwgbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHBhcmFtZXRl
cnMudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikKIHsKICAgICBBU1NFUlQobV9wYWdlSUQp
OwogCkBAIC01MzY4LDQgKzUzNjksOSBAQCB2b2lkIFdlYlBhZ2U6OnNldFJlc291cmNlQ2FjaGlu
Z0Rpc2FibGVkCiAgICAgbV9wYWdlLT5zZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChkaXNhYmxl
ZCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbih1
aW50MzJfdCBkaXJlY3Rpb24pCit7CisgICAgbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
ID0gc3RhdGljX2Nhc3Q8VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbj4oZGlyZWN0aW9uKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIwMjEwOSkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDgg
KzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIFdlYlBhZ2VfaAotI2RlZmluZSBXZWJQYWdlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQVBJSW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRC
dW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIKQEAgLTQ4LDYgKzQ3LDcgQEAKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5j
bHVkZSAiVXNlckRhdGEuaCIKKyNpbmNsdWRlICJVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RGljdGlvbmFyeVBvcHVwSW5mby5oPgpAQCAtMTE5OSw2ICsxMTk5LDcgQEAgcHJpdmF0ZToKICNl
bmRpZgogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChib29sKTsKKyAgICB2
b2lkIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24odWludDMyX3QpOwogCiAgICAgdWlu
dDY0X3QgbV9wYWdlSUQ7CiAKQEAgLTE0NjgsOCArMTQ2OSw5IEBAIHByaXZhdGU6CiAjaWYgVVNF
KE9TX1NUQVRFKQogICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbV9s
b2FkQ29tbWl0VGltZTsKICNlbmRpZgorCisgICAgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
biBtX3VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24geyBVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uOjpMVFIgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8g
V2ViUGFnZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjAyMTA5KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTQyOCw0ICs0MjgsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVy
IHsKICNlbmRpZgogCiAgICAgU2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoYm9vbCBkaXNhYmxl
ZCkKKworICAgIFNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24odWludDMyX3QgZGlyZWN0
aW9uKQogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24gMjAyMTA5KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01
NTEsMTMgKzU1MSwxMyBAQCBib29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JG
CiAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVXb3JkTGVmdDoiKQogICAgICAgICBkaWRQ
ZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlQ
YWdlKTsKICAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvTGVmdEVuZE9mTGluZToiKQot
ICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvQmFjaygp
OworICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uID09IFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiA/IG1fcGFnZS0+YmFja0Zv
cndhcmQoKS5nb0JhY2soKSA6IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5nb0ZvcndhcmQoKTsKICAg
ICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVJpZ2h0OiIpCiAgICAgICAgIGRpZFBlcmZvcm1B
Y3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBTY3JvbGxSaWdodCwgU2Nyb2xsQnlMaW5lKTsK
ICAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVdvcmRSaWdodDoiKQogICAgICAgICBkaWRQ
ZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5
UGFnZSk7CiAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb1JpZ2h0RW5kT2ZMaW5lOiIp
Ci0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBtX3BhZ2UtPmJhY2tGb3J3YXJkKCkuZ29Gb3J3
YXJkKCk7CisgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBtX3VzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb24gPT0gVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6TFRSID8gbV9wYWdlLT5i
YWNrRm9yd2FyZCgpLmdvRm9yd2FyZCgpIDogbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvQmFjaygp
OwogCiAgICAgcmV0dXJuIGRpZFBlcmZvcm1BY3Rpb247CiB9CkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDIxMTYpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAxNi0wNi0x
NSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEZvcndhcmQvQmFjayBr
ZXlib2FyZCBzaG9ydGN1dHMgbmVlZCB0byBmbGlwIGZvciBSVEwKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODgyMworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjU5NzUzNTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIHRlc3RzIGZvciBmbGlwcGluZyB0aGUgYmVoYXZpb3Igb2YgY29tbWFuZC1s
ZWZ0IGFuZCBjb21tYW5kLXJpZ2h0CisgICAgICAgIHVuZGVyIFJUTCBtb2RlLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQ29tbWFuZEJhY2tG
b3J3YXJkLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bQ29tbWFuZEJhY2tGb3J3YXJkT2Zmc2NyZWVu
V2luZG93IGlzS2V5V2luZG93XSk6CisgICAgICAgICgtW0NvbW1hbmRCYWNrRm9yd2FyZE9mZnNj
cmVlbldpbmRvdyBpc1Zpc2libGVdKToKKyAgICAgICAgKHNpbXVsYXRlQ29tbWFuZEFycm93KToK
KyAgICAgICAgKFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdDo6U2V0VXApOgorICAgICAg
ICAoV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0V0tWaWV3OjpkaWRGaW5pc2hMb2FkRm9y
RnJhbWUpOgorICAgICAgICAoV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0V0tWaWV3OjpT
ZXRVcCk6CisgICAgICAgIChXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXc6Omxv
YWRGaWxlcyk6CisgICAgICAgICgtW0NvbW1hbmRCYWNrRm9yd2FyZE5hdmlnYXRpb25EZWxlZ2F0
ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAgICAgIChXZWJLaXQyX0NvbW1h
bmRCYWNrRm9yd2FyZFRlc3RXS1dlYlZpZXc6OlNldFVwKToKKyAgICAgICAgKFdlYktpdDJfQ29t
bWFuZEJhY2tGb3J3YXJkVGVzdFdLV2ViVmlldzo6bG9hZEZpbGVzKToKKwogMjAxNi0wNi0xMyAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdL
Ml0gTWFrZSBpdCBwb3NzaWJsZSB0byB0ZXN0IHRoZSBOZXh0L1ByZXZpb3VzIGJ1dHRvbnMgaW4g
dGhlIGtleWJvYXJkIGFjY2Vzc29yeSBiYXIKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAyMDIxMTMpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsNyBAQAog
CQk3QTE0NThGQzFBRDVDMDcwMDBFMDY3NzIgLyogbW91c2UtYnV0dG9uLWxpc3RlbmVyLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Ex
NDU4RkIxQUQ1QzAzNTAwRTA2NzcyIC8qIG1vdXNlLWJ1dHRvbi1saXN0ZW5lci5odG1sICovOyB9
OwogCQk3QUU5RTUwOTFBRTVBRThCMDBDRjg3NEIgLyogdGVzdC5wZGYgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FFOUU1MDgxQUU1QUU4QjAw
Q0Y4NzRCIC8qIHRlc3QucGRmICovOyB9OwogCQk3QzM5NjUwNjFDREQ3NEY5MDA5NERCQjggLyog
Q29sb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0MzOTY1MDUxQ0RENzRGOTAwOTREQkI4IC8qIENvbG9yLmNwcCAqLzsgfTsKKwkJN0MzREI4RTQx
RDEyMTI5QjAwQUU4Q0MzIC8qIENvbW1hbmRCYWNrRm9yd2FyZC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0RCOEUyMUQxMjEyOUIwMEFFOENDMyAv
KiBDb21tYW5kQmFja0ZvcndhcmQubW0gKi87IH07CiAJCTdDNDg2QkExMUFBMTI1NjcwMDNGNkY5
QiAvKiBidW5kbGUtZmlsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDNDg2QkEwMUFBMTI1NEIwMDNGNkY5QiAvKiBidW5kbGUtZmls
ZS5odG1sICovOyB9OwogCQk3QzU0QTRCRTFBQTExQ0NBMDAzODBGNzggLyogV0tCdW5kbGVGaWxl
SGFuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDNTRBNEJDMUFBMTFDQ0EwMDM4MEY3OCAvKiBXS0J1bmRsZUZpbGVIYW5kbGUuY3BwICovOyB9
OwogCQk3QzU0QTRDMTFBQTExQ0U0MDAzODBGNzggLyogV0tCdW5kbGVGaWxlSGFuZGxlX0J1bmRs
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzU0
QTRCRjFBQTExQ0U0MDAzODBGNzggLyogV0tCdW5kbGVGaWxlSGFuZGxlX0J1bmRsZS5jcHAgKi87
IH07CkBAIC03NDgsNiArNzQ5LDcgQEAKIAkJN0FBNkExNTExQUFDMEIzMTAwMkIyRUQzIC8qIFdv
cmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrUXVl
dWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUU5RTUwODFBRTVBRThCMDBD
Rjg3NEIgLyogdGVzdC5wZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBpbWFnZS5wZGY7IHBhdGggPSB0ZXN0LnBkZjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0MzOTY1MDUxQ0RENzRGOTAwOTREQkI4IC8qIENvbG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0MzREI4RTIxRDEyMTI5QjAwQUU4Q0MzIC8qIENvbW1hbmRCYWNrRm9y
d2FyZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbW1hbmRC
YWNrRm9yd2FyZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0ODZCQTAxQUEx
MjU0QjAwM0Y2RjlCIC8qIGJ1bmRsZS1maWxlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYnVuZGxlLWZpbGUu
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNTRBNEJDMUFBMTFDQ0EwMDM4
MEY3OCAvKiBXS0J1bmRsZUZpbGVIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0tCdW5kbGVGaWxlSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0M1NEE0QkYxQUExMUNFNDAwMzgwRjc4IC8qIFdLQnVuZGxlRmlsZUhhbmRsZV9C
dW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5kbGVG
aWxlSGFuZGxlX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTMx
LDYgKzExMzMsNyBAQAogCQkJCUExM0VCQkFFMUI4NzQzNkYwMDA5NzExMCAvKiBCdW5kbGVQYXJh
bWV0ZXJzUGx1Z0luLm1tICovLAogCQkJCTFDMkI4MTdFMUM4OTFFNDIwMEE1NTI5RiAvKiBDYW5j
ZWxGb250U3VicmVzb3VyY2UubW0gKi8sCiAJCQkJMUMyQjgxODExQzg5MUVGQTAwQTU1MjlGIC8q
IENhbmNlbEZvbnRTdWJyZXNvdXJjZVBsdWdJbi5tbSAqLywKKwkJCQk3QzNEQjhFMjFEMTIxMjlC
MDBBRThDQzMgLyogQ29tbWFuZEJhY2tGb3J3YXJkLm1tICovLAogCQkJCUExOEFBOENDMUMzRkEy
MTgwMDlCMkI5NyAvKiBDb250ZW50RmlsdGVyaW5nLmggKi8sCiAJCQkJQTE0RkM1ODYxQjg5OTFC
NjAwRDEwN0VCIC8qIENvbnRlbnRGaWx0ZXJpbmcubW0gKi8sCiAJCQkJQTE0RkM1ODkxQjg5OTI3
MTAwRDEwN0VCIC8qIENvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0gKi8sCkBAIC0yMTQ1LDYgKzIx
NDgsNyBAQAogCQkJCTdDODgyRTBBMUM4MEM3NjQwMDZCRjczMSAvKiBVc2VyQ29udGVudFdvcmxk
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMjcxQTQxMUFGNjAwNDQ3QzRDIC8qIFVzZXJD
b250ZW50Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDRGMUQwQTY0MTgw
MEZFQkNGMyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDM0RCOEU0MUQx
MjEyOUIwMEFFOENDMyAvKiBDb21tYW5kQmFja0ZvcndhcmQubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0NFN0YyRDFBNDExQjEwMDA0NDdDNEMgLyogVXNlckNvbnRlbnRUZXN0Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0NDRTdGMTcxQTQxMUFFNjAwNDQ3QzRDIC8qIFVzZXJNZWRpYS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QzgzRTBDNDFEMEE2NTQyMDBGRUJDRjMgLyogUmVxdWlyZXNVc2Vy
QWN0aW9uRm9yUGxheWJhY2subW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0NvbW1hbmRCYWNrRm9yd2FyZC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Db21tYW5kQmFja0Zv
cndhcmQubW0JKHJldmlzaW9uIDApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJDb2NvYS9Db21tYW5kQmFja0ZvcndhcmQubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
MDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JNKE1B
QykKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNp
bXBvcnQgPENhcmJvbi9DYXJib24uaD4gLy8gZm9yIEdldEN1cnJlbnRFdmVudFRpbWUoKQorI2lt
cG9ydCA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tWaWV3UHJpdmF0
ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitAaW50ZXJmYWNlIENvbW1hbmRCYWNr
Rm9yd2FyZE9mZnNjcmVlbldpbmRvdyA6IE5TV2luZG93CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBDb21tYW5kQmFja0ZvcndhcmRPZmZzY3JlZW5XaW5kb3cKKy0gKEJPT0wpaXNLZXlXaW5kb3cK
K3sKKyAgICByZXR1cm4gWUVTOworfQorLSAoQk9PTClpc1Zpc2libGUKK3sKKyAgICByZXR1cm4g
WUVTOworfQorQGVuZAorCitlbnVtIEFycm93RGlyZWN0aW9uIHsKKyAgICBMZWZ0LAorICAgIFJp
Z2h0Cit9OworCitzdGF0aWMgdm9pZCBzaW11bGF0ZUNvbW1hbmRBcnJvdyhOU1ZpZXcgKnZpZXcs
IEFycm93RGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBjb25zdCB1bmljaGFyIHJpZ2h0ID0g
TlNSaWdodEFycm93RnVuY3Rpb25LZXk7CisgICAgY29uc3QgdW5pY2hhciBsZWZ0ID0gTlNMZWZ0
QXJyb3dGdW5jdGlvbktleTsKKworICAgIE5TU3RyaW5nICpldmVudENoYXJhY3RlciA9IChkaXJl
Y3Rpb24gPT0gTGVmdCkgPyBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmxlZnQgbGVu
Z3RoOjFdIDogW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZyaWdodCBsZW5ndGg6MV07
CisgICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZSA9IChkaXJlY3Rpb24gPT0gTGVmdCkgPyAweDdC
IDogMHg3QzsKKworICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRXaXRoVHlw
ZTpOU0tleURvd24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRp
b246TlNNYWtlUG9pbnQoNSwgNSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1v
ZGlmaWVyRmxhZ3M6TlNDb21tYW5kS2V5TWFzaworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVzdGFtcDpHZXRDdXJyZW50RXZlbnRUaW1lKCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3aW5kb3dOdW1iZXI6W3ZpZXcud2luZG93IHdpbmRvd051bWJl
cl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3Jh
cGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgIGNo
YXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpldmVudENoYXJhY3RlcgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXTsKKworICAgIFt2aWV3IGtleURvd246
ZXZlbnRdOworCisgICAgZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TS2V5VXAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6TlNDb21tYW5kS2V5TWFzawor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpHZXRDdXJyZW50RXZlbnRUaW1l
KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dOdW1iZXI6W3ZpZXcud2luZG93IHdp
bmRvd051bWJlcl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3Jh
cGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhcmFjdGVyczpldmVudENoYXJhY3RlcgorICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVyczpldmVudENoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQVJl
cGVhdDpOTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXTsK
KworICAgIFt2aWV3IGtleVVwOmV2ZW50XTsKK30KKworY2xhc3MgV2ViS2l0Ml9Db21tYW5kQmFj
a0ZvcndhcmRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIFJldGFp
blB0cjxOU1dpbmRvdz4gd2luZG93OworCisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKKyAgICB7
CisgICAgICAgIE5TV2luZG93ICp3aW5kb3cgPSBbW0NvbW1hbmRCYWNrRm9yd2FyZE9mZnNjcmVl
bldpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU01ha2VSZWN0KDAsIDAsIDEwMCwg
MTAwKSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0
b3JlQnVmZmVyZWQgZGVmZXI6WUVTXTsKKyAgICAgICAgW3dpbmRvdyBzZXRDb2xvclNwYWNlOltb
TlNTY3JlZW4gbWFpblNjcmVlbl0gY29sb3JTcGFjZV1dOworICAgICAgICBbd2luZG93IG9yZGVy
QmFjazpuaWxdOworICAgICAgICBbd2luZG93IHNldEF1dG9kaXNwbGF5Ok5PXTsKKyAgICAgICAg
W3dpbmRvdyBzZXRSZWxlYXNlZFdoZW5DbG9zZWQ6Tk9dOworICAgIH0KK307CisKK3N0YXRpYyBi
b29sIGRpZEZpbmlzaE5hdmlnYXRpb247CisKK2NsYXNzIFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3
YXJkVGVzdFdLVmlldyA6IHB1YmxpYyBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3Qgewor
cHVibGljOgorICAgIFJldGFpblB0cjxXS1ZpZXc+IHdlYlZpZXc7CisgICAgV0tSZXRhaW5QdHI8
V0tVUkxSZWY+IGZpbGUxOworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBmaWxlMjsKKworICAg
IHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYs
IFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKKyAgICB7CisgICAgICAgIGRpZEZp
bmlzaE5hdmlnYXRpb24gPSB0cnVlOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgp
CisgICAgeworICAgICAgICBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3Q6OlNldFVwKCk7
CisKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhX
S0NvbnRleHRDcmVhdGUoKSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRp
b25SZWY+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdFdLKFdLUGFnZUNvbmZpZ3VyYXRpb25DcmVhdGUo
KSk7ICAgICAgICAKKyAgICAgICAgV0tQYWdlQ29uZmlndXJhdGlvblNldENvbnRleHQoY29uZmln
dXJhdGlvbi5nZXQoKSwgY29udGV4dC5nZXQoKSk7CisKKyAgICAgICAgd2ViVmlldyA9IFtbV0tW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZp
Z3VyYXRpb25SZWY6Y29uZmlndXJhdGlvbi5nZXQoKV07CisKKyAgICAgICAgV0tQYWdlTG9hZGVy
Q2xpZW50VjYgbG9hZGVyQ2xpZW50OworICAgICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwg
c2l6ZW9mKGxvYWRlckNsaWVudCkpOworCisgICAgICAgIGxvYWRlckNsaWVudC5iYXNlLnZlcnNp
b24gPSA2OworICAgICAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlk
RmluaXNoTG9hZEZvckZyYW1lOworCisgICAgICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQo
W3dlYlZpZXcgcGFnZVJlZl0sICZsb2FkZXJDbGllbnQuYmFzZSk7CisgICAgICAgIAorICAgICAg
ICBmaWxlMSA9IGFkb3B0V0soVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3Vy
Y2UoInNpbXBsZSIsICJodG1sIikpOworICAgICAgICBmaWxlMiA9IGFkb3B0V0soVGVzdFdlYktp
dEFQSTo6VXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZTIiLCAiaHRtbCIpKTsKKwor
ICAgIH0KKworICAgIHZvaWQgbG9hZEZpbGVzKCkKKyAgICB7CisgICAgICAgIFdLUGFnZUxvYWRG
aWxlKFt3ZWJWaWV3IHBhZ2VSZWZdLCBmaWxlMS5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAgICAgIGRp
ZEZpbmlzaE5hdmlnYXRpb24gPSBmYWxzZTsKKworICAgICAgICBXS1BhZ2VMb2FkRmlsZShbd2Vi
VmlldyBwYWdlUmVmXSwgZmlsZTIuZ2V0KCksIG51bGxwdHIpOworICAgICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOworICAgICAgICBkaWRGaW5pc2hO
YXZpZ2F0aW9uID0gZmFsc2U7CisgICAgfQorfTsKKworI2lmIFdLX0FQSV9FTkFCTEVECisKK0Bp
bnRlcmZhY2UgQ29tbWFuZEJhY2tGb3J3YXJkTmF2aWdhdGlvbkRlbGVnYXRlIDogTlNPYmplY3Qg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gQ29tbWFuZEJh
Y2tGb3J3YXJkTmF2aWdhdGlvbkRlbGVnYXRlCisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9u
Cit7CisgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IHRydWU7Cit9CisKK0BlbmQKKworCitjbGFz
cyBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1dlYlZpZXcgOiBwdWJsaWMgV2ViS2l0
Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0IHsKK3B1YmxpYzoKKyAgICBSZXRhaW5QdHI8V0tXZWJW
aWV3PiB3ZWJWaWV3OworCisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKKyAgICB7CisgICAgICAg
IFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdDo6U2V0VXAoKTsKKworICAgICAgICB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDEwMCwgMTAwKV0pOworICAgICAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vi
dmlldzp3ZWJWaWV3LmdldCgpXTsKKworICAgICAgICBDb21tYW5kQmFja0ZvcndhcmROYXZpZ2F0
aW9uRGVsZWdhdGUgKmRlbGVnYXRlID0gW1tDb21tYW5kQmFja0ZvcndhcmROYXZpZ2F0aW9uRGVs
ZWdhdGUgYWxsb2NdIGluaXRdOworICAgICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdh
dGU6ZGVsZWdhdGVdOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRGaWxlcygpCisgICAgewor
ICAgICAgICBOU1VSTCAqZmlsZTEgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZEZpbGVVUkw6ZmlsZTEg
YWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6ZmlsZTFdOworCisgICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAgICAgIGRpZEZpbmlzaE5hdmln
YXRpb24gPSBmYWxzZTsKKworICAgICAgICBOU1VSTCAqZmlsZTIgPSBbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgICAgIFt3ZWJWaWV3
IGxvYWRGaWxlVVJMOmZpbGUyIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOmZpbGUyXTsKKworICAg
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOworICAg
ICAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgfQorfTsKKworVEVTVF9GKFdl
YktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLV2ViVmlldywgTFRSKQoreworICAgIEVYUEVD
VF9FUShOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCwgW3dlYlZpZXcg
dXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbl0pOworICAgIAorICAgIGxvYWRGaWxlcygpOwor
CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IFVSTF0ucGF0aC5sYXN0UGF0aENvbXBvbmVu
dCwgQCJzaW1wbGUyLmh0bWwiKTsKKworICAgIC8vIEF0dGVtcHQgdG8gZ28gYmFjayAodXNpbmcg
Y29tbWFuZC1sZWZ0KS4KKyAgICBzaW11bGF0ZUNvbW1hbmRBcnJvdyh3ZWJWaWV3LmdldCgpLCBM
ZWZ0KTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24p
OworICAgIGRpZEZpbmlzaE5hdmlnYXRpb24gPSBmYWxzZTsKKworICAgIEVYUEVDVF9XS19TVFJF
UShbd2ViVmlldyBVUkxdLnBhdGgubGFzdFBhdGhDb21wb25lbnQsIEAic2ltcGxlLmh0bWwiKTsK
KworICAgIC8vIEF0dGVtcHQgdG8gZ28gYmFjayAodXNpbmcgY29tbWFuZC1yaWdodCkuCisgICAg
c2ltdWxhdGVDb21tYW5kQXJyb3cod2ViVmlldy5nZXQoKSwgUmlnaHQpOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAgZGlkRmluaXNoTmF2
aWdhdGlvbiA9IGZhbHNlOworCisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IFVSTF0ucGF0
aC5sYXN0UGF0aENvbXBvbmVudCwgQCJzaW1wbGUyLmh0bWwiKTsKK30KKworVEVTVF9GKFdlYktp
dDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLV2ViVmlldywgUlRMKQoreworICAgIC8vIE92ZXJy
aWRlIHRoZSBsYXlvdXQgZGlyZWN0aW9uIHRvIGJlIFJUTC4KKyAgICBbd2ViVmlldyBzZXRVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOk5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJp
Z2h0VG9MZWZ0XTsKKyAgICAKKyAgICBsb2FkRmlsZXMoKTsKKworICAgIEVYUEVDVF9XS19TVFJF
UShbd2ViVmlldyBVUkxdLnBhdGgubGFzdFBhdGhDb21wb25lbnQsIEAic2ltcGxlMi5odG1sIik7
CisKKyAgICAvLyBBdHRlbXB0IHRvIGdvIGJhY2sgKHVzaW5nIGNvbW1hbmQtcmlnaHQpCisgICAg
c2ltdWxhdGVDb21tYW5kQXJyb3cod2ViVmlldy5nZXQoKSwgUmlnaHQpOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAgZGlkRmluaXNoTmF2
aWdhdGlvbiA9IGZhbHNlOworCisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IFVSTF0ucGF0
aC5sYXN0UGF0aENvbXBvbmVudCwgQCJzaW1wbGUuaHRtbCIpOworCisgICAgLy8gQXR0ZW1wdCB0
byBnbyBiYWNrICh1c2luZyBjb21tYW5kLWxlZnQpLgorICAgIHNpbXVsYXRlQ29tbWFuZEFycm93
KHdlYlZpZXcuZ2V0KCksIExlZnQpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlk
RmluaXNoTmF2aWdhdGlvbik7CisgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZhbHNlOworCisg
ICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IFVSTF0ucGF0aC5sYXN0UGF0aENvbXBvbmVudCwg
QCJzaW1wbGUyLmh0bWwiKTsKK30KKworI2VuZGlmCisKK1RFU1RfRihXZWJLaXQyX0NvbW1hbmRC
YWNrRm9yd2FyZFRlc3RXS1ZpZXcsIExUUikKK3sKKyAgICBFWFBFQ1RfRVEoTlNVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQsIFt3ZWJWaWV3IHVzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb25dKTsKKyAgICAKKyAgICBsb2FkRmlsZXMoKTsKKworICAgIGF1dG8gY3VycmVu
dFVSTCA9IGFkb3B0V0soV0tQYWdlQ29weUFjdGl2ZVVSTChbd2ViVmlldyBwYWdlUmVmXSkpOwor
ICAgIEVYUEVDVF9UUlVFKFdLVVJMSXNFcXVhbChmaWxlMi5nZXQoKSwgY3VycmVudFVSTC5nZXQo
KSkpOworCisgICAgLy8gQXR0ZW1wdCB0byBnbyBiYWNrICh1c2luZyBjb21tYW5kLWxlZnQpLgor
ICAgIHNpbXVsYXRlQ29tbWFuZEFycm93KHdlYlZpZXcuZ2V0KCksIExlZnQpOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAgZGlkRmluaXNo
TmF2aWdhdGlvbiA9IGZhbHNlOworCisgICAgYXV0byBjdXJyZW50VVJMMiA9IGFkb3B0V0soV0tQ
YWdlQ29weUFjdGl2ZVVSTChbd2ViVmlldyBwYWdlUmVmXSkpOworICAgIEVYUEVDVF9UUlVFKFdL
VVJMSXNFcXVhbChmaWxlMS5nZXQoKSwgY3VycmVudFVSTDIuZ2V0KCkpKTsKKworICAgIC8vIEF0
dGVtcHQgdG8gZ28gYmFjayAodXNpbmcgY29tbWFuZC1yaWdodCkuCisgICAgc2ltdWxhdGVDb21t
YW5kQXJyb3cod2ViVmlldy5nZXQoKSwgUmlnaHQpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZh
bHNlOworCisgICAgYXV0byBjdXJyZW50VVJMMyA9IGFkb3B0V0soV0tQYWdlQ29weUFjdGl2ZVVS
TChbd2ViVmlldyBwYWdlUmVmXSkpOworICAgIEVYUEVDVF9UUlVFKFdLVVJMSXNFcXVhbChmaWxl
Mi5nZXQoKSwgY3VycmVudFVSTDMuZ2V0KCkpKTsKK30KKworVEVTVF9GKFdlYktpdDJfQ29tbWFu
ZEJhY2tGb3J3YXJkVGVzdFdLVmlldywgUlRMKQoreworICAgIC8vIE92ZXJyaWRlIHRoZSBsYXlv
dXQgZGlyZWN0aW9uIHRvIGJlIFJUTC4KKyAgICBbd2ViVmlldyBzZXRVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uOk5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsK
KyAgICAKKyAgICBsb2FkRmlsZXMoKTsKKworICAgIGF1dG8gY3VycmVudFVSTCA9IGFkb3B0V0so
V0tQYWdlQ29weUFjdGl2ZVVSTChbd2ViVmlldyBwYWdlUmVmXSkpOworICAgIEVYUEVDVF9UUlVF
KFdLVVJMSXNFcXVhbChmaWxlMi5nZXQoKSwgY3VycmVudFVSTC5nZXQoKSkpOworCisgICAgLy8g
QXR0ZW1wdCB0byBnbyBiYWNrICh1c2luZyBjb21tYW5kLXJpZ2h0KQorICAgIHNpbXVsYXRlQ29t
bWFuZEFycm93KHdlYlZpZXcuZ2V0KCksIFJpZ2h0KTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOworICAgIGRpZEZpbmlzaE5hdmlnYXRpb24gPSBm
YWxzZTsKKworICAgIGF1dG8gY3VycmVudFVSTDIgPSBhZG9wdFdLKFdLUGFnZUNvcHlBY3RpdmVV
UkwoW3dlYlZpZXcgcGFnZVJlZl0pKTsKKyAgICBFWFBFQ1RfVFJVRShXS1VSTElzRXF1YWwoZmls
ZTEuZ2V0KCksIGN1cnJlbnRVUkwyLmdldCgpKSk7CisKKyAgICAvLyBBdHRlbXB0IHRvIGdvIGJh
Y2sgKHVzaW5nIGNvbW1hbmQtbGVmdCkuCisgICAgc2ltdWxhdGVDb21tYW5kQXJyb3cod2ViVmll
dy5nZXQoKSwgTGVmdCk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRGaW5pc2hO
YXZpZ2F0aW9uKTsKKyAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0gZmFsc2U7CisKKyAgICBhdXRv
IGN1cnJlbnRVUkwzID0gYWRvcHRXSyhXS1BhZ2VDb3B5QWN0aXZlVVJMKFt3ZWJWaWV3IHBhZ2VS
ZWZdKSk7CisgICAgRVhQRUNUX1RSVUUoV0tVUkxJc0VxdWFsKGZpbGUyLmdldCgpLCBjdXJyZW50
VVJMMy5nZXQoKSkpOworfQorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281462</attachid>
            <date>2016-06-16 09:36:23 -0700</date>
            <delta_ts>2016-06-16 09:37:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158823-20160616093621.patch</filename>
            <type>text/plain</type>
            <size>30812</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMjEwOSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE2LTA2LTE1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRm9yd2FyZC9CYWNrIGtleWJvYXJkIHNo
b3J0Y3V0cyBuZWVkIHRvIGZsaXAgZm9yIFJUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4ODIzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNTk3
NTM1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
aXBlIHRoZSBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIGRvd24gdG8gdGhlIFdlYkNvbnRl
bnRQcm9jZXNzIG9uIGluaXRpYWxpemF0aW9uCisgICAgICAgIGFuZCB3aGVuIGl0IGNoYW5nZXMs
IGFuZCB1c2UgaXQgdG8gZmxpcCB0aGUgYmVoYXZpb3Igb2YgY29tbWFuZC1sZWZ0IGFuZCBjb21t
YW5kLXJpZ2h0CisgICAgICAgIHdoZW4gaW4gUlRMIG1vZGUuCisKKyAgICAgICAgVGVzdHM6Cisg
ICAgICAgICAgICBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXcuTFRSCisgICAg
ICAgICAgICBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXcuUlRMCisgICAgICAg
ICAgICBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1dlYlZpZXcuTFRSCisgICAgICAg
ICAgICBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1dlYlZpZXcuUlRMCisKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF93ZWJWaWV3UHJpbnRGb3JtYXR0
ZXJdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldFNlbWFudGljQ29udGVudEF0dHJpYnV0ZTpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9wcmludE9wZXJhdGlvbldpdGhQcmludEluZm86Zm9y
RnJhbWU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAg
ICAgKC1bV0tWaWV3IHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2luZG93
SXNGcm9udFdpbmRvd1VuZGVyTW91c2UpOgorICAgICAgICAoV2ViS2l0Ojp0b1VzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpz
ZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBh
cmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYXNIYWRTZWxlY3Rpb25DaGFu
Z2VzRnJvbVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jb21tb25Jbml0aWFsaXphdGlv
bldpdGhQcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV91c2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0UmVzb3VyY2VDYWNo
aW5nRGlzYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6bV9zaG91bGREaXNwYXRjaEZha2VN
b3VzZU1vdmVFdmVudHMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtTm9uRWRpdGluZ0JlaGF2aW9yRm9yU2VsZWN0
b3IpOgorCiAyMDE2LTA2LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgRHJvcCBzb21lIHVubmVjZXNzYXJ5IGhlYWRlciBpbmNsdWRlcwpJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAko
cmV2aXNpb24gMjAyMTA5KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBAIHZvaWQgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEkKICNlbmRpZgogICAgIGVuY29kZXIgPDwg
YXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IHNob3VsZFNj
YWxlVmlld1RvRml0RG9jdW1lbnQ7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24pOwogfQogCiBib29sIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6
OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTE5NCw2ICsxOTUsOSBAQCBib29sIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM6OmRlY29kZShJCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShwYXJhbWV0ZXJzLnVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMDIxMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbmZvLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVl
Q29udGV4dC5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgorI2luY2x1ZGUgIlVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXBEYXRhLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5j
ZXNTdG9yZS5oIgpAQCAtMTMzLDYgKzEzNCw4IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzIHsKICNlbmRpZgogICAgIGJvb2wgYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxl
ZDsKICAgICBib29sIHNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQ7CisKKyAgICBVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb247CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMDIxMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI3NCw2ICs1Mjc0LDcg
QEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OgogICAgIHBhcmFtZXRl
cnMuYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZCA9IGZhbHNlOwogI2VuZGlmCiAgICAg
cGFyYW1ldGVycy5zaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50ID0gbV9zaG91bGRTY2FsZVZp
ZXdUb0ZpdERvY3VtZW50OworICAgIHBhcmFtZXRlcnMudXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbiA9IG1fcGFnZUNsaWVudC51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CiAKICAg
ICByZXR1cm4gcGFyYW1ldGVyczsKIH0KQEAgLTYzMTEsNCArNjMxMiwxMiBAQCBVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uIFdlYlBhZ2VQcm94CiAgICAgcmV0dXJuIG1fcGFnZUNsaWVudC51
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24gdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90Pih1
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKSksIG1fcGFnZUlEKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CShyZXZpc2lvbiAyMDIxMDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMTIsNiArMTExMiw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGJvb2wpOwogCiAgICAgVXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvbiB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CisgICAgdm9p
ZCBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb24pOwogCiAgICAgYm9vbCBoYXNIYWRTZWxlY3Rpb25DaGFuZ2VzRnJvbVVzZXJJbnRlcmFj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzSGFkU2VsZWN0aW9uQ2hhbmdlc0Zyb21Vc2VySW50
ZXJhY3Rpb247IH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDIwMjEwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Mjk4LDYg
KzQyOTgsMjcgQEAgLSAoX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyICopX3dlYlZpZXdQcgogICAg
IHJldHVybiAoX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyICopdmlld1ByaW50Rm9ybWF0dGVyOwog
fQogCitzdGF0aWMgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB0b1VzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24oVUlTZW1hbnRpY0NvbnRlbnRBdHRyaWJ1dGUgY29udGVudEF0dHJpYnV0
ZSkKK3sKKyAgICBhdXRvIGRpcmVjdGlvbiA9IFtVSVZpZXcgdXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbkZvclNlbWFudGljQ29udGVudEF0dHJpYnV0ZTpjb250ZW50QXR0cmlidXRlXTsKKyAg
ICBzd2l0Y2ggKGRpcmVjdGlvbikgeworICAgIGNhc2UgVUlVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uTGVmdFRvUmlnaHQ6CisgICAgICAgIHJldHVybiBVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uOjpMVFI7CisgICAgY2FzZSBVSVVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdo
dFRvTGVmdDoKKyAgICAgICAgcmV0dXJuIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OlJU
TDsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gVXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbjo6TFRSOworfQorCistICh2b2lkKXNldFNlbWFudGljQ29u
dGVudEF0dHJpYnV0ZTooVUlTZW1hbnRpY0NvbnRlbnRBdHRyaWJ1dGUpY29udGVudEF0dHJpYnV0
ZQoreworICAgIFtzdXBlciBzZXRTZW1hbnRpY0NvbnRlbnRBdHRyaWJ1dGU6Y29udGVudEF0dHJp
YnV0ZV0KKworICAgIF9wYWdlLT5zZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHRvVXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbihjb250ZW50QXR0cmlidXRlKSk7Cit9CisKICNlbHNl
IC8vICNpZiBQTEFURk9STShJT1MpCiAKICNwcmFnbWEgbWFyayAtIE9TIFgtc3BlY2lmaWMgbWV0
aG9kcwpAQCAtNDQxNCw2ICs0NDM1LDEzIEBAIC0gKE5TUHJpbnRPcGVyYXRpb24gKilfcHJpbnRP
cGVyYXRpb25XaXQKICAgICByZXR1cm4gbmlsOwogfQogCistICh2b2lkKXNldFVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb246KE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbil1c2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uCit7CisgICAgW3N1cGVyIHNldFVzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb246dXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbl07CisKKyAgICBfaW1wbC0+
c2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbih1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uKTsKK30KKwogI2VuZGlmCiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcubW0JKHJldmlzaW9uIDIwMjEwOSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQzNSw2ICsx
NDM1LDEzIEBAIC0gKEJPT0wpX2F1dG9tYXRpY2FsbHlBZGp1c3RzQ29udGVudEluc2UKICAgICBy
ZXR1cm4gX2RhdGEtPl9pbXBsLT5hdXRvbWF0aWNhbGx5QWRqdXN0c0NvbnRlbnRJbnNldHMoKTsK
IH0KIAorLSAodm9pZClzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOihOU1VzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24pdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbgoreworICAg
IFtzdXBlciBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOnVzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb25dOworCisgICAgX2RhdGEtPl9pbXBsLT5zZXRVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uKHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pOworfQorCiBAZW5kCiAKICNp
ZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
MjAwICYmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gMjAyMTA5KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDYgKzI5LDcgQEAKICNpZiBQTEFURk9STShNQUMpCiAKICNpbmNsdWRlICJQbHVnaW5Db21w
bGV4VGV4dElucHV0U3RhdGUuaCIKKyNpbmNsdWRlICJVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uLmgiCiAjaW5jbHVkZSAiV0tMYXlvdXRNb2RlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
LmgiCiAjaW5jbHVkZSAiX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlLmgiCkBAIC00ODUsNiArNDg2
LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVxdWlyZXNVc2VyQWN0aW9uRm9yRWRpdGluZ0Nv
bnRyb2xzTWFuYWdlcihib29sIHJlcXVpcmVzVXNlckFjdGlvbkZvckVkaXRpbmdDb250cm9sc01h
bmFnZXIpIHsgbV9yZXF1aXJlc1VzZXJBY3Rpb25Gb3JFZGl0aW5nQ29udHJvbHNNYW5hZ2VyID0g
cmVxdWlyZXNVc2VyQWN0aW9uRm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlcjsgfQogICAgIGJvb2wg
cmVxdWlyZXNVc2VyQWN0aW9uRm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlcigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVxdWlyZXNVc2VyQWN0aW9uRm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlcjsgfQogCisg
ICAgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uKCk7CisgICAgdm9pZCBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKE5TVXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbik7CisKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTIwMCAKICAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKE5TVGV4
dENoZWNraW5nUmVzdWx0ICphY2NlcHRlZENhbmRpZGF0ZSk7CiAjaWYgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW0JKHJldmlzaW9uIDIwMjEwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAyOSw3ICs0MDI5LDI5IEBA
IGJvb2wgV2ViVmlld0ltcGw6OndpbmRvd0lzRnJvbnRXaW5kb3dVbmQKICAgICByZXR1cm4gbV92
aWV3LndpbmRvdy53aW5kb3dOdW1iZXIgIT0gZXZlbnRXaW5kb3dOdW1iZXI7CiB9CiAKLSAgICAK
K3N0YXRpYyBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHRvVXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbihOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gZGlyZWN0aW9uKQorewor
ICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgY2FzZSBOU1VzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb25MZWZ0VG9SaWdodDoKKyAgICAgICAgcmV0dXJuIFVzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb246OkxUUjsKKyAgICBjYXNlIE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJp
Z2h0VG9MZWZ0OgorICAgICAgICByZXR1cm4gVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6
UlRMOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOjpMVFI7Cit9CisKK1VzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb24gV2ViVmlld0ltcGw6OnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKQorewor
ICAgIHJldHVybiB0b1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24obV92aWV3LnVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24pOworfQorCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBkaXJl
Y3Rpb24pCit7CisgICAgbV9wYWdlLT5zZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHRv
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihkaXJlY3Rpb24pKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMDIxMDkp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM3Nyw2ICszNzcsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBh
Z2VJRCwgY29uc3QgCiAjZW5kaWYKICAgICAsIG1fbWFpbkZyYW1lUHJvZ3Jlc3NDb21wbGV0ZWQo
ZmFsc2UpCiAgICAgLCBtX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyh0cnVlKQor
ICAgICwgbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHBhcmFtZXRlcnMudXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbikKIHsKICAgICBBU1NFUlQobV9wYWdlSUQpOwogCkBAIC01MzY4
LDQgKzUzNjksOSBAQCB2b2lkIFdlYlBhZ2U6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkCiAg
ICAgbV9wYWdlLT5zZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChkaXNhYmxlZCk7CiB9CiAKK3Zv
aWQgV2ViUGFnZTo6c2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbih1aW50MzJfdCBkaXJl
Y3Rpb24pCit7CisgICAgbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID0gc3RhdGljX2Nh
c3Q8VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbj4oZGlyZWN0aW9uKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIwMjEwOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYlBhZ2Vf
aAotI2RlZmluZSBXZWJQYWdlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJSW5qZWN0
ZWRCdW5kbGVGb3JtQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29u
dGV4dE1lbnVDbGllbnQuaCIKQEAgLTQ4LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJTYW5kYm94RXh0
ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiVXNlckRh
dGEuaCIKKyNpbmNsdWRlICJVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGljdGlvbmFyeVBv
cHVwSW5mby5oPgpAQCAtMTE5OSw2ICsxMTk5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAg
dm9pZCBzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChib29sKTsKKyAgICB2b2lkIHNldFVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24odWludDMyX3QpOwogCiAgICAgdWludDY0X3QgbV9wYWdl
SUQ7CiAKQEAgLTE0NjgsOCArMTQ2OSw5IEBAIHByaXZhdGU6CiAjaWYgVVNFKE9TX1NUQVRFKQog
ICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbV9sb2FkQ29tbWl0VGlt
ZTsKICNlbmRpZgorCisgICAgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBtX3VzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24geyBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOjpMVFIg
fTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gV2ViUGFnZV9oCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjAyMTA5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQyOCw0
ICs0MjgsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgog
CiAgICAgU2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKKworICAgIFNl
dFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9uKQogfQpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQkocmV2aXNpb24gMjAyMTA5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NTEsMTMgKzU1MSwx
MyBAQCBib29sIFdlYlBhZ2U6OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGCiAgICAgZWxzZSBp
ZiAoc2VsZWN0b3IgPT0gIm1vdmVXb3JkTGVmdDoiKQogICAgICAgICBkaWRQZXJmb3JtQWN0aW9u
ID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlQYWdlKTsKICAgICBl
bHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVRvTGVmdEVuZE9mTGluZToiKQotICAgICAgICBkaWRQ
ZXJmb3JtQWN0aW9uID0gbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvQmFjaygpOworICAgICAgICBk
aWRQZXJmb3JtQWN0aW9uID0gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID09IFVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiA/IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5nb0Jh
Y2soKSA6IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5nb0ZvcndhcmQoKTsKICAgICBlbHNlIGlmIChz
ZWxlY3RvciA9PSAibW92ZVJpZ2h0OiIpCiAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3Jv
bGwobV9wYWdlLmdldCgpLCBTY3JvbGxSaWdodCwgU2Nyb2xsQnlMaW5lKTsKICAgICBlbHNlIGlm
IChzZWxlY3RvciA9PSAibW92ZVdvcmRSaWdodDoiKQogICAgICAgICBkaWRQZXJmb3JtQWN0aW9u
ID0gc2Nyb2xsKG1fcGFnZS5nZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5UGFnZSk7CiAgICAg
ZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1vdmVUb1JpZ2h0RW5kT2ZMaW5lOiIpCi0gICAgICAgIGRp
ZFBlcmZvcm1BY3Rpb24gPSBtX3BhZ2UtPmJhY2tGb3J3YXJkKCkuZ29Gb3J3YXJkKCk7CisgICAg
ICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBtX3VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gPT0g
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6TFRSID8gbV9wYWdlLT5iYWNrRm9yd2FyZCgp
LmdvRm9yd2FyZCgpIDogbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvQmFjaygpOwogCiAgICAgcmV0
dXJuIGRpZFBlcmZvcm1BY3Rpb247CiB9CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDIxMTYpCisrKyBUb29scy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAxNi0wNi0xNSAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIEZvcndhcmQvQmFjayBrZXlib2FyZCBzaG9y
dGN1dHMgbmVlZCB0byBmbGlwIGZvciBSVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1ODgyMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjU5NzUz
NTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IHRlc3RzIGZvciBmbGlwcGluZyB0aGUgYmVoYXZpb3Igb2YgY29tbWFuZC1sZWZ0IGFuZCBjb21t
YW5kLXJpZ2h0CisgICAgICAgIHVuZGVyIFJUTCBtb2RlLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQ29tbWFuZEJhY2tGb3J3YXJkLm1tOiBB
ZGRlZC4KKyAgICAgICAgKC1bQ29tbWFuZEJhY2tGb3J3YXJkT2Zmc2NyZWVuV2luZG93IGlzS2V5
V2luZG93XSk6CisgICAgICAgICgtW0NvbW1hbmRCYWNrRm9yd2FyZE9mZnNjcmVlbldpbmRvdyBp
c1Zpc2libGVdKToKKyAgICAgICAgKHNpbXVsYXRlQ29tbWFuZEFycm93KToKKyAgICAgICAgKFdl
YktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdDo6U2V0VXApOgorICAgICAgICAoV2ViS2l0Ml9D
b21tYW5kQmFja0ZvcndhcmRUZXN0V0tWaWV3OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0V0tWaWV3OjpTZXRVcCk6CisgICAg
ICAgIChXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXc6OmxvYWRGaWxlcyk6Cisg
ICAgICAgICgtW0NvbW1hbmRCYWNrRm9yd2FyZE5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRp
ZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAgICAgIChXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2Fy
ZFRlc3RXS1dlYlZpZXc6OlNldFVwKToKKyAgICAgICAgKFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3
YXJkVGVzdFdLV2ViVmlldzo6bG9hZEZpbGVzKToKKwogMjAxNi0wNi0xMyAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdLMl0gTWFrZSBpdCBw
b3NzaWJsZSB0byB0ZXN0IHRoZSBOZXh0L1ByZXZpb3VzIGJ1dHRvbnMgaW4gdGhlIGtleWJvYXJk
IGFjY2Vzc29yeSBiYXIKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDIx
MTMpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsNyBAQAogCQk3QTE0NThGQzFB
RDVDMDcwMDBFMDY3NzIgLyogbW91c2UtYnV0dG9uLWxpc3RlbmVyLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0ExNDU4RkIxQUQ1QzAz
NTAwRTA2NzcyIC8qIG1vdXNlLWJ1dHRvbi1saXN0ZW5lci5odG1sICovOyB9OwogCQk3QUU5RTUw
OTFBRTVBRThCMDBDRjg3NEIgLyogdGVzdC5wZGYgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FFOUU1MDgxQUU1QUU4QjAwQ0Y4NzRCIC8qIHRl
c3QucGRmICovOyB9OwogCQk3QzM5NjUwNjFDREQ3NEY5MDA5NERCQjggLyogQ29sb3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOTY1MDUxQ0RE
NzRGOTAwOTREQkI4IC8qIENvbG9yLmNwcCAqLzsgfTsKKwkJN0MzREI4RTQxRDEyMTI5QjAwQUU4
Q0MzIC8qIENvbW1hbmRCYWNrRm9yd2FyZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0RCOEUyMUQxMjEyOUIwMEFFOENDMyAvKiBDb21tYW5kQmFj
a0ZvcndhcmQubW0gKi87IH07CiAJCTdDNDg2QkExMUFBMTI1NjcwMDNGNkY5QiAvKiBidW5kbGUt
ZmlsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDNDg2QkEwMUFBMTI1NEIwMDNGNkY5QiAvKiBidW5kbGUtZmlsZS5odG1sICovOyB9
OwogCQk3QzU0QTRCRTFBQTExQ0NBMDAzODBGNzggLyogV0tCdW5kbGVGaWxlSGFuZGxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTRBNEJDMUFB
MTFDQ0EwMDM4MEY3OCAvKiBXS0J1bmRsZUZpbGVIYW5kbGUuY3BwICovOyB9OwogCQk3QzU0QTRD
MTFBQTExQ0U0MDAzODBGNzggLyogV0tCdW5kbGVGaWxlSGFuZGxlX0J1bmRsZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzU0QTRCRjFBQTExQ0U0
MDAzODBGNzggLyogV0tCdW5kbGVGaWxlSGFuZGxlX0J1bmRsZS5jcHAgKi87IH07CkBAIC03NDgs
NiArNzQ5LDcgQEAKIAkJN0FBNkExNTExQUFDMEIzMTAwMkIyRUQzIC8qIFdvcmtRdWV1ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrUXVldWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUU5RTUwODFBRTVBRThCMDBDRjg3NEIgLyogdGVz
dC5wZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBp
bWFnZS5wZGY7IHBhdGggPSB0ZXN0LnBkZjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0MzOTY1MDUxQ0RENzRGOTAwOTREQkI4IC8qIENvbG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0MzREI4RTIxRDEyMTI5QjAwQUU4Q0MzIC8qIENvbW1hbmRCYWNrRm9yd2FyZC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbW1hbmRCYWNrRm9yd2FyZC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0ODZCQTAxQUExMjU0QjAwM0Y2RjlC
IC8qIGJ1bmRsZS1maWxlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYnVuZGxlLWZpbGUuaHRtbCI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNTRBNEJDMUFBMTFDQ0EwMDM4MEY3OCAvKiBXS0J1
bmRsZUZpbGVIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tCdW5kbGVGaWxlSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M1
NEE0QkYxQUExMUNFNDAwMzgwRjc4IC8qIFdLQnVuZGxlRmlsZUhhbmRsZV9CdW5kbGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5kbGVGaWxlSGFuZGxlX0J1
bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTMxLDYgKzExMzMsNyBA
QAogCQkJCUExM0VCQkFFMUI4NzQzNkYwMDA5NzExMCAvKiBCdW5kbGVQYXJhbWV0ZXJzUGx1Z0lu
Lm1tICovLAogCQkJCTFDMkI4MTdFMUM4OTFFNDIwMEE1NTI5RiAvKiBDYW5jZWxGb250U3VicmVz
b3VyY2UubW0gKi8sCiAJCQkJMUMyQjgxODExQzg5MUVGQTAwQTU1MjlGIC8qIENhbmNlbEZvbnRT
dWJyZXNvdXJjZVBsdWdJbi5tbSAqLywKKwkJCQk3QzNEQjhFMjFEMTIxMjlCMDBBRThDQzMgLyog
Q29tbWFuZEJhY2tGb3J3YXJkLm1tICovLAogCQkJCUExOEFBOENDMUMzRkEyMTgwMDlCMkI5NyAv
KiBDb250ZW50RmlsdGVyaW5nLmggKi8sCiAJCQkJQTE0RkM1ODYxQjg5OTFCNjAwRDEwN0VCIC8q
IENvbnRlbnRGaWx0ZXJpbmcubW0gKi8sCiAJCQkJQTE0RkM1ODkxQjg5OTI3MTAwRDEwN0VCIC8q
IENvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0gKi8sCkBAIC0yMTQ1LDYgKzIxNDgsNyBAQAogCQkJ
CTdDODgyRTBBMUM4MEM3NjQwMDZCRjczMSAvKiBVc2VyQ29udGVudFdvcmxkLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0NDRTdGMjcxQTQxMUFGNjAwNDQ3QzRDIC8qIFVzZXJDb250ZW50Q29udHJv
bGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDRGMUQwQTY0MTgwMEZFQkNGMyAvKiBG
aWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDM0RCOEU0MUQxMjEyOUIwMEFFOEND
MyAvKiBDb21tYW5kQmFja0ZvcndhcmQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyRDFB
NDExQjEwMDA0NDdDNEMgLyogVXNlckNvbnRlbnRUZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NDRTdGMTcxQTQxMUFFNjAwNDQ3QzRDIC8qIFVzZXJNZWRpYS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QzgzRTBDNDFEMEE2NTQyMDBGRUJDRjMgLyogUmVxdWlyZXNVc2VyQWN0aW9uRm9yUGxh
eWJhY2subW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0MkNvY29hL0NvbW1hbmRCYWNrRm9yd2FyZC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Db21tYW5kQmFja0ZvcndhcmQubW0JKHJl
dmlzaW9uIDApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Db21t
YW5kQmFja0ZvcndhcmQubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKKworI2ltcG9y
dCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgPENhcmJv
bi9DYXJib24uaD4gLy8gZm9yIEdldEN1cnJlbnRFdmVudFRpbWUoKQorI2ltcG9ydCA8V2ViS2l0
L1dLUmV0YWluUHRyLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tWaWV3UHJpdmF0ZS5oPgorI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgorCitAaW50ZXJmYWNlIENvbW1hbmRCYWNrRm9yd2FyZE9mZnNj
cmVlbldpbmRvdyA6IE5TV2luZG93CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBDb21tYW5kQmFj
a0ZvcndhcmRPZmZzY3JlZW5XaW5kb3cKKy0gKEJPT0wpaXNLZXlXaW5kb3cKK3sKKyAgICByZXR1
cm4gWUVTOworfQorLSAoQk9PTClpc1Zpc2libGUKK3sKKyAgICByZXR1cm4gWUVTOworfQorQGVu
ZAorCitlbnVtIEFycm93RGlyZWN0aW9uIHsKKyAgICBMZWZ0LAorICAgIFJpZ2h0Cit9OworCitz
dGF0aWMgdm9pZCBzaW11bGF0ZUNvbW1hbmRBcnJvdyhOU1ZpZXcgKnZpZXcsIEFycm93RGlyZWN0
aW9uIGRpcmVjdGlvbikKK3sKKyAgICBjb25zdCB1bmljaGFyIHJpZ2h0ID0gTlNSaWdodEFycm93
RnVuY3Rpb25LZXk7CisgICAgY29uc3QgdW5pY2hhciBsZWZ0ID0gTlNMZWZ0QXJyb3dGdW5jdGlv
bktleTsKKworICAgIE5TU3RyaW5nICpldmVudENoYXJhY3RlciA9IChkaXJlY3Rpb24gPT0gTGVm
dCkgPyBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmxlZnQgbGVuZ3RoOjFdIDogW05T
U3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZyaWdodCBsZW5ndGg6MV07CisgICAgdW5zaWdu
ZWQgc2hvcnQga2V5Q29kZSA9IChkaXJlY3Rpb24gPT0gTGVmdCkgPyAweDdCIDogMHg3QzsKKwor
ICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0tleURvd24K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246TlNNYWtlUG9p
bnQoNSwgNSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6
TlNDb21tYW5kS2V5TWFzaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRp
bWVzdGFtcDpHZXRDdXJyZW50RXZlbnRUaW1lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aW5kb3dOdW1iZXI6W3ZpZXcud2luZG93IHdpbmRvd051bWJlcl0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0
IGN1cnJlbnRDb250ZXh0XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
cmFjdGVyczpldmVudENoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVyczpldmVudENoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAga2V5Q29kZTprZXlDb2RlXTsKKworICAgIFt2aWV3IGtleURvd246ZXZlbnRdOworCisg
ICAgZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TS2V5VXAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6TlNDb21tYW5kS2V5TWFzaworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpHZXRDdXJyZW50RXZlbnRUaW1lKCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICB3aW5kb3dOdW1iZXI6W3ZpZXcud2luZG93IHdpbmRvd051bWJlcl0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0
IGN1cnJlbnRDb250ZXh0XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyczpl
dmVudENoYXJhY3RlcgorICAgICAgICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpldmVu
dENoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQVJlcGVhdDpOTworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXTsKKworICAgIFt2aWV3
IGtleVVwOmV2ZW50XTsKK30KKworY2xhc3MgV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIFJldGFpblB0cjxOU1dpbmRv
dz4gd2luZG93OworCisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKKyAgICB7CisgICAgICAgIE5T
V2luZG93ICp3aW5kb3cgPSBbW0NvbW1hbmRCYWNrRm9yd2FyZE9mZnNjcmVlbldpbmRvdyBhbGxv
Y10gaW5pdFdpdGhDb250ZW50UmVjdDpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBzdHlsZU1h
c2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQg
ZGVmZXI6WUVTXTsKKyAgICAgICAgW3dpbmRvdyBzZXRDb2xvclNwYWNlOltbTlNTY3JlZW4gbWFp
blNjcmVlbl0gY29sb3JTcGFjZV1dOworICAgICAgICBbd2luZG93IG9yZGVyQmFjazpuaWxdOwor
ICAgICAgICBbd2luZG93IHNldEF1dG9kaXNwbGF5Ok5PXTsKKyAgICAgICAgW3dpbmRvdyBzZXRS
ZWxlYXNlZFdoZW5DbG9zZWQ6Tk9dOworICAgIH0KK307CisKK3N0YXRpYyBib29sIGRpZEZpbmlz
aE5hdmlnYXRpb247CisKK2NsYXNzIFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLVmll
dyA6IHB1YmxpYyBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3QgeworcHVibGljOgorICAg
IFJldGFpblB0cjxXS1ZpZXc+IHdlYlZpZXc7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGZp
bGUxOworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBmaWxlMjsKKworICAgIHN0YXRpYyB2b2lk
IGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKKyAgICB7CisgICAgICAgIGRpZEZpbmlzaE5hdmlnYXRp
b24gPSB0cnVlOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCisgICAgeworICAg
ICAgICBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3Q6OlNldFVwKCk7CisKKyAgICAgICAg
V0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhXS0NvbnRleHRDcmVh
dGUoKSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IGNvbmZp
Z3VyYXRpb24gPSBhZG9wdFdLKFdLUGFnZUNvbmZpZ3VyYXRpb25DcmVhdGUoKSk7ICAgICAgICAK
KyAgICAgICAgV0tQYWdlQ29uZmlndXJhdGlvblNldENvbnRleHQoY29uZmlndXJhdGlvbi5nZXQo
KSwgY29udGV4dC5nZXQoKSk7CisKKyAgICAgICAgd2ViVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb25SZWY6
Y29uZmlndXJhdGlvbi5nZXQoKV07CisKKyAgICAgICAgV0tQYWdlTG9hZGVyQ2xpZW50VjYgbG9h
ZGVyQ2xpZW50OworICAgICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRl
ckNsaWVudCkpOworCisgICAgICAgIGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSA2OworICAg
ICAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZv
ckZyYW1lOworCisgICAgICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoW3dlYlZpZXcgcGFn
ZVJlZl0sICZsb2FkZXJDbGllbnQuYmFzZSk7CisgICAgICAgIAorICAgICAgICBmaWxlMSA9IGFk
b3B0V0soVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIs
ICJodG1sIikpOworICAgICAgICBmaWxlMiA9IGFkb3B0V0soVGVzdFdlYktpdEFQSTo6VXRpbDo6
Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZTIiLCAiaHRtbCIpKTsKKworICAgIH0KKworICAg
IHZvaWQgbG9hZEZpbGVzKCkKKyAgICB7CisgICAgICAgIFdLUGFnZUxvYWRGaWxlKFt3ZWJWaWV3
IHBhZ2VSZWZdLCBmaWxlMS5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAgICAgIGRpZEZpbmlzaE5hdmln
YXRpb24gPSBmYWxzZTsKKworICAgICAgICBXS1BhZ2VMb2FkRmlsZShbd2ViVmlldyBwYWdlUmVm
XSwgZmlsZTIuZ2V0KCksIG51bGxwdHIpOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOworICAgICAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0g
ZmFsc2U7CisgICAgfQorfTsKKworI2lmIFdLX0FQSV9FTkFCTEVECisKK0BpbnRlcmZhY2UgQ29t
bWFuZEJhY2tGb3J3YXJkTmF2aWdhdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlv
bkRlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gQ29tbWFuZEJhY2tGb3J3YXJkTmF2
aWdhdGlvbkRlbGVnYXRlCisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
aWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCit7CisgICAgZGlk
RmluaXNoTmF2aWdhdGlvbiA9IHRydWU7Cit9CisKK0BlbmQKKworCitjbGFzcyBXZWJLaXQyX0Nv
bW1hbmRCYWNrRm9yd2FyZFRlc3RXS1dlYlZpZXcgOiBwdWJsaWMgV2ViS2l0Ml9Db21tYW5kQmFj
a0ZvcndhcmRUZXN0IHsKK3B1YmxpYzoKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3
OworCisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKKyAgICB7CisgICAgICAgIFdlYktpdDJfQ29t
bWFuZEJhY2tGb3J3YXJkVGVzdDo6U2V0VXAoKTsKKworICAgICAgICB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwg
MTAwKV0pOworICAgICAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3
LmdldCgpXTsKKworICAgICAgICBDb21tYW5kQmFja0ZvcndhcmROYXZpZ2F0aW9uRGVsZWdhdGUg
KmRlbGVnYXRlID0gW1tDb21tYW5kQmFja0ZvcndhcmROYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2Nd
IGluaXRdOworICAgICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGVd
OworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRGaWxlcygpCisgICAgeworICAgICAgICBOU1VS
TCAqZmlsZTEgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxl
IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZEZpbGVVUkw6ZmlsZTEgYWxsb3dpbmdSZWFk
QWNjZXNzVG9VUkw6ZmlsZTFdOworCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAgICAgIGRpZEZpbmlzaE5hdmlnYXRpb24gPSBmYWxz
ZTsKKworICAgICAgICBOU1VSTCAqZmlsZTIgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgICAgIFt3ZWJWaWV3IGxvYWRGaWxlVVJM
OmZpbGUyIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOmZpbGUyXTsKKworICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOworICAgICAgICBkaWRGaW5p
c2hOYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgfQorfTsKKworVEVTVF9GKFdlYktpdDJfQ29tbWFu
ZEJhY2tGb3J3YXJkVGVzdFdLV2ViVmlldywgTFRSKQoreworICAgIEVYUEVDVF9FUShOU1VzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCwgW3dlYlZpZXcgdXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvbl0pOworICAgIAorICAgIGxvYWRGaWxlcygpOworCisgICAgRVhQRUNU
X1dLX1NUUkVRKFt3ZWJWaWV3IFVSTF0ucGF0aC5sYXN0UGF0aENvbXBvbmVudCwgQCJzaW1wbGUy
Lmh0bWwiKTsKKworICAgIC8vIEF0dGVtcHQgdG8gZ28gYmFjayAodXNpbmcgY29tbWFuZC1sZWZ0
KS4KKyAgICBzaW11bGF0ZUNvbW1hbmRBcnJvdyh3ZWJWaWV3LmdldCgpLCBMZWZ0KTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOworICAgIGRpZEZp
bmlzaE5hdmlnYXRpb24gPSBmYWxzZTsKKworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBV
UkxdLnBhdGgubGFzdFBhdGhDb21wb25lbnQsIEAic2ltcGxlLmh0bWwiKTsKKworICAgIC8vIEF0
dGVtcHQgdG8gZ28gYmFjayAodXNpbmcgY29tbWFuZC1yaWdodCkuCisgICAgc2ltdWxhdGVDb21t
YW5kQXJyb3cod2ViVmlldy5nZXQoKSwgUmlnaHQpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZh
bHNlOworCisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IFVSTF0ucGF0aC5sYXN0UGF0aENv
bXBvbmVudCwgQCJzaW1wbGUyLmh0bWwiKTsKK30KKworVEVTVF9GKFdlYktpdDJfQ29tbWFuZEJh
Y2tGb3J3YXJkVGVzdFdLV2ViVmlldywgUlRMKQoreworICAgIC8vIE92ZXJyaWRlIHRoZSBsYXlv
dXQgZGlyZWN0aW9uIHRvIGJlIFJUTC4KKyAgICBbd2ViVmlldyBzZXRVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uOk5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsK
KyAgICAKKyAgICBsb2FkRmlsZXMoKTsKKworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBV
UkxdLnBhdGgubGFzdFBhdGhDb21wb25lbnQsIEAic2ltcGxlMi5odG1sIik7CisKKyAgICAvLyBB
dHRlbXB0IHRvIGdvIGJhY2sgKHVzaW5nIGNvbW1hbmQtcmlnaHQpCisgICAgc2ltdWxhdGVDb21t
YW5kQXJyb3cod2ViVmlldy5nZXQoKSwgUmlnaHQpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZh
bHNlOworCisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IFVSTF0ucGF0aC5sYXN0UGF0aENv
bXBvbmVudCwgQCJzaW1wbGUuaHRtbCIpOworCisgICAgLy8gQXR0ZW1wdCB0byBnbyBiYWNrICh1
c2luZyBjb21tYW5kLWxlZnQpLgorICAgIHNpbXVsYXRlQ29tbWFuZEFycm93KHdlYlZpZXcuZ2V0
KCksIExlZnQpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdh
dGlvbik7CisgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZhbHNlOworCisgICAgRVhQRUNUX1dL
X1NUUkVRKFt3ZWJWaWV3IFVSTF0ucGF0aC5sYXN0UGF0aENvbXBvbmVudCwgQCJzaW1wbGUyLmh0
bWwiKTsKK30KKworI2VuZGlmCisKK1RFU1RfRihXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRl
c3RXS1ZpZXcsIExUUikKK3sKKyAgICBFWFBFQ1RfRVEoTlNVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uTGVmdFRvUmlnaHQsIFt3ZWJWaWV3IHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25d
KTsKKyAgICAKKyAgICBsb2FkRmlsZXMoKTsKKworICAgIGF1dG8gY3VycmVudFVSTCA9IGFkb3B0
V0soV0tQYWdlQ29weUFjdGl2ZVVSTChbd2ViVmlldyBwYWdlUmVmXSkpOworICAgIEVYUEVDVF9U
UlVFKFdLVVJMSXNFcXVhbChmaWxlMi5nZXQoKSwgY3VycmVudFVSTC5nZXQoKSkpOworCisgICAg
Ly8gQXR0ZW1wdCB0byBnbyBiYWNrICh1c2luZyBjb21tYW5kLWxlZnQpLgorICAgIHNpbXVsYXRl
Q29tbWFuZEFycm93KHdlYlZpZXcuZ2V0KCksIExlZnQpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9
IGZhbHNlOworCisgICAgYXV0byBjdXJyZW50VVJMMiA9IGFkb3B0V0soV0tQYWdlQ29weUFjdGl2
ZVVSTChbd2ViVmlldyBwYWdlUmVmXSkpOworICAgIEVYUEVDVF9UUlVFKFdLVVJMSXNFcXVhbChm
aWxlMS5nZXQoKSwgY3VycmVudFVSTDIuZ2V0KCkpKTsKKworICAgIC8vIEF0dGVtcHQgdG8gZ28g
YmFjayAodXNpbmcgY29tbWFuZC1yaWdodCkuCisgICAgc2ltdWxhdGVDb21tYW5kQXJyb3cod2Vi
Vmlldy5nZXQoKSwgUmlnaHQpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkRmlu
aXNoTmF2aWdhdGlvbik7CisgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZhbHNlOworCisgICAg
YXV0byBjdXJyZW50VVJMMyA9IGFkb3B0V0soV0tQYWdlQ29weUFjdGl2ZVVSTChbd2ViVmlldyBw
YWdlUmVmXSkpOworICAgIEVYUEVDVF9UUlVFKFdLVVJMSXNFcXVhbChmaWxlMi5nZXQoKSwgY3Vy
cmVudFVSTDMuZ2V0KCkpKTsKK30KKworVEVTVF9GKFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJk
VGVzdFdLVmlldywgUlRMKQoreworICAgIC8vIE92ZXJyaWRlIHRoZSBsYXlvdXQgZGlyZWN0aW9u
IHRvIGJlIFJUTC4KKyAgICBbd2ViVmlldyBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
Ok5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKKyAgICAKKyAgICBs
b2FkRmlsZXMoKTsKKworICAgIGF1dG8gY3VycmVudFVSTCA9IGFkb3B0V0soV0tQYWdlQ29weUFj
dGl2ZVVSTChbd2ViVmlldyBwYWdlUmVmXSkpOworICAgIEVYUEVDVF9UUlVFKFdLVVJMSXNFcXVh
bChmaWxlMi5nZXQoKSwgY3VycmVudFVSTC5nZXQoKSkpOworCisgICAgLy8gQXR0ZW1wdCB0byBn
byBiYWNrICh1c2luZyBjb21tYW5kLXJpZ2h0KQorICAgIHNpbXVsYXRlQ29tbWFuZEFycm93KHdl
YlZpZXcuZ2V0KCksIFJpZ2h0KTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEZp
bmlzaE5hdmlnYXRpb24pOworICAgIGRpZEZpbmlzaE5hdmlnYXRpb24gPSBmYWxzZTsKKworICAg
IGF1dG8gY3VycmVudFVSTDIgPSBhZG9wdFdLKFdLUGFnZUNvcHlBY3RpdmVVUkwoW3dlYlZpZXcg
cGFnZVJlZl0pKTsKKyAgICBFWFBFQ1RfVFJVRShXS1VSTElzRXF1YWwoZmlsZTEuZ2V0KCksIGN1
cnJlbnRVUkwyLmdldCgpKSk7CisKKyAgICAvLyBBdHRlbXB0IHRvIGdvIGJhY2sgKHVzaW5nIGNv
bW1hbmQtbGVmdCkuCisgICAgc2ltdWxhdGVDb21tYW5kQXJyb3cod2ViVmlldy5nZXQoKSwgTGVm
dCk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZpZ2F0aW9uKTsK
KyAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0gZmFsc2U7CisKKyAgICBhdXRvIGN1cnJlbnRVUkwz
ID0gYWRvcHRXSyhXS1BhZ2VDb3B5QWN0aXZlVVJMKFt3ZWJWaWV3IHBhZ2VSZWZdKSk7CisgICAg
RVhQRUNUX1RSVUUoV0tVUkxJc0VxdWFsKGZpbGUyLmdldCgpLCBjdXJyZW50VVJMMy5nZXQoKSkp
OworfQorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281463</attachid>
            <date>2016-06-16 09:37:24 -0700</date>
            <delta_ts>2016-06-16 09:43:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158823-20160616093723.patch</filename>
            <type>text/plain</type>
            <size>30830</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMjEyNikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE2LTA2LTE1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRm9yd2FyZC9CYWNrIGtleWJvYXJkIHNo
b3J0Y3V0cyBuZWVkIHRvIGZsaXAgZm9yIFJUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4ODIzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNTk3
NTM1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
aXBlIHRoZSBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIGRvd24gdG8gdGhlIFdlYkNvbnRl
bnRQcm9jZXNzIG9uIGluaXRpYWxpemF0aW9uCisgICAgICAgIGFuZCB3aGVuIGl0IGNoYW5nZXMs
IGFuZCB1c2UgaXQgdG8gZmxpcCB0aGUgYmVoYXZpb3Igb2YgY29tbWFuZC1sZWZ0IGFuZCBjb21t
YW5kLXJpZ2h0CisgICAgICAgIHdoZW4gaW4gUlRMIG1vZGUuCisKKyAgICAgICAgVGVzdHM6Cisg
ICAgICAgICAgICBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXcuTFRSCisgICAg
ICAgICAgICBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXcuUlRMCisgICAgICAg
ICAgICBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1dlYlZpZXcuTFRSCisgICAgICAg
ICAgICBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1dlYlZpZXcuUlRMCisKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF93ZWJWaWV3UHJpbnRGb3JtYXR0
ZXJdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldFNlbWFudGljQ29udGVudEF0dHJpYnV0ZTpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9wcmludE9wZXJhdGlvbldpdGhQcmludEluZm86Zm9y
RnJhbWU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAg
ICAgKC1bV0tWaWV3IHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2luZG93
SXNGcm9udFdpbmRvd1VuZGVyTW91c2UpOgorICAgICAgICAoV2ViS2l0Ojp0b1VzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpz
ZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBh
cmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYXNIYWRTZWxlY3Rpb25DaGFu
Z2VzRnJvbVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jb21tb25Jbml0aWFsaXphdGlv
bldpdGhQcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV91c2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0UmVzb3VyY2VDYWNo
aW5nRGlzYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6bV9zaG91bGREaXNwYXRjaEZha2VN
b3VzZU1vdmVFdmVudHMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtTm9uRWRpdGluZ0JlaGF2aW9yRm9yU2VsZWN0
b3IpOgorCiAyMDE2LTA2LTE1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgogCiAgICAgICAgIEV4cG9zZSBfc2hvdWxkRXhwYW5kQ29udGVudFRvVmlld0hlaWdodEZvckF1
dG9MYXlvdXQgU1BJIG9uIFdLV2ViVmlldwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjAyMTI2KQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVyczo6ZW5jb2RlKEkKICNlbmRpZgogICAgIGVuY29kZXIgPDwgYXBwbGVNYWlsUGFnaW5hdGlv
blF1aXJrRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IHNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1l
bnQ7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24p
OwogfQogCiBib29sIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkFyZ3Vt
ZW50RGVjb2RlciYgZGVjb2RlciwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKQEAgLTE5NCw2ICsxOTUsOSBAQCBib29sIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kZShJCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFNjYWxlVmll
d1RvRml0RG9jdW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlRW51bShwYXJhbWV0ZXJzLnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCShy
ZXZpc2lvbiAyMDIxMjYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
RHJhd2luZ0FyZWFJbmZvLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2luY2x1
ZGUgIlNlc3Npb25TdGF0ZS5oIgorI2luY2x1ZGUgIlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQ
YWdlR3JvdXBEYXRhLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgpAQCAtMTMz
LDYgKzEzNCw4IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNlbmRpZgog
ICAgIGJvb2wgYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZDsKICAgICBib29sIHNob3Vs
ZFNjYWxlVmlld1RvRml0RG9jdW1lbnQ7CisKKyAgICBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uIHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShy
ZXZpc2lvbiAyMDIxMjYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI3NCw2ICs1Mjc0LDcgQEAgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OgogICAgIHBhcmFtZXRlcnMuYXBwbGVNYWlsUGFnaW5h
dGlvblF1aXJrRW5hYmxlZCA9IGZhbHNlOwogI2VuZGlmCiAgICAgcGFyYW1ldGVycy5zaG91bGRT
Y2FsZVZpZXdUb0ZpdERvY3VtZW50ID0gbV9zaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50Owor
ICAgIHBhcmFtZXRlcnMudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiA9IG1fcGFnZUNsaWVu
dC51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CiAKICAgICByZXR1cm4gcGFyYW1ldGVy
czsKIH0KQEAgLTYzMTEsNCArNjMxMiwxMiBAQCBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
IFdlYlBhZ2VQcm94CiAgICAgcmV0dXJuIG1fcGFnZUNsaWVudC51c2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uKFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gdXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbikKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90Pih1c2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uKSksIG1fcGFnZUlEKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMDIxMjYp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExMTIsNiArMTExMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlc291cmNlQ2Fj
aGluZ0Rpc2FibGVkKGJvb2wpOwogCiAgICAgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB1
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CisgICAgdm9pZCBzZXRVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uKFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pOwogCiAgICAgYm9v
bCBoYXNIYWRTZWxlY3Rpb25DaGFuZ2VzRnJvbVVzZXJJbnRlcmFjdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1faGFzSGFkU2VsZWN0aW9uQ2hhbmdlc0Zyb21Vc2VySW50ZXJhY3Rpb247IH0KIApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0J
KHJldmlzaW9uIDIwMjEyNikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Mjk4LDYgKzQyOTgsMjcgQEAgLSAoX1dL
V2ViVmlld1ByaW50Rm9ybWF0dGVyICopX3dlYlZpZXdQcgogICAgIHJldHVybiAoX1dLV2ViVmll
d1ByaW50Rm9ybWF0dGVyICopdmlld1ByaW50Rm9ybWF0dGVyOwogfQogCitzdGF0aWMgVXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbiB0b1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oVUlT
ZW1hbnRpY0NvbnRlbnRBdHRyaWJ1dGUgY29udGVudEF0dHJpYnV0ZSkKK3sKKyAgICBhdXRvIGRp
cmVjdGlvbiA9IFtVSVZpZXcgdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkZvclNlbWFudGlj
Q29udGVudEF0dHJpYnV0ZTpjb250ZW50QXR0cmlidXRlXTsKKyAgICBzd2l0Y2ggKGRpcmVjdGlv
bikgeworICAgIGNhc2UgVUlVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQ6
CisgICAgICAgIHJldHVybiBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOjpMVFI7CisgICAg
Y2FzZSBVSVVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdodFRvTGVmdDoKKyAgICAgICAg
cmV0dXJuIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OlJUTDsKKyAgICB9CisKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbjo6TFRSOworfQorCistICh2b2lkKXNldFNlbWFudGljQ29udGVudEF0dHJpYnV0ZTooVUlT
ZW1hbnRpY0NvbnRlbnRBdHRyaWJ1dGUpY29udGVudEF0dHJpYnV0ZQoreworICAgIFtzdXBlciBz
ZXRTZW1hbnRpY0NvbnRlbnRBdHRyaWJ1dGU6Y29udGVudEF0dHJpYnV0ZV0KKworICAgIF9wYWdl
LT5zZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHRvVXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbihjb250ZW50QXR0cmlidXRlKSk7Cit9CisKICNlbHNlIC8vICNpZiBQTEFURk9STShJ
T1MpCiAKICNwcmFnbWEgbWFyayAtIE9TIFgtc3BlY2lmaWMgbWV0aG9kcwpAQCAtNDQyNCw2ICs0
NDQ1LDEzIEBAIC0gKE5TUHJpbnRPcGVyYXRpb24gKilfcHJpbnRPcGVyYXRpb25XaXQKICAgICBy
ZXR1cm4gbmlsOwogfQogCistICh2b2lkKXNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246
KE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbil1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uCit7CisgICAgW3N1cGVyIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbl07CisKKyAgICBfaW1wbC0+c2V0VXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbih1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKTsKK30KKwogI2VuZGlm
CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW0JKHJldmlzaW9uIDIwMjEyNikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQzNSw2ICsxNDM1LDEzIEBAIC0gKEJPT0wp
X2F1dG9tYXRpY2FsbHlBZGp1c3RzQ29udGVudEluc2UKICAgICByZXR1cm4gX2RhdGEtPl9pbXBs
LT5hdXRvbWF0aWNhbGx5QWRqdXN0c0NvbnRlbnRJbnNldHMoKTsKIH0KIAorLSAodm9pZClzZXRV
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOihOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24pdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbgoreworICAgIFtzdXBlciBzZXRVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25dOworCisg
ICAgX2RhdGEtPl9pbXBsLT5zZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24pOworfQorCiBAZW5kCiAKICNpZiBQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwICYmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaAkocmV2aXNpb24gMjAyMTI2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNp
ZiBQTEFURk9STShNQUMpCiAKICNpbmNsdWRlICJQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUu
aCIKKyNpbmNsdWRlICJVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAi
V0tMYXlvdXRNb2RlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiX1dL
T3ZlcmxheVNjcm9sbGJhclN0eWxlLmgiCkBAIC00ODUsNiArNDg2LDkgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0UmVxdWlyZXNVc2VyQWN0aW9uRm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlcihib29s
IHJlcXVpcmVzVXNlckFjdGlvbkZvckVkaXRpbmdDb250cm9sc01hbmFnZXIpIHsgbV9yZXF1aXJl
c1VzZXJBY3Rpb25Gb3JFZGl0aW5nQ29udHJvbHNNYW5hZ2VyID0gcmVxdWlyZXNVc2VyQWN0aW9u
Rm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlcjsgfQogICAgIGJvb2wgcmVxdWlyZXNVc2VyQWN0aW9u
Rm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZXNVc2Vy
QWN0aW9uRm9yRWRpdGluZ0NvbnRyb2xzTWFuYWdlcjsgfQogCisgICAgVXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbiB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CisgICAgdm9pZCBz
ZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKE5TVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbik7CisKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCAK
ICAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKE5TVGV4dENoZWNraW5nUmVzdWx0ICph
Y2NlcHRlZENhbmRpZGF0ZSk7CiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHJldmlzaW9u
IDIwMjEyNikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDAyOSw3ICs0MDI5LDI5IEBAIGJvb2wgV2ViVmlld0ltcGw6
OndpbmRvd0lzRnJvbnRXaW5kb3dVbmQKICAgICByZXR1cm4gbV92aWV3LndpbmRvdy53aW5kb3dO
dW1iZXIgIT0gZXZlbnRXaW5kb3dOdW1iZXI7CiB9CiAKLSAgICAKK3N0YXRpYyBVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uIHRvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihOU1VzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIHN3aXRjaCAoZGlyZWN0
aW9uKSB7CisgICAgY2FzZSBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdo
dDoKKyAgICAgICAgcmV0dXJuIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUjsKKyAg
ICBjYXNlIE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0OgorICAgICAg
ICByZXR1cm4gVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6UlRMOworICAgIH0KKworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uOjpMVFI7Cit9CisKK1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gV2ViVmlld0lt
cGw6OnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKQoreworICAgIHJldHVybiB0b1VzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24obV92aWV3LnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24pOworfQorCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uKE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgbV9w
YWdlLT5zZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHRvVXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbihkaXJlY3Rpb24pKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMDIxMjYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Nyw2
ICszNzcsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAjZW5k
aWYKICAgICAsIG1fbWFpbkZyYW1lUHJvZ3Jlc3NDb21wbGV0ZWQoZmFsc2UpCiAgICAgLCBtX3No
b3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyh0cnVlKQorICAgICwgbV91c2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uKHBhcmFtZXRlcnMudXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bikKIHsKICAgICBBU1NFUlQobV9wYWdlSUQpOwogCkBAIC01MzY4LDQgKzUzNjksOSBAQCB2b2lk
IFdlYlBhZ2U6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkCiAgICAgbV9wYWdlLT5zZXRSZXNv
dXJjZUNhY2hpbmdEaXNhYmxlZChkaXNhYmxlZCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2V0VXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24pCit7CisgICAgbV91
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8VXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbj4oZGlyZWN0aW9uKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlz
aW9uIDIwMjEyNikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYlBhZ2VfaAotI2RlZmluZSBXZWJQYWdl
X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50
LmgiCiAjaW5jbHVkZSAiQVBJSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIK
QEAgLTQ4LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKKyNpbmNsdWRlICJV
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5h
dGl2ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGljdGlvbmFyeVBvcHVwSW5mby5oPgpAQCAtMTE5
OSw2ICsxMTk5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUNh
Y2hpbmdEaXNhYmxlZChib29sKTsKKyAgICB2b2lkIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb24odWludDMyX3QpOwogCiAgICAgdWludDY0X3QgbV9wYWdlSUQ7CiAKQEAgLTE0NjgsOCAr
MTQ2OSw5IEBAIHByaXZhdGU6CiAjaWYgVVNFKE9TX1NUQVRFKQogICAgIHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbV9sb2FkQ29tbWl0VGltZTsKICNlbmRpZgorCisgICAg
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBtX3VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24geyBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOjpMVFIgfTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gV2ViUGFnZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMjAyMTI2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQyOCw0ICs0MjgsNiBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAgICAgU2V0UmVzb3VyY2VD
YWNoaW5nRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKKworICAgIFNldFVzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9uKQogfQpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24g
MjAyMTI2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NTEsMTMgKzU1MSwxMyBAQCBib29sIFdlYlBhZ2U6
OnBlcmZvcm1Ob25FZGl0aW5nQmVoYXZpb3JGCiAgICAgZWxzZSBpZiAoc2VsZWN0b3IgPT0gIm1v
dmVXb3JkTGVmdDoiKQogICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5n
ZXQoKSwgU2Nyb2xsTGVmdCwgU2Nyb2xsQnlQYWdlKTsKICAgICBlbHNlIGlmIChzZWxlY3RvciA9
PSAibW92ZVRvTGVmdEVuZE9mTGluZToiKQotICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gbV9w
YWdlLT5iYWNrRm9yd2FyZCgpLmdvQmFjaygpOworICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0g
bV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID09IFVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb246OkxUUiA/IG1fcGFnZS0+YmFja0ZvcndhcmQoKS5nb0JhY2soKSA6IG1fcGFnZS0+YmFj
a0ZvcndhcmQoKS5nb0ZvcndhcmQoKTsKICAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92ZVJp
Z2h0OiIpCiAgICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBzY3JvbGwobV9wYWdlLmdldCgpLCBT
Y3JvbGxSaWdodCwgU2Nyb2xsQnlMaW5lKTsKICAgICBlbHNlIGlmIChzZWxlY3RvciA9PSAibW92
ZVdvcmRSaWdodDoiKQogICAgICAgICBkaWRQZXJmb3JtQWN0aW9uID0gc2Nyb2xsKG1fcGFnZS5n
ZXQoKSwgU2Nyb2xsUmlnaHQsIFNjcm9sbEJ5UGFnZSk7CiAgICAgZWxzZSBpZiAoc2VsZWN0b3Ig
PT0gIm1vdmVUb1JpZ2h0RW5kT2ZMaW5lOiIpCi0gICAgICAgIGRpZFBlcmZvcm1BY3Rpb24gPSBt
X3BhZ2UtPmJhY2tGb3J3YXJkKCkuZ29Gb3J3YXJkKCk7CisgICAgICAgIGRpZFBlcmZvcm1BY3Rp
b24gPSBtX3VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gPT0gVXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbjo6TFRSID8gbV9wYWdlLT5iYWNrRm9yd2FyZCgpLmdvRm9yd2FyZCgpIDogbV9w
YWdlLT5iYWNrRm9yd2FyZCgpLmdvQmFjaygpOwogCiAgICAgcmV0dXJuIGRpZFBlcmZvcm1BY3Rp
b247CiB9CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMDIxMjYpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNyBAQAorMjAxNi0wNi0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgorCisgICAgICAgIEZvcndhcmQvQmFjayBrZXlib2FyZCBzaG9ydGN1dHMgbmVlZCB0byBmbGlw
IGZvciBSVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1ODgyMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjU5NzUzNTk+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGZvciBmbGlwcGlu
ZyB0aGUgYmVoYXZpb3Igb2YgY29tbWFuZC1sZWZ0IGFuZCBjb21tYW5kLXJpZ2h0CisgICAgICAg
IHVuZGVyIFJUTCBtb2RlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvQ29tbWFuZEJhY2tGb3J3YXJkLm1tOiBBZGRlZC4KKyAgICAgICAgKC1b
Q29tbWFuZEJhY2tGb3J3YXJkT2Zmc2NyZWVuV2luZG93IGlzS2V5V2luZG93XSk6CisgICAgICAg
ICgtW0NvbW1hbmRCYWNrRm9yd2FyZE9mZnNjcmVlbldpbmRvdyBpc1Zpc2libGVdKToKKyAgICAg
ICAgKHNpbXVsYXRlQ29tbWFuZEFycm93KToKKyAgICAgICAgKFdlYktpdDJfQ29tbWFuZEJhY2tG
b3J3YXJkVGVzdDo6U2V0VXApOgorICAgICAgICAoV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRU
ZXN0V0tWaWV3OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0Ml9Db21t
YW5kQmFja0ZvcndhcmRUZXN0V0tWaWV3OjpTZXRVcCk6CisgICAgICAgIChXZWJLaXQyX0NvbW1h
bmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXc6OmxvYWRGaWxlcyk6CisgICAgICAgICgtW0NvbW1hbmRC
YWNrRm9yd2FyZE5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246
XSk6CisgICAgICAgIChXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1dlYlZpZXc6OlNl
dFVwKToKKyAgICAgICAgKFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLV2ViVmlldzo6
bG9hZEZpbGVzKToKKwogMjAxNi0wNi0xNSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFw
cGxlLmNvbT4KIAogICAgICAgICBFeHBvc2UgX3Nob3VsZEV4cGFuZENvbnRlbnRUb1ZpZXdIZWln
aHRGb3JBdXRvTGF5b3V0IFNQSSBvbiBXS1dlYlZpZXcKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyMDIxMjYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgs
NyBAQAogCQk3QTE0NThGQzFBRDVDMDcwMDBFMDY3NzIgLyogbW91c2UtYnV0dG9uLWxpc3RlbmVy
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0ExNDU4RkIxQUQ1QzAzNTAwRTA2NzcyIC8qIG1vdXNlLWJ1dHRvbi1saXN0ZW5lci5odG1s
ICovOyB9OwogCQk3QUU5RTUwOTFBRTVBRThCMDBDRjg3NEIgLyogdGVzdC5wZGYgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FFOUU1MDgxQUU1
QUU4QjAwQ0Y4NzRCIC8qIHRlc3QucGRmICovOyB9OwogCQk3QzM5NjUwNjFDREQ3NEY5MDA5NERC
QjggLyogQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MzOTY1MDUxQ0RENzRGOTAwOTREQkI4IC8qIENvbG9yLmNwcCAqLzsgfTsKKwkJN0Mz
REI4RTQxRDEyMTI5QjAwQUU4Q0MzIC8qIENvbW1hbmRCYWNrRm9yd2FyZC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0RCOEUyMUQxMjEyOUIwMEFF
OENDMyAvKiBDb21tYW5kQmFja0ZvcndhcmQubW0gKi87IH07CiAJCTdDNDg2QkExMUFBMTI1Njcw
MDNGNkY5QiAvKiBidW5kbGUtZmlsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNDg2QkEwMUFBMTI1NEIwMDNGNkY5QiAvKiBidW5k
bGUtZmlsZS5odG1sICovOyB9OwogCQk3QzU0QTRCRTFBQTExQ0NBMDAzODBGNzggLyogV0tCdW5k
bGVGaWxlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDNTRBNEJDMUFBMTFDQ0EwMDM4MEY3OCAvKiBXS0J1bmRsZUZpbGVIYW5kbGUuY3Bw
ICovOyB9OwogCQk3QzU0QTRDMTFBQTExQ0U0MDAzODBGNzggLyogV0tCdW5kbGVGaWxlSGFuZGxl
X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzU0QTRCRjFBQTExQ0U0MDAzODBGNzggLyogV0tCdW5kbGVGaWxlSGFuZGxlX0J1bmRsZS5j
cHAgKi87IH07CkBAIC03NDgsNiArNzQ5LDcgQEAKIAkJN0FBNkExNTExQUFDMEIzMTAwMkIyRUQz
IC8qIFdvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
b3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUU5RTUwODFBRTVB
RThCMDBDRjg3NEIgLyogdGVzdC5wZGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7IHBhdGggPSB0ZXN0LnBkZjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0MzOTY1MDUxQ0RENzRGOTAwOTREQkI4IC8qIENvbG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MzREI4RTIxRDEyMTI5QjAwQUU4Q0MzIC8qIENvbW1hbmRC
YWNrRm9yd2FyZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENv
bW1hbmRCYWNrRm9yd2FyZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0ODZC
QTAxQUExMjU0QjAwM0Y2RjlCIC8qIGJ1bmRsZS1maWxlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYnVuZGxl
LWZpbGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNTRBNEJDMUFBMTFD
Q0EwMDM4MEY3OCAvKiBXS0J1bmRsZUZpbGVIYW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5kbGVGaWxlSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0M1NEE0QkYxQUExMUNFNDAwMzgwRjc4IC8qIFdLQnVuZGxlRmlsZUhh
bmRsZV9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tC
dW5kbGVGaWxlSGFuZGxlX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMTMxLDYgKzExMzMsNyBAQAogCQkJCUExM0VCQkFFMUI4NzQzNkYwMDA5NzExMCAvKiBCdW5k
bGVQYXJhbWV0ZXJzUGx1Z0luLm1tICovLAogCQkJCTFDMkI4MTdFMUM4OTFFNDIwMEE1NTI5RiAv
KiBDYW5jZWxGb250U3VicmVzb3VyY2UubW0gKi8sCiAJCQkJMUMyQjgxODExQzg5MUVGQTAwQTU1
MjlGIC8qIENhbmNlbEZvbnRTdWJyZXNvdXJjZVBsdWdJbi5tbSAqLywKKwkJCQk3QzNEQjhFMjFE
MTIxMjlCMDBBRThDQzMgLyogQ29tbWFuZEJhY2tGb3J3YXJkLm1tICovLAogCQkJCUExOEFBOEND
MUMzRkEyMTgwMDlCMkI5NyAvKiBDb250ZW50RmlsdGVyaW5nLmggKi8sCiAJCQkJQTE0RkM1ODYx
Qjg5OTFCNjAwRDEwN0VCIC8qIENvbnRlbnRGaWx0ZXJpbmcubW0gKi8sCiAJCQkJQTE0RkM1ODkx
Qjg5OTI3MTAwRDEwN0VCIC8qIENvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0gKi8sCkBAIC0yMTQ1
LDYgKzIxNDgsNyBAQAogCQkJCTdDODgyRTBBMUM4MEM3NjQwMDZCRjczMSAvKiBVc2VyQ29udGVu
dFdvcmxkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMjcxQTQxMUFGNjAwNDQ3QzRDIC8q
IFVzZXJDb250ZW50Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDRGMUQw
QTY0MTgwMEZFQkNGMyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDM0RC
OEU0MUQxMjEyOUIwMEFFOENDMyAvKiBDb21tYW5kQmFja0ZvcndhcmQubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3Q0NFN0YyRDFBNDExQjEwMDA0NDdDNEMgLyogVXNlckNvbnRlbnRUZXN0Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMTcxQTQxMUFFNjAwNDQ3QzRDIC8qIFVzZXJNZWRpYS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBDNDFEMEE2NTQyMDBGRUJDRjMgLyogUmVxdWly
ZXNVc2VyQWN0aW9uRm9yUGxheWJhY2subW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0NvbW1hbmRCYWNrRm9yd2FyZC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Db21tYW5k
QmFja0ZvcndhcmQubW0JKHJldmlzaW9uIDApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9Db21tYW5kQmFja0ZvcndhcmQubW0JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFBMQVRG
T1JNKE1BQykKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3Qu
aCIKKyNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4gLy8gZm9yIEdldEN1cnJlbnRFdmVudFRpbWUo
KQorI2ltcG9ydCA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tWaWV3
UHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitAaW50ZXJmYWNlIENvbW1h
bmRCYWNrRm9yd2FyZE9mZnNjcmVlbldpbmRvdyA6IE5TV2luZG93CitAZW5kCisKK0BpbXBsZW1l
bnRhdGlvbiBDb21tYW5kQmFja0ZvcndhcmRPZmZzY3JlZW5XaW5kb3cKKy0gKEJPT0wpaXNLZXlX
aW5kb3cKK3sKKyAgICByZXR1cm4gWUVTOworfQorLSAoQk9PTClpc1Zpc2libGUKK3sKKyAgICBy
ZXR1cm4gWUVTOworfQorQGVuZAorCitlbnVtIEFycm93RGlyZWN0aW9uIHsKKyAgICBMZWZ0LAor
ICAgIFJpZ2h0Cit9OworCitzdGF0aWMgdm9pZCBzaW11bGF0ZUNvbW1hbmRBcnJvdyhOU1ZpZXcg
KnZpZXcsIEFycm93RGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBjb25zdCB1bmljaGFyIHJp
Z2h0ID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7CisgICAgY29uc3QgdW5pY2hhciBsZWZ0ID0g
TlNMZWZ0QXJyb3dGdW5jdGlvbktleTsKKworICAgIE5TU3RyaW5nICpldmVudENoYXJhY3RlciA9
IChkaXJlY3Rpb24gPT0gTGVmdCkgPyBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6Jmxl
ZnQgbGVuZ3RoOjFdIDogW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZyaWdodCBsZW5n
dGg6MV07CisgICAgdW5zaWduZWQgc2hvcnQga2V5Q29kZSA9IChkaXJlY3Rpb24gPT0gTGVmdCkg
PyAweDdCIDogMHg3QzsKKworICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRX
aXRoVHlwZTpOU0tleURvd24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vZGlmaWVyRmxhZ3M6TlNDb21tYW5kS2V5TWFzaworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpHZXRDdXJyZW50RXZlbnRUaW1lKCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dOdW1iZXI6W3ZpZXcud2luZG93IHdpbmRv
d051bWJlcl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6
W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgorICAgICAgICAgICAgICAg
ICAgIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpldmVudENoYXJhY3RlcgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQVJlcGVhdDpOTworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlDb2RlXTsKKworICAgIFt2aWV3IGtl
eURvd246ZXZlbnRdOworCisgICAgZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5T
S2V5VXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQo
NSwgNSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6TlNDb21tYW5kS2V5
TWFzaworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpHZXRDdXJyZW50RXZl
bnRUaW1lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dOdW1iZXI6W3ZpZXcud2lu
ZG93IHdpbmRvd051bWJlcl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6
W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgorICAgICAgICAgIGNoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVyczpldmVudENoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlzQVJlcGVhdDpOTworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTprZXlD
b2RlXTsKKworICAgIFt2aWV3IGtleVVwOmV2ZW50XTsKK30KKworY2xhc3MgV2ViS2l0Ml9Db21t
YW5kQmFja0ZvcndhcmRUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAg
IFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93OworCisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkK
KyAgICB7CisgICAgICAgIE5TV2luZG93ICp3aW5kb3cgPSBbW0NvbW1hbmRCYWNrRm9yd2FyZE9m
ZnNjcmVlbldpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU01ha2VSZWN0KDAsIDAs
IDEwMCwgMTAwKSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFj
a2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXTsKKyAgICAgICAgW3dpbmRvdyBzZXRDb2xvclNw
YWNlOltbTlNTY3JlZW4gbWFpblNjcmVlbl0gY29sb3JTcGFjZV1dOworICAgICAgICBbd2luZG93
IG9yZGVyQmFjazpuaWxdOworICAgICAgICBbd2luZG93IHNldEF1dG9kaXNwbGF5Ok5PXTsKKyAg
ICAgICAgW3dpbmRvdyBzZXRSZWxlYXNlZFdoZW5DbG9zZWQ6Tk9dOworICAgIH0KK307CisKK3N0
YXRpYyBib29sIGRpZEZpbmlzaE5hdmlnYXRpb247CisKK2NsYXNzIFdlYktpdDJfQ29tbWFuZEJh
Y2tGb3J3YXJkVGVzdFdLVmlldyA6IHB1YmxpYyBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRl
c3QgeworcHVibGljOgorICAgIFJldGFpblB0cjxXS1ZpZXc+IHdlYlZpZXc7CisgICAgV0tSZXRh
aW5QdHI8V0tVUkxSZWY+IGZpbGUxOworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBmaWxlMjsK
KworICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJh
bWVSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKKyAgICB7CisgICAgICAg
IGRpZEZpbmlzaE5hdmlnYXRpb24gPSB0cnVlOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBT
ZXRVcCgpCisgICAgeworICAgICAgICBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3Q6OlNl
dFVwKCk7CisKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRv
cHRXSyhXS0NvbnRleHRDcmVhdGUoKSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZp
Z3VyYXRpb25SZWY+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdFdLKFdLUGFnZUNvbmZpZ3VyYXRpb25D
cmVhdGUoKSk7ICAgICAgICAKKyAgICAgICAgV0tQYWdlQ29uZmlndXJhdGlvblNldENvbnRleHQo
Y29uZmlndXJhdGlvbi5nZXQoKSwgY29udGV4dC5nZXQoKSk7CisKKyAgICAgICAgd2ViVmlldyA9
IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDAp
IGNvbmZpZ3VyYXRpb25SZWY6Y29uZmlndXJhdGlvbi5nZXQoKV07CisKKyAgICAgICAgV0tQYWdl
TG9hZGVyQ2xpZW50VjYgbG9hZGVyQ2xpZW50OworICAgICAgICBtZW1zZXQoJmxvYWRlckNsaWVu
dCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOworCisgICAgICAgIGxvYWRlckNsaWVudC5iYXNl
LnZlcnNpb24gPSA2OworICAgICAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1l
ID0gZGlkRmluaXNoTG9hZEZvckZyYW1lOworCisgICAgICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJD
bGllbnQoW3dlYlZpZXcgcGFnZVJlZl0sICZsb2FkZXJDbGllbnQuYmFzZSk7CisgICAgICAgIAor
ICAgICAgICBmaWxlMSA9IGFkb3B0V0soVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlVVJMRm9y
UmVzb3VyY2UoInNpbXBsZSIsICJodG1sIikpOworICAgICAgICBmaWxlMiA9IGFkb3B0V0soVGVz
dFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZTIiLCAiaHRtbCIp
KTsKKworICAgIH0KKworICAgIHZvaWQgbG9hZEZpbGVzKCkKKyAgICB7CisgICAgICAgIFdLUGFn
ZUxvYWRGaWxlKFt3ZWJWaWV3IHBhZ2VSZWZdLCBmaWxlMS5nZXQoKSwgbnVsbHB0cik7CisgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAg
ICAgIGRpZEZpbmlzaE5hdmlnYXRpb24gPSBmYWxzZTsKKworICAgICAgICBXS1BhZ2VMb2FkRmls
ZShbd2ViVmlldyBwYWdlUmVmXSwgZmlsZTIuZ2V0KCksIG51bGxwdHIpOworICAgICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOworICAgICAgICBkaWRG
aW5pc2hOYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgfQorfTsKKworI2lmIFdLX0FQSV9FTkFCTEVE
CisKK0BpbnRlcmZhY2UgQ29tbWFuZEJhY2tGb3J3YXJkTmF2aWdhdGlvbkRlbGVnYXRlIDogTlNP
YmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gQ29t
bWFuZEJhY2tGb3J3YXJkTmF2aWdhdGlvbkRlbGVnYXRlCisKKy0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZp
Z2F0aW9uCit7CisgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IHRydWU7Cit9CisKK0BlbmQKKwor
CitjbGFzcyBXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1dlYlZpZXcgOiBwdWJsaWMg
V2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0IHsKK3B1YmxpYzoKKyAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3PiB3ZWJWaWV3OworCisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKKyAgICB7Cisg
ICAgICAgIFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdDo6U2V0VXAoKTsKKworICAgICAg
ICB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDEwMCwgMTAwKV0pOworICAgICAgICBbW3dpbmRvdyBjb250ZW50Vmlld10g
YWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKKworICAgICAgICBDb21tYW5kQmFja0ZvcndhcmRO
YXZpZ2F0aW9uRGVsZWdhdGUgKmRlbGVnYXRlID0gW1tDb21tYW5kQmFja0ZvcndhcmROYXZpZ2F0
aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdOworICAgICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9u
RGVsZWdhdGU6ZGVsZWdhdGVdOworICAgIH0KKyAgICAKKyAgICB2b2lkIGxvYWRGaWxlcygpCisg
ICAgeworICAgICAgICBOU1VSTCAqZmlsZTEgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAi
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZEZpbGVVUkw6
ZmlsZTEgYWxsb3dpbmdSZWFkQWNjZXNzVG9VUkw6ZmlsZTFdOworCisgICAgICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAgICAgIGRpZEZpbmlz
aE5hdmlnYXRpb24gPSBmYWxzZTsKKworICAgICAgICBOU1VSTCAqZmlsZTIgPSBbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgICAgIFt3
ZWJWaWV3IGxvYWRGaWxlVVJMOmZpbGUyIGFsbG93aW5nUmVhZEFjY2Vzc1RvVVJMOmZpbGUyXTsK
KworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24p
OworICAgICAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0gZmFsc2U7CisgICAgfQorfTsKKworVEVT
VF9GKFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLV2ViVmlldywgTFRSKQoreworICAg
IEVYUEVDVF9FUShOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCwgW3dl
YlZpZXcgdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbl0pOworICAgIAorICAgIGxvYWRGaWxl
cygpOworCisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IFVSTF0ucGF0aC5sYXN0UGF0aENv
bXBvbmVudCwgQCJzaW1wbGUyLmh0bWwiKTsKKworICAgIC8vIEF0dGVtcHQgdG8gZ28gYmFjayAo
dXNpbmcgY29tbWFuZC1sZWZ0KS4KKyAgICBzaW11bGF0ZUNvbW1hbmRBcnJvdyh3ZWJWaWV3Lmdl
dCgpLCBMZWZ0KTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmln
YXRpb24pOworICAgIGRpZEZpbmlzaE5hdmlnYXRpb24gPSBmYWxzZTsKKworICAgIEVYUEVDVF9X
S19TVFJFUShbd2ViVmlldyBVUkxdLnBhdGgubGFzdFBhdGhDb21wb25lbnQsIEAic2ltcGxlLmh0
bWwiKTsKKworICAgIC8vIEF0dGVtcHQgdG8gZ28gYmFjayAodXNpbmcgY29tbWFuZC1yaWdodCku
CisgICAgc2ltdWxhdGVDb21tYW5kQXJyb3cod2ViVmlldy5nZXQoKSwgUmlnaHQpOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAgZGlkRmlu
aXNoTmF2aWdhdGlvbiA9IGZhbHNlOworCisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IFVS
TF0ucGF0aC5sYXN0UGF0aENvbXBvbmVudCwgQCJzaW1wbGUyLmh0bWwiKTsKK30KKworVEVTVF9G
KFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLV2ViVmlldywgUlRMKQoreworICAgIC8v
IE92ZXJyaWRlIHRoZSBsYXlvdXQgZGlyZWN0aW9uIHRvIGJlIFJUTC4KKyAgICBbd2ViVmlldyBz
ZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOk5TVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvblJpZ2h0VG9MZWZ0XTsKKyAgICAKKyAgICBsb2FkRmlsZXMoKTsKKworICAgIEVYUEVDVF9X
S19TVFJFUShbd2ViVmlldyBVUkxdLnBhdGgubGFzdFBhdGhDb21wb25lbnQsIEAic2ltcGxlMi5o
dG1sIik7CisKKyAgICAvLyBBdHRlbXB0IHRvIGdvIGJhY2sgKHVzaW5nIGNvbW1hbmQtcmlnaHQp
CisgICAgc2ltdWxhdGVDb21tYW5kQXJyb3cod2ViVmlldy5nZXQoKSwgUmlnaHQpOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAgZGlkRmlu
aXNoTmF2aWdhdGlvbiA9IGZhbHNlOworCisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IFVS
TF0ucGF0aC5sYXN0UGF0aENvbXBvbmVudCwgQCJzaW1wbGUuaHRtbCIpOworCisgICAgLy8gQXR0
ZW1wdCB0byBnbyBiYWNrICh1c2luZyBjb21tYW5kLWxlZnQpLgorICAgIHNpbXVsYXRlQ29tbWFu
ZEFycm93KHdlYlZpZXcuZ2V0KCksIExlZnQpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZhbHNl
OworCisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IFVSTF0ucGF0aC5sYXN0UGF0aENvbXBv
bmVudCwgQCJzaW1wbGUyLmh0bWwiKTsKK30KKworI2VuZGlmCisKK1RFU1RfRihXZWJLaXQyX0Nv
bW1hbmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXcsIExUUikKK3sKKyAgICBFWFBFQ1RfRVEoTlNVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQsIFt3ZWJWaWV3IHVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb25dKTsKKyAgICAKKyAgICBsb2FkRmlsZXMoKTsKKworICAgIGF1dG8g
Y3VycmVudFVSTCA9IGFkb3B0V0soV0tQYWdlQ29weUFjdGl2ZVVSTChbd2ViVmlldyBwYWdlUmVm
XSkpOworICAgIEVYUEVDVF9UUlVFKFdLVVJMSXNFcXVhbChmaWxlMi5nZXQoKSwgY3VycmVudFVS
TC5nZXQoKSkpOworCisgICAgLy8gQXR0ZW1wdCB0byBnbyBiYWNrICh1c2luZyBjb21tYW5kLWxl
ZnQpLgorICAgIHNpbXVsYXRlQ29tbWFuZEFycm93KHdlYlZpZXcuZ2V0KCksIExlZnQpOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAgZGlk
RmluaXNoTmF2aWdhdGlvbiA9IGZhbHNlOworCisgICAgYXV0byBjdXJyZW50VVJMMiA9IGFkb3B0
V0soV0tQYWdlQ29weUFjdGl2ZVVSTChbd2ViVmlldyBwYWdlUmVmXSkpOworICAgIEVYUEVDVF9U
UlVFKFdLVVJMSXNFcXVhbChmaWxlMS5nZXQoKSwgY3VycmVudFVSTDIuZ2V0KCkpKTsKKworICAg
IC8vIEF0dGVtcHQgdG8gZ28gYmFjayAodXNpbmcgY29tbWFuZC1yaWdodCkuCisgICAgc2ltdWxh
dGVDb21tYW5kQXJyb3cod2ViVmlldy5nZXQoKSwgUmlnaHQpOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CisgICAgZGlkRmluaXNoTmF2aWdhdGlv
biA9IGZhbHNlOworCisgICAgYXV0byBjdXJyZW50VVJMMyA9IGFkb3B0V0soV0tQYWdlQ29weUFj
dGl2ZVVSTChbd2ViVmlldyBwYWdlUmVmXSkpOworICAgIEVYUEVDVF9UUlVFKFdLVVJMSXNFcXVh
bChmaWxlMi5nZXQoKSwgY3VycmVudFVSTDMuZ2V0KCkpKTsKK30KKworVEVTVF9GKFdlYktpdDJf
Q29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLVmlldywgUlRMKQoreworICAgIC8vIE92ZXJyaWRlIHRo
ZSBsYXlvdXQgZGlyZWN0aW9uIHRvIGJlIFJUTC4KKyAgICBbd2ViVmlldyBzZXRVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uOk5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9M
ZWZ0XTsKKyAgICAKKyAgICBsb2FkRmlsZXMoKTsKKworICAgIGF1dG8gY3VycmVudFVSTCA9IGFk
b3B0V0soV0tQYWdlQ29weUFjdGl2ZVVSTChbd2ViVmlldyBwYWdlUmVmXSkpOworICAgIEVYUEVD
VF9UUlVFKFdLVVJMSXNFcXVhbChmaWxlMi5nZXQoKSwgY3VycmVudFVSTC5nZXQoKSkpOworCisg
ICAgLy8gQXR0ZW1wdCB0byBnbyBiYWNrICh1c2luZyBjb21tYW5kLXJpZ2h0KQorICAgIHNpbXVs
YXRlQ29tbWFuZEFycm93KHdlYlZpZXcuZ2V0KCksIFJpZ2h0KTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOworICAgIGRpZEZpbmlzaE5hdmlnYXRp
b24gPSBmYWxzZTsKKworICAgIGF1dG8gY3VycmVudFVSTDIgPSBhZG9wdFdLKFdLUGFnZUNvcHlB
Y3RpdmVVUkwoW3dlYlZpZXcgcGFnZVJlZl0pKTsKKyAgICBFWFBFQ1RfVFJVRShXS1VSTElzRXF1
YWwoZmlsZTEuZ2V0KCksIGN1cnJlbnRVUkwyLmdldCgpKSk7CisKKyAgICAvLyBBdHRlbXB0IHRv
IGdvIGJhY2sgKHVzaW5nIGNvbW1hbmQtbGVmdCkuCisgICAgc2ltdWxhdGVDb21tYW5kQXJyb3co
d2ViVmlldy5nZXQoKSwgTGVmdCk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRG
aW5pc2hOYXZpZ2F0aW9uKTsKKyAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0gZmFsc2U7CisKKyAg
ICBhdXRvIGN1cnJlbnRVUkwzID0gYWRvcHRXSyhXS1BhZ2VDb3B5QWN0aXZlVVJMKFt3ZWJWaWV3
IHBhZ2VSZWZdKSk7CisgICAgRVhQRUNUX1RSVUUoV0tVUkxJc0VxdWFsKGZpbGUyLmdldCgpLCBj
dXJyZW50VVJMMy5nZXQoKSkpOworfQorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQo=
</data>
<flag name="review"
          id="305308"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>