<?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>123111</bug_id>
          
          <creation_ts>2013-10-21 11:53:39 -0700</creation_ts>
          <short_desc>Upstream ENABLE(REMOTE_INSPECTOR) and enable on iOS and Mac</short_desc>
          <delta_ts>2013-10-25 13:58:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (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="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aestes</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>941945</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-10-21 11:53:39 -0700</bug_when>
    <thetext>ENABLE(REMOTE_INSPECTOR) is an alternative to ENABLE(INSPECTOR_SERVER) for remotely debugging via the inspector protocol.

REMOTE_INSPECTOR on Mac platforms exposes an XPC interface to receive page listings, setup/disconnect a remote debugging session, and send/receive inspector protocol socket messages. This is an alternative to the Web Socket approach enabled by INSPECTOR_SERVER.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942031</commentid>
    <comment_count>1</comment_count>
      <attachid>214782</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-10-21 14:45:04 -0700</bug_when>
    <thetext>Created attachment 214782
[PATCH] Add ENABLE(REMOTE_INSPECTOR) Implementation

This is a working WebKit1 Mac / iOS implementation. There are extra iOS bits that I&apos;ll put in a separate patch for node highlighting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942032</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-21 14:46:23 -0700</bug_when>
    <thetext>Attachment 214782 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/FeatureDefines.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Configurations/FeatureDefines.xcconfig&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit/WebKit.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit/cf/ChangeLog&apos;, u&apos;Source/WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp&apos;, u&apos;Source/WebKit/ios/ChangeLog&apos;, u&apos;Source/WebKit/ios/WebCoreSupport/WebInspectorClientIOS.mm&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/Configurations/FeatureDefines.xcconfig&apos;, u&apos;Source/WebKit/mac/Misc/WebKitLogging.h&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.h&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorClientRegistry.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorClientRegistry.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRelayDefinitions.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRemoteChannel.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorRemoteChannel.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServer.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServer.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnection.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnection.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnectionController.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnectionController.mm&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorXPCWrapper.h&apos;, u&apos;Source/WebKit/mac/WebInspector/remote/WebInspectorXPCWrapper.m&apos;, u&apos;Source/WebKit/mac/WebKit.exp&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebViewData.h&apos;, u&apos;Source/WebKit/mac/WebView/WebViewData.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebViewInternal.h&apos;, u&apos;Source/WebKit/mac/WebView/WebViewPrivate.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Configurations/FeatureDefines.xcconfig&apos;]&quot; exit_code: 1
Source/WebKit/mac/WebCoreSupport/WebInspectorClient.h:89:  The parameter name &quot;remoteChannel&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/mac/WebInspector/remote/WebInspectorXPCWrapper.h:39:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WebKit/mac/WebInspector/remote/WebInspectorXPCWrapper.h:49:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit/mac/WebInspector/remote/WebInspectorXPCWrapper.h:50:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit/mac/WebInspector/remote/WebInspectorXPCWrapper.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit/mac/WebInspector/remote/WebInspectorXPCWrapper.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit/mac/WebInspector/remote/WebInspectorClientRegistry.h:42:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit/mac/ChangeLog:83:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Source/WTF/wtf/FeatureDefines.h:873:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 9 in 40 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>942054</commentid>
    <comment_count>3</comment_count>
      <attachid>214782</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-21 16:04:45 -0700</bug_when>
    <thetext>Comment on attachment 214782
[PATCH] Add ENABLE(REMOTE_INSPECTOR) Implementation

Attachment 214782 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/8848137</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942059</commentid>
    <comment_count>4</comment_count>
      <attachid>214782</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-21 16:15:39 -0700</bug_when>
    <thetext>Comment on attachment 214782
[PATCH] Add ENABLE(REMOTE_INSPECTOR) Implementation

Attachment 214782 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/8828113</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943307</commentid>
    <comment_count>5</comment_count>
      <attachid>214782</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-10-24 13:55:28 -0700</bug_when>
    <thetext>Comment on attachment 214782
[PATCH] Add ENABLE(REMOTE_INSPECTOR) Implementation

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

&gt;&gt; Source/WTF/wtf/FeatureDefines.h:873
&gt;&gt; +#error &quot;ENABLE(REMOTE_INSPECTOR) requires ENABLE(INSPECTOR)
&gt; 
&gt; Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]

lol, yes it looks like I&apos;m missing an ending quote.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943309</commentid>
    <comment_count>6</comment_count>
      <attachid>214782</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-10-24 14:03:21 -0700</bug_when>
    <thetext>Comment on attachment 214782
[PATCH] Add ENABLE(REMOTE_INSPECTOR) Implementation

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

&gt; Source/WebKit/mac/WebCoreSupport/WebInspectorClient.mm:256
&gt; +    Page* page = core(m_webView);
&gt; +    if (page) {
&gt; +        page-&gt;inspectorController()-&gt;disconnectFrontend();
&gt; +    }

Could put Page* page in the if() and drop the { }.

&gt; Source/WebKit/mac/WebInspector/remote/WebInspectorRelayDefinitions.h:38
&gt; +#define WIRSimulatorTCPPortNumber               27753
&gt; +#define WIRXPCMachPortName                      &quot;com.apple.webinspector&quot;
&gt; +#define WIRServiceAvailableNotification         &quot;com.apple.webinspectord.available&quot;
&gt; +#define WIRServiceAvailabilityCheckNotification &quot;com.apple.webinspectord.availability_check&quot;
&gt; +#define WIRServiceEnabledNotification           &quot;com.apple.webinspectord.enabled&quot;
&gt; +#define WIRServiceDisabledNotification          &quot;com.apple.webinspectord.disabled&quot;

These could be const NSString * instead. Also there isn&apos;t any reason for the symbol to keep the &quot;WIR&quot; prefix, it could differ even if the string content needs to keep &quot;WIR&quot;.

&gt; Source/WebKit/mac/WebInspector/remote/WebInspectorServerWebViewConnectionController.mm:281
&gt; +    NSString *connectionIdentifier = [dictionary objectForKey:WIRConnectionIdentifierKey];
&gt; +    [self pushListing:connectionIdentifier];

One line?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943315</commentid>
    <comment_count>7</comment_count>
      <attachid>214782</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-10-24 14:26:46 -0700</bug_when>
    <thetext>Comment on attachment 214782
[PATCH] Add ENABLE(REMOTE_INSPECTOR) Implementation

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

&gt;&gt; Source/WebKit/mac/WebInspector/remote/WebInspectorRelayDefinitions.h:38
&gt;&gt; +#define WIRServiceDisabledNotification          &quot;com.apple.webinspectord.disabled&quot;
&gt; 
&gt; These could be const NSString * instead. Also there isn&apos;t any reason for the symbol to keep the &quot;WIR&quot; prefix, it could differ even if the string content needs to keep &quot;WIR&quot;.

These are used by XPC/notify APIs which take C strings, so I just kept them C String constants. Would there be an advantage to making them NSStrings? Just seems like more work unless they are actually used as NSStrings.

I agree that there is no need to keep the defines WIR prefixed. The consistency, and prefix makes it obvious to me that these are shared constants. If I changed them, I&apos;d like to change them to &quot;RWI&quot;, but of course the values need to stay &quot;WIR&quot; for backwards compatibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943738</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-10-25 13:58:33 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 214782 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=214782&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/mac/WebInspector/remote/WebInspectorRelayDefinitions.h:38
&gt; &gt;&gt; +#define WIRServiceDisabledNotification          &quot;com.apple.webinspectord.disabled&quot;
&gt; &gt; 
&gt; &gt; These could be const NSString * instead. Also there isn&apos;t any reason for the symbol to keep the &quot;WIR&quot; prefix, it could differ even if the string content needs to keep &quot;WIR&quot;.
&gt; 
&gt; These are used by XPC/notify APIs which take C strings, so I just kept them C String constants. Would there be an advantage to making them NSStrings? Just seems like more work unless they are actually used as NSStrings.
&gt; 
&gt; I agree that there is no need to keep the defines WIR prefixed. The consistency, and prefix makes it obvious to me that these are shared constants. If I changed them, I&apos;d like to change them to &quot;RWI&quot;, but of course the values need to stay &quot;WIR&quot; for backwards compatibility.

You mentioned this could be &quot;const char*&quot; types. I&apos;ll address this in a follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943739</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-10-25 13:58:42 -0700</bug_when>
    <thetext>Landed in: &lt;http://trac.webkit.org/changeset/158050&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214782</attachid>
            <date>2013-10-21 14:45:04 -0700</date>
            <delta_ts>2013-10-24 14:26:45 -0700</delta_ts>
            <desc>[PATCH] Add ENABLE(REMOTE_INSPECTOR) Implementation</desc>
            <filename>feature-1.patch</filename>
            <type>text/plain</type>
            <size>143457</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGVlMmI2OTAuLjkwYzcwNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTEwLTIxICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgVXBzdHJlYW0gRU5BQkxFKFJFTU9U
RV9JTlNQRUNUT1IpIGFuZCBlbmFibGUgb24gaU9TIGFuZCBNYWMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzExMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWc6CisKIDIwMTMtMTAtMjEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBTdXBwb3J0IGNvbXB1dGVkIHByb3BlcnR5IG5hbWVzIGluIG9iamVj
dCBsaXRlcmFscwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IDg0OTgxZTQuLjVjNTQ2OGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTIwLDcgKzIwLDcgQEAKIC8vIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKIC8vIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKIC8vIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbXVzdCBiZSBrZXB0IGluIHN5bmMg
d2l0aCBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBpbiBKYXZhU2NyaXB0Q29yZSwKIC8vIFdlYkNv
cmUsIFdlYktpdCBhbmQgV2ViS2l0Mi4gIEFsc28gdGhlIGRlZmF1bHQgdmFsdWVzIG9mIHRoZSBF
TkFCTEVfRkVBVFVSRV9OQU1FIG1hY3JvcyBpbgpAQCAtMTU3LDYgKzE1Nyw3IEBAIEVOQUJMRV9Q
VUJMSUNfU1VGRklYX0xJU1RfbWFjb3N4XzEwODAgPSBFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNU
OwogRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVF9tYWNvc3hfMTA5MCA9IEVOQUJMRV9QVUJMSUNf
U1VGRklYX0xJU1Q7CiBFTkFCTEVfUVVPVEEgPSA7CiBFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05f
RlJBTUUgPSBFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUU7CitFTkFCTEVfUkVNT1RFX0lO
U1BFQ1RPUiA9IEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SOwogRU5BQkxFX1JFU09MVVRJT05fTUVE
SUFfUVVFUlkgPSA7CiBFTkFCTEVfU0NSSVBURURfU1BFRUNIID0gOwogRU5BQkxFX1NIQURPV19E
T00gPSA7CkBAIC0xODgsNCArMTg5LDQgQEAgRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAog
RU5BQkxFX0ZUTF9KSVQgPSA7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRF
UklORykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9CTE9CKSAkKEVO
QUJMRV9DQUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9D
QU5WQVNfUFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DU1BfTkVY
VCkgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9T
SVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0VYQ0xV
U0lPTlMpICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJ
T04pICQoRU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykg
JChFTkFCTEVfQ1NTX1NIQURFUlMpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTU19T
VElDS1lfUE9TSVRJT04pICQoRU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVU5QUkVG
SVhFRCkgJChFTkFCTEVfQ1NTX1ZBUklBQkxFUykgJChFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9S
VUxFUykgJChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RFWFRfTElORV9CUkVBSykg
JChFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExF
UikgJChFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQp
ICQoRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkg
JChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAk
KEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRFJBR0dBQkxFX1JFR0lP
TikgJChFTkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIp
ICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZV
TExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChF
TkFCTEVfSElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0hJR0hfRFBJ
X0NBTlZBUykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1Mp
ICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lORElFX1VJKSAkKEVOQUJMRV9J
TlBVVF9TUEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfQ09MT1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBV
VF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVM
T0NBTCkgJChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1F
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIp
ICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9U
SUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVH
QUNZX1dFQl9BVURJTykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1MKSAk
KEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChF
TkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVf
TUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NP
TlRFTlRfVVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJ
TElUWV9BUEkpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BMVUdJTl9QUk9YWV9G
T1JfVklERU8pICQoRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5BQkxFX1BST01JU0VTKSAk
KEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQo
RU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVf
UkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJM
RV9TSEFET1dfRE9NKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1BFRUNIX1NZ
TlRIRVNJUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQp
ICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0ZPTlRT
KSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQo
RU5BQkxFX1RIUkVBREVEX0hUTUxfUEFSU0VSKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcp
ICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9f
VFJBQ0spICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVO
QUJMRV9XRUJfQU5JTUFUSU9OUykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09D
S0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhS
X1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRkVBVFVSRV9ERUZJ
TkVTXyQoUExBVEZPUk1fTkFNRSkpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVO
REVSSU5HKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0JMT0IpICQo
RU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxF
X0NBTlZBU19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9O
RVhUKSAkKEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01Q
T1NJVElORykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfRVhD
TFVTSU9OUykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRB
VElPTikgJChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05T
KSAkKEVOQUJMRV9DU1NfU0hBREVSUykgJChFTkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NT
X1NUSUNLWV9QT1NJVElPTikgJChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19VTlBS
RUZJWEVEKSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFM
X1JVTEVTKSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFL
KSAkKEVOQUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5E
TEVSKSAkKEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVO
VCkgJChFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5U
KSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQp
ICQoRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJMRV9EUkFHR0FCTEVfUkVH
SU9OKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9W
MikgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVf
RlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAk
KEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSElHSF9E
UElfQ0FOVkFTKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lGUkFNRV9TRUFNTEVT
UykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ESUVfVUkpICQoRU5BQkxF
X0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRf
VFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lO
UFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElN
RUxPQ0FMKSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJ
TUUpICQoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dF
UikgJChFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9O
T1RJRklDQVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9M
RUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwp
ICQoRU5BQkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAk
KEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJM
RV9NSFRNTCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1Jf
Q09OVEVOVF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJ
QklMSVRZX0FQSSkgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUExVR0lOX1BST1hZ
X0ZPUl9WSURFTykgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUFJPTUlTRVMp
ICQoRU5BQkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkg
JChFTkFCTEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJM
RV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVO
QUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJF
RF9XT1JLRVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TUUxfREFUQUJB
U0UpICQoRU5BQkxFX1NVQlBJWEVMX0xBWU9VVCkgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChF
TkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQp
ICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVEhSRUFERURfSFRNTF9QQVJTRVIp
ICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQo
RU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfVklFV19NT0RFX0NT
U19NRURJQSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BTklNQVRJT05TKSAkKEVOQUJM
RV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAk
KEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChF
TkFCTEVfRlRMX0pJVCkgJChGRUFUVVJFX0RFRklORVNfJChQTEFURk9STV9OQU1FKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDQ5ZTc3NjEuLjQ0MjQ0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTAtMjEgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBVcHN0cmVhbSBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikgYW5kIGVuYWJsZSBvbiBpT1MgYW5kIE1hYworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMTExCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRmVhdHVyZURlZmlu
ZXMuaDoKKwogMjAxMy0xMC0yMSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIE1ha2UgVFlQRV9DQVNUU19CQVNFIG1vcmUgZmxleGlibGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9G
ZWF0dXJlRGVmaW5lcy5oCmluZGV4IGQ4ZjBmOTUuLjJmMmQ4YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKKysrIGIvU291cmNlL1dURi93dGYvRmVhdHVyZURl
ZmluZXMuaApAQCAtMTEyLDYgKzExMiwxMCBAQAogI2RlZmluZSBFTkFCTEVfUE9JTlRFUl9MT0NL
IDAKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpCisjZGVm
aW5lIEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SIDEKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5B
QkxFX1JFUEFJTlRfVEhST1RUTElORykKICNkZWZpbmUgRU5BQkxFX1JFUEFJTlRfVEhST1RUTElO
RyAwCiAjZW5kaWYKQEAgLTE3NCw2ICsxNzgsMTAgQEAKICNkZWZpbmUgRU5BQkxFX0ZVTExTQ1JF
RU5fQVBJIDEKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX1JFTU9URV9JTlNQRUNUT1Ip
CisjZGVmaW5lIEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SIDEKKyNlbmRpZgorCiAjaWYgIWRlZmlu
ZWQoRU5BQkxFX1JVQkJFUl9CQU5ESU5HKQogI2RlZmluZSBFTkFCTEVfUlVCQkVSX0JBTkRJTkcg
MQogI2VuZGlmCkBAIC02OTcsNiArNzA1LDEwIEBACiAjZGVmaW5lIEVOQUJMRV9SRVBBSU5UX1RI
Uk9UVExJTkcgMAogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfUkVNT1RFX0lOU1BFQ1RP
UikKKyNkZWZpbmUgRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IgMAorI2VuZGlmCisKICNpZiAhZGVm
aW5lZChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAjZGVmaW5lIEVOQUJMRV9SRVFV
RVNUX0FOSU1BVElPTl9GUkFNRSAwCiAjZW5kaWYKQEAgLTg1Nyw0ICs4NjksOCBAQAogI2Vycm9y
ICJFTkFCTEUoQ1NTX1NIQURFUlMpIHJlcXVpcmVzIEVOQUJMRShXRUJHTCkiCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSAmJiAhRU5BQkxFKElOU1BFQ1RPUikKKyNlcnJv
ciAiRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpIHJlcXVpcmVzIEVOQUJMRShJTlNQRUNUT1IpCisj
ZW5kaWYKKwogI2VuZGlmIC8qIFdURl9GZWF0dXJlRGVmaW5lc19oICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NjcwZjJiZC4uYjBlMTAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTEwLTIx
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgVXBzdHJl
YW0gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpIGFuZCBlbmFibGUgb24gaU9TIGFuZCBNYWMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzExMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAoT09QUyEpLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWc6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisKIDIwMTMtMTAtMjEgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3RlIExheWVyIFRy
ZWU6IENsZWFuIHVwIHRyYW5zYWN0aW9uIGxvZ2dpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYkNv
cmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggODQ5ODFlNC4u
NWM1NDY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcKQEAgLTIwLDcgKzIwLDcgQEAKIC8vIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKIC8v
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKy8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAK
IC8vIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBG
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBpbiBKYXZhU2NyaXB0Q29yZSwKIC8vIFdlYkNvcmUsIFdl
YktpdCBhbmQgV2ViS2l0Mi4gIEFsc28gdGhlIGRlZmF1bHQgdmFsdWVzIG9mIHRoZSBFTkFCTEVf
RkVBVFVSRV9OQU1FIG1hY3JvcyBpbgpAQCAtMTU3LDYgKzE1Nyw3IEBAIEVOQUJMRV9QVUJMSUNf
U1VGRklYX0xJU1RfbWFjb3N4XzEwODAgPSBFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUOwogRU5B
QkxFX1BVQkxJQ19TVUZGSVhfTElTVF9tYWNvc3hfMTA5MCA9IEVOQUJMRV9QVUJMSUNfU1VGRklY
X0xJU1Q7CiBFTkFCTEVfUVVPVEEgPSA7CiBFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUg
PSBFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUU7CitFTkFCTEVfUkVNT1RFX0lOU1BFQ1RP
UiA9IEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SOwogRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVF
UlkgPSA7CiBFTkFCTEVfU0NSSVBURURfU1BFRUNIID0gOwogRU5BQkxFX1NIQURPV19ET00gPSA7
CkBAIC0xODgsNCArMTg5LDQgQEAgRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAogRU5BQkxF
X0ZUTF9KSVQgPSA7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykg
JChFTkFCTEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9D
QUNIRV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNf
UFJPWFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChF
TkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcp
ICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMp
ICQoRU5BQkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQo
RU5BQkxFX0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFC
TEVfQ1NTX1NIQURFUlMpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTU19TVElDS1lf
UE9TSVRJT04pICQoRU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVU5QUkVGSVhFRCkg
JChFTkFCTEVfQ1NTX1ZBUklBQkxFUykgJChFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUykg
JChFTkFCTEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RFWFRfTElORV9CUkVBSykgJChFTkFC
TEVfQ1VSU09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChF
TkFCTEVfREFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5B
QkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFC
TEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJM
RV9ET000X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRFJBR0dBQkxFX1JFR0lPTikgJChF
TkFCTEVfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5B
QkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JF
RU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVf
SElEREVOX1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZB
UykgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5B
QkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9T
UEVFQ0gpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09M
T1JfUE9QT1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBF
X0RBVEVUSU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkg
JChFTkFCTEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVO
QUJMRV9JTlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5B
QkxFX0xFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FU
SU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX1dF
Ql9BVURJTykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJM
RV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVf
TUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwp
ICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRf
VVRJTFMpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9B
UEkpICQoRU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BMVUdJTl9QUk9YWV9GT1JfVklE
RU8pICQoRU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5BQkxFX1BST01JU0VTKSAkKEVOQUJM
RV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxF
X1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVTT0xV
VElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfU0NSSVBURURfU1BFRUNIKSAkKEVOQUJMRV9TSEFE
T1dfRE9NKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1BFRUNIX1NZTlRIRVNJ
UykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9TVUJQSVhFTF9MQVlPVVQpICQoRU5B
QkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVO
QUJMRV9URU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxF
X1RIUkVBREVEX0hUTUxfUEFSU0VSKSAkKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcpICQoRU5B
QkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0sp
ICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5BQkxFX1dFQkdMKSAkKEVOQUJMRV9X
RUJfQU5JTUFUSU9OUykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykg
JChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhSX1RJTUVP
VVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRkVBVFVSRV9ERUZJTkVTXyQo
UExBVEZPUk1fTkFNRSkpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5H
KSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxF
X0NBQ0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZB
U19QUk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAk
KEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElO
RykgJChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfRVhDTFVTSU9O
UykgJChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikg
JChFTkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVO
QUJMRV9DU1NfU0hBREVSUykgJChFTkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTX1NUSUNL
WV9QT1NJVElPTikgJChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19VTlBSRUZJWEVE
KSAkKEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVT
KSAkKEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVO
QUJMRV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAk
KEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChF
TkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVO
QUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5B
QkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJMRV9EUkFHR0FCTEVfUkVHSU9OKSAk
KEVOQUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChF
TkFCTEVfRklMVEVSUykgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlVMTFND
UkVFTl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSElHSF9EUElfQ0FO
VkFTKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lGUkFNRV9TRUFNTEVTUykgJChF
TkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVU
X1NQRUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9D
T0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZ
UEVfREFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FM
KSAkKEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQo
RU5BQkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChF
TkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklD
QVRJT05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lf
V0VCX0FVRElPKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwpICQoRU5B
QkxFX01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJM
RV9NRURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRN
TCkgJChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVO
VF9VVElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZ
X0FQSSkgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUExVR0lOX1BST1hZX0ZPUl9W
SURFTykgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5B
QkxFX1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFC
TEVfUVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRU1P
VEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9T
Q1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURPV19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JL
RVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQo
RU5BQkxFX1NVQlBJWEVMX0xBWU9VVCkgJChFTkFCTEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVf
U1ZHKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5B
QkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVfVEhSRUFERURfSFRNTF9QQVJTRVIpICQoRU5B
QkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxF
X1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykgJChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJ
QSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dFQl9BTklNQVRJT05TKSAkKEVOQUJMRV9XRUJf
QVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJM
RV9XT1JLRVJTKSAkKEVOQUJMRV9YSFJfVElNRU9VVCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVf
RlRMX0pJVCkgJChGRUFUVVJFX0RFRklORVNfJChQTEFURk9STV9OQU1FKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IGM0MTFkZDcuLjA0ODY1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0y
Nzk5LDYgKzI3OTksMTAgQEAgX19aTjdXZWJDb3JlMzJxbFByZXZpZXdDb252ZXJ0ZXJGaWxlTmFt
ZUZvclVSTEVQNU5TVVJMCiBfX1pON1dlYkNvcmUzM1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVU
eXBlc1NldEV2CiAjZW5kaWYKIAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorX19aTjdX
ZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjdkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmRF
UktOM1dURjZTdHJpbmdFCisjZW5kaWYKKwogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9G
UkFNRSkKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyNXNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnNF
ZAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI2MzRmYmUuLmE1ZDMyODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTMtMTAtMjEgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KKworICAgICAgICBVcHN0cmVhbSBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikgYW5kIGVuYWJs
ZSBvbiBpT1MgYW5kIE1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTIzMTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMy0xMC0x
NSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgRXhwb3NlIC1bV2Vi
UGx1Z2luUGFja2FnZSBidW5kbGVdIGFzIFNQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTA0YmM1NC4uN2FkMThkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMTYsOSAr
MzE2LDIyIEBACiAJCTkzRUIxNzhGMDlGODhENTEwMDkxRjhGRiAvKiBXZWJTeXN0ZW1JbnRlcmZh
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRUIx
NzhFMDlGODhENTEwMDkxRjhGRiAvKiBXZWJTeXN0ZW1JbnRlcmZhY2UuaCAqLzsgfTsKIAkJOTNG
REU5MzMwRDc5Q0FGMzAwNzRGMDI5IC8qIFdlYkhpc3RvcnlJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGREU5MzIwRDc5Q0FGMzAwNzRG
MDI5IC8qIFdlYkhpc3RvcnlJbnRlcm5hbC5oICovOyB9OwogCQlBMTdBMTFCMTE4MERDODQ4MDBF
NTQ5OEMgLyogV2ViUGx1Z2luUGFja2FnZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExN0ExMUIwMTgwREM4NDgwMEU1NDk4QyAvKiBXZWJQ
bHVnaW5QYWNrYWdlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUE1MjE0RkM3MTNCOTc1QzgwMDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JS
ZW1vdGVDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTIxNEZDMTEzQjk3NUM4MDAwMDE1RUYgLyogV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5l
bC5oICovOyB9OworCQlBNTIxNEZDODEzQjk3NUM4MDAwMDE1RUYgLyogV2ViSW5zcGVjdG9yUmVt
b3RlQ2hhbm5lbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1MjE0RkMyMTNCOTc1QzgwMDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVs
Lm1tICovOyB9OworCQlBNTIyMDlGODEzQzUzRTc1MDA0QkE3QjEgLyogV2ViSW5zcGVjdG9yUmVs
YXlEZWZpbml0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTUyMjA5RjcxM0M1M0U3NTAwNEJBN0IxIC8qIFdlYkluc3BlY3RvclJlbGF5RGVmaW5p
dGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBNTVFMjBGRjE0RDcyNjRDMDAzMTU0OUUgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nv
bm5lY3Rpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTVFMjBGRDE0RDcyNjRDMDAzMTU0OUUgLyogV2ViSW5zcGVjdG9yU2VydmVy
V2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmggKi87IH07CisJCUE1NUUyMTAwMTRENzI2NEMw
MDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTVFMjBG
RTE0RDcyNjRDMDAzMTU0OUUgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25D
b250cm9sbGVyLm1tICovOyB9OwogCQlBNTY4N0JEQTEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9k
ZUhpZ2hsaWdodGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTY4N0JEODEzNUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdodGVyLmggKi87
IH07CiAJCUE1Njg3QkRCMTM1Qjc5MUEwMDc0Q0JDQiAvKiBXZWJOb2RlSGlnaGxpZ2h0ZXIubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTY4N0JEOTEz
NUI3OTFBMDA3NENCQ0IgLyogV2ViTm9kZUhpZ2hsaWdodGVyLm1tICovOyB9OworCQlBNTdDMjhB
NzEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0MyOEEx
MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5o
ICovOyB9OworCQlBNTdDMjhBODEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVy
V2ViVmlld0Nvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTdDMjhBMjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVy
V2ViVmlld0Nvbm5lY3Rpb24ubW0gKi87IH07CisJCUE1N0MyOEE5MTNCQUE1QUQwMDcwQUNBQiAv
KiBXZWJJbnNwZWN0b3JTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1N0MyOEEzMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2
ZXIuaCAqLzsgfTsKKwkJQTU3QzI4QUExM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNl
cnZlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
N0MyOEE0MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIubW0gKi87IH07CisJ
CUE1N0MyOEFCMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdDMjhBNTEzQkFB
NUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1N0MyOEFDMTNCQUE1QUQwMDcwQUNB
QiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdDMjhBNjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVj
dG9yWFBDV3JhcHBlci5tICovOyB9OwogCQlBNTdFMkYyNDEyMDc0OUU2MDAwNDhERjMgLyogV2Vi
UXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTdFMkYyMjEyMDc0OUU2MDAwNDhERjMgLyogV2ViUXVvdGFNYW5hZ2VyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTU3RUI3OEYxM0I5
N0E0RTAwOEQ2OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdFQjc4RDEzQjk3QTRFMDA4RDY5
MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCAqLzsgfTsKKwkJQTU3RUI3OTAxM0I5
N0E0RTAwOEQ2OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RUI3OEUxM0I5N0E0RTAwOEQ2
OTFEIC8qIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tICovOyB9OwogCQlBNThBNTc5OTE0
M0U3MjcwMDAxMjVGNTAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OEE1Nzk3MTQzRTcyNzAwMDEy
NUY1MCAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oICovOyB9OwogCQlBNThBNTc5QTE0
M0U3MjcwMDAxMjVGNTAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNThBNTc5ODE0M0U3MjcwMDAx
MjVGNTAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW0gKi87IH07CiAJCUE1QzU2NkJE
MTI3QTNBRTUwMEU4QTNGRiAvKiBXZWJEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVDNTY2QkIxMjdBM0FFNTAw
RThBM0ZGIC8qIFdlYkRpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmggKi87IH07CkBAIC0zMzAsNiAr
MzQzLDcgQEAKIAkJQTVERUZDMTAxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFN
YW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTVERUZDMEUxMUQ1MzQzRTAwODg1MjczIC8qIFdlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLm1tICov
OyB9OwogCQlBNURFRkMxMzExRDUzNDRCMDA4ODUyNzMgLyogV2ViQXBwbGljYXRpb25DYWNoZVF1
b3RhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTVERUZDMTExMUQ1MzQ0QjAwODg1MjczIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1h
bmFnZXIuaCAqLzsgfTsKIAkJQTVERUZDMTQxMUQ1MzQ0QjAwODg1MjczIC8qIFdlYkFwcGxpY2F0
aW9uQ2FjaGVRdW90YU1hbmFnZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNURFRkMxMjExRDUzNDRCMDA4ODUyNzMgLyogV2ViQXBwbGljYXRpb25D
YWNoZVF1b3RhTWFuYWdlci5tbSAqLzsgfTsKKwkJQTVENjg3MTAxMUU2M0ZENzAwNEU3RTVEIC8q
IFdlYkluc3BlY3RvckNsaWVudElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1RThBRDU4MTgxNUIxNUUwMDMyRTMyNyAvKiBXZWJJbnNwZWN0b3JD
bGllbnRJT1MubW0gKi87IH07CiAJCUE3MDkzNkFGMEI1NjA4REMwMENEQjQ4RSAvKiBXZWJEcmFn
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NzA5MzZBRDBCNTYwOERDMDBDREI0OEUgLyogV2ViRHJhZ0NsaWVudC5oICovOyB9OwogCQlBNzA5
MzZCMDBCNTYwOERDMDBDREI0OEUgLyogV2ViRHJhZ0NsaWVudC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDkzNkFFMEI1NjA4REMwMENEQjQ4RSAv
KiBXZWJEcmFnQ2xpZW50Lm1tICovOyB9OwogCQlBODY0QjNGNjEyM0VEOUZBMDBDMkE2MTIgLyog
TWFpbFF1aXJrc1VzZXJTY3JpcHQuanMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE4NjRCM0U1MTIzRUQ4M0QwMEMyQTYxMiAvKiBNYWlsUXVpcmtzVXNl
clNjcmlwdC5qcyAqLzsgfTsKQEAgLTY0MCw5ICs2NTQsMjIgQEAKIAkJOUNBRTlEMDcwMjUyQTQx
MzBFQ0ExNkVBIC8qIFdlYlByZWZlcmVuY2VzUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlByZWZlcmVuY2VzUHJpdmF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJ
OUNGMEUyNDkwMjEzNjFCMDBFQ0ExNkVBIC8qIFdlYkZyYW1lUHJpdmF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZyYW1lUHJpdmF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsK
IAkJQTE3QTExQjAxODBEQzg0ODAwRTU0OThDIC8qIFdlYlBsdWdpblBhY2thZ2VQcml2YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBsdWdpblBhY2thZ2VQcml2YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MjE0RkMxMTNCOTc1QzgwMDAwMTVF
RiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaDsgcGF0aCA9IHJlbW90ZS9XZWJJ
bnNwZWN0b3JSZW1vdGVDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1
MjE0RkMyMTNCOTc1QzgwMDAwMTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yUmVtb3Rl
Q2hhbm5lbC5tbTsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTIyMDlGNzEzQzUzRTc1MDA0QkE3QjEgLyog
V2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmg7IHBhdGggPSByZW1vdGUvV2Vi
SW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBNTVFMjBGRDE0RDcyNjRDMDAzMTU0OUUgLyogV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nv
bm5lY3Rpb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdl
Ykluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5oOyBwYXRoID0gcmVt
b3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTVFMjBGRTE0RDcyNjRDMDAzMTU0OUUgLyogV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nv
bm5lY3Rpb25Db250cm9sbGVyLm1tOyBwYXRoID0gcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTU2ODdCRDgxMzVCNzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGlnaHRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOb2RlSGlnaGxpZ2h0ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU2ODdCRDkxMzVCNzkxQTAwNzRDQkNCIC8qIFdlYk5v
ZGVIaWdobGlnaHRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYk5vZGVIaWdobGlnaHRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU3
QzI4QTExM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclNlcnZl
cldlYlZpZXdDb25uZWN0aW9uLmg7IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2Vi
Vmlld0Nvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU3QzI4QTIx
M0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yU2Vy
dmVyV2ViVmlld0Nvbm5lY3Rpb24ubW07IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVy
V2ViVmlld0Nvbm5lY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1N0My
OEEzMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yU2VydmVyLmg7IHBhdGggPSByZW1vdGUv
V2ViSW5zcGVjdG9yU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1N0My
OEE0MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JTZXJ2ZXIubW07IHBhdGgg
PSByZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBNTdDMjhBNTEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JYUENXcmFwcGVy
Lmg7IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNTdDMjhBNjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9y
WFBDV3JhcHBlci5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IG5hbWUgPSBXZWJJbnNw
ZWN0b3JYUENXcmFwcGVyLm07IHBhdGggPSByZW1vdGUvV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTdFMkYyMjEyMDc0OUU2MDAwNDhERjMg
LyogV2ViUXVvdGFNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlF1b3RhTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTdFQjc4RDEz
Qjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaDsgcGF0
aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBNTdFQjc4RTEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xp
ZW50UmVnaXN0cnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBX
ZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbTsgcGF0aCA9IHJlbW90ZS9XZWJJbnNwZWN0b3JD
bGllbnRSZWdpc3RyeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4QTU3OTcx
NDNFNzI3MDAwMTI1RjUwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OEE1Nzk4MTQzRTcyNzAwMDEyNUY1MCAvKiBX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNUM1NjZCQjEyN0EzQUU1MDBFOEEzRkYgLyogV2ViRGlza0ltYWdl
Q2FjaGVDbGllbnRJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGlz
a0ltYWdlQ2FjaGVDbGllbnRJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1
NCw2ICs2ODEsNyBAQAogCQlBNURFRkMwRTExRDUzNDNFMDA4ODUyNzMgLyogV2ViRGF0YWJhc2VR
dW90YU1hbmFnZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTVERUZDMTExMUQ1MzQ0QjAwODg1MjczIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFn
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXBwbGljYXRpb25DYWNo
ZVF1b3RhTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNURFRkMxMjEx
RDUzNDRCMDA4ODUyNzMgLyogV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkFwcGxpY2F0aW9uQ2FjaGVR
dW90YU1hbmFnZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1RDY4NzBFMTFF
NjNGRDcwMDRFN0U1RCAvKiBXZWJJbnNwZWN0b3JDbGllbnRJT1MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JDbGllbnRJT1MubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDkzNkFEMEI1NjA4REMwMENEQjQ4RSAvKiBXZWJE
cmFnQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEcmFnQ2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MDkzNkFFMEI1NjA4REMwMENE
QjQ4RSAvKiBXZWJEcmFnQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYkRyYWdDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE4NjRCM0U1MTIzRUQ4M0QwMEMyQTYxMiAvKiBNYWlsUXVpcmtzVXNlclNjcmlwdC5qcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IE1haWxRdWlya3NVc2VyU2NyaXB0
LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTAxLDYgKzkyOSw3IEBACiAJCTFD
NjhGNjNGMDk1QjVGOUMwMEMyOTg0RSAvKiBXZWJJbnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUE1MjE0RkJGMTNCOTc1OTYwMDAwMTVFRiAv
KiByZW1vdGUgKi8sCiAJCQkJNUQ3QkY4MTIwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rv
ci5oICovLAogCQkJCTVEN0JGODEzMEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IubW0g
Ki8sCiAJCQkJQjgwNDE3NkQxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250ZW5k
LmggKi8sCkBAIC0xMDUwLDYgKzEwNzksNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQTVDNTY2
QkIxMjdBM0FFNTAwRThBM0ZGIC8qIFdlYkRpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmggKi8sCiAJ
CQkJQTVDNTY2QkMxMjdBM0FFNTAwRThBM0ZGIC8qIFdlYkRpc2tJbWFnZUNhY2hlQ2xpZW50SU9T
Lm1tICovLAorCQkJCUE1RDY4NzBFMTFFNjNGRDcwMDRFN0U1RCAvKiBXZWJJbnNwZWN0b3JDbGll
bnRJT1MubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IFdlYkNvcmVTdXBwb3J0OwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTEyNTUsNiArMTI4NSwyNiBAQAogCQkJdGFiV2lkdGggPSA0
OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQlBNTIxNEZCRjEzQjk3NTk2MDAwMDE1RUYgLyog
cmVtb3RlICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlB
NTdFQjc4RDEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkuaCAq
LywKKwkJCQlBNTdFQjc4RTEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVn
aXN0cnkubW0gKi8sCisJCQkJQTUyMjA5RjcxM0M1M0U3NTAwNEJBN0IxIC8qIFdlYkluc3BlY3Rv
clJlbGF5RGVmaW5pdGlvbnMuaCAqLywKKwkJCQlBNTIxNEZDMTEzQjk3NUM4MDAwMDE1RUYgLyog
V2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5oICovLAorCQkJCUE1MjE0RkMyMTNCOTc1QzgwMDAw
MTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tICovLAorCQkJCUE1N0MyOEEzMTNC
QUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXIuaCAqLywKKwkJCQlBNTdDMjhBNDEz
QkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yU2VydmVyLm1tICovLAorCQkJCUE1N0MyOEEx
MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5o
ICovLAorCQkJCUE1N0MyOEEyMTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJX
ZWJWaWV3Q29ubmVjdGlvbi5tbSAqLywKKwkJCQlBNTVFMjBGRDE0RDcyNjRDMDAzMTU0OUUgLyog
V2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmggKi8sCisJCQkJ
QTU1RTIwRkUxNEQ3MjY0QzAwMzE1NDlFIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25u
ZWN0aW9uQ29udHJvbGxlci5tbSAqLywKKwkJCQlBNTdDMjhBNTEzQkFBNUFEMDA3MEFDQUIgLyog
V2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oICovLAorCQkJCUE1N0MyOEE2MTNCQUE1QUQwMDcwQUNB
QiAvKiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyLm0gKi8sCisJCQkpOworCQkJbmFtZSA9IHJlbW90
ZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUY1MkNBNkJEMDJERjlEMEYw
MTg2MzVDQSAvKiBIVE1MICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKQEAgLTE1NDcsOCArMTU5NywxNSBAQAogCQkJCTkzOTgxMDE5MDgyNEJGMDEwMDhERjAzOCAv
KiBXZWJJY29uRGF0YWJhc2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RDdCRjgxNDBD
MkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNjY5
M0REQzBCRkJBODUyMDAyMTYwNzIgLyogV2ViSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQlBNTdFQjc4RjEzQjk3QTRFMDA4RDY5MUQgLyogV2ViSW5zcGVjdG9yQ2xpZW50UmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUI4MDQxNzZGMTIxN0E4MzEwMDQ2NkJBRSAvKiBX
ZWJJbnNwZWN0b3JGcm9udGVuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E4RkYwRDExMDc1MDI0
QTAwQTgwQTA4IC8qIFdlYkluc3BlY3RvclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1
MjIwOUY4MTNDNTNFNzUwMDRCQTdCMSAvKiBXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlBNTIxNEZDNzEzQjk3NUM4MDAwMDE1RUYgLyogV2ViSW5zcGVj
dG9yUmVtb3RlQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU3QzI4QTkxM0JBQTVBRDAw
NzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU3QzI4
QTcxM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTVFMjBGRjE0RDcyNjRDMDAzMTU0OUUgLyogV2ViSW5z
cGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQlBNTdDMjhBQjEzQkFBNUFEMDA3MEFDQUIgLyogV2ViSW5zcGVjdG9yWFBDV3JhcHBlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwNDIwODI0QkYwMTAwOERGMDM4IC8qIFdlYkphdmFT
Y3JpcHRUZXh0SW5wdXRQYW5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdEMURDQTgxMDY1OTI4
QzAwNjhGN0VGIC8qIFdlYkpTUERGRG9jLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTA4NTA4
MjRCRjAxMDA4REYwMzggLyogV2ViS2V5R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTE5
NTYsNyArMjAxMywxMyBAQAogCQkJCTVEN0JGODE1MEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNw
ZWN0b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNjY5M0RERDBCRkJBODUyMDAyMTYwNzIgLyog
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM3QjBDNjYwRUIyNDY0
RDAwQTI4NTAyIC8qIFdlYkluc3BlY3RvckNsaWVudENGLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUE1N0VCNzkwMTNCOTdBNEUwMDhENjkxRCAvKiBXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUI4MDQxNzcwMTIxN0E4MzEwMDQ2NkJBRSAvKiBXZWJJbnNw
ZWN0b3JGcm9udGVuZC5tbSBpbiBTb3VyY2VzICovLAorCQkJCUE1MjE0RkM4MTNCOTc1QzgwMDAw
MTVFRiAvKiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
QTU3QzI4QUExM0JBQTVBRDAwNzBBQ0FCIC8qIFdlYkluc3BlY3RvclNlcnZlci5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCUE1N0MyOEE4MTNCQUE1QUQwMDcwQUNBQiAvKiBXZWJJbnNwZWN0b3JTZXJ2
ZXJXZWJWaWV3Q29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCUE1NUUyMTAwMTRENzI2
NEMwMDMxNTQ5RSAvKiBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQlBNTdDMjhBQzEzQkFBNUFEMDA3MEFDQUIgLyogV2Vi
SW5zcGVjdG9yWFBDV3JhcHBlci5tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwRTQwODI0QkYw
MTAwOERGMDM4IC8qIFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMzdEMURDQTkxMDY1OTI4QzAwNjhGN0VGIC8qIFdlYkpTUERGRG9jLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTM5ODExMTcwODI0QkYwMTAwOERGMDM4IC8qIFdlYktleUdlbmVyYXRvci5t
bSBpbiBTb3VyY2VzICovLApAQCAtMTk5NSw2ICsyMDU4LDcgQEAKIAkJCQk2NUVFREU1ODA4NEZG
QzlFMDAwMkRCMjUgLyogV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTkzOTgxMEM3MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOU0ltYWdlRXh0cmFzLm0gaW4gU291
cmNlcyAqLywKIAkJCQk5MzRDNEE5MTBGMDE0MDZDMDA5MzcyQzAgLyogV2ViTlNPYmplY3RFeHRy
YXMubW0gaW4gU291cmNlcyAqLywKKwkJCQlBNUQ2ODcxMDExRTYzRkQ3MDA0RTdFNUQgLyogV2Vi
SW5zcGVjdG9yQ2xpZW50SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwQzgwODI0QkYw
MTAwOERGMDM4IC8qIFdlYk5TUGFzdGVib2FyZEV4dHJhcy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTkzOTgxMTE5MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJOU1ByaW50T3BlcmF0aW9uRXh0cmFzLm0g
aW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTExMjA4MjRCRjAxMDA4REYwMzggLyogV2ViTlNVUkxF
eHRyYXMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2YvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKaW5kZXggNmJlMzU3Yi4uNGMzMDU1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jZi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMC0yMSAgSm9zZXBoIFBl
Y29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFVwc3RyZWFtIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKSBhbmQgZW5hYmxlIG9uIGlPUyBhbmQgTWFjCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMxMTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudENGLmNwcDoKKwogMjAxMy0wNC0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBmcm9tIGNvbnN0cnVjdG9yIGFuZCBtZW1iZXIgZnVu
Y3Rpb24gYWRvcHRDRi9OUyB0byBmcmVlIGZ1bmN0aW9uIGFkb3B0Q0YvTlMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0Yu
Y3BwCmluZGV4IDEyMGUxZmQuLmNhMjJmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2Yv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCkBAIC05MSwxMCAr
OTEsMTIgQEAgc3RhdGljIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIHNldHRpbmcpCiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKGNyZWF0ZUtl
eUZvclByZWZlcmVuY2VzKGtleSkuZ2V0KCksIHNldHRpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwogfQogCisjaWYgIUVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQogYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9G
cm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgcmV0dXJuIGRvRGlzcGF0Y2hN
ZXNzYWdlT25Gcm9udGVuZFBhZ2UobV9mcm9udGVuZFBhZ2UsIG1lc3NhZ2UpOwogfQorI2VuZGlm
CiAKIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JBdHRhY2hEaXNhYmxlZCgpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2lvcy9DaGFuZ2VMb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDUwZjU4
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAtMCww
ICsxLDQ1IEBACisyMDEzLTEwLTIxICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5j
b20+CisKKyAgICAgICAgVXBzdHJlYW0gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpIGFuZCBlbmFi
bGUgb24gaU9TIGFuZCBNYWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMzExMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGlPUyBkb2VzIG5vdCBoYXZlIGEgbG9jYWwgaW5zcGVjdG9yLCBvbmx5IHJlbW90
ZS4gU28gZ2l2ZSBpdCBhIGN1c3RvbQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBzZXBhcmF0ZSBm
cm9tIHRoZSBXZWJLaXQvbWFjIFdlYkluc3BlY3RvckNsaWVudAorICAgICAgICBpbXBsZW1lbnRh
dGlvbiB3aGljaCBoYW5kbGVzIGFuIGF0dGFjaGluZy9kZXRhY2hpbmcgbG9jYWwgaW5zcGVjdG9y
LgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbTogQWRkZWQuCisg
ICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3JDbGllbnQ6OmJyaW5nRnJvbnRlbmRUb0Zyb250KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ckNsaWVudDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JD
bGllbnQ6OmRpZFJlc2l6ZU1haW5GcmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6
OmhpZ2hsaWdodCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZGVIaWdobGlnaHQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKToK
KyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAg
ICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpzZXR1cFJlbW90ZUNvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yQ2xpZW50Ojp0ZWFyZG93blJlbW90ZUNvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yQ2xpZW50OjpoYXNMb2NhbFNlc3Npb24pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yQ2xpZW50OjpjYW5CZVJlbW90ZWx5SW5zcGVjdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ckNsaWVudDo6aW5zcGVjdGVkV2ViVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OmF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmZyb250ZW5kTG9hZGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojpsb2NhbGl6ZWRTdHJpbmdzVVJMKToKKyAgICAgICAg
KFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpicmluZ1RvRnJvbnQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmNsb3NlV2luZG93KToKKyAgICAgICAgKFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpkaXNjb25uZWN0RnJvbUJhY2tlbmQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmF0dGFjaFdpbmRvdyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6ZGV0YWNoV2luZG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2V0VG9vbGJhckhlaWdodCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6aW5zcGVjdGVkVVJMQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6dXBkYXRlV2luZG93VGl0bGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZCk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFjYzJlZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbQpA
QCAtMCwwICsxLDIzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwg
MjAxMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldlYkluc3BlY3Rv
ckNsaWVudC5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJXZWJGcmFtZUludGVy
bmFsLmgiCisjaW1wb3J0ICJXZWJJbnNwZWN0b3IuaCIKKyNpbXBvcnQgIldlYk5TTm90aWZpY2F0
aW9uQ2VudGVyRXh0cmFzLmgiCisjaW1wb3J0ICJXZWJOb2RlSGlnaGxpZ2h0ZXIuaCIKKyNpbXBv
cnQgIldlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9s
bGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1BhZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZVRocmVhZC5oPgorI2ltcG9ydCA8d3RmL1Bhc3NPd25QdHIuaD4KKworI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQorI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0
cnkuaCIKKyNpbXBvcnQgIldlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwuaCIKKyNlbmRpZgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0
b3JDbGllbnQoV2ViVmlldyAqd2ViVmlldykKKyAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQorICAg
ICwgbV9oaWdobGlnaHRlcihBZG9wdE5TLCBbW1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5p
dFdpdGhJbnNwZWN0ZWRXZWJWaWV3OndlYlZpZXddKQorICAgICwgbV9mcm9udGVuZFBhZ2UoMCkK
KyAgICAsIG1fZnJvbnRlbmRDbGllbnQoMCkKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
KyAgICAsIG1fcmVtb3RlQ2hhbm5lbCgwKQorICAgICwgbV9wYWdlSWQoMCkKKyNlbmRpZgorewor
I2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIFtbV2ViSW5zcGVjdG9yQ2xpZW50UmVn
aXN0cnkgc2hhcmVkUmVnaXN0cnldIHJlZ2lzdGVyQ2xpZW50OnRoaXNdOworI2VuZGlmCit9CisK
K3ZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQoKQoreworI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIFtbV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkg
c2hhcmVkUmVnaXN0cnldIHVucmVnaXN0ZXJDbGllbnQ6dGhpc107CisgICAgdGVhcmRvd25SZW1v
dGVDb25uZWN0aW9uKHRydWUpOworI2VuZGlmCisKKyAgICBkZWxldGUgdGhpczsKK30KKworSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JG
cm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikKK3sKKyAgICAvLyBpT1MgZG9lcyBub3QgaGF2
ZSBhIGxvY2FsIGluc3BlY3RvciwgdGhpcyBzaG91bGQgbm90IGJlIHJlYWNoZWQuCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgV2ViSW5z
cGVjdG9yQ2xpZW50OjpicmluZ0Zyb250ZW5kVG9Gcm9udCgpCit7CisgICAgLy8gaU9TIGRvZXMg
bm90IGhhdmUgYSBsb2NhbCBpbnNwZWN0b3IsIG5vdGhpbmcgdG8gZG8gaGVyZS4KK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQoreworICAgIC8v
IGlPUyBkb2VzIG5vdCBoYXZlIGEgbG9jYWwgaW5zcGVjdG9yLCBub3RoaW5nIHRvIGRvIGhlcmUu
Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRSZXNpemVNYWluRnJhbWUoRnJhbWUq
KQoreworICAgIC8vIGlPUyBkb2VzIG5vdCBoYXZlIGEgbG9jYWwgaW5zcGVjdG9yLCBub3RoaW5n
IHRvIGRvIGhlcmUuCit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpoaWdobGlnaHQoKQor
eworICAgIFttX2hpZ2hsaWdodGVyLmdldCgpIGhpZ2hsaWdodF07Cit9CisKK3ZvaWQgV2ViSW5z
cGVjdG9yQ2xpZW50OjpoaWRlSGlnaGxpZ2h0KCkKK3sKKyAgICBbbV9oaWdobGlnaHRlci5nZXQo
KSBoaWRlSGlnaGxpZ2h0XTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNl
YXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKQoreworICAgIFdlYkluc3BlY3RvciAqaW5zcGVj
dG9yID0gW21fd2ViVmlldyBpbnNwZWN0b3JdOworCisgICAgaWYgKGVuYWJsZWQpCisgICAgICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk9u
TWFpblRocmVhZFdpdGhOYW1lOldlYkluc3BlY3RvckRpZFN0YXJ0U2VhcmNoaW5nRm9yTm9kZSBv
YmplY3Q6aW5zcGVjdG9yXTsKKyAgICBlbHNlCisgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50
ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk9uTWFpblRocmVhZFdpdGhOYW1lOldl
Ykluc3BlY3RvckRpZFN0b3BTZWFyY2hpbmdGb3JOb2RlIG9iamVjdDppbnNwZWN0b3JdOworfQor
CisjcHJhZ21hIG1hcmsgLQorI3ByYWdtYSBtYXJrIFJlbW90ZSBXZWIgSW5zcGVjdG9yIEltcGxl
bWVudGF0aW9uCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKK2Jvb2wgV2ViSW5zcGVj
dG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQor
eworICAgIGlmIChtX3JlbW90ZUNoYW5uZWwpIHsKKyAgICAgICAgW21fcmVtb3RlQ2hhbm5lbCBz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQ6bWVzc2FnZV07CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIC8vIGlPUyBkb2VzIG5vdCBoYXZlIGEgbG9jYWwgaW5zcGVjdG9yLiBUaGVyZSBz
aG91bGQgYmUgbm8gd2F5IHRvIHJlYWNoIHRoaXMuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKworICAgIHJldHVybiBkb0Rpc3BhdGNoTWVzc2FnZU9u
RnJvbnRlbmRQYWdlKG1fZnJvbnRlbmRQYWdlLCBtZXNzYWdlKTsKK30KKwordm9pZCBXZWJJbnNw
ZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
K3sKKyAgICBBU1NFUlQobV9yZW1vdGVDaGFubmVsKTsKKworICAgIFBhZ2UqIHBhZ2UgPSBjb3Jl
KG1fd2ViVmlldyk7CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNwYXRjaE1l
c3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7Cit9CisKK2Jvb2wgV2ViSW5zcGVjdG9yQ2xpZW50
OjpzZXR1cFJlbW90ZUNvbm5lY3Rpb24oV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAqcmVtb3Rl
Q2hhbm5lbCkKK3sKKyAgICAvLyBUaGVyZSBpcyBhbHJlYWR5IGEgbG9jYWwgc2Vzc2lvbiwgZG8g
bm90IGFsbG93IGEgcmVtb3RlIHNlc3Npb24uCisgICAgaWYgKGhhc0xvY2FsU2Vzc2lvbigpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGVyZSBpcyBhbHJlYWR5IGEgcmVtb3Rl
IHNlc3Npb24sIGRvIG5vdCBhbGxvdyBhIG5ldyByZW1vdGUgc2Vzc2lvbi4KKyAgICBpZiAobV9y
ZW1vdGVDaGFubmVsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3JlbW90ZUNoYW5u
ZWwgPSByZW1vdGVDaGFubmVsOworCisgICAgUGFnZSogcGFnZSA9IGNvcmUobV93ZWJWaWV3KTsK
KyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbm5lY3RGcm9udGVuZCh0aGlzKTsK
KworICAgIC8vIEZvcmNlIGRldmVsb3BlciBleHRyYXMgdG8gYmUgZW5hYmxlZCBpbiBXZWJDb3Jl
IHdoZW4gYSByZW1vdGUgY29ubmVjdGlvbiBzdGFydHMuCisgICAgaWYgKHBhZ2UtPnNldHRpbmdz
KCkpCisgICAgICAgIHBhZ2UtPnNldHRpbmdzKCktPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQo
dHJ1ZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6
OnRlYXJkb3duUmVtb3RlQ29ubmVjdGlvbihib29sIGZyb21Mb2NhbFNpZGUpCit7CisgICAgQVNT
RVJUKFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgpKTsKKyAgICBpZiAoIW1fcmVtb3RlQ2hh
bm5lbCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGZyb21Mb2NhbFNpZGUpCisgICAgICAg
IFttX3JlbW90ZUNoYW5uZWwgY2xvc2VGcm9tTG9jYWxTaWRlXTsKKworICAgIFBhZ2UqIHBhZ2Ug
PSBjb3JlKG1fd2ViVmlldyk7CisgICAgaWYgKHBhZ2UpIHsKKyAgICAgICAgcGFnZS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5kaXNjb25uZWN0RnJvbnRlbmQoKTsKKworICAgICAgICAvLyBSZXN0
b3JlIGRldmVsb3BlciBleHRyYXMgc2V0dGluZyBpbiBXZWJDb3JlLgorICAgICAgICBpZiAocGFn
ZSAmJiBwYWdlLT5zZXR0aW5ncygpKQorICAgICAgICAgICAgcGFnZS0+c2V0dGluZ3MoKS0+c2V0
RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChbW21fd2ViVmlldyBwcmVmZXJlbmNlc10gZGV2ZWxvcGVy
RXh0cmFzRW5hYmxlZF0pOworICAgIH0KKworICAgIGlmIChmcm9tTG9jYWxTaWRlKQorICAgICAg
ICBbbV9yZW1vdGVDaGFubmVsIHJlbGVhc2VdOworCisgICAgbV9yZW1vdGVDaGFubmVsID0gMDsK
K30KKworYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6Omhhc0xvY2FsU2Vzc2lvbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fZnJvbnRlbmRQYWdlICE9IDA7Cit9CisKK2Jvb2wgV2ViSW5zcGVjdG9y
Q2xpZW50OjpjYW5CZVJlbW90ZWx5SW5zcGVjdGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21f
d2ViVmlldyBjYW5CZVJlbW90ZWx5SW5zcGVjdGVkXTsKK30KKworV2ViVmlldyAqV2ViSW5zcGVj
dG9yQ2xpZW50OjppbnNwZWN0ZWRXZWJWaWV3KCkKK3sKKyAgICByZXR1cm4gbV93ZWJWaWV3Owor
fQorI2VuZGlmCisKKworI3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEgbWFyayBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudCBJbXBsZW1lbnRhdGlvbgorCitXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywg
V2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciogd2luZG93Q29udHJvbGxlciwgSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgUGFnZSogZnJvbnRlbmRQYWdlLCBXVEY6
OlBhc3NPd25QdHI8U2V0dGluZ3M+IHNldHRpbmdzKQorICAgIDogSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbChpbnNwZWN0b3JDb250cm9sbGVyLCAgZnJvbnRlbmRQYWdlLCBzZXR0aW5ncykK
K3sKKyAgICAvLyBpT1MgZG9lcyBub3QgaGF2ZSBhIGxvY2FsIGluc3BlY3RvciwgdGhpcyBzaG91
bGQgbm90IGJlIHJlYWNoZWQuCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChib29sKSB7
IH0KK3ZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmZyb250ZW5kTG9hZGVkKCkgeyB9
CitTdHJpbmcgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmxvY2FsaXplZFN0cmluZ3NVUkwo
KSB7IHJldHVybiBTdHJpbmcoKTsgfQordm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
YnJpbmdUb0Zyb250KCkgeyB9Cit2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpjbG9z
ZVdpbmRvdygpIHsgfQordm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZGlzY29ubmVj
dEZyb21CYWNrZW5kKCkgeyB9Cit2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRh
Y2hXaW5kb3coRG9ja1NpZGUpIHsgfQordm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
ZGV0YWNoV2luZG93KCkgeyB9Cit2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRB
dHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkgeyB9Cit2b2lkIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKSB7IH0KK3ZvaWQgV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldFRvb2xiYXJIZWlnaHQodW5zaWduZWQpIHsgfQor
dm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25z
dCBTdHJpbmcmKSB7IH0KK3ZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnVwZGF0ZVdp
bmRvd1RpdGxlKCkgY29uc3QgeyB9Cit2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojpz
YXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIHsgfQordm9pZCBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6YXBwZW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
IHsgfQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDNkYzVm
ZWIuLjAxMDA0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTgwLDE3ICs4MCwxNjIgQEAKICAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CiAgICAgICAgIChXZWJDaHJv
bWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CiAKLTIwMTMtMTAtMTUgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgorMjAxMy0xMC0yMSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgogCi0gICAgICAgIEFkZCBFTkFCTEVfV0VCX0FOSU1BVElPTlMgZmxhZwotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyODcxCisgICAgICAg
IFVwc3RyZWFtIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKSBhbmQgZW5hYmxlIG9uIGlPUyBhbmQg
TWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMx
MTEKIAotICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KIAotICAgICAgICBFdmVudHVhbGx5IG1pZ2h0IGJlIGh0dHA6Ly9k
ZXYudzMub3JnL2Z4dGYvd2ViLWFuaW1hdGlvbnMvCi0gICAgICAgIGJ1dCB0aGlzIGlzIGp1c3Qg
ZW5naW5lLWludGVybmFsIHdvcmsgYXQgdGhlIG1vbWVudC4KKyAgICAgICAgVGhlIGFjdHVhbCBp
bXBsZW1lbnRhdGlvbiBhdCB0aGUgV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50IGxl
dmVsCisgICAgICAgIGlzIHRoZSBzYW1lIGFzIElOU1BFQ1RPUl9TRVJWRVIuIEdpdmUgZGVidWdn
YWJsZSBwYWdlcyBhIHBhZ2VJZGVudGlmZXIuCiAKICAgICAgICAgKiBDb25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAgKiBNaXNjL1dlYktpdExvZ2dpbmcuaDoK
KyAgICAgICAgTWlzYy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpwYWdlSWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yQ2xpZW50OjpzZXRQYWdlSWQpOgorICAgICAgICBHaXZlIFdlYkluc3BlY3Rv
ckNsaWVudCdzIGEgcGFnZSBpZGVudGlmaWVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJ
bnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JE
ZXN0cm95ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJv
bnRlbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvQmFja2Vu
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OnNldHVwUmVtb3RlQ29ubmVjdGlvbik6
CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OnRlYXJkb3duUmVtb3RlQ29ubmVjdGlvbik6
CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Omhhc0xvY2FsU2Vzc2lvbik6CisgICAgICAg
IChXZWJJbnNwZWN0b3JDbGllbnQ6OmNhbkJlUmVtb3RlbHlJbnNwZWN0ZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0ZWRXZWJWaWV3KToKKyAgICAgICAgQSBXZWJJbnNw
ZWN0b3JDbGllbnQgY2FuIGJlIGVpdGhlciBsb2NhbCBvciByZW1vdGUuIEFkZCBoYW5kbGluZwor
ICAgICAgICBmb3IgcmVtb3RlIGNvbm5lY3Rpb25zLgorCisgICAgICAgICogV2ViSW5zcGVjdG9y
L3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5Lm1tOiBBZGRlZC4K
KyAgICAgICAgKCtbV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnldKToK
KyAgICAgICAgKC1bV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgaW5pdF0pOgorICAgICAgICAo
LVtXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBfZ2V0TmV4dEF2YWlsYWJsZVBhZ2VJZF0pOgor
ICAgICAgICAoLVtXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSByZWdpc3RlckNsaWVudDpdKToK
KyAgICAgICAgKC1bV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgdW5yZWdpc3RlckNsaWVudDpd
KToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgY2xpZW50Rm9yUGFnZUlk
Ol0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBpbnNwZWN0YWJsZVdl
YlZpZXdzXSk6CisgICAgICAgIFJlZ2lzdHJ5IGZvciBhbGwgcG90ZW50aWFsbHkgZGVidWdnYWJs
ZSBwYWdlcy4gQWxsIFdlYkluc3BlY3RvckNsaWVudCBpbnN0YW5jZXMuCisKKyAgICAgICAgKiBX
ZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaDogQWRkZWQu
CisgICAgICAgIENvbnN0YW50cyAobWVzc2FnZSBrZXlzKSBzaGFyZWQgYmV0d2VlbiBXZWJLaXQg
YW5kIHRoZSBYUEMgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUvV2Vi
SW5zcGVjdG9yU2VydmVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYkluc3BlY3Rvci9yZW1vdGUv
V2ViSW5zcGVjdG9yU2VydmVyLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yU2Vy
dmVyIGluaXRdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yU2VydmVyIGRlYWxsb2NdKToKKyAg
ICAgICAgKC1bV2ViSW5zcGVjdG9yU2VydmVyIHN0YXJ0XSk6CisgICAgICAgICgtW1dlYkluc3Bl
Y3RvclNlcnZlciBzdG9wXSk6CisgICAgICAgICgtW1dlYkluc3BlY3RvclNlcnZlciBpc0VuYWJs
ZWRdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yU2VydmVyIHhwY0Nvbm5lY3Rpb25dKToKKyAg
ICAgICAgKC1bV2ViSW5zcGVjdG9yU2VydmVyIHNldHVwWFBDQ29ubmVjdGlvbklmTmVlZGVkXSk6
CisgICAgICAgICgtW1dlYkluc3BlY3RvclNlcnZlciBwdXNoTGlzdGluZ10pOgorICAgICAgICAo
LVtXZWJJbnNwZWN0b3JTZXJ2ZXIgaGFzQWN0aXZlRGVidWdTZXNzaW9uXSk6CisgICAgICAgICgt
W1dlYkluc3BlY3RvclNlcnZlciBzZXRIYXNBY3RpdmVEZWJ1Z1Nlc3Npb246XSk6CisgICAgICAg
ICgtW1dlYkluc3BlY3RvclNlcnZlciB4cGNDb25uZWN0aW9uOnJlY2VpdmVkTWVzc2FnZTp1c2Vy
SW5mbzpdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yU2VydmVyIHhwY0Nvbm5lY3Rpb25GYWls
ZWQ6XSk6CisgICAgICAgICgtW1dlYkluc3BlY3RvclNlcnZlciBkaWRSZWdpc3RlckNsaWVudDpd
KToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yU2VydmVyIGRpZFVucmVnaXN0ZXJDbGllbnQ6XSk6
CisgICAgICAgIFNpbmdsZXRvbiB0byBzdGFydC9zdG9wIHJlbW90ZSBpbnNwZWN0aW9uLiBIYW5k
bGVzIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBYUEMKKyAgICAgICAgYW5kIGhhbmRzIG9mZiBjb25u
ZWN0aW9ucyB0byB0aGUgY29ubmVjdGlvbiBjb250cm9sbGVyLgorCisgICAgICAgICogV2ViSW5z
cGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5oOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yU2VydmVyV2Vi
Vmlld0Nvbm5lY3Rpb24gaW5pdFdpdGhDb250cm9sbGVyOmNvbm5lY3Rpb25JZGVudGlmaWVyOmRl
c3RpbmF0aW9uOmlkZW50aWZpZXI6XSk6CisgICAgICAgICgtW1dlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uIHNldHVwQ2hhbm5lbF0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JT
ZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkluc3BlY3Rv
clNlcnZlcldlYlZpZXdDb25uZWN0aW9uIGNvbm5lY3Rpb25JZGVudGlmaWVyXSk6CisgICAgICAg
ICgtW1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIGlkZW50aWZpZXJdKToKKyAg
ICAgICAgKC1bV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gY2xlYXJDaGFubmVs
XSk6CisgICAgICAgICgtW1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIHNlbmRN
ZXNzYWdlVG9Gcm9udGVuZDpdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yU2VydmVyV2ViVmll
d0Nvbm5lY3Rpb24gc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6XSk6CisgICAgICAgICgtW1dlYkluc3Bl
Y3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIHJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKC1b
V2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gcmVjZWl2ZWREaWRDbG9zZTpdKToK
KyAgICAgICAgQW4gaW5kaXZpZHVhbCByZW1vdGUgZGVidWcgc2Vzc2lvbiBjb25uZWN0aW9uLgor
CisgICAgICAgICogV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbkNvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViSW5zcGVjdG9yL3Jl
bW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIubW06IEFk
ZGVkLgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRy
b2xsZXIgaW5pdFdpdGhTZXJ2ZXI6XSk6CisgICAgICAgICgtW1dlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uQ29udHJvbGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkluc3Bl
Y3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlciBjbG9zZUFsbENvbm5lY3Rpb25z
XSk6CisgICAgICAgICgtW1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJv
bGxlciBfbGlzdGluZ0ZvcldlYlZpZXc6cGFnZUlkOnJlZ2lzdHJ5Ol0pOgorICAgICAgICAoLVtX
ZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgX3B1c2hMaXN0aW5n
Ol0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRy
b2xsZXIgcHVzaExpc3Rpbmc6XSk6CisgICAgICAgICgtW1dlYkluc3BlY3RvclNlcnZlcldlYlZp
ZXdDb25uZWN0aW9uQ29udHJvbGxlciBwdXNoTGlzdGluZ10pOgorICAgICAgICAoLVtXZWJJbnNw
ZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgX3JlY2VpdmVkU2V0dXA6XSk6
CisgICAgICAgICgtW1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxl
ciBfcmVjZWl2ZWREYXRhOl0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3
Q29ubmVjdGlvbkNvbnRyb2xsZXIgX3JlY2VpdmVkRGlkQ2xvc2U6XSk6CisgICAgICAgICgtW1dl
Ykluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlciBfcmVjZWl2ZWRHZXRM
aXN0aW5nOl0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlv
bkNvbnRyb2xsZXIgX3JlY2VpdmVkSW5kaWNhdGU6XSk6CisgICAgICAgICgtW1dlYkluc3BlY3Rv
clNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlciBfcmVjZWl2ZWRDb25uZWN0aW9uRGll
ZDpdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250
cm9sbGVyIHJlY2VpdmVkTWVzc2FnZTp1c2VySW5mbzpdKToKKyAgICAgICAgKC1bV2ViSW5zcGVj
dG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyIGNvbm5lY3Rpb25DbG9zaW5nOl0p
OgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xs
ZXIgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOnVzZXJJbmZvOl0pOgorICAgICAgICBDb25uZWN0aW9u
Q29udHJvbGxlcjoKKyAgICAgICAgICAtIEhvbGRzIGFsbCB0aGUgY3VycmVudCBvbmdvaW5nIHJl
bW90ZSBkZWJ1ZyBjb25uZWN0aW9ucy4KKyAgICAgICAgICAtIFNpbXBsaWZpZXMgbXVsdGktdGhy
ZWFkZWQgd29yayBvbiBpT1MuCisgICAgICAgICAgLSBEaXNwYXRjaGVzIGluY29taW5nIG1lc3Nh
Z2VzIGZyb20gdGhlIHJlbW90ZSBjb25uZWN0aW9uLgorCisgICAgICAgICogV2ViSW5zcGVjdG9y
L3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmg6IEFkZGVkLgorICAgICAgICAqIFdl
Ykluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbC5tbTogQWRkZWQuCisg
ICAgICAgICgrW1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgY3JlYXRlQ2hhbm5lbEZvclBhZ2VJ
ZDpjb25uZWN0aW9uOl0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsIGlu
aXRXaXRoUmVtb3RlOmxvY2FsOl0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JSZW1vdGVDaGFu
bmVsIGNsb3NlRnJvbUxvY2FsU2lkZV0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JSZW1vdGVD
aGFubmVsIGNsb3NlRnJvbVJlbW90ZVNpZGVdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yUmVt
b3RlQ2hhbm5lbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6XSk6CisgICAgICAgICgtW1dlYkluc3Bl
Y3RvclJlbW90ZUNoYW5uZWwgc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6XSk6CisgICAgICAgIFRoaW4g
aW50ZXJmYWNlIGJldHdlZW4gdGhlIHJlbW90ZSBjb25uZWN0aW9uIGFuZCB3ZWIgaW5zcGVjdG9y
IGNsaWVudC4KKyAgICAgICAgVGhpcyBzaW1wbGlmaWVzIGJyZWFraW5nIHRoZSBjb25uZWN0aW9u
IGZyb20gZWl0aGVyIHNpZGUsIGUuZy4gdGhlCisgICAgICAgIHBhZ2UgY2xvc2luZywgb3IgdGhl
IHJlbW90ZSBjb25uZWN0aW9uIGRpc2Nvbm5lY3RpbmcuCisKKyAgICAgICAgKiBXZWJJbnNwZWN0
b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaDogQWRkZWQuCisgICAgICAgICogV2Vi
SW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLm06IEFkZGVkLgorICAgICAg
ICAoLVtXZWJJbnNwZWN0b3JYUENXcmFwcGVyIGluaXRXaXRoQ29ubmVjdGlvbjpdKToKKyAgICAg
ICAgKC1bV2ViSW5zcGVjdG9yWFBDV3JhcHBlciBjbG9zZV0pOgorICAgICAgICAoLVtXZWJJbnNw
ZWN0b3JYUENXcmFwcGVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yWFBDV3Jh
cHBlciBfZGVzZXJpYWxpemVNZXNzYWdlOl0pOgorICAgICAgICAoLVtXZWJJbnNwZWN0b3JYUENX
cmFwcGVyIF9oYW5kbGVFdmVudDpdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yWFBDV3JhcHBl
ciBzZW5kTWVzc2FnZTp1c2VySW5mbzpdKToKKyAgICAgICAgKC1bV2ViSW5zcGVjdG9yWFBDV3Jh
cHBlciBhdmFpbGFibGVdKToKKyAgICAgICAgKiBXZWJLaXQuZXhwOgorICAgICAgICBYUEMgQ29u
bmVjdGlvbiB3cmFwcGVyIGhhbmRsaW5nIGEgc2ltcGxlIG1lc3NhZ2UgZm9ybWF0LgorCisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0Rh
dGEubW06CisgICAgICAgICgtW1dlYlZpZXdQcml2YXRlIGluaXRdKToKKyAgICAgICAgKC1bV2Vi
Vmlld1ByaXZhdGUgZGVhbGxvY10pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFs
Lmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25X
aXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAgKCtbV2ViVmlldyBzaGFyZWRXZWJJ
bnNwZWN0b3JTZXJ2ZXJdKToKKyAgICAgICAgKCtbV2ViVmlldyBfZW5hYmxlUmVtb3RlSW5zcGVj
dG9yXSk6CisgICAgICAgICgrW1dlYlZpZXcgX2Rpc2FibGVSZW1vdGVJbnNwZWN0b3JdKToKKyAg
ICAgICAgKCtbV2ViVmlldyBfZGlzYWJsZUF1dG9TdGFydFJlbW90ZUluc3BlY3Rvcl0pOgorICAg
ICAgICAoK1tXZWJWaWV3IF9pc1JlbW90ZUluc3BlY3RvckVuYWJsZWRdKToKKyAgICAgICAgKCtb
V2ViVmlldyBfaGFzUmVtb3RlSW5zcGVjdG9yU2Vzc2lvbl0pOgorICAgICAgICAoLVtXZWJWaWV3
IGNhbkJlUmVtb3RlbHlJbnNwZWN0ZWRdKToKKyAgICAgICAgKC1bV2ViVmlldyBhbGxvd3NSZW1v
dGVJbnNwZWN0aW9uXSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0QWxsb3dzUmVtb3RlSW5zcGVj
dGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRJbmRpY2F0aW5nRm9yUmVtb3RlSW5zcGVj
dG9yOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHNldFJlbW90ZUluc3BlY3RvclVzZXJJbmZvOl0p
OgorICAgICAgICAoLVtXZWJWaWV3IHJlbW90ZUluc3BlY3RvclVzZXJJbmZvXSk6CisgICAgICAg
IFJlbW90ZSBpbnNwZWN0b3IgcHJpdmF0ZSBBUEkuCisgICAgICAgICAgLSBFbmFibGUgLyBkaXNh
YmxlIGdsb2JhbGx5CisgICAgICAgICAgLSBBbGxvdyAvIGRpc2FsbG93IHBlciB3ZWJ2aWV3Cisg
ICAgICAgICAgLSBPcHRpb25hbGx5IGF0dGFjaCBhIHVzZXJJbmZvIGRpY3Rpb25hcnkgb24gdGhl
IFdlYlZpZXcgdGhhdCBpcyBwdWJsaXNoZWQgd2l0aCBsaXN0aW5nLgorICAgICAgICAgIC0gSW5k
aWNhdGUgYSBXZWJWaWV3IChpbXBsZW1lbnRhdGlvbiB0byBsYW5kIGxhdGVyKQorCisgICAgICAg
ICgtW1dlYlZpZXcgX2RpZENvbW1pdExvYWRGb3JGcmFtZTpdKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSk6CisgICAgICAgIFBhZ2VzIGNoYW5nZWQs
IHB1c2hlZCBwYWdlIGxpc3RpbmcuCiAKIDIwMTMtMTAtMTUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IDg0OTgxZTQuLjVjNTQ2OGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnCkBAIC0yMCw3ICsyMCw3IEBACiAvLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAvLyBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIC8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAvLyBUaGUg
Y29udGVudHMgb2YgdGhpcyBmaWxlIG11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggRmVhdHVyZURl
ZmluZXMueGNjb25maWcgaW4gSmF2YVNjcmlwdENvcmUsCiAvLyBXZWJDb3JlLCBXZWJLaXQgYW5k
IFdlYktpdDIuICBBbHNvIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgRU5BQkxFX0ZFQVRVUkVf
TkFNRSBtYWNyb3MgaW4KQEAgLTE1Nyw2ICsxNTcsNyBAQCBFTkFCTEVfUFVCTElDX1NVRkZJWF9M
SVNUX21hY29zeF8xMDgwID0gRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVDsKIEVOQUJMRV9QVUJM
SUNfU1VGRklYX0xJU1RfbWFjb3N4XzEwOTAgPSBFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUOwog
RU5BQkxFX1FVT1RBID0gOwogRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FID0gRU5BQkxF
X1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FOworRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IgPSBFTkFC
TEVfUkVNT1RFX0lOU1BFQ1RPUjsKIEVOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZID0gOwog
RU5BQkxFX1NDUklQVEVEX1NQRUVDSCA9IDsKIEVOQUJMRV9TSEFET1dfRE9NID0gOwpAQCAtMTg4
LDQgKzE4OSw0IEBAIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKIEVOQUJMRV9GVExfSklU
ID0gOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxF
X0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0FDSEVfUEFS
VElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFTX1BST1hZKSAk
KEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQpICQoRU5BQkxFX0NT
U19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVOQUJM
RV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19FWENMVVNJT05TKSAkKEVOQUJM
RV9DU1NfRklMVEVSUykgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9D
U1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19T
SEFERVJTKSAkKEVOQUJMRV9DU1NfU0hBUEVTKSAkKEVOQUJMRV9DU1NfU1RJQ0tZX1BPU0lUSU9O
KSAkKEVOQUJMRV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1VOUFJFRklYRUQpICQoRU5BQkxF
X0NTU19WQVJJQUJMRVMpICQoRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVMpICQoRU5BQkxF
X0NTUzNfVEVYVCkgJChFTkFCTEVfQ1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNP
Ul9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RB
U0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRB
X1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklD
RV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NNF9F
VkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0RSQUdHQUJMRV9SRUdJT04pICQoRU5BQkxFX0VO
Q1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxU
RVJTKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkg
JChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0hJRERFTl9Q
QUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5WQVMpICQoRU5B
QkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1FX1NFQU1MRVNTKSAkKEVOQUJMRV9JTkRF
WEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9W
RVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElN
RV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpICQoRU5BQkxF
X0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChFTkFCTEVfSU5Q
VVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9MRUdB
Q1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlMpICQo
RU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9XRUJfQVVESU8p
ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVESUFf
Q09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxFX01FRElBX1NU
QVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1MKSAkKEVOQUJM
RV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTKSAk
KEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlfQVBJKSAkKEVO
QUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QTFVHSU5fUFJPWFlfRk9SX1ZJREVPKSAkKEVO
QUJMRV9QUk9HUkVTU19FTEVNRU5UKSAkKEVOQUJMRV9QUk9NSVNFUykgJChFTkFCTEVfUFJPWElN
SVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9UQSkg
JChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1JFU09MVVRJT05fTUVE
SUFfUVVFUlkpICQoRU5BQkxFX1NDUklQVEVEX1NQRUVDSCkgJChFTkFCTEVfU0hBRE9XX0RPTSkg
JChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5B
QkxFX1NRTF9EQVRBQkFTRSkgJChFTkFCTEVfU1VCUElYRUxfTEFZT1VUKSAkKEVOQUJMRV9TVUJU
TEVfQ1JZUFRPKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVN
UExBVEVfRUxFTUVOVCkgJChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9USFJFQURF
RF9IVE1MX1BBUlNFUikgJChFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VS
U0VMRUNUX0FMTCkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJM
RV9WSUVXX01PREVfQ1NTX01FRElBKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FOSU1B
VElPTlMpICQoRU5BQkxFX1dFQl9BVURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxF
X1dFQl9USU1JTkcpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVO
QUJMRV9YU0xUKSAkKEVOQUJMRV9GVExfSklUKSAkKEZFQVRVUkVfREVGSU5FU18kKFBMQVRGT1JN
X05BTUUpKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFC
TEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAkKEVOQUJMRV9CTE9CKSAkKEVOQUJMRV9DQUNIRV9Q
QVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJPWFkp
ICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVf
Q1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09NUE9TSVRJTkcpICQoRU5B
QkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0VYQ0xVU0lPTlMpICQoRU5B
QkxFX0NTU19GSUxURVJTKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxF
X0NTU19JTUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NT
X1NIQURFUlMpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTU19TVElDS1lfUE9TSVRJ
T04pICQoRU5BQkxFX0NTU19UUkFOU0ZPUk1TX0FOSU1BVElPTlNfVU5QUkVGSVhFRCkgJChFTkFC
TEVfQ1NTX1ZBUklBQkxFUykgJChFTkFCTEVfQ1NTM19DT05ESVRJT05BTF9SVUxFUykgJChFTkFC
TEVfQ1NTM19URVhUKSAkKEVOQUJMRV9DU1MzX1RFWFRfTElORV9CUkVBSykgJChFTkFCTEVfQ1VS
U09SX1ZJU0lCSUxJVFkpICQoRU5BQkxFX0NVU1RPTV9TQ0hFTUVfSEFORExFUikgJChFTkFCTEVf
REFTSEJPQVJEX1NVUFBPUlQpICQoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQpICQoRU5BQkxFX0RB
VEFfVFJBTlNGRVJfSVRFTVMpICQoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCkgJChFTkFCTEVfREVW
SUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET000
X0VWRU5UU19DT05TVFJVQ1RPUikgJChFTkFCTEVfRFJBR0dBQkxFX1JFR0lPTikgJChFTkFCTEVf
RU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjIpICQoRU5BQkxFX0ZJ
TFRFUlMpICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJ
KSAkKEVOQUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSElEREVO
X1BBR0VfRE9NX1RJTUVSX1RIUk9UVExJTkcpICQoRU5BQkxFX0hJR0hfRFBJX0NBTlZBUykgJChF
TkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JRlJBTUVfU0VBTUxFU1MpICQoRU5BQkxFX0lO
REVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9Q
T1ZFUikgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVU
SU1FX0lOQ09NUExFVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkgJChFTkFC
TEVfSU5QVVRfVFlQRV9NT05USCkgJChFTkFCTEVfSU5QVVRfVFlQRV9USU1FKSAkKEVOQUJMRV9J
TlBVVF9UWVBFX1dFRUspICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX0xF
R0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfTk9USUZJQ0FUSU9OUykg
JChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX1dFQl9BVURJ
TykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJ
QV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFf
U1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVfTUhUTUwpICQoRU5B
QkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NPTlRFTlRfVVRJTFMp
ICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX1BBR0VfVklTSUJJTElUWV9BUEkpICQo
RU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BMVUdJTl9QUk9YWV9GT1JfVklERU8pICQo
RU5BQkxFX1BST0dSRVNTX0VMRU1FTlQpICQoRU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9Y
SU1JVFlfRVZFTlRTKSAkKEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RB
KSAkKEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVNT1RFX0lOU1BF
Q1RPUikgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfU0NSSVBURURf
U1BFRUNIKSAkKEVOQUJMRV9TSEFET1dfRE9NKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChF
TkFCTEVfU1BFRUNIX1NZTlRIRVNJUykgJChFTkFCTEVfU1FMX0RBVEFCQVNFKSAkKEVOQUJMRV9T
VUJQSVhFTF9MQVlPVVQpICQoRU5BQkxFX1NVQlRMRV9DUllQVE8pICQoRU5BQkxFX1NWRykgJChF
TkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9URU1QTEFURV9FTEVNRU5UKSAkKEVOQUJMRV9URVhU
X0FVVE9TSVpJTkcpICQoRU5BQkxFX1RIUkVBREVEX0hUTUxfUEFSU0VSKSAkKEVOQUJMRV9UT1VD
SF9JQ09OX0xPQURJTkcpICQoRU5BQkxFX1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykg
JChFTkFCTEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5B
QkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQU5JTUFUSU9OUykgJChFTkFCTEVfV0VCX0FVRElPKSAk
KEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV09SS0VS
UykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5BQkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQp
ICQoRkVBVFVSRV9ERUZJTkVTXyQoUExBVEZPUk1fTkFNRSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvTWlzYy9XZWJLaXRMb2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNj
L1dlYktpdExvZ2dpbmcuaAppbmRleCA4ZDZiYjgzLi4zZTFkYTFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdExvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9NaXNjL1dlYktpdExvZ2dpbmcuaApAQCAtNjAsNiArNjAsNyBAQCBleHRlcm4gIkMiIHsKICAg
ICBNKFBsdWdpbnMpIFwKICAgICBNKFByb2dyZXNzKSBcCiAgICAgTShSZWRpcmVjdCkgXAorICAg
IE0oUmVtb3RlSW5zcGVjdG9yKSBcCiAgICAgTShUZXh0SW5wdXQpIFwKICAgICBNKFRpbWluZykg
XAogICAgIE0oVmlldykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBkZDUyNjM1Li5mOGNiMTM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbQpAQCAtMTM4LDYgKzEzOCwxMCBAQAogI2ltcG9ydCAiV2ViSG9zdGVk
TmV0c2NhcGVQbHVnaW5WaWV3LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQorI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCisjZW5kaWYKKwogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCkBAIC02MTcsNiAr
NjIxLDEyIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRp
dGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpCiAgICAgaWYgKGltcGxlbWVudGF0aW9u
cy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jKQogICAgICAgICAvLyBGSVhNRTogdXNlIGRp
cmVjdGlvbiBvZiB0aXRsZS4KICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVu
dGF0aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Io
d2ViVmlldzpkaWRSZWNlaXZlVGl0bGU6Zm9yRnJhbWU6KSwgKE5TU3RyaW5nICopdGl0bGUuc3Ry
aW5nKCksIG1fd2ViRnJhbWUuZ2V0KCkpOworCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CisgICAgQk9PTCBpc01haW5GcmFtZSA9IFt3ZWJWaWV3IG1haW5GcmFtZV0gPT0gbV93ZWJGcmFt
ZS5nZXQoKTsKKyAgICBpZiAoaXNNYWluRnJhbWUpCisgICAgICAgIFtbV2ViVmlldyBzaGFyZWRX
ZWJJbnNwZWN0b3JTZXJ2ZXJdIHB1c2hMaXN0aW5nXTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaAppbmRleCAxM2UwMGM0Li5lMGQyY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMzgsMTEg
KzM4LDEzIEBACiAKICNpZmRlZiBfX09CSkNfXwogQGNsYXNzIE5TVVJMOworQGNsYXNzIFdlYklu
c3BlY3RvclJlbW90ZUNoYW5uZWw7CiBAY2xhc3MgV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxl
cjsKIEBjbGFzcyBXZWJOb2RlSGlnaGxpZ2h0ZXI7CiBAY2xhc3MgV2ViVmlldzsKICNlbHNlCiBj
bGFzcyBOU1VSTDsKK2NsYXNzIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWw7CiBjbGFzcyBXZWJJ
bnNwZWN0b3JXaW5kb3dDb250cm9sbGVyOwogY2xhc3MgV2ViTm9kZUhpZ2hsaWdodGVyOwogY2xh
c3MgV2ViVmlldzsKQEAgLTgxLDYgKzgzLDIyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVsZWFz
ZUZyb250ZW5kKCk7CiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICB2b2lkIHNl
bmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYpOworCisgICAgYm9vbCBzZXR1cFJlbW90
ZUNvbm5lY3Rpb24oV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAqcmVtb3RlQ2hhbm5lbCk7Cisg
ICAgdm9pZCB0ZWFyZG93blJlbW90ZUNvbm5lY3Rpb24oYm9vbCBmcm9tTG9jYWxTaWRlKTsKKwor
ICAgIHVuc2lnbmVkIHBhZ2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlkOyB9CisgICAgdm9p
ZCBzZXRQYWdlSWQodW5zaWduZWQgcGFnZUlkKSB7IG1fcGFnZUlkID0gcGFnZUlkOyB9CisKKyAg
ICBib29sIGhhc0xvY2FsU2Vzc2lvbigpIGNvbnN0OworCisgICAgYm9vbCBjYW5CZVJlbW90ZWx5
SW5zcGVjdGVkKCkgY29uc3Q7CisKKyAgICBXZWJWaWV3ICppbnNwZWN0ZWRXZWJWaWV3KCk7Cisj
ZW5kaWYKKwogcHJpdmF0ZToKICAgICBQYXNzT3duUHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPiBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCk7CiAKQEAg
LTg4LDYgKzEwNiwxMSBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxXZWJOb2RlSGlnaGxpZ2h0
ZXI+IG1faGlnaGxpZ2h0ZXI7CiAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7CiAg
ICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1fZnJvbnRlbmRDbGllbnQ7CisKKyNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsICpt
X3JlbW90ZUNoYW5uZWw7CisgICAgdW5zaWduZWQgbV9wYWdlSWQ7CisjZW5kaWYKIH07CiAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Lm1tCmluZGV4IDg2NDhkNDYuLmMzOGU4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTU1LDYg
KzU1LDExIEBACiAjaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQv
QmFzZTY0Lmg+CiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyNpbXBvcnQgIldlYklu
c3BlY3RvckNsaWVudFJlZ2lzdHJ5LmgiCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JSZW1vdGVDaGFu
bmVsLmgiCisjZW5kaWYKKwogU09GVF9MSU5LX1NUQUdFRF9GUkFNRVdPUksoV2ViSW5zcGVjdG9y
VUksIFByaXZhdGVGcmFtZXdvcmtzLCBBKQogCiAvLyBUaGUgbWFyZ2luIGZyb20gdGhlIHRvcCBh
bmQgcmlnaHQgb2YgdGhlIGRvY2sgYnV0dG9uIChzYW1lIGFzIHRoZSBmdWxsIHNjcmVlbiBidXR0
b24pLgpAQCAtMTMwLDExICsxMzUsMjMgQEAgV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0
b3JDbGllbnQoV2ViVmlldyAqd2ViVmlldykKICAgICAsIG1faGlnaGxpZ2h0ZXIoYWRvcHROUyhb
W1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3OndlYlZp
ZXddKSkKICAgICAsIG1fZnJvbnRlbmRQYWdlKDApCiAgICAgLCBtX2Zyb250ZW5kQ2xpZW50KDAp
CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgLCBtX3JlbW90ZUNoYW5uZWwoMCkK
KyAgICAsIG1fcGFnZUlkKDApCisjZW5kaWYKIHsKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKKyAgICBbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJlZ2lzdHJ5XSByZWdp
c3RlckNsaWVudDp0aGlzXTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6
aW5zcGVjdG9yRGVzdHJveWVkKCkKIHsKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAg
ICBbW1dlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJlZ2lzdHJ5XSB1bnJlZ2lzdGVy
Q2xpZW50OnRoaXNdOworICAgIHRlYXJkb3duUmVtb3RlQ29ubmVjdGlvbih0cnVlKTsKKyNlbmRp
ZgorCiAgICAgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpOwogICAgIGRlbGV0ZSB0aGlzOwogfQpA
QCAtMTg2LDYgKzIwMyw4MSBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250
ZW5kKCkKICAgICBtX2Zyb250ZW5kUGFnZSA9IDA7CiB9CiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKK2Jvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmIChtX3JlbW90ZUNoYW5uZWwpIHsKKyAg
ICAgICAgW21fcmVtb3RlQ2hhbm5lbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6bWVzc2FnZV07Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBkb0Rpc3BhdGNoTWVzc2Fn
ZU9uRnJvbnRlbmRQYWdlKG1fZnJvbnRlbmRQYWdlLCBtZXNzYWdlKTsKK30KKwordm9pZCBXZWJJ
bnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKK3sKKyAgICBBU1NFUlQobV9yZW1vdGVDaGFubmVsKTsKKworICAgIFBhZ2UqIHBhZ2UgPSBj
b3JlKG1fd2ViVmlldyk7CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNwYXRj
aE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7Cit9CisKK2Jvb2wgV2ViSW5zcGVjdG9yQ2xp
ZW50OjpzZXR1cFJlbW90ZUNvbm5lY3Rpb24oV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbCAqcmVt
b3RlQ2hhbm5lbCkKK3sKKyAgICAvLyBUaGVyZSBpcyBhbHJlYWR5IGEgbG9jYWwgc2Vzc2lvbiwg
ZG8gbm90IGFsbG93IGEgcmVtb3RlIHNlc3Npb24uCisgICAgaWYgKGhhc0xvY2FsU2Vzc2lvbigp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGVyZSBpcyBhbHJlYWR5IGEgcmVt
b3RlIHNlc3Npb24sIGRvIG5vdCBhbGxvdyBhIG5ldyByZW1vdGUgc2Vzc2lvbi4KKyAgICBpZiAo
bV9yZW1vdGVDaGFubmVsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBBU1NFUlQoW1tt
X3dlYlZpZXcgcHJlZmVyZW5jZXNdIGRldmVsb3BlckV4dHJhc0VuYWJsZWRdKTsKKworICAgIG1f
cmVtb3RlQ2hhbm5lbCA9IHJlbW90ZUNoYW5uZWw7CisKKyAgICBQYWdlKiBwYWdlID0gY29yZSht
X3dlYlZpZXcpOworICAgIHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29ubmVjdEZyb250
ZW5kKHRoaXMpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yQ2xp
ZW50Ojp0ZWFyZG93blJlbW90ZUNvbm5lY3Rpb24oYm9vbCBmcm9tTG9jYWxTaWRlKQoreworICAg
IGlmICghbV9yZW1vdGVDaGFubmVsKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZnJvbUxv
Y2FsU2lkZSkKKyAgICAgICAgW21fcmVtb3RlQ2hhbm5lbCBjbG9zZUZyb21Mb2NhbFNpZGVdOwor
CisgICAgUGFnZSogcGFnZSA9IGNvcmUobV93ZWJWaWV3KTsKKyAgICBpZiAocGFnZSkgeworICAg
ICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpc2Nvbm5lY3RGcm9udGVuZCgpOwor
ICAgIH0KKworICAgIGlmIChmcm9tTG9jYWxTaWRlKQorICAgICAgICBbbV9yZW1vdGVDaGFubmVs
IHJlbGVhc2VdOworCisgICAgbV9yZW1vdGVDaGFubmVsID0gMDsKK30KKworYm9vbCBXZWJJbnNw
ZWN0b3JDbGllbnQ6Omhhc0xvY2FsU2Vzc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJv
bnRlbmRQYWdlICE9IDA7Cit9CisKK2Jvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpjYW5CZVJlbW90
ZWx5SW5zcGVjdGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fd2ViVmlldyBjYW5CZVJlbW90
ZWx5SW5zcGVjdGVkXTsKK30KKworV2ViVmlldyAqV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0
ZWRXZWJWaWV3KCkKK3sKKyAgICByZXR1cm4gbV93ZWJWaWV3OworfQorI2VuZGlmCisKKwogV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZp
ZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIqIHdpbmRv
d0NvbnRyb2xsZXIsIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIFBh
Z2UqIGZyb250ZW5kUGFnZSwgV1RGOjpQYXNzT3duUHRyPFNldHRpbmdzPiBzZXR0aW5ncykKICAg
ICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoaW5zcGVjdG9yQ29udHJvbGxlciwgIGZy
b250ZW5kUGFnZSwgc2V0dGluZ3MpCiAgICAgLCBtX2luc3BlY3RlZFdlYlZpZXcoaW5zcGVjdGVk
V2ViVmlldykKQEAgLTc3Nyw1ICs4NjksNCBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50OjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZwogICAg
IHJldHVybiBZRVM7CiB9CiAKLQogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3Ry
eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhNWIyZTMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3Bl
Y3RvckNsaWVudFJlZ2lzdHJ5LmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisKK2Ns
YXNzIFdlYkluc3BlY3RvckNsaWVudDsKKworQHByb3RvY29sIFdlYkluc3BlY3RvckNsaWVudFJl
Z2lzdHJ5RGVsZWdhdGUKKy0gKHZvaWQpZGlkUmVnaXN0ZXJDbGllbnQ6KFdlYkluc3BlY3RvckNs
aWVudCopY2xpZW50OworLSAodm9pZClkaWRVbnJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0b3JD
bGllbnQqKWNsaWVudDsKK0BlbmQKKworQGludGVyZmFjZSBXZWJJbnNwZWN0b3JDbGllbnRSZWdp
c3RyeSA6IE5TT2JqZWN0IHsKK0Bwcml2YXRlCisgICAgdW5zaWduZWQgX25leHRBdmFpbGFibGVQ
YWdlSWQ7CisgICAgSGFzaE1hcDx1bnNpZ25lZCwgV2ViSW5zcGVjdG9yQ2xpZW50Kj4gX3BhZ2VD
bGllbnRNYXA7CisgICAgaWQgPFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5RGVsZWdhdGU+IF9k
ZWxlZ2F0ZTsKK30KKworQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaWQgPFdlYkluc3Bl
Y3RvckNsaWVudFJlZ2lzdHJ5RGVsZWdhdGU+IGRlbGVnYXRlOworCisrIChXZWJJbnNwZWN0b3JD
bGllbnRSZWdpc3RyeSAqKXNoYXJlZFJlZ2lzdHJ5OworCistICh2b2lkKXJlZ2lzdGVyQ2xpZW50
OihXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVudDsKKy0gKHZvaWQpdW5yZWdpc3RlckNsaWVudDoo
V2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnQ7CistIChXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVu
dEZvclBhZ2VJZDoodW5zaWduZWQpcGFnZUlkOworLSAoTlNEaWN0aW9uYXJ5ICopaW5zcGVjdGFi
bGVXZWJWaWV3czsKKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5z
cGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA5NDhkNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9y
Q2xpZW50UmVnaXN0cnkubW0KQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisK
KyNpbXBvcnQgIldlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5LmgiCisKKyNpbXBvcnQgIldlYklu
c3BlY3RvckNsaWVudC5oIgorI2ltcG9ydCAiV2ViVmlld1ByaXZhdGUuaCIKKworQGltcGxlbWVu
dGF0aW9uIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5CisKK0BzeW50aGVzaXplIGRlbGVnYXRl
ID0gX2RlbGVnYXRlOworCisrIChXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSAqKXNoYXJlZFJl
Z2lzdHJ5Cit7CisgICAgc3RhdGljIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5ICpzaGFyZWRS
ZWdpc3RyeSA9IFtbV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgYWxsb2NdIGluaXRdOworICAg
IHJldHVybiBzaGFyZWRSZWdpc3RyeTsKK30KKworLSAoaWQpaW5pdAoreworICAgIHNlbGYgPSBb
c3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
X25leHRBdmFpbGFibGVQYWdlSWQgPSAxOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHVu
c2lnbmVkKV9nZXROZXh0QXZhaWxhYmxlUGFnZUlkCit7CisgICAgLy8gQm91bmRhcnkgdmFsdWVz
LCAwIGFuZCBVSU5UX01BWCwgYXJlIGludmFsaWQgSGFzaE1hcCBrZXlzLgorICAgIHVuc2lnbmVk
IG5leHRWYWxpZFBhZ2VJZDsKKyAgICBkbyB7CisgICAgICAgIG5leHRWYWxpZFBhZ2VJZCA9IF9u
ZXh0QXZhaWxhYmxlUGFnZUlkKys7CisgICAgfSB3aGlsZSAoIW5leHRWYWxpZFBhZ2VJZCB8fCBu
ZXh0VmFsaWRQYWdlSWQgPT0gVUlOVF9NQVggfHwgX3BhZ2VDbGllbnRNYXAuY29udGFpbnMobmV4
dFZhbGlkUGFnZUlkKSk7CisgICAgcmV0dXJuIG5leHRWYWxpZFBhZ2VJZDsKK30KKworLSAodm9p
ZClyZWdpc3RlckNsaWVudDooV2ViSW5zcGVjdG9yQ2xpZW50KiljbGllbnQKK3sKKyAgICB1bnNp
Z25lZCBwYWdlSWQgPSBbc2VsZiBfZ2V0TmV4dEF2YWlsYWJsZVBhZ2VJZF07CisgICAgX3BhZ2VD
bGllbnRNYXAuc2V0KHBhZ2VJZCwgY2xpZW50KTsKKyAgICBjbGllbnQtPnNldFBhZ2VJZChwYWdl
SWQpOworICAgIFtfZGVsZWdhdGUgZGlkUmVnaXN0ZXJDbGllbnQ6Y2xpZW50XTsKK30KKworLSAo
dm9pZCl1bnJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQqKWNsaWVudAoreworICAg
IHVuc2lnbmVkIHBhZ2VJZCA9IGNsaWVudC0+cGFnZUlkKCk7CisgICAgX3BhZ2VDbGllbnRNYXAu
cmVtb3ZlKHBhZ2VJZCk7CisgICAgW19kZWxlZ2F0ZSBkaWRVbnJlZ2lzdGVyQ2xpZW50OmNsaWVu
dF07Cit9CisKKy0gKFdlYkluc3BlY3RvckNsaWVudCopY2xpZW50Rm9yUGFnZUlkOih1bnNpZ25l
ZClwYWdlSWQKK3sKKyAgICByZXR1cm4gX3BhZ2VDbGllbnRNYXAuZ2V0KHBhZ2VJZCk7Cit9CisK
Ky0gKE5TRGljdGlvbmFyeSAqKWluc3BlY3RhYmxlV2ViVmlld3MKK3sKKyAgICBOU011dGFibGVE
aWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeVdp
dGhDYXBhY2l0eTpfcGFnZUNsaWVudE1hcC5zaXplKCldOworCisgICAgSGFzaE1hcDx1bnNpZ25l
ZCwgV2ViSW5zcGVjdG9yQ2xpZW50Kj46Oml0ZXJhdG9yIGVuZCA9IF9wYWdlQ2xpZW50TWFwLmVu
ZCgpOworICAgIGZvciAoSGFzaE1hcDx1bnNpZ25lZCwgV2ViSW5zcGVjdG9yQ2xpZW50Kj46Oml0
ZXJhdG9yIGl0ID0gX3BhZ2VDbGllbnRNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Cisg
ICAgICAgIFdlYlZpZXcgKndlYlZpZXcgPSBpdC0+dmFsdWUtPmluc3BlY3RlZFdlYlZpZXcoKTsK
KyAgICAgICAgaWYgKCFbd2ViVmlldyBjYW5CZVJlbW90ZWx5SW5zcGVjdGVkXSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIE5TTnVtYmVyICpwYWdlSWQgPSBbTlNOdW1iZXIgbnVt
YmVyV2l0aFVuc2lnbmVkSW50Oml0LT5rZXldOworICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmpl
Y3Q6d2ViVmlldyBmb3JLZXk6cGFnZUlkXTsKKyAgICB9CisKKyAgICByZXR1cm4gZGljdGlvbmFy
eTsKK30KKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
Ykluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZWxheURlZmluaXRp
b25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E5ZmUxNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5z
cGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkluc3BlY3RvclJlbGF5
RGVmaW5pdGlvbnNfaAorI2RlZmluZSBXZWJJbnNwZWN0b3JSZWxheURlZmluaXRpb25zX2gKKwor
Ly8gV0lSQ29uc3RhbnRzIGFyZSAiV2ViIEluc3BlY3RvciBSZWxheSIgY29uc3RhbnRzIHNoYXJl
ZCBiZXR3ZWVuCisvLyB0aGUgV2ViSW5zcGVjdG9yIGZyYW1ld29yayBvbiB0aGUgT1MgWCBzaWRl
LCB3ZWJpbnNwZWN0b3JkLCBhbmQKKy8vIFdlYktpdCBvbiB0aGUgZGVidWdnYWJsZSBhcHBsaWNh
dGlvbiBzaWRlLgorCisjZGVmaW5lIFdJUlNpbXVsYXRvclRDUFBvcnROdW1iZXIgICAgICAgICAg
ICAgICAyNzc1MworI2RlZmluZSBXSVJYUENNYWNoUG9ydE5hbWUgICAgICAgICAgICAgICAgICAg
ICAgImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiCisjZGVmaW5lIFdJUlNlcnZpY2VBdmFpbGFibGVO
b3RpZmljYXRpb24gICAgICAgICAiY29tLmFwcGxlLndlYmluc3BlY3RvcmQuYXZhaWxhYmxlIgor
I2RlZmluZSBXSVJTZXJ2aWNlQXZhaWxhYmlsaXR5Q2hlY2tOb3RpZmljYXRpb24gImNvbS5hcHBs
ZS53ZWJpbnNwZWN0b3JkLmF2YWlsYWJpbGl0eV9jaGVjayIKKyNkZWZpbmUgV0lSU2VydmljZUVu
YWJsZWROb3RpZmljYXRpb24gICAgICAgICAgICJjb20uYXBwbGUud2ViaW5zcGVjdG9yZC5lbmFi
bGVkIgorI2RlZmluZSBXSVJTZXJ2aWNlRGlzYWJsZWROb3RpZmljYXRpb24gICAgICAgICAgImNv
bS5hcHBsZS53ZWJpbnNwZWN0b3JkLmRpc2FibGVkIgorCisKKyNkZWZpbmUgV0lSQXBwbGljYXRp
b25JZGVudGlmaWVyS2V5ICAgICAgICAgICAgIEAiV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5
IgorI2RlZmluZSBXSVJBcHBsaWNhdGlvbk5hbWVLZXkgICAgICAgICAgICAgICAgICAgQCJXSVJB
cHBsaWNhdGlvbk5hbWVLZXkiCisjZGVmaW5lIFdJUklzQXBwbGljYXRpb25Qcm94eUtleSAgICAg
ICAgICAgICAgICBAIldJUklzQXBwbGljYXRpb25Qcm94eUtleSIKKyNkZWZpbmUgV0lSSG9zdEFw
cGxpY2F0aW9uSWRlbnRpZmllcktleSAgICAgICAgIEAiV0lSSG9zdEFwcGxpY2F0aW9uSWRlbnRp
ZmllcktleSIKKyNkZWZpbmUgV0lSSG9zdEFwcGxpY2F0aW9uTmFtZUtleSAgICAgICAgICAgICAg
IEAiV0lSSG9zdEFwcGxpY2F0aW9uTmFtZUtleSIKKyNkZWZpbmUgV0lSQ29ubmVjdGlvbklkZW50
aWZpZXJLZXkgICAgICAgICAgICAgIEAiV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXkiCisjZGVm
aW5lIFdJUlBhZ2VJZGVudGlmaWVyS2V5ICAgICAgICAgICAgICAgICAgICBAIldJUlBhZ2VJZGVu
dGlmaWVyS2V5IgorI2RlZmluZSBXSVJIYXNMb2NhbERlYnVnZ2VyS2V5ICAgICAgICAgICAgICAg
ICAgQCJXSVJIYXNMb2NhbERlYnVnZ2VyS2V5IgorI2RlZmluZSBXSVJUaXRsZUtleSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQCJXSVJUaXRsZUtleSIKKyNkZWZpbmUgV0lSVVJMS2V5ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSVVJMS2V5IgorI2RlZmluZSBXSVJVc2Vy
SW5mb0tleSAgICAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJVc2VySW5mb0tleSIKKyNkZWZp
bmUgV0lSQXBwbGljYXRpb25EaWN0aW9uYXJ5S2V5ICAgICAgICAgICAgIEAiV0lSQXBwbGljYXRp
b25EaWN0aW9uYXJ5S2V5IgorI2RlZmluZSBXSVJNZXNzYWdlRGF0YUtleSAgICAgICAgICAgICAg
ICAgICAgICAgQCJXSVJNZXNzYWdlRGF0YUtleSIKKyNkZWZpbmUgV0lSQXBwbGljYXRpb25HZXRM
aXN0aW5nTWVzc2FnZSAgICAgICAgIEAiV0lSQXBwbGljYXRpb25HZXRMaXN0aW5nTWVzc2FnZSIK
KyNkZWZpbmUgV0lSSW5kaWNhdGVNZXNzYWdlICAgICAgICAgICAgICAgICAgICAgIEAiV0lSSW5k
aWNhdGVNZXNzYWdlIgorI2RlZmluZSBXSVJJbmRpY2F0ZUVuYWJsZWRLZXkgICAgICAgICAgICAg
ICAgICAgQCJXSVJJbmRpY2F0ZUVuYWJsZWRLZXkiCisjZGVmaW5lIFdJUlNlbmRlcktleSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBAIldJUlNlbmRlcktleSIKKyNkZWZpbmUgV0lSU29ja2V0
RGF0YUtleSAgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSU29ja2V0RGF0YUtleSIKKyNkZWZp
bmUgV0lSU29ja2V0RGF0YU1lc3NhZ2UgICAgICAgICAgICAgICAgICAgIEAiV0lSU29ja2V0RGF0
YU1lc3NhZ2UiCisjZGVmaW5lIFdJUlNvY2tldFNldHVwTWVzc2FnZSAgICAgICAgICAgICAgICAg
ICBAIldJUlNvY2tldFNldHVwTWVzc2FnZSIKKyNkZWZpbmUgV0lSV2ViUGFnZUNsb3NlTWVzc2Fn
ZSAgICAgICAgICAgICAgICAgIEAiV0lSV2ViUGFnZUNsb3NlTWVzc2FnZSIKKyNkZWZpbmUgV0lS
UmF3RGF0YU1lc3NhZ2UgICAgICAgICAgICAgICAgICAgICAgIEAiV0lSUmF3RGF0YU1lc3NhZ2Ui
CisjZGVmaW5lIFdJUlJhd0RhdGFLZXkgICAgICAgICAgICAgICAgICAgICAgICAgICBAIldJUlJh
d0RhdGFLZXkiCisjZGVmaW5lIFdJUkxpc3RpbmdNZXNzYWdlICAgICAgICAgICAgICAgICAgICAg
ICBAIldJUkxpc3RpbmdNZXNzYWdlIgorI2RlZmluZSBXSVJMaXN0aW5nS2V5ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQCJXSVJMaXN0aW5nS2V5IgorI2RlZmluZSBXSVJEZXN0aW5hdGlvbktl
eSAgICAgICAgICAgICAgICAgICAgICAgQCJXSVJEZXN0aW5hdGlvbktleSIKKyNkZWZpbmUgV0lS
Q29ubmVjdGlvbkRpZWRNZXNzYWdlICAgICAgICAgICAgICAgIEAiV0lSQ29ubmVjdGlvbkRpZWRN
ZXNzYWdlIgorCisvLyBUaGVzZSBkZWZpbml0aW9ucyBhcmUgc2hhcmVkIHdpdGggYSBTaW11bGF0
b3Igd2ViaW5zcGVjdG9yZCBhbmQKKy8vIE9TIFggcHJvY2VzcyBjb21tdW5pY2F0aW5nIHdpdGgg
aXQuCisKKyNkZWZpbmUgV0lSU2ltdWxhdG9yQnVpbGRLZXkgICAgICAgICAgICAgICAgICAgIEAi
V0lSU2ltdWxhdG9yQnVpbGRLZXkiCisjZGVmaW5lIFdJUlNpbXVsYXRvclByb2R1Y3RWZXJzaW9u
S2V5ICAgICAgICAgICBAIldJUlNpbXVsYXRvclByb2R1Y3RWZXJzaW9uS2V5IgorI2RlZmluZSBX
SVJTaW11bGF0b3JOYW1lS2V5ICAgICAgICAgICAgICAgICAgICAgQCJXSVJTaW11bGF0b3JOYW1l
S2V5IgorCisvLyBUaGVzZSBkZWZpbml0aW9ucyBhcmUgc2hhcmVkIGJldHdlZW4gd2ViaW5zcGVj
dG9yZCBhbmQgV2ViS2l0LgorCisjZGVmaW5lIFdJUlBlcm1pc3Npb25EZW5pZWQgICAgICAgICAg
ICAgICAgICAgICBAIldJUlBlcm1pc3Npb25EZW5pZWQiCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVD
aGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3Bl
Y3RvclJlbW90ZUNoYW5uZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j
MzIwZmRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9y
L3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLmgKQEAgLTAsMCArMSw0MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2NsYXNzIFdlYkluc3Bl
Y3RvckNsaWVudDsKK0BjbGFzcyBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbjsK
KworQGludGVyZmFjZSBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsIDogTlNPYmplY3QgeworQHBy
aXZhdGUKKyAgICBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqX3JlbW90ZTsK
KyAgICBXZWJJbnNwZWN0b3JDbGllbnQqIF9sb2NhbDsKK30KKworKyAoV2ViSW5zcGVjdG9yUmVt
b3RlQ2hhbm5lbCAqKWNyZWF0ZUNoYW5uZWxGb3JQYWdlSWQ6KHVuc2lnbmVkKXBhZ2VJZCBjb25u
ZWN0aW9uOihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqKWNvbm5lY3Rpb247
CisKKy0gKHZvaWQpY2xvc2VGcm9tTG9jYWxTaWRlOworLSAodm9pZCljbG9zZUZyb21SZW1vdGVT
aWRlOworLSAodm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsK
Ky0gKHZvaWQpc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKKworQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJ
bnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9y
L3JlbW90ZS9XZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmM4ZmZjZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwubW0KQEAg
LTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbXBvcnQgIldlYkluc3BlY3Rv
clJlbW90ZUNoYW5uZWwuaCIKKworI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50LmgiCisjaW1w
b3J0ICJXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeS5oIgorI2ltcG9ydCAiV2ViSW5zcGVjdG9y
U2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaCIKKyNpbXBvcnQgIldlYktpdExvZ2dpbmcuaCIKKyNp
bXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworQGludGVyZmFjZSBXZWJJbnNwZWN0b3JSZW1v
dGVDaGFubmVsICgpCistIChpZClpbml0V2l0aFJlbW90ZTooV2ViSW5zcGVjdG9yU2VydmVyV2Vi
Vmlld0Nvbm5lY3Rpb24gKilyZW1vdGUgbG9jYWw6KFdlYkluc3BlY3RvckNsaWVudCopbG9jYWw7
CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsCisKKysg
KFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKiljcmVhdGVDaGFubmVsRm9yUGFnZUlkOih1bnNp
Z25lZClwYWdlSWQgY29ubmVjdGlvbjooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rp
b24gKiljb25uZWN0aW9uCit7CisgICAgLy8gR2V0IHRoZSBJbnNwZWN0b3IgY2xpZW50LiBJdHMg
cG9zc2libGUgdGhlIHBhZ2UgY2xvc2VkIGJlZm9yZSB0aGUgcmVtb3RlIGNsaWVudCByZXF1ZXN0
ZWQgaXQuCisgICAgV2ViSW5zcGVjdG9yQ2xpZW50ICppbnNwZWN0b3JDbGllbnQgPSBbW1dlYklu
c3BlY3RvckNsaWVudFJlZ2lzdHJ5IHNoYXJlZFJlZ2lzdHJ5XSBjbGllbnRGb3JQYWdlSWQ6cGFn
ZUlkXTsKKyAgICBpZiAoIWluc3BlY3RvckNsaWVudCkgeworICAgICAgICBMT0coUmVtb3RlSW5z
cGVjdG9yLCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbDogUGFnZSByZXF1ZXN0ZWQgbm8gbG9u
Z2VyIGV4aXN0czogKCV1KSIsIHBhZ2VJZCk7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQor
CisgICAgLy8gVGhlIFdlYlZpZXcgZG9lcyBub3QgYWxsb3cgcmVtb3RlIGluc3BlY3Rpb24uCisg
ICAgaWYgKCFpbnNwZWN0b3JDbGllbnQtPmNhbkJlUmVtb3RlbHlJbnNwZWN0ZWQoKSkgeworICAg
ICAgICBMT0coUmVtb3RlSW5zcGVjdG9yLCAiV2ViSW5zcGVjdG9yUmVtb3RlQ2hhbm5lbDogV2Vi
VmlldyBmb3IgUGFnZSAoJXUpIGRvZXMgbm90IGFsbG93IHJlbW90ZSBpbnNwZWN0aW9uLiIsIHBh
Z2VJZCk7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAgLy8gVGhlIGNoYW5uZWwg
aXMgcmVsZWFzZWQgYnkgd2hpY2hldmVyIHNpZGUgY2xvc2VzIHRoZSBjaGFubmVsLiBUaGUgY2hh
bm5lbCBjb3VsZCBiZSBjbG9zZWQKKyAgICAvLyByZW1vdGVseSBieSB0aGUgc29ja2V0IGNsb3Np
bmcgKHRoZSB1c2VyIG5hdmlnYXRpbmcgYXdheSBmcm9tIHRoZSByZW1vdGUgaW5zcGVjdG9yIHBh
Z2UpLgorICAgIC8vIEl0IGNvdWxkIGJlIGNsb3NlZCBsb2NhbGx5IGJ5IHRoZSBQYWdlIGJlaW5n
IGRlc3Ryb3llZCwgbGlrZSB0aGUgYnJvd3NlciBvciB0YWIgYmVpbmcgY2xvc2VkLgorICAgIC8v
IFNldHRpbmcgdXAgdGhlIGNvbm5lY3Rpb24gY2FuIGZhaWwgaWYgdGhlcmUgaXMgYWxyZWFkeSBh
biBleGlzdGluZyBzZXNzaW9uLgorICAgIFdlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgKmNoYW5u
ZWwgPSBbW1dlYkluc3BlY3RvclJlbW90ZUNoYW5uZWwgYWxsb2NdIGluaXRXaXRoUmVtb3RlOmNv
bm5lY3Rpb24gbG9jYWw6aW5zcGVjdG9yQ2xpZW50XTsKKyAgICBpZiAoIWluc3BlY3RvckNsaWVu
dC0+c2V0dXBSZW1vdGVDb25uZWN0aW9uKGNoYW5uZWwpKSB7CisgICAgICAgIExPRyhSZW1vdGVJ
bnNwZWN0b3IsICJXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVsOiBTZXR0aW5nIHVwIGEgcmVtb3Rl
IHNlc3Npb24gZmFpbGVkLiBQcm9iYWJseSBhbHJlYWR5IGEgbG9jYWwgc2Vzc2lvbi4iKTsKKyAg
ICAgICAgW2NoYW5uZWwgcmVsZWFzZV07CisgICAgICAgIGNoYW5uZWwgPSBuaWw7CisgICAgICAg
IHJldHVybiBuaWw7CisgICAgfQorCisgICAgcmV0dXJuIGNoYW5uZWw7Cit9CisKKy0gKGlkKWlu
aXRXaXRoUmVtb3RlOihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbiAqKXJlbW90
ZSBsb2NhbDooV2ViSW5zcGVjdG9yQ2xpZW50Kilsb2NhbAoreworICAgIHNlbGYgPSBbc3VwZXIg
aW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3JlbW90
ZSA9IHJlbW90ZTsKKyAgICBfbG9jYWwgPSBsb2NhbDsKKworICAgIHJldHVybiBzZWxmOworfQor
CistICh2b2lkKWNsb3NlRnJvbUxvY2FsU2lkZQoreworICAgIC8vIExvY2FsIHNpZGUgd2lsbCBy
ZWxlYXNlLiBNYWtlIHN1cmUgdGhlIHJlbW90ZSBzaWRlIGNsZWFycyBpdHMgcmVmZXJlbmNlIHRv
IHRoZSBjaGFubmVsLgorICAgIFtfcmVtb3RlIGNsZWFyQ2hhbm5lbF07Cit9CisKKy0gKHZvaWQp
Y2xvc2VGcm9tUmVtb3RlU2lkZQoreworICAgIC8vIFJlbW90ZSBzaWRlIHdpbGwgcmVsZWFzZS4g
TWFrZSBzdXJlIHRoZSBsb2NhbCBzaWRlIGNsZWFycyBpdHMgcmVmZXJlbmNlIHRvIHRoZSBjaGFu
bmVsLgorICAgIF9sb2NhbC0+dGVhcmRvd25SZW1vdGVDb25uZWN0aW9uKGZhbHNlKTsKK30KKwor
LSAodm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZQoreworICAg
IFtfcmVtb3RlIHNlbmRNZXNzYWdlVG9Gcm9udGVuZDptZXNzYWdlXTsKK30KKworLSAodm9pZClz
ZW5kTWVzc2FnZVRvQmFja2VuZDooTlNTdHJpbmcgKiltZXNzYWdlCit7CisgICAgX2xvY2FsLT5z
ZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKTsKK30KKworQGVuZAorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9y
U2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3Bl
Y3RvclNlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNjc5MGYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3Rl
L1dlYkluc3BlY3RvclNlcnZlci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JDbGllbnRS
ZWdpc3RyeS5oIgorCitAY2xhc3MgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25D
b250cm9sbGVyOworQGNsYXNzIFdlYkluc3BlY3RvclhQQ1dyYXBwZXI7CisKK0BpbnRlcmZhY2Ug
V2ViSW5zcGVjdG9yU2VydmVyIDogTlNPYmplY3QgPFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5
RGVsZWdhdGU+IHsKK0Bwcml2YXRlCisgICAgQk9PTCBfaXNFbmFibGVkOworICAgIEJPT0wgX2hh
c0FjdGl2ZURlYnVnU2Vzc2lvbjsKKyAgICBpbnQgX25vdGlmeVRva2VuOworICAgIFdlYkluc3Bl
Y3RvclhQQ1dyYXBwZXIgKl94cGNDb25uZWN0aW9uOworICAgIFdlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uQ29udHJvbGxlciAqX2Nvbm5lY3Rpb25Db250cm9sbGVyOworfQorCist
ICh2b2lkKXN0YXJ0OworLSAodm9pZClzdG9wOworLSAoQk9PTClpc0VuYWJsZWQ7CistICh2b2lk
KXB1c2hMaXN0aW5nOworCistIChCT09MKWhhc0FjdGl2ZURlYnVnU2Vzc2lvbjsKKy0gKHZvaWQp
c2V0SGFzQWN0aXZlRGVidWdTZXNzaW9uOihCT09MKWhhc1Nlc3Npb247CisKKy0gKFdlYkluc3Bl
Y3RvclhQQ1dyYXBwZXIgKil4cGNDb25uZWN0aW9uOworCitAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlci5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVy
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjOWE3M2EKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3Bl
Y3RvclNlcnZlci5tbQpAQCAtMCwwICsxLDIwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2lt
cG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCisKKyNpbXBvcnQgIldlYkluc3BlY3RvckNsaWVu
dC5oIgorI2ltcG9ydCAiV2ViSW5zcGVjdG9yUmVsYXlEZWZpbml0aW9ucy5oIgorI2ltcG9ydCAi
V2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmgiCisjaW1wb3J0
ICJXZWJJbnNwZWN0b3JYUENXcmFwcGVyLmgiCisjaW1wb3J0ICJXZWJWaWV3UHJpdmF0ZS5oIgor
I2ltcG9ydCA8bm90aWZ5Lmg+CisjaW1wb3J0IDx4cGMveHBjLmg+CisKKworI3ByYWdtYSBtYXJr
IC0KKyNwcmFnbWEgbWFyayBQcml2YXRlIENsYXNzIERldGFpbHMKKworQGludGVyZmFjZSBXZWJJ
bnNwZWN0b3JTZXJ2ZXIgKCkgPFdlYkluc3BlY3RvclhQQ1dyYXBwZXJEZWxlZ2F0ZT4KKy0gKHZv
aWQpc2V0dXBYUENDb25uZWN0aW9uSWZOZWVkZWQ7CistICh2b2lkKXhwY0Nvbm5lY3Rpb246KFdl
Ykluc3BlY3RvclhQQ1dyYXBwZXIgKiljb25uZWN0aW9uIHJlY2VpdmVkTWVzc2FnZTooTlNTdHJp
bmcgKiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm87CistICh2
b2lkKXhwY0Nvbm5lY3Rpb25GYWlsZWQ6KFdlYkluc3BlY3RvclhQQ1dyYXBwZXIgKiljb25uZWN0
aW9uOworQGVuZAorCisKKyNwcmFnbWEgbWFyayAtCisjcHJhZ21hIG1hcmsgU2VydmVyIEltcGxl
bWVudGF0aW9uCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJJbnNwZWN0b3JTZXJ2ZXIKKworLSAoaWQp
aW5pdAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgX2Nvbm5lY3Rpb25Db250cm9sbGVyID0gW1tXZWJJbnNwZWN0
b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoU2VydmVy
OnNlbGZdOworCisgICAgW1tXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3Ry
eV0gc2V0RGVsZWdhdGU6c2VsZl07CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClk
ZWFsbG9jCit7CisgICAgLy8gU2luZ2xldG9uIGlzIG5vdCBleHBlY3RlZCB0byBiZSByZWxlYXNl
ZC4KKworICAgIFtzZWxmIHN0b3BdOworCisgICAgQVNTRVJUKCFfeHBjQ29ubmVjdGlvbik7Cisg
ICAgW19jb25uZWN0aW9uQ29udHJvbGxlciByZWxlYXNlXTsKKworICAgIFtbV2ViSW5zcGVjdG9y
Q2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnldIHNldERlbGVnYXRlOm5pbF07CisKKyAgICBb
c3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpc3RhcnQKK3sKKyAgICBpZiAoX2lzRW5hYmxl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgX2lzRW5hYmxlZCA9IFlFUzsKKworICAgIG5vdGlm
eV9yZWdpc3Rlcl9kaXNwYXRjaChXSVJTZXJ2aWNlQXZhaWxhYmxlTm90aWZpY2F0aW9uLCAmX25v
dGlmeVRva2VuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKGludCB0b2tlbikgeworICAg
ICAgICBbc2VsZiBzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRlZF07CisgICAgfSk7CisKKyAgICBu
b3RpZnlfcG9zdChXSVJTZXJ2aWNlQXZhaWxhYmlsaXR5Q2hlY2tOb3RpZmljYXRpb24pOworfQor
CistICh2b2lkKXN0b3AKK3sKKyAgICBpZiAoIV9pc0VuYWJsZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIF9pc0VuYWJsZWQgPSBOTzsKKworICAgIFtfY29ubmVjdGlvbkNvbnRyb2xsZXIgY2xv
c2VBbGxDb25uZWN0aW9uc107CisKKyAgICBpZiAoX3hwY0Nvbm5lY3Rpb24pIHsKKyAgICAgICAg
W194cGNDb25uZWN0aW9uIGNsb3NlXTsKKyAgICAgICAgX3hwY0Nvbm5lY3Rpb24uZGVsZWdhdGUg
PSBuaWw7CisgICAgICAgIFtfeHBjQ29ubmVjdGlvbiByZWxlYXNlXTsKKyAgICAgICAgX3hwY0Nv
bm5lY3Rpb24gPSBuaWw7CisgICAgfQorCisgICAgbm90aWZ5X2NhbmNlbChfbm90aWZ5VG9rZW4p
OworfQorCistIChCT09MKWlzRW5hYmxlZAoreworICAgIHJldHVybiBfaXNFbmFibGVkOworfQor
CistIChXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopeHBjQ29ubmVjdGlvbgoreworICAgIHJldHVy
biBfeHBjQ29ubmVjdGlvbjsKK30KKworLSAodm9pZClzZXR1cFhQQ0Nvbm5lY3Rpb25JZk5lZWRl
ZAoreworICAgIGlmIChfeHBjQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgeHBj
X2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uID0geHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2Vy
dmljZShXSVJYUENNYWNoUG9ydE5hbWUsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIDApOwor
ICAgIGlmIChjb25uZWN0aW9uKSB7CisgICAgICAgIF94cGNDb25uZWN0aW9uID0gW1tXZWJJbnNw
ZWN0b3JYUENXcmFwcGVyIGFsbG9jXSBpbml0V2l0aENvbm5lY3Rpb246Y29ubmVjdGlvbl07Cisg
ICAgICAgIF94cGNDb25uZWN0aW9uLmRlbGVnYXRlID0gc2VsZjsKKyAgICAgICAgW194cGNDb25u
ZWN0aW9uIHNlbmRNZXNzYWdlOkAic3luIiB1c2VySW5mbzpuaWxdOworICAgICAgICB4cGNfcmVs
ZWFzZShjb25uZWN0aW9uKTsKKyAgICB9Cit9CisKKy0gKHZvaWQpcHVzaExpc3RpbmcKK3sKKyAg
ICBpZiAoIV9pc0VuYWJsZWQgfHwgIV94cGNDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisK
KyAgICBbX2Nvbm5lY3Rpb25Db250cm9sbGVyIHB1c2hMaXN0aW5nXTsKK30KKworLSAoQk9PTClo
YXNBY3RpdmVEZWJ1Z1Nlc3Npb24KK3sKKyAgICByZXR1cm4gX2hhc0FjdGl2ZURlYnVnU2Vzc2lv
bjsKK30KKworLSAodm9pZClzZXRIYXNBY3RpdmVEZWJ1Z1Nlc3Npb246KEJPT0wpaGFzU2Vzc2lv
bgoreworICAgIGlmIChfaGFzQWN0aXZlRGVidWdTZXNzaW9uID09IGhhc1Nlc3Npb24pCisgICAg
ICAgIHJldHVybjsKKworICAgIF9oYXNBY3RpdmVEZWJ1Z1Nlc3Npb24gPSBoYXNTZXNzaW9uOwor
CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0
aW9uTmFtZTpfV2ViVmlld1JlbW90ZUluc3BlY3Rvckhhc1Nlc3Npb25DaGFuZ2VkTm90aWZpY2F0
aW9uIG9iamVjdDpuaWxdOworfQorCisKKyNwcmFnbWEgbWFyayAtCisjcHJhZ21hIG1hcmsgV2Vi
SW5zcGVjdG9yWFBDV3JhcHBlckRlbGVnYXRlIEltcGxlbWVudGF0aW9uCisKKy0gKHZvaWQpeHBj
Q29ubmVjdGlvbjooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKXhwY0Nvbm5lY3Rpb24gcmVjZWl2
ZWRNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkg
Kil1c2VySW5mbworeworICAgIEFTU0VSVCh4cGNDb25uZWN0aW9uID09IF94cGNDb25uZWN0aW9u
KTsKKworICAgIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUlBlcm1pc3Npb25E
ZW5pZWRdKQorICAgICAgICBbc2VsZiBzdG9wXTsKKyAgICBlbHNlCisgICAgICAgIFtfY29ubmVj
dGlvbkNvbnRyb2xsZXIgcmVjZWl2ZWRNZXNzYWdlOm1lc3NhZ2VOYW1lIHVzZXJJbmZvOnVzZXJJ
bmZvXTsKK30KKworLSAodm9pZCl4cGNDb25uZWN0aW9uRmFpbGVkOihXZWJJbnNwZWN0b3JYUENX
cmFwcGVyICopY29ubmVjdGlvbgoreworICAgIFtfY29ubmVjdGlvbkNvbnRyb2xsZXIgY2xvc2VB
bGxDb25uZWN0aW9uc107CisKKyAgICBpZiAoX3hwY0Nvbm5lY3Rpb24pIHsKKyAgICAgICAgX3hw
Y0Nvbm5lY3Rpb24uZGVsZWdhdGUgPSBuaWw7CisgICAgICAgIFtfeHBjQ29ubmVjdGlvbiByZWxl
YXNlXTsKKyAgICAgICAgX3hwY0Nvbm5lY3Rpb24gPSBuaWw7CisgICAgfQorfQorCisKKyNwcmFn
bWEgbWFyayAtCisjcHJhZ21hIG1hcmsgV2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnlEZWxlZ2F0
ZSBpbXBsZW1lbnRhdGlvbgorCistICh2b2lkKWRpZFJlZ2lzdGVyQ2xpZW50OihXZWJJbnNwZWN0
b3JDbGllbnQqKWNsaWVudAoreworICAgIC8vIFdoZW4gYSBXZWJWaWV3IGlzIHJlZ2lzdGVyZWQg
aXQgaGFzIG5vIGNvbnRlbnQuIEJ1dCBzb21lIFdlYlZpZXdzCisgICAgLy8gbmV2ZXIgbG9hZCBj
b250ZW50IGZyb20gYSBVUkwsIHN1Y2ggYXMgVUlUZXh0RmllbGRzIG9uIGlPUy4KKyAgICBbc2Vs
ZiBwdXNoTGlzdGluZ107Cit9CisKKy0gKHZvaWQpZGlkVW5yZWdpc3RlckNsaWVudDooV2ViSW5z
cGVjdG9yQ2xpZW50KiljbGllbnQKK3sKKyAgICBbc2VsZiBwdXNoTGlzdGluZ107Cit9CisKK0Bl
bmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3Iv
cmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25u
ZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdhNWJjYwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2Vi
SW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24uaApAQCAtMCwwICsxLDU1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworQGNsYXNzIFdlYkluc3Bl
Y3RvclJlbW90ZUNoYW5uZWw7CitAY2xhc3MgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5l
Y3Rpb25Db250cm9sbGVyOworCitAaW50ZXJmYWNlIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdD
b25uZWN0aW9uIDogTlNPYmplY3QgeworQHByaXZhdGUKKyAgICBXZWJJbnNwZWN0b3JSZW1vdGVD
aGFubmVsICpfY2hhbm5lbDsKKworICAgIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0
aW9uQ29udHJvbGxlciAqX2NvbnRyb2xsZXI7IC8vIHdlYWssIHRoZSBjb250cm9sbGVyIG93bnMg
dXMuCisgICAgTlNTdHJpbmcgKl9jb25uZWN0aW9uSWRlbnRpZmllcjsKKyAgICBOU1N0cmluZyAq
X2Rlc3RpbmF0aW9uOworICAgIE5TTnVtYmVyICpfaWRlbnRpZmllcjsKK30KKworLSAoaWQpaW5p
dFdpdGhDb250cm9sbGVyOihXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRy
b2xsZXIgKiljb250cm9sbGVyIGNvbm5lY3Rpb25JZGVudGlmaWVyOihOU1N0cmluZyAqKWNvbm5l
Y3Rpb25JZGVudGlmaWVyIGRlc3RpbmF0aW9uOihOU1N0cmluZyAqKWRlc3RpbmF0aW9uIGlkZW50
aWZpZXI6KE5TTnVtYmVyICopaWRlbnRpZmllcjsKKy0gKEJPT0wpc2V0dXBDaGFubmVsOworLSAo
TlNTdHJpbmcgKiljb25uZWN0aW9uSWRlbnRpZmllcjsKKy0gKE5TTnVtYmVyICopaWRlbnRpZmll
cjsKKworLy8gTWVzc2FnZXMgZnJvbSB0aGUgSW5zcGVjdG9yU2VydmVyLgorLSAodm9pZClyZWNl
aXZlZERhdGE6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnk7CistICh2b2lkKXJlY2VpdmVkRGlk
Q2xvc2U6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnk7CisKKy8vIE1lc3NhZ2VzIGZyb20gdGhl
IENoYW5uZWwuCistICh2b2lkKWNsZWFyQ2hhbm5lbDsKKy0gKHZvaWQpc2VuZE1lc3NhZ2VUb0Zy
b250ZW5kOihOU1N0cmluZyAqKW1lc3NhZ2U7CisKKy8vIE1lc3NhZ2VzIHRvIHRoZSBDaGFubmVs
LgorLSAodm9pZClzZW5kTWVzc2FnZVRvQmFja2VuZDooTlNTdHJpbmcgKiltZXNzYWdlOworCitA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dl
Ykluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWFlZDgxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0
b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbi5tbQpAQCAtMCwwICsxLDEzNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKKworI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24u
aCIKKworI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xpZW50LmgiCisjaW1wb3J0ICJXZWJJbnNwZWN0
b3JSZWxheURlZmluaXRpb25zLmgiCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JSZW1vdGVDaGFubmVs
LmgiCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIKKyNpbXBvcnQgIldlYkluc3BlY3Rv
clNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5oIgorI2ltcG9ydCAiV2ViSW5zcGVj
dG9yWFBDV3JhcHBlci5oIgorI2ltcG9ydCAiV2ViS2l0TG9nZ2luZy5oIgorI2ltcG9ydCA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCitAaW1wbGVtZW50YXRpb24gV2ViSW5zcGVjdG9yU2VydmVyV2Vi
Vmlld0Nvbm5lY3Rpb24KKworLSAoaWQpaW5pdFdpdGhDb250cm9sbGVyOihXZWJJbnNwZWN0b3JT
ZXJ2ZXJXZWJWaWV3Q29ubmVjdGlvbkNvbnRyb2xsZXIgKiljb250cm9sbGVyIGNvbm5lY3Rpb25J
ZGVudGlmaWVyOihOU1N0cmluZyAqKWNvbm5lY3Rpb25JZGVudGlmaWVyIGRlc3RpbmF0aW9uOihO
U1N0cmluZyAqKWRlc3RpbmF0aW9uIGlkZW50aWZpZXI6KE5TTnVtYmVyICopaWRlbnRpZmllcgor
eworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1
cm4gbmlsOworCisgICAgX2NvbnRyb2xsZXIgPSBjb250cm9sbGVyOworICAgIF9jb25uZWN0aW9u
SWRlbnRpZmllciA9IFtjb25uZWN0aW9uSWRlbnRpZmllciBjb3B5XTsKKyAgICBfZGVzdGluYXRp
b24gPSBbZGVzdGluYXRpb24gY29weV07CisgICAgX2lkZW50aWZpZXIgPSBbaWRlbnRpZmllciBj
b3B5XTsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChCT09MKXNldHVwQ2hhbm5lbAorewor
ICAgIEFTU0VSVCghX2NoYW5uZWwpOworICAgIHVuc2lnbmVkIHBhZ2VJZCA9IFtfaWRlbnRpZmll
ciB1bnNpZ25lZEludFZhbHVlXTsKKyAgICBfY2hhbm5lbCA9IFtXZWJJbnNwZWN0b3JSZW1vdGVD
aGFubmVsIGNyZWF0ZUNoYW5uZWxGb3JQYWdlSWQ6cGFnZUlkIGNvbm5lY3Rpb246c2VsZl07Cisg
ICAgcmV0dXJuIF9jaGFubmVsICE9IG5pbDsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAg
QVNTRVJUKCFfY2hhbm5lbCk7CisgICAgW19jb25uZWN0aW9uSWRlbnRpZmllciByZWxlYXNlXTsK
KyAgICBbX2Rlc3RpbmF0aW9uIHJlbGVhc2VdOworICAgIFtfaWRlbnRpZmllciByZWxlYXNlXTsK
KyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKE5TU3RyaW5nICopY29ubmVjdGlvbklkZW50
aWZpZXIKK3sKKyAgICByZXR1cm4gW1tfY29ubmVjdGlvbklkZW50aWZpZXIgY29weV0gYXV0b3Jl
bGVhc2VdOworfQorCistIChOU051bWJlciAqKWlkZW50aWZpZXIKK3sKKyAgICByZXR1cm4gW1tf
aWRlbnRpZmllciBjb3B5XSBhdXRvcmVsZWFzZV07Cit9CisKKworI3ByYWdtYSBtYXJrIC0KKyNw
cmFnbWEgbWFyayBJbnRlcmFjdGlvbiB3aXRoIHRoZSBjaGFubmVsIHRvIHRoZSBsb2NhbCBpbnNw
ZWN0b3IgYmFja2VuZAorCistICh2b2lkKWNsZWFyQ2hhbm5lbAoreworICAgIF9jaGFubmVsID0g
bmlsOworICAgIFtfY29udHJvbGxlciBjb25uZWN0aW9uQ2xvc2luZzpzZWxmXTsKK30KKworLSAo
dm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZQoreworICAgIE5T
RGF0YSAqZGF0YSA9IFttZXNzYWdlIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXTsKKyAgICBOU0RpY3Rpb25hcnkgKm91dGdvaW5nID0gW05TRGljdGlvbmFyeSBkaWN0aW9u
YXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICBkYXRhLCBXSVJSYXdEYXRhS2V5LAorICAg
ICAgICBfY29ubmVjdGlvbklkZW50aWZpZXIsIFdJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5LAor
ICAgICAgICBfZGVzdGluYXRpb24sIFdJUkRlc3RpbmF0aW9uS2V5LAorICAgICAgICBuaWxdOwor
CisgICAgW19jb250cm9sbGVyIHNlbmRNZXNzYWdlVG9Gcm9udGVuZDpXSVJSYXdEYXRhTWVzc2Fn
ZSB1c2VySW5mbzpvdXRnb2luZ107Cit9CisKKy0gKHZvaWQpc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6
KE5TU3RyaW5nICopbWVzc2FnZQoreworICAgIEFTU0VSVChfY2hhbm5lbCk7CisgICAgTE9HKFJl
bW90ZUluc3BlY3RvciwgIldlYkluc3BlY3RvclNlcnZlckNvbm5lY3Rpb246IFJlY2VpdmVkOiB8
JXN8IiwgU3RyaW5nKG1lc3NhZ2UpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgW19jaGFubmVsIHNl
bmRNZXNzYWdlVG9CYWNrZW5kOm1lc3NhZ2VdOworfQorCisKKyNwcmFnbWEgbWFyayAtCisjcHJh
Z21hIG1hcmsgSW50ZXJhY3Rpb24gd2l0aCB0aGUgc2VydmVyIHRvIHRoZSByZW1vdGUgaW5zcGVj
dG9yIGZyb250ZW5kCisKKy0gKHZvaWQpcmVjZWl2ZWREYXRhOihOU0RpY3Rpb25hcnkgKilkaWN0
aW9uYXJ5Cit7CisgICAgTlNEYXRhICpkYXRhID0gW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OldJ
UlNvY2tldERhdGFLZXldOworICAgIE5TU3RyaW5nICptZXNzYWdlID0gW1tOU1N0cmluZyBhbGxv
Y10gaW5pdFdpdGhEYXRhOmRhdGEgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAg
IFtzZWxmIHNlbmRNZXNzYWdlVG9CYWNrZW5kOm1lc3NhZ2VdOworICAgIFttZXNzYWdlIHJlbGVh
c2VdOworfQorCistICh2b2lkKXJlY2VpdmVkRGlkQ2xvc2U6KE5TRGljdGlvbmFyeSAqKWRpY3Rp
b25hcnkKK3sKKyAgICBpZiAoX2NoYW5uZWwpIHsKKyAgICAgICAgW19jaGFubmVsIGNsb3NlRnJv
bVJlbW90ZVNpZGVdOworICAgICAgICBbX2NoYW5uZWwgcmVsZWFzZV07CisgICAgICAgIF9jaGFu
bmVsID0gbmlsOworICAgIH0KK30KKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2VydmVyV2ViVmll
d0Nvbm5lY3Rpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3Iv
cmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4YmY1ZTgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNl
cnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitAY2xhc3MgV2ViSW5zcGVj
dG9yU2VydmVyOworQGNsYXNzIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uOwor
QGNsYXNzIFdlYkluc3BlY3RvclhQQ1dyYXBwZXI7CisKK0BpbnRlcmZhY2UgV2ViSW5zcGVjdG9y
U2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyIDogTlNPYmplY3QgeworQHByaXZhdGUK
KyAgICBXZWJJbnNwZWN0b3JTZXJ2ZXIgKl9zZXJ2ZXI7IC8vIHdlYWssIHRoZSBzZXJ2ZXIgc2hv
dWxkIG5ldmVyIGRlYWxsb2NhdGUuCisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqX29wZW5Db25u
ZWN0aW9uczsKKyAgICBCT09MIF9oYXNTY2hlZHVsZWRQdXNoOworfQorCistIChpZClpbml0V2l0
aFNlcnZlcjooV2ViSW5zcGVjdG9yU2VydmVyICopc2VydmVyOworCistICh2b2lkKWNsb3NlQWxs
Q29ubmVjdGlvbnM7CisKKy0gKHZvaWQpcHVzaExpc3Rpbmc7CistICh2b2lkKXJlY2VpdmVkTWVz
c2FnZTooTlNTdHJpbmcgKiltZXNzYWdlTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNl
ckluZm87CisKKy0gKHZvaWQpY29ubmVjdGlvbkNsb3Npbmc6KFdlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uICopY29ubmVjdGlvbjsKKworLSAodm9pZClzZW5kTWVzc2FnZVRvRnJv
bnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVz
ZXJJbmZvOworCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0
b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlci5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUvV2ViSW5zcGVjdG9yU2Vy
dmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmE1ZjNlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9u
Q29udHJvbGxlci5tbQpAQCAtMCwwICsxLDM4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworI2lt
cG9ydCAiV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb25Db250cm9sbGVyLmgiCisK
KyNpbXBvcnQgIldlYkluc3BlY3RvckNsaWVudC5oIgorI2ltcG9ydCAiV2ViSW5zcGVjdG9yQ2xp
ZW50UmVnaXN0cnkuaCIKKyNpbXBvcnQgIldlYkluc3BlY3RvclJlbGF5RGVmaW5pdGlvbnMuaCIK
KyNpbXBvcnQgIldlYkluc3BlY3RvclNlcnZlci5oIgorI2ltcG9ydCAiV2ViSW5zcGVjdG9yU2Vy
dmVyV2ViVmlld0Nvbm5lY3Rpb24uaCIKKyNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dyYXBwZXIu
aCIKKyNpbXBvcnQgIldlYlZpZXcuaCIKKyNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCisKKyNp
ZiBQTEFURk9STShJT1MpCisjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWQuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZFJ1bi5oPgorI2VuZGlmCisKKworQGltcGxlbWVudGF0
aW9uIFdlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uQ29udHJvbGxlcgorCistIChp
ZClpbml0V2l0aFNlcnZlcjooV2ViSW5zcGVjdG9yU2VydmVyICopc2VydmVyCit7CisgICAgc2Vs
ZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICBfc2VydmVyID0gc2VydmVyOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQp
ZGVhbGxvYworeworICAgIEFTU0VSVCghW19vcGVuQ29ubmVjdGlvbnMgY291bnRdKTsKKyAgICBb
X29wZW5Db25uZWN0aW9ucyByZWxlYXNlXTsKKworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKwor
LSAodm9pZCljbG9zZUFsbENvbm5lY3Rpb25zCit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIFdl
YlRocmVhZFJ1biheeworI2VuZGlmCisKKyAgICBmb3IgKE5TTnVtYmVyICprZXkgaW4gX29wZW5D
b25uZWN0aW9ucykgeworICAgICAgICBXZWJJbnNwZWN0b3JTZXJ2ZXJXZWJWaWV3Q29ubmVjdGlv
biAqY29ubmVjdGlvbiA9IFtfb3BlbkNvbm5lY3Rpb25zIG9iamVjdEZvcktleTprZXldOworICAg
ICAgICBbY29ubmVjdGlvbiByZWNlaXZlZERpZENsb3NlOm5pbF07CisgICAgfQorICAgIFtfb3Bl
bkNvbm5lY3Rpb25zIHJlbW92ZUFsbE9iamVjdHNdOworCisgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgW19zZXJ2ZXIgc2V0SGFzQWN0aXZl
RGVidWdTZXNzaW9uOk5PXTsKKyAgICB9KTsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICB9KTsK
KyNlbmRpZgorfQorCistIChOU0RpY3Rpb25hcnkgKilfbGlzdGluZ0ZvcldlYlZpZXc6KFdlYlZp
ZXcgKil3ZWJWaWV3IHBhZ2VJZDooTlNOdW1iZXIgKilwYWdlSWQgcmVnaXN0cnk6KFdlYkluc3Bl
Y3RvckNsaWVudFJlZ2lzdHJ5ICopcmVnaXN0cnkKK3sKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5
ICp3ZWJWaWV3RGV0YWlscyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOworCisg
ICAgLy8gUGFnZSBJRC4KKyAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OnBhZ2VJZCBmb3JL
ZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOworCisgICAgLy8gVVJMLgorICAgIE5TU3RyaW5nICp1
cmwgPSBbd2ViVmlldyBtYWluRnJhbWVVUkxdOworICAgIGlmICghdXJsKQorICAgICAgICB1cmwg
PSBAImFib3V0OmJsYW5rIjsKKyAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OnVybCBmb3JL
ZXk6V0lSVVJMS2V5XTsKKworICAgIC8vIFRpdGxlLgorICAgIE5TU3RyaW5nICp0aXRsZSA9IFt3
ZWJWaWV3IG1haW5GcmFtZVRpdGxlXTsKKyAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OnRp
dGxlIGZvcktleTpXSVJUaXRsZUtleV07CisKKyAgICAvLyBbT3B0aW9uYWxdIENvbm5lY3Rpb24g
SWRlbnRpZmllciAoUmVtb3RlIERlYnVnZ2VyIFVVSUQpLgorICAgIC8vIFtPcHRpb25hbF0gSGFz
IExvY2FsIERlYnVnZ2VyIFNlc3Npb24uCisgICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nv
bm5lY3Rpb24gKmNvbm5lY3Rpb24gPSBbX29wZW5Db25uZWN0aW9ucyBvYmplY3RGb3JLZXk6cGFn
ZUlkXTsKKyAgICBpZiAoY29ubmVjdGlvbikKKyAgICAgICAgW3dlYlZpZXdEZXRhaWxzIHNldE9i
amVjdDpjb25uZWN0aW9uLmNvbm5lY3Rpb25JZGVudGlmaWVyIGZvcktleTpXSVJDb25uZWN0aW9u
SWRlbnRpZmllcktleV07CisgICAgZWxzZSB7CisgICAgICAgIFdlYkluc3BlY3RvckNsaWVudCog
aW5zcGVjdG9yQ2xpZW50ID0gW3JlZ2lzdHJ5IGNsaWVudEZvclBhZ2VJZDpbcGFnZUlkIHVuc2ln
bmVkSW50VmFsdWVdXTsKKyAgICAgICAgaWYgKGluc3BlY3RvckNsaWVudC0+aGFzTG9jYWxTZXNz
aW9uKCkpCisgICAgICAgICAgICBbd2ViVmlld0RldGFpbHMgc2V0T2JqZWN0OltOU051bWJlciBu
dW1iZXJXaXRoQm9vbDpZRVNdIGZvcktleTpXSVJIYXNMb2NhbERlYnVnZ2VyS2V5XTsKKyAgICB9
CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gW09wdGlvbmFsXSBIb3N0IEFwcGxpY2F0aW9u
IElELgorICAgIE5TU3RyaW5nICpob3N0QXBwbGljYXRpb25JZCA9IFt3ZWJWaWV3IGhvc3RBcHBs
aWNhdGlvbkJ1bmRsZUlkXTsKKyAgICBpZiAoaG9zdEFwcGxpY2F0aW9uSWQpCisgICAgICAgIFt3
ZWJWaWV3RGV0YWlscyBzZXRPYmplY3Q6aG9zdEFwcGxpY2F0aW9uSWQgZm9yS2V5OldJUkhvc3RB
cHBsaWNhdGlvbklkZW50aWZpZXJLZXldOworCisgICAgLy8gW09wdGlvbmFsXSBIb3N0IEFwcGxp
Y2F0aW9uIE5hbWUuCisgICAgTlNTdHJpbmcgKmhvc3RBcHBsaWNhdGlvbk5hbWUgPSBbd2ViVmll
dyBob3N0QXBwbGljYXRpb25OYW1lXTsKKyAgICBpZiAoaG9zdEFwcGxpY2F0aW9uTmFtZSkKKyAg
ICAgICAgW3dlYlZpZXdEZXRhaWxzIHNldE9iamVjdDpob3N0QXBwbGljYXRpb25OYW1lIGZvcktl
eTpXSVJIb3N0QXBwbGljYXRpb25OYW1lS2V5XTsKKyNlbmRpZgorCisgICAgLy8gW09wdGlvbmFs
XSBSZW1vdGUgSW5zcGVjdG9yIFdlYlZpZXcgVXNlciBJbmZvIERpY3Rpb25hcnkuCisgICAgTlNE
aWN0aW9uYXJ5ICpyZW1vdGVJbnNwZWN0b3JVc2VySW5mbyA9IFt3ZWJWaWV3IHJlbW90ZUluc3Bl
Y3RvclVzZXJJbmZvXTsKKyAgICBpZiAocmVtb3RlSW5zcGVjdG9yVXNlckluZm8pCisgICAgICAg
IFt3ZWJWaWV3RGV0YWlscyBzZXRPYmplY3Q6cmVtb3RlSW5zcGVjdG9yVXNlckluZm8gZm9yS2V5
OldJUlVzZXJJbmZvS2V5XTsKKworICAgIHJldHVybiB3ZWJWaWV3RGV0YWlsczsKK30KKworLSAo
dm9pZClfcHVzaExpc3Rpbmc6KE5TU3RyaW5nICopb3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmll
cgoreworI2lmIFBMQVRGT1JNKElPUykKKyAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkp
OworI2VuZGlmCisKKyAgICBfaGFzU2NoZWR1bGVkUHVzaCA9IE5POworCisgICAgTlNNdXRhYmxl
RGljdGlvbmFyeSAqcmVzcG9uc2UgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRd
OworICAgIFdlYkluc3BlY3RvckNsaWVudFJlZ2lzdHJ5ICp3ZWJJbnNwZWN0b3JDbGllbnRSZWdp
c3RyeSA9IFtXZWJJbnNwZWN0b3JDbGllbnRSZWdpc3RyeSBzaGFyZWRSZWdpc3RyeV07CisgICAg
TlNEaWN0aW9uYXJ5ICpyZWdpc3RlcmVkVmlld3MgPSBbd2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0
cnkgaW5zcGVjdGFibGVXZWJWaWV3c107CisgICAgZm9yIChOU051bWJlciAqcGFnZUlkIGluIHJl
Z2lzdGVyZWRWaWV3cykgeworICAgICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW3JlZ2lzdGVyZWRW
aWV3cyBvYmplY3RGb3JLZXk6cGFnZUlkXTsKKyAgICAgICAgTlNEaWN0aW9uYXJ5ICp3ZWJWaWV3
RGV0YWlscyA9IFtzZWxmIF9saXN0aW5nRm9yV2ViVmlldzp3ZWJWaWV3IHBhZ2VJZDpwYWdlSWQg
cmVnaXN0cnk6d2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnldOworICAgICAgICBbcmVzcG9uc2Ug
c2V0T2JqZWN0OndlYlZpZXdEZXRhaWxzIGZvcktleTpbcGFnZUlkIHN0cmluZ1ZhbHVlXV07Cisg
ICAgfQorCisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqb3V0Z29pbmcgPSBbW05TTXV0YWJsZURp
Y3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAgIFtvdXRnb2luZyBzZXRPYmplY3Q6cmVzcG9uc2Ug
Zm9yS2V5OldJUkxpc3RpbmdLZXldOworICAgIGlmIChvcHRpb25hbENvbm5lY3Rpb25JZGVudGlm
aWVyKQorICAgICAgICBbb3V0Z29pbmcgc2V0T2JqZWN0Om9wdGlvbmFsQ29ubmVjdGlvbklkZW50
aWZpZXIgZm9yS2V5OldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5XTsKKworICAgIFtzZWxmIHNl
bmRNZXNzYWdlVG9Gcm9udGVuZDpXSVJMaXN0aW5nTWVzc2FnZSB1c2VySW5mbzpvdXRnb2luZ107
CisKKyAgICBbb3V0Z29pbmcgcmVsZWFzZV07CisgICAgW3Jlc3BvbnNlIHJlbGVhc2VdOworfQor
CistICh2b2lkKXB1c2hMaXN0aW5nOihOU1N0cmluZyAqKW9wdGlvbmFsQ29ubmVjdGlvbklkZW50
aWZpZXIKK3sKKyNpZiBQTEFURk9STShJT1MpCisgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVu
dCgpKTsKKyNlbmRpZgorCisgICAgaWYgKF9oYXNTY2hlZHVsZWRQdXNoKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAob3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcikgeworICAgICAgICBb
c2VsZiBfcHVzaExpc3Rpbmc6b3B0aW9uYWxDb25uZWN0aW9uSWRlbnRpZmllcl07CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgZGlzcGF0Y2hfYWZ0ZXIo
ZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgMC4yICogTlNFQ19QRVJfU0VDKSwgZGlz
cGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAw
KSwgXnsKKyAgICAgICAgV2ViVGhyZWFkUnVuKF57CisgICAgICAgICAgICBbc2VsZiBfcHVzaExp
c3Rpbmc6bmlsXTsKKyAgICAgICAgfSk7CisgICAgfSk7CisjZWxzZQorICAgIFtzZWxmIHBlcmZv
cm1TZWxlY3RvcjpAc2VsZWN0b3IoX3B1c2hMaXN0aW5nOikgd2l0aE9iamVjdDpuaWwgYWZ0ZXJE
ZWxheTowLjJdOworI2VuZGlmCisKKyAgICBfaGFzU2NoZWR1bGVkUHVzaCA9IFlFUzsKK30KKwor
LSAodm9pZClwdXNoTGlzdGluZworeworI2lmIFBMQVRGT1JNKElPUykKKyAgICBXZWJUaHJlYWRS
dW4oXnsKKyNlbmRpZgorCisgICAgW3NlbGYgcHVzaExpc3Rpbmc6bmlsXTsKKworI2lmIFBMQVRG
T1JNKElPUykKKyAgICB9KTsKKyNlbmRpZgorfQorCistICh2b2lkKV9yZWNlaXZlZFNldHVwOihO
U0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Cit7CisgICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFtkaWN0
aW9uYXJ5IG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07CisgICAgaWYgKCFwYWdl
SWQpCisgICAgICAgIHJldHVybjsKKworICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmll
ciA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleV07
CisgICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
TlNTdHJpbmcgKnNlbmRlciA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJTZW5kZXJLZXld
OworICAgIGlmICghc2VuZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIV9vcGVuQ29u
bmVjdGlvbnMpCisgICAgICAgIF9vcGVuQ29ubmVjdGlvbnMgPSBbW05TTXV0YWJsZURpY3Rpb25h
cnkgYWxsb2NdIGluaXRdOworCisgICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rp
b24gKmNvbm5lY3Rpb24gPSBbW1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIGFs
bG9jXSBpbml0V2l0aENvbnRyb2xsZXI6c2VsZiBjb25uZWN0aW9uSWRlbnRpZmllcjpjb25uZWN0
aW9uSWRlbnRpZmllciBkZXN0aW5hdGlvbjpzZW5kZXIgaWRlbnRpZmllcjpwYWdlSWRdOworICAg
IGlmIChbY29ubmVjdGlvbiBzZXR1cENoYW5uZWxdKQorICAgICAgICBbX29wZW5Db25uZWN0aW9u
cyBzZXRPYmplY3Q6Y29ubmVjdGlvbiBmb3JLZXk6cGFnZUlkXTsKKyAgICBbY29ubmVjdGlvbiBy
ZWxlYXNlXTsKKworICAgIGlmIChbX29wZW5Db25uZWN0aW9ucyBjb3VudF0gPT0gMSkgeworICAg
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAg
ICAgICAgW19zZXJ2ZXIgc2V0SGFzQWN0aXZlRGVidWdTZXNzaW9uOllFU107CisgICAgICAgIH0p
OworICAgIH0KKworICAgIFtzZWxmIHB1c2hMaXN0aW5nXTsKK30KKworLSAodm9pZClfcmVjZWl2
ZWREYXRhOihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Cit7CisgICAgTlNOdW1iZXIgKnBhZ2VJ
ZCA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07CisgICAg
aWYgKCFwYWdlSWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYkluc3BlY3RvclNlcnZlcldl
YlZpZXdDb25uZWN0aW9uICpjb25uZWN0aW9uID0gW19vcGVuQ29ubmVjdGlvbnMgb2JqZWN0Rm9y
S2V5OnBhZ2VJZF07CisgICAgQVNTRVJUKCFjb25uZWN0aW9uIHx8IFtjb25uZWN0aW9uIGlzS2lu
ZE9mQ2xhc3M6W1dlYkluc3BlY3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uIGNsYXNzXV0pOwor
ICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgW2Nvbm5lY3Rpb24g
cmVjZWl2ZWREYXRhOmRpY3Rpb25hcnldOworfQorCistICh2b2lkKV9yZWNlaXZlZERpZENsb3Nl
OihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5Cit7CisgICAgTlNOdW1iZXIgKnBhZ2VJZCA9IFtk
aWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJQYWdlSWRlbnRpZmllcktleV07CisgICAgaWYgKCFw
YWdlSWQpCisgICAgICAgIHJldHVybjsKKworICAgIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRp
ZmllciA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXSVJDb25uZWN0aW9uSWRlbnRpZmllcktl
eV07CisgICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24gPSBbX29w
ZW5Db25uZWN0aW9ucyBvYmplY3RGb3JLZXk6cGFnZUlkXTsKKyAgICBBU1NFUlQoIWNvbm5lY3Rp
b24gfHwgW2Nvbm5lY3Rpb24gaXNLaW5kT2ZDbGFzczpbV2ViSW5zcGVjdG9yU2VydmVyV2ViVmll
d0Nvbm5lY3Rpb24gY2xhc3NdXSk7CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoIVtjb25uZWN0aW9uSWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6Y29u
bmVjdGlvbi5jb25uZWN0aW9uSWRlbnRpZmllcl0pCisgICAgICAgIHJldHVybjsKKworICAgIFtj
b25uZWN0aW9uIHJlY2VpdmVkRGlkQ2xvc2U6ZGljdGlvbmFyeV07CisgICAgW19vcGVuQ29ubmVj
dGlvbnMgcmVtb3ZlT2JqZWN0Rm9yS2V5OnBhZ2VJZF07CisKKyAgICBpZiAoIVtfb3BlbkNvbm5l
Y3Rpb25zIGNvdW50XSkgeworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBeeworICAgICAgICAgICAgW19zZXJ2ZXIgc2V0SGFzQWN0aXZlRGVidWdTZXNz
aW9uOk5PXTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgW3NlbGYgcHVzaExpc3RpbmddOwor
fQorCistICh2b2lkKV9yZWNlaXZlZEdldExpc3Rpbmc6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25h
cnkKK3sKKyAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIgPSBbZGljdGlvbmFyeSBv
YmplY3RGb3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOworICAgIFtzZWxmIHB1c2hM
aXN0aW5nOmNvbm5lY3Rpb25JZGVudGlmaWVyXTsKK30KKworLSAodm9pZClfcmVjZWl2ZWRJbmRp
Y2F0ZTooTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeQoreworICAgIE5TTnVtYmVyICpwYWdlSWQg
PSBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V0lSUGFnZUlkZW50aWZpZXJLZXldOworICAgIGlm
ICghcGFnZUlkKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW1tb
V2ViSW5zcGVjdG9yQ2xpZW50UmVnaXN0cnkgc2hhcmVkUmVnaXN0cnldIGluc3BlY3RhYmxlV2Vi
Vmlld3NdIG9iamVjdEZvcktleTpwYWdlSWRdOworICAgIGlmICghd2ViVmlldykKKyAgICAgICAg
cmV0dXJuOworCisgICAgQk9PTCBpbmRpY2F0ZUVuYWJsZWQgPSBbW2RpY3Rpb25hcnkgb2JqZWN0
Rm9yS2V5OldJUkluZGljYXRlRW5hYmxlZEtleV0gYm9vbFZhbHVlXTsKKyAgICBbd2ViVmlldyBz
ZXRJbmRpY2F0aW5nRm9yUmVtb3RlSW5zcGVjdG9yOmluZGljYXRlRW5hYmxlZF07Cit9CisKKy0g
KHZvaWQpX3JlY2VpdmVkQ29ubmVjdGlvbkRpZWQ6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkK
K3sKKyAgICBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIgPSBbZGljdGlvbmFyeSBvYmpl
Y3RGb3JLZXk6V0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXldOworICAgIGlmICghY29ubmVjdGlv
bklkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIE5TRGljdGlvbmFyeSAqY29ubmVj
dGlvbnNDb3B5ID0gW1tfb3BlbkNvbm5lY3Rpb25zIGNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICBm
b3IgKE5TTnVtYmVyICprZXkgaW4gY29ubmVjdGlvbnNDb3B5KSB7CisgICAgICAgIFdlYkluc3Bl
Y3RvclNlcnZlcldlYlZpZXdDb25uZWN0aW9uICpjb25uZWN0aW9uID0gW2Nvbm5lY3Rpb25zQ29w
eSBvYmplY3RGb3JLZXk6a2V5XTsKKyAgICAgICAgaWYgKFtjb25uZWN0aW9uLmNvbm5lY3Rpb25J
ZGVudGlmaWVyIGlzRXF1YWxUb1N0cmluZzpjb25uZWN0aW9uSWRlbnRpZmllcl0pIHsKKyAgICAg
ICAgICAgIFtjb25uZWN0aW9uIHJlY2VpdmVkRGlkQ2xvc2U6bmlsXTsKKyAgICAgICAgICAgIFtf
b3BlbkNvbm5lY3Rpb25zIHJlbW92ZU9iamVjdEZvcktleTprZXldOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKCFbX29wZW5Db25uZWN0aW9ucyBjb3VudF0pIHsKKyAgICAgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAgIFtfc2Vy
dmVyIHNldEhhc0FjdGl2ZURlYnVnU2Vzc2lvbjpOT107CisgICAgICAgIH0pOworICAgIH0KK30K
KworLSAodm9pZClyZWNlaXZlZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNlcklu
Zm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvCit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIFdl
YlRocmVhZFJ1biheeworI2VuZGlmCisKKyAgICBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0
cmluZzpXSVJTb2NrZXRTZXR1cE1lc3NhZ2VdKQorICAgICAgICBbc2VsZiBfcmVjZWl2ZWRTZXR1
cDp1c2VySW5mb107CisgICAgZWxzZSBpZiAoW21lc3NhZ2VOYW1lIGlzRXF1YWxUb1N0cmluZzpX
SVJTb2NrZXREYXRhTWVzc2FnZV0pCisgICAgICAgIFtzZWxmIF9yZWNlaXZlZERhdGE6dXNlcklu
Zm9dOworICAgIGVsc2UgaWYgKFttZXNzYWdlTmFtZSBpc0VxdWFsVG9TdHJpbmc6V0lSV2ViUGFn
ZUNsb3NlTWVzc2FnZV0pCisgICAgICAgIFtzZWxmIF9yZWNlaXZlZERpZENsb3NlOnVzZXJJbmZv
XTsKKyAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkFwcGxpY2F0
aW9uR2V0TGlzdGluZ01lc3NhZ2VdKQorICAgICAgICBbc2VsZiBfcmVjZWl2ZWRHZXRMaXN0aW5n
OnVzZXJJbmZvXTsKKyAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJ
UkluZGljYXRlTWVzc2FnZV0pCisgICAgICAgIFtzZWxmIF9yZWNlaXZlZEluZGljYXRlOnVzZXJJ
bmZvXTsKKyAgICBlbHNlIGlmIChbbWVzc2FnZU5hbWUgaXNFcXVhbFRvU3RyaW5nOldJUkNvbm5l
Y3Rpb25EaWVkTWVzc2FnZV0pCisgICAgICAgIFtzZWxmIF9yZWNlaXZlZENvbm5lY3Rpb25EaWVk
OnVzZXJJbmZvXTsKKyAgICBlbHNlCisgICAgICAgIE5TTG9nKEAiVW5yZWNvZ25pemVkIE1lc3Nh
Z2U6ICVAIiwgbWVzc2FnZU5hbWUpOworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIH0pOworI2Vu
ZGlmCit9CisKKworI3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEgbWFyayBXZWJJbnNwZWN0b3JTZXJ2
ZXJXZWJWaWV3Q29ubmVjdGlvbiBpbnRlcmZhY2UKKworLSAodm9pZCljb25uZWN0aW9uQ2xvc2lu
ZzooV2ViSW5zcGVjdG9yU2VydmVyV2ViVmlld0Nvbm5lY3Rpb24gKiljb25uZWN0aW9uCit7Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgIFdlYlRocmVhZFJ1biheeworI2VuZGlmCisKKyAgICBbX29w
ZW5Db25uZWN0aW9ucyByZW1vdmVPYmplY3RGb3JLZXk6W2Nvbm5lY3Rpb24gaWRlbnRpZmllcl1d
OworCisgICAgaWYgKCFbX29wZW5Db25uZWN0aW9ucyBjb3VudF0pIHsKKyAgICAgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAgIFtfc2Vy
dmVyIHNldEhhc0FjdGl2ZURlYnVnU2Vzc2lvbjpOT107CisgICAgICAgIH0pOworICAgIH0KKwor
I2lmIFBMQVRGT1JNKElPUykKKyAgICB9KTsKKyNlbmRpZgorfQorCisKKyNwcmFnbWEgbWFyayAt
CisjcHJhZ21hIG1hcmsgVGhyZWFkIFNhZmUgc2VuZCBtZXNzYWdlIHRvIGZyb250ZW5kCisKKy0g
KHZvaWQpc2VuZE1lc3NhZ2VUb0Zyb250ZW5kOihOU1N0cmluZyAqKW1lc3NhZ2VOYW1lIHVzZXJJ
bmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbworeworICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxl
ZCBmcm9tIGVpdGhlciB0aGUgV2ViVGhyZWFkIG9yIHRoZSBNYWluVGhyZWFkLiBUaGlzCisgICAg
Ly8gcmVxdWlyZXMgYWNjZXNzIHRvIHRoZSBXZWJJbnNwZWN0b3JTZXJ2ZXIncyBYUEMgQ29ubmVj
dGlvbiwgd2hpY2gKKyAgICAvLyBpcyBtYW5hZ2VkIG9uIHRoZSBtYWluIHRocmVhZC4gU28sIGRp
c3BhdGNoIHRvIHRoZSBtYWluIHRocmVhZCB0bworICAgIC8vIHNhZmVseSB1c2UgdGhlIHhwYyBj
b25uZWN0aW9uLgorICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IF57CisgICAgICAgIFtbX3NlcnZlciB4cGNDb25uZWN0aW9uXSBzZW5kTWVzc2FnZTptZXNzYWdl
TmFtZSB1c2VySW5mbzp1c2VySW5mb107CisgICAgfSk7Cit9CisKK0BlbmQKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3IvcmVtb3RlL1dlYkluc3Bl
Y3RvclhQQ1dyYXBwZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkluc3BlY3Rvci9yZW1vdGUv
V2ViSW5zcGVjdG9yWFBDV3JhcHBlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjNmOTQ0ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNw
ZWN0b3IvcmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIuaApAQCAtMCwwICsxLDU0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDx4cGMveHBjLmg+CisKK0BjbGFzcyBXZWJJ
bnNwZWN0b3JYUENXcmFwcGVyOworCitAcHJvdG9jb2wgV2ViSW5zcGVjdG9yWFBDV3JhcHBlckRl
bGVnYXRlIDxOU09iamVjdD4KKy0gKHZvaWQpeHBjQ29ubmVjdGlvbjooV2ViSW5zcGVjdG9yWFBD
V3JhcHBlciAqKWNvbm5lY3Rpb24gcmVjZWl2ZWRNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2VO
YW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbzsKKy0gKHZvaWQpeHBjQ29ubmVj
dGlvbkZhaWxlZDooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKWNvbm5lY3Rpb247CitAb3B0aW9u
YWwKKy0gKHZvaWQpeHBjQ29ubmVjdGlvbjooV2ViSW5zcGVjdG9yWFBDV3JhcHBlciAqKWNvbm5l
Y3Rpb24gdW5oYW5kbGVkTWVzc2FnZTooeHBjX29iamVjdF90KW1lc3NhZ2U7CitAZW5kCisKK0Bp
bnRlcmZhY2UgV2ViSW5zcGVjdG9yWFBDV3JhcHBlciA6IE5TT2JqZWN0Cit7CisgICAgaWQgPFdl
Ykluc3BlY3RvclhQQ1dyYXBwZXJEZWxlZ2F0ZT4gX2RlbGVnYXRlOworICAgIHhwY19jb25uZWN0
aW9uX3QgX2Nvbm5lY3Rpb247CisgICAgTlNTdHJpbmcgKl90YWc7Cit9CisKKy0gKFdlYkluc3Bl
Y3RvclhQQ1dyYXBwZXIgKilpbml0V2l0aENvbm5lY3Rpb246KHhwY19jb25uZWN0aW9uX3QpY29u
bmVjdGlvbjsKKy0gKHZvaWQpY2xvc2U7CistICh2b2lkKXNlbmRNZXNzYWdlOihOU1N0cmluZyAq
KW1lc3NhZ2VOYW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbzsKKworQHByb3Bl
cnR5IChub25hdG9taWMsIGFzc2lnbikgaWQgPFdlYkluc3BlY3RvclhQQ1dyYXBwZXJEZWxlZ2F0
ZT4gZGVsZWdhdGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIHhwY19jb25uZWN0
aW9uX3QgY29ubmVjdGlvbjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBh
dmFpbGFibGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKnRhZzsKKwor
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViSW5zcGVjdG9yL3JlbW90ZS9X
ZWJJbnNwZWN0b3JYUENXcmFwcGVyLm0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJJbnNwZWN0b3Iv
cmVtb3RlL1dlYkluc3BlY3RvclhQQ1dyYXBwZXIubQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi41ZmIxZTAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViSW5zcGVjdG9yL3JlbW90ZS9XZWJJbnNwZWN0b3JYUENXcmFwcGVyLm0KQEAgLTAsMCArMSwx
NjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbXBvcnQgIldlYkluc3BlY3RvclhQQ1dyYXBw
ZXIuaCIKKworI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KKworI2lmIF9faGFzX2luY2x1ZGUo
PENvcmVGb3VuZGF0aW9uL0NGWFBDQnJpZGdlLmg+KQorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9u
L0NGWFBDQnJpZGdlLmg+CisjZWxzZQorZXh0ZXJuIHhwY19vYmplY3RfdCBfQ0ZYUENDcmVhdGVY
UENNZXNzYWdlV2l0aENGT2JqZWN0KENGVHlwZVJlZik7CitleHRlcm4gQ0ZUeXBlUmVmIF9DRlhQ
Q0NyZWF0ZUNGT2JqZWN0RnJvbVhQQ01lc3NhZ2UoeHBjX29iamVjdF90KTsKKyNlbmRpZgorCisv
LyBDb25zdGFudHMgcHJpdmF0ZSB0byB0aGlzIGZpbGUgZm9yIG1lc3NhZ2Ugc2VyaWFsaXphdGlv
biBvbiBib3RoIGVuZHMuCisjZGVmaW5lIFdlYkluc3BlY3RvclhQQ1dyYXBwZXJNZXNzYWdlTmFt
ZUtleSBAIm1lc3NhZ2VOYW1lIgorI2RlZmluZSBXZWJJbnNwZWN0b3JYUENXcmFwcGVyVXNlcklu
Zm9LZXkgQCJ1c2VySW5mbyIKKyNkZWZpbmUgV2ViSW5zcGVjdG9yWFBDV3JhcHBlclNlcmlhbGl6
ZWRNZXNzYWdlS2V5ICJtc2dEYXRhIgorCitAaW50ZXJmYWNlIFdlYkluc3BlY3RvclhQQ1dyYXBw
ZXIgKCkKKy0gKHZvaWQpX2hhbmRsZUV2ZW50Oih4cGNfb2JqZWN0X3Qpb2JqZWN0OworQGVuZAor
CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJJbnNwZWN0b3JYUENXcmFwcGVyCisKK0BkeW5hbWljIGF2
YWlsYWJsZTsKKworQHN5bnRoZXNpemUgZGVsZWdhdGUgPSBfZGVsZWdhdGU7CitAc3ludGhlc2l6
ZSBjb25uZWN0aW9uID0gX2Nvbm5lY3Rpb247CitAc3ludGhlc2l6ZSB0YWcgPSBfdGFnOworCist
IChXZWJJbnNwZWN0b3JYUENXcmFwcGVyICopaW5pdFdpdGhDb25uZWN0aW9uOih4cGNfY29ubmVj
dGlvbl90KWNvbm5lY3Rpb24KK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICgh
c2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9jb25uZWN0aW9uID0geHBjX3JldGFp
bihjb25uZWN0aW9uKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfdGFyZ2V0X3F1ZXVlKF9jb25u
ZWN0aW9uLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKKyAgICB4cGNfY29ubmVjdGlvbl9z
ZXRfZXZlbnRfaGFuZGxlcihfY29ubmVjdGlvbiwgXih4cGNfb2JqZWN0X3Qgb2JqZWN0KSB7IFtz
ZWxmIF9oYW5kbGVFdmVudDpvYmplY3RdOyB9KTsKKyAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUo
X2Nvbm5lY3Rpb24pOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpY2xvc2UKK3sK
KyAgICBpZiAoX2Nvbm5lY3Rpb24pIHsKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fY2FuY2VsKF9j
b25uZWN0aW9uKTsKKyAgICAgICAgeHBjX3JlbGVhc2UoX2Nvbm5lY3Rpb24pOworICAgICAgICBf
Y29ubmVjdGlvbiA9IE5VTEw7CisgICAgfQorfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBb
c2VsZiBjbG9zZV07CisgICAgW190YWcgcmVsZWFzZV07CisgICAgW3N1cGVyIGRlYWxsb2NdOwor
fQorCistIChOU0RpY3Rpb25hcnkgKilfZGVzZXJpYWxpemVNZXNzYWdlOih4cGNfb2JqZWN0X3Qp
b2JqZWN0Cit7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNfZ2V0X3R5cGUob2JqZWN0KSA9
PSBYUENfVFlQRV9ESUNUSU9OQVJZLCAiR290IHVuZXhwZWN0ZWQgb2JqZWN0IGZyb20gYW4geHBj
IGNvbm5lY3Rpb24iKTsKKyAgICBpZiAoeHBjX2dldF90eXBlKG9iamVjdCkgIT0gWFBDX1RZUEVf
RElDVElPTkFSWSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHhwY19vYmplY3RfdCB4cGNE
aWN0aW9uYXJ5ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKG9iamVjdCwgV2ViSW5zcGVjdG9y
WFBDV3JhcHBlclNlcmlhbGl6ZWRNZXNzYWdlS2V5KTsKKyAgICBpZiAoIXhwY0RpY3Rpb25hcnkg
fHwgeHBjX2dldF90eXBlKHhwY0RpY3Rpb25hcnkpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpIHsK
KyAgICAgICAgLy8gVGhpcyBpc24ndCBhIG1lc3NhZ2UgdHlwZSB0aGF0IHdlIGtub3cgaG93IHRv
IGRlc2VyaWFsaXplLCBzbyB3ZSBsZXQgb3VyIGRlbGVnYXRlIHdvcnJ5IGFib3V0IGl0LgorICAg
ICAgICBpZiAoW19kZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHhwY0Nvbm5l
Y3Rpb246dW5oYW5kbGVkTWVzc2FnZTopXSkKKyAgICAgICAgICAgIFtfZGVsZWdhdGUgeHBjQ29u
bmVjdGlvbjpzZWxmIHVuaGFuZGxlZE1lc3NhZ2U6b2JqZWN0XTsKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICB9CisKKyAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBfQ0ZYUENDcmVhdGVD
Rk9iamVjdEZyb21YUENNZXNzYWdlKHhwY0RpY3Rpb25hcnkpOworICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoZGljdGlvbmFyeSwgIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSB4cGMgbWVzc2FnZSIpOwor
ICAgIGlmICghZGljdGlvbmFyeSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBb
ZGljdGlvbmFyeSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKHZvaWQpX2hhbmRsZUV2ZW50Oih4cGNf
b2JqZWN0X3Qpb2JqZWN0Cit7CisgICAgaWYgKCFfY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKHhwY19nZXRfdHlwZShvYmplY3QpID09IFhQQ19UWVBFX0VSUk9SKSB7Cisg
ICAgICAgIFtfZGVsZWdhdGUgeHBjQ29ubmVjdGlvbkZhaWxlZDpzZWxmXTsKKyAgICAgICAgW3Nl
bGYgY2xvc2VdOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFfZGVsZWdhdGUp
CisgICAgICAgIHJldHVybjsKKworICAgIE5TRGljdGlvbmFyeSAqZGF0YURpY3Rpb25hcnkgPSBb
c2VsZiBfZGVzZXJpYWxpemVNZXNzYWdlOm9iamVjdF07CisgICAgaWYgKCFkYXRhRGljdGlvbmFy
eSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNTdHJpbmcgKm1lc3NhZ2UgPSBbZGF0YURpY3Rp
b25hcnkgb2JqZWN0Rm9yS2V5OldlYkluc3BlY3RvclhQQ1dyYXBwZXJNZXNzYWdlTmFtZUtleV07
CisgICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IFtkYXRhRGljdGlvbmFyeSBvYmplY3RGb3JL
ZXk6V2ViSW5zcGVjdG9yWFBDV3JhcHBlclVzZXJJbmZvS2V5XTsKKyAgICBbX2RlbGVnYXRlIHhw
Y0Nvbm5lY3Rpb246c2VsZiByZWNlaXZlZE1lc3NhZ2U6bWVzc2FnZSB1c2VySW5mbzp1c2VySW5m
b107Cit9CisKKy0gKHZvaWQpc2VuZE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZU5hbWUgdXNl
ckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvCit7CisgICAgaWYgKCFfY29ubmVjdGlvbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9
IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0Om1lc3NhZ2VOYW1lIGZv
cktleTpXZWJJbnNwZWN0b3JYUENXcmFwcGVyTWVzc2FnZU5hbWVLZXldOworICAgIGlmICh1c2Vy
SW5mbykKKyAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OnVzZXJJbmZvIGZvcktleTpXZWJJ
bnNwZWN0b3JYUENXcmFwcGVyVXNlckluZm9LZXldOworCisgICAgeHBjX29iamVjdF90IHhwY0Rp
Y3Rpb25hcnkgPSBfQ0ZYUENDcmVhdGVYUENNZXNzYWdlV2l0aENGT2JqZWN0KChDRkRpY3Rpb25h
cnlSZWYpZGljdGlvbmFyeSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh4cGNEaWN0aW9uYXJ5
ICYmIHhwY19nZXRfdHlwZSh4cGNEaWN0aW9uYXJ5KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZLCAi
VW5hYmxlIHRvIHNlcmlhbGl6ZSB4cGMgbWVzc2FnZSIpOworICAgIGlmICgheHBjRGljdGlvbmFy
eSkKKyAgICAgICAgcmV0dXJuOworCisgICAgeHBjX29iamVjdF90IG1zZyA9IHhwY19kaWN0aW9u
YXJ5X2NyZWF0ZShOVUxMLCBOVUxMLCAwKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUo
bXNnLCBXZWJJbnNwZWN0b3JYUENXcmFwcGVyU2VyaWFsaXplZE1lc3NhZ2VLZXksIHhwY0RpY3Rp
b25hcnkpOworICAgIHhwY19yZWxlYXNlKHhwY0RpY3Rpb25hcnkpOworCisgICAgeHBjX2Nvbm5l
Y3Rpb25fc2VuZF9tZXNzYWdlKF9jb25uZWN0aW9uLCBtc2cpOworCisgICAgeHBjX3JlbGVhc2Uo
bXNnKTsKK30KKworLSAoQk9PTClhdmFpbGFibGUKK3sKKyAgICByZXR1cm4gX2Nvbm5lY3Rpb24g
IT0gTlVMTDsKK30KKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYktpdC5leHAgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQuZXhwCmluZGV4IDhmY2Mz
MDguLmRlOTE4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5leHAKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViS2l0LmV4cApAQCAtMjIsNiArMjIsNyBAQAogLm9iamNf
Y2xhc3NfbmFtZV9XZWJIaXN0b3J5SXRlbQogLm9iamNfY2xhc3NfbmFtZV9XZWJJY29uRGF0YWJh
c2UKIC5vYmpjX2NsYXNzX25hbWVfV2ViSW5zcGVjdG9yCisub2JqY19jbGFzc19uYW1lX1dlYklu
c3BlY3RvclhQQ1dyYXBwZXIKIC5vYmpjX2NsYXNzX25hbWVfV2ViSmF2YVNjcmlwdFRleHRJbnB1
dFBhbmVsCiAub2JqY19jbGFzc19uYW1lX1dlYktleUdlbmVyYXRvcgogLm9iamNfY2xhc3NfbmFt
ZV9XZWJLaXRTdGF0aXN0aWNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXgg
MjcyMTI0Yy4uYTA2MGM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAt
MjExLDYgKzIxMSwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9EaXNrSW1hZ2VDYWNoZUlPUy5oPgog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyNpbXBvcnQgIldlYkluc3Bl
Y3RvclNlcnZlci5oIgorI2VuZGlmCisKICNpZiBVU0UoR0xJQikKICNpbXBvcnQgPGdsaWIuaD4K
ICNlbmRpZgpAQCAtMzg1LDYgKzM4OSwxMCBAQCBzdGF0aWMgV2ViQ2FjaGVNb2RlbCBzX2NhY2hl
TW9kZWwgPSBXZWJDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXI7CiBzdGF0aWMgY29uc3QgY2hhciB3
ZWJWaWV3SXNPcGVuW10gPSAiQXQgbGVhc3Qgb25lIFdlYlZpZXcgaXMgc3RpbGwgb3Blbi4iOwog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKK3N0YXRpYyBCT09MIGF1dG9T
dGFydFJlbW90ZUluc3BlY3RvciA9IFlFUzsKKyNlbmRpZgorCiBAaW50ZXJmYWNlIE5TT2JqZWN0
IChXZWJWYWxpZGF0ZVdpdGhvdXREZWxlZ2F0ZSkKIC0gKEJPT0wpdmFsaWRhdGVVc2VySW50ZXJm
YWNlSXRlbVdpdGhvdXREZWxlZ2F0ZTooaWQgPE5TVmFsaWRhdGVkVXNlckludGVyZmFjZUl0ZW0+
KWl0ZW07CiBAZW5kCkBAIC01MTQsNiArNTIyLDEwIEBAIE5TU3RyaW5nICpfV2ViTWFpbkZyYW1l
RG9jdW1lbnRLZXkgPSAgICBAIm1haW5GcmFtZURvY3VtZW50IjsKIE5TU3RyaW5nICpfV2ViVmll
d0RpZFN0YXJ0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ05vdGlmaWNhdGlvbiA9IEAiX1dlYlZpZXdE
aWRTdGFydEFjY2VsZXJhdGVkQ29tcG9zaXRpbmciOwogTlNTdHJpbmcgKiBjb25zdCBXZWJWaWV3
V2lsbENsb3NlTm90aWZpY2F0aW9uID0gQCJXZWJWaWV3V2lsbENsb3NlTm90aWZpY2F0aW9uIjsK
IAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorTlNTdHJpbmcgKl9XZWJWaWV3UmVtb3Rl
SW5zcGVjdG9ySGFzU2Vzc2lvbkNoYW5nZWROb3RpZmljYXRpb24gPSBAIl9XZWJWaWV3UmVtb3Rl
SW5zcGVjdG9ySGFzU2Vzc2lvbkNoYW5nZWROb3RpZmljYXRpb24iOworI2VuZGlmCisKIE5TU3Ry
aW5nICpXZWJLaXRLZXJuaW5nQW5kTGlnYXR1cmVzRW5hYmxlZEJ5RGVmYXVsdERlZmF1bHRzS2V5
ID0gQCJXZWJLaXRLZXJuaW5nQW5kTGlnYXR1cmVzRW5hYmxlZEJ5RGVmYXVsdCI7CiAKIEBpbnRl
cmZhY2UgV2ViUHJvZ3Jlc3NJdGVtIDogTlNPYmplY3QKQEAgLTc1Miw2ICs3NjQsMTEgQEAgc3Rh
dGljIGJvb2wgc2hvdWxkVXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvcigp
CiAgICAgICAgIAogICAgICAgICBTZXR0aW5nczo6c2V0U2hvdWxkUmVzcGVjdFByaW9yaXR5SW5D
U1NBdHRyaWJ1dGVTZXR0ZXJzKHNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0
dGVycygpKTsKIAorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgICAgICBpZiAoYXV0
b1N0YXJ0UmVtb3RlSW5zcGVjdG9yKQorICAgICAgICAgICAgW1dlYlZpZXcgX2VuYWJsZVJlbW90
ZUluc3BlY3Rvcl07CisjZW5kaWYKKwogICAgICAgICBkaWRPbmVUaW1lSW5pdGlhbGl6YXRpb24g
PSB0cnVlOwogICAgIH0KIApAQCAtMTI0Nyw2ICsxMjY0LDg1IEBAIHN0YXRpYyBib29sIGZhc3RE
b2N1bWVudFRlYXJkb3duRW5hYmxlZCgpCiAgICAgcmV0dXJuIF9wcml2YXRlLT5pbnNwZWN0b3I7
CiB9CiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKysgKFdlYkluc3BlY3RvclNlcnZl
ciAqKXNoYXJlZFdlYkluc3BlY3RvclNlcnZlcgoreworICAgIHN0YXRpYyBXZWJJbnNwZWN0b3JT
ZXJ2ZXIgKnNoYXJlZFNlcnZlciA9IFtbV2ViSW5zcGVjdG9yU2VydmVyIGFsbG9jXSBpbml0XTsK
KyAgICByZXR1cm4gc2hhcmVkU2VydmVyOworfQorCisrICh2b2lkKV9lbmFibGVSZW1vdGVJbnNw
ZWN0b3IKK3sKKyAgICBbW1dlYlZpZXcgc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyXSBzdGFydF07
Cit9CisKKysgKHZvaWQpX2Rpc2FibGVSZW1vdGVJbnNwZWN0b3IKK3sKKyAgICBbW1dlYlZpZXcg
c2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyXSBzdG9wXTsKK30KKworKyAodm9pZClfZGlzYWJsZUF1
dG9TdGFydFJlbW90ZUluc3BlY3RvcgoreworICAgIGF1dG9TdGFydFJlbW90ZUluc3BlY3RvciA9
IE5POworfQorCisrIChCT09MKV9pc1JlbW90ZUluc3BlY3RvckVuYWJsZWQKK3sKKyAgICByZXR1
cm4gW1tXZWJWaWV3IHNoYXJlZFdlYkluc3BlY3RvclNlcnZlcl0gaXNFbmFibGVkXTsKK30KKwor
KyAoQk9PTClfaGFzUmVtb3RlSW5zcGVjdG9yU2Vzc2lvbgoreworICAgIHJldHVybiBbW1dlYlZp
ZXcgc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVyXSBoYXNBY3RpdmVEZWJ1Z1Nlc3Npb25dOworfQor
CistIChCT09MKWNhbkJlUmVtb3RlbHlJbnNwZWN0ZWQKK3sKKyNpZiAhUExBVEZPUk0oSU9TKQor
ICAgIGlmICghW1tzZWxmIHByZWZlcmVuY2VzXSBkZXZlbG9wZXJFeHRyYXNFbmFibGVkXSkKKyAg
ICAgICAgcmV0dXJuIE5POworI2VuZGlmCisKKyAgICByZXR1cm4gW3NlbGYgYWxsb3dzUmVtb3Rl
SW5zcGVjdGlvbl07Cit9CisKKy0gKEJPT0wpYWxsb3dzUmVtb3RlSW5zcGVjdGlvbgoreworICAg
IHJldHVybiBfcHJpdmF0ZS0+YWxsb3dzUmVtb3RlSW5zcGVjdGlvbjsKK30KKworLSAodm9pZClz
ZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uOihCT09MKWFsbG93Cit7CisgICAgaWYgKF9wcml2YXRl
LT5hbGxvd3NSZW1vdGVJbnNwZWN0aW9uID09IGFsbG93KQorICAgICAgICByZXR1cm47CisKKyAg
ICBfcHJpdmF0ZS0+YWxsb3dzUmVtb3RlSW5zcGVjdGlvbiA9IGFsbG93OworCisgICAgW1tXZWJW
aWV3IHNoYXJlZFdlYkluc3BlY3RvclNlcnZlcl0gcHVzaExpc3RpbmddOworfQorCistICh2b2lk
KXNldEluZGljYXRpbmdGb3JSZW1vdGVJbnNwZWN0b3I6KEJPT0wpZW5hYmxlZAoreworICAgIC8v
IEZJWE1FOiBOZWVkcyBpbXBsZW1lbnRhdGlvbi4KK30KKworLSAodm9pZClzZXRSZW1vdGVJbnNw
ZWN0b3JVc2VySW5mbzooTlNEaWN0aW9uYXJ5ICopdXNlckluZm8KK3sKKyAgICBpZiAoW19wcml2
YXRlLT5yZW1vdGVJbnNwZWN0b3JVc2VySW5mbyBpc0VxdWFsVG9EaWN0aW9uYXJ5OnVzZXJJbmZv
XSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW19wcml2YXRlLT5yZW1vdGVJbnNwZWN0b3JVc2Vy
SW5mbyByZWxlYXNlXTsKKyAgICBfcHJpdmF0ZS0+cmVtb3RlSW5zcGVjdG9yVXNlckluZm8gPSBb
dXNlckluZm8gY29weV07CisKKyAgICBbW1dlYlZpZXcgc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVy
XSBwdXNoTGlzdGluZ107Cit9CisKKy0gKE5TRGljdGlvbmFyeSAqKXJlbW90ZUluc3BlY3RvclVz
ZXJJbmZvCit7CisgICAgcmV0dXJuIF9wcml2YXRlLT5yZW1vdGVJbnNwZWN0b3JVc2VySW5mbzsK
K30KKyNlbmRpZgorCiAtIChXZWJDb3JlOjpQYWdlKilwYWdlCiB7CiAgICAgcmV0dXJuIF9wcml2
YXRlLT5wYWdlOwpAQCAtMTk3MCw2ICsyMDY2LDkgQEAgc3RhdGljIGlubGluZSBJTVAgZ2V0TWV0
aG9kKGlkIG8sIFNFTCBzKQogICAgIGlmIChmcmFtZSA9PSBbc2VsZiBtYWluRnJhbWVdKQogICAg
ICAgICBbc2VsZiBfZGlkQ2hhbmdlVmFsdWVGb3JLZXk6IF9XZWJNYWluRnJhbWVVUkxLZXldOwog
ICAgIFtOU0FwcCBzZXRXaW5kb3dzTmVlZFVwZGF0ZTpZRVNdOworI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQorICAgIFtbV2ViVmlldyBzaGFyZWRXZWJJbnNwZWN0b3JTZXJ2ZXJdIHB1c2hM
aXN0aW5nXTsKKyNlbmRpZgogfQogCiAtICh2b2lkKV9kaWRGaW5pc2hMb2FkRm9yRnJhbWU6KFdl
YkZyYW1lICopZnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld0RhdGEuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAppbmRl
eCAwY2M5MzZlLi5mYjNlZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXdEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0
YS5oCkBAIC0yMDQsNiArMjA0LDExIEBAIHByaXZhdGU6CiAgICAgV2ViRnVsbFNjcmVlbkNvbnRy
b2xsZXIgKm5ld0Z1bGxzY3JlZW5Db250cm9sbGVyOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKKyAgICBCT09MIGFsbG93c1JlbW90ZUluc3BlY3Rpb247CisgICAgTlNE
aWN0aW9uYXJ5ICpyZW1vdGVJbnNwZWN0b3JVc2VySW5mbzsKKyNlbmRpZgorCiAjaWYgVVNFKEdM
SUIpCiAgICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgZ2xpYlJ1bkxvb3BPYnNlcnZlcjsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KaW5kZXggNjJkZGEwYi4u
YjYwM2U1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCkBAIC05
OSw2ICs5OSwxMCBAQCBXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcjo6V2ViVmlld0xheWVyRmx1
c2hTY2hlZHVsZXIoTGF5ZXJGbHVzaENvbnRyb2xsZXIqIGZsdQogICAgIGRhc2hib2FyZEJlaGF2
aW9yQWxsb3dXaGVlbFNjcm9sbGluZyA9IFlFUzsKICNlbmRpZgogCisjaWYgRU5BQkxFKFJFTU9U
RV9JTlNQRUNUT1IpCisgICAgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbiA9IFlFUzsKKyNlbmRpZgor
CiAgICAgc2hvdWxkQ2xvc2VXaXRoV2luZG93ID0gb2JqY19jb2xsZWN0aW5nRW5hYmxlZCgpOwog
CiAgICAgcGx1Z2luRGF0YWJhc2VDbGllbnRDb3VudCsrOwpAQCAtMTMwLDYgKzEzNCwxMCBAQCBX
ZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcjo6V2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXIoTGF5
ZXJGbHVzaENvbnRyb2xsZXIqIGZsdQogICAgIFtlZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXIgcmVs
ZWFzZV07CiAgICAgW21lZGlhU3R5bGUgcmVsZWFzZV07CiAKKyNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKKyAgICBbcmVtb3RlSW5zcGVjdG9yVXNlckluZm8gcmVsZWFzZV07CisjZW5kaWYK
KwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld0ludGVybmFsLmgKaW5kZXggY2Q1NGYwNy4uMjZjODk4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC02MSw2ICs2MSw5IEBAIHN0cnVj
dCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKIEBjbGFzcyBXZWJCYXNlUGx1Z2luUGFja2FnZTsKIEBj
bGFzcyBXZWJEb3dubG9hZDsKIEBjbGFzcyBXZWJOb2RlSGlnaGxpZ2h0OworI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQorQGNsYXNzIFdlYkluc3BlY3RvclNlcnZlcjsKKyNlbmRpZgogCiAj
aWZkZWYgX19jcGx1c3BsdXMKIApAQCAtMjE0LDYgKzIxNywxMCBAQCBPQkpDX0NMQVNTIE5TVGV4
dEFsdGVybmF0aXZlczsKIC0gKHZvaWQpX2Z1bGxTY3JlZW5SZW5kZXJlckNoYW5nZWQ6KFdlYkNv
cmU6OlJlbmRlckJveCopcmVuZGVyZXI7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQorKyAoV2ViSW5zcGVjdG9yU2VydmVyICopc2hhcmVkV2ViSW5zcGVjdG9yU2VydmVy
OworI2VuZGlmCisKIC8vIENvbnZlcnNpb24gZnVuY3Rpb25zIGJldHdlZW4gV2ViQ29yZSByb290
IHZpZXcgY29vcmRpbmF0ZXMgYW5kIHdlYiB2aWV3IGNvb3JkaW5hdGVzLgogLSAoTlNQb2ludClf
Y29udmVydFBvaW50RnJvbVJvb3RWaWV3OihOU1BvaW50KXBvaW50OwogLSAoTlNSZWN0KV9jb252
ZXJ0UmVjdEZyb21Sb290VmlldzooTlNSZWN0KXJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXdQcml2YXRlLmgKaW5kZXggMjhhNDAxNy4uMmRkZmRlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaApAQCAtMzQsNiArMzQsMTEgQEAKICNk
ZWZpbmUgRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUIDEKICNlbmRpZgogCisjaWYgIWRlZmluZWQo
RU5BQkxFX1JFTU9URV9JTlNQRUNUT1IpCisvLyBGSVhNRTogU2hvdWxkIHdlIGp1c3QgcmVtb3Zl
IHRoaXMgRU5BQkxFIGZsYWcgZXZlcnl3aGVyZT8KKyNkZWZpbmUgRU5BQkxFX1JFTU9URV9JTlNQ
RUNUT1IgMQorI2VuZGlmCisKIEBjbGFzcyBOU0Vycm9yOwogQGNsYXNzIFdlYkZyYW1lOwogQGNs
YXNzIFdlYkRldmljZU9yaWVudGF0aW9uOwpAQCAtNzEsNiArNzYsMTIgQEAgZXh0ZXJuIE5TU3Ry
aW5nICpXZWJFbGVtZW50SXNJblNjcm9sbEJhcktleTsKIC8vIE9uZSBvZiB0aGUgc3Vidmlld3Mg
b2YgdGhlIFdlYlZpZXcgZW50ZXJlZCBjb21wb3NpdGluZyBtb2RlLgogZXh0ZXJuIE5TU3RyaW5n
ICpfV2ViVmlld0RpZFN0YXJ0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ05vdGlmaWNhdGlvbjsKIAor
I2lmIEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SCisvLyBOb3RpZmljYXRpb24gd2hlbiB0aGUgbnVt
YmVyIG9mIGluc3BlY3RvciBzZXNzaW9ucyBiZWNvbWVzIG5vbi16ZXJvIG9yIHJldHVybnMgdG8g
MC4KKy8vIENoZWNrIHRoZSBjdXJyZW50IHN0YXRlIHZpYSAtW1dlYlZpZXcgX2hhc1JlbW90ZUlu
c3BlY3RvclNlc3Npb25dLgorZXh0ZXJuIE5TU3RyaW5nICpfV2ViVmlld1JlbW90ZUluc3BlY3Rv
ckhhc1Nlc3Npb25DaGFuZ2VkTm90aWZpY2F0aW9uOworI2VuZGlmCisKIGV4dGVybiBOU1N0cmlu
ZyAqIGNvbnN0IFdlYlZpZXdXaWxsQ2xvc2VOb3RpZmljYXRpb247CiAKICNpZiBFTkFCTEVfREFT
SEJPQVJEX1NVUFBPUlQKQEAgLTI0NCw2ICsyNTUsNjEgQEAgdHlwZWRlZiBlbnVtIHsKIAogLSAo
V2ViSW5zcGVjdG9yICopaW5zcGVjdG9yOwogCisjaWYgRU5BQkxFX1JFTU9URV9JTlNQRUNUT1IK
KysgKHZvaWQpX2VuYWJsZVJlbW90ZUluc3BlY3RvcjsKKysgKHZvaWQpX2Rpc2FibGVSZW1vdGVJ
bnNwZWN0b3I7CisrICh2b2lkKV9kaXNhYmxlQXV0b1N0YXJ0UmVtb3RlSW5zcGVjdG9yOworKyAo
Qk9PTClfaXNSZW1vdGVJbnNwZWN0b3JFbmFibGVkOworKyAoQk9PTClfaGFzUmVtb3RlSW5zcGVj
dG9yU2Vzc2lvbjsKKworLyohCisgICAgQG1ldGhvZCBjYW5CZVJlbW90ZWx5SW5zcGVjdGVkCisg
ICAgQHJlc3VsdCBMb29rcyBhdCBhbGwgdGhlIGZhY3RvcnMgb2YgdGhpcyBXZWJWaWV3IGFuZCBy
ZXR1cm5zIHdoZXRoZXIgb3Igbm90CisgICAgdGhpcyBXZWJWaWV3IHNob3VsZCBhbGxvdyBhIFJl
bW90ZSBXZWIgSW5zcGVjdG9yIHRvIGF0dGFjaCB0byBpdC4gVGhpcyB0YWtlcworICAgIGludG8g
YWNjb3VudCAtYWxsb3dzUmVtb3RlSW5zcGVjdGlvbiwgUHJpdmF0ZSBCcm93c2luZywgYW5kIHBv
dGVudGlhbGx5IG90aGVyCisgICAgZmFjdG9ycy4KKyovCistIChCT09MKWNhbkJlUmVtb3RlbHlJ
bnNwZWN0ZWQ7CisKKy8qIQorICAgIEBtZXRob2QgYWxsb3dzUmVtb3RlSW5zcGVjdGlvbgorICAg
IEByZXN1bHQgUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGlzIFdlYlZpZXcgd2lsbCBhbGxvdyBh
IFJlbW90ZSBXZWIgSW5zcGVjdG9yCisgICAgdG8gYXR0YWNoIHRvIGl0LgorKi8KKy0gKEJPT0wp
YWxsb3dzUmVtb3RlSW5zcGVjdGlvbjsKKworLyohCisgICAgQG1ldGhvZCBzZXRBbGxvd3NSZW1v
dGVJbnNwZWN0aW9uOgorICAgIEBwYXJhbSBhbGxvdyBUaGUgbmV3IHBlcm1pc3Npb24gZm9yIHRo
aXMgV2ViVmlldy4KKyAgICBAYWJzdHJhY3QgU2V0cyB0aGUgcGVybWlzc2lvbiBvZiB0aGlzIFdl
YlZpZXcgdG8gZWl0aGVyIGFsbG93IG9yIGRpc2FsbG93CisgICAgYSBSZW1vdGUgV2ViIEluc3Bl
Y3RvciB0byBhdHRhY2ggdG8gaXQuCisqLworLSAodm9pZClzZXRBbGxvd3NSZW1vdGVJbnNwZWN0
aW9uOihCT09MKWFsbG93OworCisvKiEKKyAgICBAbWV0aG9kIHNldEluZGljYXRpbmdGb3JSZW1v
dGVJbnNwZWN0b3IKKyAgICBAcGFyYW0gZW5hYmxlZCBTaG93IHRoZSBpbmRpY2F0aW9uIHdoZW4g
dHJ1ZSwgaGlkZSB3aGVuIGZhbHNlLgorICAgIEBhYnN0cmFjdCBpbmRpY2F0ZSB0aGlzIFdlYlZp
ZXcgb24gc2NyZWVuIGZvciBhIHJlbW90ZSBpbnNwZWN0b3IuCisqLworLSAodm9pZClzZXRJbmRp
Y2F0aW5nRm9yUmVtb3RlSW5zcGVjdG9yOihCT09MKWVuYWJsZWQ7CisKKy8qCisgICAgQG1ldGhv
ZCBzZXRSZW1vdGVJbnNwZWN0b3JVc2VySW5mbworICAgIEBwYXJhbSB0YWcgVGhlIGRpY3Rpb25h
cnkgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBXZWJWaWV3LgorICAgIEBhYnN0cmFjdCBEZXZl
bG9wZXIgc3BlY2lmaWVkIGRpY3Rpb25hcnkgZm9yIHRoZSBXZWJWaWV3IHRoYXQgd2lsbCBiZQor
ICAgIHNlbnQgdG8gdGhlIFJlbW90ZSBEZWJ1Z2dlci4gVGhlIGRpY3Rpb25hcnkgbXVzdCBjb250
YWluIHByb3BlcnR5CisgICAgbGlzdCBzZXJpYWxpemFibGUgdmFsdWVzLgorKi8KKy0gKHZvaWQp
c2V0UmVtb3RlSW5zcGVjdG9yVXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvOworCisv
KiEKKyAgICBAbWV0aG9kIHJlbW90ZUluc3BlY3RvclVzZXJJbmZvCisgICAgQHJlc3VsdCBSZXR1
cm5zIHRoZSBkaWN0aW9uYXJ5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIFdlYlZpZXcuCisqLworLSAo
TlNEaWN0aW9uYXJ5ICopcmVtb3RlSW5zcGVjdG9yVXNlckluZm87CisjZW5kaWYKKworCiAvKiEK
ICAgICBAbWV0aG9kIHNldEJhY2tncm91bmRDb2xvcjoKICAgICBAcGFyYW0gYmFja2dyb3VuZENv
bG9yIENvbG9yIHRvIHVzZSBhcyB0aGUgZGVmYXVsdCBiYWNrZ3JvdW5kLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IGJhNGRiOTguLmZkZTM5ZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTAt
MjEgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBVcHN0
cmVhbSBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikgYW5kIGVuYWJsZSBvbiBpT1MgYW5kIE1hYwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMTExCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDb25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAxMy0xMC0yMSAgVGltIEhvcnRv
biAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdGUgTGF5ZXIgVHJl
ZTogQ2xlYW4gdXAgdHJhbnNhY3Rpb24gbG9nZ2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0
Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCA4NDk4MWU0Li41
YzU0NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMjAsNyArMjAsNyBAQAogLy8gUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogLy8g
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCiAvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorLy8gT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAog
Ly8gVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIEZl
YXR1cmVEZWZpbmVzLnhjY29uZmlnIGluIEphdmFTY3JpcHRDb3JlLAogLy8gV2ViQ29yZSwgV2Vi
S2l0IGFuZCBXZWJLaXQyLiAgQWxzbyB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgdGhlIEVOQUJMRV9G
RUFUVVJFX05BTUUgbWFjcm9zIGluCkBAIC0xNTcsNiArMTU3LDcgQEAgRU5BQkxFX1BVQkxJQ19T
VUZGSVhfTElTVF9tYWNvc3hfMTA4MCA9IEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1Q7CiBFTkFC
TEVfUFVCTElDX1NVRkZJWF9MSVNUX21hY29zeF8xMDkwID0gRU5BQkxFX1BVQkxJQ19TVUZGSVhf
TElTVDsKIEVOQUJMRV9RVU9UQSA9IDsKIEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRSA9
IEVOQUJMRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRTsKK0VOQUJMRV9SRU1PVEVfSU5TUEVDVE9S
ID0gRU5BQkxFX1JFTU9URV9JTlNQRUNUT1I7CiBFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVS
WSA9IDsKIEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0ggPSA7CiBFTkFCTEVfU0hBRE9XX0RPTSA9IDsK
QEAgLTE4OCw0ICsxODksNCBAQCBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCiBFTkFCTEVf
RlRMX0pJVCA9IDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAk
KEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NB
Q0hFX1BBUlRJVElPTklORykgJChFTkFCTEVfQ0FOVkFTX1BBVEgpICQoRU5BQkxFX0NBTlZBU19Q
Uk9YWSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NTUF9ORVhUKSAkKEVO
QUJMRV9DU1NfQk9YX0RFQ09SQVRJT05fQlJFQUspICQoRU5BQkxFX0NTU19DT01QT1NJVElORykg
JChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAkKEVOQUJMRV9DU1NfRVhDTFVTSU9OUykg
JChFTkFCTEVfQ1NTX0ZJTFRFUlMpICQoRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTikgJChF
TkFCTEVfQ1NTX0lNQUdFX1JFU09MVVRJT04pICQoRU5BQkxFX0NTU19SRUdJT05TKSAkKEVOQUJM
RV9DU1NfU0hBREVSUykgJChFTkFCTEVfQ1NTX1NIQVBFUykgJChFTkFCTEVfQ1NTX1NUSUNLWV9Q
T1NJVElPTikgJChFTkFCTEVfQ1NTX1RSQU5TRk9STVNfQU5JTUFUSU9OU19VTlBSRUZJWEVEKSAk
KEVOQUJMRV9DU1NfVkFSSUFCTEVTKSAkKEVOQUJMRV9DU1MzX0NPTkRJVElPTkFMX1JVTEVTKSAk
KEVOQUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLKSAkKEVOQUJM
RV9DVVJTT1JfVklTSUJJTElUWSkgJChFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKSAkKEVO
QUJMRV9EQVNIQk9BUkRfU1VQUE9SVCkgJChFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCkgJChFTkFC
TEVfREFUQV9UUkFOU0ZFUl9JVEVNUykgJChFTkFCTEVfREVUQUlMU19FTEVNRU5UKSAkKEVOQUJM
RV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxF
X0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9SKSAkKEVOQUJMRV9EUkFHR0FCTEVfUkVHSU9OKSAkKEVO
QUJMRV9FTkNSWVBURURfTUVESUEpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMikgJChFTkFC
TEVfRklMVEVSUykgJChFTkFCTEVfRk9OVF9MT0FEX0VWRU5UUykgJChFTkFCTEVfRlVMTFNDUkVF
Tl9BUEkpICQoRU5BQkxFX0dBTUVQQUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9I
SURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFCTEVfSElHSF9EUElfQ0FOVkFT
KSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lGUkFNRV9TRUFNTEVTUykgJChFTkFC
TEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5ESUVfVUkpICQoRU5BQkxFX0lOUFVUX1NQ
RUVDSCkgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJChFTkFCTEVfSU5QVVRfVFlQRV9DT0xP
Ul9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVf
REFURVRJTUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAk
KEVOQUJMRV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5B
QkxFX0lOUFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFC
TEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJ
T05TKSAkKEVOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VC
X0FVRElPKSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxF
X01FRElBX0NPTlRST0xTX1NDUklQVCkgJChFTkFCTEVfTUVESUFfU09VUkNFKSAkKEVOQUJMRV9N
RURJQV9TVEFUSVNUSUNTKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkg
JChFTkFCTEVfTU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9V
VElMUykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfUEFHRV9WSVNJQklMSVRZX0FQ
SSkgJChFTkFCTEVfUERGS0lUX1BMVUdJTikgJChFTkFCTEVfUExVR0lOX1BST1hZX0ZPUl9WSURF
TykgJChFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCkgJChFTkFCTEVfUFJPTUlTRVMpICQoRU5BQkxF
X1BST1hJTUlUWV9FVkVOVFMpICQoRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCkgJChFTkFCTEVf
UVVPVEEpICQoRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKSAkKEVOQUJMRV9SRVNPTFVU
SU9OX01FRElBX1FVRVJZKSAkKEVOQUJMRV9TQ1JJUFRFRF9TUEVFQ0gpICQoRU5BQkxFX1NIQURP
V19ET00pICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lT
KSAkKEVOQUJMRV9TUUxfREFUQUJBU0UpICQoRU5BQkxFX1NVQlBJWEVMX0xBWU9VVCkgJChFTkFC
TEVfU1VCVExFX0NSWVBUTykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5B
QkxFX1RFTVBMQVRFX0VMRU1FTlQpICQoRU5BQkxFX1RFWFRfQVVUT1NJWklORykgJChFTkFCTEVf
VEhSRUFERURfSFRNTF9QQVJTRVIpICQoRU5BQkxFX1RPVUNIX0lDT05fTE9BRElORykgJChFTkFC
TEVfVVNFUlNFTEVDVF9BTEwpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSURFT19UUkFDSykg
JChFTkFCTEVfVklFV19NT0RFX0NTU19NRURJQSkgJChFTkFCTEVfV0VCR0wpICQoRU5BQkxFX1dF
Ql9BTklNQVRJT05TKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAk
KEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFJfVElNRU9V
VCkgJChFTkFCTEVfWFNMVCkgJChFTkFCTEVfRlRMX0pJVCkgJChGRUFUVVJFX0RFRklORVNfJChQ
TEFURk9STV9OQU1FKSk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcp
ICQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJChFTkFCTEVfQkxPQikgJChFTkFCTEVf
Q0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFCTEVfQ0FOVkFT
X1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ1NQX05FWFQpICQo
RU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5H
KSAkKEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19FWENMVVNJT05T
KSAkKEVOQUJMRV9DU1NfRklMVEVSUykgJChFTkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAk
KEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5B
QkxFX0NTU19TSEFERVJTKSAkKEVOQUJMRV9DU1NfU0hBUEVTKSAkKEVOQUJMRV9DU1NfU1RJQ0tZ
X1BPU0lUSU9OKSAkKEVOQUJMRV9DU1NfVFJBTlNGT1JNU19BTklNQVRJT05TX1VOUFJFRklYRUQp
ICQoRU5BQkxFX0NTU19WQVJJQUJMRVMpICQoRU5BQkxFX0NTUzNfQ09ORElUSU9OQUxfUlVMRVMp
ICQoRU5BQkxFX0NTUzNfVEVYVCkgJChFTkFCTEVfQ1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5B
QkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQo
RU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVO
QUJMRV9EQVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5B
QkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFC
TEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0RSQUdHQUJMRV9SRUdJT04pICQo
RU5BQkxFX0VOQ1JZUFRFRF9NRURJQSkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVO
QUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GT05UX0xPQURfRVZFTlRTKSAkKEVOQUJMRV9GVUxMU0NS
RUVOX0FQSSkgJChFTkFCTEVfR0FNRVBBRCkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxF
X0hJRERFTl9QQUdFX0RPTV9USU1FUl9USFJPVFRMSU5HKSAkKEVOQUJMRV9ISUdIX0RQSV9DQU5W
QVMpICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSUZSQU1FX1NFQU1MRVNTKSAkKEVO
QUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRJRV9VSSkgJChFTkFCTEVfSU5QVVRf
U1BFRUNIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NP
TE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5QVVRfVFlQ
RV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwp
ICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElNRSkgJChF
TkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVO
QUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVfTEVHQUNZX05PVElGSUNB
VElPTlMpICQoRU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9X
RUJfQVVESU8pICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BVEhNTCkgJChFTkFC
TEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUKSAkKEVOQUJMRV9NRURJQV9TT1VSQ0UpICQoRU5BQkxF
X01FRElBX1NUQVRJU1RJQ1MpICQoRU5BQkxFX01FVEVSX0VMRU1FTlQpICQoRU5BQkxFX01IVE1M
KSAkKEVOQUJMRV9NT1VTRV9DVVJTT1JfU0NBTEUpICQoRU5BQkxFX05BVklHQVRPUl9DT05URU5U
X1VUSUxTKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9QQUdFX1ZJU0lCSUxJVFlf
QVBJKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QTFVHSU5fUFJPWFlfRk9SX1ZJ
REVPKSAkKEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UKSAkKEVOQUJMRV9QUk9NSVNFUykgJChFTkFC
TEVfUFJPWElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJM
RV9RVU9UQSkgJChFTkFCTEVfUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICQoRU5BQkxFX1JFTU9U
RV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxFX1ND
UklQVEVEX1NQRUVDSCkgJChFTkFCTEVfU0hBRE9XX0RPTSkgJChFTkFCTEVfU0hBUkVEX1dPUktF
UlMpICQoRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMpICQoRU5BQkxFX1NRTF9EQVRBQkFTRSkgJChF
TkFCTEVfU1VCUElYRUxfTEFZT1VUKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKSAkKEVOQUJMRV9T
VkcpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkgJChFTkFC
TEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9USFJFQURFRF9IVE1MX1BBUlNFUikgJChFTkFC
TEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVf
VklERU8pICQoRU5BQkxFX1ZJREVPX1RSQUNLKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01FRElB
KSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCX0FOSU1BVElPTlMpICQoRU5BQkxFX1dFQl9B
VURJTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxF
X1dPUktFUlMpICQoRU5BQkxFX1hIUl9USU1FT1VUKSAkKEVOQUJMRV9YU0xUKSAkKEVOQUJMRV9G
VExfSklUKSAkKEZFQVRVUkVfREVGSU5FU18kKFBMQVRGT1JNX05BTUUpKTsK
</data>
<flag name="review"
          id="237375"
          type_id="1"
          status="+"
          setter="timothy"
    />
    <flag name="commit-queue"
          id="237379"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>