<?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>121967</bug_id>
          
          <creation_ts>2013-09-26 11:22:15 -0700</creation_ts>
          <short_desc>[MediaStream] make MediaStream testable</short_desc>
          <delta_ts>2013-11-14 07:39:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>124288</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>thiago.lacerda</cc>
    
    <cc>tommyw</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>933610</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-09-26 11:22:15 -0700</bug_when>
    <thetext>Add necessary infrastructure to make MediaStream layout tests possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933718</commentid>
    <comment_count>1</comment_count>
      <attachid>212753</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-09-26 14:47:31 -0700</bug_when>
    <thetext>Created attachment 212753
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933720</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-26 14:49:55 -0700</bug_when>
    <thetext>Attachment 212753 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/mediastream/MediaStream-add-remove-tracks-expected.txt&apos;, u&apos;LayoutTests/fast/mediastream/MediaStream-add-remove-tracks.html&apos;, u&apos;LayoutTests/fast/mediastream/MediaStream-onended-expected.txt&apos;, u&apos;LayoutTests/fast/mediastream/MediaStream-onended.html&apos;, u&apos;LayoutTests/fast/mediastream/MediaStreamConstructor-expected.txt&apos;, u&apos;LayoutTests/fast/mediastream/MediaStreamConstructor.html&apos;, u&apos;LayoutTests/fast/mediastream/MediaStreamTrackEvent-constructor-expected.txt&apos;, u&apos;LayoutTests/fast/mediastream/MediaStreamTrackEvent-constructor.html&apos;, u&apos;LayoutTests/fast/mediastream/argument-types-expected.txt&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamTrack.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/NavigatorUserMediaError.idl&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/dom/DOMError.h&apos;, u&apos;Source/WebCore/dom/DOMError.idl&apos;, u&apos;Source/WebCore/platform/mock/MockMediaStreamCenter.cpp&apos;, u&apos;Source/WebCore/platform/mock/MockMediaStreamCenter.h&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit/WebKit.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebUserMediaClient.h&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebUserMediaClient.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebUIDelegatePrivate.h&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/WebViewPrivate.h&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/DumpRenderTree/mac/UIDelegate.mm&apos;]&quot; exit_code: 1
Source/WebKit/mac/WebView/WebViewPrivate.h:720:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 33 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>933723</commentid>
    <comment_count>3</comment_count>
      <attachid>212753</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-09-26 14:52:16 -0700</bug_when>
    <thetext>Comment on attachment 212753
Proposed patch

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

&gt; Source/WebCore/platform/mock/MockMediaStreamCenter.cpp:54
&gt; +}
&gt; +
&gt; +
&gt; +static String verifyConstraints(MediaConstraints* constraints)

Extra blank line

&gt; Source/WebCore/platform/mock/MockMediaStreamCenter.cpp:122
&gt; +    if (audioConstraints) {
&gt; +        
&gt; +        String invalidQuery = verifyConstraints(audioConstraints.get());

Nit: another blank line.

&gt; Source/WebCore/platform/mock/MockMediaStreamCenter.cpp:131
&gt; +    if (videoConstraints) {
&gt; +        
&gt; +        String invalidQuery = verifyConstraints(videoConstraints.get());

And one more.

&gt; Source/WebCore/platform/mock/MockMediaStreamCenter.cpp:151
&gt; +    if (audioConstraints) {
&gt; +        RefPtr&lt;MediaStreamSource&gt; audioSource = MediaStreamSource::create(emptyString(), MediaStreamSource::Audio, &quot;Mock audio device&quot;);
&gt; +        audioSource-&gt;setReadyState(MediaStreamSource::Live);
&gt; +        audioSources.append(audioSource.release());
&gt; +    }
&gt; +    
&gt; +    if (videoConstraints) {
&gt; +        RefPtr&lt;MediaStreamSource&gt; videoSource = MediaStreamSource::create(emptyString(), MediaStreamSource::Video, &quot;Mock video device&quot;);
&gt; +        videoSource-&gt;setReadyState(MediaStreamSource::Live);
&gt; +        videoSources.append(videoSource.release());
&gt; +    }

Could you move these bits up into the if statements above that do the same thing? Or is it that if there is a videoConstraint that you fail, you never want to have created the audio source?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933725</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-09-26 14:58:45 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 212753 [details])
&gt; &gt; Source/WebCore/platform/mock/MockMediaStreamCenter.cpp:151
&gt; &gt; +    if (audioConstraints) {
&gt; &gt; +        RefPtr&lt;MediaStreamSource&gt; audioSource = MediaStreamSource::create(emptyString(), MediaStreamSource::Audio, &quot;Mock audio device&quot;);
&gt; &gt; +        audioSource-&gt;setReadyState(MediaStreamSource::Live);
&gt; &gt; +        audioSources.append(audioSource.release());
&gt; &gt; +    }
&gt; &gt; +    
&gt; &gt; +    if (videoConstraints) {
&gt; &gt; +        RefPtr&lt;MediaStreamSource&gt; videoSource = MediaStreamSource::create(emptyString(), MediaStreamSource::Video, &quot;Mock video device&quot;);
&gt; &gt; +        videoSource-&gt;setReadyState(MediaStreamSource::Live);
&gt; &gt; +        videoSources.append(videoSource.release());
&gt; &gt; +    }
&gt; 
&gt; Could you move these bits up into the if statements above that do the same thing? Or is it that if there is a videoConstraint that you fail, you never want to have created the audio source?

Good point, I will change this (and remove the nasty blank lines).

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933733</commentid>
    <comment_count>5</comment_count>
      <attachid>212753</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-26 15:08:56 -0700</bug_when>
    <thetext>Comment on attachment 212753
Proposed patch

Attachment 212753 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/2613012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933736</commentid>
    <comment_count>6</comment_count>
      <attachid>212753</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-09-26 15:14:39 -0700</bug_when>
    <thetext>Comment on attachment 212753
Proposed patch

Attachment 212753 did not pass gtk-wk2-ews (gtk-wk2):
Output: http://webkit-queues.appspot.com/results/2597022</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933743</commentid>
    <comment_count>7</comment_count>
      <attachid>212753</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-26 15:31:33 -0700</bug_when>
    <thetext>Comment on attachment 212753
Proposed patch

Attachment 212753 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/2614015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933791</commentid>
    <comment_count>8</comment_count>
      <attachid>212770</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-09-26 17:24:18 -0700</bug_when>
    <thetext>Created attachment 212770
Updated patch

Add a missing build flag</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933796</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-26 17:25:36 -0700</bug_when>
    <thetext>Attachment 212770 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/mediastream/MediaStream-add-remove-tracks-expected.txt&apos;, u&apos;LayoutTests/fast/mediastream/MediaStream-add-remove-tracks.html&apos;, u&apos;LayoutTests/fast/mediastream/MediaStream-onended-expected.txt&apos;, u&apos;LayoutTests/fast/mediastream/MediaStream-onended.html&apos;, u&apos;LayoutTests/fast/mediastream/MediaStreamConstructor-expected.txt&apos;, u&apos;LayoutTests/fast/mediastream/MediaStreamConstructor.html&apos;, u&apos;LayoutTests/fast/mediastream/MediaStreamTrackEvent-constructor-expected.txt&apos;, u&apos;LayoutTests/fast/mediastream/MediaStreamTrackEvent-constructor.html&apos;, u&apos;LayoutTests/fast/mediastream/argument-types-expected.txt&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamTrack.idl&apos;, u&apos;Source/WebCore/Modules/mediastream/NavigatorUserMediaError.idl&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/dom/DOMError.h&apos;, u&apos;Source/WebCore/dom/DOMError.idl&apos;, u&apos;Source/WebCore/platform/mock/MockMediaStreamCenter.cpp&apos;, u&apos;Source/WebCore/platform/mock/MockMediaStreamCenter.h&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit/WebKit.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebUserMediaClient.h&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebUserMediaClient.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebUIDelegatePrivate.h&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/WebViewPrivate.h&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/DumpRenderTree/mac/UIDelegate.mm&apos;]&quot; exit_code: 1
Source/WebKit/mac/WebView/WebViewPrivate.h:720:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 33 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>933807</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-09-26 17:51:45 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Attachment 212770 [details] did not pass style-queue:
&gt; 
&gt; Source/WebKit/mac/WebView/WebViewPrivate.h:720:  Extra space before ( in function call  [whitespace/parens] [4]

 &quot;@interface WebView (WebViewUserMedia)&quot; is a function call?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933811</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-09-26 18:08:28 -0700</bug_when>
    <thetext>Committed r156522: https://trac.webkit.org/r156522</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212753</attachid>
            <date>2013-09-26 14:47:31 -0700</date>
            <delta_ts>2013-09-26 18:08:42 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>testing_6.txt</filename>
            <type>text/plain</type>
            <size>66765</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQ5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEzLTA5LTI2ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
bWFrZSBNZWRpYVN0cmVhbSB0ZXN0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBleGlzdGluZyB0ZXN0cyB1cGRhdGVkLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuCisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogRGl0dG8uCisKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsOiBBZGQgU2tpcFZUYWJsZVZhbGlkYXRp
b24uCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJv
ci5pZGw6IEFkZCBKU0dlbmVyYXRlVG9KU09iamVjdC4KKyAgICAgICAgKiBXZWJDb3JlLmV4cC5p
bjogRXhwb3J0IE1vY2tNZWRpYVN0cmVhbUNlbnRlcjo6cmVnaXN0ZXJNb2NrTWVkaWFTdHJlYW1D
ZW50ZXIuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFk
ZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuCisgICAgICAgICogZG9tL0RPTUVycm9yLmg6IE1ha2Ug
dGhlIGRlc3RydWN0b3IgdmlydHVhbCBiZWNhdXNlIGl0IGhhcyBhIGRlcml2ZWQgY2xhc3MuCisg
ICAgICAgICogZG9tL0RPTUVycm9yLmlkbDoKKworICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a01lZGlhU3RyZWFtQ2VudGVyLmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9N
b2NrTWVkaWFTdHJlYW1DZW50ZXIuaDogQWRkZWQuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5jcHA6IFJlZ2lzdGVyIHRoZSBtb2NrIHN0cmVhbSBjZW50ZXIuCisKIDIwMTMtMDktMjYg
IEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
UGFzc1dlYWsuaApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE1NjQ4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMDM4LDYg
KzIwMzgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbW9jay9EZXZpY2VN
b3Rpb25DbGllbnRNb2NrLmNwcAogICAgIHBsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrLmNwcAogICAgIHBsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNw
cAorICAgIHBsYXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcAogICAgIHBsYXRm
b3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAogCiAgICAgcGxhdGZvcm0vbmV0d29yay9B
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHJldmlzaW9uIDE1NjQ4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTU0OTQsNiArNTQ5NCw4IEBAIHdlYmNvcmVfcGxh
dGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2suaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9H
ZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9TY3JvbGxiYXJUaGVtZU1vY2suaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iRGF0YS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE1NjQ3
MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0y
ODA1LDQgKzI4MDUsNSBAQCBfX1pON1dlYkNvcmUxNlVzZXJNZWRpYVJlcXVlc3QyMnVzZXJNZWRp
CiBfX1pON1dlYkNvcmUxNlVzZXJNZWRpYVJlcXVlc3QyMXVzZXJNZWRpYUFjY2Vzc0RlbmllZEV2
CiBfX1pON1dlYkNvcmUxOHByb3ZpZGVVc2VyTWVkaWFUb0VQTlNfNFBhZ2VFUE5TXzE1VXNlck1l
ZGlhQ2xpZW50RQogX19aTks3V2ViQ29yZTE2VXNlck1lZGlhUmVxdWVzdDE0c2VjdXJpdHlPcmln
aW5FdgorX19aTjdXZWJDb3JlMjFNb2NrTWVkaWFTdHJlYW1DZW50ZXIyOXJlZ2lzdGVyTW9ja01l
ZGlhU3RyZWFtQ2VudGVyRXYKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsCShyZXZpc2lvbiAx
NTY0NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw4IEBACiBbCiAgICAgQ29uZGl0
aW9uYWw9TUVESUFfU1RSRUFNLAogICAgIEV2ZW50VGFyZ2V0LAotICAgIEFjdGl2ZURPTU9iamVj
dAorICAgIEFjdGl2ZURPTU9iamVjdCwKKyAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbgogXSBpbnRl
cmZhY2UgTWVkaWFTdHJlYW1UcmFjayB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBraW5kOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmln
YXRvclVzZXJNZWRpYUVycm9yLmlkbAkocmV2aXNpb24gMTU2NDU5KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNCw3ICsyNSw4IEBACiAKIFsKICAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25k
aXRpb25hbD1NRURJQV9TVFJFQU0KKyAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAg
SlNHZW5lcmF0ZVRvSlNPYmplY3QsCiBdIGludGVyZmFjZSBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJv
ciA6IERPTUVycm9yIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNvbnN0cmFp
bnROYW1lOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NjQ4OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYg
KzI3NCw4IEBACiAJCTA3QzU5QjVFMTdGNEIyMDgwMDBGQkNCQiAvKiBKU0F1ZGlvU3RyZWFtVHJh
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5
QjVBMTdGNEIyMDgwMDBGQkNCQiAvKiBKU0F1ZGlvU3RyZWFtVHJhY2suaCAqLzsgfTsKIAkJMDdD
NTlCNUYxN0Y0QjIwODAwMEZCQ0JCIC8qIEpTVmlkZW9TdHJlYW1UcmFjay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI1QjE3RjRCMjA4MDAw
RkJDQkIgLyogSlNWaWRlb1N0cmVhbVRyYWNrLmNwcCAqLzsgfTsKIAkJMDdDNTlCNjAxN0Y0QjIw
ODAwMEZCQ0JCIC8qIEpTVmlkZW9TdHJlYW1UcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNUMxN0Y0QjIwODAwMEZCQ0JCIC8qIEpTVmlk
ZW9TdHJlYW1UcmFjay5oICovOyB9OworCQkwN0M1OUI2MzE3RjREMUJGMDAwRkJDQkIgLyogTW9j
a01lZGlhU3RyZWFtQ2VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3QzU5QjYxMTdGNENGODcwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1D
ZW50ZXIuY3BwICovOyB9OworCQkwN0M1OUI2NDE3RjREMUM0MDAwRkJDQkIgLyogTW9ja01lZGlh
U3RyZWFtQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0M1OUI2MjE3RjRDRjg3MDAwRkJDQkIgLyogTW9ja01lZGlhU3RyZWFtQ2VudGVyLmgg
Ki87IH07CiAJCTA3Q0U3N0Q1MTY3MTJBNkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwN0NFNzdENDE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3
REM1RkQ0MTdEM0VFRTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdEQzVGRDMxN0Qz
RUVFOTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAgKi87IH07CiAJCTA3
RTExNkIxMTQ4OUM5QTEwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1c3RvbS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0UxMTZCMDE0ODlDOUExMDBF
QzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwICovOyB9OwpAQCAtNjY4NSw2ICs2Njg3LDgg
QEAKIAkJMDdDNTlCNUExN0Y0QjIwODAwMEZCQ0JCIC8qIEpTQXVkaW9TdHJlYW1UcmFjay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0F1ZGlvU3RyZWFtVHJhY2suaDsgcGF0
aCA9IEpTQXVkaW9TdHJlYW1UcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
N0M1OUI1QjE3RjRCMjA4MDAwRkJDQkIgLyogSlNWaWRlb1N0cmVhbVRyYWNrLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTVmlkZW9TdHJlYW1UcmFjay5jcHA7IHBh
dGggPSBKU1ZpZGVvU3RyZWFtVHJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwN0M1OUI1QzE3RjRCMjA4MDAwRkJDQkIgLyogSlNWaWRlb1N0cmVhbVRyYWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTVmlkZW9TdHJlYW1UcmFjay5oOyBwYXRoID0g
SlNWaWRlb1N0cmVhbVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5
QjYxMTdGNENGODcwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcDsg
cGF0aCA9IG1vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDdDNTlCNjIxN0Y0Q0Y4NzAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNl
bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNb2NrTWVkaWFTdHJlYW1D
ZW50ZXIuaDsgcGF0aCA9IG1vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3Q0U3N0Q0MTY3MTJBNkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
YmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDdEQzVGRDMxN0QzRUVFOTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JUQ1N0YXRzUmVzcG9u
c2VDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0UxMTZCMDE0ODlD
OUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTQ4OTcsNiArMTQ5MDEsOCBAQAogCQk1OUM3N0YxMDEwNTQ1OTFDMDA1
MDYxMDQgLyogbW9jayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJMDdDNTlCNjExN0Y0Q0Y4NzAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNlbnRlci5j
cHAgKi8sCisJCQkJMDdDNTlCNjIxN0Y0Q0Y4NzAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNl
bnRlci5oICovLAogCQkJCTU5MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2suY3BwICovLAogCQkJCTU5MzA5QTEyMTFGNEFFNkEwMDI1MDYwMyAvKiBE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLywKIAkJCQlBQUUyN0I3NDE2Q0JGQzBEMDA2
MjMwNDMgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suY3BwICovLApAQCAtMjE5MTgs
NiArMjE5MjQsNyBAQAogCQkJCTFDNEM4RjY2MEFEODY1NUQwMDk0NzVDRSAvKiBEZWxldGVCdXR0
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFDNEM4RjAyMEFEODVEODcwMDk0NzVDRSAvKiBEZWxl
dGVCdXR0b25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURERjA5OUU2NDky
MDA1NkU1ODEgLyogRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMDdDNTlCNjQxN0Y0RDFDNDAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNlbnRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERTEwOTlFNjQ5MjAwNTZFNTgxIC8qIERlbGV0ZVNlbGVj
dGlvbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMTY2MEE1MTM3ODdDNkQwMDFGRkE3
QiAvKiBEZW5vcm1hbERpc2FibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTAwRUU3NjE1NDZF
QUMxMDBCQTExRDEgLyogRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNjEzNiw2ICsyNjE0Myw3IEBACiAJCQkJNDE2MkE0NTQxMDExNDVFMzAwREZGM0VEIC8qIEpT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkRBMTVFRDExMkIwM0Y5NDAwM0E1ODNBIC8qIEpTRGVsYXlOb2RlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMxRkIxQTY1MTIwQTVEM0YwMERDMDJBMCAvKiBKU0RldmljZU1vdGlvbkV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTA3QzU5QjYzMTdGNEQxQkYwMDBGQkNCQiAvKiBNb2NrTWVk
aWFTdHJlYW1DZW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFGQjFBNkMxMjBBNUQ2OTAw
REMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTlBODYwMDYxMTlEQUY3RjAwREVGMUVGIC8qIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1OTBFMUI0QjExRTRFRjcwMDA2OUY3ODQgLyogSlNEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0RPTUVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L0RPTUVycm9yLmgJKHJldmlzaW9uIDE1NjQ1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01F
cnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9NRXJyb3IobmFtZSkpOwogICAgIH0KKyAgICB2
aXJ0dWFsIH5ET01FcnJvcigpIHsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01FcnJvci5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTUVycm9yLmlkbAkocmV2aXNp
b24gMTU2NDU5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTUVycm9yLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjcsOCArMjcsOCBAQAogICovCiBbCiAgICAgTm9JbnRlcmZhY2VPYmplY3QsCi0g
ICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQorICAgIFNraXBWVGFibGVWYWxpZGF0aW9uCiBd
IGludGVyZmFjZSAgRE9NRXJyb3IgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcg
bmFtZTsKLSAgfTsKK307CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a01lZGlhU3RyZWFtQ2VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTW9ja01lZGlhU3RyZWFtQ2VudGVyLmgiCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKKyNpbmNsdWRlICJN
ZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1EZXNjcmlw
dG9yLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFjay5oIgorI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRNb2Nr
Q29uc3RyYWludChjb25zdCBTdHJpbmcmIGNvbnN0cmFpbnROYW1lKQoreworICAgIHJldHVybiBu
b3RGb3VuZCAhPSBjb25zdHJhaW50TmFtZS5maW5kKCJfYW5kX3N1cHBvcnRlZF8iKTsKK30KKwor
c3RhdGljIGJvb2wgaXNWYWxpZE1vY2tDb25zdHJhaW50KGNvbnN0IFN0cmluZyYgY29uc3RyYWlu
dE5hbWUpCit7CisgICAgaWYgKGlzU3VwcG9ydGVkTW9ja0NvbnN0cmFpbnQoY29uc3RyYWludE5h
bWUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbm90Rm91bmQgIT0gY29uc3Ry
YWludE5hbWUuZmluZCgiX2J1dF91bnN1cHBvcnRlZF8iKTsKK30KKworCitzdGF0aWMgU3RyaW5n
IHZlcmlmeUNvbnN0cmFpbnRzKE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQoreworICAg
IFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+IG1hbmRhdG9yeUNvbnN0cmFpbnRzOworICAgIGNvbnN0
cmFpbnRzLT5nZXRNYW5kYXRvcnlDb25zdHJhaW50cyhtYW5kYXRvcnlDb25zdHJhaW50cyk7Cisg
ICAgaWYgKG1hbmRhdG9yeUNvbnN0cmFpbnRzLnNpemUoKSkgeworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1hbmRhdG9yeUNvbnN0cmFpbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICBjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQgPSBtYW5kYXRvcnlDb25zdHJh
aW50c1tpXTsKKyAgICAgICAgICAgIGlmICghaXNTdXBwb3J0ZWRNb2NrQ29uc3RyYWludChjb25z
dHJhaW50Lm1fbmFtZSkgfHwgY29uc3RyYWludC5tX3ZhbHVlICE9ICIxIikKKyAgICAgICAgICAg
ICAgICByZXR1cm4gY29uc3RyYWludC5tX25hbWU7CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgVmVjdG9yPE1lZGlhQ29uc3RyYWludD4gb3B0aW9uYWxDb25zdHJhaW50czsKKyAgICBjb25z
dHJhaW50cy0+Z2V0T3B0aW9uYWxDb25zdHJhaW50cyhvcHRpb25hbENvbnN0cmFpbnRzKTsKKyAg
ICBpZiAob3B0aW9uYWxDb25zdHJhaW50cy5zaXplKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBvcHRpb25hbENvbnN0cmFpbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAg
ICBjb25zdCBNZWRpYUNvbnN0cmFpbnQmIGNvbnN0cmFpbnQgPSBvcHRpb25hbENvbnN0cmFpbnRz
W2ldOworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkTW9ja0NvbnN0cmFpbnQoY29uc3RyYWludC5t
X25hbWUpIHx8IGNvbnN0cmFpbnQubV92YWx1ZSAhPSAiMCIpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGNvbnN0cmFpbnQubV9uYW1lOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVy
biBlbXB0eVN0cmluZygpOworfQorCit2b2lkIE1vY2tNZWRpYVN0cmVhbUNlbnRlcjo6cmVnaXN0
ZXJNb2NrTWVkaWFTdHJlYW1DZW50ZXIoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTW9j
a01lZGlhU3RyZWFtQ2VudGVyLCBjZW50ZXIsICgpKTsKKyAgICBzdGF0aWMgYm9vbCByZWdpc3Rl
cmVkID0gZmFsc2U7CisgICAgaWYgKCFyZWdpc3RlcmVkKSB7CisgICAgICAgIHJlZ2lzdGVyZWQg
PSB0cnVlOworICAgICAgICBNZWRpYVN0cmVhbUNlbnRlcjo6c2V0U2hhcmVkU3RyZWFtQ2VudGVy
KCZjZW50ZXIpOworICAgIH0KK30KKwordm9pZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OnZhbGlk
YXRlUmVxdWVzdENvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVu
dD4gcHJwUXVlcnlDbGllbnQsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9Db25z
dHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRzKQor
eworICAgIFJlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiBjbGllbnQgPSBwcnBRdWVy
eUNsaWVudDsKKyAgICAKKyAgICBBU1NFUlQoY2xpZW50KTsKKyAgICAKKyAgICBpZiAoYXVkaW9D
b25zdHJhaW50cykgeworICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gdmVyaWZ5Q29uc3Ry
YWludHMoYXVkaW9Db25zdHJhaW50cy5nZXQoKSk7CisgICAgICAgIGlmICghaW52YWxpZFF1ZXJ5
LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgY2xpZW50LT5jb25zdHJhaW50c0ludmFsaWQoaW52
YWxpZFF1ZXJ5KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICAK
KyAgICBpZiAodmlkZW9Db25zdHJhaW50cykgeworICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5
ID0gdmVyaWZ5Q29uc3RyYWludHModmlkZW9Db25zdHJhaW50cy5nZXQoKSk7CisgICAgICAgIGlm
ICghaW52YWxpZFF1ZXJ5LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgY2xpZW50LT5jb25zdHJh
aW50c0ludmFsaWQoaW52YWxpZFF1ZXJ5KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGNsaWVudC0+Y29uc3RyYWludHNWYWxpZGF0ZWQoKTsKK30KKwordm9p
ZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gcHJwUXVlcnlDbGllbnQsIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
PiB2aWRlb0NvbnN0cmFpbnRzKQoreworICAgIFJlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xp
ZW50PiBjbGllbnQgPSBwcnBRdWVyeUNsaWVudDsKKworICAgIEFTU0VSVChjbGllbnQpOworICAg
IAorICAgIGlmIChhdWRpb0NvbnN0cmFpbnRzKSB7CisgICAgICAgIAorICAgICAgICBTdHJpbmcg
aW52YWxpZFF1ZXJ5ID0gdmVyaWZ5Q29uc3RyYWludHMoYXVkaW9Db25zdHJhaW50cy5nZXQoKSk7
CisgICAgICAgIGlmICghaW52YWxpZFF1ZXJ5LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgY2xp
ZW50LT5mYWlsZWRUb0NyZWF0ZVN0cmVhbVdpdGhDb25zdHJhaW50c0Vycm9yKGludmFsaWRRdWVy
eSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodmlk
ZW9Db25zdHJhaW50cykgeworICAgICAgICAKKyAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9
IHZlcmlmeUNvbnN0cmFpbnRzKHZpZGVvQ29uc3RyYWludHMuZ2V0KCkpOworICAgICAgICBpZiAo
IWludmFsaWRRdWVyeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGNsaWVudC0+ZmFpbGVkVG9D
cmVhdGVTdHJlYW1XaXRoQ29uc3RyYWludHNFcnJvcihpbnZhbGlkUXVlcnkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIFZlY3RvcjxSZWZQdHI8TWVk
aWFTdHJlYW1Tb3VyY2U+PiBhdWRpb1NvdXJjZXM7CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0
cmVhbVNvdXJjZT4+IHZpZGVvU291cmNlczsKKyAgICAKKyAgICBpZiAoYXVkaW9Db25zdHJhaW50
cykgeworICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IGF1ZGlvU291cmNlID0gTWVk
aWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZShlbXB0eVN0cmluZygpLCBNZWRpYVN0cmVhbVNvdXJjZTo6
QXVkaW8sICJNb2NrIGF1ZGlvIGRldmljZSIpOworICAgICAgICBhdWRpb1NvdXJjZS0+c2V0UmVh
ZHlTdGF0ZShNZWRpYVN0cmVhbVNvdXJjZTo6TGl2ZSk7CisgICAgICAgIGF1ZGlvU291cmNlcy5h
cHBlbmQoYXVkaW9Tb3VyY2UucmVsZWFzZSgpKTsKKyAgICB9CisgICAgCisgICAgaWYgKHZpZGVv
Q29uc3RyYWludHMpIHsKKyAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiB2aWRlb1Nv
dXJjZSA9IE1lZGlhU3RyZWFtU291cmNlOjpjcmVhdGUoZW1wdHlTdHJpbmcoKSwgTWVkaWFTdHJl
YW1Tb3VyY2U6OlZpZGVvLCAiTW9jayB2aWRlbyBkZXZpY2UiKTsKKyAgICAgICAgdmlkZW9Tb3Vy
Y2UtPnNldFJlYWR5U3RhdGUoTWVkaWFTdHJlYW1Tb3VyY2U6OkxpdmUpOworICAgICAgICB2aWRl
b1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVhc2UoKSk7CisgICAgfQorCisgICAgY2xp
ZW50LT5kaWRDcmVhdGVTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUoYXVkaW9T
b3VyY2VzLCB2aWRlb1NvdXJjZXMpKTsKK30KKworYm9vbCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6
OmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1Nv
dXJjZXNSZXF1ZXN0Q2xpZW50PiBwcnBDbGllbnQpCit7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFt
VHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4gcmVxdWVzdENsaWVudCA9IHBycENsaWVudDsKKyAg
ICBWZWN0b3I8UmVmUHRyPFRyYWNrU291cmNlSW5mbz4+IHNvdXJjZXMoMik7CisKKyAgICBzb3Vy
Y2VzWzBdID0gVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUoZW1wdHlTdHJpbmcoKSwgVHJhY2tTb3Vy
Y2VJbmZvOjpBdWRpbywgIk1vY2sgYXVkaW8gZGV2aWNlIiwgVHJhY2tTb3VyY2VJbmZvOjpOb25l
KTsKKyAgICBzb3VyY2VzWzFdID0gVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUoZW1wdHlTdHJpbmco
KSwgVHJhY2tTb3VyY2VJbmZvOjpWaWRlbywgIk1vY2sgdmlkZW8gZGV2aWNlIiwgVHJhY2tTb3Vy
Y2VJbmZvOjpFbnZpcm9ubWVudCk7CisKKyAgICByZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVJl
cXVlc3Qoc291cmNlcyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTW9ja01lZGlhU3Ry
ZWFtQ2VudGVyOjpkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChNZWRpYVN0cmVhbVNvdXJj
ZSogc291cmNlKQoreworICAgIHNvdXJjZS0+c2V0UmVhZHlTdGF0ZShNZWRpYVN0cmVhbVNvdXJj
ZTo6TGl2ZSk7Cit9CisKK2Jvb2wgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpkaWRBZGRNZWRpYVN0
cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVk
aWFTdHJlYW1Tb3VyY2UqKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1vY2tNZWRp
YVN0cmVhbUNlbnRlcjo6ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlw
dG9yKiBzdHJlYW0pCit7CisgICAgZW5kTG9jYWxNZWRpYVN0cmVhbShzdHJlYW0pOworfQorCit2
b2lkIE1vY2tNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkQ3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJl
YW1EZXNjcmlwdG9yKikKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFTdHJlYW1DZW50ZXIuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTW9j
a01lZGlhU3RyZWFtQ2VudGVyX2gKKyNkZWZpbmUgTW9ja01lZGlhU3RyZWFtQ2VudGVyX2gKKwor
I2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgTW9ja01lZGlhU3RyZWFtQ2VudGVyIEZJTkFMIDogcHVibGljIE1lZGlhU3RyZWFtQ2Vu
dGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCByZWdpc3Rlck1vY2tNZWRpYVN0cmVhbUNl
bnRlcigpOworCisgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2
aWRlb0NvbnN0cmFpbnRzKTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZp
ZGVvQ29uc3RyYWludHMpOworICAgIHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291
cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChN
ZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBkaWRBZGRNZWRp
YVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIGRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1Tb3VyY2UqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU1lZGlhU3Ry
ZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciopIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIE1v
Y2tNZWRpYVN0cmVhbUNlbnRlcigpIHsgfQorfTsKKworfQorCisjZW5kaWYgLy8gTW9ja01lZGlh
U3RyZWFtQ2VudGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJl
dmlzaW9uIDE1NjQ1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTUyLDYgKzE1MiwxMCBAQAogI2luY2x1ZGUgPFFOZXR3b3JrQWNj
ZXNzTWFuYWdlcj4KICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRl
ICJNb2NrTWVkaWFTdHJlYW1DZW50ZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0yODksNiArMjkzLDEwIEBAIEludGVy
bmFsczo6SW50ZXJuYWxzKERvY3VtZW50KiBkb2N1bWVudCkKICAgICBpZiAoZG9jdW1lbnQgJiYg
ZG9jdW1lbnQtPnBhZ2UoKSkKICAgICAgICAgZG9jdW1lbnQtPnBhZ2UoKS0+Z3JvdXAoKS5jYXB0
aW9uUHJlZmVyZW5jZXMoKS0+c2V0VGVzdGluZ01vZGUodHJ1ZSk7CiAjZW5kaWYKKyAgICAKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIE1vY2tNZWRpYVN0cmVhbUNlbnRlcjo6cmVnaXN0
ZXJNb2NrTWVkaWFTdHJlYW1DZW50ZXIoKTsKKyNlbmRpZgogfQogCiBEb2N1bWVudCogSW50ZXJu
YWxzOjpjb250ZXh0RG9jdW1lbnQoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQ5
NSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTMtMDktMjYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgW01lZGlhU3RyZWFtXSBtYWtlIE1lZGlhU3RyZWFtIHRlc3RhYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE5NjcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgV2ViVXNlck1lZGlhQ2xpZW50LgorCiAyMDEzLTA5
LTI1ICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbmRv
d3NdIFVucmV2aWV3ZWQgQnVpbGQgZml4LgpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTY0NTkpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xMSw2ICsxMSw4IEBACiAJCTA2NUFENUE0MEIwQzMyQzcwMDVBMkIxRCAvKiBXZWJDb250ZXh0
TWVudUNsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA2NUFENUEyMEIwQzMyQzcwMDVBMkIxRCAvKiBXZWJDb250ZXh0TWVudUNsaWVudC5tbSAq
LzsgfTsKIAkJMDY2OTNEREMwQkZCQTg1MjAwMjE2MDcyIC8qIFdlYkluc3BlY3RvckNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDY2OTNEREEw
QkZCQTg1MjAwMjE2MDcyIC8qIFdlYkluc3BlY3RvckNsaWVudC5oICovOyB9OwogCQkwNjY5M0RE
RDBCRkJBODUyMDAyMTYwNzIgLyogV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDY2OTNEREIwQkZCQTg1MjAwMjE2MDcy
IC8qIFdlYkluc3BlY3RvckNsaWVudC5tbSAqLzsgfTsKKwkJMDcwRjU0OUIxN0YxRTQyQjAwMTY5
RTA0IC8qIFdlYlVzZXJNZWRpYUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDcwRjU0OTkxN0YxRTQyQjAwMTY5RTA0IC8qIFdlYlVzZXJNZWRp
YUNsaWVudC5oICovOyB9OworCQkwNzBGNTQ5QzE3RjFFNDJCMDAxNjlFMDQgLyogV2ViVXNlck1l
ZGlhQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDcwRjU0OUExN0YxRTQyQjAwMTY5RTA0IC8qIFdlYlVzZXJNZWRpYUNsaWVudC5tbSAqLzsg
fTsKIAkJMEFCNzUyMzcwRkEyRTREQjAwRDdDQkIxIC8qIFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hl
Y2tDb250ZXh0SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEFCNzUyMzUwRkEyRTREQjAwRDdDQkIxIC8qIFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hl
Y2tDb250ZXh0SW5mby5oICovOyB9OwogCQkwQUI3NTIzODBGQTJFNERCMDBEN0NCQjEgLyogV2Vi
TmV0c2NhcGVDb250YWluZXJDaGVja0NvbnRleHRJbmZvLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEFCNzUyMzYwRkEyRTREQjAwRDdDQkIxIC8qIFdl
Yk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tDb250ZXh0SW5mby5tbSAqLzsgfTsKIAkJMEFFQkZGNjMw
RjlGQThCRTAwMEQ0ODZCIC8qIFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQUVCRkY2MTBGOUZB
OEJFMDAwRDQ4NkIgLyogV2ViTmV0c2NhcGVDb250YWluZXJDaGVja1ByaXZhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzg2LDYgKzM4OCw4
IEBACiAJCTA2NUFENUEyMEIwQzMyQzcwMDVBMkIxRCAvKiBXZWJDb250ZXh0TWVudUNsaWVudC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb250ZXh0TWVu
dUNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDY2OTNEREEwQkZCQTg1
MjAwMjE2MDcyIC8qIFdlYkluc3BlY3RvckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA2NjkzRERCMEJGQkE4NTIwMDIxNjA3MiAvKiBXZWJJbnNwZWN0b3JDbGllbnQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JDbGll
bnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MEY1NDk5MTdGMUU0MkIwMDE2
OUUwNCAvKiBXZWJVc2VyTWVkaWFDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViVXNlck1lZGlhQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTA3MEY1NDlBMTdGMUU0MkIwMDE2OUUwNCAvKiBXZWJVc2VyTWVkaWFDbGllbnQubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJVc2VyTWVkaWFDbGllbnQubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBBQjc1MjM1MEZBMkU0REIwMEQ3Q0JCMSAv
KiBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrQ29udGV4dEluZm8uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViTmV0c2NhcGVDb250YWluZXJDaGVja0NvbnRleHRJbmZvLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBBQjc1MjM2MEZBMkU0REIwMEQ3Q0JCMSAv
KiBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrQ29udGV4dEluZm8ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrQ29udGV4
dEluZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBBQ0U5MTcyMTBGRTQ3RTMw
MDk2QTQ1RiAvKiBPcGVuR0wuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBPcGVuR0wuZnJh
bWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29y
azsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTEyNzQsNiArMTI3OCw4IEBACiAJ
CUY1QjM2QjQwMDI4MURFODcwMTg2MzVDQiAvKiBXZWJDb3JlU3VwcG9ydCAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDcwRjU0OTkxN0YxRTQyQjAwMTY5
RTA0IC8qIFdlYlVzZXJNZWRpYUNsaWVudC5oICovLAorCQkJCTA3MEY1NDlBMTdGMUU0MkIwMDE2
OUUwNCAvKiBXZWJVc2VyTWVkaWFDbGllbnQubW0gKi8sCiAJCQkJQjgyOTU4RDExMzI3MDdEMDAw
MEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5oICovLAogCQkJCUI4Mjk1OEQyMTMyNzA3RDAwMDBE
MEU3OSAvKiBDb3JyZWN0aW9uUGFuZWwubW0gKi8sCiAJCQkJN0MwMUNCODExNzM0MzVDOTAwQzVE
ODA3IC8qIFBvcHVwTWVudU1hYy5oICovLApAQCAtMTQyNiw2ICsxNDMyLDcgQEAKIAkJCQlCODI5
NThEMzEzMjcwN0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTYwNTE5NDE3NTAyQTVEMDBCQzYyRjUgLyogSGlzdG9yeVByb3BlcnR5TGlzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTM5ODEwNjgwODI0QkYwMTAwOERGMDM4IC8qIEhJVmlld0FkYXB0
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3MEY1NDlCMTdGMUU0MkIwMDE2OUUwNCAvKiBXZWJV
c2VyTWVkaWFDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDY5MDgyNEJGMDEwMDhE
RjAzOCAvKiBISVdlYlZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOERFRDUwMEVFODhCOEEw
MEYyNTAyMiAvKiBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFBRjVDRUEwRURERTFGRTAwOEQ4ODNEIC8qIE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMTg3OSw2ICsxODg2LDcgQEAKIAkJCQkxQ0NGRkQxMzBCMUY4
MUYyMDAyRUU5MjYgLyogT2xkV2ViQXNzZXJ0aW9ucy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJN0Mw
MUNCODYxNzM0MzVDOTAwQzVEODA3IC8qIFBvcHVwTWVudU1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTFBMkRCRUEwMEYyNTFFM0EwMDM2RjhBNiAvKiBQcm94eUluc3RhbmNlLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJMDcwRjU0OUMxN0YxRTQyQjAwMTY5RTA0IC8qIFdlYlVzZXJNZWRpYUNsaWVu
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUxNjk4MzZDMTEzNDZENTYwMDg5NDExNSAvKiBQcm94
eVJ1bnRpbWVPYmplY3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzAxQ0I4ODE3MzQzNUM5MDBD
NUQ4MDcgLyogU2VhcmNoUG9wdXBNZW51TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VEQTEy
REIxNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbSBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2NDk1KQorKysgU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIw
MTMtMDktMjYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW01lZGlhU3RyZWFtXSBtYWtlIE1lZGlhU3RyZWFtIHRlc3RhYmxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE5NjcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlVz
ZXJNZWRpYUNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJVc2Vy
TWVkaWFDbGllbnQubW06IEFkZGVkLgorCisgICAgICAgICogV2ViVmlldy9XZWJVSURlbGVnYXRl
UHJpdmF0ZS5oOiBEZWNsYXJlIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVJlcXVlc3RGcm9tT3Jp
Z2luOmxpc3RlbmVyOgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0p
OiBSZWdpc3RlciBXZWJVc2VyTWVkaWFDbGllbnQuCisgICAgICAgICgtW1dlYlZpZXcgX3NldFVz
ZXJNZWRpYUNsaWVudDpdKTogTmV3LgorICAgICAgICAoLVtXZWJWaWV3IF91c2VyTWVkaWFDbGll
bnRdKTogTmV3LgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEuaDoKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTMtMDktMjUgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBQYXNzIGEgSlNDOjpWTSYgdG8gSlMgYmluZGluZ3Mgb2Jq
ZWN0IGNyZWF0aW9uIGZ1bmN0aW9ucywgcmF0aGVyIHRoYW4gYSBKU0M6OkV4ZWNTdGF0ZSoKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJN
ZWRpYUNsaWVudC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVXNlck1lZGlhQ2xpZW50X2gKKyNkZWZpbmUgV2Vi
VXNlck1lZGlhQ2xpZW50X2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbXBvcnQg
PFdlYkNvcmUvVXNlck1lZGlhQ2xpZW50Lmg+CisjaW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBVc2VyTWVkaWFDbGllbnQ7CitjbGFzcyBVc2Vy
TWVkaWFSZXF1ZXN0OworfQorCitAY2xhc3MgV2ViVmlldzsKKworY2xhc3MgV2ViVXNlck1lZGlh
Q2xpZW50IEZJTkFMIDogcHVibGljIFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudCB7CitwdWJsaWM6
CisgICAgV2ViVXNlck1lZGlhQ2xpZW50KFdlYlZpZXcqKTsKKyAgICB+V2ViVXNlck1lZGlhQ2xp
ZW50KCk7CisKKyAgICAvLyBVc2VyTWVkaWFDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dFBlcm1pc3Npb24oUGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVx
dWVzdCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgT1ZFUlJJ
REU7CisKK3ByaXZhdGU6CisgICAgV2ViVmlldyogbV93ZWJWaWV3OworfTsKKworI2VuZGlmCisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRp
YUNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJVc2VyTWVkaWFDbGllbnQubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXZWJVc2VyTWVkaWFDbGllbnQu
aCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbXBvcnQgIldlYkRlbGVnYXRlSW1w
bGVtZW50YXRpb25DYWNoaW5nLmgiCisjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFs
LmgiCisjaW1wb3J0ICJXZWJVSURlbGVnYXRlUHJpdmF0ZS5oIgorI2ltcG9ydCAiV2ViVmlld0lu
dGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0Jsb2NrRXhjZXB0aW9ucy5oPgorI2ltcG9ydCA8
V2ViQ29yZS9QYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvVXNlck1lZGlhUmVxdWVzdC5oPgorI2ltcG9ydCA8d3RmL0hh
c2hNYXAuaD4KKyNpbXBvcnQgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW1wb3J0IDx3dGYvUmVmUHRy
Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCitAaW50ZXJmYWNlIFdlYlVzZXJNZWRpYVBvbGljeUxpc3RlbmVyIDogTlNPYmplY3QgPFdl
YkFsbG93RGVueVBvbGljeUxpc3RlbmVyPgoreworICAgIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0
PiBfcmVxdWVzdDsKK30KKy0gKGlkKWluaXRXaXRoVXNlck1lZGlhUmVxdWVzdDooUGFzc1JlZlB0
cjxVc2VyTWVkaWFSZXF1ZXN0PilyZXF1ZXN0OworLSAodm9pZCljYW5jZWxSZXF1ZXN0OworLSAo
dm9pZClhbGxvdzsKKy0gKHZvaWQpZGVueTsKK0BlbmQKKwordHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxVc2VyTWVkaWFSZXF1ZXN0PiwgUmV0YWluUHRyPFdlYlVzZXJNZWRpYVBvbGljeUxpc3RlbmVy
Pj4gVXNlck1lZGlhUmVxdWVzdHNNYXA7CisKK3N0YXRpYyBVc2VyTWVkaWFSZXF1ZXN0c01hcCYg
dXNlck1lZGlhUmVxdWVzdHNNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVXNlck1l
ZGlhUmVxdWVzdHNNYXAsIHJlcXVlc3RzLCAoKSk7CisgICAgcmV0dXJuIHJlcXVlc3RzOworfQor
CitzdGF0aWMgdm9pZCBBZGRSZXF1ZXN0VG9NYXAoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCwg
UmV0YWluUHRyPFdlYlVzZXJNZWRpYVBvbGljeUxpc3RlbmVyPiBsaXN0ZW5lcikKK3sKKyAgICB1
c2VyTWVkaWFSZXF1ZXN0c01hcCgpLnNldChyZXF1ZXN0LCBsaXN0ZW5lcik7Cit9CisKK3N0YXRp
YyB2b2lkIFJlbW92ZVJlcXVlc3RGcm9tTWFwKFVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7
CisgICAgdXNlck1lZGlhUmVxdWVzdHNNYXAoKS5yZW1vdmUocmVxdWVzdCk7Cit9CisKK1dlYlVz
ZXJNZWRpYUNsaWVudDo6V2ViVXNlck1lZGlhQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCisgICAg
OiBtX3dlYlZpZXcod2ViVmlldykKK3sKK30KKworV2ViVXNlck1lZGlhQ2xpZW50Ojp+V2ViVXNl
ck1lZGlhQ2xpZW50KCkKK3sKK30KKwordm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OnBhZ2VEZXN0
cm95ZWQoKQoreworICAgIFVzZXJNZWRpYVJlcXVlc3RzTWFwJiByZXF1ZXN0c01hcCA9IHVzZXJN
ZWRpYVJlcXVlc3RzTWFwKCk7CisgICAgZm9yIChVc2VyTWVkaWFSZXF1ZXN0c01hcDo6aXRlcmF0
b3IgaXQgPSByZXF1ZXN0c01hcC5iZWdpbigpOyBpdCAhPSByZXF1ZXN0c01hcC5lbmQoKTsgKytp
dCkgeworICAgICAgICBbaXQtPnZhbHVlIGNhbmNlbFJlcXVlc3RdOworICAgICAgICByZXF1ZXN0
c01hcC5yZW1vdmUoaXQpOworICAgIH0KKworICAgIGRlbGV0ZSB0aGlzOworfQorCit2b2lkIFdl
YlVzZXJNZWRpYUNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oUGFzc1JlZlB0cjxVc2VyTWVkaWFS
ZXF1ZXN0PiBwcnBSZXF1ZXN0KQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
KworICAgIFVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QgPSBwcnBSZXF1ZXN0LmdldCgpOworICAg
IFNFTCBzZWxlY3RvciA9IEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGljeUZvclVzZXJNZWRp
YVJlcXVlc3RGcm9tT3JpZ2luOmxpc3RlbmVyOik7CisgICAgaWYgKCFbW21fd2ViVmlldyBVSURl
bGVnYXRlXSByZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKSB7CisgICAgICAgIHJlcXVlc3Qt
PnVzZXJNZWRpYUFjY2Vzc0RlbmllZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
V2ViVXNlck1lZGlhUG9saWN5TGlzdGVuZXIgKmxpc3RlbmVyID0gW1tXZWJVc2VyTWVkaWFQb2xp
Y3lMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhVc2VyTWVkaWFSZXF1ZXN0OnJlcXVlc3RdOworICAg
IFdlYlNlY3VyaXR5T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9j
XSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46cmVxdWVzdC0+c2VjdXJpdHlPcmlnaW4o
KV07CisKKyAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIHNlbGVjdG9yLCB3ZWJPcmlnaW4s
IGxpc3RlbmVyKTsKKyAgICBBZGRSZXF1ZXN0VG9NYXAocmVxdWVzdCwgbGlzdGVuZXIpOworCisg
ICAgW3dlYk9yaWdpbiByZWxlYXNlXTsKKyAgICBbbGlzdGVuZXIgcmVsZWFzZV07CisKKyAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworfQorCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6
Y2FuY2VsUmVxdWVzdChVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIFVzZXJNZWRp
YVJlcXVlc3RzTWFwOjppdGVyYXRvciBpdCA9IHVzZXJNZWRpYVJlcXVlc3RzTWFwKCkuZmluZChy
ZXF1ZXN0KTsKKyAgICBpZiAoaXQgPT0gdXNlck1lZGlhUmVxdWVzdHNNYXAoKS5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgW2l0LT52YWx1ZSBjYW5jZWxSZXF1ZXN0XTsKKyAgICB1c2Vy
TWVkaWFSZXF1ZXN0c01hcCgpLnJlbW92ZShpdCk7Cit9CisKKworQGltcGxlbWVudGF0aW9uIFdl
YlVzZXJNZWRpYVBvbGljeUxpc3RlbmVyCisKKy0gKGlkKWluaXRXaXRoVXNlck1lZGlhUmVxdWVz
dDooUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PilyZXF1ZXN0Cit7CisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKworICAgIF9yZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICByZXR1cm4gc2VsZjsKKyNl
bmRpZgorfQorCistICh2b2lkKWNhbmNlbFJlcXVlc3QKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQorICAgIGlmICghX3JlcXVlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIF9yZXF1ZXN0
ID0gMDsKKyNlbmRpZgorICAgIAorfQorCistICh2b2lkKWFsbG93Cit7CisjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKKyAgICBpZiAoIV9yZXF1ZXN0KQorICAgICAgICByZXR1cm47CisKKyAgICBf
cmVxdWVzdC0+dXNlck1lZGlhQWNjZXNzR3JhbnRlZCgpOworICAgIFJlbW92ZVJlcXVlc3RGcm9t
TWFwKF9yZXF1ZXN0LmdldCgpKTsKKyNlbmRpZgorfQorCistICh2b2lkKWRlbnkKK3sKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorICAgIGlmICghX3JlcXVlc3QpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICBfcmVxdWVzdC0+dXNlck1lZGlhQWNjZXNzRGVuaWVkKCk7CisgICAgUmVtb3Zl
UmVxdWVzdEZyb21NYXAoX3JlcXVlc3QuZ2V0KCkpOworI2VuZGlmCit9CisKK0BlbmQKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVBy
aXZhdGUuaAkocmV2aXNpb24gMTU2NDU5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJVSURlbGVnYXRlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjYsNiArMjI2LDggQEAg
QGludGVyZmFjZSBOU09iamVjdCAoV2ViVUlEZWxlZ2F0ZVByaXZhdAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxp
c3RlbmVyOihpZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4pbGlzdGVuZXI7CiAtICh2b2lk
KXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblJl
cXVlc3RGcm9tT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBsaXN0ZW5lcjooaWQ8
V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+KWxpc3RlbmVyOwogCistICh2b2lkKXdlYlZpZXc6
KFdlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVJlcXVlc3RGcm9tT3Jp
Z2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBsaXN0ZW5lcjooaWQ8V2ViQWxsb3dEZW55
UG9saWN5TGlzdGVuZXI+KWxpc3RlbmVyOworCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilz
ZW5kZXIgZWxlbWVudERpZEZvY3VzTm9kZTooRE9NTm9kZSAqKW5vZGU7CiAtICh2b2lkKXdlYlZp
ZXc6KFdlYlZpZXcgKilzZW5kZXIgZWxlbWVudERpZEJsdXJOb2RlOihET01Ob2RlICopbm9kZTsK
IApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTU2NDU5
KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDgsNiArMTA4LDcgQEAKICNpbXBvcnQgIldlYlRleHRJdGVyYXRvci5oIgogI2ltcG9y
dCAiV2ViVUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCIKKyNp
bXBvcnQgIldlYlVzZXJNZWRpYUNsaWVudC5oIgogI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ0ZT
ZXQuaD4KICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxDb25uZWN0aW9uLmg+CiAjaW1wb3J0IDxK
YXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CkBAIC03NjYsNiArNzY3LDkgQEAgLSAodm9pZClfY29t
bW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJ
T04pCiAgICAgV2ViQ29yZTo6cHJvdmlkZURldmljZU9yaWVudGF0aW9uVG8oX3ByaXZhdGUtPnBh
Z2UsIG5ldyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudChzZWxmKSk7CiAjZW5kaWYKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorICAgIFdlYkNvcmU6OnByb3ZpZGVVc2VyTWVkaWFUbyhfcHJp
dmF0ZS0+cGFnZSwgbmV3IFdlYlVzZXJNZWRpYUNsaWVudChzZWxmKSk7CisjZW5kaWYKIAogICAg
IF9wcml2YXRlLT5wYWdlLT5zZXRDYW5TdGFydE1lZGlhKFtzZWxmIHdpbmRvd10pOwogICAgIF9w
cml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aChbW3Nl
bGYgcHJlZmVyZW5jZXNdIF9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhdKTsKQEAgLTY2NTUsNiAr
NjY1OSwyNCBAQCAtIChpZDxXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyPilfZGV2CiAKIEBl
bmQKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCitAaW1wbGVtZW50YXRpb24gV2ViVmlldyAo
V2ViVmlld1VzZXJNZWRpYSkKKworLSAodm9pZClfc2V0VXNlck1lZGlhQ2xpZW50OihpZDxXZWJV
c2VyTWVkaWFDbGllbnQ+KXVzZXJNZWRpYUNsaWVudAoreworICAgIGlmIChfcHJpdmF0ZSkKKyAg
ICAgICAgX3ByaXZhdGUtPm1fdXNlck1lZGlhQ2xpZW50ID0gdXNlck1lZGlhQ2xpZW50OworfQor
CistIChpZDxXZWJVc2VyTWVkaWFDbGllbnQ+KV91c2VyTWVkaWFDbGllbnQKK3sKKyAgICBpZiAo
X3ByaXZhdGUpCisgICAgICAgIHJldHVybiBfcHJpdmF0ZS0+bV91c2VyTWVkaWFDbGllbnQ7Cisg
ICAgcmV0dXJuIG5pbDsKK30KK0BlbmQKKyNlbmRpZgorCiBAaW1wbGVtZW50YXRpb24gV2ViVmll
dyAoV2ViVmlld0dlb2xvY2F0aW9uKQogCiAtICh2b2lkKV9zZXRHZW9sb2NhdGlvblByb3ZpZGVy
OihpZDxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPilnZW9sb2NhdGlvblByb3ZpZGVyCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCShyZXZpc2lvbiAxNTY0NTkpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU5LDYgKzU5LDkgQEAgY2xhc3MgUGFnZTsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CiBAY2xhc3MgV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorQHByb3RvY29sIFdlYlVzZXJNZWRpYUNsaWVudDsKKyNlbmRpZgogCiBleHRl
cm4gQk9PTCBhcHBsaWNhdGlvbklzVGVybWluYXRpbmc7CiBleHRlcm4gaW50IHBsdWdpbkRhdGFi
YXNlQ2xpZW50Q291bnQ7CkBAIC0yMDgsNiArMjExLDEwIEBAIEBpbnRlcmZhY2UgV2ViVmlld1By
aXZhdGUgOiBOU09iamVjdCB7CiAgICAgaWQ8V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcj4g
bV9kZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyOwogICAgIGlkPFdlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyPiBfbm90aWZpY2F0aW9uUHJvdmlkZXI7CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
ICAgIGlkPFdlYlVzZXJNZWRpYUNsaWVudD4gbV91c2VyTWVkaWFDbGllbnQ7CisjZW5kaWYKKwog
ICAgIFJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gX2dsb2JhbEhpc3RvcnlJdGVtOwogCiAg
ICAgQk9PTCBpbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDE1NjQ1OSkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNDcsNiArNDcsNyBAQAogCiBAcHJvdG9jb2wgV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92
aWRlcjsKIEBwcm90b2NvbCBXZWJGb3JtRGVsZWdhdGU7CitAcHJvdG9jb2wgV2ViVXNlck1lZGlh
Q2xpZW50OwogCiBleHRlcm4gTlNTdHJpbmcgKl9XZWJDYW5Hb0JhY2tLZXk7CiBleHRlcm4gTlNT
dHJpbmcgKl9XZWJDYW5Hb0ZvcndhcmRLZXk7CkBAIC03MTYsNiArNzE3LDExIEBAIEBpbnRlcmZh
Y2UgV2ViVmlldyAoV2ViVmlld0RldmljZU9yaWVudGEKIC0gKGlkPFdlYkRldmljZU9yaWVudGF0
aW9uUHJvdmlkZXI+KV9kZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyOwogQGVuZAogCitAaW50ZXJm
YWNlIFdlYlZpZXcgKFdlYlZpZXdVc2VyTWVkaWEpCistICh2b2lkKV9zZXRVc2VyTWVkaWFDbGll
bnQ6KGlkPFdlYlVzZXJNZWRpYUNsaWVudD4pdXNlck1lZGlhQ2xpZW50OworLSAoaWQ8V2ViVXNl
ck1lZGlhQ2xpZW50PilfdXNlck1lZGlhQ2xpZW50OworQGVuZAorCiBAcHJvdG9jb2wgV2ViR2Vv
bG9jYXRpb25Qcm92aWRlciA8TlNPYmplY3Q+CiAtICh2b2lkKXJlZ2lzdGVyV2ViVmlldzooV2Vi
VmlldyAqKXdlYlZpZXc7CiAtICh2b2lkKXVucmVnaXN0ZXJXZWJWaWV3OihXZWJWaWV3ICopd2Vi
VmlldzsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE1NjQ5NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDEzLTA5LTI2ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0gbWFrZSBNZWRpYVN0cmVhbSB0ZXN0
YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIx
OTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSB3
ZWJWaWV3OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVJlcXVlc3RGcm9tT3JpZ2luOmxpc3RlbmVy
Ol0pOiBBZGQgYSB2ZXJ5IHBlcm1pc3NpdmUKKyAgICAgICAgICAgIHVzZXIgbWVkaWEgcmVxdWVz
dCBwb2xpY3kgZGVsZWdhdGUuCisKIDIwMTMtMDktMjYgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNz
Lndhc2hpbmd0b24uZWR1PgogCiAgICAgICAgIGJ1aWxkLXdlYmtpdCAtLWluc3BlY3Rvci1mcm9u
dGVuZCBzaG91bGQgY29weSBXZWJJbnNwZWN0b3JVSSBmaWxlcwpJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1VJRGVsZWdhdGUubW0JKHJldmlzaW9uIDE1NjQ1OSkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNiArMzEy
LDEyIEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGVjaWQKICAgICB9CiB9
CiAKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yVXNl
ck1lZGlhUmVxdWVzdEZyb21PcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luIGxpc3Rl
bmVyOihpZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4pbGlzdGVuZXIKK3sKKyAgICAvLyBB
bGxvdyBhbGwgdXNlciBtZWRpYSByZXF1ZXN0cyBmb3Igbm93LgorICAgIFtsaXN0ZW5lciBhbGxv
d107Cit9CisKIC0gKHZvaWQpZGVhbGxvYwogewogICAgIFtkcmFnZ2luZ0luZm8gcmVsZWFzZV07
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxNTY0OTUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxMy0wOS0yNiAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1dIG1ha2UgTWVk
aWFTdHJlYW0gdGVzdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMTk2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1hZGQtcmVtb3ZlLXRyYWNr
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1h
ZGQtcmVtb3ZlLXRyYWNrcy5odG1sOiBNYWtlIHRoZSB0ZXN0IHJlc3VsdHMgbW9yZSB1bmRlcnN0
YW5kYWJsZQorICAgICAgICAgICAgdG8gc2ltcGxpZnkgZGVidWdnaW5nIGZhaWx1cmVzLgorICAg
ICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tb25lbmRlZC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1vbmVuZGVkLmh0bWw6IERp
dHRvLiBGaXggYSB0ZXN0IGVycm9yOiBzdG9wcGluZyBzdHJlYW0gQSBzaG91bGQKKyAgICAgICAg
ICAgIG5vdCBzdG9wIHN0cmVhbSBCIGV2ZW4gd2hlbiBpdCB3YXMgY3JlYXRlZCBmcm9tIHN0cmVh
bSBBLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0
cnVjdG9yLmh0bWw6IE1ha2UgdGhlIHRlc3QgcmVzdWx0cyBtb3JlIHVuZGVyc3RhbmRhYmxlLiBG
aXggYQorICAgICAgICAgICAgbG9naWMgZXJyb3JzOiB3ZWJraXRNZWRpYVN0cmVhbSBpcyBhbiBv
YmplY3QsIG5vdCBhIGZ1bmN0aW9uLiBKU0MgZG9lcyBub3Qgc3VwcG9ydCAKKyAgICAgICAgICAg
IG9iamVjdC5jb25zdHJ1Y3Rvci5uYW1lLCB1c2Ugb2JqZWN0LmNvbnN0cnVjdG9yLnRvU3RyaW5n
KCkgaW5zdGVhZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tF
dmVudC1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQtY29uc3RydWN0b3IuaHRtbDogVXBkYXRlIG5vdyB0aGF0
IGdldFVzZXJNZWRpYSgpIHdvcmtzLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vYXJndW1l
bnQtdHlwZXMtZXhwZWN0ZWQudHh0OiBVcGRhdGVkIHdpdGggIkZhaWxpbmciIHJlc3VsdHMgYmVj
YXVzZSB0aGUgY29ycmVjdCAKKyAgICAgICAgICAgIGJlaGF2aW9yIGlzIHVua25vd24uIFRoZSBz
cGVjIHNheXMgInRoZSBzeW50YXggZm9yIGdldFVzZXJNZWRpYSgpIGlzIHN0aWxsIHVuZGVyIGRp
c2N1c3Npb24iLgorCiAyMDEzLTA5LTI2ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUu
Y29tPgogCiAgICAgICAgIExheW91dCBUZXN0IHBsdWdpbnMvYWNjZXNzLWFmdGVyLXBhZ2UtZGVz
dHJveWVkLmh0bWwgaXMgZmxha3kKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0tYWRkLXJlbW92ZS10cmFja3MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLXJlbW92ZS10cmFj
a3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY0NTkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLWFkZC1yZW1vdmUtdHJhY2tzLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNywyMSArNyw0NSBAQCBQQVNTIHN0cmVhbTEuZ2V0QXVkaW9UcmFja3Mo
KS5sZW5ndGggaXMgCiBQQVNTIHN0cmVhbTEuZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMQog
UEFTUyBzdHJlYW0yLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtMi5n
ZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCisKKyoqKiByZW1vdmUgYW4gYXVkaW8gdHJhY2sK
IFBBU1Mgc3RyZWFtMS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAwCiBQQVNTIHN0cmVhbTEu
Z2V0VHJhY2tCeUlkKGF1ZGlvVHJhY2suaWQpIGlzIG51bGwKKworKioqIHJlbW92ZSBhIG5vbi1l
eGlzdGVudCAoYWxyZWFkeSByZW1vdmVkKSB0cmFjayAoc2hvdWxkIG5vdCB0aHJvdykKKworKioq
IGFkZCB0aGUgdHJhY2sgYmFjayB0byB0aGUgc3RyZWFtCisKKyoqKiByZW1vdmUgYSB2aWRlbyB0
cmFjawogUEFTUyBzdHJlYW0xLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDAKIFBBU1Mgc3Ry
ZWFtMS5nZXRUcmFja0J5SWQodmlkZW9UcmFjay5pZCkgaXMgbnVsbAorCisqKiogcmVtb3ZlIGEg
bm9uLWV4aXN0ZW50IChhbHJlYWR5IHJlbW92ZWQpIHRyYWNrIChzaG91bGQgbm90IHRocm93KQor
CisqKiogYWRkIHRoZSB0cmFjayBiYWNrIHRvIHRoZSBzdHJlYW0KKworKioqIHZlcmlmeSBhZGRl
ZCB0cmFja3MKIFBBU1Mgc3RyZWFtMS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNT
IHN0cmVhbTEuZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyBzdHJlYW0xLmdldEF1
ZGlvVHJhY2tzKClbMF0ua2luZCBpcyBhdWRpb1RyYWNrLmtpbmQKIFBBU1Mgc3RyZWFtMS5nZXRB
dWRpb1RyYWNrcygpWzBdLmxhYmVsIGlzIGF1ZGlvVHJhY2subGFiZWwKIFBBU1Mgc3RyZWFtMS5n
ZXRWaWRlb1RyYWNrcygpWzBdLmtpbmQgaXMgdmlkZW9UcmFjay5raW5kCiBQQVNTIHN0cmVhbTEu
Z2V0VmlkZW9UcmFja3MoKVswXS5sYWJlbCBpcyB2aWRlb1RyYWNrLmxhYmVsCisKKyoqKiB0cnkg
YWRkaW5nIGEgc3RyZWFtJ3Mgb3duIHRyYWNrcyBhZ2FpbiAobm90aGluZyBzaG91bGQgaGFwcGVu
KQogUEFTUyBzdHJlYW0xLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFt
MS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCisKKyoqKiBhZGQgdHJhY2tzIGZyb20gYW5v
dGhlciBzdHJlYW0KKworKioqIHZlcmlmeSBhZGRlZCB0cmFja3MKIFBBU1Mgc3RyZWFtMS5nZXRB
dWRpb1RyYWNrcygpLmxlbmd0aCBpcyAyCiBQQVNTIHN0cmVhbTEuZ2V0VmlkZW9UcmFja3MoKS5s
ZW5ndGggaXMgMgorCisqKiogYWZ0ZXIgYWxsIHRyYWNrcyBoYXZlIGJlZW4gcmVtb3ZlZCwgc3Ry
ZWFtLmVuZGVkIHNob3VsZCByZXR1cm4gdHJ1ZQogUEFTUyBzdHJlYW0yLmVuZGVkIGlzIHRydWUK
KworKioqIGl0IHNob3VsZCBiZSBpbXBvc3NpYmxlIHRvIGFkZCBhIHRyYWNrIGFmdGVyIHRoZSBz
dHJlYW0gaGFzIGJlZW4gc3RvcHBlZAogUEFTUyBzdHJlYW0xLmFkZFRyYWNrKGF1ZGlvVHJhY2sp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZFN0YXRlRXJyb3I6IERPTSBFeGNlcHRpb24g
MTEuCiBQQVNTIHN0cmVhbTEucmVtb3ZlVHJhY2soYXVkaW9UcmFjaykgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBJbnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4KIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0tYWRkLXJlbW92ZS10cmFja3MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWFkZC1yZW1vdmUtdHJhY2tzLmh0bWwJ
KHJldmlzaW9uIDE1NjQ1OSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0tYWRkLXJlbW92ZS10cmFja3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNjIsNTggKzYy
LDYxIEBAIGZ1bmN0aW9uIGdvdFN0cmVhbTIocykgewogICAgIHN0cmVhbTEub25hZGR0cmFjayA9
IHNob3VsZE5vdEZpcmU7CiAgICAgc3RyZWFtMS5vbnJlbW92ZXRyYWNrID0gc2hvdWxkTm90Rmly
ZTsKIAotICAgIC8vIHJlbW92ZSBhIHRyYWNrIG9mIGVhY2gga2luZAogICAgIGF1ZGlvVHJhY2sg
PSBzdHJlYW0xLmdldEF1ZGlvVHJhY2tzKClbMF07CiAgICAgdmlkZW9UcmFjayA9IHN0cmVhbTEu
Z2V0VmlkZW9UcmFja3MoKVswXTsKIAorICAgIGRlYnVnKCI8YnI+KioqIHJlbW92ZSBhbiBhdWRp
byB0cmFjayIpOwogICAgIHRyeVJlbW92ZVRyYWNrKHN0cmVhbTEsIGF1ZGlvVHJhY2spOwotICAg
IC8vIHZlcmlmeSByZW1vdmVkIHRyYWNrcwogICAgIHNob3VsZEJlKCdzdHJlYW0xLmdldEF1ZGlv
VHJhY2tzKCkubGVuZ3RoJywgJzAnKTsKICAgICBzaG91bGRCZU51bGwoJ3N0cmVhbTEuZ2V0VHJh
Y2tCeUlkKGF1ZGlvVHJhY2suaWQpJyk7Ci0gICAgLy8gcmVtb3ZlIGEgbm9uLWV4aXN0ZW50IChh
bHJlYWR5IHJlbW92ZWQpIHRyYWNrIChzaG91bGQgbm90IHRocm93KQorCisgICAgZGVidWcoIjxi
cj4qKiogcmVtb3ZlIGEgbm9uLWV4aXN0ZW50IChhbHJlYWR5IHJlbW92ZWQpIHRyYWNrIChzaG91
bGQgbm90IHRocm93KSIpOwogICAgIHRyeVJlbW92ZVRyYWNrKHN0cmVhbTEsIGF1ZGlvVHJhY2sp
OwotICAgIC8vIChyZS0pYWRkIHRyYWNrcworCisgICAgZGVidWcoIjxicj4qKiogYWRkIHRoZSB0
cmFjayBiYWNrIHRvIHRoZSBzdHJlYW0iKTsKICAgICB0cnlBZGRUcmFjayhzdHJlYW0xLCBhdWRp
b1RyYWNrKTsKIAorICAgIGRlYnVnKCI8YnI+KioqIHJlbW92ZSBhIHZpZGVvIHRyYWNrIik7CiAg
ICAgdHJ5UmVtb3ZlVHJhY2soc3RyZWFtMSwgdmlkZW9UcmFjayk7CiAgICAgc2hvdWxkQmUoJ3N0
cmVhbTEuZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgnLCAnMCcpOwogICAgIHNob3VsZEJlTnVsbCgn
c3RyZWFtMS5nZXRUcmFja0J5SWQodmlkZW9UcmFjay5pZCknKTsKKworICAgIGRlYnVnKCI8YnI+
KioqIHJlbW92ZSBhIG5vbi1leGlzdGVudCAoYWxyZWFkeSByZW1vdmVkKSB0cmFjayAoc2hvdWxk
IG5vdCB0aHJvdykiKTsKICAgICB0cnlSZW1vdmVUcmFjayhzdHJlYW0xLCB2aWRlb1RyYWNrKTsK
KworICAgIGRlYnVnKCI8YnI+KioqIGFkZCB0aGUgdHJhY2sgYmFjayB0byB0aGUgc3RyZWFtIik7
CiAgICAgdHJ5QWRkVHJhY2soc3RyZWFtMSwgdmlkZW9UcmFjayk7CiAKLSAgICAvLyB2ZXJpZnkg
YWRkZWQgdHJhY2tzCisgICAgZGVidWcoIjxicj4qKiogdmVyaWZ5IGFkZGVkIHRyYWNrcyIpOwog
ICAgIHNob3VsZEJlKCdzdHJlYW0xLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKICAg
ICBzaG91bGRCZSgnc3RyZWFtMS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7Ci0KLSAg
ICAvLyB2ZXJpZnkgdGhhdCBraW5kIGFuZCBsYWJlbCBpcyBwcmVzZXJ2ZWQKICAgICBzaG91bGRC
ZSgnc3RyZWFtMS5nZXRBdWRpb1RyYWNrcygpWzBdLmtpbmQnLCAnYXVkaW9UcmFjay5raW5kJyk7
CiAgICAgc2hvdWxkQmUoJ3N0cmVhbTEuZ2V0QXVkaW9UcmFja3MoKVswXS5sYWJlbCcsICdhdWRp
b1RyYWNrLmxhYmVsJyk7CiAgICAgc2hvdWxkQmUoJ3N0cmVhbTEuZ2V0VmlkZW9UcmFja3MoKVsw
XS5raW5kJywgJ3ZpZGVvVHJhY2sua2luZCcpOwogICAgIHNob3VsZEJlKCdzdHJlYW0xLmdldFZp
ZGVvVHJhY2tzKClbMF0ubGFiZWwnLCAndmlkZW9UcmFjay5sYWJlbCcpOwogCi0gICAgLy8gdHJ5
IGFkZGluZyBzdHJlYW0xJ3Mgb3duIHRyYWNrcworICAgIGRlYnVnKCI8YnI+KioqIHRyeSBhZGRp
bmcgYSBzdHJlYW0ncyBvd24gdHJhY2tzIGFnYWluIChub3RoaW5nIHNob3VsZCBoYXBwZW4pIik7
CiAgICAgdHJ5QWRkVHJhY2soc3RyZWFtMSwgc3RyZWFtMS5nZXRBdWRpb1RyYWNrcygpWzBdKTsK
ICAgICB0cnlBZGRUcmFjayhzdHJlYW0xLCBzdHJlYW0xLmdldFZpZGVvVHJhY2tzKClbMF0pOwot
Ci0gICAgLy8gdmVyaWZ5IHRoYXQgbm90aGluZyBoYXMgY2hhbmdlZAogICAgIHNob3VsZEJlKCdz
dHJlYW0xLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKICAgICBzaG91bGRCZSgnc3Ry
ZWFtMS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CiAKLSAgICAvLyBhZGQgbmV3IHRy
YWNrcyAoZnJvbSBzdHJlYW0yKQorICAgIGRlYnVnKCI8YnI+KioqIGFkZCB0cmFja3MgZnJvbSBh
bm90aGVyIHN0cmVhbSIpOwogICAgIHRyeUFkZFRyYWNrKHN0cmVhbTEsIHN0cmVhbTIuZ2V0QXVk
aW9UcmFja3MoKVswXSk7CiAgICAgdHJ5QWRkVHJhY2soc3RyZWFtMSwgc3RyZWFtMi5nZXRWaWRl
b1RyYWNrcygpWzBdKTsKIAotICAgIC8vIHZlcmlmeSBhZGRlZCB0cmFja3MKKyAgICBkZWJ1Zygi
PGJyPioqKiB2ZXJpZnkgYWRkZWQgdHJhY2tzIik7CiAgICAgc2hvdWxkQmUoJ3N0cmVhbTEuZ2V0
QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMicpOwogICAgIHNob3VsZEJlKCdzdHJlYW0xLmdldFZp
ZGVvVHJhY2tzKCkubGVuZ3RoJywgJzInKTsKIAotICAgIC8vIHdoZW4gYWxsIHRyYWNrcyBoYXZl
IGJlZW4gcmVtb3ZlZCwgc3RyZWFtLmVuZGVkIHNob3VsZCByZXR1cm4gdHJ1ZS4KKyAgICBkZWJ1
ZygiPGJyPioqKiBhZnRlciBhbGwgdHJhY2tzIGhhdmUgYmVlbiByZW1vdmVkLCBzdHJlYW0uZW5k
ZWQgc2hvdWxkIHJldHVybiB0cnVlIik7CiAgICAgdHJ5UmVtb3ZlVHJhY2soc3RyZWFtMiwgc3Ry
ZWFtMi5nZXRBdWRpb1RyYWNrcygpWzBdKTsKICAgICB0cnlSZW1vdmVUcmFjayhzdHJlYW0yLCBz
dHJlYW0yLmdldFZpZGVvVHJhY2tzKClbMF0pOwogICAgIHNob3VsZEJlVHJ1ZSgnc3RyZWFtMi5l
bmRlZCcpOwogCiAgICAgc3RyZWFtMS5zdG9wKCk7CiAKKyAgICBkZWJ1ZygiPGJyPioqKiBpdCBz
aG91bGQgYmUgaW1wb3NzaWJsZSB0byBhZGQgYSB0cmFjayBhZnRlciB0aGUgc3RyZWFtIGhhcyBi
ZWVuIHN0b3BwZWQiKTsKICAgICBzaG91bGRUaHJvdygnc3RyZWFtMS5hZGRUcmFjayhhdWRpb1Ry
YWNrKScsICciRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExIicpOwog
ICAgIHNob3VsZFRocm93KCdzdHJlYW0xLnJlbW92ZVRyYWNrKGF1ZGlvVHJhY2spJywgJyJFcnJv
cjogSW52YWxpZFN0YXRlRXJyb3I6IERPTSBFeGNlcHRpb24gMTEiJyk7CiAKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tb25lbmRlZC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1v
bmVuZGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NDU5KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1vbmVuZGVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMywxMSArMywxNyBAQCBUZXN0cyBNZWRpYVN0cmVhbTo6b25lbmRlZCBjYWxsYmFj
ay4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCisKK1BBU1MgZ290U3RyZWFtIHdhcyBj
YWxsZWQuCiBQQVNTIHN0cmVhbS5lbmRlZCBpcyBmYWxzZQorCiBQQVNTIHN0cmVhbUVuZGVkIHdh
cyBjYWxsZWQuCiBQQVNTIHN0cmVhbS5lbmRlZCBpcyB0cnVlCisKK1BBU1MgZ290U3RyZWFtMiB3
YXMgY2FsbGVkLgogUEFTUyBzdHJlYW0uZW5kZWQgaXMgZmFsc2UKLVBBU1Mgc3RyZWFtRW5kZWQg
d2FzIGNhbGxlZC4KKworUEFTUyBzdHJlYW1FbmRlZDIgd2FzIGNhbGxlZC4KIFBBU1Mgc3RyZWFt
LmVuZGVkIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1vbmVuZGVkLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1vbmVu
ZGVkLmh0bWwJKHJldmlzaW9uIDE1NjQ1OSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0tb25lbmRlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNyArMjYs
MjAgQEAgZnVuY3Rpb24gZ2V0VXNlck1lZGlhKGRpY3Rpb25hcnksIGNhbGxiYQogdmFyIHN0cmVh
bTsKIAogZnVuY3Rpb24gc3RyZWFtRW5kZWQyKCkgewotICAgIHRlc3RQYXNzZWQoJ3N0cmVhbUVu
ZGVkIHdhcyBjYWxsZWQuJyk7CisgICAgZGVidWcoIiIpOworICAgIHRlc3RQYXNzZWQoJ3N0cmVh
bUVuZGVkMiB3YXMgY2FsbGVkLicpOwogICAgIHNob3VsZEJlVHJ1ZSgnc3RyZWFtLmVuZGVkJyk7
CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9CiAKIGZ1bmN0aW9uIGdvdFN0cmVhbTIocykgeworICAg
IGRlYnVnKCIiKTsKKyAgICB0ZXN0UGFzc2VkKCdnb3RTdHJlYW0yIHdhcyBjYWxsZWQuJyk7CiAg
ICAgc3RyZWFtID0gbmV3IHdlYmtpdE1lZGlhU3RyZWFtKHMpOwogICAgIHNob3VsZEJlRmFsc2Uo
J3N0cmVhbS5lbmRlZCcpOwogICAgIHRyeSB7CiAgICAgICAgIHN0cmVhbS5vbmVuZGVkID0gc3Ry
ZWFtRW5kZWQyOwotICAgICAgICBzLnN0b3AoKTsKKyAgICAgICAgc3RyZWFtLnN0b3AoKTsKICAg
ICB9IGNhdGNoIChlKSB7CiAgICAgICAgIHRlc3RGYWlsZWQoJ01lZGlhU3RyZWFtIHRocmV3IGV4
Y2VwdGlvbiA6JyArIGUpOwogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKQEAgLTQ0LDYgKzQ3LDcg
QEAgZnVuY3Rpb24gZ290U3RyZWFtMihzKSB7CiB9CiAKIGZ1bmN0aW9uIHN0cmVhbUVuZGVkKCkg
eworICAgIGRlYnVnKCIiKTsKICAgICB0ZXN0UGFzc2VkKCdzdHJlYW1FbmRlZCB3YXMgY2FsbGVk
LicpOwogICAgIHNob3VsZEJlVHJ1ZSgnc3RyZWFtLmVuZGVkJyk7CiAKQEAgLTUxLDYgKzU1LDgg
QEAgZnVuY3Rpb24gc3RyZWFtRW5kZWQoKSB7CiB9CiAKIGZ1bmN0aW9uIGdvdFN0cmVhbShzKSB7
CisgICAgZGVidWcoIiIpOworICAgIHRlc3RQYXNzZWQoJ2dvdFN0cmVhbSB3YXMgY2FsbGVkLicp
OwogICAgIHN0cmVhbSA9IHM7CiAgICAgc2hvdWxkQmVGYWxzZSgnc3RyZWFtLmVuZGVkJyk7CiAg
ICAgdHJ5IHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1D
b25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTU2NDU5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0
cnVjdG9yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAgT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogUEFTUyBHb3QgbG9jYWwgc3RyZWFt
LgogUEFTUyBsb2NhbFN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIGxv
Y2FsU3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEKLVBBU1MgdHlwZW9mIHdlYmtp
dE1lZGlhU3RyZWFtID09PSAnZnVuY3Rpb24nIGlzIHRydWUKK1BBU1MgdHlwZW9mIHdlYmtpdE1l
ZGlhU3RyZWFtID09PSAnb2JqZWN0JyBpcyB0cnVlCiBQQVNTIGNoZWNrSWRBdHRyaWJ1dGUobG9j
YWxTdHJlYW0uaWQpIGlzIHRydWUKIFBBU1MgbmV3IHdlYmtpdE1lZGlhU3RyZWFtKGRvY3VtZW50
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyBuZXcgd2Via2l0
TWVkaWFTdHJlYW0oW2RvY3VtZW50XSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogSW52YWxp
ZCBBcnJheSBlbGVtZW50IHR5cGUuCkBAIC0xNSw4MCArMTUsMTA0IEBAIFBBU1MgbmV3IHdlYmtp
dE1lZGlhU3RyZWFtKFtudWxsXSkgdGhyZXcKIFBBU1MgbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFt1
bmRlZmluZWRdKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBJbnZhbGlkIEFycmF5IGVsZW1l
bnQgdHlwZS4KIFBBU1MgbmV3IHdlYmtpdE1lZGlhU3RyZWFtKG51bGwpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIG5ldyB3ZWJraXRNZWRpYVN0cmVhbSh1bmRl
ZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCisKKyoqKiB0ZXN0
aW5nICJuZXcgd2Via2l0TWVkaWFTdHJlYW0oKSIKIFBBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCi1Q
QVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgotUEFTUyBbb2JqZWN0IE1lZGlh
U3RyZWFtXSBpcyBkZWZpbmVkLgotUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFtZSBpcyAn
TWVkaWFTdHJlYW0nCitQQVNTIFtvYmplY3Qgd2Via2l0TWVkaWFTdHJlYW1dIGlzIG5vbi1udWxs
LgorUEFTUyBbb2JqZWN0IHdlYmtpdE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgorUEFTUyBuZXdT
dHJlYW0uY29uc3RydWN0b3IudG9TdHJpbmcoKSBpcyAnW29iamVjdCB3ZWJraXRNZWRpYVN0cmVh
bUNvbnN0cnVjdG9yXScKIFBBU1MgbmV3U3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlz
IG5BdWRpbwogUEFTUyBuZXdTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgblZpZGVv
CiBQQVNTIGNoZWNrSWRBdHRyaWJ1dGUobmV3U3RyZWFtLmlkKSBpcyB0cnVlCisKKyoqKiB0ZXN0
aW5nICJuZXcgd2Via2l0TWVkaWFTdHJlYW0oW10pIgogUEFTUyBTdHJlYW0gY29uc3RydWN0ZWQK
LVBBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgbm9uLW51bGwuCi1QQVNTIFtvYmplY3QgTWVk
aWFTdHJlYW1dIGlzIGRlZmluZWQuCi1QQVNTIG5ld1N0cmVhbS5jb25zdHJ1Y3Rvci5uYW1lIGlz
ICdNZWRpYVN0cmVhbScKK1BBU1MgW29iamVjdCB3ZWJraXRNZWRpYVN0cmVhbV0gaXMgbm9uLW51
bGwuCitQQVNTIFtvYmplY3Qgd2Via2l0TWVkaWFTdHJlYW1dIGlzIGRlZmluZWQuCitQQVNTIG5l
d1N0cmVhbS5jb25zdHJ1Y3Rvci50b1N0cmluZygpIGlzICdbb2JqZWN0IHdlYmtpdE1lZGlhU3Ry
ZWFtQ29uc3RydWN0b3JdJwogUEFTUyBuZXdTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgg
aXMgbkF1ZGlvCiBQQVNTIG5ld1N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyBuVmlk
ZW8KIFBBU1MgY2hlY2tJZEF0dHJpYnV0ZShuZXdTdHJlYW0uaWQpIGlzIHRydWUKKworKioqIHRl
c3RpbmcgIm5ldyB3ZWJraXRNZWRpYVN0cmVhbShzdHJlYW0pIgogUEFTUyBTdHJlYW0gY29uc3Ry
dWN0ZWQKLVBBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgbm9uLW51bGwuCi1QQVNTIFtvYmpl
Y3QgTWVkaWFTdHJlYW1dIGlzIGRlZmluZWQuCi1QQVNTIG5ld1N0cmVhbS5jb25zdHJ1Y3Rvci5u
YW1lIGlzICdNZWRpYVN0cmVhbScKK1BBU1MgW29iamVjdCB3ZWJraXRNZWRpYVN0cmVhbV0gaXMg
bm9uLW51bGwuCitQQVNTIFtvYmplY3Qgd2Via2l0TWVkaWFTdHJlYW1dIGlzIGRlZmluZWQuCitQ
QVNTIG5ld1N0cmVhbS5jb25zdHJ1Y3Rvci50b1N0cmluZygpIGlzICdbb2JqZWN0IHdlYmtpdE1l
ZGlhU3RyZWFtQ29uc3RydWN0b3JdJwogUEFTUyBuZXdTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5s
ZW5ndGggaXMgbkF1ZGlvCiBQQVNTIG5ld1N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBp
cyBuVmlkZW8KIFBBU1MgY2hlY2tJZEF0dHJpYnV0ZShuZXdTdHJlYW0uaWQpIGlzIHRydWUKKwor
KioqIHRlc3RpbmcgIm5ldyB3ZWJraXRNZWRpYVN0cmVhbShbc3RyZWFtLmdldEF1ZGlvVHJhY2tz
KClbMF1dKSIKIFBBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCi1QQVNTIFtvYmplY3QgTWVkaWFTdHJl
YW1dIGlzIG5vbi1udWxsLgotUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgot
UEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCitQQVNTIFtv
YmplY3Qgd2Via2l0TWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgorUEFTUyBbb2JqZWN0IHdlYmtp
dE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgorUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IudG9T
dHJpbmcoKSBpcyAnW29iamVjdCB3ZWJraXRNZWRpYVN0cmVhbUNvbnN0cnVjdG9yXScKIFBBU1Mg
bmV3U3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIG5BdWRpbwogUEFTUyBuZXdTdHJl
YW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgblZpZGVvCiBQQVNTIGNoZWNrSWRBdHRyaWJ1
dGUobmV3U3RyZWFtLmlkKSBpcyB0cnVlCisKKyoqKiB0ZXN0aW5nICJuZXcgd2Via2l0TWVkaWFT
dHJlYW0oW3N0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdXSkiCiBQQVNTIFN0cmVhbSBjb25zdHJ1
Y3RlZAotUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBub24tbnVsbC4KLVBBU1MgW29iamVj
dCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KLVBBU1MgbmV3U3RyZWFtLmNvbnN0cnVjdG9yLm5h
bWUgaXMgJ01lZGlhU3RyZWFtJworUEFTUyBbb2JqZWN0IHdlYmtpdE1lZGlhU3RyZWFtXSBpcyBu
b24tbnVsbC4KK1BBU1MgW29iamVjdCB3ZWJraXRNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KK1BB
U1MgbmV3U3RyZWFtLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3Qgd2Via2l0TWVk
aWFTdHJlYW1Db25zdHJ1Y3Rvcl0nCiBQQVNTIG5ld1N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxl
bmd0aCBpcyBuQXVkaW8KIFBBU1MgbmV3U3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlz
IG5WaWRlbwogUEFTUyBjaGVja0lkQXR0cmlidXRlKG5ld1N0cmVhbS5pZCkgaXMgdHJ1ZQorCisq
KiogdGVzdGluZyAibmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzdHJlYW0uZ2V0QXVkaW9UcmFja3Mo
KVswXSwgc3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF1dKSIKIFBBU1MgU3RyZWFtIGNvbnN0cnVj
dGVkCi1QQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgotUEFTUyBbb2JqZWN0
IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgotUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFt
ZSBpcyAnTWVkaWFTdHJlYW0nCitQQVNTIFtvYmplY3Qgd2Via2l0TWVkaWFTdHJlYW1dIGlzIG5v
bi1udWxsLgorUEFTUyBbb2JqZWN0IHdlYmtpdE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgorUEFT
UyBuZXdTdHJlYW0uY29uc3RydWN0b3IudG9TdHJpbmcoKSBpcyAnW29iamVjdCB3ZWJraXRNZWRp
YVN0cmVhbUNvbnN0cnVjdG9yXScKIFBBU1MgbmV3U3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVu
Z3RoIGlzIG5BdWRpbwogUEFTUyBuZXdTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMg
blZpZGVvCiBQQVNTIGNoZWNrSWRBdHRyaWJ1dGUobmV3U3RyZWFtLmlkKSBpcyB0cnVlCisKKyoq
KiB0ZXN0aW5nICJuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3N0cmVhbS5nZXRWaWRlb1RyYWNrcygp
WzBdLCBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSwgc3RyZWFtLmdldFZpZGVvVHJhY2tzKClb
MF1dKSIKIFBBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCi1QQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1d
IGlzIG5vbi1udWxsLgotUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgotUEFT
UyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCitQQVNTIFtvYmpl
Y3Qgd2Via2l0TWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgorUEFTUyBbb2JqZWN0IHdlYmtpdE1l
ZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgorUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IudG9TdHJp
bmcoKSBpcyAnW29iamVjdCB3ZWJraXRNZWRpYVN0cmVhbUNvbnN0cnVjdG9yXScKIFBBU1MgbmV3
U3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIG5BdWRpbwogUEFTUyBuZXdTdHJlYW0u
Z2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgblZpZGVvCiBQQVNTIGNoZWNrSWRBdHRyaWJ1dGUo
bmV3U3RyZWFtLmlkKSBpcyB0cnVlCisKK0NyZWF0aW5nIGEgbmV3IHN0cmVhbSBmcm9tIGEgc3Ry
ZWFtIHRoYXQgaGFzIHN0b3BwZWQKKworKioqIHRlc3RpbmcgIm5ldyB3ZWJraXRNZWRpYVN0cmVh
bShbc3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF1dKSIKIFBBU1MgU3RyZWFtIGNvbnN0cnVjdGVk
Ci1QQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgotUEFTUyBbb2JqZWN0IE1l
ZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgotUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFtZSBp
cyAnTWVkaWFTdHJlYW0nCitQQVNTIFtvYmplY3Qgd2Via2l0TWVkaWFTdHJlYW1dIGlzIG5vbi1u
dWxsLgorUEFTUyBbb2JqZWN0IHdlYmtpdE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgorUEFTUyBu
ZXdTdHJlYW0uY29uc3RydWN0b3IudG9TdHJpbmcoKSBpcyAnW29iamVjdCB3ZWJraXRNZWRpYVN0
cmVhbUNvbnN0cnVjdG9yXScKIFBBU1MgbmV3U3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3Ro
IGlzIG5BdWRpbwogUEFTUyBuZXdTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgblZp
ZGVvCiBQQVNTIGNoZWNrSWRBdHRyaWJ1dGUobmV3U3RyZWFtLmlkKSBpcyB0cnVlCisKKyoqKiB0
ZXN0aW5nICJuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3N0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBd
XSkiCiBQQVNTIFN0cmVhbSBjb25zdHJ1Y3RlZAotUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBp
cyBub24tbnVsbC4KLVBBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KLVBBU1Mg
bmV3U3RyZWFtLmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01lZGlhU3RyZWFtJworUEFTUyBbb2JqZWN0
IHdlYmtpdE1lZGlhU3RyZWFtXSBpcyBub24tbnVsbC4KK1BBU1MgW29iamVjdCB3ZWJraXRNZWRp
YVN0cmVhbV0gaXMgZGVmaW5lZC4KK1BBU1MgbmV3U3RyZWFtLmNvbnN0cnVjdG9yLnRvU3RyaW5n
KCkgaXMgJ1tvYmplY3Qgd2Via2l0TWVkaWFTdHJlYW1Db25zdHJ1Y3Rvcl0nCiBQQVNTIG5ld1N0
cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyBuQXVkaW8KIFBBU1MgbmV3U3RyZWFtLmdl
dFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIG5WaWRlbwogUEFTUyBjaGVja0lkQXR0cmlidXRlKG5l
d1N0cmVhbS5pZCkgaXMgdHJ1ZQorCisqKiogdGVzdGluZyAibmV3IHdlYmtpdE1lZGlhU3RyZWFt
KFtzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSwgc3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF1d
KSIKIFBBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCi1QQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlz
IG5vbi1udWxsLgotUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgotUEFTUyBu
ZXdTdHJlYW0uY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCitQQVNTIFtvYmplY3Qg
d2Via2l0TWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgorUEFTUyBbb2JqZWN0IHdlYmtpdE1lZGlh
U3RyZWFtXSBpcyBkZWZpbmVkLgorUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IudG9TdHJpbmco
KSBpcyAnW29iamVjdCB3ZWJraXRNZWRpYVN0cmVhbUNvbnN0cnVjdG9yXScKIFBBU1MgbmV3U3Ry
ZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIG5BdWRpbwogUEFTUyBuZXdTdHJlYW0uZ2V0
VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgblZpZGVvCiBQQVNTIGNoZWNrSWRBdHRyaWJ1dGUobmV3
U3RyZWFtLmlkKSBpcyB0cnVlCisKKyoqKiB0ZXN0aW5nICJuZXcgd2Via2l0TWVkaWFTdHJlYW0o
c3RyZWFtKSIKIFBBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCi1QQVNTIFtvYmplY3QgTWVkaWFTdHJl
YW1dIGlzIG5vbi1udWxsLgotUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgot
UEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCitQQVNTIFtv
YmplY3Qgd2Via2l0TWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgorUEFTUyBbb2JqZWN0IHdlYmtp
dE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgorUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IudG9T
dHJpbmcoKSBpcyAnW29iamVjdCB3ZWJraXRNZWRpYVN0cmVhbUNvbnN0cnVjdG9yXScKIFBBU1Mg
bmV3U3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIG5BdWRpbwogUEFTUyBuZXdTdHJl
YW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgblZpZGVvCiBQQVNTIGNoZWNrSWRBdHRyaWJ1
dGUobmV3U3RyZWFtLmlkKSBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRtbAkocmV2aXNpb24g
MTU2NDU5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0
cnVjdG9yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgZnVuY3Rpb24gZ290
U3RyZWFtKHMpIHsKICAgICBzaG91bGRCZSgnbG9jYWxTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5s
ZW5ndGgnLCAnMScpOwogICAgIHNob3VsZEJlKCdsb2NhbFN0cmVhbS5nZXRWaWRlb1RyYWNrcygp
Lmxlbmd0aCcsICcxJyk7CiAKLSAgICBzaG91bGRCZVRydWUoInR5cGVvZiB3ZWJraXRNZWRpYVN0
cmVhbSA9PT0gJ2Z1bmN0aW9uJyIpOworICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHdlYmtpdE1l
ZGlhU3RyZWFtID09PSAnb2JqZWN0JyIpOwogICAgIHNob3VsZEJlVHJ1ZSgnY2hlY2tJZEF0dHJp
YnV0ZShsb2NhbFN0cmVhbS5pZCknKTsKICAgICB0ZXN0Q29uc3RydWN0b3IobG9jYWxTdHJlYW0p
OwogfQpAQCAtNzUsMjEgKzc1LDIyIEBAIGZ1bmN0aW9uIHRlc3RDb25zdHJ1Y3RvcihzKSB7CiAg
ICAgc2hvdWxkVGhyb3coJ25ldyB3ZWJraXRNZWRpYVN0cmVhbShudWxsKScpOwogICAgIHNob3Vs
ZFRocm93KCduZXcgd2Via2l0TWVkaWFTdHJlYW0odW5kZWZpbmVkKScpOwogCi0gICAgdmVyaWZ5
U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbSgpLCAwLCAwKTsKLSAgICB2ZXJpZnlTdHJlYW0o
bmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtdKSwgMCwgMCk7CisgICAgdmVyaWZ5U3RyZWFtKCJuZXcg
d2Via2l0TWVkaWFTdHJlYW0oKSIsIDAsIDApOworICAgIHZlcmlmeVN0cmVhbSgibmV3IHdlYmtp
dE1lZGlhU3RyZWFtKFtdKSIsIDAsIDApOwogCi0gICAgdmVyaWZ5U3RyZWFtKG5ldyB3ZWJraXRN
ZWRpYVN0cmVhbShzKSwgcy5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCwgcy5nZXRWaWRlb1RyYWNr
cygpLmxlbmd0aCk7CisgICAgdmVyaWZ5U3RyZWFtKCJuZXcgd2Via2l0TWVkaWFTdHJlYW0oc3Ry
ZWFtKSIsIHMuZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgsIHMuZ2V0VmlkZW9UcmFja3MoKS5sZW5n
dGgpOwogCi0gICAgdmVyaWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbcy5nZXRBdWRp
b1RyYWNrcygpWzBdXSksIDEsIDApOwotICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFT
dHJlYW0oW3MuZ2V0VmlkZW9UcmFja3MoKVswXV0pLCAwLCAxKTsKLSAgICB2ZXJpZnlTdHJlYW0o
bmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzLmdldEF1ZGlvVHJhY2tzKClbMF0sIHMuZ2V0VmlkZW9U
cmFja3MoKVswXV0pLCAxLCAxKTsKLSAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3Ry
ZWFtKFtzLmdldFZpZGVvVHJhY2tzKClbMF0sIHMuZ2V0QXVkaW9UcmFja3MoKVswXSwgcy5nZXRW
aWRlb1RyYWNrcygpWzBdXSksIDEsIDEpOwotCi0gICAgcy5vbmVuZGVkID0gZnVuY3Rpb24gKCkg
ewotICAgICAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzLmdldEF1ZGlv
VHJhY2tzKClbMF1dKSwgMCwgMCk7Ci0gICAgICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVk
aWFTdHJlYW0oW3MuZ2V0VmlkZW9UcmFja3MoKVswXV0pLCAwLCAwKTsKLSAgICAgICAgdmVyaWZ5
U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbcy5nZXRBdWRpb1RyYWNrcygpWzBdLCBzLmdl
dFZpZGVvVHJhY2tzKClbMF1dKSwgMCwgMCk7Ci0gICAgICAgIHZlcmlmeVN0cmVhbShuZXcgd2Vi
a2l0TWVkaWFTdHJlYW0ocyksIDAsIDApOworICAgIHZlcmlmeVN0cmVhbSgibmV3IHdlYmtpdE1l
ZGlhU3RyZWFtKFtzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXV0pIiwgMSwgMCk7CisgICAgdmVy
aWZ5U3RyZWFtKCJuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3N0cmVhbS5nZXRWaWRlb1RyYWNrcygp
WzBdXSkiLCAwLCAxKTsKKyAgICB2ZXJpZnlTdHJlYW0oIm5ldyB3ZWJraXRNZWRpYVN0cmVhbShb
c3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0sIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdXSki
LCAxLCAxKTsKKyAgICB2ZXJpZnlTdHJlYW0oIm5ldyB3ZWJraXRNZWRpYVN0cmVhbShbc3RyZWFt
LmdldFZpZGVvVHJhY2tzKClbMF0sIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdLCBzdHJlYW0u
Z2V0VmlkZW9UcmFja3MoKVswXV0pIiwgMSwgMSk7CisKKyAgICBzdHJlYW0ub25lbmRlZCA9IGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgZGVidWcoIjxicj5DcmVhdGluZyBhIG5ldyBzdHJlYW0gZnJv
bSBhIHN0cmVhbSB0aGF0IGhhcyBzdG9wcGVkIik7CisgICAgICAgIHZlcmlmeVN0cmVhbSgibmV3
IHdlYmtpdE1lZGlhU3RyZWFtKFtzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXV0pIiwgMCwgMCk7
CisgICAgICAgIHZlcmlmeVN0cmVhbSgibmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzdHJlYW0uZ2V0
VmlkZW9UcmFja3MoKVswXV0pIiwgMCwgMCk7CisgICAgICAgIHZlcmlmeVN0cmVhbSgibmV3IHdl
YmtpdE1lZGlhU3RyZWFtKFtzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSwgc3RyZWFtLmdldFZp
ZGVvVHJhY2tzKClbMF1dKSIsIDAsIDApOworICAgICAgICB2ZXJpZnlTdHJlYW0oIm5ldyB3ZWJr
aXRNZWRpYVN0cmVhbShzdHJlYW0pIiwgMCwgMCk7CiAKICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CiAgICAgfTsKQEAgLTk3LDE1ICs5OCwxNiBAQCBmdW5jdGlvbiB0ZXN0Q29uc3RydWN0b3Iocykg
ewogICAgIHMuc3RvcCgpOwogfQogCi1mdW5jdGlvbiB2ZXJpZnlTdHJlYW0ocywgbnVtQXVkaW9U
cmFja3MsIG51bVZpZGVvVHJhY2tzKSB7Ci0gICAgbmV3U3RyZWFtID0gczsKK2Z1bmN0aW9uIHZl
cmlmeVN0cmVhbShzY3JpcHQsIG51bUF1ZGlvVHJhY2tzLCBudW1WaWRlb1RyYWNrcykgeworICAg
IGRlYnVnKCI8YnI+KioqIHRlc3RpbmcgXCIiICsgc2NyaXB0ICsgIlwiIik7CisgICAgbmV3U3Ry
ZWFtID0gZXZhbChzY3JpcHQpOwogICAgIG5BdWRpbyA9IG51bUF1ZGlvVHJhY2tzOwogICAgIG5W
aWRlbyA9IG51bVZpZGVvVHJhY2tzOwogCiAgICAgdGVzdFBhc3NlZCgnU3RyZWFtIGNvbnN0cnVj
dGVkJyk7CiAgICAgc2hvdWxkQmVOb25OdWxsKG5ld1N0cmVhbSk7CiAgICAgc2hvdWxkQmVEZWZp
bmVkKG5ld1N0cmVhbSk7Ci0gICAgc2hvdWxkQmUoIm5ld1N0cmVhbS5jb25zdHJ1Y3Rvci5uYW1l
IiwgIidNZWRpYVN0cmVhbSciKTsKKyAgICBzaG91bGRCZSgibmV3U3RyZWFtLmNvbnN0cnVjdG9y
LnRvU3RyaW5nKCkiLCAiJ1tvYmplY3Qgd2Via2l0TWVkaWFTdHJlYW1Db25zdHJ1Y3Rvcl0nIik7
CiAgICAgc2hvdWxkQmUoJ25ld1N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICduQXVk
aW8nKTsKICAgICBzaG91bGRCZSgnbmV3U3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoJywg
J25WaWRlbycpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2tFdmVudC1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQtY29uc3RydWN0
b3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTY0NTkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTMsNiArMywxMSBAQCBUaGlzIHRlc3RzIHRoZSBjb25zdHJ1Y3Rv
ciBmb3IgdGhlIE1lZGlhCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBnZXRV
c2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0pIGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgorCisqKiogZ2V0VXNlck1lZGlhKCkgc3VjY2VlZGVkLCB0ZXN0IHN0cmVh
bSAqKioKK1BBU1MgbWVkaWFTdHJlYW0gaXMgbm9uLW51bGwuCitQQVNTIG1lZGlhU3RyZWFtLmdl
dFZpZGVvVHJhY2tzKClbMF0gaXMgbm9uLW51bGwuCiAKICoqKiBObyBpbml0aWFsaXplciBwYXNz
ZWQgKioqCiBQQVNTIG5ldyBNZWRpYVN0cmVhbVRyYWNrRXZlbnQoJ01lZGlhU3RyZWFtVHJhY2tF
dmVudCcpLmJ1YmJsZXMgaXMgZmFsc2UKQEAgLTMwLDcgKzM1LDcgQEAgUEFTUyBuZXcgTWVkaWFT
dHJlYW1UcmFja0V2ZW50KCdNZWRpYVN0cgogUEFTUyBuZXcgTWVkaWFTdHJlYW1UcmFja0V2ZW50
KCdNZWRpYVN0cmVhbVRyYWNrRXZlbnQnLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRy
dWUsIHRyYWNrOiBtZWRpYVN0cmVhbVRyYWNrIH0pLmNhbmNlbGFibGUgaXMgdHJ1ZQogCiAqKiog
SW5pdGlhbGl6ZSAndHJhY2snIHdpdGggdmFsaWQgdHJhY2sgb2JqZWN0ICoqKgotRkFJTCBuZXcg
TWVkaWFTdHJlYW1UcmFja0V2ZW50KCdNZWRpYVN0cmVhbVRyYWNrRXZlbnQnLCB7IHRyYWNrOiBt
ZWRpYVN0cmVhbVRyYWNrIH0pLnRyYWNrIHNob3VsZCBiZSBub24tbnVsbC4gV2FzIG51bGwKK1BB
U1MgbmV3IE1lZGlhU3RyZWFtVHJhY2tFdmVudCgnTWVkaWFTdHJlYW1UcmFja0V2ZW50JywgeyB0
cmFjazogbWVkaWFTdHJlYW1UcmFjayB9KS50cmFjayBpcyBub24tbnVsbC4KIFBBU1MgbmV3IE1l
ZGlhU3RyZWFtVHJhY2tFdmVudCgnTWVkaWFTdHJlYW1UcmFja0V2ZW50JywgeyB0cmFjazogbWVk
aWFTdHJlYW1UcmFjayB9KS50cmFjayBpcyBtZWRpYVN0cmVhbVRyYWNrCiAKIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja0V2ZW50LWNvbnN0cnVjdG9yLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQtY29uc3RydWN0
b3IuaHRtbAkocmV2aXNpb24gMTU2NDU5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQtY29uc3RydWN0b3IuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMTMsNiArMTMsMjggQEAKIAogICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMg
dGhlIGNvbnN0cnVjdG9yIGZvciB0aGUgTWVkaWFTdHJlYW1UcmFja0V2ZW50IERPTSBjbGFzcy4i
KTsKIAorICAgICAgICAgICAgZnVuY3Rpb24gZW5kVGVzdCgpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3IoKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1N0cmVhbSBnZW5lcmF0
aW9uIGZhaWxlZC4nKTsKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGdldFVzZXJNZWRpYShjb25zdHJhaW50cywgY2FsbGJh
Y2spCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAg
ICAgICAgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShjb25zdHJhaW50cywgY2FsbGJhY2ss
IGVycm9yKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoJ3dlYmtpdEdldFVzZXJNZWRpYSB0aHJldyBleGNlcHRpb24gOicgKyBl
KTsKKyAgICAgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKwogICAgICAgICAgICAgZnVuY3Rpb24gdGVzdE1lZGlhU3RyZWFtVHJhY2tF
dmVudCgpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgZGVidWcoIjxicj4qKiogTm8g
aW5pdGlhbGl6ZXIgcGFzc2VkICoqKiIpOwpAQCAtNDYsMTQgKzY4LDE0IEBACiAgICAgICAgICAg
ICAgICAgc2hvdWxkQmUoIm5ldyBNZWRpYVN0cmVhbVRyYWNrRXZlbnQoJ01lZGlhU3RyZWFtVHJh
Y2tFdmVudCcsIHsgdHJhY2s6IG1lZGlhU3RyZWFtVHJhY2sgfSkudHJhY2siLCAibWVkaWFTdHJl
YW1UcmFjayIpOwogCiAgICAgICAgICAgICAgICAgZGVidWcoIiIpOwotICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtKHN0cmVhbSkKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpOwotICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoJ2dldFVzZXJNZWRpYSBzdWNjZWVkZWQuJyk7CiAKKyAgICAgICAgICAgICAg
ICBkZWJ1ZygiPGJyPioqKiBnZXRVc2VyTWVkaWEoKSBzdWNjZWVkZWQsIHRlc3Qgc3RyZWFtICoq
KiIpOwogICAgICAgICAgICAgICAgIG1lZGlhU3RyZWFtID0gc3RyZWFtOwogICAgICAgICAgICAg
ICAgIHNob3VsZEJlTm9uTnVsbCgibWVkaWFTdHJlYW0iKTsKICAgICAgICAgICAgICAgICBzaG91
bGRCZU5vbk51bGwoIm1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0iKTsKQEAgLTY0LDE4
ICs4NiwxMyBAQAogICAgICAgICAgICAgZnVuY3Rpb24gcHJpbWVUaW1lb3V0KG1zZykKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpOwotICAgICAgICAg
ICAgICAgIHRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsgdGVzdEZhaWxlZChtc2cpOyBm
aW5pc2hKU1Rlc3QoKSB9LCA0MDAwKTsKKyAgICAgICAgICAgICAgICB0aW1lciA9IHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHRlc3RGYWlsZWQobXNnKTsgZW5kVGVzdCgpIH0sIDQwMDApOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgIC8qIAotICAgICAgICAgICAgICAgIEBAQEBAIE5PVEU6IHdlIGNhbid0IGdl
dCBhIE1lZGlhU3RyZWFtVHJhY2sgdW50aWwgd2UgaGF2ZSBhIGZ1bmN0aW9uYWwgbW9jayBnZXRV
c2VyTWVkaWEsIHNvIGp1c3QgdGVzdCB3aGF0IHdlIGNhbiBmb3Igbm93IEBAQEBAIAogICAgICAg
ICAgICAgICAgIHByaW1lVGltZW91dCgiVGltZW91dCB3YWl0aW5nIGZvciBnZXRVc2VyTWVkaWEo
KSIpOwogICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCdnZXRVc2VyTWVkaWEoe2F1ZGlv
OnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0pJyk7Ci0gICAgICAgICAgICAqLwotCi0gICAg
ICAgICAgICAgICAgdGVzdE1lZGlhU3RyZWFtVHJhY2tFdmVudCgpOwogICAgICAgICAgICAgfQog
CiAgICAgICAgIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9h
cmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9hcmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjQ1
OSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vYXJndW1lbnQtdHlwZXMtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNywxMCArMTcsMTAgQEAgUEFTUyBuYXZpZ2F0b3Iu
d2Via2l0R2V0VXNlck1lZGlhKHt2aWRlbwogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKHVuZGVmaW5lZCwgZW1wdHlGdW5jdGlvbikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOb3RT
dXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhKG51bGwsIGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90
U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYSh7IH0sIGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90
U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYSh0cnVlLCBlbXB0eUZ1bmN0aW9uKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBOb3QgYW4gb2JqZWN0Li4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSg0Miwg
ZW1wdHlGdW5jdGlvbikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGFuIG9iamVjdC4u
Ci1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoSW5maW5pdHksIGVtcHR5RnVuY3Rp
b24pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBhbiBvYmplY3QuLgotUEFTUyBuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKC1JbmZpbml0eSwgZW1wdHlGdW5jdGlvbikgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGFuIG9iamVjdC4uCitGQUlMIG5hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEodHJ1ZSwgZW1wdHlGdW5jdGlvbikgc2hvdWxkIHRocm93IFR5cGVFcnJv
cjogTm90IGFuIG9iamVjdC4uIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJy
b3I6IERPTSBFeGNlcHRpb24gOS4KK0ZBSUwgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSg0
MiwgZW1wdHlGdW5jdGlvbikgc2hvdWxkIHRocm93IFR5cGVFcnJvcjogTm90IGFuIG9iamVjdC4u
IFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24g
OS4KK0ZBSUwgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShJbmZpbml0eSwgZW1wdHlGdW5j
dGlvbikgc2hvdWxkIHRocm93IFR5cGVFcnJvcjogTm90IGFuIG9iamVjdC4uIFRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KK0ZBSUwgbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgtSW5maW5pdHksIGVtcHR5RnVuY3Rpb24pIHNob3Vs
ZCB0aHJvdyBUeXBlRXJyb3I6IE5vdCBhbiBvYmplY3QuLiBUaHJldyBleGNlcHRpb24gRXJyb3I6
IE5vdFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9uIDkuCiBQQVNTIG5hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEoZW1wdHlGdW5jdGlvbiwgZW1wdHlGdW5jdGlvbikgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgogUEFTUyBuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHt2aWRlbzogdHJ1ZX0sICJmb29iYXIiKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhKHt2aWRlbzogdHJ1ZX0sIHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212770</attachid>
            <date>2013-09-26 17:24:18 -0700</date>
            <delta_ts>2013-09-26 17:24:18 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>testing_7.txt</filename>
            <type>text/plain</type>
            <size>66813</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQ5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEzLTA5LTI2ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
bWFrZSBNZWRpYVN0cmVhbSB0ZXN0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBleGlzdGluZyB0ZXN0cyB1cGRhdGVkLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuCisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogRGl0dG8uCisKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsOiBBZGQgU2tpcFZUYWJsZVZhbGlkYXRp
b24uCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJv
ci5pZGw6IEFkZCBKU0dlbmVyYXRlVG9KU09iamVjdC4KKyAgICAgICAgKiBXZWJDb3JlLmV4cC5p
bjogRXhwb3J0IE1vY2tNZWRpYVN0cmVhbUNlbnRlcjo6cmVnaXN0ZXJNb2NrTWVkaWFTdHJlYW1D
ZW50ZXIuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFk
ZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuCisgICAgICAgICogZG9tL0RPTUVycm9yLmg6IE1ha2Ug
dGhlIGRlc3RydWN0b3IgdmlydHVhbCBiZWNhdXNlIGl0IGhhcyBhIGRlcml2ZWQgY2xhc3MuCisg
ICAgICAgICogZG9tL0RPTUVycm9yLmlkbDoKKworICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a01lZGlhU3RyZWFtQ2VudGVyLmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9N
b2NrTWVkaWFTdHJlYW1DZW50ZXIuaDogQWRkZWQuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5jcHA6IFJlZ2lzdGVyIHRoZSBtb2NrIHN0cmVhbSBjZW50ZXIuCisKIDIwMTMtMDktMjYg
IEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
UGFzc1dlYWsuaApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE1NjQ4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMDM4LDYg
KzIwMzgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbW9jay9EZXZpY2VN
b3Rpb25DbGllbnRNb2NrLmNwcAogICAgIHBsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrLmNwcAogICAgIHBsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNw
cAorICAgIHBsYXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcAogICAgIHBsYXRm
b3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAogCiAgICAgcGxhdGZvcm0vbmV0d29yay9B
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHJldmlzaW9uIDE1NjQ4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTU0OTQsNiArNTQ5NCw4IEBAIHdlYmNvcmVfcGxh
dGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2suaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9H
ZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9TY3JvbGxiYXJUaGVtZU1vY2suaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iRGF0YS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE1NjQ3
MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0y
ODA1LDQgKzI4MDUsNSBAQCBfX1pON1dlYkNvcmUxNlVzZXJNZWRpYVJlcXVlc3QyMnVzZXJNZWRp
CiBfX1pON1dlYkNvcmUxNlVzZXJNZWRpYVJlcXVlc3QyMXVzZXJNZWRpYUFjY2Vzc0RlbmllZEV2
CiBfX1pON1dlYkNvcmUxOHByb3ZpZGVVc2VyTWVkaWFUb0VQTlNfNFBhZ2VFUE5TXzE1VXNlck1l
ZGlhQ2xpZW50RQogX19aTks3V2ViQ29yZTE2VXNlck1lZGlhUmVxdWVzdDE0c2VjdXJpdHlPcmln
aW5FdgorX19aTjdXZWJDb3JlMjFNb2NrTWVkaWFTdHJlYW1DZW50ZXIyOXJlZ2lzdGVyTW9ja01l
ZGlhU3RyZWFtQ2VudGVyRXYKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsCShyZXZpc2lvbiAx
NTY0NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw4IEBACiBbCiAgICAgQ29uZGl0
aW9uYWw9TUVESUFfU1RSRUFNLAogICAgIEV2ZW50VGFyZ2V0LAotICAgIEFjdGl2ZURPTU9iamVj
dAorICAgIEFjdGl2ZURPTU9iamVjdCwKKyAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbgogXSBpbnRl
cmZhY2UgTWVkaWFTdHJlYW1UcmFjayB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBraW5kOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmln
YXRvclVzZXJNZWRpYUVycm9yLmlkbAkocmV2aXNpb24gMTU2NDU5KQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNCw3ICsyNSw4IEBACiAKIFsKICAgICBOb0ludGVyZmFjZU9iamVjdCwKLSAgICBDb25k
aXRpb25hbD1NRURJQV9TVFJFQU0KKyAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAg
SlNHZW5lcmF0ZVRvSlNPYmplY3QsCiBdIGludGVyZmFjZSBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJv
ciA6IERPTUVycm9yIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNvbnN0cmFp
bnROYW1lOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1NjQ4OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYg
KzI3NCw4IEBACiAJCTA3QzU5QjVFMTdGNEIyMDgwMDBGQkNCQiAvKiBKU0F1ZGlvU3RyZWFtVHJh
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QzU5
QjVBMTdGNEIyMDgwMDBGQkNCQiAvKiBKU0F1ZGlvU3RyZWFtVHJhY2suaCAqLzsgfTsKIAkJMDdD
NTlCNUYxN0Y0QjIwODAwMEZCQ0JCIC8qIEpTVmlkZW9TdHJlYW1UcmFjay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0M1OUI1QjE3RjRCMjA4MDAw
RkJDQkIgLyogSlNWaWRlb1N0cmVhbVRyYWNrLmNwcCAqLzsgfTsKIAkJMDdDNTlCNjAxN0Y0QjIw
ODAwMEZCQ0JCIC8qIEpTVmlkZW9TdHJlYW1UcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDNTlCNUMxN0Y0QjIwODAwMEZCQ0JCIC8qIEpTVmlk
ZW9TdHJlYW1UcmFjay5oICovOyB9OworCQkwN0M1OUI2MzE3RjREMUJGMDAwRkJDQkIgLyogTW9j
a01lZGlhU3RyZWFtQ2VudGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3QzU5QjYxMTdGNENGODcwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1D
ZW50ZXIuY3BwICovOyB9OworCQkwN0M1OUI2NDE3RjREMUM0MDAwRkJDQkIgLyogTW9ja01lZGlh
U3RyZWFtQ2VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0M1OUI2MjE3RjRDRjg3MDAwRkJDQkIgLyogTW9ja01lZGlhU3RyZWFtQ2VudGVyLmgg
Ki87IH07CiAJCTA3Q0U3N0Q1MTY3MTJBNkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwN0NFNzdENDE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3
REM1RkQ0MTdEM0VFRTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdEQzVGRDMxN0Qz
RUVFOTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAgKi87IH07CiAJCTA3
RTExNkIxMTQ4OUM5QTEwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1c3RvbS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0UxMTZCMDE0ODlDOUExMDBF
QzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwICovOyB9OwpAQCAtNjY4NSw2ICs2Njg3LDgg
QEAKIAkJMDdDNTlCNUExN0Y0QjIwODAwMEZCQ0JCIC8qIEpTQXVkaW9TdHJlYW1UcmFjay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0F1ZGlvU3RyZWFtVHJhY2suaDsgcGF0
aCA9IEpTQXVkaW9TdHJlYW1UcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
N0M1OUI1QjE3RjRCMjA4MDAwRkJDQkIgLyogSlNWaWRlb1N0cmVhbVRyYWNrLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTVmlkZW9TdHJlYW1UcmFjay5jcHA7IHBh
dGggPSBKU1ZpZGVvU3RyZWFtVHJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwN0M1OUI1QzE3RjRCMjA4MDAwRkJDQkIgLyogSlNWaWRlb1N0cmVhbVRyYWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTVmlkZW9TdHJlYW1UcmFjay5oOyBwYXRoID0g
SlNWaWRlb1N0cmVhbVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QzU5
QjYxMTdGNENGODcwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcDsg
cGF0aCA9IG1vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDdDNTlCNjIxN0Y0Q0Y4NzAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNl
bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNb2NrTWVkaWFTdHJlYW1D
ZW50ZXIuaDsgcGF0aCA9IG1vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3Q0U3N0Q0MTY3MTJBNkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
YmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDdEQzVGRDMxN0QzRUVFOTAwOTlGODkwIC8qIEpTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JUQ1N0YXRzUmVzcG9u
c2VDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0UxMTZCMDE0ODlD
OUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTQ4OTcsNiArMTQ5MDEsOCBAQAogCQk1OUM3N0YxMDEwNTQ1OTFDMDA1
MDYxMDQgLyogbW9jayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJMDdDNTlCNjExN0Y0Q0Y4NzAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNlbnRlci5j
cHAgKi8sCisJCQkJMDdDNTlCNjIxN0Y0Q0Y4NzAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNl
bnRlci5oICovLAogCQkJCTU5MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2suY3BwICovLAogCQkJCTU5MzA5QTEyMTFGNEFFNkEwMDI1MDYwMyAvKiBE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLywKIAkJCQlBQUUyN0I3NDE2Q0JGQzBEMDA2
MjMwNDMgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suY3BwICovLApAQCAtMjE5MTgs
NiArMjE5MjQsNyBAQAogCQkJCTFDNEM4RjY2MEFEODY1NUQwMDk0NzVDRSAvKiBEZWxldGVCdXR0
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFDNEM4RjAyMEFEODVEODcwMDk0NzVDRSAvKiBEZWxl
dGVCdXR0b25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURERjA5OUU2NDky
MDA1NkU1ODEgLyogRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMDdDNTlCNjQxN0Y0RDFDNDAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNlbnRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERTEwOTlFNjQ5MjAwNTZFNTgxIC8qIERlbGV0ZVNlbGVj
dGlvbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMTY2MEE1MTM3ODdDNkQwMDFGRkE3
QiAvKiBEZW5vcm1hbERpc2FibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTAwRUU3NjE1NDZF
QUMxMDBCQTExRDEgLyogRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNjEzNiw2ICsyNjE0Myw3IEBACiAJCQkJNDE2MkE0NTQxMDExNDVFMzAwREZGM0VEIC8qIEpT
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkRBMTVFRDExMkIwM0Y5NDAwM0E1ODNBIC8qIEpTRGVsYXlOb2RlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTMxRkIxQTY1MTIwQTVEM0YwMERDMDJBMCAvKiBKU0RldmljZU1vdGlvbkV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTA3QzU5QjYzMTdGNEQxQkYwMDBGQkNCQiAvKiBNb2NrTWVk
aWFTdHJlYW1DZW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFGQjFBNkMxMjBBNUQ2OTAw
REMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTlBODYwMDYxMTlEQUY3RjAwREVGMUVGIC8qIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1OTBFMUI0QjExRTRFRjcwMDA2OUY3ODQgLyogSlNEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0RPTUVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L0RPTUVycm9yLmgJKHJldmlzaW9uIDE1NjQ1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9ET01F
cnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9NRXJyb3IobmFtZSkpOwogICAgIH0KKyAgICB2
aXJ0dWFsIH5ET01FcnJvcigpIHsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01FcnJvci5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTUVycm9yLmlkbAkocmV2aXNp
b24gMTU2NDU5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTUVycm9yLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjcsOCArMjcsOCBAQAogICovCiBbCiAgICAgTm9JbnRlcmZhY2VPYmplY3QsCi0g
ICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQorICAgIFNraXBWVGFibGVWYWxpZGF0aW9uCiBd
IGludGVyZmFjZSAgRE9NRXJyb3IgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcg
bmFtZTsKLSAgfTsKK307CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a01lZGlhU3RyZWFtQ2VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTW9ja01lZGlhU3RyZWFtQ2VudGVyLmgiCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKKyNpbmNsdWRlICJN
ZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1EZXNjcmlw
dG9yLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFjay5oIgorI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRNb2Nr
Q29uc3RyYWludChjb25zdCBTdHJpbmcmIGNvbnN0cmFpbnROYW1lKQoreworICAgIHJldHVybiBu
b3RGb3VuZCAhPSBjb25zdHJhaW50TmFtZS5maW5kKCJfYW5kX3N1cHBvcnRlZF8iKTsKK30KKwor
c3RhdGljIGJvb2wgaXNWYWxpZE1vY2tDb25zdHJhaW50KGNvbnN0IFN0cmluZyYgY29uc3RyYWlu
dE5hbWUpCit7CisgICAgaWYgKGlzU3VwcG9ydGVkTW9ja0NvbnN0cmFpbnQoY29uc3RyYWludE5h
bWUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbm90Rm91bmQgIT0gY29uc3Ry
YWludE5hbWUuZmluZCgiX2J1dF91bnN1cHBvcnRlZF8iKTsKK30KKworc3RhdGljIFN0cmluZyB2
ZXJpZnlDb25zdHJhaW50cyhNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKK3sKKyAgICBW
ZWN0b3I8TWVkaWFDb25zdHJhaW50PiBtYW5kYXRvcnlDb25zdHJhaW50czsKKyAgICBjb25zdHJh
aW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMobWFuZGF0b3J5Q29uc3RyYWludHMpOworICAg
IGlmIChtYW5kYXRvcnlDb25zdHJhaW50cy5zaXplKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtYW5kYXRvcnlDb25zdHJhaW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAg
ICAgY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50ID0gbWFuZGF0b3J5Q29uc3RyYWlu
dHNbaV07CisgICAgICAgICAgICBpZiAoIWlzU3VwcG9ydGVkTW9ja0NvbnN0cmFpbnQoY29uc3Ry
YWludC5tX25hbWUpIHx8IGNvbnN0cmFpbnQubV92YWx1ZSAhPSAiMSIpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGNvbnN0cmFpbnQubV9uYW1lOworICAgICAgICB9CisgICAgfQorICAgIAorICAg
IFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+IG9wdGlvbmFsQ29uc3RyYWludHM7CisgICAgY29uc3Ry
YWludHMtPmdldE9wdGlvbmFsQ29uc3RyYWludHMob3B0aW9uYWxDb25zdHJhaW50cyk7CisgICAg
aWYgKG9wdGlvbmFsQ29uc3RyYWludHMuc2l6ZSgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgb3B0aW9uYWxDb25zdHJhaW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAg
Y29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJhaW50ID0gb3B0aW9uYWxDb25zdHJhaW50c1tp
XTsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZE1vY2tDb25zdHJhaW50KGNvbnN0cmFpbnQubV9u
YW1lKSB8fCBjb25zdHJhaW50Lm1fdmFsdWUgIT0gIjAiKQorICAgICAgICAgICAgICAgIHJldHVy
biBjb25zdHJhaW50Lm1fbmFtZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKK30KKwordm9pZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OnJlZ2lzdGVy
TW9ja01lZGlhU3RyZWFtQ2VudGVyKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE1vY2tN
ZWRpYVN0cmVhbUNlbnRlciwgY2VudGVyLCAoKSk7CisgICAgc3RhdGljIGJvb2wgcmVnaXN0ZXJl
ZCA9IGZhbHNlOworICAgIGlmICghcmVnaXN0ZXJlZCkgeworICAgICAgICByZWdpc3RlcmVkID0g
dHJ1ZTsKKyAgICAgICAgTWVkaWFTdHJlYW1DZW50ZXI6OnNldFNoYXJlZFN0cmVhbUNlbnRlcigm
Y2VudGVyKTsKKyAgICB9Cit9CisKK3ZvaWQgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjp2YWxpZGF0
ZVJlcXVlc3RDb25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+
IHBycFF1ZXJ5Q2xpZW50LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3Ry
YWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cykKK3sK
KyAgICBSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4gY2xpZW50ID0gcHJwUXVlcnlD
bGllbnQ7CisgICAgCisgICAgQVNTRVJUKGNsaWVudCk7CisgICAgCisgICAgaWYgKGF1ZGlvQ29u
c3RyYWludHMpIHsKKyAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9IHZlcmlmeUNvbnN0cmFp
bnRzKGF1ZGlvQ29uc3RyYWludHMuZ2V0KCkpOworICAgICAgICBpZiAoIWludmFsaWRRdWVyeS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGNsaWVudC0+Y29uc3RyYWludHNJbnZhbGlkKGludmFs
aWRRdWVyeSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgaWYgKHZpZGVvQ29uc3RyYWludHMpIHsKKyAgICAgICAgU3RyaW5nIGludmFsaWRRdWVyeSA9
IHZlcmlmeUNvbnN0cmFpbnRzKHZpZGVvQ29uc3RyYWludHMuZ2V0KCkpOworICAgICAgICBpZiAo
IWludmFsaWRRdWVyeS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGNsaWVudC0+Y29uc3RyYWlu
dHNJbnZhbGlkKGludmFsaWRRdWVyeSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBjbGllbnQtPmNvbnN0cmFpbnRzVmFsaWRhdGVkKCk7Cit9CisKK3ZvaWQg
TW9ja01lZGlhU3RyZWFtQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtQ3JlYXRpb25DbGllbnQ+IHBycFF1ZXJ5Q2xpZW50LCBQYXNzUmVmUHRyPE1lZGlhQ29u
c3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4g
dmlkZW9Db25zdHJhaW50cykKK3sKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVu
dD4gY2xpZW50ID0gcHJwUXVlcnlDbGllbnQ7CisKKyAgICBBU1NFUlQoY2xpZW50KTsKKyAgICAK
KyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPj4gYXVkaW9Tb3VyY2VzOworICAg
IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+PiB2aWRlb1NvdXJjZXM7CisKKyAgICBp
ZiAoYXVkaW9Db25zdHJhaW50cykgeworICAgICAgICBTdHJpbmcgaW52YWxpZFF1ZXJ5ID0gdmVy
aWZ5Q29uc3RyYWludHMoYXVkaW9Db25zdHJhaW50cy5nZXQoKSk7CisgICAgICAgIGlmICghaW52
YWxpZFF1ZXJ5LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgY2xpZW50LT5mYWlsZWRUb0NyZWF0
ZVN0cmVhbVdpdGhDb25zdHJhaW50c0Vycm9yKGludmFsaWRRdWVyeSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoYXVkaW9Db25zdHJhaW50cykgeworICAg
ICAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBhdWRpb1NvdXJjZSA9IE1lZGlhU3Ry
ZWFtU291cmNlOjpjcmVhdGUoZW1wdHlTdHJpbmcoKSwgTWVkaWFTdHJlYW1Tb3VyY2U6OkF1ZGlv
LCAiTW9jayBhdWRpbyBkZXZpY2UiKTsKKyAgICAgICAgICAgIGF1ZGlvU291cmNlLT5zZXRSZWFk
eVN0YXRlKE1lZGlhU3RyZWFtU291cmNlOjpMaXZlKTsKKyAgICAgICAgICAgIGF1ZGlvU291cmNl
cy5hcHBlbmQoYXVkaW9Tb3VyY2UucmVsZWFzZSgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7CisgICAgICAgIFN0cmluZyBpbnZhbGlkUXVlcnkgPSB2
ZXJpZnlDb25zdHJhaW50cyh2aWRlb0NvbnN0cmFpbnRzLmdldCgpKTsKKyAgICAgICAgaWYgKCFp
bnZhbGlkUXVlcnkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBjbGllbnQtPmZhaWxlZFRvQ3Jl
YXRlU3RyZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoaW52YWxpZFF1ZXJ5KTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh2aWRlb0NvbnN0cmFpbnRzKSB7Cisg
ICAgICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IHZpZGVvU291cmNlID0gTWVkaWFT
dHJlYW1Tb3VyY2U6OmNyZWF0ZShlbXB0eVN0cmluZygpLCBNZWRpYVN0cmVhbVNvdXJjZTo6Vmlk
ZW8sICJNb2NrIHZpZGVvIGRldmljZSIpOworICAgICAgICAgICAgdmlkZW9Tb3VyY2UtPnNldFJl
YWR5U3RhdGUoTWVkaWFTdHJlYW1Tb3VyY2U6OkxpdmUpOworICAgICAgICAgICAgdmlkZW9Tb3Vy
Y2VzLmFwcGVuZCh2aWRlb1NvdXJjZS5yZWxlYXNlKCkpOworICAgICAgICB9CisgICAgfQorICAg
IAorICAgIGNsaWVudC0+ZGlkQ3JlYXRlU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6Y3Jl
YXRlKGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKSk7Cit9CisKK2Jvb2wgTW9ja01lZGlhU3Ry
ZWFtQ2VudGVyOjpnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4gcHJwQ2xpZW50KQoreworICAgIFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+IHJlcXVlc3RDbGllbnQgPSBwcnBD
bGllbnQ7CisgICAgVmVjdG9yPFJlZlB0cjxUcmFja1NvdXJjZUluZm8+PiBzb3VyY2VzKDIpOwor
CisgICAgc291cmNlc1swXSA9IFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKGVtcHR5U3RyaW5nKCks
IFRyYWNrU291cmNlSW5mbzo6QXVkaW8sICJNb2NrIGF1ZGlvIGRldmljZSIsIFRyYWNrU291cmNl
SW5mbzo6Tm9uZSk7CisgICAgc291cmNlc1sxXSA9IFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKGVt
cHR5U3RyaW5nKCksIFRyYWNrU291cmNlSW5mbzo6VmlkZW8sICJNb2NrIHZpZGVvIGRldmljZSIs
IFRyYWNrU291cmNlSW5mbzo6RW52aXJvbm1lbnQpOworCisgICAgcmVxdWVzdENsaWVudC0+ZGlk
Q29tcGxldGVSZXF1ZXN0KHNvdXJjZXMpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIE1v
Y2tNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFT
dHJlYW1Tb3VyY2UqIHNvdXJjZSkKK3sKKyAgICBzb3VyY2UtPnNldFJlYWR5U3RhdGUoTWVkaWFT
dHJlYW1Tb3VyY2U6OkxpdmUpOworfQorCitib29sIE1vY2tNZWRpYVN0cmVhbUNlbnRlcjo6ZGlk
QWRkTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopCit7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgTW9ja01lZGlhU3RyZWFtQ2VudGVyOjpkaWRSZW1vdmVNZWRpYVN0cmVh
bVRyYWNrKE1lZGlhU3RyZWFtU291cmNlKikKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciogc3RyZWFtKQoreworICAgIGVuZExvY2FsTWVkaWFTdHJlYW0oc3RyZWFt
KTsKK30KKwordm9pZCBNb2NrTWVkaWFTdHJlYW1DZW50ZXI6OmRpZENyZWF0ZU1lZGlhU3RyZWFt
KE1lZGlhU3RyZWFtRGVzY3JpcHRvciopCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNlbnRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhU3RyZWFtQ2VudGVyLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYVN0cmVhbUNlbnRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIE1vY2tNZWRpYVN0cmVhbUNlbnRlcl9oCisjZGVmaW5lIE1vY2tNZWRpYVN0cmVhbUNl
bnRlcl9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW1DZW50ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2NrTWVkaWFTdHJl
YW1DZW50ZXIgRklOQUwgOiBwdWJsaWMgTWVkaWFTdHJlYW1DZW50ZXIgeworcHVibGljOgorICAg
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyTW9ja01lZGlhU3RyZWFtQ2VudGVyKCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bUNyZWF0aW9uQ2xpZW50PiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0
cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMpOwor
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
Q3JlYXRpb25DbGllbnQ+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3Ry
YWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cyk7Cisg
ICAgdmlydHVhbCBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50PikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtU291cmNlKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGRpZEFkZE1lZGlhU3RyZWFtVHJhY2soTWVkaWFT
dHJlYW1Tb3VyY2UqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZGlkUmVtb3ZlTWVkaWFT
dHJlYW1UcmFjayhNZWRpYVN0cmVhbVNvdXJjZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNj
cmlwdG9yKikgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgTW9ja01lZGlhU3RyZWFtQ2VudGVy
KCkgeyB9Cit9OworCit9CisKKyNlbmRpZiAvLyBNb2NrTWVkaWFTdHJlYW1DZW50ZXJfaAorCisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDE1
NjQ1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTUyLDYgKzE1MiwxMCBAQAogI2luY2x1ZGUgPFFOZXR3b3JrQWNjZXNzTWFuYWdl
cj4KICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJNb2NrTWVk
aWFTdHJlYW1DZW50ZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0yODksNiArMjkzLDEwIEBAIEludGVybmFsczo6SW50
ZXJuYWxzKERvY3VtZW50KiBkb2N1bWVudCkKICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQt
PnBhZ2UoKSkKICAgICAgICAgZG9jdW1lbnQtPnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVy
ZW5jZXMoKS0+c2V0VGVzdGluZ01vZGUodHJ1ZSk7CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorICAgIE1vY2tNZWRpYVN0cmVhbUNlbnRlcjo6cmVnaXN0ZXJNb2NrTWVk
aWFTdHJlYW1DZW50ZXIoKTsKKyNlbmRpZgogfQogCiBEb2N1bWVudCogSW50ZXJuYWxzOjpjb250
ZXh0RG9jdW1lbnQoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQ5NSkKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTMtMDktMjYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW01lZGlhU3RyZWFtXSBtYWtlIE1lZGlhU3RyZWFtIHRlc3RhYmxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE5NjcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiBBZGQgV2ViVXNlck1lZGlhQ2xpZW50LgorCiAyMDEzLTA5LTI1ICBSb2dl
ciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbmRvd3NdIFVucmV2
aWV3ZWQgQnVpbGQgZml4LgpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTY0NTkpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw2ICsx
MSw4IEBACiAJCTA2NUFENUE0MEIwQzMyQzcwMDVBMkIxRCAvKiBXZWJDb250ZXh0TWVudUNsaWVu
dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA2NUFE
NUEyMEIwQzMyQzcwMDVBMkIxRCAvKiBXZWJDb250ZXh0TWVudUNsaWVudC5tbSAqLzsgfTsKIAkJ
MDY2OTNEREMwQkZCQTg1MjAwMjE2MDcyIC8qIFdlYkluc3BlY3RvckNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDY2OTNEREEwQkZCQTg1MjAw
MjE2MDcyIC8qIFdlYkluc3BlY3RvckNsaWVudC5oICovOyB9OwogCQkwNjY5M0RERDBCRkJBODUy
MDAyMTYwNzIgLyogV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDY2OTNEREIwQkZCQTg1MjAwMjE2MDcyIC8qIFdlYklu
c3BlY3RvckNsaWVudC5tbSAqLzsgfTsKKwkJMDcwRjU0OUIxN0YxRTQyQjAwMTY5RTA0IC8qIFdl
YlVzZXJNZWRpYUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDcwRjU0OTkxN0YxRTQyQjAwMTY5RTA0IC8qIFdlYlVzZXJNZWRpYUNsaWVudC5o
ICovOyB9OworCQkwNzBGNTQ5QzE3RjFFNDJCMDAxNjlFMDQgLyogV2ViVXNlck1lZGlhQ2xpZW50
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwRjU0
OUExN0YxRTQyQjAwMTY5RTA0IC8qIFdlYlVzZXJNZWRpYUNsaWVudC5tbSAqLzsgfTsKIAkJMEFC
NzUyMzcwRkEyRTREQjAwRDdDQkIxIC8qIFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tDb250ZXh0
SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEFC
NzUyMzUwRkEyRTREQjAwRDdDQkIxIC8qIFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tDb250ZXh0
SW5mby5oICovOyB9OwogCQkwQUI3NTIzODBGQTJFNERCMDBEN0NCQjEgLyogV2ViTmV0c2NhcGVD
b250YWluZXJDaGVja0NvbnRleHRJbmZvLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEFCNzUyMzYwRkEyRTREQjAwRDdDQkIxIC8qIFdlYk5ldHNjYXBl
Q29udGFpbmVyQ2hlY2tDb250ZXh0SW5mby5tbSAqLzsgfTsKIAkJMEFFQkZGNjMwRjlGQThCRTAw
MEQ0ODZCIC8qIFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tQcml2YXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQUVCRkY2MTBGOUZBOEJFMDAwRDQ4
NkIgLyogV2ViTmV0c2NhcGVDb250YWluZXJDaGVja1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzg2LDYgKzM4OCw4IEBACiAJCTA2
NUFENUEyMEIwQzMyQzcwMDVBMkIxRCAvKiBXZWJDb250ZXh0TWVudUNsaWVudC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudUNsaWVudC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDY2OTNEREEwQkZCQTg1MjAwMjE2MDcy
IC8qIFdlYkluc3BlY3RvckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViSW5zcGVjdG9yQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA2
NjkzRERCMEJGQkE4NTIwMDIxNjA3MiAvKiBXZWJJbnNwZWN0b3JDbGllbnQubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JDbGllbnQubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MEY1NDk5MTdGMUU0MkIwMDE2OUUwNCAvKiBX
ZWJVc2VyTWVkaWFDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
VXNlck1lZGlhQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MEY1NDlB
MTdGMUU0MkIwMDE2OUUwNCAvKiBXZWJVc2VyTWVkaWFDbGllbnQubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJVc2VyTWVkaWFDbGllbnQubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBBQjc1MjM1MEZBMkU0REIwMEQ3Q0JCMSAvKiBXZWJOZXRz
Y2FwZUNvbnRhaW5lckNoZWNrQ29udGV4dEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViTmV0c2NhcGVDb250YWluZXJDaGVja0NvbnRleHRJbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBBQjc1MjM2MEZBMkU0REIwMEQ3Q0JCMSAvKiBXZWJOZXRz
Y2FwZUNvbnRhaW5lckNoZWNrQ29udGV4dEluZm8ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJOZXRzY2FwZUNvbnRhaW5lckNoZWNrQ29udGV4dEluZm8ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBBQ0U5MTcyMTBGRTQ3RTMwMDk2QTQ1RiAv
KiBPcGVuR0wuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBPcGVuR0wuZnJhbWV3b3JrOyBw
YXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yazsgc291cmNl
VHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTEyNzQsNiArMTI3OCw4IEBACiAJCUY1QjM2QjQw
MDI4MURFODcwMTg2MzVDQiAvKiBXZWJDb3JlU3VwcG9ydCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDcwRjU0OTkxN0YxRTQyQjAwMTY5RTA0IC8qIFdl
YlVzZXJNZWRpYUNsaWVudC5oICovLAorCQkJCTA3MEY1NDlBMTdGMUU0MkIwMDE2OUUwNCAvKiBX
ZWJVc2VyTWVkaWFDbGllbnQubW0gKi8sCiAJCQkJQjgyOTU4RDExMzI3MDdEMDAwMEQwRTc5IC8q
IENvcnJlY3Rpb25QYW5lbC5oICovLAogCQkJCUI4Mjk1OEQyMTMyNzA3RDAwMDBEMEU3OSAvKiBD
b3JyZWN0aW9uUGFuZWwubW0gKi8sCiAJCQkJN0MwMUNCODExNzM0MzVDOTAwQzVEODA3IC8qIFBv
cHVwTWVudU1hYy5oICovLApAQCAtMTQyNiw2ICsxNDMyLDcgQEAKIAkJCQlCODI5NThEMzEzMjcw
N0QwMDAwRDBFNzkgLyogQ29ycmVjdGlvblBhbmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTYw
NTE5NDE3NTAyQTVEMDBCQzYyRjUgLyogSGlzdG9yeVByb3BlcnR5TGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTM5ODEwNjgwODI0QkYwMTAwOERGMDM4IC8qIEhJVmlld0FkYXB0ZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTA3MEY1NDlCMTdGMUU0MkIwMDE2OUUwNCAvKiBXZWJVc2VyTWVkaWFD
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDY5MDgyNEJGMDEwMDhERjAzOCAvKiBI
SVdlYlZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOERFRDUwMEVFODhCOEEwMEYyNTAyMiAv
KiBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjVD
RUEwRURERTFGRTAwOEQ4ODNEIC8qIE5ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTg3OSw2ICsxODg2LDcgQEAKIAkJCQkxQ0NGRkQxMzBCMUY4MUYyMDAyRUU5
MjYgLyogT2xkV2ViQXNzZXJ0aW9ucy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MwMUNCODYxNzM0
MzVDOTAwQzVEODA3IC8qIFBvcHVwTWVudU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBMkRC
RUEwMEYyNTFFM0EwMDM2RjhBNiAvKiBQcm94eUluc3RhbmNlLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJMDcwRjU0OUMxN0YxRTQyQjAwMTY5RTA0IC8qIFdlYlVzZXJNZWRpYUNsaWVudC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUUxNjk4MzZDMTEzNDZENTYwMDg5NDExNSAvKiBQcm94eVJ1bnRpbWVP
YmplY3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzAxQ0I4ODE3MzQzNUM5MDBDNUQ4MDcgLyog
U2VhcmNoUG9wdXBNZW51TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VEQTEyREIxNTJDQkU2
ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbSBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2NDk1KQorKysgU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMtMDktMjYg
IEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlh
U3RyZWFtXSBtYWtlIE1lZGlhU3RyZWFtIHRlc3RhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE5NjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNs
aWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGll
bnQubW06IEFkZGVkLgorCisgICAgICAgICogV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5o
OiBEZWNsYXJlIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVJlcXVlc3RGcm9tT3JpZ2luOmxpc3Rl
bmVyOgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3
IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOiBSZWdpc3Rl
ciBXZWJVc2VyTWVkaWFDbGllbnQuCisgICAgICAgICgtW1dlYlZpZXcgX3NldFVzZXJNZWRpYUNs
aWVudDpdKTogTmV3LgorICAgICAgICAoLVtXZWJWaWV3IF91c2VyTWVkaWFDbGllbnRdKTogTmV3
LgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlZpZXdQcml2YXRlLmg6CisKIDIwMTMtMDktMjUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBQYXNzIGEgSlNDOjpWTSYgdG8gSlMgYmluZGluZ3Mgb2JqZWN0IGNyZWF0
aW9uIGZ1bmN0aW9ucywgcmF0aGVyIHRoYW4gYSBKU0M6OkV4ZWNTdGF0ZSoKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVu
dC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
VXNlck1lZGlhQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViVXNlck1lZGlhQ2xpZW50X2gKKyNkZWZpbmUgV2ViVXNlck1lZGlh
Q2xpZW50X2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbXBvcnQgPFdlYkNvcmUv
VXNlck1lZGlhQ2xpZW50Lmg+CisjaW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBVc2VyTWVkaWFDbGllbnQ7CitjbGFzcyBVc2VyTWVkaWFSZXF1
ZXN0OworfQorCitAY2xhc3MgV2ViVmlldzsKKworY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50IEZJ
TkFMIDogcHVibGljIFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudCB7CitwdWJsaWM6CisgICAgV2Vi
VXNlck1lZGlhQ2xpZW50KFdlYlZpZXcqKTsKKyAgICB+V2ViVXNlck1lZGlhQ2xpZW50KCk7CisK
KyAgICAvLyBVc2VyTWVkaWFDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Np
b24oUGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0PikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGNhbmNlbFJlcXVlc3QoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdCopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgT1ZFUlJJREU7CisKK3By
aXZhdGU6CisgICAgV2ViVmlldyogbV93ZWJWaWV3OworfTsKKworI2VuZGlmCisjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJVc2Vy
TWVkaWFDbGllbnQubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbXBvcnQgIldlYkRlbGVnYXRlSW1wbGVtZW50YXRp
b25DYWNoaW5nLmgiCisjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCisjaW1w
b3J0ICJXZWJVSURlbGVnYXRlUHJpdmF0ZS5oIgorI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgi
CisjaW1wb3J0IDxXZWJDb3JlL0Jsb2NrRXhjZXB0aW9ucy5oPgorI2ltcG9ydCA8V2ViQ29yZS9Q
YWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvVXNlck1lZGlhUmVxdWVzdC5oPgorI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4K
KyNpbXBvcnQgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CisjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW50
ZXJmYWNlIFdlYlVzZXJNZWRpYVBvbGljeUxpc3RlbmVyIDogTlNPYmplY3QgPFdlYkFsbG93RGVu
eVBvbGljeUxpc3RlbmVyPgoreworICAgIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBfcmVxdWVz
dDsKK30KKy0gKGlkKWluaXRXaXRoVXNlck1lZGlhUmVxdWVzdDooUGFzc1JlZlB0cjxVc2VyTWVk
aWFSZXF1ZXN0PilyZXF1ZXN0OworLSAodm9pZCljYW5jZWxSZXF1ZXN0OworLSAodm9pZClhbGxv
dzsKKy0gKHZvaWQpZGVueTsKK0BlbmQKKwordHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVc2VyTWVk
aWFSZXF1ZXN0PiwgUmV0YWluUHRyPFdlYlVzZXJNZWRpYVBvbGljeUxpc3RlbmVyPj4gVXNlck1l
ZGlhUmVxdWVzdHNNYXA7CisKK3N0YXRpYyBVc2VyTWVkaWFSZXF1ZXN0c01hcCYgdXNlck1lZGlh
UmVxdWVzdHNNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVXNlck1lZGlhUmVxdWVz
dHNNYXAsIHJlcXVlc3RzLCAoKSk7CisgICAgcmV0dXJuIHJlcXVlc3RzOworfQorCitzdGF0aWMg
dm9pZCBBZGRSZXF1ZXN0VG9NYXAoVXNlck1lZGlhUmVxdWVzdCogcmVxdWVzdCwgUmV0YWluUHRy
PFdlYlVzZXJNZWRpYVBvbGljeUxpc3RlbmVyPiBsaXN0ZW5lcikKK3sKKyAgICB1c2VyTWVkaWFS
ZXF1ZXN0c01hcCgpLnNldChyZXF1ZXN0LCBsaXN0ZW5lcik7Cit9CisKK3N0YXRpYyB2b2lkIFJl
bW92ZVJlcXVlc3RGcm9tTWFwKFVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgdXNl
ck1lZGlhUmVxdWVzdHNNYXAoKS5yZW1vdmUocmVxdWVzdCk7Cit9CisKK1dlYlVzZXJNZWRpYUNs
aWVudDo6V2ViVXNlck1lZGlhQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCisgICAgOiBtX3dlYlZp
ZXcod2ViVmlldykKK3sKK30KKworV2ViVXNlck1lZGlhQ2xpZW50Ojp+V2ViVXNlck1lZGlhQ2xp
ZW50KCkKK3sKK30KKwordm9pZCBXZWJVc2VyTWVkaWFDbGllbnQ6OnBhZ2VEZXN0cm95ZWQoKQor
eworICAgIFVzZXJNZWRpYVJlcXVlc3RzTWFwJiByZXF1ZXN0c01hcCA9IHVzZXJNZWRpYVJlcXVl
c3RzTWFwKCk7CisgICAgZm9yIChVc2VyTWVkaWFSZXF1ZXN0c01hcDo6aXRlcmF0b3IgaXQgPSBy
ZXF1ZXN0c01hcC5iZWdpbigpOyBpdCAhPSByZXF1ZXN0c01hcC5lbmQoKTsgKytpdCkgeworICAg
ICAgICBbaXQtPnZhbHVlIGNhbmNlbFJlcXVlc3RdOworICAgICAgICByZXF1ZXN0c01hcC5yZW1v
dmUoaXQpOworICAgIH0KKworICAgIGRlbGV0ZSB0aGlzOworfQorCit2b2lkIFdlYlVzZXJNZWRp
YUNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBw
cnBSZXF1ZXN0KQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIFVz
ZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QgPSBwcnBSZXF1ZXN0LmdldCgpOworICAgIFNFTCBzZWxl
Y3RvciA9IEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVJlcXVlc3RG
cm9tT3JpZ2luOmxpc3RlbmVyOik7CisgICAgaWYgKCFbW21fd2ViVmlldyBVSURlbGVnYXRlXSBy
ZXNwb25kc1RvU2VsZWN0b3I6c2VsZWN0b3JdKSB7CisgICAgICAgIHJlcXVlc3QtPnVzZXJNZWRp
YUFjY2Vzc0RlbmllZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgV2ViVXNlck1l
ZGlhUG9saWN5TGlzdGVuZXIgKmxpc3RlbmVyID0gW1tXZWJVc2VyTWVkaWFQb2xpY3lMaXN0ZW5l
ciBhbGxvY10gaW5pdFdpdGhVc2VyTWVkaWFSZXF1ZXN0OnJlcXVlc3RdOworICAgIFdlYlNlY3Vy
aXR5T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdp
dGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46cmVxdWVzdC0+c2VjdXJpdHlPcmlnaW4oKV07CisKKyAg
ICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIHNlbGVjdG9yLCB3ZWJPcmlnaW4sIGxpc3RlbmVy
KTsKKyAgICBBZGRSZXF1ZXN0VG9NYXAocmVxdWVzdCwgbGlzdGVuZXIpOworCisgICAgW3dlYk9y
aWdpbiByZWxlYXNlXTsKKyAgICBbbGlzdGVuZXIgcmVsZWFzZV07CisKKyAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TOworfQorCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVudDo6Y2FuY2VsUmVx
dWVzdChVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIFVzZXJNZWRpYVJlcXVlc3Rz
TWFwOjppdGVyYXRvciBpdCA9IHVzZXJNZWRpYVJlcXVlc3RzTWFwKCkuZmluZChyZXF1ZXN0KTsK
KyAgICBpZiAoaXQgPT0gdXNlck1lZGlhUmVxdWVzdHNNYXAoKS5lbmQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgW2l0LT52YWx1ZSBjYW5jZWxSZXF1ZXN0XTsKKyAgICB1c2VyTWVkaWFSZXF1
ZXN0c01hcCgpLnJlbW92ZShpdCk7Cit9CisKKworQGltcGxlbWVudGF0aW9uIFdlYlVzZXJNZWRp
YVBvbGljeUxpc3RlbmVyCisKKy0gKGlkKWluaXRXaXRoVXNlck1lZGlhUmVxdWVzdDooUGFzc1Jl
ZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PilyZXF1ZXN0Cit7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIF9yZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICByZXR1cm4gc2VsZjsKKyNlbmRpZgorfQor
CistICh2b2lkKWNhbmNlbFJlcXVlc3QKK3sKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAg
IGlmICghX3JlcXVlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIF9yZXF1ZXN0ID0gMDsKKyNl
bmRpZgorICAgIAorfQorCistICh2b2lkKWFsbG93Cit7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKyAgICBpZiAoIV9yZXF1ZXN0KQorICAgICAgICByZXR1cm47CisKKyAgICBfcmVxdWVzdC0+
dXNlck1lZGlhQWNjZXNzR3JhbnRlZCgpOworICAgIFJlbW92ZVJlcXVlc3RGcm9tTWFwKF9yZXF1
ZXN0LmdldCgpKTsKKyNlbmRpZgorfQorCistICh2b2lkKWRlbnkKK3sKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorICAgIGlmICghX3JlcXVlc3QpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBfcmVxdWVzdC0+dXNlck1lZGlhQWNjZXNzRGVuaWVkKCk7CisgICAgUmVtb3ZlUmVxdWVzdEZy
b21NYXAoX3JlcXVlc3QuZ2V0KCkpOworI2VuZGlmCit9CisKK0BlbmQKKyNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAko
cmV2aXNpb24gMTU2NDU5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVn
YXRlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjYsNiArMjI2LDggQEAgQGludGVyZmFj
ZSBOU09iamVjdCAoV2ViVUlEZWxlZ2F0ZVByaXZhdAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyOihp
ZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4pbGlzdGVuZXI7CiAtICh2b2lkKXdlYlZpZXc6
KFdlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblJlcXVlc3RGcm9t
T3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBsaXN0ZW5lcjooaWQ8V2ViQWxsb3dE
ZW55UG9saWN5TGlzdGVuZXI+KWxpc3RlbmVyOwogCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcg
Kil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVJlcXVlc3RGcm9tT3JpZ2luOihXZWJT
ZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBsaXN0ZW5lcjooaWQ8V2ViQWxsb3dEZW55UG9saWN5TGlz
dGVuZXI+KWxpc3RlbmVyOworCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZWxl
bWVudERpZEZvY3VzTm9kZTooRE9NTm9kZSAqKW5vZGU7CiAtICh2b2lkKXdlYlZpZXc6KFdlYlZp
ZXcgKilzZW5kZXIgZWxlbWVudERpZEJsdXJOb2RlOihET01Ob2RlICopbm9kZTsKIApJbmRleDog
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTU2NDU5KQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgs
NiArMTA4LDcgQEAKICNpbXBvcnQgIldlYlRleHRJdGVyYXRvci5oIgogI2ltcG9ydCAiV2ViVUlE
ZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCIKKyNpbXBvcnQgIldl
YlVzZXJNZWRpYUNsaWVudC5oIgogI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ0ZTZXQuaD4KICNp
bXBvcnQgPEZvdW5kYXRpb24vTlNVUkxDb25uZWN0aW9uLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9BUElDYXN0Lmg+CkBAIC03NjYsNiArNzY3LDkgQEAgLSAodm9pZClfY29tbW9uSW5pdGlh
bGl6YXRpb25XaXRoRnJhbWVOYQogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAgICAg
V2ViQ29yZTo6cHJvdmlkZURldmljZU9yaWVudGF0aW9uVG8oX3ByaXZhdGUtPnBhZ2UsIG5ldyBX
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudChzZWxmKSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorICAgIFdlYkNvcmU6OnByb3ZpZGVVc2VyTWVkaWFUbyhfcHJpdmF0ZS0+cGFn
ZSwgbmV3IFdlYlVzZXJNZWRpYUNsaWVudChzZWxmKSk7CisjZW5kaWYKIAogICAgIF9wcml2YXRl
LT5wYWdlLT5zZXRDYW5TdGFydE1lZGlhKFtzZWxmIHdpbmRvd10pOwogICAgIF9wcml2YXRlLT5w
YWdlLT5zZXR0aW5ncygpLnNldExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aChbW3NlbGYgcHJlZmVy
ZW5jZXNdIF9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhdKTsKQEAgLTY2NTUsNiArNjY1OSwyNCBA
QCAtIChpZDxXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyPilfZGV2CiAKIEBlbmQKIAorI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCitAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmlld1Vz
ZXJNZWRpYSkKKworLSAodm9pZClfc2V0VXNlck1lZGlhQ2xpZW50OihpZDxXZWJVc2VyTWVkaWFD
bGllbnQ+KXVzZXJNZWRpYUNsaWVudAoreworICAgIGlmIChfcHJpdmF0ZSkKKyAgICAgICAgX3By
aXZhdGUtPm1fdXNlck1lZGlhQ2xpZW50ID0gdXNlck1lZGlhQ2xpZW50OworfQorCistIChpZDxX
ZWJVc2VyTWVkaWFDbGllbnQ+KV91c2VyTWVkaWFDbGllbnQKK3sKKyAgICBpZiAoX3ByaXZhdGUp
CisgICAgICAgIHJldHVybiBfcHJpdmF0ZS0+bV91c2VyTWVkaWFDbGllbnQ7CisgICAgcmV0dXJu
IG5pbDsKK30KK0BlbmQKKyNlbmRpZgorCiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmll
d0dlb2xvY2F0aW9uKQogCiAtICh2b2lkKV9zZXRHZW9sb2NhdGlvblByb3ZpZGVyOihpZDxXZWJH
ZW9sb2NhdGlvblByb3ZpZGVyPilnZW9sb2NhdGlvblByb3ZpZGVyCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCShyZXZpc2lvbiAxNTY0NTkpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYg
KzU5LDkgQEAgY2xhc3MgUGFnZTsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiBAY2xhc3Mg
V2ViRnVsbFNjcmVlbkNvbnRyb2xsZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorQHByb3RvY29sIFdlYlVzZXJNZWRpYUNsaWVudDsKKyNlbmRpZgogCiBleHRlcm4gQk9PTCBh
cHBsaWNhdGlvbklzVGVybWluYXRpbmc7CiBleHRlcm4gaW50IHBsdWdpbkRhdGFiYXNlQ2xpZW50
Q291bnQ7CkBAIC0yMDgsNiArMjExLDEwIEBAIEBpbnRlcmZhY2UgV2ViVmlld1ByaXZhdGUgOiBO
U09iamVjdCB7CiAgICAgaWQ8V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcj4gbV9kZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyOwogICAgIGlkPFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyPiBfbm90
aWZpY2F0aW9uUHJvdmlkZXI7CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIGlkPFdl
YlVzZXJNZWRpYUNsaWVudD4gbV91c2VyTWVkaWFDbGllbnQ7CisjZW5kaWYKKwogICAgIFJlZlB0
cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gX2dsb2JhbEhpc3RvcnlJdGVtOwogCiAgICAgQk9PTCBp
bnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDE1NjQ1OSkKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NiArNDcsNyBAQAogCiBAcHJvdG9jb2wgV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcjsKIEBw
cm90b2NvbCBXZWJGb3JtRGVsZWdhdGU7CitAcHJvdG9jb2wgV2ViVXNlck1lZGlhQ2xpZW50Owog
CiBleHRlcm4gTlNTdHJpbmcgKl9XZWJDYW5Hb0JhY2tLZXk7CiBleHRlcm4gTlNTdHJpbmcgKl9X
ZWJDYW5Hb0ZvcndhcmRLZXk7CkBAIC03MTYsNiArNzE3LDExIEBAIEBpbnRlcmZhY2UgV2ViVmll
dyAoV2ViVmlld0RldmljZU9yaWVudGEKIC0gKGlkPFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlk
ZXI+KV9kZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyOwogQGVuZAogCitAaW50ZXJmYWNlIFdlYlZp
ZXcgKFdlYlZpZXdVc2VyTWVkaWEpCistICh2b2lkKV9zZXRVc2VyTWVkaWFDbGllbnQ6KGlkPFdl
YlVzZXJNZWRpYUNsaWVudD4pdXNlck1lZGlhQ2xpZW50OworLSAoaWQ8V2ViVXNlck1lZGlhQ2xp
ZW50PilfdXNlck1lZGlhQ2xpZW50OworQGVuZAorCiBAcHJvdG9jb2wgV2ViR2VvbG9jYXRpb25Q
cm92aWRlciA8TlNPYmplY3Q+CiAtICh2b2lkKXJlZ2lzdGVyV2ViVmlldzooV2ViVmlldyAqKXdl
YlZpZXc7CiAtICh2b2lkKXVucmVnaXN0ZXJXZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldzsKSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDE1NjQ5NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE0IEBACisyMDEzLTA5LTI2ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29t
PgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0gbWFrZSBNZWRpYVN0cmVhbSB0ZXN0YWJsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxOTY3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSB3ZWJWaWV3OmRl
Y2lkZVBvbGljeUZvclVzZXJNZWRpYVJlcXVlc3RGcm9tT3JpZ2luOmxpc3RlbmVyOl0pOiBBZGQg
YSB2ZXJ5IHBlcm1pc3NpdmUKKyAgICAgICAgICAgIHVzZXIgbWVkaWEgcmVxdWVzdCBwb2xpY3kg
ZGVsZWdhdGUuCisKIDIwMTMtMDktMjYgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgogCiAgICAgICAgIGJ1aWxkLXdlYmtpdCAtLWluc3BlY3Rvci1mcm9udGVuZCBzaG91
bGQgY29weSBXZWJJbnNwZWN0b3JVSSBmaWxlcwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1VJRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1VJRGVsZWdhdGUubW0JKHJldmlzaW9uIDE1NjQ1OSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNiArMzEyLDEyIEBAIC0g
KHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGVjaWQKICAgICB9CiB9CiAKKy0gKHZv
aWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUmVx
dWVzdEZyb21PcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luIGxpc3RlbmVyOihpZDxX
ZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4pbGlzdGVuZXIKK3sKKyAgICAvLyBBbGxvdyBhbGwg
dXNlciBtZWRpYSByZXF1ZXN0cyBmb3Igbm93LgorICAgIFtsaXN0ZW5lciBhbGxvd107Cit9CisK
IC0gKHZvaWQpZGVhbGxvYwogewogICAgIFtkcmFnZ2luZ0luZm8gcmVsZWFzZV07CkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNTY0OTUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyNSBAQAorMjAxMy0wOS0yNiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJs
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1dIG1ha2UgTWVkaWFTdHJlYW0g
dGVzdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMTk2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1hZGQtcmVtb3ZlLXRyYWNrcy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1hZGQtcmVtb3Zl
LXRyYWNrcy5odG1sOiBNYWtlIHRoZSB0ZXN0IHJlc3VsdHMgbW9yZSB1bmRlcnN0YW5kYWJsZQor
ICAgICAgICAgICAgdG8gc2ltcGxpZnkgZGVidWdnaW5nIGZhaWx1cmVzLgorICAgICAgICAqIGZh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tb25lbmRlZC1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1vbmVuZGVkLmh0bWw6IERpdHRvLiBGaXgg
YSB0ZXN0IGVycm9yOiBzdG9wcGluZyBzdHJlYW0gQSBzaG91bGQKKyAgICAgICAgICAgIG5vdCBz
dG9wIHN0cmVhbSBCIGV2ZW4gd2hlbiBpdCB3YXMgY3JlYXRlZCBmcm9tIHN0cmVhbSBBLgorICAg
ICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0cnVjdG9yLmh0
bWw6IE1ha2UgdGhlIHRlc3QgcmVzdWx0cyBtb3JlIHVuZGVyc3RhbmRhYmxlLiBGaXggYQorICAg
ICAgICAgICAgbG9naWMgZXJyb3JzOiB3ZWJraXRNZWRpYVN0cmVhbSBpcyBhbiBvYmplY3QsIG5v
dCBhIGZ1bmN0aW9uLiBKU0MgZG9lcyBub3Qgc3VwcG9ydCAKKyAgICAgICAgICAgIG9iamVjdC5j
b25zdHJ1Y3Rvci5uYW1lLCB1c2Ugb2JqZWN0LmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkgaW5zdGVh
ZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC1jb25z
dHJ1Y3Rvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrRXZlbnQtY29uc3RydWN0b3IuaHRtbDogVXBkYXRlIG5vdyB0aGF0IGdldFVzZXJN
ZWRpYSgpIHdvcmtzLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vYXJndW1lbnQtdHlwZXMt
ZXhwZWN0ZWQudHh0OiBVcGRhdGVkIHdpdGggIkZhaWxpbmciIHJlc3VsdHMgYmVjYXVzZSB0aGUg
Y29ycmVjdCAKKyAgICAgICAgICAgIGJlaGF2aW9yIGlzIHVua25vd24uIFRoZSBzcGVjIHNheXMg
InRoZSBzeW50YXggZm9yIGdldFVzZXJNZWRpYSgpIGlzIHN0aWxsIHVuZGVyIGRpc2N1c3Npb24i
LgorCiAyMDEzLTA5LTI2ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIExheW91dCBUZXN0IHBsdWdpbnMvYWNjZXNzLWFmdGVyLXBhZ2UtZGVzdHJveWVkLmh0
bWwgaXMgZmxha3kKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0tYWRkLXJlbW92ZS10cmFja3MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLXJlbW92ZS10cmFja3MtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxNTY0NTkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLWFkZC1yZW1vdmUtdHJhY2tzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNywyMSArNyw0NSBAQCBQQVNTIHN0cmVhbTEuZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgg
aXMgCiBQQVNTIHN0cmVhbTEuZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyBzdHJl
YW0yLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtMi5nZXRWaWRlb1Ry
YWNrcygpLmxlbmd0aCBpcyAxCisKKyoqKiByZW1vdmUgYW4gYXVkaW8gdHJhY2sKIFBBU1Mgc3Ry
ZWFtMS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAwCiBQQVNTIHN0cmVhbTEuZ2V0VHJhY2tC
eUlkKGF1ZGlvVHJhY2suaWQpIGlzIG51bGwKKworKioqIHJlbW92ZSBhIG5vbi1leGlzdGVudCAo
YWxyZWFkeSByZW1vdmVkKSB0cmFjayAoc2hvdWxkIG5vdCB0aHJvdykKKworKioqIGFkZCB0aGUg
dHJhY2sgYmFjayB0byB0aGUgc3RyZWFtCisKKyoqKiByZW1vdmUgYSB2aWRlbyB0cmFjawogUEFT
UyBzdHJlYW0xLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDAKIFBBU1Mgc3RyZWFtMS5nZXRU
cmFja0J5SWQodmlkZW9UcmFjay5pZCkgaXMgbnVsbAorCisqKiogcmVtb3ZlIGEgbm9uLWV4aXN0
ZW50IChhbHJlYWR5IHJlbW92ZWQpIHRyYWNrIChzaG91bGQgbm90IHRocm93KQorCisqKiogYWRk
IHRoZSB0cmFjayBiYWNrIHRvIHRoZSBzdHJlYW0KKworKioqIHZlcmlmeSBhZGRlZCB0cmFja3MK
IFBBU1Mgc3RyZWFtMS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIHN0cmVhbTEu
Z2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyBzdHJlYW0xLmdldEF1ZGlvVHJhY2tz
KClbMF0ua2luZCBpcyBhdWRpb1RyYWNrLmtpbmQKIFBBU1Mgc3RyZWFtMS5nZXRBdWRpb1RyYWNr
cygpWzBdLmxhYmVsIGlzIGF1ZGlvVHJhY2subGFiZWwKIFBBU1Mgc3RyZWFtMS5nZXRWaWRlb1Ry
YWNrcygpWzBdLmtpbmQgaXMgdmlkZW9UcmFjay5raW5kCiBQQVNTIHN0cmVhbTEuZ2V0VmlkZW9U
cmFja3MoKVswXS5sYWJlbCBpcyB2aWRlb1RyYWNrLmxhYmVsCisKKyoqKiB0cnkgYWRkaW5nIGEg
c3RyZWFtJ3Mgb3duIHRyYWNrcyBhZ2FpbiAobm90aGluZyBzaG91bGQgaGFwcGVuKQogUEFTUyBz
dHJlYW0xLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtMS5nZXRWaWRl
b1RyYWNrcygpLmxlbmd0aCBpcyAxCisKKyoqKiBhZGQgdHJhY2tzIGZyb20gYW5vdGhlciBzdHJl
YW0KKworKioqIHZlcmlmeSBhZGRlZCB0cmFja3MKIFBBU1Mgc3RyZWFtMS5nZXRBdWRpb1RyYWNr
cygpLmxlbmd0aCBpcyAyCiBQQVNTIHN0cmVhbTEuZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMg
MgorCisqKiogYWZ0ZXIgYWxsIHRyYWNrcyBoYXZlIGJlZW4gcmVtb3ZlZCwgc3RyZWFtLmVuZGVk
IHNob3VsZCByZXR1cm4gdHJ1ZQogUEFTUyBzdHJlYW0yLmVuZGVkIGlzIHRydWUKKworKioqIGl0
IHNob3VsZCBiZSBpbXBvc3NpYmxlIHRvIGFkZCBhIHRyYWNrIGFmdGVyIHRoZSBzdHJlYW0gaGFz
IGJlZW4gc3RvcHBlZAogUEFTUyBzdHJlYW0xLmFkZFRyYWNrKGF1ZGlvVHJhY2spIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSW52YWxpZFN0YXRlRXJyb3I6IERPTSBFeGNlcHRpb24gMTEuCiBQQVNT
IHN0cmVhbTEucmVtb3ZlVHJhY2soYXVkaW9UcmFjaykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJ
bnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0tYWRkLXJlbW92ZS10cmFja3MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWFkZC1yZW1vdmUtdHJhY2tzLmh0bWwJKHJldmlzaW9u
IDE1NjQ1OSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRk
LXJlbW92ZS10cmFja3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNjIsNTggKzYyLDYxIEBAIGZ1
bmN0aW9uIGdvdFN0cmVhbTIocykgewogICAgIHN0cmVhbTEub25hZGR0cmFjayA9IHNob3VsZE5v
dEZpcmU7CiAgICAgc3RyZWFtMS5vbnJlbW92ZXRyYWNrID0gc2hvdWxkTm90RmlyZTsKIAotICAg
IC8vIHJlbW92ZSBhIHRyYWNrIG9mIGVhY2gga2luZAogICAgIGF1ZGlvVHJhY2sgPSBzdHJlYW0x
LmdldEF1ZGlvVHJhY2tzKClbMF07CiAgICAgdmlkZW9UcmFjayA9IHN0cmVhbTEuZ2V0VmlkZW9U
cmFja3MoKVswXTsKIAorICAgIGRlYnVnKCI8YnI+KioqIHJlbW92ZSBhbiBhdWRpbyB0cmFjayIp
OwogICAgIHRyeVJlbW92ZVRyYWNrKHN0cmVhbTEsIGF1ZGlvVHJhY2spOwotICAgIC8vIHZlcmlm
eSByZW1vdmVkIHRyYWNrcwogICAgIHNob3VsZEJlKCdzdHJlYW0xLmdldEF1ZGlvVHJhY2tzKCku
bGVuZ3RoJywgJzAnKTsKICAgICBzaG91bGRCZU51bGwoJ3N0cmVhbTEuZ2V0VHJhY2tCeUlkKGF1
ZGlvVHJhY2suaWQpJyk7Ci0gICAgLy8gcmVtb3ZlIGEgbm9uLWV4aXN0ZW50IChhbHJlYWR5IHJl
bW92ZWQpIHRyYWNrIChzaG91bGQgbm90IHRocm93KQorCisgICAgZGVidWcoIjxicj4qKiogcmVt
b3ZlIGEgbm9uLWV4aXN0ZW50IChhbHJlYWR5IHJlbW92ZWQpIHRyYWNrIChzaG91bGQgbm90IHRo
cm93KSIpOwogICAgIHRyeVJlbW92ZVRyYWNrKHN0cmVhbTEsIGF1ZGlvVHJhY2spOwotICAgIC8v
IChyZS0pYWRkIHRyYWNrcworCisgICAgZGVidWcoIjxicj4qKiogYWRkIHRoZSB0cmFjayBiYWNr
IHRvIHRoZSBzdHJlYW0iKTsKICAgICB0cnlBZGRUcmFjayhzdHJlYW0xLCBhdWRpb1RyYWNrKTsK
IAorICAgIGRlYnVnKCI8YnI+KioqIHJlbW92ZSBhIHZpZGVvIHRyYWNrIik7CiAgICAgdHJ5UmVt
b3ZlVHJhY2soc3RyZWFtMSwgdmlkZW9UcmFjayk7CiAgICAgc2hvdWxkQmUoJ3N0cmVhbTEuZ2V0
VmlkZW9UcmFja3MoKS5sZW5ndGgnLCAnMCcpOwogICAgIHNob3VsZEJlTnVsbCgnc3RyZWFtMS5n
ZXRUcmFja0J5SWQodmlkZW9UcmFjay5pZCknKTsKKworICAgIGRlYnVnKCI8YnI+KioqIHJlbW92
ZSBhIG5vbi1leGlzdGVudCAoYWxyZWFkeSByZW1vdmVkKSB0cmFjayAoc2hvdWxkIG5vdCB0aHJv
dykiKTsKICAgICB0cnlSZW1vdmVUcmFjayhzdHJlYW0xLCB2aWRlb1RyYWNrKTsKKworICAgIGRl
YnVnKCI8YnI+KioqIGFkZCB0aGUgdHJhY2sgYmFjayB0byB0aGUgc3RyZWFtIik7CiAgICAgdHJ5
QWRkVHJhY2soc3RyZWFtMSwgdmlkZW9UcmFjayk7CiAKLSAgICAvLyB2ZXJpZnkgYWRkZWQgdHJh
Y2tzCisgICAgZGVidWcoIjxicj4qKiogdmVyaWZ5IGFkZGVkIHRyYWNrcyIpOwogICAgIHNob3Vs
ZEJlKCdzdHJlYW0xLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKICAgICBzaG91bGRC
ZSgnc3RyZWFtMS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7Ci0KLSAgICAvLyB2ZXJp
ZnkgdGhhdCBraW5kIGFuZCBsYWJlbCBpcyBwcmVzZXJ2ZWQKICAgICBzaG91bGRCZSgnc3RyZWFt
MS5nZXRBdWRpb1RyYWNrcygpWzBdLmtpbmQnLCAnYXVkaW9UcmFjay5raW5kJyk7CiAgICAgc2hv
dWxkQmUoJ3N0cmVhbTEuZ2V0QXVkaW9UcmFja3MoKVswXS5sYWJlbCcsICdhdWRpb1RyYWNrLmxh
YmVsJyk7CiAgICAgc2hvdWxkQmUoJ3N0cmVhbTEuZ2V0VmlkZW9UcmFja3MoKVswXS5raW5kJywg
J3ZpZGVvVHJhY2sua2luZCcpOwogICAgIHNob3VsZEJlKCdzdHJlYW0xLmdldFZpZGVvVHJhY2tz
KClbMF0ubGFiZWwnLCAndmlkZW9UcmFjay5sYWJlbCcpOwogCi0gICAgLy8gdHJ5IGFkZGluZyBz
dHJlYW0xJ3Mgb3duIHRyYWNrcworICAgIGRlYnVnKCI8YnI+KioqIHRyeSBhZGRpbmcgYSBzdHJl
YW0ncyBvd24gdHJhY2tzIGFnYWluIChub3RoaW5nIHNob3VsZCBoYXBwZW4pIik7CiAgICAgdHJ5
QWRkVHJhY2soc3RyZWFtMSwgc3RyZWFtMS5nZXRBdWRpb1RyYWNrcygpWzBdKTsKICAgICB0cnlB
ZGRUcmFjayhzdHJlYW0xLCBzdHJlYW0xLmdldFZpZGVvVHJhY2tzKClbMF0pOwotCi0gICAgLy8g
dmVyaWZ5IHRoYXQgbm90aGluZyBoYXMgY2hhbmdlZAogICAgIHNob3VsZEJlKCdzdHJlYW0xLmdl
dEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKICAgICBzaG91bGRCZSgnc3RyZWFtMS5nZXRW
aWRlb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CiAKLSAgICAvLyBhZGQgbmV3IHRyYWNrcyAoZnJv
bSBzdHJlYW0yKQorICAgIGRlYnVnKCI8YnI+KioqIGFkZCB0cmFja3MgZnJvbSBhbm90aGVyIHN0
cmVhbSIpOwogICAgIHRyeUFkZFRyYWNrKHN0cmVhbTEsIHN0cmVhbTIuZ2V0QXVkaW9UcmFja3Mo
KVswXSk7CiAgICAgdHJ5QWRkVHJhY2soc3RyZWFtMSwgc3RyZWFtMi5nZXRWaWRlb1RyYWNrcygp
WzBdKTsKIAotICAgIC8vIHZlcmlmeSBhZGRlZCB0cmFja3MKKyAgICBkZWJ1ZygiPGJyPioqKiB2
ZXJpZnkgYWRkZWQgdHJhY2tzIik7CiAgICAgc2hvdWxkQmUoJ3N0cmVhbTEuZ2V0QXVkaW9UcmFj
a3MoKS5sZW5ndGgnLCAnMicpOwogICAgIHNob3VsZEJlKCdzdHJlYW0xLmdldFZpZGVvVHJhY2tz
KCkubGVuZ3RoJywgJzInKTsKIAotICAgIC8vIHdoZW4gYWxsIHRyYWNrcyBoYXZlIGJlZW4gcmVt
b3ZlZCwgc3RyZWFtLmVuZGVkIHNob3VsZCByZXR1cm4gdHJ1ZS4KKyAgICBkZWJ1ZygiPGJyPioq
KiBhZnRlciBhbGwgdHJhY2tzIGhhdmUgYmVlbiByZW1vdmVkLCBzdHJlYW0uZW5kZWQgc2hvdWxk
IHJldHVybiB0cnVlIik7CiAgICAgdHJ5UmVtb3ZlVHJhY2soc3RyZWFtMiwgc3RyZWFtMi5nZXRB
dWRpb1RyYWNrcygpWzBdKTsKICAgICB0cnlSZW1vdmVUcmFjayhzdHJlYW0yLCBzdHJlYW0yLmdl
dFZpZGVvVHJhY2tzKClbMF0pOwogICAgIHNob3VsZEJlVHJ1ZSgnc3RyZWFtMi5lbmRlZCcpOwog
CiAgICAgc3RyZWFtMS5zdG9wKCk7CiAKKyAgICBkZWJ1ZygiPGJyPioqKiBpdCBzaG91bGQgYmUg
aW1wb3NzaWJsZSB0byBhZGQgYSB0cmFjayBhZnRlciB0aGUgc3RyZWFtIGhhcyBiZWVuIHN0b3Bw
ZWQiKTsKICAgICBzaG91bGRUaHJvdygnc3RyZWFtMS5hZGRUcmFjayhhdWRpb1RyYWNrKScsICci
RXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExIicpOwogICAgIHNob3Vs
ZFRocm93KCdzdHJlYW0xLnJlbW92ZVRyYWNrKGF1ZGlvVHJhY2spJywgJyJFcnJvcjogSW52YWxp
ZFN0YXRlRXJyb3I6IERPTSBFeGNlcHRpb24gMTEiJyk7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tb25lbmRlZC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1vbmVuZGVkLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NDU5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS1vbmVuZGVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MywxMSArMywxNyBAQCBUZXN0cyBNZWRpYVN0cmVhbTo6b25lbmRlZCBjYWxsYmFjay4KIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCisKK1BBU1MgZ290U3RyZWFtIHdhcyBjYWxsZWQuCiBQ
QVNTIHN0cmVhbS5lbmRlZCBpcyBmYWxzZQorCiBQQVNTIHN0cmVhbUVuZGVkIHdhcyBjYWxsZWQu
CiBQQVNTIHN0cmVhbS5lbmRlZCBpcyB0cnVlCisKK1BBU1MgZ290U3RyZWFtMiB3YXMgY2FsbGVk
LgogUEFTUyBzdHJlYW0uZW5kZWQgaXMgZmFsc2UKLVBBU1Mgc3RyZWFtRW5kZWQgd2FzIGNhbGxl
ZC4KKworUEFTUyBzdHJlYW1FbmRlZDIgd2FzIGNhbGxlZC4KIFBBU1Mgc3RyZWFtLmVuZGVkIGlz
IHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1vbmVuZGVkLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1vbmVuZGVkLmh0bWwJ
KHJldmlzaW9uIDE1NjQ1OSkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0tb25lbmRlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNyArMjYsMjAgQEAgZnVu
Y3Rpb24gZ2V0VXNlck1lZGlhKGRpY3Rpb25hcnksIGNhbGxiYQogdmFyIHN0cmVhbTsKIAogZnVu
Y3Rpb24gc3RyZWFtRW5kZWQyKCkgewotICAgIHRlc3RQYXNzZWQoJ3N0cmVhbUVuZGVkIHdhcyBj
YWxsZWQuJyk7CisgICAgZGVidWcoIiIpOworICAgIHRlc3RQYXNzZWQoJ3N0cmVhbUVuZGVkMiB3
YXMgY2FsbGVkLicpOwogICAgIHNob3VsZEJlVHJ1ZSgnc3RyZWFtLmVuZGVkJyk7CiAgICAgZmlu
aXNoSlNUZXN0KCk7CiB9CiAKIGZ1bmN0aW9uIGdvdFN0cmVhbTIocykgeworICAgIGRlYnVnKCIi
KTsKKyAgICB0ZXN0UGFzc2VkKCdnb3RTdHJlYW0yIHdhcyBjYWxsZWQuJyk7CiAgICAgc3RyZWFt
ID0gbmV3IHdlYmtpdE1lZGlhU3RyZWFtKHMpOwogICAgIHNob3VsZEJlRmFsc2UoJ3N0cmVhbS5l
bmRlZCcpOwogICAgIHRyeSB7CiAgICAgICAgIHN0cmVhbS5vbmVuZGVkID0gc3RyZWFtRW5kZWQy
OwotICAgICAgICBzLnN0b3AoKTsKKyAgICAgICAgc3RyZWFtLnN0b3AoKTsKICAgICB9IGNhdGNo
IChlKSB7CiAgICAgICAgIHRlc3RGYWlsZWQoJ01lZGlhU3RyZWFtIHRocmV3IGV4Y2VwdGlvbiA6
JyArIGUpOwogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKQEAgLTQ0LDYgKzQ3LDcgQEAgZnVuY3Rp
b24gZ290U3RyZWFtMihzKSB7CiB9CiAKIGZ1bmN0aW9uIHN0cmVhbUVuZGVkKCkgeworICAgIGRl
YnVnKCIiKTsKICAgICB0ZXN0UGFzc2VkKCdzdHJlYW1FbmRlZCB3YXMgY2FsbGVkLicpOwogICAg
IHNob3VsZEJlVHJ1ZSgnc3RyZWFtLmVuZGVkJyk7CiAKQEAgLTUxLDYgKzU1LDggQEAgZnVuY3Rp
b24gc3RyZWFtRW5kZWQoKSB7CiB9CiAKIGZ1bmN0aW9uIGdvdFN0cmVhbShzKSB7CisgICAgZGVi
dWcoIiIpOworICAgIHRlc3RQYXNzZWQoJ2dvdFN0cmVhbSB3YXMgY2FsbGVkLicpOwogICAgIHN0
cmVhbSA9IHM7CiAgICAgc2hvdWxkQmVGYWxzZSgnc3RyZWFtLmVuZGVkJyk7CiAgICAgdHJ5IHsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rv
ci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbUNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTU2NDU5KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0cnVjdG9yLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAgT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogUEFTUyBHb3QgbG9jYWwgc3RyZWFtLgogUEFTUyBs
b2NhbFN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIGxvY2FsU3RyZWFt
LmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEKLVBBU1MgdHlwZW9mIHdlYmtpdE1lZGlhU3Ry
ZWFtID09PSAnZnVuY3Rpb24nIGlzIHRydWUKK1BBU1MgdHlwZW9mIHdlYmtpdE1lZGlhU3RyZWFt
ID09PSAnb2JqZWN0JyBpcyB0cnVlCiBQQVNTIGNoZWNrSWRBdHRyaWJ1dGUobG9jYWxTdHJlYW0u
aWQpIGlzIHRydWUKIFBBU1MgbmV3IHdlYmtpdE1lZGlhU3RyZWFtKGRvY3VtZW50KSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyBuZXcgd2Via2l0TWVkaWFTdHJl
YW0oW2RvY3VtZW50XSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogSW52YWxpZCBBcnJheSBl
bGVtZW50IHR5cGUuCkBAIC0xNSw4MCArMTUsMTA0IEBAIFBBU1MgbmV3IHdlYmtpdE1lZGlhU3Ry
ZWFtKFtudWxsXSkgdGhyZXcKIFBBU1MgbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFt1bmRlZmluZWRd
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBJbnZhbGlkIEFycmF5IGVsZW1lbnQgdHlwZS4K
IFBBU1MgbmV3IHdlYmtpdE1lZGlhU3RyZWFtKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IFR5cGUgZXJyb3IuCiBQQVNTIG5ldyB3ZWJraXRNZWRpYVN0cmVhbSh1bmRlZmluZWQpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCisKKyoqKiB0ZXN0aW5nICJuZXcg
d2Via2l0TWVkaWFTdHJlYW0oKSIKIFBBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCi1QQVNTIFtvYmpl
Y3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgotUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBp
cyBkZWZpbmVkLgotUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJl
YW0nCitQQVNTIFtvYmplY3Qgd2Via2l0TWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgorUEFTUyBb
b2JqZWN0IHdlYmtpdE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgorUEFTUyBuZXdTdHJlYW0uY29u
c3RydWN0b3IudG9TdHJpbmcoKSBpcyAnW29iamVjdCB3ZWJraXRNZWRpYVN0cmVhbUNvbnN0cnVj
dG9yXScKIFBBU1MgbmV3U3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIG5BdWRpbwog
UEFTUyBuZXdTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgblZpZGVvCiBQQVNTIGNo
ZWNrSWRBdHRyaWJ1dGUobmV3U3RyZWFtLmlkKSBpcyB0cnVlCisKKyoqKiB0ZXN0aW5nICJuZXcg
d2Via2l0TWVkaWFTdHJlYW0oW10pIgogUEFTUyBTdHJlYW0gY29uc3RydWN0ZWQKLVBBU1MgW29i
amVjdCBNZWRpYVN0cmVhbV0gaXMgbm9uLW51bGwuCi1QQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1d
IGlzIGRlZmluZWQuCi1QQVNTIG5ld1N0cmVhbS5jb25zdHJ1Y3Rvci5uYW1lIGlzICdNZWRpYVN0
cmVhbScKK1BBU1MgW29iamVjdCB3ZWJraXRNZWRpYVN0cmVhbV0gaXMgbm9uLW51bGwuCitQQVNT
IFtvYmplY3Qgd2Via2l0TWVkaWFTdHJlYW1dIGlzIGRlZmluZWQuCitQQVNTIG5ld1N0cmVhbS5j
b25zdHJ1Y3Rvci50b1N0cmluZygpIGlzICdbb2JqZWN0IHdlYmtpdE1lZGlhU3RyZWFtQ29uc3Ry
dWN0b3JdJwogUEFTUyBuZXdTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgbkF1ZGlv
CiBQQVNTIG5ld1N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyBuVmlkZW8KIFBBU1Mg
Y2hlY2tJZEF0dHJpYnV0ZShuZXdTdHJlYW0uaWQpIGlzIHRydWUKKworKioqIHRlc3RpbmcgIm5l
dyB3ZWJraXRNZWRpYVN0cmVhbShzdHJlYW0pIgogUEFTUyBTdHJlYW0gY29uc3RydWN0ZWQKLVBB
U1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgbm9uLW51bGwuCi1QQVNTIFtvYmplY3QgTWVkaWFT
dHJlYW1dIGlzIGRlZmluZWQuCi1QQVNTIG5ld1N0cmVhbS5jb25zdHJ1Y3Rvci5uYW1lIGlzICdN
ZWRpYVN0cmVhbScKK1BBU1MgW29iamVjdCB3ZWJraXRNZWRpYVN0cmVhbV0gaXMgbm9uLW51bGwu
CitQQVNTIFtvYmplY3Qgd2Via2l0TWVkaWFTdHJlYW1dIGlzIGRlZmluZWQuCitQQVNTIG5ld1N0
cmVhbS5jb25zdHJ1Y3Rvci50b1N0cmluZygpIGlzICdbb2JqZWN0IHdlYmtpdE1lZGlhU3RyZWFt
Q29uc3RydWN0b3JdJwogUEFTUyBuZXdTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMg
bkF1ZGlvCiBQQVNTIG5ld1N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyBuVmlkZW8K
IFBBU1MgY2hlY2tJZEF0dHJpYnV0ZShuZXdTdHJlYW0uaWQpIGlzIHRydWUKKworKioqIHRlc3Rp
bmcgIm5ldyB3ZWJraXRNZWRpYVN0cmVhbShbc3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF1dKSIK
IFBBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCi1QQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5v
bi1udWxsLgotUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgotUEFTUyBuZXdT
dHJlYW0uY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCitQQVNTIFtvYmplY3Qgd2Vi
a2l0TWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgorUEFTUyBbb2JqZWN0IHdlYmtpdE1lZGlhU3Ry
ZWFtXSBpcyBkZWZpbmVkLgorUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IudG9TdHJpbmcoKSBp
cyAnW29iamVjdCB3ZWJraXRNZWRpYVN0cmVhbUNvbnN0cnVjdG9yXScKIFBBU1MgbmV3U3RyZWFt
LmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIG5BdWRpbwogUEFTUyBuZXdTdHJlYW0uZ2V0Vmlk
ZW9UcmFja3MoKS5sZW5ndGggaXMgblZpZGVvCiBQQVNTIGNoZWNrSWRBdHRyaWJ1dGUobmV3U3Ry
ZWFtLmlkKSBpcyB0cnVlCisKKyoqKiB0ZXN0aW5nICJuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3N0
cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdXSkiCiBQQVNTIFN0cmVhbSBjb25zdHJ1Y3RlZAotUEFT
UyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBub24tbnVsbC4KLVBBU1MgW29iamVjdCBNZWRpYVN0
cmVhbV0gaXMgZGVmaW5lZC4KLVBBU1MgbmV3U3RyZWFtLmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01l
ZGlhU3RyZWFtJworUEFTUyBbb2JqZWN0IHdlYmtpdE1lZGlhU3RyZWFtXSBpcyBub24tbnVsbC4K
K1BBU1MgW29iamVjdCB3ZWJraXRNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KK1BBU1MgbmV3U3Ry
ZWFtLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3Qgd2Via2l0TWVkaWFTdHJlYW1D
b25zdHJ1Y3Rvcl0nCiBQQVNTIG5ld1N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyBu
QXVkaW8KIFBBU1MgbmV3U3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIG5WaWRlbwog
UEFTUyBjaGVja0lkQXR0cmlidXRlKG5ld1N0cmVhbS5pZCkgaXMgdHJ1ZQorCisqKiogdGVzdGlu
ZyAibmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSwgc3Ry
ZWFtLmdldFZpZGVvVHJhY2tzKClbMF1dKSIKIFBBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCi1QQVNT
IFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgotUEFTUyBbb2JqZWN0IE1lZGlhU3Ry
ZWFtXSBpcyBkZWZpbmVkLgotUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFtZSBpcyAnTWVk
aWFTdHJlYW0nCitQQVNTIFtvYmplY3Qgd2Via2l0TWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgor
UEFTUyBbb2JqZWN0IHdlYmtpdE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgorUEFTUyBuZXdTdHJl
YW0uY29uc3RydWN0b3IudG9TdHJpbmcoKSBpcyAnW29iamVjdCB3ZWJraXRNZWRpYVN0cmVhbUNv
bnN0cnVjdG9yXScKIFBBU1MgbmV3U3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIG5B
dWRpbwogUEFTUyBuZXdTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgblZpZGVvCiBQ
QVNTIGNoZWNrSWRBdHRyaWJ1dGUobmV3U3RyZWFtLmlkKSBpcyB0cnVlCisKKyoqKiB0ZXN0aW5n
ICJuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3N0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLCBzdHJl
YW0uZ2V0QXVkaW9UcmFja3MoKVswXSwgc3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF1dKSIKIFBB
U1MgU3RyZWFtIGNvbnN0cnVjdGVkCi1QQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1u
dWxsLgotUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgotUEFTUyBuZXdTdHJl
YW0uY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCitQQVNTIFtvYmplY3Qgd2Via2l0
TWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgorUEFTUyBbb2JqZWN0IHdlYmtpdE1lZGlhU3RyZWFt
XSBpcyBkZWZpbmVkLgorUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IudG9TdHJpbmcoKSBpcyAn
W29iamVjdCB3ZWJraXRNZWRpYVN0cmVhbUNvbnN0cnVjdG9yXScKIFBBU1MgbmV3U3RyZWFtLmdl
dEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIG5BdWRpbwogUEFTUyBuZXdTdHJlYW0uZ2V0VmlkZW9U
cmFja3MoKS5sZW5ndGggaXMgblZpZGVvCiBQQVNTIGNoZWNrSWRBdHRyaWJ1dGUobmV3U3RyZWFt
LmlkKSBpcyB0cnVlCisKK0NyZWF0aW5nIGEgbmV3IHN0cmVhbSBmcm9tIGEgc3RyZWFtIHRoYXQg
aGFzIHN0b3BwZWQKKworKioqIHRlc3RpbmcgIm5ldyB3ZWJraXRNZWRpYVN0cmVhbShbc3RyZWFt
LmdldEF1ZGlvVHJhY2tzKClbMF1dKSIKIFBBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCi1QQVNTIFtv
YmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgotUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFt
XSBpcyBkZWZpbmVkLgotUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFT
dHJlYW0nCitQQVNTIFtvYmplY3Qgd2Via2l0TWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgorUEFT
UyBbb2JqZWN0IHdlYmtpdE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgorUEFTUyBuZXdTdHJlYW0u
Y29uc3RydWN0b3IudG9TdHJpbmcoKSBpcyAnW29iamVjdCB3ZWJraXRNZWRpYVN0cmVhbUNvbnN0
cnVjdG9yXScKIFBBU1MgbmV3U3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIG5BdWRp
bwogUEFTUyBuZXdTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgblZpZGVvCiBQQVNT
IGNoZWNrSWRBdHRyaWJ1dGUobmV3U3RyZWFtLmlkKSBpcyB0cnVlCisKKyoqKiB0ZXN0aW5nICJu
ZXcgd2Via2l0TWVkaWFTdHJlYW0oW3N0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdXSkiCiBQQVNT
IFN0cmVhbSBjb25zdHJ1Y3RlZAotUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBub24tbnVs
bC4KLVBBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KLVBBU1MgbmV3U3RyZWFt
LmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01lZGlhU3RyZWFtJworUEFTUyBbb2JqZWN0IHdlYmtpdE1l
ZGlhU3RyZWFtXSBpcyBub24tbnVsbC4KK1BBU1MgW29iamVjdCB3ZWJraXRNZWRpYVN0cmVhbV0g
aXMgZGVmaW5lZC4KK1BBU1MgbmV3U3RyZWFtLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkgaXMgJ1tv
YmplY3Qgd2Via2l0TWVkaWFTdHJlYW1Db25zdHJ1Y3Rvcl0nCiBQQVNTIG5ld1N0cmVhbS5nZXRB
dWRpb1RyYWNrcygpLmxlbmd0aCBpcyBuQXVkaW8KIFBBU1MgbmV3U3RyZWFtLmdldFZpZGVvVHJh
Y2tzKCkubGVuZ3RoIGlzIG5WaWRlbwogUEFTUyBjaGVja0lkQXR0cmlidXRlKG5ld1N0cmVhbS5p
ZCkgaXMgdHJ1ZQorCisqKiogdGVzdGluZyAibmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzdHJlYW0u
Z2V0QXVkaW9UcmFja3MoKVswXSwgc3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF1dKSIKIFBBU1Mg
U3RyZWFtIGNvbnN0cnVjdGVkCi1QQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxs
LgotUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgotUEFTUyBuZXdTdHJlYW0u
Y29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCitQQVNTIFtvYmplY3Qgd2Via2l0TWVk
aWFTdHJlYW1dIGlzIG5vbi1udWxsLgorUEFTUyBbb2JqZWN0IHdlYmtpdE1lZGlhU3RyZWFtXSBp
cyBkZWZpbmVkLgorUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IudG9TdHJpbmcoKSBpcyAnW29i
amVjdCB3ZWJraXRNZWRpYVN0cmVhbUNvbnN0cnVjdG9yXScKIFBBU1MgbmV3U3RyZWFtLmdldEF1
ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIG5BdWRpbwogUEFTUyBuZXdTdHJlYW0uZ2V0VmlkZW9UcmFj
a3MoKS5sZW5ndGggaXMgblZpZGVvCiBQQVNTIGNoZWNrSWRBdHRyaWJ1dGUobmV3U3RyZWFtLmlk
KSBpcyB0cnVlCisKKyoqKiB0ZXN0aW5nICJuZXcgd2Via2l0TWVkaWFTdHJlYW0oc3RyZWFtKSIK
IFBBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCi1QQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5v
bi1udWxsLgotUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgotUEFTUyBuZXdT
dHJlYW0uY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCitQQVNTIFtvYmplY3Qgd2Vi
a2l0TWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgorUEFTUyBbb2JqZWN0IHdlYmtpdE1lZGlhU3Ry
ZWFtXSBpcyBkZWZpbmVkLgorUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IudG9TdHJpbmcoKSBp
cyAnW29iamVjdCB3ZWJraXRNZWRpYVN0cmVhbUNvbnN0cnVjdG9yXScKIFBBU1MgbmV3U3RyZWFt
LmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIG5BdWRpbwogUEFTUyBuZXdTdHJlYW0uZ2V0Vmlk
ZW9UcmFja3MoKS5sZW5ndGggaXMgblZpZGVvCiBQQVNTIGNoZWNrSWRBdHRyaWJ1dGUobmV3U3Ry
ZWFtLmlkKSBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtQ29uc3RydWN0b3IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRtbAkocmV2aXNpb24gMTU2NDU5KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0cnVjdG9yLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgZnVuY3Rpb24gZ290U3RyZWFtKHMp
IHsKICAgICBzaG91bGRCZSgnbG9jYWxTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAn
MScpOwogICAgIHNob3VsZEJlKCdsb2NhbFN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcs
ICcxJyk7CiAKLSAgICBzaG91bGRCZVRydWUoInR5cGVvZiB3ZWJraXRNZWRpYVN0cmVhbSA9PT0g
J2Z1bmN0aW9uJyIpOworICAgIHNob3VsZEJlVHJ1ZSgidHlwZW9mIHdlYmtpdE1lZGlhU3RyZWFt
ID09PSAnb2JqZWN0JyIpOwogICAgIHNob3VsZEJlVHJ1ZSgnY2hlY2tJZEF0dHJpYnV0ZShsb2Nh
bFN0cmVhbS5pZCknKTsKICAgICB0ZXN0Q29uc3RydWN0b3IobG9jYWxTdHJlYW0pOwogfQpAQCAt
NzUsMjEgKzc1LDIyIEBAIGZ1bmN0aW9uIHRlc3RDb25zdHJ1Y3RvcihzKSB7CiAgICAgc2hvdWxk
VGhyb3coJ25ldyB3ZWJraXRNZWRpYVN0cmVhbShudWxsKScpOwogICAgIHNob3VsZFRocm93KCdu
ZXcgd2Via2l0TWVkaWFTdHJlYW0odW5kZWZpbmVkKScpOwogCi0gICAgdmVyaWZ5U3RyZWFtKG5l
dyB3ZWJraXRNZWRpYVN0cmVhbSgpLCAwLCAwKTsKLSAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtp
dE1lZGlhU3RyZWFtKFtdKSwgMCwgMCk7CisgICAgdmVyaWZ5U3RyZWFtKCJuZXcgd2Via2l0TWVk
aWFTdHJlYW0oKSIsIDAsIDApOworICAgIHZlcmlmeVN0cmVhbSgibmV3IHdlYmtpdE1lZGlhU3Ry
ZWFtKFtdKSIsIDAsIDApOwogCi0gICAgdmVyaWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVh
bShzKSwgcy5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCwgcy5nZXRWaWRlb1RyYWNrcygpLmxlbmd0
aCk7CisgICAgdmVyaWZ5U3RyZWFtKCJuZXcgd2Via2l0TWVkaWFTdHJlYW0oc3RyZWFtKSIsIHMu
Z2V0QXVkaW9UcmFja3MoKS5sZW5ndGgsIHMuZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgpOwogCi0g
ICAgdmVyaWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbcy5nZXRBdWRpb1RyYWNrcygp
WzBdXSksIDEsIDApOwotICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3Mu
Z2V0VmlkZW9UcmFja3MoKVswXV0pLCAwLCAxKTsKLSAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtp
dE1lZGlhU3RyZWFtKFtzLmdldEF1ZGlvVHJhY2tzKClbMF0sIHMuZ2V0VmlkZW9UcmFja3MoKVsw
XV0pLCAxLCAxKTsKLSAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzLmdl
dFZpZGVvVHJhY2tzKClbMF0sIHMuZ2V0QXVkaW9UcmFja3MoKVswXSwgcy5nZXRWaWRlb1RyYWNr
cygpWzBdXSksIDEsIDEpOwotCi0gICAgcy5vbmVuZGVkID0gZnVuY3Rpb24gKCkgewotICAgICAg
ICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzLmdldEF1ZGlvVHJhY2tzKClb
MF1dKSwgMCwgMCk7Ci0gICAgICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0o
W3MuZ2V0VmlkZW9UcmFja3MoKVswXV0pLCAwLCAwKTsKLSAgICAgICAgdmVyaWZ5U3RyZWFtKG5l
dyB3ZWJraXRNZWRpYVN0cmVhbShbcy5nZXRBdWRpb1RyYWNrcygpWzBdLCBzLmdldFZpZGVvVHJh
Y2tzKClbMF1dKSwgMCwgMCk7Ci0gICAgICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFT
dHJlYW0ocyksIDAsIDApOworICAgIHZlcmlmeVN0cmVhbSgibmV3IHdlYmtpdE1lZGlhU3RyZWFt
KFtzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXV0pIiwgMSwgMCk7CisgICAgdmVyaWZ5U3RyZWFt
KCJuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3N0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdXSkiLCAw
LCAxKTsKKyAgICB2ZXJpZnlTdHJlYW0oIm5ldyB3ZWJraXRNZWRpYVN0cmVhbShbc3RyZWFtLmdl
dEF1ZGlvVHJhY2tzKClbMF0sIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdXSkiLCAxLCAxKTsK
KyAgICB2ZXJpZnlTdHJlYW0oIm5ldyB3ZWJraXRNZWRpYVN0cmVhbShbc3RyZWFtLmdldFZpZGVv
VHJhY2tzKClbMF0sIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdLCBzdHJlYW0uZ2V0VmlkZW9U
cmFja3MoKVswXV0pIiwgMSwgMSk7CisKKyAgICBzdHJlYW0ub25lbmRlZCA9IGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgZGVidWcoIjxicj5DcmVhdGluZyBhIG5ldyBzdHJlYW0gZnJvbSBhIHN0cmVh
bSB0aGF0IGhhcyBzdG9wcGVkIik7CisgICAgICAgIHZlcmlmeVN0cmVhbSgibmV3IHdlYmtpdE1l
ZGlhU3RyZWFtKFtzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXV0pIiwgMCwgMCk7CisgICAgICAg
IHZlcmlmeVN0cmVhbSgibmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzdHJlYW0uZ2V0VmlkZW9UcmFj
a3MoKVswXV0pIiwgMCwgMCk7CisgICAgICAgIHZlcmlmeVN0cmVhbSgibmV3IHdlYmtpdE1lZGlh
U3RyZWFtKFtzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSwgc3RyZWFtLmdldFZpZGVvVHJhY2tz
KClbMF1dKSIsIDAsIDApOworICAgICAgICB2ZXJpZnlTdHJlYW0oIm5ldyB3ZWJraXRNZWRpYVN0
cmVhbShzdHJlYW0pIiwgMCwgMCk7CiAKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgfTsK
QEAgLTk3LDE1ICs5OCwxNiBAQCBmdW5jdGlvbiB0ZXN0Q29uc3RydWN0b3IocykgewogICAgIHMu
c3RvcCgpOwogfQogCi1mdW5jdGlvbiB2ZXJpZnlTdHJlYW0ocywgbnVtQXVkaW9UcmFja3MsIG51
bVZpZGVvVHJhY2tzKSB7Ci0gICAgbmV3U3RyZWFtID0gczsKK2Z1bmN0aW9uIHZlcmlmeVN0cmVh
bShzY3JpcHQsIG51bUF1ZGlvVHJhY2tzLCBudW1WaWRlb1RyYWNrcykgeworICAgIGRlYnVnKCI8
YnI+KioqIHRlc3RpbmcgXCIiICsgc2NyaXB0ICsgIlwiIik7CisgICAgbmV3U3RyZWFtID0gZXZh
bChzY3JpcHQpOwogICAgIG5BdWRpbyA9IG51bUF1ZGlvVHJhY2tzOwogICAgIG5WaWRlbyA9IG51
bVZpZGVvVHJhY2tzOwogCiAgICAgdGVzdFBhc3NlZCgnU3RyZWFtIGNvbnN0cnVjdGVkJyk7CiAg
ICAgc2hvdWxkQmVOb25OdWxsKG5ld1N0cmVhbSk7CiAgICAgc2hvdWxkQmVEZWZpbmVkKG5ld1N0
cmVhbSk7Ci0gICAgc2hvdWxkQmUoIm5ld1N0cmVhbS5jb25zdHJ1Y3Rvci5uYW1lIiwgIidNZWRp
YVN0cmVhbSciKTsKKyAgICBzaG91bGRCZSgibmV3U3RyZWFtLmNvbnN0cnVjdG9yLnRvU3RyaW5n
KCkiLCAiJ1tvYmplY3Qgd2Via2l0TWVkaWFTdHJlYW1Db25zdHJ1Y3Rvcl0nIik7CiAgICAgc2hv
dWxkQmUoJ25ld1N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICduQXVkaW8nKTsKICAg
ICBzaG91bGRCZSgnbmV3U3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoJywgJ25WaWRlbycp
OwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tF
dmVudC1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQtY29uc3RydWN0b3ItZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxNTY0NTkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2tFdmVudC1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTMsNiArMywxMSBAQCBUaGlzIHRlc3RzIHRoZSBjb25zdHJ1Y3RvciBmb3IgdGhl
IE1lZGlhCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBnZXRVc2VyTWVkaWEo
e2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0pIGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLgorCisqKiogZ2V0VXNlck1lZGlhKCkgc3VjY2VlZGVkLCB0ZXN0IHN0cmVhbSAqKioKK1BB
U1MgbWVkaWFTdHJlYW0gaXMgbm9uLW51bGwuCitQQVNTIG1lZGlhU3RyZWFtLmdldFZpZGVvVHJh
Y2tzKClbMF0gaXMgbm9uLW51bGwuCiAKICoqKiBObyBpbml0aWFsaXplciBwYXNzZWQgKioqCiBQ
QVNTIG5ldyBNZWRpYVN0cmVhbVRyYWNrRXZlbnQoJ01lZGlhU3RyZWFtVHJhY2tFdmVudCcpLmJ1
YmJsZXMgaXMgZmFsc2UKQEAgLTMwLDcgKzM1LDcgQEAgUEFTUyBuZXcgTWVkaWFTdHJlYW1UcmFj
a0V2ZW50KCdNZWRpYVN0cgogUEFTUyBuZXcgTWVkaWFTdHJlYW1UcmFja0V2ZW50KCdNZWRpYVN0
cmVhbVRyYWNrRXZlbnQnLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUsIHRyYWNr
OiBtZWRpYVN0cmVhbVRyYWNrIH0pLmNhbmNlbGFibGUgaXMgdHJ1ZQogCiAqKiogSW5pdGlhbGl6
ZSAndHJhY2snIHdpdGggdmFsaWQgdHJhY2sgb2JqZWN0ICoqKgotRkFJTCBuZXcgTWVkaWFTdHJl
YW1UcmFja0V2ZW50KCdNZWRpYVN0cmVhbVRyYWNrRXZlbnQnLCB7IHRyYWNrOiBtZWRpYVN0cmVh
bVRyYWNrIH0pLnRyYWNrIHNob3VsZCBiZSBub24tbnVsbC4gV2FzIG51bGwKK1BBU1MgbmV3IE1l
ZGlhU3RyZWFtVHJhY2tFdmVudCgnTWVkaWFTdHJlYW1UcmFja0V2ZW50JywgeyB0cmFjazogbWVk
aWFTdHJlYW1UcmFjayB9KS50cmFjayBpcyBub24tbnVsbC4KIFBBU1MgbmV3IE1lZGlhU3RyZWFt
VHJhY2tFdmVudCgnTWVkaWFTdHJlYW1UcmFja0V2ZW50JywgeyB0cmFjazogbWVkaWFTdHJlYW1U
cmFjayB9KS50cmFjayBpcyBtZWRpYVN0cmVhbVRyYWNrCiAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFja0V2ZW50LWNvbnN0cnVjdG9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQtY29uc3RydWN0b3IuaHRtbAko
cmV2aXNpb24gMTU2NDU5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrRXZlbnQtY29uc3RydWN0b3IuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsNiAr
MTMsMjggQEAKIAogICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIGNvbnN0
cnVjdG9yIGZvciB0aGUgTWVkaWFTdHJlYW1UcmFja0V2ZW50IERPTSBjbGFzcy4iKTsKIAorICAg
ICAgICAgICAgZnVuY3Rpb24gZW5kVGVzdCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY2xlYXJUaW1lb3V0KHRpbWVyKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3IoKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1N0cmVhbSBnZW5lcmF0aW9uIGZhaWxl
ZC4nKTsKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIGdldFVzZXJNZWRpYShjb25zdHJhaW50cywgY2FsbGJhY2spCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShjb25zdHJhaW50cywgY2FsbGJhY2ssIGVycm9yKTsK
KyAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoJ3dlYmtpdEdldFVzZXJNZWRpYSB0aHJldyBleGNlcHRpb24gOicgKyBlKTsKKyAgICAg
ICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKwogICAgICAgICAgICAgZnVuY3Rpb24gdGVzdE1lZGlhU3RyZWFtVHJhY2tFdmVudCgpCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgZGVidWcoIjxicj4qKiogTm8gaW5pdGlhbGl6
ZXIgcGFzc2VkICoqKiIpOwpAQCAtNDYsMTQgKzY4LDE0IEBACiAgICAgICAgICAgICAgICAgc2hv
dWxkQmUoIm5ldyBNZWRpYVN0cmVhbVRyYWNrRXZlbnQoJ01lZGlhU3RyZWFtVHJhY2tFdmVudCcs
IHsgdHJhY2s6IG1lZGlhU3RyZWFtVHJhY2sgfSkudHJhY2siLCAibWVkaWFTdHJlYW1UcmFjayIp
OwogCiAgICAgICAgICAgICAgICAgZGVidWcoIiIpOwotICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtKHN0cmVhbSkKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpOwotICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoJ2dldFVzZXJNZWRpYSBzdWNjZWVkZWQuJyk7CiAKKyAgICAgICAgICAgICAgICBkZWJ1Zygi
PGJyPioqKiBnZXRVc2VyTWVkaWEoKSBzdWNjZWVkZWQsIHRlc3Qgc3RyZWFtICoqKiIpOwogICAg
ICAgICAgICAgICAgIG1lZGlhU3RyZWFtID0gc3RyZWFtOwogICAgICAgICAgICAgICAgIHNob3Vs
ZEJlTm9uTnVsbCgibWVkaWFTdHJlYW0iKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZU5vbk51
bGwoIm1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0iKTsKQEAgLTY0LDE4ICs4NiwxMyBA
QAogICAgICAgICAgICAgZnVuY3Rpb24gcHJpbWVUaW1lb3V0KG1zZykKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpOwotICAgICAgICAgICAgICAgIHRp
bWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsgdGVzdEZhaWxlZChtc2cpOyBmaW5pc2hKU1Rl
c3QoKSB9LCA0MDAwKTsKKyAgICAgICAgICAgICAgICB0aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHRlc3RGYWlsZWQobXNnKTsgZW5kVGVzdCgpIH0sIDQwMDApOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgIC8qIAotICAgICAgICAgICAgICAgIEBAQEBAIE5PVEU6IHdlIGNhbid0IGdldCBhIE1lZGlh
U3RyZWFtVHJhY2sgdW50aWwgd2UgaGF2ZSBhIGZ1bmN0aW9uYWwgbW9jayBnZXRVc2VyTWVkaWEs
IHNvIGp1c3QgdGVzdCB3aGF0IHdlIGNhbiBmb3Igbm93IEBAQEBAIAogICAgICAgICAgICAgICAg
IHByaW1lVGltZW91dCgiVGltZW91dCB3YWl0aW5nIGZvciBnZXRVc2VyTWVkaWEoKSIpOwogICAg
ICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCdnZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZp
ZGVvOnRydWV9LCBnb3RTdHJlYW0pJyk7Ci0gICAgICAgICAgICAqLwotCi0gICAgICAgICAgICAg
ICAgdGVzdE1lZGlhU3RyZWFtVHJhY2tFdmVudCgpOwogICAgICAgICAgICAgfQogCiAgICAgICAg
IDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9hcmd1bWVudC10
eXBlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9hcmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE1NjQ1OSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vYXJndW1lbnQtdHlwZXMtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xNywxMCArMTcsMTAgQEAgUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhKHt2aWRlbwogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHVuZGVm
aW5lZCwgZW1wdHlGdW5jdGlvbikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOb3RTdXBwb3J0ZWRF
cnJvcjogRE9NIEV4Y2VwdGlvbiA5LgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KG51bGwsIGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVk
RXJyb3I6IERPTSBFeGNlcHRpb24gOS4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSh7IH0sIGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVk
RXJyb3I6IERPTSBFeGNlcHRpb24gOS4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSh0cnVlLCBlbXB0eUZ1bmN0aW9uKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgYW4g
b2JqZWN0Li4KLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSg0MiwgZW1wdHlGdW5j
dGlvbikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGFuIG9iamVjdC4uCi1QQVNTIG5h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoSW5maW5pdHksIGVtcHR5RnVuY3Rpb24pIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBhbiBvYmplY3QuLgotUEFTUyBuYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKC1JbmZpbml0eSwgZW1wdHlGdW5jdGlvbikgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogTm90IGFuIG9iamVjdC4uCitGQUlMIG5hdmlnYXRvci53ZWJraXRHZXRVc2Vy
TWVkaWEodHJ1ZSwgZW1wdHlGdW5jdGlvbikgc2hvdWxkIHRocm93IFR5cGVFcnJvcjogTm90IGFu
IG9iamVjdC4uIFRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBF
eGNlcHRpb24gOS4KK0ZBSUwgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSg0MiwgZW1wdHlG
dW5jdGlvbikgc2hvdWxkIHRocm93IFR5cGVFcnJvcjogTm90IGFuIG9iamVjdC4uIFRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KK0ZBSUwg
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShJbmZpbml0eSwgZW1wdHlGdW5jdGlvbikgc2hv
dWxkIHRocm93IFR5cGVFcnJvcjogTm90IGFuIG9iamVjdC4uIFRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KK0ZBSUwgbmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSgtSW5maW5pdHksIGVtcHR5RnVuY3Rpb24pIHNob3VsZCB0aHJvdyBU
eXBlRXJyb3I6IE5vdCBhbiBvYmplY3QuLiBUaHJldyBleGNlcHRpb24gRXJyb3I6IE5vdFN1cHBv
cnRlZEVycm9yOiBET00gRXhjZXB0aW9uIDkuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2Vy
TWVkaWEoZW1wdHlGdW5jdGlvbiwgZW1wdHlGdW5jdGlvbikgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgogUEFTUyBuYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKHt2aWRlbzogdHJ1ZX0sICJmb29iYXIiKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KHt2aWRlbzogdHJ1ZX0sIHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4K
</data>

          </attachment>
      

    </bug>

</bugzilla>